La création de volumes logiques se fait en plusieurs étapes. Ci-dessous un flux de travail de base pour utiliser LVM sous Linux.
Création d’un stockage LVM
Préparation des disques
Créez une nouvelle partition LVM avec fdisk
:
# fdisk /dev/vde |
Créez une nouvelle partition LVM :
n
: créer une nouvelle partitiontype de partition
: par défaut primaire, appuyez sur Enternuméro de partition
: par défaut le prochain disponible, appuyez sur Enterpremier secteur
: appuyez sur Enter pour utiliser la valeur par défauttaille de la partition
: syntaxe+size{K,M,G,T}
(+2G pour une partition de 2 Go)t
: changer le type de partition, type8e
pour Linux LVMw
: sauvegarder les changements
# fdisk /dev/sde |
[...] |
# lsblk |
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS |
Redémarrez la table de partitions
Après avoir créé la nouvelle partition, il faut redémarrer la table de partitions :
# partprobe /dev/vde |
Création de PV, VG et LV
Création de Physical Volumes (PV)
Créez un nouveau Physical Volume (PV) avec pvcreate
sur la nouvelle partition :
# pvcreate /dev/vde1 |
Création d’un Volume Group (VG)
Créez un Volume Group (VG) avec vgcreate
sur le Physical Volume :
# vgcreate vg01 /dev/vde1 |
Création de Logical Volumes (LV)
Créez un Logical Volume (LV) avec lvcreate
dans le Volume Group :
# lvcreate -n lv01 -L 20G vg01 |
Formatage du Logical Volume
Formattez le lv avec mkfs
:
# mkfs.ext4 /dev/vg01/lv01 |
ou
# mkfs -t ext4 /dev/vg01/lv01 |
Montage du Logical Volume :
Créer un répertoire de montage (s’il n’existe pas) et monter le Logical Volume dedans, ensuite utiliser le répertoire de montage comme point d’accès pour stocker des fichiers et données :
# mkdir /mnt/root/DATAS |
Configuration persistante
Pour que le système de fichiers soit disponible de manière persistante il faut ajouter une entrée dans /etc/fstab
:
# /dev/vg01/lv01 /mnt/root/DATAS xfs defaults 0 0 |
Affichage des informations LVM
La commande pvdisplay
affiche les informations des PV (Physical Volumes) :
# pvdisplay /dev/vde1 |
La commande vgdisplay
affiche les informations des VG (Volume Groups) :
# vgdisplay vg01 |
La commande lvdisplay affiche les informations des LV (Logical Volumes) :
# lvdisplay /dev/vg01/lv01 |
Extension du swap en LVM
Désactiver le swap sur le LV :
# swapoff -v /dev/vg01/swap |
Étendre le LV :
# lvextend -L +300M /dev/vg01/swap |
Formater le LV en tant qur swap :
# mkswap /dev/vg01/swap |
Activer le swap sur le LV :
# swapon /dev/vg01/swap |
Extension et réduction du stockage LVM
Extension LVM
Étendre le Physical Volume (PV)
Si besoin, créez un nouveau Physical Volume (PV) avec pvcreate
sur la nouvelle partition :
# pvcreate /dev/vde1 |
Ajouter de l’espace (disque, partition, ou RAID) avec pvresize
au Physical Volume (PV) si besoin :
# pvresize /dev/vde3 |
Étendre le Volume Group (VG)
Étendre le Volume Group (VG) avec vgextend
:
# vgextend vg01 /dev/vde3 |
Étendre le Logical Volume (LV)
Étendre le Volume Group (VG) avec lvextend
:
# lvextend -L +500M /dev/vg01/lv01 |
Extension du système de fichiers
Redimensionner le système de fichiers avec resize2fs
pour du ext4
:
# xfs_growfs /mnt/root/DATAS/ // XFS |
Permet d’étendre le système de fichiers afin qu’il occupe le LV étendu.
Réduction LVM
Réduire le système de fichiers
Réduire le système de fichiers avec resize2fs
pour du ext4
:
# resize2fs /dev/vg01/lv01 1G |
Réduire le Logical Volume (LV)
Réduire le Logical Volume (LV) avec lvreduce
:
# lvreduce -L 1G /dev/vg01/lv01 |
Réduire le Volume Group (VG)
Réduire (si nécessaire) le VG pour libérer de l’espace non alloué :
# pvmove /dev/vde3 |
Réduire le Volume Group (VG) avec vgreduce
(si vous libérez complètement un disque, par exemple) :
# vgreduce vg01 /dev/vde3 |
Réduire le Physical Volume (PV)
Si un disque a été retiré du VG, on peut réduire le Physical Volume avec pvresize
:
# pvresize /dev/vde3 |
Suppression d’un stockage LVM
Supprimer le système de fichiers
Supprimer le système de fichiers avec unmount
:
# umount /mnt/root/DATAS |
Supprimer le Logical Volume (LV)
Supprimer le Logical Volume (LV) avec lvremove
:
# lvremove /dev/vg01/lv01 |
Supprimer le Volume Group (VG)
Supprimer le Volume Group (VG) avec vgremove
:
# vgremove vg01 |
Supprimer le Physical Volume (PV)
Supprimer le Physical Volume (PV) avec pvremove
:
# pvremove /dev/vde1 |
/!\ Résumé des commandes
Commandes :
# fdisk /dev/vde |
Cas pratiques
Création et extension de volumes logiques
Avec fdisk
, création de 2 partitions LVM de 2Go en GPT :
[root@SERVER01 ~]# fdisk /dev/sde |
Changement du nom des partitions avec parted
:
[root@SERVER01 ~]# parted /dev/sde |
Vérification :
[root@SERVER01 ~]# parted /dev/sde print |
Création de 2 PV sur /dev/sde1
et /dev/sde2
:
[root@SERVER01 ~]# pvcreate /dev/sde1 /dev/sde2 |
Création du VG SERVER01_Group avec les 2 nouveaux PV.
[root@SERVER01 ~]# vgcreate SERVER01_Group /dev/sde1 /dev/sde2 |
Création du LV SERVER01_Volume avec une taille de 400 Mio. Cette commande crée le LV /dev/SERVER01_Group/SERVER01_Volume
sans système de fichiers.
[root@SERVER01 ~]# lvcreate -n SERVER01_Volume -L 400M SERVER01_Group |
Formatage du nouveau LV et montage persistant sur le système :
[root@SERVER01 ~]# mkfs -t xfs /dev/SERVER01_Group/SERVER01_Volume |
Création du répertoire /root/DATAS
et montage persistant :
[root@SERVER01 ~]# mkdir /root/DATAS |
Ajout dans /etc/fstab
:
/dev/SERVER01_Group/SERVER01_Volume /root/DATAS xfs defaults 0 0 |
Montage du LV SERVER01_Volume
:
[root@SERVER01 ~]# mount /root/DATAS/ |
[root@SERVER01 ~]# systemctl daemon-reload |
Vérification si /root/DATAS
est bien monté et si on peut copier des fichier :
[root@SERVER01 ~]# cp -a /etc/*.conf /root/DATAS/ |
[root@SERVER01 ~]# ls /root/DATAS/ | wc -l |
Informations sur le PV :
[root@SERVER01 ~]# pvdisplay /dev/sde1 |
[root@SERVER01 ~]# pvdisplay /dev/sde2 |
Informations sur le VG :
[root@SERVER01 ~]# vgdisplay SERVER01_Group |
Informations sur le LV : .
[root@SERVER01 ~]# lvdisplay /dev/SERVER01_Group/SERVER01_Volume |
Taille totale du volume :
[root@SERVER01 ~]# df -h /root/DATAS/ |
Création d’une 3ème partition de type Linux LVM appelée part3 (Pas besoin de recréer une “partition GPT” car ça reformate tout) :
[root@SERVER01 ~]# fdisk /dev/sde |
changement du nom de la 3ème partition :
[root@SERVER01 ~]# parted /dev/sde |
Enregistrement de la nouvelle partition dans noyau :
[root@SERVER01 ~]# udevadm settle |
Ajoutez la nouvelle partition en tant que PV :
[root@SERVER01 ~]# pvcreate /dev/vde3 |
Étendre le VG SERVER01_Group
avec le nouveau PV /dev/vde3
:
[root@SERVER01 ~]# vgextend SERVER01_Group /dev/sde3 |
Étendre le LV SERVER01_Volume
existant à 200 Mio :
[root@SERVER01 ~]# lvextend -L 50M /dev/SERVER01_Group/SERVER01_Volume |
Cette commade a résolu le problème :
[root@SERVER01 ~]# lvextend -l +100%FREE /dev/SERVER01_Group/SERVER01_Volume /dev/sde2 /dev/sde3 |
Ensuite il faut étendre le système de fichiers XFS en utilisant l’espace disponible sur le LV :
[root@SERVER01 ~]# xfs_growfs /root/DATAS/ |
Vérification la taille du LV étendu avec lvdisplay
:
[root@SERVER01 ~]# xfs_growfs /root/DATAS/ |
Vérifier la nouvelle taille du système de fichiers :
[root@SERVER01 ~]# df -h /root/DATAS/ |
[root@SERVER01 ~]# ls /root/DATAS | wc -l |
# lsblk |
Gestion de la pile de stockage
NOTE : WARNING : Bordel sans nom et illogisme ci-dessous - Je vais refaire dans pas longtenps…
Avec fdisk
, création de 3 partitions LVM de 2Go en GPT :
[root@SERVER02 ~]# fdisk /dev/sdf |
Changement du nom des partitions avec parted
:
[root@SERVER02 ~]# parted /dev/sdf |
Enregistrement des nouvelles partitions auprès de udev
et du noyau :
[root@SERVER02 ~]# partprobe |
Vérification :
[root@SERVER02 ~]# parted /dev/sdf print |
Création des PV :
[root@SERVER02 ~]# pvcreate /dev/sdf1 |
[root@SERVER02 ~]# pvcreate /dev/sdf2 |
[root@SERVER02 ~]# pvcreate /dev/sdf3 |
Création du VG :
[root@SERVER02 ~]# vgcreate SERVER02_Group /dev/sdf1 |
Création d’un LV :
[root@SERVER02 ~]# lvcreate -n SERVER02_Volume01 -L 400M SERVER02_Group |
À ce stade :
# lsblk |
Création d’un LV :
[root@SERVER02 ~]# lvcreate -n SERVER02_Volume02 -L 500M SERVER02_Group |
[root@SERVER02 ~]# lvcreate -n SERVER02_Volume03 -L 50M SERVER02_Group /dev/sdf3 |
À ce stade :
# lsblk |
Étendre le LV SERVER02_Volume03
à 768 Mio.
[root@SERVER02 ~]# lvextend -L 768M /dev/SERVER02_Group/SERVER02_Volume03 |
Étendre le système de fichiers XFS pour utiliser l’espace restant sur le LV :
[root@SERVER02 ~]# xfs_growfs /root/DATAS1 |
Note :
l’option -r de la commande lvextend.
Dans le groupe de volumes existant, création du LV SERVER02_Volume02
avec une taille de 128 Mio.
[root@SERVER02 ~]# lvcreate -n SERVER02_Volume02 -L 128M SERVER02_Group |
Création du ystème de fichiers xfs
sur le LV SERVER02_Volume02
:
[root@SERVER02 ~]# mkfs -t xfs /dev/SERVER02_Group/SERVER02_Volume02 |
Création du répertoire /root/DATAS2
comme point de montage :
[root@SERVER02 ~]# mkdir /root/DATAS2 |
Dans /etc/fstab
:
/dev/SERVER02_Group/SERVER02_Volume02 /root/DATAS2 xfs defaults 0 0 |
Daemon systemd
pour maj /etc/fstab
;
[root@SERVER02 ~]# systemctl daemon-reload |
Monter le LV SERVER02_Volume02
:
[root@SERVER02 ~]# mount /root/DATAS2 |
Vérification que le LV nouvellement créé est monté avec la taille prévue :
[root@SERVER02 ~]# df -h /root/DATAS2 |
[root@SERVER02 ~]# df -h /root/DATAS2 |
Détails du LV SERVER02_Volume03
:
[root@SERVER02 ~]# lvdisplay /dev/SERVER02_Group/SERVER02_Volume03 |
Détails du LV SERVER02_Volume02
:
[root@SERVER02 ~]# lvdisplay /dev/SERVER02_Group/SERVER02_Volume02 |
Documentation
MAN fdisk(8)
MAN gdisk(8)
MAN lvm(8)
MAN pvcreate(8)
MAN vgcreate(8)
MAN lvcreate(8)
MAN mkfs(8)
MAN pvdisplay(8)
MAN vgdisplay(8)
MAN lvdisplay(8)
MAN vgextend(8)
MAN lvextend(8)
MAN xfs_growfs(8)
MAN resize2fs(8)
MAN swapoff(8)
MAN mkswap(8)
MAN swapon(8)
MAN pvmove(8)
MAN vgcfgbackup(8)
MAN vgreduce(8)
MAN lvremove(8)
MAN vgremove(8)
MAN pvremove(8)