Skip to content

Instantly share code, notes, and snippets.

@dginhoux
Created July 23, 2024 16:45
Show Gist options
  • Save dginhoux/1307683b106ebe7fceb5d6235e9843c4 to your computer and use it in GitHub Desktop.
Save dginhoux/1307683b106ebe7fceb5d6235e9843c4 to your computer and use it in GitHub Desktop.
linux_extend_partition_as_lvm_pv

h2. Agrandissement d'un disque

ici, dans cet exemple augmentation à chaud de la taille du premier disque (en général sda) (à partir du vsphere): passage de 20 Go à 30 Go.

Afin que le noyau identifie ce changement de taille, le disque sda doit être re-scanné :

echo 1>/sys/class/block/sda/device/rescan

A ce stade on a : disk sda à 30 Go mais la partition sda2 est toujours à 19.5 Go ( pour info la partition sda1 est type part et sert au /boot)

@vm-m2-mdrive-01:~$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   30G  0 disk 
├─sda1            8:1    0  487M  0 part /boot
└─sda2            8:2    0 19,5G  0 part 
  ├─vg0-lv_root 254:0    0    2G  0 lvm  /
  ├─vg0-lv_home 254:1    0  1,9G  0 lvm  /home
  ├─vg0-lv_usr  254:2    0  3,8G  0 lvm  /usr
  ├─vg0-lv_var  254:3    0    9G  0 lvm  /var
  ├─vg0-lv_tmp  254:4    0  976M  0 lvm  /tmp
  └─vg0-lv_swap 254:5    0  1,9G  0 lvm  [SWAP]
sr0              11:0    1 1024M  0 rom  

Donc, il faut supprimer et recréer la partition sda2 avec le même secteur de départ (afin de ne pas perdre les données) et en type lvm (8e) :

@vm-m2-mdrive-01:~$ sudo fdisk /dev/sda
Bienvenue dans fdisk (util-linux 2.29.2).
Les modifications resteront en mémoire jusqu'à écriture.
Soyez prudent avant d'utiliser la commande d'écriture.

