zfs en 12 pasos

8
DEC 11 Almacenamiento, Solaris , zfs Dejar un comentario ZFS : Aprendiendo ZFS en 12 pasos Este post no pretende ser un manual de ZFS, solo una sencilla guía rápida que permita a los neófitos en la materia, disponer de un punto de inicio que les sirva de trampolín, para poder profundizar en ZFS. Por esta razón, el post solo cuenta con 12 sencillos pasos, los cuales describen a grandes rasgos las operaciones básica que alguien que empieza debe aprender. ZFS dispone de 2 comandos zpool y zfs. Paso 1:Crear un pool La primera operación cuando se comienza con ZFS es la creación de un pool de discos. root # zpool create -f pool_prueba c2t500A098286584110d1 c2t500A098286584110d2 Se crea un pool llamado pool_prueba utilizando los discos c2t500A098286584110d1 y c2t500A098286584110d2. Con el zpool list podemos ver la lista de pooles que están configurados en nuestro sistema. root # zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT pool_prueba 19.9G 90K 19.9G 0% ONLINE - root # root # df -h | grep pool pool_prueba 20G 24K 20G 1% /pool_prueba root # Paso 2:Crear FS ZFS Una vez creado el pool de disco, podemos crear los sistemas de ficheros, para ello utilizaremos el comando zfs. root # zfs create pool_prueba/fs1 root # zfs create pool_prueba/fs2 Se han creado los FS en el pool pool_prueba llamados fs1 y fs2. root # df -k | grep pool pool_prueba 20514816 27 20514668 1% /pool_prueba pool_prueba/fs1 20514816 24 20514668 1% /pool_prueba/fs1 pool_prueba/fs2 20514816 24 20514668 1% /pool_prueba/fs2 root # root # zfs list NAME USED AVAIL REFER MOUNTPOINT pool_prueba 148K 19.6G 27.5K /pool_prueba pool_prueba/fs1 24.5K 19.6G 24.5K /pool_prueba/fs1 "I think the major good idea in Unix was its clean and simple interface: open, close, read, and write." Ken Thompson [email protected] JJMora.es » Blog Archive » ZFS : Aprendiendo ZFS en 12 pasos http://jjmora.es/zfs_aprendiendo_zfs_en_12_pasos/ 1 de 8 29/03/2012 04:09 PM

Upload: ruben-valdez-alonso-rvaldeza

Post on 20-Apr-2015

18 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: ZFs en 12 Pasos

DEC 11

Almacenamiento, Solaris, zfs Dejar un comentario

ZFS : Aprendiendo ZFS en 12 pasos

Este post no pretende ser un manual de ZFS, solo una sencilla guía rápida que permita a los neófitos en la materia, disponer de un punto

de inicio que les sirva de trampolín, para poder profundizar en ZFS. Por esta razón, el post solo cuenta con 12 sencillos pasos, los cuales

describen a grandes rasgos las operaciones básica que alguien que empieza debe aprender.

ZFS dispone de 2 comandos zpool y zfs.

Paso 1:Crear un pool

La primera operación cuando se comienza con ZFS es la creación de un pool de discos.

root # zpool create -f pool_prueba c2t500A098286584110d1 c2t500A098286584110d2

Se crea un pool llamado pool_prueba utilizando los discos c2t500A098286584110d1 y c2t500A098286584110d2.

Con el zpool list podemos ver la lista de pooles que están configurados en nuestro sistema.

root # zpool list

NAME SIZE USED AVAIL CAP HEALTH ALTROOT

pool_prueba 19.9G 90K 19.9G 0% ONLINE -

root #

root # df -h | grep pool

pool_prueba 20G 24K 20G 1% /pool_prueba

root #

Paso 2:Crear FS ZFS

Una vez creado el pool de disco, podemos crear los sistemas de ficheros, para ello utilizaremos el comando zfs.

root # zfs create pool_prueba/fs1

root # zfs create pool_prueba/fs2

Se han creado los FS en el pool pool_prueba llamados fs1 y fs2.

root # df -k | grep pool

pool_prueba 20514816 27 20514668 1% /pool_prueba

pool_prueba/fs1 20514816 24 20514668 1% /pool_prueba/fs1

pool_prueba/fs2 20514816 24 20514668 1% /pool_prueba/fs2

root #

root # zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool_prueba 148K 19.6G 27.5K /pool_prueba

pool_prueba/fs1 24.5K 19.6G 24.5K /pool_prueba/fs1

"I think the major good idea in Unix was its clean

