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.

https://docs.redhat.com/fr/documentation/red_hat_enterprise_linux/6/html/logical_volume_manager_administration/custom_report#custom_report

# 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

(plus de détail ici)

# 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
Dernière modification : le 2025/02/27