Delo z LVM | INTROSERV
EUR
european

EUR

usa

USD

Slovenia Sl
Ex. VAT Ex. VAT 0%

Delo z LVM

LVM (Logical Volume Manager) je sistem za upravljanje diskov, ki doda abstrakcijsko plast nad fizičnim pomnilnikom. Omogoča prilagodljivo dodeljevanje prostora na disku, spreminjanje velikosti med delovanjem sistema in ustvarjanje varnostnih kopij na podlagi posnetkov. Pogosto se uporablja kot pomnilniška plast za virtualizacijo. V šifriranih sistemih je LVM pogosto nameščen na napravi, šifrirani z LUKS, tako da eno odklepanje omogoči dostop do celotne skupine nosilcev.

Ta članek zajema namestitev LVM v Linuxu, ustvarjanje fizičnih nosilcev, skupin nosilcev in logičnih nosilcev, spreminjanje njihovih velikosti, delo s posnetki ter uporabo thin provisioning.

Namestitev LVM

LVM je privzeto vključen v večino distribucij Linuxa. Če ni nameščen, namestite paket lvm2 s sistemskim upravljalnikom paketov.

V Debianu in Ubuntuju:

sudo apt-get install lvm2

V RHEL, CentOS Stream, AlmaLinux in Rocky Linux:

sudo dnf install lvm2

Ustvarjanje fizičnega nosilca

Fizični nosilec (PV) je osnovni gradnik LVM na najnižji ravni. Lahko je celoten disk (na primer /dev/sdb) ali posamezna particija (na primer /dev/sdb1).

Info

Uporaba celotnega diska kot PV poenostavi poznejše spreminjanje velikosti, saj pred tem ni treba povečati osnovne particije. Uporaba particije je priporočljiva, kadar mora disk gostiti tudi podatke, ki niso povezani z LVM, ali kadar druga sistemska orodja pričakujejo particijsko tabelo.

Ustvarite fizični nosilec z ukazom pvcreate:

sudo pvcreate /dev/sdb

/dev/sdb zamenjajte s potjo do vaše blokovne naprave.

Rezultat preverite z ukazom pvdisplay:

sudo pvdisplay

Izpis vsebuje seznam fizičnih nosilcev, ki jih trenutno upravlja LVM, skupaj z njihovo velikostjo in informacijami o skupini nosilcev.

Ustvarjanje skupine nosilcev

Skupina nosilcev (VG) združi enega ali več fizičnih nosilcev v skupen prostor za shranjevanje. Iz tega prostora se ustvarijo logični nosilci.

Ustvarite skupino nosilcev z imenom vg0 iz enega fizičnega nosilca:

sudo vgcreate vg0 /dev/sdb

Ali iz več fizičnih nosilcev hkrati:

sudo vgcreate vg0 /dev/sdb /dev/sdc

Rezultat preverite z ukazom vgdisplay:

sudo vgdisplay

Ustvarjanje logičnega nosilca

Logični nosilec (LV) se sistemu prikaže kot običajna blokovna naprava. Na njem lahko ustvarite datotečni sistem in ga priklopite.

Ustvarite logični nosilec lv0 velikosti 10 GB znotraj skupine nosilcev vg0:

sudo lvcreate -n lv0 -L 10G vg0

Zastavica -n določa ime logičnega nosilca, -L pa njegovo velikost.

Rezultat preverite z ukazom lvdisplay:

sudo lvdisplay

Ustvarite datotečni sistem na logičnem nosilcu:

sudo mkfs.ext4 /dev/vg0/lv0

Ustvarite točko priklopa in priklopite datotečni sistem:

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

Novi datotečni sistem je zdaj na voljo v /mnt/lv0. Če ga želite samodejno priklopiti ob zagonu sistema, dodajte ustrezen vnos v /etc/fstab.

Info

LVM vsak logični nosilec omogoča prek dveh enakovrednih poti: /dev/<vg>/<lv> in /dev/mapper/<vg>-<lv>. V zgornjem primeru sta to /dev/vg0/lv0 in /dev/mapper/vg0-lv0. Obe poti kažeta na isto napravo; orodja in konfiguracijske datoteke lahko uporabljajo katero koli od njiju.

Če želite videti celotno hierarhijo PV/VG/LV skupaj z običajnimi blokovnimi napravami, zaženite:

lsblk

Spreminjanje velikosti nosilcev

LVM podpira spreminjanje velikosti med delovanjem na vseh ravneh: fizičnih nosilcev, skupin nosilcev in logičnih nosilcev.

pvresize posodobi pogled LVM na fizični nosilec, potem ko je bila spremenjena velikost osnovne blokovne naprave (na primer po povečanju navideznega diska v hipervizorju):

