Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 36. Deduplicar y comprimir el almacenamiento

36.1. Despliegue de VDO

Como administrador del sistema, puede utilizar VDO para crear pools de almacenamiento deduplicados y comprimidos.

36.1.1. Introducción a VDO

Virtual Data Optimizer (VDO) proporciona una reducción de datos en línea para Linux en forma de deduplicación, compresión y thin provisioning. Cuando se configura un volumen VDO, se especifica un dispositivo de bloques en el que construir el volumen VDO y la cantidad de almacenamiento lógico que se pretende presentar.

  • Al alojar máquinas virtuales o contenedores activos, Red Hat recomienda aprovisionar el almacenamiento en una proporción de 10:1 lógica a física: es decir, si está utilizando 1 TB de almacenamiento físico, lo presentaría como 10 TB de almacenamiento lógico.
  • Para el almacenamiento de objetos, como el tipo proporcionado por Ceph, Red Hat recomienda utilizar una proporción de 3:1 lógica a física: es decir, 1 TB de almacenamiento físico se presentaría como 3 TB de almacenamiento lógico.

En cualquiera de los dos casos, puede simplemente poner un sistema de archivos sobre el dispositivo lógico presentado por VDO y luego utilizarlo directamente o como parte de una arquitectura de almacenamiento distribuido en la nube.

Debido a que VDO tiene un aprovisionamiento ligero, el sistema de archivos y las aplicaciones sólo ven el espacio lógico en uso y no son conscientes del espacio físico real disponible. Utilice scripts para supervisar el espacio real disponible y generar una alerta si el uso supera un umbral: por ejemplo, cuando el volumen de VDO está a 80 de su capacidad.

36.1.2. Escenarios de implantación de VDO

Puede desplegar VDO de varias maneras para proporcionar almacenamiento deduplicado para:

  • tanto el acceso a los bloques como a los archivos
  • almacenamiento local y remoto

Dado que VDO expone su almacenamiento deduplicado como un dispositivo de bloques estándar de Linux, puede utilizarlo con sistemas de archivos estándar, controladores de destino iSCSI y FC, o como almacenamiento unificado.

Nota

El despliegue de VDO con Ceph Storage no está soportado actualmente.

KVM

Puede desplegar VDO en un servidor KVM configurado con Direct Attached Storage.

VDO Deployment with KVM
Sistemas de archivos

Puede crear sistemas de archivos sobre VDO y exponerlos a usuarios NFS o CIFS con el servidor NFS o Samba.

Deduplicated NAS
objetivo iSCSI

Puede exportar la totalidad del objetivo de almacenamiento VDO como objetivo iSCSI a iniciadores iSCSI remotos.

Deduplicated block storage target
LVM

En los sistemas con más funciones, puede utilizar LVM para proporcionar varios números de unidades lógicas (LUN) que estén respaldados por el mismo grupo de almacenamiento deduplicado.

En el siguiente diagrama, el objetivo VDO se registra como un volumen físico para que pueda ser gestionado por LVM. Se crean múltiples volúmenes lógicos (LV1 a LV4) a partir del pool de almacenamiento deduplicado. De esta manera, VDO puede soportar el acceso a bloques o archivos unificados multiprotocolo al pool de almacenamiento deduplicado subyacente.

Deduplicated unified storage

El diseño de almacenamiento unificado deduplicado permite que varios sistemas de archivos utilicen colectivamente el mismo dominio de deduplicación a través de las herramientas LVM. Además, los sistemas de archivos pueden aprovechar las funciones de instantáneas LVM, copia en escritura y contracción o crecimiento, todo ello sobre VDO.

Codificación

Los mecanismos de Device Mapper (DM) como DM Crypt son compatibles con VDO. El cifrado de los volúmenes de VDO ayuda a garantizar la seguridad de los datos, y cualquier sistema de archivos por encima de VDO se sigue deduplicando.

