Découverte du LVM
Dans ce premier chapitre, on va partir à la découverte du LVM (non, cela ne signifie pas Le Vilain Monsieur). Il s’agit du gestionnaire de volumes logiques (ou Logical Volume Manager en anglais), permettant de structurer les partitions de nos systèmes en ensembles et sous-ensembles logiques. On peut voir cela comme une couche d’abstraction entre les périphériques physiques et la présentation finale que l’on appelle des systèmes de fichiers. De façon générale on peut présenter le montage des partitions d’un système GNU/Linux de la façon suivante :
REMARQUE : le LVM est à la fois une méthode de gestion des partitions des systèmes types Linux ou Unix. Mais, c’est également un logiciel de gestion d’utilisation des espaces de stockage d’un ordinateur. Cette dualité fait que la notion de LVM nous rebute très souvent. Mais, on verra qu’il s’agit d’un outil puissant qui peut devenir très vite notre allié, dans l’administration du système.
Les partitions obtenues alors peuvent ainsi être formatées, puis montées au niveau d’un point de montage. Enfin, elles seront alors présentées sous forme de système de fichiers ou utilisées comme de simples périphériques bruts ou raw devices.
Ce sont très souvent les disques durs, les partitions de disques durs et/ou les volumes RAID et les unités logiques (aussi appelées Lun), provenant d’une baie de stockage SAN qui forment cet ensemble de volumes physiques. Ces derniers sont alors concaténés au sein d’un groupe de volumes. On peut alors effectuer un découpage de cet ensemble de volumes, que l’on peut voir comme un pseudo-disque dur, afin de former différents volumes logiques.
On peut alors découper ce groupe de volumes en volumes logiques pour disposer des partitions : /, /home, /var et /usr, par exemple. Ainsi, étendre une partition logique devient très facile : il suffit de piocher sur l’espace disque disponible du groupe de volumes (donc, parmi les volumes physiques de ce même groupe ayant encore de l’espace).
De façon simplifiée, à partir d’un (ou plusieurs) périphérique(s) présenté(s) sous forme de disque dur, on dispose ainsi d’une ou plusieurs partitions, sur lesquelles on monte les points de montage pour y accrocher les systèmes de fichiers. Mais, très rapidement, les administrateurs ont vite éprouvé le besoin d’améliorer le mécanisme fondamental du système d’exploitation, pour leur permettre d’étendre (ou de réduire), de façon dynamique, l’espace alloué aux partitions et par extension, aux systèmes de fichiers. Le but d’une structure LVM est donc d’apporter une plus grande flexibilité de la gestion des espaces de stockage.
Durant ce cours, on va rencontrer un certain nombre de termes que l’on va décrire ici :
- Le PV (ou Physical Volume) : il s’agit d’un disque physique. Le plus souvent on parle de partition, car un disque (comme /dev/sdb ou /dev/mpatha) doit contenir au moins une partition, nommée alors /dev/sdb1 ou /dev/mpath1, selon les exemples ci-dessus. Pour appartenir à un groupe de volumes (noté VG).
- Le VG (ou Volume Group) : il s’agit de l’enveloppe contenant les volumes physiques. La juxtaposition de l’ensemble de ces volumes physiques permet alors de découper ce bloc en volumes logiques (notés LV).
- Le LV (ou Logical Volume) : il s’agit d’un espace défini dans le groupe de volumes que l’on délimite pour y stocker un système de fichiers. On peut se représenter cela comme l’équivalent des partitions physiques, à l’exception près que celles-ci sont alors redimensionnables facilement par ajout de nouveaux volumes physiques. Un volume logique doit, théoriquement contenir un point de montage, pour pouvoir accrocher le système de fichiers à présenter aux utilisateurs.
NOTE : on verra que dans certains cas, même si ce n’est pas conseillé, on peut créer un volume physique directement sur un disque dur de type /dev/sdb.
Afin d’illustrer et de mieux appréhender les relations entre ces différents objets de la structure LVM, on peut schématiser cela de la façon suivante :
REMARQUE : dans le principe de gestion des disques physiques, ce mécanisme ressemble fortement au RAID JBOD (Just a Bunch Of Disk) consistant à mettre à la suite, plusieurs disques durs. Notons aussi, que la structure LVM peut parfaitement se combiner avec des matrices RAID de différents types pour renforcer et secourir l’organisation architecturale.
Au travers de ce cours, on verra donc comment mettre en œuvre une structure de type LVM en fournissant tous les éléments d’administration (chapitre 2) et toutes les opérations réalisables sur une telle architecture (chapitre 3). Après quoi, on étudiera la possibilité d’activer ce genre de structures dès l’installation d’une machine (chapitre 4). Ce qui est aussi très intéressant en ce qui concerne LVM c’est que l’on peut effectuer des sauvegardes de structures avec toutes les possibilités que cela peut offrir, y compris en termes de restauration (chapitre 5). On verra d’ailleurs que grâce à l’architecture LVM, on peut également faire des clichés instantanés (appelés snapshots), d’une ou plusieurs arborescences du système.
On décrira ensuite comment se servir de cette architecture LVM pour l’utiliser sur des serveurs connectés au réseau SAN d’entreprise (chapitre 6). Enfin, outre le fait que LVM permet de gérer, de sécuriser et d’optimiser de façon robuste les espaces de stockage présentés au sein d’un système d’exploitation Unix/Linux, on abordera aussi la virtualisation du stockage au travers de la mise en œuvre d’une architecture LVM sur des machines virtuelles de type VMware (chapitre 7).
En fait, on peut voir le LVM comme des poupées gigognes : l’enveloppe principale, appelée groupe de volumes (ou VG), contient à la fois les volumes physiques (notés PV) et les volumes logiques (notés LV) qui eux-mêmes contiennent les points de montage pour la présentation des systèmes de fichiers que l’on fournit aux utilisateurs.
ATTENTION : il ne faut jamais perdre de vue que seule la partition /boot ne peut faire partie d’un système LVM, à cause du matériel de démarrage du système qu’il contient.
Un peu plus haut, j’ai énoncé que LVM était également un logiciel de gestion outre la méthode d’administration du système. En réalité, le système d’exploitation met à notre disposition un ensemble de commandes permettant de gérer les différents éléments :
Au niveau des groupes de volumes, on dispose ainsi des commandes suivantes :
- vgcreate : pour créer les groupes de volumes.
- vgdisplay : pour lister le contenu des groupes de volumes.
- vgck : pour vérifier la cohérence des métadonnées d’un groupe de volumes.
- vgremove : pour supprimer un groupe de volumes.
- vgscan : pour détecter les volumes physiques et groupes de volumes.
Il est à noter que la commande vgscan va également permettre de générer le fichier etc/lvm/.cache (ainsi que le fichier lvmtab), afin de maintenir une liste cohérente des périphériques LVM courants.
Il faut également noter que le système LVM exécute automatiquement la commande vgscan lors des phases de démarrage du système d’exploitation.
Au niveau des volumes physiques, il est également possible d’intervenir et de gérer les différents volumes physiques :
- pvcreate : pour créer un volume physique
- pvresize : pour redimensionner un volume physique
- pvdisplay : pour détailler le découpage d’un volume physique
- pvremove : pour supprimer un volume physique
- pvmove : pour déplacer le contenu d’un volume physique vers un autre.
- pvchange : pour modifier les métadonnées d’un volume physique.
- pvscan : détecte les volumes physiques parmi les périphériques du système.
Au niveau des volumes logiques, on peut aussi effectuer des créations et des modifications sur ces éléments :
- lvcreate : pour créer un volume logique.
- lvdisplay : pour lister le détail d’un volume logique.
- lvremove : pour supprimer un volume logique.
- lvextend : pour étendre la taille d’un volume logique.
- lvmdiskscan : pour détecter tous les périphériques visibles au système LVM.
A ces commandes s’ajoutent des commandes de visualisation sous forme de liste, mettant en relation les volumes physiques, les volumes logiques et leur(s) groupe(s) de volumes associés :
- pvs : pour lister les volumes physiques
- lvs : pour lister les volumes logiques
- vgs : pour liter les groupes de volumes
Par exemple, sur une machine déjà configurée, on peut interroger la liste des volumes physiques de la manière suivante :
Cela permet de mettre en relation le nom du volume physique avec le groupe de volumes auquel il appartient. On voit d’ailleurs sa taille occupée et ce qu’il reste d’espace libre.
De la même façon, on peut également interroger la liste des groupes de volumes existant sur le système :
On voit clairement qu’il existe une relation entre le groupe de volume vg00 avec le volume physique, décrit ci-dessus et les six volumes logiques (notifiés par le champ #LV : nombre de volumes logiques existants). Pour s’en assurer, on peut alors interroger la liste des volumes logiques créés :
On peut noter au passage que comme je l’avais annoncé, le volume /boot ne fait pas partie du système LVM. Par contre, l’ensemble des autres partitions sont bien intégrées au groupe de volume vg00 et se répartissent l’espace du volume physique.