Accueil » mdadm : RAID Logiciel sous Linux – Documentation – Wiki
Tuto

mdadm : RAID Logiciel sous Linux – Documentation – Wiki

mdadm : RAID Logiciel sous Linux - Documentation - Wiki

Le RAID est un ensemble de techniques de virtualisation du stockage permettant de rpartir des donnes sur plusieurs disques durs afin d’amliorer soit les performances, soit la scurit ou la tolrance aux pannes de l’ensemble du ou des systmes.

Il existe 3 principaux de RAID :

  • le RAID 0 : volume agrg par bandes
  • le RAID 1 : disques en miroir
  • le RAID 5 : volume agrg par bandes parit rpartie

Je vous renvoie Wikipedia si vous voulez en savoir plus sir le RAID : https://fr.wikipedia.org/wiki/RAID_(informatique)

Pour manipuler le RAID avec MDADM, il faut videmment avoir les droits root et tre trs prudent !

Voici mon tat des lieux pour ce tuto :

Code BASH :

Code TEXT :

Disque /dev/sda: 28 GiB, 30064771072octets, 58720256secteurs
Priphrique Amorage   Dbut      Fin Secteurs Taille Id Type
/dev/sda1                 2048 41945087 41943040    20G 83 Linux
/dev/sda2             41945088 46139391  4194304     2G 83 Linux
/dev/sda3             46139392 58720255 12580864     6G 83 Linux
Disque /dev/sdb: 8 GiB, 8589934592octets, 16777216secteurs
Disque /dev/sdc: 8 GiB, 8589934592octets, 16777216secteurs
Disque /dev/sdd: 8 GiB, 8589934592octets, 16777216secteurs

Pour les gentooistes, voici la configuration du kernel mettre en place :

Code TEXT :

[*] Device Drivers  --->
    <*> Multiple devices driver support (RAID and LVM)
        <*> RAID support
            [*] Autodetect RAID arrays during kernel boot
            If you want to combine multiple disks or partitions to one (bigger) device:
                <*> Linear (append) mode
            If you want to increase IO performance by striping data across multiple disks (at the expense of reliability):
                <*> RAID-0 (striping) mode
            If you want to increase reliability by mirroring data across multiple disks (at the expense of less storage capacity):
                <*> RAID-1 (mirroring) mode
            If you want to combine the previous two options (for whatever reason):
                <*> RAID-10 (mirrored striping) mode
            If you want to combine 3 or more disks for reliability and performance:
                <*> RAID-4/RAID-5/RAID-6 mode

Il faut bien sr installer le logiciel mdadm si ce n’est pas le cas.

Ajouter et dmarrer les services au dmarrage.

OpenRC :
Code BASH :

rc-update add mdraid boot
rc-update add mdadm boot
/etc/init.d/mdadm start
/etc/init.d/mdraid start

Systemd :
Code BASH :

systemctl enable mdmonitor 
systemctl start mdmonitor 

Exemple RAID1 (le plus simple)

Cration d’un RAID 1 sur SDB et SDC :

Code BASH :

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

Un message peut prvenir si on compte mettre /boot sur le RAID qu’il faut utiliser –metadata=0.90. On peut valider la cration avec y.

Code TEXT :

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
Continue creating array? y

Le RAID 1 est cr :

Code TEXT :

mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

On peut faire la mme avec ces options courtes :
Code BASH :

mdadm --create /dev/md0 -l1 -n2 /dev/sdb /dev/sdc

Voici aussi un exemple avec un RAID 5 :
Code BASH :

mdadm --create /dev/md0 --level=5 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdb /dev/sde

Un fichier important, c’est /proc/mdstat ! Il affche des infos sur les RAID en excution :

Code BASH :

Ici, la construction du RAID 1 :
Code TEXT :

Personalities : [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty]
md0 : active raid1 sdc[1] sdb[0]
      8380416 blocks super 1.2 [2/2] [UU]
      [===>.................]  resync = 17.8% (1495808/8380416) finish=0.6min speed=186976K/sec
unused devices: <none>

Quand c’est fini :

Code BASH :

Personalities : [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty]
md0 : active raid1 sdc[1] sdb[0]
      8380416 blocks super 1.2 [2/2] [UU]
unused devices: <none>

On peut avoir aussi des infos plus dtailles avec

Code BASH :

Exemple avec mon md0 :

Code TEXT :

/dev/md0:
        Version : 1.2
  Creation Time : Wed Dec 28 10:35:53 2016
     Raid Level : raid1
     Array Size : 8380416 (7.99 GiB 8.58 GB)
  Used Dev Size : 8380416 (7.99 GiB 8.58 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Wed Dec 28 10:44:21 2016
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0
           Name : gentoo:0  (local to host gentoo)
           UUID : 865a5ba1:35b67b23:a3dd29e0:c9981bfb
         Events : 17
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc

On formate ensuite notre volume RAID comme une partition :

Code BASH :

Code TEXT :

mke2fs 1.43.3 (04-Sep-2016)
En train de crer un systme de fichiers avec 2095104 4k blocs et 524288 i-noeuds.
UUID de systme de fichiers=4d2e437d-ce7b-4f56-ac39-1e073c7c2045
Superblocs de secours stocks sur les blocs:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocation des tables de groupe: complt
criture des tables d'i-noeuds: complt
Cration du journal (16384 blocs): complt
criture des superblocs et de l'information de comptabilit du systme de
fichiers: complt

Et videmment, on monte le volume RAID comme une partition :

Code BASH :

Code BASH :

mount
/dev/md0 on /mnt type ext4 (rw,relatime,data=ordered)

Pour garder la configuration du nom (ici md0) il est possible d’ajouter les infos du RAID dans /etc/mdadm.conf :

Code BASH :

Code BASH :

ARRAY /dev/md0 UUID=032e4ab2:53ac5db8:98806abd:420716a5

Si malgr tout le md0 se nomme md127 aprs un redmarrage, et que le fichier mdadm.conf est bien renseign, il est peut tre ncessaire de regnrer le fichier initramfs.

Ajouter un disque

Pour ajouter un disque :

Code BASH :

mdadm --manage /dev/md0 --add /dev/sdd

Code TEXT :

Si aucune option n’est spcifie, par dfaut c’est –manage :
Code BASH :

mdadm /dev/md0 --add /dev/sdd

Le nouveau disque est nott (S) :

Code BASH :

Code TEXT :

Personalities : [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty]
md0 : active raid1 sdd[2](S) sdc[1] sdb[0]
      8380416 blocks super 1.2 [2/2] [UU]
unused devices: <none>

Il a t ajout comme disque de SPARE (secours).

Le mdadm –detail nous le confirme :

Code BASH :

Code TEXT :

/dev/md0:
        Version : 1.2
  Creation Time : Wed Dec 28 10:35:53 2016
     Raid Level : raid1
     Array Size : 8380416 (7.99 GiB 8.58 GB)
  Used Dev Size : 8380416 (7.99 GiB 8.58 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent
    Update Time : Wed Dec 28 10:57:47 2016
          State : clean
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1
           Name : gentoo:0  (local to host gentoo)
           UUID : 865a5ba1:35b67b23:a3dd29e0:c9981bfb
         Events : 18
    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/sdd

Supprimer des disques

prenons un exemple, le disque sdc a des dfauts (SMART incorrect, signe de panne, …) , on le retire du RAID :

Code BASH :

mdadm --manage /dev/md0 --fail /dev/sdc --remove /dev/sdc

Ou la commande en deux temps :

Code BASH :

mdadm --manage /dev/md0 --fail /dev/sdc
mdadm --manage /dev/md0 --remove /dev/sdc

Dans le cas du RAID 5, si un disque n’est plus prsent, le disque de SPARE prend le relais.
Mais s’il n’y a plus de disque de SPARE, on peut avoir 1 disque en faute. Pour le retirer, on est oblig d’arrter le RAID et de le rassembler.

Exemple : RAID 5 avec 5 disques, disque SDC n’est plus prsent, mais que, SDB SDD SDE sont OK :

Code BASH :

umount /dev/md0
mdadm --stop /dev/md0
mdadm --assemble /dev/md0 /dev/sdb /dev/sdd /dev/sde 

Code TEXT :

mdadm /dev/md0 has been with 4 (out of 5).

puis on rajoute un disque (le manquant) et ventuellement plus qui seront ajouts en SPARE :

Code BASH :

mdadm /dev/md0 --add /dev/sdf

Crer un raid sans avoir tous les disques

Voici un exemple de cration de RAID 1 avec qu’un seul disque :

Code BASH :

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb missing

On ajoute par la suite le disque. Il faudra l’ajouter dans le RAID :

Code BASH :

mdadm --manage /dev/md0 --add /dev/sdc

Stopper un RAID

Pour “stopper” un RAID, il faut le dmonter :

Code BASH :

Puis on le “stoppe” :

Code BASH :

Agrandir un RAID

Cas RAID5 o on a 3 disques :

Code BASH :

Code TEXT :

/dev/md0:
        Version : 1.2
  Creation Time : Wed Dec 28 16:10:21 2016
     Raid Level : raid5
     Array Size : 16760832 (15.98 GiB 17.16 GB)
  Used Dev Size : 8380416 (7.99 GiB 8.58 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent
    Update Time : Wed Dec 28 16:12:37 2016
          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0
         Layout : left-symmetric
     Chunk Size : 512K
           Name : gentoo:0  (local to host gentoo)
           UUID : 84ed4603:efb73350:ce82659b:c9bdd7f4
         Events : 18
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd

Voyez la taille prise par ce RAID 5 (16Go) :

Code BASH :

df -h /dev/md0
Sys. de fichiers Taille Utilis Dispo Uti% Mont sur
/dev/md0            16G     45M   15G   1% /mnt

On ajoute le disque :

Code BASH :

mdadm --manage /dev/md0 --add /dev/sde

Code TEXT :

Il est not en SPARE (car la config du RAID a 3 actifs) :

Code BASH :

Code TEXT :

/dev/md0:
        Version : 1.2
  Creation Time : Wed Dec 28 16:10:21 2016
     Raid Level : raid5
     Array Size : 16760832 (15.98 GiB 17.16 GB)
  Used Dev Size : 8380416 (7.99 GiB 8.58 GB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent
    Update Time : Wed Dec 28 16:14:05 2016
          State : clean
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1
         Layout : left-symmetric
     Chunk Size : 512K
           Name : gentoo:0  (local to host gentoo)
           UUID : 84ed4603:efb73350:ce82659b:c9bdd7f4
         Events : 19
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd
       4       8       64        -      spare   /dev/sde

On tend le RAID au 4me disque :

Code BASH :

mdadm --grow /dev/md0 --raid-devices=4

Le SPARE n’est plus et le RAID se reconstruit :

Code BASH :

Code TEXT :

/dev/md0:
        Version : 1.2
  Creation Time : Wed Dec 28 16:10:21 2016
     Raid Level : raid5
     Array Size : 16760832 (15.98 GiB 17.16 GB)
  Used Dev Size : 8380416 (7.99 GiB 8.58 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent
    Update Time : Wed Dec 28 16:14:21 2016
          State : clean, reshaping
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0
         Layout : left-symmetric
     Chunk Size : 512K
 Reshape Status : 0% complete
  Delta Devices : 1, (3->4)
           Name : gentoo:0  (local to host gentoo)
           UUID : 84ed4603:efb73350:ce82659b:c9bdd7f4
         Events : 30
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd
       4       8       64        3      active sync   /dev/sde

On attend que tout soit reconstruise :

Code BASH :

Code TEXT :

Personalities : [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty]
md0 : active raid5 sde[4] sdd[3] sdc[1] sdb[0]
      16760832 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
      [==>..................]  reshape = 10.5% (887808/8380416) finish=6.1min speed=20211K/sec
unused devices: <none>

Code TEXT :

Personalities : [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty]
md0 : active raid5 sde[4] sdd[3] sdc[1] sdb[0]
      25141248 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
unused devices: <none>

On agrandit ensuite le FS (ici ext4, donc a se fait chaud) :

Code BASH :

On contrle que la taille a augment :

Code BASH :

df -h /dev/md0
Sys. de fichiers Taille Utilis Dispo Uti% Mont sur
/dev/md0            24G     44M   23G   1% /mnt

Au final les infos :

Code BASH :

Code TEXT :

/dev/md0:
        Version : 1.2
  Creation Time : Wed Dec 28 16:10:21 2016
     Raid Level : raid5
     Array Size : 25141248 (23.98 GiB 25.74 GB)
  Used Dev Size : 8380416 (7.99 GiB 8.58 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent
    Update Time : Wed Dec 28 16:20:20 2016
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0
         Layout : left-symmetric
     Chunk Size : 512K
           Name : gentoo:0  (local to host gentoo)
           UUID : 84ed4603:efb73350:ce82659b:c9bdd7f4
         Events : 80
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd
       4       8       64        3      active sync   /dev/sde

Acclrer la synchronisation des volumes RAID

Par dfaut, la vitesse est faible pour synchroniser les volumes entre eux.
Il est tout fait possible d’augmenter cette limite.

Par exemple, pour autoriser une criture 100MB/s sur le disque au maximum :
Code BASH :

echo 1000000 > /proc/sys/dev/raid/speed_limit_max

On peut aussi dfinir une valeur minimale de 10MB/s :
Code BASH :

echo 100000 > /proc/sys/dev/raid/speed_limit_min
Ce document intitulé « mdadm : RAID Logiciel sous Linux – Documentation – Wiki » est issu de https://www.linuxtricks.fr/wiki/mdadm-raid-logiciel-sous-linux est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Si vous avez trouvé une erreur d’orthographe, veuillez nous en aviser en sélectionnant le mots et en appuyant sur Ctrl+Enter.

A propos de l'auteur

Linuxtricks

Linuxtricks

Ajouter un commentaire

Cliquez ici pour poster un commentaire

OuiHeberg - L'Hébergement accessible à tous !

Suivez nous sur les réseaux sociaux !

FR | GeekParadizeHub ➜ Communauté Multigaming

11 User(s) Online Join Server
  • Zack Loire
  • Dungi
  • 𝕂𝕝𝕖𝕣𝕧𝕚 𝕊𝕖𝕧𝕖𝕟
  • Leon Hartstrife
  • BrosFrr
  • BananeM63
  • Anthonio_Loucass
  • juju
  • SLXW

Abonnez-vous à notre newsletter

Recevez par email toute l'actualité High-Tech chaque matin
Abonnez-vous à notre newsletter et rejoignez les 951 autres abonnés.

2 - Entrer votre adresse email :

Tester votre débit

Acheter moins cher avec i-Comparateur

Rapport de faute d’orthographe

Le texte suivant sera envoyé à nos rédacteurs :