Guia de tecnologias

4 Criando nossos arrays RAID e preparando o sistema

5 min read Sistemas Atualizado 28 Sep 2025
Criar arrays RAID1 e preparar GRUB
Criar arrays RAID1 e preparar GRUB

Objetivo e variantes de busca

  • Principal: criar arrays RAID1 e migrar sistema Linux
  • Variantes relacionadas: RAID1 com mdadm, migrar /boot para RAID, instalar GRUB em dois discos, reparar arrays degradados

4 Criando nossos arrays RAID

Agora vamos criar os arrays RAID /dev/md0, /dev/md1 e /dev/md2. O /dev/sdb1 será adicionado a /dev/md0, /dev/sdb2 a /dev/md1 e /dev/sdb3 a /dev/md2. /dev/sda1, /dev/sda2 e /dev/sda3 não podem ser adicionados neste momento (o sistema está rodando neles). Usamos o placeholder missing nos três comandos abaixo:

mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2
mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb3

O comando abaixo mostra o estado dos arrays:

cat /proc/mdstat

Você deverá ver três arrays RAID degradados ([U] ou [U] indicam arrays degradados; [UU] indica array OK):

[root@server1 ~]# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sdb3[1]
      4618560 blocks [2/1] [_U]

md1 : active raid1 sdb2[1]
      513984 blocks [2/1] [_U]

md0 : active raid1 sdb1[1]
      104320 blocks [2/1] [_U]

unused devices: 
[root@server1 ~]#

Em seguida, criamos sistemas de arquivos nos arrays RAID (ext3 em /dev/md0 e /dev/md2; swap em /dev/md1):

mkfs.ext3 /dev/md0
mkswap /dev/md1
mkfs.ext3 /dev/md2

Agora criamos /etc/mdadm.conf para registrar os arrays:

mdadm --examine --scan > /etc/mdadm.conf

Mostre o conteúdo do arquivo:

cat /etc/mdadm.conf

No arquivo você deverá ver detalhes sobre os três arrays (degradados):

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=2848a3f5:cd1c26b6:e762ed83:696752f9
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=8a004bac:92261691:227767de:4adf6592
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=939f1c71:be9c10fd:d9e5f8c6:a46bcd49

5 Ajustando o sistema para RAID1

Monte /dev/md0 e /dev/md2 (não é necessário montar a partição swap /dev/md1):

mkdir /mnt/md0
mkdir /mnt/md2
mount /dev/md0 /mnt/md0
mount /dev/md2 /mnt/md2

Verifique com:

mount

A saída deve conter as entradas para /dev/md0 e /dev/md2, por exemplo:

[root@server1 ~]# mount
/dev/sda3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/md0 on /mnt/md0 type ext3 (rw)
/dev/md2 on /mnt/md2 type ext3 (rw)
[root@server1 ~]#

Edite /etc/fstab substituindo LABEL=/boot por /dev/md0, LABEL=SWAP-sda2 por /dev/md1 e LABEL=/ por /dev/md2. O arquivo deve ficar assim:

/dev/md2                 /                       ext3    defaults        1 1
/dev/md0                 /boot                   ext3    defaults        1 2
tmpfs                    /dev/shm                tmpfs   defaults        0 0
devpts                   /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                    /sys                    sysfs   defaults        0 0
proc                     /proc                   proc    defaults        0 0
/dev/md1                 swap                    swap    defaults        0 0

Edite também /etc/mtab para refletir /dev/md0 em /boot e /dev/md2 como /. Por exemplo:

/dev/md2 / ext3 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/md0 /boot ext3 rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0

Ajustes no GRUB

Abra /boot/grub/menu.lst e adicione fallback=1 logo após default=0:

default=0
fallback=1

Isso garante que, se o primeiro kernel falhar, o kernel do segundo slot será tentado.

No mesmo arquivo, copie o primeiro bloco de kernel e cole-o antes do bloco existente. Substitua root=LABEL=/ por root=/dev/md2 e root (hd0,0) por root (hd1,0). Exemplo:

title Fedora (2.6.23.1-42.fc8)
        root (hd1,0)
        kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/md2 rhgb quiet
        initrd /initrd-2.6.23.1-42.fc8.img

title Fedora (2.6.23.1-42.fc8)
        root (hd0,0)
        kernel /vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.23.1-42.fc8.img

O arquivo completo pode ficar semelhante a:

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda3
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
fallback=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.23.1-42.fc8)
        root (hd1,0)
        kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/md2 rhgb quiet
        initrd /initrd-2.6.23.1-42.fc8.img

title Fedora (2.6.23.1-42.fc8)
        root (hd0,0)
        kernel /vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.23.1-42.fc8.img

Aqui root (hd1,0) refere-se a /dev/sdb, que já faz parte dos nossos arrays.

Atualizar initrd e copiar arquivos

