Instale o desktop Ubuntu 18.04 com RAID 1 e LVM na máquina com UEFI BIOS

11

Eu tenho uma máquina com UEFI BIOS. Quero instalar o Ubuntu 18.04, versão desktop com RAID 1 (e LVM) para que meu sistema continue funcionando mesmo que uma das unidades falhe. Eu não encontrei um HOWTO de como fazer isso. O instalador da área de trabalho não suporta RAID. A resposta a esta pergunta quase funciona, mas requer algum disco USB do shell / resgate do GRUB e configurações mágicas da UEFI. Alguém está ciente de um procedimento que funciona sem as partes mágicas?

Niclas Börlin
fonte

Respostas:

18

Com alguma ajuda de Como instalar o servidor Ubuntu com UEFI e RAID1 + LVM , o RAID configurado no Ubuntu 18.04 e o suporte a RAID no instalador do Ubuntu 18.04 Desktop? e Como se livrar da "verificação de sistemas de arquivos btrfs" na inicialização? , Consegui montar um HOWTO de trabalho usando apenas comandos linux.

Em resumo

  1. Faça o download do instalador alternativo do servidor.
  2. Instale com particionamento manual, EFI + RAID e LVM na partição RAID.
  3. Clone a partição EFI da partição instalada para a outra unidade.
  4. Instale a segunda partição EFI na cadeia de inicialização UEFI.
  5. Para evitar uma longa espera durante a inicialização, no caso de uma unidade quebrar, remova os btrfsscripts de inicialização.

Em detalhe

1. Faça o download do instalador

2. Instale com particionamento manual

  • Durante a instalação, na Partition disksetapa, selecione Manual.
  • Se os discos contiverem partições, remova-os.
    • Se houver volumes lógicos em suas unidades, selecione Configure the Logical Volume Manager.
      • Escolha Delete logical volumeaté que todos os volumes tenham sido excluídos.
      • Escolha Delete volume groupaté que todos os grupos de volumes tenham sido excluídos.
    • Se algum dispositivo RAID estiver presente, selecione Configure software RAID.
      • Escolha Delete MD deviceaté que todos os dispositivos MD tenham sido excluídos.
    • Exclua todas as partições das unidades físicas, escolhendo-as e selecionando Delete the partition.
  • Crie partições físicas
    • Em cada unidade, criar uma partição de 512MB (eu vi outros usam 128MB) no início do disco, Utilizar como: EFI System Partition.
    • Em cada unidade, criar uma segunda partição com tamanho 'max', Uso como: Physical Volume for RAID.
  • Configurar RAID
    • Selecione Configure software RAID.
    • Selecione Create MD device, digite RAID1, 2 discos ativos, 0 discos de reposição, e selecione o /dev/sda2e /dev/sdb2dispositivos.
  • Configurar LVM
    • Selecione Configure the Logical Volume Manager.
    • Crie um grupo de volumes vgno /dev/md0dispositivo.
    • Crie volumes lógicos, por exemplo
      • swap em 16G
      • root em 35G
      • tmp em 10G
      • var em 5G
      • home a 200G
  • Configurar como usar as partições lógicas
    • Para a swappartição, selecione Use as: swap.
    • Para as outras partições, selecione Use as: ext4com o bom pontos de montagem ( /, /tmp, /var, /home, respectivamente).
  • Selecione Finish partitioning and write changes to disk.
  • Permita que o programa de instalação termine e reinicie.

Se você estiver reinstalando em uma unidade que anteriormente tinha uma configuração RAID, a etapa de criação do RAID acima poderá falhar e você nunca obterá um mddispositivo. Nesse caso, pode ser necessário criar um stick USB do Ubuntu Live, inicializar nele, executar gparted para limpar todas as suas tabelas de partição antes de reiniciar este HOWTO.

3. Inspecione o sistema

  • Verifique qual partição EFI foi montada. Provavelmente /dev/sda1.

    montar | inicialização grep

  • Verifique o status do RAID. Provavelmente está sincronizando.

    cat / proc / mdstat

4. Clone a partição EFI

O EFI carregado com inicialização deveria ter sido instalado /dev/sda1. Como essa partição não é espelhada através do sistema RAID, precisamos cloná-la.

sudo dd if=/dev/sda1 of=/dev/sdb1

5. Insira a segunda unidade na cadeia de inicialização

