Terminologie : un système LVM se compose d'un groupe de volumes (VG), contenant des volumes logiques (LV, l'équivalent des partitions), et stocké sur un ou plusieurs volumes physiques (PV, l'équivalent des disques durs).

Les données sont stockées dans des blocs intitulés extents.

Sur Debian Squeeze, la description du groupe de volumes est stockée dans le fichier /etc/lvm/backup/groupe_volume.

Explorer un système LVM

Groupe de volumes

# vgdisplay groupe_volumes

  --- Volume group ---
  VG Name               debian
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  15
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                5
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               308,26 GiB
  PE Size               4,00 MiB
  Total PE              78914
  Alloc PE / Size       20666 / 80,73 GiB
  Free  PE / Size       58248 / 227,53 GiB
  VG UUID               2toGJA-Gsq8-HFaG-R6hg-lvff-E8p3-5P08SC

En plus détaillé :

# vgdisplay -v groupe_volumes

   Using volume group(s) on command line
    Finding volume group "debian"
  --- Volume group ---
  VG Name               debian
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  15
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                5
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               308,26 GiB
  PE Size               4,00 MiB
  Total PE              78914
  Alloc PE / Size       20666 / 80,73 GiB
  Free  PE / Size       58248 / 227,53 GiB
  VG UUID               2toGJA-Gsq8-HFaG-R6hg-lvff-E8p3-5P08SC
   
  --- Logical volume ---
  LV Name                /dev/debian/boot
  VG Name                debian
  LV UUID                mzfoD1-YZC0-y1qT-GExg-Liui-9FBm-E3jWcL
  LV Write Access        read/write
  LV Status              NOT available
  LV Size                952,00 MiB
  Current LE             238
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
 (...)

  --- Physical volumes ---
  PV Name               /dev/sda1     
  PV UUID               aDO2Fk-0z2m-zgLf-DBWn-YW10-fWi3-CFhCMO
  PV Status             allocatable
  Total PE / Free PE    59841 / 39175
   
  PV Name               /dev/sda2     
  PV UUID               N73ER9-2SH3-vfot-M0MB-WEvd-0P4o-wcDtyP
  PV Status             allocatable
  Total PE / Free PE    19073 / 19073

Vérifier les métadonnées du groupe de volumes :

# vgck groupe_volumes

Volumes logiques

# lvdisplay --all

  --- Logical volume ---
  LV Name                /dev/debian/boot
  VG Name                debian
  LV UUID                mzfoD1-YZC0-y1qT-GExg-Liui-9FBm-E3jWcL
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                952,00 MiB
  Current LE             238
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0
   
  --- Logical volume ---
  LV Name                /dev/debian/root
  VG Name                debian
  LV UUID                uLNWtA-gm3e-rMgj-L7ez-6F4J-lwiu-rMCACy
  LV Write Access        read/write
  LV Status              suspended
  # open                 0
  LV Size                20,00 GiB
  Current LE             5120
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

Voir la ligne LV Status, qui précise l'état du volume logique (available, suspended).

Autre commande, utilisable pour générer un rapport :

# lvs --verbose groupe_volumes

    Using logical volume(s) on command line
  LV   VG     #Seg Attr   LSize   Maj Min KMaj KMin Origin Snap%  Move Copy%  Log Convert LV UUID                               
  boot debian    1 -wi-a- 952,00m  -1  -1 252  0                                          mzfoD1-YZC0-y1qT-GExg-Liui-9FBm-E3jWcL
  data debian    1 -wi-a-  27,94g  -1  -1 252  4                                          FGcWUR-Ct2F-qL4Z-POOb-we0R-AHZk-KXd4HC
  home debian    2 -wi-a-  30,00g  -1  -1 252  3                                          pyB8C8-labJ-fsGr-pbRU-Sou0-ENHV-qAgRXr
  root debian    2 -wi-s-  20,00g  -1  -1 252  1                                          uLNWtA-gm3e-rMgj-L7ez-6F4J-lwiu-rMCACy
  var  debian    1 -wi-a-   1,86g  -1  -1 252  2                                          ShVUdD-Js8u-fkrt-Iuno-0OBc-50C2-OP5kbv

Volumes physiques

Les volumes physiques sont les supports de stockage du système LVM.

Pour balayer tous les périphériques à la recherche de volumes physiques LVM :

# lvmdiskscan

  /dev/ram0        [      64,00 MiB] 
  /dev/loop0       [     660,07 MiB] 
  /dev/debian/boot [     952,00 MiB] 
  /dev/ram1        [      64,00 MiB] 
  /dev/sda1        [      74,50 GiB] LVM physical volume
  /dev/ram2        [      64,00 MiB] 
  /dev/sda2        [      74,50 GiB] LVM physical volume
  /dev/debian/var  [       1,86 GiB] 
  /dev/ram3        [      64,00 MiB] 
  /dev/sda3        [      27,94 GiB] 
  /dev/debian/home [      30,00 GiB] 
  /dev/ram4        [      64,00 MiB] 
  /dev/sda4        [       9,32 GiB] 
  /dev/debian/data [      27,94 GiB] 
(...)
  /dev/sde1        [       1,46 GiB] 
  /dev/sde2        [     454,97 MiB] 
  4 disks
  27 partitions
  0 LVM physical volume whole disks
  2 LVM physical volumes

Pour dresser la liste des volumes physiques :

# pvscan

  PV /dev/sda1   VG debian   lvm2 [233,75 GiB / 163,71 GiB free]
  PV /dev/sda2   VG debian   lvm2 [74,50 GiB / 74,50 GiB free]
  Total: 2 [308,26 GiB] / in use: 2 [308,26 GiB] / in no VG: 0 [0   ]

Activer un groupe de volumes

1. Activer le ou les groupes de volumes du système :

# vgchange -a y

2. Dresser la liste des volumes logiques activés :

# lvscan

  ACTIVE            '/dev/debian/boot' [952,00 MiB] inherit
  ACTIVE            '/dev/debian/root' [20,00 GiB] inherit
  ACTIVE            '/dev/debian/var' [1,86 GiB] inherit
  ACTIVE            '/dev/debian/home' [30,00 GiB] inherit
  ACTIVE            '/dev/debian/data' [27,94 GiB] inherit

Activer sélectivement un volume logique

# lvchange -a y /dev/mapper/volume_logique

En cas d'erreur, on peut ajouter un à trois --verbose pour afficher des informations complémentaires.

Exporter la description d'un groupe de volumes

# vgcfgbackup -v -f /media/lin/data/backup-lvm-2

    Finding all volume groups
    Finding volume group "debian"
    Creating volume group backup "/media/lin/data/backup-lvm-2" (seqno 15).
  Volume group "debian" successfully backed up.

Le fichier généré est au même format que /etc/lvm/backup/nom_volume.

Réimporter la description d'un groupe de volumes

# vgcfgrestore --test --verbose --file /media/lin/data/backup-lvm-fix debian

  Test mode: Metadata will NOT be updated.
  Restored volume group debian
    Test mode: Wiping internal cache
    Wiping internal VG cache

# vgcfgrestore --verbose --file /media/lin/data/backup-lvm-fix debian

  Restored volume group debian

Argument --test pour tester l'importation, le retirer pour appliquer les modifications.

Rassembler des informations pour diagnostiquer un problème

# lvmdump -am -d /media/lin/data/lvmdump

Creating dump directory: /media/lin/data/lvmdump
 
Gathering LVM volume info...
  vgscan...
  pvscan...
  lvs...
  pvs...
  vgs...
Gathering LVM & device-mapper version info...
Gathering dmsetup info...
Gathering process info...
Gathering console messages...
Gathering /etc/lvm info...
Gathering /dev listing...
Gathering /sys/block listing...
Gathering LVM metadata from Physical Volumes...
  /dev/sda1
  /dev/sda2

Déplacer les données d'un volume physique vers un autre

Cette commande déplace les blocs de données (extents) d'un volume physique vers un ou plusieurs autres, afin de libérer le volume source. Vous pouvez ensuite le retirer du système LVM.

# pvmove -v /dev/sda1 /dev/sda2

    Executing: /sbin/modprobe dm-mirror 
    Finding volume group "debian"
    Archiving volume group "debian" metadata (seqno 16).
    Creating logical volume pvmove0
    Moving 238 extents of logical volume debian/boot
    Moving 2384 extents of logical volume debian/root
    Moving 476 extents of logical volume debian/var
    Moving 7680 extents of logical volume debian/home
    Moving 7152 extents of logical volume debian/data
    Found volume group "debian"
(...)

Le nom du volume physique cible est facultatif, on peut se contenter d'indiquer le volume physique à libérer :

# pvmove -v /dev/sda1

En cas d'arrêt inopiné, relancer la commande sans arguments : pvmove.

Quand tous les blocks ont été déplacés, la commande ne produit plus aucun résultat :

# pvmove /dev/sda1 /dev/sda2

  All data on source PV skipped. It contains locked, hidden or non-top level LVs only.
  No data to move for debian

Il est possible de ne déplacer que les données d'un volume logique.

Syntaxe :

# pvmove -v -n /dev/groupe_volumes/volume_logique /dev/volume_physique1 /dev/volume_physique2

Exemple :

# pvmove -v -n /dev/debian/boot /dev/sda2 /dev/sda1

Pour voir si un volume physique est utilisé :

# pvscan

  PV /dev/sda2   VG debian   lvm2 [74,50 GiB / 16,57 GiB free]
  PV /dev/sda1   VG debian   lvm2 [74,50 GiB / 51,71 GiB free]
  PV /dev/sda3   VG debian   lvm2 [84,75 GiB / 44,75 GiB free]
  Total: 3 [233,75 GiB] / in use: 3 [233,75 GiB] / in no VG: 0 [0   ]

Retirer un volume physique du système LVM

# vgreduce debian /dev/sda1

Ajouter un volume physique à un système LVM

1. Initialiser le disque ou la partition :

# pvcreate /dev/sda1

2. Ajouter le volume physique au groupe :

# vgextend debian /dev/sda1

Ajouter de l'espace à un volume logique

Ajouter de l'espace à un volume logique pour qu'il atteigne 20 Gio au total :

# lvextend -L20G /dev/debian/root

Il est ensuite nécessaire de redimensionner le système de fichiers. Ca se fait généralement quand ce dernier est démonté. Les systèmes ReiserFS peuvent être agrandis en ligne (mais pas réduits).

# resize_reiserfs -v /dev/debian/home

Créer un volume logique

Créer un volume logique de 30 Gio intitulé "stockage" en précisant sur quel volume physique ses données seront stockées (facultatif) :

# lvcreate -v -L 30G -n stockage debian /dev/sda3

    Setting logging type to disk
    Finding volume group "debian"
    Archiving volume group "debian" metadata (seqno 36).
    Creating logical volume stockage
    Creating volume group backup "/etc/lvm/backup/debian" (seqno 37).
    Found volume group "debian"
    Creating debian-stockage
    Loading debian-stockage table (253:5)
    Resuming debian-stockage (253:5)
    Clearing start of logical volume "stockage"
    Creating volume group backup "/etc/lvm/backup/debian" (seqno 37).
  Logical volume "stockage" created

Liste des commandes LVM

  • lvchange — Change attributes of a logical volume.
  • lvconvert — Convert a logical volume from linear to mirror or snapshot.
  • lvcreate — Create a logical volume in an existing volume group.
  • lvdisplay — Display attributes of a logical volume.
  • lvextend — Extend the size of a logical volume.
  • lvmchange — Change attributes of the logical volume manager.
  • lvmdiskscan — Scan for all devices visible to LVM2.
  • lvmdump — Create lvm2 information dumps for diagnostic purposes.
  • lvreduce — Reduce the size of a logical volume.
  • lvremove — Remove a logical volume.
  • lvrename — Rename a logical volume.
  • lvresize — Resize a logical volume.
  • lvscan — Scan (all disks) for logical volumes.
  • lvs — Report information about logical volumes.
  • pvchange — Change attributes of a physical volume.
  • pvchange — Change attributes of a physical volume.
  • pvck — Check physical volume metadata.
  • pvck — Check physical volume metadata.
  • pvcreate — Initialize a disk or partition for use by LVM.
  • pvcreate — Initialize a disk or partition for use by LVM.
  • pvdisplay — Display attributes of a physical volume.
  • pvdisplay — Display attributes of a physical volume.
  • pvmove — Move physical extents.
  • pvmove — Move physical extents.
  • pvremove — Remove a physical volume.
  • pvremove — Remove a physical volume.
  • pvresize — Resize a disk or partition in use by LVM2.
  • pvresize — Resize a disk or partition in use by LVM2.
  • pvscan — Scan all disks for physical volumes.
  • pvscan — Scan all disks for physical volumes.
  • pvs — Report information about physical volumes.
  • pvs — Report information about physical volumes.
  • vgcfgbackup — Backup volume group descriptor area.
  • vgcfgbackup — Backup volume group descriptor area.
  • vgcfgrestore — Restore volume group descriptor area.
  • vgcfgrestore — Restore volume group descriptor area.
  • vgmknodes — Recreate volume group directory and logical volume special files
  • vgreduce — Reduce a volume group by removing one or more physical volumes.
  • vgremove — Remove a volume group.
  • vgrename — Rename a volume group.
  • vgscan — Scan all disks for volume groups and rebuild caches.
  • vgsplit — Split a volume group into two, moving any logical volumes from one volume group to another by moving entire physical volumes.
  • vgs — Report information about volume groups.