Conceptos Básicos de ZFS: Empezando a Funcionar en ODROID-H2

ZFS es un sistema de archivos avanzado con muchas características fabulosas que no están disponibles en muchos de los sistemas de archivos tradicionales como ext4. Algunas de las características clave que puedes encontrar en ZFS son:

  • Pool drive storage, varios discos pueden "fusionarse" en un solo sistema de archivos.
  • RAID-Z, permite funcionalidad de raid vía software con amplia variedad de opciones incluso con tan solo dos discos.
  • Copy-on-write, garantiza que los datos de una unidad no se eliminaran hasta que la copia haya finalizado por completo. Esto evita la pérdida de datos en caso de que el sistema falle antes de que se complete la escritura, puesto que los datos originales siguen estando presentes en el disco
  • Snapshots, una instantánea contiene la versión original del sistema de archivos, y el sistema de archivos en tiempo real contiene los cambios realizados desde que se tomó la instantánea.
  • Data Checksums, los datos escritos en ZFS tienen datos de suma de verificación asociados para permitir la verificación y la restauración de datos en caso de degradación de bits u otros posibles problemas de corrupción.

ZFS fue creado de código abierto originalmente por Sun Microsystems en 2001. Sin embargo, después de que Oracle comprase Sun Microsystems, todo pasó a ser de código cerrado. El proyecto OpenZFS es el resultado de esto, el trabajo continuo de código abierto del código original de Sun realizado por muchos de los ingenieros originales. Debido a esto, se ha debatido mucho sobre la licencia de código abierto que utiliza ZFS y si es compatible para su inclusión en el núcleo principal de Linux. Muchas distribuciones de Linux han elegido incluir ZFS, en esta guía usaremos Ubuntu, ya que está disponible en todos los ODROID

Hace varios años, intenté ejecutar ZFS en mi ODROID-XU4 Cloudshell 2, cuando pregunté en los foros me decepcionó saber que el ODROID-XU4 no era capaz de ello. Sin embargo, ahora tenemos el ODROID-H2, que presenta más posibilidades para esta tarea en cuestión. ZFS es bastante pesado en el uso de memoria. La mayor parte de esta memoria se usa para caché, o Caché de Reemplazo Avanzado, ARC, para ser más específico. Algunos dirán que necesitas un GB de memoria por TB de capacidad en el conjunto de ZFS, otros, incluyéndome a mí, hemos descubierto que es un poco exagerado. Sin embargo, para una configuración como un NAS, cuanta más RAM pueda asignarse a ZFS, mejor. Afortunadamente, dado que el ODROID-H2 se puede expandir hasta alcanzar los 32 GB de RAM, esto nos brinda mucha flexibilidad.

Instalación y configuración

Como hemos mencionado anteriormente en esta guía, utilizaremos Ubuntu como nuestra de distribución, más específicamente Ubuntu Server 18.04 LTS. Una vez que todo esté instalado y las unidades deseadas estén conectadas, podemos continuar con los siguientes pasos:

Lo primero que debe hacerse es instalar las utilidades de ZFS a través de apt-get:

$ sudo apt install zfsutils-linux
A continuación, podemos crear el grupo ZFS, o zpool, a partir de las unidades conectadas. Un grupo ZFS es una configuración de unidades.

ZFS admite muchas configuraciones, resumiré algunas para obtener una lista más completa, para buscar una configuración más particular consulta los enlaces al final de esta guía. Por ejemplo, el siguiente comando zpool create con una lista de unidades formando una configuración RAID-0 en un grupo llamado "mypool". Este grupo solo tiene dos unidades 'sdb' y 'sdc', aunque se podrían agregar más unidades, si estuviesen disponibles, a la lista:

$ sudo zpool create mypool /dev/sdb /dev/sdc
El siguiente comando tomará dos unidades 'sdb' y 'sdc' y las duplicará en un grupo llamado 'mypool':
$ sudo zpool create mypool mirror /dev/sdb /dev/sdc
Para protegernos de la pérdida de datos en caso de fallo de la unidad en un sistema con múltiples discos, podemos aprovechar los tipos de RAIDZ de ZFS. RAIDZ, esto es similar a RAID-5, donde se pierde un valor de capacidad de disco en el tamaño total de la agrupación y solo proporciona protección para un único fallo de disco. RAIDZ2, es similar a RAID-6, con doble paridad y tiene la ventaja de proteger contra dos fallos de disco. RAIDZ3, triple pariedad para proporcionar protección contra tres fallos de disco:
$ sudo zpool create mypool raidz /dev/sdb / dev/sdc /dev/sdd /dev/sde /dev/sdf
Aunque el H2 tiene solo dos puntos SATA en las nuevas revisiones, es posible una expansión para puertos SATA adicionales a través de adaptadores NVMe.

Comandos útiles

Configurar un grupo ZFS es bastante simple como hemos visto, afortunadamente la mayoría de resto de comandos son igual de directos. El siguiente comando es uno de los más útiles para recordar, ya que devuelve el estado y la salud de tu grupo:

$ sudo zpool status
El resultado de este comando debería tener el siguiente aspecto:
odroid@copenhagen:~$ sudo zpool status
[sudo] password for odroid: 
  pool: poolc
 state: ONLINE
  scan: scrub repaired 0B in 1h0m with 0 errors on Sun Feb  9 01:24:36 2020
config:

  NAME        STATE     READ WRITE CKSUM
  poolc       ONLINE       0     0     0
    mirror-0  ONLINE       0     0     0
      sda     ONLINE       0     0     0
      sdb     ONLINE       0     0     0

errors: No known data errors
Si todo está bien, deberías ver '0', cualquier otra cosa debería ser una indicación de que se necesita alguna acción. Uno de los posibles comandos para ejecutar sería un scrub, que realiza una verificación de la integridad de los datos. También se puede usar el argumento "-v" para obtener resultados más detallados:
$ sudo zpool scrub mypool
Las instantáneas son una herramienta muy útil para crear puntos de referencia a los que luego puedes volver en caso de problemas. El siguiente comando crea una instantánea llamada "somelabe" del directorio "/home/odroid" en el grupo ZFS llamado "mypool":
$ zfs snapshot mypool/home/odroid@somelabel
Para ver una lista de todas las instantáneas disponibles:
$ sudo zfs list -t snapshot
Para restablecer tu sistema de archivos, o en este caso "/home/odroid", al estado en que se encontraba cuando se tomó la instantánea "somelabel", se puede usar el siguiente comando:
$ sudo zfs rollback mypool/home/odroid@somelabel

Referencías

Esta guía ha sido un punto de partida para familiarizarte con ZFS y resaltar algunas de las características que lo diferencian. Recomiendo a todos los interesados que echen un vistazo a la guía de referencia de Ubuntu ZFS para obtener más información, así como el artículo de Ars Technica (aunque un poco anticuado, la información y la redacción son excelentes).

https://wiki.ubuntu.com/Kernel/Reference/ZFS https://arstechnica.com/information-technology/2014/02/ars-walkthrough-using-the-zfs-next-gen-filesystem-on-linux/

Be the first to comment

Leave a Reply