Como instalar o servidor Ubuntu com UEFI e RAID1 + LVM

15

Eu costumava instalar meus servidores com LVM sobre software RAID1 e instalar o grub no MBR de ambas as unidades. Agora eu tenho um servidor UEFI e o modo de compatibilidade (BIOS) parece não funcionar.

Então eu fui o caminho da instalação com UEFI.

Primeiro teste, a instalação de unidade única funciona bem.

Então eu tentei instalar com RAID1 + LVM. Particionei minhas duas unidades da mesma maneira:

  • uma partição do sistema EFI, 200 MB
  • uma partição RAID física

Então eu configurei: - um RAID 1 usando as duas partições RAID de discos - um grupo de volumes LVM na matriz RAID 1 - três volumes lógicos: /, / home e swap

A instalação continuou, mas na reinicialização, recebo um shell grub e estou preso.

Então, é possível que o grub2-efi funcione no LVM sobre RAID1? Qual é o caminho para conseguir isso? Existem outras alternativas ao carregador de inicialização (carregamento direto do linux da EFI ??)? etc ...

alci
fonte

Respostas:

11

Ok, encontrei a solução e posso responder minhas próprias perguntas.

1) posso usar o LVM sobre RAID1 em uma máquina UEFI?

Sim definitivamente. E será capaz de inicializar mesmo se um dos dois discos falhar.

2) Como fazer isso?

Parece que há um erro no instalador, portanto, apenas o uso do instalador resulta em falha na inicialização (grub shell).

Aqui está um procedimento de trabalho:

1) crie manualmente as seguintes partições em cada um dos dois discos: - uma partição de 512 MB com o tipo UEFI no início do disco - uma partição do tipo RAID depois disso

2) crie sua matriz RAID 1 com as duas partições RAID, crie seu grupo de volumes LVM com essa matriz e seus volumes lógicos (criei uma para raiz, uma para casa e uma para troca).

3) deixe a instalação continuar e reinicie. FRACASSO ! Você deve obter uma casca grub.

4) pode ser possível inicializar a partir do shell grub, mas optei por inicializar a partir de um disco usb de resgate. No modo de recuperação, abri um shell na raiz do destino fs (que é a do volume lvm raiz).

5) obtenha o UUID desta partição raiz de destino com 'blkid'. Anote ou tire uma foto com seu telefone, você precisará dele na próxima etapa.

6) monte a partição do sistema EFI ('mount / boot / efi') e edite o arquivo grub.cfg: vi /boot/efi/EFI/ubuntu/grub.cfg Aqui, substitua o UUID incorreto pelo que você obteve no ponto 5. Salve.

7) para poder inicializar a partir do segundo disco, copie a partição EFI para este segundo disco: dd if = / dev / sda1 de = / dev / sdb1 (altere sda ​​ou sdb de acordo com a sua configuração).

8) Reinicie. Na tela de configuração da UEFI, defina as duas partições EFI como inicializáveis ​​e defina uma ordem de inicialização.

Você Terminou. Você pode testar, desconectar um ou outro dos discos, ele deve funcionar!

alci
fonte
Obrigado pelo procedimento detalhado. Por favor, você poderia indicar suas informações de inicialização? ( help.ubuntu.com/community/Boot-Info )
LovinBuntu 10/10
@LovinBuntu Aqui é a saída do Boot-Info, iniciado a partir de uma chave USB: paste.ubuntu.com/6223137
alci
Eu obtive a falha, mas não consegui obter o shell grub.
Peter Lawrey
4
Acabei de perder alguns dias tentando seguir um procedimento semelhante, principalmente por ser estúpido, mas, caso isso possa ajudar alguém a evitar o mesmo problema, mencionarei que você precisa inicializar o USB ao vivo usando UEFI em vez de BIOS herdado. (Meu MB, na configuração 'automático', preferia inicializar no modo legado. Eu tive que desligá-lo - ou optar manualmente por inicializar a opção EFI - para que a instalação funcionasse.)
Jonathan Y.
1
Usando o Ubuntu 16.04.1, isso não parece mais um problema. Eu configurei uma partição EFI de 512 MB, um SWAP e uma partição RAID de 490 GB para RAID1, e no novo dispositivo md eu instalei o servidor Ubuntu 16.04 completamente sem problemas. Após a reinicialização, ele iniciou o novo sistema sem falhas, sem necessidade de mexer com a partição EFI, fstab etc.
nerdoc 10/12/16
4

Eu fiz isso há pouco mais de um ano e, apesar de ter problemas, não tive os problemas listados aqui. Não tenho certeza de onde encontrei os conselhos que fiz na época, então postarei o que fiz aqui.

