Tabla de Contenidos
Introducción a ZFS
ZFS es, realmente, el único sistema de archivos que vale la pena. Fue creado por sun microsystems porque eran la leche y podían hacerlo. Actualmente se suele usar en Linux y FreeBSD, mas en este último ya que debido a que “Free Software”, no pueden tener ZFS en Linux por temas de licencia. Un tema donde lo haya.
Pero si no eres un fetichista del copyleft y del software libre puedes usar ZFS para crear raids de distintos tamaños, almacenar archivos, instalar sistemas operativos y toda esas cosas
crear un pool
Puedes crear distintos tipos de pool, los mas básicos son el de toda la vida, stripe, mirror y RAID-Zn
- el mas básico es crear un zpool con solo un dispositivo
- stripe es poner todos los discos juntos. Lo que viene siendo un RAID 0
- mirror es poner discos como espejos, lo que viene siendo un RAID 1
- RAID-Z es parecido a RAID 5 pero mejor.
- Puedes crear un stripe de mirrors o un stripe de RAID-Zs, creando así RAID 10 y RAID 50
Un pool es un dispositivo de almacenamiento en ZFS
zpool create tank raidz-1 da0 da1 da3 da4
Esto crearía un RAID-Z, es decir, suma de 4 discos menos paridad.
zpool create tank mirror da0 da1
crearía un RAID 1 con da0 y da1
zpool create tank mirror da0 da1 mirror da2 da 3
Esto creará un RAID 10
zpool create tank raidz da0 da1 da2 raidz da3 da4 da5
1)
Esto, supongo, que creará un RAID 50
Esto se ha solucionado en la version 2.3.x de zfs. puedes verla con el comando “zfs version”. Debe estar tanto el userland como el módulo de kernel en la versión 2.3.x. En FreeBSD 15 tendremos esa versión por defecto. De mientras puedes compilar OpenZFS manualmente
snapshots
Una snapshot es un backup, pero no es un backup. Sí, te puede salvar de haber borrado un archivo por accidente y sí, puede restaurarte el OS ante una catastrofe humana. Pero de poco te va a servir si se te jode el disco duro. Aún con esas es bastante útil. Con el siguiente comando se puede crear una snapshot
zfs snapshot create tank@hoy
parar restaurar una snapshot se usa el siguiente comando
zfs rollback tank@hoy
Y se hará la luz.
compresión
si quieres HASTA EL ÚLTIMO PUTO BIT que tu pool puede ofrecer, lo suyo sea que pongas un algoritmo de compresión. Hay bastantes pero yo recomiendo zstd y lz4. Depende de tu caso de uso (si estás leyendo esta wiki, posiblemente almacenar piratería y demás cosas) si no accedes a los archivos cada 2 microsegundos, con zstd-19 te iría fenomenal (que es el máximo, pero zstd es relativamente rápido y también lo son las CPUs). Pero si necesitas esto para acceder a miles de archivos por segundo lo suyo sería que usases zstd-fast-1000 o algo parecido, ya que vas mas por velocidad que por espacio
zfs set compression=zstd-19 tank
deduplicación
Si ZFS encuentra bloques iguales, el otro dirá “este ya lo tengo, no lo voy a repetir”, ahorrando así a la larga inmensas cantidades de espacio en disco. El tema es que esto pide recursos. RAM sobre todo. Siguiendo la regla de 1GB de RAM por TB, realmente se podría. Pero esta regla es bastante optimista, yo con 32GB de RAM tengo un ARC de 16GBs y puedo decir que me va bien con deduplicación incluida.
Para activarla, se ejecuta el siguiente comando
zfs set dedup=on tank
Y se activará la deduplicación. A la larga y a la escritura verás como te has ahorrado espacio en disco. Pero no mucho.