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
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 ) legfeljebbpartí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 apartíció , és az is gond , hogy a hagyományos partíciós tábla legfeljebbTByte méretű diszkek felosztására alkalmas . Az LVM legalább6-osbites kernellelTByte, bites kernellelexabá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 diszkos 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 -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.ext 4 / 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-- 94g94g root@ sid64:~ # vgs VG #PV # LV #SN Attr VSize VFree volg wz--n-94g94g root@ sid64:~ # lvs LV VG Attr LSize Pool Origin Data % Meta % Move Log Cpy%Sync Convert ter1g volg -wi-ao----00g Méretnövelés A fenti területet-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----49g root@ sid64:~ # df -h / mnt Filesystem Size Used Avail Use % Mounted on / dev/mapper/ volg-ter1g 5G 5M 4G / 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