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 type il est possible d’ouvrir le VMX pour rechercher le contrôleur lsisas10
    68
    , 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) 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

Mathieu

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

S’abonner
Notification pour
guest

8 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
Etienne
Etienne
4 années il y a

Merci beaucoup pour votre article, il m’a bien dépanné. J’avais un fichier .vmdk corrompu après un déplacement vers un volume qui n’avait pas assez d’espace disponible. J’avais toujours le fichier -flat.vmdk. Grâce à votre procédure, j’ai pu reconstituer mon fichier .vmdk et relancer ma VM. En plus, j’ai mieux compris le rôle de chaque fichier.

raoul
raoul
4 années il y a

Bonjour,
Pour que ca fonctionne chez moi j’ai du diviser par 512 la taille du flat
A+

Xavier
Xavier
4 années il y a

Bonjour Mathieu,

Pour apporter une precision a ce que dit justement Raoul,
lors de l’edition du fichier .vmdk
dans la ligne commencant par RW, il faut uniquement changer le nom du disque,
la taille est deja configurée par l’operation vmkfstools.
@Mathieu si vous avez le temps de modifier la dite ligne

Encore merci,
Cordialement,
Xavier

Doc
Doc
2 années il y a

Oups, merci Mathieu ! Pile poil ce qu’il fallait à notre vieux virtualiseur…
Vraiment merci !