Using VDO with encryption
Importante

La aplicación de la capa de encriptación por encima de VDO da lugar a poca o ninguna deduplicación de datos. El cifrado hace que los bloques duplicados sean diferentes antes de que VDO pueda deduplicarlos.

Coloque siempre la capa de encriptación por debajo de VDO.

36.1.3. Componentes de un volumen VDO

VDO utiliza un dispositivo de bloque como almacén de respaldo, que puede incluir una agregación de almacenamiento físico consistente en uno o más discos, particiones o incluso archivos planos. Cuando una herramienta de gestión de almacenamiento crea un volumen VDO, VDO reserva espacio de volumen para el índice UDS y el volumen VDO. El índice UDS y el volumen VDO interactúan juntos para proporcionar almacenamiento de bloques deduplicado.

Figura 36.1. Organización del disco VDO

VDO disk organization

La solución de VDO consta de los siguientes componentes:

kvdo

Un módulo del kernel que se carga en la capa de Linux Device Mapper proporciona un volumen de almacenamiento en bloque deduplicado, comprimido y con aprovisionamiento ligero.

El módulo kvdo expone un dispositivo de bloque. Puede acceder a este dispositivo de bloque directamente para el almacenamiento en bloque o presentarlo a través de un sistema de archivos Linux, como XFS o ext4.

Cuando kvdo recibe una solicitud para leer un bloque lógico de datos de un volumen VDO, mapea el bloque lógico solicitado al bloque físico subyacente y luego lee y devuelve los datos solicitados.

Cuando kvdo recibe una solicitud para escribir un bloque de datos en un volumen VDO, primero comprueba si la solicitud es una petición de DISCARD o TRIM o si los datos son uniformemente cero. Si cualquiera de estas condiciones es verdadera, kvdo actualiza su mapa de bloques y reconoce la solicitud. En caso contrario, VDO procesa y optimiza los datos.

uds

Un módulo del núcleo que se comunica con el índice del Servicio Universal de Deduplicación (UDS) en el volumen y analiza los datos en busca de duplicados. Para cada nueva pieza de datos, UDS determina rápidamente si esa pieza es idéntica a cualquier pieza de datos almacenada previamente. Si el índice encuentra una coincidencia, el sistema de almacenamiento puede entonces referenciar internamente el elemento existente para evitar almacenar la misma información más de una vez.

El índice UDS se ejecuta dentro del núcleo como el módulo del núcleo uds.

Herramientas de línea de comandos
Para configurar y gestionar el almacenamiento optimizado.

36.1.4. 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 36.2. 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

36.1.5. Tamaño de la losa en VDO

El almacenamiento físico del volumen VDO se divide en un número de losas. Cada tabla es una región contigua del espacio físico. Todos los bloques de un volumen determinado tienen el mismo tamaño, que puede ser cualquier potencia de 2 múltiplos de 128 MB hasta 32 GB.

El tamaño por defecto de los slabs es de 2 GB para facilitar la evaluación de VDO en sistemas de prueba más pequeños. Un solo volumen VDO puede tener hasta 8192 bloques. Por lo tanto, en la configuración por defecto con losas de 2 GB, el almacenamiento físico máximo permitido es de 16 TB. Cuando se utilizan placas de 32 GB, el máximo de almacenamiento físico permitido es de 256 TB. VDO siempre reserva al menos un slab entero para metadatos, y por lo tanto, el slab reservado no puede ser utilizado para almacenar datos de usuario.

El tamaño de la losa no influye en el rendimiento del volumen VDO.

Tabla 36.1. Tamaños de losa VDO recomendados por tamaño de volumen físico

Tamaño del volumen físicoTamaño de losa recomendado

10-99 GB

1 GB

100 GB - 1 TB

2 GB

2-256 TB

32 GB

Puede controlar el tamaño de la losa proporcionando la opción --vdoSlabSize=megabytes al comando vdo create.

