Outils pour utilisateurs

Outils du site


cours:informatique:sysadmin:serveur_fichiers_linux:230_raid_logiciel

Notes et transcriptions du cours “Montez un serveur de fichiers sous Linux” disponible sur la plateforme Openclassrooms.

Anticipez les défaillances matérielles avec une solution RAID logicielle

Vous savez maintenant monter un serveur Linux et gérer des partitions ext4. Si on se projette dans l’optique d’offrir un service de partage de fichiers sur notre réseau local, les deux problématiques qui vont se poser sont :

  1. la fiabilité des données car on ne voudrait pas perdre les données ;
  2. la performance du système car on veut offrir un service rapide et efficace.

Dans ce chapitre, vous allez découvrir les technologies RAID qui ont été créées spécialement pour ça.

RAID est l’acronyme de Redundant Array of Independent Disks, soit en français regroupement redondant de disques indépendants. C’est un ensemble de techniques qui permet de répartir le stockage de données sur plusieurs disques. Une fois le système mis en place, cette répartition des données est transparente pour l’utilisateur qui ne voit qu’un volume de stockage unique.

Il existe différents niveaux de RAID en fonction de la façon dont les données sont réparties sur les disques. Chaque système a ses avantages et inconvénients et je vais vous présenter les principaux niveaux.

Dans un volume RAID, tous les disques doivent avoir la même capacité. Si ça n’est pas le cas, vous pouvez créer des partitions de la taille de votre disque le plus petit et construire votre RAID avec toutes ces partitions de tailles identiques. L’espace restant sur vos plus gros disques ne pourra pas être utilisé au sein de votre RAID mais pourra être utilisé comme une partition standard.

Le RAID 0 pour agréger des disques

 Répartition des données dans une RAID 0

Dans le RAID 0, chaque fichier est réparti par petits bouts sur plusieurs disques. À chaque fois que vous allez lire ou écrire sur votre volume RAID, vos disques durs physiques vont pouvoir travailler en parallèle et les performances vont être bien meilleures que si vous n’aviez qu’un seul disque. Un autre avantage de ce système c’est qu’il n’y a pas de place perdue. Si on a trois disques de 10Go, on aura un volume de stockage utile de 30Go.

L’inconvénient majeur de ce système, c’est que si vous perdez un seul disque de votre volume, vous perdez définitivement l’ensemble des données. Il est donc déconseillé de stocker des données permanentes sur un RAID 0.

Le RAID 1 pour stocker des données en miroir

Répartition des données dans un RAID 1

Dans le RAID 1, tous vos disques sont des copies exactes et chaque fois qu’on écrit un fichier, il est écrit sur chacun des disques. L’avantage majeur de ce système, c’est la fiabilité car tant qu’il vous reste au moins un disque, vous n’avez pas perdu de données.

En revanche, ce système n’apporte pas d’amélioration de performance en écriture puisqu’on doit tout écrire sur chaque disque. C’est aussi un système très coûteux en espace de stockage car avec trois disques de 10Go, on n’aura qu’un volume de stockage utile de 10Go.

Le RAID 10, un bon compromis entre fiabilité et performances

Le RAID 10 est un RAID 1+0

Le RAID 10 est en fait un mélange des deux RAID que nous venons de voir. Il faut d’ailleurs comprendre le 10 comme 1+0. Dans ce système, les disques sont regroupés par grappes en RAID 1 et les fichiers sont répartis sur plusieurs grappes en RAID 0. Il vous faut donc au moins 4 disques pour mettre en place ce type de RAID.

Il offre à la fois :

  • un bon niveau de fiabilité puisqu’on ne perd aucune donnée tant qu’il reste au moins un disque dans chaque grappe ;
  • et un bon niveau de performance puisque les lectures/écritures sont réparties sur plusieurs disques.

L’optimisation de stockage est moyenne. Avec 4 disques de 10Go, vous aurez un volume de stockage utile de 20Go.

Le RAID 5, fiabilité, performance mais beaucoup de calculs

Répartition des données dans un RAID 5

