Substituir um disco falhado num array RAID1
Visão geral do processo
Este procedimento descreve como testar a falha de um disco e substituí-lo num array RAID1 gerido com mdadm. Etapas principais:
- Simular a falha do disco
- Remover o disco do sistema e/ou marcar como failed
- Clonar a tabela de partições do disco saudável para o novo disco
- Zerar metadados RAID antigos e adicionar as partições ao array
- Aguardar a ressincronização completa
- Reinstalar o GRUB em ambos os discos
Termos rápidos: mdadm — utilitário para gerir arrays RAID no Linux. sfdisk — ferramenta para manipular tabelas de partição em modo texto.
Testes e simulação de falha
Agora vamos simular uma falha de disco. Não importa se seleciona /dev/hda ou /dev/hdb; neste exemplo assumimos que /dev/hdb falhou.
Para simular a falha do disco, pode desligar a máquina e remover /dev/hdb, ou (soft-)removê-lo assim:
mdadm --manage /dev/md0 --fail /dev/hdb1
mdadm --manage /dev/md1 --fail /dev/hdb5
mdadm --manage /dev/md2 --fail /dev/hdb6
Remova o disco do array:
mdadm --manage /dev/md0 --remove /dev/hdb1
mdadm --manage /dev/md1 --remove /dev/hdb5
mdadm --manage /dev/md2 --remove /dev/hdb6
Desligue o sistema se preferir um teste físico:
shutdown -h now
Substitua o HDD por um novo (ou, se simulou a falha de /dev/hda, coloque /dev/hdb no lugar de /dev/hda e conecte o novo HDD como /dev/hdb) e arranque o sistema. O sistema deverá arrancar sem problemas.
Verificar estado degradado
Verifique o estado do array:
cat /proc/mdstat
Exemplo de saída quando um disco falta:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hda5[0]
417536 blocks [2/1] [U_]
md0 : active raid1 hda1[0]
176576 blocks [2/1] [U_]
md2 : active raid1 hda6[0]
4642688 blocks [2/1] [U_]
unused devices:
[root@server1 ~]#
Também verifique as unidades com fdisk:
fdisk -l
A saída deve mostrar o disco novo sem tabela de partição válida.
Clonar a tabela de partições
Copie a tabela de partições do disco saudável (/dev/hda) para o disco novo (/dev/hdb):
sfdisk -d /dev/hda | sfdisk --force /dev/hdb
Exemplo de interação com sfdisk:
[root@server1 ~]# sfdisk -d /dev/hda | sfdisk --force /dev/hdb
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
Checking that no-one is using this disk right now ...
OK
Disk /dev/hdb: 10402 cylinders, 16 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/hdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/hdb1 * 63 353429 353367 fd Linux raid autodetect
/dev/hdb2 353430 10474379 10120950 5 Extended
/dev/hdb3 0 - 0 0 Empty
/dev/hdb4 0 - 0 0 Empty
/dev/hdb5 353493 1188809 835317 fd Linux raid autodetect
/dev/hdb6 1188873 10474379 9285507 fd Linux raid autodetect
Warning: partition 1 does not end at a cylinder boundary
Successfully wrote the new partition table
Re-reading the partition table ...
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
[root@server1 ~]#
Nota: as mensagens de aviso sobre limites de cilindros são comuns e muitas vezes inseguras só na teoria; a prática aceita as diferenças modernas em geometria de disco.
Remover restos de arrays anteriores e adicionar partições
Apague qualquer superbloco RAID pré-existente nas partições do disco novo:
mdadm --zero-superblock /dev/hdb1
mdadm --zero-superblock /dev/hdb5
mdadm --zero-superblock /dev/hdb6
Agora adicione as partições ao array:
mdadm -a /dev/md0 /dev/hdb1
mdadm -a /dev/md1 /dev/hdb5
mdadm -a /dev/md2 /dev/hdb6
Verifique o progresso:
cat /proc/mdstat
Exemplo de estado durante a recuperação:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hdb5[2] hda5[0]
417536 blocks [2/1] [U_]
resync=DELAYED
md0 : active raid1 hdb1[1] hda1[0]
176576 blocks [2/2] [UU]
md2 : active raid1 hdb6[2] hda6[0]
4642688 blocks [2/1] [U_]
[===========>.........] recovery = 59.9% (2784512/4642688) finish=7.5min speed=4076K/sec
unused devices:
[root@server1 ~]#
Aguarde até a sincronização terminar; o estado final deverá mostrar [UU] em todos os arrays:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hdb5[1] hda5[0]
417536 blocks [2/2] [UU]
md0 : active raid1 hdb1[1] hda1[0]
176576 blocks [2/2] [UU]
md2 : active raid1 hdb6[1] hda6[0]
4642688 blocks [2/2] [UU]
unused devices:
[root@server1 ~]#
Reinstalar o GRUB nos discos
Depois da ressincronização completa, reinstale o carregador de arranque em ambos os discos usando o utilitário grub (modo interativo mostrado abaixo):
grub
Na consola do grub execute:
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit
Isto garante que o sistema continuará a arrancar mesmo se um dos discos falhar novamente.
Verificações finais e critérios de aceite
- Todos os arrays mostram [UU] em /proc/mdstat.
- Não existem mensagens de erro em dmesg relacionadas com discos ou RAID.
- As partições do novo disco correspondem às do disco saudável (fdisk -l).
- O sistema arranca com qualquer um dos HDDs removidos (teste opcional em ambiente controlado).
Checklist de intervenção rápida
Checklist antes de começar:
- Backup recente dos dados críticos.
- Acesso físico ao servidor ou consola remota com IPMI/DRAC.
- Disco de substituição compatível disponível.
- Tempo de janela de manutenção definido, se necessário.
Passos essenciais:
- Simular falha ou identificar o disco com problema.
- Remover/assinalar a partição como failed e removê-la do array.
- Inserir o novo disco e clonar a tabela de partições com sfdisk.
- Zero superblocks, adicionar partições e verificar /proc/mdstat.
- Aguardar ressincronização completa.
- Reinstalar GRUB em ambos os discos.
Listas de verificação por função
Administrador de sistemas:
- Verificar logs e montar backup.
- Executar todos os comandos com privilégios root.
- Confirmar ressincronização e reinstalação do GRUB.
Operador de datacenter:
- Substituir fisicamente o disco conforme indicado.
- Fornecer informações sobre LEDs/estado físico do disco.
Auditor/QA:
- Confirmar que os critérios de aceite foram cumpridos.
- Registar timestamps e outputs de cat /proc/mdstat para auditoria.
Resolução de problemas comuns
- Caso mdadm recuse adicionar a partição: verifique se o superbloco foi realmente zerado com mdadm –zero-superblock e se a partição corresponde em tamanho.
- Se a ressincronização for muito lenta: verifique I/O e carga do sistema com iostat/top e se existe throttling do disco.
- Se sfdisk reclamar de assinatura ausente: a mensagem é normal ao gravar uma tabela nova; confirme o novo layout com fdisk -l.
- Se o GRUB falhar a instalar em hd1: confirme a numeração de discos reconhecida pelo GRUB (hd0/hd1) e repita os comandos de setup.
Mini-metodologia
Heurística 4 passos: verificar, isolar, substituir, validar. Primeiro verifique estado e logs; isole o disco defeituoso; substitua e clone partições; valide integridade e arranque.
Fluxo de decisão simples
flowchart TD
A[Detectar falha] --> B{Disco fisicamente danificado?}
B -- Sim --> C[Substituir fisicamente]
B -- Não --> D[Marcar como failed com mdadm]
C --> E[Clonar tabela com sfdisk]
D --> E
E --> F[Zero superblock e mdadm -a]
F --> G[Aguardar ressincronização]
G --> H[Reinstalar GRUB]
H --> I[Validação final]
Glossário rápido
- mdadm: gerenciador de arrays RAID.
- sfdisk: utilitário para exportar/importar partições em modo script.
- /proc/mdstat: mostra o estado atual dos arrays RAID no kernel.
Conclusão
Seguindo estes passos substitui um disco com segurança num array RAID1. Valide sempre a sincronização e a capacidade de arranque a partir de cada disco antes de concluir a intervenção.
Links úteis
- The Software-RAID Howto: http://tldp.org/HOWTO/Software-RAID-HOWTO.html
- Mandriva: http://www.mandriva.com
Materiais semelhantes

Como atualizar Macs usados: guia prático

Corrigir: Windows reinicia em vez de desligar

Como conseguir Folhas Prateadas em Destiny 2

Desbloquear conta do Facebook — guia rápido

Use QR Codes para escalar seu negócio
