Preparando o GRUB2 e finalizando RAID1 em um sistema LVM ativo
Objetivo principal
Garantir que o carregador de boot GRUB2 e a configuração do software RAID (mdadm) estejam corretos em um sistema Linux que usa LVM sobre RAID1, de modo que o servidor possa inicializar de qualquer disco físico (/dev/sda ou /dev/sdb).
Pré-requisitos rápidos
- Acesso root ou sudo em um console.
- mdadm, lvm2 e grub instalados no sistema.
- Arrays RAID já criados (por exemplo /dev/md0 para /boot e /dev/md1 para LVM).
6 Preparando o GRUB2
Depois, devemos certificar que o carregador GRUB2 esteja instalado em ambos os discos físicos, /dev/sda e /dev/sdb:
grub-install /dev/sda
grub-install /dev/sdb
Agora reinicie o sistema e verifique se ele inicializa corretamente a partir dos arrays RAID:
reboot
Importante: reiniciar é necessário sempre que o kernel e a configuração de boot forem alterados; planeje uma janela de manutenção se for um servidor de produção.
7 Preparando /dev/sda
Se tudo correr bem, você deverá ver /dev/md0 na saída de:
df -h
Exemplo de saída esperada:
root@server1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server1-root
4.5G 722M 3.6G 17% /
tmpfs 249M 0 249M 0% /lib/init/rw
udev 244M 128K 244M 1% /dev
tmpfs 249M 0 249M 0% /dev/shm
/dev/md0 236M 18M 206M 8% /boot
root@server1:~#
A saída de:
cat /proc/mdstat
deve ser semelhante a:
root@server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[2] sdb5[1]
4989940 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sdb1[1]
248820 blocks super 1.2 [2/1] [_U]
unused devices:
root@server1:~#
E as saídas de pvdisplay, vgdisplay e lvdisplay devem mostrar que o LVM está sobre /dev/md1:
pvdisplay
root@server1:~# pvdisplay
--- Physical volume ---
PV Name /dev/md1
VG Name server1
PV Size 4.76 GiB / not usable 1012.00 KiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1218
Free PE 0
Allocated PE 1218
PV UUID W4I07I-RT3P-DK1k-1HBz-oJvp-6in0-uQ53KS
root@server1:~#
vgdisplay
root@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.76 GiB
PE Size 4.00 MiB
Total PE 1218
Alloc PE / Size 1218 / 4.76 GiB
Free PE / Size 0 / 0
VG UUID m99fJX-gMl9-g2XZ-CazH-32s8-sy1Q-8JjCUW
root@server1:~#
lvdisplay
root@server1:~# lvdisplay
--- Logical volume ---
LV Name /dev/server1/root
VG Name server1
LV UUID 8SNLPE-gHqA-a2LX-BO9o-0QQO-DV2z-3WvTYe
LV Write Access read/write
LV Status available
# open 1
LV Size 4.51 GiB
Current LE 1155
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Name /dev/server1/swap_1
VG Name server1
LV UUID kYaKtb-vkkV-TDDE-me1R-nnER-dzN8-BcVTwz
LV Write Access read/write
LV Status available
# open 1
LV Size 252.00 MiB
Current LE 63
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
root@server1:~#
Alterando o tipo de partição /dev/sda1
Agora devemos alterar o tipo da partição /dev/sda1 para Linux raid autodetect (código fd):
fdisk /dev/sda
Exemplo interativo (você pressiona as teclas indicadas):
root@server1:~# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): <-- t
Partition number (1-5): <-- 1
Hex code (type L to list codes): <-- fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): <-- w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
root@server1:~#
Nota: se fdisk se recusar a reler a tabela, rode partprobe
ou planeje um reboot controlado.
Adicionando /dev/sda1 ao array /dev/md0
Depois de ajustar o tipo de partição, adicione /dev/sda1 ao array RAID:
mdadm --add /dev/md0 /dev/sda1
Verifique o estado do array:
cat /proc/mdstat
Exemplo de saída após a adição (observe que agora md0 mostra ambas as partições):
root@server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[2] sdb5[1]
4989940 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sda1[2] sdb1[1]
248820 blocks super 1.2 [2/2] [UU]
unused devices:
root@server1:~#
Atualizando /etc/mdadm/mdadm.conf
Copie o arquivo original (se existir) e regenere as definições de arrays:
cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Depois, verifique o conteúdo de /etc/mdadm/mdadm.conf. Deve conter as entradas ARRAY com UUIDs, por exemplo:
cat /etc/mdadm/mdadm.conf
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions
# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes
# automatically tag new arrays as belonging to the local system
HOMEHOST
# instruct the monitoring daemon where to send mail alerts
MAILADDR root
# definitions of existing MD arrays
# This file was auto-generated on Tue, 24 May 2011 21:11:37 +0200
# by mkconf 3.1.4-1+8efb9d1
ARRAY /dev/md/0 metadata=1.2 UUID=6cde4bf4:7ee67d24:b31e2713:18865f31 name=server1.example.com:0
ARRAY /dev/md/1 metadata=1.2 UUID=3ce9f2f2:ac89f75a:530c5ee9:0d4c67da name=server1.example.com:1
Importante: use UUIDs em vez de nomes de dispositivo para evitar problemas quando o mapeamento de discos mudar.
Removendo script obsoleto do GRUB e reconstruindo a configuração
Remova o script legado que adicionava entradas de boot específicas para SW RAID:
rm -f /etc/grub.d/09_swraid1_setup
Em seguida, atualize a configuração do GRUB e regenere a initramfs:
update-grub
update-initramfs -u
Verifique /boot/grub/grub.cfg; as entradas de menu dentro da seção ### BEGIN /etc/grub.d/10_linux ###
devem apontar para /dev/md0 (ou usar UUID/mapeamento adequado) e não mais para (hd0) ou (hd1).
Depois, garanta novamente que o GRUB2 está instalado em ambos os discos:
grub-install /dev/sda
grub-install /dev/sdb
Reinicie o sistema:
reboot
Se tudo estiver correto, o sistema deve inicializar sem problemas a partir do array RAID1.
Critérios de aceitação
- O comando
cat /proc/mdstat
mostra arrays ativos com estado [UU] ou reconstruindo conforme esperado. /boot
está montado a partir de /dev/md0 conformedf -h
.- GRUB está instalado em ambos os discos (
grub-install
não retorna erro) e a entrada em /boot/grub/grub.cfg referencia o MD/UUID correto. - O sistema inicializa corretamente após reboot, mesmo com um dos discos removido (teste opcional em manutenção).
Checklist para o administrador (passo a passo)
- Fazer backup das configurações importantes (/etc/mdadm, /etc/default/grub, /boot).
- [ ] Confirmar arrays com
cat /proc/mdstat
. - [ ] Confirmar LVM com
pvdisplay
,vgdisplay
,lvdisplay
. - [ ] Ajustar tipo de partição com
fdisk /dev/sda
e gravar (código fd). - [ ] Adicionar partição ao array:
mdadm --add /dev/md0 /dev/sda1
. - [ ] Atualizar /etc/mdadm/mdadm.conf com
mdadm --examine --scan
. - Remover /etc/grub.d/09_swraid1_setup se presente.
- [ ]
update-grub
eupdate-initramfs -u
. - [ ]
grub-install /dev/sda && grub-install /dev/sdb
. - Reiniciar e verificar inicialização.
Testes e critérios de verificação
- Execução de
mdadm --detail /dev/md0
deve mostrar ambos os dispositivos e o estado. lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT
ajuda a visualizar mapeamentos.- Simule falha de um disco (removê-lo logicamente ou via hot-swap em manutenção) e confirme que o sistema ainda inicializa e que o array entra em modo degradado.
Quando isso pode falhar (cenários comuns)
- Tipo de partição incorreto: se /dev/sda1 não estiver marcado como fd, o mdadm pode não reconhecê-la automaticamente.
- Tabela de partição não recarregada: fdisk avisa que a nova tabela só será usada após reboot ou
partprobe
. - GRUB configurado apenas para dispositivos específicos (hd0) em vez de usar UUIDs/MD: o sistema pode não inicializar se o mapeamento mudar.
- Falta de entries em /etc/mdadm/mdadm.conf: arrays criados manualmente podem não ser montados automaticamente no boot.
Abordagens alternativas
- Usar UUIDs em grub.cfg e em fstab para evitar dependência de nomes de dispositivo.
- Em sistemas UEFI, além de instalar GRUB no MBR/BIOS, certifique-se de que a EFI System Partition (ESP) esteja replicada ou em RAID adequada e que o firmware saiba sobre as entradas.
- Em ambientes críticos, considere usar partitons BIOS/UEFI separadas para cada disco com um processo automatizado de sincronização da ESP.
Mini-metodologia (resumo rápido para equipes)
- Verificar estado atual (mdstat, lvm, df).
- Alinhar partições e marcar como RAID (fd).
- Adicionar partição faltante ao array (mdadm –add).
- Atualizar mdadm.conf e regenerar initramfs/GRUB.
- Instalar GRUB em todos os discos e reiniciar.
- Testar failover (remover um disco) em ambiente controlado.
Decision flow (ajuda rápida)
flowchart TD
A[Iniciar verificação] --> B{Existe /dev/md0 e /dev/md1?}
B -- Sim --> C{/boot montado em /dev/md0?}
B -- Não --> E[Corrigir criação do RAID e LVM]
C -- Sim --> D{GRUB instalado em ambos os discos?}
C -- Não --> E
D -- Sim --> F[Regenerar initramfs e reiniciar]
D -- Não --> G[Executar grub-install em ambos os discos]
G --> F
F --> H[Verificar boot; testar remoção de um disco]
E --> H
Lista de verificação por função
- Operações (Sysadmin): seguir o checklist completo, agendar janela de manutenção.
- Engenheiro de infraestrutura: validar políticas de backup e failover, documentar UUIDs.
- Testes/QA: criar cenário de perda de disco e validar boot e integridade dos dados.
Notas de segurança e privacidade
- Execute esses procedimentos em modo console seguro (não em sessões não confiáveis via rede).
- Mantenha backups de fstab e /etc/mdadm antes de alterar arquivos.
Resumo e próximos passos
Importante: após essa sequência, o sistema ficará resiliente a falhas de disco a nível de boot, pois GRUB e /boot estarão presentes e configurados para usar o array RAID1.
Se possível, faça um teste controlado de falha de disco: remova fisicamente ou marque um disco como ausente e reinicie para confirmar que o sistema inicializa do disco restante. Documente as UUIDs e guarde uma cópia segura de /etc/mdadm/mdadm.conf.
Parabéns — você configurou com sucesso RAID1 por software sobre LVM e garantiu que o GRUB2 esteja preparado para inicializar a partir de qualquer disco.
Materiais semelhantes

Instalar Linux no Android — guia prático

Sincronizar arquivos sem usar a nuvem

Corrigir Hogwarts Legacy travando no PC

Montar um PC: Guia completo passo a passo
