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 :
LVM01

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

LVM02Comme 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.

LVM03
On voit par exemple ici notre disque /dev/sdb mais on ne voit pas de partition valide sur celui-ci, il ne peut donc pas être mis en tant que PV dans un VG

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
LVM04
«e8 » est le code de partitionnement pour les Linux LVM. On peut voir ces codes en saisissant (l)

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" :

LVM05
On voit ici qu'une nouvelle partition est présente sur notre disque. On doit avoir au moins une partition valide au bon format pour en faire un Physical Volume pouvant intégrer un VG.

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

LVM06
Il est possible de visionner les PV disponibles et créés via la commande suivante :

pvdisplay

LVM07
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

LVM08
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 :

LVM09

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

LVM10

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.

 

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.

Nombre de posts de cet auteur : 521.Voir tous les posts

2 thoughts on “Gestion des LVM sous Linux

  • 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 😉

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.