Logikai kötetkezelő
A logikai kötetkezelő (logical volume manager, LVM) a Linux operációs rendszerben a diszkek (blokkos tárolóeszközök) kényelmesebb kezelésére szolgáló eszköz.

A legfőbb probléma a hagyományos diszkkezeléssel az, hogy fájlrendszert csak folytonos merevlemez-területen lehet létrehozni, és a diszkterület (partíció) méretváltoztatása nem megoldott. Ugyancsak probléma két nem szomszédos, vagy különböző diszkeken található partíció területének egyesítése.

GPT és LVM 

A PC-n a hagyományos, DOS alapú partícionálás (MBR-partíciók) legfeljebb 15 partíció létrehozását teszi lehetővé, melyek egyike – az extended partíció – adatot nem, csak másik partíciós táblát tartalmazhat. Egy fájlrendszer egy partícióban van, és sok előnye van a különböző típusú adatok külön fájlrendszerben tárolásának. A mai terabájtos méretű diszkeknél kevés a 14 partíció, és az is gond, hogy a hagyományos partíciós tábla legfeljebb 2 TByte méretű diszkek felosztására alkalmas. Az LVM legalább 2.6-os 32 bites kernellel 16 TByte, 64 bites kernellel 8 exabájt méretű fizikai kötet kezelésére képes, ehhez azonban a teljes diszket LVM-területté kell tenni, így csak linuxból lehet elérni, más operációs rendszer nem kaphat területet belőle.

A diszkméret és partíciószám korlátja megoldható egy viszonylag új partícionálással, a  (GPT), mely tetszőleges számú partíciót és gyakorlatilag (belátható időn belül) végtelen méretű diszket képes részekre osztani. A GPT-t az újabb változatú BIOS-ok és Windows-ok is ismerik. Ez megoldja a diszkméret és partíciószám problémáját is, de nem segít a nem szomszédos ill. különböző diszkeken levő területek egyesítésén és a partícióméretek változtatásán.

Az LVM és GPT együtt is alkalmazható: az LVM képes GPT-partíciókat is diszkterületként (fizikai kötetként) használni.

Az LVM működése 
Az LVM képes diszkterületeket (teljes diszkeket vagy partíciókat, LVM-terminológiával fizikai köteteket) egy vagy több területté (kötetcsoporttá, volume group-pá) szervezni, e területekből folytonos területeket (logikai köteteket) kijelölni, melyeken fájlrendszereket lehet létrehozni. A területek számára nincs megkötés, és átmérezhetők folytonos kisebb vagy nagyobb területté.

Az LVM a kernelben a fájlrendszer és a diszk között helyezkedik el, a  driverben. (A device mappernek az LVM mellett más funkciói is vannak, pl. szoftver RAID, fájlrendszer titkosítás.) Megfeleltetést hoz létre a fájlrendszer és a diszk blokkjai között, és egyszerűsége okán igen hatékony: sebességben és input/output terhelésben nem lehet észrevenni a használatát.

Utasítások 
Az utasításokat tartalmazó csomag neve lvm2 a legtöbb disztribúcióban.

Az utasítások első két betűje a kötetet adja meg:
 pv: fizikai kötet (physical volume)
 vg: kötetcsoport (volume group)
 lv: logikai kötet (logical volume)
A harmadik betűtől kezdődik a művelet neve:
 s: rövid lista
 display: részletes lista
 create: létrehozás
 remove: törlés
 extend: méretnövelés
 reduce: méretcsökkentés
 rename: átnevezés
 scan: keresés az összes diszken
 change: (de)aktiválás
Az utasítások paraméterei már a kötettől függően különbözőek.

Logikai kötet létrehozása 
Tegyük fel, hogy az sda diszk 6-os partíciója üres, és ezen akarunk logikai kötetet létrehozni.

Felírjuk az információt a partícióba, hogy mostantól fizikai kötetként fogjuk használni:
pvcreate /dev/sda6

Létrehozzuk a kötetcsoportot, melyből később területeket lehet kérni:
vgcreate volg /dev/sda6
volg a kötetcsoport neve. A létrehozáskor egy vagy több fizikai kötetet kell megadni. Minden fizikai kötet legfeljebb egy kötetcsoporthoz tartozik. Diszkek utólag is hozzáadhatók, és bizonyos korlátok között kivehetők.

1 gigabájt területet kérünk a logikai kötet számára a kötetcsoportból ter1g néven:
lvcreate -L 1G -n ter1g volg

A terület kétféleképpen érhető el: /dev/mapper/volg-ter1g vagy /dev/volg/ter1g, amit mostantól úgy használhatunk, mint a partíciót. Fájlrendszer létrehozása és csatolása:
mkfs.ext4 /dev/volg/ter1g
mount /dev/volg/ter1g /mnt

Ellenőrzés:root@sid64:~# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sda6  volg lvm2 a--  3.94g 2.94g
root@sid64:~# vgs
  VG   #PV #LV #SN Attr   VSize VFree
  volg   1   1   0 wz--n- 3.94g 2.94g
root@sid64:~# lvs
  LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  ter1g volg -wi-ao---- 1.00g

Méretnövelés 
A fenti területet 500M-mel meg akarjuk növelni. Először a logikai kötet méretét kell növelni, majd ezt tudatni a fájlrendszerrel is. Az előbbi mehet menet közben, az utóbbi fájlrendszerfüggő. Az ext4 fájlrendszer mérete menet közben is növelhető, nem kell lecsatolni.
lvextend -L +500M /dev/volg/ter1g
resize2fs /dev/volg/ter1g

Ellenőrzés:root@sid64:~# lvs
  LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  ter1g volg -wi-ao---- 1.49g                                                    
root@sid64:~# df -h /mnt
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/volg-ter1g  1.5G  1.5M  1.4G   1% /mnt

Méret csökkentésekor először a fájlrendszert kell csökkenteni (ext3 és ext4 fájlrendszerben csak lecsatolt állapotban lehet méretet csökkenteni), majd a logikai kötetét az lvreduce paranccsal, ügyelve arra, hogy annak méretébe beleférjen a fájlrendszer. Célszerű három lépésben csinálni: a fájlrendszert minimális méretűre összehúzni (resize2fs -M), csökkenteni a logikai kötet méretét, majd a fenti módon megnövelni a fájlrendszert, hogy a teljes csökkentett területet elfoglalja.

Kötetcsoportok használata 
A diszkterületek kötetcsoportba rendezésekor két szempontot kell figyelembe venni. Egyrészt a kötetcsoportban levő szabad hely nem használható más kötetcsoportból. Másrészt a kötetcsoport működéséhez valamennyi diszkje elérhető kell legyen. Ez azt jelenti, hogy a cserélhető tárolókon levő fizikai kötetek számára (pl. USB diszk) külön kötetcsoportot kell létrehozni. Ha két kötetcsoport neve azonos lenne, az LVM az egyiket a memóriában átnevezi (ezzel az eszközfájlok neve is megváltozik).

A cserélhető diszk behelyése után a pvs, vgs, lvs mutatja az adatokat, de az eszközfájlok nem jönnek létre automatikusan, így a kötetek nem csatolhatók fel. Az eszközfájlokat a vgchange -a y kötetcsoportnév utasítás hozza létre (egy kötet számára ugyanerre az lvchange szolgál).

A pvmove fizikai_diszk felszabadítja a fizikai diszket: a rajta levő adatokat a kötetcsoport többi diszkjére másolja át. Ezután a vgreduce dev fizikai_diszk utasítással törölhető a diszk a kötetcsoportból, a pvremove fizikai_diszk utasítással pedig az egész LVM-ből.

Snapshot 
A snapshot gyors logikai másolat egy logikai kötetről. A snapshot ugyanabban a kötetcsoportban kell legyen, mint az eredeti kötet. A számára kijelölt diszkterület lehet kisebb az eredeti köteténél (nagyobbat nincs értelme lefoglalni). A snapshot ugyanúgy csatolható fel, mint a többi kötet, ugyanúgy növelhető a mérete, és ugyanúgy törölhető az lvremove utasítással. Egy kötetről több snapshot is létrehozható.

A snapshot létrehozásától kezdve az LVM az eredeti kötet módosítandó blokkjainak régi értékét átmásolja a snapshot területére, amikor az először változik meg, és csak ezután írja felül. Az eredeti kötetben az aktuális, a snapshotban pedig a másolat pillanatában aktuális értékek találhatók. A snapshot addig működőképes, amíg az eredeti kötet módosított blokkjai ráférnek a snapshot számára kijelölt területre. Ha megtelt, már csak törölni lehet a snapshotot. Egy blog szerint megoldható a snapshot területének automatikus növelése is a megtelés megakadályozására.

Snapshot létrehozása:
 lvcreate -Lméret -nsnapshotnév -s /dev/kötetcsoport/eredetikötet

A snapshotot előszeretettel használják mentéskor. A mentés előtt létrehozott snapshot biztosítja, hogy a mentés ideje alatt a kötet tartalma nem változik meg. Az eredeti kötet visszatölthető a snapshotból is az
 lvconvert—merge /dev/logvg/snapshotnév
utasítással (mindkét kötet lecsatolása után).

A snapshot írható is, így alkalmas az eredeti köteten futtatandó program tesztelésére az érvényes értékek veszélyeztetése nélkül.

Jegyzetek

Források 
 AJ Lewis: LVM HOWTO

Kapcsolódó lapok 
 fájlrendszer
 partíció
 kötet
 

Fájlrendszerek
Linux