Guia de tecnologias

Testes e substituição de um disco em RAID1

4 min read Sistemas Atualizado 30 Sep 2025
Substituir disco RAID1 com mdadm
Substituir disco RAID1 com mdadm

Contexto rápido

Este guia descreve, passo a passo, como testar a substituição de um disco falho em um array RAID1 usando mdadm. RAID1 espelha dados entre discos; você pode substituir discos sem perda de dados se executar os passos corretamente.

Termos em uma linha:

  • mdadm: utilitário de gerenciamento de arrays RAID no Linux.

1. Simular a falha do disco

Você pode simular a remoção do disco de duas maneiras: remover fisicamente após desligar a máquina ou marcar a partição como com falha (soft-remove) com mdadm.

Exemplo (supondo que /dev/sdb falhou):

mdadm --manage /dev/md0 --fail /dev/sdb1  
mdadm --manage /dev/md1 --fail /dev/sdb2

Remover as partições do array:

mdadm --manage /dev/md0 --remove /dev/sdb1  
mdadm --manage /dev/md1 --remove /dev/sdb2

Desligue a máquina para trocar fisicamente o disco, se desejar:

shutdown -h now

Se você trocou /dev/sda pelo novo disco físico, monte o novo disco como /dev/sdb conforme explicado abaixo (ou adapte os nomes conforme sua topologia).

2. Verificar o estado degradado

Após reiniciar, verifique o status do array:

cat /proc/mdstat

Saída esperada quando o array está degradado:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sda1[0]  
      200704 blocks [2/1] [U_]  
  
md1 : active raid1 sda2[0]  
      5036288 blocks [2/1] [U_]  
  
unused devices:   
[root@server1 ~]#

Também pode checar as partições e discos com:

fdisk -l

(Este comando mostrará que /dev/sdb não contém uma tabela de partições válida, se for um disco novo.)

3. Copiar a tabela de partições do disco saudável

Copie a tabela de partições do disco bom (/dev/sda) para o disco novo (/dev/sdb):

sfdisk -d /dev/sda | sfdisk /dev/sdb

Se houver erro sobre assinatura msdos, tente forçar:

sfdisk -d /dev/sda | sfdisk --force /dev/sdb

Exemplo de saída bem-sucedida:

[root@server1 ~]# sfdisk -d /dev/sda | sfdisk /dev/sdb  
Checking that no-one is using this disk right now ...  
OK  
  
Disk /dev/sdb: 652 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  10474379   10072755  fd  Linux raid autodetect  
/dev/sdb3             0         -          0   0  Empty  
/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 ~]#

4. Limpar assinaturas RAID antigas e adicionar o disco ao array

Zere qualquer superbloco RAID antigo no novo disco (partições):

mdadm --zero-superblock /dev/sdb1  
mdadm --zero-superblock /dev/sdb2

Em seguida, adicione as partições ao array:

mdadm -a /dev/md0 /dev/sdb1  
mdadm -a /dev/md1 /dev/sdb2

Verifique o progresso de reconstrução/sincronização:

cat /proc/mdstat

Exemplo mostrando recuperação em andamento:

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sdb1[1] sda1[0]  
      200704 blocks [2/2] [UU]  
  
md1 : active raid1 sdb2[2] sda2[0]  
      5036288 blocks [2/1] [U_]  
      [=====>...............]  recovery = 29.8% (1502656/5036288) finish=18.8min speed=3116K/sec  
  
unused devices:   
[root@server1 ~]#

Espere até que o array apresente [UU] em todas as metas (sincronização concluída):

[root@server1 ~]# cat /proc/mdstat  
Personalities : [raid1] [raid6] [raid5] [raid4]  
md0 : active raid1 sdb1[1] sda1[0]  
      200704 blocks [2/2] [UU]  
  
md1 : active raid1 sdb2[1] sda2[0]  
      5036288 blocks [2/2] [UU]  
  
unused devices:   
[root@server1 ~]#

5. Reinstalar o GRUB em ambos os discos

Para garantir que a máquina consiga inicializar mesmo se um dos discos falhar, reinstale o bootloader em ambos os discos com o utilitário grub (modo interativo mostrado):

grub

No prompt do grub:

root (hd0,0)  
setup (hd0)  
root (hd1,0)  
setup (hd1)  
quit

Após isso, o disco substituído faz parte do array e o sistema está pronto.

Quando este procedimento pode falhar

  • Tabelas de partição incompatíveis entre discos (tamanhos diferentes ou setores de início divergentes).
  • Partições com setores defeituosos no disco de origem ao clonar a tabela.
  • Versões diferentes do mdadm que não suportam opções usadas.
  • Erros de permissão (execute como root) ou discos com nomes de dispositivos trocados.

Se falhar: verifique logs (dmesg, /var/log/messages/journal), confirme nomes de dispositivo com lsblk e revise erros do sfdisk/mdadm mostrados na saída.

Abordagens alternativas

  • Usar dd para copiar byte a byte (dd if=/dev/sda of=/dev/sdb bs=1M) quando as tabelas forem idênticas e você deseja clonagem completa — cuidado com discos de tamanhos diferentes.
  • Usar parted para replicar partições GPT (se você usar GPT em vez de MBR).
  • Criar manualmente as partições com fdisk/parted seguindo o layout do disco bom.

Checklist rápido para o administrador

  • Confirmar qual disco é o falho com lsblk e cat /proc/mdstat.
  • Marcar partições como failed e removê-las do array ou desligar para troca física.
  • Substituir fisicamente o HDD se necessário.
  • Copiar a tabela de partições: sfdisk -d /dev/sda | sfdisk /dev/sdb.
  • mdadm –zero-superblock nas partições novas.
  • mdadm -a para adicionar as partições ao array.
  • Monitorar /proc/mdstat até sincronização completa.
  • Reinstalar GRUB em ambos os discos.
  • Testar reboot e confirmar array montado corretamente.

Critérios de aceitação

  • O array RAID1 mostra [UU] em /proc/mdstat para todas as réplicas.
  • O sistema inicializa corretamente com cada disco de forma independente (após testes de boot).
  • Não há erros persistentes em dmesg relacionados ao RAID ou partições.

Mini-metodologia (por que seguir esta ordem)

  1. Identificar e isolar o disco defeituoso para não causar corrupção.
  2. Preparar o disco substituto com tabela de partições idêntica.
  3. Garantir que não existam metadados RAID conflitantes.
  4. Adicionar ao array e esperar sincronizar totalmente.
  5. Reinstalar bootloader para garantir redundância de boot.

Links úteis

Resumo: seguindo estes passos você substitui um HDD em um RAID1 com segurança usando ferramentas padrão (sfdisk, mdadm, grub). Teste em um ambiente controlado antes de aplicar em produção.

Autor
Edição

Materiais semelhantes

Como bloquear apps no iPhone
Tecnologia

Como bloquear apps no iPhone

Ver publicações curtidas no Instagram — guia atualizado
Redes Sociais

Ver publicações curtidas no Instagram — guia atualizado

Como escolher o Mini PC certo
Hardware

Como escolher o Mini PC certo

Como ver publicações curtidas no Instagram
Redes Sociais

Como ver publicações curtidas no Instagram

Substituir disco RAID1 com mdadm
Sistemas

Substituir disco RAID1 com mdadm

Corrigir erro código 43 no GPU NVIDIA/Intel
Suporte Técnico

Corrigir erro código 43 no GPU NVIDIA/Intel