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
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.
ZFS en despliegues - Introducción Administración Simplificada Rosetta Stone de comandos Unix (http://bhami.com/rosetta.html) Vs. comandos administración ZFS Acción UFS/Ext3 ZFS RAID Metainit, mdadm, lvm, vxvm,... Zpool create destroy New FS newfs Zfs create destroy Mounting mount,umount,mountall,umountall Zfs mount umount Sharing /etc/exports, /etc/dfs/dfstab, share,iscsitadm,iscadm,smbd,nfsd,... Zfs sharenfs sharesmb shareiscsi Backup Dump, restore, ufsdump, ufsrestore, fssnap Zfs snapshot clone send receive
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
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
ZFS en despliegues - Despliegues Situaciones de despliegue interesantes: Aumento de capacidad / disponibilidad Migraciones entre máquinas Duplicaciones
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
ZFS en despliegues - Despliegues Situaciones de despliegue interesantes: Migraciones entre máquinas Independientemente arquitectura (x86_32, x86_64, sparc) Independientemente Sistema Operativo (Solaris, OpenSolaris, FreeBSD, Linux) Exportación # zpool export mipool Buscar posibles importaciones # zpool import -D Importar # zpool import mipool
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
ZFS en despliegues - Backups Backups en ZFS Snapshots Send & Receive
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
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
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
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