Esta pagina se ve mejor con JavaScript habilitado

FreeBSD ZFS Vol5 RAIDZ ZFS

 ·  🎃 kr0m

Un RAID-Z puede proporcionarnos distintos tipos de redundancia según el nivel elegido, en este artículo montaremos un RAID-Z2 que utilizaremos como almacenamiento de datos, esto simplifica su configuración ya que no tendremos que preocuparnos por el bootloader del SO.

Antes de continuar con el artículo es aconsejable que revisemos  este anterior  para que todos los conceptos queden claros.

Debemos tener en cuenta que no es recomendable montar un RAID-Z1 porque cuando un disco averiado es sustituido se inicia el proceso de resilvering, en este momento los otros discos (que seguramente tendrán la misma antiguedad que el disco averiado) empiezan a ser estresados con una probabilidad aproximada del 8% de fallo, si se diese el caso de fallo se perderían los datos de forma irremediable, por lo tanto siempre hay que elegir un raid con una tolerancia de fallo de un disco o mas. Además un RAID-Z degradado penaliza el rendimiento ya que los datos del disco faltante son calculados desde la información de paridad del resto de discos.

También debemos tener claro que un RAID-Z no puede ser convertido a otro tipo de RAID, por eso es tan importante elegir bien su tipo desde el principio.

Consultamos los discos disponibles(se trata de una VM CBSD con virtio-blk disks):

root@Melocotonazo:~ # ls -al /dev/vtbd*

crw-r-----  1 root  operator  0x4f Nov 25 21:54 /dev/vtbd0  
crw-r-----  1 root  operator  0x51 Nov 25 21:54 /dev/vtbd1  
crw-r-----  1 root  operator  0x63 Nov 25 21:54 /dev/vtbd2  
crw-r-----  1 root  operator  0x64 Nov 25 21:54 /dev/vtbd3  
crw-r-----  1 root  operator  0x66 Nov 25 21:54 /dev/vtbd3p1  
crw-r-----  1 root  operator  0x67 Nov 25 21:54 /dev/vtbd3p2  
crw-r-----  1 root  operator  0x68 Nov 25 21:54 /dev/vtbd3p3  
crw-r-----  1 root  operator  0x69 Nov 25 21:54 /dev/vtbd3p4  
crw-r-----  1 root  operator  0x65 Nov 25 21:54 /dev/vtbd4

Comprobamos que el disco del sistema es vtbd3:

root@Melocotonazo:~ # zpool status

pool: zroot  
state: ONLINE  
 scan: none requested  
config:  
  
   NAME        STATE     READ WRITE CKSUM  
   zroot       ONLINE       0     0     0  
  vtbd3p4   ONLINE       0     0     0  
  
errors: No known data errors

Creamos una tabla de partciones GPT vacía en los discos del RAID:

root@Melocotonazo:~ # gpart create -s GPT vtbd0
root@Melocotonazo:~ # gpart create -s GPT vtbd1
root@Melocotonazo:~ # gpart create -s GPT vtbd2
root@Melocotonazo:~ # gpart create -s GPT vtbd4

Añadimos una partición al disco vtbd0:

root@Melocotonazo:~ # gpart add -t freebsd-zfs -a 4k vtbd0

Comprobamos que se haya creado correctamente:

root@Melocotonazo:~ # gpart show vtbd0

=>     40  2097328  vtbd0  GPT  (1.0G)  
       40  2097328      1  freebsd-zfs  (1.0G)

Copiamos el esquema de particiones de vtbd0 al resto de discos del RAID:

root@Melocotonazo:~ # gpart backup vtbd0 | gpart restore -F vtbd1
root@Melocotonazo:~ # gpart backup vtbd0 | gpart restore -F vtbd2
root@Melocotonazo:~ # gpart backup vtbd0 | gpart restore -F vtbd4

Creamos el RAID-Z2:

root@Melocotonazo:~ # zpool create mypool raidz2 /dev/vtbd0p1 /dev/vtbd1p1 /dev/vtbd2p1 /dev/vtbd4p1

