Você pode verificar o estado atual da matriz com cat /proc/mdstat
. Neste exemplo, é de onde vêm os dados.
Então, vamos supor que temos md127
com 3 discos em um raid1. Aqui eles são apenas partições de um disco, mas isso não importa
md127 : active raid1 vdb3[2] vdb2[1] vdb1[0]
102272 blocks super 1.2 [3/3] [UUU]
Precisamos colocar um dos discos off-line antes de removê-lo:
$ sudo mdadm --manage /dev/md127 --fail /dev/vdb2
mdadm: set /dev/vdb2 faulty in /dev/md127
E o status agora mostra que é ruim
md127 : active raid1 vdb3[2] vdb2[1](F) vdb1[0]
102272 blocks super 1.2 [3/2] [U_U]
Agora podemos remover este disco:
$ sudo mdadm --manage /dev/md127 --remove /dev/vdb2
mdadm: hot removed /dev/vdb2 from /dev/md127
md127 : active raid1 vdb3[2] vdb1[0]
102272 blocks super 1.2 [3/2] [U_U]
E agora redimensione:
$ sudo mdadm --grow /dev/md127 --raid-devices=2
raid_disks for /dev/md127 set to 2
unfreeze
Neste ponto, reduzimos a matriz com êxito para dois discos:
md127 : active raid1 vdb3[2] vdb1[0]
102272 blocks super 1.2 [2/2] [UU]
Agora, o novo disco pode ser adicionado novamente como um ponto de acesso:
$ sudo mdadm -a /dev/md127 /dev/vdb2
mdadm: added /dev/vdb2
md127 : active raid1 vdb2[3](S) vdb3[2] vdb1[0]
102272 blocks super 1.2 [2/2] [UU]
O (S)
mostra que é um ponto de acesso.
Podemos verificar se isso funciona conforme o esperado, ao falhar em um disco existente e perceber que uma reconstrução ocorre no sobressalente:
$ sudo mdadm --manage /dev/md127 --fail /dev/vdb1
mdadm: set /dev/vdb1 faulty in /dev/md127
md127 : active raid1 vdb2[3] vdb3[2] vdb1[0](F)
102272 blocks super 1.2 [2/1] [_U]
[=======>.............] recovery = 37.5% (38400/102272) finish=0.0min speed=38400K/sec
vdb2
não está mais marcado com (S)
porque não é um hotspare.
Depois que o disco defeituoso foi adicionado novamente, ele é marcado como o ponto de acesso
md127 : active raid1 vdb1[4](S) vdb2[3] vdb3[2]
102272 blocks super 1.2 [2/2] [UU]