RAIDLe RAID 1 (Redundant Array of Inexpensive Disks) est normalement réservé aux serveurs, mais j’aime également l’utiliser sur les stations de travail. Pour le prix d’un disque dur, on accroît considérablement la sécurité des données. Et précisons-le tout de suite, l’utilisation du RAID ne vous dispense pas d’un serveur de sauvegardes dans le réseau.

La procédure décrite dans cet article est basée sur une installation OpenSUSE Leap 15.0. Les principes restent les mêmes pour les versions subséquentes, à quelques menus détails près.

Choix des disques

En matière de disques durs, j’ai une prédilection pour les disques Western Digital Red, et dans la mesure du possible, j’essaie d’éviter les capacités supérieures à 1 To pour éviter qu’ils chauffent trop. Les disques de qualité Red sont conçus pour être plus durables, vous les payez donc un peu plus cher. N’oubliez pas que sur une station de travail, ce sont avant tout vos données qui ont de la valeur. Notez aussi qu’en règle générale, les disques durs sont plus fragiles que ce que vous imaginez. La question n’est pas s’ils vont lâcher un jour, mais plutôt quand est-ce qu’ils vont le faire. D’où l’intérêt d’utiliser le RAID 1.

Réinitialiser les disques

Avant d’installer quoi que ce soit, j’ai pris l’habitude de réinitialiser les disques durs pour partir sur des bases saines. Pour ce faire, j’utilise le support d’installation d’OpenSUSE, qui fait également office de système de secours.

Je démarre sur la clé USB, j’appuie sur F2 pour sélectionner la langue française, puis je sélectionne Plus > Système de secours dans le menu principal.

Ma machine est dotée de deux disques durs avec des assemblages RAID.

0:rescue:~ # lsblk
NAME      MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
loop0       7:0    0   65M  1 loop  /parts/mp_0000
loop1       7:1    0 12.9M  1 loop  /parts/mp_0001
loop2       7:2    0 49.6M  1 loop  /mounts/mp_0000
loop3       7:3    0 44.1M  1 loop  /mounts/mp_0001
loop4       7:4    0  4.1M  1 loop  /mounts/mp_0002
sda         8:0    0   40G  0 disk  
├─sda1      8:1    0    8M  0 part  
├─sda2      8:2    0  500M  0 part  
│ └─md127   9:127  0  500M  0 raid1 
├─sda3      8:3    0 37.5G  0 part  
│ └─md126   9:126  0 37.5G  0 raid1 
└─sda4      8:4    0    2G  0 part  
  └─md125   9:125  0    2G  0 raid1 
sdb         8:16   0   40G  0 disk  
├─sdb1      8:17   0    8M  0 part  
├─sdb2      8:18   0  500M  0 part  
│ └─md127   9:127  0  500M  0 raid1 
├─sdb3      8:19   0 37.5G  0 part  
│ └─md126   9:126  0 37.5G  0 raid1 
└─sdb4      8:20   0    2G  0 part  
  └─md125   9:125  0    2G  0 raid1 
sr0        11:0    1  3.7G  0 rom   

Dans un premier temps, je vais supprimer les assemblages RAID.

0:rescue:~ # mdadm --stop --scan
0:rescue:~ # mdadm --zero-superblock /dev/sda2
0:rescue:~ # mdadm --zero-superblock /dev/sda3
0:rescue:~ # mdadm --zero-superblock /dev/sda4
0:rescue:~ # mdadm --zero-superblock /dev/sdb2
0:rescue:~ # mdadm --zero-superblock /dev/sdb3
0:rescue:~ # mdadm --zero-superblock /dev/sdb4

Les assemblages RAID ont bien été nettoyés, et il ne reste plus que les partitions des disques.

0:rescue:~ # lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0    7:0    0   65M  1 loop /parts/mp_0000
loop1    7:1    0 12.9M  1 loop /parts/mp_0001
loop2    7:2    0 49.6M  1 loop /mounts/mp_0000
loop3    7:3    0 44.1M  1 loop /mounts/mp_0001
loop4    7:4    0  4.1M  1 loop /mounts/mp_0002
sda      8:0    0   40G  0 disk 
├─sda1   8:1    0    8M  0 part 
├─sda2   8:2    0  500M  0 part 
├─sda3   8:3    0 37.5G  0 part 
└─sda4   8:4    0    2G  0 part 
sdb      8:16   0   40G  0 disk 
├─sdb1   8:17   0    8M  0 part 
├─sdb2   8:18   0  500M  0 part 
├─sdb3   8:19   0 37.5G  0 part 
└─sdb4   8:20   0    2G  0 part 
sr0     11:0    1  3.7G  0 rom

Je vais me servir de l’outil de partitionnement gdisk pour remettre à zéro mes tables de partitions. Plus exactement, c’est la fonctionnalité avancée zap/destroy qui me permettra de réinitialiser les disques.

0:rescue:~ # gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): x

Expert command (? for help): z
About to wipe out GPT on /dev/sda. Proceed? (Y/N): y
GPT data structures destroyed! You may now partition the disk 
using fdisk or other utilities.
Blank out MBR? (Y/N): y
0:rescue:~ # gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): x

Expert command (? for help): z
About to wipe out GPT on /dev/sdb. Proceed? (Y/N): y
GPT data structures destroyed! You may now partition the disk 
using fdisk or other utilities.
Blank out MBR? (Y/N): y

Et voilà une paire de disques durs tout propres.

