Guia de tecnologias

Reduzir array RAID degradado /dev/md1 — guia passo a passo

8 min read Linux Atualizado 22 Sep 2025
Reduzir array RAID degradado com mdadm e LVM
Reduzir array RAID degradado com mdadm e LVM

Você pode reduzir com segurança um array RAID1 degradado (/dev/md1) quando um disco falhou removendo o disco defeituoso, usando um sistema de resgate para ajustar LVM e sistema de arquivos, reduzindo o RAID com mdadm e recriando volumes lógicos necessários. Este guia explica os comandos, as verificações de segurança, alternativas e um playbook de recuperação e rollback.

Objetivo principal

Reduzir o array RAID1 degradado /dev/md1 (composto por /dev/sda5 e /dev/sdb5, com /dev/sda5 falhado) de ~5 GB para 4 GB, ajustando LVM e sistemas de arquivos sem perda de dados.

Variantes de intenção relacionadas

  • reduzir array RAID degradado
  • redimensionar mdadm e LVM
  • diminuir PV/LV em RAID1
  • reparar array RAID e ajustar LVM
  • shrink mdadm com LVM

Resumo rápido dos termos

  • RAID: conjunto de discos configurados para redundância ou desempenho. Aqui usamos RAID1 (espelhamento). Uma unidade falha e o array fica degradado.
  • mdadm: utilitário Linux para gerenciar arrays de software RAID (/dev/md*).
  • LVM (Logical Volume Manager): camada lógica para volumes; usa PV (Physical Volume), VG (Volume Group) e LV (Logical Volume).
  • PV: volume físico (aqui /dev/md1). VG: grupo de volumes (server1). LV: volumes lógicos (root, swap_1).

Cenário inicial e saídas de diagnóstico

Verificamos o estado atual do RAID e do LVM usando os comandos a seguir. Mantenha essas saídas como referência antes de qualquer mudança.

cat /proc/mdstat

server1:~# cat /proc/mdstat  
Personalities : [raid1]  
md1 : active raid1 sdb5[1]  
4988032 blocks [2/1] [_U]  
  
md0 : active raid1 sda1[0] sdb1[1]  
248896 blocks [2/2] [UU]  
  
unused devices:   
server1:~#

df -h

server1:~# df -h  
Filesystem            Size  Used Avail Use% Mounted on  
/dev/mapper/server1-root  
4.5G  741M  3.5G  18% /  
tmpfs                 126M     0  126M   0% /lib/init/rw  
udev                   10M   68K   10M   1% /dev  
tmpfs                 126M     0  126M   0% /dev/shm  
/dev/md0              236M   18M  206M   8% /boot  
server1:~#

pvdisplay

server1:~# pvdisplay  
--- Physical volume ---  
PV Name               /dev/md1  
VG Name               server1  
PV Size               4.75 GB / not usable 0  
Allocatable           yes (but full)  
PE Size (KByte)       4096  
Total PE              1217  
Free PE               0  
Allocated PE          1217  
PV UUID               Ntrsmz-m0o1-WAPD-xhsb-YpH7-0okm-qfdBQG  
  
server1:~#

vgdisplay

server1:~# vgdisplay  
--- Volume group ---  
VG Name               server1  
System ID  
Format                lvm2  
Metadata Areas        1  
Metadata Sequence No  9  
VG Access             read/write  
VG Status             resizable  
MAX LV                0  
Cur LV                2  
Open LV               2  
Max PV                0  
Cur PV                1  
Act PV                1  
VG Size               4.75 GB  
PE Size               4.00 MB  
Total PE              1217  
Alloc PE / Size       1217 / 4.75 GB  
Free  PE / Size       0 / 0  
VG UUID               X3ZYTy-39yq-20k7-GCGk-vKVU-Xe0i-REdEu0  
  
server1:~#

lvdisplay

server1:~# lvdisplay  
--- Logical volume ---  
LV Name               /dev/server1/root  
VG Name               server1  
LV UUID               3ZgGnd-Sq1s-Rchu-92b9-DpAX-mk24-0aOMm2  
LV Write Access       read/write  
LV Status             available  
# open                1  
LV Size               4.50 GB  
Current LE            1151  
Segments              1  
Allocation            inherit  
Read ahead sectors    0  
Block device          253:0  
  
