gestionarea LVM instantanee în LVM2

LVM instantanee

vom începe acum uita la unele subiecte LVM2 mai avansate și primul up este gestionarea LVM instantanee. În următorul blog ne vom uita la provizionarea subțire în LVM. Instantaneele LVM sunt copii punctuale ale volumelor logice LVM. Ele sunt spațiu-effecient în care acestea încep de stocare a datelor, dar ca date este chenged pe sursa LV datele orignal este scris la volumul instantaneu LVM. Cazurile de utilizare pentru aceasta includ:

  • backup-uri: Instantaneele LVM în sine nu sunt o copie de rezervă eficientă, deoarece trebuie stocate în același grup de volum. Cu toate acestea, instantaneele pot fi utilizate pentru a mări copiile de rezervă. Doar a crea un instantaneu al volumului țintă și apoi de rezervă volumul instantaneu pentru a depăși orice probleme de a face cu fișier-concurență în timpul backup. Instantaneul poate fi șters la sfârșitul procesului de backup
  • testați și distrugeți: instantaneele LVM sunt o copie de citire / scriere a LV-ului original. Puteți crea un LVM instantanee ale unui LV care conține script-uri complexe, schimba ansd le testa la fel de mult, după cum doriți și apoi distruge datele când ați terminat. Toate fără a afecta scripturile originale.
  • testarea noilor implementări de Software: instalarea unei noi versiuni de software poate include multe sute de fișiere localizate prin mai multe directoare de software. Dacă locația țintă pentru tot software-ul este pe un singur volum logic LVM, atunci putem crea un instantaneu înainte de actualizarea software-ului. Dacă după testare software-ul nu funcționează în modul dorit. Este o sarcină simplă de a reveni LV original La instantaneu. Instantaneul, desigur, deține acel moment copie a volumului sursă original în momentul în care a fost făcută instantaneul.

urmați link-ul de mai jos pentru a descărca ‘ghid complet pentru LVM2 în Linux’, costa doar 1.99! Odată ce este descărcat eBook pot fi imprimate dacă este necesar.

descărcați eBook

pregătirea pentru a crea un LVM instantanee

un LVM instantaneu trebuie să fie creat în același grup de volum ca sursa LV. Folosind tehnologia CoW (Copy on Write), stocarea subiacentă trebuie să fie aceeași. Permiterea datelor neschimbate din instantaneu să fie citite din sursa LV originală. Grupul nostru de volum este plin, așa că vom șterge volumul logic existent și îl vom recrea o dimensiune mai mică. Vom folosi, de asemenea, două mountpoints, /mnt/original și /mnt/snap.

după toate aceste lucrări, ne întoarcem acum la situația în care avem un volum logic nou formatat pe care l-am numit lv1. Acesta este acum montat la / mnt / original în scopul demonstrației. Am creat lv1 la 600 MiB lăsând 392 MIB spațiu liber în grupul de volum vg1. Amintiți-vă că suntem preocupați doar de spațiul liber din același grup de volum ca și volumele noastre logice. Instantaneu trebuie să fie create în același grup de volum ca sursa LV. dacă vom verifica ieșirea din comanda vgs putem vedea spațiul liber disponibil:

# 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

această comandă, așa cum am văzut anterior, este o modalitate excelentă de a rezuma grupurile de volum. Pentru a putea crea un instantaneu de timp al volumului logic, lv1, va trebui să adăugăm câteva date. Vom copia pur și simplu fișierul/etc /services în/mnt / original.

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

putem vedea, de asemenea, că acest fișier, pe serverul meu Ubuntu, are 612 linii. Acum avem date, așa că hai să ne descurcăm.

crearea instantaneelor LVM în LVM2

Instantaneele LVM sunt, în esență, volume logice simple, cu câteva bunătăți suplimentare înșurubate. Deci, ele sunt create folosind comanda lvcreate și opțiunea –S. De asemenea, trebuie să specificăm volumul sursei atunci când creăm instantaneul.

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

din opțiunile de comandă, putem vedea că specificăm mai întâi dimensiunea de 12 MiB. Avem nevoie doar de suficient spațiu pentru a stoca modificările pe care le facem sursei. Am fi putut umple sursa LV cu 600 MiB de date, dar dacă numai 12 MiB este probabil să se schimbe, atunci avem nevoie doar de un volum instantaneu de 12 MIB. Mărim instantaneul pentru a se potrivi cu dimensiunea modificărilor care vor apărea. Opțiunea-S sau-snapshot specifică volumul sursă la snapshot. Ca și înainte ca opțiunea-n să stabilească numele LV pe care îl creăm.Instantaneul este citit / scris, astfel încât poate fi montat. Să mergem mai departe și montați-l în directorul / mnt / snap:

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