and simple interface: open, close, read, and write."

Ken Thompson

[email protected]

JJMora.es » Blog Archive » ZFS : Aprendiendo ZFS en 12 pasos http://jjmora.es/zfs_aprendiendo_zfs_en_12_pasos/

1 de 8 29/03/2012 04:09 PM

Page 2: ZFs en 12 Pasos

pool_prueba/fs2 24.5K 19.6G 24.5K /pool_prueba/fs2

root #

Como podemos ver con el comando df y con zfs list, los nuevos FS se han creado y montado por defecto sobre el directorio /pool_prueba

Paso 3:Cambio del punto de montaje

Podemos cambiar los puntos de montaje de los nuevos sistemas de ficheros creados en el paso anterior, con el comando zfs set

root # zfs set mountpoint=/fs1 pool_prueba/fs1

root #

root # zfs set mountpoint=/fs2 pool_prueba/fs2

root #

Se cambia el punto de montaje del FS pool_prueba/fs1 para que sea el directorio /fs1, lo mismo hacemos con el FS pool_prueba/fs2

root # df -k | grep pool

pool_prueba 30772224 24 30771987 1% /pool_prueba

pool_prueba/fs2 30772224 24 30771987 1% /fs2

pool_prueba/fs1 30772224 28 30771987 1% /fs1

Paso 4:Añadir discos al pool

Esta operación nos pemite añadir nuevos disco a nuestro pool. Utilizaremos el comando zpool add.

root # zpool add -f pool_prueba c2t500A098286584110d3

root # zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool_prueba 97.9M 29.3G 24.5K /pool_prueba

pool_prueba/fs1 97.8M 29.3G 97.8M /fs1

pool_prueba/fs2 24.5K 29.3G 24.5K /fs2

root #

Paso 5:Atributos de un FS

Podemos ver los atributos definidos en un FS determinado, empleando el comando zfs get

root # zfs get all pool_prueba/fs1

NAME PROPERTY VALUE SOURCE

pool_prueba/fs1 type filesystem -

pool_prueba/fs1 creation Wed Dec 10 18:38 2008 -

pool_prueba/fs1 used 51K -

pool_prueba/fs1 available 29.3G -

pool_prueba/fs1 referenced 28.5K -

pool_prueba/fs1 compressratio 1.00x -

pool_prueba/fs1 mounted yes -

pool_prueba/fs1 quota none default

pool_prueba/fs1 reservation none default

pool_prueba/fs1 recordsize 128K default

pool_prueba/fs1 mountpoint /fs1 local

pool_prueba/fs1 sharenfs off default

pool_prueba/fs1 checksum on default

pool_prueba/fs1 compression off default

pool_prueba/fs1 atime on default

pool_prueba/fs1 devices on default

pool_prueba/fs1 exec on default

pool_prueba/fs1 setuid on default

pool_prueba/fs1 readonly off default

pool_prueba/fs1 zoned off default

pool_prueba/fs1 snapdir hidden default

JJMora.es » Blog Archive » ZFS : Aprendiendo ZFS en 12 pasos http://jjmora.es/zfs_aprendiendo_zfs_en_12_pasos/

2 de 8 29/03/2012 04:09 PM

Page 3: ZFs en 12 Pasos

pool_prueba/fs1 aclmode groupmask default

pool_prueba/fs1 aclinherit secure default

pool_prueba/fs1 canmount on default

pool_prueba/fs1 shareiscsi off default

pool_prueba/fs1 xattr on default

root #

Paso 6:Estado del pool

Para chequear el estado de un pool, debemos utilizar el comando zpool status.

root # zpool status

pool: pool_prueba

state: ONLINE

scrub: none requested

config:

NAME STATE READ WRITE CKSUM

pool_prueba ONLINE 0 0 0

c2t500A098286584110d1 ONLINE 0 0 0

c2t500A098196584110d2 ONLINE 0 0 0

c2t500A098286584110d3 ONLINE 0 0 0

errors: No known data errors

root #

Paso 7: Crear Snapshots

Un snapshot es una imagen de un FS en un momento determinado, esta imagen de solamente de lectura y nos permite disponer de los

datos de un FS en un momento concreto.

rroot # zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool_prueba 200K 29.3G 24.5K /pool_prueba

pool_prueba/fs1 28.5K 29.3G 28.5K /fs1

pool_prueba/fs2 24.5K 29.3G 24.5K /fs2

root #

Para crear un snapshot debemos emplear el comando zfs snapshot y facilitar el nombre del FS del que queremos hacer el snapshot

