Simular y reemplazar un disco en RAID1
Este artículo muestra cómo simular la caída de un disco en un arreglo RAID1, copiar la tabla de particiones al nuevo disco, añadirlo al arreglo y reconstruirlo con mdadm. Incluye pasos prácticos, comprobaciones y soluciones habituales.
1. Introducción breve
Objetivo: probar la tolerancia a fallos y practicar el reemplazo de un disco en un arreglo RAID1 gestionado con mdadm. Definición rápida: RAID1 mantiene una réplica idéntica de datos en dos discos; si uno falla, el sistema sigue funcionando con el otro hasta que se sustituye y reconstruye.
2. Cómo simular un fallo de disco
No importa si eliges /dev/sda o /dev/sdb; en este ejemplo se asume que /dev/sdb ha fallado.
Puedes simular el fallo apagando el servidor y retirando físicamente /dev/sdb, o retirarlo «suavemente» con mdadm:
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md2 --fail /dev/sdb3
A continuación elimina las particiones falladas del conjunto:
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm --manage /dev/md2 --remove /dev/sdb3
Apaga el sistema si vas a hacer un intercambio físico:
shutdown -h now
Sustituye el disco defecto por uno nuevo. Si simulaste el fallo de /dev/sda, coloca el nuevo disco en el lugar de /dev/sda y conecta el antiguo o el nuevo según la topología; en nuestro ejemplo colocamos el nuevo disco como /dev/sdb y arrancamos de nuevo. El sistema debería iniciar sin problemas.
3. Comprobar el estado degradado
Ejecuta:
cat /proc/mdstat
Deberías ver un arreglo degradado. Ejemplo de salida:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sda1[0]
104320 blocks [2/1] [U_]
md1 : active raid1 sda2[0]
513984 blocks [2/1] [U_]
md2 : active raid1 sda3[0]
4618560 blocks [2/1] [U_]
unused devices:
[root@server1 ~]#
También comprueba las particiones con fdisk:
fdisk -l
Ejemplo de salida (sda tiene particiones; sdb no contiene tabla válida):
[root@server1 ~]# fdisk -l
Disk /dev/sda: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0007b217
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 fd Linux raid autodetect
/dev/sda2 14 77 514080 fd Linux raid autodetect
/dev/sda3 78 652 4618687+ fd Linux raid autodetect
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/md2: 4729 MB, 4729405440 bytes
2 heads, 4 sectors/track, 1154640 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000
Disk /dev/md2 doesn't contain a valid partition table
Disk /dev/md1: 526 MB, 526319616 bytes
2 heads, 4 sectors/track, 128496 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000
Disk /dev/md1 doesn't contain a valid partition table
Disk /dev/md0: 106 MB, 106823680 bytes
2 heads, 4 sectors/track, 26080 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000
Disk /dev/md0 doesn't contain a valid partition table
[root@server1 ~]#
4. Copiar la tabla de particiones del disco sano al nuevo
Copiar la tabla de particiones de /dev/sda a /dev/sdb con sfdisk:
sfdisk -d /dev/sda | sfdisk /dev/sdb
Si obtienes un error por firma MS-DOS, prueba con –force:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Ejemplo de salida confirmando particiones escritas:
[root@server1 ~]# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 652 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdb1 * 63 208844 208782 fd Linux raid autodetect
/dev/sdb2 208845 1237004 1028160 fd Linux raid autodetect
/dev/sdb3 1237005 10474379 9237375 fd Linux raid autodetect
/dev/sdb4 0 - 0 0 Empty
Successfully wrote the new partition table
Re-reading the partition table ...
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
[root@server1 ~]#
5. Limpiar superbloques RAID anteriores y añadir el disco
Borra restos de superbloques RAID en las particiones del disco nuevo:
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdb3
Añade las particiones al arreglo RAID para que comience la reconstrucción:
mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb2
mdadm -a /dev/md2 /dev/sdb3
Ahora observa el progreso:
cat /proc/mdstat
Ejemplo mostrando reconstrucción en curso:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sdb1[1] sda1[0]
104320 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
513984 blocks [2/2] [UU]
md2 : active raid1 sdb3[2] sda3[0]
4618560 blocks [2/1] [U_]
[===>.................] recovery = 15.4% (715584/4618560) finish=4.9min speed=13222K/sec
unused devices:
[root@server1 ~]#
Espera hasta que la sincronización termine. Una vez completa, /proc/mdstat debe mostrar [UU] en cada arreglo.
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sdb1[1] sda1[0]
104320 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
513984 blocks [2/2] [UU]
md2 : active raid1 sdb3[1] sda3[0]
4618560 blocks [2/2] [UU]
unused devices:
[root@server1 ~]#
6. Instalar el cargador de arranque en ambos discos
Para asegurar que el sistema pueda arrancar desde cualquiera de los dos discos, ejecuta grub e instala en ambos discos:
grub
Dentro de la consola de grub:
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit
Con esto el disco nuevo queda como reemplazo funcional. Has completado el reemplazo de un disco fallado en un RAID1.
7. Lista de verificación rápida de recuperación
- Verificar /proc/mdstat y fdisk -l antes de empezar.
- Simular fallo con mdadm –fail y –remove o retirar físicamente el disco.
- Copiar tabla de particiones: sfdisk -d /dev/sda | sfdisk /dev/sdb.
- Zero superblocks: mdadm –zero-superblock /dev/sdbX.
- Añadir particiones al arreglo: mdadm -a /dev/mdX /dev/sdbX.
- Esperar a que termine la reconstrucción y comprobar [UU].
- Reinstalar GRUB en ambos discos.
8. Consejos de solución de problemas
- Si sfdisk falla por firma MS-DOS, usa –force con precaución.
- Si /proc/mdstat no muestra reconstrucción, revisa dmesg y /var/log/messages para errores de I/O.
- Si la reconstrucción es lenta, verifica la carga del sistema, velocidad de discos y límites de configuración (sysctl: dev.raid.speed_limit_min/max en algunas distribuciones).
- Si el sistema no arranca desde el disco secundario, asegúrate de instalar correctamente GRUB y de que las particiones /boot/EFI (si aplica) estén replicadas.
9. Enfoques alternativos y cuando no aplicar esto
- Hot-swap vs apagado: si tu hardware soporta hot-swap, retira el disco en caliente; si no, apaga y reemplaza.
- En arreglos más complejos (RAID5/6) el procedimiento difiere: copia de particiones y reconstrucción es similar, pero las precauciones y tiempos cambian.
- Si los discos tienen diferente tamaño, comprueba que las particiones del nuevo disco sean iguales o más grandes antes de añadir.
10. Modelo mental y mini-metodología
Modelo simple: detectar fallo → aislar el disco defectuoso → preparar reemplazo (particiones y limpiar metadatos) → añadir y reconstruir → confirmar redundancia → asegurar arranque.
Mini-metodología (3 pasos): verificar estado, copiar particiones y limpiar, añadir y monitorizar reconstrucción.
11. Glosario breve
- mdadm: herramienta de gestión de RAID por software en Linux.
- sfdisk: utilitario para manipular tablas de particiones.
- superblock: metadata que mdadm escribe en particiones para identificar arreglos RAID.
- grub: cargador de arranque tradicional en muchas distribuciones Linux.
12. Enlaces
- The Software-RAID Howto: http://tldp.org/HOWTO/Software-RAID-HOWTO.html
- Fedora: http://fedoraproject.org
Resumen final
Sigue los pasos con cuidado: simula el fallo, copia la tabla de particiones, borra superbloques antiguos, añade el disco nuevo al arreglo y espera a que termine la reconstrucción. Reinstala el cargador de arranque en ambos discos para garantizar la capacidad de arranque desde cualquiera de ellos.
Importante: realiza pruebas en entornos controlados antes de aplicar cambios en sistemas de producción y ten siempre copias de seguridad actualizadas.
Materiales similares

Solucionar retraso de la cámara en Android

Cómo eliminar archivos y hacerlos irreversibles
Configurar esclavo MySQL con SSL

Desinstalar Explorer Patcher en Windows 11

Pérdida de paquetes en Sea of Thieves: solución rápida
