vSphere で無効(不明と呼ばれることもあります)と表示される VM の処理は、本当に頭の痛い作業です。通常、VM を削除した後に発生するのですが、どういうわけかその構成がホストまたはインベントリに残っています。VMFS から手動で VM ファイルを削除したり、vMotion を実行したりしたために、リストにゴーストエントリが残ってしまったのかもしれません。さらにイライラさせられるのは、これらの厄介な VM を Web クライアントから削除できないことです。登録解除ボタンが機能せず、ただそこに待機してユーザーを困惑させているのです。幸いなことに、ESXi ホスト上の SSH 経由でこれらを削除することは可能ですが、それほど簡単なプロセスではありません。削除が完了すると、VM はインベントリから消え、すべてが正常に戻ります。
vSphere から「無効な」VM を削除する方法
ESXiホストでSSHを有効にする
- 「ホスト」 > 「アクション」 > 「サービス」に移動し、「SSH」を見つけます。
- 「アクション」>「開始」をクリックして有効化します。SSHが有効になっていない場合は、ここで有効化できます。もちろん、VMwareは必要以上に複雑な設定をしているため、この方法で有効化できます。
この手順は非常に重要です。手動でクリーンアップするにはコマンドラインアクセスが必要になるためです。SSHが動作していないと、GUIで全てを操作しようとしてもうまくいきません。
SSH経由で接続する
- PuTTYやmRemoteNGなどのツールを使用して、ESXi ホストに SSH で接続します。
- ルート権限でログインしてください。初めての方は、世界が終わるわけではないのでご安心ください。ただし、コマンドにはご注意ください。
問題のあるVMのIDを見つける
- 走る:
vim-cmd vmsvc/getallvms | grep invalid
このコマンドはすべてのVMをリストし、「invalid」をgrepすることで、壊れているVMを特定できます。通常、次のような出力が表示されます。
Skipping invalid VM '22'
数字(ここでは22)はVMのIDです。複数のVMが表示されている場合は、それぞれをメモしておくのが賢明ですが、特に問題の原因となっているVMに重点を置きましょう。
VMをリロードするか登録解除してください
- 最初に修正を試みたい場合は、次のコマンドを実行します。
vim-cmd vmsvc/reload 22
これにより、VMエントリが修復され、正常な状態に戻る場合があります。ただし、VMファイルが消失している場合は特にそうです。一部の環境では、このコマンドによって適切なリンクが再確立され、数分以内に「電源オフ」に切り替わったり、リストから消えたりすることがあります。その場合は、Webクライアントを更新してください。
- 単にクリーンアップしたい場合は、次のコマンドで VM の登録を解除します。
vim-cmd /vmsvc/unregister 22
これが実際のクリーンアップ手順です。無効なVMを手動でインベントリから削除します。その後すぐにWebクライアントからVMが消えます。まだ表示されている場合は、VM IDを確認してください。リストが分かりにくい場合があるためです。
勇敢な人向け: hostd 設定を手動で編集する
- 最後の手段として、
/etc/vmware/hostd/vmInventory.xmlvi や nano などのテキスト エディターで開きます。
vi /etc/vmware/hostd/vmInventory.xml
無効なVMに対応するセクションを見つけて、その部分を削除してください。何かを壊してしまうと修復が大変になるので、事前にバックアップを作成してください。編集後、ホストサービスを再起動しservices.sh restart、VMが消えているかどうかを確認してください。
注意: 場合によっては、このファイルを手動で編集すると、誤って行うと問題が発生する可能性があるため、バックアップをスキップせず、注意してください。
破損した構成でスタックしたVMの処理
VMが登録解除を拒否したり、再起動後にしか表示されなくなったり、実行中のVMで「無効」ステータスが表示される場合は、VMの構成ファイルが壊れている可能性があります。修正方法は?VMをインベントリから削除(「インベントリから削除」または再起動)し、再作成します。古いVMDKディスクを既存のディスクとして新しいVMに接続し、Storage vMotionを実行してファイルを統合し、VMを起動してすべて正常に動作することを確認します。その後、壊れた古いVMファイルを削除します。あまりスマートではありませんが、これが唯一の方法である場合もあります。
ストレージの問題の後で VM が消えてしまったらどうなるでしょうか?
VMFSストレージへのアクセスを失った場合、停止したVMはインベントリ内でスタック状態になったり、非表示になったりします。ストレージ内のVMのVMXファイルにアクセスして、VMを手動で再登録する必要があります。VMを右クリックし、「VMの登録」を選択してパワーオンしてください。これですべてが復旧するはずです。
これらすべてを精査するのは少し面倒ですが、ほとんどの場合、SSHコマンドでゴーストエントリを修正できます。場合によっては、問題のあるレコードを削除して再起動するか、VMを手動で再登録するだけで解決できることもあります。頑張ってください。これで、インベントリが機能しなくなったときのフラストレーションが少しでも軽減されることを願っています。
まとめ
- ESXiホストがアクティブでない場合はSSHを有効にします
- SSH経由で接続する
vim-cmd vmsvc/getallvms無効なVM IDを見つけるために使用します- 再読み込みまたは登録解除をお試し
vim-cmd vmsvc/reloadくださいunregister - 必要に応じて/etc/vmware/hostd/vmInventory.xmlを手動で編集します。
- VMが消えた場合はストレージから再登録する
まとめ
無効なVMを削除するには、SSHの魔法と少しの忍耐が必要です。特に設定が複雑だったりストレージに問題があったりすると、必ずしも分かりにくいこともありますが、適切なコマンドを組み合わせれば、はるかに簡単になります。これで誰かの頭痛の種が少しでも軽減されれば幸いです。いくつかのホストで試した結果、ゴーストVMはようやく追い出されました。