LVM (Logical Volume Management)

LVM - Logical Volume Management, er en måde at administrere diske på der giver administratoren fuld kontrol over serverens lager. LVM giver mulighed for at man under drift bl.a. kan ændre størrelse på partitioner, udskifte diske, tage backup ... . LVM giver med andre ord administratoren værktøjer til at sørge for at det hele tiden er optimalt. LVM har ikke nogen datasikkerhed indbygget ud over den man selv indbygger i systemet. Det kan f.eks. være backup, spejling og andre RAID løsninger. Der arbejdes dog på at lave en LVM løsning der også giver redundans.

For at forstå LVM skal man forstå de 3 niveauer det arbejder i: Physical Volumes (pv), Volume Groups (vg) og Logical Volumes (vg). Herunder er der vist et eksempel:

Illustration inspireret af: http://www.linux-mag.com/id/7796/

Læg mærke til at LVM partitioner har følgende adresse: /dev/*Volume Group*/*Logical volume*.

Engelsk betegnelse Dansk betegnelse Beskrivelse
pv (Physical Volume) Fysisk arkiv Den fysiske partitioner
vg (Volume Group) Arkiv gruppe En samling af fysiske partitioiner
lv (Logical Volume) Logisk arkiv

Overblik over harddiske

For at få et overblik over de installerede harddiske anvendes kommandoen fdisk -l som superbruger. Ved at køre kommandoen på ovenstående system får man følgende output

sudo fdisk -l
thoj@tjmainsrv:~$ sudo fdisk -l

Disk /dev/sda: 107.4 GB, 107374182400 bytes
255 hoveder, 63 sektorer/spor, 13054 cylindre, i alt 209715200 sektorer
Enheder = sektorer af 1 * 512 = 512 byte
Sektorstørrelse (logisk/fysisk): 512 byte / 512 byte
I/O-størrelse (minimum/optimal): 512 byte / 512 byte
Diskidentifikation: 0x000ad887

    Enhed Opstart   Start         Slut     Blokke   Id  System
/dev/sda1   *        2048      976895      487424   83  Linux
/dev/sda2          978942   209713151   104367105    5  Udvidet
/dev/sda5          978944   209713151   104367104   8e  Linux LVM

Disk /dev/mapper/vg01-system: 9999 MB, 9999220736 byte
255 hoveder, 63 sektorer/spor, 1215 cylindre, i alt 19529728 sektorer
Enheder = sektorer af 1 * 512 = 512 byte
Sektorstørrelse (logisk/fysisk): 512 byte / 512 byte
I/O-størrelse (minimum/optimal): 512 byte / 512 byte
Diskidentifikation: 0x00000000

Disk /dev/mapper/vg01-system indeholder ikke en gyldig partitionstabel

Disk /dev/mapper/vg01-home: 20.0 GB, 19998441472 bytes
255 hoveder, 63 sektorer/spor, 2431 cylindre, i alt 39059456 sektorer
Enheder = sektorer af 1 * 512 = 512 byte
Sektorstørrelse (logisk/fysisk): 512 byte / 512 byte
I/O-størrelse (minimum/optimal): 512 byte / 512 byte
Diskidentifikation: 0x00000000

Disk /dev/mapper/vg01-home indeholder ikke en gyldig partitionstabel

Disk /dev/mapper/vg01-web: 3997 MB, 3997171712 byte
255 hoveder, 63 sektorer/spor, 485 cylindre, i alt 7806976 sektorer
Enheder = sektorer af 1 * 512 = 512 byte
Sektorstørrelse (logisk/fysisk): 512 byte / 512 byte
I/O-størrelse (minimum/optimal): 512 byte / 512 byte
Diskidentifikation: 0x00000000

Disk /dev/mapper/vg01-web indeholder ikke en gyldig partitionstabel

Disk /dev/mapper/vg01-data: 60.0 GB, 59999518720 bytes
255 hoveder, 63 sektorer/spor, 7294 cylindre, i alt 117186560 sektorer
Enheder = sektorer af 1 * 512 = 512 byte
Sektorstørrelse (logisk/fysisk): 512 byte / 512 byte
I/O-størrelse (minimum/optimal): 512 byte / 512 byte
Diskidentifikation: 0x00000000

Disk /dev/mapper/vg01-data indeholder ikke en gyldig partitionstabel