seguido por una @ y el nombre del snapshot que queremos crear. Para nuestro ejemplo se ha creado el snapshot pool_prueba/fs1@snap1

root # zfs snapshot pool_prueba/fs1@snap1

root #

root # cd /fs1

root # ls -lisa

total 17

3 3 drwxr-xr-x 2 root sys 8 Dec 10 18:39 .

3 2 drwxr-xr-x 31 root root 1024 Dec 10 18:42 ..

4 2 -rw-r--r-- 1 root root 8 Dec 10 18:37 prueba1

5 2 -rw-r--r-- 1 root root 16 Dec 10 18:37 prueba2

6 2 -rw-r--r-- 1 root root 24 Dec 10 18:37 prueba3

7 2 -rw-r--r-- 1 root root 32 Dec 10 18:39 prueba4

8 2 -rw-r--r-- 1 root root 40 Dec 10 18:39 prueba5

9 2 -rw-r--r-- 1 root root 48 Dec 10 18:39 prueba6

root #

En el FS, se ha creado un directorio oculto .zfs, el cual contiene un subdirectorio por cada snapshot que se cree en el FS.

root # cd .zfs

root # ls

JJMora.es » Blog Archive » ZFS : Aprendiendo ZFS en 12 pasos http://jjmora.es/zfs_aprendiendo_zfs_en_12_pasos/

3 de 8 29/03/2012 04:09 PM

Page 4: ZFs en 12 Pasos

snapshot

root # ls snapshot/

snap1

root # ls

snapshot

root # cd snapshot/snap1/

root # ls

prueba1 prueba2 prueba3 prueba4 prueba5 prueba6

root # ls -lrt

total 12

-rw-r--r-- 1 root root 8 Dec 10 18:37 prueba1

-rw-r--r-- 1 root root 16 Dec 10 18:37 prueba2

-rw-r--r-- 1 root root 24 Dec 10 18:37 prueba3

-rw-r--r-- 1 root root 32 Dec 10 18:39 prueba4

-rw-r--r-- 1 root root 40 Dec 10 18:39 prueba5

-rw-r--r-- 1 root root 48 Dec 10 18:39 prueba6

root # ls > prueba10

bash: prueba10: Read-only file system

Podemos comprobar que el snapshot es un FS de solo lectura.

root # pwd

/fs1/.zfs/snapshot/snap1

root # cd /

root # ls -l /fs1/.zfs/snapshot/snap1

total 12

-rw-r--r-- 1 root root 8 Dec 10 18:37 prueba1

-rw-r--r-- 1 root root 16 Dec 10 18:37 prueba2

-rw-r--r-- 1 root root 24 Dec 10 18:37 prueba3

-rw-r--r-- 1 root root 32 Dec 10 18:39 prueba4

-rw-r--r-- 1 root root 40 Dec 10 18:39 prueba5

-rw-r--r-- 1 root root 48 Dec 10 18:39 prueba6

root # cd /fs1

root # ls

prueba1 prueba2 prueba3 prueba4 prueba5 prueba6

root # ls > prueba10

root # ls > prueba11

root # ls > prueba12

Hemos modifcado el FS pool_prueba/fs1 y vamos a crear un nuevo snapshot

root # pwd

/fs1

root # cd ..

root # zfs snapshot pool_prueba/fs1@snap2

root # zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool_prueba 240K 29.3G 24.5K /pool_prueba

pool_prueba/fs1 54.5K 29.3G 31K /fs1

pool_prueba/fs1@snap1 23.5K - 28.5K -

pool_prueba/fs1@snap2 0 - 31K -

pool_prueba/fs2 24.5K 29.3G 24.5K /fs2

root #

root # ls -l /fs1/.zfs/snapshot/snap*

/fs1/.zfs/snapshot/snap1:

total 12

-rw-r--r-- 1 root root 8 Dec 10 18:37 prueba1

-rw-r--r-- 1 root root 16 Dec 10 18:37 prueba2

-rw-r--r-- 1 root root 24 Dec 10 18:37 prueba3

-rw-r--r-- 1 root root 32 Dec 10 18:39 prueba4

-rw-r--r-- 1 root root 40 Dec 10 18:39 prueba5

-rw-r--r-- 1 root root 48 Dec 10 18:39 prueba6

/fs1/.zfs/snapshot/snap2:

total 18

JJMora.es » Blog Archive » ZFS : Aprendiendo ZFS en 12 pasos http://jjmora.es/zfs_aprendiendo_zfs_en_12_pasos/

