ZFS

Revisión del 23:50 19 feb 2016 de Mena (discusión | contribuciones) (Fuentes)
Z File System
Información sobre la plantilla
Zfs.jpg
ZFS es un sistema de archivos combinado y gestor de volúmenes lógicos diseñado e implementado por un equipo de Sun Microsystems liderado por Jeff Bonwick y Matthew Ahrens.
CreadorMatthew Ahrens y Jeff Bonwick.
DesarrolladorOracle (originalmente Sun Microsystems). Equipo de desarrollo de OpenZFS como fork.
Lanzamiento inicialNoviembre de 2005
Plataformas soportadasMicrosoft Windows, Linux
GéneroLocal file system
Sistemas Operativos compatiblesMicrosoft Windows, FreeBSD and Linux.
IdiomaIngles
LicenciaCDDL

ZFS (Zettabyte File System)es un sistema de archivos diseñado por Sun Microsystems desde octubre del 2001 e implementado en OpenSolaris cuatro años después (31 octubre 2005). Y la idea tras ZFS no es la mejora de la tecnología existente, es un enfoque nuevo en la gestión de los datos desarrollando la integración del sistema de archivos y el administrador de volúmenes lógicos en una sola . El énfasis esta en la administración sencilla, rendimiento, integridad de los datos y la escalabilidad.

Desarrollo

Se inició en 2001 en Sun Microsystems. Fue liberado bajo la CDDL en 2005 como parte de Open Solaris. Pawel Jakub Dawidek portado ZFS para FreeBSD en 2007. Brian Behlendorf en LLNL inició el proyecto ZFSOnLinux en 2008 a ZFS puertos a Linux para computación de alto rendimiento. Oracle compró Sun Microsystems en 2010 y suspendió Open Solaris más tarde ese año. El proyecto Illumos comenzó a reemplazar Open Solaris y más o menos 2/3 del equipo central ZFS renunció, incluyendo Mateo Ahrens y Jeff Bonwick. La mayoría de ellos tomaron puestos de trabajo en las empresas y seguir desarrollando Open Source ZFS como parte del proyecto Illumos.

ZFS está licenciado bajo la CDDL, una licencia de código abierto aprobada por OSI popular y ampliamente utilizado, que es reconocido por la FSF como una licencia de software libre, pero es incompatible con la GNU GPL. Debido a que ZFS no puede ser añadido al núcleo Linux directamente. Puede, sin embargo, se distribuirá como un paquete DKMS independiente del paquete principal del núcleo. El nombre "ZFS" originalmente significaba "Sistema de archivos zettabyte". Actualmente se puede almacenar hasta 256 postales (zebibyte).

Características de ZFS

A continuación se mencionan las principales características del sistema de archivos ZFS (ver [7]):

  • Integridad de datos comprobable: Esta característica permite que los datos en el archivo se mantengan siempre correctamente, siendo capaz de detectar datos corruptos y repararlo automáticamente. Esto se logra gracias a un modelo transaccional de archivos (ver [8]).
  • Modelo transaccional: Un modelo transaccional de archivos implica el almacenamiento de eventos o transacciones. Para esto se utiliza la técnica conocida como copy-on-write, de forma que cuando se modifican datos en el disco, estos no son sobreescritos, para lo que se crean nuevos bloques donde estos datos son grabados y luego se modifican las estructuras correspondientes para que apunten a estos nuevos bloques.
  • Snapshots: Los snapshots corresponden a copias del sistema de archivos en algún determinado momento. Son de creación muy rápida, permitiendo hacer respaldos o copias de seguridad de forma casi inmediata, con la salvedad que estas copias son de sólo lectura.
  • Clones: De forma similar a los snapshots, los clones son copias del sistema de archivos en algún determinado momento, pero en los cuales se permite realizar escritura. Este sistema de archivos que se crea, comparte bloques en el disco con el original, con el fin de ahorrar espacio, pero se manejan de forma independiente.
  • Espacios de almacenamiento: ZFS hace uso de espacios de almacenamiento virtual (o virtual storage pool, o zpools), a diferencia de los sistemas de archivo tradicionales que se encuentran en un solo dispositivo y requieren un gestor de volumenes (ver figura). Un zpool se construye a partir de dispositivos virtuales (o conocidos como vdevs) que a su vez se construyen a partir de bloques de dispositivos (particiones de disco duro, o discos completos). Además, la capacidad de almacenamiento de todos los vdevs se encuentra disponible para todas las instancias del sistema de archivos en el zpool.
  • Creación de sistemas de archivos livianos: Dado que la gestión de los sistemas de archivo es mucho más sencilla que en otros sistemas existentes, hace la tarea de creación de estos sistemas una operación muy ligera. Además, no existen cuotas de espacio por cada usuario, sino que existen cuotas por sistema de archivos, así se crean sistemas de archivos por cada usuario en vez de carpetas dentro de un mismo sistema de archivos.
  • Compresión: esto permite maximizar el espacio en el disco, removiendo los pequeños fragmentos de disco que no están siendo utilizados, y producto de esto, muchas veces maximizar la velocidad de lectura.

Capacidad

ZFS es un sistema de archivos de 128 bits (ver [9]) por lo que tiene mucho mayor capacidad de almacenamiento que otros sistemas de 64 bits, como por ejemplo NTFS. ZFS fue diseñado de forma que los límites fuesen tan grandes, que fuesen encontrados sólo teóricamente en vez de en la práctica. Así, los límites teóricos son:

  • número de entradas en una carpeta : 248
  • número de atributos en un archivo: 248
  • bytes como tamaño máximo de un archivo: 264
  • número de dispositivos en un zpool: 264
  • número máximo de zpool en un sistema: 264
  • número máximo de sistemas de archivos en un zpool: 264
  • bytes como tamaño máximo de algún zpool: 278

