Linux Mint sur un assemblage RAID 0
Depuis quelque temps, j'ai adopté Linux Mint Debian Edition sur tous mes postes de travail. Dans l'ensemble, je suis très content de cette distribution, qui offre une base saine pour toutes mes configurations de postes clients.
Aujourd'hui je me suis heurté à une limitation de l'installateur de cette distribution. L'ordinateur de ma tendre moitié est un PC un peu ancien muni de deux disques SATA de taille égale. L'achat d'un disque SSD serait certes une solution simple pour obtenir un système plus réactif. Alternativement, je peux aussi garder les deux disques SATA existants et les configurer en RAID 0, ce qui accélère sensiblement les opérations de lecture/écriture sur disque.
Le souci, c'est que l'installateur de Linux Mint n'offre pas la possibilité de configurer le RAID. Qu'à cela ne tienne, je vais mettre les mains dans le cambouis et configurer tout ça à la main.
Et les autres systèmes ?
J'ai mis en pratique ce petit atelier sur une Linux Mint Debian Edition 7.
A priori, ça devrait fonctionner tel quel sur une Linux Mint classique.
Ceci étant dit, vous pourrez l'adapter théoriquement à n'importe quelle
distribution installée, étant donné que nous utilisons des outils
classiques comme mdadm, fdisk, mount, rsync, etc.
BIOS vs. UEFI
La machine sur laquelle j'ai fait cette installation est un vieux coucou muni d'un BIOS traditionnel. Les choses ne se passent pas de la même façon sur une machine avec un UEFI.
Réinitialiser les disques
Pour commencer, je démarre sur le support d'installation live de Linux Mint Debian Edition, j'ouvre un terminal et j'obtiens les droits nécessaires :
Je désactive les assemblages RAID qui proviennent d'une installation antérieure :
J'efface les métadonnées RAID persistantes sur toutes les partitions :
# mdadm --zero-superblock /dev/sda1
# mdadm --zero-superblock /dev/sda2
# mdadm --zero-superblock /dev/sdb1
# mdadm --zero-superblock /dev/sdb2
Il ne reste plus qu'à supprimer les tables de partitions et les signatures de systèmes de fichiers :
# sgdisk --zap-all /dev/sda
# wipefs --all /dev/sda
# sgdisk --zap-all /dev/sdb
# wipefs --all /dev/sdb
Voilà mes deux disques non partitionnés :
# fdisk -l /dev/sd{a,b}
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors
Disk model: ST3250410AS
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdb: 232.89 GiB, 250059350016 bytes, 488397168 sectors
Disk model: WDC WD2500AAKX-6
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Installation de Linux Mint
-
J'installe Linux Mint Debian Edition 7 normalement sur un seul disque.
-
Dans l'installateur, je sélectionne le disque
/dev/sda. -
L'installateur m'avertit que le disque
/dev/sdbne contient aucune table de partitions et me propose de créer un jeu de partitions. Je réponds Non. -
J'installe GRUB sur
/dev/sda.
Une fois l'installation terminée, je redémarre une fois sur mon nouveau système pour vérifier que tout est en ordre.
Sauvegarder le système installé
Je relance la session live, j'active le compte root et je fais un état des
lieux de mes disques :
# fdisk -l /dev/sd{a,b}
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors
Disk model: ST3250410AS
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xffb35097
Device Boot Start End Sectors Size Id Type
/dev/sda1 4096 16996351 16992256 8.1G 83 Linux
/dev/sda2 16998400 488396799 471398400 224.8G 83 Linux
Disk /dev/sdb: 232.89 GiB, 250059350016 bytes, 488397168 sectors
Disk model: WDC WD2500AAKX-6
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Je crée deux points de montage en-dessous de /mnt :
# mkdir -v /mnt/{system,external}
mkdir: created directory '/mnt/system'
mkdir: created directory '/mnt/external'
Je monte la partition principale de mon système installé sur
/mnt/system :
Je branche un disque sur externe formaté en ext4 et je l'identifie :
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 2.3G 1 loop /run/live/rootfs/filesystem.squashfs
sda 8:0 0 232.9G 0 disk
├─sda1 8:1 0 8.1G 0 part
└─sda2 8:2 0 224.8G 0 part /mnt/system
sdb 8:16 0 232.9G 0 disk
sdc 8:32 1 14.6G 0 disk
├─sdc1 8:33 1 2.8G 0 part /run/live/medium
└─sdc2 8:34 1 5M 0 part
sdd 8:48 0 465.7G 0 disk
└─sdd1 8:49 0 465.7G 0 part
sr0 11:0 1 1024M 0 rom
Je monte ce disque sur /mnt/external :
Je crée un répertoire de sauvegarde sur le disque externe :
Je copie l'arborescence de mon système installé vers ce répertoire sur le disque externe :
Cette opération me laisse le temps d'aller boire un café.
Une fois que c'est terminé, je démonte la partition /mnt/system :
Créer la grappe RAID
Dans un premier temps, je lance fdisk et je modifie mes partitions
existantes. Voilà ce que ça donne :
# fdisk -l /dev/sda
...
Device Boot Start End Sectors Size Id Type
/dev/sda1 4096 16996351 16992256 8.1G fd Linux raid autodetect
/dev/sda2 16998400 488396799 471398400 224.8G fd Linux raid autodetect
Je clone ce nouveau schéma de partitionnement :
Cloner une table de partitions
La suite de commandes avec sfdisk est un bidouillage de mon cru qui
permet de cloner une table de partitions sans pour autant se retrouver avec
des UUID identiques.
J'assemble les grappes RAID :
# mdadm --create /dev/md/swap --level=0 --raid-devices=2 --metadata=1.2 \
/dev/sda1 /dev/sdb1
mdadm: array /dev/md/swap started.
# mdadm --create /dev/md/root --level=0 --raid-devices=2 --metadata=1.2 \
/dev/sda2 /dev/sdb2
mdadm: array /dev/md/root started.
Je crée un système de fichiers ext4 sur /dev/md/root :
Je crée une partition d'échange sur /dev/md/swap :
Je monte ma nouvelle partition principale sur /mnt/system :
Je restaure mon système sauvegardé en utilisant les mêmes options que tout à l'heure :
C'est le moment d'aller boire un deuxième café.
Basculer vers le système monté
J'effectue un bind mount des systèmes de fichiers virtuels :
# for i in dev sys proc run dev/pts
> do
> mount -v --bind /$i /mnt/system/$i
> done
mount: /dev bound on /mnt/system/dev.
mount: /sys bound on /mnt/system/sys.
mount: /proc bound on /mnt/system/proc.
mount: /run bound on /mnt/system/run.
mount: /dev/pts bound on /mnt/system/dev/pts.
Je bascule vers le système monté sur /mnt/system :
Rectifier le tir
Je réécris GRUB dans le MBR :
Installer GRUB sur quel disque ?
La commande ci-dessus vous demande de sélectionner le ou les disques sur
lesquels vous souhaitez installer GRUB. Ici, je choisis /dev/sda et
/dev/sdb.
Maintenant, il me faut identifier les UUID des assemblages RAID :
# ls -l /dev/md/root
lrwxrwxrwx 1 root root 8 May 28 08:40 /dev/md/root -> ../md126
# ls -l /dev/md/swap
lrwxrwxrwx 1 root root 8 May 28 08:38 /dev/md/swap -> ../md127
# ls -l /dev/disk/by-uuid/
Je note les UUID respectifs et j'édite /etc/fstab en conséquence :
UUID=24c876bb-a1a5-4cb3-84e1-e6579b069f66 / ext4 defaults 0 1
UUID=24e267f0-d7a0-46f5-b469-be9ba9ed36f4 none swap sw 0 0
Je quitte l'environnement chroot :
J'allume un cierge dans l'église de mon village et je redémarre.
Redémarrage initial
Si tout s'est bien passé, voilà à quoi ressemble mon nouveau système :
$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/md127 442G 7.3G 412G 2% /
$ cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md126 : active raid0 sdb1[1] sda1[0]
16973824 blocks super 1.2 512k chunks
md127 : active raid0 sdb2[1] sda2[0]
471134208 blocks super 1.2 512k chunks
unused devices: <none>
-
L'avantage d'un assemblage RAID 0, c'est que le système est sensiblement plus rapide.
-
L'inconvénient, c'est qu'une défaillance sur un des deux disques entraîne la déconfiture de toute l'installation.
Remerciements
Je tiens à remercier mon ami et collègue Joseph Maillardet pour son aide précieuse et ses nombreuses suggestions.
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.

