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
[szerkesztés]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.[1] 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,[2] 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 GUID partíciós táblával(en) (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
[szerkesztés]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 device mapper(en) 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
[szerkesztés]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
[szerkesztés]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
[szerkeszté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
[szerkesztés]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.[3] 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.[4] 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
[szerkesztés]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,[5] 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.[6]
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
[szerkesztés]- ↑ Különböző jogosultságokkal csatolhatók fel. Az egyik fájlrendszer megtelése nem zavarja a többi működését.
- ↑ LVM2 and pvcreate > 2TB (LinuxQuestions.org)
- ↑ Ha egy vagy több diszk megsemmisült, a
vgreduce --removemissing kötetcsoport
utasítással lehet eltávolítani a kötetcsoportból a hiányzó diszkeket. Ez törli az összes fájlrendszert és snapshotot, melynek adatai vannak a hiányzó diszkeken. - ↑ Hasonló a helyzet, ha két gép közös diszkterületén levő kötetcsoportban hozunk létre logikai kötetet, és nem használjuk az LVM fürt-kiterjesztését, ami épp az ilyen problémákat oldja meg. Ilyenkor csak a létrehozó gépen jönnek létre az eszközfájlok.
- ↑ Fürtös fájlrendszerben a csatolás előtt szükség lehet a fájlrendszer-azonosító megváltoztatására. Pl. ocfs2 fájlrendszerben a
tunefs.ocfs2 --cloned-volume /dev/kötetcsoport/eredetikötet
teszi ezt meg. - ↑ Dusty Mabe: Automatically Extend LVM Snapshots (A Random Walk Down Tech Street)
Források
[szerkesztés]- AJ Lewis: LVM HOWTO