Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Mdadm : Superviser un RAID logiciel

mdadm a remplacé tous les outils précédents pour gérer les tableaux de raid.

Introduction

Pré-requis

Installation

Installez le paquet mdadm ou dans un terminal :

...@...:~$ sudo apt install mdadm

Configuration

Utilisation

Modes

mdadm a sept modes :

  1. Assemble : Ce mode fonctionne en arrière-plan chaque fois que le système est démarré : il scanne les disques à la recherche de superblocs et reconstruit toutes les baies pour vous.
  2. Create : C'est le premier des deux modes que vous utiliserez beaucoup. Il crée des tableaux, écrit les superblocs et déclenche l'initialisation.
  3. Grow : ce mode prend en charge les opérations qui modifient la taille d'un tableau (changement du niveau de raid, modification du nombre de périphériques actifs, etc.)
  4. Manage : mode par défaut, principalement utilisé pour ajouter et supprimer des périphériques.
  5. Follow or Monitor
  6. Build : (re)crée un tableau, à n'utiliser que si vous savez exactement ce que vous faites.
  7. Misc : tout ce qui ne rentre pas ailleurs.

Assemblage de vos tableaux

Cette commande s'exécute en arrière-plan au démarrage et assemble et exécute tous vos tableaux :

...@...:~$ sudo mdadm --assemble --scan

Créer un tableau

  1. Créer un raid miroir, l'exemple le plus simple de création d'un tableau :
    ...@...:~$ sudo mdadm --create /dev/md/name /dev/sda1 /dev/sdb1 --level=1 --raid-devices=2
    

    Cela copie le contenu de sda1 dans sdb1 et donne un tableau propre. Vous pouvez utiliser le tableau pendant sa resynchronisation.

  2. Créer un autre type de raid, un exemple plus compliqué :

    ...@...:~$ sudo mdadm --create /dev/md/name /dev/sda1 /dev/sdb1 /dev/sdc1 --level=5 --raid-devices=3 --bitmap=internal
    

    Ceci crée un tableau RAID 5. Donnez le nombre exact de périphériques attendus, ici 3. Deux disques seront assemblés dans un module RAID dégradé, et le troisième disque sera resynchronisé. Si vous voulez ajouter un quatrième lecteur comme disque de secours, cela se fera plus tard. Si, pour une raison quelconque, un lecteur est cassé, il peut être rajouté sans avoir besoin d'une resynchronisation totale.

Faire grandir un tableau

Ajout d'un lecteur à un RAID 1

  • –grow / –raid-devices est facultatif)
...@...:~$ sudo mdadm [--grow] /dev/md/mirror --add /dev/sdc1 [--raid-devices=3]
  • si vous augmentez le nombre de périphériques RAID, le nouveau lecteur deviendra une partie active de la matrice et les lecteurs existants seront mis en miroir.
  • Si vous n'augmentez pas le nombre de périphériques RAID, le nouveau disque sera un disque de secours et ne fera partie de la matrice active que si l'un des autres disques tombe en panne.

Mise à niveau d'un RAID 1 en un autre type de RAID

On convertit le RAID1 à deux disques en un RAID5 dégradé à deux disques, puis on ajoute le troisième disque pour obtenir une matrice raid5 entièrement fonctionnelle :

...@...:~$ sudo mdadm --grow /dev/md/mirror --level=5
...@...:~$ sudo mdadm --grow /dev/md/mirror --add /dev/sdc1 --raid-devices=3

Retrait d'un disque d'une matrice

On convertit le RAID 1 de la première section en un RAID 1 à trois disques dégradé, puis en un miroir à deux disques sain :

...@...:~$ sudo mdadm /dev/md/mirror --fail /dev/sdc1 --remove /dev/sdc1
...@...:~$ sudo mdadm --grow /dev/md/mirror --raid-devices=2

Si vous avez déjà supprimé un disque d'un RAID 1 à trois disques poue en faire un RAID 1 à deux disques, utilisez uniquement la deuxième ligne pour corriger le mode dégradé. Cela peut être vérifié :

...@...:~$ sudo mdadm --detail /dev/mdxxx

Augmenter l'espace sans ajouter d'autre disque

Supposons que vous manquez de ports SATA pour ajouter d'autres unités de disque, mais que vous voulez augmenter l'espace de votre matrice.

Avec un RAID 1 à trois disques, vous pouvez simplement mettre en fail un lecteur et le remplacer par un lecteur plus grand, et répéter cela jusqu'à ce que tous vos lecteurs aient été remplacés par des lecteurs plus grands.

Si vous avez un raid autre que RAID 1, par exemple un RAID 5 ou 6, utilisez un port SATA libre pour effectuer un –replace.

Une fois augmentée la taille de tous les périphériques, augmentez la taille de la matrice puis celle du système de fichiers ou des partitions de la matrice.

Gestion d'une matrice

Modification de la taille de la matrice

L'ajout d'un nouveau périphérique à un RAID 1 ne changera pas la taille du tableau - le nouveau périphérique stockera une copie supplémentaire des données et il n'y aura pas d'espace supplémentaire. Mais l'ajout d'un périphérique à un autre type de RAID augmente l'espace disponible. Par exemple, un raid-5 de 3 fois 4 To, donne une matrice de 8 To. L'ajout d'un quatrième disque de 4 To nous donnera une matrice de 12 To.

En supposant que cela soit possible, l'ajout d'un disque de 3 To ne nous donnerait qu'un 1 To supplémentaire, car la formule pour le raid-5 est de la taille du plus petit appareil. Pour ce faire, vous devrez probablement réduire la taille de la matrice à 6 To (–size=3TB) avant d'ajouter le nouveau disque (ce qui augmentera la capacité à 9 To).

L'ajout de ce quatrième lecteur a augmenté la taille du tableau, ce dont nous pouvons tirer parti en redimensionnant le système de fichiers. Mais que se passe-t-il si nous avons ajouté un disque de 5 To à nos trois disques de 4 To ? Malheureusement, ce 1 To supplémentaire est gaspillé car ce lecteur est plus grand. Supposons donc qu'au lieu d'ajouter un quatrième disque - 5 To -, nous avons en fait remplacé tous les disques 4 To pour nous donner un disque 3 x 5 To. Malheureusement, nous n'avons toujours qu'une matrice de 8 To. Nous devons informer mdadm de l'espace supplémentaire disponible avec

...@...:~$ sudo mdadm --grow /dev/mdN --size=max

L'option –size indique à la matrice la quantité de chaque disque à utiliser. Lorsqu'un tableau est créé, il a par défaut la taille du plus petit disque, mais lorsque, comme ici, nous avons remplacé tous les disques par des disques plus grands, nous devons informer explicitement mdadm de l'espace. L'argument max indique de choisir par défaut la taille du plus petit lecteur actuellement dans la matrice.

Utiliser le nouvel espace

Si la matrice a été partitionnée à l'origine, le nouvel espace sera désormais disponible pour redimensionner les partitions existantes ou en ajouter de nouvelles. Si la matrice contenait un système de fichiers, il peut maintenant être étendu :

...@...:~$ sudo resize2fs /dev/mdN

configurer MDADM pour envoyer des E-mails en cas de défaillance d’un disque

  • Autre méthode : exécuter mdadm en tant que démon en mode surveillance.
    Si nécessaire, mdadm enverra par e-mail des alertes à l'administrateur système quand les grappes rencontrent des erreurs ou échouent.
    Le mode surveillance peut aussi déclencher des commandes en cas de défaillance d'un disque (comme retirer et réinsérer un disque défaillant pour lui donner une seconde chance, de sorte qu'une panne non fatale puisse être automatiquement résolue).
    Voici un exemple basique qui surveille /dev/md0 :
    ...@...:~$ sudo mdadm --monitor --daemonise --mail=votre_adresse@mail.tld --delay=1800 /dev/md0
    

    • –daemonise : mdadm s'exécute en tant que démon.
    • –delay=1800 : vérification toutes les 1 800 secondes.
    • –mail=votre_adresse@mail.tld : e-mail ou envoyer les événements critiques et les erreurs fatales.
    • les paramètres –program ou –alert spécifient le programme à exécuter chaque fois qu'un événement est détecté.
    • avec le commutateur -f, le démon mdadm ne se ferme jamais et s'exécute en arrière-plan.
    • sans l'option -f, il se comportera comme une commande shell normale et attendra que vous l'arrêtiez.

Examiner les métadonnées

Pour récupérer les informations d'un volume (si vous avez perdu le fichier /etc/mdadm/mdadm.conf) :

...@...:~$ sudo mdadm --examine /dev/sda1
/dev/sda1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : f88601ca:d0e78820:c242a066:82223b32
           Name : framboise4:0  (local to host framboise4)
  Creation Time : Thu Oct 15 09:17:35 2020
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 234306480 (111.73 GiB 119.96 GB)
     Array Size : 117153216 (111.73 GiB 119.96 GB)
  Used Dev Size : 234306432 (111.73 GiB 119.96 GB)
    Data Offset : 133120 sectors
   Super Offset : 8 sectors
   Unused Space : before=133040 sectors, after=48 sectors
          State : clean
    Device UUID : 6e555965:f886e6a5:a1903853:70a869ac

Internal Bitmap : 8 sectors from superblock
    Update Time : Mon Oct 19 11:01:26 2020
  Bad Block Log : 512 entries available at offset 16 sectors
       Checksum : 238720ee - correct
         Events : 1266


   Device Role : Active device 0
   Array State : AA ('A' == active, '.' == missing, 'R' == replacing)

Stopper un RAID

...@...:~$ sudo mdadm --stop /dev/md0

Suppression d'une partition RAID

  1. Marquez la partition /dev/sdb1 comme défectueuse :
    ...@...:~$ sudo mdadm --manage /dev/md0 --fail /dev/sdb1
    

  2. Supprimez la partition /dev/sdb1 du volume raid /dev/md0 :

    ...@...:~$ sudo mdadm --manage /dev/md0 --remove /dev/sdb1
    

  3. Supprimez le superblock RAID pour éviter qu'elle ne continue à être automatiquement détectée :

    ...@...:~$ sudo mdadm --zero-superblock /dev/sdb1
    

Vérifier l’état du raid

...@...:~$ sudo mdadm --detail /dev/md0

Désinstallation

Voir aussi