LVM (Logical Volume Manager) ou gestionnaire est une méthode de gestion des espaces de stockage dans un ordinateur.
Sous les systèmes Linux, LVM s’introduit comme une couche d’abstraction entre les disques physiques et les points de montages typiques à Linux (/home, /var, …) en introduisant la notion de volumes.
Ce système permet alors d’allouer ou diminuer dynamiquement l’espace disque d’un volume ou migrer l’espace d’un volume vers un autre. de manière simple et rapide.
De façon basique, on peut voir le montage des partitions de la façon suivante :
Ajout d’un disque
Tout d’abord, on commencera par utiliser la commande Df -h qui nous permet d’avoir une vue globale sur notre système de fichiers.
[[email protected] ~]# df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur /dev/mapper/cl-root 17G 2,1G 15G 12% / devtmpfs 901M 0 901M 0% /dev tmpfs 912M 0 912M 0% /dev/shm tmpfs 912M 8,7M 904M 1% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 1014M 186M 829M 19% /boot tmpfs 183M 0 183M 0% /run/user/0
Supposant qu’on veut ajouter un nouveau point de montage sous une arborescence /produits ayant un espace de 20 GO.
Commençons par utiliser la commande fdisk -l qui nous permettra de lister tous les disques disponibles pour notre système.
[[email protected] ~]# fdisk -l 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 : 0x000c72ed 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/mapper/cl-root : 18.2 Go, 18249416704 octets, 35643392 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 Disque /dev/mapper/cl-swap : 2147 Mo, 2147483648 octets, 4194304 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
Maintenant pour avoir plus d’espace sur notre machine Linux, On devra ajouter un disque soit physiquement, ou à travers l’outil de virtualisation (dans le cas d’une machine virtuelle).
[[email protected] ~]# fdisk -l 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 : 0x000c72ed 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 : 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 Disque /dev/mapper/cl-root : 18.2 Go, 18249416704 octets, 35643392 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 Disque /dev/mapper/cl-swap : 2147 Mo, 2147483648 octets, 4194304 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
On voit bien que le disque /dev/sdb vient d’être ajouté d’une taille de 19GO.
On utilisera la commande fdisk pour créer une table de partition à ce disque.
[[email protected] ~]# 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 0x5ca7f32a. 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) : p Numéro de partition (1-4, 1 par défaut) : 1 Premier secteur (2048-41943039, 2048 par défaut) : 2048 Dernier secteur, +secteur ou +taille{K,M,G} (2048-41943039, 41943039 par défaut) : Utilisation de la valeur 41943039 par défaut La partition 1 de type Linux et de taille 20 GiB est configurée 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.
On vient de créer une partition primaire en sélectionnant les options par défaut.
On utilisera ce disque pour créer un volume physique (PV) comme suit :
[roo[email protected] ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created.
Ensuite la commande pvs nous permettra de lister les volumes physiques disponibles :
[[email protected] ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 cl lvm2 a-- <19,00g 0 /dev/sdb1 lvm2 --- <20,00g <20,00g
On doit ensuite créer un groupe de volumes en utilisant le PV précédent comme suit :
[[email protected] ~]# vgcreate root_vg /dev/sdb1 Volume group "root_vg" successfully created
De la même manière, la commande vgs nous permettra de lister les groupes de volumes disponibles :
[[email protected] ~]# vgs VG #PV #LV #SN Attr VSize VFree cl 1 2 0 wz--n- <19,00g 0 root_vg 1 0 0 wz--n- <20,00g <20,00g
A partir du groupe de volumes créé, on peut créer plusieurs volumes logiques (LV) comme suit :
[[email protected] ~]# lvcreate -L 5G -n LV1 root_vg Logical volume "LV1" created.
Avec la commande lvs, on va lister les volumes logiques disponibles :
[[email protected] ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root cl -wi-ao---- <17,00g swap cl -wi-ao---- 2,00g LV1 root_vg -wi-a----- 5,00g
On a créé notre volume logique d’une taille de 5GO, mais on verra par la suite comment étendre sa taille à 19GO.
A partir de ce volume logique, on va créer un système de fichiers comme suit :
[[email protected] ~]# mkfs -t ext3 /dev/mapper/root_vg-LV1 mke2fs 1.42.9 (28-Dec-2013) Étiquette de système de fichiers= Type de système d'exploitation : Linux Taille de bloc=4096 (log=2) Taille de fragment=4096 (log=2) « Stride » = 0 blocs, « Stripe width » = 0 blocs 327680 i-noeuds, 1310720 blocs 65536 blocs (5.00%) réservés pour le super utilisateur Premier bloc de données=0 Nombre maximum de blocs du système de fichiers=1342177280 40 groupes de blocs 32768 blocs par groupe, 32768 fragments par groupe 8192 i-noeuds par groupe Superblocs de secours stockés sur les blocs : 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocation des tables de groupe : complété Écriture des tables d'i-noeuds : complété Création du journal (32768 blocs) : complété Écriture des superblocs et de l'information de comptabilité du système de fichiers : complété
Ainsi si nous voulions que ce système soit disponible à partir de l’arborescence /appli, On commencera par créer le répertoire /produits comme suit :
[[email protected] ~]# mkdir /appli
Puis monter le système de fichier sur ce répertoire :
[[email protected] ~]# mount /dev/mapper/root_vg-LV1 /appli/
En utilisant la commande df -h on peut voir le nouveau point de montage créé d’une taille de 5GO
[[email protected] ~]# df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur /dev/mapper/cl-root 17G 2,1G 15G 12% / devtmpfs 901M 0 901M 0% /dev tmpfs 912M 0 912M 0% /dev/shm tmpfs 912M 8,7M 904M 1% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 1014M 186M 829M 19% /boot tmpfs 183M 0 183M 0% /run/user/0 /dev/mapper/root_vg-LV1 4,8G 11M 4,6G 1% /appli
On voulait au début créer un point de montage de 19GO (commande lv précédente), mais on a utiliser que 5GO pour une bonne raison et celle de montrer comment étendre la taille d’un point de montage.
Extension d’un disque existant :
Pour étendre l’espace d’un point de montage, il faut d’abord vérifier si son groupe de volume associé détient de l’espace vide.
[[email protected] ~]# vgs VG #PV #LV #SN Attr VSize VFree cl 1 2 0 wz--n- <19,00g 0 root_vg 1 1 0 wz--n- <20,00g <15,00g
On remarque qu’on possède 15 GO de libre sur notre groupe de volume root_vg
1-Démonter la partition /appli
On commencera par démonter la partition /appli à l’aide de la commande umount
[[email protected] ~]# umount /appli/
On utilisera ensuite la commande lvextendpour étendre la taille du volume logique précédemment créé à 5GO.
[[email protected] ~]# lvextend -L 19G /dev/mapper/root_vg-LV1 Size of logical volume root_vg/LV1 changed from 15,00 GiB (3840 extents) to 19,00 GiB (4864 extents). Logical volume root_vg/LV1 successfully resized.
Le résultat de la commande lvs nous confirme bien l’extention.
[[email protected] ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root cl -wi-ao---- <17,00g swap cl -wi-ao---- 2,00g LV1 root_vg -wi-a----- 19,00g
Il ne reste que utiliser la commande e2fsck pour vérifié le système de fichier puis la commande resize2fs pour qu’il puisse utiliser l’espace supplémentaire alloué comme suit :
[[email protected] ~]# e2fsck -f /dev/mapper/root_vg-LV1 e2fsck 1.42.9 (28-Dec-2013) Passe 1 : vérification des i-noeuds, des blocs et des tailles Passe 2 : vérification de la structure des répertoires Passe 3 : vérification de la connectivité des répertoires Passe 4 : vérification des compteurs de référence Passe 5 : vérification de l'information du sommaire de groupe /dev/mapper/root_vg-LV1 : 11/327680 fichiers (0.0% non contigüs), 55935/1310720 blocs [[email protected] ~]# resize2fs /dev/mapper/root_vg-LV1 resize2fs 1.42.9 (28-Dec-2013) En train de redimensionner le système de fichiers sur /dev/mapper/root_vg-LV1 à 4980736 (4k) blocs. Le système de fichiers /dev/mapper/root_vg-LV1 a maintenant une taille de 4980736 blocs.
Il ne reste plus que remonté la partition sur l’arborescence /appli
[[email protected] ~]# mount /dev/mapper/root_vg-LV1 /appli/
Maintenant, en utilisant la commande df -h, on peut bien voir que la partition /appli est d’une taille de 19GO
[[email protected] ~]# df -h Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur /dev/mapper/cl-root 17G 2,1G 15G 12% / devtmpfs 901M 0 901M 0% /dev tmpfs 912M 0 912M 0% /dev/shm tmpfs 912M 8,7M 904M 1% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 1014M 186M 829M 19% /boot tmpfs 183M 0 183M 0% /run/user/0 /dev/mapper/root_vg-LV1 19G 14M 18G 1% /appli
Enfin, si vous chercher à maîtriser l’environnement linux (administration et programmation Shell), je vous recommande ces deux livres
Pingback: Gestion des serveurs Linux avec Cockpit • SitedeTout