Error de VMWare: no se puede acceder a un archivo porque está bloqueado

Muy a menudo, cuando elimino instantáneas o consolido discos de máquinas virtuales que se ejecutan en hosts VMWare ESXi, veo el mensaje «No se puede acceder a un archivo porque está bloqueado» error. Este problema frecuente está relacionado con errores en un software de respaldo de VM (me encontré con el problema en Veeam, HPE/Micro Focus Data Protector, Veritas). Si la instantánea del disco virtual está bloqueada, no podrá consolidar discos (cuando vea el error ‘Virtual machine disks consolidation is needed‘), mueva un disco a otro almacén de datos mediante Storage vMotion, haga una copia de seguridad de una máquina virtual o elimine la instantánea actual. A veces ni siquiera puede encender una máquina virtual bloqueada.

Un error de acceso a un archivo de disco virtual bloqueado o una instantánea en VMWare puede verse así:

Unable to access file since it is locked.
An error occurred while consolidating disks: One or more disks are busy.

vmware error No se puede acceder al archivo porque está bloqueado.

Además, es posible que vea este error:

An error occurred while consolidating disks: msg.snapshot.error-DISKLOCKED.

La mayoría de las veces aparece el error «No se puede acceder al archivo porque está bloqueado» cuando:

  • Algunos archivos de una máquina virtual encendida contienen etiquetas que indican que están bloqueados por otros hosts ESXi;
  • Cuando se agregan discos virtuales al dispositivo de respaldo y la sesión de respaldo falla.

Para encontrar el origen de un bloqueo y liberarlo, primero debe identificar los archivos bloqueados.

  1. Con un cliente SSH, conéctese al host ESXi en el que está registrada la VM problemática;
  2. Vaya al directorio con los archivos de la máquina virtual: cd /vmfs/volumes/VMFS_DATASTORE_NAME/LOCKED_VM
  3. Busque errores de consolidación y bloqueo de archivos en vmware.log: cat vmware.log | grep lock
  4. El registro contendrá errores como ese:
    VigorSnapshotManagerConsolidateCallback: snapshotErr = Failed to lock the file (5:4008)
    2020-09-09T05:07:11.432Z| vmx| I125: DISK: Cannot open disk "/vmfs/volumes/5121c3ff-2303a3a-33bb-12345678221/mun-web01/mun-web01_1-000002.vmdk": Failed to lock the file (16392).
    2020-09-09T05:07:11.432Z| Worker#1| I125: DISKLIB-LIB : Failed to open '/vmfs/volumes/5121c3ff-2303a3a-33bb-12345678221/mun-web01/mun-web01-000002.vmdk' with flags 0xa Failed to lock the file (16392).
    2020-09-09T05:07:11.432Z| Worker#1| I125: DISK: Cannot open disk "/vmfs/volumes/5121c3ff-2303a3a-33bb-12345678221/mun-web01/mun-web01-000002.vmdk": Failed to lock the file (16392).
    2020-09-09T05:07:11.432Z| vmx| I125: [msg.fileio.lock] Failed to lock the file

     vmware.log No se pudo bloquear el archivo

  5. En este ejemplo, puede ver que el archivo mun-web01_1-000002.vmdk está bloqueado;
  6. Con el siguiente comando, puede mostrar la cadena de instantáneas actual a partir de la especificada en un disco plano: vmkfstools -qv10 mun-web01_1-000002.vmdk
  7. Luego obtenga la información sobre la instantánea y su propietario (propietario de RO): vmkfstools -D mun-web01-000001-delta.vmdk
Lock [type 10c000021 offset 242835456 v 856, hb offset 3153920
gen 3, mode 1, owner 5cbac61a-4b6e32b7-0480-d06726ae7900 mtime 5199410
num 0 gblnum 0 gblgen 0 gblbrk 0]
RO Owner[0] HB Offset 3153920 5cbac61a-4b6e32b7-0480-d06726ae7900
Addr <4, 532, 83>, gen 859, links 1, type reg, flags 0, uid 0, gid 0, mode 600

los Propietario de RO La línea muestra la dirección MAC del adaptador de red del host ESXi que ha bloqueado el archivo de instantánea (la dirección MAC está resaltada en la captura de pantalla). Además, tenga en cuenta el valor de Modo:

  • modo 1 – un bloqueo de lectura/escritura (por ejemplo, de una máquina virtual encendida);
  • modo 2 – normalmente significa que el disco virtual está bloqueado por la aplicación de copia de seguridad.

Para encontrar un servidor ESXi si se conoce una dirección MAC, puede usar los siguientes comandos de PowerCLI (convierta la dirección MAC que obtuvo anteriormente al formato con dos puntos):

Import-Module VMware.VimAutomation.Core -ErrorAction SilentlyContinue
connect-viserver mun-vcenter
Get-VMHost | Get-VMHostNetworkAdapter | Where-Object {$_.Mac -like "d0:67:26:ae:79:00"} | Format-List -Property *

powercli encuentra vmware esxi por una dirección MAC

El nombre de host ESXi se mostrará en la HostVM campo.

Además, puede mostrar la tabla ARP directamente desde el host ESXi y obtener direcciones IP y MAC de todos los demás servidores ESXi en la red VMkernel:

esxcli network ip neighbor list

esxcli red ip vecino - lista de direcciones MAC

Para desbloquear un archivo de VM, simplemente reinicie el host ESXi que encontró (migre todas las VM desde él usando VMotion por adelantado). Si no puede reiniciar el host, reinicie Management Agent (hostd) en el modo de mantenimiento desde la consola SSH del host:

services.sh restart

Luego intente consolidar discos o eliminar una instantánea de VM nuevamente.

Los «No se puede acceder al archivo porque está bloqueado” el error ocurre a menudo en Copia de seguridad y replicación de Veeam cuando se utiliza un servidor proxy de Veeam. Debido a errores de copia de seguridad, es posible que Veeam no desmonte un disco de máquina virtual correctamente.

Para solucionar el problema, abra la configuración de la máquina virtual en la que está instalado el proxy de Veeam. Retire el disco de la máquina virtual que tiene archivos bloqueados del hardware de la máquina virtual.

Asegúrese de haber marcado «Eliminar de la máquina virtual” en lugar de “Eliminar de la máquina virtual y eliminar archivos del disco”, de lo contrario, puede eliminar accidentalmente su disco vmdk.

Artículos Interesantes