Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 1413 minIntermédiaire

RAID logiciel avec mdadm et quotas disque

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • comparer les niveaux de RAID et calculer leur capacité utile ;
  • créer un RAID 1 avec mdadm et le rendre permanent ;
  • simuler une panne et remplacer un disque ;
  • limiter l'espace des utilisateurs avec des quotas.

4 exercices corrigés1 schéma

Le RAID (Redundant Array of Independent Disks) combine plusieurs disques pour qu'un serveur survive à la panne de l'un d'eux, ou pour additionner leur capacité et leur débit ; sous Linux, mdadm le réalise en logiciel. Les quotas limitent la place que chaque utilisateur ou groupe peut occuper sur un système de fichiers. Ce chapitre compare les niveaux de RAID, monte un RAID 1 sur srv-journaux, simule une panne de disque, puis met en place des quotas sur srv-web.

Les niveaux de RAID

NiveauPrincipeDisques minimumCapacité utile (n disques de taille c)Pannes supportées
RAID 0Agrégat par bandes (striping) : les données sont réparties sur tous les disques2n × cAucune : un disque perdu, tout est perdu
RAID 1Miroir : chaque disque contient une copie complète2cn − 1
RAID 5Bandes avec parité répartie3(n − 1) × c1
RAID 6Bandes avec double parité4(n − 2) × c2
RAID 10Miroirs, réunis en bandes (1+0)4n × c / 21 à coup sûr, plus si les pannes touchent des miroirs différents
RAID 0 : bandesD1D2A1A3A5A2A4A6capacité 2 × caucune panne supportéeRAID 1 : miroirD1D2A1A2A3A1A2A3capacité c (un seul disque)1 panne sur 2 disquesRAID 5 : bandes + paritéD1D2D3A1A2PA3PA4PA5A6P : parité,elle tourned'un disqueà l'autrecapacité (n − 1) × c, ici 2 × c1 panne supportéeRAID 10 : miroirs en bandesD1D2D3D4A1A1A2A2A3A3A4A4A5A5A6A6capacité n × c / 2, ici 2 × c1 panne à coup sûr, jusqu'à 1 par miroir
Où vont les blocs : réparties (RAID 0), copiés (RAID 1), avec parité (RAID 5), en miroirs agrégés (RAID 10)

