Cómo habilitar la deduplicación ZFS

Cómo habilitar la deduplicación ZFS
La función de deduplicación del sistema de archivos ZFS es una forma de eliminar datos redundantes de los grupos/sistemas de archivos ZFS. En pocas palabras, si almacena muchos archivos en su sistema de grupo ZFS, y algunos de estos archivos son iguales, solo una copia de estos archivos se mantendrá en el sistema de archivos ZFS. El resto de ellos será una referencia a esa copia del archivo. Esto ahorrará mucho espacio en disco en su Pool/System de ZFS.

Técnicamente, cuando copia/mueve/crea nuevos archivos en su Pool/Files System de ZFS, ZFS los dividirá en fragmentos y comparará estos fragmentos con fragmentos existentes (de los archivos) almacenados en el sistema de archivos ZFS para ver si encontró coincidencias. Entonces, incluso si las partes del archivo coinciden, la función de deduplicación puede guardar los espacios de disco de su sistema de Pool/Files ZFS.

En este artículo, le mostraré cómo habilitar la deduplicación en sus grupos/sistemas de archivos ZFS. Entonces empecemos.

Tabla de contenido:

  1. Creando una piscina ZFS
  2. Habilitando la deduplicación en los grupos de ZFS
  3. Habilitar la deduplicación en los sistemas de archivos ZFS
  4. Prueba de deduplicación ZFS
  5. Problemas de deduplicación ZFS
  6. Desactivar la deduplicación en los grupos/sistemas de archivos ZFS
  7. Casos de uso para la deduplicación ZFS
  8. Conclusión
  9. Referencias

Creando una piscina ZFS:

Para experimentar con la deduplicación ZFS, crearé un nuevo grupo de ZFS usando el VDB y VDC dispositivos de almacenamiento en una configuración de espejo. Puede omitir esta sección si ya tiene un grupo ZFS para probar la deduplicación.

$ sudo lsblk -e7

Para crear una nueva piscina ZFS piscina utilizando el VDB y VDC Dispositivos de almacenamiento en configuración reflejada, ejecute el siguiente comando:

$ sudo zpool Create -f Pool1 Mirror /dev /Vdb /dev /vdc

Una nueva piscina ZFS piscina debe crearse como puede ver en la captura de pantalla a continuación.

$ sudo zpool estado

Habilitando la deduplicación en los grupos de ZFS:

En esta sección, le mostraré cómo habilitar la deduplicación en su grupo ZFS.

Puede verificar si la deduplicación está habilitada en su grupo ZFS piscina Con el siguiente comando:

$ sudo zfs consigue dedup piscol1

Como puede ver, la deduplicación no está habilitada de forma predeterminada.

Para habilitar la deduplicación en su grupo ZFS, ejecute el siguiente comando:

$ sudo zfs set dedup = en el grupo1

La deduplicación debe habilitarse en su grupo ZFS piscina Como puede ver en la captura de pantalla a continuación.

$ sudo zfs consigue dedup piscol1

Habilitar la deduplicación en los sistemas de archivos ZFS:

En esta sección, le mostraré cómo habilitar la deduplicación en un sistema de archivos ZFS.

Primero, cree un sistema de archivos ZFS FS1 En tu piscina ZFS piscina como sigue:

$ sudo ZFS CREATE POOD1/FS1

Como puede ver, un nuevo sistema de archivos ZFS FS1 es creado.

$ SUDO ZFS Lista

Como ha habilitado la deduplicación en el grupo piscina, La deduplicación también está habilitada en el sistema de archivos ZFS FS1 (Sistema de archivos ZFS FS1 lo hereda de la piscina piscina).

$ sudo zfs get dedup fole1/fs1

Como el sistema de archivos ZFS FS1 hereda la deduplicación (desactivar) Propiedad del grupo ZFS piscina, Si deshabilita la deduplicación en su grupo ZFS piscina, La deduplicación también debe deshabilitarse para el sistema de archivos ZFS FS1. Si no quiere eso, deberá habilitar la deduplicación en su sistema de archivos ZFS FS1.

Puede habilitar la deduplicación en su sistema de archivos ZFS FS1 como sigue:

$ sudo zfs set dedup = en Pool1/FS1

Como puede ver, la deduplicación está habilitada para su sistema de archivos ZFS FS1.

