Logikai kötetkezelés

A Unix/Linux szerverek üzemeltetése wikiből
A lap korábbi változatát látod, amilyen KornAndras (vitalap | szerkesztései) 2006. szeptember 25., 23:46-kor történt szerkesztése után volt.

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ó:

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ó:

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.
Személyes eszközök