Montar el SO sobre un RAID-Z nos propocionará redundancia en caso de fallo de uno o varios discos dependiendo del Raid-Z que elijamos, en este artículo se verá como instalar el SO utilizando RAID-Z2 y como realizar una sustitución de un disco duro averiado.
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.
Si solo se va a albergar el SO y el espacio no supone un problema recomiendo utilizar mirroring de 3 discos, ya que un mirror degradado no afecta al rendimiento del RAID.
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.
En el asistente de instalación tendremos que indicar en Pool Type/Disks RAID-Z2:
Seleccionamos los discos a utilizar:
Quedando del siguiente modo:
Una vez instalado el SO consultamos el estado del pool:
pool: zroot
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
vtbd0p4 ONLINE 0 0 0
vtbd1p4 ONLINE 0 0 0
vtbd2p4 ONLINE 0 0 0
vtbd3p4 ONLINE 0 0 0
errors: No known data errors
Eliminamos un disco y comprobamos de nuevo el estado del pool:
pool: zroot
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
zroot DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
vtbd0p4 ONLINE 0 0 0
1398730568925353312 FAULTED 0 0 0 was /dev/vtbd1p4
vtbd1p4 ONLINE 0 0 0
vtbd2p4 ONLINE 0 0 0
errors: No known data errors
Añadimos un disco para sustituir el averiado, es fácilmente reconocible ya que es el único que no tiene particiones:
crw-r----- 1 root operator 0x60 Nov 24 22:21 /dev/vtbd0
crw-r----- 1 root operator 0x64 Nov 24 22:21 /dev/vtbd0p1
crw-r----- 1 root operator 0x65 Nov 24 22:21 /dev/vtbd0p2
crw-r----- 1 root operator 0x66 Nov 24 23:21 /dev/vtbd0p3
crw-r----- 1 root operator 0x67 Nov 24 22:21 /dev/vtbd0p4
crw-r----- 1 root operator 0x61 Nov 24 22:21 /dev/vtbd1
crw-r----- 1 root operator 0x68 Nov 24 22:21 /dev/vtbd1p1
crw-r----- 1 root operator 0x69 Nov 24 22:21 /dev/vtbd1p2
crw-r----- 1 root operator 0x6a Nov 24 22:21 /dev/vtbd1p3
crw-r----- 1 root operator 0x6b Nov 24 22:21 /dev/vtbd1p4
crw-r----- 1 root operator 0x62 Nov 24 22:21 /dev/vtbd2
crw-r----- 1 root operator 0x6c Nov 24 22:21 /dev/vtbd2p1
crw-r----- 1 root operator 0x6d Nov 24 22:21 /dev/vtbd2p2
crw-r----- 1 root operator 0x6e Nov 24 22:21 /dev/vtbd2p3
crw-r----- 1 root operator 0x6f Nov 24 22:21 /dev/vtbd2p4
crw-r----- 1 root operator 0x63 Nov 24 22:21 /dev/vtbd3
Replicamos el esquema de particiones en el disco nuevo, este debe de ser del mismo tamaño o mayor que el resto:
Comprobamos que los dos discos tengan el mismo esquema:
=> 40 20971696 vtbd0 GPT (10G)
40 409600 1 efi (200M)
409640 1024 2 freebsd-boot (512K)
410664 984 - free - (492K)
411648 4194304 3 freebsd-swap (2.0G)
4605952 16365568 4 freebsd-zfs (7.8G)
20971520 216 - free - (108K)
Comprobamos que se hayan creado correctamente:
=> 40 20971696 vtbd3 GPT (10G)
40 409600 1 efi (200M)
409640 1024 2 freebsd-boot (512K)
410664 984 - free - (492K)
411648 4194304 3 freebsd-swap (2.0G)
4605952 16365568 4 freebsd-zfs (7.8G)
20971520 216 - free - (108K)
Al tratarse de un disco utilizado en el boot del SO debemos copiar el bootstrap code a la partición de EFI/BIOS vtbd3, de este modo no habrá problemas independientemente del disco del que arranque, recordemos el esquema de particiones del que disponemos:
=> 40 20971696 vtbd3 GPT (10G)
40 409600 1 efi (200M)
409640 1024 2 freebsd-boot (512K)
Se puede apreciar que existen tanto la partición EFI como la de arranque tradicional utilizada por la BIOS, esto es debido a que cuando se instaló el SO se eligió GPT(BIOS+UEFI), este es el modo mas compatible ya que el disco puede ser arrancado por ambos sistemas. Según el tipo de arranque que estemos utilizando instalaremos el bootloader de un modo u otro.
UEFI:
BIOS: Este sistema además de copiar los datos a la partición también escribe el MBR del disco indicado.
Ahora que tenemos el disco preparado ya podemos reemplazar el averiado:
Podemos ver que está realizando el resilver del disco:
pool: zroot
state: DEGRADED
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Tue Nov 24 22:25:43 2020
1.76G scanned at 258M/s, 979M issued at 140M/s, 1.76G total
222M resilvered, 54.19% done, 0 days 00:00:05 to go
config:
NAME STATE READ WRITE CKSUM
zroot DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
vtbd0p4 ONLINE 0 0 0
replacing-1 UNAVAIL 0 0 0
1398730568925353312 FAULTED 0 0 0 was /dev/vtbd1p4
vtbd3p4 ONLINE 0 0 0
vtbd1p4 ONLINE 0 0 0
vtbd2p4 ONLINE 0 0 0
errors: No known data errors
Cuando termine el status aparecerá como ONLINE y todos podremos volver a dormir tranquilos:
pool: zroot
state: ONLINE
scan: resilvered 432M in 0 days 00:00:14 with 0 errors on Tue Nov 24 22:25:57 2020
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
vtbd0p4 ONLINE 0 0 0
vtbd3p4 ONLINE 0 0 0
vtbd1p4 ONLINE 0 0 0
vtbd2p4 ONLINE 0 0 0
errors: No known data errors