GNU/Linux >> Znalost Linux >  >> Linux

Kompletní průvodce LVM v Linuxu pro začátečníky

Toto je úplný průvodce LVM (Logical Volume Management) v Linuxu pro začátečníky.

V tomto tutoriálu se naučíte koncept LVM, jeho součásti a proč byste jej měli používat.

Neomezím se pouze na teoretické vysvětlení. Ukážu také praktické příklady pro vytváření a správu LVM v Linuxu.

Stručně řečeno, poskytnu vám všechny potřebné informace, které budete potřebovat, abyste mohli začít pracovat s LVM v reálném světě.

Co je LVM v Linuxu?

LVM je zkratka pro Logical Volume Management. Toto je alternativní metoda správy úložných systémů než tradiční metoda založená na oddílech. V LVM místo vytváření oddílů vytváříte logické svazky a pak můžete tyto svazky stejně snadno připojit k systému souborů jako oddíly disku.

Jedinou výjimkou z předchozího prohlášení je, že pro /boot nemůžete používat logické svazky . Je to proto, že GRUB (nejběžnější bootloader pro Linux) nemůže číst z logických svazků. Známá alternativa ke GRUB, systemd-boot na druhou stranu čte pouze souborové systémy vfat, takže ani to nebude fungovat.

Součásti LVM

LVM má tři hlavní součásti:

  1. Fyzické objemy
  2. Skupiny svazků
  3. Logické svazky

Přestože se seznam skládá ze tří součástí, pouze dvě z nich jsou přímými protějšky systému dělení. Zaznamenává to následující tabulka.

Systém dělení disku LVM
Oddíly Logické svazky
Disky Skupiny svazků

Fyzické svazky nemají žádný přímý protějšek, ale o tom budu brzy mluvit.

Proč používat LVM?

Hlavní výhodou LVM je, jak snadné je změnit velikost svazku nebo skupiny svazků. Abstrahuje všechny ošklivé části (oddíly, surové disky) a ponechává nám centrální úložiště, se kterým můžeme pracovat.

Pokud jste někdy zažili hrůzu změny velikosti diskového oddílu, měli byste použít LVM.

Laboratorní příprava na praktické cvičení

Tento článek není jen teorie. Po cestě vám ukážu skutečné příklady příkazů a nejlepší způsob, jak se něco naučit, je pracovat s tím, prakticky. K tomu vám doporučuji použít virtuální stroj.

Abych vám s tím pomohl, připravil jsem jednoduchý soubor Vagrantfile, který můžete použít ke spuštění velmi lehkého virtuálního stroje s VirtualBoxem. Tento virtuální stroj má tři další disky, které vy i já můžeme použít pro níže uvedené příklady příkazů.

Vytvořte adresář někde ve vašem souborovém systému a uložte do něj následující soubor s názvem Vagrantfile .

Vagrant.configure "2" do |config|
    config.vm.box = "ubuntu/focal64"
    config.vm.hostname = "lvm"
    3.times {|i| config.vm.disk :disk, size: "5GB", name: "drive-#{i}"}
    config.vm.provider :virtualbox do |machine|
        machine.memory = 1024
        machine.cpus = 1
        machine.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
    end
end

# vi: set ft=ruby

Nebo pokud chcete, můžete použít wget nebo curl stáhnout soubor z mé podstaty.

wget https://gist.githubusercontent.com/debdutdeb/98ed1b6aef36885d07ce8247188dfd5e/raw/524259da5dfa2d8750883d01c8159829729e224d/Vagrantfile

Ujistěte se, že máte nainstalovaný Vagrant a VirtualBox.

Jakmile je soubor Vagrantfile na svém místě, nastavte proměnnou prostředí VAGRANT_EXPERIMENTAL na disks .

export VAGRANT_EXPERIMENTAL=disks

Nakonec spusťte virtuální počítač pomocí následujícího příkazu (ujistěte se, že jste ve stejném adresáři jako soubor Vagrantfile):

vagrant up

Jakmile je stroj spuštěn, můžete použít vagrant ssh do něj SSH a spusťte ukázkové příkazy z tohoto článku.

Nezapomeňte spustit vagrant destroy po dokončení ze stejného adresáře jako soubor Vagrantfile.

Instalace LVM

Než budete moci použít některý z příkazů, musíte nainstalovat lvm2 balík. Toto by mělo být předinstalován ve většině moderních distribucí, zejména v těch založených na Ubuntu. Ale přesto jsem to musel zmínit, než jsem se pustil dál. Chcete-li nainstalovat lvm2 , podívejte se do dokumentace vaší distribuce.

