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):
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:
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 vtbd1
root@Melocotonazo:~ # gpart create -s GPT vtbd2
root@Melocotonazo:~ # gpart create -s GPT vtbd4
Añadimos una partición al disco vtbd0:
Comprobamos que se haya creado correctamente:
=> 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 vtbd2
root@Melocotonazo:~ # gpart backup vtbd0 | gpart restore -F vtbd4
Creamos el RAID-Z2:
Comprobamos su estado:
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:
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:
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 backup vtbd0 | gpart restore -F vtbd1
Sustituimos el disco averiado:
Comprobamos el estado del pool:
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