Guía de tecnologías

Simular y reemplazar un disco en RAID1

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

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

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.

Autor
Edición

Materiales similares

Solucionar retraso de la cámara en Android
Android

Solucionar retraso de la cámara en Android

Cómo eliminar archivos y hacerlos irreversibles
Seguridad Informática

Cómo eliminar archivos y hacerlos irreversibles

Configurar esclavo MySQL con SSL
Bases de Datos

Configurar esclavo MySQL con SSL

Desinstalar Explorer Patcher en Windows 11
Windows 11

Desinstalar Explorer Patcher en Windows 11

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

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

Error RUNUNK13 en Hulu: cómo solucionarlo
Streaming

Error RUNUNK13 en Hulu: cómo solucionarlo