--- Logical volume ---  
LV Name               /dev/server1/swap_1  
VG Name               server1  
LV UUID               KM6Yq8-jQaQ-rkP8-6f4t-zrXA-Jk13-yFrWi2  
LV Write Access       read/write  
LV Status             available  
# open                2  
LV Size               264.00 MB  
Current LE            66  
Segments              1  
Allocation            inherit  
Read ahead sectors    0  
Block device          253:1  
  
server1:~#

Importante: guarde estas saídas em um arquivo seguro. Elas ajudam a verificar o sucesso das operações e servem como ponto de restauração.

Pré-requisitos e segurança

  • Tenha um backup válido dos dados críticos antes de mexer em LVM/RAID. Mesmo passos corretos podem falhar se houver corrupção.
  • Use um sistema de resgate (live CD/USB) quando alterar UUIDs, PV sizes e arranjos físicos.
  • Verifique que a partição a ser removida (/dev/sda5) realmente falhou.
  • Tenha acesso físico ou um console remoto com serial/IPMI para recuperação.

Passo a passo consolidado (playbook)

Nota: execute os comandos como root. Leia cada etapa antes de executar.

  1. Marcar e remover o disco falho do array
  • Confirme novamente o array e o disco. Depois marque como failed e remova.
mdadm --manage /dev/md1 --fail /dev/sda5
mdadm --manage /dev/md1 --remove /dev/sda5
  • Zere o superbloco da partição removida. IMPORTANTE: se esquecer, o disco pode ser re-adicionado automaticamente mais tarde e causar problemas.
mdadm --zero-superblock /dev/sda5
  1. Reinicie no sistema de resgate e carregue módulos necessários
  • No ambiente de resgate, carregue módulos para LVM e RAID.
modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10
  1. Ative arrays RAID e gere /etc/mdadm/mdadm.conf
  • Faça cópia de segurança do arquivo de configuração mdadm e acrescente as entradas detectadas.
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm -A --scan
  1. Inicie LVM
/ etc/init.d/lvm start
  1. Verifique o sistema de arquivos antes de redimensionar
  • Verifique com e2fsck antes de qualquer resize.
e2fsck -f /dev/server1/root
  1. Planejamento de redução de espaço (raciocínio)
  • PV (/dev/md1) contém os LVs (/dev/server1/root e /dev/server1/swap_1).
  • LV root deve ficar menor que o LV em disco; PV deve ser ao menos soma dos LVs.
  • Estratégia: reduzir FS em LV root, reduzir LV root, remover swap se estiver no final, reduzir PV, reduzir array md.

No caso exemplo:

  • FS root: reduzir para 2 GB (escolha segura conforme uso real).
  • LV root: reduzir para 2.5 GB.
  • Deletar swap_1 (264 MB) porque está no final.
  • Reduzir PV para 3 GB.
  • Reduzir mdadm para 4 GB.
  1. Reduzir filesystem do LV root
  • Sempre reduza o filesystem antes de reduzir o LV. Garanta espaço suficiente!
resize2fs /dev/server1/root 2G
  1. Reduzir LV root
lvreduce -L2.5G /dev/server1/root
  1. Remover swap se for necessário
  • Se o swap estiver no final, remova-o para liberar espaço contíguo.
lvremove /dev/server1/swap_1
  1. Reduzir tamanho do PV para caber no novo array
  • Ajuste o PV para um valor menor que o tamanho final desejado do array. Aqui usamos 3G para o PV.
pvresize --setphysicalvolumesize 3G /dev/md1
  1. Reduzir o array RAID com mdadm
  • mdadm –grow –size usa unidades em KiB. No exemplo, 4 GiB = 4 x 1024 x 1024 = 4194304 KiB. O valor final deve ser múltiplo de 64.
mdadm --grow /dev/md1 --size=4194304
  1. Ajustar PV para ocupar o máximo agora disponível
