Substituir um disco com falha em um array RAID1
Teste: simular e substituir o disco com falha
Neste guia prático mostramos como simular a falha de um disco num array RAID1 e como substituí-lo em segurança. Definição rápida: RAID1 é um espelhamento de discos; cada gravação é duplicada em dois (ou mais) discos para redundância.
Observação importante: os comandos abaixo são demonstrativos. Ajuste /dev/sda e /dev/sdb conforme sua máquina. Sempre faça backup antes de operar em produção.
- Simular a falha do disco
Escolha qual disco simular como com falha. Neste exemplo assumimos que /dev/sdb falhou. Você pode remover fisicamente o disco ou simular a falha com mdadm:
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md2 --fail /dev/sdb3
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm --manage /dev/md2 --remove /dev/sdb3
Desligue a máquina se estiver trocando fisicamente o disco:
shutdown -h now
Substitua o disco fisicamente e ligue a máquina. Se você simulou a falha sem remover fisicamente, apenas reconecte o disco novo.
- Verificar estado degradado
Após o boot, verifique o estado do array:
cat /proc/mdstat
Exemplo de saída quando o array está degradado:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0]
200704 blocks [2/1] [U_]
md1 : active raid1 sda2[0]
522048 blocks [2/1] [U_]
md2 : active raid1 sda3[0]
9759360 blocks [2/1] [U_]
unused devices:
[root@server1 ~]#
Liste as partições e discos:
fdisk -l
Exemplo de saída (observe que /dev/sdb não contém tabela de partição válida):
[root@server1 ~]# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 25 200781 fd Linux raid autodetect
/dev/sda2 26 90 522112+ fd Linux raid autodetect
/dev/sda3 91 1305 9759487+ fd Linux raid autodetect
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/md2: 9993 MB, 9993584640 bytes
2 heads, 4 sectors/track, 2439840 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md2 doesn't contain a valid partition table
Disk /dev/md1: 534 MB, 534577152 bytes
2 heads, 4 sectors/track, 130512 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md1 doesn't contain a valid partition table
Disk /dev/md0: 205 MB, 205520896 bytes
2 heads, 4 sectors/track, 50176 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md0 doesn't contain a valid partition table
[root@server1 ~]#
- Copiar a tabela de partições do disco saudável para o novo disco
Copie a tabela de partições de /dev/sda para /dev/sdb com sfdisk:
sfdisk -d /dev/sda | sfdisk /dev/sdb
Se receber um erro sobre assinatura msdos, tente com –force:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Exemplo de saída que mostra a nova tabela escrita:
[root@server1 ~]# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 1305 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: 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/sdb1 * 63 401624 401562 fd Linux raid autodetect
/dev/sdb2 401625 1445849 1044225 fd Linux raid autodetect
/dev/sdb3 1445850 20964824 19518975 fd Linux raid autodetect
/dev/sdb4 0 - 0 0 Empty
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 ~]#
- Remover superblocos antigos e adicionar as partições ao array
Remova resíduos de metadados RAID do disco novo e adicione as partições ao array:
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdb3
mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb2
mdadm -a /dev/md2 /dev/sdb3
Verifique o progresso da sincronização:
cat /proc/mdstat
Exemplo de sincronização em andamento:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
200704 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
522048 blocks [2/2] [UU]
md2 : active raid1 sdb3[2] sda3[0]
9759360 blocks [2/1] [U_]
[=======>.............] recovery = 39.4% (3846400/9759360) finish=1.7min speed=55890K/sec
unused devices:
[root@server1 ~]#
Aguarde até que todas as unidades estejam com status [UU]:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
200704 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
522048 blocks [2/2] [UU]
md2 : active raid1 sdb3[1] sda3[0]
9759360 blocks [2/2] [UU]
unused devices:
[root@server1 ~]#
- Reinstalar o carregador de boot em ambos os discos
Abra o grub interativo e instale o bootloader em ambos os discos (exemplo para BIOS legacy):
grub
Dentro do prompt do grub:
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit
Nota: em sistemas modernos com UEFI, use grub-install ou o método apropriado para sua distribuição.
Parabéns — o disco falho foi substituído e o array RAID1 foi reconstruído.
Mini-metodologia (passo a passo rápido)
- Identifique o disco com falha e confirme o estado degradado (cat /proc/mdstat).
- Substitua fisicamente o disco ou prepare o disco de substituição.
- Copie a tabela de partições do disco saudável (sfdisk -d | sfdisk).
- Zere superblocos antigos (mdadm –zero-superblock).
- Adicione as partições ao array (mdadm -a).
- Aguarde a sincronização completar (cat /proc/mdstat).
- Reinstale o carregador de boot em ambos os discos.
Lista de verificação por função
Administrador (sysadmin):
- Confirmar backup recente.
- Planejar janela de manutenção.
- Executar sfdisk e mdadm com privilégios de root.
- Verificar integridade do array pós-sincronização.
- Reinstalar o bootloader e testar boot.
Operador / Técnico de campo:
- Substituir fisicamente o disco com cuidado antiestático.
- Verificar conexões SATA/energia.
- Confirmar que o novo disco foi detectado pelo BIOS/UEFI.
Critérios de aceitação
- O comando cat /proc/mdstat mostra [UU] em todos os arrays.
- fdisk -l mostra partições válidas no novo disco, similares ao disco original.
- O sistema inicializa corretamente a partir de qualquer um dos HDDs.
- Não há mensagens de erro nos logs relacionadas ao mdadm ou discos após sincronização.
Resolução de problemas comum
sfdisk: ERROR: sector 0 does not have an msdos signature
- Causa: disco novo limpo sem tabela; solução: repetir com –force ou usar fdisk/parted para criar partições manualmente.
mdadm não permite adicionar a partição
- Causa: partição não tem flag de RAID ou tamanhos não batem; solução: verifique start/end com sfdisk -d e recrie partições como no disco original.
Sincronização muito lenta
- Causa: limites de IO, configuração do kernel ou discos lentos; solução: checar iostat, reduzir carga do sistema, ajustar mdadm –speed-limit (se disponível) e verificar saúde SMART.
Problemas com boot em UEFI
- Causa: fluxo do boot diferente; solução: use grub-install /dev/sdX apropriado ou reinstale o gerenciador de boot via a ferramenta da distribuição.
Comandos de referência (cheat sheet)
- Verificar arrays: cat /proc/mdstat
- Listar discos: fdisk -l
- Exportar tabela: sfdisk -d /dev/sda
- Aplicar tabela: sfdisk /dev/sdb
- Zerar superbloco: mdadm –zero-superblock /dev/sdb1
- Adicionar partição: mdadm -a /dev/md0 /dev/sdb1
- Reinstalar GRUB (exemplo): grub (interativo) ou grub-install /dev/sda
Modelo mental rápido
Pense no RAID1 como um espelho: enquanto um dos espelhos existir, o sistema continua funcionando. Substituir um disco é como remover um espelho quebrado e polir o novo para que volte a refletir tudo — a sincronização copia todo o conteúdo do disco bom para o novo.
Quando esse procedimento falha (exemplos)
- Se as partições do disco novo tiverem tamanhos diferentes, o mdadm pode recusar a adição ou usar apenas parte da capacidade.
- Se o disco de origem estiver com setores defeituosos, a cópia da tabela e a reconstrução podem falhar. Nesse caso, recorra a backups e considere clonar setores manualmente com ddrescue.
Resumo
- Simule a falha ou remova fisicamente o disco.
- Copie a tabela de partições do disco saudável para o novo.
- Zere resíduos de RAID e adicione as partições ao array.
- Aguarde a sincronização completar e verifique /proc/mdstat.
- Reinstale o bootloader em ambos os discos para garantir que o sistema possa inicializar se um disco falhar novamente.
Importante: sempre confirme que você está operando nos dispositivos corretos (/dev/sda vs /dev/sdb). Uma troca incorreta pode causar perda de dados.
Links
- The Software-RAID Howto: http://tldp.org/HOWTO/Software-RAID-HOWTO.html
- CentOS: http://www.centos.org/
Materiais semelhantes
Criar arrays RAID e migrar dados para RAID

Corrigir erro de colar dados protegidos no Office

Excluir pastas do Windows Search — Windows 10 e 11

Transferir arquivos entre smartphones próximos

Corrigir erro 0x0003 no GeForce Experience
