snapshots

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.

 

 

Curso de VMware 5.5 – Snapshots

Los snapshots son merecedores de un corto capítulo en el curso de VMware. Mal utilizados por muchos, infravalorados por otros, y grandes ayudantes para la gente que realiza modificaciones serias en sus máquinas virtuales y quiere disponer de una red para no tirarse al vacío realizándolos.

¿Qué es un Snapshot?

Un snapshot es una instantánea que se toma de una máquina virtual en un momento en el tiempo. Al crear un snapshot, creamos un punto de restauración en la máquina virtual, de manera que si, por poner un ejemplo extremo, la formateamos dos minutos después, podemos recuperar todo con un par de clicks.

Tenemos dos niveles de snapshots, que proporcionan una vuelta atrás más o menos completa:

Snapshot RAM + Disco Duro – Es el snapshot más completo que podemos hacer. Incluye la memoria RAM del equipo, por lo que si hacemos uso de él, volveríamos al estado exacto del equipo en el momento de realizarlo, incluidas las aplicaciones abiertas y su estado. Tarda en realizarse el tiempo que se necesite para hacer un volcado de la memoria RAM a disco duro.

Snapshot solo Disco Duro – Es un snapshot inmediato, en el que guardamos el estado de los bloques del disco duro. Volver a este snapshot supone reiniciar el equipo y perder el estado de las aplicaciones que estuviesen ejecutándose cuando se tomó el snapshot.

¿Qué NO es un Snapshot?

Un snapshot NO es un backup. No es una forma de hacer copias de seguridad. No es una forma de Disaster Recovery. No es un business continuity plan. No es algo que haces porque sí.

Los snapshots de máquina virtual penalizan el rendimiento de la máquina virtual e impactan en el almacenamiento. Los Snapshots crecen y crecen y pueden llegar a ser un auténtico problema a nivel de espacio en disco. Además, intentar borrar un snapshot que lleva mucho tiempo creado y ha crecido de forma desproporcionada, puede ser una tarea casi imposible y hacer sudar a almacenamientos de varios miles de euros en según que entornos.

¿Como funcionan los Snapshots en VMware?

Cuando hacemos un snapshot de disco, VMware “atonta” de forma momentánea a la máquina virtual y aprovecha para darle un cambiazo en el disco duro. La máquina virtual comienza a partir de ese momento a escribir todos sus cambios en un nuevo archivo, que es un diferencial o delta con respecto al disco duro original de la máquina virtual. Es por esto que si queremos volver atrás en el snapshot, tan solo debemos indicar al hipervisor que le vuelva a dar el cambiazo a la máquina virtual y la apunte al disco duro que tenía anteriormente. Los snapshots se pueden anidar, de la siguiente forma

Como crear un Snapshot en VMware

Para crear un Snapshot en VMware, haremos click derecho sobre la maquina virtual y seleccionaremos Take Snapshot.

snapshots en vmware

En el menú que nos aparecerá, escribiremos el nombre del snapshot (busca algo identificativo que te permita saber luego si lo puedes borrar)

snapshots en vmware

También aparecerán dos opciones:

  • Snapshot the virtual machine’s memory – Es la opción para hacer snapshot también del estado de la RAM del disco, permitiendo guardar el estado de las aplicaciones en ejecución. Tarda más en realizarse, por lo que solo debes hacerlo cuando realmente te valga la pena.
  • Quiesce guest file system (Needs VMware Tools Installed) – Es una opción que hace que las VMware tools ordenen una escritura a disco al sistema operativo de todos los datos que tenga pendientes de escribir. Esto hace que los snapshots del disco tengan un mayor grado de consistencia, aunque no proporciona consistencia a nivel de aplicación, como en el caso de algunas bases de datos.

Con estos dos pasos, ya hemos creado un snapshot de la máquina virtual. Si quieres, puedes probar a borrar algunos archivos ahora que disponemos del snapshot.

Como volver a un snapshot anterior en VMware

Ahora que hemos borrado unos archivos (o instalado una actualización de sistema operativo o una aplicacion) vamos a imaginarnos que algo ha ido desastrosamente mal y queremos volver a como estábamos antes de comenzar. Haremos click derecho encima de la máquina virtual y seleccionaremos Manage Snapshots

snapshots en vmware

En el siguiente menú, seleccionaremos al punto de snapshot al que queremos volver y pulsaremos el botón Revert To. Esta acción nos dejará la máquina como la teníamos en ese momento. Si el snapshot incluía RAM, la máquina se restaurará encendida. Si el snapshot no incluía memoria RAM, la máquina se restaurará apagada y tendrás que encenderla a mano.

snapshots en vmware

Te has fijado en que los snapshots se pueden anidar, incluso crear diferentes ramificaciones? He visto desarrolladores que usan esto para crear desde una misma máquina virtual diferentes entornos y poder moverse de una configuración a otra de forma bastante rápida.

Borrar Snapshots en VMware

El borrado de snapshots en VMware se realiza seleccionando el snapshot que quieres eliminar y pulsando el botón Delete que ves en la captura anterior. Si quieres eliminarlos todos, deberás pulsar directamente el botón Delete All.

Estás avisado de que el borrado de snapshots es una tarea MUY intensiva con el disco que implica lecturas, escrituras y borrados. Procura hacerlos en horas valle de tu almacenamiento. También debes saber que durante el proceso de borrado de snapshots la máquina quedará “atontada” en algunos momentos y no puedes hacer nada para evitarlo.

Otra cosa muy importante y que lamentablemente todos aprendemos cuando un borrado de snapshot está afectando al rendimiento de nuestro almacenamiento. Un borrado de snapshots NO SE PUEDE CANCELAR.

Buscar Snapshots en vSphere

Buscar Snapshots en vSphere debe ser una tarea habitual en tu infraestructura. Si bien podemos automatizar esto mediante powercli, saber como localizarlos es algo que siempre viene bien.

Utilizar snapshots a modo de backup es un gran error. El snapshot está bien para guardar una máquina virtual de unos cambios que vas a hacer de forma inmediata y tener una vuelta atrás rápida y asegurada. El problema es cuando te los dejas olvidados y crecen y crecen sin control. Otra mala práctica es hacer varios niveles de snapshot. La consolidación de snapshots cuando los eliminas puede tardar horas y dejar tu almacenamiento temblando en el proceso.

Hace unos años presencié como el borrado de 5 snapshots anidados que llevaban meses creciendo duró buena parte de un fin de semana. De verdad, no es algo para tomar a la ligera por el enorme impacto que puede tener en el resto de tu entorno a nivel de contención en el almacenamiento.

Si quieres buscar snapshots en vsphere, deberás ir al nivel del datacenter (o cualquier nivel inferior como cluster o host), e ir a Storage Reports. En esa pantalla puedes ordenar de mayor a menor por la columna de Snapshot Space y localizar de forma rápida y sencilla los snapshots que hay.