¿Por qué ZFS en Linux Ubuntu es tan bueno? Descubre sus ventajas
Sistema de archivos ZFS en Linux Ubuntu. ¿Cuáles son las características de su estructura, ventajas y desventajas? Vamos a analizarlo juntos en nuestro artículo.
- Ventajas de ZFS
- Limitaciones de ZFS
- Instalación de ZFS en Ubuntu
- Cómo crear un RAIDz
- Cómo crear, revertir y eliminar instantáneas ZFS
- Transferir y recibir ZFS
- Compresión de datos ZFS
- Conclusión
- Preguntas y respuestas
- Comentarios
ZFS o Zettabyte File System es un sistema de archivos creado originalmente por Sun Microsystems para el sistema operativo Solaris. Admite grandes cantidades de datos, combina los conceptos de un sistema de archivos, un administrador de disco lógico y medios físicos, así como una administración simple de volúmenes de almacenamiento.
Es un sistema de archivos de próxima generación, diseñado originalmente para proporcionar soluciones NAS con seguridad, confiabilidad y rendimiento mejorados. A diferencia de otros sistemas, ZFS es un sistema de archivos de 128 bits que ofrece una capacidad de almacenamiento prácticamente ilimitada. ZFS es un proyecto de código abierto con licencia CDDL (Licencia común de desarrollo y distribución).
Característica | Descripción |
---|---|
Soporte para grandes volúmenes de datos | ZFS soporta volúmenes de datos extremadamente grandes, permitiendo el almacenamiento de hasta exabytes de información. |
Integración del sistema de archivos y gestión de volúmenes | Combina el sistema de archivos y el gestor de volúmenes, proporcionando una gestión simplificada del espacio en disco. |
Instantáneas (snapshots) instantáneas | Permite crear instantáneas del sistema de archivos para una rápida recuperación de datos sin un uso significativo de recursos. |
Protección contra la corrupción de datos | Mecanismos de verificación de la integridad de los datos incorporados mediante la suma de comprobación que previene la corrupción. |
Redundancia de datos (RAID-Z) | Proporciona varios niveles de protección de datos a través de funciones RAID-Z integradas para salvaguardar contra pérdidas. |
Compresión de datos | Ofrece compresión de datos efectiva, ayudando a ahorrar espacio en disco. |
Clonación de sistemas de archivos | Permite crear copias clonadas directamente de instantáneas para pruebas o desarrollo. |
Cifrado | Soporta el cifrado de datos para proteger información sensible. |
Para usar el sistema de archivos ZFS “de la caja”, debe instalar FreeBSD o un sistema operativo que use el kernel de illumos, una bifurcación del kernel de OpenSolaris.
Si quiere usar ZFS en Ubuntu, debe añadir soporte para ello manualmente, lo cual es fácil de hacer con sólo unos pocos comandos. Volveremos a hablar de esto más adelante. Ahora mismo, vamos a ver las ventajas y desventajas del sistema de archivos.
Ventajas de ZFS
Las siguientes son algunas de las ventajas de ZFS:
Ventajas. Ha simplificado la administración
Aquí se unifica la gestión de volúmenes, RAID y sistemas de archivos. Todo lo que necesitas son unos cuantos comandos para crear volúmenes, niveles de redundancia, sistemas de archivos, compresión, puntos de montaje y mucho más.
Esto también facilita la supervisión, ya que hay dos o incluso tres niveles menores para ver.
Ventajas. La siguiente ventaja es garantizar la integridad de los datos
Cuando se escriben datos, se calcula una suma de comprobación y se escribe junto con ellos. Posteriormente, cuando se vuelven a leer los datos, se vuelve a calcular la suma de comprobación. Si hay una discrepancia entre las sumas de comprobación escritas y los datos leídos, se detecta un error. El sistema intentará entonces corregir dicho error automáticamente.
ZFS también escala bien con la capacidad de agregar nuevos dispositivos, administración de caché y similares.
Ventajas. Función de copia al grabar
En la mayoría de los sistemas de archivos, los datos se pierden para siempre después de sobrescribirlos. Por otro lado, en ZFS, la información nueva se graba en otro bloque.
Luego los metadatos de los sistemas de archivos se actualizan hasta la nueva información una vez que se completa la grabación. Esto hace que los datos antiguos se conserven en caso de que se bloquee el sistema u otro evento malicioso.
Ventajas. Tiene funciones de almacenamiento integradas
La replicación es el proceso de hacer una copia de algo.
-
La deduplicación es un proceso que elimina las copias redundantes de datos y reduce la carga en el almacenamiento.
La compresión es una opción que ahorra espacio en disco y agrega velocidad, en el proceso se reduce la cantidad de bits necesarios para representar los datos.
-
Las instantáneas son un conjunto de marcadores de referencia para datos en un momento determinado.
-
Los clones son una copia idéntica de algo.
Limitaciones de ZFS
Pero como cualquier sistema de archivos, ZFS también tiene su parte de debilidades.
Limitaciones. ZFS sufre un terrible rendimiento cuando se llena al 80% o más de su capacidad
Este es un problema común con los sistemas de archivos. Cuando el pool empieza a llenar el 80% de su capacidad, hay que ampliarlo o migrar a un almacenamiento mayor.
Limitaciones. No hay manera de reducir pool
Usted no puede eliminar dispositivos o vdev del pool una vez que se han añadido.
Limitaciones. También tiene capacidad limitada para cambiar el tipo de redundancia
Con la excepción de pasar de un pool de una sola unidad a un pool de réplica, no se puede cambiar el tipo de redundancia. Una vez seleccionado un tipo de redundancia, la única solución es destruirlo y crear uno nuevo, restaurando los datos desde las copias de seguridad o desde otra ubicación.
Instalación de ZFS en Ubuntu
Ahora vamos a ver cómo instalar ZFS en un sistema operativo Linux utilizando el ejemplo de la versión 20.04 de Ubuntu.
La instalación requiere un terminal; pulse Ctrl + Alt + T para empezar.
Luego ejecute el siguiente comando
$ sudo apt update
Para verificar actualizaciones de la aplicación. Después de ingresar el comando, el sistema le pedirá que ingrese una contraseña, ingrese la contraseña de root y presione Enter.
Y para instalar lo siguiente:
$ sudo apt install zfsutils-linux
Después de ejecutar el comando de instalación, escriba "y" para confirmar y presione Entrar. Esto comenzará el proceso de instalación del programa de software.
Para verificar su instalación de ZFS, ejecute el siguiente comando.
$zfs --versión
El resultado será la versión del programa. Ahora puede crear un pool de almacenamiento con un dispositivo virtual vdev.
Un pool de almacenamiento es una colección de uno o más dispositivos virtuales en los que se almacenan datos. Un pool ZFS, también conocido como Zpool, sirve como contenedor de datos de nivel superior en un sistema ZFS. Se utiliza para crear uno o varios sistemas de archivos (conjuntos de datos) o dispositivos de bloques (volúmenes). Estos sistemas de archivos y dispositivos de bloque comparten el espacio restante en el pool. Las operaciones de particionado y formateo serán realizadas por ZFS.
El dispositivo virtual (vdev) puede consistir en uno o más dispositivos físicos. Puede ser un pool o parte de un pool y puede tener un nivel de redundancia de espejo, triple espejo, RAIDZ, RAIDZ-2 o RAIDZ-3.
RAID-Z es una implementación de RAID-5 modificado. En ZFS puede eliminar los errores de escritura y los huecos presentes en el RAID-5 original. RAID-Z1 requiere al menos tres discos: dos discos para el almacenamiento de datos y un disco para la paridad.
RAID-Z2 debe tener dos discos para el almacenamiento y dos para la paridad.
RAID-Z3 - al menos dos unidades y tres discos para la paridad.
Cómo crear un RAIDz
Ahora vamos a ver cómo construir un RAID-Z a partir de discos. El primer paso es identificar las unidades de disco con las que desea construir el array.
Para comprobar las unidades de disco conectadas y determinar cuáles son necesarias, utilice una utilidad, fdisk. Ejecute el siguiente comando para construir una lista de unidades:
$ sudo fdisk -l
El resultado es una lista de unidades con información detallada sobre cada una de ellas.
Por ejemplo, le mostraré cómo construir un RAIDZ de nivel 1, esto es una contraparte de RAID5 con un solo disco de paridad. Permite que la matriz siga funcionando sin perder datos si falla una unidad.
Tengo tres discos duros /dev/sdd, /dev/sde y /dev/sdf. Voy a crear un pool llamado zdata. Lo hago ejecutando el siguiente comando:
$ sudo zpool create ith2-zfs-raid-1p zdata /dev/sdd /dev/sde /dev/sdf
$ sudo zpool create zdata raidz /dev/sdd /dev/sde /dev/sdf
Si se produce algún error, puede ejecutar un comando utilizando el parámetro -f después del comando zpool create , que forzará el comando.
$ sudo zpool create -f ith2-zfs-raid-1p zdata /dev/sdd /dev/sde /dev/sdf
Si quieres saber el punto de montaje después de crear el pool, ejecuta df -h:
$ df -h
El pool está montado en /zdata. Para cambiar el punto de montaje del pool, utilice la siguiente sintaxis.
$ sudo zfs set mountpoint =<path> <pool_name>
En este ejemplo, he utilizado /var/pool como nuevo punto de montaje.
$ sudo zfs set mountpoint=/var/pool zdata
Comprueba el nuevo punto:
$ df -h
En el pool de almacenamiento se pueden crear directorios. Para ejemplo, crearé un directorio llamado mydata
$ sudo zfs create zdata/mydata
Y para ver todos los pools de almacenamiento ZFS del sistema, ejecutamos este comando:
$ zpool list
Y para conocer la configuración y el estado de cada dispositivo del pool ZFS, ejecuta el comando status.
$zpool status
Para mostrar los eventos y solucionar los problemas, introduzca este comando.
$ sudo zpool events zdata -v
Para añadir otro disco duro al pool de almacenamiento ZFS, debe ejecutar el comando con el nombre del disco que desea añadir.
$ sudo zpool add zdata /dev/sdb
Después de añadir el disco, veamos el estado del pool:
$ zpool status
Para eliminar el pool de almacenamiento ZFS, es necesario ejecutar el siguiente comando.
$ sudo zpool destroy zdata
Cómo crear, revertir y eliminar instantáneas ZFS
Este sistema de archivos le permite crear una instantánea de su poll.
Una instantánea es una copia de sólo lectura de un sistema de archivos creada en un momento determinado. Se pueden tomar instantáneas de conjuntos de datos completos o de grupos. La instantánea incluye la versión original del sistema de archivos, junto con cualquier cambio realizado desde que se creó la instantánea. En pocas palabras, cuando se crea una instantánea, se crea una copia diferencial de sólo lectura.
El comando utilizado para crear la instantánea es zfs snapshot, seguido del nombre de la instantánea. En este ejemplo he utilizado zdata/mydata para crear una instantánea.
sudo zfs snapshot zdata/mydata@snap1
Para verificar la instantánea, ejecute el siguiente comando:
$ zfs list -t snapshot
Si lo necesitas, puede cambiarle el nombre:
sudo zfs rename zdata/mydata@snap1 zdata/mydata@snap2
Puede deshacer los cambios realizando una operación de reversión de la instantánea. Ten en cuenta que perderás todos los cambios desde que se creó la instantánea.
Para retroceder a la instantánea en cuestión, se debe ejecutar zfs rollback con el nombre de la instantánea en cuestión. Esto deshará cualquier cambio que se haya hecho en el directorio desde esa instantánea.
$ sudo zfs rollback test-pool/mydata@snap1
Este comando retrocederá el sistema a la fecha correcta.
Una vez completada la reversión, puede comprobar si hay archivos borrados, posteriores a la instantánea, en el directorio.
Transferir y recibir ZFS
Las instantáneas pueden guardarse en un archivo y devolverse, lo que es estupendo para crear copias de seguridad o enviar copias por la red (como por ejemplo, a través de ssh) para copiar el sistema de archivos.
El comando send, envía una instantánea del sistema de archivos que puede ser reenviado a un archivo o a otra máquina en un hilo. El comando receive acepta este flujo y escribe una copia de la instantánea en el sistema de archivos ZFS.
Por ejemplo, vamos a crear otra instantánea y la guardamos en un archivo con el siguiente comando:
sudo zfs snapshot -r zdata/mydata@snap3
sudo zfs send zdata/mydata@snap2> ~/mydata-snap.zfs
Y luego la traemos de vuelta ejecutando el siguiente comando:
sudo zfs receive -F zdata/mydata-copy < ~/mydata-snap.zfs
Con ayuda de scripts adicionales, se puede configurar la creación y envío automático de instantáneas, por ejemplo, al servidor a través del protocolo ssh.
Compresión de datos ZFS
Y como se ha mencionado anteriormente, ZFS permite comprimir automáticamente los datos. Teniendo en cuenta la potencia de los procesadores modernos, esta es una opción beneficiosa, ya que la reducción del tamaño de los datos significa que se leen y escriben menos datos físicamente, lo que da lugar a una mayor velocidad de E/S. ZFS ofrece una amplia variedad de métodos de compresión. El valor por defecto es lz4 (sustituto de alto rendimiento de lzjb), que proporciona una compresión y descompresión más rápida que lzjb, con un ratio de compresión ligeramente superior. Para cambiar el nivel de compresión, puede utilizar el comando:
sudo zfs set compression=gzip-9 zdata
O incluso puede cambiar el tipo de compresión:
sudo zfs set compression=lz4 zdata
Ver el nivel de compresión:
sudo zfs get compressratio
La opción más segura es lz4 ya que es mucho más rápido que el resto de opciones con un buen rendimiento.
Conclusión
Con todo esto en mente, ZFS es claramente un sistema de archivos que ofrece una amplia gama de capacidades. No sólo puede gestionar los datos de forma eficiente e innovadora, sino que, en caso de emergencia, también puede recuperar los datos sin interrumpir las operaciones. Además, en caso de fallo, todo el sistema puede restaurarse fácilmente mediante una función de instantánea, y volver a un punto predeterminado en el tiempo.
Si está experimentando una pérdida de información de su sistema de archivos ZFS y RAIDZ, pruebe el programa Hetman RAID Recovery. El programa puede ayudarle a restaurar archivos borrados accidentalmente de un sistema de archivos ZFS o a recuperar información de una matriz RAIDZ averiada. El programa le ayudará en caso de fallos, formateo, sobrescritura y otros casos de pérdida de datos.
Característica | Descripción |
---|---|
Soporte para arrays RAID | El programa soporta varios tipos de arrays RAID, incluyendo RAID 0, RAID 1, RAID 5, RAID 10 y configuraciones personalizadas. |
Detección automática de parámetros | Detecta automáticamente los parámetros del array como el tamaño de bloque, el orden de los discos y otras características clave. |
Recuperación de datos | Capacidad para recuperar datos de arrays RAID dañados o eliminados, así como después de errores o fallos de configuración. |
Vista previa de archivos | Permite previsualizar archivos antes de la recuperación para evaluar la calidad y verificar los datos. |
Compatibilidad con sistemas de archivos | Soporta sistemas de archivos FAT, NTFS, ReFS, HFS+, Ext2/3/4, XFS, ZFS y otros. |
Interfaz fácil de usar | Interfaz fácil de usar con un asistente paso a paso para la recuperación de datos. |