sudo pvresize /dev/sdb

vgextend doda fizični nosilec v obstoječo skupino nosilcev in s tem poveča njeno velikost:

sudo vgextend vg0 /dev/sdc

vgreduce odstrani fizični nosilec iz skupine nosilcev:

sudo vgreduce vg0 /dev/sdc

lvresize spremeni velikost logičnega nosilca. Če želite na primer dodati 5 GB k lv0:

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

Ali razširiti logični nosilec tako, da uporabi ves prosti prostor v skupini nosilcev:

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

Info

Upoštevajte razliko med -L (velika črka) in -l (mala črka). Različica z veliko črko sprejme velikost s pripono enote, kot so M, G ali T. Različica z malo črko sprejme število extentov ali odstotek.

Spreminjanje velikosti logičnega nosilca ne spremeni velikosti datotečnega sistema na njem. Uporabite ustrezno orodje za posamezni datotečni sistem. Za ext2, ext3 in ext4:

sudo resize2fs /dev/vg0/lv0

Za XFS zaženite xfs_growfs za točko priklopa datotečnega sistema.

Pri podprtih datotečnih sistemih, vključno z ext4 in XFS, lvextend z zastavico -r spremeni velikost logičnega nosilca in datotečnega sistema v enem koraku:

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

To je najpogostejši način spletnega povečanja velikosti.

Warning

Zmanjševanje logičnega nosilca poteka v obratnem vrstnem redu: najprej je treba zmanjšati datotečni sistem in šele nato logični nosilec. Če vrstni red obrnete, se osnovna naprava skrajša, medtem ko datotečni sistem še vedno meni, da ima prvotno velikost, kar uniči podatke. Pri ext4 je treba operacijo izvesti brez povezave. Odklopite datotečni sistem, zaženite sudo e2fsck -f /dev/vg0/lv0, zmanjšajte datotečni sistem z ukazom sudo resize2fs /dev/vg0/lv0 <new_size>, zmanjšajte logični nosilec na enako velikost z ukazom sudo lvresize -L <new_size> /dev/vg0/lv0 in nato datotečni sistem ponovno priklopite. XFS zmanjševanja sploh ne podpira; edini način za zmanjšanje datotečnega sistema XFS je izdelava varnostne kopije, ustvarjanje manjšega datotečnega sistema in obnovitev podatkov.

Vsak zgornji ukaz podpira možnost --help, ki prikaže celoten seznam možnosti.

Posnetki LVM

Posnetek zajame stanje logičnega nosilca v določenem trenutku. Deluje po mehanizmu copy-on-write: ko se prvotni logični nosilec spremeni, se spremenjeni bloki shranijo v rezerviran prostor posnetka, zato posnetek še naprej prikazuje prvotno stanje.

Posnetki so uporabni za ustvarjanje varnostnih kopij delujočega datotečnega sistema, skladnih z morebitnim izpadom, in za testiranje sprememb, ki jih je mogoče razveljaviti z odstranitvijo posnetka. Varnostne kopije, skladne z aplikacijo, zahtevajo dodatno usklajevanje, na primer zamrznitev datotečnega sistema ali začasno ustavitev aplikacije pred izdelavo posnetka.

Ustvarjanje posnetka

Ustvarite posnetek z ukazom lvcreate in zastavico -s:

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

To ustvari posnetek z imenom myvolume_snap logičnega nosilca myvolume v skupini nosilcev myvg in rezervira 1 GB za spremembe. Velikost rezerviranega prostora izberite glede na količino podatkov, za katero pričakujete, da se bo spremenila v času obstoja posnetka: posnetki večinoma nedejavnih nosilcev potrebujejo malo prostora, medtem ko lahko pogosto zapisovani nosilci zahtevajo znaten delež prvotne velikosti.

Pri dolgotrajnih posnetkih in primerih uporabe z velikim številom posnetkov razmislite o uporabi thin posnetkov znotraj thin poola. Prostor pridobivajo iz skupnega poola po potrebi, namesto da bi vnaprej rezervirali fiksno količino prostora, kar je običajno učinkovitejše z vidika porabe prostora.

Warning

Če se prvotni logični nosilec spremeni bolj, kot lahko posnetek shrani, posnetek postane neveljaven in podatki, ki jih je zajel, se izgubijo. Velikost posnetka določite tako, da bo pokrila pričakovano količino sprememb v času njegovega obstoja.

Uporaba posnetka

Posnetek je mogoče priklopiti kot kateri koli drug logični nosilec. Za postopke varnostnega kopiranja in pregledovanja ga priklopite samo za branje, razen če je dostop za pisanje dejansko potreben:

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

