Cómo habilitar la compresión de ZFS

Cómo habilitar la compresión de ZFS
La función de compresión del sistema de archivos comprime los archivos almacenados en el sistema de archivos automáticamente para guardar el precioso espacio de disco de su dispositivo de almacenamiento.

Al igual que muchos otros sistemas de archivos, el sistema de archivos ZFS también admite la compresión a nivel del sistema de archivos.

Los beneficios de la compresión del sistema de archivos ZFS son:

i) Guarda espacios de disco: Como he mencionado, cuando la compresión ZFS está habilitada, los archivos que almacena en su sistema de piscina/archivo ZFS se comprimen para guardar espacio en disco.

ii) Reduce el tiempo de acceso al archivo: Los procesadores en estos días son muy rápidos. Pueden descomprimir archivos en tiempo real. Por lo tanto, lleva menos tiempo descomprimir un archivo que recuperarlo de un dispositivo de almacenamiento (i.mi., disco duro). A medida que los archivos comprimidos toman menos área de almacenamiento, se pueden recuperar más rápido del dispositivo de almacenamiento (i.mi., disco duro) que los archivos sin comprimir y se pueden descomprimir en la mosca. En general, esto reduce el tiempo de acceso al archivo y mejora el rendimiento del sistema de archivos.

Este artículo le mostrará cómo habilitar la compresión en su grupo ZFS y sistemas de archivos. También le mostraré cómo funciona la compresión local y hereditaria de los sistemas de piscina y archivos ZFS. Entonces empecemos.

Creando una piscina ZFS:

Para experimentar con la compresión de ZFS, debe crear una piscina ZFS de prueba piscina con dos dispositivos de almacenamiento en una configuración reflejada.

Este artículo utilizará el VDB y VDC dispositivos de almacenamiento para crear un VDEV (dispositivo virtual) en la configuración reflejada y usarlo para crear un grupo piscina.

$ sudo lsblk -e7

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

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

Una nueva piscina ZFS piscina debe crearse utilizando el VDB y VDC Dispositivos de almacenamiento en una configuración reflejada, como se muestra en la captura de pantalla a continuación.

$ sudo zpool Status Pool1

Creación de sistemas de archivos ZFS:

Para probar la compresión local y heredada, también debe crear algunos sistemas de archivos ZFS en su grupo ZFS piscina.

Cuando crea un grupo ZFS, ZFS crea un sistema de archivos con el mismo nombre que el nombre del grupo y lo monta automáticamente en el directorio root (/) de su computadora. El punto de montaje tendrá el mismo nombre que el nombre de la piscina.

Por ejemplo, la piscina ZFS piscina que ha creado anteriormente creará automáticamente un sistema de archivos ZFS piscina y montarlo en el /Pool1 Directorio de su computadora, como puede ver en la captura de pantalla a continuación.

$ SUDO ZFS Lista

NOTA: Llamaré al sistema de archivos de nivel superior piscina de la piscina piscina una piscina ZFS en este artículo. Es libre de llamarlo un grupo o sistema de archivos. Esta bien.

Para crear un nuevo sistema de archivos ZFS FS1 en la piscina piscina, Ejecute el siguiente comando:

$ sudo ZFS CREATE POOD1/FS1

Como puede ver, un nuevo sistema de archivos ZFS Pool1/FS1 se crea y está montado en el /Pool1/FS1 directorio.

$ SUDO ZFS Lista

Puede crear un sistema de archivos FS2 en el FS1 sistema de archivos, que está en la piscina piscina como sigue:

$ sudo ZFS CREATE POOO1/FS1/FS2

Como puede ver, el sistema de archivos FS2 está anidado dentro del sistema de archivos Pool1/FS1.

$ SUDO ZFS Lista

Crear otro sistema de archivos FS3 en la piscina piscina como sigue:

$ sudo ZFS CREATE POOO1/FS3

Un sistema de archivos FS3 debe crearse en la piscina piscina, Como puede ver en la captura de pantalla a continuación.

$ SUDO ZFS Lista

Los sistemas de archivos FS1, FS2, y FS3 debe crear la siguiente estructura del directorio en la piscina piscina:

$ Tree /Pool1

Los sistemas de archivos ZFS son como los directorios que crea en cualquier otro sistema de archivos. Pueden ser anidados el uno del otro. Por lo general, están montados en el punto de montaje de la piscina (yo.mi.,/Pool1 para la piscina piscina). Puede configurar ZFS para montarlos en cualquier lugar de su computadora, como cualquier otro sistema de archivos. Este es un tema para otro artículo.

Ahora, debe tener una comprensión básica de cómo los sistemas de archivos se anidan entre sí en ZFS. Eso es suficiente para comprender la compresión local y hereditaria de ZFS en las próximas secciones de este artículo.

Habilitando la compresión en las piscinas ZFS:

Si habilita la compresión en un grupo ZFS, entonces la compresión también se habilitará en todos los sistemas de archivos de ese grupo ZFS.

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

$ sudo ZFS Get Compression Pool1

La compresión no está habilitada en los grupos de ZFS de forma predeterminada, como puede ver en la captura de pantalla a continuación.

De la misma manera, puede verificar si la compresión está habilitada en el FS1, FS2, y FS3 sistemas de archivos. La compresión no está habilitada en los sistemas de archivos ZFS de forma predeterminada también.

$ sudo ZFS Get Compression Pool1/FS1
$ sudo ZFS Get Compression Pool1/FS1/FS2
$ sudo ZFS Get Compression Pool1/FS3

Puede habilitar la compresión en la piscina piscina estableciendo el compresión propiedad de la piscina para en como sigue:

$ sudo zfs set compresion = en el grupo1

Como se puede ver, compresión está habilitado (en), y es un local Propiedad de la piscina piscina.

NOTA: Si una propiedad es local, Significa que la propiedad está directamente configurada en el grupo o sistema de archivos. No se hereda de su padre (sistema de piscina o archivo).

$ sudo ZFS Get Compression Pool1

Ahora, si revisas el compresión propiedad del FS1, FS2, y FS3 sistemas de archivos, debe ver que la compresión está habilitada (en) en todos ellos, y la propiedad es heredado de la piscina1.

Como no has establecido el compresión propiedad para el FS1, FS2, y FS3 sistemas de archivos, es heredado de la piscina piscina.

$ sudo ZFS Get Compression Pool1/FS1
$ sudo ZFS Get Compression Pool1/FS1/FS2
$ sudo ZFS Get Compression Pool1/FS3

Puedes deshabilitar compresión Solo para el FS1 sistema de archivo configurando el compresión propiedad del FS1 sistema de archivos a apagado como sigue:

$ sudo zfs set compresion = apool1/fs1

Como se puede ver, compresión está desactivado (apagado) Para el FS1 sistema de archivos. Ahora que el compresión La propiedad se establece localmente para el FS1 sistema de archivos. No se va a ser heredado de la piscina piscina.

$ sudo ZFS Get Compression Pool1/FS1

El FS2 El sistema de archivos es un niño del FS1 sistema de archivos. Entonces, heredó el compresión propiedad del FS1 Sistema de archivos (Parent), como puede ver en la captura de pantalla a continuación.

$ sudo ZFS Get Compression Pool1/FS1/FS2

Como ha habilitado la compresión en la piscina piscina, La propiedad es heredada automáticamente por todos los sistemas de archivos anidados (niño - FS1, FS2, y FS3) de la piscina piscina (el padre). Así es como se heredan las propiedades en los sistemas de archivos ZFS: los sistemas de archivos infantiles obtienen sus propiedades de los sistemas o el grupo de archivos principales a menos que establezca explícitamente propiedades específicas para el sistema de archivos infantiles.

Si te vuelve loco con la anidación de los sistemas de archivos ZFS sin ninguna planificación previa, puede ser muy difícil para ti administrar la compresión en tu grupo ZFS. Entonces, no te vuelvas loco con la anidación de los sistemas de archivos ZFS.

Habilitando la compresión en los sistemas de archivos ZFS:

También puede habilitar la compresión en sistemas de archivos ZFS específicos. Habilitemos la compresión en el FS3 Sistema de archivos ZFS que ha creado anteriormente.

En este punto, la compresión está habilitada para el FS3 Sistema de archivos ZFS porque la compresión está habilitada en la piscina piscina, Como puede ver en la captura de pantalla a continuación.

La propiedad de compresión para el FS3 El sistema de archivos se hereda del grupo piscina.

