Como substituir uma falha no disco rígido em uma matriz RAID1? E como adicionar um novo disco rígido a matriz RAID1 sem perder dados? Agora você descobrirá.
Nota
- Nesse exemplo, serão utilizados dois discos rígidos: /dev/sda and /dev/sdb, com as partições /dev/sda1 e /dev/sda2, e também /dev/sdb1 e /dev/sdb2.
- /dev/sda1 e /dev/sdb1 compõe a matriz RAID1 de /dev/md0.
- /dev/sda2 e /dev/sdb2 compõe a matriz RAID1 de /dev/md1.
- /dev/sda1 + /dev/sdb1 = /dev/md0
- /dev/sda2 + /dev/sdb2 = /dev/md1
- /dev/sdb é onde ocorreu a falha, e depois ele será substituído.
Como saber se houve falha no disco rígido?
Se houver falha no disco, você provavelmente receberá várias mensagens de erro nos arquivos log, eles podem ser vistos em /var/log/messages ou /var/log/syslog.
Você também pode rodar:
cat /proc/mdstat
E se ao invés de [UU], você ver [U_], significa que a matriz está degradada.
Removendo o disco com falha
Para remover /dev/sdb, será necessário marcar /dev/sdb1 e /dev/sdb2 como falhas também, e removê-los de suas respectivas matrizes.
Marcando /dev/sdb1 como falha:
mdadm --manage /dev/md0 --fail /dev/sdb1
A saída de cat /proc/mdstat deverá se parecer com isso:
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
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>
Então, remova /dev/sdb1 de /dev/md0:
mdadm --manage /dev/md0 --remove /dev/sdb1
A saída então será assim:
server1:~# mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1
E o comando cat /proc/mdstat deverá mostrar isso:
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
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>
Agora, o mesmo deverá ser feito com /dev/sdb2:
mdadm --manage /dev/md1 --fail /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
24418688 blocks [2/1] [U_]
md1 : active raid1 sda2[0] sdb2[2](F)
24418688 blocks [2/1] [U_]
unused devices: <none>
mdadm --manage /dev/md1 --remove /dev/sdb2
server1:~# mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm: hot removed /dev/sdb2
cat /proc/mdstat
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0]
24418688 blocks [2/1] [U_]
md1 : active raid1 sda2[0]
24418688 blocks [2/1] [U_]
unused devices: <none>
Então desligue o sistema com o comando "-h" e substitua o antigo disco rígido /dev/sdb por um novo.
Adicionando um novo disco rígido
Depois de ter concluído os passos anteriores, inicie o sistema.
A primeira coisa que deverá ser feita agora, é criar a mesma partição como /dev/sda. É possível fazer isso com apenas um comando:
sfdisk -d /dev/sda | sfdisk /dev/sdb
Você pode utilizar o comando "fdisk -l" para verificar se ambos discos estão no mesmo particionamento agora.
Em seguida, adicione /dev/sdb1 em /dev/md0 e /dev/sdb2 em /dev/md1:
mdadm --manage /dev/md0 --add /dev/sdb1
server1:~# mdadm --manage /dev/md0 --add /dev/sdb1
mdadm: re-added /dev/sdb1mdadm --manage /dev/md1 --add /dev/sdb2
server1:~# mdadm --manage /dev/md1 --add /dev/sdb2
mdadm: re-added /dev/sdb2
Agora, as duas matrizes (/dev/md0 e /dev/md1) serão sincronizadas. Então, rode o comando cat /proc/mdstat para que o processo seja finalizado.
Durante a sincronização, o texto de saída deverá ser assim:
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
24418688 blocks [2/1] [U_]
[=>...................] recovery = 9.9% (2423168/24418688) finish=2.8min speed=127535K/sec
md1 : active raid1 sda2[0] sdb2[1]
24418688 blocks [2/1] [U_]
[=>...................] recovery = 6.4% (1572096/24418688) finish=1.9min speed=196512K/sec
unused devices: <none>
Quando a sincronização terminar, o texto será assim:
server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
24418688 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
24418688 blocks [2/2] [UU]
unused devices: <none>
E é isso!
Para confirmar qual drive físico falhou, você pode usar o comando:
sudo hdparm -I /dev/sdb