Tive que aumentar um RAID 1, de 2TB para 3TB, em Linux.
O RAID 1 era constituído pelos dispositivos /dev/sdc1 e /dev/sdd1, cada um com 1.922.599.672 bytes.
Constituiam o dispositivo /dev/md1.
Desliguei a máquina, retirei um dos discos – o /dev/sdc – e adicionei um disco de 3TB.
No arranque, o RAID não arrancou corretamente. Ao invés, arrancou como /dev/md127, como é usual sempre que há problemas. Tive que o parar com o comando
mdadm --stop /dev/md127
Entrei no fdisk, para criar uma partição no disco, e ele queixou-se de que não podia criar uma partição maior do que 2TB.
Device does not contain a recognized partition table.
The size of this disk is 2.7 TiB (3000592982016 bytes). DOS partition table format cannot be used on drives for volumes larger than 2199023255040 bytes for 512-byte sectors. Use GUID partition table format (GPT).
Estranhei aquela coisa da partição DOS, mas como já tinha tido um problema semelhante há 4 anos atrás, decidi usar o gdisk
.
Com o gdisk
criei uma partição de 3TB e defini-a como Linux RAID, com o código FD00, ao invés do FD do fdisk.
Depois de ter parado o RAID incompleto (mdadm --stop /dev/md127
), tentei iniciar o novo RAID:
mdadm --assemble /dev/md1 /dev/sdc1 /dev/sdd1
mas a máquina queixou-se:
mdadm: /dev/sdc1 has no superblock - assembly aborted
Tive então que aplicar os comandos seguintes:
mdadm --zero-superblock /dev/sdc
mdadm --zero-superblock /dev/sdc1
mdadm --assemble --run /dev/md1 /dev/sdd1
mdadm --add /dev/md1 /dev/sdc1
Depois, para verificar que tudo estava OK, corri o comando seguinte, que me mostrou o RAID a ser construído:
cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md1 : active raid1 sdc1[2] sdd1[1]
1953382336 blocks super 1.2 [2/1] [_U]
[>....................] recovery = 0.0% (707264/1953382336) finish=184.0min speed=176816K/sec
———————
Quando o mdstat chegou a 100%, parei a máquina e fiz o mesmo para o /dev/sdd.
Após terminar, montei o RAID no sistema de ficheiros, usando a informação do /etc/fstab:
mount -a
———————
Por fim, para estender o /dev/md1 para 3TB, executei os seguintes comandos
e2fsck -f /dev/md1
mdadm --grow /dev/md1 --size=2881959520
resize2fs /dev/md1
Note-se que o parâmetro size vem em kilobytes.