Module 1
Chapitre 13 : RAID et LVM
1. Raid Logiciel
1.1 Introduction au Raid
Merci à Mathieu Martineau du Laboratoire Microsoft pour la note technique sur les différents types de RAID.
En 1987, les chercheurs de l’université de Berkeley ont proposés cinq niveaux de RAID (les niveaux 1, 2, 3, 4 et 5). Depuis d’autres niveaux ont été implémentés comme le RAID 6 et le RAID 7. Les niveaux JBOD et 0 sont aussi considérés comme des modes de RAID bien qu’ils n’implémentent pas de redondance des données (le ‘R’ de RAID signifie « Redundant » c'est-à-dire redondance).
Le RAID 0 et le JBOD sont d’ailleurs présents en standard sur toutes les cartes RAID du marché. Ces modes (niveaux) de RAID sont considérés comme des modes simples. Il est également possible de créer des niveaux de RAID combinés.
Le but de cette technologie est de remplacer les coûteux disques de 6.5 pouces et de 9.5 pouces (ces disques sont aussi appelés « disques grands systèmes ») qui équipent les gros serveurs (comme les serveurs de fichiers) par des ensembles formé de disques de 3.5 pouces plus répandus et beaucoup moins chers. Cela explique pourquoi l'acronyme RAID signifie aussi Redundant Array of Inexpensive Disks.
Cette technologie est principalement utilisée dans le domaine de l'entreprise pour sécuriser ou bien pour augmenter les performances des serveurs. Elle est parfois mise en place avec d’autres technologies telles que le clustering afin d’obtenir des performances encore plus grande ou bien d’avoir une sécurité maximale.
Cependant, le RAID se popularise rapidement par le biais des cartes d'extension (par exemple les cartes au format PCI 32 bits) et des chipsets intégrés au sein des cartes mères grand public (ex. : le chipset sud Intel ICH5R). Généralement les contrôleurs RAID que l’on trouve sur le marché du matériel « grand public » sont très limités par rapport aux contrôleurs RAID haut de gamme (niveaux RAID supportés réduit au RAID 0 et 1, pas de mémoire cache intégrée au contrôleur …).
Le but du RAID est de rassembler plusieurs disques durs physiques en seule unité logique. C'est-à-dire que pour plusieurs disques utilisant la technologie RAID, le système d’exploitation ne verra qu’un seul disque que l’on pourra qualifier de « disque virtuel ». Le RAID fonctionne donc grâce à un ensemble (ou agrégat) de disques. Il existe plusieurs niveaux (ou configuration) de RAID qui rassemblent différemment les données sur l’ensemble des disques. En fonction du niveau de RAID sélectionné on peut :
additionner la capacité des disques durs pour former un disque virtuel plus grand
obtenir un disque virtuel plus performant
mettre en place la tolérance de panne (c'est-à-dire sécuriser les données, mais ne remplace pas la sauvegarde)
augmenter la capacité, les performances et la sécurité
La technologie RAID peut être mise en place au niveau matériel ou niveau logiciel. Elle fonctionne avec des disques durs utilisant l’interface PATA (Parallel Advanced Technology Attachment), SATA (Serial Advanced Technology Attachment) ou bien SCSI (Small Computer System Interface).
1.1.1 Le JBOD
Le mode JBOD (Just a Bunch Of Disks) ou RAID linear, est implémenté dans quasiment toutes les cartes RAID du marché. Il permet tout simplement de rassembler plusieurs disques durs en une seule unité logique de plus grosse capacité.
Par exemple si l’on possède un disque de 8Go, un disque de 10Go et un disque de 30Go, on peut les rassembler en un seul disque dur logique de 48Go.
Les données sont ensuite écrites disque par disque, c'est-à-dire que dès qu'un disque est plein, la suite des données est copiée sur un autre disque. Tout cela reste bien sur complètement transparent pour l'utilisateur. Il n’implémente aucune tolérance de panne et n’augmente pas les performances. Il sert uniquement à étendre la capacité d’un disque.
Ce mode est intéressant si l’on souhaite stocker de gros fichiers ou bien si l’on dispose d’un grand nombre de petits disques durs.
1.1.2 Le RAID 0 ou « stripping »
Le RAID 0 est un agrégat (ensemble) de disques formé d’au moins deux disques durs. Avec le RAID 0, les données sont réparties sur l’ensemble des disques de l’agrégat. Cela améliore les performances en lecture et en écriture. Par exemple si on copie un fichier de 99 Mo sur un agrégat composé de 3 disques, alors le contrôleur RAID va diviser de façon équitable le travail entre les trois disques qui écriront chacun 33 Mo. Cela va donc multiplier le débit par 3 (en théorie). De plus la capacité des disques s’additionne pour former un disque virtuel de plus grosse capacité.
| Note: | Précision sur le RAID 0 |
Si on crée un agrégat avec des disques possédant des caractéristiques différentes alors les caractéristiques du disque le moins performant sont utilisées. Un niveau RAID 0 doit utiliser des disques durs ayant des caractéristiques très proches (notamment en capacité et en performances). |
Lorsque l’on utilise un niveau RAID 0, nous avons vu que les données sont réparties entre les différents disques, ce qui permet d’augmenter les performances. Pour répartir les données sur l’ensemble des disques de la façon la plus optimisée, la carte RAID (ou bien le système d’exploitation dans le cas d’un RAID logiciel) doit les découper en petites unités appelées segments. Lorsque l’on met en place un niveau RAID 0, on doit spécifier la taille de ces segments (ou block size, et parfois nommé chunk size). Cette taille est un multiple de la capacité d’un secteur de disque dur (soit 512octets). Ainsi, la plus petite taille possible pour un segment est de 512octets et peut attendre plusieurs Méga-octets (parfois plus de 4Mo).
La taille sélectionnée va influencer sur les performances en lecture et en écriture. Pour le stockage de gros fichiers, il est recommandé de choisir une taille élevée (256Ko, ou plus) alors que pour les petits fichiers une petite taille est à privilégier (ex. : 512octets, 1024 octets, …). Mais il ne faut surtout pas mettre une taille de 2048 Ko pour stocker des petits fichiers de 4Ko chacun car cela occuperait énormément d’espace disque inutilement et les performances seraient désastreuses.
Pour conclure, l’avantage du RAID 0 est une augmentation des performances proportionnelle au nombre de disque et ce sans perte de capacité. Cependant ce mode ne tolère pas les pannes (si un des disques tombe en panne alors toutes les données stockées sur l’agrégat sont perdues) et induit une augmentation de la probabilité d’une panne (plus il y a de disques plus il y a de chances pour que l’un d’eux tombe en panne).
1.1.3 Le RAID 1
Un système RAID 1 duplique les données sur tous les disques. Tout comme le RAID 0, le RAID 1 nécessite un minimum de deux disques durs pour fonctionner. Les disques ont un contenu identique ce qui implique une perte d'espace proportionnelle au nombre de disques rajoutés. En effet, si on met 3 disques de 40 Go en RAID 1 alors les 40 Go écris sur le disque 1 seront copiés sur les deux autres disques. On perdra donc 2 * 40 = 80 Go d'espace disque sur la capacité totale des 3 disques (120 Go).
En cas de dysfonctionnement de l'un des disques durs (cela arrive fréquemment sur des serveurs recevant beaucoup de requêtes par secondes), le contrôleur RAID utilisera alors uniquement les disques en état de marche. Le RAID 1 apporte donc la tolérance de pannes. L'utilisation du RAID 1 est particulièrement recommandée sur des serveurs stockant des données sensibles qui doivent rester fonctionnels 24 heures sur 24.
Lorsque l'on met en place un RAID 1 avec des disques durs de capacités différentes, alors la capacité de stockage de l'ensemble en RAID 1 sera celle du disque de plus faible capacité.
Lorsqu'un accès en lecture est réalisé sur un ensemble de disques en mode RAID 1, alors tous les disques lisent chacun une partie de la données ce qui améliore grandement les performances en lecture. En revanche lors de l'écriture sur un ensemble de disques RAID 1, les performances ne sont pas améliorées. En effet, les disques vont écrire les données de façon synchronisée et ce au fur et à mesure que les données vont arriver au contrôleur. Le travail lors d'un accès en écriture n'est donc pas divisé entre les disques mais est commun à tous les disques. Le débit en écriture d'un ensemble RAID 1 est donc le même que celui d'un disque seul. C'est pourquoi dans un ensemble RAID 1, contenant 5 disques les accès en lecture seront grandement améliorés alors que les accès en écriture stagneront.
Le but du RAID 1 est d'offrir une sécurité maximale aux données stockées sur une machine. C'est pourquoi certaines cartes RAID incluent plusieurs contrôleurs RAID (un par disque) afin que malgré la perte d'un contrôleur les données soient toujours accessibles. Dans ce cas on parle de " duplexing ".
Il existe donc bien deux types de RAID 1 différents. Le « duplexing » étant méconnu et très peu utilisé, une certaine confusion s’est crée à propos du RAID 1. En effet, « mirroring » n’est pas synonyme de RAID 1.
1.1.4 Le RAID 2
Le RAID 3 apporte les avantages du RAID 0 (amélioration des performances) et du RAID 1 (tolérance de panne). Le mode RAID 3 fonctionne avec un minimum de trois disques. A l’instar du RAID 0, tous les disques sauf un qui a une tâche spéciale se divisent les opérations de lecture et d’écriture ce qui augmente les performances. L’un des disques est un disque de parité.
La tolérance de panne grâce à la parité : Avec un ensemble RAID3, lors de chaque opération d’écriture les données vont êtres réparties entres tous les disques (sauf le disque de parité) de façon équitable. Au moment où les données sont écrites, des informations indiquant sur quel disque a été stocké tel ou tel fragment des données sont enregistrées dans le disque de parité. Ce sont les informations de parité. Ainsi, si un fragment d’une donnée est défectueux ou manquant, la comparaison entre les informations de parité et les autres fragments de la donnée (qui sont stockés sur les autres disques durs) vont permettre de reconstituer le fragment. Si l’un des disques contenant des données tombe en panne, alors le disque de parité et les disques restant permettent de reconstruire les données qui étaient stockées sur le disque endommagé.
Lorsque le disque de parité tombe en panne le système continue de fonctionner en mode RAID 0 avec les disques restants qui contiennent les données. Lorsque l’on rajoute un nouveau disque de parité, les informations de parité sont reconstruites et le RAID 3 redevient actif.
Le RAID 3 apporte donc la tolérance de panne car le système supporte la perte d’un disque quel qu’il soit (données ou parité). En revanche si deux disques durs tombent en panne simultanément, les données sont perdues.
Le RAID 3 permet donc d’augmenter les performances tout en gérant la tolérance de panne. Les performances en lecture sont améliorées proportionnellement au nombre de disques (plus il y a de disques, plus les performances en lecture augmentent). Malgré une légère amélioration des performances en écriture (elles sont bridées par le disque de parité) ce système n’est pas plus intéressant que le RAID 1. En effet, sa fiabilité est moindre car seul la perte d’un seul disque est possible et car le disque de parité s’use plus vite.
1.1.5 Le RAID 4
Ce mode nécessite au moins trois disques et est très proche du RAID 3. La seule différence notable avec le RAID 3 est l’organisation des données. En effet, avec le RAID 4, la taille des segments est variable et se modifie en temps réel. Cela implique que les informations de parité doivent être mise à jour à chaque écriture afin de vérifier si la taille des segments a été modifiée. Dans un système RAID 4, le disque de parité devient donc un facteur encore plus limitant lors des opérations d’écriture. Cependant, les performances en lecture sont les même qu’avec le RAID 3 (c'est-à-dire excellentes). Le mode RAID 4 gère donc la tolérance de panne et apporte un gain en lecture mais pas en écriture. Généralement on lui préfère le RAID 5.
1.1.6 Le RAID 5
Ce mode est très proche du RAID 4 car il utilise au moins trois disques durs et car il procure une augmentation des performances et gère la perte d’un disque dur.
Par rapport au RAID 4, la configuration RAID 5 répartie la parité sur l’ensemble des disques ce qui élimine le goulot d’étranglement qu’est le disque de parité en RAID 3 et en RAID 4. Un autre avantage de répartir la parité sur chacun des disques est que les disques travaillent tous autant. Cela empêche l’usure prématurée de l’un des disques (comme c’est le cas avec le disque de parité en RAID 3 et surtout en RAID 4).
Le RAID 5 écrit donc simultanément les données sur plusieurs disques ce qui améliore les performances en lecture et en écriture. Ainsi par rapport à un disque seul, les performances d’une grappe RAID 5 utilisant n disques seront (n-1) fois plus élevées (en effet, l’un des disques doit écrire la parité, la donnée écrite est donc répartie sur les n-1 disques restants).
Tout comme pour le mode RAID 0, on doit sélectionner une taille de segment adaptée lorsque l’on met en place un niveau RAID 5.
De par ses nombreux avantages le RAID 5 est très populaire dans le monde professionnel car il apporte la tolérance de panne tout en conservant d’excellentes performances en lecture et en écriture. De plus si on utilise une interface qui supporte le branchement à chaud ou "hot plug" (SCSI ou Sata), il n’est même plus nécessaire d’éteindre le serveur. Bien entendu la mise en place d’un ensemble RAID 5 fait perdre de l’espace disque (en fait l’espace réservé à la parité qui représente la taille d’un disque). De plus la répartition de la parité sur l’ensemble des disques entraîne une remise en ordre un peu lente lorsqu’un disque dur est échangé suite à une panne.
1.1.7 Le RAID 6
Le RAID 6 met en place une double redondance des données de parité. Cela signifie que les informations de parité sont stockées en doubles exemplaires. Tout comme pour le RAID 5, les informations de parité sont réparties équitablement sur l’ensemble des disques. La double redondance des données permet la perte de deux disques sans qu’aucune donnée ne soit perdue. Le RAID 6 nécessite au moins quatre disques durs pour fonctionner. En ce qui concerne la capacité utilisable de stockage, on perd l’espace de deux disques. Donc dans un système utilisant n disques, la capacité utilisable est définie par la relation suivante : Capacité utilisable = (taille du disque le plus petit) * (nombre de disques – 2)
Les performances en lecture comme en écriture sont augmentées. Avec un nombre de disques équivalents, un ensemble RAID 6 sera moins performant qu’un ensemble RAID 5 (car un disque de plus est utilisé pour la parité).
1.1.8 Le RAID 7
Ce mode est utilisé pour avoir un niveau de sécurité ou des performances très supérieures aux autres modes RAID. Il utilise un grand nombre de disques (avec un maximum de 48 disques). On peut définir manuellement le nombre de disques dédiés au stockage de la parité et au stockage des données. Le nombre de disques que le système peut perdre est proportionnel au nombre de disques dédiés au stockage des informations de parité. Le RAID 7 fait appel à une carte microprocesseur qui calcule la parité, la gestion du disque et qui gère la surveillance des disques en temps réel. Tous les transferts de données se font en mode asynchrone ce qui augmente de 1,5 à 6 fois les performances en écriture.
Il est peu utilisé car il très coûteux en équipement et difficile à mettre en place.
1.1.9 Conclusion
Pour conclure, les modes les plus intéressants sont les modes 0, 1 et 5. Les autres modes sont peu ou pas utilisés car :
le RAID 2 est obsolète
le RAID 3 et 4 utilisent un disque de parité ce qui crée un goulot d’étranglement.
le RAID 6 est onéreux
le RAID 7 est très onéreux et difficile à mettre en place
1.2 Le RAID combiné
Les niveaux de RAID offrent un large choix d’alternatives qui permettent de choisir un rapport performance/sécurité différent. Il est aussi possible de combiner deux niveaux de RAID entre eux. On parle alors de niveaux combinés.
Certaines cartes permettent de combiner différents modes (ou niveaux) RAID en hardware mais elles sont chères mis à part les cartes RAID IDE d’entrées de gamme qui gèrent toutes le RAID 01 ou 10 selon les cas. Cependant ces dernières ne sont pas intéressantes pour réaliser des combinaisons étant donné que ces « cartes bas de gamme » n’intègrent qu’un seul contrôleur (donc pas de tolérance de panne pour le contrôleur) et que le nombre de disques utilisables est souvent limité à quatre.
Généralement la manière la moins onéreuse pour réaliser une combinaison entre deux modes RAID est :
1.d’utiliser plusieurs contrôleurs au niveau matériel pour mettre en place plusieurs ensembles en mode RAID X.
1.de créer un RAID Y au niveau logiciel à partir de tous les ensembles RAID X.
L’ensemble obtenu sera un ensemble fonctionnant en un mode RAID nommé XY. Cela signifie que l’on met d’abord en place plusieurs RAID X, puis qu’on les rassemble avec un mode RAID Y. Un RAID XY est donc différent d’un RAID YX. Voici un exemple :
Admettons que l’on dispose de 9 disques durs de 20 Go chacun, de trois cartes RAID gérant le RAID 0 et le RAID 1 ainsi que d’un 7ème disque dur (branché sur le contrôleur intégré à la carte mère). On peut réaliser deux combinaisons intéressantes :
un RAID 01
un RAID 10
1.2.1 Le RAID 01
On divise les disques en trois groupes de trois. On met trois disques sur chacune des cartes RAID et on crée trois ensembles RAID 0. Chaque ensemble RAID 0 comporte 3 disques de 20 Go chacun, ce qui donne une capacité de 60Go par ensemble.
Ensuite, on crée un ensemble RAID 1 de manière logicielle avec les trois ensembles matériel en RAID 0. On obtient donc après formatage, un seul disque d’une capacité de 60Go.
Chaque ensemble matériel en RAID 0 a des performances en lecture/écriture trois fois plus élevées environ qu’un disque seul. L’ensemble logiciel en RAID 1 propose donc des performances triples à celles d’un disque seul.
Si l’un des six disques vient à tomber en panne alors, toutes les données stockées sur l’ensemble matériel RAID 0 auquel il appartient sont perdues. On se retrouve avec seulement deux ensembles matériels en RAID 0 et donc 6 disques utilisés. Si on perd ensuite un second disque il ne reste plus qu’un ensemble RAID 0. Enfin si un dernier disque tombe en panne alors, l’ensemble subsistant et donc toutes les données seront perdus.
Dans notre exemple, grâce au RAID 01, on obtient des performances triplées par rapport à un disque seul et le système supporte la perte de deux disques durs.
1.2.2 Le RAID 10
On divise les disques en trois groupes de trois. On met trois disques sur chacune des cartes RAID et on crée trois ensembles RAID 1. Chaque ensemble RAID 1 comporte 3 disques de 20 Go chacun, ce qui donne une capacité de 20Go par ensemble. Ensuite, on crée un ensemble RAID 0 de manière logicielle avec les trois ensembles matériel en RAID 0. On obtient donc après formatage, un seul disque d’une capacité de 60Go.
Chaque ensemble matériel en RAID 1 a des performances en lecture/écriture égales à un disque seul. L’ensemble logiciel en RAID 0 propose donc des performances triples à celles d’un disque seul.
Si l’un des six disques vient à tomber en panne alors, l’ensemble RAID 1 auquel il appartient continue à fonctionner normalement. Si on perd un second disque dans le même ensemble RAID 1, l’ensemble RAID 0 logiciel n’est pas affecté non plus. Si on perd le troisième disque l’ensemble matériel RAID 1 ne fonctionne plus ce qui implique que les données stockées sur l’ensemble logiciel RAID 0 sont perdues. Ainsi en RAID 10, on perdre jusqu’à 2 disques par ensemble RAID 1 (dans notre exemple) soit un maximum de 6 disques sur les 9 disques.
Pour conclure, les performances en RAID 01 sont les mêmes qu’en RAID 10. Cependant l’ensemble RAID 10 se distingue au niveau de la tolérance de pannes car il peut perdre (dans notre exemple) jusqu’à 6 disques contre 2 uniquement pour le RAID 01. C’est pour cette raison essentielle que le RAID 10 est préféré au RAID 01.
1.2.3 Le RAID 50 et les autres combinaisons
Une autre combinaison très utilisée est le RAID 50. En effet, elle permet d’obtenir d’excellentes performances tout en gérant la tolérance de panne.
D’une manière générale toutes les combinaisons en RAID X0 sont misent en place. En effet, on implémente d’abord un mode X qui gère la tolérance de panne (1, 3, 4, 5 ou 6) puis un mode RAID 0 afin de maximiser les performances. Bien entendu, il est tout à fait possible au niveau théorique de combiner des modes qui implémentent la tolérance de panne. On peut par exemple, penser au RAID 55 ou au RAID 53. Cependant, en pratique, les constructeurs n'implémente quasiment jamais de tels modes car si l'on combine deux modes qui demande un contrôle de parité alors il faut disposer d'une carte RAID extrêmement puissante afin de pouvoir réaliser les calculs de parité sur deux niveaux.
Les combinaisons les plus utilisées sont donc le RAID
10, 30 et 50. Les combinaisons RAID 40 et 60 sont rarement rencontrées
en raison du succès commercial mitigé (voire nul de nos jours) du RAID
4 et du RAID 6.
2. Implémentation du RAID logiciel
2.1 Configuration du noyau
L'implémentation du RAID sous Linux nécessite une prise en charge du noyau. Il est nécessaire de cocher le support du RAID dans le noyau. Pour cela il faut se rendre dans le menu Device Drivers => Multi-Device support, cocher le support du RAID ainsi que les niveaux de RAID souhaités. Puis recompiler le noyau (ou les modules si le support du RAID a été coché en module).
2.2 Installation de mdadm
Vous devez également installer mdadm (partie userland (qui ne dépend pas du noyau) du RAID) qui est disponible à l'adresse suivante : http://cgi.cse.unsw.edu.au/~neilb/mdadm
Ceux-ci peuvent être installés via les systèmes de packages :
root@localhost # emerge sys-fs/mdadm
root@localhost # apt-get install mdadm
2.3 Partitions pour le RAID
Pour mettre en place du RAID logiciel, nous devons tout d’abord créer des partitions sur nos disques qui vont servir à stocker les données de nos partitions RAID.
Pour cela nous utiliserons fdisk comme pour créer des partitions sur les disques, mais au lieu de choisir le type 83 (Linux), nous devons choisir le type FD qui représente des partitions « Linux RAID Autodetect ».
2.4 Partitions de RAID
Les partitions de RAID, c'est-à-dire représentant la partition de RAID sont désignés par les fichiers spéciaux :
/dev/mdX
Où X est un numéro représentant la partition de RAID voulue. Ce numéro est compris entre 0 et 15 inclus. Nous pouvons donc avoir 16 partitions de RAID logiciels au maximum.
Attention : il n’y a pas besoin de partitionner son disque en RAID logiciel. Ils doivent être utilisés directement comme des partitions.
2.5 Configuration du RAID
Le RAID à l’aide de mdadm ne se configure pas dans un fichier, mais à l’aide de la commande qui vous permettra de créer vos disques logiques et de les administrer.
Attention : un fichier est quand même utilisé mais est créé aussi grâce à la commande mdadm.
Nous allons voir comment créer des partitions RAID de niveau 0, 1 et 5.
2.6 Mise en place d'un RAID 0
Nous allons créer une partition de RAID 0 (stripping) sur les partitions /dev/sdb1 et /dev/sdc1
root@localhost # mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/sdb1 /dev/sdc1
Les options que nous utilisons sont donc :
--create : nous voulons créer une partition de RAID
/dev/md0 : nous voulons créer notre partition de RAID sur /dev/md0
--level : nous permet de préciser le niveau de RAID que nous voulons
--raid-devices=X : permet de préciser le nombre de disques durs que nous voulons utiliser pour ce disque de RAID
/dev/sdb1 /dev/sdc1 : représentent les fichiers spéciaux vers les partitions que nous voulons utiliser. Il doit y avoir autant de fichiers spéciaux que le nombre précisé dans l’option --raid-devices
Les différentes valeurs que nous pouvons préciser pour créer notre RAID 0 à l’option --level sont les suivantes :
0
linear
raid0
stripe
Nous pouvons donc maintenant formater notre RAID :
root@localhost # mke2fs -j /dev/md0
2.7 Mise en place d'un RAID 1
Cette partie décrit la mise en place d’un RAID 1 (mirroring) sur les partitions /dev/sdb1 et /dev/sdc1 et utiliser la partition /dev/sdd1 en disque de spare.
La commande pour créer notre RAID est donc la suivante :
root@localhost # mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 --spare-devices=1 /dev/sdd1
Les nouvelles options sont donc :
--spare-devices=X : précise le nombre de disques de spare
/dev/sdd1 : tel que précédemment pour l’option --raid-devices, cela représente la partition à utiliser pour le disque de spare. Il en faut autant que précisé dans l’option --spare-devices
Les différentes options utilisables pour --level sont :
1
raid1
mirror
2.8 Mise en place d'un RAID 0+1
Nous allons mettre en place un RAID 10 (stripping + mirroring), donc mettre en place un RAID 0 sur des disques en RAID 1.
Il nous faut au moins 4 partitions disponibles pour effectuer cela. Commençons par créer nos deux disques en RAID 1 :
root@localhost # mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
root@localhost # mdadm --create /dev/md1 --level=mirror --raid-devices=2 /dev/sdd1 /dev/sde1
Créons ensuite le disque de RAID 0 en utilisant nos deux périphériques en RAID 1 :
root@localhost # mdadm --create /dev/md2 --level=raid0 --raid-devices=2 /dev/md0 /dev/md1
On peut alors formater notre disque de RAID final :
root@localhost # mke2fs -j /dev/md2
Pour accéder au RAID il nous faudra taper :
root@localhost # mount /dev/md2 /mnt/temp
2.9 Mise en place d'un RAID 5
Nous allons mettre en place un RAID 5. Pour cela il nous faut au minimum 3 disques, nous utiliserons sdb1, sdc1 et sdd1 en tant que disques de RAID et sde1 en tant que disque de spare.
Nous allons donc utiliser la commande suivante pour créer notre disque de raid :
root@localhost # mdadm --create /dev/md0 --leve=raid5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 --spare-devices=1 /dev/sde1
Nous pouvons alors formater notre disque de RAID :
root@localhost # mke2fs -j /dev/md0
Il est possible d’accéder au disque en tapant :
root@localhost # mount /dev/md0 /mnt/temp
2.10 Fichier de configuration
Une fois que nous avons créé nos disques de RAID, il nous faut les sauver dans le fichier de configuration afin d’en sauver l’existence. Pour cela nous allons utiliser la commande suivante :
root@localhost # mdadm --examine --scan >> /etc/mdadm.conf
Attention : l’emplacement de ce fichier de configuration peut être différent. Par exemple, sous Debian, il se situe à cet emplacement : /etc/mdadm/mdadm.conf
2.11 Afficher les informations d'un disque de RAID
Pour afficher l’état d’un disque RAID actif, nous devons utiliser directement la commande mdadm sans options :
root@localhost # mdadm /dev/md0
/dev/md0: 1023.88MiB raid1 2 devices, 1 spare. Use mdadm --detail for more detail.
/dev/md0: device 0 in 2 device undetected raid0 md2. Use mdadm --examine for more detail.
Nous pouvons aussi utiliser l’option --detail pour avoir un listing détaillé de l’état de notre RAID :
root@localhost # mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.01
Creation Time : Mon Oct 3 17:04:43 2005
Raid Level : raid1
Array Size : 1048448 (1023.88 MiB 1073.61 MB)
Device Size : 1048448 (1023.88 MiB 1073.61 MB)
Raid Devices : 2
Total Devices : 3
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Mon Oct 3 17:05:11 2005
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
UUID : 255a67d6:845546d7:91258d6a:41088f14
Events : 0.2
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 - spare /dev/sdd1
Note : Ces exemples sont donnés dans le cas d’un disque en RAID 1 avec 2 disques de RAID et un disque de spare.
2.12 Ajout et retrait d'un périphérique à chaud
Lors du crash d'un disque, le système remplace le disque en panne par le disque de spare. Cependant, plus aucun disque de spare n'est disponible en cas de panne d'un autre disque. Le retrait de disque à chaud va nous permettre de retirer le disque défectueux et l'ajout à chaud va nous permettre de rajouter un disque de spare au RAID.
Pour cet exemple, nous utiliserons le même disque de RAID que dans la partie précédente : RAID 1 avec deux disques de RAID et un disque de spare.
Simulons à présent la panne du disque /dev/sdc1 :
root@localhost # mdadm /dev/md0 -f /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0
Nous pouvons maintenant voir le changement dans l’état de notre disque de RAID.
Attention, nous avons coupé la sortie de la commande pour faciliter la lecture des informations modifiées :
root@localhost # mdadm --detail /dev/md0
[...]
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 49 1 active sync /dev/sdd1
2 8 33 - faulty /dev/sdc1
Nous voyons donc que le périphérique /dev/sdc1 est marqué comme faulty, c'est-à-dire défaillant, et que notre disque de spare sdd1 est alors passé en mode actif, il a bien remplacé le disque défaillant.
Nous pouvons alors le supprimer du disque de RAID et rajouter le disque sde1 comme disque de spare pour cet agrégat :
root@localhost # mdadm /dev/md0 -r /dev/sdc1
mdadm: hot removed /dev/sdc1
root@localhost # mdadm /dev/md0 -a /dev/sde1
mdadm: hot added /dev/sde1
Nous aurions aussi pu compresser ces deux commandes en une seule :
root@localhost # mdadm /dev/md0 -r /dev/sdc1 -a /dev/sde1
Attention : ce regroupement ne fonctionne que pour des commandes sur le même disque de RAID.
3. Gérer les périphériques RAID
3.1 Gestion des disques de RAID
Nous allons maintenant voir comment démarrer, arrêter, marquer comme lecture seule ou lecture-écriture un disque de RAID. Tout cela se passe dans le mode misc de mdadm.
| Option longue | Option courte | Description |
| --stop | -S | Permet d’arrêter un périphérique de RAID, toutes les ressources utilisées sont libérées |
| --run | -R | Permet de démarrer un périphérique de RAID non complet (manque de disques physiques, pas entièrement construit, ...) |
| --readonly | -o | Marque le périphérique de RAID comme étant en lecture seule |
| --readwrite | -w | Marque le périphérique de RAID comme étant en lecture écriture |
Exemples :
Arrêt du périphérique /dev/md0 :
root@localhost # mdadm --misc --stop /dev/md0
Démarrage du périphérique /dev/md0
root@localhost # mdadm --misc --R /dev/md0
mdadm: array /dev/md0 started.
Passage du périphérique /dev/md0 en lecture seule :
root@localhost # mdadm --misc --readonly /dev/md0
3.2 Monitorer ses périphériques RAID
mdadm dispose d’un mode lui permettant de surveiller les périphériques de RAID créés et d’envoyer des alertes lorsqu’un évènement se produit. Il peut aussi exécuter un programme à chaque alerte.
Pour cela, il faut lancer mdadm avec l’option -F ou --monitor pour lui dire d’utiliser ce mode et l’option --scan pour qu’il cherche tous les périphériques de RAID actifs. Les autres options utiles disponibles sont :
| Option longue | Option courte | Description |
| --pid-file fichier.pid | -i fichier.pid | Fichier contenant le PID du daemon |
| -m mail@domain.fr | --mail mail@domain.fr | Adresse mail à qui envoyer les alertes |
| --program binaire --alert binaire | -p binaire | Programme à lancer lorsqu’il y a des alertes |
| --daemonize | -f | Passer en mode daemon |
| --delay 30 | -d 30 | Temps entre deux vérifications (en secondes) |
Exemple :
Nous voulons vérifier l’état de nos disques de RAID toutes les 30 secondes et si un évènement survient, il faut envoyer les alertes à l’adresse mail : labo-linux@supinfo.com. Le fichier qui contiendra le PID du daemon sera : /var/run/mdadm.pid
root@localhost # mdadm -F --scan -f --delay 30 --pid-file /var/run/mdadm.pid -m labo-linux@supinfo.com
Nous aurions pu faire la même chose, mais juste pour le périphérique /dev/md0 avec la commande suivante :
root@localhost # mdadm -F -f --delay 30 --pid-file /var/run/mdadm.pid -m labo-linux@supinfo.com /dev/md0
4. Mise en place de LVM
4.1 Présentation
Dans un environnement de partitionnement classique, vous ne pouvez avoir que 4 partitions primaires par disque dur ou 3 partitions primaires et une partition étendue contenant des partitions logiques, ce qui est assez restrictif.
C'est pourquoi IBM a mis au point le LVM, ou Logical Volume Manager. Grâce à cet outil, vous allez pouvoir, entre autres, créer autant de partitions que vous le désirez, les redimensionner sans formatage et les étaler sur plusieurs disques. Mais LVM dispose également de nombreuses autres possibilités.
Ses objectifs : éviter l’arrêt et le redémarrage de la machine et permettre à l'utilisateur de s'affranchir totalement des contraintes physiques imposées par les disques durs.
4.2 Composition de LVM
Chaque disque dur ou partition va être transformé en volume physique. Pour cela LVM va le diviser en tranches de 4Mo (par convention), appelées « physical extents ». Il écrase par la même occasion toutes les données existantes sur la partition ou le disque.
Chaque volume physique va être ensuite inséré dans un groupe de volumes, lui même découpé en « logical extents » (LE) de même taille que les « physical extents » (PE), soit 4Mo. Alors qu'avec LVM 1, les « logical extents » créés par répartition ne peuvent pas être étendus au-delà des « physical extents » initiaux, LVM 2 permet l’extension des « logical extents » répartis en concaténant d'autres extents.
LVM va ensuite créer des pointeurs entre un « physical extent » et un « logical extent ». Cette correspondance peut être linéaire ( une plage de « physical extents » attribuée à un volume physique dans l'ordre) ou répartie. Cette dernière permet de distribuer des morceaux d'extents logiques sur plusieurs volumes physiques améliorant ainsi, dans certains cas, les performances du volume logique.
Puis, chaque groupe de volumes va être divisé en volumes logiques (assimilable à des partitions classiques) dans lesquels nous créerons un système de fichiers ou une partition de swap. Grâce à l'utilisation des « logical extents » et des « physical extents », ces partitions pourront être redimensionnées, déplacées, supprimées, ajoutées sans redémarrage et sans perte de données.
De plus, LVM permet d'utiliser un nommage plus compréhensible que les noms des disques physiques.
L'utilisation du LVM entraîne une diminution de l'espace disque causée par l'écriture des données nécessaires au système pour utiliser le LVM : les métadatas.
la Physical Volume Reserved Area contient les informations sur le volume physique
la Volume Group Reserve Area contient les informations liées au groupe de volumes et aux volumes logiques contenus dans le groupe de volumes
la Bad Block Relocation Area contient des informations nécessaires à la réparation des blocs défectueux
LVM dispose également d'un autre outil : les snapshots ou instantanés. Un instantané permet de copier à l'identique et à un instant donné un volume logique dans un nouveau périphérique.
4.3 Installation
Vous devez avoir compilé le driver LVM dans votre noyau (en dur ou en module). Celui-ci se situe dans le menu de compilation "Multi-device support". Ou dans le fichier de configuration:
# Multi-device support (RAID and LVM)
CONFIG_BLK_DEV_LVM=m
L'installation de LVM nécessite le mappeur de périphériques.
luser@localhost # cvs -d :pserver:cvs@sources.redhat.com:/cvs/dm login cvs
Le mot de passe est « cvs ». Tapez ensuite la commande suivante pour récupérer le code source :
# cvs -d :pserver:cvs@sources.redhat.com:/cvs/dm checkout device-mapper
Cela crée un nouveau répertoire device-mapper dans le répertoire courant et contenant la dernière version du code du mappeur de périphériques.
Pour ensuite récupérer le code source de LVM 2 dans le répertoire lvm2 tapez la commande ci-dessous:
# cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm2 checkout LVM2
Ou bien celle-ci si vous désirez LVM 1:
root@localhost # cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm checkout LVM
4.4 Démarrage et arrêt de LVM
Le démarrage de LVM se fait via deux commandes :
root@localhost # vgscan
root@localhost # vgchange -a y
Et l'arrêt une seule :
root@localhost # vgchange -a n
Voici un exemple de fichier de démarrage LVM pour Debian. Notez que l'installation du paquet lvm2 ou lvm-common (lvm1) crée automatiquement un script de démarrage pour lvm situé dans /etc/init.d/lvm:
#!/bin/sh
case "$1" in
start)
/sbin/vgscan
/sbin/vgchange -ay
;;
stop)
/sbin/vgchange -an
;;
restart|force-reload)
;;
esac
exit 0
Même exemple mais pour une Red Hat:
if [ -e /proc/lvm -a -x /sbin/vgchange -a -f /etc/lvmtab ]; then
action $"Logical Volume Management" /sbin/vgscan &&
/sbin/vgchange -a y
fi
5. LVM en détail
5.1 Initialiser un volume physique
Avant de pouvoir utiliser un disque ou une partition comme volume physique, il faut l'initialiser avec la commande pvcreate :
root@localhost # pvcreate /dev/hda
Cela crée un descripteur de groupe de volumes au début du disque (cas donné) ou de la partition.
Si LVM ne peut pas initialiser un disque qui possède déjà une table de partition, vous pouvez taper les commandes suivantes qui détruiront alors la table des partitions du disque:
root@localhost # dd if=/dev/zero of=/dev/hda bs=1k count=1
root@localhost # blockdev --rereadpt /dev/hda
5.2 Ajouter un volume physique à un groupe de volumes
Le volume physique à ajouter doit d'abord être initialisé puis ajouté au groupe de volumes:
root@localhost # vgextend nom_du_groupe_de_volumes /dev/hda1
5.3 Supprimer un volume physique à un groupe de volumes
En premier lieu, vérifiez que le volume physique n'est utilisé par aucun volume logique grâce à la commande:
root@localhost # pvdisplay /dev/hda1
--- Physical volume ---
PV Name /dev/hda1
VG Name kevin
PV Size 3.9 GB / NOT usable 4 MB [LVM: 244 KB]
PV# 1
PV Status available
Allocatable yes (but full)
Cur LV 1
PE Size (KByte) 4096
Total PE 998
Free PE 0
Allocated PE 998
Si le volume physique est encore en cours d’utilisation, il faut migrer les données vers un autre volume physique:
root@localhost # pvmove /dev/hda1
pvmove -- moving physical extents in active volume group "vg"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- 998 extents of physical volume "/dev/hda1" successfully moved
Puis, le supprimer du groupe de volumes:
root@localhost # vgreduce nom_du_groupe_de_volumes /dev/hda1
5.4 Créer un groupe de volumes
Pour cela, utilisez la commande vgcreate :
root@localhost # vgcreate nom_du_groupe_de_volumes /dev/hda1 /dev/hda2
Vous pouvez aussi choisir la taille des extents avec l'option « -s » et préciser des limites sur le nombre de volumes physiques et logiques que le volume peut contenir.
Tapez ensuite les commandes suivantes pour activer le groupe de volumes:
root@localhost # vgchange –a n && vgchange –a y nom_du_groupe_de_volumes
5.5 Détruire un groupe de volumes
Pour enlever un groupe de volumes, assurez vous qu'aucun volume logique n'est présent :
Dans un premier temps désactivez le :
root@localhost # vgchange -a n nom_du_groupe_de_volumes
Puis supprimez le grâce à cette commande :
root@localhost # vgremove nom_du_groupe_de_volumes
5.6 Créer un volume logique
Pour créer un volume physique «lv» linéaire de T Go et son périphérique associé « /dev/vg/lv » :
root@localhost # lvcreate -L T -n lv vg
Si vous désirez allouer le volume logique à un volume physique précis il faut spécifier son nom à la fin de la commande lvcreate.
root@localhost # lvcreate -L T -n lv vg /dev/hda
Nous allons ensuite créer un volume logique de X Logical Extents avec Y blocs répartis de Z Ko :
root@localhost # lvcreate -i Y -I Z -l X -n lv vg
Nous voulons un volume logique qui utilise toute la place disponible dans le groupe de volumes. Pour cela, nous allons lancer la commande lvcreate avec un nombre de Physical Extents égal au total des Physical Extents retourné par la commande pvdisplay.
root@localhost # lvcreate -l total_des_pe vg -n perso
Cela créera un volume logique appelé « perso » qui remplira la totalité du groupe de volumes vg.
5.7 Détruire un volume logique
Nous démontons tout d'abord le volume logique :
root@localhost # umount /dev/vg/lv
root@localhost # lvremove /dev/vg/lv
lvremove -- do you really want to remove "/dev/vg/lv"? [y/n]: y
lvremove -- doing automatic backup of volume group "vg"
lvremove -- logical volume "/dev/vg/lv" successfully removed
5.8 Etendre un volume logique
Nous utiliserons pour cette opération la commande lvextend à laquelle nous allons renseigner la quantité d'espace à ajouter ou la taille finale du volume logique:
root@localhost # lvextend -L 15G /dev/vg/lv
lvextend -- extending logical volume "/dev/vg/lv" to 15 GB
lvextend -- doing automatic backup of volume group "vg"
lvextend -- logical volume "/dev/vg/lv" successfully extended
root@localhost # lvextend -L +5G /dev/vg/lv
lvextend -- extending logical volume "/dev/vg/lv" to 15 GB
lvextend -- doing automatic backup of volume group "vg"
lvextend -- logical volume "/dev/vg/lv" successfully extended
Une fois le volume logique étendu, il est nécessaire d'augmenter la taille du système de fichier à la taille correspondante.
Pour
ext2 et LVM 1, la commande e2fsdam effectue pour vous le lvextend et le
resize2fs, aussi bien pour un agrandissement que pour une réduction.
6. Mise en place du LVM
On dispose de trois disques IDE /dev/hda, /dev/hdb et /dev/hdc.
Nous allons dans un premier temps préparer les disques avec pvcreate et créer une zone avec les descripteurs de groupes de volumes au début des disques. Ces commandes effacent totalement les données présentes sur les disques durs :
root@localhost # pvcreate /dev/hda
root@localhost # pvcreate /dev/hdb
root@localhost # pvcreate /dev/hdc
Puis l'on créé un groupe de volumes :
root@localhost # vgcreate nom_du_groupe_de_volumes /dev/hda /dev/hdb /dev/hdc
Il faut ensuite créer un volume logique, qui sera ici de 10Go :
root@localhost # lvcreate -L 10G -n nom_du_volume_logique nom_du_groupe_de_volumes
lvcreate -- doing automatic backup of "nom_du_groupe_de_volumes"
lvcreate -- logical volume "/dev/nom_du_groupe_de_volumes/nom_du_volume_logique" successfully created
Puis un système de fichiers, ici ext2, dans le volume logique avec :
root@localhost # mke2fs /dev/nom_groupe_de_volumes/nom_du_volume_logique
6.1 Ajouter un disque
Nous avons une machine avec 3 disques durs :
root@localhost # pvscan
pvscan -- ACTIVE PV "/dev/hda" of VG "vg1" [2 GB / 0 free]
pvscan -- ACTIVE PV "/dev/hdb1" of VG "vg1" [1 GB / 0 free]
pvscan -- ACTIVE PV "/dev/hdb2" of VG "vg2" [1 GB / 0 free]
pvscan -- ACTIVE PV "/dev/hdc" of VG "vg2" [2 GB / 0 free]
pvscan -- total: 4 [6 GB] / in use: 4 [6 GB] / in no VG: 0 [0]
root@localhost # df -h
Filesystem Total Used Available Use% Mounted on
/dev/vg1/lv1 1G 1G 0GB 100% /mnt/vg1lv1
/dev/vg1/lv2 2G 2GB 0GB 100% /mnt/vgl1v2
/dev/vg2/lv1 1G 1GB 0GB 100% /mnt/vg2lv1
/dev/vg2/lv2 2G 2GB 0GB 100% /mnt/vg2lv2
Un nouveau disque est ajouté au système : /dev/hdf. Il doit être partagé entre les deux groupes et est donc partitionné en deux volumes physiques /dev/hdd1 et /dev/hdd2 de 2 Go chacun qu'il faut ensuite initialiser :
root@localhost # pvcreate /dev/hdd1 pvcreate -- physical volume "/dev/hdd1" successfully created root@localhost # pvcreate /dev/hdd2 pvcreate -- physical volume "/dev/hdd2" successfully createdLes volumes physiques sont ensuite ajoutés aux groupes de volumes :
root@localhost # vgextend vg1 /dev/hdd1
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "vg1"
vgextend -- volume group "vg1" successfully extended
root@localhost # vgextend vg2 /dev/hdd2
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "vg2"
vgextend -- volume group "vg2" successfully extended
root@localhost # pvscan
pvscan -- ACTIVE PV "/dev/hda" of VG "vg1" [2 GB / 0 free]
pvscan -- ACTIVE PV "/dev/hdb1" of VG "vg1" [1 GB / 0 free]
pvscan -- ACTIVE PV "/dev/hdb2" of VG "vg2" [1 GB / 0 free]
pvscan -- ACTIVE PV "/dev/hdc" of VG "vg2" [2 GB / 0 free]
pvscan -- ACTIVE PV "/dev/hdd1" of VG "vg1" [2 GB / 2 GB free]
pvscan -- ACTIVE PV "/dev/hdd2" of VG "vg2" [2 GB / 2 GB free]
pvscan -- total: 4 [6 GB] / in use: 4 [6 GB] / in no VG: 0 [0]
Nous allons ensuite étendre les systèmes de fichiers pour utiliser l'espace disque supplémentaire.
Nous démontons les deux systèmes de fichiers avant le dimensionnement :
root@localhost # umount /mnt/vg1lv1
root@localhost # umount /mnt/vg2lv2
Puis nous utilisons la commande e2fsadm pour redimensionner le volume logique et le système de fichiers :
root@localhost # e2fsadm /dev/vg1/lv1 -L +1G
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
lvextend -- extending logical volume "/dev/vg1/lv1" to 2 GB
lvextend -- doing automatic backup of volume group "vg1"
lvextend -- logical volume "/dev/vg1/lv1" successfully extended
e2fsadm -- ext2fs in logical volume "/dev/vg1/lv1" successfully extended to 2 GB
root@localhost # e2fsadm /dev/vg2/lv2 -L +1G
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
lvextend -- extending logical volume "/dev/vg2/lv2" to 3 GB
lvextend -- doing automatic backup of volume group "vg2"
lvextend -- logical volume "/dev/vg2/lv2" successfully extended
e2fsadm -- ext2fs in logical volume "/dev/vg2/lv2" successfully extended to 3 GB
Enfin nous pouvons remonter les systèmes de fichiers :
root@localhost # mount /dev/vg1/lv1
root@localhost # mount /dev/vg2/lv2
root@localhost # df -h
Filesystem Total Used Available Use% Mounted on
/dev/vg1/lv1 2G 1G 1GB 50% /mnt/vg1lv1
/dev/vg1/lv2 2G 2GB 0GB 100% /mnt/vgl1v2
/dev/vg2/lv1 1G 1GB 0GB 100% /mnt/vg2lv1
/dev/vg2/lv2 3G 2GB 1GB 66% /mnt/vg2lv2
6.2 Retirer un disque
Vous avez un vieux disque /dev/hdc que vous voulez le retirer mais des données y sont encore stockées.
Vérifiez que vous avez assez d'extents libres sur les autres disques du groupe de volumes puis migrer les anciens extents vers les disques restants :
root@localhost # pvmove -V /dev/hdc
pvmove -- moving physical extents in active volume group "vg2"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- 500 extents of physical volume "/dev/hdc" successfully moved
pvmove est une commande très lente. L'option -v vous renseigne sur son état d'avancement.
Nous pouvons désormais supprimer l'ancien disque du groupe de volumes puis le retirer de la machine.
root@localhost # vgreduce dev /dev/hdc
vgreduce -- doing automatic backup of volume group "vg2"
vgreduce -- volume group "dvg2" successfully reduced by physical volume:
vgreduce -- /dev/hdc
N'oubliez pas de toujours démonter votre volume :
root@localhost # e2fsadm -L +5G /dev/vg/lv
5.8.1 ext2/ext3
root@localhost # umount /dev/vg/lv
root@localhost # resize2fs /dev/vg/lv
root@localhost # mount /dev/vg/lv
5.8.2 reiserfs
root@localhost # umount /dev/vg/lv
root@localhost # resize_reiserfs /dev/vg/lv
root@localhost # mount -treiserfs /dev/vg/lv
5.8.3 xfs
Les systèmes de fichiers XFS doivent être montés pour être redimensionnés et le point de montage doit être donné à la place du nom de périphérique.
root@localhost # xfs_growfs /point_de_montage
5.8.4 jfs
Comme XFS, le système de fichiers JFS doit être monté pour être redimensionné et le point de montage doit être spécifié plutôt que le nom du périphérique.
root@localhost # mount -o remount,resize /point_de_montage
5.9 Réduire un volume logique
Lors de la réduction de volumes logiques, il faut réduire la taille du système de fichiers et donc des données y étant avant de le réduire lui-même ou une perte de données risque de se produire.
Il n'y a actuellement aucun moyen de réduire un système de fichiers XFS ou JFS.
5.9.1 ext2/ext3
En utilisant e2fsadm avec LVM 1 :
root@localhost # umount /dev/vg/lv
root@localhost # e2fsadm -L -5G /dev/vg/lv
root@localhost # mount /dev/vg/lv
Avec LVM 2 vous devez connaître la nouvelle taille T du volume en blocs :
root@localhost # umount /dev/vg/lv
root@localhost # resize2fs /dev/vg/lv T
root@localhost # lvreduce -L -5G /dev/vg/lv
root@localhost # mount /dev/vg/lv
5.9.2 reiserfs
root@localhost # umount /dev/vg/lv
root@localhost # resize_reiserfs -s -5G /dev/vg/lv
root@localhost # lvreduce -L -5G /dev/vg/lv
root@localhost # mount -t reiserfs /dev/vg/lv