Ruky s LVM

Pro tento praktický návod jsem sestavil virtuální stroj s 40G kořenovým úložištěm (nedůležité) a třemi externími disky o velikosti 5G. Velikost těchto disků je libovolná.

[email protected]:~$ lsblk -o name,size,fstype
NAME    SIZE FSTYPE
loop0  55.5M squashfs
loop1  32.3M squashfs
loop2  70.4M squashfs
sda      40G 
└─sda1   40G ext4
sdb      10M iso9660
sdc       5G 
sdd       5G 
sde       5G

Jak můžete vidět, zařízení, která budu používat, jsou sdc , sdd a sde .

Pamatujete si, jak jsem vám řekl, že LVM má tři hlavní součásti?

  1. Fyzické objemy
  2. Skupiny svazků
  3. Logické svazky

Je čas je vidět jednoho po druhém.

1. Fyzické objemy

Úplně první věc, kterou potřebujete vědět o LVM, jsou fyzické svazky. Fyzické objemy jsou suroviny nebo stavební bloky, které se používají k dosažení abstrakce, kterou jsou logické objemy. Jednodušeji řečeno, fyzické svazky jsou logickou jednotkou systému LVM.

Fyzický svazek může být cokoli, nezpracovaný disk nebo diskový oddíl. Vytvoření a inicializace fyzického svazku jsou stejné. Obojí znamená, že pouze připravujete stavební bloky (tj. oddíly, disky) pro další operace. To bude za chvíli jasnější.

Nástroje: Všechny nástroje, které spravují fyzické svazky, začínají písmeny pv pro P fyzikální V světlo. Např. pvcreate , pvchange , pvs , pvdisplay atd.

Vše, co je uvedeno za tímto rámečkem, je destruktivní, pokud nepoužíváte virtuální prostředí nebo server v cloudu, kde nejsou uložena žádná důležitá data nebo k nimž se nelze dostat náhodou, radím vám, abyste s tím hned přestali.

Vytváření fyzických svazků

Fyzický svazek můžete vytvořit pomocí surového disku bez oddílů nebo samotných oddílů.

Jak jsem již zmínil, k mému virtuálnímu počítači jsou připojeny tři externí disky, začněme /dev/sdc .

Používáme pvcreate příkaz k vytvoření fyzického svazku. Stačí mu předat název zařízení a nic jiného.

sudo pvcreate /dev/sdc

Měli byste vidět něco takového:-

[email protected]:~$ sudo pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.

Dále budu rozdělovat /dev/sdd na stejné části. Použijte jakýkoli nástroj, cfdisk , parted , fdisk atd., existuje mnoho nástrojů k dosažení tohoto úkolu.

[email protected]:~$ lsblk -o name,size,fstype | grep sdd
sdd       5G 
├─sdd1  2.5G 
└─sdd2  2.5G

Nyní můžete rychle vytvořit dva další fyzické svazky z těchto dvou oddílů v jediném kroku, předat obě tato zařízení pvcreate najednou.

sudo pvcreate /dev/sdd1 /dev/sdd2

Podívejte se:-

[email protected]:~$ sudo pvcreate /dev/sdd1 /dev/sdd2
  Physical volume "/dev/sdd1" successfully created.
  Physical volume "/dev/sdd2" successfully created.

Výpis dostupných fyzických svazků

Existují tři příkazy, které můžete použít k získání seznamu dostupných fyzických nosičů, pvscan , pvs a pvdisplay . Obecně těmto příkazům nemusíte nic předávat.

pvscan :-

[email protected]:~$ sudo pvscan
  PV /dev/sdc                       lvm2 [5.00 GiB]
  PV /dev/sdd1                      lvm2 [2.50 GiB]
  PV /dev/sdd2                      lvm2 [<2.50 GiB]
  Total: 3 [<10.00 GiB] / in use: 0 [0   ] / in no VG: 3 [<10.00 GiB]

pvs :-

[email protected]:~$ sudo pvs
  PV         VG Fmt  Attr PSize  PFree 
  /dev/sdc      lvm2 ---   5.00g  5.00g
  /dev/sdd1     lvm2 ---   2.50g  2.50g
  /dev/sdd2     lvm2 ---  <2.50g <2.50g

pvdisplay :-

