cours LVM
par
popularité : 13%
Présentation du gestionnaire de disque logique (LVM)
Terminologie
Voici la signification de quelques abréviations utilisées
et définies dans la suite de ce chapitre :
PV (Physical Volume) : disque physique
VG (Volume Group) : groupe de volumes
LV (Logical Volume) : volume logique
PE (Physical Extend) : extension physique
LE (Logical Extend) : extension logique
FS (File Sytem) : système de fichier
L’objectif du LVM est de simplifier la gestion de l’espace
disque pour l’administrateur, et de s’affranchir d’un certain nombre de
contraintes imposées par l’utilisation « classique  » des disques.
Dans une configuration classique, les disques physiques sont
découpés en partitions (on parle aussi de sections), chacune d’elle pouvant
soit servir de swap, soit servir de système de fichier (FS) après formatage.
Une fois ce découpage effectué, il n’est plus possible de le modifier sans
perdre les données stockées sur le disque.
De plus, la taille d’une partition quelconque (et donc
celle d’un fichier) ne peut excéder la taille d’un disque.
Le LVM va nous permettre de gérer de manière beaucoup plus
souple l’espace disque, en particulier en permettant (en standard) :
-
un redimensionnement d’une partition (sans perte de
données en cas d’extension), -
la création de FS d’une taille supérieure à celle
d’un disque, -
la gestion du stripping (SDS pour Software Disk
Stripping).
Des extensions logicielles en option permettent en outre la
gestion :
-
du mirroring (produit HP MirrorDisk/UX),
-
des opérations de redimensionnement de manière
dynamique (FS utilisés).
LVM est une couche logicielle permettant d’interfacer les
disques et les applications (son utilisation ne requière donc pas d’applications
spécifiques).
LVM gère les PV au sein d’un ou plusieurs VG ; ce VG
est vu comme un unique disque logique, dont la taille est égale à la somme des
tailles de chacun des disques qui le compose. Un PV ne peut appartenir qu’à
un seul VG.
Dans cet espace global, l’administrateur va pouvoir
« tailler  » des partitions : les LV. Chaque LV va pouvoir être
utilisé comme swap ou comme FS (après formatage). De plus, les LV sont
redimensionnables (sans perte de données en cas d’extension d’un LV
supportant un FS).
Dans la suite de cours vont vous être présentées les
principales commandes à utiliser pour gérer le LVM ; il va de soi que l’outil
d’administration SAM (System Administration Manager) permet d’accéder à la
plupart des fonctionnalités du LVM. En général, une seule opération sous SAM
correspond à plusieurs commandes (cf. /var/sam/log/sam.log).
Par ailleurs, un certain nombre de fonctions avancées
(sauvegarde de la configuration, miroring, transfert de VG d’un système vers
un autre, ...) ne sont pas abordées dans ce cours.
La suite de ce cours suit une progression logique, en s’intéressant
d’abord aux disques, puis aux VG et enfin aux LV. La gestion de la swap et des
FS, indépendante du LVM, n’est pas abordée dans le présent cours.
Avant d’être utilisable par un LVM, un disque doit être
créé :
pvcreate nom_fichier_spécial_en_mode_caractére
Les options utilisables sont les suivantes :
-b nombres correspondant aux index des blocs défectueux
-f supprime le message de confirmation si le disque
contient déjà des données
-B réserve l’espace nécessaire aux données de boot
(pour les disques bootables)
-t type_disque lit les informations de
configuration dans le fichier /etc/disktab (type_disque est
une entrée de ce fichier ; vous pouvez récupérer le type d’un
disque à l’aide de la commande diskinfo). A utiliser si le driver
ne peut fournir ces informations.
-d soft_defects nombre minimum de blocs réservés
pour la réallocation des blocs défectueux (sauf disques HP-IB)
Cette commande a pour effet de réserver un certains nombre d’emplacements
sur le disque :
disque non bootable |
disque bootable |
En-tête LIF (créé par la commande mkboot) :
contient des informations sur la zone « répertoire LIF .
Physical Volume Reserved Area (créé par la commande
pvcreate) : contient les informations spécifiques au disque.
Répertoire LIF (créé par la commande mkboot) :
contient au moins ISL, HPUX, éventuellement les fichiers LABEL
(créés par lvlnboot)
Volume Group Reserved Area (créée par la commande vgcreate) :
contient les informations relative au groupe de volume. Cette zone est
dupliquée au sein du VG. On y trouve le Volume Group Status Area (VGSA)
qui contient des informations sur le « quorum  » du groupe, et le Volume
Group Descriptor Area (VGDA) o๠se trouvent des informations sur le pilote
de périphérique nécessaire à configurer le VG.
Cette zone contient aussi (si nécessaire) la table des
extensions logiques.
Bad Block Reallocation Area : réservée pour le
mécanisme de réallocation des blocs défectueux.
La commande diskinfo permet d’obtenir des
informations sur le disque physique.
Elle requière en premier lieu la préparation d’un/de
plusieurs PV en tant que volumes physiques LVM. Il faut ensuite procéder en
plusieurs étapes :
Créer un répertoire /dev/vgnn pour le VG, o๠nn
représente le numéro de groupe de volume (à partir de 00, numérotation en
séquence).
Créer le fichier spécial group en mode caractère,
utilisé par le noyau et les commandes LVM pour communiquer avec le VG, de la
manière suivante :
mknod /dev/vgnn/group c 64 0xnn0000
Créer le groupe de volume, en lui assignant au moins un
disque :
vgcreate /dev/vgnn /dev/dsk/cntmdp ...
Les options utilisables sont :
-e max_pe nombre maximum de PE allouables aux
disques LVM (1016 par défaut).
-l max_lv nombre maximum de LV (255 par défaut).
-p max_pv nombre maximum de PV (32 par défaut).
-s pe_size taille en Mo de la PE (de 1 à 256 par
puissance de 2, 4 par défaut).
Il est possible de contrà´ler le résultat de la
création :
vgdisplay /dev/vgnn
Un disque inclus dans un VG peut aussi être consulté :
pvdisplay /dev/dsk/cntmdp
Pour ces deux commandes, l’option -v permet d’obtenir
une sortie détaillée.
On peut ajouter des disques LVM à un VG existant, afin d’accroire
le nombre de PE disponibles :
vgextend /dev/vgnn /dev/dsk/cntmdp
Il est possible de retirer un disque d’un groupe de volume.
Attention toutefois au cas o๠le disque que vous souhaitez enlever contient des
données (transférez les avec la commande pvmove). Puis :
vgreduce /dev/vgnn /dev/dsk/cntmdp
vgremove /dev/vgnn
Le VG ne doit contenir :
aucun LV
un seul PV
Il est nécessaire de créer au moins un LV dans les VG afin
d’exploiter l’espace disque. Fonctionnellement, un LV correspond à une
partition qui va contenir soit du swap, soit des fichiers (organisés au sein d’un
FS).
En l’absence de miroring, LVM associe à chaque LE une PE
sur un disque (pas forcément consécutives). La taille d’une LE est donc
égale à celle d’une PE.
lvcreate -L 40 /dev/vgnn # création d’un lv de 40
Mo
lvcreate -l 10 /dev/vgnn # création d’un lv de 10
LE
Les options disponibles sont :
-L size taille en Mo, arrondie au multiple de la
LE supérieure la plus proche.
-l le_size taille en nombre de LE.
-p perm permissions (w par défaut).
-n name nom personnalisé (par défaut, lvolx,
o๠x est un entier non nul incrémenté séquentiellement).
-r realloc réallocation des blocs défectueux,
active par défaut. Pour la désactiver, préciser -r n.
-C contiguous allocation contigà¼e (les PE d’un
LV sont alloués séquentiellement sur un PV), inactive par défaut.
Stipuler -C y pour l’activer. Obligatoire pour les LV root et la
swap primaire.
-i stripe nombre de PV o๠sont situées les PE.
-I stripe_size taille d’un « stripe  »,
de 4Kb à 64Kb par puissance de 2 (16Kb par défaut).
lvdisplay /dev/vgnn/lvolx
L’option -v permet d’obtenir davantage d’informations
(disque(s) utilisé(s), index des blocs, ...).
lvextend -l size /dev/vgnn/lvolx
Le paramètre size est la nouvelle taille, et doit
donc être supérieur à la taille courante. Si le LV contient un FS, ce dernier
doit être démonté (et son extension devra être effectuée après celle du
LV).
lvreduce [-f] -l size /dev/vgnn/lvolx
Le paramètre size est la nouvelle taille, et doit
donc être supérieur à la taille courante. Une confirmation est demandée si l’option
-f n’est pas utilisée. ATTENTION, toutes les données d’un éventuel
FS seront perdues.
lvremove [-f] /dev/vgnn/lvolx