« Raid » : différence entre les versions
Aucun résumé des modifications |
mAucun résumé des modifications |
||
(12 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Category:Informatique]] | [[Category:Informatique]][[Category:Administration]] | ||
Pas besoin d'écrire tout un article là dessus, d'autres personnes font ça mieux que moi. Il ne s'agit ici que d'un pense bete : | Pas besoin d'écrire tout un article là dessus, d'autres personnes font ça mieux que moi. Il ne s'agit ici que d'un pense bete : | ||
Ligne 9 : | Ligne 9 : | ||
Le but de ce chapitre est de tester la création d'un raid 1 histoire de se faire la main sans pour autant modifier la configuration des disques durs physiques. | Le but de ce chapitre est de tester la création d'un raid 1 histoire de se faire la main sans pour autant modifier la configuration des disques durs physiques. | ||
<h2>Création des fichiers</h2> | <h2>Création des fichiers</h2> | ||
Ligne 15 : | Ligne 16 : | ||
<pre style="color: silver; background: black;"># dd if=/dev/zero of=Vdisque1 bs=1M count=1024 status=progress</pre> | <pre style="color: silver; background: black;"># dd if=/dev/zero of=Vdisque1 bs=1M count=1024 status=progress</pre> | ||
Le paramètre "of=" spécifie l'emplacement du fichier de sortie, on réitère donc avec Vdisque2 et Vdisque3, le paramètre "status=progress" quant à lui permet de voir la progression. | Le paramètre "of=" spécifie l'emplacement du fichier de sortie, on réitère donc avec Vdisque2 et Vdisque3, le paramètre "status=progress" quant à lui permet de voir la progression. | ||
<pre style="color: silver; background: black;"> | <pre style="color: silver; background: black;"> | ||
# ls -lh | # ls -lh | ||
Ligne 24 : | Ligne 24 : | ||
</pre> | </pre> | ||
<h2>Faire passer ces | |||
<h2>Faire passer ces fichiers pour des disques physiques</h2> | |||
Avoir les fichiers c'est bien, mais encore faut-il qu'ils soient reconnus par le système comme étant des disques durs. Pour cela on utilise la commande : | Avoir les fichiers c'est bien, mais encore faut-il qu'ils soient reconnus par le système comme étant des disques durs. Pour cela on utilise la commande : | ||
<pre style="color: silver; background: black;"># losetup -f Vdisque1</pre> | <pre style="color: silver; background: black;"># losetup -f Vdisque1</pre> | ||
L'option "-f" va cherche le premier périphérique inutilisé. | L'option "-f" va cherche le premier périphérique inutilisé. | ||
Ligne 52 : | Ligne 52 : | ||
Pour créer le raid à proprement parler il faut maintenant utiliser mdadm. | Pour créer le raid à proprement parler il faut maintenant utiliser mdadm. | ||
<pre style="color: silver; background: black;"> | <pre style="color: silver; background: black;"> | ||
# mdadm --create /dev/md/raid_test --level=1 --raid-devices=2 /dev/loop0 /dev/loop1 | # mdadm --create /dev/md/raid_test --level=1 --raid-devices=2 /dev/loop0 /dev/loop1 | ||
Ligne 72 : | Ligne 71 : | ||
Comme on peut le constater s'il existe une table de partition, celle ci sera détruite lors de la création du raid. En vérifiant avec fdisk on peut voir ceci : | Comme on peut le constater s'il existe une table de partition, celle ci sera détruite lors de la création du raid. En vérifiant avec fdisk on peut voir ceci : | ||
<pre style="color: silver; background: black;"> | <pre style="color: silver; background: black;"> | ||
# fdisk -l | # fdisk -l | ||
Ligne 85 : | Ligne 83 : | ||
On peut également vérifier l'état du raid avec : | On peut également vérifier l'état du raid avec : | ||
<pre style="color: silver; background: black;"> | <pre style="color: silver; background: black;"> | ||
# cat /proc/mdstat | # cat /proc/mdstat | ||
Ligne 95 : | Ligne 91 : | ||
unused devices: <none> | unused devices: <none> | ||
</pre> | </pre> | ||
<h2>Création d'un système de fichier avec LVM</h2> | <h2>Création d'un système de fichier avec LVM</h2> | ||
Ligne 100 : | Ligne 97 : | ||
<h3>Création du volume physique</h3> | <h3>Création du volume physique</h3> | ||
Dans cet exemple le volume physique ne sera pas les disques /dev/loopX, mais le raid que l'on vient de créer avec mdadm. | Dans cet exemple le volume physique ne sera pas les disques /dev/loopX, mais le raid que l'on vient de créer avec mdadm. | ||
<pre style="color: silver; background: black;"> | <pre style="color: silver; background: black;"> | ||
# pvcreate /dev/md127 | # pvcreate /dev/md127 | ||
Ligne 124 : | Ligne 120 : | ||
<h3>Création du groupe de volumes</h3> | <h3>Création du groupe de volumes</h3> | ||
Ici il est question d'agréger différents volumes physique en un seul groupe. On ne va pas creuser bien loin car dans cet exemple nous n'avons qu'un seul volume physique. | Ici il est question d'agréger différents volumes physique en un seul groupe. On ne va pas creuser bien loin car dans cet exemple nous n'avons qu'un seul volume physique. | ||
<pre style="color: silver; background: black;"> | <pre style="color: silver; background: black;"> | ||
# vgcreate VG_raid_test /dev/md127 | # vgcreate VG_raid_test /dev/md127 | ||
Ligne 131 : | Ligne 126 : | ||
L'argument "VG_raid_test" est simplement le nom que portera ce groupe de volumes | L'argument "VG_raid_test" est simplement le nom que portera ce groupe de volumes | ||
<pre style="color: silver; background: black;"> | <pre style="color: silver; background: black;"> | ||
# vgdisplay | # vgdisplay | ||
Ligne 158 : | Ligne 152 : | ||
<h3>Création des volumes logiques</h3> | <h3>Création des volumes logiques</h3> | ||
La création touche bientôt à sa fin, il ne nous reste plus qu'à créer des volumes logiques. Dans ce test on en créera qu'un seul | La création touche bientôt à sa fin, il ne nous reste plus qu'à créer des volumes logiques. Dans ce test on en créera qu'un seul | ||
<pre style="color: silver; background: black;"> | <pre style="color: silver; background: black;"> | ||
# lvcreate -L 500M VG_raid_test -n test | # lvcreate -L 500M VG_raid_test -n test | ||
Ligne 184 : | Ligne 177 : | ||
Block device 253:0 | Block device 253:0 | ||
</pre> | </pre> | ||
<h2>Formatage, montage et vérification</h2> | <h2>Formatage, montage et vérification</h2> | ||
Ligne 217 : | Ligne 211 : | ||
On a donc effectivement notre raid monté et opérationnel. | On a donc effectivement notre raid monté et opérationnel. | ||
<h1>Modification d'un raid 1 en raid 5</h1> | <h1>Modification d'un raid 1 en raid 5</h1> | ||
Ligne 228 : | Ligne 223 : | ||
On va commencer par créer un fichier dans notre raid 1, le transformer en raid 5 et vérifier que le fichier est toujours là afin de pouvoir vérifier que la méthode de transformation n'occasionne pas de perte de données. | On va commencer par créer un fichier dans notre raid 1, le transformer en raid 5 et vérifier que le fichier est toujours là afin de pouvoir vérifier que la méthode de transformation n'occasionne pas de perte de données. | ||
<h2>Changement de level</h2> | <h2>Changement de level</h2> | ||
Ligne 259 : | Ligne 255 : | ||
<h2>Ajouter un disque dur à un raid</h2> | <h2>Ajouter un disque dur à un raid</h2> | ||
Pour ajouter un périphérique à un raid on utilise la commande : | Pour ajouter un périphérique à un raid on utilise la commande : | ||
<pre style="color: silver; background: black;"> | <pre style="color: silver; background: black;"> | ||
# mdadm /dev/md127 --add /dev/loop2 | # mdadm /dev/md127 --add /dev/loop2 | ||
Ligne 277 : | Ligne 272 : | ||
<h2>Modification du nombre de périphériques actifs</h2> | <h2>Modification du nombre de périphériques actifs</h2> | ||
Pour définir le nombre de disques dur que doit utiliser le raid on fait appel à la commande : | Pour définir le nombre de disques dur que doit utiliser le raid on fait appel à la commande : | ||
<pre style="color: silver; background: black;"> | <pre style="color: silver; background: black;"> | ||
# mdadm /dev/md127 --grow --raid-devices=3 | # mdadm /dev/md127 --grow --raid-devices=3 | ||
Ligne 291 : | Ligne 285 : | ||
On constate que le (S) à disparu, qu'on est passé de [UU] à [UUU] et que mdadm est en train de reconstruire le raid proprement | On constate que le (S) à disparu, qu'on est passé de [UU] à [UUU] et que mdadm est en train de reconstruire le raid proprement | ||
<h2>Utilisation de tout l'espace</h2> | |||
Lors de la création du raid 1 on avait crée un volume physique, or lors de cette migration vers le raid 5, ce volume physique est resté inchangé. Pour que le volume physique utilise la totalité de l'espace du raid il faut utiliser la commande : | |||
<pre style="color: silver; background: black;"> | |||
# pvresize /dev/md127 | |||
</pre> | |||
On peut alors vérifier que l'espace disque utilisable à bien changé : | |||
<pre style="color: silver; background: black;"> | |||
# pvdisplay | |||
--- Physical volume --- | |||
PV Name /dev/md127 | |||
VG Name VG_raid_test | |||
PV Size <2,00 GiB / not usable 3,00 MiB | |||
Allocatable yes | |||
PE Size 4,00 MiB | |||
Total PE 510 | |||
Free PE 385 | |||
Allocated PE 125 | |||
PV UUID NEulEb-iRqr-y0vW-1Hza-uU8D-eR16-gvskzj | |||
</pre> | |||
L'espace disponible est bien passé de 1 à 2 Gio | |||
<h1>Quelques tests supplémentaires</h1> | <h1>Quelques tests supplémentaires</h1> | ||
Tout s'est correctement déroulé, on a transformé le raid 1 en raid 5 sans perte de données. Mais on va quand même vérifier ce qu'il se passe quand on fournit au raid un disque supplémentaire en spare et qu'on dégage un disque dur. Tout ça pour répondre à la question : est-ce que la relève se fait automatiquement. | Tout s'est correctement déroulé, on a transformé le raid 1 en raid 5 sans perte de données. Mais on va quand même vérifier ce qu'il se passe quand on fournit au raid un disque supplémentaire en spare et qu'on dégage un disque dur. Tout ça pour répondre à la question : est-ce que la relève se fait automatiquement. | ||
<h2>Ajout d'un quatrième disque au raid</h2> | <h2>Ajout d'un quatrième disque au raid</h2> | ||
Je ne vais pas tout re-détailler ici, mais on créer un fichier supplémentaire avec dd, on le fait passer pour un périphérique avec losetup, on l'ajoute au raid et voilà ce qu'on obtient | Je ne vais pas tout re-détailler ici, mais on créer un fichier supplémentaire avec dd, on le fait passer pour un périphérique avec losetup, on l'ajoute au raid et voilà ce qu'on obtient | ||
<pre style="color: silver; background: black;"> | <pre style="color: silver; background: black;"> | ||
# cat /proc/mdstat | # cat /proc/mdstat | ||
Ligne 307 : | Ligne 324 : | ||
</pre> | </pre> | ||
<h2 | |||
<h2>Simulation d'une panne</h2> | |||
Pour simuler une panne on utilise la commande : | Pour simuler une panne on utilise la commande : | ||
<pre style="color: silver; background: black;"> | <pre style="color: silver; background: black;"> | ||
mdadm /dev/md127 --fail /dev/loop0 | # mdadm /dev/md127 --fail /dev/loop0 | ||
mdadm: set /dev/loop0 faulty in /dev/md127 | mdadm: set /dev/loop0 faulty in /dev/md127 | ||
</pre> | </pre> | ||
Ligne 325 : | Ligne 343 : | ||
On constate qu'un (F) est apparu à coté du périphérique déclaré comme défectueux, mais que le (S) à coté de /dev/loop3 à disparut, il est donc maintenant utilisé dans le raid. | On constate qu'un (F) est apparu à coté du périphérique déclaré comme défectueux, mais que le (S) à coté de /dev/loop3 à disparut, il est donc maintenant utilisé dans le raid. | ||
<h1>Sources et liens utiles</h1> | |||
*[https://wiki.archlinux.fr/LVM LVM Archwiki] | |||
*[https://www.unix.com/linux/152762-creating-filesystem-using-dd-lvm.html Utilisation d'un fichier comme un disque dur] | |||
*[https://doc.ubuntu-fr.org/raid_logiciel mdadm Ubuntu wiki] | |||
*[https://wiki.kogite.fr/index.php/RAID_logiciel_:_mdadm#Cr.C3.A9er_un_raid_50 Raid avec mdadm wiki Kogite] | |||
*[https://ubuntuforums.org/showthread.php?t=1852476 Changer le niveau du raid Ubuntu forums] | |||
*[https://debian-handbook.info/browse/fr-FR/stable/advanced-administration.html Créer un raid sur Debian Handbook] | |||
*[http://wiki.docking.org/index.php/How_to_Replace_a_Failed_Disk Comment remplacer un disque défectueux dans un raid] |
Version actuelle datée du 3 avril 2021 à 15:28
Pas besoin d'écrire tout un article là dessus, d'autres personnes font ça mieux que moi. Il ne s'agit ici que d'un pense bete :
Test de création d'un raid 1 (miroir)
Le but de ce chapitre est de tester la création d'un raid 1 histoire de se faire la main sans pour autant modifier la configuration des disques durs physiques.
Création des fichiers
Pour ce test on va avoir besoin de plusieurs fichiers qui feront office de disques durs virtuels. On va en créer 3 en utilisant la commande :
# dd if=/dev/zero of=Vdisque1 bs=1M count=1024 status=progress
Le paramètre "of=" spécifie l'emplacement du fichier de sortie, on réitère donc avec Vdisque2 et Vdisque3, le paramètre "status=progress" quant à lui permet de voir la progression.
# ls -lh total 3,1G -rw-r--r-- 1 root root 1,0G 24 févr. 11:08 Vdisque1 -rw-r--r-- 1 root root 1,0G 24 févr. 11:08 Vdisque2 -rw-r--r-- 1 root root 1,0G 24 févr. 11:08 Vdisque3
Faire passer ces fichiers pour des disques physiques
Avoir les fichiers c'est bien, mais encore faut-il qu'ils soient reconnus par le système comme étant des disques durs. Pour cela on utilise la commande :
# losetup -f Vdisque1
L'option "-f" va cherche le premier périphérique inutilisé. En itérant ça pour le second fichier on obtient :
# fdisk -l Disque /dev/loop0 : 1 GiB, 1073741824 octets, 2097152 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Disque /dev/loop1 : 1 GiB, 1073741824 octets, 2097152 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Nos deux fichiers sont maintenant reconnus comme des disques dur et se situe en /dev/loopX
Création du raid avec mdadm
Pour créer le raid à proprement parler il faut maintenant utiliser mdadm.
# mdadm --create /dev/md/raid_test --level=1 --raid-devices=2 /dev/loop0 /dev/loop1 mdadm: partition table exists on /dev/loop0 mdadm: partition table exists on /dev/loop0 but will be lost or meaningless after creating array mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 mdadm: partition table exists on /dev/loop1 mdadm: partition table exists on /dev/loop1 but will be lost or meaningless after creating array Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md/raid_test started.
Comme on peut le constater s'il existe une table de partition, celle ci sera détruite lors de la création du raid. En vérifiant avec fdisk on peut voir ceci :
# fdisk -l ... Disque /dev/md127 : 1022 MiB, 1071644672 octets, 2093056 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets
On peut également vérifier l'état du raid avec :
# cat /proc/mdstat Personalities : [raid1] md127 : active raid1 loop1[1] loop0[0] 1046528 blocks super 1.2 [2/2] [UU] unused devices: <none>
Création d'un système de fichier avec LVM
Création du volume physique
Dans cet exemple le volume physique ne sera pas les disques /dev/loopX, mais le raid que l'on vient de créer avec mdadm.
# pvcreate /dev/md127 Physical volume "/dev/md127" successfully created.
On peut vérifier l'état du volume physique avec cette commande :
# pvdisplay "/dev/md127" is a new physical volume of "1022,00 MiB" --- NEW Physical volume --- PV Name /dev/md127 VG Name PV Size 1022,00 MiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID NEulEb-iRqr-y0vW-1Hza-uU8D-eR16-gvskzj
Création du groupe de volumes
Ici il est question d'agréger différents volumes physique en un seul groupe. On ne va pas creuser bien loin car dans cet exemple nous n'avons qu'un seul volume physique.
# vgcreate VG_raid_test /dev/md127 Volume group "VG_raid_test" successfully created
L'argument "VG_raid_test" est simplement le nom que portera ce groupe de volumes
# vgdisplay --- Volume group --- VG Name VG_raid_test System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 1020,00 MiB PE Size 4,00 MiB Total PE 255 Alloc PE / Size 0 / 0 Free PE / Size 255 / 1020,00 MiB VG UUID 7c0uVR-eLkB-hcRo-MRzL-KMmi-G0Sz-H4rNuy
Création des volumes logiques
La création touche bientôt à sa fin, il ne nous reste plus qu'à créer des volumes logiques. Dans ce test on en créera qu'un seul
# lvcreate -L 500M VG_raid_test -n test Logical volume "test" created.
Comme pour les deux autres commandes, si on veut voir l'état on utilise "machindisplay"
# lvdisplay --- Logical volume --- LV Path /dev/VG_raid_test/test LV Name test VG Name VG_raid_test LV UUID AKQNwX-9S5G-sEqg-ufxQ-PLf2-LZiW-2Tl6SM LV Write Access read/write LV Creation host, time serveur, 2020-02-24 11:47:36 +0100 LV Status available # open 0 LV Size 500,00 MiB Current LE 125 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
Formatage, montage et vérification
On formate le volume logique
# mkfs.ext4 /dev/VG_raid_test/test mke2fs 1.45.5 (07-Jan-2020) Rejet des blocs de périphérique : complété En train de créer un système de fichiers avec 512000 1k blocs et 128016 i-noeuds. UUID de système de fichiers=1019217b-de10-4048-b2cf-a54a804fa045 Superblocs de secours stockés sur les blocs : 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 Allocation des tables de groupe : complété Écriture des tables d'i-noeuds : complété Création du journal (8192 blocs) : complété Écriture des superblocs et de l'information de comptabilité du système de fichiers : complété
On le monte
# mount /dev/VG_raid_test/test montage/
Et on peut vérifier avec :
# df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur ... /dev/mapper/VG_raid_test-test 477M 2,3M 445M 1% /root/tests/montage
On a donc effectivement notre raid monté et opérationnel.
Modification d'un raid 1 en raid 5
Le but de ce wiki n'était pas de noter la façon de créer un raid (même si cela va me servir de pense bête), mais plutôt de tester comment transformer un raid 1 en raid 5.
Pour rappel le raid 1 (miroir), va simplement utiliser deux disque (minimum) et copier exactement la même chose sur l'un et sur l'autre. L'avantage est que l'on augmente la fiabilité face au panne, car si un des disque dur est défaillant, il restera toujours l'autre.
Le raid 5 quant à lui utilise trois disque dur minimum (A, B et C), grossièrement pour chaque donnée inscrite sur ce raid, la moitié sera écrite sur A, l'autre moitié sur B et C stockera une somme de contrôle.
Dans mon cas je vais passer de 2x2To en raid 1 (donc seulement 2To accessible mais capable de supporter 1 disque défaillant sur 2) à 3x2To en raid 5 (donc 4to disponible, mais capable de ne supporter 1 disque défaillant sur 3). Il est cependant possible de laisser à disposition du raid 5 un 4ème disque dur qui remplacera automatiquement un disque dur défaillant. En passant sur un raid 5 on perd donc un peu en sécurité mais on gagne en espace de stockage, à vous de choisir si cette solution est adapté pour vous.
On va commencer par créer un fichier dans notre raid 1, le transformer en raid 5 et vérifier que le fichier est toujours là afin de pouvoir vérifier que la méthode de transformation n'occasionne pas de perte de données.
Changement de level
En regardant l'état du raid avec la commande :
# cat /proc/mdstat Personalities : [raid1] [raid6] [raid5] [raid4] md127 : active raid1 loop1[1] loop0[0] 1046528 blocks super 1.2 [2/2] [UU]
On constate qu'il est actif et utilise deux disques dur en raid1.
Après avoir tapé cette commande :
# mdadm /dev/md127 --grow --level=5
On pourra constater les changements :
# cat /proc/mdstat Personalities : [raid1] [raid6] [raid5] [raid4] md127 : active raid5 loop1[1] loop0[0] 1046528 blocks super 1.2 level 5, 64k chunk, algorithm 2 [2/2] [UU]
Toujours actif, utilisant toujours deux disques, mais on peut voir apparaître raid5, level5 ainsi qu'un paramètre "algorithm 2". Maintenant pour que le raid 5 soit pleinement opérationnel il faut lui fournir un disque dur en plus.
Ajouter un disque dur à un raid
Pour ajouter un périphérique à un raid on utilise la commande :
# mdadm /dev/md127 --add /dev/loop2 mdadm: added /dev/loop2 # cat /proc/mdstat Personalities : [raid1] [raid6] [raid5] [raid4] md127 : active raid5 loop2[2](S) loop1[1] loop0[0] 1046528 blocks super 1.2 level 5, 64k chunk, algorithm 2 [2/2] [UU] unused devices: <none>
On voit effectivement apparaître notre périphérique loop2, cependant le (S) juste à coté signifie que ce disque est en mode spare. En d'autres termes, il est là pour prendre la relève lorsqu'un disque dur sera défaillant. Pour l'activer et qu'il participe au raid5 il faut modifier le nombre de périphériques utilisé par le raid
Modification du nombre de périphériques actifs
Pour définir le nombre de disques dur que doit utiliser le raid on fait appel à la commande :
# mdadm /dev/md127 --grow --raid-devices=3 # cat /proc/mdstat Personalities : [raid1] [raid6] [raid5] [raid4] md127 : active raid5 loop2[2] loop1[1] loop0[0] 1046528 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/3] [UUU] [===>.................] reshape = 16.3% (171176/1046528) finish=0.2min speed=57058K/sec unused devices: <none>
On constate que le (S) à disparu, qu'on est passé de [UU] à [UUU] et que mdadm est en train de reconstruire le raid proprement
Utilisation de tout l'espace
Lors de la création du raid 1 on avait crée un volume physique, or lors de cette migration vers le raid 5, ce volume physique est resté inchangé. Pour que le volume physique utilise la totalité de l'espace du raid il faut utiliser la commande :
# pvresize /dev/md127
On peut alors vérifier que l'espace disque utilisable à bien changé :
# pvdisplay --- Physical volume --- PV Name /dev/md127 VG Name VG_raid_test PV Size <2,00 GiB / not usable 3,00 MiB Allocatable yes PE Size 4,00 MiB Total PE 510 Free PE 385 Allocated PE 125 PV UUID NEulEb-iRqr-y0vW-1Hza-uU8D-eR16-gvskzj
L'espace disponible est bien passé de 1 à 2 Gio
Quelques tests supplémentaires
Tout s'est correctement déroulé, on a transformé le raid 1 en raid 5 sans perte de données. Mais on va quand même vérifier ce qu'il se passe quand on fournit au raid un disque supplémentaire en spare et qu'on dégage un disque dur. Tout ça pour répondre à la question : est-ce que la relève se fait automatiquement.
Ajout d'un quatrième disque au raid
Je ne vais pas tout re-détailler ici, mais on créer un fichier supplémentaire avec dd, on le fait passer pour un périphérique avec losetup, on l'ajoute au raid et voilà ce qu'on obtient
# cat /proc/mdstat Personalities : [raid1] [raid6] [raid5] [raid4] md127 : active raid5 loop3[3](S) loop2[2] loop1[1] loop0[0] 2093056 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/3] [UUU] unused devices: <none>
Simulation d'une panne
Pour simuler une panne on utilise la commande :
# mdadm /dev/md127 --fail /dev/loop0 mdadm: set /dev/loop0 faulty in /dev/md127
On peut alors constater l'exclusion du disque en question et son remplacement par le disque spare :
# cat /proc/mdstat Personalities : [raid1] [raid6] [raid5] [raid4] md127 : active raid5 loop3[3][3] loop2[2] loop1[1] loop0(F) 2093056 blocks super 1.2 level 5, 64k chunk, algorithm 2 [3/3] [UUU] unused devices: <none>
On constate qu'un (F) est apparu à coté du périphérique déclaré comme défectueux, mais que le (S) à coté de /dev/loop3 à disparut, il est donc maintenant utilisé dans le raid.