ZFS vs Btrfs
Está en boca de todos últimamente el acrónimo ZFS ( Zettabyte File System ) que es el sistema de archivos desarrollado por Sun Microsystems, ya incluido desde 2005, su soporte en Solaris y en OpenSolaris en sus últimas versiones. Pero antes de todos, vamos a dedicar unos cuantos párrafos para explicar resumidamente en qué consiste ZFS, qué incovenientes tiene y su posible competidor en el mundo libre: btrfs.
ZFS es un sistema de archivos cuya pecularidad es que se compone de un pool de sistemas de archivos virtuales, llamados zpools, los cuales debajo suya, puede estar compuesto de un simple disco o un RAID de ellos. Esto hace que a la hora de añadir un nuevo disco al almacenamiento, o modificar un raid, para ZFS sea transparente, además que todo el almacenamiento se comparte físicamente entre todos estos sistemas de archivos virtuales, no desperdiciando el espacio libre de un sistema de archivos, que puede ser necesario en un caso crítico para cualquier otro sistema de archivos del pool.
ZFS fue diseñado pensando en un espacio de almacenamiento casi infinito, hablamos de ZetaBytes. Por ello, es un sistema de 128 bits, esto nos permite almacenar datos hasta 18.4 × 1018 más que un FS de 64 bits. Respecto a la capacidad del sistema, Jeff Bonwick, el arquitecto jefe de Sun para ZFS, dijo “Llenar un sistema de archivos de 128 bits excedería los límites cuánticos de almacenamiento de la tierra. No puedes rellenarlo sin hervir los océanos”.
Otras limitaciones teóricas de ZFS son:
- 248 — Número de snapshots en cualquier sistema de ficheros (2 × 1014)
- 248 — Número de ficheros en un sistema de ficheros (2 × 1014)
- 16 exabytes — Tamaño máximo de un sistema de ficheros
- 16 exabytes — Tamaño máximo de un fichero
- 16 exabytes — Tamaño máximo de cualquier atributo
- 3 × 1023 petabytes — Tamaño máximo de un zpool
- 256 — Número de atributos de un fichero (realmente limitado a 248 que es el número de ficheros que puede contener un sistema de ficheros ZFS)
- 256 — Número de ficheros en un directorio (realmente limitado a 248 que es el número de ficheros que puede contener un sistema de ficheros ZFS)
- 264 — Número de dispositivos en cualquier zpool
- 264 — Número de zpools en un sistema
- 264 — Número de sistemas de ficheros en un zpool
A continuación destaco aquellas características que hace que ZFS sea interesante:
- Copy-on-write: consiste en mantener siempre la información de los datos que manejemos. Siempre que modifiquemos un fichero, los bloques de datos que compongan dicho fichero son reubicados, modificando todas las referencias de los metadatos que apunten sobre dichos bloques. Esto nos permite realizar snapshots de nuestro sistema de archivos.
- Snapshots: Consisten en tener una instantánea del estado del FS en algún momento del pasado. Debido al copy-on-write, disponemos siempre la información del pasado, ya que no es eliminada cuando es modificada o eliminada del sistema de archivos. Posibles aplicaciones: backups de datos empresariales. Nos dejamos de realizar backups diarios de DB’s, datos de usuarios, ficheros, perfiles, etc.
- Dynamic Striping: a medida que incluimos discos en el zpool, aumentamos el ancho de banda del mismo, incrementando así la velocidad de las escrituras/lecturas y el espacio disponible para los sistemas de archivos que compongan el zpool. Pero esto no es libre albedrío. Podremos aplicar quotas de disco para garantizar que haya espacio libre. Otra forma es fijar una reserva de disco para un sistema de archivos en particular.
- Soporte POSIX: ZFS es directamente accesible por las aplicaciones sin tener que realizar ninguna modificación en la misma.
Esto está muy bien, pero ZFS en principio fue desarrollado para productos de Sun como Solaris y OpenSolaris. Existían rumores de que ZFS lo iban a incluir en MacOSX en el lanzamiento de Leopard, pero sólo se quedó rumores, ya que solo soporta modo lectura de ZFS, lo cual, tampoco está nada mal.
En cambio, actualmente disponemos información de que quieren portalo para FreeBSD y Linux, usando FUSE, con licencia CDDL ( Common Development and Distribution License ). Pronto realizaré pruebas con ZFS, para ver la “portabilidad” que tiene.
Oracle, en respuesta al sistema de archivos ZFS de Sun, contraatacó con btrfs , otro sistema de archivos con características similares, por no decir iguales, a ZFS. Primeramente, hay que decir que btrfs es GPL, por lo que por mi parte, tiene ya medio cielo ganado 🙂 . Por otra parte, el proyecto está muy verde. La gran mayoría de las features que tiene ZFS, y que dicen que quieren desarrollar, no están todavía soportadas.
Como hemos dicho antes, btrfs es similar a ZFS, implementando un sistema de archivos con capacidad copy-on-write, además de soportar tolerancia a fallos y su reparación de forma fácil. Soportan grandes volúmenes de datos.
Las principales características de este FS son:
- Almacenamiento de ficheros grandes: tamaño máximo del mismo es de 2^64
- Uso eficiente del espacio para fichero pequeños.
- Uso eficiente de indexación de directorios.
- Alojamiento dinámico de inodos.
- Snapshots con capacidad de escritura.
- Múltiples subvolúmenes (todos separados de la ruta principal del sistema)
- Checksums para los datos y metadatos, podiendo utilizar distintos algoritmos
- Fuerte integración con device mapper para el soporte de múltiples dispositivos.
- Comprobación del sistema de ficheros online. El chequeo offline, es mucho más rápido
- Gran eficiencia con copias de seguridad incrementales y mirroring de sistema de archivos
No recomiendan quitar discos, cuando dispongamos de múltiples dispositivos formando un raid, ya que el sistema de archivos puede producir una pérdida de datos. No tienen testeado el soporte de tolerancia de fallos, por lo que es posibles que de esta forma también dispongamos pérdidas de los mismos.
Para Gentoo existe en el portage el ebuild para poder instalar btrfs. ZFS está soportado en Linux gracias a FUSE. Esta semana intentaré instalar ambos FS’s y comprobar la viabilidad de los mismos. Los resultados los colgaré en el blog.
Enlaces de interés:
ZFS Wikipedia
ZFS en Comunidad OpenSolaris
ZFS en linux – noticia de genbeta
Btrfs – Wiki oficial del projecto
Btrfs en Gentoo – Planet Gentoo blog