Contexte
Environnement de production VMware vSphere. Une nouvelle VM est créée et on lui rattache un disque virtuel provenant d’une ancienne VM — pour récupérer des données ou réutiliser un volume existant. Suite à cette opération et à une extension de la taille du disque, la VM refuse de démarrer.
Symptômes
Depuis vSphere Client, au démarrage de la VM :
- La VM reste bloquée à l’état “Starting”
- Erreur dans les événements vSphere :
Cannot open the disk 'datastore/NouvelleVM/disque.vmdk' or one of
the snapshot disks it depends on.
Reason: The parent virtual disk has been modified since the child
was created.
- Impossible de monter le disque
- La VM ne démarre pas
Cause racine
Un disque VMware contient dans son descriptor .vmdk deux identifiants
critiques :
|
|
Quand un disque est détaché d’une ancienne VM puis rattaché à une nouvelle,
VMware peut créer un nouveau descriptor qui référence l’ancien comme parent —
créant une chaîne de dépendance fantôme. Si en plus le disque a été étendu,
l’index de taille en secteurs dans le descriptor devient incohérent avec la
taille réelle du fichier -flat.vmdk.
Le résultat : VMware considère le disque comme corrompu ou invalide et refuse de démarrer la VM.
Diagnostic
Étape 1 — Accéder au datastore via SSH
|
|
On doit voir deux fichiers pour le disque rattaché :
|
|
Étape 2 — Lire le descriptor
|
|
Exemple de contenu problématique :
|
|
Deux problèmes visibles :
parentCID=e5f6a7b8— le disque pense dépendre d’un parent qui n’existe plusRW 41943040— la taille en secteurs peut être incorrecte si le disque a été étendu
Étape 3 — Vérifier la taille réelle du flat
|
|
Résolution
Corriger le descriptor manuellement
|
|
Apporter les corrections suivantes :
|
|
Calcul des cylindres :
|
|
Valider le descriptor
|
|
Aucune erreur = le descriptor est valide.
Démarrer la VM
Depuis vSphere Client, démarrer la VM. Elle doit passer en “Running” immédiatement.
Vérification post-incident
Une fois la VM démarrée, vérifier que le système d’exploitation voit bien la bonne taille de disque :
Linux :
|
|
Windows :
Gestion des disques → clic droit sur le volume → Étendre le volume
Leçons retenues
Ne jamais réutiliser un disque d’une ancienne VM directement — toujours
cloner le disque proprement via vmkfstools plutôt que de le rattacher
tel quel :
|
|
Cette commande génère un nouveau descriptor propre, sans référence à l’ancienne VM, et avec la bonne taille.
Étendre un disque avant de le rattacher — étendre le disque pendant qu’il est encore attaché à l’ancienne VM (ou via vmkfstools hors ligne) évite les incohérences de descriptor.
Toujours valider avec vmkfstools avant de démarrer — un simple
vmkfstools -t 0 disque.vmdk prend 5 secondes et évite un incident.
Conclusion
Un disque VMware réutilisé d’une ancienne VM embarque avec lui son historique — CID, parentCID, UUID, taille indexée. Rattacher ce disque à une nouvelle VM sans nettoyer le descriptor crée des incohérences que VMware refuse de tolérer au démarrage.
La résolution est chirurgicale : deux lignes à corriger dans un fichier
texte. Mais encore faut-il savoir où regarder — et comprendre que le
.vmdk descriptor n’est pas un fichier binaire opaque mais un fichier
texte lisible et modifiable directement.
C’est ce type de connaissance bas niveau qui fait la différence entre un incident résolu en 45 minutes et une VM restée éteinte pendant des heures.