martes, 2 de septiembre de 2008

Redimensionando un disco virtual en vmware

Una antigua máquina virtual montada sobre Vmware que utilizo en algunas ocasiones para probar distintas configuraciones, casos, aplicaciones, etc... se quedó sin espacio en disco pues tenía configurado solamente 2GB para almacenamiento!!! (según los estándares de almacenamiento de hoy... 2GB parecen una broma :), pero bueno, tenía que resolver este incoveniente, de lo contrario debería crear una nueva máquina virtual y configurar el sistema operativo desde cero con las nuevas especificaciones para el disco virtual y con todo el tiempo (perdido) que ello implica.

Vmware provee de un conjunto de utilitarios de linea-de-comandos para apoyar la administración de las máquinas virtuales y entre ellas viene un utilitario llamado vmware-vdiskmanager que permite realizar dicha operacion de manera sencilla... simplemente se ejecuta el comando con la opción "-x" más el nuevo tamaño deseado para el disco virtual y asunto arreglado.

Ejemplo:

$ vmware-vdiskmanager -x 5Gb virtual_disk.vmdk

Bueno, la tarea parecía trivial pero el "virtual disk manager" (aka vmware-vdiskmanager) se rehusó -de plano- a realizar dicha operación indicando que no se puede efectuar tal operación sobre discos que utilizan o tienen snapshots aplicados. El mensaje es el siguiente:

This disk is part of a snapshot chain in '/var/lib/vmware/Virtual Machines/vm1/SO.vmx'.
The selected operation can only be executed on a disk with no snapshots.

La pregunta se viene de inmediato... ¿ y cómo nos deshacemos de los snapshots ?, una solución pasaría por revertir el (los) snapshot(s), pero eso tiene la implicancia de volver a estados anteriores de la máquina virtual que de seguro no es lo que se desea. Si la solución debe mantener el estado actual de la máquina virtual entonces un método simple para solucionar este problema consiste en generar otro disco virtual (nuevo) a partir del snapshot deseado.

Esta tarea se realiza con la opción "-r" de vmware-vdiskmanager que permite convertir un disco virtual hacia otro tipo.

Ejemplo:

$ vmware-vdiskmanager -r origen.vmdk -t 0 destino.vmdk

Tipos de Disco:
0 : único archivo (expandible).
1 : divide el disco virtual en trozos de 2GB (expandible)
2 : espacio físico reservado
3 : similar al caso 1 pero con el espacio físico reservado.

En mi caso utilicé la opción 0 y funcionó a la perfección!, ahora los snapshots ya no existen :)

El paso siguiente consiste en aumentar el tamaño del nuevo disco virtual (que en este caso corresponde a "destino.vmdk").

$ vmware-vdiskmanager -x 5Gb destino.vmdk

Con esto tenemos el nuevo disco con 5GB asignados y lo único que resta por hacer es incrementar el tamaño de la partición en el Sistema Operativo Huesped para que éste pueda hacer uso del espacio asignado acorde a las necesidades y asunto arreglado.

---