Gestion des LVM sous Linux
I. Présentation
Nous allons ici étudier le fonctionnement et la mise en place de LVM (Logical Volume Manager). Sous Linux, il faut voir les LVM comme une couche d’abstraction entre les disques physiques (que l’on appellera PV pour Physical Volume) et les points de montages typiques à Linux (/root, /, /var, etc..). De façon basique, on peut voir le montage des partitions de la façon suivante :
De façon très simple on a un disque dur avec une ou plusieurs partitions sur laquelle on monte nos points de montage. Cependant cela pose plusieurs problèmes comme l’impossibilité d’étendre un point de montage (/var par exemple) car celui-ci dépendra de la taille de la partition sur laquelle il est monté. Le but de LVM est d’apporter une plus grande flexibilité des espaces de stockage.
Vocabulaires :
- PV : Physical Volume, c’est un disque physique. Le plus souvent on parle de partition car un disque (/dev/sdb par exemple) doit contenir au moins une partition (nommée /dev/sdb1) pour faire partie d’un VG. Toutes les commandes permettant de gérer les PV commencent par "pv"
- VG : Volume Group, c’est un ensemble de PV mis en commun, on concatène l’ensemble des PV pour en faire un gros volume que nous pourrons séparer en LV plus tard. Toutes les commandes permettant de gérer les VG commencent par "vg"
- LV : Logical Volume, c'est un espace défini dans le VG que nous allons délimiter pour y mettre un système de fichiers. Il s'agit là de l'équivalent des partitions physiques sauf que celles-ci sont redimensionnables beaucoup plus facilement, nous y mettons nos points de montage. . Toutes les commandes permettant de gérer les LV commencent par "lv".
Voici un schéma illustrant le fonctionnement des LVM
Comme nous le voyons ici, deux couches sont ici ajoutées afin de permettre une plus grande flexibilité de nos points de montages. On va ici grouper les volumes physiques (PV) dans un Volume Groupe puis rediviser ce Volume groupe en plusieurs parties, les Logical Volume, qui pourront facilement être redimensionnées par la suite, c'est sur ces Logical Volume que nous allons mettre notre système de fichiers puis nos points de montage. Dans le principe de gestion des disques physiques, cela ressemble au RAID JBOD (Just a Bunch of Disk) qui consiste à mettre à la suite plusieurs disques durs, avec les inconvénients que cela amène. Notons toutefois qu'il est possible de faire du RAID mirroring entre plusieurs Volume group pour palier aux problème de pertes de disque dur physique.
II. Création d’une structure LVM
Nous allons maintenant passer à la mise en place d'une structure LVM simple comprenant deux disques durs, un volume group que nous nommerons "VG01" et deux volumes logiques que nous nommerons volume1 et volume2, ceux-ci seront montés dans /data/volume1 et /data/volume2 en EX4.
On commence par installer l'ensemble des commandes qui vont nous permettre la gestion des LVM :
apt-get install lvm2
ou
yum install lvm2
Note : Pour créer un LV depuis un disque ou une partition (par exemple ici le disque /dev/sdc et sa seule partition /dev/sdc1), il faut avoir créé cette partition en utilisant fdisk.
La commande « fdisk –l » permettra de voir les disques et partitions du système et donc de voir ceux non utilisés ou ceux qui viennent d’être ajoutés.
Nous allons maintenant créer des partitions uniques sur nos deux disques durs "sdb" et "sdc". Pour créer une partition qui sera formatée pour travailler en LVM, on utilise la commande suivante :
fdisk /dev/sdb
Puis :
n e8
On sélectionne ensuite le numéro de partition ainsi que sa taille et on écrit sur le disque les changements via « w ». Une fois les données validées, on pourra visionner à nouveau nos partitions avec "fdisk -l" :
Il faut bien sûr effectuer la même manipulation pour le deuxième disque (sdc). Une fois cela fait, on peut faire de nos partitions /dev/sdb1 et /dev/sdc1 des PV qui pourront être intégrés à un VG :
pvcreate /dev/sdb1 pvcreate /dev/sdc1
Il est possible de visionner les PV disponibles et créés via la commande suivante :
pvdisplay
On pourra alors ensuite créer notre Volume Group qui se nommera "VG01" en y intégrant directement nos partitions :
vgcreate VG01 /dev/sdb1 /dev/sdc1
Il est possible de visionner les VG disponibles et créés via la commande suivante :
vgdisplay
On voit ici le nom du VG et son format. Une autre information intéressante est le « Metadata » qui sert à afficher le nombre de PV qui compose le VG, ici 2 PV. On a également sa taille totale, le cumul de la taille de tous les PV (20 Go). Enfin, on va pouvoir créer nos LV :
lvcreate -n Volume1 -L 1g VG01 lvcreate -n Volume2 -L 2g VG01
Ici, on créer un LV nommé "Volume1" qui fait 1Go et un autre nommé "Volume2" qui fait 2Go. On pourra retrouver nos LV dans /dev/, par exemple :
On pourra à partir de là les formater pour y mettre notre système de fichier (ext4 dans notre cas) :
mkfs -t ext4 /dev/VG01/Volume1 mkfs -t ext4 /dev/VG01/Volume2
Puis monter nos LV dans les dossiers que nous allons également créer :
mkdir /Volume1 mkdir /Volume2 mount /dev/VG01/Volume1 /Volume1 mount /dev/VG01/Volume2 /Volume2
On pourra vérifier les points de montages présents et les espaces via la commande suivante :
df -h
III. Étendre un Volume Group :
Nous allons ici voir comment ajouter un disque dur dans un VG existant puis étendre notre LV ainsi que notre point de montage final (Vol1). C’est une procédure qui peut s’effectuer à chaud sur la plupart des systèmes. On partitionnera notre disque via « fdisk » comme fait en début de ce tutoriel puis on fera de cette partition un PV via pvcreate :
pvcreate /dev/sdd1
On va ensuite ajouter notre PV dans le VG01 déjà existant :
vgextend VG01 /dev/sdd1
On va ensuite étendre notre LV Volume2 en y ajoutant 5Go :
lvresize -L +5g /dev/VG01/Volume2 # redimensionnement du volume resize2fs /dev/VG01/Volume2 # redimensionnement du système de fichier
On vient ici d’ajouter 5Go au LV puis de redimensionner le système de fichier, l'un ne vas pas sans l'autre.
Note : On peut aussi créer un nouveau LV plutôt que d’en étendre un existant, tout dépend du besoin.
Hello,
e8 –> 8e
Tcho !
MERCI BCP ! très sympa
(juste que j’ai utilisé 8e pour avoir type=LVM Linux en faisant « t » après coup sous fdisk)
j’ai testé tout ceci sur une VM Debian (en y ajoutant 2 petits disques virtuels)
Comment rapidement vérifier si le VG a encore de la place ?
Est-ce le « Free PE/size » sous vgdisplay ? et à quoi correspond un PE ?
« La connaissance n’a de valeur que si elle est partagée ! »
Si j’étais balaise en Linux, je n’hésiterais pas non plus à faire la même chse,
à transmettre mon savoir; de ttes façons en IT personne n’est omniscient…
Merci encore 😉