LVM Pillanatképek kezelése LVM2-ben

LVM Pillanatképek

most elkezdünk néhány fejlettebb LVM2 témát vizsgálni, az első az LVM Pillanatképek kezelése. A következő blogban megvizsgáljuk a vékony ellátást az LVM – ben. Az LVM Pillanatképek az LVM logikai kötetek pontos példányai. Ezek a tér-effecient, hogy elkezd tárolására nincs adat, de az adatok chenged a forrás LV az orignal adatok vannak írva, hogy a LVM Pillanatkép kötet. Ennek Felhasználási esetei a következők:

  • biztonsági mentések: Maga az LVM pillanatképek nem hatékony biztonsági mentés, mivel ugyanabban a Kötetcsoportban kell tárolni. A pillanatképek azonban felhasználhatók a biztonsági mentések növelésére. Csak hozzon létre egy pillanatképet a cél kötetről, majd készítsen biztonsági másolatot a pillanatkép kötetéről, hogy leküzdje a fájl-párhuzamossággal kapcsolatos problémákat a biztonsági mentés során. A pillanatkép a biztonsági mentési folyamat végén törölhető
  • Test and Destroy: az LVM Pillanatképek az eredeti LV olvasási / írási másolatai. Hozhat létre egy LVM pillanatképek egy LV, amely összetett szkriptek, változtatni ansd tesztelni őket, amennyit csak akar, majd megsemmisíti az adatokat, ha befejezte. Mindezt anélkül, hogy befolyásolná az eredeti szkripteket.
  • új Szoftvertelepítések tesztelése: a szoftver új verziójának telepítése sok száz fájlt tartalmazhat, amelyek számos szoftverkönyvtáron keresztül találhatók. Ha az összes szoftver célhelye egyetlen LVM logikai köteten van, akkor a szoftver frissítése előtt pillanatképet készíthetünk. Ha a tesztelés után a szoftver nem működik a kívánt módon. Ez egy egyszerű feladat, hogy visszaállítsa az eredeti LV a pillanatkép. A pillanatkép természetesen az eredeti forráskötetnek a pillanatfelvétel készítésének időpontjában érvényes másolatát tartalmazza.

kövesse az alábbi linket a ‘Complete Guide to LVM2 in Linux’ letöltéséhez, amely mindössze 1,99-be kerül! Miután letöltötte az eBook lehet nyomtatni, ha szükséges.

eBook letöltése

LVM Pillanatképek készítésének előkészítése

az LVM pillanatképet ugyanabban a Kötetcsoportban kell létrehozni, mint a forrás LV. A CoW (Copy on Write) technológia használatával az alapul szolgáló tárolónak azonosnak kell lennie. Lehetővé teszi a pillanatkép változatlan adatainak olvasását az eredeti LV forrásból. A Kötetcsoportunk megtelt, ezért töröljük a meglévő logikai kötetet, és kisebb méretben újrateremtjük. Két csatolási pontot fogunk használni, a /mnt/original és a /mnt/snap.

ennyi munka után most visszatérünk ahhoz a helyzethez, amikor van egy újonnan formázott logikai kötetünk, amelyet lv1-nek hívtunk. Ez most a /mnt/original oldalra van szerelve a bemutató céljából. Hoztunk létre lv1 a 600 MiB hagyva 392 MiB szabad hely a kötet csoport vg1. Ne feledje, hogy csak az érintett szabad hely ugyanabban a kötet csoportban, mint a logikai kötetek. A pillanatképet ugyanabban a Kötetcsoportban kell létrehozni, mint az LV forrást. ha ellenőrizzük a VGS parancs kimenetét, láthatjuk a rendelkezésre álló szabad helyet:

# vgs VG #PV #LV #SN Attr VSize VFree vg1 2 1 0 wz--n- 992.00m 392.00m vg2 2 0 0 wz--n- 192.00m 192.00m