Compatibilidad

ZFS es propio y viene incluido dentro del sistema operativo Solaris, pero dado que el código para este sistema de archivos es de libre acceso (open-source) puede ser (y ha sido) llevado a otras plataformas, como por ejemplo FreeBSD, en el que incluso se escribió un artículo de como se logró llevar ZFS a esta plataforma, indicando las bondades de realizar este porte (ver [10]). Algunas de las plataformas que dan soporte a ZFS se listan a continuación:

  • Solaris 10
  • Solaris 11
  • OpenSolaris (Las versiones 2008.05 y 2009.06 usan ZFS por defecto)
  • OpenIndiana (Las versiones 148 y 151 usan la versión 28 de ZFS)
  • FreeBSD (utiliza ZFS a partir de su versión 7.0)

Estructura

Los sistemas de archivos se crean sobre pools de almacenamiento virtual llamados zpools. Un zpool se construye a partir de dispositivos virtuales (vdevs) desde dispositivos de bloques: ficheros, particiones de disco duro, discos enteros y/o RAIDS.

Las características de esta estructura

Las características de esta estructura es:

  • Abstraccion: mallos/free
  • No hay particiones que manejar
  • Crece o se reduce automáticamente
  • Todo el ancho de banda está siempre disponible
  • Todo el almacenamiento en el pool es compartido

Modelo transaccional

ZFS utiliza un modelo transaccional copy-on-write. Todos los punteros a bloques de un sistema de ficheros contienen un checksum de 256 bits sobre el bloque apuntado, que se comprueba al leer el bloque. Los bloques que contienen datos activos no se sobrescriben nunca; en su lugar, se reserva un nuevo bloque, y los datos modificados se escriben en él, y entonces cualquier bloque de metadatos que lo referencie es, de modo similar, reubicado y escrito. Para reducir la sobrecarga de este proceso, se agregan varias actualizaciones en grupos de transacciones, y se utiliza un «registro de intentos» (ZFS Intent Log o ZIL) cuando se necesitan escrituras síncronas.

Instantáneas

Como ZFS no sobrescribe datos, tomar una instantánea simplemente significa no liberar los bloques utilizados por versiones antiguas de los datos. La ventaja es que las instantáneas se toman rápidamente y también son eficientes desde el punto de vista del espacio, pues comparten los datos sin modificar con el sistema de ficheros. Se pueden crear instantáneas tanto de datasets de tipo filesystem como zvol (ver Tipos de dataset). Se pueden crear instantáneas modificables (llamadas clones), lo que resulta en dos sistemas de ficheros independientes que se crean compartiendo un conjunto común de bloques. A medida que se realizan cambios los bloques del sistema de ficheros divergen, pero los bloques comunes se mantendrán independientemente de cuantos clones existan

Diferencias con sistemas tradicionales

La idea tras este nuevo concepto es el de almacenamiento en grupo. A diferencia de los sistemas de archivos habituales que se estructura a partir de un único dispositivo físico. ZFS no se limita a determinados dispositivos gracias al concepto de Pool que elimina por completo el concepto de volumen lógico. También el denominado Copy-on-Write transaccional que da acceso a al mismo recurso a múltiples procesos facilitando un mismo puntero. No pierde la consistencia, sin necesidad de fsck. Mantiene la integridad en los datos, detectanto y corrigiendo silenciosamente la corrupción de estos. Su gran escalabilidad. Administración simple(zpool yzfs), por ejemplo:

/*
*Creamos un grupo de almacenamiento no redundante llamado bicicleta y un 
*sistema de archivos ZFS denominado bicicleta en un comando. Utilizando
*todo el dispositivo disco.
*/

#zpool create bicicleta disco
/*
* Se configura una cuota de 5 GB en bicicleta/var/www/home/juanito
*/

# zfs set quota=5G bicicleta/var/www/home/juanito
# zfs get quota bicicleta/var/www/home/juanito

Con estos ejemplos podemos notar la facilidad con que se gestiona los sistemas de archivos. Aunque el detalle es la exigencia en recursos que ocupa ZFS.

Conceptos

Storage pools

Escalabilidad

La visión en cuanto a la capacidad de almacenamiento y escalabilidad es que no se pudieran alcanzar con facilidad. Por lo tanto los limites teoricos de ZFS son:

* 2^48 — Número de snapshot en cualquier sistema de ficheros 
 (2 × 10^14)
* 2^48 — Número de ficheros en un sistema de ficheros (2 × 10<sup>14</sup>)
* 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 × 10^23 petabytes — Tamaño máximo de un zpool
* 2^56 — Número de atributos de un fichero (realmente limitado a 2^48
  que es el número de ficheros que puede contener un sistema de ficheros ZFS)
* 2^56 — Número de ficheros en un directorio (realmente limitado a 2^48
  que es el número de ficheros que puede contener un sistema de ficheros ZFS)
* 2^64 — Número de dispositivos en cualquier zpool
* 2^64 — Número de zpools en un sistema
* 2^64 — Número de sistemas de ficheros en un zpool

Gracias a wikipedia[1]

Sistemas operativos compatibles

  • Solaris desde la versión 10
  • OpenSolaris 2008.05 y 2009.06
  • OpenIndian 148 y 151
  • FreeBSD desde la versión 7.0
  • FreeNAS
  • ReadyDATAOS
  • NAS4Free
  • PC-BSD
  • GNU/kFReeBSD
  • OS X (intermite)
  • Linux

Fuentes

Referencias

</references>