[email protected]:~$ sudo pvdisplay
  "/dev/sdc" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               SzSkdD-xKYa-4y7P-teyU-481p-uiQ8-qieMJJ
   
  "/dev/sdd1" is a new physical volume of "2.50 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdd1
  VG Name               
  PV Size               2.50 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               553Iy4-JJ21-LfIw-udtO-j9Cd-7gFS-iXXFVS
   
  "/dev/sdd2" is a new physical volume of "<2.50 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdd2
  VG Name               
  PV Size               <2.50 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               bf7ghn-QkPm-EUdp-GdyW-shMG-5sMn-VhNtYB

Jak můžete vidět, spolu s pouhým výpisem fyzických svazků vám tyto příkazy také poskytují spoustu dalších informací o těchto svazcích.

Odebrání fyzického svazku

Fyzický svazek můžete odebrat pomocí pvremove příkaz. Stejně jako pvcreate , stačí předat zařízení (která jsou inicializována jako fyzické svazky) pvremove příkaz.

Pro ukázku odstraním /dev/sdd2 ze seznamu.

sudo pvremove /dev/sdd2

Výstup by měl být shodný s tímto:-

[email protected]:~$ sudo pvremove /dev/sdd2
  Labels on physical volume "/dev/sdd2" successfully wiped.

Nyní uveďte fyzické svazky pomocí sudo pvs

[email protected]:~$ sudo pvs
  PV         VG Fmt  Attr PSize PFree
  /dev/sdc      lvm2 ---  5.00g 5.00g
  /dev/sdd1     lvm2 ---  2.50g 2.50g

/dev/sdd2 už tu není.

2. Skupiny svazků

Skupiny svazků jsou kolekce fyzických svazků. Je to další úroveň abstrakce v LVM. Skupiny svazků jsou úložný fond, který kombinuje úložnou kapacitu více nezpracovaných úložných zařízení.

Nástroje: Všechny názvy obslužných programů skupiny disků začínají vg , znamená V olume G roup, např. vgcreate , vgs , vgrename atd.

Vytváření skupin svazků

Skupiny svazků se vytvářejí pomocí vgcreate příkaz. První argument pro vgcreate je název, který chcete přidělit této skupině svazků, a zbytek je seznam fyzických svazků, které budou zálohovat fond úložiště.

sudo vgcreate lvm_tutorial /dev/sdc /dev/sdd1

Příklad:-

[email protected]:~$ sudo vgcreate lvm_tutorial /dev/sdc /dev/sdd1
  Volume group "lvm_tutorial" successfully created

Výpis skupin svazků

Výpis skupin nosičů je podobný výpisu fyzických nosičů, můžete použít různé příkazy s různou úrovní výřečnosti, vgdisplay , vgscan a vgs .

Osobně preferuji vgs příkaz sudo vgs

[email protected]:~$ sudo vgs
  VG           #PV #LV #SN Attr   VSize VFree
  lvm_tutorial   2   0   0 wz--n- 7.49g 7.49g

vgscan :-

[email protected]:~$ sudo vgscan
  Found volume group "lvm_tutorial" using metadata type lvm2

vgdisplay :-

[email protected]:~$ sudo vgdisplay 
  --- Volume group ---
  VG Name               lvm_tutorial
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               7.49 GiB
  PE Size               4.00 MiB
  Total PE              1918
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1918 / 7.49 GiB
  VG UUID               LYVE9P-vY0G-OAW6-an8q-yfBx-rrB1-YU61m1

Výpis fyzických svazků připojených ke skupině svazků

Pomocí následujícího příkazu můžete vypsat všechny fyzické svazky, které jsou připojeny ke konkrétní skupině svazků:-

sudo pvdisplay -S vgname=<volume_group_name> -C -o pv_name

Příklad:-

[email protected]:~$ sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name
  PV        
  /dev/sdc  
  /dev/sdd1

Můžete také získat počet fyzických svazků.

sudo vgdisplay -S vgname=<volume_group_name> -C -o pv_count

Příklad:-

[email protected]:~$ sudo vgdisplay -S vgname=lvm_tutorial -C -o pv_count
  #PV
    3

Rozšíření skupiny svazků

Rozšíření skupiny disků znamená přidání dalších fyzických disků do skupiny disků. Chcete-li tak učinit, vgextend je použit příkaz. Syntaxe je jednoduchá:-

vgextend <volume_group> <physical_volume1> <physical_volume2> ....

Pojďme rozšířit náš lvm_tutorial svazku podle /dev/sdd2 .