ez a parancs, amint azt korábban láttuk, nagyszerű módja a Kötetcsoportok összefoglalásának. Annak érdekében, hogy létrehozhassunk egy pillanatképet a logikai kötetről, az lv1-ről, hozzá kell adnunk néhány adatot. Egyszerűen átmásoljuk az / etc /services fájlt a/mnt / original fájlba.

 # cp /etc/services /mnt/original/ # wc -l /mnt/original/services 612 /mnt/original/services

azt is láthatjuk, hogy ez a fájl az Ubuntu szerveremen 612 sorból áll. Most már vannak adataink, úgyhogy lépjünk tovább.

létrehozása LVM Pillanatképek LVM2

LVM Pillanatképek, lényegében egyszerű logikai kötetek néhány extra finomságok csavarozott. Tehát az lvcreate paranccsal és a –s opcióval jönnek létre. A pillanatkép létrehozásakor meg kell adnunk a forrásmennyiséget is.

 # lvcreate -L 12m -s /dev/vg1/lv1 -n lv1_snap Logical volume "lv1_snap" created.

a parancsopciókból láthatjuk, hogy először a 12 MiB méretet adjuk meg. Csak elegendő helyre van szükségünk a forráson végrehajtott módosítások tárolásához. A forrás LV-t 600 MiB adattal tölthettük volna meg, de ha csak 12 MiB valószínűleg megváltozik, akkor csak 12 MiB pillanatkép-kötetre van szükségünk. A pillanatképet úgy méretezzük, hogy megfeleljen a bekövetkező változások méretének. A-s vagy –snapshot opció megadja a pillanatfelvétel forráskötetét. Mint korábban a-n opció beállítja az általunk létrehozott LV nevét.A pillanatkép olvasható / írható, így felszerelhető. Menjünk előre, és szereljük fel a /mnt/snap könyvtárba:

# mount /dev/vg1/lv1_snap /mnt/snap/

ugyanazt a tartalmat láthatjuk mindkét könyvtárban, annak ellenére, hogy nem történt változás. LVM pillanatképek linkek az eredeti adatokat, amíg meg nem változik.

ha megnézzük mind a forrás, mind a pillanatkép kötetének részleteit, kissé másképp fog kinézni. Először az lv1_snap kötet. A snapshot LV.

# lvdisplay /dev/vg1/lv1_snap --- Logical volume --- LV Path /dev/vg1/lv1_snap LV Name lv1_snap VG Name vg1 LV UUID s8gBiX-IV1z-jiZK-q4dN-paG5-8mvq-TCQkuk LV Write Access read/write LV Creation host, time yogi, 2017-08-22 09:26:14 +0000 LV snapshot status active destination for lv1 LV Status available # open 1 LV Size 600.00 MiB Current LE 150 COW-table size 12.00 MiB COW-table LE 3 Allocated to snapshot 0.36% Snapshot chunk size 4.00 KiB Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:3

emlékezhetünk – remélem, hogy igen -, hogy ezt 12 MB-os méretben hoztuk létre. Az LV mérete azonban 600 MiB. A méret látjuk az eredeti vagy forrás LV.a pillanatkép mérete mutatja A tehén-táblázat mérete. A másolás írásra akkor történik, amikor az adatok megváltoznak a forrásban, majd az eredeti adatokat átmásolják a pillanatkép-kötetbe. A pillanatkép kötet mindig felsorolja az eredeti pillanatképfájlokat, függetlenül attól, hogy megváltoztak-e vagy sem. A pillanatkép létrehozásakor nincsenek tárolandó Tehénváltozások, így a hozzárendelt érték nagyon alacsony a kezdéshez, és a forrásadatok módosításával növekszik. Amikor most megnézzük az lv1 LV megjelenítési részleteit, ez is kicsit más lesz:

# lvdisplay /dev/vg1/lv1 --- Logical volume --- LV Path /dev/vg1/lv1 LV Name lv1 VG Name vg1 LV UUID dmVaWm-kA9V-xouM-OZBR-b7Id-aMUh-EWymB0 LV Write Access read/write LV Creation host, time yogi, 2017-08-21 18:51:57 +0000 LV snapshot status source of lv1_snap LV Status available # open 1 LV Size 600.00 MiB Current LE 150 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0

