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:
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 |
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
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ø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
Fjerner fysiske partitioner fra LVM.
pvremove *partition*
Eksempel hvor /dev/sda3 fjernes
pvremove /dev/sda3
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
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
root@tjmainsrv:/home/thoj# pvs PV VG Fmt Attr PSize PFree /dev/sda5 vg01 lvm2 a-- 99,53g 9,94g
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
På dette niveau administreres grupperne af diske der er koblet sammen i en VG.
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
Fjerner en VG
vgremove *vgnavn*
Eksempel hvor gruppen vg02 fjernes fra LVM
vgremove vg02
Fjerner partitioner fra en Volume Group
vgreduce *vgnavn* *partition*
eksempel hvor /dev/sdb2 fjernes fra vg01.
vgreduce vg01 /dev/sdb2
Ændrer navnet på en Volume Group
vgrename *gammelt_navn* *Nyt_navn*
Eksempel hvor vg02 ændres til nytvg.
vgrename vg02 nytvg
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
root@tjmainsrv:/home/thoj# vgs VG #PV #LV #SN Attr VSize VFree vg01 1 5 0 wz--n- 99,53g 9,94g
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
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.
Læg mærke til at LVM partitioner har følgende adresse: /dev/*Volume Group*/*Logical volume*.
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 *partition*
Eksempel hvor det logiske drev /dev/vg01/billeder bliver nedlagt
lvremove /dev/vg01/billeder
lvrename *vgnavn* *gammelt_navn* *nyt_navn
Eksempel hvor billeder i LV gruppen vg02 ændres til fotos.
lvrename vg02 billeder fotos
lvextend -L *størrelse* *partition*
Eksempel hvor /dev/vg01/web udvides med 2 Gb.
lvextend -L +2G /dev/vg01/web
lvreduce -L *størrelse* *partition*
Eksempel hvor /dev/vg01/web formindskes med 700 Mb.
lvreduce -L -700M /dev/vg01/web
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 ...
Anvendelse af LVM kommandoer
Fjerne LVM og sætte LVM op med RAID 1