Preparando o GRUB e /dev/sda para RAID1 em sistema LVM
Objetivo e público-alvo
Guia prático para administradores Linux que precisam instalar o bootloader GRUB em discos usados por software RAID1 (mdadm) com volumes LVM em execução. Assume conhecimento básico de comandos shell, LVM e mdadm.
Sumário rápido
- Instalar GRUB no(s) disco(s) correto(s) usando o shell do GRUB.
- Verificar arrays md0/md1 e volumes LVM com df, /proc/mdstat, pvdisplay, vgdisplay e lvdisplay.
- Alterar o tipo de partição para “fd” (Linux raid autodetect) com fdisk.
- Adicionar /dev/sda1 ao array md0 e atualizar /etc/mdadm.conf.
- Reiniciar e confirmar que o sistema arranca do RAID.
Importante: faça backup dos dados críticos antes de alterar partições, adicionar dispositivos a um array ou instalar um bootloader. Em ambientes de produção, teste em um ambiente controlado primeiro.
Preparando o GRUB
A seguir devemos instalar o carregador de boot GRUB no segundo disco /dev/sdb.
Execute:
grub
No shell do GRUB, digite estes comandos exatamente:
root (hd0,0)
Saída esperada no shell GRUB (exemplo):
grub> root (hd0,0)
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub>
Em seguida execute:
setup (hd0)
Exemplo de diálogo do GRUB durante o setup (não modifique):
grub> setup (hd0)
setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub>
Depois, a título de redundância (instalar também no outro disco), repita para o outro disco/partição do RAID:
root (hd1,0)
Exemplo:
grub> root (hd1,0)
root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd
grub>
E então:
setup (hd1)
Exemplo de saída:
grub> setup (hd1)
setup (hd1)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd1)"... 15 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub>
Para sair do shell do GRUB:
quit
Agora, de volta ao shell normal, reinicie a máquina e verifique se arranca a partir dos arrays RAID:
reboot
Verificação inicial após reinício
Se tudo correu bem, verifique que /dev/md0 está montado (ex.: /boot):
df -h
Exemplo de saída esperada:
[root@server1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
8.6G 1.4G 6.8G 18% /
/dev/md0 99M 16M 79M 17% /boot
tmpfs 250M 0 250M 0% /dev/shm
[root@server1 ~]#
Verifique o estado dos arrays:
cat /proc/mdstat
Exemplo:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1]
104320 blocks [2/1] [_U]
md1 : active raid1 sdb2[1] sda2[0]
10377920 blocks [2/2] [UU]
unused devices:
[root@server1 ~]#
Confira também os volumes LVM:
pvdisplay
vgdisplay
lvdisplay
Exemplos (saída real pode variar):
[root@server1 ~]# pvdisplay
--- Physical volume ---
PV Name /dev/md1
VG Name VolGroup00
PV Size 9.90 GB / not usable 22.69 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 316
Free PE 0
Allocated PE 316
PV UUID u6IZfM-5Zj8-kFaG-YN8K-kjAd-3Kfv-0oYk7J
[root@server1 ~]#
[root@server1 ~]# vgdisplay
--- Volume group ---
VG Name VolGroup00
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 9.88 GB
PE Size 32.00 MB
Total PE 316
Alloc PE / Size 316 / 9.88 GB
Free PE / Size 0 / 0
VG UUID ZPvC10-cN09-fI0S-Vc8l-vOuZ-wM6F-tlz0Mj
[root@server1 ~]#
[root@server1 ~]# lvdisplay
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID vYlky0-Ymx4-PNeK-FTpk-qxvm-PmoZ-3vcNTd
LV Write Access read/write
LV Status available
# open 1
LV Size 8.88 GB
Current LE 284
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol01
VG Name VolGroup00
LV UUID Ml9MMN-DcOA-Lb6V-kWPU-h6IK-P0ww-Gp9vd2
LV Write Access read/write
LV Status available
# open 1
LV Size 1.00 GB
Current LE 32
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
[root@server1 ~]#
Preparando /dev/sda (alterar tipo de partição)
Devemos alterar o tipo da partição /dev/sda1 para “Linux raid autodetect” (hex code fd). Use fdisk:
fdisk /dev/sda
Exemplo de sessão (interativas):
[root@server1 ~]# fdisk /dev/sda
The number of cylinders for this disk is set to 1305.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): <-- t
Partition number (1-4): <-- 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.
Syncing disks.
[root@server1 ~]#
Nota: a mensagem de aviso é comum se o disco está em uso; um reboot pode ser necessário para que o kernel leia a nova tabela.
Adicionando /dev/sda1 ao array md0
Depois de alterar o tipo, adicione a partição ao array md0:
mdadm --add /dev/md0 /dev/sda1
Verifique o status do array novamente:
cat /proc/mdstat
Exemplo após adicionar:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0] sdb1[1]
104320 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
10377920 blocks [2/2] [UU]
unused devices:
[root@server1 ~]#
Atualizando /etc/mdadm.conf
Registre a configuração atual do mdadm para /etc/mdadm.conf:
mdadm --examine --scan > /etc/mdadm.conf
Verifique o conteúdo:
cat /etc/mdadm.conf
Deve conter linhas do tipo:
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=0a96be0f:bf0f4631:a910285b:0f337164
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=f9e691e2:8d25d314:40f42444:7dbe1da1
Guardar este ficheiro assegura que o mdadm recriará os arrays automaticamente no boot.
Reiniciar e validar arranque
Após todas as alterações, reinicie o sistema:
reboot
Valide que o sistema arranca normalmente e que /boot está montado a partir de /dev/md0. Se o arranque falhar, revisite a seção de resolução de problemas abaixo.
Lista de verificação por função
Administrador (antes de começar):
- Backup completo dos dados críticos e configuração de /etc/mdadm.conf e /etc/fstab
- Acesso físico/console remoto (KVM/IPMI) para recuperação caso o servidor não inicie
- Planeamento de janela de manutenção
Técnico de campo/Operador (durante a execução):
- Verificar estado dos discos com smartctl
- Confirmar número de dispositivo (sda/sdb) correspondente ao hardware
- Executar comandos conforme guia e registar saídas
Após alteração:
- Confirmar arrays com cat /proc/mdstat
- Confirmar LVM com pvdisplay/vgdisplay/lvdisplay
- Confirmar GRUB instalado em ambos discos (se aplicável)
Critérios de aceitação
- /dev/md0 e /dev/md1 aparecem como ativos em /proc/mdstat.
- /boot está montado a partir de /dev/md0 (df -h).
- /etc/mdadm.conf contém as linhas ARRAY corretas.
- O sistema reinicia e chega ao prompt/GUI sem erro de boot.
Solução de problemas comum (runbook curto)
Problema: sistema não arranca após instalar GRUB.
Ações:- Entre via console série ou KVM/IPMI.
- Verifique se o MBR foi escrito em ambos discos (use dd para inspecionar os primeiros setores, com cuidado).
- Reinstale GRUB usando grub-install (ou repetir passos do shell GRUB).
- Verifique ordem de boot no BIOS/UEFI.
Problema: md0 não entra em modo sincronizado após adicionar dispositivo.
Ações:- Verifique dmesg e /var/log/messages para erros de I/O.
- Use mdadm –detail /dev/md0 para obter mais informações.
- Se a partição tiver tamanho diferente, recrie a partição para corresponder ao par.
Problema: fdisk avisa que a tabela será recarregada no próximo reboot.
Ações:- Planeje um reboot rápido.
- Se não puder reiniciar, use partprobe /dev/sda para tentar notificar o kernel (nem sempre funciona se o disco está em uso).
Quando essa abordagem pode falhar (contraexemplos)
- Sistemas com UEFI usando grub2/efibootmgr: o procedimento de GRUB clássico pode não ser suficiente — é necessário instalar em EFI System Partition (ESP).
- Controladoras RAID de hardware: use utilitários do fabricante em vez de mdadm.
- Discos com MBR/partições inconsistentes: sincronização pode falhar se as partições não tiverem o mesmo layout.
Abordagens alternativas
- Usar grub-install (GRUB2) no sistema em execução: grub-install /dev/sda /dev/sdb pode ser mais direto em sistemas modernos.
- Usar uma imagem de recuperação/LiveCD para instalar GRUB externamente, útil quando o sistema não está inicializável.
- Hardware RAID para delegar espelhamento ao RAID controller, simplificando o arranque (dependendo do caso, pode ser menos portátil).
Mini-metodologia (passos essenciais)
- Fazer backup.
- Instalar GRUB em ambos discos.
- Verificar arrays e LVM.
- Alterar tipo de partição para fd.
- Adicionar partição ao array md0.
- Atualizar /etc/mdadm.conf.
- Reiniciar e validar.
Riscos e mitigação
- Risco: perda de boot ao escrever incorretamente o MBR.
Mitigação: garantir acesso KVM/IPMI e ter mídia de recuperação pronta. - Risco: arranque a partir de um disco sem espelhamento.
Mitigação: instalar GRUB em todos os discos do array.
Glossário (1 linha cada)
- mdadm: utilitário para gerenciar arrays RAID de software em Linux.
- LVM: Logical Volume Manager, gerencia volumes lógicos sobre volumes físicos.
- GRUB: GRand Unified Bootloader, carregador de boot usado por muitas distribuições Linux.
Resumo final
Seguindo estes passos você terá o GRUB instalado nos discos associados ao RAID1, a partição /dev/sda1 marcada corretamente para RAID autodetect e o dispositivo adicionado ao md0. Atualize /etc/mdadm.conf e reinicie para confirmar que o sistema arranca de forma redundante a partir do RAID.
Notas finais: adapte os comandos ao seu ambiente (nomes de dispositivos, BIOS/UEFI, versões de GRUB) e, se possível, realize toda a operação durante uma janela de manutenção com backups verificados.
Materiais semelhantes

Corrigir touchpad que não funciona no Windows 10

Instalar BoltWire no Ubuntu 18.04
RAID1 em LVM: Preparar GRUB e /dev/sda

Desativar notificações do macOS High Sierra

Como criar um pôster impactante em 6 passos
