Obtener dinero con AdFly

miércoles, 25 de abril de 2012

Recrear una cabecera de un disco virtual (VMDK) perdido en VMWARE

Esta es una guía de cómo recuperar una cabecera VMDK a partir de un disco *-flat.vmdk.

La situación es la siguiente:

Supongamos que tenemos una máquina virtual corriendo en un VMWARE ESXi 5.0 ó menor... de repente se va la luz y cuando vuelve, la máquina virtual no arranca!. Cuando revisamos los archivos de configuración nos damos cuenta de que el disco virtual *-flat.vmdk está, pero la cabecera del mismo, un archivo *.vmdk ya no está!. Pero no se preocupen (demasiado), hay forma de regenerarlo:

1- Mediante un cliente SSH, como PuTTY, nos conectamos al servidor ESXi y autenticamos con el usuario y contraseña del root. Si no podemos entrar por SSH, sigue estas instrucciones para habilitarlo.

Ya estando adentro, cambiamos de directorio hasta donde está la máquina virtual en cuestión:

cd /vmfs/volumes/poolData/Servidor1/

poolData es el contenedor donde están las máquinas virtuales, ustedes deben haberle dado otro nombre. Y Servidor1, es el nombre de la máquina virtual.

2- Entonces, listamos los archivos con las extensión *.vmdk:

ls -ltr *.vmdk

La salida será el archivo Servidor1-flat.vmdk, pero Servidor1.vmdk no existe y por eso es que lo vamos a recuperar.

3- Identificamos el controlador SCSI con el comando:

less *.vmdk | grep -i virtualdev

Lo cual nos arrojará algo como lo que sigue:

scsi0.virtualDev = "lsilogic"

4- La próxima información que necesitamos es el tamaño exacto del disco virtual *-flat.vmdk. Y lo obtenemos con el siguiente comando:

ls -l *-flat.vmdk

La salida será parecida a esta:

-rw------- 1 root root 6563673896 feb 10 05:18 Servidor1-flat.vmdk

5- Ahora usamos el comando vmkfstools para crear un disco temporal (flat .vmdk) y su respectiva cabecera asociada .vmdk, con el siguiente formato:

vmkfstools -c tamañoArchivo -a tipoSCSI -d thin nombreArchivo.vmdk

Lo cual quedará así:

vmkfstools -c 6563673896 -a lsilogic -d thin temp.vmdk 

6- Ya creado, cambiamos el nombre del archivo temporal por el nombre del archivo perdido .vmdk:

mv temp.vmdk Servidor1.vmdk

7- Ahora edita el archivo de cabecera Servidor1.vmdk con vi y cambias temp-flat.vmdk por Servidor1.vmdk, cambiando esta línea:

RW 6563673896 VMFS "temp-flat.vmdk"

Por esta:

RW 6563673896 VMFS "Servidor1-flat.vmdk"

El archivo de cabecera original, que se perdió, no era un "thin provisioned", por eso también borra la línea:

ddb.thinProvisioned = "1"

8- Ahora el siguiente paso es iniciar la máquina virtual y voila!.

BASADO EN HECHO REALES! xD

EDITADO:

En el siguiente video podemos ver paso por paso como hacerlo:

4 comentarios:

  1. Claro una vez modificas el apuntador al flat en vmdk el archivo no queda legible para la VM es decir de nuevo no tienes cabecera, la solución no sirve.

    VMware
    KB: 1002511
    http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1002511

    ResponderEliminar
  2. Probablemente sea porque en la línea:

    RW 8388608 VMFS "temp-flat.vmdk"

    debes cambiar el tamaño del archivo por el que te había salido cuando ejecutaste 'ls' al flat original:

    ls -l *-flat.vmdk

    La salida será parecida a esta:

    -rw------- 1 root root 6563673896 feb 10 05:18 Servidor1-flat.vmdk

    En este caso la línea en la cabecera en quedaría de la siguiente forma:

    RW 6563673896 VMFS "Servidor1-flat.vmdk"

    Fue un error mio al momento de publicarlo. Saludos.

    ResponderEliminar