sudo vgextend lvm_tutorial /dev/sdd2

Zaměřte se na výstup:-

[email protected]:~$ sudo vgextend lvm_tutorial /dev/sdd2
  Physical volume "/dev/sdd2" successfully created.
  Volume group "lvm_tutorial" successfully extended

V sekci fyzického svazku jsme skončili odstraněním /dev/sdd2 jako fyzický svazek, ale oddíl nebo nezpracovaný disk musí být inicializován jako fyzický svazek, jinak jej LVM nebude moci spravovat jako součást skupiny svazků. Takže vgextend je připraven /dev/sdd2 před přidáním do skupiny svazků.

Nyní pro jistotu vypište fyzické svazky připojené k této skupině svazků.

sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name

Výstup:-

[email protected]:~$ sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name
  PV        
  /dev/sdc  
  /dev/sdd1 
  /dev/sdd2

/dev/sdd2 je nyní v seznamu podle očekávání.

Snížení skupiny svazků

Stejně jako rozšíření skupiny svazků znamená přidání dalšího fyzického svazku, jeho zmenšení znamená odebrání jednoho nebo více fyzických svazků.

Používáme vgreduce příkaz k tomu. Obecná syntaxe je následující:-

vgreduce <vgname> <physical_volume1> <physical_volume2> ....

Odeberme fyzické svazky /dev/sdc a /dev/sdd1 .

sudo vgreduce lvm_tutorial /dev/sdc /dev/sdd1

Příklad:-

[email protected]:~$ sudo vgreduce lvm_tutorial /dev/sdc /dev/sdd1
  Removed "/dev/sdc" from volume group "lvm_tutorial"
  Removed "/dev/sdd1" from volume group "lvm_tutorial"
Pokud má skupina svazků nějaké aktivní logické svazky, nebudete ji moci takto zmenšit.

Znovu vypište fyzické svazky.

sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name

Výstup:-

[email protected]:~$ sudo pvdisplay -S vgname=lvm_tutorial -C -o pv_name
  PV        
  /dev/sdd2

Tyto dva fyzické svazky jsou pryč.

Nyní v zájmu zbytku tohoto článku přidejte tyto dva fyzické svazky zpět.

sudo vgextend lvm_tutorial /dev/sdc /dev/sdd1

Odebrání skupiny svazků

Logický svazek můžete odstranit pomocí vgremove příkaz.

sudo vgremove lvm_tutorial

Tento příkaz hned nespouštějte, jinak byste museli znovu vytvořit skupinu svazků. Pokud si to chcete vyzkoušet, spusťte to na samém konci tohoto článku.

3. Logické svazky

To je to, s čím budete většinou pracovat. Logický svazek je jako oddíl, ale místo toho, aby seděl na nezpracovaném disku, je umístěn nad skupinou svazků. Můžete,

  • Naformátujte logický svazek pomocí libovolného souborového systému.
  • Připojte jej kamkoli do souborového systému, který chcete.

V této sekci se naučíte,

  • Jak vytvořit logické svazky.
  • Běžné operace na logickém svazku.
  • Změna velikosti logického svazku.
  • Odebrání logického svazku.

Nástroje: Všechny názvy obslužných programů skupiny disků začínají lv , znamená L ogické V světlo. např. lvcreate , lvs , lvreduce atd.vgcreate , vgs , vgrename atd.

Vytváření logických svazků

Logické svazky se vytvářejí pomocí lvcreate příkaz. Běžně používaná syntaxe vypadá následovně,

sudo lvcreate -L <size> -n <lvname> <vgname>

Dovolte mi to pro vás rozebrat:-

  • -L volba je pro velikost nového logického svazku, můžete použít libovolné celé číslo s "GB", "MB" nebo "KB" na konci. Např. "1 GB".
  • -n možnost je pojmenovat tento logický svazek.
  • Nakonec mu musíte předat název skupiny svazků, které bude tento logický svazek součástí. Při poskytování logického svazku s velikostí se tedy ujistěte, že skupina svazků má k dispozici místo.

Spusťte na virtuálním počítači následující příkaz:-

sudo lvcreate -L 5GB -n lv1 lvm_tutorial

Příklad výstupu:-

[email protected]:~$ sudo lvcreate -L 5GB -n lv1 lvm_tutorial
  Logical volume "lv1" created.

Běžné operace na logickém svazku

Jak jsem již řekl dříve, souborový systém můžete umístit na logický svazek a také jej připojit kamkoli na souborový systém.