pvresize /dev/md1
  1. Verificar o VG e recriar swap se necessário
  • Após pvresize, verifique vgdisplay; crie swap novamente com a quantidade de PEs desejada.

Exemplo de saída do vgdisplay após operações no sistema de resgate:

root@Knoppix:~# vgdisplay  
--- Volume group ---  
VG Name               server1  
System ID  
Format                lvm2  
Metadata Areas        1  
Metadata Sequence No  26  
VG Access             read/write  
VG Status             resizable  
MAX LV                0  
Cur LV                1  
Open LV               0  
Max PV                0  
Cur PV                1  
Act PV                1  
VG Size               4.00 GB  
PE Size               4.00 MB  
Total PE              1023  
Alloc PE / Size       640 / 2.50 GB  
Free  PE / Size       383 / 1.50 GB  
VG UUID               X3ZYTy-39yq-20k7-GCGk-vKVU-Xe0i-REdEu0  
  
root@Knoppix:~#
  • Recrie swap com o mesmo número de PEs que tinha antes (no exemplo, 66 PEs):
lvcreate --name swap_1 -l 66 server1
mkswap /dev/server1/swap_1
  1. Expandir LV root novamente com PEs livres
  • Exemplo estende por +317 PEs disponíveis:
lvextend -l +317 /dev/server1/root
resize2fs /dev/server1/root
e2fsck -f /dev/server1/root
  1. Reinicializar no sistema normal e re-adicionar o disco substituído
  • Zere o superbloco da partição substituta (se trocou o disco) e adicione-a de volta ao array.
mdadm --zero-superblock /dev/sda5
mdadm -a /dev/md1 /dev/sda5
  • Verifique sincronização:
cat /proc/mdstat

Você deve ver /dev/sdb5 e /dev/sda5 sincronizando.

Checklists por função

Administrador Sênior

  • Verificar backups atuais.
  • Validar plano de redução e números (tamanhos de LV/PV).
  • Aprovar janela de manutenção.

Administrador (execução)

  • Executar comandos de validação (pvdisplay, vgdisplay, lvdisplay).
  • Marcar e remover disco falho.
  • Zerar superbloco e entrar em resgate.
  • Seguir passo a passo do playbook.
  • Testar boot e monitorar /proc/mdstat.

Engenheiro de Suporte (rollback)

  • Ter imagem de disco/partição recente.
  • Ter acesso a console para restauração de boot.
  • Recriar ambiente de resgate para restaurar PV/LVs se necessário.

Critérios de aceitação (Kriterien de aceitação)

  • O sistema boota normalmente no modo convencional.
  • /dev/md1 tem exatamente o tamanho desejado (4 GiB conforme exemplo).
  • Todos os volumes LVM esperados existem e montam com sucesso.
  • /proc/mdstat mostra array sem falhas e, após re-adicionar, sincronizando.

Testes e casos de aceitação mínimos

  • Teste 1: e2fsck sem erros em /dev/server1/root após resize2fs.
  • Teste 2: lvdisplay mostra LVs com tamanhos esperados.
  • Teste 3: reboot e verificação de mounts via df -h.
  • Teste 4: mdadm –detail /dev/md1 mostra membros corretos.

Quando este procedimento falha — contramedidas

  • Problema: resize2fs falha por dados além do tamanho alvo.
    Mitigação: aumente o tamanho alvo do resize2fs para acomodar dados; verifique uso real com du -sh antes.

  • Problema: pvresize –setphysicalvolumesize rejeita tamanho por restrição de metadados.
    Mitigação: garanta que LVs foram reduzidos e que PV tem espaço livre contíguo. Remova LVs não essenciais temporariamente.

  • Problema: mdadm –grow falha por alinhamento.
    Mitigação: verifique se o valor KiB passado é múltiplo de 64 e compatível com blocos do dispositivo.

Alternativas e abordagens diferentes

  • Abordagem segura (sem redução online): adicionar discos temporários, migrar dados, recriar array com novo layout e migrar LVM. Esta opção evita risco de reduzir PV já usado.

  • Usar LVM thin provisioning para armazenar temporariamente volumes durante a reorganização.

  • Se hardware permitir, clonar discos completos para backup offline e reconfigurar RAID do zero.