1) Crie partições efi de 128 MB no início (apenas uma delas será montada, em / boot / efi)

2) Crie uma matriz RAID1 de 1 GB / inicialização, sem LVM

3) Crie uma matriz RAID1 grande usando LVM

Ter / boot em uma partição separada / matriz RAID1 resolve os problemas da partição efi, incapaz de encontrar as coisas apropriadas.

E para quem procura mais detalhes, como eu estava na época, é assim, mais precisamente, como eu fiz minha configuração:

6x 3TB Drives

Have 4 RAID arrays:
/dev/md0 = 1GB RAID1 across 3 drives
   --> /boot (no LVM)
/dev/md1 = 500GB RAID1 across 3 drives
   LVM:
      --> /     =  40GB
      --> /var  = 100GB
      --> /home = 335GB
      --> /tmp  =  10GB

/dev/md2 = 500GB RAID1 across 3 drives (for VM's/linux containers)
   LVM:
      --> /lxc/container1 =  50GB
      --> /lxc/container2 =  50GB
      --> /lxc/container3 =  50GB
      --> /lxc/container4 =  50GB
      --> /lxc/extra      = 300GB (for more LXC's later)

/dev/md3 = 10TB RAID6 across 6 drives (for media and such)
   --> /mnt/raid6 (no LVM)


Disks are setup thus:

/sda => /boot/efi (128 MB) | /dev/md0 (1 GB) | /dev/md1 (500GB) | /dev/md3 (2.5TB)
/sdb => /boot/efi (128 MB) | /dev/md0 (1 GB) | /dev/md1 (500GB) | /dev/md3 (2.5TB)
/sdc => /boot/efi (128 MB) | /dev/md0 (1 GB) | /dev/md1 (500GB) | /dev/md3 (2.5TB)
/sdd => ----- left empty for simplicity ---- | /dev/md2 (500GB) | /dev/md3 (2.5TB)
/sde => ----- left empty for simplicity ---- | /dev/md2 (500GB) | /dev/md3 (2.5TB)
/sdf => ----- left empty for simplicity ---- | /dev/md2 (500GB) | /dev/md3 (2.5TB)

Observe que apenas um dos / boot / efi será montado, e os dois segundos são clones; Fiz isso porque queria poder inicializar a máquina ao perder qualquer um dos três discos no RAID1. Não me importo de executar no modo degradado se ainda tiver redundância total e isso me dá tempo para substituir a unidade enquanto a máquina ainda estiver em funcionamento.

Além disso, se eu não tivesse o segundo array RAID1 para colocar os contêineres LXC e basicamente todos os bancos de dados, o / var teria que ser MUITO maior. Ter cada LXC como seu próprio volume lógico foi, no entanto, uma boa solução para impedir que uma VM / site interrompa as outras devido a logs de erro fora de controle, por exemplo ...

E nota final, eu instalei a partir do Ubuntu Alternate Install USB com 12.04.01 (antes de 12.04.02 sair), e tudo funcionou muito bem. Depois de bater minha cabeça por 72 horas.

Espero que ajude alguém!

jhaagsma
fonte
1
O grub2 lida com a inicialização do lvm no md diretamente, sem uma partição / boot muito bem, e funciona há alguns anos pelo menos.
Psusi
@psusi Eu gostaria que você estivesse certo, minha nova instalação não inicializa a partir do segundo disco por si só. Todo o LVM, diferente da configuração do jhaagsma.
sjas
2

Eu tive o mesmo probem, efi boot com dois discos e raid de software

/ dev / sda

  • / dev / sda1 - partição efi de 200 MB
  • / dev / sda2 - 20G físico para invasão
  • / dev / sda3 - 980G físico para invasão

/ dev / sdb

  • / dev / sdb1 - partição efi de 200 MB
  • / dev / sdb2 - 20G físico para invasão
  • / dev / sdb3 - 980G físico para invasão

Troque / dev / md0 (sda2 e sdb2) Raiz em / dev / md1 (sda3 e sdb3)

Se você digitar o shell grub-rescue, inicialize usando:

set root=(md/1)
linux /boot/vmlinuz-3.8.0-29-generic root=/dev/md1
initrd /boot/initrd.img-3.8.0-29-generic
boot

Depois disso, baixe este arquivo de correção - https://launchpadlibrarian.net/151342031/grub-install.diff (conforme explicado em https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1229738 )

cp /usr/sbi/grub-install /usr/sbi/grub-install.backup
patch /usr/sbin/grub-install patch
mount /dev/sda1 /boot/efi
grub-install /dev/sda1
umount /dev/sda1
mount /dev/sdb1 /boot/efi
grub-install /dev/sdb1
reboot
Ljupco
fonte