Logikai kötetkezelés
A logikai kötetkezelés egy új logikai absztrakciós réteget biztosít a gépben található háttértárolók és a fájlrendszerek között. Ez egyebek mellett lehetővé teszi, hogy a fizikai tárolóeszközöket logikai egységekbe szervezzük, és rugalmasan átméretezhető logikai köteteket hozzunk létre. Ha később új diszk kerül a gépbe, azt is hozzáadhatjuk egy kötetcsoporthoz, és teljesen transzparens módon átlóghatnak rá a filerendszereink, anélkül, hogy külön foglalkoznunk kellene azzal, hogy melyik fizikai diszkre is kerüljenek.
Tartalomjegyzék |
1 Linux LVM
(Itt most csak a 2.6-os kernelben levő LVM2-vel foglalkozunk. A 2.4-es szériában található LVM1 nagyjából ugyanezt tudta, csak volt néhány korlátozása.)
A Linux LVM (Logical Volume Management) a következő fogalmakkal dolgozik:
1.1 Physical extent
Allokációs egység. Ekkora egységenként oszthatjuk szét a volume groupban levő helyet a logical volume-ok között (l. később).
Ha akarjuk, hívhatjuk magyarul fizikai mértéknek, de ez elég sután hangzik.
1.2 Physical volume
A physical volume olyan fizikai háttértároló, amin létrehoztuk az LVM metaadat-struktúráját a pvcreate paranccsal. Pl:
# pvcreate /dev/hda Physical volume "/dev/hda" successfully created # pvcreate /dev/loop0 Physical volume "/dev/loop0" successfully created # pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created
Fontosab opciók:
- --uuid: minden physical volume-nak van egy egyedi azonosítója. Ha egy diszket kicserélünk, és az új diszket be akarjuk tenni a régi helyére az LVM-be, akkor a --uuid kapcsolóval be kell állítanunk rajta a régi diszk azonosítóját.
Dokumentáció:
- man pvcreate: pvcreate(8)
- man lvm: lvm(8)
Ha akarjuk, a physical volume-ot hívhatjuk magyarul fizikai kötetnek.
1.2.1 Physical volume-ok kezelése
A pvdisplay paranccsal nézhetjük meg, milyen physical volume-jaink vannak:
# pvdisplay --- Physical volume --- PV Name /dev/md2 VG Name raid5 PV Size 697.91 GB / not usable 0 Allocatable yes PE Size (KByte) 32768 Total PE 22333 Free PE 4094 Allocated PE 18239 PV UUID elN9K7-dvxq-b0fd-daqR-693p-fHqD-SwbDpD --- NEW Physical volume --- PV Name /dev/loop0 VG Name PV Size 31.81 MB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID hlzs9k-H253-ERpK-R39N-8ICT-4bU6-D0xtc1
Láthatjuk, hogy az első megtalált physical volume a /dev/md2-n, egy RAID tömbön van, és a raid5 nevű volume group része (l. később). A második volume a /dev/loop0 loopback device-on (tehát valójában egy ehhez a device-hoz tartozó image file-ban) van, és még nem rendeltük hozzá volume grouphoz, ezért nem is használható a benne levő hely (Allocatable: no). A közölt adatok:
- PV Name - annak a unix device-nak a neve, amin a physical volume található.
- VG Name - annak a volume groupnak a neve, amelyhez a physical volume tartozik.
- PV Size - a PV mérete (mit jelent és milyen esetben jelenik meg a "not usable X"?)
- Allocatable - Felhasználható-e a PV-n levő hely (van valakinek kedve precízebb megfogalmazást keresni erre?)
- PE Size - a physical extentek mérete abban a volume groupban, amelyhez a PV tartozik.
- Total, Free, Allocated PE - összes physical extent száma, ebből hány szabad, hány foglalt.
- PV UUID - egyedi azonosító.
Majdnem ugyanezt tudja a pvs parancs is:
# pvs PV VG Fmt Attr PSize PFree /dev/loop0 lvm2 -- 31.81M 31.81M /dev/md2 raid5 lvm2 a- 697.91G 127.94G
A pvs esetén testreszabhatóbb a kimenet formája. Részletesebben l. a dokumentációban.
A pvscan outputja is nagyon hasonló:
PV /dev/md2 VG raid5 lvm2 [697.91 GB / 127.94 GB free] PV /dev/loop0 lvm2 [31.81 MB] Total: 2 [697.94 GB] / in use: 1 [697.91 GB] / in no VG: 1 [31.81 MB]
A különbség az, hogy a pvscan újra végignézi az összes block device-t, a pvs és a pvdisplay pedig a kernel adatstruktúráiból szedi az információt.
A pvmove segítségével az egyik phyiscal volume-ban levő physical extenteket átmozgathatjuk a volume group egy másik physical volume-jára. Ennek akkor van értelme, ha pl. ki akarjuk venni az adott fizikai diszket a gépből, vagy a volume groupból. A pvmove online művelet, vagyis menet közben is használhatjuk, írhatjuk és olvashatjuk az érintett volume-ot.
A pvremove segítségével eltávolíthatjuk az LVM-címkét egy PV-ről, így az LVM a továbbiakban nem vesz róla tudomást.
1.3 Volume group
A volume group lényegében egy logical volume-okkal "partícionálható" absztrakt merevlemez; physical volume-ok egy csoportja. Közvetlenül nem lehet rá adatokat írni, de a benne levő helyet tetszés szerint szétoszthatjuk logical volume-ok között.
Létrehozása a vgcreate paranccsal történik.
# vgcreate proba /dev/loop0 Volume group "proba" successfully created # pvdisplay [...] --- Physical volume --- PV Name /dev/loop0 VG Name proba PV Size 28.00 MB / not usable 0 Allocatable yes PE Size (KByte) 4096 Total PE 7 Free PE 7 Allocated PE 0 PV UUID hlzs9k-H253-ERpK-R39N-8ICT-4bU6-D0xtc1
Egynél több PV-t is felsorolhatunk a parancssorban; ezek mind bekerülnek az új volume groupba (hívhatjuk kötetcsoportnak).
Fontosabb opciók:
- -s, --physicalextentsize PhysicalExtentSize[kKmMgGtT]: a physical extentek méretét adja meg.
Ilyen granularitással oszthatjuk szét a helyet a logical volume-ok között. A filerendszer I/O teljesítményére elvileg nincs hatással, csak az LVM segédprogramjai lesznek lassúbbak, ha túl sok van (mert túl kicsik). A meta-adatok mennyisége is nagyobb lehet, ha több PE van. Manapság kevés olyan felhasználást lehet elképzelni, ahol szükség lehet 16MB-nál kisebb granularitásra.
Dokumentáció:
- man vgcreate: vgcreate(8)
- man lvm: lvm(8)
1.3.1 Volume groupok kezelése
Listázás: vgdisplay
# vgdisplay --- Volume group --- VG Name raid5 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 21 VG Access read/write VG Status resizable MAX LV 32 Cur LV 5 Open LV 5 Max PV 16 Cur PV 1 Act PV 1 VG Size 697.91 GB PE Size 32.00 MB Total PE 22333 Alloc PE / Size 18239 / 569.97 GB Free PE / Size 4094 / 127.94 GB VG UUID I4pM7R-wmD9-m3VP-0OI1-ahbb-hdKy-QIQXnL --- Volume group --- VG Name proba System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 28.00 MB PE Size 4.00 MB Total PE 7 Alloc PE / Size 0 / 0 Free PE / Size 7 / 28.00 MB VG UUID U2pJ4S-J3fj-ebb0-ojYt-Vn7c-VAHU-w7WIlS
A vgdisplaynek van egy -v kapcsolója, aminek a hatására a logical volume-okat is listázza.
A pv*-gal analóg módon van vgs és vgscan</t> is.
A vgchange-dzsel lehet "aktiválni" és "deaktiválni" a kötetcsoportokat (ha nem aktiváljuk, nem tudjuk mountolni a benne levő LV-ket).
# vgchange -a y 5 logical volume(s) in volume group "raid5" now active 0 logical volume(s) in volume group "proba" now active
A vgcfgbackup/vgcfgrestore segítségével készíthetünk ill. állíthatunk vissza biztonsági mentést az LVM-konfigurációnkról. A felhasználói adatokat természetesen nem menti el, de arra az esetre, ha megsérülnének az LVM saját adatterületei, vagy véletlenül megszüntetnénk egy fontos LV-t, jól jön.
A <tt>vgck ellenőrzi a meta-adatok konzisztenciáját.
Ha egy kötetcsoportot át akarunk vinni egy másik számítógépbe, akkor először exportálnunk kell a vgexport segítségével:
# vgexport proba Volume group "proba" successfully exported # vgdisplay proba WARNING: volume group "proba" is exported --- Volume group --- VG Name proba System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status exported/resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 28.00 MB PE Size 4.00 MB Total PE 7 Alloc PE / Size 0 / 0 Free PE / Size 7 / 28.00 MB VG UUID U2pJ4S-J3fj-ebb0-ojYt-Vn7c-VAHU-w7WIlS
Az exportált kötetcsoport nem aktiválható, amíg nem importáljuk:
# vgchange -a y proba Volume group "proba" is exported # vgimport proba Volume group "proba" successfully imported # vgchange -a y proba 0 logical volume(s) in volume group "proba" now active
Növelés: vgextend. A vgextend segítségével a kötetcsoporthoz új PV-ot adhatunk hozzá.
Összehúzás: vgreduce. A vgreduce segítségével a kötetcsoportból eltávolíthatunk egy üres PV-t (tehát olyat, amin egyetlen PE-t - physical extentet - sem foglal egyetlen LV - logical volume - sem).
Összevonás: vgmerge. A vgmerge segítségével egy inaktív VG-ot beolvaszthatunk egy másik létező VG-ba, ha a PE-méretek megegyeznek. A cél-VG-ban ezután benne lesznek mindkét kiinduló-VG LV-jai.
Szétválasztás: vgsplit. A kiinduló kötetcsoport fizikai kötetei közül néhányból új kötetcsoportot hozunk létre. A logikai kötetek nem lóghatnak át egyik kötetcsoportból a másikba (erről előtte szükség esetén pvmove-val gondoskodni kell).
A vgmknodes boot közben fut le, létrehozza a /dev alatt a volume groupjainkhoz tartozó bejegyzéseket.
Törlés: vgremove. Teljesen megszünteti a kötetcsoportot és újra felszabadítja a PV-jait.
Átnevezés: vgrename.
1.4 Logical volume
A logical volume (legyen logikai kötet) úgy viselkedik, mint egy merevlemezpartíció, azzal a különbséggel, hogy:
- szabadon, on-line átméretezhető (a rajta/benne található filerendszert ettől persze külön át kell méretezni);
- on-line átmozgatható másik diszkre;
- készíthető róla snapshot.