LVM

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

LVM (Logical Volume Management) je pružnější metodou správy diskového prostoru než RAID. Nevýhodou fyzických blokových zařízení (např. pevných disků) je obtížné přerozdělování volného místa po jejich prvotním rozdělení na diskové oddíly. LVM tento problém elegantně řeší přidáním logické vrstvy mezi fyzická média a operační systém. Tato logická vrstva umožňuje libovolně (pokud použitá zařízení podporují hotswap, tak i za chodu) přidávat (nebo odebírat) jiná bloková zařízení a tím podle potřeby měnit jak diskovou kapacitu tak řešit výměnu blokových zařízení, aniž by bylo nutné stroj restartovat. První verze LVM se v linuxovém jádře objevila roku 1998 (autorem byl Heinz Mauelshagen) a byla založena na LVM z HP-UX.

V čem je LVM výhodnější než RAID?

  • Umožňuje sloučit do jednoho zařízení ( Volume Groups ) bloková zařízení bez ohledu na jejich velikost a typ. Tj. jak fyzické disky, tak virtuální disky připojené přes loop, nebo přes síťová bloková zařízení.
  • Diskovou kapacitu logických blokových zařízení lze za běhu nejenom zvětšovat, ale také zmenšovat.
  • Logická bloková zařízení lze za běhu přesouvat mezi blokovými zařízeními, takže lze v případě potřeby blokové zařízení ze skupiny odebrat za běhu, bez toho, že by došlo ke ztrátě dat.
  • LVM podporuje snapshot blokových zařízení

Základním prvkem LVM je skupina blokových zařízení, spojená do jednoho celku. V rámci této skupiny lze tvořit logické celky, které se chovají jako klasická bloková zařízení.

Základní stavební jednotky se kterými LVM pracuje

  • Physical volume (fyzický disk) - oddíl na fyzickém disku (např. /dev/hda1), popřípadě celý fyzický disk (např. /dev/hda).
  • Volume group (skupina disků) - sdružuje jednotlivé fyzické svazky do jednoho celku, nad kterým se definují logické svazky.
  • Logical volume (logický disk) - se tvoří v rámci skupiny a operačnímu systému se jeví jako fyzické blokové zařízení.

Bloková zařízení pro LVM skupiny

Příprava blokového zařízení

Aby bylo možné blokové zařízení přidat do LVM skupiny, je třeba aby mělo nastaveno správný identifikátor. To lze zajistit buďto příkazem pvcreate, nebo u diskových oddílů nastavením přes fdisk - a to tak že nastavíme příslušnému diskovému oddílu identifikátor ...

Poznámka Příprava HDD disku /dev/hda, logického oddílu /dev/sda1 a raidového pole /dev/md1 pro integraci do LVM skupin(y):
pvcreate /dev/hda /dev/sda1 /dev/md1

Monitoring blokových zařízení v rámci skupiny

Ke zjišťování informací o stavu jednotlivých blokových zařízeních, které buďto jsou, nebo by mohly být součástí LVM skupin je určen příkaz pvdisplay. Ten, pokud nemá jako paramater uvedeno žádné konkrétní blokové zařízení vypíše informace o veškerých blokových zařízeních, které mají nastaven identifikátor ...

Poznámka
stroj:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/md2
  VG Name               storage
  PV Size               1,82 TiB / not usable 3,95 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              476931
  Free PE               0
  Allocated PE          476931
  PV UUID               Yjsx5u-59et-62Ki-MGkX-gfcv-JJdA-cD14Qr
   
  --- Physical volume ---
  PV Name               /dev/md1
  VG Name               storage
  PV Size               897,41 GiB / not usable 3,54 MiB
  Allocatable           yes 
  PE Size               4,00 MiB
  Total PE              229735
  Free PE               92622
  Allocated PE          137113
  PV UUID               MLA3Vx-0SFS-3N1Q-t8M6-iRcY-LNOa-W8TeNp
   
  "/dev/md3" is a new physical volume of "1,82 TiB"
  --- NEW Physical volume ---
  PV Name               /dev/md3
  VG Name               
  PV Size               1,82 TiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               8eGmWs-T7rC-jE86-lYiD-3qRF-drdW-CZ9b6f

Z výše uvedeného výpisu lze vyčíst, že..

  • v systému jsou přítomna tři bloková zařízení typu RAID, která mají identifikátor ...
  • z těchto tří zařízení jsou pouze dvě ( /dev/md1 a /dev/md2 ) součástí LVM skupiny s názvem storage
  • blokové zařízení /dev/md3 není prozatím součástí žádné skupiny a je prázdné (neobsahuje žádné extenty).
  • blokové zařízení /dev/md2 má obsazeno všechny extenty
  • blokové zařízení /dev/md1 má volných 92622 extentů tzn. že data případného dalšího logického disku by byla ukládána v rámci tohoto fyzického blokového zařízení.

Příprava blokového zařízení na vyřazení - přesun dat

Poznámka
pvmove /dev/sda

LVM skupina

Pro vytváření LVM skupin a k práci s nimi, musí být v systému nainstalován balík nástrojů lvm2 a v jádře zaveden modul dm-mod

Seskupení blokových zařízení do skupiny

Takto připravená bloková zařízení se seskupí do skupiny testovaci_skupina v jejímž rámci pak bude možné tvořit logické disky.

Poznámka
vgcreate testovaci_skupina /dev/hda /dev/sda1 /dev/md1

Monitoring LVM skupiny

Ke zjišťování informací o stavu LVM skupin je určen příkaz vgdisplay. Ten, pokud nemá jako paramater uveden žádnou konkrétní LVM skupinu vypíše informace o veškerých LVM skupinách, přítomných v systému.

Poznámka
stroj:~# vgdisplay
  --- Volume group ---
  VG Name               storage
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  16
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               2,70 TiB
  PE Size               4,00 MiB
  Total PE              706666
  Alloc PE / Size       614044 / 2,34 TiB
  Free  PE / Size       92622 / 361,80 GiB
  VG UUID               DilGo6-5ZAI-Gj6B-fElz-QHp1-DIIn-Y1beZG

Z výše uvedeného výpisu lze vyčíst, že..

  • v systému je přítomna pouze jedna LVM skupina s názvem storage
  • v rámci této skupiny existují dva logické disky (viz hodnota parametru Cur LV)
  • tato skupina je postavena nad dvěmi fyzickými blokovými zařízeními (viz hodnota parametru Cur PV)
  • celková kapacita této LVM skupiny může dosáhnout 2,70 TiB
  • velikost jednoho extentu je 4 MiB
  • celkem by tato skupina mohla zaplnit 706666 extentů (viz hodnota parametru Total PE), ale momentálně jich má obsazeno "pouze" 614044, takže pro případný další logický disk je k dispozici 92622 extentů o celkové kapacitě cca 361,80 GiB


Vyřazení blokového zařízení ze skupiny

Poznámka
vgreduce testovaci_skupina /dev/sda
Upozornění Před vyřazením blokového zařízení ze skupiny z něj musí být odsunuty veškeré extenty viz výše - #Příprava blokového zařízení na vyřazení - přesun dat

Rozšíření skupiny o další bloková zařízení

Rozdělení LVM skupiny

1, Uvolnit zařízení z <výchozí skupiny>, které bude patřit do <nové skupiny> pvmove /dev/sda /sdb

2, Rozdělit výchozí skupinu vgsplit <výchozí skupina> <nová skupina> <zařízení z původní skupiny, které bude patřit do nové skupiny>

3, Uklidit disky..

Přenesení LVM skupiny do jiného stroje

Přesun celé skupiny

1, odpojit všechny logické disky které patří do skupiny 2, deaktivovat skupinu (vgchange -an <jméno skupiny>) 3, připravit skupinu <jméno skupiny> na export (vgexport <jméno skupiny>)

Disky, resp. celou skupinu lze pak přendat do jiného stroje

Aktivace (import) skupiny

1, po přendání disků do jiného stroje nejprve příkazem pvscan identifikujeme skupinu.. 2, Příkazem vgimport <jméno skupiny> skupinu naimportujeme (na lvm1 musíme uvést i bloková zařízení co do ní patří) 3, Aktivace skupiny (vgchange -ay <jméno skupiny>

Logické disky v rámci LVM skupiny

nyní vytvoříme logický svazek jehož velikost bude součtem velikostí všech tří disků, řekněme že byly použity 100GB disky, vytvoříme tedy 300GB svazek:

lvcreate -L 300000 -n test_lv test_vg

ve vzniklém logickém svazku můžeme vytvořit souborový systém a připojit ho k přípojnému bodu:

mkreiserfs /dev/test_vg/test_lv nebo mkfs.ext3 /dev/test_vg/test_lv

mount /dev/test_vg/test_lv /mnt/data

Monitoring logických disků

Ke zjišťování informací o stavu logických disků v rámci LVM skupin je určen příkaz lvdisplay. Ten, pokud nemá jako paramater uveden žádný konkrétní logický disk vypíše informace o veškerých dostupných logických discích, přítomných v systému.

Poznámka
spike:~# lvdisplay
  --- Logical volume ---
  LV Name                /dev/storage/data
  VG Name                storage
  LV UUID                37A7V2-rycW-eGyk-jfIQ-fzMr-hH0C-Wl4H1E
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                2,33 TiB
  Current LE             611544
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Name                /dev/storage/vidle
  VG Name                storage
  LV UUID                MUzG2Z-n0kS-2yB2-9csa-Bxh4-HqCW-EH0SqG
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                9,77 GiB
  Current LE             2500
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

Z výše uvedeného výpisu lze vyčíst, že..

  • v systému jsou dva logické disky
  • oba logické disky jsou součástí jedné skupiny s názvem storage
  • logický disk s názvem data:
    • je v systému vytvořen jako blokové zařízení dm-0 (viz u posledního parametru - Block Device - číslo za dvojtečkou)
    • má velikost 2,33 TiB
    • je rozdělen do tří segmentů
    • a není připojen ( viz parametr # open)
  • logický disk s názvem vidle:
    • je v systému vytvořen jako blokové zařízení dm-1
    • má velikost 9,77 GiB
    • tvoří jeden segment
    • rovněž není připojen

Zrušení logického disku

Změní se pořadí disků, jak to ošetřit? Nepoužívat přímo zařízení, ale symlink v /dev/mapper

Úprava velikosti logických disků

Velikost těchto logických celků lze za chodu měnit a pokud to podporuje souborový systém, který na nich je (zvládá to kupř. ReiserFS, souborové systémy EXT, nebo XFS), i měnit za chodu jejich velikost.

lvreduce -L -50G /dev/test_vg/test_lv

resize2fs /dev/test_vg/test_lv (EXT2/3)

Zvětšíme logický svazek o 50GB

lvextend -L +50G /dev/test_vg/test_lv

resize2fs /dev/test_vg/test_lv (EXT2/3)

Přesuny logických disků v rámci skupiny fyzických zařízení

Snapshoty

LVM také umožňuje dělat za chodu snapshoty - tj. zakonzervovat stav diskového oddílu v určitý moment, a pak jej za chodu někam odzálohovat, přesto že se svazkem programy dále pracují (zapisují, vytvářejí a mažou soubory a podobně).

Přesun LVM skupiny na jiný stroj

V případě že potřebujeme přehodit disky na jiný stroj..