Table des matières
Redimensionnement des partitions avec LVM
L'usage de LVM est extremement plus souple pour modifier la taille des partitions qu'un partitionnement standard. Ce dernier ne permet de redimensionner facilement que la dernier partition dans la table de partition.
Schématiquement le redimensionnement des espaces libres des partitions classiques est horizontale alors que avec LVM il est vertical. On peut donc ajouter des disques supplémentaires ou agrandir un disque virtuel et agrandir n'importe quelle partition LVM.
Il est impératif d'avoir un utilitaire de disque quand on veut modifier les partitions. J'utilise fdisk.
Pour ce memo je vais augementer le disque virtuel vmdk de ma VM (virtualbox) en passant de 13Go à 20Go depuis le “Gestionnaire de médias virtuels” et étendre les 7Go à la partition /home.
On peut vérifier avec les commandes standard la taille du nouvau disque (20Go)
# fdisk /dev/sda Bienvenue dans fdisk (util-linux 2.38.1). Les modifications resteront en mémoire jusqu'à écriture. Soyez prudent avant d'utiliser la commande d'écriture. Le disque est actuellement utilisé — le repartitionner est probablement une mauvaise idée. Il est recommandé de démonter tous les systèmes de fichiers et désactiver (avec swapoff) toutes les partitions d'échange de ce disque. Commande (m pour l'aide) : p Disque /dev/sda : 20 GiB, 21474836480 octets, 41943040 secteurs Modèle de disque : VBOX HARDDISK 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 : 0x72b38d3e Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 999423 997376 487M 83 Linux /dev/sda2 1001470 27269119 26267650 12,5G 5 Étendue /dev/sda5 1001472 27269119 26267648 12,5G 8e LVM Linux
ou
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 20G 0 disk ├─sda1 8:1 0 487M 0 part /boot ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 12,5G 0 part ├─debian--vg-root 254:0 0 2,2G 0 lvm / ├─debian--vg-var 254:1 0 1G 0 lvm /var ├─debian--vg-swap_1 254:2 0 976M 0 lvm [SWAP] ├─debian--vg-tmp 254:3 0 260M 0 lvm /tmp └─debian--vg-home 254:4 0 8,1G 0 lvm /home sr0 11:0 1 1024M 0 rom
On voit bien sda avec 20Go, avec une partition /boot de 500Mo et un sda5 de 12,5Go en disque LVM dans lequel il y a toutes les partitions systèmes.
La commande LVM, “pvs” scanne l'espace physique disponible pour le LVM.
# pvs PV VG Fmt Attr PSize PFree /dev/sda5 debian-vg lvm2 a-- 12,52g 0
Sur les 12,52Go affectés au LVM il ne reste plus d'espace (PFree) pour agrandir les parttions. Il faut allors affecter les 7Go nouvellement ajouté au vmdk à la partition étendue (/dev/sda2) puis au LVM (/dev/sda5).
Extension de la partition étendue
LVM est contenu dans la partition étendue classique /dev/sda2. Il faut d'abord supprimer le LVM /dev/sda5 puis la partition étendue.
Ensuite recréer une partition étendue avec les 7Go supplémentaire. On crée une nouvelle partition LVM (type 8e) /dev/sda5 avec a totalité de la partition étendue
# fdisk /dev/sda Bienvenue dans fdisk (util-linux 2.38.1). Les modifications resteront en mémoire jusqu'à écriture. Soyez prudent avant d'utiliser la commande d'écriture. Le disque est actuellement utilisé — le repartitionner est probablement une mauvaise idée. Il est recommandé de démonter tous les systèmes de fichiers et désactiver (avec swapoff) toutes les partitions d'échange de ce disque. Commande (m pour l'aide) : p Disque /dev/sda : 20 GiB, 21474836480 octets, 41943040 secteurs Modèle de disque : VBOX HARDDISK 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 : 0x72b38d3e Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 999423 997376 487M 83 Linux /dev/sda2 1001470 27269119 26267650 12,5G 5 Étendue /dev/sda5 1001472 27269119 26267648 12,5G 8e LVM Linux Commande (m pour l'aide) : d Numéro de partition (1,2,5, 5 par défaut) : La partition 5 a été supprimée. Commande (m pour l'aide) : d Numéro de partition (1,2, 2 par défaut) : La partition 2 a été supprimée. Commande (m pour l'aide) : p Disque /dev/sda : 20 GiB, 21474836480 octets, 41943040 secteurs Modèle de disque : VBOX HARDDISK 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 : 0x72b38d3e Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 999423 997376 487M 83 Linux Commande (m pour l'aide) : n Type de partition p primaire (1 primaire, 0 étendue, 3 libre) e étendue (conteneur pour partitions logiques) Sélectionnez (p par défaut) : e Numéro de partition (2-4, 2 par défaut) : Premier secteur (999424-41943039, 999424 par défaut) : Dernier secteur, +/-secteurs ou +/-taille{K,M,G,T,P} (999424-41943039, 41943039 par défaut) : Une nouvelle partition 2 de type « Extended » et de taille 19,5 GiB a été créée. Commande (m pour l'aide) : n Tout l’espace des partitions primaires est utilisé. Ajout de la partition logique 5 Premier secteur (1001472-41943039, 1001472 par défaut) : Dernier secteur, +/-secteurs ou +/-taille{K,M,G,T,P} (1001472-41943039, 41943039 par défaut) : Une nouvelle partition 5 de type « Linux » et de taille 19,5 GiB a été créée. La partition #5 contient une signature LVM2_member. Voulez-vous supprimer la signature ? [O]ui/[N]on : N Commande (m pour l'aide) : p Disque /dev/sda : 20 GiB, 21474836480 octets, 41943040 secteurs Modèle de disque : VBOX HARDDISK 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 : 0x72b38d3e Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 999423 997376 487M 83 Linux /dev/sda2 999424 41943039 40943616 19,5G 5 Étendue /dev/sda5 1001472 41943039 40941568 19,5G 83 Linux Commande (m pour l'aide) : t Numéro de partition (1,2,5, 5 par défaut) : Code Hexa ou synonyme (taper L pour afficher tous les codes) :8e Type de partition « Linux » modifié en « Linux LVM ». Commande (m pour l'aide) : p Disque /dev/sda : 20 GiB, 21474836480 octets, 41943040 secteurs Modèle de disque : VBOX HARDDISK 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 : 0x72b38d3e Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 999423 997376 487M 83 Linux /dev/sda2 999424 41943039 40943616 19,5G 5 Étendue /dev/sda5 1001472 41943039 40941568 19,5G 8e LVM Linux Commande (m pour l'aide) : w
On redémarre la VM.
Mais on constate que le LVM n'a pas changé!
# pvs PV VG Fmt Attr PSize PFree /dev/sda5 debian-vg lvm2 a-- 12,52g 0
C'est normal, nous avons ajouté de l'espace physique mais on n'a pas étendu le LVM à ce nouvel espace. Pour cela on utilise la commande “pvresize”
# pvresize /dev/sda5 Physical volume "/dev/sda5" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not resized
et maintenant
# pvs PV VG Fmt Attr PSize PFree /dev/sda5 debian-vg lvm2 a-- <19,52g <7,00g
Ce coup ci on a bien étendu le LVM et on dispose des 7Go libre.
Extension de la partition LVM
On va pouvoir affecter l'espace libre à /dev/debian-vg/home qui est monté sur le /home du system.
Pour connaitre les tailles avant l'extension
# lvscan ACTIVE '/dev/debian-vg/root' [<2,16 GiB] inherit ACTIVE '/dev/debian-vg/var' [<1,03 GiB] inherit ACTIVE '/dev/debian-vg/swap_1' [976,00 MiB] inherit ACTIVE '/dev/debian-vg/tmp' [260,00 MiB] inherit ACTIVE '/dev/debian-vg/home' [8,13 GiB] inherit
On veut agrandir /dev/debian-vg/home
# lvextend -r -l +100%FREE /dev/debian-vg/home Size of logical volume debian-vg/home changed from 8,13 GiB (2082 extents) to <15,13 GiB (3873 extents). Logical volume debian-vg/home successfully resized. resize2fs 1.47.0 (5-Feb-2023) Filesystem at /dev/mapper/debian--vg-home is mounted on /home; on-line resizing required old_desc_blocks = 2, new_desc_blocks = 2 The filesystem on /dev/mapper/debian--vg-home is now 3965952 (4k) blocks long.
Taille après l'extension
# lvscan ACTIVE '/dev/debian-vg/root' [<2,16 GiB] inherit ACTIVE '/dev/debian-vg/var' [<1,03 GiB] inherit ACTIVE '/dev/debian-vg/swap_1' [976,00 MiB] inherit ACTIVE '/dev/debian-vg/tmp' [260,00 MiB] inherit ACTIVE '/dev/debian-vg/home' [<15,13 GiB] inherit
ou
# lsblk -l NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 20G 0 disk sda1 8:1 0 487M 0 part /boot sda2 8:2 0 1K 0 part sda5 8:5 0 19,5G 0 part sr0 11:0 1 1024M 0 rom debian--vg-root 254:0 0 2,2G 0 lvm / debian--vg-var 254:1 0 1G 0 lvm /var debian--vg-swap_1 254:2 0 976M 0 lvm [SWAP] debian--vg-tmp 254:3 0 260M 0 lvm /tmp debian--vg-home 254:4 0 15,1G 0 lvm /home
On revérifie qu'on a utilisé tout l'espace.
# pvs PV VG Fmt Attr PSize PFree /dev/sda5 debian-vg lvm2 a-- <19,52g 0
/dev/debian-vg/home a bien été agrandi ! Voilà.
Plusieurs disques (encore plus simple)
Ici nous avons pris l'espace disponible sur le meme disque. Le LVM est organisé en volume groupe (VG). Un disque fait partie d'un VG. Dans un VG il peut y avoir plusieurs disques visibles avec la commande “pvs”. Les espaces des disques physiques sont mutualisés pour le meme VG . On peut donc utiliser les espaces libre du VG visible avec la commande “vgs” pour étendre les partitions.
example: https://perhonen.fr/blog/2012/10/ajouter-un-disque-a-votre-espace-de-stockage-lvm-598
pvcreate /dev/sdb pvs vgextend debian-vg /dev/sdb lvextend -r --size +200G /dev/debian-vg/var