web-dev-qa-db-fra.com

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

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 expliquant comment faire cela. Le programme d'installation de bureau ne prend pas en charge RAID. La réponse à cette question fonctionne presque, mais nécessite un peu de magie GRUB Shell/disque USB de secours et paramètres UEFI. Est-ce que quelqu'un est au courant d'une procédure qui fonctionne sans les parties magiques?

6
Niclas Börlin

Avec l'aide de Comment installer un serveur Ubuntu avec UEFI et RAID1 + LVM , configuration du RAID sous Ubuntu 18.04 , et prise en charge du RAID dans le programme d'installation de Ubuntu 18.04 Desktop? et Comment se débarrasser de "l'analyse des systèmes de fichiers btrfs" au démarrage? , j'ai réussi à mettre en place un HOWTO fonctionnel utilisant uniquement des commandes linux.

En bref

  1. Téléchargez le programme d'installation du serveur de remplacement.
  2. Installer avec partitionnement manuel, EFI + RAID et LVM sur une partition RAID.
  3. Cloner 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 scripts de démarrage btrfsname__.

En détail

1. Téléchargez l'installateur

2. Installer avec partitionnement manuel

  • Au cours de l'installation, à l'étape Partition disks, sélectionnez Manualname__.
  • 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 volume jusqu'à ce que tous les volumes aient été supprimés.
      • Choisissez Delete volume group jusqu'à 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 device jusqu'à ce que tous les périphériques MD aient été supprimés.
    • Supprimez toutes les partitions des lecteurs physiques en les sélectionnant, puis en sélectionnant Delete the partition.
  • Créer des partitions physiques
    • Sur chaque lecteur, créez une partition de 512 Mo (j'ai déjà vu d'autres personnes utiliser 128 Mo) au début du disque, utilisez le fichier en tant que: EFI System Partition.
    • Sur chaque lecteur, créez une seconde partition de taille 'max', à utiliser en tant que: Physical Volume for RAID.
  • Configurer RAID
    • Sélectionnez Configure software RAID.
    • Sélectionnez Create MD device, tapez RAID1, 2 disques actifs, 0 disques de réserve, puis sélectionnez les périphériques /dev/sda2 et /dev/sdb2.
  • Mettre en place LVM
    • Sélectionnez Configure the Logical Volume Manager.
    • Créez le groupe de volumes vgsur le périphérique /dev/md0.
    • Créer des volumes logiques, par exemple
      • swapà 16G
      • rootà 35G
      • tmpat 10G
      • varat 5G
      • homeà 200G
  • Configurer l'utilisation des partitions logiques
    • Pour la partition swapname__, sélectionnez Use as: swap.
    • Pour les autres partitions, sélectionnez Use as: ext4 avec les points de montage appropriés (/, /tmp, /var, /home, respectivement).
  • Sélectionnez Finish partitioning and write changes to disk.
  • Autorisez le programme d'installation à se terminer et à redémarrer.

3. Inspecter le système

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

    monter | démarrage de grep

  • Vérifiez l'état du RAID. Très probablement, il se synchronise.

    cat/proc/mdstat

4. Cloner la partition EFI

Le démarrage EFI doit avoir été 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 venait à mourir, le système devrait 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 -v et notez le nom de fichier de l’entrée de démarrage ubuntuname__. Sur mon installation, il y avait \EFI\ubuntu\shimx64.efi.
  • Exécutez Sudo efibootmgr -c -d /dev/sdb -p 1 -L "ubuntu2" -l \EFI\ubuntu\shimx64.efi.
  • Maintenant, le système devrait démarrer même si l’un des disques tombe en panne!

7. attendre

Si vous voulez essayer de retirer/désactiver n'importe quel lecteur, vous devez d'abord attendre que la synchronisation RAID soit terminée! Surveillez les progrès avec cat /proc/mdstat Cependant, vous pouvez effectuer l'étape 8 ci-dessous en attendant.

8. Supprimer BTRFS

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

Sudo apt-get purge btrfs-progs

Cela devrait supprimer btrfs-progs, btrfs-tools et ubuntu-server. Le dernier paquet est juste un méta-paquet, donc si aucun autre paquet n'est listé pour la suppression, tout devrait bien se passer.

9. Installez la version de bureau

Exécutez Sudo apt install ubuntu-desktop pour 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. Mise à jour de la partition EFI après la mise à jour de grub-efi-AMD64

Lorsque le package grub-efi-AMD64 est mis à jour, les fichiers de la partition EFI (montés à /boot/efi) peuvent changer. Dans ce cas, la mise à jour doit être clonée manuellement sur la partition miroir. Heureusement, le gestionnaire de mises à jour vous avertit que grub-efi-AMD64 est sur le point d'être mis à jour. Vous n'avez donc pas à vérifier après chaque mise à jour.

10.1 Trouver la source du clone, 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 Trouver la source du clone, de manière 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 arbre

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 (le plus probable) 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 cloner

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

Fait!

11. Les pièges de la machine virtuelle

Si vous voulez d'abord essayer ceci sur une machine virtuelle, il y a certaines 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 du shell UEFI. Les commandes suivantes doivent vous démarrer sur votre ordinateur à partir de /dev/sda1 (utilisez FS1: pour /dev/sdb1):

FS0:
\EFI\ubuntu\grubx64.efi

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

11
Niclas Börlin

RAID-1 + XFS + UEFI

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

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

Voici comment j'ai foiré les choses

  1. Avoir le BIOS en mode "Auto", ce qui a permis à la clé USB de démarrer PAS en mode UEFI. Cela a causé que Grub ne soit pas installé correctement. Je suis passé en mode UEFI uniquement, j'ai redémarré et supprimé tous les volumes logiques, groupes de raid et partitions, puis j'ai recommencé. J'ai ensuite essayé de réinstaller grub sur les partitions EFI, ce qui n'a fait qu'empirer les choses.
  2. Avoir la partition /boot sous 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 partition EXT-4 /boot séparée. Notez que cela se trouve toujours sur le volume RAID-1 LVM et non pas sur des partitions séparées comme celles d'EFI! Beaucoup de réponses plus anciennes disent que ce n'est pas possible, mais cela semble être le cas maintenant. J'ai fini par obtenir grub mais en obtenant des erreurs de système de fichiers inconnues (par exemple. Comment réparer) "erreur: système de fichiers inconnu. Grub rescue> ) qui m'a donné l'indice XFS sur /boot sans appel.
  3. Quelque part au milieu de cela, je me suis retrouvé avec un grub installé, mais une invite vierge, aucun menu de grub. (par exemple, https://help.ubuntu.com/community/Grub2/Troubleshooting#Specific_Troubleshooting ). Cela était dû au fait que /boot n'était pas 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. La modification principale est une partition EXT4 /boot 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 dd le contenu de sda1 à sdb2 comme indiqué dans l'autre réponse. J'ai également pu ajouter le deuxième lecteur à la chaîne de démarrage en utilisant efibootmgr comme indiqué.

0
maxslug