Prueba de deduplicación ZFS:

Para simplificar las cosas, destruiré el sistema de archivos ZFS FS1 de la piscina ZFS piscina.

$ sudo zfs destruye el grupo1/fs1

El sistema de archivos ZFS FS1 debe retirarse de la piscina piscina.

He descargado la imagen ISO de Arch Linux en mi computadora. Vamos a copiarlo en la piscina ZFS piscina.

$ sudo cp -v descargas/Archlinux -2021.03.01-x86_64.ISO /Pool1 /Image1.Yo asi

Como puede ver, la primera vez que copié la imagen ISO de Arch Linux, se usó sobre 740 MB de espacio en disco desde la piscina ZFS piscina.

Además, observe que la relación de deduplicación (Desactivar) es 1.00x. 1.00x de la relación de deduplicación significa que todos los datos son únicos. Entonces, no se deduplican datos.

Copiemos la misma imagen de arco Linux ISO en el grupo ZFS piscina de nuevo.

Como puedes ver, solo 740 MB del espacio en disco se usa a pesar de que estamos usando el doble de espacio en disco.

La relación de deduplicación (Desactivar) también aumentó a 2.00x. Significa que la deduplicación está ahorrando la mitad del espacio del disco.

$ SUDO ZPOOL Lista

Aunque sobre 740 MB del espacio de disco físico se usa lógicamente sobre 1.44 GB del espacio en disco se usa en la piscina ZFS piscina Como puede ver en la captura de pantalla a continuación.

$ SUDO ZFS Lista

Copiaremos el mismo archivo al grupo ZFS piscina unas pocas veces más.

Como puede ver, después de copiar el mismo archivo 5 veces al grupo ZFS piscina, lógicamente la piscina usa sobre 3.59 GB de espacio en disco.

$ SUDO ZFS Lista

Pero 5 copias del mismo archivo solo usan aproximadamente 739 MB de espacio en disco desde el dispositivo de almacenamiento físico.

La relación de deduplicación (Desactivar) es de aproximadamente 5 (5.01x). Entonces, la deduplicación ahorró alrededor del 80% (1-1/dedup) del espacio de disco disponible del grupo ZFS piscina.

Cuanto mayor sea la relación de deduplicación (DEDUP) de los datos que ha almacenado en su sistema ZFS Pun.

Problemas de deduplicación ZFS:

La deduplicación es una característica muy buena y guarda mucho espacio en disco de su sistema de grupo ZFS si los datos que almacenan en su sistema de piscina/sistema ZFS es redundante (el archivo similar se almacena varias veces) en la naturaleza.

Si los datos que almacenan en su Pool/Files System de ZFS no tienen mucha redundancia (casi única), entonces la deduplicación no le hará nada bueno. En cambio, terminará desperdiciando la memoria que de otro modo ZFS podría utilizar para el almacenamiento en caché y otras tareas importantes.

Para que la deduplicación funcione, los ZFS deben realizar un seguimiento de los bloques de datos almacenados en su Pool/Sistema de archivos ZFS. Para hacer eso, ZFS crea una tabla de deduplicación (DDT) en la memoria (RAM) de su computadora y almacena bloques de datos hash de su sistema/sistema de archivos ZFS allí. Por lo tanto, cuando intenta copiar/mover/crear un nuevo archivo en su Pool/Files System ZFS, ZFS puede verificar los bloques de datos coincidentes y guardar espacios de disco utilizando la deduplicación.

Si no almacena datos redundantes en su sistema de grupo ZFS/sistema de archivos, casi no se llevará a cabo una deduplicación y se guardará una cantidad insignificante de espacios de disco. Ya sea que la deduplicación guarde los espacios de disco o no, ZFS aún tendrá que realizar un seguimiento de todos los bloques de datos de su sistema ZFS Pool/Files System en la Tabla de deduplicación (DDT).

Por lo tanto, si tiene un gran sistema de Pool/Files de ZFS, ZFS tendrá que usar mucha memoria para almacenar la tabla de deduplicación (DDT). Si la deduplicación ZFS no le está ahorrando mucho espacio en disco, toda esa memoria se desperdicia. Este es un gran problema de deduplicación.

Otro problema es la alta utilización de la CPU. Si la tabla de deduplicación (DDT) es demasiado grande, los ZFS también pueden tener que hacer muchas operaciones de comparación y puede aumentar la utilización de la CPU de su computadora.

