Ci sono decine di validi tutorial in rete su come sostituire un disco in un RAID1 su Linux, attraverso mdadm (questo per esempio).
Il problema che ho riscontrato però non è stato di immediata soluzione.
Ho sostituito il disco WD Red da 4TByte rotto con uno della stessa marca e stesso modello e, ovviamente, stessa dimensione.
Ho proceduto alla creazione della partizione con parted e ho modificato il tipo di partizione con fdisk, ma al momento di aggiungere il disco con mdadm al raid esistente, ho ricevuto l’errore
mdadm: /dev/sdb1 not large enough to join array solution
Il problema è nella dimensione delle due partizioni
# blockdev --report /dev/sda1
RO RA SSZ BSZ StartSec Size Device
rw 256 512 512 2048 4000785964544 /dev/sda1
# blockdev --report /dev/sdb1
RO RA SSZ BSZ StartSec Size Device
rw 256 512 4096 2048 4000785104896 /dev/sdb1
e ancora
# blockdev --getsz /dev/sda1
7814035087
# blockdev --getsz /dev/sdb1
7814033408
La soluzione è quella di rendere le due partizioni identiche, così ho utilizzato sgdisk che permette la replica di una partizione su un altro dispositivo.
When using larger than 2tb disks, you need to use gpt partitions.
sgdisk -R=/dev/dest /dev/src
To copy the partition data, use:
This will copy the src partition info to dest.
Then generate a new identifier for the new disk:
sgdisk -G /dev/dest
Ora posso aggiungere tranquillamente il nuovo disco al RAID1 .
# mdadm --manage /dev/md0 --add /dev/sdb1
Quindi morale della storia: è fondamentale copiare la partizione dal disco sano, perché una nuova creazione della partizione potrebbe portare a una differenza che, seppur minima, impedisce il corretto montaggio del disco.