VMware-ESXi

ESXiアップデート時に特定ホストで発生したエラーの対処

こんにちは。Snow Peakの折りたたみ傘を見た目装備で購入した西浦です。

先日複数台のサーバでVMware vSphere Hypervisor(以後ESXi)のアップデートを行ったのですが、特定のホストだけ以下のエラーが出力され、アップデートできない問題が起きたので、対処法をまとめてみました。

# esxcli software profile update -p ESXi-6.0.0-20200204001-standard -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml
※一部抜粋
「[InstallationError]
 [Errno 32] Broken pipe
       vibs = VMware_locker_tools-light_6.0.0-3.145.15517548
 Please refer to the log file for more details.

エラーが発生した環境の情報

ESXi 6.0.0 u2 から u3へアップデート実行時に起きた事象です。
アップデート(Patch適用)はこちらの記事で紹介している方法で行っています。
https://www.denet.ad.jp/technology/2017/10/esxipatch.html

  • 仮想マシンは全て別のESXiへ退避済み
  • メンテナンスモードにしている
  • httpClientのファイアウォール設定を一時的に有効化している
  • アップデートファイル一覧取得は事前に行えている

エラー内容を調査

/var/log/esxupdate.log というアップデート関連の情報が出力されるログを確認したところ、以下のようなエラーが出力されていました。

# less /var/log/esxupdate.log
※一部抜粋
2020-06-25T02:58:49Z esxupdate: LockerInstaller: WARNING: There was an error in cleaning up product locker: [Errno 2] No such file or directory: '/locker/packages/var/db/locker'
2020-06-25T02:58:49Z esxupdate: root: ERROR: Traceback (most recent call last):
2020-06-25T02:58:49Z esxupdate: root: ERROR:   File "/usr/lib/vmware/esxcli-software", line 462, in <module>
2020-06-25T02:58:49Z esxupdate: root: ERROR:     main()
2020-06-25T02:58:49Z esxupdate: root: ERROR:   File "/usr/lib/vmware/esxcli-software", line 453, in main
2020-06-25T02:58:49Z esxupdate: root: ERROR:     ret = CMDTABLE[command](options)
2020-06-25T02:58:49Z esxupdate: root: ERROR:   File "/usr/lib/vmware/esxcli-software", line 219, in ProfileUpdateCmd
2020-06-25T02:58:49Z esxupdate: root: ERROR:     allowDowngrades=opts.downgrade)
2020-06-25T02:58:49Z esxupdate: root: ERROR:   File "/build/mts/release/bora-3620759/bora/build/esx/release/vmvisor/sys-boot/lib/python2.7/site-packages/vmware/esximage/Transaction.py", line 622, in InstallVibsFromProfile
2020-06-25T02:58:49Z esxupdate: root: ERROR:   File "/build/mts/release/bora-3620759/bora/build/esx/release/vmvisor/sys-boot/lib/python2.7/site-packages/vmware/esximage/Transaction.py", line 356, in _installVibs
2020-06-25T02:58:49Z esxupdate: root: ERROR:   File "/build/mts/release/bora-3620759/bora/build/esx/release/vmvisor/sys-boot/lib/python2.7/site-packages/vmware/esximage/Transaction.py", line 399, in _validateAndInstallProfile
2020-06-25T02:58:49Z esxupdate: root: ERROR:   File "/build/mts/release/bora-3620759/bora/build/esx/release/vmvisor/sys-boot/lib/python2.7/site-packages/vmware/esximage/HostImage.py", line 710, in Stage
2020-06-25T02:58:49Z esxupdate: root: ERROR:   File "/build/mts/release/bora-3620759/bora/build/esx/release/vmvisor/sys-boot/lib/python2.7/site-packages/vmware/esximage/HostImage.py", line 483, in _download_and_stage
2020-06-25T02:58:49Z esxupdate: root: ERROR: InstallationError: ('VMware_locker_tools-light_6.0.0-3.145.15517548', '[Errno 32] Broken pipe')

出力されたエラー内容を調査し、ネットで調べたところ、以下のような情報が見つかりました。

  • /locker領域が破損している可能性があるので再作成
  • /locker/packages/version フォルダを再作成
  • 正常に動作しているESXiから/locker/packages をscpしてくる

といった記事があり、エラーログからも起きている事象と近しい内容でしたが、最初からディレクトリ再生成を試すのもなということで、まずは問題なかったホストと見比べてみることにしました。

すると/locker領域のDisk残容量が0%に達しており、アップデートファイルの
ダウンロード自体が途中で止まっていることが判明。

問題の起きたホストだけ/locker/var/core/vpxa-worker-zdump.000 というファイルがあり、大きく容量を使ってたことが原因でした。

対処(Disk容量確保)

先程のdumpファイルは不要なものだったので、対象のファイルを削除してDiskに空き容量を確保しました。

# rm /locker/var/core/vpxa-worker-zdump.000

まとめ

今回はESXi 6.0.0 u2 から u3へアップデート時に発生したエラーと、対処方法について記載しました。
アップデートファイル一覧を取得し、バージョン指定を行ってアップデートする方法は非常に簡単ですが、
予想以上にアップデートファイルの容量が大きなサイズになるので、Disk残容量には注意しながら実行しましょう。

参考記事

https://kb.vmware.com/s/article/2030665?lang=ja

https://www.provirtualzone.com/esxi-6-0-reports-error-code-15-during-remediate-update-in-vum-operation/

https://virtualhackey.wordpress.com/2020/02/04/vmware-esxi-patching-error-errno-32-broken-pipe-vibs-vmware_locker_tools-light-databaseioerror-error-in-purging-old-directory-permanent-fix/

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA