
Consolidando snapshots en VMware
Hay veces que por una razón u otra se nos llena un datastore de VMware, normalmente es por ‘culpa’ de un snaphost que no tiene en cuenta el tamaño máximo de la definición del disco. En ciertas ocasiones al estar el datastore completamente lleno no podremos ni eliminar el snapshot, ni poder arrancar la máquina; así que estamos perdidos. Una ‘solución’ es ampliar la LUN, después ampliar el datastore y listo, reintentamos lo que queríamos. A veces esto no es posible, o directamente es una ñapa; lo que hay que hacer es consolidar nuestros discos con sus snapshots en una LUN temporal y finalmente devolverlo todo a su datastore original sin snapshots ni demás, esta es la solución.
Este por ejemplo podría ser un error típico de cuando tenemos un datastore completamente lleno, la máquina virtual intenta escribir en el datastore pero cómo no hay espacio suficiente no podemos hacer otra cosa más que apagarla.
Nos tenemos que asegurar y saber exáctamente qué discos duros son los asociados de la MV con: ‘grep -i filename /vmfs/volumes/DATASTORE_VIEJO/MV/*.vmx | grep -i vmdk’
Ahora comprobaremos el espacio que necesitaremos cómo mínimo en otro datastore para consolidar los discos, con ‘ls -lah /vmfs/volumes/DATASTORE_VIEJO/MV/*flat.vmdk’. Ya sabemos que para este ejemplo necesitamos 15Gb.
Bueno, empezamos, comprobamos los discos que tenemos con ‘grep -i filename *.vmx’ en el datastore de la máquina que tenga el snapshot. Nos fijamos en el nombre de los discos. El disco en este caso se llama ‘w2k7pro-000001.vmdk’, que es el generado por el snapshot.
Comprobamos en el descriptor de cada snapshot el CID del disco. Comprobamos que el CID del disco actual es ‘abccb37f’ y del disco superior llamado ‘w2k7pro.vmdk’ es ‘663e241a’. Se debe realizar esto hasta llegar el disco base, en mi caso ya será ese, por que tengo un sólo snapshot, así que OK. Ir comprobando uno a uno hasta comprobar que nuestra cadena de discos es correcta,
Ahora creamos una carpeta en algún datastore que tengamos con el espacio suficiente cómo para meter el disco base con los snapshots consolidados, en mi caso eran 15Gb, así que ‘mkdir /vmfs/volumes/DATASTORE_NUEVO/CARPETA/’.
Con el siguiente comando consolidaremos el disco con su snapshot en un datastore temporal: ‘vmkfstools -i /vmfs/volumes/DATASTORE_VIEJO/MV/disco-snapshot.vmdk /vmfs/volumes/DATASTORE_NUEVO/CARPETA/disco-consolidado.vmdk’ y esperamos a que finalice, que dependiendo del tamaño del disco a consolidar y la infraestructura que tengamos puede variar mucho.
Editamos la máquina virtual afectada, le eliminamos el link del disco viejo y agregamos el disco recién creado. Ahora, debemos encender la máquina y comprobar que todo es correcto y no tenemos pérdidas de información.
Tenemos que eliminar el disco base y sus snapshots, ejecutando ‘grep -A2 parentFile disco-snapshot.vmdk’ sabremos qué discos tenemos que borrar ya que nos muestra los punteros entre los discos.
Eliminamos todos los discos con ‘rm /PATH/disco.vmdk’ y confirmamos con ‘y’.
Ahora clonamos el disco recién creado a su correcta ubicación con ‘vmkfstools -i /vmfs/volumes/DATASTORE_NUEVO/CARPETA/disco-consolidado.vmdk /vmfs/volumes/DATASTORE_VIEJO/MV/disco.vmdk’
Realizamos lo mismo, desadjuntamos el disco que habíamos agregado para testear y metemos ya el correcto.Encender la máquina de nuevo y comprobamos que todo sigue siendo correcto y no tenemos pérdidas de información. La apagamos.
Ahora tenemos que eliminar la base de datos de snapshosts, podemos renombrar el fichero .vmsd y eliminarlo después.
Quitamos la máquina del inventariado.
Y la volvemos agregar al inventario y comprobaremos que ya no tiene snapshots asociados, están todos consolidados y la máquina ya podría encenderse en su datastore original!
Referencia: VMware KB 1007849