Tutorial donde mostramos paso a paso cómo reclamar el espacio no usado (libre) en un disco virtual de un datastore de VMware ESX, correspondiente a un disco duro virtual de una máquina con Windows Server 2012. Cuando usamos la opción de Thin provisioning en la creación del datastore para una máquina virtual, el fichero del disco duro usará solo el espacio que necesite bajo demanda, no todo el asignado al disco duro. Cuando desde la máquina virtual el disco se va llenando, aunque se eliminen los datos y se recupere el espacio en el disco de la máquina virtual, en el datastore no se recuperará de forma automática. Así pues mostramos cómo reclamar o recuperar este espacio en el datastore de VMware ESX.

Escenario de trabajo inicial, disco duro virtual lleno y vaciado de disco en Windows Server 2012

Cuando añadimos un disco duro virtual a una máquina virtual en VMware podemos elegir varios métodos de aprovisionamiento. Si elegimos Thin provision VMware no usará todo el espacio asignado al disco duro desde su creación si no que lo hará bajo demanda. Conforme el sistema operativo vaya necesitando o usando espacio en este disco duro VMware lo irá ampliando automáticamente solo lo necesario. Este método es interesante en entornos donde no disponemos de mucho espacio libre de inicio y queremos optimizarlo al máximo:

Este tipo de aprovisionamiento no es recomendable para discos duros que vayan a contener, por ejemplo, bases de datos o discos duros de crecimiento rápido pues puede ralentizar determinados procesos.

Si hemos optado por el Thin Provision, explorando el datastore que contiene el disco duro podremos ver el tamaño real ocupado actualmente y el tamaño en provisión. En la columna “Provisioned Size” nos indicará el tamaño que le asignamos en su creación y en la columna “Size” el tamaño ocupado realmente:

En el sistema operativo Windows Server 2012, desde el Explorador de Windows, podremos ver el espacio real ocupado, en nuestro caso en la unidad E unos 2,45 TB:

Como ejemplo formatearemos la unidad E y eliminaremos todos los datos, para comprobar que en el datastore de VMware seguirá figurando el mismo espacio en “Size” pues no se liberará.

Para formatear la unidad (nosotros lo haremos conscientes de que se pierde todo su contenido) pulsaremos con el botón derecho sobre la unidad y elegiremos “Formatear”:

Marcaremos “Formato rápido” y pulsaremos “Iniciar”:

Nos advertirá de que se perderá toda la información de la unidad, si estamos seguros pulsaremos “Aceptar”:

Finalizado el formateo nos mostrará un mensaje con el texto “Formato completo”:

Ahora la unidad E (en nuestro caso) queda con todo el espacio disponible 3,61TB en el sistema operativo de la máquina virtual:

Pero en el datastore de VMware seguirá ocupando el tamaño máximo que haya alcanzado este disco duro en algún momento desde que se creara:

A continuación explicaremos cómo liberar o reclamar este espacio en el datastore de VMware para que ocupe realmente lo correspondiente a su contenido en el sistema operativo.

Añadiremos una carpeta y un fichero de ejemplo en esta unidad para comprobar que con el proceso que realizaremos a continuación no se perderá información:

Reclamar espacio no usado en datastore de VMware ESX con máquina virtual Windows Server 2012

En primer lugar haremos una copia de seguridad de la máquina virtual. Esto es muy recomendable para evitar cualquier pérdida de información o mal funcionamiento tras el proceso. En nuestra web podrás encontrar varios tutoriales sobre cómo hacer copia de seguridad de una máquina virtual.

Desde el sistema operativo deberemos ejecutar la herramienta sdelete.exe que podremos descargar desde la web oficial de Microsoft:

Una vez descargado el fichero comprimido lo descomprimiremos y obtendremos el fichero sdelete.exe.  Copiaremos este fichero a la carpeta System32 de Windows, así lo tendremos disponible desde la línea de comandos.

Ahora abriremos una ventana de MS-DOS o shell de comandos. En Windows Server 2012 habrá que abrirla como administrador para tener todos los permisos. Para ello pulsaremos el botón de Home (Inicio) y escribiremos “cmd”, en el buscador nos aparecerá, pulsaremos con el botón derecho del ratón y elegiremos “Ejecutar como administrador”:

Dsde el shel de comandos de MS-DOS escribiremos el comando:

sdelete -z E:

(donde cambiaremos E: por la letra de unidad a la que queramos aplicar el proceso)

Nos mostrará un porcentaje del progreso, esperaremos a que finalice. Puede tardar varios minutos en función del tamaño de la unidad:

Una vez finalizado el proceso nos lo indicará con el mensaje:

Free space cleaned on E:\
1 drives zapped

Con el texto:

C:\>sdelete -z e:
SDelete – Secure Delete v1.61
Copyright (C) 1999-2012 Mark Russinovich
Sysinternals – www.sysinternals.com
SDelete is set for 1 pass.
Free space cleaned on E:\
1 drives zapped

Ahora deberemos apagar la máquina virtual, desde el propio sistema operativo:

Tras apagarla el siguiente paso será conectarnos al servidor de VMware ESX mediante SSH, usando por ejemplo PuTTY. Con el comando:

df -h

Podremos ver las unidades (datastores) del servidor de VMware ESX:

Accederemos al datastore que contiene la máquina virtual con:

cd /vmfs/volumes/nombre_carpeta

Volveremos a listar el contenido del datastore para que nos muestre las carpetas correspondientes a cada máquina virtual con el comando:

ls -lah

Y accederemos a la carpeta de la máquina virtual con:

cd nombre_carpeta

Una vez dentro podremos listar el contenido de la máquina virtual con:

ls -lah

Por último ejecutaremos el siguiente comando para reclamar el espacio en disco. En el comando deberemos especificar el fichero del disco duro virtual en cuestión (con el listado anterior puede consultarse), que tiene de extensión .vmdk:

vmkfstools -K nombre_fichero_disco_duro.vmdk

Una vez finalizado el proceso nos lo indicará con el mensaje:

Hole Punching: 100% done.

Tras el proceso podremos volver a explorar el datastore de la máquina virtual y comprobar que ya se ha recuperado el espacio libre. En la columna “Size” ahora nos indicará el tamaño real ocupado y no el aprovisionado:

Ya podremos volver a iniciar la máquina virtual y verificar que todo es correcto. En nuestro caso comprobaremos que sigue existiendo el fichero y carpeta que creamos en la unidad donde hemos aplicado el proceso de reclamación de espacio: