Sistemas Operativos
ZFS
1. Introducción
ZFS es un sistema de ficheros creado por Sun Microsystems en 2005 para su sistema operativo Solaris. De acuerdo a sus siglas (Zettabyte File System), ZFS es un nuevo tipo de sistema de ficheros que provee de administración simple, semántica transaccional, integridad en los datos y gran escalabilidad. Cabe destacar que actualmente es un sistema deficheros libre que originalmente fue integrado en Solaris el 31 de octubre de 2005 y el 16 de noviembre del mismo año fue incluido ya en OpenSolaris. ZFS es un sistema de archivos de 128 bits y que presenta unos límites de almacenamiento bastante sorprendentes de acuerdo a sus límites teóricos:
• 248 — Número de snapshots en cualquier sistema de ficheros
• 248 — Número de ficheros enun sistema de ficheros
• 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, 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, 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
2. Características de ZFS
2.1 Almacenamiento con ‘pools’
Antes de profundizar en las características de ZFS,realizaré una breve comparación entre las características más diferenciadoras con respecto a los sistemas de ficheros tradicionales.
Cabe destacar las siguientes características:
• Uso de malloc()/free() frente a discos virtuales
• No hay que gestionar particiones en ZFS (Figura 2) frente a un sistema de volúmenes y parciones por cada sistema de ficheros (Figura 1).
•Crecimiento/decrecimiento automático en ZFS frente a uno manual en los sistemas de ficheros convencionales.
• En ZFS, todo el ancho de banda del pool está disponible siempre. En cambio, en los sistemas de ficheros convencionales, el ancho de banda está limitado por cada sistema de ficheros.
• Por otro lado, en ZFS todo el almacenamiento del pool está compartido. En cambio, en los sistemasconvencionales, el almacenamiento está fragmentado
2.1 Almacenamiento con ‘pools’
Los ‘pools’ usados en ZFS eliminan la antigua noción de volúmen (ver Figura 2). En ZFS, los ‘pools’ sirven para almacenar datos y de hecho se hace de forma bastante similar a cómo se hace en memoria. Cuando se solicita espacio para almacenar o borrar datos, se hace usando malloc(), free() al igual que como se pide memoria enlenguajes como C.
2.2 Sistema de objetos transaccional
Las ventajas que aporta este nuevo sistema son permanente consistencia de los datos en disco que hacen olvidar la utilidad fsck. Y es que todas las operaciones de transacciones funcionan como en las bases de datos. O se puede hacer la transacción y se copia con seguridad el fichero, o se aborta. De este modo se evita cualquier tipo deinconsistencia.
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 demetadatos 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 log de intentos cuando se necesitan escrituras síncronas.
2.3 Interfaz de E/S en ZFS
En ZFS, al ser un sistema transaccional orientado a objetos, presenta una pila de E/S diferente a lo que estamos…