Installer et utiliser le LVM sous Linux

Page 1 / 1

LVM (Logical Volume Manager) est un système qui permet de créer des volumes logiques et qui permet de gérer plusieurs systèmes de fichiers sur un ou plusieurs disques.
En effet, grâce au LVM, vous serez en mesure de gérer dynamiquement un système de fichiers résidant sur un ou plusieurs disques durs physiques. Un peu comme le RAID logiciel.

En utilisant le LVM, vous pourriez par exemple stocker les données des utilisateurs sur un disque dur et stocker le reste sur l'autre disque dur.

  1. Présentation du LVM
    1. Les volumes physiques (Physical Volumes)
    2. Les groupes de volumes (Volume Groups)
    3. Les volumes logiques (Logical Volumes)
  2. Lister les disques durs et les partitions
  3. Utilisation de LVM
    1. Installation
    2. Création d'un volume physique (Physical Volume)
    3. Création d'un groupe de volumes (Volume Group)
    4. Création d'un volume logique (Logical Volume)
    5. Formatage du volume logique
    6. Monter le volume logique
    7. Redimensionnement d'un volume logique
    8. Supprimer un volume logique (Logical Volume)
    9. Supprimer un groupe de volumes (Volume Group)
    10. Supprimer un volume physique (Physical Volume)

1. Présentation du LVM

Le LVM possède 3 couches :

  1. Les volumes physiques (Physical Volumes)
  2. Les groupes de volumes (Volume Groups)
  3. Les volumes logiques (Logical Volumes)

1.1. Les volumes physiques (Physical Volumes)