Atualize o ramdisk para refletir o novo root:

mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig
mkinitrd /boot/initrd-`uname -r`.img `uname -r`

Agora copie o conteúdo das partições do disco principal para os arrays montados:

cp -dpRx / /mnt/md2
cd /boot
cp -dpRx . /mnt/md0

6 Preparando o GRUB (Parte 1)

Em seguida, instale o GRUB no segundo disco /dev/sdb. Inicie o shell do grub:

grub

No prompt do GRUB, execute os comandos abaixo. Primeiro, aponte para a partição /boot em hd0 (que corresponde a /dev/sda1 no exemplo):

root (hd0,0)

Exemplo de resposta do GRUB:

grub> root (hd0,0)
 Filesystem type is ext2fs, partition type 0x83

grub>

Instale o GRUB no disco hd0:

setup (hd0)

Exemplo de saída (resumida):

grub> 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)"...  16 sectors are embedded.
 succeeded
 Running "install /grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
 Done.

grub>

Agora repita para hd1 (que corresponde a /dev/sdb no exemplo). Aponte para a partição e instale:

root (hd1,0)
setup (hd1)

Exemplo de saída:

grub> root (hd1,0)
 Filesystem type is ext2fs, partition type 0xfd

grub> 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)"...  16 sectors are embedded.
 succeeded
 Running "install /grub/stage1 (hd1) (hd1)1+16 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded
 Done.

grub>

Depois saia do shell do grub:

quit

Por fim, reinicie e teste o boot a partir dos arrays RAID:

reboot

Quando isso pode falhar

  • Se o initrd não tiver os módulos md/raid1, o kernel não consegue montar /dev/md2 no boot. Verifique se mkinitrd incluiu md-modules.
  • Se fstab/mtab estiverem com entradas erradas, o sistema pode travar no boot. Teste antes de reiniciar.
  • Se o GRUB não for instalado em ambos os discos, uma falha de disco pode deixar o sistema não inicializável.

Abordagens alternativas

  • Usar LVM sobre RAID: cria flexibilidade para redimensionar volumes lógicos.
  • Usar raid1 com dois discos apenas e substituir as partições uma a uma (sem placeholder missing) em manutenção.
  • Usar um gerenciador de boot moderno (grub2) se a distribuição suportar, com instalação em ambos os discos via grub-install.

Checagens rápidas (mini S.O.P.)

  • Confirme UUIDs em /etc/mdadm.conf: mdadm –examine –scan
  • Verifique módulos carregados: lsmod | grep md
  • Confirme que /dev/md0 e /dev/md2 estão montados antes de copiar dados
  • Recrie initrd e teste manualmente antes do reboot

Checklist por função

  • Administrador de sistemas
    • Validar /etc/fstab, /etc/mtab e /boot/grub/menu.lst
    • Gerar initrd atualizado e instalar GRUB em ambos os discos
  • Operações/On-call
    • Ter um console de recuperação disponível
    • Conhecer comandos de emergência para montar /dev/md* em um live-cd

Fatos-chave

  • Cada array é RAID1 com num-devices=2 (espelhamento).
  • Usamos o placeholder “missing” para criar o espelho sem o segundo membro presente.
  • /dev/md1 é apenas swap; /dev/md0 e /dev/md2 são ext3 neste procedimento.

Glossário rápido

  • mdadm: ferramenta para gerenciar arrays RAID em Linux.
  • initrd: imagem de ramdisk usada para carregar módulos no boot.
  • GRUB: carregador de boot capaz de inicializar kernels Linux.

Resumo

  • Criamos arrays RAID1 degradados, formatamos e montamos os sistemas de arquivos.
  • Atualizamos mdadm.conf, fstab, mtab e menu.lst para apontar para /dev/md*.
  • Recriamos initrd, copiamos dados para os arrays e instalamos GRUB em ambos os discos.
  • Reinicie e verifique o boot; se houver falhas, use o fallback configurado e atue segundo a checklist.

Importante: sempre tenha backups recentes antes de migrar partições críticas e teste o processo em um ambiente de laboratório se possível.

Autor
Edição

Materiais semelhantes

Corrigir erro I/O 0xc00000e9 no Windows 10
Windows

Corrigir erro I/O 0xc00000e9 no Windows 10

Mesclar vídeos com VLC — guia rápido
Vídeo

Mesclar vídeos com VLC — guia rápido

Corrigir serviço Print Spooler não em execução
Windows

Corrigir serviço Print Spooler não em execução

Como ocultar curtidas e comentários na aba Amigos
Privacidade

Como ocultar curtidas e comentários na aba Amigos

Criar arrays RAID1 e preparar GRUB
Sistemas

Criar arrays RAID1 e preparar GRUB

Como baixar e instalar Windows 11 25H2 (Release Preview)
Windows

Como baixar e instalar Windows 11 25H2 (Release Preview)