Para conseguir un ahorro de espacio ocupado por las VMs en el datastore, muchos administradores deciden utilizar el tipo de provisionado "Thin" al utilizar el asistente de creación de algunas VMs:
Como ya sabemos, un disco con "Thin provision", irá aumentado su tamaño bajo demanda hasta el límite marcado (virtual disk size).
Sin embargo, su tamaño no se reducirá una vez liberado el espacio.
Veamos el siguiente ejemplo, para entender su funcionamiento:
1) Unidad de Windows: Tamaño utilizado: 815MB. (Windows, unidad E:)
2) Fichero VMDK en el Datastore: 43GB. (VSphere Client)
En algún momento, la unidad E: ha ocupado 43GB y actualmente ocupa 815MB.
El tamaño del fichero VMDK, ocupa 43GB.
Para VMs con más de un disco virtual, podemos identificar el volumen de Windows que corresponde a cada fichero VMDK de la siguiente forma:
VMWare: Identificar VMDK y disco Windows (SYSADMIT.com)
Antes de iniciar el proceso, debemos asegurarnos:
- La VM no está funcionando con snapshots, en caso afirmativo, eliminamos los snapshots existentes.
- Disponemos de un backup de la VM.
Para reclamar el espacio no usado en un fichero VMDK con provisionado thin y ajustarlo a la realidad, podemos seguir los siguientes pasos:
Con la VM en marcha:
* Si la VM es Windows:
sdelete.exe -z Unidad:
Podemos descargar de forma gratuita la utilidad sdelete:
https://technet.microsoft.com/en-us/sysinternals/bb897443
C:\WINUTIL\SDelete>sdelete.exe
SDelete - Secure Delete v1.61
Copyright (C) 1999-2012 Mark Russinovich
Sysinternals - www.sysinternals.com
usage: sdelete.exe [-p passes] [-s] [-q]
sdelete.exe [-p passes] [-z|-c] [drive letter] ...
-a Remove Read-Only attribute
-c Clean free space
-p passes Specifies number of overwrite passes (default is 1)
-q Don't print errors (Quiet)
-s or -r Recurse subdirectories
-z Zero free space (good for virtual disk optimization)
Ejemplo de ejecución sdelete sobre la unidad E:
Ejecutar desde una ventana de CMD "como administrador":
C:\WINUTIL\SDelete>sdelete.exe E: -Z
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
* Si la VM es Linux:
dd if=/dev/zero of=/volumen-montado/zeroes && rm -f /volumen-montado/zeroes
2) Detenemos la VM que está utilizando el fichero VMDK
3) Ejecución vmkfstools -K, sobre el fichero VMDK:
Conectamos vía SSH al host VMWare ESXi que tiene acceso al datastore donde se ubica el fichero VMDK.
Nos situamos en la ubicación donde se encuentra en fichero VMDK:
~ # ls /vmfs/volumes/DATASTORE01/EX1/
EX1-ctk.vmdk EX1.vmx EX1_2-ctk.vmdk vmware-3.log
EX1-flat.vmdk EX1.vmxf EX1_2-flat.vmdk vmware.log
EX1.nvram EX1_1-ctk.vmdk EX1_2.vmdk
EX1.vmdk EX1_1-flat.vmdk vmware-1.log
EX1.vmsd EX1_1.vmdk vmware-2.log
~ # cd /vmfs/volumes/DATASTORE01/EX1/
Ejecutamos vmkfstools -K sobre el fichero VMDK:
vmkfstools -K EX1_2.vmdk
vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576
Hole Punching: 100% done.
4) Resultado: Vista VSphere Client, browse datastore:
Antes: 41GB
Ahora: 866MB
Ya podemos iniciar la VM que utiliza el fichero VMDK.
Información adicional:
El paso 3, en vez de utilizar la herramienta vmkfstools, podemos utilizar VMWare Converter.
Normalmente, el proceso vmkfstools es más rápido que utilizar VMWare Converter.
Hola, tengo una consulta con respecto a una VM con Thin Provision. Resulta que el S.O de la VM es WIndows 2003 SP2. (Viejo, pero muy funcional para pruebas de aplicaciones en mi trabajo). Resulta que la maquina tiene 31 GB de espacio utilizado. Y tiene como espacio total 41GB. Pero en el ESX tengo aprovisionamiento a 100GB. COmo hago para reclamar ese espacio y que la VM siga siendo Thin?
ResponderEliminarHola Jose,
Eliminar¡Gracias por participar en el blog!
Entiendo que desde el administrador de discos de Windows (diskmgmt.msc), ves espacio no particionado de 100GB - 41GB = 59GB.
Hay varios métodos para solucionar el problema.
Uno de ellos es configurar en la VM un segundo disco de 41GB, arrancar la VM con una ISO de un programa de clonado: Ghost, Acronis, Clonezilla, etc... y hacer una imagen disk to disk.
Una vez finalice, basta con retirar el disco antiguo e indicar que arranque con en nuevo.
Si todo ha ido bien, bastará con borrar el VMDK del disco antiguo desde el ESXi.
Un saludo!
Xavi.