Le fonctionnement de la gestion par volumes logiques
LVM repose sur le principe de fonctionnement suivant : on s'affranchit totalement des limites physiques imposées par la présence des disques durs (et partitions) présents dans la machine. LVM va ainsi se greffer par dessus les disques et partitions, permettant d'organiser et répartir librement l'espace de stockage sans se soucier des contraintes matérielles. Nous allons détailler dans cette partie le mode de fonctionnement très souple de la gestion par volumes logiques.
Les volumes physiques
La première étape lors du passage d'un système de stockage simple à un système par gestion logique de volumes est
la création de volumes physiques.
Un volume physique est simplement un disque dur ou une partition que LVM
va s'approprier et diviser en tranches de 4Mo (valeur par défaut), écrasant toutes les données déjà présentes.
Chacune de ces tranches est appelée physical
extent. Il est tout à fait possible de laisser LVM gérer une partie de l'espace de stockage tout en conservant
l'autre partie intacte. A titre d'exemple, si on dispose de 2 disques durs qui sont divisés pour chacun d'entre
eux en 2 partitions, on peut très bien travailler sur une seule partition parmi les 4 totalisées par le système.
Les groupes de volumes
Un groupe de volumes est un ensemble de volumes physiques. La deuxième étape consiste à insérer les volumes
physiques qui viennent d'être créés dans des groupes de volumes. On peut placer plusieurs volumes physiques dans un
groupe de volumes, à sa convenance. Cette étape est obligatoire, car LVM exige de disposer au minimum
d'un groupe de volume pour fonctionner. Typiquement, on va s'arranger pour grouper les volumes physiques par
caractéristiques (débits, performances, etc.), afin d'optimiser le fonctionnement de LVM.
A l'instar de la
création des volumes physiques, la création d'un groupe de volumes conduit au découpage de ce groupe en tranches
de 4Mo appelées logical extents.
D'un point de vue pratique, le fait de placer plusieurs volumes
physiques dans un même groupe de volumes peut permettre l'étalement d'un système de fichiers sur plusieurs disques.
Il est alors possible de
répartir son dossier personnel (/home) de manière transparente sur plusieurs disques durs.
La création de pointeurs
LVM va ensuite créer des pointeurs qui vont mettre en relation les physical extents (PE) avec les
logical extents (LE). Le schéma suivant résume ces points :
LVM établit des pointeurs entre les PE et les LE
Les volumes logiques
Une fois les groupes de volumes et les pointeurs créés, LVM passe par une dernière étape : la division des groupes de volumes
en volumes logiques. Ces derniers correspondent à l'espace de stockage que l'utilisateur aura finalement à
sa disposition ; la notion de volumes logiques remplace donc celle de partition. LVM utilisera autant de physical et
logical extents que nécessaire pour créer un volume, dont la taille sera donc un multiple de 4Mo par défaut (taille
d'un extent). Chaque volume logique, au même titre
qu'une partition, devra être formaté avec un système de fichier classique (typiquement ext3 sous Linux) puis monté pour
être accessible. On pourra bien entendu également créer une partition de swap sur de tels volumes.
L'utilisation des physical et logical extents permettra le redimensionnement, le déplacement, la suppression et l'ajout
de volumes logiques sans perdre de données ou redémarrer la machine.
Les métadatas utilisées par LVM
Utiliser LVM sur son système pour partitionner un disque conduit à perdre une partie de l'espace de stockage
disponible. LVM utilise en effet des métadatas, données informatives, pour gérer le système. Ces métadatas
sont :
- La Physical Volume Reserved Area (PVRA) : contient des informations propres aux volumes physiques créés par LVM,
- La Volume Group Reserved Area (VGRA) : contient des informations propres aux groupes de volumes et aux volumes logiques inclus dans ces groupes,
- La Bad Block Relocation Area (BBRA) : il s'agit d'une zone contenant les informations rattachées à un mécanisme de réallocation des blocs défectueux (permettant la récupération automatique des blocs défectueux).
Exemple pratique
Dans l'exemple qui va suivre, nous considérons que l'on dispose de 4 disques durs dans une machine : /dev/sda,
/dev/sdb, /dev/sdc et /dev/sdd. Chaque disque contient une seule partition primaire (partitionnement par défaut), ces partitions
sont dans l'ordre respectif /dev/sda1, /dev/sdb1, /dev/sdc1 et /dev/sdd1.
On imagine que l'on souhaite agréger l'ensemble des
4 disques (4 partitions en fait) grâce à LVM. Comme nous l'avons vu, ces 4 partitions sont dans un premier temps
tranformées en volumes physiques par LVM. On choisit ensuite de grouper ces 4 volumes physiques, LVM les insère donc
dans un groupe de volumes qui est appelé "datavg" sur le schéma. Dorénevanant, il ne faut plus considérer que l'on
dispose de 4 espaces de stockage différents comme c'était le cas au début, mais d'un seul et même espace agrégé que
l'on organise à sa guise (espace "datavg").
Cet espace est finalement segmenté en divers volumes logiques :
"medialv", "backuplv" et "sharelv". Ces 3 volumes sont reconnus par Linux comme des partitions à part entière, on peut
donc les monter sans aucun problème. On peut voir dans l'exemple que nos 3 volumes ont été montés à des points différents (/opt/media, /mnt/backup et /home/share). A charge de l'utilisateur de formater chaque volume logique avec un système de fichier
de son choix (XFS et Reiserfs ont été utilisés dans l'exemple, on aurait très bien pu utiliser ext3).
L'espace qui est non alloué pourra servir à augmenter la taille de l'un ou l'autre des volumes logiques.
Schéma pratique du fonctionnement de LVM avec 4 disques durs