Rad s LVM-om | INTROSERV
EUR
european

EUR

usa

USD

Croatia Hr
Ex. VAT Ex. VAT 0%

Rad s LVM-om

LVM (Logical Volume Manager) je sustav za upravljanje diskovima koji dodaje sloj apstrakcije iznad fizičke pohrane. Omogućuje fleksibilnu dodjelu prostora na disku, promjenu veličine bez zaustavljanja sustava i izradu sigurnosnih kopija na temelju snapshotova. LVM se često koristi kao sloj pohrane za virtualizaciju. Na šifriranim sustavima LVM se često nalazi na uređaju šifriranom pomoću LUKS-a, tako da jedno otključavanje omogućuje pristup cijeloj grupi volumena.

Ovaj članak obrađuje instalaciju LVM-a na Linuxu, stvaranje fizičkih volumena, grupa volumena i logičkih volumena, promjenu njihovih veličina, rad sa snapshotovima te korištenje thin provisioninga.

Instalacija LVM-a

LVM je prema zadanim postavkama uključen u većinu Linux distribucija. Ako nije instaliran, instalirajte paket lvm2 pomoću upravitelja paketa sustava.

Na Debianu i Ubuntu:

sudo apt-get install lvm2

Na RHEL-u, CentOS Streamu, AlmaLinuxu i Rocky Linuxu:

sudo dnf install lvm2

Stvaranje Physical Volumea

Physical Volume (PV) osnovni je gradivni element LVM-a na najnižoj razini. Može biti cijeli disk (na primjer, /dev/sdb) ili jedna particija (na primjer, /dev/sdb1).

Info

Korištenje cijelog diska kao PV-a pojednostavljuje kasnije operacije promjene veličine jer prethodno nije potrebno povećavati osnovnu particiju. Korištenje particije preporučuje se kada disk također mora sadržavati podatke koji nisu povezani s LVM-om ili kada drugi alati sustava očekuju particijsku tablicu.

Stvorite Physical Volume pomoću pvcreate:

sudo pvcreate /dev/sdb

Zamijenite /dev/sdb putanjom do odgovarajućeg blok uređaja.

Provjerite rezultat pomoću pvdisplay:

sudo pvdisplay

Izlaz prikazuje Physical Volume kojima LVM trenutno upravlja, zajedno s njihovom veličinom i informacijama o Volume Groupu.

Stvaranje Volume Groupa

Volume Group (VG) kombinira jedan ili više Physical Volumea u jedan zajednički spremišni pool. Logical Volume stvaraju se iz tog poola.

Stvorite Volume Group pod nazivom vg0 iz jednog Physical Volumea:

sudo vgcreate vg0 /dev/sdb

Ili istovremeno iz više Physical Volumea:

sudo vgcreate vg0 /dev/sdb /dev/sdc

Provjerite rezultat pomoću vgdisplay:

sudo vgdisplay

Stvaranje Logical Volumea

Logical Volume (LV) sustav vidi kao običan blok uređaj. Možete ga formatirati datotečnim sustavom i montirati.

Stvorite Logical Volume lv0 veličine 10 GB unutar Volume Groupa vg0:

sudo lvcreate -n lv0 -L 10G vg0

Opcija -n određuje naziv Logical Volumea, a -L njegovu veličinu.

Provjerite rezultat pomoću lvdisplay:

sudo lvdisplay

Stvorite datotečni sustav na Logical Volumeu:

sudo mkfs.ext4 /dev/vg0/lv0

Stvorite točku montiranja i montirajte datotečni sustav:

sudo mkdir -p /mnt/lv0 sudo mount /dev/vg0/lv0 /mnt/lv0

Novi datotečni sustav sada je dostupan na /mnt/lv0. Kako biste ga automatski montirali pri pokretanju sustava, dodajte odgovarajući unos u /etc/fstab.

Info

LVM svaki Logical Volume izlaže putem dviju ekvivalentnih putanja: /dev/<vg>/<lv> i /dev/mapper/<vg>-<lv>. U gornjem primjeru to su /dev/vg0/lv0 i /dev/mapper/vg0-lv0. Obje putanje upućuju na isti uređaj; alati i konfiguracijske datoteke mogu koristiti bilo koju od njih.

Da biste vidjeli cijelu PV/VG/LV hijerarhiju zajedno s uobičajenim blok uređajima, pokrenite:

lsblk

Promjena veličine volumena

LVM podržava online promjenu veličine na svim razinama: Physical Volume, Volume Group i Logical Volume.

pvresize ažurira prikaz Physical Volumea u LVM-u nakon promjene veličine osnovnog blok uređaja (na primjer, nakon povećanja virtualnog diska u hipervizoru):

sudo pvresize /dev/sdb

vgextend dodaje Physical Volume postojećem Volume Groupu i na taj način povećava njegovu veličinu:

