Gnu/Linux BTRFS y ZFS
By: Date: noviembre 1, 2020 Categories: Consultoria y Manuales

¿ Que son ?

Son sistemas de archivos de alto rendimiento aunque con diferente licenciamiento motivo por el cual ZFS no es parte oficial del kernel de Linux aunque puede instalarse módulos externos que le dan a Linux la capacidad de usar ZFS, BTRFS si es parte del código de Linux aunque RedHat mantiene desactivado el módulo y si se requiere se tiene que re compilar el kernel

¿ Cual es mejor ?

En las pruebas hechas tienen sus fuertes y sus desventajas.

Ventajas de ambos sobre otros sistemas de archivos.


Tienen Snapshot
Tienen volúmenes
Pueden sustituir el RAID y los volúmenes lógicos, sus funcionalidades lo integran

Ventajas de ZFS sobre BTRFS


Tiene cifrado nativo


Tiene auto reparación, como si fuera el poder mutante de Wolfverine, sin intervención del administrador
Tiene Volúmenes Z ( Zvols ) que le permiten tener sistemas de archivos internos diferentes por ejemplo ext4 o xfs dentro del propio ZFS, entrega dispositivos de bloques que además pueden ser cifrados nativamente por ZFS.

¿ Por que un ZVOL es ventajoso ?

Por su forma de funcionar ni BTRFS ni ZFS permiten archivos de overlay, ni archivos loop con sistemas de archivos, significa que Docker no correría sobre ZFS o que no podrías activar un archivo de SWAP para ayuda a la memoria RAM, el ZVOL te da un dispositivo de bloques que puede ser formateado como xfs, ext4 , ntfs si por alguna extraña razón se requiere el caso es que es un depósito de bloques donde podrías correr tu Docker o tener SWAP
Tiene Raid nativo 0, 5,6, y soporta spare ( respuestos ) al mismo tiempo es una desventaja contra BTFS debido a que se comporta como un RAID en toda regla, aumentar los discos de un arrelo, no es recomendado si no es para agregar Spare disk

Desventaja de ZFS frente a BTRFS


No tiene rebalanceo de datos al agregar un nuevo disco a un pool con RAID
Hasta la versión 5.9.2 no se incluye en el kernel por un problema de licenciamiento de incompatibilidad con la GPL, siendo esto un problema filosofo mas que técnico. Para usarlo en Linux debe conseguir se el código, compilar los módulos de forma externa e instalarlos, aunque en estos momentos se puede instalar en muchas distros con sus gestores de paquetes sin mayor problema.

Ventajas de BTRFS

Tiene RAID como ZFS pero al agregar mas discos, estos pueden participar del arreglo después de hacer un rebalanceo, un proceso donde los discos se reajustan para aceptar un nuevo disco en el RAID manteniendo la integridad a tolerancia de fallos
Tiene su código integrado al kernel, solo debe activarse a la hora de compilar
Tiene la capacidad de desfragmentar o desfragmentar y comprimir en un volumen montado y trabajando en vivo

Sus de ventajas frente ZFS


No tiene cifrado nativo, pero puede tenerlo con Luks y dm-crypt como cualquier otro sistema de archivos.

Como usar ambos sistemas de archivos

A continuación se da una lista de comandos equivalente en ambos sistemas de archivos

Inicializar el sistema de archivos en los discos duros ( formateo )


BTRFS Un solo disco


mkfs.btrfs /dev/hda


ZFS un solo disco
zpool create NombrePool /dev/hda


• En ZFS al formatear se debe crear el POOL que es el volumen root con el nombre dado en NombrePool y del cual pueden salir sub-volúmenes

BTRFS 2 discos RAID 0 automático


mkfs.btrfs /dev/hda /dev/hdb


• En BTRFS se puede especificar el tipo de RAID al formatear sin embargo al agregar discos y tener suficientes para un RAID 5 se puede rebalanceo datos convirtiendo un RAID 1 o RAID 0 en RAID 5


ZFS 2 discos RAID 0


zpool create NombrePOOL /dev/hda /dev/hdb

BRTFS 2 o más discos RAID 1 espejo o mirror


mkfs.btrfs /dev/hda /dev/hdb
btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt


• La conversión se hace con BTRFS ya montado y en vivo sin afectar operaciones.


ZFS 2 o más discos RAID 1 espejo o mirror


zpool create NombrePool mirror /dev/hda /dev/hdb

BRTFS Raid 5


mkfs.btrfs /dev/hda /dev/hdb /dev/hdc
btrfs balance start -dconvert=raid5 -mconvert=raid5 /mnt


• La conversión se hace con BTRFS ya montado y en vivo sin afectar operaciones, si al iniciar el formateo de BRTFS no se tienen los 3 discos mínimos se puede agregar después y rebalancear


ZFS Raid 5


zpool create grupo1 raidz1 /dev/hda /dev/hdb /dev/hdc


• Agregar más discos a un arreglo ZFS no se recomienda, excepto para usarlos como spare. Por lo que debe tenerse los discos necesarios desde el inicio y saber muy bien si requiere el raid 5 llamado raidz1 o el raid6 llamado raidz2

