S'essayer au RAID logiciel sous Linux

Gazette Linux n°150 — Mai 2008

Adaptation française : Deny

Relecture de la version française : Deny

Article paru dans le n°150 de la Gazette Linux de mai 2008.

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

Qu'est-ce que le RAID logiciel ?
Permettre à votre noyau de prendre en charge RAID
Outils pour manipuler des tableaux RAID
Installation de mdadm
Création d'un dispositif RAID
Création d'un RAID de niveau 0
Montage du dispositif RAID :
À l'avenir
Références
Remerciements

Qu'est-ce que le RAID logiciel ?

Le RAID logiciel est un RAID implémenté avec une application—aucun matériel supplémentaire tel qu'un contrôleur RAID n'est nécessaire. Ainsi, le logiciel RAID est un bon point de départ pour commencer à obtenir une certaine expérience du RAID. En outre, le RAID logiciel est indépendant du logiciel propriétaire de gestion—le maintien d'un RAID logiciel fonctionne de la même manière pour toutes les machines exécutant Linux. Cependant, il y a également un point à soulever : en considérant le RAID logiciel, pensez aux performances. TOUS LES algorithmes de RAID sont effectués par l'unité centrale du système et chaque bloc doit être copié par dessus le bus des données du système (c'est-à-dire, sda1 <-> contrôleur IO (input/output, entrée-sortie) <-> Mémoire vive, éventuellement unité centrale <-> contrôleur IO <-> sdb1). (Merci à René Pfeiffer de l'Answer Gang d'avoir signaler ceci.)

Permettre à votre noyau de prendre en charge RAID

J'utilise Ubuntu 7.10© avec le noyau stock par défaut pour mes expériences. La machine de test a un disque dur SATA de 80 Go.

D'abord, on examine si le support RAID est activé dans votre noyau :

cat /proc/mdtstat

Si on obtient un message spécifiant que :

cat: /proc/mdstat: No such file or directory	

alors, on doit activer le support RAID. Il y a deux possibilités :

  1. Le support RAID était désactivé lors de la compilation du noyau et vous devrez le recompiler

  2. Vous devrez insérer le support du module md (multiple disk, disques multiples) manuellement. Vérifiez si les modules md* sont présents sous /lib/modules/$(uname -r)/kernel/drivers/md/ et insérez le module de la façon suivante :

    $ sudo modprobe md-mod 
    Password:
    

(Je remercie Kapil de l'Answer Gang pour cette astuce)

À présent, on peut vérifier que le support RAID est actif :

amit@amit-desktop:~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices: 	

Cela signifie que le support RAID fait partie du noyau.

Outils pour manipuler des tableaux RAID

À présent qu'on a obtenu un noyau avec RAID activé, on devra utiliser quelques outils utilisateurs pour s'aider à utiliser RAID.

Installation de mdadm

amit@amit-desktop:~$ sudo apt-get install mdadm
Reading package lists... Done
Building dependency tree  
Reading state information... Done
Recommended packages:
mail-transport-agent
The following NEW packages will be installed:
mdadm
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 220kB of archives.
After unpacking 627kB of additional disk space will be used.
Get:1 http://in.archive.ubuntu.com gutsy/main mdadm 2.6.2-1ubuntu2 [220kB]
Fetched 220kB in 48s (4515B/s)                                            
Preconfiguring packages ...
Selecting previously deselected package mdadm.
(Reading database ... 88932 files and directories currently installed.)
Unpacking mdadm (from .../mdadm_2.6.2-1ubuntu2_i386.deb) ...
Setting up mdadm (2.6.2-1ubuntu2) ...
Generating array device nodes... done.
Generating mdadm.conf... done.
Removing any system startup links for /etc/init.d/mdadm-raid ...
update-initramfs: deferring update (trigger activated)
* Starting MD monitoring service mdadm --monitor                        [ OK ]

Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.22-14-generic

Création d'un dispositif RAID

Mon disque à présent installé, se présente ainsi :

 Name      Flags       Part Type    FS Type                 [Label]     Size (MB)
---------------------------------------------------------------------------------
sda1       Boot        Primary      NTFS                    []           20612.56      
sda5                   Logical      W95 FAT32                            20579.66
sda6                   Logical      W95 FAT32                            20587.88
sda7                   Logical      Linux ext3                           12000.69
sda8                   Logical      Linux swap / Solaris                  1019.94
sda9                   Logical      Linux                                 2048.10
sda10                  Logical      Linux                                 2048.10
sda11                  Logical      Linux                                 3446.40

Je vais alors combiner sda9 et sda10 pour former un grand dispositif logique constituant un tableau RAID. Pour les besoins de la démonstration, et également parce que 0 est toujours un bon point de départ, on va créer un RAID de niveau 0.

 

Notez le type de partition. Le pilote du noyau RAID Linux peut automatiquement démarrer un dispositif RAID si le type de partition est marqué comme 0xFD ce qui signifie « Linux RAID partition with autodetect using persistent superblock »

 
 --René

Combiner 2 partitions consécutives pour former un RAID n'est pas une chose à faire intelligente, m'a répondu l'Answer Gang. Mais jusqu'à ce que je trouve pourquoi, je persisterai.

 

Le but du RAID est de distribuer la charge des entrées/sorties de toutes les opérations en lecture/écriture par-dessus les disques multiples. Les disques durs sont lents et prennent un moment avant de terminer les commandes qu'on leur fournit. Selon les opérations d'entrée/sortie, un RAID permettra au système de laisser les disques du RAID fonctionner en parallèle. C'est particulièrement vrai quand on lit depuis un RAID0 ou un RAID1. Si on crée un dispositif RAID sur le même dispositif physique, le pilote du RAID ne s'en apercevra pas. Le problème que vous rencontrez alors est que vous placez le faible disque sous une charge élevée, puisque le pilote pense maintenant qu'il peut exécuter une commande en parallèle quand en réalité il n'y a pas parallélisme. Cela signifie que les têtes du disque se déplaceront probablement beaucoup— et il s'agit d'une mauvaise idée comme un de mes amis qui effectue des récupérations de données professionnelles me l'a expliqué une fois. Ainsi, il est correct de faire ceci à des fins éducatives, mais s'il-vous-plait, ne placez jamais les données en direct d'un serveur en production dans un RAID composé de partitions sur le même disque physique

 
 --René

Création d'un RAID de niveau 0

amit@amit-desktop:~$ sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda9 /dev/sda10
[sudo] password for amit:
mdadm: chunk size defaults to 64K
mdadm: array /dev/md0 started.	

Examinons, à présent, le tableau RAID que nous venons de créer :

amit@amit-desktop:~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid0 sda10[1] sda9[0]
     3999872 blocks 64k chunks
    
unused devices: 

Maintenant, nous créerons un système de fichiers dans le nouveau dispositif RAID :

amit@amit-desktop:~$ sudo mkfs -t ext3 /dev/md0
[sudo] password for amit:
mke2fs 1.40.2 (12-Jul-2007)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
500960 inodes, 999968 blocks
49998 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1027604480
31 block groups
32768 blocks per group, 32768 fragments per group
16160 inodes per group
Superblock backups stored on blocks:
       32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done                           
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Montage du dispositif RAID :

amit@amit-desktop:~$ sudo mkdir /media/RAID0
amit@amit-desktop:~$ mount /dev/md0 /media/RAID0/
mount: only root can do that
amit@amit-desktop:~$ sudo mount /dev/md0 /media/RAID0/

amit@amit-desktop:~$ df

Filesystem           1Blacks      Used Available Use% Mounted on
.
.

/dev/md0               3936940     73440   3663508   2% /media/RAID0

Utilisons à présent mdadm pour obtenir quelques détails sur le tableau RAID :

amit@amit-desktop:~$ sudo mdadm --query /dev/md0 --detail
/dev/md0: 3.81GiB raid0 2 devices, 0 spares. Use mdadm --detail for more detail.

amit@amit-desktop:~$ sudo mdadm --detail /dev/md0
/dev/md0:
       Version : 00.90.03
 Creation Time : Tue Mar 11 13:05:22 2008
    Raid Level : raid0
    Array Size : 3999872 (3.81 GiB 4.10 GB)
  Raid Devices : 2
 Total Devices : 2
Preferred Minor : 0
   Persistence : Superblock is persistent

   Update Time : Tue Mar 11 13:05:22 2008
         State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
 Spare Devices : 0

    Chunk Size : 64K

          UUID : f77bd177:706b589c:2a7af8c6:cbd32339 (local to host amit-desktop)
        Events : 0.1

   Number   Major   Minor   RaidDevice State
      0       8        9        0      active sync   /dev/sda9
      1       8       10        1      active sync   /dev/sda10	

À l'avenir

Une couche RAID expérimentale est maintenant disponible à notre usage. Dans des articles prochains, j'essaierai de partager mes expériences sur l'installation du RAID. Vous pouvez également envisager de visiter les contributions de mon blogue à propos du RAIDici

Références

Remerciements

Je remercie l'Answer Gang (TAG) pour les entretiens à propos de RAID d'il y a un moment. Bien que je n'aie essayé aucune des judicieuses suggestions, je les essayerais, testerais et apprécierais lors du prochain article. J'ai également eu le privilège de voir mon article « édité » par l'Answer Gang, ce qui je pense était une offre limitée :-).

Amit Kumar Saha est rédacteur technique indépendant. Il écrit principalement sur le noyau Linux, la sécurité réseau et XML.