Esta etapa pode não ser necessária, pois se uma das unidades morrer, o sistema deverá inicializar a partir das partições EFI (idênticas). No entanto, parece prudente garantir que possamos inicializar a partir de qualquer disco.

  • Execute efibootmgr -ve observe o nome do arquivo para a ubuntuentrada de inicialização. Na minha instalação foi \EFI\ubuntu\shimx64.efi.
  • Corra sudo efibootmgr -c -d /dev/sdb -p 1 -L "ubuntu2" -l \EFI\ubuntu\shimx64.efi. Dependendo do seu shell, talvez você precise escapar das barras invertidas.
  • Verifique com o efibootmgr -vque você tem o mesmo nome de arquivo para os ubuntue ubuntu2inicialização itens e que eles são os dois primeiros na ordem de inicialização.
  • Agora o sistema deve inicializar mesmo que uma das unidades falhe!

7. espera

Se você quiser remover ou desativar fisicamente qualquer unidade para testar sua instalação, primeiro espere até a sincronização do RAID terminar! Monitore o progresso com cat /proc/mdstatNo entanto, você pode executar a etapa 8 abaixo enquanto aguarda.

8. Remova o BTRFS

Se uma unidade falhar (após a conclusão da sincronização), o sistema ainda será inicializado. No entanto, a sequência de inicialização passará muito tempo procurando sistemas de arquivos btrfs. Para remover essa espera desnecessária, execute

sudo apt-get purge btrfs-progs

Isso deve remover btrfs-progs, btrfs-toolse ubuntu-server. O último pacote é apenas um meta-pacote; portanto, se nenhum outro pacote estiver listado para remoção, você deve estar bem.

9. Instale a versão da área de trabalho

Execute sudo apt install ubuntu-desktoppara instalar a versão da área de trabalho. Depois disso, a sincronização provavelmente está concluída e seu sistema está configurado e deve sobreviver a uma falha no disco!

10. Atualize a partição EFI após a atualização do grub-efi-amd64

Quando o pacote grub-efi-amd64é atualizado, os arquivos na partição EFI (montada em /boot/efi) podem mudar. Nesse caso, a atualização deve ser clonada manualmente na partição espelhada. Felizmente, você deve receber um aviso do gerenciador de atualizações que grub-efi-amd64está prestes a ser atualizado, para não precisar verificar após cada atualização.

10.1 Descubra a origem do clone, maneira rápida

Se você não reiniciou após a atualização, use

mount | grep boot

para descobrir qual partição EFI está montada. Essa partição, normalmente /dev/sdb1, deve ser usada como a fonte do clone.

10.2 Descubra a fonte do clone, de maneira paranóica

Crie pontos de montagem e monte as duas partições:

sudo mkdir /tmp/sda1 /tmp/sdb1
sudo mount /dev/sda1 /tmp/sda1
sudo mount /dev/sdb1 /tmp/sdb1

Encontre o registro de data e hora do arquivo mais recente em cada árvore

sudo find /tmp/sda1 -type f -printf '%T+ %p\n' | sort | tail -n 1 > /tmp/newest.sda1
sudo find /tmp/sdb1 -type f -printf '%T+ %p\n' | sort | tail -n 1 > /tmp/newest.sdb1

Compare timestamps

cat /tmp/newest.sd* | sort | tail -n 1 | perl -ne 'm,/tmp/(sd[ab]1)/, && print "/dev/$1 is newest.\n"'

Deve imprimir /dev/sdb1 is newest(provavelmente) ou /dev/sda1 is newest. Essa partição deve ser usada como a fonte do clone.

Desmonte as partições antes da clonagem para evitar inconsistência de cache / partição.

sudo umount /tmp/sda1 /tmp/sdb1

10.3 Clone

Se /dev/sdb1foi a fonte do clone:

sudo dd if=/dev/sdb1 of=/dev/sda1

Se /dev/sda1foi a fonte do clone:

sudo dd if=/dev/sda1 of=/dev/sdb1

Feito!

11. Dicas da máquina virtual

Se você quiser testar isso primeiro em uma máquina virtual, existem algumas ressalvas: Aparentemente, a NVRAM que contém as informações UEFI é lembrada entre as reinicializações, mas não entre os ciclos de desligamento e reinicialização. Nesse caso, você pode acabar no console do UEFI Shell. Os seguintes comandos devem inicializar você em sua máquina a partir de /dev/sda1(use FS1:for /dev/sdb1):

FS0:
\EFI\ubuntu\grubx64.efi

A primeira solução na resposta superior da inicialização UEFI no virtualbox - Ubuntu 12.04 também pode ser útil.

Niclas Börlin
fonte
Como você usaria o LUKS, para um conjunto de espelhos criptografados / RAID 1, evitando que a criptografia acontecesse duas vezes (por exemplo, LUKS sentado no mdadm, para que o IO aconteça duas vezes, mas a criptografia em si ocorre apenas uma vez, na verdade isso não está acontecendo com algumas configurações , como os recomendados para o ZFS, em que os volumes são criptografados duas vezes, uma vez por dispositivo, duplicando efetivamente o custo do lado da criptografia. Não consegui encontrar instruções recentes sobre esta configuração.
soze 18/09/18
2
@soze, infelizmente não tenho experiência com partições Linux criptografadas. Eu faria algumas tentativas e erros em uma máquina virtual para descobrir. NB: Adicionei uma seção acima sobre dicas de máquinas virtuais.
Niclas Börlin
Obrigado @ NiclasBörlin! Eu estava lutando com a criação da partição de inicialização sob RAID e LVM, e sua resposta foi clara. Muito obrigado!
Gui Ambros
Vaca sagrada! Agradável!
stackofrogs
Parece que isso não funciona mais com o Focal Fossa, pois o instalador alternativo se foi. O instalador da Focal não possui as opções de particionamento mencionadas e insiste em um dispositivo, pois /bootse você tentar seguir a rota de instalação automatizada de ataques.
wedi
3

RAID-1 + XFS + UEFI

Consegui chegar a 99% do caminho até lá com a resposta de @Niclas Börlin, obrigado!

Também atraí ajuda das seguintes respostas:

Aqui estão as maneiras que eu estraguei tudo

  1. Ter o BIOS no modo "Auto", o que permitiu a inicialização da chave USB, NÃO no modo UEFI. Isso fez com que o Grub não fosse instalado corretamente. Troquei o modo para UEFI-only, reinicializei e excluí todos os volumes lógicos, grupos de invasões e partições e iniciei novamente. Tentei reinstalar o grub nas partições EFI, o que só piorou as coisas.
  2. Ter a /bootpartição no XFS. O grub2 que acompanha o Ubuntu 18.04LTS aparentemente não lida com isso. Embora isso não esteja documentado em nenhum lugar. Criei uma /bootpartição EXT-4 separada. Observe que este ainda está no volume RAID-1 LVM e não separa partições como as EFI! Muitas respostas antigas dizem que isso não é possível, mas parece ser agora. Acabei recebendo o grub, mas obtendo erros desconhecidos do sistema de arquivos (por exemplo: Como corrigir "erro: sistema de arquivos desconhecido. Grub rescue> ) que me deram a pista do XFS /bootcomo um não-go.
  3. Em algum lugar no meio disso, acabei com o grub instalado, mas um prompt de grub em branco, sem menu grub. (por exemplo, https://help.ubuntu.com/community/Grub2/Trou Troubleshooting#Specific_Trou Troubleshooting ). Isso ocorreu por /bootnão estar acessível.

O que funcionou para mim

Comece com a resposta de @Niclas Börlin e mude algumas coisas menores.

Tabela de partição

Eu sou a favor de uma /partição grande , então isso reflete essa escolha. A principal mudança é uma /bootpartição EXT4 em vez de uma partição XFS.

sda/
          GPT     1M (auto-added)
   sda1 - EFI - 512M
   sda2 - MD0 - 3.5G

sdb/
          GPT     1M (auto-added)
   sdb1 - EFI - 512M
   sdb2 - MD0 - 3.5G

md0/
   vg/
     boot - 1G   - EXT4 /boot
     swap - 16G  - SWAP 
     root - rest - XFS  /

Após o concluída instalar eu era capaz dddo conteúdo do sda1que sdb2como detalhado na outra resposta. Também pude adicionar a segunda unidade à cadeia de inicialização usando efibootmgrcomo detalhado.

maxslug
fonte
muito útil! Estou enfrentando o mesmo problema com o servidor ubuntu 18.04 + UEFI + RAID1 + LVM. Seguir o seu esquema de partições me ajudou muito. Obrigado!
Lucas Aimaretto 7/11