Capítulo 2. Mantenimiento de VDO

Después de desplegar un volumen VDO, puede realizar ciertas tareas para mantenerlo u optimizarlo. Algunas de las siguientes tareas son necesarias para el correcto funcionamiento de los volúmenes VDO.

Requisitos previos

2.1. Gestión del espacio libre en los volúmenes VDO

VDO es un objetivo de almacenamiento en bloque poco aprovisionado. Por ello, debe supervisar y gestionar activamente el uso del espacio en los volúmenes de VDO.

2.1.1. El tamaño físico y lógico de un volumen VDO

Esta sección describe el tamaño físico, el tamaño físico disponible y el tamaño lógico que puede utilizar VDO:

Tamaño físico

Este es el mismo tamaño que el dispositivo de bloque subyacente. VDO utiliza este almacenamiento para:

  • Los datos de los usuarios, que pueden estar deduplicados y comprimidos
  • Metadatos VDO, como el índice UDS
Tamaño físico disponible

Es la parte del tamaño físico que VDO puede utilizar para los datos del usuario

Equivale al tamaño físico menos el tamaño de los metadatos, menos el resto tras dividir el volumen en losas por el tamaño de losa dado.

Tamaño lógico

Es el tamaño provisionado que el volumen VDO presenta a las aplicaciones. Normalmente es mayor que el tamaño físico disponible. Si no se especifica la opción --vdoLogicalSize, entonces el aprovisionamiento del volumen lógico se aprovisiona en una proporción de 1:1. Por ejemplo, si se coloca un volumen VDO sobre un dispositivo de bloques de 20 GB, entonces se reservan 2,5 GB para el índice UDS (si se utiliza el tamaño de índice por defecto). Los 17,5 GB restantes se destinan a los metadatos de VDO y a los datos del usuario. Como resultado, el almacenamiento disponible para consumir no es más de 17,5 GB, y puede ser menos debido a los metadatos que componen el volumen VDO real.

Actualmente, VDO admite cualquier tamaño lógico hasta 254 veces el tamaño del volumen físico, con un tamaño lógico máximo absoluto de 4PB.

Figura 2.1. Organización del disco VDO

VDO disk organization

En esta figura, el objetivo de almacenamiento deduplicado VDO se sitúa completamente sobre el dispositivo de bloque, lo que significa que el tamaño físico del volumen VDO es del mismo tamaño que el dispositivo de bloque subyacente.

Recursos adicionales

2.1.2. Aprovisionamiento ligero en VDO

VDO es un objetivo de almacenamiento en bloque con aprovisionamiento ligero. La cantidad de espacio físico que utiliza un volumen VDO puede diferir del tamaño del volumen que se presenta a los usuarios del almacenamiento. Puede aprovechar esta disparidad para ahorrar en costes de almacenamiento.

Condiciones fuera del espacio

Tenga cuidado para evitar quedarse sin espacio de almacenamiento de forma inesperada, si los datos escritos no alcanzan la tasa de optimización esperada.

Cuando el número de bloques lógicos (almacenamiento virtual) supera el número de bloques físicos (almacenamiento real), es posible que los sistemas de archivos y las aplicaciones se queden inesperadamente sin espacio. Por esta razón, los sistemas de almacenamiento que utilizan VDO deben proporcionarle una forma de controlar el tamaño del pool libre en el volumen VDO.

Puede determinar el tamaño de este pool libre utilizando la utilidad vdostats. La salida por defecto de esta utilidad lista la información de todos los volúmenes VDO en ejecución en un formato similar al de la utilidad de Linux df. Por ejemplo:

Device                1K-blocks   Used        Available   Use%
/dev/mapper/vdo-name  211812352   105906176   105906176   50%

Cuando la capacidad de almacenamiento físico de un volumen VDO está casi llena, VDO informa de una advertencia en el registro del sistema, similar a la siguiente:

Oct  2 17:13:39 system lvm[13863]: Monitoring VDO pool vdo-name.
Oct  2 17:27:39 system lvm[13863]: WARNING: VDO pool vdo-name is now 80.69% full.
Oct  2 17:28:19 system lvm[13863]: WARNING: VDO pool vdo-name is now 85.25% full.
Oct  2 17:29:39 system lvm[13863]: WARNING: VDO pool vdo-name is now 90.64% full.
Oct  2 17:30:29 system lvm[13863]: WARNING: VDO pool vdo-name is now 96.07% full.
Nota

Estos mensajes de advertencia sólo aparecen cuando el servicio lvm2-monitor está en funcionamiento. Está activado por defecto.

Cómo prevenir las condiciones de fuera del espacio

