LVM

De TwisterWiki
Aller à : navigation, rechercher

LVM

LVM c'est quoi ?

  • le LVM est une gestion des disques par des volumes logiques et modifiable à chaud

il y a trois termes à connaître

PV : Les disques durs, partitions de disques durs, volumes RAID ou unités logiques provenant d'un SAN forment des « volumes physiques » (physical volumes ou PV). 
VG : On concatène les volumes physiques dans des « groupes de volumes » (volume groups ou VG). Ces VG sont équivalents à des pseudo-disques-durs.
LV : Des « volumes logiques » (logical volumes ou LV) sont alors découpés dans les groupes de volumes, puis formatés et montés dans des systèmes de fichiers ou utilisés en tant que raw devices.
Les LV sont équivalents à des pseudo-partitions. 
  • schema explicatif

LVM exemple1.png LVM exemple2.png

Les commandes utiles

  • pvscan : affiche les informations sur les partitions LVM
root@debian:~# pvscan
 PV /dev/sda5   VG vg_home         lvm2 [<2,96 GiB / 0    free]
 PV /dev/sda2   VG vg_root         lvm2 [11,17 GiB / 0    free]
  • vgscan : scan les Volume Groups
root@debian:~# vgscan
 Reading all physical volumes.  This may take a while...
 Found volume group "VG_home" using metadata type lvm2
 Found volume group "VG_root" using metadata type lvm2
  • lvscan : scan les Logical Volumes contenus dans les VG
root@debian:~# lvscan
 ACTIVE            '/dev/vg_home/home' [2,96 GiB] inherit
 ACTIVE            '/dev/vg_root/root' [11,17 GiB] inherit
  • pvs : affiche des informations sur les disques physiques
root@debian:~# pvs
 PV         VG      Fmt  Attr PSize  PFree
 /dev/sda2  vg_root lvm2 a--  11,17g    0 
 /dev/sda5  vg_home lvm2 a--  <2,96g    0 
  • vgs : affiche des informations sur les volumes groups
root@debian:~# vgs
 VG      #PV #LV #SN Attr   VSize  VFree
 lv_home   2   1   0 wz--n- 2,95g    0 
 lv_root   1   1   0 wz--n- 11,17g    0 
  • lvs : affiche les informations sur les logical volumes
root@debian:~# lvs
 LV   VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
 home VG_home -wi-ao---- <2,96g                                                    
 root VG_root -wi-ao---- 11,17g
  • vgdisplay: affiche des informations sur les VG
root@debian:~# vgdisplay
 --- Volume group ---
 VG Name               VG_home
 System ID             
 Format                lvm2
 Metadata Areas        2
 Metadata Sequence No  5
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                1
 Open LV               1
 Max PV                0
 Cur PV                2
 Act PV                2
 VG Size               10,95 GiB
 PE Size               4,00 MiB
 Total PE              2804
 Alloc PE / Size       2804 / 10,95 GiB
 Free  PE / Size       0 / 0   
 VG UUID               1CWo34-pSCo-xm7c-3oDe-Bm1g-ssZv-lc6l3l
  
 --- Volume group ---
 VG Name               VG_root
 System ID             
 Format                lvm2
 Metadata Areas        1
 Metadata Sequence No  2
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                1
 Open LV               1
 Max PV                0
 Cur PV                1
 Act PV                1
 VG Size               11,17 GiB
 PE Size               4,00 MiB
 Total PE              2860
 Alloc PE / Size       2860 / 11,17 GiB
 Free  PE / Size       0 / 0   
 VG UUID               0mBEyB-ulvn-uAlV-PLgX-Ukj0-Nyou-P75k1j
  • lvdisplay : affiche des informations sur les LV
root@debian:~# lvdisplay 
 --- Logical volume ---
 LV Path                /dev/vg_home/home
 LV Name                home
 VG Name                vg_home
 LV UUID                ksr3xP-1TMw-HmYl-i9bn-sbaV-D4xj-JEgQut
 LV Write Access        read/write
 LV Creation host, time debian, 2020-06-25 11:56:28 +0200
 LV Status              available
 # open                 1
 LV Size                10,95 GiB
 Current LE             2804
 Segments               2
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           254:1
  
 --- Logical volume ---
 LV Path                /dev/vg_root/root
 LV Name                root
 VG Name                vg_root
 LV UUID                ebhyTn-QKjr-RZoc-AJob-o7FM-CidW-UMNtsw
 LV Write Access        read/write
 LV Creation host, time debian, 2020-06-25 11:56:42 +0200
 LV Status              available
 # open                 1
 LV Size                11,17 GiB
 Current LE             2860
 Segments               1
 Allocation             inherit
 Read ahead sectors     auto
 - currently set to     256
 Block device           254:0
  • pvdisplay :
root@debian:~# pvdisplay 
 --- Physical volume ---
 PV Name               /dev/sda5
 VG Name               vg_home
 PV Size               <2,96 GiB / not usable 3,00 MiB
 Allocatable           yes (but full)
 PE Size               4,00 MiB
 Total PE              757
 Free PE               0
 Allocated PE          757
 PV UUID               ntnTRL-7V00-Cwxn-gE6U-Mprp-mb8l-S1rwI2
   
 --- Physical volume ---
 PV Name               /dev/sda2
 VG Name               vg_root
 PV Size               <11,18 GiB / not usable 4,00 MiB
 Allocatable           yes (but full)
 PE Size               4,00 MiB
 Total PE              2860
 Free PE               0
 Allocated PE          2860
 PV UUID               IAHJk6-HIoe-oR7p-Wy3U-uRmt-hUiU-5giRQd
  • vgchange -ay <monvolumeLVM> : permet d'activer la partition LVM voulue afin de pouvoir la monter par exemple

