<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ge</id>
	<title>Lea Linux - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ge"/>
	<link rel="alternate" type="text/html" href="https://lea-linux.org/documentations/Sp%C3%A9cial:Contributions/Ge"/>
	<updated>2026-04-08T23:02:51Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Trucs:Surveiller_les_messages_de_syslog&amp;diff=14995</id>
		<title>Trucs:Surveiller les messages de syslog</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Trucs:Surveiller_les_messages_de_syslog&amp;diff=14995"/>
		<updated>2007-10-15T05:50:59Z</updated>

		<summary type="html">&lt;p&gt;Ge : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Fred&amp;lt;tux.le.pengouin@free.fr&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour surveiller en permanence les messages de syslog, j&#039;ouvre &amp;lt;br /&amp;gt;une fenêtre terminal et dedans je tape :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;tail -f /var/log/messages&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
comme ça dès qu&#039;un message arrive il s&#039;affiche dans ce terminal !&lt;br /&gt;
&lt;br /&gt;
on peut même taper : &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;tail -f /var/log/messages &amp;gt; /dev/tty11 &amp;amp;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
et les messages s&#039;affiche sur la console 11 (accessible par CTRL+ATL+F11 depuis X, ALT+F11 depuis la console)&lt;br /&gt;
[[Catégorie:Trucs_Noyau]]&lt;/div&gt;</summary>
		<author><name>Ge</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=LVM&amp;diff=14993</id>
		<title>LVM</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=LVM&amp;diff=14993"/>
		<updated>2007-10-14T04:53:16Z</updated>

		<summary type="html">&lt;p&gt;Ge : /* Les composants du LVM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Administration système]]&lt;br /&gt;
= Le LVM (Logical Volume Manager) =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Le LVM (Logical Volume Manager)&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par [mailto:anne@lea-linux.org Anne]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un des aspects cruciaux dans l&#039;administration d&#039;un serveur ou d&#039;une machine de bureau est la gestion de l&#039;espace disque. Quoi de plus énervant que de voir l&#039;installation d&#039;une application échouer par manque d&#039;espace, ou un serveur rendu indisponible parce que le système de fichiers /var était plein du fait des fichiers de log ?&lt;br /&gt;
&lt;br /&gt;
Un outil apporte une solution satisfaisante et efficace : le LVM (Logical Volume Manager).&lt;br /&gt;
&lt;br /&gt;
= De l&#039;utilité du LVM =&lt;br /&gt;
&lt;br /&gt;
Le LVM ou Logical Volume Manager, est une technique créée à la base par IBM consistant à fournir la possibilité de modifier la taille des partitions sur les disques durs sans avoir besoin de tout reformater, voire de créer des partitions s&#039;étalant sur plusieurs disques. L&#039;objectif est ainsi d&#039;éviter arrêt et redémarrage d&#039;une machine en production. Cette technique est disponible sur linux depuis la version 2.4 du noyau (très exactement 2.3.47).&lt;br /&gt;
&lt;br /&gt;
Dans un partitionnement de type classique, à l&#039;aide des commandes fdisk, vous ne pouvez avoir que 4 partitions primaires pour chaque disque (en IDE) ou éventuellement 3 partitions primaires et une partition étendue qui contiendra des partitions logiques. L&#039;inconvénient de ce type de partitionnement est que lorsque vous souhaitez réduire la taille d&#039;une partition ou l&#039;augmenter, vous devez notamment disposer d&#039;outils spécifiques comme GNU-parted. De plus, le partitionnement ne se fera que disque par disque. Imaginez alors que vous souhaitiez ajouter un deuxième disque sur votre machine ou agrandir la taille de votre système de fichiers /home...&lt;br /&gt;
&lt;br /&gt;
Vous ne pourrez pas profiter de l&#039;espace disponible sur ce deuxième disque pour agrandir /home, à moins d&#039;y accrocher un nouveau système de fichiers. Agaçant non ?&lt;br /&gt;
&lt;br /&gt;
Eh bien, LVM est là pour vous simplifier la vie.&lt;br /&gt;
&lt;br /&gt;
= Les composants du LVM =&lt;br /&gt;
&lt;br /&gt;
Le principe de fonctionnement de LVM est relativement simple. Il s&#039;agit en fait pour effectuer ce type de partitionnement, de s&#039;affranchir complètement des limites physiques du ou des disques disponibles. Les étapes ci-dessous en décrivent le fonctionnement. Le LVM s&#039;accompagne aussi d&#039;un certain nombre de termes techniques énoncés également ci-dessous.&lt;br /&gt;
&lt;br /&gt;
* Chaque disque dur ou partition va être transformé en &#039;&#039;&#039;volume physique&#039;&#039;&#039;. Cette opération consiste à découper le disque en tranches, appelées Physical Extents (PE). Par défaut (et convention), 1 PE = 4Mo.&lt;br /&gt;
* Chaque volume physique va être inséré dans un &#039;&#039;&#039;groupe de volumes&#039;&#039;&#039;. Celui-ci peut contenir un ou plusieurs volumes physiques (donc disques ou partitions). Un groupe de volume est un espace logique découpé en Logical Extents (LE) de même tailles que les physical extents, soit 4 Mo par défaut. &lt;br /&gt;
Le système va ensuite établir des &#039;&#039;&#039;pointeurs&#039;&#039;&#039; entre un physical extent et un logical extent comme indiqué sur le schéma ci-dessous. (schéma 1)&lt;br /&gt;
&#039;&#039;&#039;Schéma 1 : système des pointeurs LVM&#039;&#039;&#039;&lt;br /&gt;
[[Image:lvm-lvm4.jpg]]&lt;br /&gt;
* La dernière étape va consister à découper le groupe de volumes en partitions appelées &#039;&#039;&#039;volumes logiques&#039;&#039;&#039; dans lesquelles nous pourrons au choix, créer un système de fichiers, une partition de swap. Ces partitions pourront être redimensionnées et/ou déplacées.&lt;br /&gt;
&lt;br /&gt;
Voici de manière schématique à quoi pourrait ressembler votre(vos) disque(s) après ce traitement (Schéma 2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schéma 2 : impact de LVM sur les disques durs&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:lvm-lvm3.jpg|thumb|400px|Schéma d&#039;un groupe de volumes sur deux disques]]&lt;br /&gt;
&lt;br /&gt;
Dans ce cas de figure, les deux disques hda et hdb ont été transformés en volumes physiques. Puis ils ont été insérés tous les deux dans un groupe de volumes appelé vg01. A partir de ce moment-là, il n&#039;est plus nécessaire de tenir compte des limites physiques des disques, en effet, nous n&#039;avons plus qu&#039;un espace, et un seul, de 36 Go (regroupant donc nos deux unités de disques hda et hdb). Le groupe de volumes a ensuite été découpé en 3 volumes logiques, nommées lvol01, lvol02, lvol03. On remarquera que lvol02 est composé de logical extents pointant sur des physical extents appartenant à hda et hdb. La dernière étape consistera à créer un système de fichiers dans chacun de ces volumes logiques.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Remarques&amp;lt;/u&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* la taille que l&#039;on attribuera à un volume logique s&#039;exprime en nombre de logical extents. Ceux-ci sont indivisibles. Si sa taille est de 4 Mo et que je souhaite un volume logique de 14 Mo, le système attribuera 4 logical extents au volume logique, soit 16 Mo (arrondi au nombre de LE supérieur) &lt;br /&gt;
* la taille d&#039;un PE, et donc d&#039;un LE, est personnalisable lors de la création d&#039;un volume physique. &lt;br /&gt;
* les noms des groupes de volumes et volumes logiques sont personnalisables à leur création&lt;br /&gt;
* &#039;&#039;&#039;Attention : la création d&#039;un volume physique écrase toutes les données existantes sur la partition et/ou le disque !!&#039;&#039;&#039; &lt;br /&gt;
* L&#039;utilisation du LVM pour partitionner un disque entraine une perte d&#039;espace liée à l&#039;écriture des données nécessaires au système pour gérer le LVM (métadatas) : &lt;br /&gt;
** la PVRA : Physical Volume Reserved Area. Comme son nom l&#039;indique, elle contient les informations LVM spécifiques au volume physique. &lt;br /&gt;
** la VGRA : Volume Group Reserve Area. Elle contient les informations liées au groupe de volumes mais aussi aux volumes logiques contenus dans le groupe de volumes &lt;br /&gt;
** la BBRA : Bad Block Relocation Area : cette zone contient des informations liées au mécanisme de ré-allocation des blocs défectueux.&lt;br /&gt;
&lt;br /&gt;
= Utiliser le LVM : ce dont il faut disposer =&lt;br /&gt;
&lt;br /&gt;
Pour être utilisé, le LVM nécessite de disposer du driver qui permet de générer la couche assurant le mapping (la carte) entre périphérique physique et vue logique, des utilitaires pour manipuler ce mapping et des périphériques physiques.&lt;br /&gt;
&lt;br /&gt;
== Kernel et utilitaires ==&lt;br /&gt;
&lt;br /&gt;
Le LVM est fourni lors de l&#039;installation, sauf sur de très vieux systémes (noyau 2.2). Il faut quand même savoir que l&#039;implémentation du LVM se fait à deux niveaux :&lt;br /&gt;
&lt;br /&gt;
* le kernel,&lt;br /&gt;
* les commandes nécessaires pour gérer les structures LVM. &lt;br /&gt;
&lt;br /&gt;
Au niveau du kernel lors de l&#039;installation ou de la recompilation du noyau, vous devez avoir intégré ou mis en module le driver LVM. Celui-ci se situe dans le menu de compilation &amp;quot;Multi-device support&amp;quot;. On peut le vérifier de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;root@pingu# grep -i lvm /boot/config&amp;lt;br /&amp;gt; # Multi-device support (RAID and LVM)&amp;lt;br /&amp;gt; CONFIG_BLK_DEV_LVM=m&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez également disposer des commandes nécessaires à l&#039;administration du LVM. Elles sont incluses dans le package lvm. Pour vérifier qu&#039;il est installé (dans le cas d&#039;une Mandriva) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;root@pingu# rpm -qa|grep lvm&amp;lt;br /&amp;gt; lvm-1.0.3-9&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Toutes les commandes passées en revue dans la suite de cet article font partie de ce paquetage.&lt;br /&gt;
&lt;br /&gt;
== Sur quels périphériques et systèmes de fichiers puis-je faire du LVM ? ==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir utiliser le LVM, vous devez disposer soit d&#039;un disque vierge (rappel : la création d&#039;un volume physique entrainera la perte de données existantes) et/ou d&#039;une partition primaire vierge (moins utile mais faisable).&lt;br /&gt;
&lt;br /&gt;
Toutefois attention : vous ne pourrez pas mélanger partitionnement classique et LVM au sein d&#039;un groupe de volumes.&lt;br /&gt;
&lt;br /&gt;
Il est possible d&#039;utiliser le LVM pour tous vos systèmes de fichiers, exception faite de « /boot », qui pose quelques problèmes. Par contre il est tout à fait possible de l&#039;inclure sur un ou plusieurs volumes logiques. D&#039;ailleurs la plupart des distributions proposent aujourd&#039;hui cette option dès l&#039;installation. La seule contrainte est de prévoir le chargement du module LVM dès le démarrage. Pour ce faire, on créera une image initrd contenant le module LVM à l&#039;aide de la commande lvmcreate_initrd. On modifiera également en conséquence le fichier /etc/lilo.conf.&lt;br /&gt;
&lt;br /&gt;
= Configuration du LVM =&lt;br /&gt;
&lt;br /&gt;
Passons maintenant à la pratique.&lt;br /&gt;
&lt;br /&gt;
Pour la mise en application, nous allons reprendre les 3 étapes énoncées ci-dessus. A chaque fois, je présenterai la commande correspondante à la création de l&#039;élément et une commande de recueil d&#039;informations pour vérifier que l&#039;opération a été correctement réalisée.&lt;br /&gt;
&lt;br /&gt;
== L&#039;arborescence du LVM ==&lt;br /&gt;
&lt;br /&gt;
À chaque élément du LVM correspond un fichier spécial dans /dev. Le volume physique est représenté par le fichier spécial du disque dur ou de la partition correspondant. Le groupe de volume dispose d&#039;un répertoire portant son nom dans lequel on trouvera le fichier spécial group.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# ls -l /dev/datas/group&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt; crw-r----- 1 root root 109, 1 jan 1 1970 group&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans ce répertoire, on trouvera également un fichier spécial par volume logique créé à l&#039;intérieur de ce groupe de volumes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# tree /dev/users /dev/public&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt; /dev/users&amp;lt;br /&amp;gt; |--datas&amp;lt;br /&amp;gt; |--group&amp;lt;br /&amp;gt; `--private&amp;lt;br /&amp;gt; /dev/public&amp;lt;br /&amp;gt; |--ftp&amp;lt;br /&amp;gt; |--group&amp;lt;br /&amp;gt; `--web&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Outre les fichiers spéciaux, on trouve également le fichier /etc/lvmtab et /etc/lvmtab.d. Ils contiennent la base de données manipulée par les commandes lvm.&lt;br /&gt;
&lt;br /&gt;
== Création d&#039;un volume physique ==&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à transformer notre disque en volume physique. L&#039;opération s&#039;effectue en trois temps :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Préparation de l&#039;espace&#039;&#039;&#039; à utiliser avec le LVM : cette étape s&#039;effectue grâce à la commande fdisk. Vous allez devoir attribuer le type lvm à votre disque ou votre partition : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;root@pingu# fdisk /dev/hdb&lt;br /&gt;
Commande (m pour aide) : p&lt;br /&gt;
Disk /dev/hdb: 13.5 GB, 13578485760 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1650 cylinders&lt;br /&gt;
Units = cylindres of 16065 * 512 = 8225280 bytes&lt;br /&gt;
 Périphérique Amorce    Début       Fin    Blocs   Id  Système&lt;br /&gt;
 /dev/hdb1            1       730   5863693+  8e  Linux LVM&lt;br /&gt;
 /dev/hdb2          731      1339   4891792+  8e  Linux LVM&lt;br /&gt;
 /dev/hdb3         1340      1650   2498107+  8e  Linux LVM&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Ensuite, il est nécessaire de lancer &#039;&#039;&#039;la commande vgscan&#039;&#039;&#039; si vous utilisez LVM pour la première fois sur le disque dur ou la partition. La commande va créer notamment le fichier /etc/lvmtab et le répertoire /etc/lvmtab.d. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# vgscan&lt;br /&gt;
vgscan -- reading all physical volumes (this may take a while...)&lt;br /&gt;
vgscan -- &amp;quot;/etc/lvmtab&amp;quot; and &amp;quot;/etc/lvmtab.d&amp;quot; successfully created&lt;br /&gt;
vgscan -- WARNING: This program does not do a VGDA backup of your volume group&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Création du volume physique : la commande est pvcreate (physical volume creation). &lt;br /&gt;
pvcreate [-f] &amp;lt;/dev/hdxx&amp;gt; où&amp;lt;br /&amp;gt; -f : force la création du volume. A utiliser si le disque avait déjà été transformé en volume physique.&amp;lt;br /&amp;gt; /dev/hdxx : fichier spécial du disque ou de la partition à transformer en volume physique&lt;br /&gt;
&amp;lt;u&amp;gt;Exemple&amp;lt;/u&amp;gt; : création d&#039;un volume physique à partir de hdb1&lt;br /&gt;
&amp;lt;code&amp;gt;# pvcreate /dev/hdb1&lt;br /&gt;
pvcreate -- physical volume &amp;quot;/dev/hdb1&amp;quot; successfully created&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Création d&#039;un groupe de volume ==&lt;br /&gt;
&lt;br /&gt;
Une fois le volume physique créé, il faut alors insérer le ou les volumes physiques ainsi créés dans un groupe de volumes. On utilise la commande vgcreate :&lt;br /&gt;
&lt;br /&gt;
vgcreate &amp;lt;nom_du_volume&amp;gt;&amp;lt;/dev/hdxx&amp;gt; où&amp;lt;br /&amp;gt; &amp;lt;nom_du_volume&amp;gt; : nom du groupe de volume - l&#039;opération crée alors le répertoire /dev/nom_du_volume contenant le fichier spécial group qui représente ce groupe de volumes.&amp;lt;br /&amp;gt; &amp;lt;/dev/hdxx&amp;gt; : fichier spécial du volume physique&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Exemple&amp;lt;/u&amp;gt; : création d&#039;un groupe de volumes nommé volume1 avec hdb1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# vgcreate volume1 /dev/hdb1&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt; vgcreate -- INFO: using default physical extent size 4 MB&amp;lt;br /&amp;gt; vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte&amp;lt;br /&amp;gt; vgcreate -- doing automatic backup of volume group &amp;quot;volume1&amp;quot;&amp;lt;br /&amp;gt; vgcreate -- volume group &amp;quot;volume1&amp;quot; successfully created and activated&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Création d&#039;un volume logique ==&lt;br /&gt;
&lt;br /&gt;
Une fois le groupe de volume créé, on peut alors le découper en un ou plusieurs volumes logiques grâce à la commande lvcreate :&lt;br /&gt;
&lt;br /&gt;
lvcreate -L tailleK|M|G [-n nom] &amp;lt;nom_volume&amp;gt; où&amp;lt;br /&amp;gt; -L tailleK|M|G : taille du volume logique exprimable en Ko, Mo ou Go&amp;lt;br /&amp;gt; -n nom : nom du volume logique - l&#039;opération crée un fichier spécial portant ce nom pour le volume logique et sera placé dans le répertoire /dev/nom_volume&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nom_volume&amp;gt; : nom du groupe de volumes dans lequel sera créé le volume logique.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Exemple&amp;lt;/u&amp;gt; : création d&#039;un volume logique de 600 Mo nommé part1 dans le groupe de volume volume1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# lvcreate -L 600 -n part1 volume1&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt; lvcreate -- doing automatic backup of &amp;quot;volume1&amp;quot;&amp;lt;br /&amp;gt; lvcreate -- logical volume &amp;quot;/dev/volume1/part1&amp;quot; successfully created&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une particularité de la création d&#039;un volume logique est le choix du mapping entre les LE et les PE. Par défaut, ce mapping est effectué de manière linéaire. Il est possible également de réaliser du stripping (répartition des données sur un ou plusieurs diques), ce qui permet d&#039;améliorer le temps d&#039;accès aux données. Ci-dessous, ce schéma montre la différence de répartition des LE en fonction de ces deux modes.&lt;br /&gt;
&lt;br /&gt;
Des options de la commande lvcreate permettent de donner le nombre de stripes (et donc de volumes physiques utilisés) et leur taille. (Schémas 4 et 5)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schéma 4 : Volume logique en mode linéaire&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:lvm-lvm2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schéma 5 : Volume logique en mode stripping&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:lvm-lvm1.jpg]]&lt;br /&gt;
&lt;br /&gt;
= Recueillir des informations sur le LVM =&lt;br /&gt;
&lt;br /&gt;
A tout moment il est possible de recueillir des informations sur les structures LVM : volume physique, groupe de volumes et volumes logiques. On utilisera pour cela respectivement les commandes pvdisplay, vgdisplay et lvdisplay. Ces commandes ne font en fait qu&#039;afficher dans un format lisible le contenu respectif de la PVRA, VGRA. Nous allons détailler les principales informations au moyen d&#039;exemples ci-dessous.&lt;br /&gt;
&lt;br /&gt;
La description d&#039;un volume physique procure notamment le nom du volume physique, le nom du groupe de volume dans lequel est inséré le dit volume physique, sa taille, le nombre de volumes logiques contenus, la taille des physical extents, le nombre de PE contenus dans le volume physique, le nombre de PE libres.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# pvdisplay /dev/hdb1&lt;br /&gt;
 --- Physical volume ---&lt;br /&gt;
 PV Name               /dev/hdb1&lt;br /&gt;
 VG Name               volume1&lt;br /&gt;
 PV Size               5.59 GB [11727387 secs] /&lt;br /&gt;
   NOT usable 4.19 MB [LVM: 133 KB]&lt;br /&gt;
 PV#                   1&lt;br /&gt;
 PV Status             available&lt;br /&gt;
 Allocatable           yes&lt;br /&gt;
 Cur LV                1&lt;br /&gt;
 PE Size (KByte)       4096&lt;br /&gt;
 Total PE              1430&lt;br /&gt;
 Free PE               1230&lt;br /&gt;
 Allocated PE          200&lt;br /&gt;
 PV UUID               DTWrWh-5oUP-KrdB-US55-c9wP-eKii-6z3uU7&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La description d&#039;un groupe de volumes permet de vérifier son nom, le type d&#039;accès aux données (écriture, lecture), le nombre maximum de volumes logiques créables dans ce groupe de volume, sa taille en PE et LE...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# vgdisplay volume1&lt;br /&gt;
 --- Volume group ---&lt;br /&gt;
 VG Name               volume1&lt;br /&gt;
 VG Access             read/write&lt;br /&gt;
 VG Status             available/resizable&lt;br /&gt;
 VG #                  0&lt;br /&gt;
 MAX LV                256&lt;br /&gt;
 Cur LV                1&lt;br /&gt;
 Open LV               0&lt;br /&gt;
 MAX LV Size           255.99 GB&lt;br /&gt;
 Max PV                256&lt;br /&gt;
 Cur PV                1&lt;br /&gt;
 Act PV                1&lt;br /&gt;
 VG Size               5.59 GB&lt;br /&gt;
 PE Size               4 MB&lt;br /&gt;
 Total PE              1430&lt;br /&gt;
 Alloc PE / Size       150 / 600 MB&lt;br /&gt;
 Free  PE / Size       1280 / 5 GB&lt;br /&gt;
 VG UUID               5XxOO1-ZNl8-zocw-6dR5-44LX-oyYc-MYHpN2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin la description d&#039;un volume logique contient son nom, le type d&#039;accès aux données, sa taille...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# lvdisplay /dev/volume1/part1&lt;br /&gt;
 --- Logical volume ---&lt;br /&gt;
 LV Name                /dev/volume1/part1&lt;br /&gt;
 VG Name                volume1&lt;br /&gt;
 LV Write Access        read/write&lt;br /&gt;
 LV Status              available&lt;br /&gt;
 LV #                   1&lt;br /&gt;
 # open                 0&lt;br /&gt;
 LV Size                600 MB&lt;br /&gt;
 Current LE             150&lt;br /&gt;
 Allocated LE           150&lt;br /&gt;
 Allocation             next free&lt;br /&gt;
 Read ahead sectors     1024&lt;br /&gt;
 Block device           58:0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Commandes complémentaires =&lt;br /&gt;
&lt;br /&gt;
Jusqu&#039;à maintenant, nous avons vu comment créer des structures LVM et obtenir de l&#039;information. Nous allons voir maintenant d&#039;autres opérations réalisables pour la gestion du partitionnement et qui mettent en évidence toute la souplesse apportée par le LVM en la matière : agrandir ou réduire un groupe de volume, redimensionner un volume logique.&lt;br /&gt;
&lt;br /&gt;
Si vous modifiez des groupes de volumes, des volumes logiques ou physiques utilisés par le système (ie /, /usr, /var, ...), vous devrez probablement booter sur un livecd : On citera notamment la célèbre knoppix, mais aussi le livecd gparted, le system rescue cd, ... Vérifiez auparavant la présence des outils LVM sur ce CD. La présence d&#039;outils de partitionnement plus convivial ou plus puissants que fdisk est un plus non négligeable, ainsi que celle d&#039;un navigateur internet mode texte (links ...) .&lt;br /&gt;
&lt;br /&gt;
== Redimensionner un groupe de volumes ==&lt;br /&gt;
&lt;br /&gt;
Un groupe de volumes est constitué d&#039;un ou plusieurs volumes physiques. Il est possible à tout moment d&#039;ajouter ou retirer un ou plusieurs volumes physiques afin d&#039;augmenter ou diminuer l&#039;espace disponible d&#039;un groupe de volumes.&lt;br /&gt;
&lt;br /&gt;
C&#039;est là une des plus grandes souplesses du lvm : vous pouvez par exemple ajouter un disque, y créer un nouveau volume physique que vous rajoutez à votre groupe de volumes : autrement dit vous pouvez avoir une partition à cheval entre plusieurs disques, de manière totalement transparente pour le système, avec un gain de performances non négligeable si utilisé à bon escient.&lt;br /&gt;
&lt;br /&gt;
Les commandes sont respectivement vgextend et vgreduce :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;vgextend nom_volume /dev/hdxx&amp;lt;br /&amp;gt; vgreduce nom_volume /dev/hdxx&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
où&lt;br /&gt;
&lt;br /&gt;
nom_volume : nom du groupe de volumes à redimensionner&amp;lt;br /&amp;gt; /dev/hdxx : volume physique à ajouter ou retirer du groupe de volumes.&lt;br /&gt;
&lt;br /&gt;
Un exemple : Vous devez augmenter l&#039;espace du groupe de volumes volume1 de 6 Go. Pour cela vous disposez d&#039;un disque que vous allez ajouter au groupe de volume. Ci-dessous les étapes à réaliser :&lt;br /&gt;
&lt;br /&gt;
# création du volume physique à partir de hdb2 &amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# pvcreate /dev/hdb1&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt; pvcreate -- physical volume &amp;quot;/dev/hdb1&amp;quot; successfully created&amp;lt;/div&amp;gt;&lt;br /&gt;
# ajout de hdb2 au groupe de volumes volume1 &amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# vgextend volume1 /dev/hdb2 &amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt; vgextend -- INFO:maximum logical volume size is 255.99 Gigabyte vgextend&amp;lt;br /&amp;gt; --doing automatic backup of volume group &amp;quot;volume1&amp;quot; vgextend&amp;lt;br /&amp;gt; --volume group &amp;quot;volume1&amp;quot; successfully extended&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On pourra vérifier la bonne réalisation de l&#039;opération grâce à la commande vgdisplay.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La réduction est un peu plus complexe, traitons la sur un exemple : &lt;br /&gt;
&lt;br /&gt;
vous voulez supprimer /dev/hdb du groupe de volumes volume2 qui contient plusieurs volumes physiques (dont /dev/hdb) : &lt;br /&gt;
&lt;br /&gt;
1) Commencez par vérifier que la taille des volumes physiques qui resteront sur le groupe de volumes est suffisante pour accueillir toutes vos données.&lt;br /&gt;
&lt;br /&gt;
2) Il est &#039;&#039;&#039;fortement&#039;&#039;&#039; conseillé de faire une sauvegarde de vos données&lt;br /&gt;
&lt;br /&gt;
3) Afin de pouvoir supprimer /dev/hdb de volume2, on doit d&#039;abord déplacer les données qu&#039;il contient sur les autres volumes physiques de volume2 : on fait ça avec la commande pvmove en donnant comme argument le nom du volume physique dont on veut migrer les données : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# pvmove /dev/hdb &amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pvmove trouve de lui même l&#039;endroit où déplacer les données (en fait chaque groupe de volumes possède une politique d&#039;allocation qui indique quels volumes physiques doivent être utilisés en priorités, mais la gestion de cette politique dépasse le cadre de cet article). Vous pouvez si vous préférez spécifier un ou plusieurs volumes de destinations (voir le manuel de pvmove pour plus d&#039;informations).&lt;br /&gt;
&lt;br /&gt;
4) Maintenant on peut retirer /dev/hdb du groupe de volumes en toute tranquillité : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# vgreduce volume2 /dev/hdb &amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez aussi utiliser : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# vgreduce -a volume2 &amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande supprime tous les volumes physiques vides de volume2&lt;br /&gt;
&lt;br /&gt;
== Redimensionner un volume logique ==&lt;br /&gt;
&lt;br /&gt;
De la même façon, il est possible de diminuer ou augmenter la taille d&#039;un volume logique au moyen des commandes lvreduce et lvextend.&lt;br /&gt;
&lt;br /&gt;
Ces commandes peuvent s&#039;utiliser avec une taille absolue ou relative : &lt;br /&gt;
Si vous donnez une taille absolue (&amp;quot;changer la taille de tel volume à 10 gigas&amp;quot;) :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;lvextend -L taille /dev/nom_volume/vol_logique&amp;lt;br /&amp;gt; lvreduce -L taille /dev/nom_volume/vol_logique &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous donnez une taille relative (&amp;quot;ajouter 2 gigas à tel volume&amp;quot;)&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;lvextend -L +taille /dev/nom_volume/vol_logique&amp;lt;br /&amp;gt; lvreduce -L -taille /dev/nom_volume/vol_logique &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
où&amp;lt;br /&amp;gt; -L +taille : taille initiale augmentée de la valeur utilisée pour taille.&amp;lt;br /&amp;gt;&lt;br /&gt;
-L -taille : taille initiale retranchée de la valeur utilisée pour taille.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les étapes à respecter pour agrandir un volume logique :&lt;br /&gt;
&lt;br /&gt;
# démontage du système de fichier (commande umount) ; &lt;br /&gt;
# augmentation de la taille du volume logique (on utilisera pour cela un utilitaire fourni dans le package LVM : lvextend), en spécifiant la nouvelle taille ; &lt;br /&gt;
# vérification forcée du système de fichier (nécessaire avant l&#039;étape suivante)&lt;br /&gt;
# augmentation de la taille du système de fichier (voir le tableau plus bas) en laissant le programme trouver la nouvelle taille; &lt;br /&gt;
# remontage du système de fichiers. &lt;br /&gt;
&lt;br /&gt;
ce qui donne par exemple pour ajouter 10 gigas à vol_logique (en ext3) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;umount /dev/nom_volume/vol_logique&amp;lt;br /&amp;gt;lvextend -L +10G /dev/nom_volume/vol_logique &amp;lt;br /&amp;gt;e2fsck -f /dev/nom_volume/vol_logique &amp;lt;br /&amp;gt;resize2fs /dev/nom_vol/vol_logique &amp;lt;br /&amp;gt;mount /dev/nom_volume/vol_logique [...]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et pour réduire un volume logique :&lt;br /&gt;
&lt;br /&gt;
# démontage du système de fichier (commande umount) ; &lt;br /&gt;
# réduction de la taille du système de fichiers (voir le tableau plus bas) en spécifiant la nouvelle taille; &lt;br /&gt;
# réduction de la taille du volume logique (on utilisera pour cela un utilitaire fourni dans le package LVM : lvreduce) en respécifiant la taille&lt;br /&gt;
# remontage du système de fichiers. &lt;br /&gt;
&lt;br /&gt;
par exemple pour changer la taille de vol_logique à 5G (en ext3) : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;umount /dev/nom_volume/vol_logique&amp;lt;br /&amp;gt;e2fsck -f /dev/nom_volume/vol_logique &amp;lt;br /&amp;gt;resize2fs /dev/nom_vol/vol_logique 5G &amp;lt;br /&amp;gt;lvreduce -L 5G /dev/nom_volume/vol_logique &amp;lt;br /&amp;gt;mount /dev/nom_volume/vol_logique [...]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IMPORTANT :&lt;br /&gt;
Vous  noterez qu&#039;on réduit d&#039;abord le système de fichier puis le volume logique. La raison est simple : quand on exécute lvreduce, les données dans la partie réduite sont tout simplement supprimées du volume, il est donc indispensable que le système de fichiers ait déjà la bonne taille. Vous devez passer la même taille aux 2 commandes, donc ne donner pas une taille relative à lvreduce, cela pourrait vous induire en erreur.&lt;br /&gt;
&lt;br /&gt;
On pourra vérifier le bon déroulement de l&#039;opération grâce aux commandes lvdisplay pour le volume logique et df pour le système de fichiers. Les remarques ci-dessus sont une description générale de l&#039;opération. Ces étapes peuvent toutefois varier en fonction du système de fichiers utilisé. Certains procurent en effet la possibilité d&#039;effectuer les opérations de redimensionnement « à chaud » c&#039;est-à-dire sans démontage. Ci-contre un tableau comparatif des différents systèmes de fichiers les plus couramment rencontrés (Tableau 1).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tableau 1 : manipulation des systèmes de fichiers&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Système de fichiers&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | diminution&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Augmentation&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Utilitaires&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;15%&amp;quot; | ext3&lt;br /&gt;
| width=&amp;quot;22%&amp;quot; | démontage préalable&lt;br /&gt;
| width=&amp;quot;22%&amp;quot; | démontage préalable&lt;br /&gt;
| width=&amp;quot;42%&amp;quot; | e2fsprogs (resize2fs)&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;15%&amp;quot; | ReiserFS&lt;br /&gt;
| width=&amp;quot;22%&amp;quot; | démontage préalable&lt;br /&gt;
| width=&amp;quot;22%&amp;quot; | opération on-line&lt;br /&gt;
| width=&amp;quot;42%&amp;quot; | reiserfsprogsv (resize_reiserfs)&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;15%&amp;quot; | XFS&lt;br /&gt;
| width=&amp;quot;22%&amp;quot; | impossible&lt;br /&gt;
| width=&amp;quot;22%&amp;quot; | opération on-line&lt;br /&gt;
| width=&amp;quot;42%&amp;quot; | xfsprogs (xfs_growfs)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Redimensionner un volume physique ==&lt;br /&gt;
&#039;&#039;&#039;S&#039;applique uniquement au LVM2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION&#039;&#039;&#039; La prise en charge de cette fonctionnalité par LVM2 est relativement récente, elle est de ce fait assez peu documentée, et assez risquée. Il est très fortement conseillé (encore plus que d&#039;habitude) de sauver ses données, sa table de partition, ses métadatas LVM avant.&lt;br /&gt;
&lt;br /&gt;
Je vous rappelle que vous êtes seul responsable de vos essais.&lt;br /&gt;
&lt;br /&gt;
Gardez à l&#039;esprit que le risque de défaillance du matériel existe toujours, et s&#039;y ajoute le risque beaucoup plus conséquent d&#039;erreur humaine. Lors de la modification d&#039;une table de partitions, une simple faute de frappe peut être à l&#039;origine d&#039;une perte de données. &lt;br /&gt;
&lt;br /&gt;
Il sera nécessaire pour une manipulation sur un volume physique utilisé par votre distribution de booter sur un livecd.&lt;br /&gt;
Nous avons précédemment vu les principales manipulations sur un groupe de volumes et sur des volumes logiques : Mais reste les manipulations sur les volumes physiques eux même, notamment le redimensionnement : &lt;br /&gt;
&lt;br /&gt;
Admettons par exemple que vous ayez un groupe de volumes nom_volume utilisant les volumes physiques hda1 et hdb, et que vous avez d&#039;autres partitions n&#039;utilisant pas le LVM sur hda. Il est possible qu&#039;au bout d&#039;un certain temps vous n&#039;ayez plus besoin de hda2, vous supprimez les données dessus et vous avez alors une certaine quantité d&#039;espace disponible sur hda&lt;br /&gt;
&lt;br /&gt;
Il pourrait être utile d&#039;ajouter cet espace au groupe de volumes nom_volume. Nous avons précédemment vu une méthode possible : création d&#039;un nouveau volume physique sur hda2 et ajout de ce volume physique à nom_volume. Cependant, cette solution n&#039;est pas idéale : créer deux volumes physiques &#039;&#039;&#039;sur le même&#039;&#039;&#039; disque entraînera probablement une perte de performances : &lt;br /&gt;
Les têtes de lecture passeront un certain temps à faire du tourisme sur le disque pour trouver les données (un peu comme dans le cas d&#039;une partition ntfs fragmentée).&lt;br /&gt;
&lt;br /&gt;
Donc on préférera le redimensionnement du volume physique existant : &lt;br /&gt;
Cette méthode suppose que l&#039;espace à ajouter au volume physique se trouve juste après le dit volume physique : il est seulement possible d&#039;agrandir un pv &amp;quot;vers la droite&amp;quot; &lt;br /&gt;
&lt;br /&gt;
1) Première étape : sauvegarde des données &#039;&#039;&#039;fortement conseillée&#039;&#039;&#039;&lt;br /&gt;
Puis démontez vos partitions, et fermez tous les programmes susceptibles de les utiliser. &lt;br /&gt;
&lt;br /&gt;
2) Deuxième étape : supprimer la partition inutile (ici hda2) si ce n&#039;est pas déja fait : avec fdisk ou autre (voir man fdisk, man parted, man cfdisk ...)&lt;br /&gt;
&lt;br /&gt;
3) Troisième étape : agrandir la partition hébergeant le volume physique avec&lt;br /&gt;
fdisk&lt;br /&gt;
&lt;br /&gt;
C&#039;est une manipulation délicate. D&#039;abord un minimum de théorie : quand on crée ou supprime une partition avec fdisk, il ne touche pas aux données, seulement aux partitions (attention, ça ne veut pas dire qu&#039;on peut faire n&#039;importe quoi avec fdisk : si la table de partition n&#039;est pas bonne, vos données seront illisibles). Il est donc tout à fait possible de supprimer une partition et de la recréer &#039;&#039;&#039;à partir du même secteur&#039;&#039;&#039; mais en plus grand sans perdre les données qui s&#039;y trouvent. C&#039;est ce que nous allons faire (Je répète, il faut que l&#039;espace libre se trouve &#039;&#039;&#039;juste après&#039;&#039;&#039; le pv à agrandir)&lt;br /&gt;
&lt;br /&gt;
commencez par lancer fdisk : &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; #fdisk /dev/hda &amp;lt;br /&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis taper l : Cette commande affiche la table de partitions. Notez sur un bout de papier le début et la fin de votre volume physique (ici hda1). Il est fortement conseillé de travailler avec un affichage en cylindres (par défaut dans fdisk) car certains programmes arrondissent les partitions aux cylindres.&lt;br /&gt;
&lt;br /&gt;
Maintenant supprimez cette partition : avec fdisk, commande d puis vous entrez le numéro de la partition (ici 1).&lt;br /&gt;
&lt;br /&gt;
Puis recréez une partition : commande n, puis entrez le numéro : ici 1 (mieux vaut garder le même), fdisk va vous demander le cylindre de début de la partition : entrez exactement le même que celui de l&#039;ancienne partition, Et entrez le cylindre de fin que vous voulez (toujours supérieur à l&#039;ancien, cette méthode ne fonctionne que pour un agrandissement). Par défaut, fdisk étendra la partition sur tout l&#039;espace non partitionné si vous tapez seulement entrée.&lt;br /&gt;
&lt;br /&gt;
Enfin changez le type de cette partition en lvm : commande t, numéro de la partition (1), puis type (8e)&lt;br /&gt;
&lt;br /&gt;
Pour l&#039;instant, les modifications sont seulement en mémoire. Vérifiez qu&#039;elles sont correctes avec la commande l, puis vérifiez à nouveau et encore une fois. Quand vous êtes sur de vous, tapez w : Les modifications seront écrites sur le disque. &lt;br /&gt;
&lt;br /&gt;
4) Maintenant la partition hébergeant le volume physique (hda1) est agrandie, Mais le pv ne l&#039;est pas encore :  On s&#039;en occupe avec : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; #pvresize /dev/hda1 &amp;lt;br /&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attention, on ne spécifie pas de taille : pvresize détectera de lui même la taille de la partition et agrandira le pv en conséquence&lt;br /&gt;
&lt;br /&gt;
5) Eh bien c&#039;est terminé, bravo ! Maintenant vous pouvez vérifier avec pvdisplay et vgdisplay que vous disposez bien de l&#039;espace supplémentaire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et pour réduire un volume physique : &amp;lt;br /&amp;gt;&lt;br /&gt;
c&#039;est un peu plus complexe : Il est nécessaire que les LE du volume physique qui seront effacés soient non occupées. A ma connaissance, il n&#039;existe pas de commande permettant de déplacer les infos situés dans les n derniers LE, mais c&#039;est prévu pour une prochaine version. En outre c&#039;est encore plus expérimental que l&#039;agrandissement qui était déja lui même expérimental ... Tout essai à vos risques et périls.&lt;br /&gt;
&lt;br /&gt;
La méthode : &amp;lt;br /&amp;gt;&lt;br /&gt;
Comme s&#039;habitude sauvegarde, démontage, ... Puis : &lt;br /&gt;
&lt;br /&gt;
1) Réduire le pv avec :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; #pvresize --setphysicalvolumesize taille /dev/hda1  &amp;lt;br /&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
Ici on réduit à taille le volume physique hda1&lt;br /&gt;
&lt;br /&gt;
2) Faire la même manipulation que pour l&#039;agrandissement avec fdisk mais cette fois on diminue la taille de la partition à &#039;&#039;&#039;exactement la même taille&#039;&#039;&#039; que celle donnée à pvresize, toujours en gardant le même début. Attention aux conversions cylindre/secteurs/Go/Mo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les limitations, comment les contourner ? &amp;lt;br/&amp;gt;&lt;br /&gt;
La principale limitation est l&#039;impossibilité de déplacer le début de la partition. Si vous voulez déplacer un volume physique, il vous faudra :&lt;br /&gt;
D&#039;abord créer un nouveau pv (sur une nouvelle partition) à l&#039;endroit ou vous voulez mettre votre ancien volume, ajouter ce nouveau pv à votre groupe de volume, puis retirer l&#039;ancien pv du groupe de volume (après avoir évidement migrer les données qu&#039;il contient). Toutes ces manipulations ont été détaillées dans ce document.&lt;br /&gt;
L&#039;inconvénient de cette méthode est la nécessité de disposer d&#039;un espace au moins aussi grand que l&#039;ancien pv à l&#039;endroit où vous voulez le mettre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Une fonction particulière du LVM : la réalisation de snapshots ==&lt;br /&gt;
&lt;br /&gt;
La difficulté fréquemment rencontrée pour la réalisation de sauvegardes est de disposer de données cohérentes. Cela implique parfois d&#039;arrêter un ou plusieurs services comme dans le cas des bases de données. Le LVM apporte un élément de réponse avec la possibilité de créer des snapshots. Il s&#039;agit d&#039;image à un moment t des données situées sur un volume logique. Le volume de snapshot ne nécessite pas autant d&#039;espace que le volume initial dans la mesure où il ne contiendra réellement que les métadatas concernant les données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Autres commandes ==&lt;br /&gt;
&lt;br /&gt;
Cet article n&#039;abordera pas le détail de toutes les commandes, qui sont plutôt simples à utiliser une fois que les concepts de base du LVM sont compris. Dans le tableau ci-après une liste de commandes utilisables et la description rapide de leur rôle. Voir le man de la commande pour plus d&#039;informations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Commandes générales&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* lvmcreate_initrd : création d&#039;une image initrd lorsque le système utilise le LVM&lt;br /&gt;
* lvmdiskscan : scanner l&#039;ensemble des disques et partitions pour éditer une description de l&#039;espace&lt;br /&gt;
* vgscan : création de /etc/lvmtab et /etc/lvmtab.d&lt;br /&gt;
&#039;&#039;&#039;Gestion des volumes physiques&#039;&#039;&#039;&lt;br /&gt;
* pvchange : changer les attributs d&#039;un PV&lt;br /&gt;
* pvcreate : création d&#039;un PV&lt;br /&gt;
* pvdata : afficher des informations de debug&lt;br /&gt;
* pvdisplay : afficher des informations d&#039;un PV&lt;br /&gt;
* pvmove : migrer les données d&#039;un PV en vue de sa suppression&lt;br /&gt;
* pvresize : redimensionnement d&#039;un PV (délicat)&lt;br /&gt;
* pvscan : lister tous les PV existant sur tous les disques&lt;br /&gt;
&#039;&#039;&#039;Gestion des groupes de volumes&#039;&#039;&#039;&lt;br /&gt;
* vgcfgbackup : sauvegarder la VGDA&lt;br /&gt;
* vgcfgrestore : restaurer la VGDA&lt;br /&gt;
* vgchange : changer les attributs d&#039;un VG&lt;br /&gt;
* vgck : vérification de la VGDA&lt;br /&gt;
* vgcreate : créer un VG&lt;br /&gt;
* vgdisplay : voir les informations&lt;br /&gt;
* vgexport : désactiver un VG pour pouvoir extraire les PV&lt;br /&gt;
* vgimport : activer et déclarer un VG sur le système&lt;br /&gt;
* vgextend : ajouter un ou plusieurs PV dans un VG&lt;br /&gt;
* vgmerge : fusionner deux VG&lt;br /&gt;
* vgmknodes : recréer /dev/nom_volume et le fichier spécial group&lt;br /&gt;
* vgreduce : extraire un ou plusieurs PV d&#039;un VG&lt;br /&gt;
* vgremove : supprimer un VG&lt;br /&gt;
* vgrename : renommer un VG&lt;br /&gt;
&#039;&#039;&#039;Gestion des volumes logiques&#039;&#039;&#039;&lt;br /&gt;
* lvcreate : création d&#039;un VL lvchange : modification des attributs d&#039;un VL&lt;br /&gt;
* lvdisplay : voir les informations d&#039;un VL&lt;br /&gt;
* lvextend : augmenter la taille d&#039;un VL&lt;br /&gt;
* lvreduce : réduire la taille d&#039;un VL&lt;br /&gt;
* lvremove : supprimer un VL&lt;br /&gt;
* lvrename : renommer un VL&lt;br /&gt;
* lvscan : recherche de tous les VL existant&lt;br /&gt;
&lt;br /&gt;
= Utilisation pratique du LVM dans la gestion de l&#039;espace =&lt;br /&gt;
Vous diposez d&#039;un groupe de volume dans lequel vous n&#039;avez plus d&#039;espace disponible. Pour pouvoir augmenter un des volumes logiques, il va donc falloir ajouter un disque au groupe de volume. Comme pour tout élément du LVM, la première étape consiste à le transformer en volume physique (&amp;quot;pvcreate&amp;quot;). Puis on va insérer le nouveau volume physique dans le groupe de volume au moyen de la commande &amp;quot;vgextend&amp;quot;. C&#039;est tout !&lt;br /&gt;
Plus complexe, vous pouvez, pour quelle que raison que ce soit, envisager de déplacer un groupe de volume d&#039;une machine à une autre. Si une sauvegarde de données est toujours conseillée par sécurité (mais comme vous êtes prévoyant vous en disposez de toute façon ;)), l&#039;opération va consister à désactiver le groupe de volume à déplacer, enregistrer les métadatas le concernant. Puis on va réinjecter ces métadatas sur la machine destinataire et réactiver le groupe de volume sur cette machine. Les données seront alors accessibles de la même façon que sur l&#039;ancienne machine (sous réserve de conserver les mêmes points de montage).&lt;br /&gt;
Ci-dessous les étapes effectuées :&lt;br /&gt;
*# désactivation du groupe de volume (&amp;quot;datas&amp;quot;) :&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;# vgchange n datas &amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
*# sauvegarde des métadatas du groupe de volume :&amp;lt;br /&amp;gt; # vgcfgbackup datas &lt;br /&gt;
*# retrait du groupe de volume de la configuration système :&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;# vgexport datas &amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*# arrêt de la première machine, transfert des disques dans la deuxième et redémarrage des machines &lt;br /&gt;
*# restauration des métadatas concernant ce groupe de volume sur la nouvelle machine :&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;# vgcfgrestore -f datas.conf /dev/hda3&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt; # vgcfgrestore -f datas.conf /dev/hda4&amp;lt;/code&amp;gt; si les volumes physiques sont hda3 et hda4. &lt;br /&gt;
*# déclaration du groupe de volume sur la machine :&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;# vgimport datas /dev/hda3 /dev/hda4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
*# activation du groupe de volume importé :&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;# vgchange y datas &amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Il ne vous reste plus qu&#039;à modifier en conséquence /etc/fstab pour le montage automatique des systèmes de fichiers contenus dans le groupe de volume.&lt;br /&gt;
= Evolution du LVM : LVM 2 =&lt;br /&gt;
Avec la sortie du noyau 2.6, le LVM a été revu et corrigé et la version LVM2 est disponible de base avec ce noyau. Il est possible de l&#039;utiliser avec un noyau 2.4.x moyennant recompilation de ce même noyau.&lt;br /&gt;
== Le device-mapper ==&lt;br /&gt;
Le driver du LVM a été complètement réécrit, ce qui lui procure encore plus d&#039;efficacité et de souplesse. La grande nouveauté réside dans l&#039;utilisation de ce driver, utilisé pour gérer la couche d&#039;abstraction nécessaire dans le cadre de la gestion de volumes logiques. Cette couche d&#039;abstraction a pour fonction principale de réaliser le mapping résultant de l&#039;agrégat par bandes (stripping) des périphériques physiques utilisés.&lt;br /&gt;
Le device-mapper définit les nouveaux périphériques de bloc composés de tranches de secteurs de périphériques physiques existant. Le mapping réalisé prend la forme suivante :&lt;br /&gt;
&amp;lt;start &amp;gt; &amp;lt; length &amp;gt; &amp;lt; target &amp;gt; [ &amp;lt; target args...&amp;gt;]&lt;br /&gt;
Les targets peuvent être de plusieurs natures :&lt;br /&gt;
** linear : c&#039;est le cas le plus couramment utilisé dans le LVM. Les arguments nécessaires seront alors le device utilisé et le secteur de début.&lt;br /&gt;
** stripped : on utilisera cette cible lorsque l&#039;on réalise du stripping avec le LVM. Les arguments seront alors le nombre de stripes et leur taille, puis les paires device name / secteurs. &lt;br /&gt;
** error : toutes les I/O sur les secteurs ainsi marquées sont définies en erreur. &lt;br /&gt;
** snapshot : permet de réaliser des snapshots asynchrones grâce au LVM. &lt;br /&gt;
** mirror : permet d&#039;implémenter les éléments nécessaires à l&#039;exécution de la commande pvmove. &lt;br /&gt;
== Utilisation d&#039;un arbre binaire ==&lt;br /&gt;
Pour réaliser le mapping, un [http://fr.wikipedia.org/wiki/Arbre_binaire arbre binaire] a été utilisé, ceci afin de rendre la lecture de la table plus rapide et donc le LVM plus efficace.&lt;br /&gt;
== Une plus grande configurabilité ==&lt;br /&gt;
LVM2 peut fonctionner sans ajout de fichier de configuration mais l&#039;emploi de celui-ci permet d&#039;optimiser ses performances. Un certain nombre d&#039;éléments peuvent ainsi être paramétrés :&lt;br /&gt;
** les devices à utiliser pour réaliser le LVM, ce qui permet d&#039;éviter des scans de périphériques inutiles et qui nuisent à la performance (ex : lecteur de CD-ROM). A cela, on ajoute la gestion d&#039;un système de cache contenant ces informations qui permet d&#039;accroitre encore plus l&#039;efficacité. &lt;br /&gt;
** possibilité de déterminer l&#039;emplacement des fichiers spéciaux des groupes volumes &lt;br /&gt;
** possibilité de disposer de logs configurables (taille, contenu, emplacement...) &lt;br /&gt;
** paramétrage des backups de la configuration existante et de l&#039;archivage des anciennes configuration du LVM (métadatas) &lt;br /&gt;
** définition du type de LVM employé par défaut (1 ou 2), même s&#039;il est possible dans la compilation de n&#039;inclure que la gestion du LVM2, dans le cas où la gestion de la compatibilité descendante n&#039;est pas nécessaire. &lt;br /&gt;
** définition du nombre de copies de secours des métadatas sur un volume physique, un peu à l&#039;image des copies des superblocs sur le système de fichiers de type ext2. &lt;br /&gt;
== Compatibilité LVM1 / LVM2 ==&lt;br /&gt;
Il est possible d&#039;utiliser conjointement LVM1 et 2 sur un même système, et/ou de convertir du LVM 1 en 2 et inversement.&lt;br /&gt;
On peut effectivement utiliser sur un même système les deux versions de LVM, à condition que ce ne soit pas dans le même groupe de volumes. Les commandes LVM ont en effet un commutateur supplémentaire, -M, qui permet de faire ce choix. (-M 1 ou -M 2)&lt;br /&gt;
D&#039;autre part, la comande vgconvert permet la conversion des métadatas pour migrer de LVM1 à LVM2&lt;br /&gt;
== Autre ==&lt;br /&gt;
LVM2 permet d&#039;assouplir encore plus la gestion de l&#039;espace, dans la manipulation des volumes logiques. La commande lvcreate par exemple donne maintenant la possibilité de choisir le périphérique voire la tranche de PE à utiliser.&lt;br /&gt;
&lt;br /&gt;
= En conclusion... =&lt;br /&gt;
Voilà donc un outil de plus qui fait qu&#039;un système Linux peut être véritablement efficace et optimiser la disponibilité d&#039;un serveur en production. L&#039;outil LVM peut également être utilisé avantageusement sur un poste personnel, pour s&#039;éviter les opérations fastidieuses liées à la gestion de l&#039;espace disque.&lt;br /&gt;
= Liens utiles =&lt;br /&gt;
** HOWTO LVM : http://tldp.org/HOWTO/LVM-HOWTO &lt;br /&gt;
** La principale mailing-liste d&#039;aide : http://lists.sistina.com/mailman/listinfo &lt;br /&gt;
** Trouver les sources de LVM : http://www.sistina.com/products_lvm.htm &lt;br /&gt;
** Un autre projet de gestion de volumes logiques, EVMS : http://evms.sourceforge.net &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Anne le 29/10/2004.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 29/10/2004, Anne&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Ge</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=LVM&amp;diff=14992</id>
		<title>LVM</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=LVM&amp;diff=14992"/>
		<updated>2007-10-14T04:35:13Z</updated>

		<summary type="html">&lt;p&gt;Ge : /* De l&amp;#039;utilité du LVM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Administration système]]&lt;br /&gt;
= Le LVM (Logical Volume Manager) =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Le LVM (Logical Volume Manager)&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par [mailto:anne@lea-linux.org Anne]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Un des aspects cruciaux dans l&#039;administration d&#039;un serveur ou d&#039;une machine de bureau est la gestion de l&#039;espace disque. Quoi de plus énervant que de voir l&#039;installation d&#039;une application échouer par manque d&#039;espace, ou un serveur rendu indisponible parce que le système de fichiers /var était plein du fait des fichiers de log ?&lt;br /&gt;
&lt;br /&gt;
Un outil apporte une solution satisfaisante et efficace : le LVM (Logical Volume Manager).&lt;br /&gt;
&lt;br /&gt;
= De l&#039;utilité du LVM =&lt;br /&gt;
&lt;br /&gt;
Le LVM ou Logical Volume Manager, est une technique créée à la base par IBM consistant à fournir la possibilité de modifier la taille des partitions sur les disques durs sans avoir besoin de tout reformater, voire de créer des partitions s&#039;étalant sur plusieurs disques. L&#039;objectif est ainsi d&#039;éviter arrêt et redémarrage d&#039;une machine en production. Cette technique est disponible sur linux depuis la version 2.4 du noyau (très exactement 2.3.47).&lt;br /&gt;
&lt;br /&gt;
Dans un partitionnement de type classique, à l&#039;aide des commandes fdisk, vous ne pouvez avoir que 4 partitions primaires pour chaque disque (en IDE) ou éventuellement 3 partitions primaires et une partition étendue qui contiendra des partitions logiques. L&#039;inconvénient de ce type de partitionnement est que lorsque vous souhaitez réduire la taille d&#039;une partition ou l&#039;augmenter, vous devez notamment disposer d&#039;outils spécifiques comme GNU-parted. De plus, le partitionnement ne se fera que disque par disque. Imaginez alors que vous souhaitiez ajouter un deuxième disque sur votre machine ou agrandir la taille de votre système de fichiers /home...&lt;br /&gt;
&lt;br /&gt;
Vous ne pourrez pas profiter de l&#039;espace disponible sur ce deuxième disque pour agrandir /home, à moins d&#039;y accrocher un nouveau système de fichiers. Agaçant non ?&lt;br /&gt;
&lt;br /&gt;
Eh bien, LVM est là pour vous simplifier la vie.&lt;br /&gt;
&lt;br /&gt;
= Les composants du LVM =&lt;br /&gt;
&lt;br /&gt;
Le principe de fonctionnement de LVM est relativement simple. Il s&#039;agit en fait pour effectuer ce type de partitionnement, de s&#039;affranchir complètement des limites physiques du ou des disques disponibles. Les étapes ci-dessous en décrivent le fonctionnement. Le LVM s&#039;accompagne aussi d&#039;un certain nombre de termes techniques énoncés également ci-dessous.&lt;br /&gt;
&lt;br /&gt;
* Chaque disque dur ou partition va être transformé en &#039;&#039;&#039;volume physique&#039;&#039;&#039;. Cette opération consiste à découper le disque en tranches, appelées Physical Extents (PE). Par défaut (et convention), 1 PE = 4Mo.&lt;br /&gt;
* Chaque volume physique va être inséré dans un &#039;&#039;&#039;groupe de volumes&#039;&#039;&#039;. Celui-ci peut contenir un ou plusieurs volumes physiques (donc disques ou partitions). Un groupe de volume est un espace logique découpé en Logical Extents (LE) de même tailles que les physical extents, soit 4 Mo par défaut. &lt;br /&gt;
Le système va ensuite établir des &#039;&#039;&#039;pointeurs&#039;&#039;&#039; entre un physical extent et un logical extent comme indiqué sur le schéma ci-dessous. (schéma 1)&lt;br /&gt;
&#039;&#039;&#039;Schéma 1 : système des pointeurs LVM&#039;&#039;&#039;&lt;br /&gt;
[[Image:lvm-lvm4.jpg]]&lt;br /&gt;
* La dernière étape va consister à découper le groupe de volumes en partitions appelées &#039;&#039;&#039;volumes logiques&#039;&#039;&#039; dans lesquelles nous pourrons au choix, créer un système de fichier, une partition de swap. Ces partitions pourront être redimensionnées et/ou déplacées.&lt;br /&gt;
&lt;br /&gt;
Voici de manière shématique à quoi pourrait ressembler votre(vos) disque(s) après ce traitement (Schéma 2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schéma 2 : impact de LVM sur les disques durs&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:lvm-lvm3.jpg|thumb|400px|Schéma d&#039;un groupe de volumes sur deux disques]]&lt;br /&gt;
&lt;br /&gt;
Dans ce cas de figure, les deux disques hda et hdb ont été transformés en volumes physiques. Puis ils ont été insérés tous les deux dans un groupe de volumes appelé vg01. A partir de ce moment-là, il n&#039;est plus nécessaire de tenir compte des limites physiques des disques, en effet, nous n&#039;avons plus qu&#039;un espace, et un seul, de 36 Go (regroupant donc nos deux unités de disques hda et hdb). Le groupe de volumes a ensuite été découpé en 3 volumes logiques, nommées lvol01, lvol02, lvol03. On remarquera que lvol02 est composé de logical extents pointant sur des physical extents appartenant à hda et hdb. La dernière étape consistera à créer un système de fichiers dans chacun de ces volumes logiques.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Remarques&amp;lt;/u&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
* la taille que l&#039;on attribuera à un volume logique s&#039;exprime en nombre de logical extents. Ceux-ci sont indivisibles. Si sa taille est de 4 Mo et que je souhaite un volume logique de 14 Mo, le système attribuera 4 logical extents au volume logique, soit 16 Mo (arrondi au nombre de LE supérieur) &lt;br /&gt;
* la taille d&#039;un PE, et donc d&#039;un LE, est personnalisable lors de la création d&#039;un volume physique. &lt;br /&gt;
* les noms des groupes de volumes et volumes logiques sont personnalisables à leur création&lt;br /&gt;
* &#039;&#039;&#039;Attention : la création d&#039;un volume physique écrase toutes les données existantes sur la partition et/ou le disque !!&#039;&#039;&#039; &lt;br /&gt;
* L&#039;utilisation du LVM pour partitionner un disque entraine une perte d&#039;espace liée à l&#039;écriture des données nécessaires au système pour gérer le LVM (métadatas) : &lt;br /&gt;
** la PVRA : Physical Volume Reserved Area. Comme son nom l&#039;indique, elle contient les informations LVM spécifiques au volume physique. &lt;br /&gt;
** la VGRA : Volume Group Reserve Area. Elle contient les informations liées au groupe de volumes mais aussi aux volumes logiques contenus dans le groupe de volumes &lt;br /&gt;
** la BBRA : Bad Block Relocation Area : cette zone contient des informations liées au mécanisme de ré-allocation des blocs défectueux.&lt;br /&gt;
&lt;br /&gt;
= Utiliser le LVM : ce dont il faut disposer =&lt;br /&gt;
&lt;br /&gt;
Pour être utilisé, le LVM nécessite de disposer du driver qui permet de générer la couche assurant le mapping (la carte) entre périphérique physique et vue logique, des utilitaires pour manipuler ce mapping et des périphériques physiques.&lt;br /&gt;
&lt;br /&gt;
== Kernel et utilitaires ==&lt;br /&gt;
&lt;br /&gt;
Le LVM est fourni lors de l&#039;installation, sauf sur de très vieux systémes (noyau 2.2). Il faut quand même savoir que l&#039;implémentation du LVM se fait à deux niveaux :&lt;br /&gt;
&lt;br /&gt;
* le kernel,&lt;br /&gt;
* les commandes nécessaires pour gérer les structures LVM. &lt;br /&gt;
&lt;br /&gt;
Au niveau du kernel lors de l&#039;installation ou de la recompilation du noyau, vous devez avoir intégré ou mis en module le driver LVM. Celui-ci se situe dans le menu de compilation &amp;quot;Multi-device support&amp;quot;. On peut le vérifier de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;root@pingu# grep -i lvm /boot/config&amp;lt;br /&amp;gt; # Multi-device support (RAID and LVM)&amp;lt;br /&amp;gt; CONFIG_BLK_DEV_LVM=m&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous devez également disposer des commandes nécessaires à l&#039;administration du LVM. Elles sont incluses dans le package lvm. Pour vérifier qu&#039;il est installé (dans le cas d&#039;une Mandriva) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;root@pingu# rpm -qa|grep lvm&amp;lt;br /&amp;gt; lvm-1.0.3-9&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Toutes les commandes passées en revue dans la suite de cet article font partie de ce paquetage.&lt;br /&gt;
&lt;br /&gt;
== Sur quels périphériques et systèmes de fichiers puis-je faire du LVM ? ==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir utiliser le LVM, vous devez disposer soit d&#039;un disque vierge (rappel : la création d&#039;un volume physique entrainera la perte de données existantes) et/ou d&#039;une partition primaire vierge (moins utile mais faisable).&lt;br /&gt;
&lt;br /&gt;
Toutefois attention : vous ne pourrez pas mélanger partitionnement classique et LVM au sein d&#039;un groupe de volumes.&lt;br /&gt;
&lt;br /&gt;
Il est possible d&#039;utiliser le LVM pour tous vos systèmes de fichiers, exception faite de « /boot », qui pose quelques problèmes. Par contre il est tout à fait possible de l&#039;inclure sur un ou plusieurs volumes logiques. D&#039;ailleurs la plupart des distributions proposent aujourd&#039;hui cette option dès l&#039;installation. La seule contrainte est de prévoir le chargement du module LVM dès le démarrage. Pour ce faire, on créera une image initrd contenant le module LVM à l&#039;aide de la commande lvmcreate_initrd. On modifiera également en conséquence le fichier /etc/lilo.conf.&lt;br /&gt;
&lt;br /&gt;
= Configuration du LVM =&lt;br /&gt;
&lt;br /&gt;
Passons maintenant à la pratique.&lt;br /&gt;
&lt;br /&gt;
Pour la mise en application, nous allons reprendre les 3 étapes énoncées ci-dessus. A chaque fois, je présenterai la commande correspondante à la création de l&#039;élément et une commande de recueil d&#039;informations pour vérifier que l&#039;opération a été correctement réalisée.&lt;br /&gt;
&lt;br /&gt;
== L&#039;arborescence du LVM ==&lt;br /&gt;
&lt;br /&gt;
À chaque élément du LVM correspond un fichier spécial dans /dev. Le volume physique est représenté par le fichier spécial du disque dur ou de la partition correspondant. Le groupe de volume dispose d&#039;un répertoire portant son nom dans lequel on trouvera le fichier spécial group.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# ls -l /dev/datas/group&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt; crw-r----- 1 root root 109, 1 jan 1 1970 group&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans ce répertoire, on trouvera également un fichier spécial par volume logique créé à l&#039;intérieur de ce groupe de volumes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# tree /dev/users /dev/public&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt; /dev/users&amp;lt;br /&amp;gt; |--datas&amp;lt;br /&amp;gt; |--group&amp;lt;br /&amp;gt; `--private&amp;lt;br /&amp;gt; /dev/public&amp;lt;br /&amp;gt; |--ftp&amp;lt;br /&amp;gt; |--group&amp;lt;br /&amp;gt; `--web&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Outre les fichiers spéciaux, on trouve également le fichier /etc/lvmtab et /etc/lvmtab.d. Ils contiennent la base de données manipulée par les commandes lvm.&lt;br /&gt;
&lt;br /&gt;
== Création d&#039;un volume physique ==&lt;br /&gt;
&lt;br /&gt;
La première étape consiste à transformer notre disque en volume physique. L&#039;opération s&#039;effectue en trois temps :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Préparation de l&#039;espace&#039;&#039;&#039; à utiliser avec le LVM : cette étape s&#039;effectue grâce à la commande fdisk. Vous allez devoir attribuer le type lvm à votre disque ou votre partition : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;root@pingu# fdisk /dev/hdb&lt;br /&gt;
Commande (m pour aide) : p&lt;br /&gt;
Disk /dev/hdb: 13.5 GB, 13578485760 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1650 cylinders&lt;br /&gt;
Units = cylindres of 16065 * 512 = 8225280 bytes&lt;br /&gt;
 Périphérique Amorce    Début       Fin    Blocs   Id  Système&lt;br /&gt;
 /dev/hdb1            1       730   5863693+  8e  Linux LVM&lt;br /&gt;
 /dev/hdb2          731      1339   4891792+  8e  Linux LVM&lt;br /&gt;
 /dev/hdb3         1340      1650   2498107+  8e  Linux LVM&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Ensuite, il est nécessaire de lancer &#039;&#039;&#039;la commande vgscan&#039;&#039;&#039; si vous utilisez LVM pour la première fois sur le disque dur ou la partition. La commande va créer notamment le fichier /etc/lvmtab et le répertoire /etc/lvmtab.d. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# vgscan&lt;br /&gt;
vgscan -- reading all physical volumes (this may take a while...)&lt;br /&gt;
vgscan -- &amp;quot;/etc/lvmtab&amp;quot; and &amp;quot;/etc/lvmtab.d&amp;quot; successfully created&lt;br /&gt;
vgscan -- WARNING: This program does not do a VGDA backup of your volume group&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Création du volume physique : la commande est pvcreate (physical volume creation). &lt;br /&gt;
pvcreate [-f] &amp;lt;/dev/hdxx&amp;gt; où&amp;lt;br /&amp;gt; -f : force la création du volume. A utiliser si le disque avait déjà été transformé en volume physique.&amp;lt;br /&amp;gt; /dev/hdxx : fichier spécial du disque ou de la partition à transformer en volume physique&lt;br /&gt;
&amp;lt;u&amp;gt;Exemple&amp;lt;/u&amp;gt; : création d&#039;un volume physique à partir de hdb1&lt;br /&gt;
&amp;lt;code&amp;gt;# pvcreate /dev/hdb1&lt;br /&gt;
pvcreate -- physical volume &amp;quot;/dev/hdb1&amp;quot; successfully created&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Création d&#039;un groupe de volume ==&lt;br /&gt;
&lt;br /&gt;
Une fois le volume physique créé, il faut alors insérer le ou les volumes physiques ainsi créés dans un groupe de volumes. On utilise la commande vgcreate :&lt;br /&gt;
&lt;br /&gt;
vgcreate &amp;lt;nom_du_volume&amp;gt;&amp;lt;/dev/hdxx&amp;gt; où&amp;lt;br /&amp;gt; &amp;lt;nom_du_volume&amp;gt; : nom du groupe de volume - l&#039;opération crée alors le répertoire /dev/nom_du_volume contenant le fichier spécial group qui représente ce groupe de volumes.&amp;lt;br /&amp;gt; &amp;lt;/dev/hdxx&amp;gt; : fichier spécial du volume physique&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Exemple&amp;lt;/u&amp;gt; : création d&#039;un groupe de volumes nommé volume1 avec hdb1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# vgcreate volume1 /dev/hdb1&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt; vgcreate -- INFO: using default physical extent size 4 MB&amp;lt;br /&amp;gt; vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte&amp;lt;br /&amp;gt; vgcreate -- doing automatic backup of volume group &amp;quot;volume1&amp;quot;&amp;lt;br /&amp;gt; vgcreate -- volume group &amp;quot;volume1&amp;quot; successfully created and activated&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Création d&#039;un volume logique ==&lt;br /&gt;
&lt;br /&gt;
Une fois le groupe de volume créé, on peut alors le découper en un ou plusieurs volumes logiques grâce à la commande lvcreate :&lt;br /&gt;
&lt;br /&gt;
lvcreate -L tailleK|M|G [-n nom] &amp;lt;nom_volume&amp;gt; où&amp;lt;br /&amp;gt; -L tailleK|M|G : taille du volume logique exprimable en Ko, Mo ou Go&amp;lt;br /&amp;gt; -n nom : nom du volume logique - l&#039;opération crée un fichier spécial portant ce nom pour le volume logique et sera placé dans le répertoire /dev/nom_volume&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nom_volume&amp;gt; : nom du groupe de volumes dans lequel sera créé le volume logique.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Exemple&amp;lt;/u&amp;gt; : création d&#039;un volume logique de 600 Mo nommé part1 dans le groupe de volume volume1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# lvcreate -L 600 -n part1 volume1&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt; lvcreate -- doing automatic backup of &amp;quot;volume1&amp;quot;&amp;lt;br /&amp;gt; lvcreate -- logical volume &amp;quot;/dev/volume1/part1&amp;quot; successfully created&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une particularité de la création d&#039;un volume logique est le choix du mapping entre les LE et les PE. Par défaut, ce mapping est effectué de manière linéaire. Il est possible également de réaliser du stripping (répartition des données sur un ou plusieurs diques), ce qui permet d&#039;améliorer le temps d&#039;accès aux données. Ci-dessous, ce schéma montre la différence de répartition des LE en fonction de ces deux modes.&lt;br /&gt;
&lt;br /&gt;
Des options de la commande lvcreate permettent de donner le nombre de stripes (et donc de volumes physiques utilisés) et leur taille. (Schémas 4 et 5)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schéma 4 : Volume logique en mode linéaire&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:lvm-lvm2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schéma 5 : Volume logique en mode stripping&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:lvm-lvm1.jpg]]&lt;br /&gt;
&lt;br /&gt;
= Recueillir des informations sur le LVM =&lt;br /&gt;
&lt;br /&gt;
A tout moment il est possible de recueillir des informations sur les structures LVM : volume physique, groupe de volumes et volumes logiques. On utilisera pour cela respectivement les commandes pvdisplay, vgdisplay et lvdisplay. Ces commandes ne font en fait qu&#039;afficher dans un format lisible le contenu respectif de la PVRA, VGRA. Nous allons détailler les principales informations au moyen d&#039;exemples ci-dessous.&lt;br /&gt;
&lt;br /&gt;
La description d&#039;un volume physique procure notamment le nom du volume physique, le nom du groupe de volume dans lequel est inséré le dit volume physique, sa taille, le nombre de volumes logiques contenus, la taille des physical extents, le nombre de PE contenus dans le volume physique, le nombre de PE libres.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# pvdisplay /dev/hdb1&lt;br /&gt;
 --- Physical volume ---&lt;br /&gt;
 PV Name               /dev/hdb1&lt;br /&gt;
 VG Name               volume1&lt;br /&gt;
 PV Size               5.59 GB [11727387 secs] /&lt;br /&gt;
   NOT usable 4.19 MB [LVM: 133 KB]&lt;br /&gt;
 PV#                   1&lt;br /&gt;
 PV Status             available&lt;br /&gt;
 Allocatable           yes&lt;br /&gt;
 Cur LV                1&lt;br /&gt;
 PE Size (KByte)       4096&lt;br /&gt;
 Total PE              1430&lt;br /&gt;
 Free PE               1230&lt;br /&gt;
 Allocated PE          200&lt;br /&gt;
 PV UUID               DTWrWh-5oUP-KrdB-US55-c9wP-eKii-6z3uU7&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La description d&#039;un groupe de volumes permet de vérifier son nom, le type d&#039;accès aux données (écriture, lecture), le nombre maximum de volumes logiques créables dans ce groupe de volume, sa taille en PE et LE...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# vgdisplay volume1&lt;br /&gt;
 --- Volume group ---&lt;br /&gt;
 VG Name               volume1&lt;br /&gt;
 VG Access             read/write&lt;br /&gt;
 VG Status             available/resizable&lt;br /&gt;
 VG #                  0&lt;br /&gt;
 MAX LV                256&lt;br /&gt;
 Cur LV                1&lt;br /&gt;
 Open LV               0&lt;br /&gt;
 MAX LV Size           255.99 GB&lt;br /&gt;
 Max PV                256&lt;br /&gt;
 Cur PV                1&lt;br /&gt;
 Act PV                1&lt;br /&gt;
 VG Size               5.59 GB&lt;br /&gt;
 PE Size               4 MB&lt;br /&gt;
 Total PE              1430&lt;br /&gt;
 Alloc PE / Size       150 / 600 MB&lt;br /&gt;
 Free  PE / Size       1280 / 5 GB&lt;br /&gt;
 VG UUID               5XxOO1-ZNl8-zocw-6dR5-44LX-oyYc-MYHpN2&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin la description d&#039;un volume logique contient son nom, le type d&#039;accès aux données, sa taille...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;# lvdisplay /dev/volume1/part1&lt;br /&gt;
 --- Logical volume ---&lt;br /&gt;
 LV Name                /dev/volume1/part1&lt;br /&gt;
 VG Name                volume1&lt;br /&gt;
 LV Write Access        read/write&lt;br /&gt;
 LV Status              available&lt;br /&gt;
 LV #                   1&lt;br /&gt;
 # open                 0&lt;br /&gt;
 LV Size                600 MB&lt;br /&gt;
 Current LE             150&lt;br /&gt;
 Allocated LE           150&lt;br /&gt;
 Allocation             next free&lt;br /&gt;
 Read ahead sectors     1024&lt;br /&gt;
 Block device           58:0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Commandes complémentaires =&lt;br /&gt;
&lt;br /&gt;
Jusqu&#039;à maintenant, nous avons vu comment créer des structures LVM et obtenir de l&#039;information. Nous allons voir maintenant d&#039;autres opérations réalisables pour la gestion du partitionnement et qui mettent en évidence toute la souplesse apportée par le LVM en la matière : agrandir ou réduire un groupe de volume, redimensionner un volume logique.&lt;br /&gt;
&lt;br /&gt;
Si vous modifiez des groupes de volumes, des volumes logiques ou physiques utilisés par le système (ie /, /usr, /var, ...), vous devrez probablement booter sur un livecd : On citera notamment la célèbre knoppix, mais aussi le livecd gparted, le system rescue cd, ... Vérifiez auparavant la présence des outils LVM sur ce CD. La présence d&#039;outils de partitionnement plus convivial ou plus puissants que fdisk est un plus non négligeable, ainsi que celle d&#039;un navigateur internet mode texte (links ...) .&lt;br /&gt;
&lt;br /&gt;
== Redimensionner un groupe de volumes ==&lt;br /&gt;
&lt;br /&gt;
Un groupe de volumes est constitué d&#039;un ou plusieurs volumes physiques. Il est possible à tout moment d&#039;ajouter ou retirer un ou plusieurs volumes physiques afin d&#039;augmenter ou diminuer l&#039;espace disponible d&#039;un groupe de volumes.&lt;br /&gt;
&lt;br /&gt;
C&#039;est là une des plus grandes souplesses du lvm : vous pouvez par exemple ajouter un disque, y créer un nouveau volume physique que vous rajoutez à votre groupe de volumes : autrement dit vous pouvez avoir une partition à cheval entre plusieurs disques, de manière totalement transparente pour le système, avec un gain de performances non négligeable si utilisé à bon escient.&lt;br /&gt;
&lt;br /&gt;
Les commandes sont respectivement vgextend et vgreduce :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;vgextend nom_volume /dev/hdxx&amp;lt;br /&amp;gt; vgreduce nom_volume /dev/hdxx&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
où&lt;br /&gt;
&lt;br /&gt;
nom_volume : nom du groupe de volumes à redimensionner&amp;lt;br /&amp;gt; /dev/hdxx : volume physique à ajouter ou retirer du groupe de volumes.&lt;br /&gt;
&lt;br /&gt;
Un exemple : Vous devez augmenter l&#039;espace du groupe de volumes volume1 de 6 Go. Pour cela vous disposez d&#039;un disque que vous allez ajouter au groupe de volume. Ci-dessous les étapes à réaliser :&lt;br /&gt;
&lt;br /&gt;
# création du volume physique à partir de hdb2 &amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# pvcreate /dev/hdb1&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt; pvcreate -- physical volume &amp;quot;/dev/hdb1&amp;quot; successfully created&amp;lt;/div&amp;gt;&lt;br /&gt;
# ajout de hdb2 au groupe de volumes volume1 &amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# vgextend volume1 /dev/hdb2 &amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt; vgextend -- INFO:maximum logical volume size is 255.99 Gigabyte vgextend&amp;lt;br /&amp;gt; --doing automatic backup of volume group &amp;quot;volume1&amp;quot; vgextend&amp;lt;br /&amp;gt; --volume group &amp;quot;volume1&amp;quot; successfully extended&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On pourra vérifier la bonne réalisation de l&#039;opération grâce à la commande vgdisplay.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La réduction est un peu plus complexe, traitons la sur un exemple : &lt;br /&gt;
&lt;br /&gt;
vous voulez supprimer /dev/hdb du groupe de volumes volume2 qui contient plusieurs volumes physiques (dont /dev/hdb) : &lt;br /&gt;
&lt;br /&gt;
1) Commencez par vérifier que la taille des volumes physiques qui resteront sur le groupe de volumes est suffisante pour accueillir toutes vos données.&lt;br /&gt;
&lt;br /&gt;
2) Il est &#039;&#039;&#039;fortement&#039;&#039;&#039; conseillé de faire une sauvegarde de vos données&lt;br /&gt;
&lt;br /&gt;
3) Afin de pouvoir supprimer /dev/hdb de volume2, on doit d&#039;abord déplacer les données qu&#039;il contient sur les autres volumes physiques de volume2 : on fait ça avec la commande pvmove en donnant comme argument le nom du volume physique dont on veut migrer les données : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# pvmove /dev/hdb &amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pvmove trouve de lui même l&#039;endroit où déplacer les données (en fait chaque groupe de volumes possède une politique d&#039;allocation qui indique quels volumes physiques doivent être utilisés en priorités, mais la gestion de cette politique dépasse le cadre de cet article). Vous pouvez si vous préférez spécifier un ou plusieurs volumes de destinations (voir le manuel de pvmove pour plus d&#039;informations).&lt;br /&gt;
&lt;br /&gt;
4) Maintenant on peut retirer /dev/hdb du groupe de volumes en toute tranquillité : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# vgreduce volume2 /dev/hdb &amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez aussi utiliser : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# vgreduce -a volume2 &amp;lt;/nowiki&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande supprime tous les volumes physiques vides de volume2&lt;br /&gt;
&lt;br /&gt;
== Redimensionner un volume logique ==&lt;br /&gt;
&lt;br /&gt;
De la même façon, il est possible de diminuer ou augmenter la taille d&#039;un volume logique au moyen des commandes lvreduce et lvextend.&lt;br /&gt;
&lt;br /&gt;
Ces commandes peuvent s&#039;utiliser avec une taille absolue ou relative : &lt;br /&gt;
Si vous donnez une taille absolue (&amp;quot;changer la taille de tel volume à 10 gigas&amp;quot;) :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;lvextend -L taille /dev/nom_volume/vol_logique&amp;lt;br /&amp;gt; lvreduce -L taille /dev/nom_volume/vol_logique &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous donnez une taille relative (&amp;quot;ajouter 2 gigas à tel volume&amp;quot;)&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;lvextend -L +taille /dev/nom_volume/vol_logique&amp;lt;br /&amp;gt; lvreduce -L -taille /dev/nom_volume/vol_logique &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
où&amp;lt;br /&amp;gt; -L +taille : taille initiale augmentée de la valeur utilisée pour taille.&amp;lt;br /&amp;gt;&lt;br /&gt;
-L -taille : taille initiale retranchée de la valeur utilisée pour taille.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les étapes à respecter pour agrandir un volume logique :&lt;br /&gt;
&lt;br /&gt;
# démontage du système de fichier (commande umount) ; &lt;br /&gt;
# augmentation de la taille du volume logique (on utilisera pour cela un utilitaire fourni dans le package LVM : lvextend), en spécifiant la nouvelle taille ; &lt;br /&gt;
# vérification forcée du système de fichier (nécessaire avant l&#039;étape suivante)&lt;br /&gt;
# augmentation de la taille du système de fichier (voir le tableau plus bas) en laissant le programme trouver la nouvelle taille; &lt;br /&gt;
# remontage du système de fichiers. &lt;br /&gt;
&lt;br /&gt;
ce qui donne par exemple pour ajouter 10 gigas à vol_logique (en ext3) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;umount /dev/nom_volume/vol_logique&amp;lt;br /&amp;gt;lvextend -L +10G /dev/nom_volume/vol_logique &amp;lt;br /&amp;gt;e2fsck -f /dev/nom_volume/vol_logique &amp;lt;br /&amp;gt;resize2fs /dev/nom_vol/vol_logique &amp;lt;br /&amp;gt;mount /dev/nom_volume/vol_logique [...]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et pour réduire un volume logique :&lt;br /&gt;
&lt;br /&gt;
# démontage du système de fichier (commande umount) ; &lt;br /&gt;
# réduction de la taille du système de fichiers (voir le tableau plus bas) en spécifiant la nouvelle taille; &lt;br /&gt;
# réduction de la taille du volume logique (on utilisera pour cela un utilitaire fourni dans le package LVM : lvreduce) en respécifiant la taille&lt;br /&gt;
# remontage du système de fichiers. &lt;br /&gt;
&lt;br /&gt;
par exemple pour changer la taille de vol_logique à 5G (en ext3) : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;umount /dev/nom_volume/vol_logique&amp;lt;br /&amp;gt;e2fsck -f /dev/nom_volume/vol_logique &amp;lt;br /&amp;gt;resize2fs /dev/nom_vol/vol_logique 5G &amp;lt;br /&amp;gt;lvreduce -L 5G /dev/nom_volume/vol_logique &amp;lt;br /&amp;gt;mount /dev/nom_volume/vol_logique [...]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IMPORTANT :&lt;br /&gt;
Vous  noterez qu&#039;on réduit d&#039;abord le système de fichier puis le volume logique. La raison est simple : quand on exécute lvreduce, les données dans la partie réduite sont tout simplement supprimées du volume, il est donc indispensable que le système de fichiers ait déjà la bonne taille. Vous devez passer la même taille aux 2 commandes, donc ne donner pas une taille relative à lvreduce, cela pourrait vous induire en erreur.&lt;br /&gt;
&lt;br /&gt;
On pourra vérifier le bon déroulement de l&#039;opération grâce aux commandes lvdisplay pour le volume logique et df pour le système de fichiers. Les remarques ci-dessus sont une description générale de l&#039;opération. Ces étapes peuvent toutefois varier en fonction du système de fichiers utilisé. Certains procurent en effet la possibilité d&#039;effectuer les opérations de redimensionnement « à chaud » c&#039;est-à-dire sans démontage. Ci-contre un tableau comparatif des différents systèmes de fichiers les plus couramment rencontrés (Tableau 1).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tableau 1 : manipulation des systèmes de fichiers&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Système de fichiers&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | diminution&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Augmentation&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Utilitaires&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;15%&amp;quot; | ext3&lt;br /&gt;
| width=&amp;quot;22%&amp;quot; | démontage préalable&lt;br /&gt;
| width=&amp;quot;22%&amp;quot; | démontage préalable&lt;br /&gt;
| width=&amp;quot;42%&amp;quot; | e2fsprogs (resize2fs)&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;15%&amp;quot; | ReiserFS&lt;br /&gt;
| width=&amp;quot;22%&amp;quot; | démontage préalable&lt;br /&gt;
| width=&amp;quot;22%&amp;quot; | opération on-line&lt;br /&gt;
| width=&amp;quot;42%&amp;quot; | reiserfsprogsv (resize_reiserfs)&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;15%&amp;quot; | XFS&lt;br /&gt;
| width=&amp;quot;22%&amp;quot; | impossible&lt;br /&gt;
| width=&amp;quot;22%&amp;quot; | opération on-line&lt;br /&gt;
| width=&amp;quot;42%&amp;quot; | xfsprogs (xfs_growfs)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Redimensionner un volume physique ==&lt;br /&gt;
&#039;&#039;&#039;S&#039;applique uniquement au LVM2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION&#039;&#039;&#039; La prise en charge de cette fonctionnalité par LVM2 est relativement récente, elle est de ce fait assez peu documentée, et assez risquée. Il est très fortement conseillé (encore plus que d&#039;habitude) de sauver ses données, sa table de partition, ses métadatas LVM avant.&lt;br /&gt;
&lt;br /&gt;
Je vous rappelle que vous êtes seul responsable de vos essais.&lt;br /&gt;
&lt;br /&gt;
Gardez à l&#039;esprit que le risque de défaillance du matériel existe toujours, et s&#039;y ajoute le risque beaucoup plus conséquent d&#039;erreur humaine. Lors de la modification d&#039;une table de partitions, une simple faute de frappe peut être à l&#039;origine d&#039;une perte de données. &lt;br /&gt;
&lt;br /&gt;
Il sera nécessaire pour une manipulation sur un volume physique utilisé par votre distribution de booter sur un livecd.&lt;br /&gt;
Nous avons précédemment vu les principales manipulations sur un groupe de volumes et sur des volumes logiques : Mais reste les manipulations sur les volumes physiques eux même, notamment le redimensionnement : &lt;br /&gt;
&lt;br /&gt;
Admettons par exemple que vous ayez un groupe de volumes nom_volume utilisant les volumes physiques hda1 et hdb, et que vous avez d&#039;autres partitions n&#039;utilisant pas le LVM sur hda. Il est possible qu&#039;au bout d&#039;un certain temps vous n&#039;ayez plus besoin de hda2, vous supprimez les données dessus et vous avez alors une certaine quantité d&#039;espace disponible sur hda&lt;br /&gt;
&lt;br /&gt;
Il pourrait être utile d&#039;ajouter cet espace au groupe de volumes nom_volume. Nous avons précédemment vu une méthode possible : création d&#039;un nouveau volume physique sur hda2 et ajout de ce volume physique à nom_volume. Cependant, cette solution n&#039;est pas idéale : créer deux volumes physiques &#039;&#039;&#039;sur le même&#039;&#039;&#039; disque entraînera probablement une perte de performances : &lt;br /&gt;
Les têtes de lecture passeront un certain temps à faire du tourisme sur le disque pour trouver les données (un peu comme dans le cas d&#039;une partition ntfs fragmentée).&lt;br /&gt;
&lt;br /&gt;
Donc on préférera le redimensionnement du volume physique existant : &lt;br /&gt;
Cette méthode suppose que l&#039;espace à ajouter au volume physique se trouve juste après le dit volume physique : il est seulement possible d&#039;agrandir un pv &amp;quot;vers la droite&amp;quot; &lt;br /&gt;
&lt;br /&gt;
1) Première étape : sauvegarde des données &#039;&#039;&#039;fortement conseillée&#039;&#039;&#039;&lt;br /&gt;
Puis démontez vos partitions, et fermez tous les programmes susceptibles de les utiliser. &lt;br /&gt;
&lt;br /&gt;
2) Deuxième étape : supprimer la partition inutile (ici hda2) si ce n&#039;est pas déja fait : avec fdisk ou autre (voir man fdisk, man parted, man cfdisk ...)&lt;br /&gt;
&lt;br /&gt;
3) Troisième étape : agrandir la partition hébergeant le volume physique avec&lt;br /&gt;
fdisk&lt;br /&gt;
&lt;br /&gt;
C&#039;est une manipulation délicate. D&#039;abord un minimum de théorie : quand on crée ou supprime une partition avec fdisk, il ne touche pas aux données, seulement aux partitions (attention, ça ne veut pas dire qu&#039;on peut faire n&#039;importe quoi avec fdisk : si la table de partition n&#039;est pas bonne, vos données seront illisibles). Il est donc tout à fait possible de supprimer une partition et de la recréer &#039;&#039;&#039;à partir du même secteur&#039;&#039;&#039; mais en plus grand sans perdre les données qui s&#039;y trouvent. C&#039;est ce que nous allons faire (Je répète, il faut que l&#039;espace libre se trouve &#039;&#039;&#039;juste après&#039;&#039;&#039; le pv à agrandir)&lt;br /&gt;
&lt;br /&gt;
commencez par lancer fdisk : &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; #fdisk /dev/hda &amp;lt;br /&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis taper l : Cette commande affiche la table de partitions. Notez sur un bout de papier le début et la fin de votre volume physique (ici hda1). Il est fortement conseillé de travailler avec un affichage en cylindres (par défaut dans fdisk) car certains programmes arrondissent les partitions aux cylindres.&lt;br /&gt;
&lt;br /&gt;
Maintenant supprimez cette partition : avec fdisk, commande d puis vous entrez le numéro de la partition (ici 1).&lt;br /&gt;
&lt;br /&gt;
Puis recréez une partition : commande n, puis entrez le numéro : ici 1 (mieux vaut garder le même), fdisk va vous demander le cylindre de début de la partition : entrez exactement le même que celui de l&#039;ancienne partition, Et entrez le cylindre de fin que vous voulez (toujours supérieur à l&#039;ancien, cette méthode ne fonctionne que pour un agrandissement). Par défaut, fdisk étendra la partition sur tout l&#039;espace non partitionné si vous tapez seulement entrée.&lt;br /&gt;
&lt;br /&gt;
Enfin changez le type de cette partition en lvm : commande t, numéro de la partition (1), puis type (8e)&lt;br /&gt;
&lt;br /&gt;
Pour l&#039;instant, les modifications sont seulement en mémoire. Vérifiez qu&#039;elles sont correctes avec la commande l, puis vérifiez à nouveau et encore une fois. Quand vous êtes sur de vous, tapez w : Les modifications seront écrites sur le disque. &lt;br /&gt;
&lt;br /&gt;
4) Maintenant la partition hébergeant le volume physique (hda1) est agrandie, Mais le pv ne l&#039;est pas encore :  On s&#039;en occupe avec : &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; #pvresize /dev/hda1 &amp;lt;br /&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attention, on ne spécifie pas de taille : pvresize détectera de lui même la taille de la partition et agrandira le pv en conséquence&lt;br /&gt;
&lt;br /&gt;
5) Eh bien c&#039;est terminé, bravo ! Maintenant vous pouvez vérifier avec pvdisplay et vgdisplay que vous disposez bien de l&#039;espace supplémentaire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Et pour réduire un volume physique : &amp;lt;br /&amp;gt;&lt;br /&gt;
c&#039;est un peu plus complexe : Il est nécessaire que les LE du volume physique qui seront effacés soient non occupées. A ma connaissance, il n&#039;existe pas de commande permettant de déplacer les infos situés dans les n derniers LE, mais c&#039;est prévu pour une prochaine version. En outre c&#039;est encore plus expérimental que l&#039;agrandissement qui était déja lui même expérimental ... Tout essai à vos risques et périls.&lt;br /&gt;
&lt;br /&gt;
La méthode : &amp;lt;br /&amp;gt;&lt;br /&gt;
Comme s&#039;habitude sauvegarde, démontage, ... Puis : &lt;br /&gt;
&lt;br /&gt;
1) Réduire le pv avec :&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt; #pvresize --setphysicalvolumesize taille /dev/hda1  &amp;lt;br /&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
Ici on réduit à taille le volume physique hda1&lt;br /&gt;
&lt;br /&gt;
2) Faire la même manipulation que pour l&#039;agrandissement avec fdisk mais cette fois on diminue la taille de la partition à &#039;&#039;&#039;exactement la même taille&#039;&#039;&#039; que celle donnée à pvresize, toujours en gardant le même début. Attention aux conversions cylindre/secteurs/Go/Mo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Les limitations, comment les contourner ? &amp;lt;br/&amp;gt;&lt;br /&gt;
La principale limitation est l&#039;impossibilité de déplacer le début de la partition. Si vous voulez déplacer un volume physique, il vous faudra :&lt;br /&gt;
D&#039;abord créer un nouveau pv (sur une nouvelle partition) à l&#039;endroit ou vous voulez mettre votre ancien volume, ajouter ce nouveau pv à votre groupe de volume, puis retirer l&#039;ancien pv du groupe de volume (après avoir évidement migrer les données qu&#039;il contient). Toutes ces manipulations ont été détaillées dans ce document.&lt;br /&gt;
L&#039;inconvénient de cette méthode est la nécessité de disposer d&#039;un espace au moins aussi grand que l&#039;ancien pv à l&#039;endroit où vous voulez le mettre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Une fonction particulière du LVM : la réalisation de snapshots ==&lt;br /&gt;
&lt;br /&gt;
La difficulté fréquemment rencontrée pour la réalisation de sauvegardes est de disposer de données cohérentes. Cela implique parfois d&#039;arrêter un ou plusieurs services comme dans le cas des bases de données. Le LVM apporte un élément de réponse avec la possibilité de créer des snapshots. Il s&#039;agit d&#039;image à un moment t des données situées sur un volume logique. Le volume de snapshot ne nécessite pas autant d&#039;espace que le volume initial dans la mesure où il ne contiendra réellement que les métadatas concernant les données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Autres commandes ==&lt;br /&gt;
&lt;br /&gt;
Cet article n&#039;abordera pas le détail de toutes les commandes, qui sont plutôt simples à utiliser une fois que les concepts de base du LVM sont compris. Dans le tableau ci-après une liste de commandes utilisables et la description rapide de leur rôle. Voir le man de la commande pour plus d&#039;informations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Commandes générales&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* lvmcreate_initrd : création d&#039;une image initrd lorsque le système utilise le LVM&lt;br /&gt;
* lvmdiskscan : scanner l&#039;ensemble des disques et partitions pour éditer une description de l&#039;espace&lt;br /&gt;
* vgscan : création de /etc/lvmtab et /etc/lvmtab.d&lt;br /&gt;
&#039;&#039;&#039;Gestion des volumes physiques&#039;&#039;&#039;&lt;br /&gt;
* pvchange : changer les attributs d&#039;un PV&lt;br /&gt;
* pvcreate : création d&#039;un PV&lt;br /&gt;
* pvdata : afficher des informations de debug&lt;br /&gt;
* pvdisplay : afficher des informations d&#039;un PV&lt;br /&gt;
* pvmove : migrer les données d&#039;un PV en vue de sa suppression&lt;br /&gt;
* pvresize : redimensionnement d&#039;un PV (délicat)&lt;br /&gt;
* pvscan : lister tous les PV existant sur tous les disques&lt;br /&gt;
&#039;&#039;&#039;Gestion des groupes de volumes&#039;&#039;&#039;&lt;br /&gt;
* vgcfgbackup : sauvegarder la VGDA&lt;br /&gt;
* vgcfgrestore : restaurer la VGDA&lt;br /&gt;
* vgchange : changer les attributs d&#039;un VG&lt;br /&gt;
* vgck : vérification de la VGDA&lt;br /&gt;
* vgcreate : créer un VG&lt;br /&gt;
* vgdisplay : voir les informations&lt;br /&gt;
* vgexport : désactiver un VG pour pouvoir extraire les PV&lt;br /&gt;
* vgimport : activer et déclarer un VG sur le système&lt;br /&gt;
* vgextend : ajouter un ou plusieurs PV dans un VG&lt;br /&gt;
* vgmerge : fusionner deux VG&lt;br /&gt;
* vgmknodes : recréer /dev/nom_volume et le fichier spécial group&lt;br /&gt;
* vgreduce : extraire un ou plusieurs PV d&#039;un VG&lt;br /&gt;
* vgremove : supprimer un VG&lt;br /&gt;
* vgrename : renommer un VG&lt;br /&gt;
&#039;&#039;&#039;Gestion des volumes logiques&#039;&#039;&#039;&lt;br /&gt;
* lvcreate : création d&#039;un VL lvchange : modification des attributs d&#039;un VL&lt;br /&gt;
* lvdisplay : voir les informations d&#039;un VL&lt;br /&gt;
* lvextend : augmenter la taille d&#039;un VL&lt;br /&gt;
* lvreduce : réduire la taille d&#039;un VL&lt;br /&gt;
* lvremove : supprimer un VL&lt;br /&gt;
* lvrename : renommer un VL&lt;br /&gt;
* lvscan : recherche de tous les VL existant&lt;br /&gt;
&lt;br /&gt;
= Utilisation pratique du LVM dans la gestion de l&#039;espace =&lt;br /&gt;
Vous diposez d&#039;un groupe de volume dans lequel vous n&#039;avez plus d&#039;espace disponible. Pour pouvoir augmenter un des volumes logiques, il va donc falloir ajouter un disque au groupe de volume. Comme pour tout élément du LVM, la première étape consiste à le transformer en volume physique (&amp;quot;pvcreate&amp;quot;). Puis on va insérer le nouveau volume physique dans le groupe de volume au moyen de la commande &amp;quot;vgextend&amp;quot;. C&#039;est tout !&lt;br /&gt;
Plus complexe, vous pouvez, pour quelle que raison que ce soit, envisager de déplacer un groupe de volume d&#039;une machine à une autre. Si une sauvegarde de données est toujours conseillée par sécurité (mais comme vous êtes prévoyant vous en disposez de toute façon ;)), l&#039;opération va consister à désactiver le groupe de volume à déplacer, enregistrer les métadatas le concernant. Puis on va réinjecter ces métadatas sur la machine destinataire et réactiver le groupe de volume sur cette machine. Les données seront alors accessibles de la même façon que sur l&#039;ancienne machine (sous réserve de conserver les mêmes points de montage).&lt;br /&gt;
Ci-dessous les étapes effectuées :&lt;br /&gt;
*# désactivation du groupe de volume (&amp;quot;datas&amp;quot;) :&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;# vgchange n datas &amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
*# sauvegarde des métadatas du groupe de volume :&amp;lt;br /&amp;gt; # vgcfgbackup datas &lt;br /&gt;
*# retrait du groupe de volume de la configuration système :&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;# vgexport datas &amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*# arrêt de la première machine, transfert des disques dans la deuxième et redémarrage des machines &lt;br /&gt;
*# restauration des métadatas concernant ce groupe de volume sur la nouvelle machine :&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;# vgcfgrestore -f datas.conf /dev/hda3&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt; # vgcfgrestore -f datas.conf /dev/hda4&amp;lt;/code&amp;gt; si les volumes physiques sont hda3 et hda4. &lt;br /&gt;
*# déclaration du groupe de volume sur la machine :&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;# vgimport datas /dev/hda3 /dev/hda4&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
*# activation du groupe de volume importé :&amp;lt;br /&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;# vgchange y datas &amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Il ne vous reste plus qu&#039;à modifier en conséquence /etc/fstab pour le montage automatique des systèmes de fichiers contenus dans le groupe de volume.&lt;br /&gt;
= Evolution du LVM : LVM 2 =&lt;br /&gt;
Avec la sortie du noyau 2.6, le LVM a été revu et corrigé et la version LVM2 est disponible de base avec ce noyau. Il est possible de l&#039;utiliser avec un noyau 2.4.x moyennant recompilation de ce même noyau.&lt;br /&gt;
== Le device-mapper ==&lt;br /&gt;
Le driver du LVM a été complètement réécrit, ce qui lui procure encore plus d&#039;efficacité et de souplesse. La grande nouveauté réside dans l&#039;utilisation de ce driver, utilisé pour gérer la couche d&#039;abstraction nécessaire dans le cadre de la gestion de volumes logiques. Cette couche d&#039;abstraction a pour fonction principale de réaliser le mapping résultant de l&#039;agrégat par bandes (stripping) des périphériques physiques utilisés.&lt;br /&gt;
Le device-mapper définit les nouveaux périphériques de bloc composés de tranches de secteurs de périphériques physiques existant. Le mapping réalisé prend la forme suivante :&lt;br /&gt;
&amp;lt;start &amp;gt; &amp;lt; length &amp;gt; &amp;lt; target &amp;gt; [ &amp;lt; target args...&amp;gt;]&lt;br /&gt;
Les targets peuvent être de plusieurs natures :&lt;br /&gt;
** linear : c&#039;est le cas le plus couramment utilisé dans le LVM. Les arguments nécessaires seront alors le device utilisé et le secteur de début.&lt;br /&gt;
** stripped : on utilisera cette cible lorsque l&#039;on réalise du stripping avec le LVM. Les arguments seront alors le nombre de stripes et leur taille, puis les paires device name / secteurs. &lt;br /&gt;
** error : toutes les I/O sur les secteurs ainsi marquées sont définies en erreur. &lt;br /&gt;
** snapshot : permet de réaliser des snapshots asynchrones grâce au LVM. &lt;br /&gt;
** mirror : permet d&#039;implémenter les éléments nécessaires à l&#039;exécution de la commande pvmove. &lt;br /&gt;
== Utilisation d&#039;un arbre binaire ==&lt;br /&gt;
Pour réaliser le mapping, un [http://fr.wikipedia.org/wiki/Arbre_binaire arbre binaire] a été utilisé, ceci afin de rendre la lecture de la table plus rapide et donc le LVM plus efficace.&lt;br /&gt;
== Une plus grande configurabilité ==&lt;br /&gt;
LVM2 peut fonctionner sans ajout de fichier de configuration mais l&#039;emploi de celui-ci permet d&#039;optimiser ses performances. Un certain nombre d&#039;éléments peuvent ainsi être paramétrés :&lt;br /&gt;
** les devices à utiliser pour réaliser le LVM, ce qui permet d&#039;éviter des scans de périphériques inutiles et qui nuisent à la performance (ex : lecteur de CD-ROM). A cela, on ajoute la gestion d&#039;un système de cache contenant ces informations qui permet d&#039;accroitre encore plus l&#039;efficacité. &lt;br /&gt;
** possibilité de déterminer l&#039;emplacement des fichiers spéciaux des groupes volumes &lt;br /&gt;
** possibilité de disposer de logs configurables (taille, contenu, emplacement...) &lt;br /&gt;
** paramétrage des backups de la configuration existante et de l&#039;archivage des anciennes configuration du LVM (métadatas) &lt;br /&gt;
** définition du type de LVM employé par défaut (1 ou 2), même s&#039;il est possible dans la compilation de n&#039;inclure que la gestion du LVM2, dans le cas où la gestion de la compatibilité descendante n&#039;est pas nécessaire. &lt;br /&gt;
** définition du nombre de copies de secours des métadatas sur un volume physique, un peu à l&#039;image des copies des superblocs sur le système de fichiers de type ext2. &lt;br /&gt;
== Compatibilité LVM1 / LVM2 ==&lt;br /&gt;
Il est possible d&#039;utiliser conjointement LVM1 et 2 sur un même système, et/ou de convertir du LVM 1 en 2 et inversement.&lt;br /&gt;
On peut effectivement utiliser sur un même système les deux versions de LVM, à condition que ce ne soit pas dans le même groupe de volumes. Les commandes LVM ont en effet un commutateur supplémentaire, -M, qui permet de faire ce choix. (-M 1 ou -M 2)&lt;br /&gt;
D&#039;autre part, la comande vgconvert permet la conversion des métadatas pour migrer de LVM1 à LVM2&lt;br /&gt;
== Autre ==&lt;br /&gt;
LVM2 permet d&#039;assouplir encore plus la gestion de l&#039;espace, dans la manipulation des volumes logiques. La commande lvcreate par exemple donne maintenant la possibilité de choisir le périphérique voire la tranche de PE à utiliser.&lt;br /&gt;
&lt;br /&gt;
= En conclusion... =&lt;br /&gt;
Voilà donc un outil de plus qui fait qu&#039;un système Linux peut être véritablement efficace et optimiser la disponibilité d&#039;un serveur en production. L&#039;outil LVM peut également être utilisé avantageusement sur un poste personnel, pour s&#039;éviter les opérations fastidieuses liées à la gestion de l&#039;espace disque.&lt;br /&gt;
= Liens utiles =&lt;br /&gt;
** HOWTO LVM : http://tldp.org/HOWTO/LVM-HOWTO &lt;br /&gt;
** La principale mailing-liste d&#039;aide : http://lists.sistina.com/mailman/listinfo &lt;br /&gt;
** Trouver les sources de LVM : http://www.sistina.com/products_lvm.htm &lt;br /&gt;
** Un autre projet de gestion de volumes logiques, EVMS : http://evms.sourceforge.net &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Anne le 29/10/2004.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 29/10/2004, Anne&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Ge</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=RAID&amp;diff=14991</id>
		<title>RAID</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=RAID&amp;diff=14991"/>
		<updated>2007-10-13T17:29:51Z</updated>

		<summary type="html">&lt;p&gt;Ge : /* Mise en pratique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Gestion des disques et systèmes de fichiers]]&lt;br /&gt;
= Raid logiciel sous Linux =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Raid logiciel sous Linux&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par [http://www.caids.org/~tricon/lionel Lionel Tricon]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Un petit tutoriel sur la configuration du Raid logiciel sous Linux.&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Le principe du [#RAID RAID] repose sur l&#039;idée de combiner plusieurs disques durs bon marché (indifféremment IDE ou SCSI) dans le but de :&lt;br /&gt;
&lt;br /&gt;
* Etendre la capacité de stockage en ligne possible ; &lt;br /&gt;
* Introduire une notion de redondance (pour autoriser une plus grande sécurisation des données) ; &lt;br /&gt;
* Améliorer les performances. &lt;br /&gt;
&lt;br /&gt;
En effet, la capacité des disques actuels, même si elle s&#039;est singulièrement améliorée ces dernières années (on trouve couramment du 18 ou du 36 Gigas de nos jours), reste tout de même peu de chose lorsque l&#039;on souhaite parler en Téra et non plus en Giga.&lt;br /&gt;
&lt;br /&gt;
Même sans aller jusqu&#039;à vouloir stocker de grandes quantités de données (soyons raisonnable, 9 Giga devrait suffire pour un petit serveur web ...), on peut vouloir utiliser la notion de redondance du Raid afin d&#039;améliorer la tolérance aux pannes de son architecture : les données seront dupliquées sur des disques différents afin de pouvoir palier à la perte d&#039;un disque.&lt;br /&gt;
&lt;br /&gt;
Si la résistance aux pannes de l&#039;architecture n&#039;est pas une contrainte majeure (on peut envisager de sauvegarder sur bande tous les soirs son serveur de fichiers), on peut utiliser le Raid pour étendre simplement la capacité de stockage possible, et ce de manière transparente pour le système : 4 disques de 4,3Go donnant une partition utile de ~16Go.&lt;br /&gt;
&lt;br /&gt;
On peut vouloir aussi gagner en performance sur les I/O disques : en effet, lire ou écrire sur de multiples disques permet de paralléliser les opérations (surtout sur des bus différents) et donc de gagner en performances.&lt;br /&gt;
&lt;br /&gt;
En fait, il ne faut d&#039;ailleurs pas parler d&#039;un seul Raid, mais bien de plusieurs : [#linear Mode Linéaire], [#raid0 Raid 0], [#raid1 Raid 1], [#raid01 Raid 0+1], [#raid4 Raid 4] ou encore [#raid5 Raid 5]. Il conviendra donc d&#039;analyser à l&#039;avance ses besoins pour faire le bon choix.&lt;br /&gt;
&lt;br /&gt;
Je n&#039;aborderai que le Raid logiciel (software) dans ce document et non le Raid matériel (hardware). Le premier est supporté directement dans le code de l&#039;OS alors que l&#039;intelligence du second est déportée dans du hardware : que ce soit sous forme d&#039;une carte à enficher dans le serveur (nécessite un driver) ou encore dans une baie extérieure (transparent pour l&#039;OS). On peut dire que le Raid logiciel est moins performant, moins tolérant mais beaucoup plus accessible financièrement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : Dans presque tous les RAIDS que l&#039;on va aborder (excepté le RAID linéaire et le raid 0), il sera possible de configurer des disques de rechange (spare disks) qui seront automatiquement utilisés pour reconstruire le RAID dans le cas de pannes disques (pas dans le cas de pannes sur le contrôleur IDE ou SCSI).&lt;br /&gt;
&lt;br /&gt;
== Le Raid et Linux ==&lt;br /&gt;
&lt;br /&gt;
Le mieux est de directement utiliser le support RAID présent dans les distributions Linux récentes (version des RaidTools : 0.90) : j&#039;ai personnellement testé la distribution Linux RedHat 6.1 sur plateforme Alpha et la Mandrake 7.2 Intel sans rencontrer de soucis majeurs.&lt;br /&gt;
&lt;br /&gt;
Vérifiez que les modules linear, raid0, raid1 et raid5 sont chargés. Au pire, ajoutez les dans le fichier /etc/modules :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# modprobe linear&lt;br /&gt;
# modprobe raid0&lt;br /&gt;
# modprobe raid1&lt;br /&gt;
# modprobe raid5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On valide ensuite l&#039;existence du fichier virtuel &#039;&#039;/proc/mdstat&#039;&#039; (Par défaut, le noyau est compilé avec le support du RAID) et on vérifie l&#039;installation du package &#039;&#039;raidtools&#039;&#039; (format rpm sur la RedHat et la Mandrake) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# cat /proc/mdstat&lt;br /&gt;
Personalities : [linear] [raid0] [raid1] [raid5] /* liste des drivers */&lt;br /&gt;
read_ahead not set&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# rpm -qa | grep raid&lt;br /&gt;
raidtools-0.90-8mdk &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le seule fichier que l&#039;on aura à configurer pour tous les RAIDS sera le fichier &#039;&#039;/etc/raidtab&#039;&#039; (simple, non?) et le fichier &#039;&#039;/etc/fstab&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Si vous ne disposez pas de plusieurs disques vous pouvez utiliser des partitions à la place. Cela ne vous apportera ni amélioration de performance, ni haute disponibilité, mais au moins une grande satisfaction de pouvoir mettre en pratique vos connaissances ;-)&lt;br /&gt;
&lt;br /&gt;
== Niveaux de RAID disponibles sous Linux ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode Linéaire&#039;&#039;&#039; [ [#linear_exemple exemple] ]&amp;lt;br /&amp;gt; Cette solution est pertinente lorsque l&#039;on souhaite étendre la capacité de stockage disponible en ligne sans introduire une notion de tolérance aux pannes. Cette solution combine les capacités de stockage d&#039;un ensemble de disques existants (les données sont d&#039;abord écrites sur le premier disque, puis lorsqu&#039;il est plein sur le second, etc...) et permet d&#039;utiliser 100% de l&#039;espace disque utile.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Permet de disposer de 100% de l&#039;espace disque dans une partition ;&amp;lt;br /&amp;gt; - Moins de temps CPU mobilisé par le RAID dans le noyau. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Pas de haute disponibilité : la perte d&#039;un disque entraine la perte des données ;&amp;lt;br /&amp;gt; - Quasiment pas d&#039;amélioration des performances (on peut cependant obtenir une amélioration si des I/O se produisent de manières concurrentes sur des disques différents). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0&#039;&#039;&#039; [ [#raid0_exemple exemple] ]&amp;lt;br /&amp;gt; Cette méthode (striping) est souvent utilisée lorsque la haute disponibilité des données n&#039;est pas nécessaire (on doit disposer d&#039;au moins 2 disques). Elle permet d&#039;obtenir une amélioration des performances I/O (lecture et écriture) tout en restant très proche du mode linéaire. Elle permet en effet d&#039;améliorer l&#039;algorithme en dispatchant les données sur l&#039;ensemble des disques (les données sont découpées puis dispersées sur les disques sans redondance).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Permet de disposer de 100% de l&#039;espace disque dans une partition ;&amp;lt;br /&amp;gt; - Amélioration des performances I/O en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Pas de haute disponibilité : la perte d&#039;un disque entraîne la perte des données. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 1&#039;&#039;&#039; [ [#raid1_exemple exemple] ]&amp;lt;br /&amp;gt; Ce mode (mirroring) implémente une stricte duplication des données sur tous les disques présents dans le miroir (on doit disposer d&#039;au moins 2 disques). L&#039;information étant enregistrée N fois sur les disques (permet de gagner du temps en lecture même si on en perds lors de l&#039;écriture), si on perds N-1 disques on ne perds pas les données. Il est à noter que l&#039;on perds tout de même 50% de l&#039;espace disque utile.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte de N-1 disques ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Dégradation des performances en écriture ;&amp;lt;br /&amp;gt; - Mobilise un peu plus de temps CPU dans le noyau ;&amp;lt;br /&amp;gt; - Perte de 50% de l&#039;espace disque. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0+1&#039;&#039;&#039; [ [#raid01_exemple exemple] ]&amp;lt;br /&amp;gt; Comme son nom l&#039;indique, cette solution combine le RAID 0 et le RAID 1. Elle permet d&#039;améliorer les performances I/O (Input/Output) en lecture tout en permettant une bonne disponibilité des données grâce à leur duplication sur l&#039;ensemble des disques. Mais tout comme le mode miroir, on perd 50% de l&#039;espace disque potentiellement disponible.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un côté du miroir ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Mobilise un peu plus de temps CPU dans le noyau ;&amp;lt;br /&amp;gt; - Perte de 50% de l&#039;espace disque. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 4&#039;&#039;&#039; [ [#raid4_exemple exemple] ]&amp;lt;br /&amp;gt; L&#039;algorithme utilisé ici (striping) permet de dispatcher les I/O sur l&#039;ensemble des disques (au moins 3) tout en réservant un disque pour sauvegarder une donnée supplémentaire de parité. De fait, si on perds un disque, on peut reconstituer l&#039;information manquante. Cependant, l&#039;utilisation d&#039;un disque de parité ajoute un goulot d&#039;étranglement au système (toute écriture va provoquer un accès au disque de parité), pour cela il est préférable d&#039;utiliser à la place le Raid5.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un disque ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - On perds l&#039;équivalent d&#039;un disque pour le stockage des données ;&amp;lt;br /&amp;gt; - On risque de plafonner le débit en écriture rapidement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 5&#039;&#039;&#039; [ [#raid5_exemple exemple] ]&amp;lt;br /&amp;gt; Le RAID 5 est sensiblement identique au RAID 4 mais améliore le procédé en stripant l&#039;information de parité sur l&#039;ensemble des disques.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un disque ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - On perds l&#039;équivalent d&#039;un disque pour le stockage des données.&lt;br /&gt;
&lt;br /&gt;
== Disques de rechange (ou spare) ==&lt;br /&gt;
&lt;br /&gt;
Les RAIDS 1, 4 et 5 peuvent utiliser la notion de disques de rechange. Un disque qui va venir remplacer automatiquement un disque en faute. Linux autorise l&#039;ajout on-line de disques de rechange (vous devez cependant les rajouter manuellement dans le fichier de configuration /etc/raidtab pour le cas d&#039;un reboot) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidhotadd /dev/md[0-15] /dev/sdf1&amp;lt;/code&amp;gt;&lt;br /&gt;
 ou&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidhotremove /dev/md[0-15] /dev/sdf1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mise en pratique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode linéaire&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus, pas nécessairement de la même taille, pour implémenter le mode linéaire. Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant (vous pouvez configurer 16 RAIDs différents sur une machine, d&#039;où la symbolique avec [0-15] ainsi que dans le reste du document) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level linear&lt;br /&gt;
 	  nr-raid-disks 2 # disques impliqués&lt;br /&gt;
 	  persistent-superblock	1 # on considère ici que&lt;br /&gt;
 	                          # l&#039;auto-détection du RAID&lt;br /&gt;
 	                          # dans le noyau Linux est activé&lt;br /&gt;
 	device/dev/sda1 # premier disque&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1 # second disque&lt;br /&gt;
 	  raid-disk 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : vous ne disposez pas de disques de spare dans le mode linéaire. Si vous perdez un disque, alors vous perdez tout.&lt;br /&gt;
&lt;br /&gt;
Pour activer le RAID (cette procédure va rester la même pour les autres RAID) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# mkraid /dev/md[0-15]&lt;br /&gt;
# mkfs -t ext2 /dev/md[0-15] # on formatte la partition, ici en Ext2&lt;br /&gt;
# mount /dev/md[0-15] /scratch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour stopper un device RAID :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidstop /dev/md[0-15] # pour désactiver un device RAID &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour mettre en faute un disque (et le retirer avec raidhotremove) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidsetfaulty /dev/md[0-15] /dev/sdf1 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normallement le device sera automatiquement activé lors du boot (dans le fichier &#039;&#039;/etc/rc.d/rc.sysinit&#039;&#039; sur la Mandrake 7.2 mais vous pouvez ajoutez la commande &#039;&#039;&#039;raidstart /dev/md[0-15]&#039;&#039;&#039; dans le fichier &#039;&#039;/etc/rc.d/rc.local&#039;&#039; sinon), il ne restera plus qu&#039;à mettre à jour le fichier &#039;&#039;/etc/fstab&#039;&#039; pour le montage soit automatique. Cela va rester valide pour les autres RAIDS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus, de la même taille, pour implémenter le striping. Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 4 # voir en fin de document&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : vous ne disposez pas de disques de spare dans le RAID 0. Si vous perdez un disque, alors vous perdez tout.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 1&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus de la même taille pour implémenter le mode miroir et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 1&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 16&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 0+1&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer d&#039;un nombre de disques pairs de la même taille pour implémenter le RAID 0+1 mais vous ne pouvez pas utiliser de disques de spare individuels (je présume qu&#039;il est possible de mettre un place un device de spare contenant le même nombre de disques que les autres). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md0&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 4&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
&lt;br /&gt;
 raiddev /dev/md1&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 4&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sde1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdf1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
&lt;br /&gt;
 raiddev /dev/md2 # seul ce device pourra etre formate&lt;br /&gt;
 	raid-level 1&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  nr-spare-disks 0&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 16&lt;br /&gt;
 	device/dev/md0&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/md1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 4&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 3 disques ou plus, de la même taille, pour implémenter le RAID 4 et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 4&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 32&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 2&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 5&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 3 disques ou plus, de la même taille, pour implémenter le RAID 5 et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 5&lt;br /&gt;
 	  nr-raid-disks 5&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock 1&lt;br /&gt;
 	  # Parity placement algorithm&lt;br /&gt;
 	  # parity-algorithm	left-asymmetric&lt;br /&gt;
 	  # parity-algorithm	right-asymmetric&lt;br /&gt;
 	  # parity-algorithm	right-symmetric&lt;br /&gt;
 	  parity-algorithm	left-symmetric&lt;br /&gt;
 	  chunk-size 32&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 2&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  raid-disk 3&lt;br /&gt;
 	device/dev/sde1&lt;br /&gt;
 	  raid-disk 4&lt;br /&gt;
 	device/dev/sdf1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk Size ==&lt;br /&gt;
&lt;br /&gt;
Le choix de la &amp;quot;chunk size&amp;quot; dépends fortement du type de raid et du nombre de disques. Dans le cas d&#039;un raid 0 de 2 disques, si on écrit 16KB avec une chunk size de 4KB, on va écrire 4KB sur le premier disque puis 4KB sur le second puis de nouveau 4KB sur le premier et pour finir 4KB sur le second ...&lt;br /&gt;
&lt;br /&gt;
Vous obtiendrez généralement de bons résultats avec une chunk size à 32KB mais il est souvent bien utile d&#039;expérimenter soi même pour obtenir le meilleur tuning. A noter que sur un environnement Alpha (64 bits), j&#039;ai du mettre la chunk size à 16 au lieu de 4 car le raid 0 ne voulais pas s&#039;initialiser.&lt;br /&gt;
&lt;br /&gt;
== Amélioration des performances ==&lt;br /&gt;
&lt;br /&gt;
* Il sera trés souvent intéressant de mettre les disques sur des controleurs IDE ou SCSI différents ;&lt;br /&gt;
* La méthode la plus efficace pour améliorer drastiquement les performances I/O du système est le striping ;&lt;br /&gt;
* Raid 4/5 : les performances seront bien meilleures si vous utilisez une chunk-size de 32 (8*4096=32KB) et un formattage du RAID 4/5 avec la commande : &#039;&#039;&#039;mke2fs -b 4096 -R stride=8 /dev/md[0-15]&#039;&#039;&#039; (l&#039;option -R permet de passer des paramêtres utiles pour la construction du RAID, consulter le man pour avoir plus de détails) ;&lt;br /&gt;
* Raid 5 : l&#039;option &#039;&#039;&#039;parity-algorithm&#039;&#039;&#039; accepte plusieurs valeurs (left-asymmetric, right-asymmetric, left-symmetric ou right-symmetric). Il est préférable d&#039;utiliser &amp;quot;left-symmetric&amp;quot; pour obtenir de meilleures performances ;&lt;br /&gt;
* Penser à tuner la chunk size ...&lt;br /&gt;
&lt;br /&gt;
== Utiliser le RAID sur une partition de swap ? ==&lt;br /&gt;
&lt;br /&gt;
Il est aberrant d&#039;utiliser le raid sur une partition de swap. Plus simplement, Linux peut utiliser les partitions de swap de la même manière que le raid 0. Il suffit de donner à chaque partition le même niveau de priorité :&lt;br /&gt;
&lt;br /&gt;
 /dev/hdc1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
 /dev/hdd1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
 /dev/hde1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
&lt;br /&gt;
Il est aussi trés utile de placer ces partitions au début de disque plutôt qu&#039;à la fin. Vous obtiendrez de meilleurs résultats (la vélocité à cet endroit du disque est plus importante).&lt;br /&gt;
&lt;br /&gt;
Précisions (contribution wiki) : La non nécéssite de mettre le swap sur une partition RAID 1 depends de la stabilité qu&#039;on veut obtenir. En cas de crash d&#039;un disque contenant une partition Swap non mirorée, il peut être difficile pour le systeme de continuer à fonctionner sans le redémarrer. En effet, sur cette partition il y a potentiellement des process swappé sur le disque que l&#039;OS n&#039;arrivera certainement pas à remonter en memoire en cas de nécessité.&lt;br /&gt;
&lt;br /&gt;
Finalement :&lt;br /&gt;
&lt;br /&gt;
* Si la machine peut supporter un redémarage après un crash disque, alors oui il n&#039;est pas nécessaire de mirrorer les partitions de swap, et dans ce cas on accepte que les services associés à celle-ci soient indiponibles jusqu&#039;à ce que quelqu&#039;un redémarre la machine.&lt;br /&gt;
* Si la machine ne doit pas redémarrer (ce qui dans mon esprit correspond plus à la réalité d&#039;une machine en production) alors il est obligatoire de mirorer les partitions swap.&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
&lt;br /&gt;
* Pensez à mettre à jour votre fichier de configuration (/etc/raidtab) si vous devez enlever ou ajouter des disques...&lt;br /&gt;
* N&#039;utiliser le RAID que pour des disques de données. Si vous souhaitez utiliser la partition système avec du RAID (uniquement 0 ou 1), lisez attentivement les HowTo car la mise en oeuvre demeure complexe.&lt;br /&gt;
* Allez sur le site de [http://linas.org/linux/raid.html Linas Vepstas] qui regorge d&#039;informations intéressantes (pas uniquement sur le RAID).&lt;br /&gt;
* Allez aussi jeter un petit coup d&#039;oeil sur le projet [http://linux.msede.com/lvm/ Linux Logical Volume Manager] même si ce n&#039;est pas vraiment du Raid. A lire absolument car disposer d&#039;un tel outil sous Linux est une perspective fascinante car réservée auparavant aux Unix propriétaires HPUX, Tru64, AIX, etc ...&lt;br /&gt;
* On pourrait aussi poser la question de la pertinence d&#039;utiliser un système de fichiers journalisé en lieu et place de Ext2 (le gain lors d&#039;un reboot violent est indéniable). Dans l&#039;immédiat cela n&#039;est pas possible (noyau 2.2.x) mais ouvrira à Linux de nouvelles et fascinantes perspectives...&lt;br /&gt;
&lt;br /&gt;
== Nouvel outil de RAID sous Linux: mdadm ==&lt;br /&gt;
&lt;br /&gt;
La plupart des distributions proposent aujourd&#039;hui mdadm, voici les différentes étapes pour mettre en place les différents niveau de RAID.&lt;br /&gt;
&lt;br /&gt;
Voici les sources d&#039;informations:&lt;br /&gt;
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-ig-s390-multi-fr-4/s1-s390info-raid.html&lt;br /&gt;
&lt;br /&gt;
http://www.iteam.org/wiki/wakka.php?wiki=RaidBaal&lt;br /&gt;
&lt;br /&gt;
http://www.frlinux.net/?section=systeme&amp;amp;article=146&lt;br /&gt;
&lt;br /&gt;
http://xenfr.org/tiki-index.php?page=Stockage&lt;br /&gt;
&lt;br /&gt;
Malheureusement, je n&#039;ai fait les manipulations que pour un RAID 5 avec 4 disques de 6 partitions.&lt;br /&gt;
&lt;br /&gt;
Voici la mise en place d&#039;un RAID 5 avec 2 spares:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les disques:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
*  Disk /dev/hde: 164.6 GB, 164696555520 bytes &lt;br /&gt;
255 heads, 63 sectors/track, 20023 cylinders&lt;br /&gt;
Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdf: 82.3 GB, 82348277760 bytes &lt;br /&gt;
16 heads, 63 sectors/track, 159560 cylinders&lt;br /&gt;
Units = cylinders of 1008 * 512 = 516096 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdg: 164.6 GB, 164696555520 bytes &lt;br /&gt;
255 heads, 63 sectors/track, 20023 cylinders&lt;br /&gt;
Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdh: 82.3 GB, 82348277760 bytes &lt;br /&gt;
16 heads, 63 sectors/track, 159560 cylinders&lt;br /&gt;
Units = cylinders of 1008 * 512 = 516096 bytes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les partitions &#039;&#039;&#039;&lt;br /&gt;
6 Partitions de 78 Go&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    * /dev/hde1 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hde2 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdf1 : Sur rack disque (à changer si problème)&lt;br /&gt;
    * /dev/hdg1 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdg2 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdh1 : SPARE  :  fd  Linux raid autodetect&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Création du RAID 5 sur md0&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mdadm --create /dev/md0 --level=5 --raid-devices=5 /dev/hde1 /dev/hde2 /dev/hdf1 /dev/hdg1 /dev/hdg2 --spare-devices=1 /dev/hdh1&lt;br /&gt;
mdadm: /dev/hde1 appears to contain an ext2fs file system&lt;br /&gt;
   size=160836448K  mtime=Sat Oct  1 18:05:35 2005&lt;br /&gt;
mdadm: /dev/hde1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hde2 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdf1 appears to contain an ext2fs file system&lt;br /&gt;
   size=20479504K  mtime=Sat Oct  1 18:17:51 2005&lt;br /&gt;
mdadm: /dev/hdf1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdg1 appears to contain an ext2fs file system&lt;br /&gt;
   size=2048256K  mtime=Sat Oct  1 15:18:46 2005&lt;br /&gt;
mdadm: /dev/hdg1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdg2 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdh1 appears to contain an ext2fs file system&lt;br /&gt;
   size=51025432K  mtime=Sat Oct  1 15:18:56 2005&lt;br /&gt;
Continue creating array? y&lt;br /&gt;
mdadm: array /dev/md0 started. &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Informations sur le volume RAID&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mdadm --detail /dev/md0&lt;br /&gt;
/dev/md0:&lt;br /&gt;
       Version : 00.90.01&lt;br /&gt;
 Creation Time : Sun Oct  2 15:18:17 2005&lt;br /&gt;
    Raid Level : raid5&lt;br /&gt;
    Array Size : 312495872 (298.02 GiB 320.00 GB)&lt;br /&gt;
   Device Size : 78123968 (74.50 GiB 80.00 GB)&lt;br /&gt;
  Raid Devices : 5&lt;br /&gt;
 Total Devices : 6&lt;br /&gt;
Preferred Minor : 0&lt;br /&gt;
   Persistence : Superblock is persistent&lt;br /&gt;
&lt;br /&gt;
   Update Time : Sun Oct  2 15:18:17 2005&lt;br /&gt;
         State : clean, degraded, recovering&lt;br /&gt;
Active Devices : 4&lt;br /&gt;
Working Devices : 6&lt;br /&gt;
Failed Devices : 0&lt;br /&gt;
 Spare Devices : 2&lt;br /&gt;
&lt;br /&gt;
        Layout : left-symmetric&lt;br /&gt;
    Chunk Size : 64K&lt;br /&gt;
&lt;br /&gt;
Rebuild Status : 1% complete&lt;br /&gt;
&lt;br /&gt;
          UUID : 0a551c50:3da4f12a:5c9b3cdc:b9802273&lt;br /&gt;
        Events : 0.2&lt;br /&gt;
&lt;br /&gt;
   Number   Major   Minor   RaidDevice? State&lt;br /&gt;
      0      33        1        0      active sync   /dev/hde1&lt;br /&gt;
      1      33        2        1      active sync   /dev/hde2&lt;br /&gt;
      2      33       65        2      active sync   /dev/hdf1&lt;br /&gt;
      3      34        1        3      active sync   /dev/hdg1&lt;br /&gt;
      4       0        0        -      removed&lt;br /&gt;
&lt;br /&gt;
      5      34        2        4      spare rebuilding   /dev/hdg2&lt;br /&gt;
      6      34       65        -      spare   /dev/hdh1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Arrêter le volume RAID 5 &#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --stop /dev/md0  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pour démarrer le volume RAID 5&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --assemble /dev/md0 /dev/hde1 /dev/hde2 /dev/hdf1 /dev/hdg1 /dev/hdg2 /dev/hdh1&lt;br /&gt;
mdadm: /dev/md0 has been started with 4 drives (out of 5) and 2 spares.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --detail --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
more /etc/mdadm/mdadm.conf&lt;br /&gt;
DEVICE partitions&lt;br /&gt;
ARRAY /dev/md0 level=raid5 num-devices=5 spares=2 UUID=70714300:9da2e11b:a61a9c73:e2e1c245&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message lors de l&#039;activation du volume RAID 5 dans dmesg&lt;br /&gt;
md: md0 stopped.&lt;br /&gt;
md: bind&amp;lt;hde2&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdf1&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdg1&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdh1&amp;gt;&lt;br /&gt;
md0: WARNING: hdg2 appears to be on the same physical disk as hdg1. True&lt;br /&gt;
     protection against single-disk failure might be compromised.&lt;br /&gt;
md: bind&amp;lt;hdg2&amp;gt;&lt;br /&gt;
md0: WARNING: hde1 appears to be on the same physical disk as hde2. True&lt;br /&gt;
     protection against single-disk failure might be compromised.&lt;br /&gt;
md: bind&amp;lt;hde1&amp;gt;&lt;br /&gt;
raid5: device hde1 operational as raid disk 0&lt;br /&gt;
raid5: device hdh1 operational as raid disk 4&lt;br /&gt;
raid5: device hdg1 operational as raid disk 3&lt;br /&gt;
raid5: device hdf1 operational as raid disk 2&lt;br /&gt;
raid5: device hde2 operational as raid disk 1&lt;br /&gt;
raid5: allocated 5234kB for md0&lt;br /&gt;
raid5: raid level 5 set md0 active with 5 out of 5 devices, algorithm 2&lt;br /&gt;
RAID5 conf printout:&lt;br /&gt;
 --- rd:5 wd:5 fd:0&lt;br /&gt;
 disk 0, o:1, dev:hde1&lt;br /&gt;
 disk 1, o:1, dev:hde2&lt;br /&gt;
 disk 2, o:1, dev:hdf1&lt;br /&gt;
 disk 3, o:1, dev:hdg1&lt;br /&gt;
 disk 4, o:1, dev:hdh1&lt;br /&gt;
&lt;br /&gt;
== Glossaire ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID&#039;&#039;&#039;&amp;lt;br /&amp;gt; Le mot RAID est un acronyme pour &amp;quot;Redundant Array of Inexpensive Disks&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Lionel Tricon le 03/02/2001.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|03/02/2001|Lionel Tricon|CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Ge</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=RAID&amp;diff=14988</id>
		<title>RAID</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=RAID&amp;diff=14988"/>
		<updated>2007-10-13T13:26:42Z</updated>

		<summary type="html">&lt;p&gt;Ge : /* Mise en pratique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Gestion des disques et systèmes de fichiers]]&lt;br /&gt;
= Raid logiciel sous Linux =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Raid logiciel sous Linux&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par [http://www.caids.org/~tricon/lionel Lionel Tricon]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Un petit tutoriel sur la configuration du Raid logiciel sous Linux.&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Le principe du [#RAID RAID] repose sur l&#039;idée de combiner plusieurs disques durs bon marché (indifféremment IDE ou SCSI) dans le but de :&lt;br /&gt;
&lt;br /&gt;
* Etendre la capacité de stockage en ligne possible ; &lt;br /&gt;
* Introduire une notion de redondance (pour autoriser une plus grande sécurisation des données) ; &lt;br /&gt;
* Améliorer les performances. &lt;br /&gt;
&lt;br /&gt;
En effet, la capacité des disques actuels, même si elle s&#039;est singulièrement améliorée ces dernières années (on trouve couramment du 18 ou du 36 Gigas de nos jours), reste tout de même peu de chose lorsque l&#039;on souhaite parler en Téra et non plus en Giga.&lt;br /&gt;
&lt;br /&gt;
Même sans aller jusqu&#039;à vouloir stocker de grandes quantités de données (soyons raisonnable, 9 Giga devrait suffire pour un petit serveur web ...), on peut vouloir utiliser la notion de redondance du Raid afin d&#039;améliorer la tolérance aux pannes de son architecture : les données seront dupliquées sur des disques différents afin de pouvoir palier à la perte d&#039;un disque.&lt;br /&gt;
&lt;br /&gt;
Si la résistance aux pannes de l&#039;architecture n&#039;est pas une contrainte majeure (on peut envisager de sauvegarder sur bande tous les soirs son serveur de fichiers), on peut utiliser le Raid pour étendre simplement la capacité de stockage possible, et ce de manière transparente pour le système : 4 disques de 4,3Go donnant une partition utile de ~16Go.&lt;br /&gt;
&lt;br /&gt;
On peut vouloir aussi gagner en performance sur les I/O disques : en effet, lire ou écrire sur de multiples disques permet de paralléliser les opérations (surtout sur des bus différents) et donc de gagner en performances.&lt;br /&gt;
&lt;br /&gt;
En fait, il ne faut d&#039;ailleurs pas parler d&#039;un seul Raid, mais bien de plusieurs : [#linear Mode Linéaire], [#raid0 Raid 0], [#raid1 Raid 1], [#raid01 Raid 0+1], [#raid4 Raid 4] ou encore [#raid5 Raid 5]. Il conviendra donc d&#039;analyser à l&#039;avance ses besoins pour faire le bon choix.&lt;br /&gt;
&lt;br /&gt;
Je n&#039;aborderai que le Raid logiciel (software) dans ce document et non le Raid matériel (hardware). Le premier est supporté directement dans le code de l&#039;OS alors que l&#039;intelligence du second est déportée dans du hardware : que ce soit sous forme d&#039;une carte à enficher dans le serveur (nécessite un driver) ou encore dans une baie extérieure (transparent pour l&#039;OS). On peut dire que le Raid logiciel est moins performant, moins tolérant mais beaucoup plus accessible financièrement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : Dans presque tous les RAIDS que l&#039;on va aborder (excepté le RAID linéaire et le raid 0), il sera possible de configurer des disques de rechange (spare disks) qui seront automatiquement utilisés pour reconstruire le RAID dans le cas de pannes disques (pas dans le cas de pannes sur le contrôleur IDE ou SCSI).&lt;br /&gt;
&lt;br /&gt;
== Le Raid et Linux ==&lt;br /&gt;
&lt;br /&gt;
Le mieux est de directement utiliser le support RAID présent dans les distributions Linux récentes (version des RaidTools : 0.90) : j&#039;ai personnellement testé la distribution Linux RedHat 6.1 sur plateforme Alpha et la Mandrake 7.2 Intel sans rencontrer de soucis majeurs.&lt;br /&gt;
&lt;br /&gt;
Vérifiez que les modules linear, raid0, raid1 et raid5 sont chargés. Au pire, ajoutez les dans le fichier /etc/modules :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# modprobe linear&lt;br /&gt;
# modprobe raid0&lt;br /&gt;
# modprobe raid1&lt;br /&gt;
# modprobe raid5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On valide ensuite l&#039;existence du fichier virtuel &#039;&#039;/proc/mdstat&#039;&#039; (Par défaut, le noyau est compilé avec le support du RAID) et on vérifie l&#039;installation du package &#039;&#039;raidtools&#039;&#039; (format rpm sur la RedHat et la Mandrake) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# cat /proc/mdstat&lt;br /&gt;
Personalities : [linear] [raid0] [raid1] [raid5] /* liste des drivers */&lt;br /&gt;
read_ahead not set&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# rpm -qa | grep raid&lt;br /&gt;
raidtools-0.90-8mdk &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le seule fichier que l&#039;on aura à configurer pour tous les RAIDS sera le fichier &#039;&#039;/etc/raidtab&#039;&#039; (simple, non?) et le fichier &#039;&#039;/etc/fstab&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Si vous ne disposez pas de plusieurs disques vous pouvez utiliser des partitions à la place. Cela ne vous apportera ni amélioration de performance, ni haute disponibilité, mais au moins une grande satisfaction de pouvoir mettre en pratique vos connaissances ;-)&lt;br /&gt;
&lt;br /&gt;
== Niveaux de RAID disponibles sous Linux ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode Linéaire&#039;&#039;&#039; [ [#linear_exemple exemple] ]&amp;lt;br /&amp;gt; Cette solution est pertinente lorsque l&#039;on souhaite étendre la capacité de stockage disponible en ligne sans introduire une notion de tolérance aux pannes. Cette solution combine les capacités de stockage d&#039;un ensemble de disques existants (les données sont d&#039;abord écrites sur le premier disque, puis lorsqu&#039;il est plein sur le second, etc...) et permet d&#039;utiliser 100% de l&#039;espace disque utile.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Permet de disposer de 100% de l&#039;espace disque dans une partition ;&amp;lt;br /&amp;gt; - Moins de temps CPU mobilisé par le RAID dans le noyau. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Pas de haute disponibilité : la perte d&#039;un disque entraine la perte des données ;&amp;lt;br /&amp;gt; - Quasiment pas d&#039;amélioration des performances (on peut cependant obtenir une amélioration si des I/O se produisent de manières concurrentes sur des disques différents). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0&#039;&#039;&#039; [ [#raid0_exemple exemple] ]&amp;lt;br /&amp;gt; Cette méthode (striping) est souvent utilisée lorsque la haute disponibilité des données n&#039;est pas nécessaire (on doit disposer d&#039;au moins 2 disques). Elle permet d&#039;obtenir une amélioration des performances I/O (lecture et écriture) tout en restant très proche du mode linéaire. Elle permet en effet d&#039;améliorer l&#039;algorithme en dispatchant les données sur l&#039;ensemble des disques (les données sont découpées puis dispersées sur les disques sans redondance).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Permet de disposer de 100% de l&#039;espace disque dans une partition ;&amp;lt;br /&amp;gt; - Amélioration des performances I/O en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Pas de haute disponibilité : la perte d&#039;un disque entraîne la perte des données. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 1&#039;&#039;&#039; [ [#raid1_exemple exemple] ]&amp;lt;br /&amp;gt; Ce mode (mirroring) implémente une stricte duplication des données sur tous les disques présents dans le miroir (on doit disposer d&#039;au moins 2 disques). L&#039;information étant enregistrée N fois sur les disques (permet de gagner du temps en lecture même si on en perds lors de l&#039;écriture), si on perds N-1 disques on ne perds pas les données. Il est à noter que l&#039;on perds tout de même 50% de l&#039;espace disque utile.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte de N-1 disques ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Dégradation des performances en écriture ;&amp;lt;br /&amp;gt; - Mobilise un peu plus de temps CPU dans le noyau ;&amp;lt;br /&amp;gt; - Perte de 50% de l&#039;espace disque. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0+1&#039;&#039;&#039; [ [#raid01_exemple exemple] ]&amp;lt;br /&amp;gt; Comme son nom l&#039;indique, cette solution combine le RAID 0 et le RAID 1. Elle permet d&#039;améliorer les performances I/O (Input/Output) en lecture tout en permettant une bonne disponibilité des données grâce à leur duplication sur l&#039;ensemble des disques. Mais tout comme le mode miroir, on perd 50% de l&#039;espace disque potentiellement disponible.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un côté du miroir ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Mobilise un peu plus de temps CPU dans le noyau ;&amp;lt;br /&amp;gt; - Perte de 50% de l&#039;espace disque. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 4&#039;&#039;&#039; [ [#raid4_exemple exemple] ]&amp;lt;br /&amp;gt; L&#039;algorithme utilisé ici (striping) permet de dispatcher les I/O sur l&#039;ensemble des disques (au moins 3) tout en réservant un disque pour sauvegarder une donnée supplémentaire de parité. De fait, si on perds un disque, on peut reconstituer l&#039;information manquante. Cependant, l&#039;utilisation d&#039;un disque de parité ajoute un goulot d&#039;étranglement au système (toute écriture va provoquer un accès au disque de parité), pour cela il est préférable d&#039;utiliser à la place le Raid5.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un disque ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - On perds l&#039;équivalent d&#039;un disque pour le stockage des données ;&amp;lt;br /&amp;gt; - On risque de plafonner le débit en écriture rapidement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 5&#039;&#039;&#039; [ [#raid5_exemple exemple] ]&amp;lt;br /&amp;gt; Le RAID 5 est sensiblement identique au RAID 4 mais améliore le procédé en stripant l&#039;information de parité sur l&#039;ensemble des disques.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un disque ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - On perds l&#039;équivalent d&#039;un disque pour le stockage des données.&lt;br /&gt;
&lt;br /&gt;
== Disques de rechange (ou spare) ==&lt;br /&gt;
&lt;br /&gt;
Les RAIDS 1, 4 et 5 peuvent utiliser la notion de disques de rechange. Un disque qui va venir remplacer automatiquement un disque en faute. Linux autorise l&#039;ajout on-line de disques de rechange (vous devez cependant les rajouter manuellement dans le fichier de configuration /etc/raidtab pour le cas d&#039;un reboot) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidhotadd /dev/md[0-15] /dev/sdf1&amp;lt;/code&amp;gt;&lt;br /&gt;
 ou&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidhotremove /dev/md[0-15] /dev/sdf1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mise en pratique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode linéaire&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus, pas nécessairement de la même taille, pour implémenter le mode linéaire. Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant (vous pouvez configurer 16 RAIDs différents sur une machine, d&#039;où la symbolique avec [0-15] ainsi que dans le reste du document) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level linear&lt;br /&gt;
 	  nr-raid-disks 2 # disques impliqués&lt;br /&gt;
 	  persistent-superblock	1 # on considère ici que&lt;br /&gt;
 	                          # l&#039;auto-détection du RAID&lt;br /&gt;
 	                          # dans le noyau Linux est activé&lt;br /&gt;
 	device/dev/sda1 # premier disque&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1 # second disque&lt;br /&gt;
 	  raid-disk 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : vous ne disposez pas de disques de spare dans le mode linéaire. Si vous perdez un disque, alors vous perdez tout.&lt;br /&gt;
&lt;br /&gt;
Pour activer le RAID (cette procédure va rester la même pour les autres RAID) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# mkraid /dev/md[0-15]&lt;br /&gt;
# mkfs -t ext2 /dev/md[0-15] # on formatte la partition, ici en Ext2&lt;br /&gt;
# mount /dev/md[0-15] /scratch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour stopper un device RAID :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidstop /dev/md[0-15] # pour désactiver un device RAID &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour mettre en faute un disque (et le retirer avec raidhotremove) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidsetfaulty /dev/md[0-15] /dev/sdf1 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normallement le device sera automatiquement activé lors du boot (dans le fichier &#039;&#039;/etc/rc.d/rc.sysinit&#039;&#039; sur la Mandrake 7.2 mais vous pouvez ajoutez la commande &#039;&#039;&#039;raidstart /dev/md[0-15]&#039;&#039;&#039; dans le fichier &#039;&#039;/etc/rc.d/rc.local&#039;&#039; sinon), il ne restera plus qu&#039;à mettre à jour le fichier &#039;&#039;/etc/fstab&#039;&#039; pour le montage soit automatique. Cela va rester valide pour les autres RAIDS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus, de la même taille, pour implémenter le striping. Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size4 # voir en fin de document&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : vous ne disposez pas de disques de spare dans le RAID 0. Si vous perdez un disque, alors vous perdez tout.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 1&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus de la même taille pour implémenter le mode miroir et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 1&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 16&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 0+1&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer d&#039;un nombre de disques pairs de la même taille pour implémenter le RAID 0+1 mais vous ne pouvez pas utiliser de disques de spare individuels (je présume qu&#039;il est possible de mettre un place un device de spare contenant le même nombre de disques que les autres). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md0&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 4&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
&lt;br /&gt;
 raiddev /dev/md1&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 4&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sde1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdf1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
&lt;br /&gt;
 raiddev /dev/md2 # seul ce device pourra etre formate&lt;br /&gt;
 	raid-level 1&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  nr-spare-disks 0&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 16&lt;br /&gt;
 	device/dev/md0&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/md1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 4&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 3 disques ou plus, de la même taille, pour implémenter le RAID 4 et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 4&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 32&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 2&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 5&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 3 disques ou plus, de la même taille, pour implémenter le RAID 5 et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 5&lt;br /&gt;
 	  nr-raid-disks 5&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock 1&lt;br /&gt;
 	  # Parity placement algorithm&lt;br /&gt;
 	  # parity-algorithm	left-asymmetric&lt;br /&gt;
 	  # parity-algorithm	right-asymmetric&lt;br /&gt;
 	  # parity-algorithm	right-symmetric&lt;br /&gt;
 	  parity-algorithm	left-symmetric&lt;br /&gt;
 	  chunk-size 32&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 2&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  raid-disk 3&lt;br /&gt;
 	device/dev/sde1&lt;br /&gt;
 	  raid-disk 4&lt;br /&gt;
 	device/dev/sdf1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk Size ==&lt;br /&gt;
&lt;br /&gt;
Le choix de la &amp;quot;chunk size&amp;quot; dépends fortement du type de raid et du nombre de disques. Dans le cas d&#039;un raid 0 de 2 disques, si on écrit 16KB avec une chunk size de 4KB, on va écrire 4KB sur le premier disque puis 4KB sur le second puis de nouveau 4KB sur le premier et pour finir 4KB sur le second ...&lt;br /&gt;
&lt;br /&gt;
Vous obtiendrez généralement de bons résultats avec une chunk size à 32KB mais il est souvent bien utile d&#039;expérimenter soi même pour obtenir le meilleur tuning. A noter que sur un environnement Alpha (64 bits), j&#039;ai du mettre la chunk size à 16 au lieu de 4 car le raid 0 ne voulais pas s&#039;initialiser.&lt;br /&gt;
&lt;br /&gt;
== Amélioration des performances ==&lt;br /&gt;
&lt;br /&gt;
* Il sera trés souvent intéressant de mettre les disques sur des controleurs IDE ou SCSI différents ;&lt;br /&gt;
* La méthode la plus efficace pour améliorer drastiquement les performances I/O du système est le striping ;&lt;br /&gt;
* Raid 4/5 : les performances seront bien meilleures si vous utilisez une chunk-size de 32 (8*4096=32KB) et un formattage du RAID 4/5 avec la commande : &#039;&#039;&#039;mke2fs -b 4096 -R stride=8 /dev/md[0-15]&#039;&#039;&#039; (l&#039;option -R permet de passer des paramêtres utiles pour la construction du RAID, consulter le man pour avoir plus de détails) ;&lt;br /&gt;
* Raid 5 : l&#039;option &#039;&#039;&#039;parity-algorithm&#039;&#039;&#039; accepte plusieurs valeurs (left-asymmetric, right-asymmetric, left-symmetric ou right-symmetric). Il est préférable d&#039;utiliser &amp;quot;left-symmetric&amp;quot; pour obtenir de meilleures performances ;&lt;br /&gt;
* Penser à tuner la chunk size ...&lt;br /&gt;
&lt;br /&gt;
== Utiliser le RAID sur une partition de swap ? ==&lt;br /&gt;
&lt;br /&gt;
Il est aberrant d&#039;utiliser le raid sur une partition de swap. Plus simplement, Linux peut utiliser les partitions de swap de la même manière que le raid 0. Il suffit de donner à chaque partition le même niveau de priorité :&lt;br /&gt;
&lt;br /&gt;
 /dev/hdc1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
 /dev/hdd1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
 /dev/hde1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
&lt;br /&gt;
Il est aussi trés utile de placer ces partitions au début de disque plutôt qu&#039;à la fin. Vous obtiendrez de meilleurs résultats (la vélocité à cet endroit du disque est plus importante).&lt;br /&gt;
&lt;br /&gt;
Précisions (contribution wiki) : La non nécéssite de mettre le swap sur une partition RAID 1 depends de la stabilité qu&#039;on veut obtenir. En cas de crash d&#039;un disque contenant une partition Swap non mirorée, il peut être difficile pour le systeme de continuer à fonctionner sans le redémarrer. En effet, sur cette partition il y a potentiellement des process swappé sur le disque que l&#039;OS n&#039;arrivera certainement pas à remonter en memoire en cas de nécessité.&lt;br /&gt;
&lt;br /&gt;
Finalement :&lt;br /&gt;
&lt;br /&gt;
* Si la machine peut supporter un redémarage après un crash disque, alors oui il n&#039;est pas nécessaire de mirrorer les partitions de swap, et dans ce cas on accepte que les services associés à celle-ci soient indiponibles jusqu&#039;à ce que quelqu&#039;un redémarre la machine.&lt;br /&gt;
* Si la machine ne doit pas redémarrer (ce qui dans mon esprit correspond plus à la réalité d&#039;une machine en production) alors il est obligatoire de mirorer les partitions swap.&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
&lt;br /&gt;
* Pensez à mettre à jour votre fichier de configuration (/etc/raidtab) si vous devez enlever ou ajouter des disques...&lt;br /&gt;
* N&#039;utiliser le RAID que pour des disques de données. Si vous souhaitez utiliser la partition système avec du RAID (uniquement 0 ou 1), lisez attentivement les HowTo car la mise en oeuvre demeure complexe.&lt;br /&gt;
* Allez sur le site de [http://linas.org/linux/raid.html Linas Vepstas] qui regorge d&#039;informations intéressantes (pas uniquement sur le RAID).&lt;br /&gt;
* Allez aussi jeter un petit coup d&#039;oeil sur le projet [http://linux.msede.com/lvm/ Linux Logical Volume Manager] même si ce n&#039;est pas vraiment du Raid. A lire absolument car disposer d&#039;un tel outil sous Linux est une perspective fascinante car réservée auparavant aux Unix propriétaires HPUX, Tru64, AIX, etc ...&lt;br /&gt;
* On pourrait aussi poser la question de la pertinence d&#039;utiliser un système de fichiers journalisé en lieu et place de Ext2 (le gain lors d&#039;un reboot violent est indéniable). Dans l&#039;immédiat cela n&#039;est pas possible (noyau 2.2.x) mais ouvrira à Linux de nouvelles et fascinantes perspectives...&lt;br /&gt;
&lt;br /&gt;
== Nouvel outil de RAID sous Linux: mdadm ==&lt;br /&gt;
&lt;br /&gt;
La plupart des distributions proposent aujourd&#039;hui mdadm, voici les différentes étapes pour mettre en place les différents niveau de RAID.&lt;br /&gt;
&lt;br /&gt;
Voici les sources d&#039;informations:&lt;br /&gt;
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-ig-s390-multi-fr-4/s1-s390info-raid.html&lt;br /&gt;
&lt;br /&gt;
http://www.iteam.org/wiki/wakka.php?wiki=RaidBaal&lt;br /&gt;
&lt;br /&gt;
http://www.frlinux.net/?section=systeme&amp;amp;article=146&lt;br /&gt;
&lt;br /&gt;
http://xenfr.org/tiki-index.php?page=Stockage&lt;br /&gt;
&lt;br /&gt;
Malheureusement, je n&#039;ai fait les manipulations que pour un RAID 5 avec 4 disques de 6 partitions.&lt;br /&gt;
&lt;br /&gt;
Voici la mise en place d&#039;un RAID 5 avec 2 spares:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les disques:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
*  Disk /dev/hde: 164.6 GB, 164696555520 bytes &lt;br /&gt;
255 heads, 63 sectors/track, 20023 cylinders&lt;br /&gt;
Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdf: 82.3 GB, 82348277760 bytes &lt;br /&gt;
16 heads, 63 sectors/track, 159560 cylinders&lt;br /&gt;
Units = cylinders of 1008 * 512 = 516096 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdg: 164.6 GB, 164696555520 bytes &lt;br /&gt;
255 heads, 63 sectors/track, 20023 cylinders&lt;br /&gt;
Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdh: 82.3 GB, 82348277760 bytes &lt;br /&gt;
16 heads, 63 sectors/track, 159560 cylinders&lt;br /&gt;
Units = cylinders of 1008 * 512 = 516096 bytes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les partitions &#039;&#039;&#039;&lt;br /&gt;
6 Partitions de 78 Go&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    * /dev/hde1 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hde2 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdf1 : Sur rack disque (à changer si problème)&lt;br /&gt;
    * /dev/hdg1 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdg2 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdh1 : SPARE  :  fd  Linux raid autodetect&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Création du RAID 5 sur md0&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mdadm --create /dev/md0 --level=5 --raid-devices=5 /dev/hde1 /dev/hde2 /dev/hdf1 /dev/hdg1 /dev/hdg2 --spare-devices=1 /dev/hdh1&lt;br /&gt;
mdadm: /dev/hde1 appears to contain an ext2fs file system&lt;br /&gt;
   size=160836448K  mtime=Sat Oct  1 18:05:35 2005&lt;br /&gt;
mdadm: /dev/hde1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hde2 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdf1 appears to contain an ext2fs file system&lt;br /&gt;
   size=20479504K  mtime=Sat Oct  1 18:17:51 2005&lt;br /&gt;
mdadm: /dev/hdf1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdg1 appears to contain an ext2fs file system&lt;br /&gt;
   size=2048256K  mtime=Sat Oct  1 15:18:46 2005&lt;br /&gt;
mdadm: /dev/hdg1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdg2 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdh1 appears to contain an ext2fs file system&lt;br /&gt;
   size=51025432K  mtime=Sat Oct  1 15:18:56 2005&lt;br /&gt;
Continue creating array? y&lt;br /&gt;
mdadm: array /dev/md0 started. &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Informations sur le volume RAID&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mdadm --detail /dev/md0&lt;br /&gt;
/dev/md0:&lt;br /&gt;
       Version : 00.90.01&lt;br /&gt;
 Creation Time : Sun Oct  2 15:18:17 2005&lt;br /&gt;
    Raid Level : raid5&lt;br /&gt;
    Array Size : 312495872 (298.02 GiB 320.00 GB)&lt;br /&gt;
   Device Size : 78123968 (74.50 GiB 80.00 GB)&lt;br /&gt;
  Raid Devices : 5&lt;br /&gt;
 Total Devices : 6&lt;br /&gt;
Preferred Minor : 0&lt;br /&gt;
   Persistence : Superblock is persistent&lt;br /&gt;
&lt;br /&gt;
   Update Time : Sun Oct  2 15:18:17 2005&lt;br /&gt;
         State : clean, degraded, recovering&lt;br /&gt;
Active Devices : 4&lt;br /&gt;
Working Devices : 6&lt;br /&gt;
Failed Devices : 0&lt;br /&gt;
 Spare Devices : 2&lt;br /&gt;
&lt;br /&gt;
        Layout : left-symmetric&lt;br /&gt;
    Chunk Size : 64K&lt;br /&gt;
&lt;br /&gt;
Rebuild Status : 1% complete&lt;br /&gt;
&lt;br /&gt;
          UUID : 0a551c50:3da4f12a:5c9b3cdc:b9802273&lt;br /&gt;
        Events : 0.2&lt;br /&gt;
&lt;br /&gt;
   Number   Major   Minor   RaidDevice? State&lt;br /&gt;
      0      33        1        0      active sync   /dev/hde1&lt;br /&gt;
      1      33        2        1      active sync   /dev/hde2&lt;br /&gt;
      2      33       65        2      active sync   /dev/hdf1&lt;br /&gt;
      3      34        1        3      active sync   /dev/hdg1&lt;br /&gt;
      4       0        0        -      removed&lt;br /&gt;
&lt;br /&gt;
      5      34        2        4      spare rebuilding   /dev/hdg2&lt;br /&gt;
      6      34       65        -      spare   /dev/hdh1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Arrêter le volume RAID 5 &#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --stop /dev/md0  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pour démarrer le volume RAID 5&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --assemble /dev/md0 /dev/hde1 /dev/hde2 /dev/hdf1 /dev/hdg1 /dev/hdg2 /dev/hdh1&lt;br /&gt;
mdadm: /dev/md0 has been started with 4 drives (out of 5) and 2 spares.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --detail --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
more /etc/mdadm/mdadm.conf&lt;br /&gt;
DEVICE partitions&lt;br /&gt;
ARRAY /dev/md0 level=raid5 num-devices=5 spares=2 UUID=70714300:9da2e11b:a61a9c73:e2e1c245&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message lors de l&#039;activation du volume RAID 5 dans dmesg&lt;br /&gt;
md: md0 stopped.&lt;br /&gt;
md: bind&amp;lt;hde2&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdf1&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdg1&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdh1&amp;gt;&lt;br /&gt;
md0: WARNING: hdg2 appears to be on the same physical disk as hdg1. True&lt;br /&gt;
     protection against single-disk failure might be compromised.&lt;br /&gt;
md: bind&amp;lt;hdg2&amp;gt;&lt;br /&gt;
md0: WARNING: hde1 appears to be on the same physical disk as hde2. True&lt;br /&gt;
     protection against single-disk failure might be compromised.&lt;br /&gt;
md: bind&amp;lt;hde1&amp;gt;&lt;br /&gt;
raid5: device hde1 operational as raid disk 0&lt;br /&gt;
raid5: device hdh1 operational as raid disk 4&lt;br /&gt;
raid5: device hdg1 operational as raid disk 3&lt;br /&gt;
raid5: device hdf1 operational as raid disk 2&lt;br /&gt;
raid5: device hde2 operational as raid disk 1&lt;br /&gt;
raid5: allocated 5234kB for md0&lt;br /&gt;
raid5: raid level 5 set md0 active with 5 out of 5 devices, algorithm 2&lt;br /&gt;
RAID5 conf printout:&lt;br /&gt;
 --- rd:5 wd:5 fd:0&lt;br /&gt;
 disk 0, o:1, dev:hde1&lt;br /&gt;
 disk 1, o:1, dev:hde2&lt;br /&gt;
 disk 2, o:1, dev:hdf1&lt;br /&gt;
 disk 3, o:1, dev:hdg1&lt;br /&gt;
 disk 4, o:1, dev:hdh1&lt;br /&gt;
&lt;br /&gt;
== Glossaire ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID&#039;&#039;&#039;&amp;lt;br /&amp;gt; Le mot RAID est un acronyme pour &amp;quot;Redundant Array of Inexpensive Disks&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Lionel Tricon le 03/02/2001.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|03/02/2001|Lionel Tricon|CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Ge</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=RAID&amp;diff=14987</id>
		<title>RAID</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=RAID&amp;diff=14987"/>
		<updated>2007-10-13T13:25:17Z</updated>

		<summary type="html">&lt;p&gt;Ge : /* Disques de spare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Gestion des disques et systèmes de fichiers]]&lt;br /&gt;
= Raid logiciel sous Linux =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Raid logiciel sous Linux&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par [http://www.caids.org/~tricon/lionel Lionel Tricon]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Un petit tutoriel sur la configuration du Raid logiciel sous Linux.&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Le principe du [#RAID RAID] repose sur l&#039;idée de combiner plusieurs disques durs bon marché (indifféremment IDE ou SCSI) dans le but de :&lt;br /&gt;
&lt;br /&gt;
* Etendre la capacité de stockage en ligne possible ; &lt;br /&gt;
* Introduire une notion de redondance (pour autoriser une plus grande sécurisation des données) ; &lt;br /&gt;
* Améliorer les performances. &lt;br /&gt;
&lt;br /&gt;
En effet, la capacité des disques actuels, même si elle s&#039;est singulièrement améliorée ces dernières années (on trouve couramment du 18 ou du 36 Gigas de nos jours), reste tout de même peu de chose lorsque l&#039;on souhaite parler en Téra et non plus en Giga.&lt;br /&gt;
&lt;br /&gt;
Même sans aller jusqu&#039;à vouloir stocker de grandes quantités de données (soyons raisonnable, 9 Giga devrait suffire pour un petit serveur web ...), on peut vouloir utiliser la notion de redondance du Raid afin d&#039;améliorer la tolérance aux pannes de son architecture : les données seront dupliquées sur des disques différents afin de pouvoir palier à la perte d&#039;un disque.&lt;br /&gt;
&lt;br /&gt;
Si la résistance aux pannes de l&#039;architecture n&#039;est pas une contrainte majeure (on peut envisager de sauvegarder sur bande tous les soirs son serveur de fichiers), on peut utiliser le Raid pour étendre simplement la capacité de stockage possible, et ce de manière transparente pour le système : 4 disques de 4,3Go donnant une partition utile de ~16Go.&lt;br /&gt;
&lt;br /&gt;
On peut vouloir aussi gagner en performance sur les I/O disques : en effet, lire ou écrire sur de multiples disques permet de paralléliser les opérations (surtout sur des bus différents) et donc de gagner en performances.&lt;br /&gt;
&lt;br /&gt;
En fait, il ne faut d&#039;ailleurs pas parler d&#039;un seul Raid, mais bien de plusieurs : [#linear Mode Linéaire], [#raid0 Raid 0], [#raid1 Raid 1], [#raid01 Raid 0+1], [#raid4 Raid 4] ou encore [#raid5 Raid 5]. Il conviendra donc d&#039;analyser à l&#039;avance ses besoins pour faire le bon choix.&lt;br /&gt;
&lt;br /&gt;
Je n&#039;aborderai que le Raid logiciel (software) dans ce document et non le Raid matériel (hardware). Le premier est supporté directement dans le code de l&#039;OS alors que l&#039;intelligence du second est déportée dans du hardware : que ce soit sous forme d&#039;une carte à enficher dans le serveur (nécessite un driver) ou encore dans une baie extérieure (transparent pour l&#039;OS). On peut dire que le Raid logiciel est moins performant, moins tolérant mais beaucoup plus accessible financièrement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : Dans presque tous les RAIDS que l&#039;on va aborder (excepté le RAID linéaire et le raid 0), il sera possible de configurer des disques de rechange (spare disks) qui seront automatiquement utilisés pour reconstruire le RAID dans le cas de pannes disques (pas dans le cas de pannes sur le contrôleur IDE ou SCSI).&lt;br /&gt;
&lt;br /&gt;
== Le Raid et Linux ==&lt;br /&gt;
&lt;br /&gt;
Le mieux est de directement utiliser le support RAID présent dans les distributions Linux récentes (version des RaidTools : 0.90) : j&#039;ai personnellement testé la distribution Linux RedHat 6.1 sur plateforme Alpha et la Mandrake 7.2 Intel sans rencontrer de soucis majeurs.&lt;br /&gt;
&lt;br /&gt;
Vérifiez que les modules linear, raid0, raid1 et raid5 sont chargés. Au pire, ajoutez les dans le fichier /etc/modules :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# modprobe linear&lt;br /&gt;
# modprobe raid0&lt;br /&gt;
# modprobe raid1&lt;br /&gt;
# modprobe raid5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On valide ensuite l&#039;existence du fichier virtuel &#039;&#039;/proc/mdstat&#039;&#039; (Par défaut, le noyau est compilé avec le support du RAID) et on vérifie l&#039;installation du package &#039;&#039;raidtools&#039;&#039; (format rpm sur la RedHat et la Mandrake) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# cat /proc/mdstat&lt;br /&gt;
Personalities : [linear] [raid0] [raid1] [raid5] /* liste des drivers */&lt;br /&gt;
read_ahead not set&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# rpm -qa | grep raid&lt;br /&gt;
raidtools-0.90-8mdk &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le seule fichier que l&#039;on aura à configurer pour tous les RAIDS sera le fichier &#039;&#039;/etc/raidtab&#039;&#039; (simple, non?) et le fichier &#039;&#039;/etc/fstab&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Si vous ne disposez pas de plusieurs disques vous pouvez utiliser des partitions à la place. Cela ne vous apportera ni amélioration de performance, ni haute disponibilité, mais au moins une grande satisfaction de pouvoir mettre en pratique vos connaissances ;-)&lt;br /&gt;
&lt;br /&gt;
== Niveaux de RAID disponibles sous Linux ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode Linéaire&#039;&#039;&#039; [ [#linear_exemple exemple] ]&amp;lt;br /&amp;gt; Cette solution est pertinente lorsque l&#039;on souhaite étendre la capacité de stockage disponible en ligne sans introduire une notion de tolérance aux pannes. Cette solution combine les capacités de stockage d&#039;un ensemble de disques existants (les données sont d&#039;abord écrites sur le premier disque, puis lorsqu&#039;il est plein sur le second, etc...) et permet d&#039;utiliser 100% de l&#039;espace disque utile.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Permet de disposer de 100% de l&#039;espace disque dans une partition ;&amp;lt;br /&amp;gt; - Moins de temps CPU mobilisé par le RAID dans le noyau. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Pas de haute disponibilité : la perte d&#039;un disque entraine la perte des données ;&amp;lt;br /&amp;gt; - Quasiment pas d&#039;amélioration des performances (on peut cependant obtenir une amélioration si des I/O se produisent de manières concurrentes sur des disques différents). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0&#039;&#039;&#039; [ [#raid0_exemple exemple] ]&amp;lt;br /&amp;gt; Cette méthode (striping) est souvent utilisée lorsque la haute disponibilité des données n&#039;est pas nécessaire (on doit disposer d&#039;au moins 2 disques). Elle permet d&#039;obtenir une amélioration des performances I/O (lecture et écriture) tout en restant très proche du mode linéaire. Elle permet en effet d&#039;améliorer l&#039;algorithme en dispatchant les données sur l&#039;ensemble des disques (les données sont découpées puis dispersées sur les disques sans redondance).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Permet de disposer de 100% de l&#039;espace disque dans une partition ;&amp;lt;br /&amp;gt; - Amélioration des performances I/O en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Pas de haute disponibilité : la perte d&#039;un disque entraîne la perte des données. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 1&#039;&#039;&#039; [ [#raid1_exemple exemple] ]&amp;lt;br /&amp;gt; Ce mode (mirroring) implémente une stricte duplication des données sur tous les disques présents dans le miroir (on doit disposer d&#039;au moins 2 disques). L&#039;information étant enregistrée N fois sur les disques (permet de gagner du temps en lecture même si on en perds lors de l&#039;écriture), si on perds N-1 disques on ne perds pas les données. Il est à noter que l&#039;on perds tout de même 50% de l&#039;espace disque utile.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte de N-1 disques ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Dégradation des performances en écriture ;&amp;lt;br /&amp;gt; - Mobilise un peu plus de temps CPU dans le noyau ;&amp;lt;br /&amp;gt; - Perte de 50% de l&#039;espace disque. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0+1&#039;&#039;&#039; [ [#raid01_exemple exemple] ]&amp;lt;br /&amp;gt; Comme son nom l&#039;indique, cette solution combine le RAID 0 et le RAID 1. Elle permet d&#039;améliorer les performances I/O (Input/Output) en lecture tout en permettant une bonne disponibilité des données grâce à leur duplication sur l&#039;ensemble des disques. Mais tout comme le mode miroir, on perd 50% de l&#039;espace disque potentiellement disponible.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un côté du miroir ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Mobilise un peu plus de temps CPU dans le noyau ;&amp;lt;br /&amp;gt; - Perte de 50% de l&#039;espace disque. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 4&#039;&#039;&#039; [ [#raid4_exemple exemple] ]&amp;lt;br /&amp;gt; L&#039;algorithme utilisé ici (striping) permet de dispatcher les I/O sur l&#039;ensemble des disques (au moins 3) tout en réservant un disque pour sauvegarder une donnée supplémentaire de parité. De fait, si on perds un disque, on peut reconstituer l&#039;information manquante. Cependant, l&#039;utilisation d&#039;un disque de parité ajoute un goulot d&#039;étranglement au système (toute écriture va provoquer un accès au disque de parité), pour cela il est préférable d&#039;utiliser à la place le Raid5.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un disque ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - On perds l&#039;équivalent d&#039;un disque pour le stockage des données ;&amp;lt;br /&amp;gt; - On risque de plafonner le débit en écriture rapidement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 5&#039;&#039;&#039; [ [#raid5_exemple exemple] ]&amp;lt;br /&amp;gt; Le RAID 5 est sensiblement identique au RAID 4 mais améliore le procédé en stripant l&#039;information de parité sur l&#039;ensemble des disques.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un disque ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - On perds l&#039;équivalent d&#039;un disque pour le stockage des données.&lt;br /&gt;
&lt;br /&gt;
== Disques de rechange (ou spare) ==&lt;br /&gt;
&lt;br /&gt;
Les RAIDS 1, 4 et 5 peuvent utiliser la notion de disques de rechange. Un disque qui va venir remplacer automatiquement un disque en faute. Linux autorise l&#039;ajout on-line de disques de rechange (vous devez cependant les rajouter manuellement dans le fichier de configuration /etc/raidtab pour le cas d&#039;un reboot) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidhotadd /dev/md[0-15] /dev/sdf1&amp;lt;/code&amp;gt;&lt;br /&gt;
 ou&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidhotremove /dev/md[0-15] /dev/sdf1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mise en pratique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode linéaire&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus, pas nécessairement de la même taille, pour implémenter le mode linéaire. Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant (vous pouvez configurer 16 RAIDs différent sur une machine, d&#039;ou la symbolique avec [0-15] ainsi que dans le reste du document) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level linear&lt;br /&gt;
 	  nr-raid-disks 2 # disques impliqués&lt;br /&gt;
 	  persistent-superblock	1 # on considère ici que&lt;br /&gt;
 	                          # l&#039;auto-détection du RAID&lt;br /&gt;
 	                          # dans le noyau Linux est activé&lt;br /&gt;
 	device/dev/sda1 # premier disque&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1 # second disque&lt;br /&gt;
 	  raid-disk 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : vous ne disposez pas de disques de spare dans le mode linéaire. Si vous perdez un disque, alors vous perdez tout.&lt;br /&gt;
&lt;br /&gt;
Pour activer le RAID (cette procédure va rester la même pour les autres RAID) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# mkraid /dev/md[0-15]&lt;br /&gt;
# mkfs -t ext2 /dev/md[0-15] # on formatte la partition, ici en Ext2&lt;br /&gt;
# mount /dev/md[0-15] /scratch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour stopper un device RAID :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidstop /dev/md[0-15] # pour désactiver un device RAID &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour mettre en faute un disque (et le retirer avec raidhotremove) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidsetfaulty /dev/md[0-15] /dev/sdf1 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normallement le device sera automatiquement activé lors du boot (dans le fichier &#039;&#039;/etc/rc.d/rc.sysinit&#039;&#039; sur la Mandrake 7.2 mais vous pouvez ajoutez la commande &#039;&#039;&#039;raidstart /dev/md[0-15]&#039;&#039;&#039; dans le fichier &#039;&#039;/etc/rc.d/rc.local&#039;&#039; sinon), il ne restera plus qu&#039;à mettre à jour le fichier &#039;&#039;/etc/fstab&#039;&#039; pour le montage soit automatique. Cela va rester valide pour les autres RAIDS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus, de la même taille, pour implémenter le striping. Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size4 # voir en fin de document&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : vous ne disposez pas de disques de spare dans le RAID 0. Si vous perdez un disque, alors vous perdez tout.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 1&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus de la même taille pour implémenter le mode miroir et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 1&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 16&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 0+1&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer d&#039;un nombre de disques pairs de la même taille pour implémenter le RAID 0+1 mais vous ne pouvez pas utiliser de disques de spare individuels (je présume qu&#039;il est possible de mettre un place un device de spare contenant le même nombre de disques que les autres). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md0&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 4&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
&lt;br /&gt;
 raiddev /dev/md1&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 4&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sde1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdf1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
&lt;br /&gt;
 raiddev /dev/md2 # seul ce device pourra etre formate&lt;br /&gt;
 	raid-level 1&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  nr-spare-disks 0&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 16&lt;br /&gt;
 	device/dev/md0&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/md1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 4&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 3 disques ou plus, de la même taille, pour implémenter le RAID 4 et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 4&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 32&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 2&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 5&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 3 disques ou plus, de la même taille, pour implémenter le RAID 5 et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 5&lt;br /&gt;
 	  nr-raid-disks 5&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock 1&lt;br /&gt;
 	  # Parity placement algorithm&lt;br /&gt;
 	  # parity-algorithm	left-asymmetric&lt;br /&gt;
 	  # parity-algorithm	right-asymmetric&lt;br /&gt;
 	  # parity-algorithm	right-symmetric&lt;br /&gt;
 	  parity-algorithm	left-symmetric&lt;br /&gt;
 	  chunk-size 32&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 2&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  raid-disk 3&lt;br /&gt;
 	device/dev/sde1&lt;br /&gt;
 	  raid-disk 4&lt;br /&gt;
 	device/dev/sdf1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk Size ==&lt;br /&gt;
&lt;br /&gt;
Le choix de la &amp;quot;chunk size&amp;quot; dépends fortement du type de raid et du nombre de disques. Dans le cas d&#039;un raid 0 de 2 disques, si on écrit 16KB avec une chunk size de 4KB, on va écrire 4KB sur le premier disque puis 4KB sur le second puis de nouveau 4KB sur le premier et pour finir 4KB sur le second ...&lt;br /&gt;
&lt;br /&gt;
Vous obtiendrez généralement de bons résultats avec une chunk size à 32KB mais il est souvent bien utile d&#039;expérimenter soi même pour obtenir le meilleur tuning. A noter que sur un environnement Alpha (64 bits), j&#039;ai du mettre la chunk size à 16 au lieu de 4 car le raid 0 ne voulais pas s&#039;initialiser.&lt;br /&gt;
&lt;br /&gt;
== Amélioration des performances ==&lt;br /&gt;
&lt;br /&gt;
* Il sera trés souvent intéressant de mettre les disques sur des controleurs IDE ou SCSI différents ;&lt;br /&gt;
* La méthode la plus efficace pour améliorer drastiquement les performances I/O du système est le striping ;&lt;br /&gt;
* Raid 4/5 : les performances seront bien meilleures si vous utilisez une chunk-size de 32 (8*4096=32KB) et un formattage du RAID 4/5 avec la commande : &#039;&#039;&#039;mke2fs -b 4096 -R stride=8 /dev/md[0-15]&#039;&#039;&#039; (l&#039;option -R permet de passer des paramêtres utiles pour la construction du RAID, consulter le man pour avoir plus de détails) ;&lt;br /&gt;
* Raid 5 : l&#039;option &#039;&#039;&#039;parity-algorithm&#039;&#039;&#039; accepte plusieurs valeurs (left-asymmetric, right-asymmetric, left-symmetric ou right-symmetric). Il est préférable d&#039;utiliser &amp;quot;left-symmetric&amp;quot; pour obtenir de meilleures performances ;&lt;br /&gt;
* Penser à tuner la chunk size ...&lt;br /&gt;
&lt;br /&gt;
== Utiliser le RAID sur une partition de swap ? ==&lt;br /&gt;
&lt;br /&gt;
Il est aberrant d&#039;utiliser le raid sur une partition de swap. Plus simplement, Linux peut utiliser les partitions de swap de la même manière que le raid 0. Il suffit de donner à chaque partition le même niveau de priorité :&lt;br /&gt;
&lt;br /&gt;
 /dev/hdc1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
 /dev/hdd1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
 /dev/hde1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
&lt;br /&gt;
Il est aussi trés utile de placer ces partitions au début de disque plutôt qu&#039;à la fin. Vous obtiendrez de meilleurs résultats (la vélocité à cet endroit du disque est plus importante).&lt;br /&gt;
&lt;br /&gt;
Précisions (contribution wiki) : La non nécéssite de mettre le swap sur une partition RAID 1 depends de la stabilité qu&#039;on veut obtenir. En cas de crash d&#039;un disque contenant une partition Swap non mirorée, il peut être difficile pour le systeme de continuer à fonctionner sans le redémarrer. En effet, sur cette partition il y a potentiellement des process swappé sur le disque que l&#039;OS n&#039;arrivera certainement pas à remonter en memoire en cas de nécessité.&lt;br /&gt;
&lt;br /&gt;
Finalement :&lt;br /&gt;
&lt;br /&gt;
* Si la machine peut supporter un redémarage après un crash disque, alors oui il n&#039;est pas nécessaire de mirrorer les partitions de swap, et dans ce cas on accepte que les services associés à celle-ci soient indiponibles jusqu&#039;à ce que quelqu&#039;un redémarre la machine.&lt;br /&gt;
* Si la machine ne doit pas redémarrer (ce qui dans mon esprit correspond plus à la réalité d&#039;une machine en production) alors il est obligatoire de mirorer les partitions swap.&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
&lt;br /&gt;
* Pensez à mettre à jour votre fichier de configuration (/etc/raidtab) si vous devez enlever ou ajouter des disques...&lt;br /&gt;
* N&#039;utiliser le RAID que pour des disques de données. Si vous souhaitez utiliser la partition système avec du RAID (uniquement 0 ou 1), lisez attentivement les HowTo car la mise en oeuvre demeure complexe.&lt;br /&gt;
* Allez sur le site de [http://linas.org/linux/raid.html Linas Vepstas] qui regorge d&#039;informations intéressantes (pas uniquement sur le RAID).&lt;br /&gt;
* Allez aussi jeter un petit coup d&#039;oeil sur le projet [http://linux.msede.com/lvm/ Linux Logical Volume Manager] même si ce n&#039;est pas vraiment du Raid. A lire absolument car disposer d&#039;un tel outil sous Linux est une perspective fascinante car réservée auparavant aux Unix propriétaires HPUX, Tru64, AIX, etc ...&lt;br /&gt;
* On pourrait aussi poser la question de la pertinence d&#039;utiliser un système de fichiers journalisé en lieu et place de Ext2 (le gain lors d&#039;un reboot violent est indéniable). Dans l&#039;immédiat cela n&#039;est pas possible (noyau 2.2.x) mais ouvrira à Linux de nouvelles et fascinantes perspectives...&lt;br /&gt;
&lt;br /&gt;
== Nouvel outil de RAID sous Linux: mdadm ==&lt;br /&gt;
&lt;br /&gt;
La plupart des distributions proposent aujourd&#039;hui mdadm, voici les différentes étapes pour mettre en place les différents niveau de RAID.&lt;br /&gt;
&lt;br /&gt;
Voici les sources d&#039;informations:&lt;br /&gt;
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-ig-s390-multi-fr-4/s1-s390info-raid.html&lt;br /&gt;
&lt;br /&gt;
http://www.iteam.org/wiki/wakka.php?wiki=RaidBaal&lt;br /&gt;
&lt;br /&gt;
http://www.frlinux.net/?section=systeme&amp;amp;article=146&lt;br /&gt;
&lt;br /&gt;
http://xenfr.org/tiki-index.php?page=Stockage&lt;br /&gt;
&lt;br /&gt;
Malheureusement, je n&#039;ai fait les manipulations que pour un RAID 5 avec 4 disques de 6 partitions.&lt;br /&gt;
&lt;br /&gt;
Voici la mise en place d&#039;un RAID 5 avec 2 spares:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les disques:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
*  Disk /dev/hde: 164.6 GB, 164696555520 bytes &lt;br /&gt;
255 heads, 63 sectors/track, 20023 cylinders&lt;br /&gt;
Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdf: 82.3 GB, 82348277760 bytes &lt;br /&gt;
16 heads, 63 sectors/track, 159560 cylinders&lt;br /&gt;
Units = cylinders of 1008 * 512 = 516096 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdg: 164.6 GB, 164696555520 bytes &lt;br /&gt;
255 heads, 63 sectors/track, 20023 cylinders&lt;br /&gt;
Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdh: 82.3 GB, 82348277760 bytes &lt;br /&gt;
16 heads, 63 sectors/track, 159560 cylinders&lt;br /&gt;
Units = cylinders of 1008 * 512 = 516096 bytes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les partitions &#039;&#039;&#039;&lt;br /&gt;
6 Partitions de 78 Go&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    * /dev/hde1 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hde2 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdf1 : Sur rack disque (à changer si problème)&lt;br /&gt;
    * /dev/hdg1 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdg2 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdh1 : SPARE  :  fd  Linux raid autodetect&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Création du RAID 5 sur md0&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mdadm --create /dev/md0 --level=5 --raid-devices=5 /dev/hde1 /dev/hde2 /dev/hdf1 /dev/hdg1 /dev/hdg2 --spare-devices=1 /dev/hdh1&lt;br /&gt;
mdadm: /dev/hde1 appears to contain an ext2fs file system&lt;br /&gt;
   size=160836448K  mtime=Sat Oct  1 18:05:35 2005&lt;br /&gt;
mdadm: /dev/hde1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hde2 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdf1 appears to contain an ext2fs file system&lt;br /&gt;
   size=20479504K  mtime=Sat Oct  1 18:17:51 2005&lt;br /&gt;
mdadm: /dev/hdf1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdg1 appears to contain an ext2fs file system&lt;br /&gt;
   size=2048256K  mtime=Sat Oct  1 15:18:46 2005&lt;br /&gt;
mdadm: /dev/hdg1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdg2 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdh1 appears to contain an ext2fs file system&lt;br /&gt;
   size=51025432K  mtime=Sat Oct  1 15:18:56 2005&lt;br /&gt;
Continue creating array? y&lt;br /&gt;
mdadm: array /dev/md0 started. &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Informations sur le volume RAID&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mdadm --detail /dev/md0&lt;br /&gt;
/dev/md0:&lt;br /&gt;
       Version : 00.90.01&lt;br /&gt;
 Creation Time : Sun Oct  2 15:18:17 2005&lt;br /&gt;
    Raid Level : raid5&lt;br /&gt;
    Array Size : 312495872 (298.02 GiB 320.00 GB)&lt;br /&gt;
   Device Size : 78123968 (74.50 GiB 80.00 GB)&lt;br /&gt;
  Raid Devices : 5&lt;br /&gt;
 Total Devices : 6&lt;br /&gt;
Preferred Minor : 0&lt;br /&gt;
   Persistence : Superblock is persistent&lt;br /&gt;
&lt;br /&gt;
   Update Time : Sun Oct  2 15:18:17 2005&lt;br /&gt;
         State : clean, degraded, recovering&lt;br /&gt;
Active Devices : 4&lt;br /&gt;
Working Devices : 6&lt;br /&gt;
Failed Devices : 0&lt;br /&gt;
 Spare Devices : 2&lt;br /&gt;
&lt;br /&gt;
        Layout : left-symmetric&lt;br /&gt;
    Chunk Size : 64K&lt;br /&gt;
&lt;br /&gt;
Rebuild Status : 1% complete&lt;br /&gt;
&lt;br /&gt;
          UUID : 0a551c50:3da4f12a:5c9b3cdc:b9802273&lt;br /&gt;
        Events : 0.2&lt;br /&gt;
&lt;br /&gt;
   Number   Major   Minor   RaidDevice? State&lt;br /&gt;
      0      33        1        0      active sync   /dev/hde1&lt;br /&gt;
      1      33        2        1      active sync   /dev/hde2&lt;br /&gt;
      2      33       65        2      active sync   /dev/hdf1&lt;br /&gt;
      3      34        1        3      active sync   /dev/hdg1&lt;br /&gt;
      4       0        0        -      removed&lt;br /&gt;
&lt;br /&gt;
      5      34        2        4      spare rebuilding   /dev/hdg2&lt;br /&gt;
      6      34       65        -      spare   /dev/hdh1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Arrêter le volume RAID 5 &#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --stop /dev/md0  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pour démarrer le volume RAID 5&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --assemble /dev/md0 /dev/hde1 /dev/hde2 /dev/hdf1 /dev/hdg1 /dev/hdg2 /dev/hdh1&lt;br /&gt;
mdadm: /dev/md0 has been started with 4 drives (out of 5) and 2 spares.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --detail --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
more /etc/mdadm/mdadm.conf&lt;br /&gt;
DEVICE partitions&lt;br /&gt;
ARRAY /dev/md0 level=raid5 num-devices=5 spares=2 UUID=70714300:9da2e11b:a61a9c73:e2e1c245&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message lors de l&#039;activation du volume RAID 5 dans dmesg&lt;br /&gt;
md: md0 stopped.&lt;br /&gt;
md: bind&amp;lt;hde2&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdf1&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdg1&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdh1&amp;gt;&lt;br /&gt;
md0: WARNING: hdg2 appears to be on the same physical disk as hdg1. True&lt;br /&gt;
     protection against single-disk failure might be compromised.&lt;br /&gt;
md: bind&amp;lt;hdg2&amp;gt;&lt;br /&gt;
md0: WARNING: hde1 appears to be on the same physical disk as hde2. True&lt;br /&gt;
     protection against single-disk failure might be compromised.&lt;br /&gt;
md: bind&amp;lt;hde1&amp;gt;&lt;br /&gt;
raid5: device hde1 operational as raid disk 0&lt;br /&gt;
raid5: device hdh1 operational as raid disk 4&lt;br /&gt;
raid5: device hdg1 operational as raid disk 3&lt;br /&gt;
raid5: device hdf1 operational as raid disk 2&lt;br /&gt;
raid5: device hde2 operational as raid disk 1&lt;br /&gt;
raid5: allocated 5234kB for md0&lt;br /&gt;
raid5: raid level 5 set md0 active with 5 out of 5 devices, algorithm 2&lt;br /&gt;
RAID5 conf printout:&lt;br /&gt;
 --- rd:5 wd:5 fd:0&lt;br /&gt;
 disk 0, o:1, dev:hde1&lt;br /&gt;
 disk 1, o:1, dev:hde2&lt;br /&gt;
 disk 2, o:1, dev:hdf1&lt;br /&gt;
 disk 3, o:1, dev:hdg1&lt;br /&gt;
 disk 4, o:1, dev:hdh1&lt;br /&gt;
&lt;br /&gt;
== Glossaire ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID&#039;&#039;&#039;&amp;lt;br /&amp;gt; Le mot RAID est un acronyme pour &amp;quot;Redundant Array of Inexpensive Disks&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Lionel Tricon le 03/02/2001.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|03/02/2001|Lionel Tricon|CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Ge</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=RAID&amp;diff=14986</id>
		<title>RAID</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=RAID&amp;diff=14986"/>
		<updated>2007-10-13T13:13:04Z</updated>

		<summary type="html">&lt;p&gt;Ge : /* Niveaux de RAID disponibles sous Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Gestion des disques et systèmes de fichiers]]&lt;br /&gt;
= Raid logiciel sous Linux =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Raid logiciel sous Linux&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par [http://www.caids.org/~tricon/lionel Lionel Tricon]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Un petit tutoriel sur la configuration du Raid logiciel sous Linux.&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Le principe du [#RAID RAID] repose sur l&#039;idée de combiner plusieurs disques durs bon marché (indifféremment IDE ou SCSI) dans le but de :&lt;br /&gt;
&lt;br /&gt;
* Etendre la capacité de stockage en ligne possible ; &lt;br /&gt;
* Introduire une notion de redondance (pour autoriser une plus grande sécurisation des données) ; &lt;br /&gt;
* Améliorer les performances. &lt;br /&gt;
&lt;br /&gt;
En effet, la capacité des disques actuels, même si elle s&#039;est singulièrement améliorée ces dernières années (on trouve couramment du 18 ou du 36 Gigas de nos jours), reste tout de même peu de chose lorsque l&#039;on souhaite parler en Téra et non plus en Giga.&lt;br /&gt;
&lt;br /&gt;
Même sans aller jusqu&#039;à vouloir stocker de grandes quantités de données (soyons raisonnable, 9 Giga devrait suffire pour un petit serveur web ...), on peut vouloir utiliser la notion de redondance du Raid afin d&#039;améliorer la tolérance aux pannes de son architecture : les données seront dupliquées sur des disques différents afin de pouvoir palier à la perte d&#039;un disque.&lt;br /&gt;
&lt;br /&gt;
Si la résistance aux pannes de l&#039;architecture n&#039;est pas une contrainte majeure (on peut envisager de sauvegarder sur bande tous les soirs son serveur de fichiers), on peut utiliser le Raid pour étendre simplement la capacité de stockage possible, et ce de manière transparente pour le système : 4 disques de 4,3Go donnant une partition utile de ~16Go.&lt;br /&gt;
&lt;br /&gt;
On peut vouloir aussi gagner en performance sur les I/O disques : en effet, lire ou écrire sur de multiples disques permet de paralléliser les opérations (surtout sur des bus différents) et donc de gagner en performances.&lt;br /&gt;
&lt;br /&gt;
En fait, il ne faut d&#039;ailleurs pas parler d&#039;un seul Raid, mais bien de plusieurs : [#linear Mode Linéaire], [#raid0 Raid 0], [#raid1 Raid 1], [#raid01 Raid 0+1], [#raid4 Raid 4] ou encore [#raid5 Raid 5]. Il conviendra donc d&#039;analyser à l&#039;avance ses besoins pour faire le bon choix.&lt;br /&gt;
&lt;br /&gt;
Je n&#039;aborderai que le Raid logiciel (software) dans ce document et non le Raid matériel (hardware). Le premier est supporté directement dans le code de l&#039;OS alors que l&#039;intelligence du second est déportée dans du hardware : que ce soit sous forme d&#039;une carte à enficher dans le serveur (nécessite un driver) ou encore dans une baie extérieure (transparent pour l&#039;OS). On peut dire que le Raid logiciel est moins performant, moins tolérant mais beaucoup plus accessible financièrement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : Dans presque tous les RAIDS que l&#039;on va aborder (excepté le RAID linéaire et le raid 0), il sera possible de configurer des disques de rechange (spare disks) qui seront automatiquement utilisés pour reconstruire le RAID dans le cas de pannes disques (pas dans le cas de pannes sur le contrôleur IDE ou SCSI).&lt;br /&gt;
&lt;br /&gt;
== Le Raid et Linux ==&lt;br /&gt;
&lt;br /&gt;
Le mieux est de directement utiliser le support RAID présent dans les distributions Linux récentes (version des RaidTools : 0.90) : j&#039;ai personnellement testé la distribution Linux RedHat 6.1 sur plateforme Alpha et la Mandrake 7.2 Intel sans rencontrer de soucis majeurs.&lt;br /&gt;
&lt;br /&gt;
Vérifiez que les modules linear, raid0, raid1 et raid5 sont chargés. Au pire, ajoutez les dans le fichier /etc/modules :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# modprobe linear&lt;br /&gt;
# modprobe raid0&lt;br /&gt;
# modprobe raid1&lt;br /&gt;
# modprobe raid5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On valide ensuite l&#039;existence du fichier virtuel &#039;&#039;/proc/mdstat&#039;&#039; (Par défaut, le noyau est compilé avec le support du RAID) et on vérifie l&#039;installation du package &#039;&#039;raidtools&#039;&#039; (format rpm sur la RedHat et la Mandrake) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# cat /proc/mdstat&lt;br /&gt;
Personalities : [linear] [raid0] [raid1] [raid5] /* liste des drivers */&lt;br /&gt;
read_ahead not set&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# rpm -qa | grep raid&lt;br /&gt;
raidtools-0.90-8mdk &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le seule fichier que l&#039;on aura à configurer pour tous les RAIDS sera le fichier &#039;&#039;/etc/raidtab&#039;&#039; (simple, non?) et le fichier &#039;&#039;/etc/fstab&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Si vous ne disposez pas de plusieurs disques vous pouvez utiliser des partitions à la place. Cela ne vous apportera ni amélioration de performance, ni haute disponibilité, mais au moins une grande satisfaction de pouvoir mettre en pratique vos connaissances ;-)&lt;br /&gt;
&lt;br /&gt;
== Niveaux de RAID disponibles sous Linux ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode Linéaire&#039;&#039;&#039; [ [#linear_exemple exemple] ]&amp;lt;br /&amp;gt; Cette solution est pertinente lorsque l&#039;on souhaite étendre la capacité de stockage disponible en ligne sans introduire une notion de tolérance aux pannes. Cette solution combine les capacités de stockage d&#039;un ensemble de disques existants (les données sont d&#039;abord écrites sur le premier disque, puis lorsqu&#039;il est plein sur le second, etc...) et permet d&#039;utiliser 100% de l&#039;espace disque utile.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Permet de disposer de 100% de l&#039;espace disque dans une partition ;&amp;lt;br /&amp;gt; - Moins de temps CPU mobilisé par le RAID dans le noyau. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Pas de haute disponibilité : la perte d&#039;un disque entraine la perte des données ;&amp;lt;br /&amp;gt; - Quasiment pas d&#039;amélioration des performances (on peut cependant obtenir une amélioration si des I/O se produisent de manières concurrentes sur des disques différents). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0&#039;&#039;&#039; [ [#raid0_exemple exemple] ]&amp;lt;br /&amp;gt; Cette méthode (striping) est souvent utilisée lorsque la haute disponibilité des données n&#039;est pas nécessaire (on doit disposer d&#039;au moins 2 disques). Elle permet d&#039;obtenir une amélioration des performances I/O (lecture et écriture) tout en restant très proche du mode linéaire. Elle permet en effet d&#039;améliorer l&#039;algorithme en dispatchant les données sur l&#039;ensemble des disques (les données sont découpées puis dispersées sur les disques sans redondance).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Permet de disposer de 100% de l&#039;espace disque dans une partition ;&amp;lt;br /&amp;gt; - Amélioration des performances I/O en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Pas de haute disponibilité : la perte d&#039;un disque entraîne la perte des données. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 1&#039;&#039;&#039; [ [#raid1_exemple exemple] ]&amp;lt;br /&amp;gt; Ce mode (mirroring) implémente une stricte duplication des données sur tous les disques présents dans le miroir (on doit disposer d&#039;au moins 2 disques). L&#039;information étant enregistrée N fois sur les disques (permet de gagner du temps en lecture même si on en perds lors de l&#039;écriture), si on perds N-1 disques on ne perds pas les données. Il est à noter que l&#039;on perds tout de même 50% de l&#039;espace disque utile.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte de N-1 disques ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Dégradation des performances en écriture ;&amp;lt;br /&amp;gt; - Mobilise un peu plus de temps CPU dans le noyau ;&amp;lt;br /&amp;gt; - Perte de 50% de l&#039;espace disque. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0+1&#039;&#039;&#039; [ [#raid01_exemple exemple] ]&amp;lt;br /&amp;gt; Comme son nom l&#039;indique, cette solution combine le RAID 0 et le RAID 1. Elle permet d&#039;améliorer les performances I/O (Input/Output) en lecture tout en permettant une bonne disponibilité des données grâce à leur duplication sur l&#039;ensemble des disques. Mais tout comme le mode miroir, on perd 50% de l&#039;espace disque potentiellement disponible.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un côté du miroir ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Mobilise un peu plus de temps CPU dans le noyau ;&amp;lt;br /&amp;gt; - Perte de 50% de l&#039;espace disque. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 4&#039;&#039;&#039; [ [#raid4_exemple exemple] ]&amp;lt;br /&amp;gt; L&#039;algorithme utilisé ici (striping) permet de dispatcher les I/O sur l&#039;ensemble des disques (au moins 3) tout en réservant un disque pour sauvegarder une donnée supplémentaire de parité. De fait, si on perds un disque, on peut reconstituer l&#039;information manquante. Cependant, l&#039;utilisation d&#039;un disque de parité ajoute un goulot d&#039;étranglement au système (toute écriture va provoquer un accès au disque de parité), pour cela il est préférable d&#039;utiliser à la place le Raid5.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un disque ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - On perds l&#039;équivalent d&#039;un disque pour le stockage des données ;&amp;lt;br /&amp;gt; - On risque de plafonner le débit en écriture rapidement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 5&#039;&#039;&#039; [ [#raid5_exemple exemple] ]&amp;lt;br /&amp;gt; Le RAID 5 est sensiblement identique au RAID 4 mais améliore le procédé en stripant l&#039;information de parité sur l&#039;ensemble des disques.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un disque ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - On perds l&#039;équivalent d&#039;un disque pour le stockage des données.&lt;br /&gt;
&lt;br /&gt;
== Disques de spare ==&lt;br /&gt;
&lt;br /&gt;
Les RAIDS 1, 4 et 5 peuvent utiliser la notion de disques de spare. Un disque qui va venir remplacer automatiquement un disque en faute. Linux autorise l&#039;ajout on-line de disques de spare (vous devez cependant les rajouter manuellement dans le fichier de configuration /etc/raidtab pour le cas d&#039;un reboot) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidhotadd /dev/md[0-15] /dev/sdf1&amp;lt;/code&amp;gt;&lt;br /&gt;
 ou&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidhotremove /dev/md[0-15] /dev/sdf1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mise en pratique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode linéaire&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus, pas nécessairement de la même taille, pour implémenter le mode linéaire. Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant (vous pouvez configurer 16 RAIDs différent sur une machine, d&#039;ou la symbolique avec [0-15] ainsi que dans le reste du document) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level linear&lt;br /&gt;
 	  nr-raid-disks 2 # disques impliqués&lt;br /&gt;
 	  persistent-superblock	1 # on considère ici que&lt;br /&gt;
 	                          # l&#039;auto-détection du RAID&lt;br /&gt;
 	                          # dans le noyau Linux est activé&lt;br /&gt;
 	device/dev/sda1 # premier disque&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1 # second disque&lt;br /&gt;
 	  raid-disk 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : vous ne disposez pas de disques de spare dans le mode linéaire. Si vous perdez un disque, alors vous perdez tout.&lt;br /&gt;
&lt;br /&gt;
Pour activer le RAID (cette procédure va rester la même pour les autres RAID) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# mkraid /dev/md[0-15]&lt;br /&gt;
# mkfs -t ext2 /dev/md[0-15] # on formatte la partition, ici en Ext2&lt;br /&gt;
# mount /dev/md[0-15] /scratch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour stopper un device RAID :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidstop /dev/md[0-15] # pour désactiver un device RAID &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour mettre en faute un disque (et le retirer avec raidhotremove) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidsetfaulty /dev/md[0-15] /dev/sdf1 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normallement le device sera automatiquement activé lors du boot (dans le fichier &#039;&#039;/etc/rc.d/rc.sysinit&#039;&#039; sur la Mandrake 7.2 mais vous pouvez ajoutez la commande &#039;&#039;&#039;raidstart /dev/md[0-15]&#039;&#039;&#039; dans le fichier &#039;&#039;/etc/rc.d/rc.local&#039;&#039; sinon), il ne restera plus qu&#039;à mettre à jour le fichier &#039;&#039;/etc/fstab&#039;&#039; pour le montage soit automatique. Cela va rester valide pour les autres RAIDS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus, de la même taille, pour implémenter le striping. Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size4 # voir en fin de document&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : vous ne disposez pas de disques de spare dans le RAID 0. Si vous perdez un disque, alors vous perdez tout.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 1&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus de la même taille pour implémenter le mode miroir et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 1&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 16&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 0+1&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer d&#039;un nombre de disques pairs de la même taille pour implémenter le RAID 0+1 mais vous ne pouvez pas utiliser de disques de spare individuels (je présume qu&#039;il est possible de mettre un place un device de spare contenant le même nombre de disques que les autres). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md0&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 4&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
&lt;br /&gt;
 raiddev /dev/md1&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 4&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sde1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdf1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
&lt;br /&gt;
 raiddev /dev/md2 # seul ce device pourra etre formate&lt;br /&gt;
 	raid-level 1&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  nr-spare-disks 0&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 16&lt;br /&gt;
 	device/dev/md0&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/md1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 4&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 3 disques ou plus, de la même taille, pour implémenter le RAID 4 et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 4&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 32&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 2&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 5&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 3 disques ou plus, de la même taille, pour implémenter le RAID 5 et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 5&lt;br /&gt;
 	  nr-raid-disks 5&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock 1&lt;br /&gt;
 	  # Parity placement algorithm&lt;br /&gt;
 	  # parity-algorithm	left-asymmetric&lt;br /&gt;
 	  # parity-algorithm	right-asymmetric&lt;br /&gt;
 	  # parity-algorithm	right-symmetric&lt;br /&gt;
 	  parity-algorithm	left-symmetric&lt;br /&gt;
 	  chunk-size 32&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 2&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  raid-disk 3&lt;br /&gt;
 	device/dev/sde1&lt;br /&gt;
 	  raid-disk 4&lt;br /&gt;
 	device/dev/sdf1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk Size ==&lt;br /&gt;
&lt;br /&gt;
Le choix de la &amp;quot;chunk size&amp;quot; dépends fortement du type de raid et du nombre de disques. Dans le cas d&#039;un raid 0 de 2 disques, si on écrit 16KB avec une chunk size de 4KB, on va écrire 4KB sur le premier disque puis 4KB sur le second puis de nouveau 4KB sur le premier et pour finir 4KB sur le second ...&lt;br /&gt;
&lt;br /&gt;
Vous obtiendrez généralement de bons résultats avec une chunk size à 32KB mais il est souvent bien utile d&#039;expérimenter soi même pour obtenir le meilleur tuning. A noter que sur un environnement Alpha (64 bits), j&#039;ai du mettre la chunk size à 16 au lieu de 4 car le raid 0 ne voulais pas s&#039;initialiser.&lt;br /&gt;
&lt;br /&gt;
== Amélioration des performances ==&lt;br /&gt;
&lt;br /&gt;
* Il sera trés souvent intéressant de mettre les disques sur des controleurs IDE ou SCSI différents ;&lt;br /&gt;
* La méthode la plus efficace pour améliorer drastiquement les performances I/O du système est le striping ;&lt;br /&gt;
* Raid 4/5 : les performances seront bien meilleures si vous utilisez une chunk-size de 32 (8*4096=32KB) et un formattage du RAID 4/5 avec la commande : &#039;&#039;&#039;mke2fs -b 4096 -R stride=8 /dev/md[0-15]&#039;&#039;&#039; (l&#039;option -R permet de passer des paramêtres utiles pour la construction du RAID, consulter le man pour avoir plus de détails) ;&lt;br /&gt;
* Raid 5 : l&#039;option &#039;&#039;&#039;parity-algorithm&#039;&#039;&#039; accepte plusieurs valeurs (left-asymmetric, right-asymmetric, left-symmetric ou right-symmetric). Il est préférable d&#039;utiliser &amp;quot;left-symmetric&amp;quot; pour obtenir de meilleures performances ;&lt;br /&gt;
* Penser à tuner la chunk size ...&lt;br /&gt;
&lt;br /&gt;
== Utiliser le RAID sur une partition de swap ? ==&lt;br /&gt;
&lt;br /&gt;
Il est aberrant d&#039;utiliser le raid sur une partition de swap. Plus simplement, Linux peut utiliser les partitions de swap de la même manière que le raid 0. Il suffit de donner à chaque partition le même niveau de priorité :&lt;br /&gt;
&lt;br /&gt;
 /dev/hdc1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
 /dev/hdd1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
 /dev/hde1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
&lt;br /&gt;
Il est aussi trés utile de placer ces partitions au début de disque plutôt qu&#039;à la fin. Vous obtiendrez de meilleurs résultats (la vélocité à cet endroit du disque est plus importante).&lt;br /&gt;
&lt;br /&gt;
Précisions (contribution wiki) : La non nécéssite de mettre le swap sur une partition RAID 1 depends de la stabilité qu&#039;on veut obtenir. En cas de crash d&#039;un disque contenant une partition Swap non mirorée, il peut être difficile pour le systeme de continuer à fonctionner sans le redémarrer. En effet, sur cette partition il y a potentiellement des process swappé sur le disque que l&#039;OS n&#039;arrivera certainement pas à remonter en memoire en cas de nécessité.&lt;br /&gt;
&lt;br /&gt;
Finalement :&lt;br /&gt;
&lt;br /&gt;
* Si la machine peut supporter un redémarage après un crash disque, alors oui il n&#039;est pas nécessaire de mirrorer les partitions de swap, et dans ce cas on accepte que les services associés à celle-ci soient indiponibles jusqu&#039;à ce que quelqu&#039;un redémarre la machine.&lt;br /&gt;
* Si la machine ne doit pas redémarrer (ce qui dans mon esprit correspond plus à la réalité d&#039;une machine en production) alors il est obligatoire de mirorer les partitions swap.&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
&lt;br /&gt;
* Pensez à mettre à jour votre fichier de configuration (/etc/raidtab) si vous devez enlever ou ajouter des disques...&lt;br /&gt;
* N&#039;utiliser le RAID que pour des disques de données. Si vous souhaitez utiliser la partition système avec du RAID (uniquement 0 ou 1), lisez attentivement les HowTo car la mise en oeuvre demeure complexe.&lt;br /&gt;
* Allez sur le site de [http://linas.org/linux/raid.html Linas Vepstas] qui regorge d&#039;informations intéressantes (pas uniquement sur le RAID).&lt;br /&gt;
* Allez aussi jeter un petit coup d&#039;oeil sur le projet [http://linux.msede.com/lvm/ Linux Logical Volume Manager] même si ce n&#039;est pas vraiment du Raid. A lire absolument car disposer d&#039;un tel outil sous Linux est une perspective fascinante car réservée auparavant aux Unix propriétaires HPUX, Tru64, AIX, etc ...&lt;br /&gt;
* On pourrait aussi poser la question de la pertinence d&#039;utiliser un système de fichiers journalisé en lieu et place de Ext2 (le gain lors d&#039;un reboot violent est indéniable). Dans l&#039;immédiat cela n&#039;est pas possible (noyau 2.2.x) mais ouvrira à Linux de nouvelles et fascinantes perspectives...&lt;br /&gt;
&lt;br /&gt;
== Nouvel outil de RAID sous Linux: mdadm ==&lt;br /&gt;
&lt;br /&gt;
La plupart des distributions proposent aujourd&#039;hui mdadm, voici les différentes étapes pour mettre en place les différents niveau de RAID.&lt;br /&gt;
&lt;br /&gt;
Voici les sources d&#039;informations:&lt;br /&gt;
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-ig-s390-multi-fr-4/s1-s390info-raid.html&lt;br /&gt;
&lt;br /&gt;
http://www.iteam.org/wiki/wakka.php?wiki=RaidBaal&lt;br /&gt;
&lt;br /&gt;
http://www.frlinux.net/?section=systeme&amp;amp;article=146&lt;br /&gt;
&lt;br /&gt;
http://xenfr.org/tiki-index.php?page=Stockage&lt;br /&gt;
&lt;br /&gt;
Malheureusement, je n&#039;ai fait les manipulations que pour un RAID 5 avec 4 disques de 6 partitions.&lt;br /&gt;
&lt;br /&gt;
Voici la mise en place d&#039;un RAID 5 avec 2 spares:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les disques:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
*  Disk /dev/hde: 164.6 GB, 164696555520 bytes &lt;br /&gt;
255 heads, 63 sectors/track, 20023 cylinders&lt;br /&gt;
Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdf: 82.3 GB, 82348277760 bytes &lt;br /&gt;
16 heads, 63 sectors/track, 159560 cylinders&lt;br /&gt;
Units = cylinders of 1008 * 512 = 516096 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdg: 164.6 GB, 164696555520 bytes &lt;br /&gt;
255 heads, 63 sectors/track, 20023 cylinders&lt;br /&gt;
Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdh: 82.3 GB, 82348277760 bytes &lt;br /&gt;
16 heads, 63 sectors/track, 159560 cylinders&lt;br /&gt;
Units = cylinders of 1008 * 512 = 516096 bytes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les partitions &#039;&#039;&#039;&lt;br /&gt;
6 Partitions de 78 Go&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    * /dev/hde1 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hde2 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdf1 : Sur rack disque (à changer si problème)&lt;br /&gt;
    * /dev/hdg1 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdg2 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdh1 : SPARE  :  fd  Linux raid autodetect&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Création du RAID 5 sur md0&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mdadm --create /dev/md0 --level=5 --raid-devices=5 /dev/hde1 /dev/hde2 /dev/hdf1 /dev/hdg1 /dev/hdg2 --spare-devices=1 /dev/hdh1&lt;br /&gt;
mdadm: /dev/hde1 appears to contain an ext2fs file system&lt;br /&gt;
   size=160836448K  mtime=Sat Oct  1 18:05:35 2005&lt;br /&gt;
mdadm: /dev/hde1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hde2 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdf1 appears to contain an ext2fs file system&lt;br /&gt;
   size=20479504K  mtime=Sat Oct  1 18:17:51 2005&lt;br /&gt;
mdadm: /dev/hdf1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdg1 appears to contain an ext2fs file system&lt;br /&gt;
   size=2048256K  mtime=Sat Oct  1 15:18:46 2005&lt;br /&gt;
mdadm: /dev/hdg1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdg2 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdh1 appears to contain an ext2fs file system&lt;br /&gt;
   size=51025432K  mtime=Sat Oct  1 15:18:56 2005&lt;br /&gt;
Continue creating array? y&lt;br /&gt;
mdadm: array /dev/md0 started. &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Informations sur le volume RAID&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mdadm --detail /dev/md0&lt;br /&gt;
/dev/md0:&lt;br /&gt;
       Version : 00.90.01&lt;br /&gt;
 Creation Time : Sun Oct  2 15:18:17 2005&lt;br /&gt;
    Raid Level : raid5&lt;br /&gt;
    Array Size : 312495872 (298.02 GiB 320.00 GB)&lt;br /&gt;
   Device Size : 78123968 (74.50 GiB 80.00 GB)&lt;br /&gt;
  Raid Devices : 5&lt;br /&gt;
 Total Devices : 6&lt;br /&gt;
Preferred Minor : 0&lt;br /&gt;
   Persistence : Superblock is persistent&lt;br /&gt;
&lt;br /&gt;
   Update Time : Sun Oct  2 15:18:17 2005&lt;br /&gt;
         State : clean, degraded, recovering&lt;br /&gt;
Active Devices : 4&lt;br /&gt;
Working Devices : 6&lt;br /&gt;
Failed Devices : 0&lt;br /&gt;
 Spare Devices : 2&lt;br /&gt;
&lt;br /&gt;
        Layout : left-symmetric&lt;br /&gt;
    Chunk Size : 64K&lt;br /&gt;
&lt;br /&gt;
Rebuild Status : 1% complete&lt;br /&gt;
&lt;br /&gt;
          UUID : 0a551c50:3da4f12a:5c9b3cdc:b9802273&lt;br /&gt;
        Events : 0.2&lt;br /&gt;
&lt;br /&gt;
   Number   Major   Minor   RaidDevice? State&lt;br /&gt;
      0      33        1        0      active sync   /dev/hde1&lt;br /&gt;
      1      33        2        1      active sync   /dev/hde2&lt;br /&gt;
      2      33       65        2      active sync   /dev/hdf1&lt;br /&gt;
      3      34        1        3      active sync   /dev/hdg1&lt;br /&gt;
      4       0        0        -      removed&lt;br /&gt;
&lt;br /&gt;
      5      34        2        4      spare rebuilding   /dev/hdg2&lt;br /&gt;
      6      34       65        -      spare   /dev/hdh1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Arrêter le volume RAID 5 &#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --stop /dev/md0  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pour démarrer le volume RAID 5&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --assemble /dev/md0 /dev/hde1 /dev/hde2 /dev/hdf1 /dev/hdg1 /dev/hdg2 /dev/hdh1&lt;br /&gt;
mdadm: /dev/md0 has been started with 4 drives (out of 5) and 2 spares.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --detail --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
more /etc/mdadm/mdadm.conf&lt;br /&gt;
DEVICE partitions&lt;br /&gt;
ARRAY /dev/md0 level=raid5 num-devices=5 spares=2 UUID=70714300:9da2e11b:a61a9c73:e2e1c245&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message lors de l&#039;activation du volume RAID 5 dans dmesg&lt;br /&gt;
md: md0 stopped.&lt;br /&gt;
md: bind&amp;lt;hde2&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdf1&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdg1&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdh1&amp;gt;&lt;br /&gt;
md0: WARNING: hdg2 appears to be on the same physical disk as hdg1. True&lt;br /&gt;
     protection against single-disk failure might be compromised.&lt;br /&gt;
md: bind&amp;lt;hdg2&amp;gt;&lt;br /&gt;
md0: WARNING: hde1 appears to be on the same physical disk as hde2. True&lt;br /&gt;
     protection against single-disk failure might be compromised.&lt;br /&gt;
md: bind&amp;lt;hde1&amp;gt;&lt;br /&gt;
raid5: device hde1 operational as raid disk 0&lt;br /&gt;
raid5: device hdh1 operational as raid disk 4&lt;br /&gt;
raid5: device hdg1 operational as raid disk 3&lt;br /&gt;
raid5: device hdf1 operational as raid disk 2&lt;br /&gt;
raid5: device hde2 operational as raid disk 1&lt;br /&gt;
raid5: allocated 5234kB for md0&lt;br /&gt;
raid5: raid level 5 set md0 active with 5 out of 5 devices, algorithm 2&lt;br /&gt;
RAID5 conf printout:&lt;br /&gt;
 --- rd:5 wd:5 fd:0&lt;br /&gt;
 disk 0, o:1, dev:hde1&lt;br /&gt;
 disk 1, o:1, dev:hde2&lt;br /&gt;
 disk 2, o:1, dev:hdf1&lt;br /&gt;
 disk 3, o:1, dev:hdg1&lt;br /&gt;
 disk 4, o:1, dev:hdh1&lt;br /&gt;
&lt;br /&gt;
== Glossaire ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID&#039;&#039;&#039;&amp;lt;br /&amp;gt; Le mot RAID est un acronyme pour &amp;quot;Redundant Array of Inexpensive Disks&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Lionel Tricon le 03/02/2001.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|03/02/2001|Lionel Tricon|CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Ge</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=RAID&amp;diff=14985</id>
		<title>RAID</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=RAID&amp;diff=14985"/>
		<updated>2007-10-13T12:59:55Z</updated>

		<summary type="html">&lt;p&gt;Ge : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Gestion des disques et systèmes de fichiers]]&lt;br /&gt;
= Raid logiciel sous Linux =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Raid logiciel sous Linux&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par [http://www.caids.org/~tricon/lionel Lionel Tricon]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Un petit tutoriel sur la configuration du Raid logiciel sous Linux.&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Le principe du [#RAID RAID] repose sur l&#039;idée de combiner plusieurs disques durs bon marché (indifféremment IDE ou SCSI) dans le but de :&lt;br /&gt;
&lt;br /&gt;
* Etendre la capacité de stockage en ligne possible ; &lt;br /&gt;
* Introduire une notion de redondance (pour autoriser une plus grande sécurisation des données) ; &lt;br /&gt;
* Améliorer les performances. &lt;br /&gt;
&lt;br /&gt;
En effet, la capacité des disques actuels, même si elle s&#039;est singulièrement améliorée ces dernières années (on trouve couramment du 18 ou du 36 Gigas de nos jours), reste tout de même peu de chose lorsque l&#039;on souhaite parler en Téra et non plus en Giga.&lt;br /&gt;
&lt;br /&gt;
Même sans aller jusqu&#039;à vouloir stocker de grandes quantités de données (soyons raisonnable, 9 Giga devrait suffire pour un petit serveur web ...), on peut vouloir utiliser la notion de redondance du Raid afin d&#039;améliorer la tolérance aux pannes de son architecture : les données seront dupliquées sur des disques différents afin de pouvoir palier à la perte d&#039;un disque.&lt;br /&gt;
&lt;br /&gt;
Si la résistance aux pannes de l&#039;architecture n&#039;est pas une contrainte majeure (on peut envisager de sauvegarder sur bande tous les soirs son serveur de fichiers), on peut utiliser le Raid pour étendre simplement la capacité de stockage possible, et ce de manière transparente pour le système : 4 disques de 4,3Go donnant une partition utile de ~16Go.&lt;br /&gt;
&lt;br /&gt;
On peut vouloir aussi gagner en performance sur les I/O disques : en effet, lire ou écrire sur de multiples disques permet de paralléliser les opérations (surtout sur des bus différents) et donc de gagner en performances.&lt;br /&gt;
&lt;br /&gt;
En fait, il ne faut d&#039;ailleurs pas parler d&#039;un seul Raid, mais bien de plusieurs : [#linear Mode Linéaire], [#raid0 Raid 0], [#raid1 Raid 1], [#raid01 Raid 0+1], [#raid4 Raid 4] ou encore [#raid5 Raid 5]. Il conviendra donc d&#039;analyser à l&#039;avance ses besoins pour faire le bon choix.&lt;br /&gt;
&lt;br /&gt;
Je n&#039;aborderai que le Raid logiciel (software) dans ce document et non le Raid matériel (hardware). Le premier est supporté directement dans le code de l&#039;OS alors que l&#039;intelligence du second est déportée dans du hardware : que ce soit sous forme d&#039;une carte à enficher dans le serveur (nécessite un driver) ou encore dans une baie extérieure (transparent pour l&#039;OS). On peut dire que le Raid logiciel est moins performant, moins tolérant mais beaucoup plus accessible financièrement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : Dans presque tous les RAIDS que l&#039;on va aborder (excepté le RAID linéaire et le raid 0), il sera possible de configurer des disques de rechange (spare disks) qui seront automatiquement utilisés pour reconstruire le RAID dans le cas de pannes disques (pas dans le cas de pannes sur le contrôleur IDE ou SCSI).&lt;br /&gt;
&lt;br /&gt;
== Le Raid et Linux ==&lt;br /&gt;
&lt;br /&gt;
Le mieux est de directement utiliser le support RAID présent dans les distributions Linux récentes (version des RaidTools : 0.90) : j&#039;ai personnellement testé la distribution Linux RedHat 6.1 sur plateforme Alpha et la Mandrake 7.2 Intel sans rencontrer de soucis majeurs.&lt;br /&gt;
&lt;br /&gt;
Vérifiez que les modules linear, raid0, raid1 et raid5 sont chargés. Au pire, ajoutez les dans le fichier /etc/modules :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# modprobe linear&lt;br /&gt;
# modprobe raid0&lt;br /&gt;
# modprobe raid1&lt;br /&gt;
# modprobe raid5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On valide ensuite l&#039;existence du fichier virtuel &#039;&#039;/proc/mdstat&#039;&#039; (Par défaut, le noyau est compilé avec le support du RAID) et on vérifie l&#039;installation du package &#039;&#039;raidtools&#039;&#039; (format rpm sur la RedHat et la Mandrake) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# cat /proc/mdstat&lt;br /&gt;
Personalities : [linear] [raid0] [raid1] [raid5] /* liste des drivers */&lt;br /&gt;
read_ahead not set&lt;br /&gt;
unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# rpm -qa | grep raid&lt;br /&gt;
raidtools-0.90-8mdk &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le seule fichier que l&#039;on aura à configurer pour tous les RAIDS sera le fichier &#039;&#039;/etc/raidtab&#039;&#039; (simple, non?) et le fichier &#039;&#039;/etc/fstab&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Si vous ne disposez pas de plusieurs disques vous pouvez utiliser des partitions à la place. Cela ne vous apportera ni amélioration de performance, ni haute disponibilité, mais au moins une grande satisfaction de pouvoir mettre en pratique vos connaissances ;-)&lt;br /&gt;
&lt;br /&gt;
== Niveaux de RAID disponibles sous Linux ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode Linéaire&#039;&#039;&#039; [ [#linear_exemple exemple] ]&amp;lt;br /&amp;gt; Cette solution est pertinente lorsque l&#039;on souhaite étendre la capacité de stockage disponible en ligne sans introduire une notion de tolérance aux pannes. Cette solution combine les capacités de stockage d&#039;un ensemble de disques existants (les données sont d&#039;abord écrites sur le premier disque, puis lorsqu&#039;il est plein sur le second, etc...) et permet d&#039;utiliser 100% de l&#039;espace disque utile.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Permet de disposer de 100% de l&#039;espace disque dans une partition ;&amp;lt;br /&amp;gt; - Moins de temps CPU mobilisé par le RAID dans le noyau. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Pas de haute disponibilité : la perte d&#039;un disque entraine la perte des données ;&amp;lt;br /&amp;gt; - Quasiment pas d&#039;amélioration des performances (on peut cependant obtenir une amélioration si des I/O se produisent de manières concurrentes sur des disques différents). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0&#039;&#039;&#039; [ [#raid0_exemple exemple] ]&amp;lt;br /&amp;gt; Cette méthode (striping) est souvent utilisée lorsque la haute disponibilité des données n&#039;est pas nécessaire (on doit disposer d&#039;au moins 2 disques). Elle permet d&#039;obtenir une amélioration des performances I/O (lecture et écriture) tout en restant trés proche du mode linéaire. Elle permet en effet d&#039;améliorer l&#039;algorithme en dispatchant les données sur l&#039;ensemble des disques (les données sont découpées puis dispersées sur les disques sans redondance).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Permet de disposer de 100% de l&#039;espace disque dans une partition ;&amp;lt;br /&amp;gt; - Amélioration des performances I/O en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Pas de haute disponibilité : la perte d&#039;un disque entraine la perte des données. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 1&#039;&#039;&#039; [ [#raid1_exemple exemple] ]&amp;lt;br /&amp;gt; Ce mode (mirroring) implémente une stricte duplication des données sur tous les disques présents dans le miroir (on doit disposer d&#039;au moins 2 disques). L&#039;information étant enregistrée N fois sur les disques (permet de gagner du temps en lecture même si on en perds lors de l&#039;écriture), si on perds N-1 disques on ne perds pas les données. Il est à noter que l&#039;on perds tout de même 50% de l&#039;espace disque utile.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte de N-1 disques ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Dégradation des performances en écriture ;&amp;lt;br /&amp;gt; - Mobilise un peu plus de temps CPU dans le noyau ;&amp;lt;br /&amp;gt; - Perte de 50% de l&#039;espace disque. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0+1&#039;&#039;&#039; [ [#raid01_exemple exemple] ]&amp;lt;br /&amp;gt; Comme son nom l&#039;indique, cette solution combine le RAID 0 et le RAID 1. Elle permet d&#039;améliorer les performances I/O en lecture tout en permettant une bonne disponibilité des données grace à leurs duplications sur l&#039;ensemble des disques. Mais tout comme le mode miroir, on perds 50% de l&#039;espace disque potentiellement disponible.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un coté du miroir ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - Mobilise un peu plus de temps CPU dans le noyau ;&amp;lt;br /&amp;gt; - Perte de 50% de l&#039;espace disque. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 4&#039;&#039;&#039; [ [#raid4_exemple exemple] ]&amp;lt;br /&amp;gt; L&#039;algorithme utilisé ici (striping) permet de dispatcher les I/O sur l&#039;ensemble des disques (au moins 3) tout en réservant un disque pour sauvegarder une donnée supplémentaire de parité. De fait, si on perds un disque, on peut reconstituer l&#039;information manquante. Cependant, l&#039;utilisation d&#039;un disque de parité ajoute un goulot d&#039;étranglement au système (toute écriture va provoquer un accés au disque de parité), pour cela il est préférable d&#039;utiliser à la place le Raid5.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un disque ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - On perds l&#039;équivalent d&#039;un disque pour le stockage des données ;&amp;lt;br /&amp;gt; - On risque de plafonner le débit en écriture rapidement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 5&#039;&#039;&#039; [ [#raid5_exemple exemple] ]&amp;lt;br /&amp;gt; Le RAID 5 est sensiblement identique au RAID 4 mais améliore le procédé en stripant l&#039;information de parité sur l&#039;ensemble des disques.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Avantages&#039;&#039; :&amp;lt;br /&amp;gt; - Haute disponibilité des données : survit à la perte d&#039;un disque ;&amp;lt;br /&amp;gt; - Amélioration des performances en lecture et écriture. &lt;br /&gt;
* &#039;&#039;Inconvénients&#039;&#039; :&amp;lt;br /&amp;gt; - On perds l&#039;équivalent d&#039;un disque pour le stockage des données. &lt;br /&gt;
&lt;br /&gt;
== Disques de spare ==&lt;br /&gt;
&lt;br /&gt;
Les RAIDS 1, 4 et 5 peuvent utiliser la notion de disques de spare. Un disque qui va venir remplacer automatiquement un disque en faute. Linux autorise l&#039;ajout on-line de disques de spare (vous devez cependant les rajouter manuellement dans le fichier de configuration /etc/raidtab pour le cas d&#039;un reboot) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidhotadd /dev/md[0-15] /dev/sdf1&amp;lt;/code&amp;gt;&lt;br /&gt;
 ou&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidhotremove /dev/md[0-15] /dev/sdf1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mise en pratique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mode linéaire&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus, pas nécessairement de la même taille, pour implémenter le mode linéaire. Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant (vous pouvez configurer 16 RAIDs différent sur une machine, d&#039;ou la symbolique avec [0-15] ainsi que dans le reste du document) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level linear&lt;br /&gt;
 	  nr-raid-disks 2 # disques impliqués&lt;br /&gt;
 	  persistent-superblock	1 # on considère ici que&lt;br /&gt;
 	                          # l&#039;auto-détection du RAID&lt;br /&gt;
 	                          # dans le noyau Linux est activé&lt;br /&gt;
 	device/dev/sda1 # premier disque&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1 # second disque&lt;br /&gt;
 	  raid-disk 1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : vous ne disposez pas de disques de spare dans le mode linéaire. Si vous perdez un disque, alors vous perdez tout.&lt;br /&gt;
&lt;br /&gt;
Pour activer le RAID (cette procédure va rester la même pour les autres RAID) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# mkraid /dev/md[0-15]&lt;br /&gt;
# mkfs -t ext2 /dev/md[0-15] # on formatte la partition, ici en Ext2&lt;br /&gt;
# mount /dev/md[0-15] /scratch &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour stopper un device RAID :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidstop /dev/md[0-15] # pour désactiver un device RAID &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour mettre en faute un disque (et le retirer avec raidhotremove) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code multi&amp;gt;# raidsetfaulty /dev/md[0-15] /dev/sdf1 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normallement le device sera automatiquement activé lors du boot (dans le fichier &#039;&#039;/etc/rc.d/rc.sysinit&#039;&#039; sur la Mandrake 7.2 mais vous pouvez ajoutez la commande &#039;&#039;&#039;raidstart /dev/md[0-15]&#039;&#039;&#039; dans le fichier &#039;&#039;/etc/rc.d/rc.local&#039;&#039; sinon), il ne restera plus qu&#039;à mettre à jour le fichier &#039;&#039;/etc/fstab&#039;&#039; pour le montage soit automatique. Cela va rester valide pour les autres RAIDS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 0&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus, de la même taille, pour implémenter le striping. Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size4 # voir en fin de document&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Nota&#039;&#039;&#039; : vous ne disposez pas de disques de spare dans le RAID 0. Si vous perdez un disque, alors vous perdez tout.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID 1&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 2 disques ou plus de la même taille pour implémenter le mode miroir et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 1&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 16&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 0+1&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer d&#039;un nombre de disques pairs de la même taille pour implémenter le RAID 0+1 mais vous ne pouvez pas utiliser de disques de spare individuels (je présume qu&#039;il est possible de mettre un place un device de spare contenant le même nombre de disques que les autres). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md0&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 4&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
&lt;br /&gt;
 raiddev /dev/md1&lt;br /&gt;
 	raid-level 0&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 4&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sde1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdf1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
&lt;br /&gt;
 raiddev /dev/md2 # seul ce device pourra etre formate&lt;br /&gt;
 	raid-level 1&lt;br /&gt;
 	  nr-raid-disks 2&lt;br /&gt;
 	  nr-spare-disks 0&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 16&lt;br /&gt;
 	device/dev/md0&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/md1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 4&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 3 disques ou plus, de la même taille, pour implémenter le RAID 4 et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 4&lt;br /&gt;
 	  nr-raid-disks 3&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock	1&lt;br /&gt;
 	  chunk-size 32&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 2&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;RAID 5&#039;&#039;&#039;&amp;lt;br /&amp;gt; Vous devez disposer de 3 disques ou plus, de la même taille, pour implémenter le RAID 5 et vous pouvez utiliser 1 ou plusieurs disques de spares (optionnel). Modifiez le fichier &#039;&#039;/etc/raidtab&#039;&#039; comme dans l&#039;exemple suivant :&lt;br /&gt;
&amp;lt;code&amp;gt; raiddev /dev/md[0-15]&lt;br /&gt;
 	raid-level 5&lt;br /&gt;
 	  nr-raid-disks 5&lt;br /&gt;
 	  nr-spare-disks 1&lt;br /&gt;
 	  persistent-superblock 1&lt;br /&gt;
 	  # Parity placement algorithm&lt;br /&gt;
 	  # parity-algorithm	left-asymmetric&lt;br /&gt;
 	  # parity-algorithm	right-asymmetric&lt;br /&gt;
 	  # parity-algorithm	right-symmetric&lt;br /&gt;
 	  parity-algorithm	left-symmetric&lt;br /&gt;
 	  chunk-size 32&lt;br /&gt;
 	device/dev/sda1&lt;br /&gt;
 	  raid-disk 0&lt;br /&gt;
 	device/dev/sdb1&lt;br /&gt;
 	  raid-disk 1&lt;br /&gt;
 	device/dev/sdc1&lt;br /&gt;
 	  raid-disk 2&lt;br /&gt;
 	device/dev/sdd1&lt;br /&gt;
 	  raid-disk 3&lt;br /&gt;
 	device/dev/sde1&lt;br /&gt;
 	  raid-disk 4&lt;br /&gt;
 	device/dev/sdf1&lt;br /&gt;
 	  spare-disk 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chunk Size ==&lt;br /&gt;
&lt;br /&gt;
Le choix de la &amp;quot;chunk size&amp;quot; dépends fortement du type de raid et du nombre de disques. Dans le cas d&#039;un raid 0 de 2 disques, si on écrit 16KB avec une chunk size de 4KB, on va écrire 4KB sur le premier disque puis 4KB sur le second puis de nouveau 4KB sur le premier et pour finir 4KB sur le second ...&lt;br /&gt;
&lt;br /&gt;
Vous obtiendrez généralement de bons résultats avec une chunk size à 32KB mais il est souvent bien utile d&#039;expérimenter soi même pour obtenir le meilleur tuning. A noter que sur un environnement Alpha (64 bits), j&#039;ai du mettre la chunk size à 16 au lieu de 4 car le raid 0 ne voulais pas s&#039;initialiser.&lt;br /&gt;
&lt;br /&gt;
== Amélioration des performances ==&lt;br /&gt;
&lt;br /&gt;
* Il sera trés souvent intéressant de mettre les disques sur des controleurs IDE ou SCSI différents ;&lt;br /&gt;
* La méthode la plus efficace pour améliorer drastiquement les performances I/O du système est le striping ;&lt;br /&gt;
* Raid 4/5 : les performances seront bien meilleures si vous utilisez une chunk-size de 32 (8*4096=32KB) et un formattage du RAID 4/5 avec la commande : &#039;&#039;&#039;mke2fs -b 4096 -R stride=8 /dev/md[0-15]&#039;&#039;&#039; (l&#039;option -R permet de passer des paramêtres utiles pour la construction du RAID, consulter le man pour avoir plus de détails) ;&lt;br /&gt;
* Raid 5 : l&#039;option &#039;&#039;&#039;parity-algorithm&#039;&#039;&#039; accepte plusieurs valeurs (left-asymmetric, right-asymmetric, left-symmetric ou right-symmetric). Il est préférable d&#039;utiliser &amp;quot;left-symmetric&amp;quot; pour obtenir de meilleures performances ;&lt;br /&gt;
* Penser à tuner la chunk size ...&lt;br /&gt;
&lt;br /&gt;
== Utiliser le RAID sur une partition de swap ? ==&lt;br /&gt;
&lt;br /&gt;
Il est aberrant d&#039;utiliser le raid sur une partition de swap. Plus simplement, Linux peut utiliser les partitions de swap de la même manière que le raid 0. Il suffit de donner à chaque partition le même niveau de priorité :&lt;br /&gt;
&lt;br /&gt;
 /dev/hdc1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
 /dev/hdd1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
 /dev/hde1	swap	swap	defaults,pri=1 0 0&lt;br /&gt;
&lt;br /&gt;
Il est aussi trés utile de placer ces partitions au début de disque plutôt qu&#039;à la fin. Vous obtiendrez de meilleurs résultats (la vélocité à cet endroit du disque est plus importante).&lt;br /&gt;
&lt;br /&gt;
Précisions (contribution wiki) : La non nécéssite de mettre le swap sur une partition RAID 1 depends de la stabilité qu&#039;on veut obtenir. En cas de crash d&#039;un disque contenant une partition Swap non mirorée, il peut être difficile pour le systeme de continuer à fonctionner sans le redémarrer. En effet, sur cette partition il y a potentiellement des process swappé sur le disque que l&#039;OS n&#039;arrivera certainement pas à remonter en memoire en cas de nécessité.&lt;br /&gt;
&lt;br /&gt;
Finalement :&lt;br /&gt;
&lt;br /&gt;
* Si la machine peut supporter un redémarage après un crash disque, alors oui il n&#039;est pas nécessaire de mirrorer les partitions de swap, et dans ce cas on accepte que les services associés à celle-ci soient indiponibles jusqu&#039;à ce que quelqu&#039;un redémarre la machine.&lt;br /&gt;
* Si la machine ne doit pas redémarrer (ce qui dans mon esprit correspond plus à la réalité d&#039;une machine en production) alors il est obligatoire de mirorer les partitions swap.&lt;br /&gt;
&lt;br /&gt;
== Divers ==&lt;br /&gt;
&lt;br /&gt;
* Pensez à mettre à jour votre fichier de configuration (/etc/raidtab) si vous devez enlever ou ajouter des disques...&lt;br /&gt;
* N&#039;utiliser le RAID que pour des disques de données. Si vous souhaitez utiliser la partition système avec du RAID (uniquement 0 ou 1), lisez attentivement les HowTo car la mise en oeuvre demeure complexe.&lt;br /&gt;
* Allez sur le site de [http://linas.org/linux/raid.html Linas Vepstas] qui regorge d&#039;informations intéressantes (pas uniquement sur le RAID).&lt;br /&gt;
* Allez aussi jeter un petit coup d&#039;oeil sur le projet [http://linux.msede.com/lvm/ Linux Logical Volume Manager] même si ce n&#039;est pas vraiment du Raid. A lire absolument car disposer d&#039;un tel outil sous Linux est une perspective fascinante car réservée auparavant aux Unix propriétaires HPUX, Tru64, AIX, etc ...&lt;br /&gt;
* On pourrait aussi poser la question de la pertinence d&#039;utiliser un système de fichiers journalisé en lieu et place de Ext2 (le gain lors d&#039;un reboot violent est indéniable). Dans l&#039;immédiat cela n&#039;est pas possible (noyau 2.2.x) mais ouvrira à Linux de nouvelles et fascinantes perspectives...&lt;br /&gt;
&lt;br /&gt;
== Nouvel outil de RAID sous Linux: mdadm ==&lt;br /&gt;
&lt;br /&gt;
La plupart des distributions proposent aujourd&#039;hui mdadm, voici les différentes étapes pour mettre en place les différents niveau de RAID.&lt;br /&gt;
&lt;br /&gt;
Voici les sources d&#039;informations:&lt;br /&gt;
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-ig-s390-multi-fr-4/s1-s390info-raid.html&lt;br /&gt;
&lt;br /&gt;
http://www.iteam.org/wiki/wakka.php?wiki=RaidBaal&lt;br /&gt;
&lt;br /&gt;
http://www.frlinux.net/?section=systeme&amp;amp;article=146&lt;br /&gt;
&lt;br /&gt;
http://xenfr.org/tiki-index.php?page=Stockage&lt;br /&gt;
&lt;br /&gt;
Malheureusement, je n&#039;ai fait les manipulations que pour un RAID 5 avec 4 disques de 6 partitions.&lt;br /&gt;
&lt;br /&gt;
Voici la mise en place d&#039;un RAID 5 avec 2 spares:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les disques:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
*  Disk /dev/hde: 164.6 GB, 164696555520 bytes &lt;br /&gt;
255 heads, 63 sectors/track, 20023 cylinders&lt;br /&gt;
Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdf: 82.3 GB, 82348277760 bytes &lt;br /&gt;
16 heads, 63 sectors/track, 159560 cylinders&lt;br /&gt;
Units = cylinders of 1008 * 512 = 516096 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdg: 164.6 GB, 164696555520 bytes &lt;br /&gt;
255 heads, 63 sectors/track, 20023 cylinders&lt;br /&gt;
Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;
&lt;br /&gt;
* Disk /dev/hdh: 82.3 GB, 82348277760 bytes &lt;br /&gt;
16 heads, 63 sectors/track, 159560 cylinders&lt;br /&gt;
Units = cylinders of 1008 * 512 = 516096 bytes&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Les partitions &#039;&#039;&#039;&lt;br /&gt;
6 Partitions de 78 Go&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    * /dev/hde1 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hde2 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdf1 : Sur rack disque (à changer si problème)&lt;br /&gt;
    * /dev/hdg1 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdg2 :  :  fd  Linux raid autodetect&lt;br /&gt;
    * /dev/hdh1 : SPARE  :  fd  Linux raid autodetect&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Création du RAID 5 sur md0&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mdadm --create /dev/md0 --level=5 --raid-devices=5 /dev/hde1 /dev/hde2 /dev/hdf1 /dev/hdg1 /dev/hdg2 --spare-devices=1 /dev/hdh1&lt;br /&gt;
mdadm: /dev/hde1 appears to contain an ext2fs file system&lt;br /&gt;
   size=160836448K  mtime=Sat Oct  1 18:05:35 2005&lt;br /&gt;
mdadm: /dev/hde1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hde2 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdf1 appears to contain an ext2fs file system&lt;br /&gt;
   size=20479504K  mtime=Sat Oct  1 18:17:51 2005&lt;br /&gt;
mdadm: /dev/hdf1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdg1 appears to contain an ext2fs file system&lt;br /&gt;
   size=2048256K  mtime=Sat Oct  1 15:18:46 2005&lt;br /&gt;
mdadm: /dev/hdg1 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdg2 appears to be part of a raid array:&lt;br /&gt;
   level=5 devices=5 ctime=Sun Oct  2 15:02:01 2005&lt;br /&gt;
mdadm: /dev/hdh1 appears to contain an ext2fs file system&lt;br /&gt;
   size=51025432K  mtime=Sat Oct  1 15:18:56 2005&lt;br /&gt;
Continue creating array? y&lt;br /&gt;
mdadm: array /dev/md0 started. &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Informations sur le volume RAID&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mdadm --detail /dev/md0&lt;br /&gt;
/dev/md0:&lt;br /&gt;
       Version : 00.90.01&lt;br /&gt;
 Creation Time : Sun Oct  2 15:18:17 2005&lt;br /&gt;
    Raid Level : raid5&lt;br /&gt;
    Array Size : 312495872 (298.02 GiB 320.00 GB)&lt;br /&gt;
   Device Size : 78123968 (74.50 GiB 80.00 GB)&lt;br /&gt;
  Raid Devices : 5&lt;br /&gt;
 Total Devices : 6&lt;br /&gt;
Preferred Minor : 0&lt;br /&gt;
   Persistence : Superblock is persistent&lt;br /&gt;
&lt;br /&gt;
   Update Time : Sun Oct  2 15:18:17 2005&lt;br /&gt;
         State : clean, degraded, recovering&lt;br /&gt;
Active Devices : 4&lt;br /&gt;
Working Devices : 6&lt;br /&gt;
Failed Devices : 0&lt;br /&gt;
 Spare Devices : 2&lt;br /&gt;
&lt;br /&gt;
        Layout : left-symmetric&lt;br /&gt;
    Chunk Size : 64K&lt;br /&gt;
&lt;br /&gt;
Rebuild Status : 1% complete&lt;br /&gt;
&lt;br /&gt;
          UUID : 0a551c50:3da4f12a:5c9b3cdc:b9802273&lt;br /&gt;
        Events : 0.2&lt;br /&gt;
&lt;br /&gt;
   Number   Major   Minor   RaidDevice? State&lt;br /&gt;
      0      33        1        0      active sync   /dev/hde1&lt;br /&gt;
      1      33        2        1      active sync   /dev/hde2&lt;br /&gt;
      2      33       65        2      active sync   /dev/hdf1&lt;br /&gt;
      3      34        1        3      active sync   /dev/hdg1&lt;br /&gt;
      4       0        0        -      removed&lt;br /&gt;
&lt;br /&gt;
      5      34        2        4      spare rebuilding   /dev/hdg2&lt;br /&gt;
      6      34       65        -      spare   /dev/hdh1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Arrêter le volume RAID 5 &#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --stop /dev/md0  &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pour démarrer le volume RAID 5&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --assemble /dev/md0 /dev/hde1 /dev/hde2 /dev/hdf1 /dev/hdg1 /dev/hdg2 /dev/hdh1&lt;br /&gt;
mdadm: /dev/md0 has been started with 4 drives (out of 5) and 2 spares.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mdadm --detail --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
more /etc/mdadm/mdadm.conf&lt;br /&gt;
DEVICE partitions&lt;br /&gt;
ARRAY /dev/md0 level=raid5 num-devices=5 spares=2 UUID=70714300:9da2e11b:a61a9c73:e2e1c245&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Message lors de l&#039;activation du volume RAID 5 dans dmesg&lt;br /&gt;
md: md0 stopped.&lt;br /&gt;
md: bind&amp;lt;hde2&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdf1&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdg1&amp;gt;&lt;br /&gt;
md: bind&amp;lt;hdh1&amp;gt;&lt;br /&gt;
md0: WARNING: hdg2 appears to be on the same physical disk as hdg1. True&lt;br /&gt;
     protection against single-disk failure might be compromised.&lt;br /&gt;
md: bind&amp;lt;hdg2&amp;gt;&lt;br /&gt;
md0: WARNING: hde1 appears to be on the same physical disk as hde2. True&lt;br /&gt;
     protection against single-disk failure might be compromised.&lt;br /&gt;
md: bind&amp;lt;hde1&amp;gt;&lt;br /&gt;
raid5: device hde1 operational as raid disk 0&lt;br /&gt;
raid5: device hdh1 operational as raid disk 4&lt;br /&gt;
raid5: device hdg1 operational as raid disk 3&lt;br /&gt;
raid5: device hdf1 operational as raid disk 2&lt;br /&gt;
raid5: device hde2 operational as raid disk 1&lt;br /&gt;
raid5: allocated 5234kB for md0&lt;br /&gt;
raid5: raid level 5 set md0 active with 5 out of 5 devices, algorithm 2&lt;br /&gt;
RAID5 conf printout:&lt;br /&gt;
 --- rd:5 wd:5 fd:0&lt;br /&gt;
 disk 0, o:1, dev:hde1&lt;br /&gt;
 disk 1, o:1, dev:hde2&lt;br /&gt;
 disk 2, o:1, dev:hdf1&lt;br /&gt;
 disk 3, o:1, dev:hdg1&lt;br /&gt;
 disk 4, o:1, dev:hdh1&lt;br /&gt;
&lt;br /&gt;
== Glossaire ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID&#039;&#039;&#039;&amp;lt;br /&amp;gt; Le mot RAID est un acronyme pour &amp;quot;Redundant Array of Inexpensive Disks&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Lionel Tricon le 03/02/2001.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|03/02/2001|Lionel Tricon|CC-BY-NC-SA}}&lt;/div&gt;</summary>
		<author><name>Ge</name></author>
	</entry>
</feed>