láthatjuk, hogy az lv1_snap pillanatképének forrásaként jelenik meg.

LVM Snapshot adatok módosítása

ha most változtatunk a forráskötetben lévő adatokon, akkor különbséget fogunk látni a snapshot kötet adataiban. A pillanatkép kötet az eredeti adatokat tárolja,míg a forrás LV a változásokat. Először új fájlt adunk hozzá a forráskötethez:

# cp /etc/hosts /mnt/original/

most már láthatjuk, hogy a tartalom eltér a forrás a snaphot kötetek

azt is láthatjuk, hogy elkezdünk fogyasztani több tehén helyet a logikai kötet. Visszatérve az lvdisplay for lv1_snap-hoz, látni fogjuk, hogy a pillanatképhez rendelt százalék növekszik.

# lvdisplay /dev/vg1/lv1_snap --- Logical volume --- LV Path /dev/vg1/lv1_snap LV Name lv1_snap VG Name vg1 LV UUID s8gBiX-IV1z-jiZK-q4dN-paG5-8mvq-TCQkuk LV Write Access read/write LV Creation host, time yogi, 2017-08-22 09:26:14 +0000 LV snapshot status active destination for lv1 LV Status available # open 1 LV Size 600.00 MiB Current LE 150 COW-table size 12.00 MiB COW-table LE 3 Allocated to snapshot 0.98% Snapshot chunk size 4.00 KiB Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:3

annak ellenére, hogy nem változtattuk meg a meglévő adatokat az új adatok hozzáadása szintén hatással lesz a pillanatképre, mivel a pillanatkép kötetének meg kell mutatnia az adatokat, mint a pillanatkép készítésekor. Ha szükséges, képesnek kell lennünk arra, hogy visszaállítsuk az eredetit a snapshotted adatokra.

ezután felülírjuk az eredeti / etc / services fájlt:

# > /mnt/original/services

a /mnt/original/services fájl most üres lesz. Ha azonban ellenőrizzük a pillanatkép fájlt, akkor továbbra is megvannak az adatok. A wc paranccsal megszámolhatjuk az egyes fájlok sorainak számát:

 # wc -l /mnt/original/services /mnt/snap/services 0 /mnt/original/services 612 /mnt/snap/services 612 total

természetesen az lvdisplay kimenetének újbóli ellenőrzése az lv1_snap számára azt mutatja, hogy a pillanatképhez rendelt százalék a változással nőtt:

Allocated to snapshot 1.17%

Kötetváltozások LVM Pillanatképek esetén

a pillanatkép létrehozásakor mind a forrás, mind a pillanatkép LVs attribútumai megváltoznak. Ezt részletesen láthatjuk az lvdisplay paranccsal, de jobban összefoglaljuk az lvs paranccsal:

10 attribútum van, amelyeket balról jobbra olvasunk:

az lv1 esetében az attribútumok olvashatók:

  • Kötet Típusa: Eredet. A forrás egy pillanatfelvétel
  • Engedélyek: Írható
  • Elosztási Politika: Örökölt a Kötet-Csoport
  • Fix kisebb szám nem set
  • Állapot: aktívként megjelölt
  • Eszköz: nyitott vagy szerelt
  • Cél típusa: Pillanatfelvétel, vagyis részt venni egy pillanatfelvétel

A lv1_snap az attribútumok olvasni:

  • Mennyiség Típus: Snapshot volume
  • Engedélyek: Írható
  • Elosztási Politika:
  • rögzített kisebb szám nincs beállítva
  • állapot: aktívként van megjelölve
  • eszköz: nyitott vagy szerelt
  • céltípus: Pillanatkép, azaz pillanatképben vesz részt

az eredeti és a cél LV-knek ugyanabban a Kötetcsoportban kell lenniük, mint már említettük, de nyertek nem feltétlenül osztja meg ugyanazokat az eszközöket ezeken a Kötetcsoportokon belül. Ez általában elvont tőlünk, de hozzáadhatjuk az opciót az lvs parancshoz:

