Reemplazo de discos en RAID con mdadm
Hace unos días hice mi segundo reemplazo completo de discos de un array MD y quería compartir aquí los pasos que he utilizado (con éxito :D) en ambos casos.
Los dos escenarios fueron similares: dos discos iguales, con iguales particiones y RAID-1 que deben ser reemplazados por otros dos discos iguales pero de mayor tamaño, por lo que el procedimiento fue el mismo en ambos casos.
Para simplificar la guía decidí usar discos con sólo tres particiones: una para/, una para/vary otra paraswap(que no está en RAID). El esquema entonces queda definido de la siguiente manera:
+------------------+ +-----------------+ +------------------+
| /dev/sda1 |-----| /dev/md0 (/) |-----| /dev/sdb1 |
+------------------+ +-----------------+ +------------------+
| /dev/sda2 |-----| /dev/md1 (/var) |-----| /dev/sdb2 |
+------------------+ +-----------------+ +------------------+
| /dev/sda3 (swap) | | /dev/sdb3 (swap) |
+------------------+ +------------------+
Los discos que se usarán para reemplazo sonsdcysdd.
NOTA: En la guía sólo se muestra el reemplazo completo de sda por sdc ya que el procedimiento para reemplazar sdb por sdd es el mismo.
1. Particionado de disco
La manera sencilla de copiar la tabla de particiones de una unidad a otra es:
Esto copia completamente el esquema del disco origen (sda) al disco destino (sdc). Si el destino es mayor simplemente quedará espacio libre (sin asignar) al final del disco.
2. Reemplazo de particiones en arrays
TIP: Es útil tener visible, en otra terminal y durante todo el proceso, la salida de/proc/mdstatpara visualizar en todo momento el estado del array y poder ver el sincronizado de los discos:
Ahora sí, empecemos por el RAID sobre el que está montado/vary quitemossda2:
mdadm: set /dev/sda2 faulty in /dev/md1
papua:~# mdadm /dev/md1 --remove /dev/sda2
mdadm: hot removed /dev/sda2
La salida de/proc/mdstatdebería mostrar conU_el array degradado:
Personalities : [raid1]
md1 : active raid1 sdb2[0]
14651200 blocks [2/1] [U_]
md0 : active raid1 sdb1[0] sda1[1]
29294400 blocks [2/2] [UU]
Ahora agreguemossdc2:
mdadm: added /dev/sdc2
Esperamos a que la sincronización termine (nuevamente ver la salida de /proc/mdstat) y hacemos lo mismo para/: repetimos completo el punto 2 cambiando sda2 por sda1 y sdc2 por sdc1.
4. Instalación de GRUB
Instalaremos grub en el MBR desdcpara que el sistema pueda bootear con cualquiera de los discos del array. Agregamos una entrada para el nuevo disco en el archivo/boot/grub/device.map:
Luego procedemos a la instalación:
grub> root (hd2,0)
root (hd2,0)
Filesystem type is reiserfs, partition type 0xfd
grub> setup (hd2)
setup (hd2)
...
grub> quit
5. Reemplazo de swap
Seteamos la partición:
Setting up swapspace version 1, size = 10001936 kB
no label, UUID=b00c3665-151b-4a16-ba57-e0c032f14520
Desmontamos la swap desda3y la montamos ensdc3:
papua:~# swapon /dev/sdc3
También es necesario modificar/etc/fstabpara que la swap sea correctamente montada al reiniciar el equipo:
Recordar que elUUIDdebe ser el que nos devuelva la salida demkswap, aunque también puede averiguarse mediante
6. Fin
Eso es todo. Para remover el otro disco repetimos los pasos del 1 al 5 reemplazando sda por sdb, sdc por sdd y hd2 por hd3.