Les volumes physiques correspondent aux disques durs physiques ou aux partitions présentes sur ceux-ci (c'est au choix).

Les volumes physiques font le lien entre le matériel (votre ou vos disques durs) et le LVM.

Les commandes permettant de gérer ces volumes physiques en LVM commencent par : pv

1.2. Les groupes de volumes (Volume Groups)

Les groupes de volumes permettent de regrouper plusieurs disques durs physiques ou plusieurs partitions ensemble.

C'est dans ces groupes de volumes que l'on créera nos volumes logiques.

1.3. Les volumes logiques (Logical Volumes)

Ce sont les volumes dans lesquels nous créerons les systèmes de fichiers (ext4, ntfs, ...) et dans lesquels nous pourrons stocker des données.

Notez que les volumes logiques devront être montés dans le système de fichiers principal pour pouvoir y stocker des données ou les utiliser.

2. Lister les disques durs et les partitions

Pour cela, il suffit de taper la commande :

Bash

fdisk -l

Dans notre cas, nous avons :
- /dev/sda : le disque dur où Debian est installé.
- /dev/sdb : le 2ème disque dur qui est vierge pour le moment. (Pas de partitions présentes sur ce disque dur)

Plain Text

Disque /dev/sda : 64.4 Go, 64424509440 octets
255 têtes, 63 secteurs/piste, 7832 cylindres, total 125829120 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x000d5066

Périphérique Amorce  Début        Fin      Blocs     Id  Système
/dev/sda1   *        2048   120635391    60316672   83  Linux
/dev/sda2       120637438   125827071     2594817    5  Étendue
/dev/sda5       120637440   125827071     2594816   82  partition d'échange Linux / Solaris

Disque /dev/sdb : 85.9 Go, 85899345920 octets
255 têtes, 63 secteurs/piste, 10443 cylindres, total 167772160 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00000000

Le disque /dev/sdb ne contient pas une table de partitions valable

3. Utilisation de LVM

3.1. Installation

Pour installer LVM, il suffit d'installer le paquet lvm2.

Bash

apt-get install lvm2

3.2. Création d'un volume physique (Physical Volume)

Bash

pvcreate /dev/sdb

Plain Text

Writing physical volume data to disk "/dev/sdb"
Physical volume "/dev/sdb" successfully created

Pour vérifier que le volume a bien été créé, utilisez la commande "pvdisplay" qui listera les volumes physiques existants.

Bash

pvdisplay

Plain Text

 "/dev/sdb" is a new physical volume of "80,00 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdb
VG Name 
PV Size               80,00 GiB
Allocatable           NO
PE Size               0 
Total PE              0
Free PE               0
Allocated PE          0
PV UUID               Tqludv-SipP-Kjcp-22eU-JSVf-NxDJ-IlFFcO

3.3. Création d'un groupe de volumes (Volume Group)

Pour créer un groupe de volume, il faut utiliser la commande "vgcreate" en indiquant en paramètre :
- le nom du groupe
- puis le chemin du volume physique (créé précédemment)

Bash

vgcreate iwvg /dev/sdb

Plain Text

Volume group "iwvg" successfully created

Pour vérifier que le groupe de volumes a bien été créé, utilisez aussi la commande "pvdisplay".
Comme vous pouvez le voir, le nom du volume group (VG) est affiché. Ce qui n'était pas le cas précédemment.

Bash

pvdisplay

Plain Text

 --- Physical volume ---
PV Name               /dev/sdb
VG Name               iwvg
PV Size               80,00 GiB / not usable 4,00 MiB
Allocatable           yes 
PE Size               4,00 MiB
Total PE              20479
Free PE               20479
Allocated PE          0
PV UUID               Tqludv-SipP-Kjcp-22eU-JSVf-NxDJ-IlFFcO

Pour lister les volumes groupes, utilisez la commande :

Bash

vgscan

Plain Text

Reading all physical volumes.  This may take a while...
Found volume group "iwvg" using metadata type lvm2

Pour obtenir plus d'information concernant votre groupe de volumes, utilisez la commande :

Bash

vgdisplay iwvg

Plain Text

--- Volume group ---
VG Name               iwvg
System ID 
Format                lvm2
Metadata Areas        1
Metadata Sequence No  1
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                0
Open LV               0
Max PV                0
Cur PV                1
Act PV                1
VG Size               80,00 GiB
PE Size               4,00 MiB
Total PE              20479
Alloc PE / Size       0 / 0 
Free  PE / Size       20479 / 80,00 GiB
VG UUID               zxxLNN-lX08-rhB2-MM9T-kUP6-GSaC-TEObDY

3.4. Création d'un volume logique (Logical Volume)

Maintenant, vous serez en mesure de créer les volumes logiques souhaités.
Pour cela, utilisez la commande : lvcreate.

Paramètres :
-L : taille du volume logique en Mo. Notez qu'il est aussi possible d'indiquer une taille en Go comme ceci : -L50GO
-n : nom du volume logique
(3e paramètre) : nom du groupe de volumes

Notez qu'il est préférable d'indiquer la taille en GO si vous souhaitez créé un volume de plusieurs gigaoctets.
En effet, 1 Go = 1024 Mo et non 1000 Mo.
Comme le vous le verrez un peu plus bas, notre volume de 5000 Mo aura une taille de 48,83 Go et non 50 Go.
Par contre, le volume de 30 Go aura bien une taille de 30 Go.

Bash

lvcreate -L 50000 -n iw_vol1 iwvg

Plain Text

Logical volume "iw_vol1" created

Bash

lvcreate -L 30GO -n iw_vol2 iwvg

Plain Text

Logical volume "iw_vol2" created

Pour vérifier que le volume logique a bien été créé, utilisez la commande "lvscan".

Bash

lvscan

Plain Text

ACTIVE            '/dev/iwvg/iw_vol1' [48,83 GiB] inherit
ACTIVE            '/dev/iwvg/iw_vol2' [30,00 GiB] inherit

Pour obtenir plus d'information concernant votre volume logique, utilisez la commande :

Bash

lvdisplay

Plain Text

--- Logical volume ---
LV Path                /dev/iwvg/iw_vol1
LV Name                iw_vol1
VG Name                iwvg
LV UUID                DMOkJu-Y0gu-75KX-da1g-qLgD-yZah-jvFLAZ
LV Write Access        read/write
LV Creation host, time debian, 2016-09-10 14:19:25 +0200
LV Status              available
# open                 0
LV Size                48,83 GiB
Current LE             12500
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           254:0

--- Logical volume ---
LV Path                /dev/iwvg/iw_vol2
LV Name                iw_vol2
VG Name                iwvg
LV UUID                ie2Oot-Dki9-wmuR-9gqE-FjX5-hwie-kqzLqe
LV Write Access        read/write
LV Creation host, time debian, 2016-09-10 14:22:27 +0200
LV Status              available
# open                 0
LV Size                30,00 GiB
Current LE             7680
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           254:1

3.5. Formatage du volume logique

Pour pouvoir utiliser votre volume logique, vous devez d'abord le formater pour y créer le système de fichiers souhaité. (Comme pour une partition normale)

Pour formater le volume avec un système de fichier ext4, utilisez la commande ci-dessous.
Note : /dev/iwvg/iw_vol1 correspond au chemin du volume logique à formater. Il s'agit de la valeur "LV Path" affichée par la commande "lvdisplay" (voir ci-dessus).

Bash

mkfs -t ext4 /dev/iwvg/iw_vol1

3.6. Monter le volume logique

Pour pouvoir utiliser votre volume logique, il est nécessaire de le monter.

Pour cela, créer un dossier où vous souhaitez, puis montez votre volume logique dans ce nouveau dossier.

Bash

mkdir /my_lvm_volume
mount /dev/iwvg/iw_vol1 /my_lvm_volume

Ensuite, utilisez la commande "df -h" pour afficher la liste des systèmes de fichiers, ainsi que la taille occupée par ceux-ci.
Vous verrez aussi votre volume logique "iwvg-iw_vol1" qui est monté sur "/my_lvm_volume".

Bash

df -h

Plain Text

Sys. fich.                                             Taille Util. Dispo Uti% Monté sur
rootfs                                                    57G  4,2G   50G   8% /
udev                                                      10M     0   10M   0% /dev
tmpfs                                                    396M  648K  395M   1% /run
/dev/disk/by-uuid/3f7e5d0d-62e7-4ec9-a36b-a9f0983644c8    57G  4,2G   50G   8% /
tmpfs                                                    5,0M     0  5,0M   0% /run/lock
tmpfs                                                    1,3G  224K  1,3G   1% /run/shm
/dev/mapper/iwvg-iw_vol1                                  49G  180M   46G   1% /my_lvm_volume

Maintenant, les données que vous stockerez dans le dossier "/my_lvm_volume" seront stockées en réalité dans votre volume logique "/dev/iwvg/iw_vol1".

3.7. Redimensionnement d'un volume logique

Pour redimensionner un volume logique, vous devez utiliser la commande "lvextend".

Cette commande peut être utilisée de 2 façons.

Pour étendre un volume logique à la taille souhaitée, utilisez la commande comme ceci :

Bash

lvextend -L50G /dev/iwvg/iw_vol1

Pour ajouter plusieurs Mo ou Go à un volume logique, utilisez la commande comme ceci :

Bash

lvextend -L+10G /dev/iwvg/iw_vol1

Pour terminer, n'oubliez pas de mettre à jour le système de fichiers présent sur le volume logique que vous venez de redimensionner.

Pour cela, démontez le volume logique concerné :

Bash

umount /dev/iwvg/iw_vol1

Puis, vérifiez et redimensionnez le système de fichiers du volume logique.

Bash

e2fsck -f /dev/iwvg/iw_vol1
resize2fs /dev/iwvg/iw_vol1

Pour finir, remontez votre volume logique comme précédemment :

Bash

mount /dev/iwvg/iw_vol1 /my_lvm_volume

3.8. Supprimer un volume logique (Logical Volume)

Pour terminer, si vous souhaitez supprimer un volume logique :
- démontez le volume logique concerné
- puis, utilisez la commande : lvremove

Bash

umount /dev/iwvg/iw_vol1
lvremove /dev/iwvg/iw_vol1

3.9. Supprimer un groupe de volumes (Volume Group)

Si un volume physique d'un groupe de volume n'existe plus, utilisez de préférence la commande :

Bash

vgreduce --removemissing

Si vous voulez supprimer un groupe de volumes complet, utilisez la commande "vgremove" en indiquant le nom du groupe de volume en paramètre.

Bash

vgremove iwvg

Notez que si des volumes logiques existent toujours dans le groupe de volume, cette commande vous demandera si vous souhaitez aussi les supprimer.
Répondez "y" pour les supprimer.

Plain Text

Do you really want to remove volume group "iwvg" containing 2 logical volumes? [y/n]: 

Pour passer outre de cette question et supprimer automatiquement les volumes logiques présents dans le groupe de volume à supprimer, ajoutez le paramètre "-f".

Bash

vgremove -f iwvg

3.10. Supprimer un volume physique (Physical Volume)

Pour supprimer un volume physique :
- démontez les volumes logiques concernés par ce volume physique
- puis, supprimez le groupe de volume qui utilise ce volume physique
- et enfin, utilisez la commande "pvremove" en indiquant le volume physique à supprimer en paramètre.

Bash

pvremove /dev/sdb