Veja como verificar o RAID por software com mdadm, receber alertas por e-mail e trocar um disco com defeito no Debian e no Proxmox sem perder dados.

Para que serve

O RAID por software com mdadm, nativo do Linux, espelha os dados entre dois ou mais discos. Em RAID 1, se um disco falhar, o servidor continua funcionando com o outro, mas sem proteção até que o disco seja trocado e o espelho reconstruído. Este artigo mostra como conferir o estado do RAID, receber aviso por e-mail quando algo der errado e conduzir a troca de um disco.

Quando este artigo se aplica: na E-Consulters, os NVMe ficam sempre em RAID por software (mdadm ou ZFS espelhado), porque não passam pela controladora. Já os SSDs de sistema, na maioria dos servidores, ficam no RAID por hardware da controladora HPE Smart Array; só alguns servidores não têm a controladora e usam mdadm também nos SSDs. Para os SSDs na controladora, use o artigo "Como verificar o RAID da controladora HPE Smart Array (ssacli) no Linux e no Proxmox". Se os NVMe estiverem em ZFS espelhado, a troca é feita com zpool replace (veja "Armazenamento no Proxmox: ZFS espelhado nos NVMe ou LVM-thin?"). Para descobrir qual é o seu caso, rode cat /proc/mdstat, zpool status e lsblk -d -o NAME,MODEL (um disco com modelo LOGICAL VOLUME é da controladora).

Pré-requisitos

  • Acesso root (SSH ou console IPMI/iLO).
  • Pacotes mdadm, smartmontools e gdisk instalados (apt install smartmontools gdisk).
  • Backup recente e testado. RAID protege contra falha de disco, não contra exclusão acidental, ransomware ou erro de comando.

Verificar o estado do RAID por software com mdadm

cat /proc/mdstat
mdadm --detail /dev/md0

Em /proc/mdstat, cada array mostra algo como [2/2] [UU]. Cada U é um disco ativo. [2/1] [U_] ou [_U] significa que um membro está faltando ou falhou; um (F) ao lado do nome do disco indica falha. No mdadm --detail, o campo State deve ser clean ou active; degraded pede ação.

Confira também a saúde de cada disco físico, antes que ele saia do RAID:

smartctl -H /dev/sda
smartctl -a /dev/sda | grep -iE 'realloc|pending|uncorrect|wear|media'
smartctl -a /dev/nvme0n1

Receber alertas por e-mail

O Debian já roda o monitor do mdadm (mdmonitor.service) e uma verificação mensal dos arrays. Para receber os avisos, defina o destinatário em /etc/mdadm/mdadm.conf:

MAILADDR voce@suaempresa.com.br

O servidor precisa conseguir enviar e-mail (por exemplo, com postfix ou msmtp configurado com um relay autenticado; veja também o artigo «Como receber alertas do servidor no Telegram, e-mail ou WhatsApp»). Teste com:

mdadm --monitor --scan --test --oneshot

Passo a passo: trocar um disco com defeito

Nos exemplos, /dev/sda é o disco bom e /dev/sdb é o que falhou (em um par de NVMe, os nomes seriam algo como /dev/nvme0n1 e /dev/nvme1n1, com partições nvme1n1p1, p2...), com as partições sdb1 (EFI), sdb2 (em md0) e sdb3 (em md1). Confirme os nomes no seu servidor: trocar as letras pode destruir o disco bom.

1. Identificar o disco pelo número de série

lsblk -o NAME,SIZE,MODEL,SERIAL
ls -l /dev/disk/by-id/ | grep -v part

Anote o modelo e o número de série do disco com defeito e também do disco bom.

2. Retirar o disco dos arrays

Marque como falho cada partição que ainda aparece ativa e remova-as:

mdadm --manage /dev/md0 --fail /dev/sdb2
mdadm --manage /dev/md0 --remove /dev/sdb2
mdadm --manage /dev/md1 --fail /dev/sdb3
mdadm --manage /dev/md1 --remove /dev/sdb3

3. Solicitar a troca física

Abra um ticket informando o servidor, o número de série do disco com defeito, o número de série do disco que deve permanecer e a saída de cat /proc/mdstat. O suporte combina com você os próximos passos da troca.

4. Copiar a tabela de partições para o disco novo