$ sudo ZFS Get Compression Pool1/FS3

Si deshabilita la compresión en la piscina piscina, La compresión también se deshabilitará para el sistema de archivos ZFS FS3.

$ sudo zfs set compresion = apool1

Como se puede ver, compresión también está deshabilitado (apagado) para el sistema de archivos FS3 como lo heredó desde la piscina piscina. Si habilita la compresión para el FS3 sistema de archivos localmente, entonces esto no sucederá.

$ sudo ZFS Get Compression Pool1/FS3

Para habilitar la compresión para el FS3 sistema de archivo, configure la propiedad de compresión del FS3 sistema de archivos a en como sigue:

$ sudo zfs set compresion = en Pool1/FS3

Como se puede ver, compresión está habilitado (en) Para el FS3 sistema de archivos localmente.

Si quieres, puedes deshabilitar compresión Para el FS3 Sistema de archivos de la siguiente manera:

$ sudo zfs set compresion = apool1/fs3

La compresión debe deshabilitarse para el FS3 Sistema de archivos, como puede ver en la captura de pantalla a continuación.

$ sudo ZFS Get Compression Pool1/FS3

Verificación de qué tan bien se están comprimiendo los datos:

Una vez que haya habilitado la compresión en su grupo ZFS o sistema de archivos, querrá saber qué tan bien se comprimen los datos almacenados en el grupo ZFS o el sistema de archivos. En esta sección, te mostraré cómo hacer eso.

Destruyamos la piscina ZFS Pool1 que acaba de crear y lo recreará para que las cosas sean un poco más simples.

Para destruir la piscina ZFS piscina, Ejecute el siguiente comando:

$ sudo zpool Destroy Pool1

Ahora, crea la piscina ZFS piscina de nuevo usando el VDB y VDC Dispositivos de almacenamiento en la configuración del espejo de la siguiente manera:

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

Habilitar compresión en la piscina piscina como sigue:

$ sudo zfs set compresion = en el grupo1

La compresión debe estar habilitada para el grupo ZFS piscina.

$ sudo ZFS Get Compression Pool1

Puedes ver la relación de compresión de la piscina ZFS piscina Con el siguiente comando:

$ sudo zfs obtenga compressratio piscina1

Ahora mismo, la piscina piscina esta vacio. Entonces, la relación de compresión es 1.00x. Significa que no se comprimen datos.

Como puedes ver, solo 108 kb de datos se utiliza desde el grupo piscina.

$ SUDO ZFS Lista

Copiemos el /etc Directorio de la piscina ZFS piscina.

$ sudo cp -r/ etc/ piscal1/

Como puedes ver, el /etc El directorio se copia en la piscina ZFS piscina.

$ ls /piscina1

Observe que el tamaño del /etc El directorio en la piscina es 4.2 MB1. Pero sólo 3.26 MB2 de espacio se usa desde la piscina piscina.

$ sudo du -sh /Pool1
$ SUDO ZFS Lista

En realidad, el /etc el directorio es 11 MB en tamaño, como puede ver en la captura de pantalla a continuación.

$ sudo du -sh /etc

La relación de compresión se trata 1.93x. Es una muy buena relación de compresión. Cuanto mayor sea la relación de compresión, más espacio en disco ahorrará con la compresión ZFS.

$ sudo zfs obtenga compressratio piscina1

Algoritmos de compresión compatibles con ZFS:

Al momento de escribir este artículo, ZFS admite los siguientes algoritmos de compresión de datos:

i) lzjb: Este algoritmo está optimizado para el rendimiento. También proporciona una relación de compresión de datos decente.

ii) LZ4: Este algoritmo es un reemplazo para el LZJB algoritmo. Proporciona una compresión y descompresión más rápidas. La relación de compresión es moderadamente más alta que la LZJB algoritmo.

iii) GZIP: Utiliza el mismo algoritmo de compresión que el gzip dominio. El gzip El algoritmo de compresión admite diferentes niveles de compresión. El nivel de compresión puede ser 1-9. Puedes usar gzip-n (norte es el nivel) para definir un nivel para el gzip algoritmo de compresión. Si no especifica un nivel para el gzip Algoritmo de compresión, ZFS utiliza el nivel 6 (GZIP-6) por defecto.

