Oui, ce problème survient plus souvent qu’on ne le pense lorsqu’on travaille avec VMware et les snapshots. L’erreur « Impossible d’accéder à un fichier car il est verrouillé » indique qu’un processus ou un hôte bloque l’accès aux fichiers disque. Tant que ce verrou n’est pas levé, vous ne pouvez pas effectuer d’opérations importantes : consolider des disques, déplacer des VMDK, supprimer des snapshots, ni même démarrer la machine virtuelle. Ce problème est particulièrement fréquent avec des logiciels de sauvegarde comme Veeam ou en cas d’activité simultanée anormale sur la banque de données. La difficulté réside dans l’identification du processus qui bloque le fichier, surtout si vous gérez plusieurs hôtes ESXi ou des configurations de sauvegarde complexes.
Voici la marche à suivre : identifier le serveur ou le processus qui bloque la ressource implique généralement d’analyser les journaux et d’utiliser des outils en ligne de commande. Une fois le responsable identifié (par exemple, un hôte ou un processus de sauvegarde spécifique), redémarrer cet hôte ou les agents de gestion suffit souvent à résoudre le problème. Tout n’est pas automatique ; il est donc possible que vous deviez effectuer quelques vérifications manuelles au préalable. Prévoyez de migrer les machines virtuelles si vous devez redémarrer les hôtes ou les agents. Dans certains cas, vous devrez peut-être vous connecter à votre ESXi via SSH et exécuter quelques commandes pour déverrouiller la ressource.
Comment résoudre le problème des fichiers VMDK verrouillés dans VMware ESXi
Vérifiez la présence de fichiers verrouillés et identifiez la source.
- Commencez par vous connecter en SSH à l’hôte ESXi sur lequel la machine virtuelle est enregistrée. Si le protocole SSH n’est pas activé, vous devrez l’activer via l’interface utilisateur de la console directe (DCUI) ou via vSphere Client.
- Accédez au répertoire contenant les fichiers de la machine virtuelle :
cd /vmfs/volumes/Your_Datastore/Your_VM_Folder - Recherchez les informations de verrouillage dans les journaux ou vérifiez directement les fichiers verrouillés avec :
lsof | grep.vmdkou vous pouvez utiliser les commandes vmkfstools pour trouver les fichiers verrouillés. - Si vous constatez un verrouillage spécifique, examinez le fichier vmware.log dans le dossier de la machine virtuelle pour identifier les erreurs liées au verrouillage ou aux problèmes de snapshot. Recherchez la chaîne
locksuivante :cat vmware.log | grep lock
Identifiez le propriétaire de l’écluse grâce aux détails du journal.
- Les journaux afficheront des erreurs telles que « échec du verrouillage du fichier avec un code d’erreur spécifique », ressemblant souvent à :
Failed to lock the file (16392). - Vérifiez les entrées du journal autour de l’horodatage ; recherchez les lignes indiquant le processus ou l’hôte détenant le verrou, ou les lignes mentionnant le propriétaire du snapshot et du verrou.
- Vous pourriez voir une ligne comme celle-ci :
RO Owner [0](indiquant un verrou en lecture seule), ainsi que l’adresse MAC de l’hôte qui détient le verrou (mise en évidence dans certaines captures d’écran).Cela permet d’identifier quel hôte ESXi ou logiciel de sauvegarde détient le verrou.
Identifier l’hôte ESXi verrouillé
Voici la partie un peu délicate : il faut identifier l’hôte qui détient le verrou en fonction de son adresse MAC. Vous pouvez le faire avec VMware PowerCLI si vous l’avez configuré.
Import-Module VMware. VimAutomation. Core Connect-VIServer your-vcenter Get-VMHost | Get-VMHostNetworkAdapter | Where-Object {$_. Mac -like "d0:67:26:ae:79:00"} | Format-List -Property Name, Mac, Model, Status
Cela devrait vous indiquer quel serveur ESXi possède cette adresse MAC. Si vous ne disposez que de l’adresse MAC, cela permet de localiser l’hôte physique.
Si vous n’avez pas accès à PowerCLI ou si vous souhaitez une solution rapide, exécutez la commande esxcli network ip neighbor listdirectement sur l’hôte ESXi pour afficher les correspondances IP-MAC des voisins (et éventuellement identifier l’hôte qui communique activement).Le réseau entre machines virtuelles et hôtes est parfois capricieux, mais cela vaut la peine d’essayer.
Comment déverrouiller les fichiers
- Une fois l’hôte fautif identifié, la solution la plus simple consiste généralement à redémarrer ses agents de gestion. Mais avant cela, migrez ou éteignez la machine virtuelle si nécessaire.
- Pour redémarrer les agents, connectez-vous en SSH à cet hôte ESXi et exécutez :
services.sh restartou, sur les versions plus récentes, utilisez :/etc/init.d/hostd restartet/etc/init.d/vpxa restart - Si le redémarrage des agents ne résout pas le problème, un redémarrage complet du serveur peut s’avérer nécessaire. Parfois, un simple redémarrage suffit à débloquer la situation. Certes, ce n’est pas la solution idéale, mais c’est souvent la seule.
- En cas de besoin, si la machine virtuelle n’est pas critique ou s’il s’agit d’un environnement de laboratoire, vous pouvez essayer de la désenregistrer puis de la réenregistrer, ou utiliser VMKfstools pour examiner les chaînes d’instantanés et supprimer manuellement les verrous.
Que faire si vous ne pouvez pas redémarrer l’hôte ?
C’est là que les choses se compliquent. Si vous ne parvenez pas à redémarrer les hôtes ou les agents et que le verrou persiste, vous pouvez parfois tenter de migrer la machine virtuelle hors de l’hôte (si possible) à l’aide de VMware vMotion. Sinon, il est fortement déconseillé de supprimer le verrou de force, car cela pourrait corrompre votre machine virtuelle.
Dans certains cas, la suppression des instantanés via l’interface graphique ou l’interface de ligne de commande de vSphere peut s’avérer utile, mais uniquement si le verrouillage est lié à un instantané.
Un autre scénario courant concerne le dépannage des sauvegardes, notamment avec Veeam. Assurez-vous que la session de sauvegarde est parfaitement propre et que les proxys ne bloquent pas les disques après des erreurs. Supprimer les disques du matériel de la machine virtuelle dans les paramètres de celle-ci (en cochant « Supprimer de la machine virtuelle » sans supprimer les fichiers) peut parfois libérer les disques verrouillés.
Résumé
- Vérifiez les journaux pour les erreurs de verrouillage (
cat vmware.log) - Identifier le propriétaire via l’adresse MAC ou les entrées de journal.
- Trouvez l’hôte avec PowerCLI ou
esxcli - Redémarrez les agents de gestion (
services.sh restart) ou redémarrez l’hôte si nécessaire. - Soyez prudent lorsque vous supprimez manuellement des disques ou des instantanés ; faites d’abord une sauvegarde !
Conclure
Ce processus peut paraître fastidieux, mais une fois l’hôte ou le processus bloquant identifié, il suffit souvent de le déverrouiller par un redémarrage ou une simple commande. Parfois, il faut simplement attendre la fin d’une sauvegarde, notamment avec Veeam ou un outil similaire. N’oubliez pas de migrer les machines virtuelles ou d’effectuer des sauvegardes avant de redémarrer les hôtes : personne ne souhaite perdre le cluster de machines virtuelles sur lequel il a tant travaillé.
En espérant que cela aide quelqu’un à démêler un disque bloqué sans trop de difficultés. Bonne chance !