La parité est une information calculée à partir des blocs d'une bande (un OU exclusif), qui permet de recalculer n'importe quel bloc manquant. Elle coûte de l'espace (un disque en RAID 5, deux en RAID 6) et du temps à chaque écriture. Pendant la reconstruction après une panne, tous les disques restants sont lus intégralement : avec de gros disques, c'est long (des heures, parfois plus d'une journée), et une seconde panne pendant cette période est fatale en RAID 5. D'où la préférence pour le RAID 6 ou le RAID 10 sur les grands volumes.

RAID matériel, logiciel ou ZFS. Un RAID matériel est géré par une carte contrôleur, invisible du système. Le RAID logiciel de Linux (mdadm) est géré par le noyau : aucun matériel spécial, et les disques se relisent sur n'importe quel autre Linux. ZFS, utilisé par Proxmox VE et TrueNAS, intègre le RAID (miroirs, RAID-Z) dans le système de fichiers lui-même, avec des sommes de contrôle qui détectent la corruption silencieuse.

Créer un RAID 1 avec mdadm

Dans la maquette, srv-journaux a reçu deux disques virtuels de 100 Gio, sdb et sdc. On en fait un miroir, sur lequel on pose LVM pour le volume des journaux :

bash
sudo apt install mdadm
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
cat /proc/mdstat
console
mdiallo@srv-journaux:~$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc[1] sdb[0]
      104790016 blocks super 1.2 [2/2] [UU]
      [==>..................]  resync = 12.4% (13001344/104790016) finish=7.6min speed=201176K/sec

unused devices: <none>

[2/2] [UU] signifie « 2 disques prévus, 2 présents, tous deux à jour » (U pour up, _ pour un disque manquant). La synchronisation initiale tourne en arrière-plan : le volume est utilisable tout de suite.

Enregistrer la configuration, pour que le RAID soit réassemblé sous le même nom à chaque démarrage :

bash
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u

La première commande ajoute une ligne ARRAY /dev/md0 metadata=1.2 UUID=… à /etc/mdadm/mdadm.conf ; la seconde recopie ce fichier dans l'image de démarrage. Dans le même fichier, la ligne MAILADDR informatique@sorbier.example indique où envoyer une alerte quand un disque tombe : le service de surveillance de mdadm la lit.

Poser LVM et le système de fichiers sur le RAID :

bash
sudo pvcreate /dev/md0
sudo vgcreate vg_journaux /dev/md0
sudo lvcreate -n distant -l 80%FREE vg_journaux     # 20 % gardés en réserve
sudo mkfs.ext4 -L journaux /dev/vg_journaux/distant
sudo mkdir -p /srv/journaux
echo '/dev/mapper/vg_journaux-distant /srv/journaux ext4 defaults,nofail,nodev,nosuid,noexec 0 2' | sudo tee -a /etc/fstab
sudo systemctl daemon-reload && sudo mount -a && df -h /srv/journaux

sudo mdadm --detail /dev/md0 donne l'état complet : niveau, taille, état (clean, degraded, recovering), et la liste des disques membres.

Simuler une panne et remplacer un disque

On vérifie que le miroir tient, avant d'en avoir besoin :

bash
sudo mdadm /dev/md0 --fail /dev/sdc       # déclarer sdc en panne
cat /proc/mdstat                          # [2/1] [U_] : le RAID est dégradé, mais fonctionne
ls /srv/journaux                          # les données sont toujours là
sudo mdadm /dev/md0 --remove /dev/sdc     # retirer le disque du RAID

En vrai, on remplace alors le disque physique (ou on ajoute un nouveau disque virtuel, sdd), puis :

bash
sudo mdadm /dev/md0 --add /dev/sdd
watch -n 5 cat /proc/mdstat               # suivre la reconstruction (Ctrl+C pour quitter)

Pendant la reconstruction, /proc/mdstat affiche recovery et un pourcentage ; à la fin, [UU] revient. Un RAID dégradé ne se voit pas à l'usage : sans alerte, on peut fonctionner des mois sur un seul disque sans le savoir. C'est pourquoi l'adresse MAILADDR et la supervision de l'état du RAID (cours Supervision) ne sont pas facultatives.

Les quotas disque

Sur srv-web, les comptes du prestataire déposent des fichiers dans leur dossier personnel. Pour qu'un téléversement maladroit ne remplisse pas /home pour tout le monde, on limite chaque compte avec des quotas. Un quota porte sur un système de fichiers, pour un utilisateur ou un groupe, et fixe deux limites :

  • la limite souple (soft) peut être dépassée pendant un délai de grâce (7 jours par défaut), au terme duquel elle devient bloquante ;
  • la limite stricte (hard) ne peut jamais être dépassée : l'écriture échoue avec « Quota de disque dépassé ».

On peut limiter l'espace (en blocs de 1 Kio) et le nombre de fichiers (en inodes).

Mise en place sur ext4, pour /home :

  1. Installer les outils : sudo apt install quota.

  2. Ajouter les options usrquota,grpquota à la ligne de /home dans /etc/fstab :

    text
    /dev/mapper/srv--web--vg-home  /home  ext4  defaults,usrquota,grpquota  0  2
    
  3. Remonter et créer les fichiers de quotas :

    bash
    sudo systemctl daemon-reload
    sudo mount -o remount /home
    sudo quotacheck -cugm /home       # crée aquota.user et aquota.group à la racine de /home
    sudo quotaon -v /home
    
  4. Fixer les limites : 4 Gio en souple, 5 Gio en strict, sans limite de fichiers :

    bash
    sudo setquota -u dev-igarnier 4194304 5242880 0 0 /home
    sudo setquota -u dev-hpetit   4194304 5242880 0 0 /home
    sudo setquota -g web-dev      8388608 10485760 0 0 /home   # pour tout le groupe
    

    Les valeurs sont en blocs de 1 Kio : 4 × 1024 × 1024 = 4 194 304 pour 4 Gio. sudo edquota -u dev-igarnier ouvre les mêmes réglages dans un éditeur ; sudo edquota -p dev-igarnier -u dev-yroux copie les quotas d'un compte vers un autre.

  5. Contrôler : sudo repquota -s /home affiche l'usage et les limites de tous les comptes (-s en unités lisibles), et chaque utilisateur voit les siennes avec quota -s. sudo setquota -t 604800 604800 /home règle le délai de grâce (en secondes : 7 jours) pour les blocs et pour les inodes.

Au démarrage, systemd vérifie et active les quotas tout seul dès que les options figurent dans /etc/fstab. Sur XFS, les quotas se gèrent avec un autre outil, xfs_quota, et l'option de montage uquota.

Exercices

Exercice 1 sur 4 Calculer des capacités RAID Réussi À revoir

Un serveur reçoit quatre disques de 4 To. Pour chaque niveau (RAID 0, RAID 1 sur les quatre disques, RAID 5, RAID 6, RAID 10), donne la capacité utile et le nombre de disques qui peuvent tomber en panne sans perte de données.

Voir la réponseMasquer la réponse de l'exercice 1
NiveauCapacité utilePannes supportées
RAID 016 To0
RAID 1 (4 copies)4 To3
RAID 512 To (3 × 4)1
RAID 68 To (2 × 4)2, quels qu'ils soient
RAID 108 To (4 × 4 / 2)1 à coup sûr ; 2 si ce sont des disques de miroirs différents

RAID 6 et RAID 10 offrent la même capacité avec quatre disques : RAID 6 supporte deux pannes quelconques, RAID 10 écrit plus vite et se reconstruit plus vite (une simple copie du disque jumeau).

Tu avais trouvé ?

Exercice 2 sur 4 Lire /proc/mdstat Réussi À revoir

text
md0 : active raid1 sdb[0]
      104790016 blocks super 1.2 [2/1] [U_]
  1. Dans quel état est le RAID ?
  2. Les données sont-elles accessibles ? Sont-elles protégées ?
  3. Quelles commandes lances-tu après avoir branché un disque neuf, vu comme /dev/sdd ?
Voir la réponseMasquer la réponse de l'exercice 2
  1. Dégradé : deux disques prévus, un seul présent ([2/1]), le second membre manque ([U_]). Seul sdb est actif.
  2. Accessibles, oui : un miroir fonctionne avec un seul disque. Protégées, non : la panne de sdb ferait tout perdre. Il faut remplacer le disque au plus vite, et vérifier que la dernière sauvegarde est bonne.
  3. sudo mdadm --detail /dev/md0 pour confirmer l'état, sudo mdadm /dev/md0 --add /dev/sdd, puis watch cat /proc/mdstat jusqu'au retour de [2/2] [UU]. Si l'ancien disque apparaît encore comme membre en échec, le retirer d'abord avec --remove.

Tu avais trouvé ?

Exercice 3 sur 4 Choisir un niveau de RAID Réussi À revoir

Pour un serveur de sauvegarde physique, Antoine Mercier dispose de six disques de 8 To. Il hésite entre RAID 5, RAID 6 et RAID 10. Donne la capacité de chaque solution et conseille-le.

Voir la réponseMasquer la réponse de l'exercice 3
  • RAID 5 : 5 × 8 = 40 To, une seule panne supportée.
  • RAID 6 : 4 × 8 = 32 To, deux pannes quelconques.
  • RAID 10 : 6 × 8 / 2 = 24 To, une panne à coup sûr.

Conseil : RAID 6. Avec des disques de 8 To, une reconstruction dure des heures pendant lesquelles tous les disques sont sollicités : en RAID 5, une seconde panne à ce moment ferait tout perdre. Le RAID 10 est plus rapide mais coûte 8 To de plus, et les performances d'écriture comptent moins qu'une capacité confortable pour des sauvegardes. Dans tous les cas, ce serveur ne doit pas être la seule copie : une sauvegarde hors site reste nécessaire.

Tu avais trouvé ?

Exercice 4 sur 4 Interpréter des quotas Réussi À revoir

Sur /home, dev-igarnier a une limite souple de 4 Gio, une limite stricte de 5 Gio, et un délai de grâce de 7 jours. Il occupe 3,8 Gio.

  1. Il téléverse une archive de 600 Mio. Que se passe-t-il ?
  2. Il ne fait rien pendant 8 jours. Que se passe-t-il à sa prochaine écriture ?
  3. Il tente ensuite de téléverser une archive de 1,5 Gio d'un coup, sans avoir rien supprimé. Que se passe-t-il ?
Voir la réponseMasquer la réponse de l'exercice 4
  1. Il passe à 4,4 Gio : au-dessus de la limite souple, sous la limite stricte. L'écriture réussit ; le délai de grâce de 7 jours démarre, et quota -s affiche ce délai.
  2. Le délai de grâce a expiré : la limite souple devient bloquante. Toute nouvelle écriture échoue (« Quota de disque dépassé ») tant qu'il n'est pas redescendu sous 4 Gio.
  3. Même sans le délai expiré, 4,4 + 1,5 = 5,9 Gio dépasserait la limite stricte de 5 Gio : l'écriture échoue dès que le fichier atteint la limite, et le téléversement s'arrête avec un fichier incomplet.

Tu avais trouvé ?

Chapitre terminé !

Fais les 4 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Tâches planifiées : crontab et timers systemdRevoir le sommaire du cours