Po vytvoření najdete logický svazek v /dev/<vgname>/<lvname> cesta. Například v našem případě bude svazek v /dev/lvm_tutorial/lv1 .

[email protected]:~$ ls -l /dev/lvm_tutorial/lv1 
lrwxrwxrwx 1 root root 7 May 17 02:09 /dev/lvm_tutorial/lv1 -> ../dm-0

Nyní jej můžete použít jako jakýkoli oddíl. Naformátujte jej pomocí ext4,

sudo mkfs.ext4 /dev/lvm_tutorial/lv1

Připojte jej na nějaké místo ve vaší aktuální adresářové struktuře, například /mnt ,

sudo mount -t ext4 /dev/lvm_tutorial/lv1 /mnt

Změna velikosti logického svazku

Logický svazek můžete rozšířit pomocí lvextend a zmenšete jeho velikost pomocí lvreduce příkaz. Nebo můžete použít jediný příkaz lvresize ke splnění obou úkolů.

Nejprve se podívejme, zda ve skupině svazků zbývá nějaké místo.

sudo vgs -S vgname=lvm_tutorial -o vg_free

Výstup:-

[email protected]:~$ sudo vgs -S vgname=lvm_tutorial -o vg_free
  VFree 
  <4.99g

Podle výstupu mi zbývá nějaké místo, takže zvětšíme velikost svazku o 2 GB.

Pamatujte, že logický svazek je stále připojen na /mnt .

[email protected]:~$ mount | grep '/mnt'
/dev/mapper/lvm_tutorial-lv1 on /mnt type ext4 (rw,relatime)

Pro změnu velikosti svazku použijte následující příkaz:-

sudo lvresize -L +2GB lvm_tutorial/lv1

Obecná syntaxe je asi tato:-

lvresize -L [+|-][Size] <vgname>/<lvname>

Symbol + nebo - za -L záleží na tom, zda se snažíte zvětšit nebo zmenšit objem.

Poté, co se velikost svazku zvětší, musí být také změněna velikost souborového systému. Pro ext4 je použit příkaz resize2fs .

sudo resize2fs /dev/lvm_tutorial/lv1

Výstup:-

[email protected]:~$ sudo resize2fs /dev/lvm_tutorial/lv1
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/lvm_tutorial/lv1 is mounted on /mnt; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/lvm_tutorial/lv1 is now 1835008 (4k) blocks long.
Ne všechny souborové systémy podporují horkou změnu velikosti, Ext4 a XFS jsou jedny z podporovaných. Doporučuji, abyste se jich drželi.

Zmenšení logického svazku je o něco složitější úkol a o tom zde v tomto článku mluvit nebudu. Zmenšuji velikost tohoto svazku o 1 GB.

Odebrání logického svazku

Logický svazek odstraníte pomocí lvremove příkaz. Syntaxe příkazu je následující:-

lvremove <vgname>/<lvname>

Spusťte tento příkaz na virtuálním počítači:-

sudo lvremove lvm_tutorial/lv1

Výstup:-

[email protected]:~$ sudo lvremove lvm_tutorial/lv1
Do you really want to remove and DISCARD active logical volume lvm_tutorial/lv1? [y/n]: y
  Logical volume "lv1" successfully removed

Existuje mnoho dalších operací proveditelných na logických svazcích, fyzických svazcích a skupinách svazků, ale není možné to vše napsat do jednoho článku.

Nechal jsem vám ještě jeden disk /dev/sde ve virtuálním stroji. Použijte to, procvičte si některé příkazy z tohoto článku, vytvořte novou skupinu svazků, rozšiřte stávající, prostě procvičte.

Doufám, že tento článek byl pro vás užitečný, pokud byste se o tom chtěli v budoucnu dozvědět více, dejte mi vědět v sekci komentářů níže.


Linux
  1. Průvodce linuxovým terminálem pro začátečníky

  2. Představení průvodce meziprocesovou komunikací v Linuxu

  3. Instalujte Linux Mint 19 na VirtualBox:Kompletní průvodce

  1. Průvodce pro začátečníky oprávněními pro Linux

  2. Linux Commands - Kompletní průvodce

  3. Průvodce pro začátečníky firewallem v Linuxu

  1. Kompletní průvodce instalací Linuxu na Chromebook

  2. Příručka pro začátečníky k řešení problémů se sítí v Linuxu

  3. Průvodce pro začátečníky pro navigaci v souborovém systému Linux