Fluxo de decisão (Mermaid)

flowchart TD
  A[Disco falhou?] -->|Sim| B{Swap está no final do PV?}
  A -->|Não| Z[Fazer manutenção padrão RAID]
  B -->|Sim| C[Deletar swap_1, reduzir FS e LV]
  B -->|Não| D[Reduzir apenas LV final e FS]
  C --> E[pvresize menor]
  D --> E
  E --> F[mdadm --grow --size]
  F --> G[Recriar swap, lvextend, resize2fs]
  G --> H[Testes e reboot]
  H --> I[Re-adicionar disco e sincronizar]

Riscos e mitigação (matriz simplificada)

  • Perda de dados por comando errado — Mitigação: backup completo e verificação dupla dos comandos antes de executar.
  • Incompatibilidade entre versões do mdadm/LVM — Mitigação: usar ambiente de resgate com mesmas versões ou documentar diferenças.
  • Disco de substituição com partições pré-existentes — Mitigação: sempre zerar superbloco antes de adicionar.

Notas de compatibilidade e migração

  • mdadm e LVM mantêm compatibilidade razoável entre versões modernas. Porém, sempre teste em um ambiente não produtivo quando migrar major versions.
  • Ao clonar partições, preserve alinhamento e tabelas de partição para evitar problemas de performance.

Mini-metodologia (resumo do processo)

  1. Identificar e remover o disco falho.
  2. Bootar em ambiente de resgate.
  3. Reduzir filesystem do LV alvo.
  4. Reduzir LV, remover LVs finais se necessário.
  5. Reduzir PV para caber no novo array reduzido.
  6. Reduzir array md com mdadm.
  7. Ajustar PV, recriar LVs, expandir filesystems.
  8. Re-adicionar disco substituído e verificar sincronização.

Checklist final antes de reiniciar no sistema normal

  • e2fsck OK em todos os LVs relevantes
  • vgdisplay mostra espaço livre e LVs esperados
  • swap recriado e mkswap executado
  • mdadm –grow completou sem erros
  • backups validados

Resposta rápida para incidentes (runbook de rollback)

  1. Se o sistema não bootar, boot em resgate e monte volume raiz manualmente.
  2. Verifique logs em /var/log/syslog e dmesg.
  3. Se LVs foram reduzidos demais, tente restaurar a partir de snapshot ou backup de disco.
  4. Se PV corrompido, recuperar com backup de metadata LVM (vgcfgrestore) se houver cópias.

Glossário 1 linha

  • mdadm: ferramenta para criar e gerenciar arrays RAID no Linux.
  • LVM: camada de abstração de volumes lógicos para flexibilidade de armazenamento.

Resumo final

Reduzir um array RAID degradado implica planejamento cuidadoso: remover o disco falho, usar um ambiente de resgate, reduzir filesystem e LVs na ordem correta, ajustar PV e reduzir o array com mdadm, e finalmente re-criar quaisquer LVs removidos e re-adicionar discos. Sempre tenha backups e uma janela de manutenção aprovada.

Important: revise todos os tamanhos e uso real de disco antes de executar lvreduce/resize2fs. Erros nesses passos podem causar perda de dados.

Fim do guia.

Autor
Edição

Materiais semelhantes

Chamada em Espera não funciona no iOS 16?
Suporte Técnico

Chamada em Espera não funciona no iOS 16?

Como criar Video Overviews no NotebookLM
Educação

Como criar Video Overviews no NotebookLM

Impedir apps em segundo plano no Android
Android

Impedir apps em segundo plano no Android

Reduzir array RAID degradado com mdadm e LVM
Linux

Reduzir array RAID degradado com mdadm e LVM

Consertar som ausente em Stories do Instagram no iPhone
Tutoriais

Consertar som ausente em Stories do Instagram no iPhone

Rastrear e evitar números de telefone falsos
Segurança e Privacidade

Rastrear e evitar números de telefone falsos