mdadm raid 1 grub apenas em sda

6

Acabei de configurar um servidor CentOS 6.3 de 64 bits com o mdadm, mas uma lâmpada elétrica acendeu e percebi que o grub só seria instalado na primeira unidade, que tem o mesmo uso e cinzeiro em uma motocicleta.

Eu dei uma olhada para confirmar minha suspeita:

grub> find /grub/stage1
find /grub/stage1
 (hd0,0)

Por isso, atualizei o mapa do meu dispositivo para que parecesse:

(fd0)   /dev/fd0
(hd0)   /dev/sda
(hd1)   /dev/sdb

(Observe que a entrada (hd1) foi adicionada por mim

então eu tentei instalar o grub em / dev / sdb

E eu recebo:

grub> root (hd1,0)
root (hd1,0)
 Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
setup (hd1)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... no

Error 15t: File not found

Então eu fiz algumas pesquisas no Google (infelizmente o google acabou de fazer um bom trabalho e pegou 100 exemplos de instalação do grub que não ajudam aqui)

Depois de encontrar algumas pistas, tentei:

# grub-install --recheck /dev/sdb

Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script 'grub-install'.

(fd0)   /dev/fd0
(hd0)   /dev/sda
(hd1)   /dev/sdb

# grub-install /dev/sdb
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script 'grub-install'.

(fd0)   /dev/fd0
(hd0)   /dev/sda
(hd1)   /dev/sdb

Que tipo de sugere que o grub agora está instalado em / dev / sdb também, no entanto, se eu der outra olhada, ainda recebo:

grub> find /grub/stage1
find /grub/stage1
 (hd0,0)

saídas divididas para as 2 unidades:

SDA

Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
 1      17.4kB  500MB   500MB   ext3         1     boot
 2      500MB   81.0GB  80.5GB               2     raid
 3      81.0GB  85.0GB  4000MB               3     raid
 4      85.0GB  3001GB  2916GB               4     raid

SDB

Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
 1      17.4kB  500MB   500MB   ext3         1
 2      500MB   81.0GB  80.5GB               2     raid
 3      81.0GB  85.0GB  4000MB               3     raid
 4      85.0GB  3001GB  2916GB               4     raid

E mdadm mdstat:

Personalities : [raid1]
md1 : active raid1 sdb3[1] sda3[0]
      3905218 blocks super 1.1 [2/2] [UU]

md2 : active raid1 sdb4[1] sda4[0]
      2847257598 blocks super 1.1 [2/2] [UU]

md0 : active raid1 sda2[0] sdb2[1]
      78612189 blocks super 1.1 [2/2] [UU]

Alguém é capaz de lançar alguma luz sobre a situação, parece que eu estou 99% lá no momento e faltando algo óbvio.

Obrigado.

Editar atualização:

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/md0               74G   18G   53G  25% /
tmpfs                 580M     0  580M   0% /dev/shm
/dev/sda1             462M   98M  341M  23% /boot
xenstore              580M   64K  580M   1% /var/lib/xenstored

/ está no md0 que é composto de sda2 e sdb2 swap é md1 que é sda3 e sdb3 md2 é LVM no entanto / boot é apenas em / sda1

Suponho que esse seja o problema, a resolução seria criar md4 e conter sd a 1 e sd b 1

Talvez eu tenha algumas coisas misturadas na minha cabeça, mas eu supus que o grub não estava instalado em uma partição, mas os primeiros blocos da unidade, por exemplo, sda ou hd0 / 1

Qualquer esclarecimento e conselho é apreciado.

    
por Backtogeek 27.02.2013 / 19:33

2 respostas

4

Este deve ser o seu problema

root (hd1,0)
 Filesystem type is ext2fs, partition type 0x83

Siga os seguintes passos:

  • Crie as partições 2 / boot em / dev / sda1 e / dev / sdb1 - digite fd (raid autodetect do Linux) - use sua ferramenta favorita (fdisk, cfdisk, gparted, ...) (fd00 para GPT)
  • Lembre-se de ativar o sinalizador de inicialização em ambas as partições, sda1 e sdb1 (não para GPT)
  • Força os discos a serem um novo ataque:

    mdadm --zero-superblock /dev/sda1 
    mdadm --zero-superblock /dev/sdb1
    
  • Ao criar os metadados de raid que serão sua partição / boot, use a versão 0.9. O Linux não pode autodetectar versões mais recentes (sem um ramdisk).

    mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sda1 /dev/sdb1 --metadata=0.9
    
  • Formatar usando ext2 ou ext3

  • Instale seu Linux de escolha, SEM formatar o / boot

Após a primeira inicialização da sua distribuição:

  • Corrija seu / etc / fstab para apontar / inicializar para / dev / md0 (talvez não seja necessário)
  • Instale o grub nos 2 discos MBR

    # grub /dev/sda
     grub> root (hd0,0)
     grub> setup (hd0)
     grub> quit
     quit
    
    # grub /dev/sdb
     grub> root (hd1,0)
     grub> setup (hd1)
     grub> quit
     quit
    
  • Edite seu gerenciador de inicialização (instruções para o Grub1)

  • Pesquise a linha "padrão" e adicione a opção "alternativa" abaixo

    vi /boot/grub/menu.lst
    default 0
    fallback 1
    
  • Adicione outra entrada ao seu gerenciador de inicialização (novamente, no meu caso eu escolhi o grub1 já que é menos complicado e é bom o suficiente para minhas necessidades), um de cada apontando para as diferentes partições de inicialização que são membros do raid:

    title           Debian GNU/Linux, kernel 2.6.32-5-686  (default)
    root            (hd0,0)
    kernel          /vmlinuz-2.6.32-5-686 root=/dev/mapper/vg-root ro quiet
    initrd          /initrd.img-2.6.32-5-686
    
    title           Debian GNU/Linux, kernel 2.6.32-5-686  (fallback)
    root            (hd1,0)
    kernel          /vmlinuz-2.6.32-5-686 root=/dev/mapper/vg-root ro quiet
    initrd          /initrd.img-2.6.32-5-686 
    
  • Observe que, no meu caso, eu tenho uma camada LVM no meu / md raid.

Concluído. Isso deve ser o suficiente para você ter um gerenciador de inicialização "redundante".

    
por 28.03.2013 / 13:30
1

Se você deseja mapear essas duas unidades em outra matriz raid1, você decide. É uma escolha legítima, porque você poderia instalar o grub em md4 diretamente e evitar o burburinho de gerenciar as duas instalações manualmente. Eu fiz isso.

Na minha experiência, o arquivo de mapa do dispositivo é amplamente irrelevante e seu comportamento (como o grub o lê) é, na melhor das hipóteses, imprevisível, se não completamente arbitrário.

O comando device do shell do grub é muito mais confiável. Você pode ler as informações de ajuda, mas a sintaxe básica fala por si:

grub> device (hd0) /dev/md4

Depois disso, / dev / md4 será mapeado para hd0 na sessão do grub atualmente em execução, desconsiderando o arquivo de mapeamento do dispositivo. A partir daqui, procederíamos normalmente com root (hd0) e setup (hd0,x) . A razão para instalar em uma partição é explicada por Henry S.

AFAIK, a única coisa além do "código de inicialização" (stage1) que é gravado nos primeiros 512 bytes da unidade (MBR) é o número de partição em que esse estágio deve procurar o menu.

É possível estragar tudo. Um seria recebido com um prompt em vez de um menu após o POST, mas o grub fornece comandos para "inicializar" esse menu a partir de uma partição (arquivo) diferente da especificada na instalação. Geralmente funciona sem intervenção, porque a "primeira unidade de inicialização" na bios será detectada como "hd0".

    
por 22.03.2013 / 10:38