Disk /dev/mapper/vg01-swap: 1996 MB, 1996488704 byte
255 hoveder, 63 sektorer/spor, 242 cylindre, i alt 3899392 sektorer
Enheder = sektorer af 1 * 512 = 512 byte
Sektorstørrelse (logisk/fysisk): 512 byte / 512 byte
I/O-størrelse (minimum/optimal): 512 byte / 512 byte
Diskidentifikation: 0x00000000

Disk /dev/mapper/vg01-swap indeholder ikke en gyldig partitionstabel

Kommandonen lister alle harddiske på systemet, og er det vigtigt at lægge mærke til, at LVM's Logiske diske bliver registreret so mom de er fysiske diske koblet på systemet. Selve den fysiske disk er listet op i starten af output'et:

Disk /dev/sda: 107.4 GB, 107374182400 bytes
255 hoveder, 63 sektorer/spor, 13054 cylindre, i alt 209715200 sektorer
Enheder = sektorer af 1 * 512 = 512 byte
Sektorstørrelse (logisk/fysisk): 512 byte / 512 byte
I/O-størrelse (minimum/optimal): 512 byte / 512 byte
Diskidentifikation: 0x000ad887

    Enhed Opstart   Start         Slut     Blokke   Id  System
/dev/sda1   *        2048      976895      487424   83  Linux
/dev/sda2          978942   209713151   104367105    5  Udvidet
/dev/sda5          978944   209713151   104367104   8e  Linux LVM

Herefter bliver hver af LVM's logiske drev listet f.eks:

Disk /dev/mapper/vg01-system: 9999 MB, 9999220736 byte
255 hoveder, 63 sektorer/spor, 1215 cylindre, i alt 19529728 sektorer
Enheder = sektorer af 1 * 512 = 512 byte
Sektorstørrelse (logisk/fysisk): 512 byte / 512 byte
I/O-størrelse (minimum/optimal): 512 byte / 512 byte
Diskidentifikation: 0x00000000

Disk /dev/mapper/vg01-system indeholder ikke en gyldig partitionstabel

Læg mærke til at LVM lægger sine logiske drev inde i /dev mappen. Dette gør at systemet opfatter hver enkelt disk som om de var selvstændige fysiske diske - nøjagtig det som LVM lover. fdisk gør dog opmærksom på at disse diske ikke har en gyldig partitionstabel, da denne del bliver styret af LVM - ikke fdisk.

En anden måde at få et overblik over systemets partitioner er lsblk

root@tjmainsrv:/home/thoj# lsblk
NAME                   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                      8:0    0   100G  0 disk 
├─sda1                   8:1    0   476M  0 part /boot
├─sda2                   8:2    0     1K  0 part 
└─sda5                   8:5    0  99,5G  0 part 
  ├─vg01-system (dm-0) 252:0    0   9,3G  0 lvm  /
  ├─vg01-home (dm-1)   252:1    0  18,6G  0 lvm  /home
  ├─vg01-web (dm-2)    252:2    0   3,7G  0 lvm  /var/www
  ├─vg01-data (dm-3)   252:3    0  55,9G  0 lvm  /srv
  └─vg01-swap (dm-4)   252:4    0   1,9G  0 lvm  [SWAP]	
sr0                     11:0    1  1024M  0 rom  
root@tjmainsrv:/home/thoj# 

lsblk skanner harddiske på en anden måde og får derfor placeret LVM's logiske volumes som logiske drev. Dette program giver et hurtigt og præcist overblik over ens fysiske partitioner, monteringspunkter og størrelsen af dem

Administration af Physical Volumes (PV)

På dette niveau administreres de fysiske partitioner i LVM. Her tilføjer, fjerner og flytter man fysiske partitioner ind i og ud af LVM. Ved at tilføje partitioner til LVM giver det administratoren mulighed for at anvende disse diske til at opbygge Volume Groups (VG).

  • Tilføje og fjerne fysiske partitioner fra LVM
  • Flytte data mellem fysiske partitioner

Kommandoer til Physical Volumes

pvcreate - Tilføjer fysiske partitioner til LVM

Tilføjer fysiske partitioner til LVM.

pvcreate *partition1* *partition2* *partitionX*

Eksempel hvor /dev/sdb1, /dev/sdb2 og /dev/sdb3 tilføjes LVM

pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3

pvremove - Fjerne fysiske partitioner fra LVM

Fjerner fysiske partitioner fra LVM.

