{{tag>Logiciel}}
====== 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 **[[apt>mdadm]]** ou dans un terminal :...@...:~ $ sudo apt install mdadm
===== Configuration =====
===== Utilisation =====
==== Modes ====
mdadm a sept modes :
- **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.
- **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.
- **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.)
- **Manage** : mode par défaut, principalement utilisé pour ajouter et supprimer des périphériques.
- **Follow or Monitor**
- **Build** : (re)crée un tableau, à n'utiliser que si vous savez exactement ce que vous faites.
- **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 ====
- **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=2Cela copie le contenu de sda1 dans sdb1 et donne un tableau propre. Vous pouvez utiliser le tableau pendant sa resynchronisation.
- **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=internalCeci 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=2Si 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=maxL'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 ====
* Voir **RAID :[[tutoriel:disque:raid:start#Mise en place de la surveillance 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 ====
- Marquez la partition /dev/sdb1 comme défectueuse :...@...:~ $ sudo mdadm --manage /dev/md0 --fail /dev/sdb1
- Supprimez la partition /dev/sdb1 du volume raid /dev/md0 :...@...:~ $ sudo mdadm --manage /dev/md0 --remove /dev/sdb1
- 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 =====
* **(en)** [[https://support.siliconmechanics.com/portal/en/kb/articles/mdadm-monitor-mode-with-email]]
* **(en)** [[https://raid.wiki.kernel.org/index.php/A_guide_to_mdadm]]
* **(fr)** [[https://denisrosenkranz.com/tuto-mdadm-installer-debian-sur-un-raid-logiciel/]]
----
//Basé sur << [[https://denisrosenkranz.com/tuto-mdadm-superviser-un-raid-logiciel/|[Tuto] MDADM: Superviser un RAID logiciel]] >> par Denis.//