rss logo

Comment mettre en place un RAID1 mdadm avec un boot UEFI

Logo Debian

UEFI est aujourd'hui le nouveau standard qui se charge entre autres de démarrer les systèmes d'exploitation, il succède au vieillissant BIOS. En informatique, les évolutions sont constantes et impliquent des changements ce qui provoque sueurs froides, moustaches mouillées et maux de têtes. Par exemple, mettre en place un RAID1 logiciel avec UEFI sur un système GNU/Linux nécessite pas mal de paramétrages par rapport à ce qu'il était nécessaire de faire avec BIOS. Et c'est justement ce que nous allons voir ici dans cet article.

Installation de Debian

Partitionnement des disques

Nous allons commencer à partir d'une nouvelle installation de Debian avec le RAID activé. Des partitions RAID devront être assignées à chacune des partitions des disques sauf pour les partitions EFI (nous les déclarerons en RAID plus tard).

  • Pendant l'installation, configurer les deux disques comme suit:
    • Partition 1 (EFI): EFI 50MB
    • Partition 2 (OS): RAID
    • Partition 3 (swap): RAID
  • Puis, choisir Configurer le RAID avec gestion logicielle
Etape de partitionnement de disques lors de l'installation de Debian Linux
  • Après cette étape les disques devraient ressembler à ça :
Représentation de deux disques durs avec partitionnement uefi

Création du RAID mdadm

  • Sélectionner Créer un périphérique multidisques :
Création d'un périphérique de type md depuis le menu d'installation de debian
  • Puis choisir les deux partition de 20Go :
choix des disques lors de la création d'un périphérique MD lors de l'installation de debian
  • Répéter l'opération pour les deux partitions de 2Go :
choix des disques lors de la création d'un périphérique MD lors de l'installation de debian
  • Assigner les partitions de 20Go / (root) au périphérique RAID1 de 20Go et la swap au périphérique 2Go :
paramétrage du partitionnement depuis le menu d'installation de debian
  • À la fin de l'installation, notre système devrait être partitionné de cette façon :
Représentation de deux disques durs avec partitionnement uefi et avec un raid mdadm

Post-Installation

Maintenant notre système peut correctement démarrer, mais il n'est pas pleinement redondant car le disque sdb n'a pas sa partition EFI correctement paramétrée, donc voyons comment remédier à cela.

  • Premièrement, déterminons où se trouve la partition /boot/efi :
root@host:~# mount | grep '/boot/efi' /dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)
  • Puis, on effectue une copie de la partition /boot/efi vers /dev/sdb1:
root@host:~# dd if=/dev/sda1 of=/dev/sdb1
  • Utiliser efibootmgr pour lister les entrées de démarrage EFI :
root@host:~# efibootmgr -v | grep -i debian Boot0004* debian HD(1,GPT,f1482e6e-5c5c-419e-b989-e64c390fe4a8,0x800,0x17800)/File(\EFI\debian\shimx64.efi)
  • Si il n'y a qu'une seule entrée, alors en ajouter une deuxième pour sdb :
root@host:~# efibootmgr --create --disk /dev/sdb --part 1 --label "debian2" --loader "\EFI\debian\shimx64.efi" BootCurrent: 0004 BootOrder: 0006,0004,0000,0001,0002,0003,0005 Boot0000* EFI Virtual disk (0.0) Boot0001* EFI VMware Virtual IDE CDROM Drive (IDE 0:0) Boot0002* EFI Network Boot0003* EFI Internal Shell (Unsupported option) Boot0004* debian Boot0005* EFI Virtual disk (1.0) Boot0006* debian2
  • Verifier ques les partitions IDs matchent avec les boot IDs:
root@host:~# ls -l /dev/disk/by-partuuid/ total 0 lrwxrwxrwx 1 root root 10 Nov 7 21:07 4e50a3f1-fdb6-44c3-9c8e-e4b16f582d4e -> ../../sdb2 lrwxrwxrwx 1 root root 10 Nov 7 21:07 955255b5-cc20-40cc-a084-2b372e7d7675 -> ../../sda3 lrwxrwxrwx 1 root root 10 Nov 7 21:07 b893954d-b857-4a33-9b1f-d886da46b4bf -> ../../sdb3 lrwxrwxrwx 1 root root 10 Nov 7 21:07 b9d9b6db-3721-4a0c-aee8-a7283ecf39ce -> ../../sda2 lrwxrwxrwx 1 root root 10 Nov 7 21:09 eb36f2b9-c679-4f18-b076-e868a50f5a4c -> ../../sdb1 lrwxrwxrwx 1 root root 10 Nov 7 21:07 f7fb28ea-172c-4583-baf9-f973e675a849 -> ../../sda1 root@host:~# efibootmgr -v BootCurrent: 0004 BootOrder: 0006,0004,0000,0001,0002,0003,0005 Boot0000* EFI Virtual disk (0.0) PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)/SCSI(0,0) Boot0001* EFI VMware Virtual IDE CDROM Drive (IDE 0:0) PciRoot(0x0)/Pci(0x7,0x1)/Ata(0,0,0) Boot0002* EFI Network PciRoot(0x0)/Pci(0x16,0x0)/Pci(0x0,0x0)/MAC(005056802b14,1) Boot0003* EFI Internal Shell (Unsupported option) MemoryMapped(11,0xeb59018,0xf07e017)/FvFile(c57ad6b7-0515-40a8-9d21-551652854e37) Boot0004* debian HD(1,GPT,f7fb28ea-172c-4583-baf9-f973e675a849,0x800,0x17800)/File(\EFI\debian\shimx64.efi) Boot0005* EFI Virtual disk (1.0) PciRoot(0x0)/Pci(0x15,0x0)/Pci(0x0,0x0)/SCSI(1,0) Boot0006* debian HD(1,GPT,eb36f2b9-c679-4f18-b076-e868a50f5a4c,0x800,0x17800)/File(\EFI\debian\shimx64.efi)
  • Si nécessaire, on pourra supprimer une entrée (par exemple si les IDs ne matchent pas), exemple ici avec l'entrée 0006 :
