仮想マシンのスナップショット削除しようとすると、次のようなエラーメッセージが表示されて失敗します。
タスク名:スナップショットの削除
ステータス:スナップショットの削除中にエラーが発生しました:
仮想マシンのいずれかのディスクが、仮想マシンまたはスナップショットによって使用されています
vmware.log では、次の様なエラーメッセージが表示され、別のスナップショットですでに vmdk が開かれている記録が残ります。
vmx - VigorTransportProcessClientPayload: opID=m9unxmp1-1646065-auto-za42-h5:###-0-f9-### seq=###: Receiving Snapshot.Delete request.
VigorTransportProcessClientPayload: opID=### seq=###: Receiving Snapshot.Delete request.
SNAPSHOT: SnapshotDiskTreeAddFromSnapshot: Trying to add snapshot ###-Snapshot2.vmsn to disk /vmfs/volumes/vsan:#####/#####/###.vmdk which already has snapshot ###-Snapshot1.vmsn.
SNAPSHOT: SnapshotGenerateDeleteDisks Failed to fetch disk tree: One of the disks in this virtual machine is already in use by a virtual machine or by a snapshot (21)
SNAPSHOT: SnapshotDeleteNode failed: One of the disks in this virtual machine is already in use by a virtual machine or by a snapshot (21)
VigorTransport_ServerSendResponse opID=m9unxmp1-1646065-auto-za42-h5:###-0-f9-### seq=###: Completed Snapshot.Delete request with messages in 15669 US.
VMware vSphere ESXi 7.0
VMware vSphere ESXi 8.0
この事象は、スナップショットディスクチェーンの破損を示しています。
スナップショットのメタデータを管理する vmsd ファイル(仮想マシン名.vmsd)には、以下の様な記述が見られます。
snapshot0.uid = "1"
snapshot0.filename = "Direct-###-Snapshot1.vmsn"
snapshot0.disk0.fileName = "Direct-###01.vmdk"
snapshot0.disk0.node = "scsi0:0"
snapshot1.uid = "2"
snapshot1.filename = "Direct-###-Snapshot2.vmsn"
snapshot1.parent = "1"
snapshot1.disk0.fileName = "Direct-###01.vmdk"
snapshot1.disk0.node = "scsi0:0"
snapshot0 とsnapshot1 で親子関係があるものの、同じ vmdk ファイルを参照しており、スナップショットチェーンの論理的な親子関係に不整合が起きています。
異なるスナップショットが同じベースディスクvmdkを参照しているのが原因です。
このため、スナップショット削除時にディスクを「使用中」と認識し、削除処理がブロックされます。
重要: 作業前に仮想マシンの完全なバックアップを取得してください。
最新のデータを持つ vmdk を指定して、vmkfstools によるクローン(vmkfstools を使用した仮想マシン ディスクのクローン作成および変換)を実施します。
cd /vmfs/volumes/データストア名/仮想マシン名/vmsdファイルを削除または退避しますmv 仮想マシン名.vmsd 仮想マシン名.vmsd.bak