Cambiar un disco de RAID 1 en Linux (Ubuntu)
En este caso he simulado que deja de funcionar un disco duro. El sistema es Ubuntu con mdadm para gestionar el RAID 1, el cual consta de dos discos duros de 20GB conectados por USB en cajas externas (es un entorno de pruebas). Para generar el error he apagado la caja externa de uno de los dos.
El RAID 1 está degradado (no funciona un disco)
El sistema puede funcionar normalmente si falla un disco. Se pueden escribir datos, leer datos y hacer cualquier tipo de operación como si no hubiese pasado nada (ésta es la ventaja principal del RAID 1).
Aquí está la salida de mdadm viendo los detalles del RAID /dev/md2:
root@wasge-raid:~# mdadm --detail /dev/md2
/dev/md2:
Version : 1.2
Creation Time : Fri Apr 10 22:40:11 2015
Raid Level : raid1
Array Size : 20047744 (19.12 GiB 20.53 GB)
Used Dev Size : 20047744 (19.12 GiB 20.53 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Mon Apr 27 22:55:08 2015
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
Name : wasge-raid:2 (local to host wasge-raid)
UUID : 6e2e74f4:4e62cad7:b809e8f3:027accf8
Events : 93
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 81 1 active sync /dev/sdf1
root@wasge-raid:~#
Falta un disco y eso puede afectar al rendimiento o a la fiabilidad. Cuando un RAID no está en buen estado, se considera degradado.
Como se puede observar al final de la lista, la partición usada en el RAID del disco número 0 aparece como "removed". Esto es porque el dispositivo no se encuentra presente en el sistema.
La partición del otro disco (/dev/sdf1) continúa activa y sincronizada.
La salida de cat /proc/mdstat
también indica que falta algo.
root@wasge-raid:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sde1[2](F) sdf1[1]
20047744 blocks super 1.2 [2/1] [_U]unused devices: <none>
root@wasge-raid:~#
Aparece la partición sde1 (que ha fallado) marcado con una (F). Además, en vez de aparecer las dos [UU] simbolizando las dos particiones, aparece que sólo hay una [_U].
Añadir un nuevo disco duro
Esto es mucho más sencillo de lo que en un principio puede parecer. La partición del disco duro tiene que ser de tamaño idéntico o superior a la partición del disco que está funcionando actualmente en el RAID 1.
Una vez conectado el disco al sistema e identificado (en mi caso es sdg), el comando para añadir su primera partición (sdg1) al RAID es el siguiente.
root@wasge-raid:~# mdadm --manage /dev/md2 --add /dev/sdg1
mdadm: added /dev/sdg1
root@wasge-raid:~#
Al añadirlo, mdadm empezará a sincornizar ambos discos y volverá a marcar el RAID /dev/md2 como limpio (clean) cuando termine.
Comprobar el estado
Justo después de ejecutar el último comando, el sistema ya debería estar reconstruyendo el disco. Se puede comprobar como siempre, con mdadm
oot@wasge-raid:~# mdadm --detail /dev/md2
/dev/md2:
Version : 1.2
Creation Time : Fri Apr 10 22:40:11 2015
Raid Level : raid1
Array Size : 20047744 (19.12 GiB 20.53 GB)
Used Dev Size : 20047744 (19.12 GiB 20.53 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Mon Apr 27 23:12:57 2015
State : clean, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
Rebuild Status : 20% complete
Name : wasge-raid:2 (local to host wasge-raid)
UUID : 6e2e74f4:4e62cad7:b809e8f3:027accf8
Events : 98
Number Major Minor RaidDevice State
3 8 97 0 spare rebuilding /dev/sdg1
1 8 81 1 active sync /dev/sdf1
root@wasge-raid:~#
Y también se puede comprobar con cat /proc/mdstat:
root@wasge-raid:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sdg1[3] sde1[2](F) sdf1[1]
20047744 blocks super 1.2 [2/1] [_U]
[=====>...............] recovery = 25.9% (5209344/20047744) finish=12.2min speed=20110K/sec
unused devices: <none>
root@wasge-raid:~#