Guía de tecnologías

Pruebas: simular y reemplazar un disco duro fallido en RAID1

4 min read Sistemas Linux Actualizado 17 Oct 2025
Reemplazo de disco RAID1: prueba y recuperación
Reemplazo de disco RAID1: prueba y recuperación

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

Autor
Edición

Materiales similares

Podman en Debian 11: instalación y uso
DevOps

Podman en Debian 11: instalación y uso

Apt-pinning en Debian: guía práctica
Sistemas

Apt-pinning en Debian: guía práctica

OptiScaler: inyectar FSR 4 en casi cualquier juego
Guía técnica

OptiScaler: inyectar FSR 4 en casi cualquier juego

Dansguardian + Squid NTLM en Debian Etch
Redes

Dansguardian + Squid NTLM en Debian Etch

Arreglar error de instalación Android en SD
Android

Arreglar error de instalación Android en SD

Conectar carpetas de red con KNetAttach
Redes

Conectar carpetas de red con KNetAttach