VMWare ESXi エラー 28: デバイスに空き容量がありません を解決する方法

スタンドアロンのVMware ESXiホストをアップデートしようとした際に、奇妙な「Errno 28 ‘デバイスに空き容量がありません’」というエラーが発生しました。ストレージは実際にはいっぱいではないようです ― 少なくとも表面的には。場合によっては、inode制限やスワップ領域の問題で、一見するとそれほど明らかではないこともあります。このような問題は厄介な問題です。CLIエラーは一見すると特定の問題を指し示しているように見えますが、実際の問題は全く別のところにある可能性があります。何が起こっているのかを理解し、混乱せずに問題を解決する方法が重要です。

ESXi アップグレード中に「デバイスに空き容量がありません」というエラーを修正する方法

iノードとディスク容量を徹底的にチェックする

これは常に最初のステップです。df -h が正常に実行されているように見えても、次のコマンドを実行します。

stat -f / | grep Inodes | awk '{ print $NF }'

空きinodeの数が表示されます。その数が0に近いかゼロの場合、ディスク容量ではなく、inodeが本当の問題である可能性が高いです。設定によっては、特に小さなファイルやログが多数ある場合、実際のストレージ容量が不足するよりもinodeの不足の方が早く影響することがあります。

空きinodeが少ない場合は、/tmpなどのディレクトリにある古いログファイルや一時ファイルを削除することで改善する可能性があります。場合によっては、再起動するだけで一時ファイルが消去され、inodeが解放されることもありますが、本番環境のホストでは必ずしもそれができるとは限りません。

スワップファイルの設定を確認して調整する

もう一つの隠れた原因は、スワップスペースの不足です。ESXiホストはメジャーアップデートを実行するために利用可能なスワップストレージを必要とします。スワップファイルの場所に空き容量がない場合、このエラーが発生します。vSphere Web Clientからスワップファイルの場所を確認または変更できます。「ホスト」 → 「構成」 → 「システム」「スワップ」。「ホストスワップ」や「スワップファイル用のデータストアを指定」などのオプションを探し、「データストアを使用」を有効にして、十分な空き容量のあるデータストアを選択してください。

同様に、CLI からは、次のコマンドで ESXi にスワップ ファイル用に特定のデータストアを使用するように指示できます。

# esxcli sched swap system set -n NameOfDatastore -d y

アップグレード中のスワップの問題を防ぐために、「ホスト キャッシュを許可する」などのオプションも有効になっていることを確認してください。

この単純な調整は、スワップ領域の問題によりアップグレードが行き詰まったときに特に役立ちます。

不要なファイルとVIBをクリーンアップする

空き容量の問題ではない場合は、ホストに不要なファイル、古いVIB(vSphereインストールバンドル)、または削除可能なログが蓄積されている可能性があります。例えば、使用されていないVIBを削除することを検討してください。

# esxcli software vib remove -n NameOfOldVIB

または、ログを消去し/var/core/var/log空き容量を増やしましょう。ただし、重要なログを削除しないように注意してください。

VMware Tools Light の手動インストール (更新に失敗した場合)

一部の環境では、VMware Tools Light のアップデート時に新しいファイルを書き込めないため、アップグレードプロセスが失敗します。回避策として、VIB を手動でダウンロードしてインストールしてください。

cd /tmp wget http://hostupdate.vmware.com/software/VUM/PRODUCTION/main/esx/vmw/vib20/tools-light/VMware_locker_tools_light_11.2.5.xxxxxxxxxxxx.vib esxcli software vib install -v /tmp/VMware_locker_tools_light_11.2.5.xxxxxxxxxxxx.vib -f rm /tmp/VMware_locker_tools_light_11.2.5.xxxxxxxxxxxx.vib

表示されたエラーに一致する VIB の正確なファイル名を使用します。次のコマンドで利用可能なバージョンを一覧表示できます。

# esxcli software sources vib list --depot=https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml | grep tools-light | sort

これにより、自動アップグレード プロセス中に発生するスペースの問題を回避できることがよくあります。

ツールの更新をスキップしてホストプロファイルに焦点を当てる

Tools VIBのインストールがまだ失敗し、空き容量に問題がない場合は、別の方法として、ToolsなしでESXiホストイメージを更新し、Toolsを別途追加する方法があります。以下のコマンドを実行します。

# esxcli software profile update -p ESXi-7.0.0-xxxxxx-standard -no-tools -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vm-depot/

ホストが更新されたら、再起動し、十分な空き容量があることを確認しながら、CLI または vSphere クライアント経由で VMware ツールを個別に更新してみます。

万が一、他の方法がすべて失敗した場合でも、ESXiの完全なZIPインストールイメージをダウンロードし、データストアにアップロードして、そこから新規インストールまたはアップグレードを実行できます。これは少し手間がかかりますが、クリーンな状態に戻す価値がある場合もあります。

完璧なものはありませんが、これらの手順は最も一般的な具体的な問題をカバーし、アップグレードを再開するのに役立ちます。奇妙なスペースやinodeの問題が頻繁に発生する場合は、ホストを再構築するだけで済む場合もありますが、これらの修正により、よくある問題は解決されることが多いです。

まとめ

  • inodeの使用状況を確認するにはstat -f / | grep Inodes | awk '{ print $NF }'
  • 十分な空き容量のあるデータストアにスワップ ファイルが構成されていることを確認します。
  • 不要なログやVIBを消去してスペースを解放する
  • 必要に応じてツールVIBを手動でインストールします
  • 行き詰まった場合はツールを使わずにホストプロファイルを更新することを検討してください
  • そして、最後の手段として、クリーンアップグレードのために新しいZIPイメージをアップロードしてください。

同じように「空き容量不足」で悩んでいる方のお役に立てれば幸いです。時には、隠れたinode制限を見つけたり、スワップファイルを切り替えたりするだけで解決できることもあります。頑張ってください。これで少しでも悩みが解消されますように。