Pruebas: simular y reemplazar un disco duro fallido en RAID1
Definiciones rápidas
- RAID1: espejo entre dos discos; ofrece redundancia, no copia de seguridad.
- mdadm: utilidad para gestionar arreglos RAID en Linux.
- sfdisk: herramienta para volcar/reescribir tablas de particiones.
- /proc/mdstat: interfaz del kernel que muestra el estado de los arrays RAID.
- GRUB: gestor de arranque usado para instalar el MBR/bootloader.
Prerrequisitos
- Acceso root o sudo.
- Disco de reemplazo disponible (físico o virtual).
- Copia de seguridad reciente recomendada.
1) Simular un fallo de disco
No importa si el disco fallido es /dev/hda o /dev/hdb; en este ejemplo asumimos que /dev/hdb ha fallado. Puede extraer físicamente el disco o simular el fallo con mdadm:
mdadm --manage /dev/md0 --fail /dev/hdb1
mdadm --manage /dev/md1 --fail /dev/hdb5
mdadm --manage /dev/md2 --fail /dev/hdb6
Después retire las particiones del array (soft-remove):
mdadm --manage /dev/md0 --remove /dev/hdb1
mdadm --manage /dev/md1 --remove /dev/hdb5
mdadm --manage /dev/md2 --remove /dev/hdb6
Apague el sistema si va a cambiar hardware físicamente:
shutdown -h now
Importante: si simuló el fallo de /dev/hda y reemplaza físicamente el disco, conecte el nuevo HDD en la posición adecuada para que el sistema lo detecte como /dev/hdb (o ajuste los nombres según corresponda).
2) Verificar estado degradado
Arranque el sistema con el disco faltante y compruebe el estado degradado:
cat /proc/mdstat
Salida esperada (ejemplo):
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hda5[0]
417536 blocks [2/1] [U_]
md0 : active raid1 hda1[0]
176576 blocks [2/1] [U_]
md2 : active raid1 hda6[0]
4642688 blocks [2/1] [U_]
unused devices:
[root@server1 ~]#
Nota: en la columna [U] el guion () indica que una copia está ausente; [UU] significa ambas copias activas.
Puede listar discos y particiones con:
fdisk -l
Ejemplo de salida (conservada):
[root@server1 ~]# fdisk -l
Disk /dev/hda: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/hda1 * 1 22 176683+ fd Linux raid autodetect
/dev/hda2 23 652 5060475 5 Extended
/dev/hda5 23 74 417658+ fd Linux raid autodetect
/dev/hda6 75 652 4642753+ fd Linux raid autodetect
Disk /dev/hdb: 5368 MB, 5368709120 bytes
16 heads, 63 sectors/track, 10402 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Disk identifier: 0x00000000
Disk /dev/hdb doesn't contain a valid partition table
Disk /dev/md2: 4754 MB, 4754112512 bytes
2 heads, 4 sectors/track, 1160672 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000
Disk /dev/md2 doesn't contain a valid partition table
Disk /dev/md0: 180 MB, 180813824 bytes
2 heads, 4 sectors/track, 44144 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000
Disk /dev/md0 doesn't contain a valid partition table
Disk /dev/md1: 427 MB, 427556864 bytes
2 heads, 4 sectors/track, 104384 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk identifier: 0x00000000
Disk /dev/md1 doesn't contain a valid partition table
[root@server1 ~]#
3) Copiar la tabla de particiones del disco sano al nuevo
Use sfdisk para volcar y reescribir la tabla de particiones:
sfdisk -d /dev/hda | sfdisk --force /dev/hdb
Salida ejemplo (conservada):
[root@server1 ~]# sfdisk -d /dev/hda | sfdisk --force /dev/hdb
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
Checking that no-one is using this disk right now ...
OK
Disk /dev/hdb: 10402 cylinders, 16 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/hdb: 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/hdb1 * 63 353429 353367 fd Linux raid autodetect
/dev/hdb2 353430 10474379 10120950 5 Extended
/dev/hdb3 0 - 0 0 Empty
/dev/hdb4 0 - 0 0 Empty
/dev/hdb5 353493 1188809 835317 fd Linux raid autodetect
/dev/hdb6 1188873 10474379 9285507 fd Linux raid autodetect
Warning: partition 1 does not end at a cylinder boundary
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 ~]#
4) Limpiar posibles superbloques RAID y añadir el disco al array
Borre metadatos RAID antiguos en las particiones del disco nuevo:
mdadm --zero-superblock /dev/hdb1
mdadm --zero-superblock /dev/hdb5
mdadm --zero-superblock /dev/hdb6
A continuación añada las particiones al array:
mdadm -a /dev/md0 /dev/hdb1
mdadm -a /dev/md1 /dev/hdb5
mdadm -a /dev/md2 /dev/hdb6
Verifique el progreso de la reconstrucción:
cat /proc/mdstat
Ejemplo de progreso:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hdb5[2] hda5[0]
417536 blocks [2/1] [U_]
resync=DELAYED
md0 : active raid1 hdb1[1] hda1[0]
176576 blocks [2/2] [UU]
md2 : active raid1 hdb6[2] hda6[0]
4642688 blocks [2/1] [U_]
[===========>.........] recovery = 59.9% (2784512/4642688) finish=7.5min speed=4076K/sec
unused devices:
[root@server1 ~]#
Espere a que termine la sincronización. El resultado final debería mostrar [UU] en cada array:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hdb5[1] hda5[0]
417536 blocks [2/2] [UU]
md0 : active raid1 hdb1[1] hda1[0]
176576 blocks [2/2] [UU]
md2 : active raid1 hdb6[1] hda6[0]
4642688 blocks [2/2] [UU]
unused devices:
[root@server1 ~]#
5) Reinstalar GRUB en ambos discos
Arranque grub y ejecute los comandos para instalar el gestor en cada disco:
grub
Dentro de la consola grub:
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit
Esto asegura que el sistema pueda arrancar desde cualquiera de los dos HDD.
Criterios de aceptación (comprobaciones finales)
- /proc/mdstat muestra [UU] para cada array.
- El sistema arranca correctamente desde cualquiera de los discos.
- Todos los puntos de montaje y datos están accesibles y consistentes.
- No hay errores relevantes en dmesg relacionados con discos o RAID.
Checklist rápida para roles
- Administrador: verificar /proc/mdstat, fdisk -l, mdadm –detail /dev/mdX.
- Operaciones: monitorear la velocidad de resync y tiempo estimado; notificar ventanas de mantenimiento.
- Soporte: conservar logs (dmesg, /var/log/messages) y registrar acciones realizadas.
Atajos y comandos útiles (cheat sheet)
- Comprobar estado: cat /proc/mdstat
- Detalles de un array: mdadm –detail /dev/md0
- Volcar tabla de particiones: sfdisk -d /dev/hda
- Reescribir tabla: sfdisk –force /dev/hdb
- Borrar superbloque RAID: mdadm –zero-superblock /dev/hdb1
- Añadir partición a array: mdadm -a /dev/md0 /dev/hdb1
Solución de problemas (cuando falla)
- Si la partición no se añade: use mdadm –examine /dev/hdb1 para inspeccionar metadatos.
- Si los nombres de dispositivo cambian (/dev/sdX vs /dev/hdX): use identificadores persistentes en /dev/disk/by-id o /dev/disk/by-uuid.
- Si sfdisk falla por firma: puede usar dd para limpiar sector 0 antes de escribir la tabla (sólo con cuidado).
- Revisar dmesg y logs del kernel ante errores físicos o de conexión.
Importante: nunca asuma que /dev/hda y /dev/hdb se mantendrán fijos después de cambios hardware; prefiera rutas persistentes para scripts y fstab.
Resumen
- Simule el fallo, copie la tabla de particiones, borre superbloques antiguos, añada el nuevo disco al array y espere a la sincronización completa.
- Reinstale GRUB en ambos discos para asegurar arranque redundante.
Enlaces
- The Software-RAID Howto: http://tldp.org/HOWTO/Software-RAID-HOWTO.html
- Mandriva: http://www.mandriva.com
Materiales similares

Error 02001 en BBC iPlayer: cómo solucionarlo

Descargar e instalar Microsoft MapPoint

Imprimir a Google Cloud Print desde iOS

Eliminar correos en iPhone y iPad — Guía rápida

Solución: Windows 10 Technical Preview en móviles