Si el tamaño de la piscina libre desciende por debajo de un determinado nivel, puedes actuar:

  • Eliminación de datos. Esto recupera espacio siempre que los datos borrados no se dupliquen. El borrado de datos libera el espacio sólo después de los descartes.
  • Añadir almacenamiento físico
Importante

Supervise el espacio físico en sus volúmenes VDO para evitar situaciones de falta de espacio. Quedarse sin bloques físicos podría resultar en la pérdida de datos recientemente escritos y no reconocidos en el volumen VDO.

Aprovisionamiento delgado y los comandos TRIM y DISCARD

Para beneficiarse del ahorro de almacenamiento que supone el thin provisioning, la capa de almacenamiento físico necesita saber cuándo se eliminan los datos. Los sistemas de archivos que trabajan con el almacenamiento thinly provisioned envían comandos TRIM o DISCARD para informar al sistema de almacenamiento cuando un bloque lógico ya no es necesario.

Existen varios métodos para enviar los comandos TRIM o DISCARD:

  • Con la opción de montaje discard, los sistemas de archivos pueden enviar estos comandos cada vez que se elimina un bloque.
  • Puede enviar los comandos de forma controlada utilizando utilidades como fstrim. Estas utilidades le dicen al sistema de archivos que detecte los bloques lógicos que no se utilizan y que envíe la información al sistema de almacenamiento en forma de comando TRIM o DISCARD.

La necesidad de utilizar TRIM o DISCARD en los bloques no utilizados no es exclusiva de VDO. Cualquier sistema de almacenamiento con aprovisionamiento ligero tiene el mismo reto.

2.1.3. Control de VDO

Este procedimiento describe cómo obtener información de uso y eficiencia de un volumen VDO.

Requisitos previos

Procedimiento

  • Utilice la utilidad vdostats para obtener información sobre un volumen VDO:

    # vdostats --human-readable
    
    Device                   1K-blocks    Used     Available    Use%    Space saving%
    /dev/mapper/node1osd1    926.5G       21.0G    905.5G       2%      73%
    /dev/mapper/node1osd2    926.5G       28.2G    898.3G       3%      64%

Recursos adicionales

  • La página de manual vdostats(8).

2.1.4. Recuperación de espacio para VDO en los sistemas de archivos

Este procedimiento recupera el espacio de almacenamiento en un volumen VDO que alberga un sistema de archivos.

VDO no puede recuperar espacio a menos que los sistemas de archivos comuniquen que los bloques están libres utilizando los comandos DISCARD, TRIM, o UNMAP.

Procedimiento

  • Si el sistema de archivos de su volumen VDO admite operaciones de descarte, habilítelas. Consulte Capítulo 5, Descartar los bloques no utilizados.
  • Para los sistemas de archivos que no utilizan DISCARD, TRIM, o UNMAP, puede recuperar manualmente el espacio libre. Almacene un archivo compuesto por ceros binarios para llenar el espacio libre y luego elimine ese archivo.

2.1.5. Recuperación de espacio para VDO sin sistema de archivos

Este procedimiento recupera el espacio de almacenamiento en un volumen VDO que se utiliza como destino de almacenamiento en bloque sin un sistema de archivos.

Procedimiento

  • Utilice la utilidad blkdiscard.

    Por ejemplo, un único volumen VDO puede dividirse en múltiples subvolúmenes desplegando LVM sobre él. Antes de desaprovisionar un volumen lógico, utilice la utilidad blkdiscard para liberar el espacio utilizado previamente por ese volumen lógico.

    LVM soporta el comando REQ_DISCARD y reenvía las peticiones a VDO en las direcciones lógicas de bloque apropiadas para liberar el espacio. Si se utilizan otros gestores de volumen, también deben soportar REQ_DISCARD, o, de forma equivalente, UNMAP para dispositivos SCSI o TRIM para dispositivos ATA.

Recursos adicionales

  • La página de manual blkdiscard(8)

2.1.6. Recuperación de espacio para VDO en la red Fibre Channel o Ethernet

Este procedimiento reclama el espacio de almacenamiento en volúmenes VDO (o partes de volúmenes) que se aprovisionan a los hosts en una estructura de almacenamiento de canal de fibra o una red Ethernet utilizando marcos de destino SCSI como LIO o SCST.

Procedimiento

  • Los iniciadores SCSI pueden utilizar el comando UNMAP para liberar espacio en los objetivos de almacenamiento con aprovisionamiento ligero, pero el marco del objetivo SCSI necesita ser configurado para anunciar el soporte de este comando. Esto se hace normalmente habilitando el aprovisionamiento ligero en estos volúmenes.

    Verifique la compatibilidad con UNMAP en los iniciadores SCSI basados en Linux ejecutando el siguiente comando:

    # sg_vpd --page=0xb0 /dev/device

    En la salida, verifique que el valor de Maximum unmap LBA count es mayor que cero.