Pour faire du RAID 5, vous aurez besoin d’au moins 3 disques. Cette technique est plus complexe mathématiquement et consiste à répartir les données sur tous les disques en rajoutant des “blocs de parité”. Chaque bloc écrit sur un disque est donc :

  • soit un bloc de parité : si on le perd, on n’a pas perdu de données et on peut recalculer ce bloc à partir des blocs de données des autres disques ;
  • soit un bloc de données : si on le perd, on peut le retrouver à partir des blocs de données restants et du bloc de parité.

Ce système permet d’améliorer les performances puisque :

  1. les écritures sont réparties sur plusieurs disques ;
  2. il permet également une certaine fiabilité puisqu’on peut se permettre de perdre un disque sans perdre de données ;
  3. il optimise l’espace de stockage par rapport au RAID 10 puisqu’avec 4 disques de 10Go, vous aurez un volume de stockage utile de 30Go.

Par contre, peu importe le nombre total de disques, vous ne pourrez pas vous permettre de perdre plus d’un disque. Surtout, le calcul des blocs de parité entraîne des calculs processeur non-négligeables pour les écritures et peut augmenter fortement le temps de reconstruction en cas de perte d’un disque.

Il existe d’autres niveaux de RAID mais ils sont moins couramment employés. Avec ces niveaux-là, vous avez une bonne idée de ce qu’il est possible de faire et vous comprenez que tout est question de compromis entre la fiabilité, les performances et le coût.

En pratique, il y a plusieurs façons de gérer un volume RAID :

  • le RAID matériel : certains serveurs sont équipés d’un contrôleur matériel qui gère le RAID. Le réglage se fait généralement au niveau du Bios de l’ordinateur et les performances sont souvent très bonnes. De plus, vous n’avez rien à régler au niveau de votre système d’exploitation qui verra le volume RAID comme un disque dur ;
  • le fake-RAID ou RAID pseudo-matériel : c’est la version bon marché du contrôleur matériel. C’est une puce qui gère le RAID en utilisant le processeur et la mémoire principale de l’ordinateur. En général, je vous conseille d’éviter ;
  • le RAID logiciel : dans ce cas, le RAID est géré par votre système d’exploitation. C’est une méthode utilisable sur tout matériel, très souple d’utilisation mais qui consomme une petite partie des ressources système.

Pour finir ce chapitre, je vous propose de mettre en place une solution RAID 1 logicielle afin de sécuriser les données de notre serveur.

Mettez en place un RAID 1 logiciel pour sécuriser vos données

Vous allez mettre en place une solution RAID 1 avec trois disques :

  • un disque de données ;
  • un disque de copie des données ;
  • un “hot spare”, c’est-à-dire une disque de rechange à chaud qui pourra automatiquement prendre la place d’un des deux disques précédents en cas de défaillance.

Pour cela, vous devez d’abord ajouter vos 3 disques à la VM.

# On liste les périphériques de type block
lsblk 
 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda    254:0    0    5G  0 disk 
├─vda1 254:1    0    4G  0 part /
├─vda2 254:2    0    1K  0 part 
└─vda5 254:5    0  975M  0 part [SWAP]
vdb    254:16   0    1G  0 disk 
vdc    254:32   0    1G  0 disk 
vdd    254:48   0    1G  0 disk

Dans cet exemple, les disques vdb, vdc et vdd sont bien disponibles sur notre VM.

Installer les outils de gestion du RAID logiciel :

sudo apt-get install mdadm

Créez votre volume raid par la commande :

$ sudo mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/vdb /dev/vdc --spare-devices=1 /dev/vdd

Ici, on crée le périphérique /dev/md0 (les volumes RAID ont des noms de type /dev/md*), on lui dit que c’est du RAID 1, qu’il y a 2 disques en RAID /dev/vdb et /dev/vdc et un disque en “spare” /dev/vdd.

Pour fixer les paramètres de votre RAID et éviter que votre périphérique ne change de nom au prochain démarrage, je vous conseille de rajouter la ligne suivante dans le fichier /etc/mdadm/mdadm.conf après le commentaire # definitions of existing MD arrays :

ARRAY /dev/md0 level=raid1 num-devices=2 spares=1 UUID=0e529b88:199915ed:e6e104c5:38db1f03 devices=/dev/sdb,/dev/sdc,/dev/sdd

