CH 20 - RAID Et LVM
CH 20 - RAID Et LVM
CH 20 - RAID Et LVM
Un volume RAID (Redudent Array of Independent Disk) est constitué d'un ensemble de
disques ou de partitions de disques. L'objectif est d'assurer une tolérance aux pannes, en
dupliquant les données sur plusieurs disques. La performance est améliorée en permettant
1
2 BTS SRI S5 : Système d’exploitation GNU/Linux
la lecture ou l'écriture en parallèle des données depuis ou vers les disques qui constituent
le volume RAID.
Le RAID peut être matériel ou logiciel. Le RAID matériel utilise un contrôleur matériel
permettant de gérer le volume RAID. Ce contrôleur RAID est doté d'un processeur
spécifique, une mémoire et un logiciel embarqué (RAID firmware). Le contrôleur RAID
matériel cache les caractéristiques du volume RAID au système d'exploitation. Ce dernier
perçoit le volume RAID comme un disque dur classique.
En RAID logiciel, le contrôleur RAID est un composant du système d'exploitation. Le
module MD (Multiple Disk) du noyau Linux est un contrôleur RAID logiciel permettant de
gérer le volume RAID et offrant aux applications un seul disque dur virtuel.
LVM (Logical Volume Manager) est une technique qui crée des systèmes de fichiers sur
des volumes logiques, ce qui permet par exemple de redimensionner la taille des partitions
en toute transparence du point de vue des applications et sans avoir besoin de redémarrer
un serveur en production.
Les sections suivantes décrivent les techniques RAID et LVM et illustrent la mise en place
de ces deux techniques combinées ensemble.
1. RAID
1.1 Concepts généraux
Selon le type d’architecture mis en place, la technique RAID permet d’améliorer :
– soit la performance de lecture et d’écriture, en distribuant les données sur plusieurs
disques, ce qui permet au contrôleur de travailler sur plusieurs disques simultanément ;
– soit la tolérance aux pannes, en dupliquant des données sur plusieurs disques, ce qui
diminue les risques en cas de défaillance de l’un d’eux ;
– soit les deux.
Il existe plusieurs types de RAID, appelés niveaux. Les plus utilisés sont RAID 0, RAID 1,
RAID 5 et RAID 10 :
– RAID 0 : il est utilisé uniquement pour améliorer les performances. Les données sont
découpées en blocs (chunk) et ces blocs sont répartis sur plusieurs disques, ce qui
diminue les temps de lecture et d’écriture (figure 8) ;
– RAID 1 : il offre une redondance des données. En effet elles sont dupliquées sur deux
ou plusieurs disques (figure 8). La performance de lecture augmente avec le nombre
de disques du volume RAID. Ceci peut assurer une meilleure tolérance aux pannes,
mais peut nuire à la performance d’écriture, car l'information doit être écrite plusieurs
fois ;
2
2 BTS SRI S5 : Système d’exploitation GNU/Linux
4
Figure 8. RAID 0 et RAID 1
5
Figure 9. RAID 5
4
Figure 1 : schémas de Cburnett diffusés sur Wikimedia Commons sous licence Creative Commons
BY-SA 3.0 : http://commons.wikimedia.org/wiki/File:RAID_0.svg et
http://commons.wikimedia.org/wiki/File:RAID_1.svg
5
Figure 2 : schéma de Cburnett diffusé sur Wikimedia Commons sous licence Creative Commons BY-
SA 3.0 : http://commons.wikimedia.org/wiki/File:RAID_5.svg
3
2 BTS SRI S5 : Système d’exploitation GNU/Linux
– RAID 4 : les données sont distribuées en petits blocs sur les différents disques durs. Le
contrôle de parité est inscrit sur un disque spécifique. Ceci permet de créer une
architecture redondante qui améliore le temps d'écriture. Si un disque tombe en panne,
les données manquantes seront recalculées à partir des données utiles et des parités.
RAID 4 n'est plus utilisé, il est remplacé par RAID 5 ;
– RAID 5 : à la différence de RAID 4, les données et la parité sont elles aussi distribuées
sur l'ensemble des disques (figure 9) ;
– RAID 10 ou (1+0) : combinaison de RAID 1 et de RAID 0. C'est un RAID 0 composé de
deux volumes RAID 1 (figure 10), ce qui offre les avantages simultanés du RAID 1 et
RAID 0 : augmentation de la taille de stockage et des performances de lecture. Il faut
au minimum quatre disques de stockage pour créer un volume RAID 10.
6
Figure 10. RAID 10
6
Figure 3 : schéma de Wheart, basé sur un schéma de Cburnett et diffusé sur Wikimedia Commons
sous licence Creative Commons BY-SA 3.0 : http://commons.wikimedia.org/wiki/File:RAID_10.svg
4
2 BTS SRI S5 : Système d’exploitation GNU/Linux
Les volumes RAID sont configurés dans le fichier /etc/mdadm.conf. Ce fichier est utilisé par
la commande mdadm dans le mode create pour créer le volume RAID ou pour l’initialiser
après chaque démarrage. Les principaux paramètres de ce fichier sont :
– DEVICE : liste des disques et partitions susceptibles d'être utilisés dans le volume RAID ;
– ARRAY : nom du volume RAID, par exemple /dev/md0 ou /dev/md/00 ;
5
2 BTS SRI S5 : Système d’exploitation GNU/Linux
– Créer deux volumes RAID, /dev/md0 et /dev/md1. Le premier volume RAID est créé
avec un disque de secours /dev/sdd1. Les deux volumes RAID utilisent le même
groupe de secours mongroupe (défini par l'option --spare-group), ce qui leur permet de
partager les disques de secours. Cela signifie que si un disque du volume RAID
/dev/md1 tombe en panne, il sera remplacé automatiquement par le disque /dev/sdd1 :
6
2 BTS SRI S5 : Système d’exploitation GNU/Linux
2. LVM
2.1 Concepts généraux du LVM
La gestion des volumes logiques définit une couche d'abstraction de haut niveau sur les
partitions physiques du disque dur. Les volumes physiques (physical volumes ou pv) sont
regroupés pour former des groupes de volumes (volume groups ou vg). Les volumes
physiques peuvent être des disques, des partitions ou même des volumes RAID. Dans un
groupe de volumes on peut créer plusieurs volumes logiques qui seront accessibles
comme des partitions classiques. Enfin, sur ces volumes logiques, on peut créer des
systèmes de fichiers et les monter sur l'arborescence système.
LVM offre ainsi plusieurs avantages. On peut :
– avoir une utilisation et une allocation efficaces de l'espace de stockage, puisque les
volumes logiques sont répartis sur plusieurs disques physiques ;
– augmenter et réduire la taille des volumes logiques sans risque d'interrompre des
services du système ni de perdre des données ;
– on peut prendre des instantanés (snapshots) sur le système de fichiers. Ces
instantanés servent à sauvegarder et restaurer les données.
7
2 BTS SRI S5 : Système d’exploitation GNU/Linux
8
2 BTS SRI S5 : Système d’exploitation GNU/Linux
L’objectif est de créer un volume RAID 5 sur trois disques vides, puis de définir sur ce
volume deux partitions LVM, web1 et web2.
# fdisk /dev/sdb
Une seule partition est créée dans chaque disque. Le type de chaque partition est
représenté par le code fd (Linux Raid Autodetect). Ce type permet au système RAID de
Linux de détecter automatiquement ces partitions.
La commande suivante génère un volume RAID 5 sur les trois partitions /dev/sdb1,
/dev/sdc1 et /dev/sdd1 :
9
2 BTS SRI S5 : Système d’exploitation GNU/Linux
Le fichier /proc/mdstat contient l’état courant du volume RAID :
Il est particulièrement utile de surveiller ce fichier après l'ajout d'un nouveau disque ou le
remplacement d'un disque défectueux.
On peut aussi voir des messages de notification sur la création du volume RAID dans le
fichier /var/log/messages.
La commande mdadm sert aussi à activer le volume RAID et à le rendre disponible pour les
utilisateurs. Il est également recommandé de créer un fichier de configuration RAID,
/etc/mdadm.conf, pour servir de secours en cas de problème et simplifier l’activation du
volume RAID en dispensant de redonner ses paramètres.
On peut utiliser la commande mdadm --details --scan pour écrire la configuration courante
du volume RAID dans un fichier de configuration :
# mdadm -S /dev/md0
mdadm: stopped /dev/md0
On a maintenant réuni les trois disques dans un volume RAID unique. Sur ce volume on va
définir des groupes de volumes logiques sur lesquels on pourra créer des systèmes de
fichiers.
10
2 BTS SRI S5 : Système d’exploitation GNU/Linux
initiale, mais ceci n'est plus nécessaire, on commence plutôt par initialiser chaque
périphérique physique avec la commande pvcreate. Dans l’exemple on utilise le volume
physique RAID 5 /dev/md0 que l’on a créé :
# pvcreate /dev/md0
Physical volume "/dev/md0" successfully created
L'opération précédente détruit toutes les données sur les disques et les partitions. Bien
qu'on utilise un seul volume physique dans cet exemple, LVM permet d'ajouter plusieurs
volumes de types différents dans un groupe de volumes.
On peut maintenant créer le groupe de volumes VG1 :
# vgdisplay VG1
--- Volume group ---
VG Name VG1
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 8,00 GB
PE Size 4,00 MB
Total PE 2047
Alloc PE / Size 0/0
Free PE / Size 2047 / 8,00 GB
VG UUID 1pqn22-KEu1-uJde-0rgB-WhiK-KjV1-7ZTc0G
La dernière étape est de créer dans le groupe de volumes VG1 des volumes logiques qui
seront accessibles ensuite comme des partitions du disque :
11
2 BTS SRI S5 : Système d’exploitation GNU/Linux
Ces volumes logiques, une fois créés, sont représentés par des fichiers de périphérique
situés dans /dev/mapper/ :
$ ls -l /dev/mapper/
total 0
crw-rw----. 1 root root 10, 63 sept. 7 12:56 control
brw-rw----. 1 root disk 253, 1 sept. 7 12:56 VG1-web1
brw-rw----. 1 root disk 253, 0 sept. 7 12:56 VG1-web2
Maintenant que les deux volumes logiques web1 et web2 sont créés dans le groupe de
volumes VG1, on peut créer et monter les systèmes de fichiers :
# mke2fs -j /dev/VG1/web1
mke2fs 1.41.4 (27-Jan-2009)
Étiquette de système de fichiers=
Type de système d'exploitation : Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
131072 i-noeuds, 524288 blocs
26214 blocs (5.00%) réservés pour le super utilisateur
Premier bloc de données=0
Nombre maximum de blocs du système de fichiers=536870912
16 groupes de blocs
32768 blocs par groupe, 32768 fragments par groupe
8192 i-noeuds par groupe
Superblocs de secours stockés sur les blocs :
32768, 98304, 163840, 229376, 294912
Écriture des tables d'i-noeuds : complété
Création du journal (16384 blocs) : complété
Écriture des superblocs et de l'information de comptabilité du système de
fichiers : complété
# mke2fs -j /dev/VG1/web2
# mkdir /mnt/web1 /mnt/web2
Finalement les systèmes de fichiers sont prêts à être utilisés. On ajoute les nouveaux
systèmes de fichiers dans le fichier /etc/fstab et on redémarre le système.
12
2 BTS SRI S5 : Système d’exploitation GNU/Linux
# cat /var/log/messages
Apr 26 17:37:21 tabarka kernel: raid5: Disk failure on sdc1, disabling
device.
Apr 26 17:37:21 tabarka kernel: raid5: Operation continuing on 2 devices.
Apr 26 17:37:21 tabarka kernel: RAID5 conf printout:
Apr 26 17:37:21 tabarka kernel: --- rd:3 wd:2
Apr 26 17:37:21 tabarka kernel: disk 0, o:1, dev:sdb1
Apr 26 17:37:21 tabarka kernel: disk 1, o:0, dev:sdc1
Apr 26 17:37:21 tabarka kernel: disk 2, o:1, dev:sdd1
Apr 26 17:37:21 tabarka kernel: RAID5 conf printout:
Apr 26 17:37:21 tabarka kernel: --- rd:3 wd:2
Apr 26 17:37:21 tabarka kernel: disk 0, o:1, dev:sdb1
Apr 26 17:37:21 tabarka kernel: disk 2, o:1, dev:sdd1
Apr 26 17:37:55 tabarka pulseaudio[1932]: ratelimit.c: 27 events suppressed
Apr 26 17:38:00 tabarka pulseaudio[1932]: ratelimit.c: 6437 events
suppressed
Apr 26 17:38:22 tabarka pulseaudio[1932]: ratelimit.c: 55 events suppressed
Des informations similaires sont aussi disponibles dans le fichier d'état du volume RAID
/proc/mdstat :
# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb1[0] sdd1[2] sdc1[3](F)
8385664 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
13
2 BTS SRI S5 : Système d’exploitation GNU/Linux
# df /mnt/web1
Sys. de fich. 1K-blocs Occupé Disponible Capacité Monté sur
/dev/mapper/VG1-web1
2064208 1543352 416000 79% /mnt/web1
# df /mnt/web2
Sys. de fich. 1K-blocs Occupé Disponible Capacité Monté sur
/dev/mapper/VG1-web2
2064208 68676 1890676 4% /mnt/web2
14
2 BTS SRI S5 : Système d’exploitation GNU/Linux
Enfin on peut utiliser la commande df pour vérifier le nouvel espace disponible dans
/mnt/web1 :
# df /mnt/web1
Sys. de fich. 1K-blocs Occupé Disponible Capacité Monté sur
/dev/mapper/VG1-web1
4128448 1800620 2118140 46% /mnt/web1
PATA
L'interface PATA (Parallel Advanced Technology Attachment), permet de relier les
périphériques de masse (disques, lecteurs de cédéroms ...) à la carte mère par des câbles
plats, souples et composés de 40 ou 80 broches.
On peut connecter deux disques (un maître et un esclave) sur le même câble. L'interface
PATA est aussi connue sous le nom IDE (IDE) ou Enhanced IDE (eIDE).
L’interface PATA utilise les standards ATA (Advanced Technology Attachment) et ATAPI
(Parallel Advanced Technology Attachment Packet Interface)
SATA
L'interface SATA (Serial ATA) succède à l'interface PATA. Elle permet un débit de transfert
plus élevé. La méthode de transfert des données est en série. Chaque disque dur est relié
à son propre contrôleur via son propre câble ainsi chaque disque bénéficie de la totalité de
la bande passante. Les câbles utilisés sont beaucoup plus minces que les câbles des
disques PATA, ils ne comportent que 7 fils, ce qui encombre moins les boîtiers des
ordinateurs.
L’interface SATA supporte le branchement à chaud (hot plug). Les périphériques SATA
15
2 BTS SRI S5 : Système d’exploitation GNU/Linux
sont internes à l'ordinateur. Une variante de l'interface, connue sous le nom de eSATA, est
utilisée pour les disques durs externes.
SCSI
L'interface SCSI (Small Computer System Interface) permet de relier, simultanément et en
série, plusieurs périphériques tels que les disques durs, les lecteurs de cédéroms, les
graveurs, les scanners. etc. Selon sa version, l'interface SCSI peut prendre en charge de 8
à 16 périphériques par câble. Le contrôleur SCSI est considéré comme un périphérique à
part entière, de sorte qu'on peut brancher réellement 7 ou 15 périphériques.
L’interface SCSI se présente sous la forme d’une petite carte comportant un micro-
contrôleur indépendant du processeur, qui permet de bien le soulager et d'augmenter les
performances systèmes.
Généralement on trouve l'interface SCSI dans les serveurs et les stations de travail haut
de gamme. Elle est moins utilisée sur les ordinateurs du bureau et les ordinateurs
portables à cause de son coût élevé.
USB
L'interface USB (Universal Serial Bus) permet de relier plusieurs types de périphériques
externes à un ordinateur, y compris les disques durs et les lecteurs flash. La première et la
deuxième génération de l'USB sont peu performantes, mais l'USB 3.0 est nettement plus
rapide.
$ cat /proc/interrupts
CPU0 CPU1
0: 1081739 1088752 IO-APIC-edge timer
1: 2106 1859 IO-APIC-edge i8042
8: 0 1 IO-APIC-edge rtc0
9: 1143 1113 IO-APIC-fasteoi acpi
12: 67 56 IO-APIC-edge i8042
16: 1 0 IO-APIC-fasteoi uhci_hcd:usb3, mmc0,
16
2 BTS SRI S5 : Système d’exploitation GNU/Linux
firewire_ohci
18: 0 0 IO-APIC-fasteoi uhci_hcd:usb8
19: 2129 2172 IO-APIC-fasteoi ehci_hcd:usb1,
uhci_hcd:usb5, uhci_hcd:usb7
21: 0 0 IO-APIC-fasteoi uhci_hcd:usb4
23: 26776 24158 IO-APIC-fasteoi ehci_hcd:usb2, uhci_hcd:usb6
44: 0 1 PCI-MSI-edge sky2@pci:0000:03:00.0
45: 20330 19504 PCI-MSI-edge ahci
46: 44632 40806 PCI-MSI-edge iwlagn
47: 264 263 PCI-MSI-edge hda_intel
48: 28 32 PCI-MSI-edge hda_intel
49: 68611 67586 PCI-MSI-edge fglrx[0]@PCI:1:0:0
NMI: 0 0 Non-maskable interrupts
LOC: 610822 668286 Local timer interrupts
SPU: 0 0 Spurious interrupts
PMI: 0 0 Performance monitoring interrupts
PND: 0 0 Performance pending work
RES: 34364 36349 Rescheduling interrupts
CAL: 272 82 Function call interrupts
TLB: 40172 32896 TLB shootdowns
TRM: 0 0 Thermal event interrupts
THR: 0 0 Threshold APIC interrupts
MCE: 0 0 Machine check exceptions
MCP: 9 9 Machine check polls
ERR: 1
MIS: 0
17
2 BTS SRI S5 : Système d’exploitation GNU/Linux
La commande hdparm communique avec le pilote IDE afin d'obtenir et modifier des
paramètres du disque tels que mémoire cache, gestion d'énergie APM (Advanced Power
Management), gestion acoustique et DMA. En réglant ces paramètres on peut améliorer
les performances du disque IDE.
Les options de la commande hdparm utilisées pour améliorer les performances des disques
IDE sont :
– -dnuméro : active ou désactive le paramètre « using_dma » du disque ; -d0 active le
mode PIO (Programmed Input/Output) ; -d1 active le mode DMA. Cette option
fonctionne maintenant avec la majorité des combinaisons de disques et d'interfaces qui
supportent le DMA et sont reconnus par le gestionnaire de périphériques IDE. En
général l'option -d est utilisée avec l'option -X pour s'assurer que le disque lui-même
est programmé pour le mode DMA approprié, bien que la plupart des BIOS le fassent
au démarrage.
Activer le DMA donne pratiquement toujours les meilleures performances, avec des
entrées-sorties à haut débit et une faible utilisation du processeur. Cependant, il y a
quand même quelques configurations de chipsets et de disques pour lesquelles le
DMA ne fait pas beaucoup de différence, voire ralentit la machine ;
– -p mode : définit le mode PIO, qui varie de 0 à 5 dans la plupart des cas. Augmenter le
mode PIO correspond à une meilleure performance ;
– -c mode : affiche ou définit le mode de transfert 32-bits. Omettre le mode permet
d'afficher la valeur courante. La valeur 0 du mode désactive le support d'entrée-sortie
32-bits, la valeur 1 active les transferts de donnés 32-bits, et la valeur 3 active les
transferts de donnés 32-bits avec une séquence spéciale sync requise par de
nombreux contrôleurs ;
– -S délai : fixe le délai avant la suspension (spindown) du disque. Cette valeur est
utilisée par le disque pour déterminer combien de temps attendre (sans activité disque)
avant de suspendre la rotation du moteur pour économiser l'énergie. Dans de telles
circonstances, le disque peut mettre jusqu'à une trentaine de secondes pour répondre
à un accès, bien que la plupart des disques soient bien plus rapides. Le délai est
indiqué dans une unité qui varie selon l’intervalle :
– la valeur zéro signifie « pas de suspension »,
– les valeurs comprises entre 1 à 240 sont multiples de 5 secondes. Par exemple,
120 signifie 600 secondes, ou 10 minutes,
– les valeurs comprises entre 241 à 251 spécifient de 1 à 11 unités de 30 minutes,
– la valeur 252 signifie un délai de 21 minutes,
– la valeur 253 fixe un délai défini par le constructeur,
– la valeur 254 est réservée,
– la valeur 255 est interprétée comme 21 minutes et 15 secondes ;
– -v : affiche tous les paramètres du disque. Ceci est aussi le comportement par défaut
quand aucune option n'est spécifiée ;
18
2 BTS SRI S5 : Système d’exploitation GNU/Linux
– -X modeTransfert : définit le mode de transfert DMA utilisé par un disque. Cette option
est habituellement utilisée en combinaison avec -d1 pour activer le mode DMA. Le
modeTransfert peut prendre les valeurs sdmax, mdmax, ou udmax. Ces valeurs
correspondent respectivement au transfert simple-mot DMA, multimot DMA ou rafales
ultra DMA. Le nombre x représente la valeur du mode DMA. Les disques modernes
sont capables de supporter des modes de transferts tels que -X udma5 ou -X udma6.
Cette option doit être utilisée avec prudence, un mode incorrect peut rendre le disque
inaccessible.
EXEMPLES
Important : L'utilisation incorrecte de la commande hdparm peut détruire les données et,
dans certains cas, le disque dur !
– Afficher les paramètres du disque /dev/sda :
# hdparm -v /dev/sda
/dev/sda:
multcount = 128 (on)
IO_support = 1 (32-bit)
readonly = 0 (off)
readahead = 256 (on)
geometry = 2088/255/63, sectors = 33554432, start = 0
# hdparm -i /dev/sda
/dev/sda:
Model=VBOX, FwRev=1.0, SerialNo=VBc3f20747-1a6d6cf5
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=0, SectSize=512, ECCbytes=0
BuffType=DualPortCache, BuffSize=256kB, MaxMultSect=128, MultSect=128
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=33554432
IORDY=yes, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
AdvancedPM=no WriteCache=enabled
Drive conforms to: unknown: ATA/ATAPI-1,2,3,4,5,6
19
2 BTS SRI S5 : Système d’exploitation GNU/Linux
Exercices
1. Parmi les commandes suivantes, laquelle regroupe un volume RAID 1 à partir
des périphériques composant /dev/sda1 et /dev/hda2 ?
A. mdadm --create --level=1 --raid-devices=2 /dev/sda1 /dev/hda2
B. mdadm --level=5 --raid-devices=2 /dev/sda1 /dev/hda2
C. mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/hda2
D. mdadm --level=1 --raid-devices=2 /dev/sda1 /dev/hda2
3. Dans une configuration LVM, quelle commande est utilisée pour initialiser une
partition afin qu'elle puisse fonctionner comme un volume physique :
A. lvconvert
20
2 BTS SRI S5 : Système d’exploitation GNU/Linux
B. lvcreate
C. pvcreate
D. pvchange
21