ZFS es un sistema de archivos desarrollado por Sun que ofrece mejoras sobre UFS como una capacidad de archivo casi ilimitada, snapshots instantáneos para copias de seguridad y clonación, y RAID integrado. ZFS simplifica la administración de almacenamiento mediante la agrupación de discos en pools y el uso de comandos unificados en lugar de herramientas LVM y de RAID separadas. Los snapshots y la capacidad de enviar y recibir datos permiten realizar copias de seguridad fáciles y migrar datos entre máquinas de man
Charla Madrid Devops Junio 2011: ZFS en Despliegues
1. ZFS en despliegues - Introducción
● Qué es ZFS (Zettabyte File System)
● Desarrollado por Sun (2004 – Solaris 10 6/06)
● Objetivos:
● Renovar UFS desde cero
● Resolver toda la complejidad de los FS
● Qué hay de nuevo, viejo?
● Capacidad de un fichero ~= 2^64 bits
● Copy-on-Write = no se necesita fsck!
● Pools, Volúmenes y DataSets
● RaidZ, RaidZ-2
● Snapshots y Clones
● Qué ventajas tiene para:
● Administradores
● Desarrolladores
● Managers
2. ZFS en despliegues - Introducción
● Características
● Administración mejorada y simplificada
● Independiente de Arquitectura y Sistema Operativo
● LVM + FS: ya no más Solstice DiskSuite! (o md)
● Copy-on-Write: Datos consistentes siempre en disco. No sobreescritura.
● RAID-Z (~RAID-5 con mejoras)
● Autoreparación de datos corruptos
● Mejoras en la escritura de datos sobre RAID-5
● DataSets = Vistas del pool
● Volúmenes = Soft partitions
● Optimizaciones en niveles de Cache
Pool = Círculo completo
(Representación del espacio en disco)
DataSet = Cada sección del círculo
Volumen = Sección separada del círculo
Los pools, volúmenes y datasets tienen propiedades que permiten
personalizar cada entidad.
4. ZFS en despliegues - Introducción
● Datasets
● “Vistas” (directorios) dentro del pool: file systems, snapshot, clones,
volúmenes
● Cada Dataset tiene propiedades (como las de mount) y herencia
● Tienen listas de control de acceso compatibles con NTFS (para servidores
de ficheros integrados en AD)
● Configuran los límites, compresión, cifrado y compartición del dataset
● Un dataset puede tener varios datasets, snapshots y clones asociados... y
mucho más:
“ZFS can store 16 Exabytes in each storage pool, file system, file, or file
attribute. ZFS can store billions of names: files or directories in a directory, file
systems in a file system, or snapshots of a file system. ZFS can store trillions
of items: files in a file system, file systems, volumes, or snapshots in a pool.”
http://hub.opensolaris.org/bin/view/Community+Group+zfs/faq
5. ZFS en despliegues - Introducción
● Snapshots / Clones
● Snapshot = Instantánea de sólo lectura
● Clone = Instantánea de lectura/escritura
● Un clone puede ser promocionado a dataset
● Muy útil para cualquier ocasión en la que se necesite duplicar información
● Backups
● Duplicados: desarrollo, testing, producción, virtualizaciones...
● Actualizaciones de software y sistema operativo
6. ZFS en despliegues - Despliegues
● Situaciones de despliegue interesantes:
● Aumento de capacidad / disponibilidad
● Migraciones entre máquinas
● Duplicaciones
7. ZFS en despliegues - Despliegues
● Situaciones de despliegue interesantes:
● Aumento de capacidad / disponibilidad
●Añadir un disco al pool (se convierte en pool stripping)
# zpool add mipool /dev/sdb
●Añadir un mirror a un pool de mirror (stripping de mirrors)
# zpool add mipool mirror /dev/sdb /dev/sdc
●Adjuntar un disco a un mirror
# zpool attach mipool /dev/sdb
●Crear un RaidZ de tres discos con disco de Hotspare
# zpool create mipool raidz sda sdb sdc spare sdd
9. ZFS en despliegues - Despliegues
● Situaciones de despliegue interesantes:
● Duplicaciones
●Crear un snapshot de algún dataset que tenga contenido:
● Aplicaciones
● Sistema operativo (ZFS Root)
● Máquinas Virtuales
# zfs snapshot mipool/midataset1@snap1
●Ahora clónalo:
● Duplica entornos: desarrollo, testing, producción (CI...)
● Duplica máquinas virtuales: openvz, kvm, virtualbox, jails
● *Solaris: Actualiza el sistema operativo en caliente con luupgrade
# zfs clone mipool/midataset1@snap1 mipool/midataset2
●Si te interesa que sea independiente del snapshot original, promociónalo
# zfs promote mipool/midataset2
10. ZFS en despliegues - Backups
● Backups en ZFS
● Snapshots
● Send & Receive
11. ZFS en despliegues - Backups
● Backups en ZFS
● Snapshots
● Permiten realizar copias de seguridad en caliente de cualquier dataset,
volumen o pool.
● Son accesibles a través de comandos de directorio como datasets
normales:
# cd /mipool/midataset/.snapshot/snap1
● Se pueden utilizar para volver el dataset a su estado anterior
# zfs rollback mipool/midataset@snap1
● Se pueden descartar cuando ya no se necesiten
# zfs destroy mipool/midataset@snap1
12. ZFS en despliegues - Backups
● Backups en ZFS
● Send & Receive
● Comandos que permiten enviar un dataset (y sus descendientes) a un
volumen y recuperarlo.
● Requieren de snapshots para funcionar
● Backup a un fichero
# zfs send mipool/midataset@snap1 >
/var/tmp/midataset.zfs
● Restaurar de un fichero a un dataset (requieren de un pool creado)
# zfs receive minuevopool <
/var/tmp/midataset.zfs
● Todo a la vez y por la red
# zfs send mipool/midataset@snap1 |
ssh root@remotehost zfs receive minuevopool
13. ZFS en despliegues
Y eso no es todo …
Pero lo dejaremos aquí por hoy ;-)
Muchas Gracias por vuestra atención
Jorge Moratilla Porras
jorge@moratilla.com
Http://www.moratilla.com
14. ZFS en despliegues
Referencias:
Todo el material ha sido obtenido de:
● OpenSolaris Community Group ZFS
http://hub.opensolaris.org/bin/view/Community+Group+zfs/
● Solaris Internals
http://www.solarisinternals.com//wiki/index.php?title=Category:ZFS
● ZFS on Linux
Http://zfsonlinux.org
● FreeBSD Handbook
http://www.freebsd.org/doc/en_US.ISO8859-
1/books/handbook/filesystems-zfs.html