pvremove *partition*

Eksempel hvor /dev/sda3 fjernes

pvremove /dev/sda3

pvmove - Flytte data mellem fysiske partitioner i LVM

Flytter data fra en fysisk partition administreret af LVM til en anden. Denne kommando anvendes hvis der skal skiftes diske ud på systemet. På denne måde kan man flytte data fra en disk der skal udskiftes.

pvmove *disk der flyttes fra* *disk der flyttes til*

Eksempel: data fra /dev/sdb2 flyttes til /dev/sdb4

pvmove /dev/sdb2 /dev/sdb4

Overblik over Physical Volumes

pvscan - komprimeret overblik over fysiske partitioner

Kommandoen giver et komprimeret overblik over de fysiske partitioner som LVM administrerer

pvscan
root@tjmainsrv:/home/thoj# pvscan
  PV /dev/sda5   VG vg01   lvm2 [99,53 GiB / 9,94 GiB free]
  Total: 1 [99,53 GiB] / in use: 1 [99,53 GiB] / in no VG: 0 [0   ]

pvs - Information om Physical Volumes

pvs
root@tjmainsrv:/home/thoj# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda5  vg01 lvm2 a--  99,53g 9,94g

pvdisplay - Detaljeret overblik over fysiske partitioner

Kommandoen giver et detaljeret overblik over de fysiske partitioner som LVM administrerer

pvdisplay
root@tjmainsrv:/home/thoj# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda5
  VG Name               vg01
  PV Size               99,53 GiB / not usable 0   
  Allocatable           yes 
  PE Size               4,00 MiB
  Total PE              25480
  Free PE               2544
  Allocated PE          22936
  PV UUID               dX0KXS-UURF-U4b5-GuX7-Gs1X-6UTg-Fdc0JL

Administration af Volume Groups (VG)

På dette niveau administreres grupperne af diske der er koblet sammen i en VG.

  • Tilføje og fjerne partitioner fra LVM.
  • Ændre størrelse på VG
  • Navngive og ændre navne på VG

Kommandoer til Volume Groups

vgcreate - Opret Volume group

Opretter Volume Groups

vgcreate *Volume_Group* *partition1* Partition2* *PartitionX*

Eksempel hvor der oprettes en VG med navnet vg01 og partionerne /dev/sdb1, /dev/sdb2 og /dev/sdb3 tilføjes dertil

vgcreate vg01 /dev/sdb1 /dev/sdb2 /dev/sdb3

vgremove - Fjern en Volume Group

Fjerner en VG

vgremove *vgnavn*

Eksempel hvor gruppen vg02 fjernes fra LVM

vgremove vg02

vgreduce - Fjerne partitioner fra en Volume group

Fjerner partitioner fra en Volume Group

vgreduce *vgnavn* *partition*

eksempel hvor /dev/sdb2 fjernes fra vg01.

vgreduce vg01 /dev/sdb2

vgrename - Ændr navnet på en Volume Group

Ændrer navnet på en Volume Group

vgrename *gammelt_navn* *Nyt_navn*

Eksempel hvor vg02 ændres til nytvg.

vgrename vg02 nytvg

Overblik over Volume Groups

vgscan - Viser oprettede Volume Groups

vgscan

Eksempel:

thoj@tjmainsrv:~$ sudo vgscan
[sudo] password for thoj: 
  Reading all physical volumes.  This may take a while...
  Found volume group "vg01" using metadata type lvm2

vgs - Information og Volume Groups

vgs

root@tjmainsrv:/home/thoj# vgs
  VG   #PV #LV #SN Attr   VSize  VFree
  vg01   1   5   0 wz--n- 99,53g 9,94g

vgdisplay - Udspecificerer data om Volume Groups

Viser udspecificerede data om Volume Groups

vgdisplay

Eksempel

thoj@tjmainsrv:~$ sudo vgdisplay 
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                5
  Open LV               5
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               99,53 GiB
  PE Size               4,00 MiB
  Total PE              25480
  Alloc PE / Size       22886 / 89,40 GiB
  Free  PE / Size       2594 / 10,13 GiB
  VG UUID               V7MpUr-oRj2-LP76-5Rcj-upvf-SDfc-JExeUg

Administration af Logical Volumes (LV)