4 de 8 29/03/2012 04:09 PM

Page 5: ZFs en 12 Pasos

-rw-r--r-- 1 root root 8 Dec 10 18:37 prueba1

-rw-r--r-- 1 root root 57 Dec 10 18:48 prueba10

-rw-r--r-- 1 root root 66 Dec 10 18:48 prueba11

-rw-r--r-- 1 root root 75 Dec 10 18:48 prueba12

-rw-r--r-- 1 root root 16 Dec 10 18:37 prueba2

-rw-r--r-- 1 root root 24 Dec 10 18:37 prueba3

-rw-r--r-- 1 root root 32 Dec 10 18:39 prueba4

-rw-r--r-- 1 root root 40 Dec 10 18:39 prueba5

-rw-r--r-- 1 root root 48 Dec 10 18:39 prueba6

root #

Podemos ver como se ha creado un nuevo subdirectorio /fs1/.zfs/snapshot/snap2 con la imagen actual del FS pool_prueba/fs1.

Paso 8:Restaurar un Snapshot.

Hemos visto como podemos acceder al contenido de los distintos snapshot de un FS determinado. Existe una operación para restauran un

snapshot determinado sobre su FS original.

root # ls

prueba1 prueba10 prueba11 prueba12 prueba2 prueba3 prueba4 prueba5 prueba6

root # rm prueba*

Borramos todos los ficheros del FS pool_prueba/fs1

root #

root # zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool_prueba 273K 29.3G 24.5K /pool_prueba

pool_prueba/fs1 77K 29.3G 24.5K /fs1

pool_prueba/fs1@snap1 23.5K - 28.5K -

pool_prueba/fs1@snap2 26K - 31K -

pool_prueba/fs2 24.5K 29.3G 24.5K /fs2

root #

Con el comando zfs rollback vamos a restaurar el snapshot pool_prueba/fs1@snap1 sobre el FS pool_prueba/fs1

root # zfs rollback pool_prueba/fs1@snap1

cannot rollback to 'pool_prueba/fs1@snap1': more recent snapshots exist

use '-r' to force deletion of the following snapshots:

pool_prueba/fs1@snap2

root #

root # zfs rollback -r pool_prueba/fs1@snap1

root # ls /fs1

prueba1 prueba2 prueba3 prueba4 prueba5 prueba6

root #

root # zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool_prueba 237K 29.3G 24.5K /pool_prueba

pool_prueba/fs1 51K 29.3G 28.5K /fs1

pool_prueba/fs1@snap1 22.5K - 28.5K -

pool_prueba/fs2 24.5K 29.3G 24.5K /fs2

root #

De la salida del comando zfs list podemos ver que ha desaparecido el snapshot pool_prueba/fs1@snap2, esto se debe a que hemos

restaurado la imagen de pool_prueba/fs1@snap1, en esta imagen no existía el snapshot snap2, por lo tanto la restauración lo ha

eliminado. Debemos tener cuidado con las restauraciones de los snapshots, sobre todo cuando existen varios snapshots.

Paso 9:Crear un clone

Un clone es una imagen de un FS en un momento determinado, pero que puede ser modificada, al contrario de lo que ocurre con los

JJMora.es » Blog Archive » ZFS : Aprendiendo ZFS en 12 pasos http://jjmora.es/zfs_aprendiendo_zfs_en_12_pasos/

5 de 8 29/03/2012 04:09 PM

Page 6: ZFs en 12 Pasos

snapshots que son únicamente de lectura.

root # zfs clone pool_prueba/fs1@snap1 pool_prueba/fs3

Se crea un clone llamado pool_prueba/fs3 a partir del snapshot pool_prueba/fs1@snap1

root # zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool_prueba 204K 29.3G 26.5K /pool_prueba

pool_prueba/fs1 27K 29.3G 27K /fs1

pool_prueba/fs1@snap1 0 - 27K -

pool_prueba/fs2 24.5K 29.3G 24.5K /fs2

pool_prueba/fs3 0 29.3G 27K /pool_prueba/fs3

Cambiamos el punto de montaje del nuevo clone.

root # zfs set mountpoint=/fs3 pool_prueba/fs3

root # zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool_prueba 208K 29.3G 24.5K /pool_prueba

pool_prueba/fs1 27K 29.3G 27K /fs1

pool_prueba/fs1@snap1 0 - 27K -

pool_prueba/fs2 24.5K 29.3G 24.5K /fs2

pool_prueba/fs3 0 29.3G 27K /fs3

