LVM
Sommaire
Présentation
Cette page a pour objet de lister les gestes techniques relatifs à l'utilisation de LVM sur un serveur Linux.
Lexique
- PV
- Physical Volume
- VG
- Volume Group
- LV
- Logical Volume
- FS
- File System
Création
Création de partition
Pour créer une partition, lancer la commande fdisk
sur le disque concerné :
fdisk /dev/sdb
Le programme est interactif et des renseignements sont à donner pour créer la partition.
Les options sont les suivantes :
- n : pour new partition
- cela va créer une nouvelle partition
- p : pour primary partition
- cela va créer une partition primaire
- 1-4 : pour le choix du numéro de partition à créer
- on ne peut pas créer plus de 4 partitions primaires sur un disque
- un nombre : ce nombre indique que le premier secteur disponible à partir duquel créer la partition
- il faut laisser la valeur par défaut à moins de savoir exactement ce que l'on fait
- Dernier secteur, +secteur ou +taille{K,M,G} : cette option permet de définir la taille de la partition
- la valeur par défaut correspond à la totalité de l'espace disque disponible
- t : pour partition type
- cela permet de choisir le type de partition. Pour faire du LVM, faire le choix 8e.
- w : pour write
- cela permet de valider et d'écrire les nouvelles informations dans la table de partitions du disque
Exemple de retour :
[root@myserver ~]# fdisk -l /dev/sd? Disque /dev/sda : 21.5 Go, 21474836480 octets, 41943040 secteurs Unités = secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x000e4d24 Périphérique Amorçage Début Fin Blocs Id. Système /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 41943039 19921920 8e Linux LVM Disque /dev/sdb : 10.7 Go, 10737418240 octets, 20971520 secteurs Unités = secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets [root@myserver ~]# fdisk /dev/sdb Bienvenue dans fdisk (util-linux 2.23.2). Les modifications resteront en mémoire jusqu'à écriture. Soyez prudent avant d'utiliser la commande d'écriture. Le périphérique ne contient pas de table de partitions reconnue Construction d'une nouvelle étiquette pour disque de type DOS avec identifiant de disque 0x61095643. Commande (m pour l'aide) : n Type de partition : p primaire (0 primaire(s), 0 étendue(s), 4 libre(s)) e étendue Sélection (p par défaut) : Utilisation de la réponse p par défaut Numéro de partition (1-4, 1 par défaut) : Premier secteur (2048-20971519, 2048 par défaut) : Utilisation de la valeur 2048 par défaut Dernier secteur, +secteur ou +taille{K,M,G} (2048-20971519, 20971519 par défaut) : Utilisation de la valeur 20971519 par défaut La partition 1 de type Linux et de taille 10 GiB est configurée Commande (m pour l'aide) : t Partition 1 sélectionnée Code Hexa (taper L pour afficher tous les codes) :8e Type de partition « Linux » modifié en « Linux LVM » Commande (m pour l'aide) : w La table de partitions a été altérée. Appel d'ioctl() pour relire la table de partitions. Synchronisation des disques. [root@myserver ~]# fdisk -l /dev/sd? Disque /dev/sda : 21.5 Go, 21474836480 octets, 41943040 secteurs Unités = secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x000e4d24 Périphérique Amorçage Début Fin Blocs Id. Système /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 41943039 19921920 8e Linux LVM Disque /dev/sdb : 10.7 Go, 10737418240 octets, 20971520 secteurs Unités = secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x61095643 Périphérique Amorçage Début Fin Blocs Id. Système /dev/sdb1 2048 20971519 10484736 8e Linux LVM
Création de PV
Pour créer un PV (Physical Volume) à partir d'un disque ou d'une partition, lancer la commande suivante :
pvcreate /dev/sdb1
Exemple de retour :
[root@myserver ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. [root@myserver ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 --- <10,00g <10,00g
Création de VG
Création de LV
Pour créer un LV, s'assurer préalablement que le VG sur lequel il sera créé dispose de suffisamment d'espace.
Une fois ce point vérifié, lancer la création du LV comme ceci :
lvcreate -L 1G VG_DATA -n LV_DATA_GDB
Cette commande aura pour effet de créer un LV nommé LV_DATA_GDB
d'une taille de 1G
sur le VG VG_DATA
.
Création de FS
Pour créer un FS, il faut s'assurer que le LV qui l'héberge soit bien créé et qu'il dispose de l'espace désiré.
Une fois ce point vérifier, récupérer le chemin d'accès du LV avec la commande :
lvdisplay VG_DATA/LV_DATA_GDB|grep "LV Path"|awk '{print $NF}'
Puis, lancer la création en ext4 du FS sur le chemin d'accès du LV comme ceci :
mkfs.ext4 /dev/VG_DATA/LV_DATA_GDB
Exemple de retour :
mke2fs 1.44.4 (18-Aug-2018) Creating filesystem with 262144 4k blocks and 65536 inodes Filesystem UUID: e5ec0bfe-f7e1-41ad-a055-dd0897a2d0d7 Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done
Pour vérifier, lancer la commande :
file -sL /dev/VG_DATA/LV_DATA_GDB
Exemple de retour :
/dev/VG_DATA/LV_DATA_GDB: Linux rev 1.0 ext4 filesystem data, UUID=e5ec0bfe-f7e1-41ad-a055-dd0897a2d0d7 (extents) (64bit) (large files) (huge files)
Extension
L'exemple utilisé ici est un cas fréquent : le LV dans lequel se trouvent les dossiers dans lesquels les utilisateurs travaillent vient à saturation. Il faut l'agrandir.
Afficher les informations
LV
Sur le serveur myserver par exemple, le LV LV_DATA
monté dans le dossier /data
fait 12 Go et vient à saturation.
Pour visualiser le point de montage, faire :
df -h /data
Exemple de retour :
Filesystem Size Used Avail Use% Mounted on /dev/mapper/VG_DATA-LV_DATA 12G 11G 460M 96% /data
Le LV concerné est donc /dev/mapper/VG_DATA-LV_DATA
, ou plus simplement appelé VG_DATA/LV_DATA
, et est rempli à 96%.
Pour afficher les informations relatives au LV, lancer la commande :
lvs /dev/mapper/VG_DATA-LV_DATA
Exemple de retour :
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert LV_DATA VG_DATA -wi-ao---- 12.00g
VG
Le VG sur lequel se trouve le LV est VG_DATA
. Pour afficher ses informations, taper :
vgs VG_DATA
Exemple de retour :
VG #PV #LV #SN Attr VSize VFree VG_DATA 1 1 0 wz--n- 13.33g 1.33g
Ce la permet de constater qu'il n'y a que 1,33 Go d'espace disponible sur VG_DATA
.
PV
Pour voir les PV associés à VG_DATA
, lancer la commande :
pvs
Exemple de retour :
PV VG Fmt Attr PSize PFree /dev/sda2 VG_SYS lvm2 a-- 19.99g 0 /dev/sdb1 VG_APPLI lvm2 a-- 6.66g 3.05g /dev/sdb2 VG_DATA lvm2 a-- 13.33g 1.33g
Cela indique qu'il y a 3 PV, dont 2 sur le disque dur /dev/sdb, dont 1 étant rattaché au VG VG_DATA
, le PV /dev/sdb2
.
Disque dur
Pour afficher des informations relatives au disque dur /dev/sdb
, lancer la commande :
fdisk -l /dev/sdb*
Exemple de retour :
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors Disk model: Virtual disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x4f477c8d Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 13981013 13978966 6.7G 8e Linux LVM /dev/sdb2 13981696 41943039 27961344 13.3G 8e Linux LVM Disk /dev/sdb1: 6.7 GiB, 7157230592 bytes, 13978966 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/sdb2: 13.3 GiB, 14316208128 bytes, 27961344 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
Ce retour permet de constater qu'il n'y a pas d'espace libre disponible sur /dev/sdb
pour étendre une partition ou en créer de nouvelle. En effet, le disque dur /dev/sdb
fait 20 Go et est composé de 2 partitions faisant respectivement 6,7 Go et 13,3 Go, soit un total de 20 Go.
Réaliser l'extension
Ajout/modification disque dur
Il est possible d'ajouter un disque dur, ou bien d'en étendre un existant. Cette action dépendant du type de machine, et non de Linux ou LVM, elle ne sera pas traitée ici.
Prise en compte modification disque dur
Dans le cas d'une extension de disque dur, après l'extension réalisée, il va falloir passer une commande au système pour mettre à jour ses informations. Par exemple, pour la machine myserver, fonctionnant sous openSUSE Tumbleweed, la commande à passer est :
echo 1 > /sys/block/sdb/device/rescan
Cette commande permet de forcer le scan du disque dur /dev/sdb
. Il faut donc adapter la commande en fonction du disque dur désiré.
Ainsi, en passant la commande :
fdisk -l /dev/sdb
Le retour est le suivant :
Disk /dev/sdb: 25 GiB, 26843545600 bytes, 52428800 sectors Disk model: Virtual disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x4f477c8d Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 13981013 13978966 6.7G 8e Linux LVM /dev/sdb2 13981696 41943039 27961344 13.3G 8e Linux LVM
Le disque dur /dev/sdb
qui était originalement à 20 Go fait désormais 25 Go.
Extension partition
Utiliser l'utilitaire de disque fdisk
sur /dev/sdb
en lançant la commande suivante :
fdisk /dev/sdb
Renseigner les valeurs suivantes :
Command
- d
- d pour delete ==> demande la suppression d'une partition
Partition number
- 2
- 2 pour demander la suppression de la partition n°2
Command
- n
- n pour new ==> demande la création d'une nouvelle partition
Select
- p
- p pour primary ==> demande la création d'une partition primaire
Partition number
- 2
- 2 pour indiquer le numéro que portera la partition
First sector
- 13981696
- correspond au numéro de secteur sur le disque à partir duquel la partition commence
- ATTENTION ! : dans le cas d'une extension de partition, il est important de donner exactement le même First sector que la partition précédemment supprimée. Dans le cas contraire, les données seront irrécupérables !
Last sector
- 52428799
- correspond au numéro de secteur sur le disque sur lequel la partition termine. Pour utiliser tout l'espace disponible restant, mettre la valeur maximale proposée.
Do you want to remove the signature?
- N
- N pour No ==> il faut conserver la signature LVM afin que les données ne soient pas perdues.
Command
- w
- w pour write ==> toutes les informations renseignées sont écrites sur le disque à cette étape.
Pour constater la bonne prise en compte de l'extension de partition, taper la commande suivante :
fdisk -l /dev/sdb2
Exemple de retour :
Disk /dev/sdb2: 18.3 GiB, 19684917248 bytes, 38447104 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
La partition /dev/sdb2
qui était originalement à 13,3 Go fait désormais 18,3 Go.
Extension PV
Pour étendre le PV à la taille de la partition précédemment agrandie, taper :
pvresize /dev/sdb2
Exemple de retour :
Physical volume "/dev/sdb2" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not resized
Pour constater la bonne prise en compte de l'extension du PV, taper la commande suivante :
pvs /dev/sdb2
Exemple de retour :
PV VG Fmt Attr PSize PFree /dev/sdb2 VG_DATA lvm2 a-- 18.33g 0
Le PV /dev/sdb2
qui était originalement à 13,3 Go fait désormais 18,3 Go.
Extension VG
Dans le cas d'une extension d'un PV, le VG associé n'a pas besoin d'être agrandi.
Toutefois, s'il s'agissait de la création d'un nouveau PV pour agrandir un VG, il aurait fallu taper la commande suivante :
vgextend VG_DATA /dev/sdb3
Extension LV
Pour étendre le LV avec l'espace précédemment mis à disposition sur le VG, taper :
lvextend -l +100%FREE VG_DATA/LV_DATA
Explication de la commande :
- +
- pour indiquer que l'ajoute de l'espace à la quantité déjà existante sur le LV
- 100%FREE
- représente la quantité de l'espace
- correspond à la totalité (100%) de l'espace disponible (FREE) sur le VG
Exemple de retour :
New size given (1621 extents) not larger than existing size (3072 extents)
Pour constater la bonne prise en compte de l'extension du LV, taper la commande suivante :
lvs VG_DATA/LV_DATA
Exemple de retour :
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert LV_DATA VG_DATA -wi-ao---- 18.33g
Le LV VG_DATA/LV_DATA
qui était originalement à 12,0 Go fait désormais 18,33 Go.
Extension FS
Pour étendre le FS avec l'espace précédemment mis à disposition sur le LV, taper :
resize2fs /dev/VG_DATA/LV_DATA
ou
resize2fs /data
Exemple de retour :
resize2fs 1.44.5 (15-Dec-2018) Filesystem at /dev/VG_DATA/LV_DATA is mounted on /data; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 2 The filesystem on /dev/VG_DATA/LV_DATA is now 4805632 (4k) blocks long.
Pour constater la bonne prise en compte de l'extension du LV, taper la commande suivante :
df -h /dev/VG_DATA/LV_DATA
ou
df -h /data
Exemple de retour :
Filesystem Size Used Avail Use% Mounted on /dev/mapper/VG_DATA-LV_DATA 18G 12G 5.8G 67% /data
Le FS /data
qui était originalement à 12 Go fait désormais 18 Go.