root@host:~# efibootmgr -B -b 0006
  • Si nécessaire, on pourra ajouter une entrée (par exemple si les IDs ne matchent pas) :
root@host:~# efibootmgr --create --disk /dev/sdb --part 1 --label "debian2" --loader "\EFI\debian\shimx64.efi"
  • Maintenant, la configuration du RAID1 avec mdadm doit maintenant ressembler à ça :
Représentation de deux disques durs avec partitionnement uefi et avec un raid mdadm

Notre système est maintenant redondant, car même si un disque venait à défaillir, le système serait toujours être en mesure de démarrer. Cependant, nos partitions EFI ne se syncrhonisent pas; et c'est ce que nous allons mettre en place juste après.

Activation du RAID mdadm pour les partitions EFI

  • D'abord créer une nouvelle partition mdadm pour /boot/efi sans le disque sda1 (on a besoin de conserver les données qui se trouvent à l'intérieur). (Note: metadata 1.0 est nécessaire pour booter en EFI) :
root@host:~# mdadm --create /dev/md100 --level 1 --raid-disks 2 --metadata 1.0 /dev/sdb1 missing mdadm: partition table exists on /dev/sdb1 Continue creating array? yes mdadm: array /dev/md100 started.
  • Formater la nouvelle partition RAID en FAT32 :
root@host:~# mkfs.fat -F32 /dev/md100
  • Copier le contenu de la partition /dev/sda1 vers le RAID mdadm :
root@host:~# mkdir /tmp/RAID; mount /dev/md100 /tmp/RAID root@host:~# apt update && apt install rsync root@host:~# rsync -av --progress /boot/efi/ /tmp/RAID/
  • Maintenant, ajouter la partition /dev/sda1 au RAID mdadm:
root@host:~# umount /dev/sda1 root@host:~# mdadm --manage /dev/md100 --add /dev/sda1 mdadm: added /dev/sda1
  • Éditer le fichier de configuration /etc/fstab et remplacer le UUID associé au /boot/efi avec le nouvel UUID (en utilisant blkid /dev/md100) ou directement en précisant /dev/md100 :
UUID=0848963c-06bb-4f8b-9531-7a8bd2dee947 / ext4 errors=remount-ro 0 1 # /boot/efi was on /dev/sda1 during installation #OLD : UUID=D849-15E6 /boot/efi vfat umask=0077 0 1 /dev/md100 /boot/efi vfat umask=0077 0 1 # swap was on /dev/md102 during installation UUID=8225ac96-677e-4fae-8f6b-28eac6c15a74 none swap sw 0 0
  • Ajouter la configuration de /dev/md100 dans le fichier mdadm.conf :
root@host:~# mdadm --detail --scan | grep 100 >> /etc/mdadm/mdadm.conf
  • Mettre à jour l'image initramfs (image de boot) :
root@host:~# update-initramfs -u update-initramfs: Generating /boot/initrd.img-6.1.0-18-amd64
  • Vérifier l'état des raid mdadm :
root@host:~# cat /proc/mdstat md100 : active raid1 sda1[2] sdb1[0] 48064 blocks super 1.0 [2/2] [UU] md0 : active raid1 sdb2[1] sda2[0] 18537472 blocks super 1.2 [2/2] [UU] md1 : active (auto-read-only) raid1 sda3[0] sdb3[1] 2363392 blocks super 1.2 [2/2] [UU] resync=PENDING unused devices: <none>

Note : Comme mentionné dans une discussion sur Stack Exchange (https://unix.stackexchange.com), l'array RAID swap md1 restera dans l'état PENDING jusqu'à ce qu'il commencera à être utilisé. En d'autres termes, il ne passera pas à l'état actif tant que le système n'aura pas besoin d'écrire dessus.

  • Terminé! Nous avons donc un système UEFI RAID1 totalement redondant et fonctionnel :
Représentation de deux disques durs avec partitionnement uefi et avec un raid mdadm
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :

contact mail address