Commande (m pour l'aide) : p
Disque /dev/sda : 30 GiB, 32212254720 octets, 62914560 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 : 0xb6ca33e9

Périphérique Amorçage  Début      Fin Secteurs Taille Id Type
/dev/sda1    *          2048   999423   997376   487M 83 Linux
/dev/sda2             999424 41940991 40941568  19,5G 8e LVM Linux

Commande (m pour l'aide) : d
Numéro de partition (1,2, 2 par défaut) : 2

La partition 2 a été supprimée.

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) : p
Numéro de partition (2-4, 2 par défaut) : 
Premier secteur (999424-62914559, 999424 par défaut) : 
Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (999424-62914559, 62914559 par défaut) : 

Une nouvelle partition 2 de type « Linux » et de taille 29,5 GiB a été créée.
La partition #2 contient une signature LVM2_member.

Voulez-vous supprimer la signature ? [O]ui/[N]on : N

Commande (m pour l'aide) : p  

Disque /dev/sda : 30 GiB, 32212254720 octets, 62914560 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 : 0xb6ca33e9

Périphérique Amorçage  Début      Fin Secteurs Taille Id Type
/dev/sda1    *          2048   999423   997376   487M 83 Linux
/dev/sda2             999424 62914559 61915136  29,5G 83 Linux


Commande (m pour l'aide) : t
Numéro de partition (1,2, 2 par défaut) : 2
Type de partition (taper L pour afficher tous les types) : L

 0  Vide            24  NEC DOS         81  Minix / Linux a bf  Solaris        
 1  FAT12           27  TFS WinRE masqu 82  partition d'éch c1  DRDOS/sec (FAT-
 2  root XENIX      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  usr XENIX       3c  récupération Pa 84  OS/2 hidden or  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux étendue   c7  Syrinx         
 5  Étendue         41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  2e partie QNX4. 8e  LVM Linux       df  BootIt         
 9  Amorçable AIX   4f  3e partie QNX4. 93  Amoeba          e1  DOS access     
 a  Gestionnaire d' 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi ea  Alignement Rufu
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs        
 f  Étendue W95 (LB 54  OnTrackDM6      a6  OpenBSD         ee  GPT            
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  FAT12 masquée   56  Golden Bow      a8  UFS Darwin      f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f1  SpeedStor      
14  FAT16 masquée < 61  SpeedStor       ab  Amorçage Darwin f4  SpeedStor      
16  FAT16 masquée   63  GNU HURD ou Sys af  HFS / HFS+      f2  DOS secondaire 
17  HPFS/NTFS masqu 64  Novell Netware  b7  BSDI fs         fb  VMware VMFS    
18  AST SmartSleep  65  Novell Netware  b8  partition d'éch fc  VMware VMKCORE 
1b  W95 FAT32 masqu 70  DiskSecure Mult bb  Boot Wizard mas fd  RAID Linux auto
1c  W95 FAT32 masqu 75  PC/IX           bc  Acronis FAT32 L fe  LANstep        
1e  W95 FAT16 masqu 80  Minix ancienne  be  Amorçage Solari ff  BBT            
Type de partition (taper L pour afficher tous les types) : 8e

Type de partition « Linux » modifié en « Linux LVM ».

Commande (m pour l'aide) : p
Disque /dev/sda : 30 GiB, 32212254720 octets, 62914560 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 : 0xb6ca33e9

Périphérique Amorçage  Début      Fin Secteurs Taille Id Type
/dev/sda1    *          2048   999423   997376   487M 83 Linux
/dev/sda2             999424 62914559 61915136  29,5G 8e LVM Linux

Commande (m pour l'aide) : w
La table de partitions a été altérée.
Appel d'ioctl() pour relire la table de partitions.
Échec de relecture de la table de partitions.: Périphérique ou ressource occupé

Le noyau continue à utiliser l'ancienne table. La nouvelle sera utilisée lors du prochain démarrage ou après avoir exécuté partprobe(8) ou kpartx(8).

Afin de forcer le noyau à relire la table des partitions (ce qui nous évite un reboot de la machine) si partprobe pas installé,il est dans le paquet parted :

dginhoux@srv_test_01:~$ sudo partprobe 

Resultat ==> on a la partition sda2 a 29.5 Go :

dginhoux@srv_test_01:~$ lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   30G  0 disk 
├─sda1            8:1    0  487M  0 part /boot
└─sda2            8:2    0 29,5G  0 part 
  ├─vg0-lv_root 254:0    0    2G  0 lvm  /
  ├─vg0-lv_home 254:1    0  1,9G  0 lvm  /home
  ├─vg0-lv_usr  254:2    0  3,8G  0 lvm  /usr
  ├─vg0-lv_var  254:3    0    9G  0 lvm  /var
  ├─vg0-lv_tmp  254:4    0  976M  0 lvm  /tmp
  └─vg0-lv_swap 254:5    0  1,9G  0 lvm  [SWAP]
sr0              11:0    1 1024M  0 rom  

Comme pour le disque, il faut "rescanner" aussi le PV (Physical Volume) pour que le LVM comprenne le changement :

dginhoux@srv_test_01:~$ sudo pvresize /dev/sda2

dginhoux@srv_test_01:~$ sudo pvs
  PV         VG  Fmt  Attr PSize  PFree 
  /dev/sda2  vg0 lvm2 a--  29,52g 10,00g

Et enfin, il faut étendre le lv_var de 5Go :

dginhoux@srv_test_01:~$ sudo lvextend /dev/mapper/vg0-lv_var -L +5G
  Size of logical volume vg0/lv_var changed from 8,98 GiB (2300 extents) to 13,98 GiB (3580 extents).
  Logical volume vg0/lv_var successfully resized.

dginhoux@srv_test_01:~$ sudo resize2fs /dev/mapper/vg0-lv_var
resize2fs 1.43.4 (31-Jan-2017)
Le système de fichiers de /dev/mapper/vg0-lv_var est monté sur /var ; le changement de taille doit être effectué en ligne
old_desc_blocks = 2, new_desc_blocks = 2
Le système de fichiers sur /dev/mapper/vg0-lv_var a maintenant une taille de 3665920 blocs (4k).

Resultat final :

dginhoux@srv_test_01:~$ df -h
/dev/mapper/vg0-lv_var            14G    5,8G  7,5G  44% /var
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment