10 de octubre de 2013

ZFS portado oficialmente gracias a OpenZFS

Hace tiempo que no pongo nada por aquí. No es porque no haya novedades en el mundillo, es por culpa de una apretada agenda. Pero hoy saco tiempo para contaros algo sobre el que a día de hoy es mi "sistema de archivos" favorito, ZFS.

ZFS es un "sistema de archivos" creado por Sun Microsystems para Solaris en 2005 bajo licencia CDDL, lo cual lo hace incompatible con el kernel de Linux debido a las diferencias entre CDDL y GNU/GPL. Con la absorción de Sun por parte de Oracle el proyecto quedó relegado a un segundo plano y Oracle se limitó a continuar con el soporte y registrar el nombre ZFS con fines comerciales, pero apenas se ha proseguido con el desarrollo. Desde 2007 hubo implementaciones de ZFS en otros SOs como Linux, OSx, FreeBSD etc... pero tanto el desarrollo de la rama principal como el soporte seguían en manos de Sun, y luego de Oracle.

En septiembre saltó la noticia en la LinuxCon. Matt Ahrens, uno de los autores originales de ZFS se ponía al frente del proyecto OpenZFS, dando continuidad a ZFS esta vez como proyecto de software libre apoyado por numerosos desarrolladores y empresas. Aunque la licencia sigue siendo CDDL, ya es posible descargar el código fuente o bien los binarios para diferentes distribuciones, también tenemos repositorios etc...

Vamos a ver un poco en que consiste ZFS. Como dije antes es un "sistema de ficheros" como pueden serlo FAT, NTFS, EXT, BTRFS etc... pero lo pongo entrecomillado porque ZFS además es un gestor de volúmenes como LVM, VxVm etc... Combina ambas funcionalidades.

Como gestor de volúmenes sus características son:
  • Es promiscuo. ZFS permite añadir medios de almacenamiento en un pool, y estos medios de almacenamiento pueden ser de casi cualquier tipo conocido. Un disco completo, una partición, un simple fichero, una espacio de direccionamiento RAM, una LUN externa etc...
  • Permite configurar los pools con los niveles de RAID mas usados, pero re-implementados como RAID-Z. RAIDZ1 equivale a RAID-5, RAIDZ2 es una RAID-6 (doble paridad). Ya se ha implementado RAIDZ3 (triple paridad debido al tamaño que pueden alcanzar los zpool). La principal diferencia es que gracias al copy-on-write se elimina el efecto write-hole de RAID. Por supuesto también se permite hacer un mirror de 2 zpool.

Como sistema de archivos sus características son:
  • Es un sistema de archivos de 128bit. Su límite es de 16EB (Exabytes) para un volumen, fichero o atributo cualquiera. El tamaño máximo de un zpool es de un ZettaByte (de ahí ZettaByte File System). Esto es: 1.180.591.620.717.400.000.000 bytes. Es decir, si creáramos documentos de 1Mb a razón de 100 por segundo  hasta llenar todos los volúmenes de 16EB en un zpool de 1ZB tardaríamos 929.420 años y pico en llenarlo.
  • Es transaccional copy-on-write, es decir, mientras sea posible no se sobrescribe ningún bloque, si no que se crean nuevos bloques y se redirigen los punteros. Esto permite las funciones de snapshots, clones y deduplicación de datos.
  • Es autoreparable. Con niveles RAID si se comprueba que un bloque se ha corrompido (mediante hashes) se reconstruye a través de la paridad automáticamente, incluso sin que se haya solicitado dicho bloque.
  • Permite añadir nuevos discos a un pool de manera dinámica, aumentando el ancho de banda y reconfigurando el nivel RAID de manera autónoma.
Seguro que estáis pensando que con esas características OpenZFS está muy bien para entornos de alta disponibilidad, servidores, superordenadores etc... Pero lo cierto es que es muy sencillo y fiable en entorno doméstico. Principalmente por que la gestión se realiza únicamente con 2 comandos, zpool y zfs, y porque además dispone de una GUI muy cómoda. La gestión de cuotas se puede hacer por volumen o por usuario y es exportable e importable. Por todo ello es mi "sistema de archivos favorito" y ahora que hay un proyecto libre para dar continuidad, se va a convertir en el sistema de archivos que voy a usar en casa.

No hay comentarios:

Publicar un comentario