Guia de tecnologias

Substituir um disco com falha em um array RAID1

5 min read Administração Atualizado 10 Oct 2025
Substituir disco falho em RAID1
Substituir disco falho em 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.

  1. 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.

  1. 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 ~]#
  1. 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 ~]#
  1. 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 ~]#
  1. 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

Autor
Edição

Materiais semelhantes

Criar arrays RAID e migrar dados para RAID
Administração de sistemas

Criar arrays RAID e migrar dados para RAID

Corrigir erro de colar dados protegidos no Office
Tech Support

Corrigir erro de colar dados protegidos no Office

Excluir pastas do Windows Search — Windows 10 e 11
Windows

Excluir pastas do Windows Search — Windows 10 e 11

Transferir arquivos entre smartphones próximos
Transferência de Arquivos

Transferir arquivos entre smartphones próximos

Corrigir erro 0x0003 no GeForce Experience
Suporte Técnico

Corrigir erro 0x0003 no GeForce Experience

PDFelement iOS v3.0: OCR para PDFs editáveis
Produtividade

PDFelement iOS v3.0: OCR para PDFs editáveis