Vous pouvez trouver votre UUID et d’autres détails sur votre RAID par la commande :

$ sudo mdadm --query --detail /dev/md0
/dev/md0:
 Version : 1.2
 Creation Time : Wed Jun 30 19:08:33 2021
 Raid Level : raid1
 Array Size : 1046528 (1023.00 MiB 1072.69 MB)
 Used Dev Size : 1046528 (1023.00 MiB 1072.69 MB)
 Raid Devices : 2
 Total Devices : 3
 Persistence : Superblock is persistent
 
 Update Time : Wed Jun 30 19:08:38 2021
 State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
 Spare Devices : 1
 
 Name : vm-serveur:0 (local to host vm-serveur)
 UUID : 0e529b88:199915ed:e6e104c5:38db1f03
 Events : 17
 
 Number Major Minor RaidDevice State
 0 8 16 0 active sync /dev/sdb
 1 8 32 1 active sync /dev/sdc
 
 2 8 48 - spare /dev/sd

Le système de démarrage de votre système a sa propre copie du fichier /etc/mdadm/mdadm.conf. Pour que les modifications sur ce fichier soient prises en compte au prochain démarrage, vous devrez également lancer la commande :

$ sudo update-initramfs -u

Vous pouvez ensuite formater et utiliser votre volume RAID comme n’importe quel volume physique :

$ sudo mkfs -t ext4 /dev/md0 #Formatage
$ sudo mount -t ext4 /dev/md0 /var/data1 #Montage
$ sudo touch /var/data1/mon_premier_fichier_sur_raid #Création d’un fichier vide

Un des gros intérêts du RAID 1 étant de nous prémunir contre les défaillances matérielles, voyons donc ce qui se passe en cas de perte d’un disque.

Reconstruisez votre RAID suite au défaut d’un disque

En cas de perte d’un disque, le RAID permettra à votre système de fonctionner sur la copie valide. Il faudra quand même réagir rapidement et remplacer le disque défaillant avant de perdre votre dernière copie des données. Comme vous avez prévu un disque de rechange, ce processus sera en partie automatisé mais il faudra quand même penser à remettre un disque de rechange.

Pour essayer, vous pouvez simuler la perte du disque /dev/vdb et vérifier que le disque /dev/vdd prend bien le relai automatiquement :

$ sudo mdadm --manage /dev/md0 --fail /dev/vdb
$ sudo mdadm --query --detail /dev/md

Les données sont alors copiées du disque restant sur le nouveau disque actif. On parle de reconstruction du RAID. Vous pouvez également suivre les différentes étapes de ce processus dans vos journaux de log.

Dans notre cas, on n’avait qu’un fichier vide sur le RAID donc la reconstruction est rapide mais ça peut parfois être assez long quand vous avez beaucoup de données.

Il nous reste à retirer le disque défectueux du RAID :

$ sudo mdadm --manage /dev/md0 --remove /dev/vdb

Il faut alors changer physiquement le disque. Certains contrôleurs disques permettent de le faire à chaud et d’autres nécessitent d’éteindre la machine. Une fois le disque changé, vous pouvez réintégrer le nouveau disque au volume RAID :

$ sudo mdadm --manage /dev/md0 --add /dev/vdb

Vous avez maintenant une partition de données de 1Go comme à la fin du chapitre 2 mais votre installation peut maintenant supporter la perte de deux disques durs avant de perdre des données. Dans le chapitre suivant, vous allez à nouveau diviser votre partition de données en deux mais vous utiliserez cette fois LVM et vous verrez que ce sera bien plus facile.

En résumé

  • Le RAID permet de gérer la répartition de vos données sur plusieurs disques.
  • Il existe différents niveaux de RAID selon la manière dont sont réparties les données.
  • Chaque niveau de RAID présente un compromis performance/fiabilité/coût différent.
  • Vous connaissez maintenant les niveaux RAID 0, 1, 10 et 5.
  • Vous avez fiabilisé votre partition de données par du RAID 1.

Précédent | ⌂ Retour au sommaire | Suivant ▷

cours/informatique/sysadmin/serveur_fichiers_linux/230_raid_logiciel.txt · Dernière modification : 2024/04/04 09:45 de yoann