tlan.info

Restaurar un fichero *-flat.vmdk huérfano

Marzo 2016 | Luis Ruiz

 

Volver a crear el Fichero de Disco Descriptor de una VM 

 

Hoy os explicare un problema bastante común cuando trabajamos con entornos virtuales y que a mi concretamente me ha ocurrido algunas veces, la corrupción del fichero ".vmdk", que es el fichero que contiene los descriptores de disco, y si este fichero no se encuentra operativo es imposible que la VM se ponga en funcionamiento.

 

Si me habéis seguido en anteriores artículos, siempre insisto en que es Norma de Obligado Cumplimiento (NOC), tener siempre un backup actualizado del sistema y de las VM, ese deberia ser el primer paso a la hora de restaurar cualquier fallo de nuestra VM, pero en caso contrario si os encontrais con este fallo de disco debereis seguir los siguientes pasos, pero antes os resumire los distintos ficheros que forman una VM.

 

Los tres ficheros más importantes que forman una VM son:

  • El fichero de Configuracion (Configuration File ".vmx")
  • El fichero BIOS (Bios File ".nvram")
  • El Fichero de Disco Virtual  (Disk Descriptor File ".vmdk")
   

Pasos para Reconstruir la VM

Paso 1: Nos muestra la siguiente ventana, donde nos dice que el fichero de Disco "PC-ITL03.vmkd" no lo encuentra, para solucionar este problema y poner la VM en producción, nos conectamos la Host donde tenemos hospedada nuestra VM vía SSH (putty).
Paso 2: Ejecutamos "putty".
Paso 3: Accedemos al Datastore.

Accedemos a nuestro Datastore donde tengamos nuestro archivo "*-flat.vmdk" , siguiendo los siguientes pasos, una vez accedido al Host ESXi:

  • Login :root
  • password
  • cd vmfs
  • cd volumes
  • ls
  • cd <nombre_datastore> en mi caso cd "SCSI MSA500"
  • ls
  • cd <nombre_VM> en mi caso cd PC-ITL03
  • ls -ltr
    • Identificar el tamaño de fichero de nuestra VM, recuadrado en rojo.

rw-------    1 root     root     268513280 Mar 23 11:48

PC-ITL03-20eba563-c3bb-48c7-a740-85637ee91401-xd-delta-delta-flat.vmdk

Paso 4:Identificamos el controlador SCSI.

A continuación como vemos en el Paso 4, necesitamos saber el nombre del controlador SCSI de disco que estamos utilizando, para esto necesitamos escribir el comando recuadrado en rojo en la imagen (casi siempre es lsilogic).

 

les <nombre_VM.vmx> | grep -i virtualdev

Paso 5: Creamos un nuevo disco vacio temporal.

Una vez obtenidas las dos informaciones anteriores, Disco y Controladora, utilizaremos el siguiente comando "vmkftools" para crear un disco temporal a partir del fichero "*-flat.vmkd".

 

vmkftools -c <tamaño_disco> -a <controladora_SCSI> -d thin <nombre_archivo_tmp.vmkd>

 

  • "-c" -> Nombre del archivo *-flat.vmkd
  • "-a" -> Controladora SCSI virtual
  • "-d" -> Creamos el disco en formato "thin provisioned" y nombre_archivo.vmkd. (Recordar no utilizar el nombre original ya que escribiremos el archivo con un disco de datos vacio).

 

Paso 6: Como resultado vemos que se han creado los ficheros PC-ITLTEMP-flat.vmkd y PC-ITLTEMP.vmkd.
Paso 7: Procedemos a borrar el fichero *-flat.vmdk.

Eliminamos el fichero *-flat.vmdk recién creado, que no contine datos, se encuentra vacio, en mi caso rm -i PC-ITLTEMP-flat.vmkd y pulsamos "Y" para confirmar.

 

rm -i <nombre_fichero-flat.vmkd>

 

  • "-i" -> Interactivo. Con esta opción, rm pide confirmación antes de eliminar cualquier archivo.

 

Paso 8: Renombramos el fichero teporal por el original.

Ahora tenemos que renombrar el fichero temporal.vmkd al nombre de nuestro *-flat.vmkd huérfano como vemos en la imagen, en mi caso mv -i PC-ITLTEMP.vmkd PC-ITL03.vmkd y pulsamos "Y" para confirmar.

 

mv -i <nombre_fichero_temporal.vmkd> <nombre_fihero_huérfano_flat_original>

 

  • "-i" -> Interactivo. Con esta opción, rm pide confirmación antes de eliminar cualquier archivo.

 

Paso 9: Por último debemos de cambiar unos parametros en el archivo descriptivo.
Paso 10: Resultado del Fichero descriptivo con los cambios realizados.

Por último como os digo en Paso 9, deberemos de cambiar uos parametros  en el fichero descriptivo, en mi caso PC-ITL03.vmkd, podeis utilizar  el editor de Linux "vi" o "WinSCP" para copiaros el fichero en un S.O. Windows, y editarlo con el Bloc de Notas y posteriormente copiarlo nuevamente modificado en su ubicación original.

 

Observar en el Paso 9,  apartado "Extent description" se encuentra el nombre del fichero temporal, lo cambiamos por el nombre del fichero original Paso 10, en mi caso "PC-ITLTEMP-flat.vmkd" -> "PC-ITL03.vmkd".

 

A continuación si tu disco es de tipo thick "sería la normal para un ambiente de producción", teneis que eliminar la linea correspondiente a "ddb.thinProvisioned = "1" ", Paso 9, caso contrario dejar la linea.

 

Una vez terminado este proceso ya podemos encender nuestra VM y la tendremos nuevamente operativa.

 

 

Correo electrónico: luis.ruiz@itlan.info