En este artículo, vamos a considerar en detalle el aspecto de la preasignación de almacenamiento de disco virtual y descubrir qué son la provisión gruesa y la provisión delgada, cómo difieren y cuál de estos tipos de preasignación de almacenamiento es mejor para su infraestructura.
Provista Gruesa
La provisión gruesa es un tipo de preasignación de almacenamiento. Con la provisión gruesa, la cantidad completa de capacidad de almacenamiento de disco virtual se preasigna en el almacenamiento físico cuando se crea el disco virtual. Un disco virtual provisto de forma gruesa consume todo el espacio asignado en el almacén de datos desde el principio, por lo que el espacio no está disponible para su uso por otras máquinas virtuales.
Existen dos subtipos de discos virtuales provistos de forma gruesa:
- A Lazy zeroed disk is a disk that takes all of its space at the time of its creation, but this space may contain some old data on the physical media. This old data is not erased or written over, so it needs to be “zeroed out” before new data can be written to the blocks. This type of disk can be created more quickly, but its performance will be lower for the first writes due to the increased IOPS (input/output operations per second) for new blocks;
- Un disco de ceros ansiosos es un disco que obtiene todo el espacio requerido en el momento de su creación, y el espacio se borra de cualquier dato previo en el medio físico. Crear discos ansiosos de ceros lleva más tiempo, porque se escriben ceros en todo el disco, pero su rendimiento es más rápido durante las primeras escrituras. Este subtipo de disco virtual provisto de forma gruesa admite características de agrupación, como la tolerancia a fallos.
Por razones de seguridad de los datos, el cero ansioso es más común que el cero perezoso con discos virtuales aprovisionados de forma gruesa. ¿Por qué? Cuando se elimina un VMDK, los datos del almacén de datos no se borran por completo; los bloques simplemente se marcan como disponibles, hasta que el sistema operativo los sobrescribe. Si crea un disco virtual con cero ansioso en este almacén de datos, el área del disco se borrará por completo (es decir, se pondrá a cero), lo que evitará que cualquier persona con malas intenciones pueda recuperar los datos anteriores, incluso si utiliza software especializado de terceros.
Aprovisionamiento fino
El aprovisionamiento fino es otro tipo de preasignación de almacenamiento. Un disco virtual de aprovisionamiento fino consume solo el espacio que necesita inicialmente y crece con el tiempo según la demanda.
Por ejemplo, si crea un nuevo disco virtual de aprovisionamiento fino de 30 GB y le copia 10 GB de archivos, el tamaño del archivo VMDK resultante será de 10 GB, mientras que tendría un archivo VMDK de 30 GB si hubiera elegido utilizar un disco de aprovisionamiento completo.
Los discos virtuales aprovisionados dinámicamente son rápidos de crear y útiles para ahorrar espacio de almacenamiento. El rendimiento de un disco aprovisionado dinámicamente no es superior al de un disco aprovisionado grueso con ceros diferidos, ya que para ambos tipos de discos es necesario escribir ceros antes de escribir datos en un nuevo bloque. Ten en cuenta que cuando eliminas datos de un disco virtual aprovisionado dinámicamente, el tamaño del disco no se reduce automáticamente. Esto se debe a que el sistema operativo sólo elimina los índices de la tabla de archivos que hacen referencia al cuerpo del archivo en el sistema de archivos; marca los bloques que pertenecían a archivos “eliminados” como libres y accesibles para que se escriban nuevos datos en ellos. Por eso vemos la eliminación de archivos como instantánea. Si se tratara de una eliminación completa, en la que se escribieran ceros sobre los bloques que ocupaban los archivos eliminados, tardaría aproximadamente el mismo tiempo que copiar los archivos en cuestión. Consulta la siguiente ilustración simplificada.
Problemas que pueden ocurrir al utilizar discos virtuales aprovisionados dinámicamente
El uso de discos virtuales aprovisionados dinámicamente no siempre es sencillo. Hay algunos problemas que debes conocer y estar preparado para afrontar.
Consideremos un ejemplo que representa que las máquinas virtuales inutilizables. Por ejemplo, tenemos un almacén de datos de 20 GB con tres máquinas virtuales ejecutándose en él. Cada máquina virtual tiene un conjunto de discos virtuales aprovisionados con un tamaño máximo de 10 GB. (Esta práctica se denomina “sobreaprovisionamiento”: asignamos a los discos virtuales más espacio del que pueden ocupar físicamente. Esto se hace a menudo, ya que le permite escalar el sistema agregando más almacenamiento físico según lo necesite). El tamaño del archivo de cada disco virtual se expandirá a medida que se agreguen datos, hasta que no quede espacio libre en el almacén de datos. La situación se vuelve crítica cuando solo queda 1 GB de espacio libre en el almacén de datos, como cuando, por ejemplo, VM1 ocupa 8 GB, VM2 ocupa 7 GB y VM3 – 4 GB.
Los métodos regulares de eliminación de archivos dentro de máquinas virtuales no ayudarán a reducir los discos virtuales aprovisionados. Si se escriben más de 1 GB de datos nuevos en cualquiera de estas máquinas virtuales, las tres fallarán y deberá migrar una o más de las máquinas virtuales a otro almacén de datos para restaurar sus estados de ejecución.
Cómo reducir el tamaño del disco virtual aprovisionado después de eliminar archivos
Para poder reducir el tamaño del archivo VMDK de sus discos virtuales aprovisionados, necesita saber cómo poner a cero los bloques que los datos que eliminó anteriormente ocupaban. Averigüemos cómo hacerlo.
Nota: Las operaciones de reducción de disco solo son posibles si las máquinas virtuales no contienen instantáneas. Además, tenga cuidado y ejecute los comandos bajo su propia responsabilidad. Siempre haga una copia de seguridad de todos sus datos importantes antes de realizar cualquier operación de disco.
Reducción de discos VMware Thin-Provisioned en Linux
Consideremos un ejemplo: tenemos un archivo VMDK de 10,266,496 KB (10GB) (aprendimos sobre su tamaño yendo al directorio en el almacén de datos donde se encuentra nuestra máquina virtual) y queremos reducir el disco virtual en el cual está instalado el sistema operativo Linux invitado. Podemos intentar eliminar archivos innecesarios en este disco virtual. Sin embargo, Linux no elimina automáticamente los bloques después de borrar archivos; tendrás que hacerlo tú mismo. Puedes hacerlo utilizando la utilidad dd
(duplicador de datos) para copiar y convertir datos. Esta herramienta está disponible en todos los sistemas Linux.
Nota: Antes de ejecutar la utilidad dd
, es necesario asegurarse de que el almacén de datos tenga suficiente capacidad para usarla (por ejemplo, para el servidor ESXi, puedes verificar la capacidad de almacenamiento en la sección de almacenamiento del cliente vSphere: ve a Configuración > Almacenamiento).
Utilicemos la utilidad dd
.
-
Primero, comprobamos el espacio libre en una máquina virtual Linux invitada utilizando el comando
df -h
:root@test-virtual-machine:/# df -h
Obtenemos la siguiente salida en la consola:
Sistema de archivos Tamaño Usado Disp. Uso% Montado en udev 469M 0 469M 0% /dev tmpfs 99M 6,3M 92M 7% /run /dev/sda7 17G 8,8G 6,4G 58% / tmpfs 491M 116K 491M 1% /dev/shm tmpfs 5,0M 4,0K 5,0M 1% /run/lock tmpfs 491M 0 491M 0% /sys/fs/cgroup /dev/sda1 945M 121M 760M 14% /boot /dev/sda6 3,7G 13M 3,5G 1% /var/log tmpfs 99M 36K 99M 1% /run/user/1000
Podemos ver desde esta salida que la partición
/
(raíz) contiene 8.8 GB de archivos. -
Ahora, eliminemos algunos gigabytes de archivos innecesarios en la partición raíz. Esto es lo que vemos en la consola si ejecutamos el comando
df -h /
:Sistema de archivos Tamaño Usado Disp. Uso% Montado en /dev/sda7 17G 4,7G 11G 31% /
Así, nuestra partición raíz ahora contiene 4.7 GB de archivos. Sin embargo, al ir al directorio donde se encuentra nuestro archivo VMDK, podemos ver que su tamaño sigue siendo de 10,266,496 KB (10 GB).
-
Ahora vamos a llenar el espacio libre con ceros (en nuestro caso, llenaremos 10 GB de los 11 GB disponibles). Primero, escribimos
cd
seguido del nombre del directorio al que está montada la partición que necesita ser llenada con ceros (en nuestro caso escd /
, porque queremos navegar hasta la partición raíz). Después de eso, ejecutamos el siguiente comando, cambiando las variables según nuestras necesidades:dd bs=1M count=10240 if=/dev/zero of=zero
En este comando:
dd
solo puede ejecutarse como superusuario.-
bs
establece el tamaño del bloque (por ejemplo,bs=1M
te daría un tamaño de bloque de 1 megabyte). -
count
especifica el número de bloques a copiar (por defecto,dd
seguirá ejecutándose para siempre o hasta que se acabe la entrada). En nuestro caso, 10,240 MB es la cantidad de espacio libre que queremos llenar con ceros, por lo que el número de bloques de 1 megabyte es 10240. -
if
significa “archivo de entrada”. Aquí es donde debes indicar la fuente desde la que deseas copiar datos. En nuestro caso, es/dev/zero
– un archivo especial (un pseudo-dispositivo) que proporciona tantos caracteres nulos como desees leer de él. -
of
significa “archivo de salida”. Aquí es donde estableces el destino donde deseas escribir/pegar tus datos (en nuestro caso, el nombre del archivo eszero
).
Después de ejecutar el comando anterior, el tamaño de nuestro archivo VMDK crece. Este es el resultado que vemos después de que se completa con éxito el comando:
10240+0 registros dentro 10240+0 registros fuera 10737418240 bytes (10 GB) copiados, 59,4348 s, 181 MB/s El comando se ha completado con éxito.
Entonces, ahora el tamaño de nuestro archivo VMDK es de 11,321,856 KB (10.8 GB), lo que significa que se ha expandido. Además, si ejecutamos nuevamente el comando
df -h /
, veremos lo siguiente:Sistema de archivos Tamaño Usado Disp. Uso% Montado en /dev/sda7 17G 15G 569M 97% /
Esto significa que casi toda la partición raíz (es decir, el 97%) está ocupada. Esto se debe a que hemos llenado la mayor parte del espacio previamente “disponible” con ceros. Ahora, nuestro disco virtual de aprovisionamiento delgado está listo para ser reducido.
Nota: Para realizar el encogimiento, es necesario instalar VMware Tools.
-
Para máquinas virtuales que se están ejecutando en VMware ESXi o VMware Workstation, ejecutamos los siguientes dos comandos en el sistema operativo invitado de Linux.a) Para asegurarnos de que la partición del disco esté disponible, ejecutamos el comando:
root@test-virtual-machine:/# vmware-toolbox-cmd disk list
Este es el resultado que vemos en nuestro caso (es decir, vemos la lista de particiones disponibles):
/
/boot
/var/log
La partición raíz está presente, así que podemos proceder.b) Para reducir la partición, ejecutamos el siguiente comando:
root@test-virtual-machine:/# vmware-toolbox-cmd disk shrink /
Este es el resultado que vemos en nuestro caso:
Por favor, ignore cualquier advertencia sobre espacio en disco durante el proceso de reducción. Progreso: 100 [===========>] Reducción de disco completa.
Ahora, el tamaño de nuestro archivo VMDK reducido es de 5,323,456 KB (es decir, 5.08 GB, mucho menos que los 10.8 GB que tenía antes).
Nota: Si su máquina virtual invitada se está ejecutando en un servidor ESXi, después de llenar los bloques con ceros, puede seguir estos pasos:
- Apague la máquina virtual o desconecte el disco virtual que desea reducir.
- Conéctese al host ESXi con el cliente SSH.
- Navegue hasta la Carpeta de la Máquina Virtual.
- Verifique el uso del disco con
du -h
. - Ejecute
vmkfstools -K test-virtual-machine.vmdk
. - Verifique nuevamente el uso del disco con
du -h
.
Reducción de discos VMware Thin-Provisioned en Windows
Al igual que Linux, Windows no pone automáticamente a cero los bloques después de eliminar archivos. Para poder poner a cero el espacio libre de los discos de destino en su máquina virtual de Windows, debe descargar SDelete, una utilidad gratuita de Sysinternals Suite de Microsoft, y descomprimir los archivos del archivo descargado en c:\program files\sdelete
Luego, siga estos pasos:
- Ejecute
cmd
-
Vaya al directorio donde se encuentra SDelete. En nuestro caso, es:
cd c:\program files\sdelete
-
Para cada partición en la consola, use el comando
sdelete -z
. Esto es lo que tenemos en nuestro caso:sdelete -z c:
sdelete -z d:
Estos comandos pondrán a cero cualquier espacio libre en su disco de aprovisionamiento fino al rellenar cualquier espacio no utilizado en las particiones especificadas. Espere un par de minutos hasta que finalice el proceso. Su archivo VMDK se expandirá a su tamaño máximo durante el proceso.
-
Asegúrate de que VMware Tools estén instalados en tu máquina virtual de Windows. Por defecto, VMware Tools se instala en
c:\program files\vmware\vmware tools\
Navega a este directorio escribiendo:
cd c:\program files\vmware\vmware tools\
-
Para ver las particiones de disco disponibles, escribe:
vmwaretoolboxcmd disk list
-
Reduce el tamaño de las particiones de disco que necesites. En nuestro caso, ejecutamos los comandos:
vmwaretoolboxcmd disk shrink c:\
vmwaretoolboxcmd disk shrink d:\
Espera hasta que el programa haya terminado de reducir el disco.
Puedes usar este método para máquinas virtuales que se ejecutan en VMware ESXi o VMware Workstation.
Programador de recursos distribuidos de almacenamiento de VMware
Arriba, mencionamos una solución para reducir manualmente los discos de aprovisionamiento fino. Sin embargo, hay otra forma de gestionar sus discos virtuales (tanto de aprovisionamiento fino como grueso) si utiliza un clúster de almacén de datos en vSphere. VMware proporciona migración automática de discos virtuales dentro del clúster de almacén de datos para evitar el desbordamiento de almacenamiento de disco donde se encuentran los discos virtuales de aprovisionamiento fino y para equilibrar los recursos de E/S.
Si tiene más de un almacén de datos compartido montado en el servidor ESXi, puede configurar el Programador de recursos distribuidos de almacenamiento (Storage DRS). Storage DRS es una característica inteligente del servidor vCenter para gestionar eficientemente el almacenamiento VMFS y NFS que proporciona colocación y migración automática de discos de máquinas virtuales. También puede configurar Storage DRS en modo manual si prefiere aprobar las recomendaciones de migración manualmente.
Siga estos pasos para habilitar Storage DRS:
- Diríjase al clúster de almacén de datos en el Cliente Web de vSphere.
- Vaya a vCenter > Clústeres de almacén de datos.
- Seleccione su clúster de almacén de datos y haga clic en Administrar > Configuración > Servicios > Storage DRS.
- Haga clic en Editar.
- Configure la automatización, funciones relacionadas con E/S y opciones avanzadas que necesite.
- Haga clic en Aceptar para finalizar.
Si no hay clústeres de almacén de datos en su entorno de vSphere, siga estos pasos para crear y configurar un nuevo clúster de almacén de datos:
- Navegue hasta vCenter > Datacenters en el Cliente Web de vSphere.
- Haga clic derecho en su Datacenter y seleccione Nuevo grupo de almacenes de datos.
- Ingrese el nombre de su grupo de almacenes de datos y marque la casilla cerca de “Activar DRS de almacenamiento“.
- Seleccione la configuración de automatización, funciones relacionadas con E/S y opciones avanzadas que necesite.
- Haga clic en Aceptar para finalizar.
Conclusión
En esta publicación del blog, hemos considerado los tipos de discos virtuales y hemos evaluado las ventajas y desventajas de cada uno para comprender mejor las diferencias entre la provisión gruesa y delgada. Los discos provisionados gruesos con ceros ansiosos son los mejores para el rendimiento y la seguridad, pero requieren suficiente espacio de almacenamiento libre y llevan mucho tiempo para crearse. Los discos provisionados gruesos con ceros perezosos son buenos por sus tiempos cortos de creación, pero no proporcionan tanta velocidad como lo hacen los discos con ceros ansiosos, y son menos seguros. Los discos delgados son la mejor opción para ahorrar espacio en el almacén de datos en el momento de la creación del disco.
Puede crear un disco virtual con un tamaño máximo mayor que el espacio físico disponible (“sobreaprovisionamiento”) y agregar más almacenamiento físico en el futuro, pero recuerde que si el espacio de disco físico se llena y el disco delgado no puede crecer para acomodar más datos, sus máquinas virtuales serán inutilizables, así que no olvide vigilar la cantidad de espacio libre. También repasamos métodos para reducir los discos virtuales VMware delgados provisionados, en caso de que prefiera no agregar más almacenamiento y necesite reducir el espacio ocupado.
Source:
https://www.nakivo.com/blog/thick-and-thin-provisioning-difference/