36.1.6. Requisitos de VDO

VDO tiene ciertos requisitos para su colocación y los recursos de su sistema.

36.1.6.1. Requisitos de memoria de VDO

Cada volumen VDO tiene dos requisitos de memoria distintos:

El módulo VDO

VDO requiere una cantidad fija de 38 MB de RAM y varias cantidades variables:

  • 1.15 MB de RAM por cada 1 MB de tamaño de caché de mapa de bloques configurado. La caché del mapa de bloques requiere un mínimo de 150 MB de RAM.
  • 1.6 MB de RAM por cada 1 TB de espacio lógico.
  • 268 MB de RAM por cada 1 TB de almacenamiento físico gestionado por el volumen.

El índice UDS

El Servicio de Deduplicación Universal (UDS) requiere un mínimo de 250 MB de RAM, que es también la cantidad por defecto que utiliza la deduplicación. Puede configurar el valor al formatear un volumen VDO, ya que el valor también afecta a la cantidad de almacenamiento que necesita el índice.

La memoria necesaria para el índice UDS viene determinada por el tipo de índice y el tamaño requerido de la ventana de deduplicación:

Tipo de índiceVentana de deduplicaciónNota

Denso

1 TB por cada 1 GB de RAM

Un índice denso de 1 GB suele ser suficiente para hasta 4 TB de almacenamiento físico.

Sparse

10 TB por 1 GB de RAM

Un índice disperso de 1 GB suele ser suficiente para hasta 40 TB de almacenamiento físico.

La función UDS Sparse Indexing es el modo recomendado para VDO. Se basa en la localidad temporal de los datos e intenta retener en memoria sólo las entradas de índice más relevantes. Con el índice disperso, UDS puede mantener una ventana de deduplicación diez veces mayor que con el denso, utilizando la misma cantidad de memoria.

Aunque el índice disperso proporciona la mayor cobertura, el índice denso ofrece más consejos de deduplicación. Para la mayoría de las cargas de trabajo, dada la misma cantidad de memoria, la diferencia en las tasas de deduplicación entre los índices densos y dispersos es insignificante.

Recursos adicionales

36.1.6.2. Requisitos de espacio de almacenamiento de VDO

Puede configurar un volumen VDO para utilizar hasta 256 TB de almacenamiento físico. Sólo una parte del almacenamiento físico es utilizable para almacenar datos. Esta sección proporciona los cálculos para determinar el tamaño utilizable de un volumen gestionado por VDO.

VDO requiere almacenamiento para dos tipos de metadatos VDO y para el índice UDS:

  • El primer tipo de metadatos VDO utiliza aproximadamente 1 MB por cada 4 GB de physical storage más 1 MB adicional por cada losa.
  • El segundo tipo de metadatos VDO consume aproximadamente 1,25 MB por cada 1 GB de logical storage, redondeado a la losa más cercana.
  • La cantidad de almacenamiento necesaria para el índice UDS depende del tipo de índice y de la cantidad de RAM asignada al índice. Por cada 1 GB de RAM, un índice UDS denso utiliza 17 GB de almacenamiento, y un índice UDS disperso utilizará 170 GB de almacenamiento.

Recursos adicionales

36.1.6.3. Colocación de VDO en la pila de almacenamiento

Debe colocar ciertas capas de almacenamiento debajo de VDO y otras por encima de VDO.

Puede colocar capas de aprovisionamiento grueso encima de VDO, pero no puede confiar en las garantías del aprovisionamiento grueso en ese caso. Dado que la capa VDO es de aprovisionamiento fino, los efectos del aprovisionamiento fino se aplican a todas las capas por encima de ella. Si no supervisa el dispositivo VDO, podría quedarse sin espacio físico en los volúmenes de aprovisionamiento grueso por encima de VDO.