Ko je posnetek priklopljen, ga lahko berete za varnostno kopiranje ali pregledovanje.

Odstranjevanje posnetka

Ko posnetek ni več potreben, ga odstranite z ukazom lvremove:

sudo lvremove /dev/myvg/myvolume_snap

Odstranitev posnetka sprosti prostor, ki ga je rezerviral. Vsi podatki, zapisani neposredno v posnetek in ne v izvirni nosilec, se izgubijo.

Če želite prvotni nosilec povrniti v stanje, ki ga je zajel posnetek, uporabite lvconvert --merge namesto lvremove:

sudo lvconvert --merge /dev/myvg/myvolume_snap

Po združitvi se posnetek porabi in samodejno odstrani. Če je prvotni nosilec trenutno v uporabi, se združitev odloži do njegove naslednje aktivacije.

Thin provisioning

Thin pool je posebna vrsta logičnega nosilca, ki prostor za shranjevanje dodeljuje po potrebi. Logične nosilce, ustvarjene znotraj njega (thin volume), je mogoče ustvariti z navedeno velikostjo, ki presega dejansko prosti prostor v poolu, pri čemer dejanski prostor porabljajo le zapisani bloki.

To se pogosto uporablja pri virtualizaciji, kjer več navideznih diskov uporablja en skupni pomnilniški pool, vendar le redko vsi hkrati dosežejo svojo navedeno zmogljivost.

Ustvarjanje thin poola

Ustvarite thin pool mythinpool velikosti 50 GB v skupini nosilcev myvg:

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

Zastavica -L določa velikost poola, -T ukaže programu lvcreate, naj ustvari thin pool, -n pa določa njegovo ime. LVM pool dodeli iz prostega prostora skupine nosilcev; na koncu ukaza lahko navedete določene fizične nosilce, če mora biti pool nameščen na določenih napravah.

Ustvarjanje thin volume

Ustvarite thin volume mythinvolume velikosti 10 GB znotraj mythinpool:

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

Zastavica -V določa navidezno velikost thin volume, -T določa thin pool, -n pa določa ime novega nosilca.

Uporaba thin volume

Thin volume se uporablja enako kot kateri koli drug logični nosilec. Na njem ustvarite datotečni sistem:

sudo mkfs.ext4 /dev/myvg/mythinvolume

Nato lahko thin volume priklopite in uporabljate kot običajno blokovno napravo.

Warning

Ker je thin pool mogoče nadomestno dodeljevati, spremljajte njegovo dejansko uporabo. Tako prostor za podatke kot prostor za metapodatke se lahko izčrpata neodvisno drug od drugega in oba sta kritična: če thin pool med pisanjem v thin volume zmanjka prostora za podatke ali metapodatke, bodo operacije pisanja v ta nosilec začele odpovedovati.

Trenutno porabo podatkovnega prostora in prostora za metapodatke vseh logičnih nosilcev, vključno s thin pooli, lahko preverite z ukazom lvs:

sudo lvs -o +data_percent,metadata_percent

Ko se data_percent ali metadata_percent približuje 100, razširite thin pool z ukazom lvextend, preden se popolnoma zapolni.

Referenca ukazov

Pogosti ukazi LVM, razvrščeni po ravneh.

Fizični nosilci:

  • pvcreate inicializira blokovno napravo kot fizični nosilec.
  • pvdisplay prikaže podrobne informacije o fizičnih nosilcih.
  • pvs prikaže zgoščeno preglednico fizičnih nosilcev.
  • pvresize posodobi fizični nosilec po spremembi velikosti osnovne naprave.

Skupine nosilcev:

  • vgcreate ustvari skupino nosilcev iz enega ali več fizičnih nosilcev.
  • vgextend doda fizični nosilec v skupino nosilcev.
  • vgreduce odstrani fizični nosilec iz skupine nosilcev.
  • vgdisplay prikaže podrobne informacije o skupinah nosilcev.
  • vgs prikaže zgoščeno preglednico skupin nosilcev.

Logični nosilci:

  • lvcreate ustvari logični nosilec.
  • lvextend in lvresize spremenita velikost logičnega nosilca.
  • lvremove odstrani logični nosilec.
  • lvconvert --merge združi posnetek nazaj z njegovim izvornim nosilcem.
  • lvdisplay prikaže podrobne informacije o logičnih nosilcih.
  • lvs prikaže zgoščeno preglednico logičnih nosilcev.

Za vsakodnevno uporabo so kratki zbirni ukazi pvs, vgs in lvs običajno priročnejši od podrobnih različic *display. Vsak ukaz podpira možnost --help, ki prikaže celoten seznam možnosti.

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