09 dic

Instalar OpenZFS en LINUX

20131209-084324.jpgParece ser que tenemos una versión estable de openZFS, así que como es un tema que me gusta bastante, pues os voy a explicar como instalarlo en Linux y comprobar su funcionamiento, si queréis saber cosas mas a fondo de ZFS, pues pasaros por los artículos anteriores:

  1. Tipos de caches en ZFS
  2. Comandos zpool
  3. Optimización de ZFS

Situación

  1. Esta disponible para los kernels Linux 2.6.26 – 3.11.
  2. No se recomienda instalarlo en sistemas de 32bits
  3. Mínimo 2GB de RAM, si queréis utilizar deduplicacion o compresión, bueno entonces pensar en poner una cuanta más.. os podéis hacer a la idea en los post que comento mas arriba.

Por qué sale OpenZFS?

  1. Oracle registró el nombre ZFS como marca comercial complicando su uso (MAL)
  2. Sale OpenZFS como proyecto “protesta” open source del proyecto ZFS de SUN, por los problemas con Oracle. (BIEN)
  3. Uno de los lideres es Matt Ahrens, co-fundador del proyecto ZFS (BIEN)
  4. La idea es unificar el desarrollo en FreeBSD, Linux, Mac OS X, and illumos (BIEN)
  5. 3 BIEN – 1 MAL así que vamos a explicarlo.

Nosotros lo vamos a montar en un Ubuntu server 13.10.

Creación

Primero de todo añadiremos los el ppa para bajarnos los paquetes:

sudo add-apt-repository ppa:zfs-native/stable

Deberemos instalar lo siguiente

apt-get install zfs-dkms parted mountall spl-dkms spl ubuntu-zfs zfsutils

Una vez finalice hacemos un reboot y listos ya tenemos zfs en linux (sin fuse)

Ahora que lo tenemos vamos a probar algunas de las cosas que dicen que hace…. :)

Creación de RAID Z

Añadir un par de discos y montamos, por ejemplo un Raid Z mirror

Disco /dev/sdb: 8589 MB, 8589934592 bytes
Disco /dev/sdc: 8589 MB, 8589934592 bytes

 

[email protected]:~# zpool create -f storage raidz /dev/sdb /dev/sdc
[email protected]:~# df -h

S.ficheros Tamaño Usados Disp Uso% Montado en
storage 7,9G 0 7,9G 0% /storage

Como bien sabemos así  de sencillo se crea un RAID, si queréis algo mas complejo, pues lo dicho a los post anteriores.

Forzar un error de disco

Ahora lo que vamos a probar es quitar un disco mientras escribimos en el otro…  hice un gif para que se vea que no se pierde escritura.
En el gif podéis ver 4 pantallas que os explico en la siguiente imagen.

teste mirror 1
Y en el gif, el casque

mirror1_fail

En el recuadro de abajo a la izquierda vemos como se esta lanzando un dd, vemos la tasa de escritura en el de la derecha, y arriba como quitamos el disco del pool lo añadimos y empezamos a ver como se resincroniza, para cubrirnos un poco ante un fallo de disco, podemos añadir otro en spare

Añadir disco en SPARE

zpool add -f storage spare /dev/sdd

diskspare

Fallo de disco, con un disco spare

Por defecto, el spare entra en funcionamiento automáticamente en el caso que tener un fallo de uno de los dos del mirror, pero como no puedo quitar el disco a lo burro, pues vamos hacer la emulación, a más que así también aprendemos como se hace manualmente, que ha veces lo automático deja de ser lo.

  • Ponemos uno de los discos del mirror en offline.
zpool offline storage sdc

fail online disk

Ahora de forma manual le vamos a decir que remplace el disco “roto” por el spare.

  • Remplazo del disco por el spare.
 zpool replace storage sdc sd

Y veremos
remplazo

Si nos fijamos en el disco sdd a pasado a estar dentro del pool y estado ONLINE, esto que quiere decir, pues que aun que tengamos el sdc OFFLINE, el sdd ya esta recibiendo peticiones y forma parte del RAID

Aquí se ve claramente

spareonlineEn este punto tenemos dos caminos o volvemos a poner el disco sdc ONLINE o lo eliminamos, de tal manera que el sdd pasara a formar parte de el pool en la misma situación que el sdc cuando funcionaba, pues probamos los dos casos!

  • Ponemos el sdc en ONLINE
zpool online storage sdc

Ahora lo que pasará es que tendremos el sdc y el sdd como discos spare asociados a ese pool, pero estando los 3 activos, si nos fijamos hemos pasado de tener un disco spare disponible a activo, cuando este esta activo queda asociado al pool en el cual empezó a trabajar, cuando nosotros hicimos el replace lo asociamos al pool de storage, entonces cuando ponemos el sdc ONLINE, lo que tendremos es lo siguiente.

todoonlineFijaros como el sdc paso a estar en uso, en la imagen anterior cuando lo añadimos estaba en disponible.

todoonline

Ahora hacemos escrituras veremos como los 3 están escribiendo.

todosescribiendoPERO! Cuantos utilizaremos si leemos?

Pues dos, los dos que están activos realmente, para atender a todas las peticiones.
lectura

  • Dejar todo como estaba

Vale, bueno ahora lo que nos interesa es volver a dejar un disco en spare, disponible para todos los pools que tengamos, el sdd como nuevo disco dentro del raidz, o sea todo tal y como estaba, la verdad es que no se si es la mejor forma, pero no encontré otra mejor… tendremos que  ponerlo offline y hacer el detach

zpool offline storage sdc
zpool detach storage sdc

Y todo volverá a la normalidad, pero teniendo el RAID montado con el sdb y el sdd en vez de con el sdb y el sdc, que este ahora será spare disponible para todos los pools

normalidad

Si llegados a este punto estamos convencidos de que vamos a utilziar zfs, pues lo que nos gustará hacer es que cuando arranque nos monte el pool. para eso deberemos hacer dos cosas:

Editar

vim /etc/default/zfs

ZFS_MOUNT='yes'

ZFS_UNMOUNT='yes'

Y os preguntareis que linea hay que meter en el fstab?, pues ninguna ya que el demonio zfs se encarga de montar el pool que tenemos configurado al arrancar, esto lo hace partiendo de la información del fichero zpool.cache (fichero importante) y se crea cuando creamos el pool o podemos recrearlo con el siguiente comando.

zpool set cachefile=/etc/zfs/zpool cache pool

Si en algún momento queremos montar o desmontar el pool nosotros mismos, es tan sencillo como hacer

zfs mount pool
zfs umont pool

5 thoughts on “Instalar OpenZFS en LINUX

  1. Pingback: Gestión de Snapshots con OpenZFS | Miguel Ángel Ausó

  2. Pingback: ZFS en Linux sin fuse

  3. Pingback: LXC integrado con ZFS | Miguel Ángel Ausó

  4. Hola .
    Tengo un disco lleno de datos en zfs, el cual leia con nas 4 free.
    Por problemas con el equipo necesito montar linux Ubuntu en otro disco que usare ext4.
    Para que este acceda al disco de datos zfs necesitaría únicamente instalar el openzfs como explicas ? o tendría que hacer algo adicional?
    Gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>