junio 20, 2008

ZFS

Qué es ZFS?

ZFS es un tipo de sistema de archivos nuevo, de fácil administración, con semántica transaccional, integridad total de los datos y un potencial inmenso de escalabilidad, desarrollado por la gente de Sun para su sistema operativo Solaris.

ZFS no es una mejora cuantitativa, incremental a la tecnología de almacenamiento existente: es una manera de encarar el concepto de storage de manera radicalmente diferente, un salto cualitativo algunos años hacia, lo que parece, será el futuro.

En palabras de Bill Moore, Ingeniero Distinguido de Sun, quien es parte del equipo principal de desarrollo de ZFS:

Haciendo una comparación, cuando en un servidor quieres aumentar la memoria (RAM), el proceso es sencillo: lo apagas, insertas módulos DIMM, vuelves a encender, y listo! No debes correr dimmconfig, no debes editar /etc/dimmtab, no debes crear dimms virtuales para montar en las aplicaciones. La memoria es un simple pool de recursos, administrado por el sistema operativo para soportar las aplicaciones. Si Firefox necesita más megabytes de memoria, simplemente la pide, y si está disponible, se le asigna. Cuando termina, la libera y de vuelta ocupa la porción de memoria disponible para otras aplicaciones. Es muy simple, una manera natural de pensar en relación al storage.

Con ZFS, nos preguntamos: porque no podemos manejar el almacenamiento en disco de la misma manera? Tenemos el modelo de almacenamiento en pools.

Los discos son como DIMMs, y los sistemas de archivos, como aplicaciones. Agregas dispositivos al almacenamiento, y ahora el sistema de archivos no está atado al concepto de disco físico. Inserta los datos al pool a medida que necesita guardar información en archivos, y a medida que borras archivos, devuelve ese espacio al pool para ser utilizado por otro sistema de archivos. De vuelta: es una manera muy natural, muy sencilla de administrar grandes cantidades de datos.


Características principales:

  • Integridad demostrable: todos los datos y metadatos, son verificados mediante checksums, lo cual permite detector errores de hardware (corrupción del disco duro, cables IDE sueltos, etc)
  • Actualización atómica: el estado del disco es consistente todo el tiempo, no necesitas realizar largos chequeos del sistema de archivos (no utiliza fsck!!) tras reboots forzados o fallas de alimentación de energía.
  • Snapshots y clones instantáneos: Hace posible tener eficientemente respaldos por hora, día y semana, también como experimentar nuevas configuraciones del sistema sin correr riesgos.
  • Compresión embebida opcional.
  • Altamente escalable
  • Modelo de pool storage: crear un sistema de archivos es tan fácil como crear un nuevo directorio! Puedes tener miles de sistemas de archivos, cada uno con su propia cuota y reserve, con diferentes propiedades (algoritmo de compresión, algoritmo de checksum, etc)
  • Stripes propios (RAID-0), mirrors (RAID-1) y RAID-Z (similar a un RAID-5 por software, pero más eficiente, debido al modelo transaccional de ZFS copy-on-write).
  • Mucho más!!! (tamaño de sectores variable, endianness adaptable, ...)

Suena divertido y desafiante no? Eso no es todo…además de las maravillas prometidas, la gente de Sun, lo publicó bajo licencia open source, y existen proyectos para portarlo a FreeBSD y Linux.


Enlaces interesantes:

4 comentarios:

Eterno Enamorado dijo...

Primero, felicitarte por tu blog, realmente muy bueno.

Segundo, yo ya conocía de la existencia de ZFS, por que se rumoraba que MacOSX 10.5 lo usaría (rumor falso al final) pero yo creía que era exclusivamente de Solaris. Ahora creo que tendré que hacerme de otra maquinita para probarlo sobre mi Debian.

Muchas gracias y de nuevo felicidades por tu blog.

gorlok dijo...

Sabía que había algún port, pero no que ya era usable. Muy bueno el artículo. Me gustaría probarlo.

Parece que la licencia del mismo (CDDL) es problemática para que se extienda el uso de ZFS como reguero de pólvora. Si Sun lo liberara al ZFS bajo GPLv2, podría ser integrado en el núcleo de Linux inmediatamente. Aunque parece que Sun estaría más interesada en relicenciar OpenSolaris (y ZFS de paso) bajo GPLv3, que aunque es una licencia fantástica en muchos aspectos, puede terminar siendo un freno para su adopción oficial en el kernel, al menos, así ya lo ha manifestado Linus anteriormente.

Espero que no haya conflicto con las licencias (y políticas) y pueda integrarse oficial y totalmente en el kernel sin problemas. Sería un gran aporte (y un gran día) para el kernel Linux.

Ojalá así sea :)

Pulpo dijo...

Por lo que leí, ZFS será usado en MacOS X Server, lo nombra Schwartz en su blog, en este artículo, enlazando a este otro.
De hecho ZFS se está posicionando cada vez como un jugador muy fuerte en lo que a tecnologías de almacenamiento se refiere, y la verdad, deja con la boca abierta.

admin dijo...

Gracias por el comentario Pulpito :)
Mira, por lo que leo por ahi, aun no esta implementado en MacOS "de fabrica", pero si hay experiencias de gente que lo instalo e implemento con exito (http://inieto.wordpress.com/2008/01/16/zfs-en-mac-osx-leopard/)
Estoy a punto de probarlo en Linuxito, esa va a ser la proxima entrada del blog....apenas tenga tiempo :D
Abrazo a vos y a los caras!!!