ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

XenServerのpending update状態で何度実行してもパッチが当たらない場合の解決方法

ある日、XenServerのパッチを適用しようとしたところ、こんなエラーが表示されてしまいました。

「Update XS602E028 was not completed successfully」

何度実行しても同じエラーでパッチの適用に失敗します。
やばい、詰んだw

試しにログを見たところ、さっぱり分かりません。detailはどこ?

■原因
アップデート中に中断したりするとパッチが中途半端に当たった状態になって詰むようです。

■問題の解決方法
…その前に、コマンドでパッチを適用してみる。

sshでXenServerホストにログインして、パッチをまずアップロードしてみる(注1)

[root@localhost ~]# ls -l|grep xsupdate
-rw-r--r-- 1 root root 45749557 Oct 5 00:21 XS602E028.xsupdate

[root@localhost ~]# xe patch-upload file-name=XS602E028.xsupdate
The uploaded patch file already exists
uuid: a03a42a9-8fcc-4724-8676-29101bd1a5e0 (XS602E028)

パッチはすでにアップロードされているようです。

xe patch-pool-applyコマンドでパッチを適用!

[root@localhost ~]# xe patch-pool-apply uuid=a03a42a9-8fcc-4724-8676-29101bd1a5e0
The patch apply failed. Please see attached output.
output:
Backup files already present - aborting. If this is invalid, please remove /opt/xensource/patch-backup/a03a42a9-8fcc-4724-8676-29101bd1a5e0/ and retry.

エラーが出ました。このエラーがGUI上から見えてほしかった。
infoにあるように実行する。

[root@localhost ~]# cd /opt/xensource/patch-backup/
[root@localhost patch-backup]# rm -rf a03a42a9-8fcc-4724-8676-29101bd1a5e0

もう一度アップデートを適用!

[root@localhost patch-backup]# xe patch-pool-apply uuid=a03a42a9-8fcc-4724-8676-29101bd1a5e0
[root@localhost patch-backup]

エラー表示がされなければ問題なくパッチが適用されたということに。

パッチが適用されたか確認

[root@localhost patch-backup]# xe patch-list
(略)
uuid ( RO) : a03a42a9-8fcc-4724-8676-29101bd1a5e0
name-label ( RO): XS602E028
name-description ( RO): Public Availability: Kernel fixes
size ( RO): 45749557
hosts (SRO): 56d6bb34-bb5f-4e46-9283-7620249b59de
after-apply-guidance (SRO): restartHost

after-apply-guidanceに「restartHost」とあるので、XenServerを再起動する。
以上。

■教訓
XenServerのアップデート中は根気よく待つ or コマンドでパッチ適用する。

(注1)パッチはzipで固められたものが公開されています。これをunzipすると、拡張子がxsupdateのファイルが展開されます。これがパッチファイルなので、これをscpコマンドなどでXenServerにアップロードしてください。

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。