Montado de los sistemas de archivos

BTRFS

mount /dev/hda /mnt


• Se monta como cualquier sistema tradicional, también se puede montar llamando cualquiera de los discos de un arreglo, hace un mount con /dev/hdb llamara al /dev/hda y al /dev/hdc en automatico para recrear el raid y también puede ser agregado como una entrada en el archivo /etc/fstab para montados automáticos después de un reinicio


ZFS


Asignar punto de montura del pool o de los volúmenes


zfs set mountpoint=/mnt/ NombrePool
zfs mount NombrePool


• Zfs no usa el comando mount, incluye sus propios comandos de montado y tampoco se usa el /etc/fstab para montados después del reinicio. En caso de reiniciar deberá importarse el pool con el comando zpool import NombrePool el cual debe ser agregado a los scripts de inicio así como los comandos de montado de ser necesario.

ZFS agregar un volumen
zfs create NombreVolumen/home

ZFS crear un ZVOL


zfs create -V 10G NombreVolumen/ext4


• Esta acción crearía un dispositivo especial /dev/zvol/raid0/ext4 de 10G, espacio tomado del pool con alias o linksimbolico en /dev/zd0 los cuales son un dispositivo de bloques que puede ser formateado por cualquier sistema de archivo o ser usado para swap mkfs.ext4 /dev/zvol/raid0/ext4


BTRFS Agregar un volumen y montado


btrfs subvolume create mnt/home
mount /dev/hda /home/ -o subvol=home,rw


ZFS Agregar un volumen y montado


zfs create NombrePool/home
zfs set mountpoint=/home NombreVolumen/home
zfs mount NombreVolumen/home

BTRFS Desmontar un volumen
umount /home

ZFS Desmontar un volumen


zfs umount NombreVolumen

BTRFS cifrado del sistema de archivos con todo y volúmenes


BTRFS no cuenta con un cifrado nativo, pero puede ayudarse de Luks2

ZFS cifrado de volumen o de Zvols


zfs create -o encryption=aes-256-gcm -o keyformat=passphrase -o keylocation=prompt NombrePool/home

zfs create -o encryption=aes-256-gcm -o keyformat=passphrase -o keylocation=prompt -V 5G NombreVolumen/ext4

ZFS Abrir un volumen cifrado después un reinicio


Pregunta la clave de todos los volúmenes cifrados


zfs load-key -a

Pregunta la clave un volumen especifico

zfs load-key NombreVolumen/home

BTRFS Comprimir un volumen


mount /dev/hda /home/ -o subvol=home,rw,nosuid,nodev,noexec,compress=lzo

• Se recomienda montar un volumen con compresión si eso se desea desde su creacion por que los archivos que hayan quedado sin compresión se mantendrán así a menos que manualmente se le indique como una opción de desfragmentación en vivo sobre un sistema de archivos montado


ZFS Comprimir un volumen


zfs set compression=lz4 NombrePool/home
• Al igual que con BTRFS, si se planea que sea comprimido debe hacerse desde la creación, por que los archivos que no se hayan comprimido se quedaran sin comprimir, solo los nuevos serán comprimidos.


BTRFS borrar un volumen


btrfs subvolume delete mnt/home

ZFS Borrar un volumen


zfs destroy NombreVolumen/home

BTRFS comandos para la revisión de salud del sistema de archivos


btrfs filesystem show
btrfs filesystem df home/
btrfs device stats /home


ZFS comandos para la revisión de salud del sistema de archivos


zpool status

BTRFS reemplazar disco por otro (spare)


btrfs replace start /dev/hda /dev/hdd /home/


• Se hace con los sistemas de archivos montados en vivo
Retirar un disco o retirar un disco faltante físicamente
btrfs device delete /dev/hda /mnt/
btrfs device delete missing /dev/hda /mnt/

• Se puede retirar un disco de un arreglo, si el resto de los discos tienen suficiente espacio para respaldar el contenido del que se va a retirar, al poner un disco nuevo que lo sustituya se deberá hacer un rebalanceo de los datos que han quedado desordenados y sin tolerancia a fallos al retirar un disco del arreglo, se usa missing para retirar un disco que se ha dañado por completo y no hay nada que se pueda respaldar, si el arreglo permite la perdida de un disco por tolerancia a fallos podrá continuar en modo degradado

ZFS retirar un disco del arreglo del pool.


zpool remove NombrePool /dev/hda
o
zpool detach NombrePool /dev/had


• Debido a que los RAID con tolerancia a fallos en zfs son muy parecidos a los tradicionales, no se podrá remover discos que hagan fallar la integridad del arreglo. Solo pueden ser removido discos declarados como spare o de un arreglo mirror


ZFS reemplazar disco por otro (spare)


zpool replace NombrePool /dev/hda /dev/hdd

Video con comparativo de velocidades de sistemas de archivos en GNU/Linux

https://www.youtube.com/watch?v=yRcrdl4iEc4

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *