LVM-tilannekuvien hallinta LVM2: ssa

LVM-tilannekuvien hallinta

alamme nyt tarkastella edistyneempiä lvm2-aiheita ja ensimmäisenä vuorossa on LVM-tilannekuvien hallinta. Seuraavassa blogissa käydään läpi laihoja varauksia LVM: ssä. LVM: n tilannekuvat ovat piste-aikaisia kopioita LVM: n loogisista volyymeista. Ne ovat avaruustehokkaita siinä mielessä, että ne alkavat tallentaa mitään tietoja, mutta koska tiedot chenged on lähde LV orignal tiedot kirjoitetaan LVM Snapshot volume. Käyttötapauksia tähän ovat:

  • varmuuskopiot: LVM-tilannekuvat itsessään eivät ole tehokas varmuuskopio, koska ne on tallennettava samaan Volyymiryhmään. Kuitenkin, tilannekuvia voidaan lisätä varmuuskopioita. Vain luoda tilannevedoksen kohdevolyymin ja sitten varmuuskopioida tilannevedoksen äänenvoimakkuutta voittaa mitään ongelmia, jotka liittyvät tiedosto-samanaikaisuus aikana varmuuskopiointi. Tilannekuva voidaan poistaa varmuuskopioinnin
  • Test and Destroy: LVM-tilannekuvat ovat luku – / kirjoituskopio alkuperäisestä LV: stä. Voit luoda LVM tilannekuvia LV, joka sisältää monimutkaisia skriptejä, muuttaa ansd testata niitä niin paljon kuin haluat ja sitten tuhota tiedot, Kun olet valmis. Kaikki vaikuttamatta alkuperäisiin käsikirjoituksiin.
  • uusien ohjelmistojen käyttöönoton testaus: uuden ohjelmistoversion asentaminen voi sisältää useita satoja tiedostoja, jotka sijaitsevat monien ohjelmistohakemistojen kautta. Jos kohdesijainti kaikki ohjelmistot on yksi LVM looginen volyymi sitten voimme luoda tilannekuvan ennen ohjelmiston päivittämistä. Jos testauksen jälkeen ohjelmisto ei toimi halutulla tavalla. On yksinkertainen tehtävä palauttaa alkuperäinen LV tilannekuvaan. Tilannekuva pitää tietysti sisällään tuon ajankohdan kopion alkuperäisestä lähdevolyymista tilannekuvan ottohetkellä.

seuraa alla olevaa linkkiä ja lataa “Complete Guide to Lvm2 in Linux”, joka maksaa vain 1,99 puntaa! Kun eBook on ladattu, se voidaan tulostaa tarvittaessa.

Download eBook

valmistellaan LVM-tilannekuvia

LVM-tilannekuva on luotava samaan Volyymiryhmään kuin lähde LV. Käyttämällä CoW (Copy on Write) – tekniikkaa taustalla olevan tallennustilan on oltava sama. Mahdollistaa kuvan muuttumattomien tietojen lukemisen alkuperäisestä LV-lähteestä. Meidän Volume ryhmä on täynnä, joten poistamme nykyisen looginen tilavuus ja luoda sen pienempi koko. Käytämme myös kahta kiinnityspistettä, /mnt / original ja/mnt / snap.

kaiken tämän työn jälkeen olemme nyt taas tilanteessa, jossa meillä on Uudelleen muotoiltu looginen Nide, jota olemme kutsuneet lv1: ksi. Tämä on nyt asennettu /mnt/original-muotoon esittelyä varten. Olemme luoneet lv1 600 MiB jättäen 392 MiB vapaata tilaa Volume Group vg1. Muista, että olemme huolissaan vain vapaata tilaa samassa volyymi ryhmä kuin looginen volyymit. Tilannevedos on luotava samaan Taltioryhmään kuin lähde LV. jos tarkistamme lähdön komennosta VGS näemme käytettävissä olevan vapaan tilan:

# 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

tämä komento, kuten olemme nähneet aiemmin, on hyvä tapa tiivistää Volyymiryhmiä. Jotta voidaan luoda ajan kuluessa tilannekuvan looginen tilavuus, lv1, meidän täytyy lisätä joitakin tietoja. Kopioimme /etc / services-tiedoston osoitteeseen / mnt / original.

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

voimme myös nähdä, että tässä tiedostossa Ubuntu-palvelimellani on 612 riviä. Meillä on nyt dataa, joten jatketaan.

LVM-tilannekuvien luominen lvm2: ssa

LVM-tilannekuvat ovat pohjimmiltaan yksinkertaisia loogisia niteitä, joihin on pultattu joitakin ylimääräisiä herkkuja. Niin, ne luodaan käyttäen lvcreate komento ja-S vaihtoehto. Meidän on myös määriteltävä lähdevolyymi luodessamme tilannevedosta.

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

komentoasetuksista voimme nähdä, että määrittelemme ensin koon 12 MiB: ksi. Tarvitsemme vain tarpeeksi tilaa lähteeseen tekemiemme muutosten tallentamiseen. Olisimme voineet täyttää lähde LV 600 MiB tietoja, mutta jos vain 12 MiB on todennäköisesti muuttaa sitten tarvitsemme vain 12 MiB tilannevälitys tilavuus. Kokoamme tilannekuvan vastaamaan tapahtuvien muutosten kokoa. Valitsin-s tai-snapshot määrittää lähdevolyymin tilannevedokseen. Kuten ennen-N-valitsin määrittää luomamme LV: n nimen.Tilannekuva luetaan / kirjoitetaan, joten se voidaan asentaa. Mennään eteenpäin ja asentaa sen hakemistoon /mnt / snap:

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

sama sisältö näkyy molemmissa hakemistoissa, vaikka muutoksia ei ole tapahtunut. LVM snapshots linkittää alkuperäiseen dataan, kunnes se muuttuu.

kun tarkastelemme sekä lähteen että tilannekuvan yksityiskohtia, se näyttää hieman erilaiselta. Ensinnäkin, lv1_snap tilavuus. Tilannekuva 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

saatamme muistaa, toivottavasti muistat, että loimme tämän 12 MiB: n kokoisena. LV: n koko on kuitenkin 600 MiB. Näkemämme koko on alkuperäistä tai lähdettä LV. tilannekuvan koko näkyy LEHMÄPÖYDÄN koossa. Copy-on-Write tapahtuu, kun tiedot muutetaan lähteessä ja alkuperäinen data kopioidaan sitten snapshot-taltioon. Tilannevedoksen äänenvoimakkuus listaa aina alkuperäiset tilannevedostiedostot riippumatta siitä, ovatko ne muuttuneet vai eivät. Tilannekuvan luomisessa ei ole lehmän muutoksia varastoitavaksi, joten varattu arvo on hyvin alhainen aloittaa ja kasvaa, kun lähdeaineistoon tehdään muutoksia. Kun katsomme näytön yksityiskohtia nyt lv1 LV, sekin on hieman erilainen:

# 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

voimme nähdä, että se näkyy lähteenä tilannekuvan lv1_snap.

LVM: n tilannetietojen muuttaminen

jos nyt teemme lähdevolyymin aineistoon muutoksen, alamme nähdä eroa tilannevolyymin aineistossa. Snapshot-äänenvoimakkuus pitää alkuperäiset tiedot, kun taas lähde LV pitää muutokset. Ensimmäinen, lisäämme uuden tiedoston lähdekoodiin:

# cp /etc/hosts /mnt/original/

nyt voimme nähdä, että sisältö eroaa lähteen osalta snaphot-niteille

voimme myös nähdä, että alamme kuluttaa enemmän LEHMÄTILAA loogisessa niteessä. Palatakseni lvdisplay varten lv1_snap näemme varattu snapshot prosenttiosuus kasvaa.

# 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

vaikka emme ole muuttaneet olemassa olevaa tietoa, uuden datan lisääminen vaikuttaa myös tilannekuvaan, koska tilannekuvan volyymin on näytettävä tiedot sellaisina kuin ne olivat tilannekuvaa otettaessa. Tarvittaessa meidän pitäisi pystyä palauttamaan alkuperäinen snapshotted data.

seuraavaksi ylikirjoitamme alkuperäisen / etc / services-tiedoston:

# > /mnt/original/services

tiedosto /mnt / original / services on nyt tyhjä. Jos tarkistamme snapshot tiedosto kuitenkin, se on edelleen tiedot. Komennolla wc voimme laskea rivien määrän jokaisessa tiedostossa:

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

tietenkin, rechecking tuotos lvdisplay for lv1_snap osoittaa, että kohdennettu snapshot prosenttiosuus on kasvanut muutoksen:

Allocated to snapshot 1.17%

äänenvoimakkuuden muutokset LVM-tilannekuvien osalta

sekä lähde-että tilannekuvan LVS-attribuutit muuttuvat tilannekuvan luomisen yhteydessä. Voimme nähdä tämän yksityiskohtaisesti komennolla lvdisplay, mutta se on paremmin tiivistettynä komennolla lvs:

on 10 attribuuttia, jotka luemme vasemmalta oikealle:

lv1: lle attribuutit luetaan:

  • Volume Type: Origin. Tilannevedoksen lähde
  • käyttöoikeudet: kirjoitettava
  • Allocation Policy: peritty Taltioryhmästä
  • kiinteää pienlukua ei ole asetettu
  • tila: on merkitty aktiiviseksi
  • laite: on auki tai asennettu
  • kohdetyyppi: tilannevedos, eli se osallistuu tilannevedokseen

Lv1_snapille määreet kuuluvat seuraavasti:

  • Talotyyppi: tilannevedos tilavuus
  • käyttöoikeudet: kirjoitettava
  • Allocation Policy: Peritty Volyymiryhmästä
  • kiinteä pienluku ei ole asetettu
  • tila: on merkitty aktiiviseksi
  • laite: on auki tai asennettu
  • kohdetyyppi: tilannekuva, eli se osallistuu tilannekuvaan

alkuperäisen ja kohdeluvun LVs: n on oltava samassa Tilavuusryhmässä kuin olemme jo maininneet, mutta he voittivat ei välttämättä jakaa samoja laitteita näissä Äänenvoimakkuusryhmissä. Tämä on yleensä Abstrakti meiltä, mutta voimme lisätä vaihtoehdon LVS-komentoon:

lisäämällä-o optioille ja + – laitteille näytetään taustalla olevat laitteet, jotka muodostavat LV: n. voimme nähdä, että lv1 on suurempi kuin joko /dev/sdc1 tai /dev/sdc2 ja se ulottuu molempiin. Kun taas, vg1_snap voi hyödyntää jäljellä tilaa / dev / sdc2. Laitteen nimen perässä suluissa oleva numero ilmaisee fyysisen laajuuden numeron, josta LV alkaa laitteesta. Voimme nähdä, että lv1 alkaa laajuudesta 0 sekä /dev/sdc1 ja /dev/sdc2 ja lv1_snap alkaa laajuus 26 //dev / sdc2. Jos haluat nähdä kaikki –o-valitsimella käytettävissä olevat vaihtoehdot, käytä komentoa:

# lvs -o help

koska luettelo on laaja, Emme ole ottaneet tuotosta mukaan.

sen lisäksi, että tarkastellaan loogisia niteitä suoraan, voidaan käyttää myös lsblk-komentoa. Täällä näemme enemmän muutoksia kuin ehkä luulet:

 # 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 /

tunnemme jo VG1-lv1-laitteen ja VG1-lv1_snap-laitteet. Nämä ovat olleet taustalla olevat LV: t, joiden kanssa olemme työskennelleet. Lvm2: n kanssa käytettävä ytimen pääluku tai Ajuri on 252. Näemme tämän kaikkien käytössä olevien LV: iden osalta. Ensimmäinen LV oli vg1-lv1 joten tämä on pieni numero 0. Kun katsomme VG1-lv1_snap, vaikka, tämä on vähäinen määrä 3 osoittaa sen 4. LV eikä 2. kuten voimme odottaa. Sen sijaan tilannekuvaa varten luodaan kaksi kääre-LVs: ää, vg1-lv1-real ja vg1-lv1_snap-cow. Näitä hallitaan sisäisesti, emmekä osallistu näihin objekteihin, joita LVM2 käyttää snapshotting-prosessin hallintaan. Jokaisessa NÄKEMÄSSÄMME LV: ssä on myös vastaava devmapper-laite. Jos listaamme /dev-hakemiston ja filerin DM -*: ssä, voimme näyttää nämä.

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