0:rescue:~ # lsblk
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0   7:0    0   65M  1 loop /parts/mp_0000
loop1   7:1    0 12.9M  1 loop /parts/mp_0001
loop2   7:2    0 49.6M  1 loop /mounts/mp_0000
loop3   7:3    0 44.1M  1 loop /mounts/mp_0001
loop4   7:4    0  4.1M  1 loop /mounts/mp_0002
sda     8:0    0   40G  0 disk 
sdb     8:16   0   40G  0 disk 
sr0    11:0    1  3.7G  0 rom

Le schéma de partitionnement

Je vais reproduire le schéma de partitionnement que j’utilise normalement pour l’installation sur un seul disque dur, mais en mettant les deux disques en miroir. Concrètement, chaque disque devra arborer les partitions suivantes.

  • une partition BIOS boot d’une taille de 8 Mo
  • une partition Linux RAID d’une taille de 500 Mo pour l’assemblage /dev/md/boot
  • une partition Linux RAID occupant le maximum d’espace disponible pour l’assemblage /dev/md/root
  • une partition Linux RAID dont la taille est égale à la quantité de RAM de la machine pour l’assemblage /dev/md/swap

En termes de systèmes de fichiers, nous utiliserons ext2 pour /dev/md/boot et ext4 pour /dev/md/root.

Mise en place du RAID 1 dans l’installateur

L’écran Partitionnement proposé de l’installateur suggère un schéma de partitionnement automatique réparti sur les deux disques durs. Je vais faire fi de cette proposition et opter pour le Partitionnement expert > Démarrer avec des partitions existantes.

OpenSUSE Leap RAID 1

Je pars de deux disques sda et sdb dépourvus de table de partitions.

OpenSUSE Leap RAID 1

Dans un premier temps, je vais créer quatre partitions sur le disque sda.

  1. Partition BIOS boot : Ajouter > Taille personnalisée : 8 MiB > Rôle : Raw Volume (unformatted) > Partition ID : Partition de démarrage du BIOS.
  2. Partition Linux RAID : Ajouter > Taille personnalisée : 500 MiB > Rôle : Raw Volume (unformatted) > Partition ID : Linux RAID
  3. Partition Linux RAID : Ajouter > Taille personnalisée : soustraire la quantité de swap que l’on veut laisser (par exemple, passer de 39.50 GiB à 37.50 GiB si l’on veut garder 2 GiB pour la partition d’échange) > Rôle : Raw Volume (unformatted) > Partition ID : Linux RAID
  4. Partition Linux RAID : Ajouter > Taille maximale : vérifier si le compte est bon > Rôle : Raw Volume (unformatted) > Partition ID : Linux RAID

Si tout s’est bien passé, voici à quoi ressemble mon premier disque dur à peu de détails près.

OpenSUSE Leap RAID 1

À présent, nous devons répéter cette opération sur le disque sdb, en créant quatre partitions identiques à celles du disque sda. Au total, les deux disques devront ressembler à quelque chose comme ceci.

OpenSUSE Leap RAID 1

Dans la fenêtre de gauche du module de partitionnement, l’entrée RAID nous permet d’assembler les grappes RAID. Cliquez sur Ajouter RAID.

Pour créer l’assemblage /dev/md/boot, définissez le Type de RAID 1 (mise en miroir), choisissez le Nom du RAID boot, mettez en surbrillance les deux partitions /dev/sda2 et /dev/sdb2 dans la colonne de gauche en utilisant la touche Ctrl pour une sélection multiple, puis cliquez sur Ajouter pour les faire glisser dans la colonne de droite.

OpenSUSE Leap RAID 1

Cliquez sur Suivant, acceptez la taille des blocs proposée par défaut (4 KiB), sélectionnez le Rôle Operating System, optez pour le Système de fichiers ext2 et définissez le Point de montage /boot.

Nous allons créer l’assemblage /dev/md/root de manière similaire. Cliquez sur Ajouter RAID, définissez le Type de RAID 1 (mise en miroir), choisissez le Nom du RAID root, mettez en surbrillance les deux partitions /dev/sda3 et /dev/sdb3 dans la colonne de gauche, puis cliquez sur Ajouter pour les faire glisser dans la colonne de droite.

OpenSUSE Leap RAID 1

Cliquez sur Suivant, acceptez la taille des blocs proposée par défaut (4 KiB), sélectionnez le Rôle Operating System, optez pour le Système de fichiers ext4 et gardez le Point de montage / proposé par défaut.

Il ne nous reste plus qu’à créer l’assemblage /dev/md/swap. Cliquez sur Ajouter RAID, définissez le Type de RAID 1 (mise en miroir), choisissez le Nom du RAID swap, mettez en surbrillance les deux partitions restantes /dev/sda4 et /dev/sdb4 dans la colonne de gauche, puis cliquez sur Ajouter pour les faire glisser dans la colonne de droite.

OpenSUSE Leap RAID 1

Cliquez sur Suivant, acceptez la taille des blocs proposée par défaut (4 KiB), sélectionnez le Rôle swap et terminez en confirmant les paramètres proposés par défaut.

Si tout s’est bien passé, le récapitulatif de nos assemblages RAID doit nous afficher quelque chose qui ressemble à ceci.

OpenSUSE Leap RAID 1

Le récapitulatif nous permet de vérifier une dernière fois si les choses se passent comme prévu.

OpenSUSE Leap RAID 1

À partir de là, l’installation se déroule normalement comme pour une configuration avec un disque simple.

Redémarrage initial

Au terme de l’installation, vérifions la santé de notre grappe RAID.

linux-zpm4:~ # cat /proc/mdstat 
Personalities : [raid1] 
md125 : active raid1 sdb2[1] sda2[0]
      511936 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md126 : active raid1 sdb4[1] sda4[0]
      2100160 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sda3[0] sdb3[1]
      39321472 blocks super 1.0 [2/2] [UU]
      bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: 

La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.