az –o opciókhoz és a +eszközökhöz való hozzáadása megmutatja az LV-t alkotó mögöttes eszközöket. láthatjuk, hogy az lv1 nagyobb, mint a /dev/sdc1 vagy a /dev/sdc2, és mindkettőre kiterjed. Míg a vg1_snap felhasználhatja a /dev/sdc2-ben maradt helyet. Az eszköz neve után zárójelben lévő szám azt a fizikai kiterjedésszámot jelzi, amelyen az LV elindul az eszközről. Láthatjuk, hogy az lv1 a /dev/sdc1 és a /dev/sdc2 esetében egyaránt a 0.kiterjedésről indul, az lv1_snap pedig a /dev/sdc2 26. kiterjedéséről indul. Az –o opcióval elérhető összes opció megtekintéséhez használja a parancsot:

# lvs -o help

mivel a lista kiterjedt, nem vettük fel a kimenetet.

a logikai kötetek közvetlen megtekintése mellett használhatjuk az lsblk parancsot is. Itt több változást fogunk látni, mint talán gondolnád:

 # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop1 7:1 0 100M 0 loop sdb 8:16 0 256M 0 disk loop0 7:0 0 100M 0 loop sdc 8:32 0 1000M 0 disk ├─sdc2 8:34 0 500M 0 part │ ├─vg1-lv1-real 252:1 0 600M 0 lvm │ │ ├─vg1-lv1 252:0 0 600M 0 lvm /mnt/original │ │ └─vg1-lv1_snap 252:3 0 600M 0 lvm /mnt/snap │ └─vg1-lv1_snap-cow 252:2 0 12M 0 lvm │ └─vg1-lv1_snap 252:3 0 600M 0 lvm /mnt/snap └─sdc1 8:33 0 499M 0 part └─vg1-lv1-real 252:1 0 600M 0 lvm ├─vg1-lv1 252:0 0 600M 0 lvm /mnt/original └─vg1-lv1_snap 252:3 0 600M 0 lvm /mnt/snap sda 8:0 0 9.8G 0 disk /

már ismerjük a vg1-lv1 és a vg1-lv1_snap eszközöket. Ezek voltak a mögöttes LV – k, amelyekkel együtt dolgoztunk. Az LVM2-vel használt kernel fő száma vagy illesztőprogramja 252. Így, látjuk ezt az összes LVs van a helyén. Az első LV a vg1-lv1 volt, tehát ennek kisebb száma 0. Ha megnézzük a vg1-lv1_snap – ot, akkor ennek kisebb száma 3, ami a 4.LV-t jelzi, nem pedig a 2., ahogy várhatjuk. Ehelyett két wrapper LVs jön létre a pillanatképhez, a vg1-lv1-real és a vg1-lv1_snap-cow. Ezeket belsőleg kezeljük, és nem veszünk részt ezekben az objektumokban, amelyeket az LVM2 a snapshotting folyamat kezelésére használ. Minden itt látható LV-nek van egy megfelelő devmapper eszköze is. Ha felsoroljuk a / dev könyvtárat és a filert a dm -* – on, meg tudjuk mutatni ezeket.

# ls /dev/dm-* /dev/dm-0 /dev/dm-1 /dev/dm-2 /dev/dm-3

ismét. látjuk a 4 eszközök nem csak a 2 amit várhattunk. Tehát a háttérben az LVM2 sokat kezel számunkra, és csak a szükséges elemekhez fér hozzá.

kötet visszaállítása Pillanatképre

az LVM pillanatképekkel végzett helyreállítási forgatókönyv lehetővé teszi a pillanatkép visszaállítását.Ha úgy találjuk, hogy vissza kell állítanunk az eredeti LV-t az időpont pillanatképére, akkor ezt megtehetjük. Ne feledje, hogy a pillanatkép az eredeti kötet ábrázolása lesz a pillanatfelvétel idején. Ezt a szoftverfrissítés tesztelése után tehetjük meg, és döntés született arról, hogy visszatérünk a pillanatképhez, amelyet a szoftverfrissítési folyamat előtt kellett volna elkészíteni. Annak érdekében, hogy ezt valós időben láthassuk, először mindkét LV-t leválasztjuk:

# umount /mnt/{original,snap}

ha nem zárjuk be az eszközöket, akkor meg kell várnunk, amíg az eredeti LV, a vg1 legközelebb aktiválódik. Gyakran ez újraindul. Mind a logikai kötetek leválasztása, mind lezárása esetén az lvconvert paranccsal egyesítjük a pillanatképet a szülővel vagy az Origóval. Ez visszaállítja a forrás logikai kötetét a pillanatfelvétel tartalmára. A pillanatkép automatikusan eltávolításra kerül a folyamat végén.

# lvconvert --merge /dev/vg1/lv1_snap Merging of volume lv1_snap started. lv1: Merged: 99.2% lv1: Merged: 100.0%

az egyesítendő adatok méretétől és a lemezek sebességétől függően ez eltarthat egy ideig. Használja a-b opciót a folyamat hátteréhez.

ha most újra csatlakoztatjuk az lv1-et, és ellenőrizzük a tartalmat. Hiányozni fog a hosts fájl, amelyet a pillanatkép elkészítése után adtak hozzá. A szolgáltatási fájl most már megvan a tartalom, amelyet túlírtunk.

 # mount /dev/vg1/lv1 /mnt/original/ # ls /mnt/original/ lost+found services # wc -l /mnt/original/services 612 /mnt/original/services

Test and Development

az LVM pillanatképek másik felhasználási területe a tesztkörnyezet. Ha inkább közvetlenül a snapshotted adatokkal dolgozik, akkor megteheti. Ha befejezte, csak le kell választania a snapshot LV-t, majd törölnie kell. Az alapul szolgáló eredeti LV változatlan marad. Ez nagyszerű, ha esetleg szkripteken szeretne dolgozni anélkül, hogy az eredeti produkciós szkripteket befolyásolná.

a folyamat nagyjából ugyanaz, de most csak a /mnt/snap könyvtárral dolgozunk. A parancsok összefoglalása következik:

a pillanatkép méretének kiterjesztése

pillanatkép-kötet létrehozásakor olyan méretet kell beállítanunk, amely megfelelőnek érzi az eredeti LV-n végrehajtott összes változtatást, miközben a pillanatkép a helyén van. Szükség esetén azonban lehetőség van a pillanatkép-kötet automatikus kibővítésére.

fontos megjegyezni, hogy ha egy pillanatkép teljesen megtelik, a pillanatkép automatikusan törlődik.

az alapértelmezett beállítások nem teszik lehetővé a pillanatképek automatikus növekedését. Ezt lehetővé kell tennünk. Az LVM2 konfigurációja az /etc/lvm/lvm könyvtárban található.conf. Ha átkutatjuk a hatékony beállítások használata grep:

 # grep -E '^\s*snapshot_auto' /etc/lvm/lvm.conf snapshot_autoextend_threshold = 100 snapshot_autoextend_percent = 20

Miután a snapshot_autoextend_threshold állítsa be a 100 % azt jelenti, hogy a snapshot nem nő. Amint elérjük a 100% – os küszöbértéket a pillanatfelvétel el kell hagyni. Ha szükségünk van autoextend engedélyezve megfontolni, hogy ez valami olyan, mint 70. Ebben az esetben, amikor a pillanatfelvétel válik, 70% – os teljes mérete növekedni fog. A méret növekedése által ellenőrzött, a snapshot_autoexend_percent. Az alapértelmezett érték 20%, ami azt jelenti, hogy a méret a jelenlegi méretének 20% – ával növekszik minden alkalommal, amikor növekedésre van szükség.

Write a Comment

Az e-mail-címet nem tesszük közzé.