消せないスナップショットには二通りのパターンが有る。
1. ディスク統合のエラーメッセージが出るが、スナップショットマネージャには表示されず、vCenterから削除できない(バックアップサーバがバックアップファイルをロックしてしまった場合)
2. スナップショットマネージャに延々とスナップショットが作成されるが、削除できない(バックアップ処理が正常終了せず、スナップショットのチェーンが切れてしまった場合)
1は前に書いたこの記事。で、今回は2について。
スナップショット削除時に「一般的なエラー」でコケるやつ。
壊れたスナップショットが混ざったせいで、スナップショットチェーンが壊れて発生するっぽいんだが…解消するのがめっちゃ面倒臭い(というか超絶時間がかかる)。
ちなみに、今回このエラーに遭遇したのは、某バックアップソリューションのジョブの真っ最中に、HA発生→HA失敗→別々のホストに同じ仮想マシンができちゃった、という恐ろしい現象のせい。。
参考にしたのはこことここ。
vCenter 6.5もしくはそれ以降のバージョンにおいて,スナップショットを削除しようとすると,以下のようなエラーが出て,削除できない場合があります。A general system error occurred: vim.fault.G
vim.fault.GenericVmConfigFaultというエラーでスナップショットを削除できない場合の対処法
VMware ESXi 上のとある Windows Server 2012 仮想マシンの動作が死ぬほど遅い、助けてくれと担当からあり、設定覗いてみるとそこにはスタックした スナップショット の 数珠つなぎ がありました。vCSAのGUI上でスナップショット全部削除しようとすると
VMware 仮想マシンの消せなくなった数珠つなぎスナップショットの除去と修復 – Fun Scripting 2.0
対応方法色々あるんだけど、起動ディスクの変更があったりするので、色々模索した結果、極力仮想マシンに変更を加えない方向でやる手順。
尚、鬼のように時間がかかることは確か(15TBディスクでMAX6時間位)
対応手順
1. 事前確認
- vCenterにログインし、該当仮想マシンのストレージとESXiを確認
- vCenterで該当ESXiのSSHとシェルを有効化する
- ESXiにSSHログイン
- 仮想マシンが格納されているストレージフォルダまで移動
- ファイル一覧を取得する
- 仮想マシン名.vmxの中身を確認し、現在scsiX:Xでマウントされているvmdkの名前を全て確認(例:`scsi0:0.fileName = 仮想マシン名-000001.vmdk` など)
- 取得したvmdk名に対して、vmkfstools コマンドで、vmdkのチェーン構造を確認する `vmkfstools -qv10 仮想マシン名-000001.vmdk`
- ファイル一覧とvmkfstoolsの結果を比較して、含まれていないファイルがあるかどうか確認する(scsiX:Xの数だけ実施すること)
- 含まれていないファイルがあったら、スナップショットのチェーンが切れている
cd /vmfs/volumes/ストレージuuid/仮想マシン名
grep vmdk 仮想マシン名.vmx
scsi0:0.fileName = 仮想マシン名-000001.vmdk
scsi0:1.fileName = "/vmfs/volumes/ストレージuuid/仮想マシン名/仮想マシン名-000001.vmdk"
scsi0:2.fileName = "/vmfs/volumes/ストレージuuid/仮想マシン名/仮想マシン名-000002.vmdk"
ls -la
vmkfstools -qv10 仮想マシン名-000001.vmdk
vmkfstools -qv10 仮想マシン名-000002.vmdk
2.チェーン切れ解消方法
- 該当仮想マシンをシャットダウン
- ストレージのフォルダ内に退避用ディレクトリ(tmp)を作る(ストレージが複数ある場合はその数だけ作る)
- vmsnファイルとvmsdファイルをtmpに退避させる
- 再度vmxファイルを参照し、scsi情報を確認する
- マウントされているvmdkのチェーンを確認し、迷子のファイルをtmpに退避させる(ストレージとscsiX:Xが複数ある場合は、ある分だけ実施)
- 一度スナップショットの削除を試み、エラーを発生させスナップショットマネージャを空にする
- 静止点スナップショットを作成する
- 再度vCenterの情報を更新し、ディスクの統合を実施する(めっちゃ時間かかる)
- 無事に統合されたら、ESXi上でストレージフォルダの中身を確認する(ゴミスナップショットが消えている筈)