RAID

De SeRoM - Wiki
Aller à : navigation, rechercher

Intro

Le but de cette article n'est pas d'expliquer le RAID, mais juste montrer comment administrer un RAID software avec mdadm.

Référence

J'ai trouvé un merveilleux tuto expliquant l'usage de mdadm de long en large et en français. Alors je ne vais pas m'égosiller et je vais juste y faire référence:

Résumé

Mais un petit résumer tout de même genre à la 'quick guide'.

  • mdadm <md_device> --add <device>: Pour ajouter un disque au RAID
  • mdadm <md_device> --fail <device>: Pour désactiver un disque du RAID
  • mdadm <md_device> --remove <device>: Pour retirer un disque du RAID
  • mdadm --detail --scan: Pour générer la config des ARRAYs (à redirriger vers le fichier de conf /etc/mdadm/mdadm.conf)
  • mdadm --detail <md_device>: Pour voir les détails du RAID, et l'état de chaque disque.
 root@yellow-dog:~# mdadm -D /dev/md1
 /dev/md1:
         Version : 00.90
   Creation Time : Sat Nov 10 22:59:13 2007
      Raid Level : raid5
      Array Size : 849749760 (810.38 GiB 870.14 GB)
   Used Dev Size : 283249920 (270.13 GiB 290.05 GB)
    Raid Devices : 4
   Total Devices : 4
 Preferred Minor : 1
     Persistence : Superblock is persistent
      
     Update Time : Sun Mar  7 12:43:45 2010
           State : clean, degraded, recovering
  Active Devices : 3
 Working Devices : 4
  Failed Devices : 0
   Spare Devices : 1
      
          Layout : left-symmetric
      Chunk Size : 64K
        
  Rebuild Status : 16% complete
 
            UUID : 02c39a95:eb99e6e4:2fceee4b:f858d332
          Events : 0.4112
     
     Number   Major   Minor   RaidDevice State
        0       3        4        0      active sync   /dev/hda4
        1       3       68        1      active sync   /dev/hdb4
        4      22        4        2      spare rebuilding   /dev/hdc4
        3      22       68        3      active sync   /dev/hdd4
  • cat /proc/mdstat: Affiche l'état des disques et le statut de resynchronisation (si le RAID est en train de récupérer d'un mode dégradé comme dans l'exemple si dessous).
 root@yellow-dog:~# cat /proc/mdstat 
 Personalities : [raid1] [raid6] [raid5] [raid4] 
 md1 : active raid5 hdc4[4] hda4[0] hdd4[3] hdb4[1]
       849749760 blocks level 5, 64k chunk, algorithm 2 [4/3] [UU_U]
       [===>.................]  recovery = 16.2% (45965056/283249920) finish=2893.7min speed=1363K/sec
 
 md0 : active raid1 hdc3[4](F) hda3[5](F) hdd3[3] hdb3[1]
       28322496 blocks [4/2] [_U_U]
       	resync=DELAYED
 
 unused devices: <none>

Partitionnement

Avant de faire joujou avec mdadm pour créer son RAID, il faut créer des partitions sur les disques.

Cas simple

Imaginons le cas simple, une partition prenant l'entièreté du disque:

 fdisk /dev/sdX

On crée une nouvelle partition primary qui commence en début de disque et termine en fin de disque (valeur par défaut)

 Commande (m pour l'aide): n
 Type de partition :
   p   primaire (0 primaire(s), 0 étendue(s), 4 libre(s))
   e   étendue
 Sélection (p par défaut) : p
 Numéro de partition (1-4, par défaut 1): 1
 Premier secteur (2048-4294967295, par défaut 2048): 
 Utilisation de la valeur par défaut 2048
 Dernier secteur, +secteurs or +taille{K,M,G} (2048-4294967294, par défaut 4294967294): 
 Utilisation de la valeur par défaut 4294967294

On défini la partition comme disque RAID:

 Commande (m pour l'aide): t
 Partition sélectionnée 1
 Code Hexa (taper L pour lister les codes): fd 
 Type système de partition modifié de 1 à fd (RAID Linux autodétecté)

On termine par écrire ces changements sur le disque

 Commande (m pour l'aide): w

Avec des disques supérieur à 2 TB

Le partitionnement des disques plus grand que 2 TB ne pas réalisable avec fdisk. Alors si vous avez une interface graphique, je vous conseil de lancer gparted. Dans le cas contraire il va falloir se rabatre sur parted en ligne de commande.

On se soucie d'avoir un bon alignement pour des performances correctes:

 parted -a optimal /dev/sdX

Et à partir de là on change le label à gpt.

 (parted) mklabel gpt
 Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
 Yes/No? yes

Puis on crée une partition primary qui commence après le 2048eme secteur et termine au bout du disque (-1).

 (parted) mkpart primary 2048s -1

On "flag" le disque comme disque RAID:

 (parted) set 1 raid on

Et on vérifie l'alignement de la partition, puis on imprime le résultat à l'écran:

 (parted) align-check
 alignment type(min/opt)  [optimal]/minimal?                               
 Partition number? 1                                                       
 1 aligned
 (parted) print                                                            
 Model: ATA WDC WD30EFRX-68E (scsi)
 Disk /dev/sda: 3001GB
 Sector size (logical/physical): 512B/4096B
 Partition Table: gpt
 
 Number  Start   End     Size    File system  Name     Flags
  1      1049kB  3001GB  3001GB               primary  raid

Création du RAID Mirror

On crée le MultipleDevice (md) en mirror:

 mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdd1

On enregistre ce nouveau device dans la config qui va bien:

 cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.save
 mkconf force-generate /etc/mdadm/mdadm.conf

Et pour avoir un config file plus complet:

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

Puis on l'édite pour supprimer le ligne ARRAY en doublon:

 vim /etc/mdadm/mdadm.conf