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

Error 02001 en BBC iPlayer: cómo solucionarlo
Streaming

Error 02001 en BBC iPlayer: cómo solucionarlo

Descargar e instalar Microsoft MapPoint
Software.

Descargar e instalar Microsoft MapPoint

Imprimir a Google Cloud Print desde iOS
Impresión

Imprimir a Google Cloud Print desde iOS

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

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

Solución: Windows 10 Technical Preview en móviles
Guía técnica

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

Surface Pro: teclado no funciona — solución rápida
Soporte técnico

Surface Pro: teclado no funciona — solución rápida