vom putea vedea același conținut în ambele directoare, chiar dacă nu au avut loc modificări. LVM instantanee link-uri la datele originale până când este schimbat.

când ne uităm la detaliile atât ale sursei, cât și ale volumului instantaneu, va arăta puțin diferit. În primul rând, volumul lv1_snap. 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

ne putem aminti, cu siguranță sper să faceți, că am creat acest lucru cu o dimensiune de 12 MiB. Dimensiunea LV, deși, arată ca 600 MiB. Dimensiunea vedem este de original sau sursa LV. dimensiunea instantaneu arată în dimensiunea vaca-tabel. Copy-on-Write apare atunci când datele sunt modificate în sursă și datele originale sunt apoi copiate în volumul instantaneu. Volumul instantaneu va lista întotdeauna fișierele instantanee originale, indiferent dacă s-au schimbat sau nu. La crearea instantaneului nu există modificări de vacă pentru a stoca, astfel încât valoarea alocată este foarte mică pentru a începe și va crește pe măsură ce se fac modificări la datele sursă. Când ne uităm acum la detaliile afișajului pentru lv1 LV, și acesta va fi puțin diferit:

# 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

putem vedea că arată ca sursă a instantaneului pentru lv1_snap.

schimbarea datelor instantanee LVM

dacă facem acum o modificare a datelor din volumul sursă, vom începe să vedem o diferență în datele din volumul instantaneu. Volumul instantaneu va conține datele originale, în timp ce sursa LV va conține modificările. În primul rând, vom adăuga un nou fișier la volumul sursă:

# cp /etc/hosts /mnt/original/

acum putem vedea că conținutul diferă pentru sursă de volumele snaphot

putem vedea, de asemenea, că începem să consumăm mai mult spațiu de vacă în volumul logic. Revenind la lvdisplay pentru lv1_snap, vom vedea procentul alocat instantaneului crescând.

# 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

chiar dacă nu am modificat datele existente adăugarea de date noi va afecta, de asemenea, instantaneul, deoarece volumul instantaneului trebuie să arate datele așa cum a fost atunci când a fost realizat instantaneul. Dacă este necesar, ar trebui să putem reveni la original la datele snapshotted.

apoi, vom suprascrie fișierul original / etc / services:

# > /mnt/original/services

fișierul / mnt / original / services va fi acum gol. Dacă verificăm fișierul instantaneu, acesta va avea în continuare datele. Folosind comanda wc putem număra numărul de linii din fiecare fișier:

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

desigur, reverificarea ieșirii lvdisplay pentru lv1_snap va arăta că procentul alocat instantaneului a crescut odată cu modificarea:

Allocated to snapshot 1.17%

modificări de volum pentru LVM instantanee

atributele pentru sursă și instantaneu LVs se va schimba atunci când este creat instantaneu. Putem vedea acest lucru în detaliu cu comanda lvdisplay, dar este mai bine rezumat cu comanda lvs:

Există 10 atribute pe care le citim de la stânga la dreapta:

pentru lv1 atributele citite:

  • Tipul Volumului: Origine. Sursa unui instantaneu
  • permisiuni: inscriptibil
  • Politica de alocare: moștenit de la grupul de volum
  • număr minor fix nu este setat
  • stat: este marcat ca activ
  • dispozitiv: este deschis sau montat
  • Tip țintă: instantaneu, adică participă la un instantaneu

pentru Lv1_snap atributele citite:

  • tip volum: instantaneu volum
  • permisiuni: inscriptibil
  • Politica de alocare: Moștenit de la grupul de volum
  • Numărul minor fix nu este setat
  • stat: este marcat ca activ
  • dispozitiv: este deschis sau montat
  • Tip țintă: instantaneu, adică participă la un instantaneu

LVs original și țintă trebuie să fie în același grup de volum așa cum am menționat deja, dar au câștigat nu împărtășesc neapărat aceleași dispozitive în cadrul acestor grupuri de volum. Acest lucru este în mod normal abstractizat de la noi, dar putem adăuga opțiunea la comanda lvs:

adăugarea în –o pentru opțiuni și dispozitive +va afișa dispozitivele subiacente care alcătuiesc LV. putem vedea că lv1 este mai mare decât oricare /dev/sdc1 sau /dev/sdc2 și este întins pe ambele. În timp ce, vg1_snap poate folosi spațiul rămas în /dev/sdc2. Numărul din paranteze după numele dispozitivului indică numărul de extindere fizică pe care LV pornește de pe dispozitiv. Putem vedea că lv1 începe de la pe măsură 0 pentru ambele/dev /sdc1 și/dev /sdc2 și lv1_snap începe pe măsură 26 de/dev / sdc2. Pentru a vedea toate opțiunile disponibile cu opțiunea –o, utilizați comanda:

# lvs -o help

deoarece lista este extinsă, nu am inclus ieșirea.