Configuraciones compatibles

  • Capas que sólo se pueden colocar bajo VDO:

    • DM Multipath
    • Cripta DM
    • RAID por software (LVM o MD RAID)
  • Capas que sólo se pueden colocar encima de VDO:

    • Caché LVM
    • Instantáneas LVM
    • Aprovisionamiento ligero LVM

Configuraciones no admitidas

  • VDO sobre otros volúmenes VDO
  • VDO sobre las instantáneas LVM
  • VDO sobre la caché LVM
  • VDO sobre un dispositivo de bucle de retorno
  • VDO sobre el aprovisionamiento ligero de LVM
  • Volúmenes encriptados sobre VDO
  • Particiones en un volumen VDO
  • RAID, como LVM RAID, MD RAID, o cualquier otro tipo, sobre un volumen VDO

Recursos adicionales

  • Para más información sobre el apilamiento de VDO con capas LVM, consulte el artículo Apilar volúmenes LVM.

36.1.6.4. Ejemplos de requisitos VDO por tamaño físico

Las siguientes tablas proporcionan los requisitos aproximados del sistema de VDO basados en el tamaño físico del volumen subyacente. Cada tabla enumera los requisitos apropiados para el despliegue previsto, como el almacenamiento primario o el almacenamiento de copia de seguridad.

Los números exactos dependen de su configuración del volumen VDO.

Despliegue del almacenamiento primario

En el caso del almacenamiento primario, el índice UDS está entre el 0,01% y el 25% del tamaño físico.

Tabla 36.2. Requisitos de almacenamiento y memoria para el almacenamiento primario

Tamaño físicoUso de la RAM: UDSUso de la RAM: VDOUso del discoTipo de índice

10GB-1TB

250MB

472MB

2.5GB

Denso

2-10TB

1GB

3GB

10 GB

Denso

250MB

22 GB

Sparse

11-50TB

2GB

14 GB

170 GB

Sparse

51-100TB

3GB

27 GB

255 GB

Sparse

101-256TB

12 GB

69 GB

1020 GB

Sparse

Despliegue del almacenamiento de seguridad

En el caso del almacenamiento de copias de seguridad, el índice UDS cubre el tamaño del conjunto de copias de seguridad pero no es mayor que el tamaño físico. Si espera que el conjunto de copias de seguridad o el tamaño físico crezcan en el futuro, téngalo en cuenta en el tamaño del índice.

Tabla 36.3. Requisitos de almacenamiento y memoria para el almacenamiento de copias de seguridad

Tamaño físicoUso de la RAM: UDSUso de la RAM: VDOUso del discoTipo de índice

10GB-1TB

250MB

472MB

2.5 GB

Denso

2-10TB

2GB

3GB

170 GB

Sparse

11-50TB

10 GB

14 GB

850 GB

Sparse

51-100TB

20 GB

27 GB

1700GB

Sparse

101-256TB

26 GB

69 GB

3400GB

Sparse

36.1.7. Instalación de VDO

Este procedimiento instala el software necesario para crear, montar y gestionar volúmenes VDO.

Procedimiento

  • Instale los paquetes vdo y kmod-kvdo:

    # yum install vdo kmod-kvdo

36.1.8. Creación de un volumen VDO

Este procedimiento crea un volumen VDO en un dispositivo de bloque.

Requisitos previos

Procedimiento