GZIP-1: Nivel 1 GZIP - Relación de compresión más rápida pero más baja.

GZIP-2: Nivel 2 GZIP: más lenta que el nivel 1 pero una relación de compresión más alta que el nivel 1.

GZIP-3: Nivel 3 GZIP: más lenta que el nivel 2 pero una relación de compresión más alta que el nivel 2.

GZIP-4: Nivel 4 GZIP: una relación de compresión más lenta que el nivel 3 pero más alta que el nivel 3.

GZIP-5: Nivel 5 GZIP: más lenta que el nivel 4 pero una mayor relación de compresión que el nivel 4.

GZIP-6: Nivel 6 GZIP: más lenta que el nivel 5 pero una relación de compresión más alta que el nivel 5.

GZIP-7: Nivel 7 GZIP: más lenta que el nivel 6 pero una mayor relación de compresión que el nivel 6.

GZIP-8: Nivel 8 GZIP: más lenta que el nivel 7 pero una relación de compresión más alta que el nivel 7.

GZIP-9: Nivel 9 GZIP: una relación de compresión más lenta pero más alta.

iv) Zle: Este algoritmo está optimizado para comprimir ejecuciones de ceros.

LZJB es el algoritmo de compresión de datos predeterminado del sistema de archivos ZFS.

Si tienes el LZ4_Compress característica habilitada en su grupo ZFS, luego el algoritmo de compresión de datos predeterminado será LZ4.

Para verificar si el LZ4_Compress La función está habilitada en su grupo ZFS piscina, Ejecute el siguiente comando:

$ sudo zpool get sports@lz4_compress Pool1

Como puedes ver, el LZ4_Compress La función está habilitada en el grupo ZFS piscina.

Puede establecer un algoritmo de compresión diferente en su grupo de ZFS o sistema de archivos de la siguiente manera:

$ sudo zfs set compresion =

Reemplazar con uno de los algoritmos de compresión compatibles con ZFS y con el grupo de archivos ZFS donde desea habilitar la compresión utilizando el algoritmo de compresión .

Por ejemplo, para habilitar la compresión y usar el GZIP-9 Algoritmo de compresión en la piscina piscina, Ejecute el siguiente comando:

$ sudo ZFS Set Compression = GZIP-9 Pool1

Como se puede ver, GZIP-9 La compresión está habilitada en la piscina piscina.

$ sudo ZFS Get Compression Pool1

Ahora, cree un sistema de archivos ZFS FS3 en la piscina ZFS piscina como sigue:

$ sudo ZFS CREATE POOO1/FS3

De la misma manera, puede habilitar la compresión en el FS3 Sistema de archivos ZFS utilizando el zle Algoritmo de compresión como sigue:

$ sudo zfs set compresion = zle prow1/fs3

Como se puede ver, zle La compresión está habilitada en el sistema de archivos ZFS FS3.

$ sudo ZFS Get Compression Pool1/FS3

¿Debo habilitar la compresión de ZFS??

El tamaño de cada tipo de archivo no se reduce cuando se comprime. Video (yo.mi., Mp4), audio (yo.mi., Mp3) e imagen (i.mi., JPEG) Archivos, por ejemplo. En lugar de que se reduzca su tamaño, a veces, se hacen más grandes cuando se comprimen. Esta es una desventaja de la compresión del sistema de archivos.

Si almacena videos, audio e imágenes solo en su sistema de piscina/archivo ZFS, la compresión puede no darle muchos beneficios. Pero si almacena archivos de texto y otros archivos compresibles (yo.mi., Documento de Word, binarios/programas ejecutables), luego vale la pena habilitar la compresión en su sistema ZFS Pool/File System. Le ahorrará mucho espacio en disco y mejorará el rendimiento de su sistema de grupo ZFS.

Conclusión:

En este artículo, le he mostrado cómo habilitar la compresión en sus grupos y sistemas de archivos ZFS. También le he mostrado cómo verificar la relación de compresión de sus grupos y sistema de archivos ZFS para averiguar qué tan efectivamente se están comprimiendo los datos. He discutido los algoritmos de compresión ZFS disponibles y le he mostrado cómo habilitar la compresión en sus grupos de ZFS y sistemas de archivos utilizando algoritmos de compresión compatibles con ZFS específicos también.

Referencias:

[1] ManPage of ZFS