uudelleen. näemme 4 laitteet ei vain 2 jonka olemme ehkä odottaneet. Joten taustalla LVM2 hoitaa paljon puolestamme ja antaa meille pääsyn vain niihin elementteihin, joita tarvitsemme.

volyymin palauttaminen tilannekuvaan

toipumisskenaario LVM: n tilannekuvilla mahdollistaa paluun tilannekuvaan.Jos huomaamme, että meidän on palautettava alkuperäinen LV pisteeseen ajassa tilannekuva, voimme tehdä niin. Muista, että tilannekuva on esitys alkuperäisestä määrästä tilannekuvan tekohetkellä. Voimme tehdä tämän sen jälkeen, kun ohjelmistopäivitys on testattu ja päätös on tehty palata tilannekuvaan, joka olisi pitänyt ottaa ennen ohjelmistopäivitystä. Jotta voimme nähdä tämän reaaliajassa, irrotamme ensin molemmat LV: t.:

# umount /mnt/{original,snap}

jos emme sulje laitteita, meidän täytyy odottaa, kunnes alkuperäinen LV, vg1 on seuraava aktivoitu. Usein tämä on uudelleenkäynnistys. Kun molemmat loogiset taltiot on nyt irrotettu ja suljettu, käytämme lvconvert-komentoa yhdistääksemme tilannevedoksen vanhemman tai Originin kanssa. Tämä on palauttamista lähde looginen tilavuus tilannevedoksen sisältöä. Tilannekuva poistetaan automaattisesti prosessin lopussa.

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

riippuen yhdistettävän datan koosta ja levyjen nopeudesta on mahdollista, että tämä voi kestää jonkin aikaa. Voit käyttää-B vaihtoehto tausta prosessi.

jos nyt asennamme lv1: n uudelleen ja tarkistamme sisällön. Meiltä puuttuu hosts-tiedosto, joka lisättiin tilannekuvan ottamisen jälkeen. Palvelut tiedosto meillä on nyt sisältöä, että ylikirjoitamme.

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

testi-ja kehitys

toinen käyttökohde LVM-tilannekuville on koeympäristössä. Jos haluat työskennellä suoraan snapshotted tiedot niin voit. Kun olet valmis, sinun tarvitsee vain irrottaa tilannekuva LV ja poistaa se. Taustalla oleva alkuperäinen LV jätetään ennalleen. Tämä on hienoa, jos haluat ehkä työskennellä skriptejä vaikuttamatta alkuperäisen tuotannon skriptejä.

prosessi on jokseenkin sama, mutta työskentelemme nyt vain /mnt/snap-hakemiston kanssa. Yhteenveto komennoista seuraa:

tilannekuvan koon laajentaminen

kun luomme tilannekuvan, meidän tulisi asettaa koko, joka mielestämme on riittävä tallentamaan kaikki alkuperäiseen LV: hen tehdyt muutokset tilannekuvan ollessa paikallaan. Tilannevedoksen äänenvoimakkuutta on kuitenkin mahdollista tarvittaessa laajentaa automaattisesti.

on tärkeää huomata, että jos tilannevedos täyttyy kokonaan, tilannevedos poistetaan automaattisesti.

oletusasetukset eivät salli tilannekuvien automaattisesti kasvavan. Meidän on mahdollistettava tämä. Lvm2: n konfiguraatio on /etc/lvm/lvm.conf. Jos etsimme tehokkaita asetuksia käyttämällä grep:

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

snapshot_autoextend_threshold asetettu 100 % tarkoittaa, että tilannekuva ei koskaan kasva. Heti kun olemme saavuttaneet 100% raja tilannekuva poistetaan. Jos tarvitsemme autoextend käytössä harkita asettaa tämän jotain 70. Siinä tapauksessa, kun tilannekuva tulee 70% täyteen koko kasvaa. Koko kasvun ohjataan snapshot_autoexend_percent. Oletusarvo on 20% eli koko kasvaa 20% nykyisestä koosta aina, kun kasvua tarvitaan.

Write a Comment

Sähköpostiosoitettasi ei julkaista.