Ajouter de l'espace

  • comment ajouter de l'espace à un volume LVM

il faut en premier lieu augmenter la taille du disque ou ajouter un nouveau disque

  • exemple on ajoute une partition /dev/sda5
pvcreate /dev/sda5
  • on agrandit le VG
vgextend monVolumeGroup /dev/sda5 et on créer un LVM dessus
  • ajouter l'espace au volumeLogique
 lvresize --size +500G /dev/mapper/monVolumeGroup-monLogicalVolume
  • extension du VolumeLogique sur la partition ajoutée
lvextend /dev/mapper/monVolumeGroup-monLogicalVolume /dev/sda5
  • agrandissement du file system
resize2fs /dev/mapper/monVolumeGroup-monLogicalVolume

Exemple d'ajout d'espace sans reboot

  • nous avons un disque de 16Go avec 2 VG (VG_root et VG_home) et une swap
    • /dev/sda1 : swap
    • /dev/mapper/VG_root-root : 11,2 GiB (/dev/sda2)
    • /dev/mapper/VG_home-home : 3 GiB (/dev/sda5)
root@debian:~# fdisk -l
Disque /dev/sda : 16 GiB, 17179869184 octets, 33554432 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 : 0xd741f2c0

Périphérique Amorçage    Début      Fin Secteurs Taille Id Type
/dev/sda1    *            2048  3905535  3903488   1,9G 82 partition d'échange Linux / Solaris
/dev/sda2              3905536 27342847 23437312  11,2G 8e LVM Linux
/dev/sda3             27344894 33552383  6207490     3G  5 Étendue
/dev/sda5             27344896 33552383  6207488     3G 8e LVM Linux

Disque /dev/mapper/VG_root-root : 11,2 GiB, 11995709440 octets, 23429120 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/VG_home-home : 3 GiB, 3175088128 octets, 6201344 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

  • Nous avons ajouter un second disque de 8Go pour étendre /home (sdb)
root@debian:~# fdisk -l
Disque /dev/sda : 16 GiB, 17179869184 octets, 33554432 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 : 0xd741f2c0

Périphérique Amorçage    Début      Fin Secteurs Taille Id Type
/dev/sda1    *            2048  3905535  3903488   1,9G 82 partition d'échange Linux / Solaris
/dev/sda2              3905536 27342847 23437312  11,2G 8e LVM Linux
/dev/sda3             27344894 33552383  6207490     3G  5 Étendue
/dev/sda5             27344896 33552383  6207488     3G 8e LVM Linux

Disque /dev/sdb : 8 GiB, 8589934592 octets, 16777216 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

Disque /dev/mapper/VG_root-root : 11,2 GiB, 11995709440 octets, 23429120 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/VG_home-home : 3 GiB, 3175088128 octets, 6201344 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

Création de la partition sdb1

  • on créer une partition primaire classique avec l'outils fdisk ou cfdisk
  • on crée un volume physique lvm avec la commande pvcreate
root@debian:~# pvcreate /dev/sdb1
 Physical volume "/dev/sdb1" successfully created.

root@debian:~# pvs
 PV         VG      Fmt  Attr PSize  PFree 
 /dev/sda2  VG_root lvm2 a--  11,17g     0 
 /dev/sda5  VG_home lvm2 a--  <2,96g     0 
 /dev/sdb1          lvm2 ---  <8,00g <8,00g
  • on ajoute la partition /dev/sdb1 au volume group lv_home
root@debian:~# vgextend VG_home /dev/sdb1
 Volume group "VG_home" successfully extended
  • on agrandit la taille de /home
root@debian:~# lvresize --size +8G /dev/mapper/VG_home-home
 Insufficient free space: 2048 extents needed, but only 2047 available

root@debian:~# lvresize  --extents +2047 /dev/mapper/VG_home-home
 Size of logical volume VG_home/home changed from <2,96 GiB (757 extents) to 10,95 GiB (2804 extents).
 Logical volume VG_home/home successfully resized.
  • on voit que le volume groupe à été augmenté de 8Go
root@debian:~# lvs
 LV   VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
 home VG_home -wi-ao---- 10,95g                                                    
 root VG_root -wi-ao---- 11,17g
  • dernière étape on augmente la taille du file_system sur le LV
root@debian:~# resize2fs /dev/mapper/VG_home-home
resize2fs 1.44.5 (15-Dec-2018)
Filesystem at /dev/mapper/VG_home-home is mounted on /home; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/VG_home-home is now 2871296 (4k) blocks long.

root@debian:~# df -h
Sys. de fichiers         Taille Utilisé Dispo Uti% Monté sur
udev                       983M       0  983M   0% /dev
tmpfs                      200M    3,0M  197M   2% /run
/dev/mapper/VG_root-root    11G    1,5G  9,0G  14% /
tmpfs                      998M       0  998M   0% /dev/shm
tmpfs                      5,0M       0  5,0M   0% /run/lock
tmpfs                      998M       0  998M   0% /sys/fs/cgroup
/dev/mapper/VG_home-home    11G     15M   11G   1% /home
tmpfs                      200M       0  200M   0% /run/user/0