pe lângă analizarea directă a volumelor logice, putem folosi și comanda lsblk. Aici vom vedea mai multe schimbări decât credeți:

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

suntem deja familiarizați cu dispozitivul vg1-lv1 și dispozitivele vg1-lv1_snap. Acestea au fost LVs subiacente cu care am lucrat. Numărul major de kernel sau driverul utilizat cu LVM2 este 252. Deci, vom vedea acest lucru pentru toate LVs avem în loc. Primul LV a fost vg1-lv1 deci acesta are numărul minor de 0. Când ne uităm la vg1-lv1_snap, deși, acest lucru are un număr minor de 3 indicând-l LV 4 și nu 2 așa cum ne putem aștepta. În schimb, sunt create două LV-uri de înveliș pentru instantaneu, vg1-lv1-real și VG1-lv1_snap-cow. Acestea sunt gestionate intern și nu ne implicăm în aceste obiecte pe care LVM2 le folosește pentru a gestiona procesul snapshotting. Fiecare LV pe care îl vedem aici are și un dispozitiv devmapper corespunzător. Dacă vom lista directorul / dev și filer pe dm – * putem arăta aceste.

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

din nou. vedem dispozitivele 4 nu doar cele 2 pe care le-am fi așteptat. Deci, în fundal LVM2 gestionează foarte mult pentru noi și ne permite accesul doar la elementele de care avem nevoie.

revenirea unui volum La instantaneu

un scenariu de recuperare cu instantanee LVM ne permite să revenim la instantaneu.Dacă descoperim că trebuie să readucem LV-ul original la momentul instantaneu, putem face acest lucru. Amintiți-vă că instantaneul va fi o reprezentare a volumului original în momentul instantaneului. Putem face acest lucru după ce a fost testată o actualizare software și s-a luat decizia de a reveni la instantaneul care ar fi trebuit făcut înainte de procesul de actualizare software. Pentru a ne asigura că putem vedea acest lucru în timp real, vom demonta mai întâi ambele LVs:

# umount /mnt/{original,snap}

dacă nu închidem dispozitivele, va trebui să așteptăm până când LV-ul original, vg1 este activat în continuare. Adesea, acest lucru este la repornire. Cu ambele volume logice acum nemontate și închise, folosim comanda lvconvert pentru a îmbina instantaneul cu părintele sau originea. Aceasta este revenirea volumului logic sursă la conținutul instantaneu. Instantaneul este eliminat automat la sfârșitul procesului.

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

în funcție de dimensiunea datelor care trebuie îmbinate și de viteza discurilor, este posibil ca acest lucru să dureze ceva timp. Utilizați opțiunea –b pentru a fundalul procesului.

dacă acum montăm lv1 din nou și verificăm conținutul. Vom lipsi fișierul hosts care a fost adăugat după realizarea instantaneului. Fișierul de servicii avem acum conținutul pe care l-am suprascris.

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

testare și dezvoltare

o altă utilizare pentru instantaneele LVM este într-un mediu de testare. Dacă preferați să lucrați direct cu datele snapshotted, atunci puteți. După ce ați terminat, trebuie doar să demontați instantaneul LV și să îl ștergeți. LV-ul original de bază este lăsat neschimbat. Acest lucru este mare în cazul în care doriți să lucreze, probabil, pe script-uri fără efectuarea script-uri de producție originale.

procesul este destul de mult la fel, dar lucrăm doar cu directorul /mnt/snap acum. Urmează un rezumat al comenzilor:

extinderea dimensiunii instantaneului

când creăm un volum instantaneu, ar trebui să setăm o dimensiune pe care o considerăm adecvată pentru a stoca toate modificările aduse LV-ului original în timp ce instantaneul este la locul său. Cu toate acestea, este posibil să extindeți automat un volum instantaneu, dacă este necesar.

este important să rețineți că, dacă un instantaneu se umple complet, instantaneul este șters automat.

setările implicite nu permit creșterea automată a instantaneelor. Trebuie să permitem acest lucru. Configurația LVM2 este în / etc / lvm / lvm.conf. Dacă căutăm setările eficiente folosind grep:

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

având snapshot_autoextend_threshold setat la 100% înseamnă că instantaneul nu va crește niciodată. De îndată ce atingem pragul de 100%, instantaneul este șters. Dacă avem nevoie de autoextend activat ia în considerare setarea acest lucru la ceva de genul 70. În acest caz, când instantaneul devine plin de 70%, dimensiunea va fi mărită. Dimensiunea creșterii controlate de snapshot_autoexend_percent. Valoarea implicită este setată la 20%, ceea ce înseamnă că dimensiunea va crește cu 20% din dimensiunea actuală de fiecare dată când este necesară creșterea.

Write a Comment

Adresa ta de email nu va fi publicată.