Table des matières

RAID, mdadm

Une bonne doc ⇒ http://www.linuxpedia.fr/doku.php/expert/mdadm

http://www.debian-fr.org/raid-logiciel-avec-mdadm-exemple-raid1-niveau-debutant-t27585.html

Commandes utiles

Etat du raid

# cat /proc/mdstat 
Personalities : [raid1] [raid6] [raid5] [raid4] 
md1 : active raid5 sda5[0] sde5[2] sdc5[1]
      527012864 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
      
md0 : active raid1 sda1[0] sde1[4] sdc1[2]
      29279104 blocks super 1.2 [3/3] [UUU]
      
unused devices: <none>
mdadm --examine --scan

Mettre à jour les infos

mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Pour avoir le détail d’une grappe

mdadm --detail /dev/md0

L’état d’un disque

mdadm --examine /dev/sda1

Création d’une grappe RAID1 avec deux disques

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

Création d’une grappe RAID1 de deux disque dont un est absent pour l’instant

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

Création d’une grappe RAID1 avec d’autres paramètres …

mdadm --create --verbose /dev/md0 --level=1 --name=xyz --metadata=1.0 --raid-devices=2 /dev/sda1 /dev/sdb1
* nommage explicite de la grappe avec --name=xyz
* forçage du type de superblock  avec --metadata=1.0

J’attire spécialement l’attention sur le paramètre metadata=<version>. Il permet de préciser le mode de gestion du « superblock » RAID.

Version du superblock (métadonnée RAID)

Le « superblock » désigne l’ensemble des données stockées sur les disques et servant à fournir au système les informations lui permettant de gérer les grappes RAID. Le format et le mode de stockage de ces métadonnées sont indiqué par un numéro de version :

0.90 : valeur par défaut, sauf indication contraire dans mdadm.conf

1.0 : « superblock » stocké en fin de partition, cette valeur est utilisée automatiquement par le partitioneur de openSUSE pour une compatibilité avec l’amorçage du système avant montage des volumes en RAID (avec GRUB2 ou Lilo)

1.1 : « superblock » stocké en début de partition

1.2 : « superblock » stocké à 4K du début de la partition

Changement du nombre de disques de la grappe

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

Ajout d’un disque (/dev/sdb1) à une grappe (/dev/md0)

mdadm --add /dev/md0 /dev/sdb1

Changer l’espace disque utilisé par la grappe

mdadm --grow /dev/md2 --size=max

max indique la capacité maximum, sinon préciser une taille en ko

Désactiver le disque

mdadm /dev/md0 --fail /dev/sdb1

Avant de le retirer de la grappe

mdadm /dev/md0 --remove /dev/sdb1

Si c’est un retrait définitif, il est nécessaire de supprimer le superblock du disque

mdadm --zero-superblock /dev/sdb1

Arrêt de la grappe

mdadm --stop /dev/md0

Écrasement des superblocks pour finaliser la suppression de la grappe

mdadm --zero-superblock /dev/sda1

Pour tous les disques de la grappe

mdadm --zero-superblock /dev/sdb1

Un examine scan permet de férifier que la grappe a bien été définitivement supprimé

mdadm --examine --scan

source pas très lisible : http://blog.ramdani.net/2010/11/commandes-pratiques-pour-gerer-le-raid-soft-sous-linux/

Réparation

Imaginons que vous avez fait une connerie et que le serveur ne démarre plus car il n’arrive plus à monter le RAID.

Lancer un liveCD et c’est parti.

On vérifie la présence des partitions raid

root@ubuntu:~# fdisk -l | grep raid
/dev/sda1   *        2048    58593279    29295616   fd  Linux raid autodetect
/dev/sda5        58595328   585871359   263638016   fd  Linux raid autodetect
/dev/sdb1   *        2048    58593279    29295616   fd  Linux raid autodetect
/dev/sdb5        58595328   585871359   263638016   fd  Linux raid autodetect
/dev/sdc1   *        2048    58593279    29295616   fd  Linux raid autodetect
/dev/sdc5        58595328   585871359   263638016   fd  Linux raid autodetect
/dev/sdd1   *        2048    58593279    29295616   fd  Linux raid autodetect
/dev/sdd5        58595328   585871359   263638016   fd  Linux raid autodetect
/dev/sde1   *        2048    58593279    29295616   fd  Linux raid autodetect
/dev/sde5        58595328   585871359   263638016   fd  Linux raid autodetect

On vérifie la validité d’une partition

root@ubuntu:~# mdadm --examine /dev/sda1
/dev/sda1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : fd7d0783:025baf16:c02e44cf:f1fda742
           Name : serveur:0
  Creation Time : Thu Dec  5 07:58:58 2013
     Raid Level : raid1
   Raid Devices : 5

 Avail Dev Size : 58558464 (27.92 GiB 29.98 GB)
     Array Size : 58558208 (27.92 GiB 29.98 GB)
  Used Dev Size : 58558208 (27.92 GiB 29.98 GB)
    Data Offset : 32768 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 7b97f61d:bb3a9025:40eb6b07:e4cbdba8

    Update Time : Thu Sep  4 13:55:28 2014
       Checksum : a71bde76 - correct
         Events : 3732599


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

On tente d’assembler notre raid (car dans ce cas là, on le connait déjà)

root@ubuntu:~# mdadm --assemble /dev/md0 /dev/sd[ace]1 --force
mdadm: /dev/md0 has been started with 3 drives (out of 5).

root@ubuntu:~# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sda1[0] sde1[4] sdc1[2]
      29279104 blocks super 1.2 [5/3] [U_U_U]
      
unused devices: <none>

Ensuite on monte le raid

root@ubuntu:~# cd /mnt
root@ubuntu:/mnt# ls
root@ubuntu:/mnt# mkdir raid
root@ubuntu:/mnt# mount /dev/md0 raid/

Dans notre cas, le raid /dev/md0 a 5 disques dont 2 ne fonctionnent pas (on le voit par un tiret bas _)

# cat /proc/mdstat 
Personalities : [raid1] [raid6] [raid5] [raid4] 
md1 : active raid5 sda5[0] sde5[2] sdc5[1]
      527012864 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
      
md0 : active raid1 sda1[0] sde1[4] sdc1[2]
      29279104 blocks super 1.2 [5/3] [U_U_U]
      
unused devices: <none>

On peut lui dire de ne gérer que 3 disques

# mdadm --grow --raid-devices=3 /dev/md0
raid_disks for /dev/md0 set to 3

On vérifie que les tirets bas ne sont plus là.

# cat /proc/mdstat 
Personalities : [raid1] [raid6] [raid5] [raid4] 
md1 : active raid5 sda5[0] sde5[2] sdc5[1]
      527012864 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
      
md0 : active raid1 sda1[0] sde1[4] sdc1[2]
      29279104 blocks super 1.2 [3/3] [UUU]
      
unused devices: <none>

On peut ensuite sauvegarder cette config

mdadm --detail --scan --verbose > /etc/mdadm/mdadm.conf