Si planea usar la deduplicación, debe analizar sus datos y averiguar qué tan bien la deduplicación funcionará con esos datos y si la deduplicación puede ahorrarle costos.

Puede averiguar cuánta memoria es la tabla de deduplicación (DDT) del grupo ZFS piscina está usando con el siguiente comando:

$ sudo zpool status -d Pool1

Como puede ver, la tabla de deduplicación (DDT) del grupo ZFS piscina almacenado 5860 entradas y cada entrada usa 324 bytes de memoria.

Memoria utilizada para el DDT (Pool1) = 5860 Entradas x 324 bytes por entrada

= 1.898,640 bytes
= 1,854.14 kb
= 1.8107 MB

Desactivar la deduplicación en los grupos/sistemas de archivos ZFS:

Una vez que habilita la deduplicación en su grupo de archivos ZFS, los datos deduplicados permanecen deduplicados. No podrá deshacerse de los datos deduplicados incluso si deshabilita la deduplicación en su sistema de archivos ZFS.

Pero hay un truco simple para eliminar la deduplicación de su Pool/Files System de ZFS:

i) Copie todos los datos de su sistema de agrupación/sistema ZFS a otra ubicación.

ii) Eliminar todos los datos de su sistema de fiscalía ZFS.

iii) Deshabilitar la deduplicación en su sistema de Pool/Files ZFS.

iv) Mueva los datos a su Pool/Files System de ZFS.

Puede deshabilitar la deduplicación en su grupo ZFS piscina Con el siguiente comando:

$ sudo zfs set dedup = off Pool1

Puede deshabilitar la deduplicación en su sistema de archivos ZFS FS1 (Creado en la piscina piscina) con el siguiente comando:

$ sudo zfs set dedup = off Pool1/FS1

Una vez que se eliminan todos los archivos deduplicados y la deduplicación está deshabilitada, la tabla de deduplicación (DDT) debe estar vacía como marcada en la captura de pantalla a continuación. Así es como verifica que no se produzca ninguna deduplicación en su sistema de archivos ZFS.

$ sudo zpool status -d Pool1

Casos de uso para la deduplicación ZFS:

La deduplicación de ZFS tiene algunos pros y contras. Pero tiene algunos usos y puede ser una solución efectiva en muchos casos.

Por ejemplo,

i) Directorios de inicio del usuario: Es posible que pueda usar la deduplicación ZFS para los directorios de inicio del usuario de sus servidores Linux. La mayoría de los usuarios pueden estar almacenando datos casi similares en sus directorios de inicio. Entonces, hay una gran posibilidad de que la deduplicación sea efectiva allí.

ii) Alojamiento web compartido: Puede usar la deduplicación ZFS para el alojamiento compartido de WordPress y otros sitios web de CMS. Como WordPress y otros sitios web de CMS tienen muchos archivos similares, la deduplicación ZFS será muy efectiva allí.

iii) nubes autohostadas: Es posible que pueda ahorrar bastante espacio en disco si usa la deduplicación ZFS para almacenar datos de usuario de NextCloud/OwnCloud.

iv) Desarrollo web y de aplicaciones: Si es un desarrollador web/aplicaciones, es muy probable que trabaje con muchos proyectos. Puede estar usando las mismas bibliotecas (yo.mi. Módulos de nodo, módulos de pitón) en muchos proyectos. En tales casos, la deduplicación ZFS puede ahorrar efectivamente mucho espacio en disco.

Conclusión:

En este artículo, he discutido cómo funciona la deduplicación ZFS, los pros y los contras de la deduplicación ZFS y algunos casos de uso de deduplicación ZFS. Le he mostrado cómo habilitar la deduplicación en sus grupos/sistemas de archivos ZFS.

También le he mostrado cómo verificar la cantidad de memoria de la tabla de deduplicación (DDT) de sus grupos/sistemas de archivos ZFS. Le he mostrado cómo deshabilitar la deduplicación en sus grupos/sistemas de archivos ZFS también.

Referencias:

[1] Cómo dimensionar la memoria principal para la deduplicación ZFS

[2] Linux - ¿Qué tan grande es mi tabla de dedupe ZFS en este momento?? - Falla del servidor

[3] Introducción de ZFS en Linux - Damian Wojstaw