Depois da troca, confirme com lsblk qual é o disco novo (sem partições). Para tabelas GPT, copie a tabela do disco bom para o novo e gere identificadores únicos:

sgdisk /dev/sda --replicate=/dev/sdb
sgdisk --randomize-guids /dev/sdb

Atenção à ordem: o disco ao final do comando (/dev/sda) é a origem; o que vem depois de --replicate= é o destino, que será sobrescrito. Para tabelas MBR (antigas), use sfdisk -d /dev/sda | sfdisk /dev/sdb.

5. Adicionar as partições ao RAID

mdadm --manage /dev/md0 --add /dev/sdb2
mdadm --manage /dev/md1 --add /dev/sdb3
watch -n 5 cat /proc/mdstat

A reconstrução (resync/recovery) roda em segundo plano, com o servidor em uso. Em discos grandes pode levar horas. O kernel limita a velocidade para não prejudicar a produção; se quiser acelerar fora do horário de pico:

sysctl -w dev.raid.speed_limit_min=100000

6. Tornar o disco novo inicializável

  • Boot BIOS (legado): grub-install /dev/sdb
  • Boot UEFI: a partição EFI normalmente não fica dentro do RAID. Copie a do disco bom para a do disco novo e reinstale o GRUB:
    dd if=/dev/sda1 of=/dev/sdb1 bs=4M
    grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian /dev/sdb
    efibootmgr -v
    Confira no efibootmgr se há entradas de boot para os dois discos.

Como saber se funcionou

  • cat /proc/mdstat volta a mostrar [UU] em todos os arrays.
  • mdadm --detail /dev/md0 mostra State : clean e os dois discos como active sync.
  • Opcional, em janela de manutenção: desative temporariamente o disco antigo no BIOS ou na ordem de boot e confirme que o servidor sobe pelo disco novo.

Problemas comuns

  • mdadm: Cannot open /dev/sdb2: Device or resource busy: a partição ainda pertence a outro array ou ao LVM. Confira com lsblk e cat /proc/mdstat.
  • Disco novo maior que o antigo: não tem problema; a cópia de partições usa o tamanho do disco bom e o espaço extra fica livre.
  • Disco novo menor (mesmo nominalmente igual): a cópia da tabela falha ou a partição não cabe. Informe no ticket para que seja usado um disco de capacidade igual ou maior.
  • Array aparece como md127 após o reinício: atualize o mdadm.conf com mdadm --detail --scan e rode update-initramfs -u.
  • Reconstrução parou com erro de leitura no disco bom: pare imediatamente e garanta o backup. O disco que restou também pode estar falhando.

Para entender os níveis de RAID, veja também o artigo «RAID 0, 1, 5 e 10: o que é cada um e onde entra o ZFS». Para acompanhar o desgaste dos discos antes da falha, veja «Como monitorar a saúde do disco e a temperatura do servidor (smartd, NVMe e IPMI)».

Perguntas frequentes

Como saber se o RAID mdadm está degradado?

Rode cat /proc/mdstat. Se aparecer [U_] ou [_U], ou um (F) ao lado de um disco, o array está degradado. O mdadm --detail mostra degraded no campo State.

O servidor continua funcionando com um disco só?

Sim, em RAID 1 o servidor segue no ar com o disco que restou, mas sem nenhuma proteção. Troque o disco com defeito o quanto antes e confira o backup enquanto isso.

Quanto tempo demora a reconstrução do RAID?

Depende do tamanho dos discos e do uso do servidor; em discos grandes pode levar horas. Acompanhe com watch cat /proc/mdstat e, fora do horário de pico, aumente dev.raid.speed_limit_min.

Os SSDs de sistema também usam mdadm?

Na maioria dos servidores da E-Consulters, não: os SSDs de sistema ficam no RAID por hardware da controladora HPE Smart Array e são verificados com o ssacli. Os NVMe é que ficam sempre em RAID por software.

RAID substitui backup?

Não. O RAID protege contra a falha de um disco, mas copia para o espelho, na hora, qualquer exclusão, corrupção ou criptografia por ransomware.

Leitura complementar

Precisa de ajuda?

Para a troca física de um disco, abra um ticket com o número de série do disco com defeito e a saída de cat /proc/mdstat e smartctl -a.

Esta resposta lhe foi útil? 0 Usuários acharam útil (0 Votos)

Leia também