grub2 não encontra / boot no dispositivo RAID1 md0

2

Eu tenho o RAID1 md0 para / boot composto por 4 partições (sda2, sdb2, sdc2, sdd2). Estou usando o GPT em HDs de 2TB, então as primeiras partições em cada disco (sda1, ...) são partições bios_grub de 1 megabyte.

Eu também tenho o RAID10 md1 para o LVM (contendo /) e o RAID0 md2 para o swap, ambos construídos a partir de partições em todas as 4 unidades.

A versão do superbloco persistente mdadm é 0.9.

O Grub foi instalado com algo como grub-install --modules="mdraid lvm" '(hd0)' em todas as 4 unidades (hd0, hd1, hd2, hd3).

O problema.

Na reinicialização, o grub2 falha com "error: no such disk" e exibe "grub rescue >" pronto. O comando ls mostra apenas 4 discos e suas partições, mas nenhum dispositivo md* . Tentando insmod normal novamente dá "erro: nenhum tal disco." Examinar 'root' e 'prefix' mostra algo como '(md0) / grub', o que está correto. Fazer set prefix=(hd0,2)/grub e, em seguida, insmod normal permite inicializar normalmente.

A questão.

Por que o grub2 não vê md0?

Até agora, a única solução que posso ver é construir manualmente a imagem do grub com prefixo de trabalho codificado (grub-mkimage --prefix = '(hd0,2) / grub'), então use o grub-setup para escrever o imagem para cada disco. No entanto, esta solução é feia e sujeita a erros (para evitar erros, será necessário investigar como o grub-install chama esses dois comandos). Eu apreciarei melhores soluções. (Nota: este é um servidor remoto, então não é possível 'reinicializar a depuração').

    
por chronos 24.09.2011 / 17:43

1 resposta

3

RAID ainda é uma das áreas cinzentas dos bootloaders IMHO.

Eu criei recentemente um sistema RAID1 e depois de algumas horas tentando fazer com que o LILO / GRUB / GRUB2 detectasse minha invasão, desisti e disse a ele para usar a primeira partição do primeiro HDD detectado e garantir que, se um HDD falhou o próximo HDD já estava alinhado com o correto MBR / bootloader ect ...

Então o que ele faz é inicializar, pega o kernel e inicia o primeiro HDD (sem raid) e então inicializa o kernel e deixa todas as coisas RAID no kernel. Como o GRUB / LILO não grava fisicamente nas unidades, isso não as danificará.

Basicamente eu apenas ignorei o RAID todos juntos para o estágio de bootloader.

o kernel precisa montar novamente as matrizes de raid mesmo que o grub faça isso primeiro. não há razão real para que o grub precise estar ciente de um RAID para um sistema RAID1 a menos que uma unidade falhe durante a inicialização.

P.S. Você não precisa raid0 SWAP, essa habilidade já está no kernel. Basta definir a prioridade dos dois dispositivos de troca para 1 em FSTAB

/dev/sda2         none                    swap  sw,pri=1        0 0
/dev/sdb2         none                    swap  sw,pri=1        0 0
ect....

E se uma única unidade de troca falhar durante as operações normais, há uma boa chance de o sistema falhar. (você pode raid1 swap, mas não do fstab como acima)

    
por 27.09.2011 / 02:50