Reemplazar un disco de un RAID1 por software

  • 23 Ene 2015
  • Linux

Escenario

En este ejemplo tenemos dos discos: /dev/sda y /dev/sdb. Cada uno de ellos con dos particiones: /dev/sd*1 y /dev/sd*2. Las particiones /dev/sda1 y /dev/sdb1 forman la partición RAID1 /dev/md0. Las otras dos particiones, /dev/sda2 y /dev/sdb2 forman la segunda partición del RAID1: /dev/md1.

En este caso, el disco /dev/sdb se rompe. Veremos como reemplazarlo.

Cómo se que el disco /dev/sdb está roto

Para obterner información sobre el estado del RAID, basta ejecutar el siguiente comando:

# cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sda1[0] sdb1[2](F)
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]
unused devices: <none>

Las particiones identificadas con U_ o _U están en problemas. Uno de los discos falló

Quitar el disco dañado del RAID

Para remover el disco /dev/sdb debemos marcar sus particiones como dañadas y elminarlas de las particiones RAID: /dev/md0 y /dev/md1

mdadm --manage /dev/md0 --fail /dev/sdb1

Una vez marcado, lo eliminamos

mdadm --manage /dev/md0 --remove /dev/sdb1

Una vez eliminado, podremos ver que /dev/sdb1 ya no forma parte de la partición /dev/md0

# cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[1]
      24418688 blocks [2/2] [UU]
unused devices: <none>

Ahora hacemos lo mismo con la partición /dev/sdb2

# mdadm --manage /dev/md0 --fail /dev/sdb1
# mdadm --manage /dev/md0 --remove /dev/sdb1
# cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sda1[0]
      24418688 blocks [2/1] [U_]

md1 : active raid1 sda2[0]
      24418688 blocks [2/1] [U_]
unused devices: <none>

Reemplazar el disco dañado del servidor

Ahora es el momento de apagar el servidor,  quitar el disco dañado e instalar uno nuevo exactamente igual al dañado. Ni más grande, ni más chico.

# shutdown -h now

Agregar el nuevo disco al RAID

Lo primero que hacemos es ver la información del RAID. En este ejemplo, el disco instalado era parte de otro RAID, con sus particiones, etc

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0]
      511936 blocks super 1.0 [2/1] [U_]
      
md126 : active (auto-read-only) raid1 sdb1[1]
      511936 blocks super 1.0 [2/1] [_U]
      
md127 : active raid1 sdb2[1]
      487742272 blocks super 1.1 [2/1] [_U]
      bitmap: 4/4 pages [16KB], 65536KB chunk

md1 : active raid1 sda2[0]
      487742272 blocks super 1.1 [2/1] [U_]
      bitmap: 4/4 pages [16KB], 65536KB chunk

unused devices: <none>

Antes de poder agregar el disco nuevo al RAID, será necesario eliminar el suyo, ejecutando el siguiente comando:

# mdadm -vS /dev/md126
# mdadm -vS /dev/md127

Si uno de las particiones se resiste, podría ser necesario seguir estos pasos:

# mdadm -vS /dev/md126
mdadm: stopped /dev/md126

# mdadm -vS /dev/md127
mdadm: Cannot get exclusive access to /dev/md127:Perhaps a running process, mounted filesystem or active volume group?


# mdadm -vS /dev/md127
mdadm: Cannot get exclusive access to /dev/md127:Perhaps a running process, mounted filesystem or active volume group?

# reboot

# sfdisk -d /dev/sda | sfdisk --force /dev/sdb

# cat /proc/mdstat
Personalities : [raid1]
md126 : active raid1 sdb1[0]
      511936 blocks super 1.0 [2/1] [U_]
      
md127 : active raid1 sdb2[0]
      487742272 blocks super 1.1 [2/1] [U_]
      bitmap: 4/4 pages [16KB], 65536KB chunk

md0 : active raid1 sda1[0]
      511936 blocks super 1.0 [2/1] [U_]
      
md1 : active raid1 sda2[0]
      487742272 blocks super 1.1 [2/1] [U_]
      bitmap: 4/4 pages [16KB], 65536KB chunk

unused devices: <none>

# mdadm -vS /dev/md126
# mdadm -vS /dev/md127


# mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: added /dev/sdb1

# mdadm --manage /dev/md1 --add /dev/sdb2
mdadm: added /dev/sdb2


# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[2] sda1[0]
      511936 blocks super 1.0 [2/2] [UU]
      
md1 : active raid1 sdb2[2] sda2[0]
      487742272 blocks super 1.1 [2/1] [U_]
      [>....................]  recovery =  0.0% (243520/487742272) finish=66.7min speed=121760K/sec
      bitmap: 4/4 pages [16KB], 65536KB chunk

unused devices: <none>

Eso es todo!