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.
El despliegue de VDO con Ceph Storage no está soportado actualmente.
KVM
Puede desplegar VDO en un servidor KVM configurado con Direct Attached Storage.
Sistemas de archivos
Puede crear sistemas de archivos sobre VDO y exponerlos a usuarios NFS o CIFS con el servidor NFS o Samba.
objetivo iSCSI
Puede exportar la totalidad del objetivo de almacenamiento VDO como objetivo iSCSI a iniciadores iSCSI remotos.
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.
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.
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
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 de1: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
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
- Para obtener más información sobre la cantidad de almacenamiento que requieren los metadatos VDO en dispositivos de bloque de diferentes tamaños, consulte Sección 36.1.6.4, “Ejemplos de requisitos VDO por tamaño físico”.
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ísico | Tamañ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 índice | Ventana de deduplicación | Nota |
---|---|---|
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
- Para ver ejemplos concretos de los requisitos de memoria del índice UDS, consulte Sección 36.1.6.4, “Ejemplos de requisitos VDO por tamaño físico”.
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
- Para ver ejemplos concretos de necesidades de almacenamiento de VDO, consulte Ejemplos de necesidades de VDO por tamaño de volumen físico.
- Para una descripción de las losas, véase Tamaño de las losas en VDO.
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ísico | Uso de la RAM: UDS | Uso de la RAM: VDO | Uso del disco | Tipo 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ísico | Uso de la RAM: UDS | Uso de la RAM: VDO | Uso del disco | Tipo 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
ykmod-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
- Instale el software VDO. Consulte Sección 36.1.7, “Instalación de VDO”.
- Utilice el almacenamiento ampliable como dispositivo de bloque de respaldo. Para obtener más información, consulte Sección 36.1.6.3, “Colocación de VDO en la pila de almacenamiento”.
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.
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.
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
.
-
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í
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
ImportanteSi 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.
-
Sustituya block-device por el nombre persistente del dispositivo de bloque en el que desea crear el volumen VDO. Por ejemplo,
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
Utilice el siguiente comando para esperar a que el sistema registre el nuevo nodo de dispositivo:
# udevadm settle
Próximos pasos
- Montar el sistema de archivos. Consulte Sección 36.1.9, “Montaje de un volumen VDO” para obtener más detalles.
-
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
- Se ha creado un volumen VDO en su sistema. Para obtener instrucciones, consulte Sección 36.1.8, “Creación de un volumen VDO”.
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
- Instale el software VDO. Consulte Instalación de VDO.
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)
.