Sostituire un disco in un Array funzionante senza degradarlo
Se si vuole sostituire un disco in un array (magari con uno più grande o perchè in pre failure), sarebbe meglio non degradare l'array, e poi aggiungere di nuovo un disco.
È possibile aggiungere il nuovo disco, fare un resync, e poi togliere quello da rimuovere. In questo modo l'array non sarà mai a rischio.
VERIFICARE: in caso di raid 5 NON è possibile, perchè aggiungendo un device, l'array cresce ?
Esempio:
- array RAID-1 md0 composta da due dischi sda1+sdb1
- vogliamo togliere sdb1 e sostituirlo con un nuovo disco già collegato sdc1
- Verificare lo stato dell'array
cat /proc/mdstat
md0 : active raid1 sda1[0] sdb1[1]
479247296 blocks [2/2] [UU]
- Aggiungere come spare il nuovo device
sudo mdadm --add /dev/mdo /dev/sdc1
- Verificare che l'array abbia ora un dispositivo spare:
cat /proc/mdstat
md0 : active raid1 sdc1[2](S) sda1[0] sdb1[1]
479247296 blocks [2/2] [UU]
- Fare crescere il numero di componenti dell'array a 3
sudo mdadm --grow /dev/md0 --raid-devices=3
- Verificare che si avvii il resync e che si completi. L'array NON deve aumentare di dimensioni.
watch cat /proc/mdstat
md0 : active raid1 sdc1[2] sda1[0] sdb1[1]
479247296 blocks [2/2] [UU_]
[>....................] recovery = 0.0% (15104/479247296) finish=21998.6min speed=362K/sec
- Una volta completato il resync, rimuovere il vecchi device:
sudo mdadm --fail /dev/md0 /dev/sdb1 sudo mdadm --remove /dev/md0 /dev/sdb1
- Riportare il numero di device a 2
sudo mdadm --grow /dev/md0 --raid-devices=2
- Verificare che l'array sia integro:
cat /proc/mdstat
md0 : active raid1 sda1[1] sdc1[0]
479247296 blocks [2/2] [UU]