I de to ovenstående afsnit om Physical Volumes og Volume Groups administrere man hvordan de fysiske diske skal tilgås af LVM. I dette afsnit arbejdes der med placering af data.

  • Oprette og slette LVM partitioner (LV)
  • Navngive og ændre navne
  • Ændre størrelse på LVM's partitioner

Kommandoer til Logical Volumes

Læg mærke til at LVM partitioner har følgende adresse: /dev/*Volume Group*/*Logical volume*.

lvcreate - Opretter Logical Volumes

Opretter Logical Volumes og sætter størrelsen

lvcreate -n *navn* -L *størrelse* *Volume Group*

Eksempel hvor der oprettes en 2TB partition med navnet data i vg01.

lvcreate -n data -L 2T vg01

Størrelsen på partitionen angives efter nedestående skema

Størrelse Betegnelse Eksempel
Megabytes 10⁶ M lvcreate -n data -L 300M vg01
Gigabytes 10⁹ G lvcreate -n data -L 200G vg01
Terrabytes 10¹² T lvcreate -n data -L 3T vg01
Petabytes 10¹⁵ P lvcreate -n data -L 2P vg01
Exabytes 10¹⁸ E lvcreate -n data -L 10E vg01

lvremove - nedlægger Logisk Volumes

lvremove *partition*

Eksempel hvor det logiske drev /dev/vg01/billeder bliver nedlagt

lvremove /dev/vg01/billeder

lvrename - Ændre navnet på en Logical Volume

lvrename *vgnavn* *gammelt_navn* *nyt_navn

Eksempel hvor billeder i LV gruppen vg02 ændres til fotos.

lvrename vg02 billeder fotos

Ændring af størrelse på Logical Volumes

lvextend - udvide størrelsen på en Logical Volume

lvextend -L *størrelse* *partition*

Eksempel hvor /dev/vg01/web udvides med 2 Gb.

lvextend -L +2G /dev/vg01/web

lvreduce - formindske størrelsen på en Logical Volume

lvreduce -L *størrelse* *partition*

Eksempel hvor /dev/vg01/web formindskes med 700 Mb.

lvreduce -L -700M /dev/vg01/web

Overblik over Logical Volumes

lvscan
root@tjmainsrv:/home/thoj# lvscan
  ACTIVE            '/dev/vg01/system' [9,31 GiB] inherit
  ACTIVE            '/dev/vg01/home' [18,62 GiB] inherit
  ACTIVE            '/dev/vg01/web' [3,72 GiB] inherit
  ACTIVE            '/dev/vg01/data' [55,88 GiB] inherit
  ACTIVE            '/dev/vg01/swap' [2,05 GiB] inherit

lvs
root@tjmainsrv:/home/thoj# lvs
  LV     VG   Attr      LSize  Pool Origin Data%  Move Log Copy%  Convert
  data   vg01 -wi-ao--- 55,88g                                           
  home   vg01 -wi-ao--- 18,62g                                           
  swap   vg01 -wi-ao---  2,05g                                           
  system vg01 -wi-ao---  9,31g                                           
  web    vg01 -wi-ao---  3,72g 

lvdisplay
root@tjmainsrv:/home/thoj# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg01/system
  LV Name                system
  VG Name                vg01
  LV UUID                2uLSR3-KZdu-RVc9-8WHs-prru-4fiX-dWzSZR
  LV Write Access        read/write
  LV Creation host, time tjmainsrv, 2015-08-11 10:59:20 +0200
  LV Status              available
  # open                 1
  LV Size                9,31 GiB
  Current LE             2384
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0
   
  --- Logical volume ---
  LV Path                /dev/vg01/home
  LV Name                home
  VG Name                vg01
  LV UUID                xJvI7S-B8kM-ObIR-KL5B-zELP-K0Ud-o1U3Ia
 ...

Læsestof til LVM

    Anvendelse af LVM kommandoer

  1. https://www.howtoforge.com/linux_lvm
  2. https://www.howtoforge.com/linux_lvm_p2
  3. https://www.howtoforge.com/linux_lvm_p3
  4. https://www.howtoforge.com/linux_lvm_p4
  5. https://www.howtoforge.com/linux_lvm_p5
  6. Fjerne LVM og sætte LVM op med RAID 1

  7. https://www.howtoforge.com/linux_lvm_p6
  8. https://www.howtoforge.com/linux_lvm_p7
  9. https://www.howtoforge.com/linux_lvm_p8
  10. https://www.howtoforge.com/linux_lvm_p9