En todos los pasos siguientes, sustituya vdo-name por el identificador que desee utilizar para su volumen VDO; por ejemplo, vdo1. Debe utilizar un nombre y un dispositivo diferentes para cada instancia de VDO en el sistema.

  1. Busque un nombre persistente para el dispositivo de bloque donde desea crear el volumen VDO. Para más información sobre los nombres persistentes, consulte Capítulo 31, Visión general de los atributos de nomenclatura persistente.

    Si utiliza un nombre de dispositivo no persistente, entonces VDO podría no iniciarse correctamente en el futuro si el nombre del dispositivo cambia.

  2. Crea el volumen VDO:

    # vdo create \
          --name=vdo-name \
          --device=block-device \
          --vdoLogicalSize=logical-size
    • Sustituya block-device por el nombre persistente del dispositivo de bloque en el que desea crear el volumen VDO. Por ejemplo, /dev/disk/by-id/scsi-3600508b1001c264ad2af21e903ad031f.
    • Sustituya logical-size con la cantidad de almacenamiento lógico que debe presentar el volumen VDO:

      • Para las máquinas virtuales activas o el almacenamiento en contenedores, utilice un tamaño lógico que sea ten veces el tamaño físico de su dispositivo de bloque. Por ejemplo, si su dispositivo de bloque tiene un tamaño de 1TB, utilice aquí 10T.
      • Para el almacenamiento de objetos, utilice el tamaño lógico que es three veces el tamaño físico de su dispositivo de bloque. Por ejemplo, si su dispositivo de bloque tiene un tamaño de 1TB, utilice aquí 3T.
    • Si el dispositivo de bloque físico es mayor de 16TiB, añada la opción --vdoSlabSize=32G para aumentar el tamaño de la losa en el volumen a 32GiB.

      Si se utiliza el tamaño de bloque por defecto de 2GiB en dispositivos de bloque de más de 16TiB, el comando vdo create falla con el siguiente error:

      vdo: ERROR - vdoformat: formatVDO failed on '/dev/device': Estado de VDO: Excede el número máximo de placas soportadas

    Ejemplo 36.1. Creación de VDO para el almacenamiento de contenedores

    Por ejemplo, para crear un volumen VDO para el almacenamiento de contenedores en un dispositivo de bloque de 1TB, podría utilizar:

    # vdo create \
          --name=vdo1 \
          --device=/dev/disk/by-id/scsi-3600508b1001c264ad2af21e903ad031f \
          --vdoLogicalSize=10T
    Importante

    Si se produce un fallo al crear el volumen VDO, elimine el volumen para limpiarlo. Consulte Eliminar un volumen VDO creado sin éxito para obtener más detalles.

  3. Cree un sistema de archivos sobre el volumen VDO:

    • Para el sistema de archivos XFS:

      # mkfs.xfs -K /dev/mapper/vdo-name
    • Para el sistema de archivos ext4:

      # mkfs.ext4 -E nodiscard /dev/mapper/vdo-name
  4. Utilice el siguiente comando para esperar a que el sistema registre el nuevo nodo de dispositivo:

    # udevadm settle

Próximos pasos

  1. Montar el sistema de archivos. Consulte Sección 36.1.9, “Montaje de un volumen VDO” para obtener más detalles.
  2. Habilite la función discard para el sistema de archivos de su dispositivo VDO. Consulte Sección 36.1.10, “Activación del descarte periódico de bloques” para obtener más detalles.

Recursos adicionales

  • La página de manual vdo(8)

36.1.9. Montaje de un volumen VDO

Este procedimiento monta un sistema de archivos en un volumen VDO, de forma manual o persistente.

Requisitos previos

Procedimiento

  • Para montar el sistema de archivos en el volumen VDO manualmente, utilice:

    # montar /dev/mapper/vdo-name mount-point
  • Para configurar el sistema de archivos para que se monte automáticamente en el arranque, añada una línea al archivo /etc/fstab:

    • Para el sistema de archivos XFS:

      /dev/mapper/vdo-name mount-point xfs defaults,_netdev,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0
    • Para el sistema de archivos ext4:

      /dev/mapper/vdo-name mount-point ext4 defaults,_netdev,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0

Recursos adicionales

  • La página de manual vdo(8)

36.1.10. Activación del descarte periódico de bloques

Este procedimiento habilita un temporizador systemd que descarta regularmente los bloques no utilizados en todos los sistemas de archivos compatibles.

Procedimiento

  • Activar e iniciar el temporizador systemd:

    # systemctl enable --now fstrim.timer

36.1.11. 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).