vmdk not found – Ripristino del descriptor file vmdk

Recreating a missing VMDK (VMware virtual machine disk descriptor file)

Cosa accade se accidentalmente viene cancellato il descrittore dei dischi virtuali di VMware? Semplicemente si rende il disco illegibile compromettendo la partenza della virtual machine.

Diamo il caso che una delle nostre VM non parta più e che riceviamo l’errore “vmdk not found “. Prima di allarmarci verifichiamo che sia presente il “disco”.
Per comodità entriamo nella directory della VM

cd /vmfs/volumes/CT500MX/VM_LBIT_TEST

Cerchiamo il tipo di controllo SCSI della virtual machine nel file .vmx

grep scsi VM_LBIT_TEST.vmx

Ora dobbiamo vedere l’esatta dimensione del file -flat:

ls -l VM_LBIT_TEST-flat.vmdk
-rw------- 1 root root 171798691840 Oct 11 12:30 VM_LBIT_TEST-flat.vmdk

Andiamo a creare un file temporaneo usando il tool vmkfstools:

vmkfstools -c 171798691840 -d thin temp.vmdk

Eliminiamo il file -flat.vmdk che ci ha creato

rm -i temp-flat.vmdk

Ed ora andiamo a rinominare il nostro Mware virtual machine disk descriptor file temp.vmdk in VM_LBIT_TEST.vmdk:

mv -i temp.vmdk VM_LBIT_TEST-flat.vmdk

Ora apriam il nostro VMDK e andiamo a sostituire i paramentri temp con il nome del nostro file -flat, nel nostro caso è VM_LBIT_TEST-flat.vmdk
Ecco come si presenta il file generato dal comando vmkfstools:

# Disk DescriptorFile
version=3
encoding="UTF-8"
CID=3bc86a12
parentCID=ffffffff
createType="vmfs"
#
# Extent description
RW 335544320 VMFS "temp.vmdk"
#
# Change Tracking File
changeTrackPath="temp-ctk.vmdk"
#
# The Disk Data Base
#DDB
#
ddb.adapterType = "lsilogic"
ddb.geometry.cylinders = "20886"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.longContentID = "df24793fbf5a3e5ba49813303bc86a12"
ddb.thinProvisioned = "1"
ddb.toolsInstallType = "2"
ddb.toolsVersion = "10346"
ddb.uuid = "60 00 C2 90 3f 7b d4 cb-98 bb 90 11 81 8c 3d 91"
ddb.virtualHWVersion = "14"

E questo modificato con il nome del nostro disco virtuale
# Disk DescriptorFile
version=3
encoding="UTF-8"
CID=3bc86a12
parentCID=ffffffff
createType="vmfs"
#
# Extent description
RW 335544320 VMFS "VM_LBIT_TEST.vmdk"
#
# Change Tracking File
changeTrackPath="VM_LBIT_TEST-ctk.vmdk"
#
# The Disk Data Base
#DDB
#
ddb.adapterType = "lsilogic"
ddb.geometry.cylinders = "20886"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.longContentID = "df24793fbf5a3e5ba49813303bc86a12"
ddb.thinProvisioned = "1"
ddb.toolsInstallType = "2"
ddb.toolsVersion = "10346"
ddb.uuid = "60 00 C2 90 3f 7b d4 cb-98 bb 90 11 81 8c 3d 91"
ddb.virtualHWVersion = "14"

Possiamo verificare che il file sia “consistente” con il seguente comando:

vmkfstools -e VM_LBIT_TEST.vmdk

Non ci reste che avviare la VM ed abbiamo finito.
Buon lavoro.