ZFS ha sido originalmente un desarrollo de la otrora SUN Microsystems. Ahora está bajo el control de Oracle. Las últimas características están solo disponibles en las últimas versiones de su sistema operativo Solaris, aunque hay implementaciones libres en la mayoría de sistemas operativos Unix Open-source.
Algunos fabricantes de sistemas de almacenamiento como NetAPP tienen sistemas de ficheros similares para sus cabinas de discos.
En ZFS hay dos conceptos fundamentales, los ZPool y los Z Filesystem:
- ZPool: Agrupación de (usualmente) discos duros o particiones que conforma un volumen con todos ellos siguiendo un esquema de RAID.
raidz: Similar a un raid-5El concepto detrás de estos volúmenes es crear un nivel de abstracción entre los dispositivos físicos y los filesystems, permitiendo gran flexibilidad. En el mundo Linux, sería similar a usar MD (raid software) + LVM.
raidz2: Similar a un raid-6
El ZPool se encarga del matenimiento de la información a nivel de raid. Toda la administración a este nivel se hace a través del comando "zpool".
Los diferentes niveles RAID que ofrecen los ZPool (raidz, raidz-2, etc) son conceptualmente iguales a los clásicos (raid-5, raid-6) salvo porque aseguran no adolecer de un problema conocido como "write-hole".
- Z Filesystem: Sobre la capa de abstracción de los ZPool, se crean los filesystems o ZFS's. Puede haber varios en cada ZPool y aquí es donde aparecen las características más interesantes de ZFS. Deduplicación, snapshots, compresión, detección de corrupciones, exportación directa por CIFS, NFS, iSCSI, cuotas, etc, etc, etc... Toda la administración a este nivel se hace a través del comando "zfs".
Ejemplos sobre FreeBSD 8.2
Discos disponibles (sin particionar):
/dev/ad2 (2GB)
/dev/ad4 (2GB)
/dev/ad6 (2GB)
/dev/ad8 (2GB)
/dev/ad10 (2GB)
/dev/ad12 (2GB)
ZPOOL MANAGEMENT
Creación de un zpool raid-0 (stripping) con dos discos:
zpool create NOMBREPOOLCreación de un zpool raid-1 (mirror) con dos discos:/dev/ad2 /dev/ad4
zpool create NOMBREPOOLmirror /dev/ad2 /dev/ad4
Creación de un zpool raidz-2 con 4 discos, doble paridad y un disco de spare:
zpool create NOMBREPOOLDestrucción de un zpool y liberación de los discos físicos que lo formaban:raidz2 /dev/ad2 /dev/ad4 /dev/ad6 /dev/ad8 /dev/ad10 spare /dev/ad12
zpool destroy NOMBREPOOL
Añadir un disco más a un zpool:
zpool add NOMBREPOOL/dev/ad12
Añadir (en caliente) un disco de spare a un zpool:
zpool add NOMBREComprobar los checksums de todo el zpool en busca de errores:POOL spare /dev/ad6
zpool scrub NOMBREPOOLPoner un disco off-line (solo permite hacerlo si el raid no se rompe):
zpool offline NOMBREPOOLPoner un disco on-line:
zpool online NOMBREPOOLReemplazar un disco de un zpool por otro:
zpoll replace NOMBREPOOL /dev/DISCOVIEJO /dev/DISCONUEVO
Histórico de modificaciones en el ZPool:
zpool history
Información sobre los ZPool:
zpool listComprobar el rendimiento del zpool en tiempo real:
zpool status
zpool iostatLos ZPool son automáticamente montados en el sistema de archivos. En dicho punto de montaje se puede escribir, pero no es recomendable ya que en teoría, no hay sistema de archivos creado sobre el ZPool.
ZFS MANAGEMENT
Crear (y montar) un sistema de archivos ZFS sobre un ZPool ya creado:
zfs createEliminar (previo desmontaje) de un sistema de archivos ZFS:/
zfs destroyVer estado de los ZFS:/
zfs listVer parámetros de un ZFS:
df
zfs getEstablecer el tamaño del sistema de archivos (mediante una cuota):/
zfs set quota=50G NOMBREZPOOL/NOMBREZFSActivar compresión (gzip por defecto) en el filesystem:
zfs set compression=onAlmacenar varias copias de cada archivo. Esto establece un nivel de redundancia a mayores sobre lo que ya ofrece el ZPoll. El espacio que ocupa el archivo se multiplica:/
zfs set copies=3Crear un snapshot de un ZFS:/
zfs snapshotSe pueden crear snapshot de ZPool completo:/ @
zfs snapshotVer una lista de snapshots:@
zfs list -t snapshotHacer visibles los snapshots:
zfs list -t snapshot -o name,creation
zfs set snapdir=visibleVer el contenido de un snapshot:/
lsDestruir/borrar un snapshot:/.zfs
zfs destroyRenombrar un ZFS o snapshot:/ @
zfs rename/ /
zfs rename/ @ / @
Volver a un snapshot anterior:
zfs rollbackEsto hace volver al sistema de ficheros al snapshot pedido. Este comando solo funciona para volver al último snapshot disponible. Si se desea volver a uno más antiguo, se debe usar el parámetro -r, que eliminará los posteriores./ @
Crear un nuevo ZFS a partir de un snapshot (clonados):
zfs clone(Los clones de ZFS completos no están soportados)/ @ /
Referencias interesantes:
Video muy sobre como se opera sobre ZFS para crear snapshots.
http://www.youtube.com/watch?v=sRe0wyx68Rs
Niveles RAID en ZFS.
http://www.zfsbuild.com/2010/05/26/zfs-raid-levels/
Explicación de lo que es el write-hole.
http://www.raid-recovery-guide.com/raid5-write-hole.aspx
Guia de administración de ZFS.
http://docs.huihoo.com/opensolaris/solaris-zfs-administration-guide/html/index.html