FreeBSD ZFS Vol5: RAIDZ ZFS


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í.
Si tienes cualquier pregunta siempre puedes enviarme un Email o escribir en el grupo de Telegram de AlfaExploit.
Autor: kr0m -- 28/11/2020 03:27:19 -- Categoria: Fsys FreeBSD ZFS