Comprobamos su estado:

root@Melocotonazo:~ # zpool status mypool

pool: mypool  
state: ONLINE  
 scan: none requested  
config:  
  
   NAME         STATE     READ WRITE CKSUM  
   mypool       ONLINE       0     0     0  
  raidz2-0   ONLINE       0     0     0  
    vtbd0p1  ONLINE       0     0     0  
    vtbd1p1  ONLINE       0     0     0  
    vtbd2p1  ONLINE       0     0     0  
    vtbd4p1  ONLINE       0     0     0  
  
errors: No known data errors

Eliminamos un disco y comprobamos el estado del pool:

root@Melocotonazo:~ # zpool status mypool

  pool: mypool  
 state: DEGRADED  
status: One or more devices could not be used because the label is missing or  
 invalid.  Sufficient replicas exist for the pool to continue  
 functioning in a degraded state.  
action: Replace the device using 'zpool replace'.  
   see: http://illumos.org/msg/ZFS-8000-4J  
  scan: none requested  
config:  
  
 NAME                     STATE     READ WRITE CKSUM  
 mypool                   DEGRADED     0     0     0  
   raidz2-0               DEGRADED     0     0     0  
     vtbd0p1              ONLINE       0     0     0  
     9621144259020512038  FAULTED      0     0     0  was /dev/vtbd1p1  
     vtbd1p1              ONLINE       0     0     0  
     vtbd3p1              ONLINE       0     0     0  
  
errors: No known data errors

Añadimos un disco de sustitución, es fácilmente reconocible ya que no tiene particiones:

root@Melocotonazo:~ # ls -al /dev/vtbd*

crw-r-----  1 root  operator  0x60 Nov 25 22:05 /dev/vtbd0  
crw-r-----  1 root  operator  0x65 Nov 25 22:05 /dev/vtbd0p1  
crw-r-----  1 root  operator  0x61 Nov 25 22:05 /dev/vtbd1  
crw-r-----  1 root  operator  0x62 Nov 25 22:05 /dev/vtbd2  
crw-r-----  1 root  operator  0x66 Nov 25 22:05 /dev/vtbd2p1  
crw-r-----  1 root  operator  0x63 Nov 25 22:05 /dev/vtbd3  
crw-r-----  1 root  operator  0x67 Nov 25 22:05 /dev/vtbd3p1  
crw-r-----  1 root  operator  0x68 Nov 25 22:05 /dev/vtbd3p2  
crw-r-----  1 root  operator  0x69 Nov 25 22:05 /dev/vtbd3p3  
crw-r-----  1 root  operator  0x6a Nov 25 22:05 /dev/vtbd3p4  
crw-r-----  1 root  operator  0x64 Nov 25 22:05 /dev/vtbd4  
crw-r-----  1 root  operator  0x6b Nov 25 22:05 /dev/vtbd4p1

Preparamos el disco creando una tabla de particiones GPT vacía y copiando el esquema de particiones de vtbd0 al disco nuevo:

root@Melocotonazo:~ # gpart create -s GPT vtbd1
root@Melocotonazo:~ # gpart backup vtbd0 | gpart restore -F vtbd1

Sustituimos el disco averiado:

root@Melocotonazo:~ # zpool replace mypool 9621144259020512038 vtbd1p1

Comprobamos el estado del pool:

root@Melocotonazo:~ # zpool status mypool

  pool: mypool  
 state: ONLINE  
 scan: resilvered 268K in 0 days 00:00:00 with 0 errors on Wed Nov 25 22:08:18 2020  
config:  
  
 NAME         STATE     READ WRITE CKSUM  
 mypool       ONLINE       0     0     0  
   raidz2-0   ONLINE       0     0     0  
     vtbd0p1  ONLINE       0     0     0  
     vtbd1p1  ONLINE       0     0     0  
     vtbd2p1  ONLINE       0     0     0  
     vtbd4p1  ONLINE       0     0     0  
  
errors: No known data errors
Si te ha gustado el artículo puedes invitarme a un RedBull aquí