root # ls /fs3

prueba1 prueba2 prueba3

root #

Con el comando zfs destroy podemos eliminar los clones, los snapshots y los FS.

root # zfs destroy pool_prueba/fs1@snap1

cannot destroy 'pool_prueba/fs1@snap1': snapshot has dependent clones

use '-R' to destroy the following datasets:

pool_prueba/fs3

root #

Al intentar elminar el snapshot pool_prueba/fs1@snap1 obtenemos un error comunicando que existe un clone que depende del snapshot

que queremos destruir.

Paso 10: Promote un clone

Podemos crea un FS a partir de un clone con el comando zfs promote.

root # zfs promote pool_prueba/fs3

root #

root # zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool_prueba 242K 29.3G 24.5K /pool_prueba

pool_prueba/fs1 0 29.3G 27K /fs1

pool_prueba/fs2 24.5K 29.3G 24.5K /fs2

pool_prueba/fs3 52K 29.3G 28.5K /fs3

pool_prueba/fs3@snap1 23.5K - 27K -

root # df -k | grep pool

pool_prueba 30772224 24 30771982 1% /pool_prueba

pool_prueba/fs1 30772224 27 30771982 1% /fs1

pool_prueba/fs2 30772224 24 30771982 1% /fs2

pool_prueba/fs3 30772224 28 30771982 1% /fs3

JJMora.es » Blog Archive » ZFS : Aprendiendo ZFS en 12 pasos http://jjmora.es/zfs_aprendiendo_zfs_en_12_pasos/

6 de 8 29/03/2012 04:09 PM

Page 7: ZFs en 12 Pasos

root # ls /fs3

prueba1 prueba2 prueba3 prueba4 prueba5 prueba6

root #

root # zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool_prueba 242K 29.3G 24.5K /pool_prueba

pool_prueba/fs1 0 29.3G 27K /fs1

pool_prueba/fs2 24.5K 29.3G 24.5K /fs2

pool_prueba/fs3 52K 29.3G 28.5K /fs3

pool_prueba/fs3@snap1 23.5K - 27K -

root #

Paso 11: Eliminar un FS

Ya hemos visto un ejemplo de como podemos destruir un snapshot utilizando el comando zfs destroy.

root # zfs destroy pool_prueba/fs3@snap1

cannot destroy 'pool_prueba/fs3@snap1': snapshot has dependent clones

use '-R' to destroy the following datasets:

pool_prueba/fs1

root #

root # zfs destroy pool_prueba/fs1

root # zfs destroy pool_prueba/fs3@snap1

root # zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool_prueba 198K 29.3G 24.5K /pool_prueba

pool_prueba/fs2 24.5K 29.3G 24.5K /fs2

pool_prueba/fs3 28.5K 29.3G 28.5K /fs3

Paso 12: Renombrar un FS

Otra operación útil, sobre todo cuando estamos restaurando snapshots y clones, es el poder renombrar los FS.

root #

root # zfs rename pool_prueba/fs3 pool_prueba/fs1

root #

root # zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool_prueba 198K 29.3G 24.5K /pool_prueba

pool_prueba/fs1 28.5K 29.3G 28.5K /fs3

pool_prueba/fs2 24.5K 29.3G 24.5K /fs2

root #

root # zfs set mountpoint=/fs1 pool_prueba/fs1

root # ls /fs3

root # ls /fs1

prueba1 prueba2 prueba3 prueba4 prueba5 prueba6

Conclusión

Estos han sido 12 sencillos pasos con los que cualquiera se puede iniciar en ZFS, para profundizar más yo recomiendo:

La guía del estudiante CE.

Solaris ZFS Administration Guide

markos Dijo:24 September 2009 a las 4:22 pm

Simplificado pero muy efectivo, muchas gracias por el aporte

1.

JJMora.es » Blog Archive » ZFS : Aprendiendo ZFS en 12 pasos http://jjmora.es/zfs_aprendiendo_zfs_en_12_pasos/

7 de 8 29/03/2012 04:09 PM

Page 8: ZFs en 12 Pasos

My name is null, /dev/null

Algunos derechos reservados. Licencia Creative Commons

BMC Service Desk

Footprints - 100% Web ITIL v3 - Certificado - Españoldric.com.mx

JJMora.es » Blog Archive » ZFS : Aprendiendo ZFS en 12 pasos http://jjmora.es/zfs_aprendiendo_zfs_en_12_pasos/

8 de 8 29/03/2012 04:09 PM