Linux Software RAID1: Como inicializar após (fisicamente) remover / dev / sda? (LVM, mdadm, Grub2)

6

Um servidor configurado com o Debian 6.0 / squeeze. Durante a instalação do squeeze, configurei os dois discos SATA de 500 GB (/ dev / sda e / dev / sdb) como um RAID1 (gerenciado com mdadm). O RAID mantém um grupo de volumes LVM de 500 GB (vg0). No grupo de volumes, há um único volume lógico (lv0). vg0-lv0 é formatado com extfs3 e montado como partição raiz (não há partição dedicada / de inicialização). O sistema inicializa usando o GRUB2.

No uso normal, o sistema inicializa bem.

Além disso, quando tentei e removi a segunda unidade SATA (/ dev / sdb) após o desligamento, o sistema apareceu sem problemas e, após reconectar a unidade, consegui --re-add / dev / sdb1 para a matriz RAID.

Mas: Depois de remover a primeira unidade SATA (/ dev / sda), o sistema não inicializa mais! Uma mensagem de boas-vindas do GRUB é exibida por um segundo e, em seguida, o sistema é reinicializado.

Eu tentei instalar o GRUB2 manualmente em / dev / sdb ("grub-install / dev / sdb"), mas isso não ajuda.

O appearently squeeze não consegue configurar o GRUB2 para ser iniciado a partir do segundo disco quando o primeiro disco é removido, o que parece ser um recurso essencial ao executar esse tipo de Software RAID1, não é?

No momento, estou perdido se este é um problema com o GRUB2, com o LVM ou com a configuração do RAID. Alguma dica?

    
por flight 28.02.2011 / 12:37

4 respostas

4

Você precisa instalar o GRUB no MBR de ambas as unidades, e você precisa fazer isso de forma que o GRUB considere que cada disco seja o primeiro disco do sistema.

O GRUB usa sua própria enumeração para discos, que é abstraída do que o kernel do Linux apresenta. Você pode mudar qual dispositivo ele acha que é o primeiro disco (hd0), usando uma linha de "dispositivo" no shell do grub, da seguinte forma:

device (hd0) /dev/sdb

Isto diz ao grub que, para todos os comandos subseqüentes, trate / dev / sdb como o disco hd0. A partir daqui, você pode concluir a instalação manualmente:

device (hd0) /dev/sdb
root (hd0,0)
setup (hd0)

Isso configura o GRUB na primeira partição do disco que ele considera hd0, que você acabou de definir como / dev / sdb.

Eu faço o mesmo para / dev / sda e / dev / sdb, só para ter certeza.

Editado para adicionar: sempre encontrei o Wiki do Gentoo útil, até que eu fiz isso com freqüência suficiente para cometer a memória.

    
por 08.03.2011 / 09:20
2

Você já pensou em instalar uma terceira unidade para servir apenas como a unidade de inicialização? Eu também vi problemas com as configurações de lvm do RAID 1 (no CentOS) não sendo capazes de inicializar a segunda unidade. Eu acho que o problema está no fato de o grub não ser capaz de manipular partições lvm nativas, embora eu não tenha certeza.

Enfim, essa é a minha resposta: instale uma terceira pequena unidade unicamente com o propósito de inicializar o sistema. Puxa, eu aposto que você pode até ficar esperto e fazer isso com algum tipo de flash ou dispositivo ssd.

    
por 08.03.2011 / 07:54
1

O Grub deve ser capaz de reconhecer configurações RAID1 e instalar em todos os discos escravos quando solicitado a instalar no dispositivo MD.

    
por 08.03.2011 / 09:42
0

Na verdade, deve funcionar. Isso parece ser como grub-install funciona com o GRUB 1.99 e 2.02.

De qualquer forma, o sda + sdb RAID1 contém a partição de inicialização, o núcleo provavelmente será referenciado pelo UUID. Verifique minha pergunta vinculada para ver se for. Em outras palavras, se grub-install --debug mostrar algo como --prefix=(md0)/boot/grub/ , você poderá ter um problema se outra matriz RAID for encontrada primeiro, o que provavelmente daria o prompt grub rescue> , em vez da falha observada aqui. Se usar --prefix=(mduuid/ , ele deverá encontrá-lo.

Portanto, se você grub-install /dev/sda; grub-install /dev/sdb , não importa se você remove uma dessas unidades: desde que o BIOS possa carregar o MBR de um deles, ele localizará o UID RAID e o LV pesquisando. O MBR, no entanto, não é espelhado. Então, aponte o instalador para todos os componentes, por sua vez.

Tudo isso é em teoria ...

Meu interesse nessa pergunta antiga é que o banner Welcome to GRUB! foi exibido e, em seguida, o servidor foi reinicializado, porque eu tenho

A lógica aqui é que a mensagem de boas vindas é encontrada em kernel.img, então pelo menos parte do núcleo deve estar sendo carregada. No entanto, de acordo com o manual (possivelmente desatualizado) , o segundo setor carrega todo o restante da imagem na memória usando uma lista de bloqueio. Se a lista de bloqueio estiver danificada (ou talvez o deslocamento do LBA for calculado incorretamente para o tamanho do setor ou por outros motivos), poderá ocorrer uma falha, reinicialização ou interrupção.

    
por 27.08.2017 / 21:28