esto es la suraguwiki el contenido, como puedes ver, deja mucho que desear para comentarios sobre los cosos aquí, puedes mandar un correo a diego arroba suragu punto net

Si eres un putísimo crack y quieres contribuir a esta wiki, pídeme una cuenta en el mismo correo de arriba

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

Por favor, visite usted el escrito de mejor manera, manual de ZFS de freebsd

Conceptos básicos

ZFS además de ser un sistema de archivos muy potente, también puede gestionar discos y volumenes físicos y lógicos de la misma manera que lo haría una controladora RAID o un LVM. la principal “unidad” es el dataset que es cualquier cosa de ZFS que tenga datos. Puede ser un filesystem (aquello que creas con zfs create), una snapshot o un bookmark

crear un pool

Puedes crear distintos tipos de pool, los mas básicos son el de toda la vida, stripe, mirror y RAID-Zn

  1. el mas básico es crear un zpool con solo un dispositivo
  2. stripe es poner todos los discos juntos. Lo que viene siendo un RAID 0
  3. mirror es poner discos como espejos, lo que viene siendo un RAID 1
  4. RAID-Z es parecido a RAID 5 pero mejor.
  5. 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 da51)

Esto, supongo, que creará un RAID 50

si creas un RAID-Z, no podrás añadir nuevos discos.

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

Crear un filesystem

Un filesystem en ZFS es lo que en otros sistemas de archivos entenderíamos por partición o en el caso de LVM otro volumen lógico. Podemos crearlo con zfs create, por ejemplo zfs create tank/volumen y tendríamos eso. Podemos crear snapshots, bookmarks, o ponerles quotas

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.

cuotas

Una quota es ponerle un límite a un filesystem de ZFS. Por ejemplo si tu pool total tiene 10TBs y solo quieres darle 500GBs a un directorio como máximo (imaginate que es un servicio, una VM o la carpeta de archivos de otro usuario que no quieres que se flipe con el almacenamiento)

Puedes usar el comando zfs set quota=500G tank/filesystem para poner el límite de dicho FS en 500G. Se podrá ver en df como el OS es consciente de estos cambios. Y puedes redimensionarlo en cualquier dirección. Tanto hacerlo mas grande como mas pequeño.

1)
que sepas que si haces esto, eres un mamao y tienes todos mis respetos