VMware ESXi – Reconstruire un VMDK depuis un -flat.vmdk

Introduction sur le VMDK

Chez VMware les disques virtuels sont appelés des VMDK, utilisant généralement le nom de la VM avec un numéro s’il en existe plusieurs et l’extension .vmdk.

Par contre vous ne le savez peut-être pas mais il fonctionne via deux fichiers :

  • Le premier se terminant par « -flat.vmdk » contenant les data au format brut.
  • Le deuxième sans le « -flat » contenant la configuration en mode texte comme l’encodage, l’id, le contrôleur, la taille…

Pêche aux informations

Il peut arriver que vous ayez un fichier -flat.vmdk mais que l’ESXi ne puisse pas l’attacher, la raison étant qu’il lui manque le fichier de configuration mais heureusement il est possible de le reconstruire. La première chose est de retrouver le type de contrôleur et la taille du flat VMDK à reconstruire.

  • Le reste se fera en SSH en se plaçant dans le folder de la VM
cd /vmfs/volumes/<DatastoreName>/<VMName>
  • Pour la taille il est possible d’ouvrir le VMX pour rechercher le contrôleur lsisas1068, lsilogic ou buslogic
vi <VMName>.vmx
scsi0.virtualDev = "lsilogic"
  • Pour retrouver la taille du disque, il faut utiliser le -flat.vmdk
ls -l <VMName>-flat.vmdk
-rw------- 1 root root 53687091200 Apr 8 14:00 <VMName>-flat.vmdk

Reconstruction du VMDK

  • On va créer un VMDK complet temporaire via cette commande avec les informations récoltées au dessus
vmkfstools -c 53687091200 -a lsilogic -d thin temporary.vmdk
  • On ne garde que le fichier de configuration
rm -i temporary-flat.vmdk
  • Puis on renomme correctement le .vmdk
mv -i temporary.vmdk <VMName>.vmdk
  • Il faut maintenant adapter le fichier de configuration pour correspondre à notre -flat.vmdk
chmod 600 <VMName>.vmdk
vi <VMName>.vmdk
  • Il faudra modifier (i) la taille du disque, le nom du -flat, le type de contrôleur et choisir le Provisioning. Si vous êtes sur que ce n’était pas un disque en ThinProvisioning, il faudra supprimer la ligne ddb.thinProvisioned
[...]
# Extent description
RW 53687091200 VMFS "<VMName>-flat.vmdk"
[...]
ddb.adapterType = "lsilogic"
ddb.thinProvisioned = "1"
  • Enregistrer le tout via Echap :wq
  • Après un petit check d’intégrité, il sera possible d’attacher de nouveau votre VMDK à une VM
vmkfstools -e <VMName>.vmdk


...BofBienTrès BienTop ! (Soit le premier à voter)
Loading...

Mathieu

Je suis actuellement Ingénieur Système spécialisé dans le design d'environnements cloud virtualisés. Adepte des technologies de VMware, Nutanix, Citrix ou Microsoft je propose à travers ce blog diverses astuces de troubleshooting.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *