Installer le bureau Ubuntu 18.04 avec RAID 1 et LVM sur une machine avec BIOS UEFI

11

J'ai une machine avec le BIOS UEFI. Je souhaite installer Ubuntu 18.04, version de bureau avec RAID 1 (et LVM) afin que mon système continue de fonctionner même si l'un des disques tombe en panne. Je n'ai pas trouvé de HOWTO sur la façon de procéder. Le programme d'installation du bureau ne prend pas en charge RAID. La réponse à cette question fonctionne presque mais nécessite un disque USB GRUB shell / rescue et des paramètres UEFI magiques. Quelqu'un connaît-il une procédure qui fonctionne sans les parties magiques?

Niclas Börlin
la source

Réponses:

18

Avec l'aide de Comment installer le serveur Ubuntu avec UEFI et RAID1 + LVM , la configuration RAID dans Ubuntu 18.04 et la prise en charge RAID dans Ubuntu 18.04 Desktop Installer? et comment se débarrasser de la "recherche de systèmes de fichiers btrfs" au démarrage? , J'ai réussi à créer un HOWTO fonctionnel en utilisant uniquement les commandes linux.

En bref

  1. Téléchargez le programme d'installation du serveur alternatif.
  2. Installation avec partitionnement manuel, EFI + RAID et LVM sur partition RAID.
  3. Clonez la partition EFI de la partition installée sur l'autre lecteur.
  4. Installez la deuxième partition EFI dans la chaîne de démarrage UEFI.
  5. Pour éviter une longue attente lors du démarrage en cas de panne d'un lecteur, supprimez les btrfsscripts de démarrage.

En détail

1. Téléchargez l'installateur

2. Installation avec partitionnement manuel

  • Pendant l'installation, à l' Partition disksétape, sélectionnez Manual.
  • Si les disques contiennent des partitions, supprimez-les.
    • Si des volumes logiques sont présents sur vos disques, sélectionnez Configure the Logical Volume Manager.
      • Choisissez Delete logical volumejusqu'à ce que tous les volumes aient été supprimés.
      • Choisissez Delete volume groupjusqu'à ce que tous les groupes de volumes aient été supprimés.
    • Si un périphérique RAID est présent, sélectionnez Configure software RAID.
      • Choisissez Delete MD devicejusqu'à ce que tous les appareils MD aient été supprimés.
    • Supprimez chaque partition sur les disques physiques en les choisissant et en les sélectionnant Delete the partition.
  • Créer des partitions physiques
    • Sur chaque disque, créer une partition de 512 Mo (je l' ai vu d' autres utilisent 128Mo) au début du disque, utilisation comme: EFI System Partition.
    • Sur chaque disque, créer une seconde partition de la taille « max », Utilisation en tant que: Physical Volume for RAID.
  • Configurer le RAID
    • Sélectionnez Configure software RAID.
    • Sélectionnez Create MD device, tapez RAID1, 2 disques actifs, 0 disques de rechange et sélectionnez les périphériques /dev/sda2et /dev/sdb2.
  • Configurer LVM
    • Sélectionnez Configure the Logical Volume Manager.
    • Créez un groupe de volumes vgsur l' /dev/md0appareil.
    • Créez des volumes logiques, par exemple
      • swap à 16G
      • root à 35G
      • tmp à 10G
      • var à 5G
      • home à 200G
  • Configurer l'utilisation des partitions logiques
    • Pour la swappartition, sélectionnez Use as: swap.
    • Pour les autres partitions, sélectionnez Use as: ext4les points de montage approprié ( /, /tmp, /var, /homerespectivement).
  • Sélectionnez Finish partitioning and write changes to disk.
  • Laissez le programme d'installation se terminer et redémarrez.

Si vous réinstallez sur un lecteur qui avait précédemment une configuration RAID, l'étape de création RAID ci-dessus peut échouer et vous n'obtiendrez jamais de mdpériphérique. Dans ce cas, vous devrez peut-être créer une clé USB Ubuntu Live, démarrer dessus, exécuter gparted pour effacer toutes vos tables de partition, avant de redémarrer ce HOWTO.

3. Inspectez le système

  • Vérifiez quelle partition EFI a été montée. Très probablement /dev/sda1.

    montage | grep boot

  • Vérifiez l'état RAID. Il s'agit très probablement d'une synchronisation.

    chat / proc / mdstat

4. Cloner la partition EFI

L'EFI bootloaded aurait dû être installé sur /dev/sda1. Comme cette partition n'est pas mise en miroir via le système RAID, nous devons la cloner.

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

5. Insérez le deuxième lecteur dans la chaîne de démarrage

Cette étape peut ne pas être nécessaire, car si l'un des disques meurt, le système doit démarrer à partir des partitions EFI (identiques). Cependant, il semble prudent de s'assurer que nous pouvons démarrer à partir de l'un ou l'autre disque.

  • Exécutez efibootmgr -vet notez le nom de fichier pour l' ubuntuentrée de démarrage. Sur mon installation, c'était \EFI\ubuntu\shimx64.efi.
  • Courez sudo efibootmgr -c -d /dev/sdb -p 1 -L "ubuntu2" -l \EFI\ubuntu\shimx64.efi. Selon votre shell, vous devrez peut-être échapper aux barres obliques inverses.
  • Vérifiez avec efibootmgr -vce que vous avez le même nom de fichier pour les ubuntuet ubuntu2articles démarrage et que ce sont les deux premiers dans l'ordre de démarrage.
  • Maintenant, le système devrait démarrer même si l'un des disques tombe en panne!

7. Attendez

Si vous souhaitez essayer de retirer ou de désactiver physiquement un lecteur pour tester votre installation, vous devez d'abord attendre la fin de la synchronisation RAID! Surveillez la progression avec cat /proc/mdstatCependant, vous pouvez effectuer l'étape 8 ci-dessous en attendant.

8. Supprimer BTRFS

Si un disque tombe en panne (une fois la synchronisation terminée), le système démarre toujours. Cependant, la séquence de démarrage passera beaucoup de temps à rechercher des systèmes de fichiers btrfs. Pour supprimer cette attente inutile, exécutez

sudo apt-get purge btrfs-progs

Cela devrait supprimer btrfs-progs, btrfs-toolset ubuntu-server. Le dernier paquet n'est qu'un méta-paquet, donc si plus aucun paquet n'est répertorié pour suppression, vous devriez être d'accord.

9. Installez la version de bureau

Exécutez sudo apt install ubuntu-desktoppour installer la version de bureau. Après cela, la synchronisation est probablement terminée et votre système est configuré et devrait survivre à une panne de disque!

10. Mettre à jour la partition EFI après la mise à jour grub-efi-amd64

Lorsque le package grub-efi-amd64est mis à jour, les fichiers sur la partition EFI (montée sur /boot/efi) peuvent changer. Dans ce cas, la mise à jour doit être clonée manuellement sur la partition miroir. Heureusement, vous devriez recevoir un avertissement du gestionnaire de mise à jour qui grub-efi-amd64est sur le point d'être mis à jour, afin que vous n'ayez pas à vérifier après chaque mise à jour.

10.1 Découvrez la source du clone, un moyen rapide

Si vous n'avez pas redémarré après la mise à jour, utilisez

mount | grep boot

pour savoir quelle partition EFI est montée. Cette partition, généralement /dev/sdb1, doit être utilisée comme source de clone.

10.2 Découvrir la source du clone, voie paranoïaque

Créez des points de montage et montez les deux partitions:

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

Trouver l'horodatage du fichier le plus récent dans chaque arborescence

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

Comparer les horodatages

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

Devrait imprimer /dev/sdb1 is newest(très probablement) ou /dev/sda1 is newest. Cette partition doit être utilisée comme source de clone.

Démontez les partitions avant le clonage pour éviter les incohérences cache / partition.

sudo umount /tmp/sda1 /tmp/sdb1

10.3 Clone

Si /dev/sdb1était la source du clone:

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

Si /dev/sda1était la source du clone:

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

Terminé!

11. Problèmes de machine virtuelle

Si vous voulez d'abord essayer cela sur une machine virtuelle, il y a quelques mises en garde: Apparemment, la NVRAM qui contient les informations UEFI est mémorisée entre les redémarrages, mais pas entre les cycles d'arrêt-redémarrage. Dans ce cas, vous pouvez vous retrouver sur la console Shell UEFI. Les commandes suivantes devraient vous démarrer sur votre machine à partir de /dev/sda1(utiliser FS1:pour /dev/sdb1):

FS0:
\EFI\ubuntu\grubx64.efi

La première solution dans la première réponse du démarrage UEFI dans virtualbox - Ubuntu 12.04 pourrait également être utile.

Niclas Börlin
la source
Comment utiliseriez-vous LUKS, pour un ensemble de miroirs cryptés / RAID 1, en évitant que le cryptage ne se produise deux fois (par exemple, LUKS assis sous mdadm, de sorte que les E / S se produisent deux fois, mais le cryptage lui-même ne se produit qu'une seule fois, ce qui n'est en fait pas le cas avec certaines configurations , comme ceux recommandés pour ZFS, où les volumes sont chiffrés deux fois, une fois par appareil, ce qui duplique efficacement le coût du chiffrement). Je n'ai pas pu trouver d'instructions récentes sur cette configuration.
soze
2
@soze, malheureusement je n'ai aucune expérience avec les partitions Linux cryptées. Je ferais quelques essais et erreurs dans une machine virtuelle pour le savoir. NB: J'ai ajouté une section ci-dessus sur les accrochages aux machines virtuelles.
Niclas Börlin
Merci @ NiclasBörlin! Je luttais avec la création d'une partition de démarrage sous RAID et LVM, et votre réponse était limpide. Merci beaucoup!
Gui Ambros
Sainte vache! Agréable!
pileofrogs
Il semble que cela ne fonctionne plus avec Focal Fossa car le programme d'installation alternatif a disparu. Le programme d'installation de Focal n'a pas les options de partitionnement mentionnées et insiste sur un appareil /bootsi vous essayez de suivre la route d'installation automatisée du raid.
wedi
3

RAID-1 + XFS + UEFI

J'ai pu obtenir environ 99% du chemin avec la réponse de @Niclas Börlin, merci!

J'ai également tiré de l'aide des réponses suivantes:

Voici comment j'ai gâché les choses

  1. Avoir le BIOS en mode "Auto", ce qui a permis de démarrer la clé USB PAS en mode UEFI. Cela a empêché Grub d'être installé correctement. J'ai changé de mode pour UEFI uniquement, redémarré et supprimé tous les volumes logiques, les groupes de raid et les partitions et j'ai recommencé. J'ai en outre essayé de réinstaller grub sur les partitions EFI, ce qui n'a fait qu'empirer les choses.
  2. La /bootpartition doit être sur XFS. Le grub2 fourni avec Ubuntu 18.04LTS ne gère apparemment pas cela. Bien que cela ne soit documenté nulle part. J'ai créé une /bootpartition EXT-4 distincte . Notez que cela se trouve toujours sur le volume LVM RAID-1, et non sur des partitions séparées comme celles EFI! Beaucoup de réponses plus anciennes disent que ce n'est pas possible, mais il semble que ce soit maintenant. J'ai fini par obtenir grub mais des erreurs de système de fichiers inconnues (par exemple. Comment réparer "erreur: système de fichiers inconnu. Grub rescue> ) qui m'ont donné la clé XFS /bootcomme un no-go.
  3. Quelque part au milieu de cela, je me suis retrouvé avec grub installé mais une invite grub vide, pas de menu grub. (par exemple, https://help.ubuntu.com/community/Grub2/Troubleshooting#Specific_Troubleshooting ). Cela était dû au fait de /bootne pas être accessible.

Ce qui a fonctionné pour moi

Commencez par la réponse de @Niclas Börlin et changez quelques petites choses.

Table de partition

Je préfère une grande /partition, donc cela reflète ce choix. Le principal changement est une /bootpartition EXT4 au lieu d'une partition 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  /

Après l'installation terminée, j'ai pu ddle contenu de sda1à sdb2comme détaillé dans l'autre réponse. J'ai également pu ajouter le deuxième lecteur à la chaîne de démarrage en utilisant efibootmgrcomme détaillé.

maxslug
la source
très utile! J'ai été confronté au même problème avec le serveur Ubuntu 18.04 + UEFI + RAID1 + LVM. Suivre votre schéma de partition m'a beaucoup aidé. Merci!
Lucas Aimaretto