Unable to access file since it is locked – Fallo al consolidar

El origen de Unable to access file since it is locked

En ocasiones, sobre todo cuando trabajamos con entornos virtuales en los que se hacen backups a nivel de máquina virtual, podemos encontrarnos con warnings en las máquinas virtuales que nos indiquen “Virtual machine disks consolidation is needed

Para realizar la consolidación de discos, que no es más que eliminar los restos de snapshots que quedan abandonados, podemos ir en las acciones de la máquina virtual a Snapshot > Consolidate. Sin embargo, en algunas pocas ocasiones nos podemos encontrar con que esta acción no se puede realizar con el siguiente error:

Unable to access file since it is locked

Unable to access file since it is locked

Este error es mas o menos habitual cuando tenemos un entorno con cierta cantidad de máquinas virtuales de las que hacemos backup mediante sistemas que usen CBT / Snapshots, como pueden ser Veeam, VDP, etc.

Unable to access file since it is locked

Soluciones para Unable to access file since it is locked

A continuación te pongo una serie de pasos que suelen funcionar para solucionar este error “Unable to access file since it is locked

Refrescar los snapshots

Crear un nuevo snapshot de la máquina virtual y borrarlo posteriormente con la opción “Delete All“. Esto en ocasiones se lleva por delante restos de snapshots previos que hubiera.

Llevarse la máquina virtual a otro host

Otra prueba habitual que podemos hacer de forma rápida si el almacenamiento es compartido (y más despacio si usamos almacenamiento local) es hacer vmotion de la máquina virtual a otro host distinto.

Apagar la máquina

Si todavia obtenemos el error “Unable to access file since it is locked“, la siguiente prueba es repetir los pasos anteriores con la máquina virtual apagada si es posible. A partir de este punto, debemos esperar cierto downtime de la maquina virtual.

Reiniciar los agentes de gestion del host

Entrar por ssh al host en el que se ejecuta la máquina virtual y reiniciar el agente hostd con /etc/init.d/hostd restart. Esto es transparente para el host y no causa pérdida de servicio.

Reconectar los discos duros de la maquina virtual

Este metodo da un poco de miedo la primera vez que lo haces, pero tan solo tenemos que tener MUY CLARAS dos cosas

  • El orden de los discos en la maquina
  • Eliminar los discos sin borrarlos

Para hacer esto, apagamos la máquina virtual, editamos la configuración y seleccionamos remove en todos los discos duros de la misma. Recuerda usar la opción remove SIN borrado.

Unable to access file since it is locked

A continuación haremos Snapshot > Consolidate

Ahora viene la parte más pesada, agregaremos uno a uno y en orden TODOS los discos duros que tuviese, con la opcion Add Hard disk > Existing > Buscarlos en el datastore

Unable to access file since it is locked

Es importante que agreguemos el ultimo delta del disco problemático, ya que si no estaremos agregando un disco con datos antiguos.

Probaremos a ver si enciende la máquina. Si no fuese así, podemos ir a los siguientes dos últimos pasos. 🙂

Desbloquear el disco Manualmente metodo 1

Identificar quien es el propietario del lock de la máquina virtual

Para identificar quien es el propietario del bloqueo del disco de la máquina virtual, haremos los siguientes pasos

Identificar el disco bloqueado

Para esto, entraremos en el host donde está registrada la máquina virtual que nos da problemas y buscaremos los errores en /var/log/hostd.log con el siguiente comando

Identificar quien lo bloquea

Para identificar quien está bloqueando ese disco 9 de nuestra máquina virtual, ejecutaremos este comando (solo funciona con datastores VMFS)

Hay que fijarse en la línea de RO Owner. Podemos ver que termina en 001018f6a23e. Esa es la direccion MAC del host ESXi que tiene el lock del disco. En mi caso, sé que es el propio host ya que esta máquina en concreto es de las pocas que tengo en almacenamiento local, pero para ver la MAC de un host ESXi podemos ejecutar el siguiente comando

Podemos ver como se trata de la vmnic2. Iremos al host que tiene el bloqueo del disco y reiniciaremos su servicio hostd. Otras soluciones más extremas pueden pasar por poner el host bloqueador en modo mantenimiento y reiniciarlo.

Desbloquear el disco manualmente metodo 2: Clonar el disco dentro del datastore

La siguiente opcion es algo mas intrusiva ya que tenemos que clonar el disco de la maquina virtual que esta causando los problemas de bloqueo, a uno nuevo. Para ello usaremos el siguiente comando con la máquina virtual apagada. Es importante tomar como origen (primer parametro del -i) el ultimo snapshot disponible, en mi caso el 000008.

Ahora haremos remove del disco que nos está dando problemas en la máquina virtual, aceptaremos los cambios, y agregaremos el nuevo disco con el mismo SCSI ID que el que hemos reemplazado.

La maquina ya deberia funcionar en un 99% de los casos. Si veo que alguna vez estos pasos no me funcionan, ampliaré con las soluciones que encuentre.

 

 

Leave a Comment

Your email address will not be published. Required fields are marked *