sudo vgextend vg0 /dev/sdc

vgreduce uklanja Physical Volume iz Volume Groupa:

sudo vgreduce vg0 /dev/sdc

lvresize mijenja veličinu Logical Volumea. Na primjer, za dodavanje 5 GB na lv0:

sudo lvresize -L +5G /dev/vg0/lv0

Ili za proširenje Logical Volumea tako da koristi sav slobodni prostor u Volume Groupu:

sudo lvresize -l +100%FREE /dev/vg0/lv0

Info

Obratite pozornost na razliku između -L (veliko slovo) i -l (malo slovo). Velika verzija prihvaća veličinu sa sufiksom jedinice, kao što su M, G ili T. Mala verzija prihvaća broj extenta ili postotak.

Promjena veličine Logical Volumea ne mijenja veličinu datotečnog sustava na njemu. Koristite odgovarajući alat za određeni datotečni sustav. Za ext2, ext3 i ext4:

sudo resize2fs /dev/vg0/lv0

Za XFS pokrenite xfs_growfs nad točkom montiranja datotečnog sustava.

Na podržanim datotečnim sustavima, uključujući ext4 i XFS, lvextend s opcijom -r mijenja veličinu Logical Volumea i datotečnog sustava u jednom koraku:

sudo lvextend -r -L +5G /dev/vg0/lv0

To je najčešći način online povećanja veličine.

Warning

Smanjivanje Logical Volumea izvodi se obrnutim redoslijedom: prvo se mora smanjiti datotečni sustav, a tek nakon toga Logical Volume. Ako postupak izvršite obrnutim redoslijedom, osnovni će uređaj biti skraćen dok datotečni sustav i dalje smatra da ima izvornu veličinu, što dovodi do uništenja podataka. Kod ext4 operacija se mora izvršiti offline. Odmontirajte datotečni sustav, pokrenite sudo e2fsck -f /dev/vg0/lv0, smanjite datotečni sustav pomoću sudo resize2fs /dev/vg0/lv0 <new_size>, smanjite Logical Volume na istu veličinu pomoću sudo lvresize -L <new_size> /dev/vg0/lv0, a zatim ponovno montirajte datotečni sustav. XFS uopće ne podržava smanjivanje; jedini način da XFS datotečni sustav učinite manjim jest izraditi sigurnosnu kopiju, stvoriti manji datotečni sustav i vratiti podatke.

Svaka od prethodno navedenih naredbi prihvaća --help za prikaz potpunog popisa opcija.

LVM snapshotovi

Snapshot bilježi stanje Logical Volumea u određenom trenutku. Radi pomoću mehanizma copy-on-write: kako se izvorni Logical Volume mijenja, izmijenjeni blokovi spremaju se u rezervirani prostor snapshota, pa snapshot nastavlja prikazivati izvorno stanje.

Snapshotovi su korisni za izradu sigurnosnih kopija pokrenutog datotečnog sustava koje odgovaraju stanju u trenutku pada sustava te za testiranje promjena koje se mogu poništiti brisanjem snapshota. Sigurnosne kopije usklađene s aplikacijom zahtijevaju dodatnu koordinaciju, primjerice zamrzavanje datotečnog sustava ili privremeno zaustavljanje aplikacije prije izrade snapshota.

Stvaranje snapshota

Stvorite snapshot pomoću lvcreate i opcije -s:

sudo lvcreate -L 1G -s -n myvolume_snap /dev/myvg/myvolume

Ova naredba stvara snapshot pod nazivom myvolume_snap Logical Volumea myvolume u Volume Groupu myvg, uz rezerviranih 1 GB za promjene. Veličinu rezerviranog prostora odredite prema količini podataka za koju se očekuje da će se promijeniti tijekom postojanja snapshota: snapshotovi uglavnom neaktivnih volumena trebaju malo prostora, dok volumeni s mnogo upisa mogu zahtijevati znatan dio izvorne veličine.

Za dugotrajne snapshotove i slučajeve koji uključuju velik broj snapshotova razmotrite thin snapshotove unutar thin poola. Oni prostor dobivaju iz zajedničkog poola prema potrebi umjesto da unaprijed rezerviraju fiksnu količinu, što je obično učinkovitije u pogledu iskorištavanja prostora.

Warning

Ako se izvorni Logical Volume promijeni više nego što snapshot može pohraniti, snapshot postaje nevažeći, a podaci koje je zabilježio bit će izgubljeni. Veličina snapshota treba pokriti očekivanu količinu promjena tijekom cijelog razdoblja njegova korištenja.

Korištenje snapshota

Snapshot se može montirati kao bilo koji drugi Logical Volume. Za sigurnosno kopiranje i pregled montirajte ga samo za čitanje, osim ako je pristup za pisanje stvarno potreban:

sudo mkdir -p /mnt/snapshot sudo mount -o ro /dev/myvg/myvolume_snap /mnt/snapshot

Nakon montiranja snapshot se može čitati radi sigurnosnog kopiranja ili pregleda.

Uklanjanje snapshota

Kada snapshot više nije potreban, uklonite ga pomoću lvremove:

sudo lvremove /dev/myvg/myvolume_snap

Uklanjanjem snapshota oslobađa se prostor koji je bio rezerviran za njega. Svi podaci zapisani izravno u snapshot, a ne u izvorni volumen, bit će izgubljeni.

Za vraćanje izvornog volumena u stanje zabilježeno snapshotom koristite lvconvert --merge umjesto lvremove:

sudo lvconvert --merge /dev/myvg/myvolume_snap

Nakon spajanja snapshot se potroši i automatski uklanja. Ako se izvorni volumen trenutačno koristi, spajanje se odgađa do sljedeće aktivacije volumena.

Thin provisioning

Thin pool je posebna vrsta Logical Volumea koja po potrebi dodjeljuje prostor za pohranu. Logical Volumei stvoreni unutar njega (thin volumei) mogu imati deklariranu veličinu koja premašuje stvarno slobodan prostor u poolu, a stvarni prostor troše samo blokovi koji su zapisani.

Ovo se široko koristi u virtualizaciji, gdje mnogi virtualni diskovi dijele jedan zajednički storage pool, ali rijetko svi istodobno dosegnu deklarirani kapacitet.

Stvaranje thin poola

Stvorite thin pool mythinpool veličine 50 GB u Volume Groupu myvg:

sudo lvcreate -L 50G -T -n mythinpool myvg

Opcija -L postavlja veličinu poola, -T govori alatu lvcreate da stvori thin pool, a -n postavlja naziv poola. LVM dodjeljuje pool iz slobodnog prostora Volume Groupa; na kraju naredbe mogu se navesti određeni Physical Volumei ako pool treba biti smješten na određenim uređajima.

Stvaranje thin volumea

Stvorite thin volume mythinvolume veličine 10 GB unutar mythinpool:

sudo lvcreate -V 10G -T myvg/mythinpool -n mythinvolume

Opcija -V postavlja virtualnu veličinu thin volumea, -T određuje thin pool, a -n postavlja naziv novog volumena.

Korištenje thin volumea

Thin volume koristi se kao i svaki drugi Logical Volume. Na njemu stvorite datotečni sustav:

sudo mkfs.ext4 /dev/myvg/mythinvolume

Nakon toga thin volume može se montirati i koristiti kao običan blok uređaj.

Warning

Budući da thin poolovi mogu koristiti overcommit, pratite njihovu stvarnu iskorištenost. Prostor za podatke i prostor za metapodatke mogu se neovisno potrošiti, a oba su kritična: ako thin pool ostane bez prostora za podatke ili metapodatke tijekom zapisivanja u thin volume, operacije zapisivanja na taj volumen počet će neuspješno završavati.

Trenutnu iskorištenost prostora za podatke i metapodatke svih Logical Volumea, uključujući thin poolove, možete provjeriti pomoću lvs:

sudo lvs -o +data_percent,metadata_percent

Kada se data_percent ili metadata_percent približi vrijednosti 100, proširite thin pool pomoću lvextend prije nego što se potpuno popuni.

Referenca naredbi

Uobičajene LVM naredbe grupirane prema razinama.

Physical Volumei:

  • pvcreate inicijalizira blok uređaj kao Physical Volume.
  • pvdisplay prikazuje detaljne informacije o Physical Volumeima.
  • pvs prikazuje sažetu tablicu Physical Volumea.
  • pvresize ažurira Physical Volume nakon promjene veličine osnovnog uređaja.

Volume Groupovi:

  • vgcreate stvara Volume Group iz jednog ili više Physical Volumea.
  • vgextend dodaje Physical Volume u Volume Group.
  • vgreduce uklanja Physical Volume iz Volume Groupa.
  • vgdisplay prikazuje detaljne informacije o Volume Groupovima.
  • vgs prikazuje sažetu tablicu Volume Groupova.

Logical Volumei:

  • lvcreate stvara Logical Volume.
  • lvextend i lvresize mijenjaju veličinu Logical Volumea.
  • lvremove uklanja Logical Volume.
  • lvconvert --merge spaja snapshot natrag s izvornim volumenom.
  • lvdisplay prikazuje detaljne informacije o Logical Volumeima.
  • lvs prikazuje sažetu tablicu Logical Volumea.

Za svakodnevnu upotrebu kratke naredbe za sažetak pvs, vgs i lvs obično su praktičnije od detaljnih varijanti *display. Svaka naredba podržava --help za prikaz potpunog popisa opcija.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA