LVM (bloková zařízení)
Základní prvky LVM z hledika administrátora systému:
- PV - Physical volume (fyzický disk) - Libovolné blokové zařízení: oddíl na fyzickém disku (např. /dev/hda1), celý fyzický disk (např. /dev/hda), logický disk jiné LVM skupiny, etc.
- VG - Volume group - skupina disků, je výchozím prvkem pro práci s LVM. Sdružuje jednotlivá bloková zařízení do jednoho celku, v jehož rámci se pak definují a spravují logické disky.
- LV - Logical volume (logický disk) - se tvoří v rámci LVM skupiny. Operačnímu systému se tyto logické disky jeví jako fyzická bloková zařízení dm-1 (..a výše).
Základním prvkem LVM z hlediska operačního systému však není skupina PV zařízení ale rozsah, neboli extent.
- EXTENT
- je blok dat, vymezený rozsahem ( angl. extent), který může být uložen kdekoliv na kterémkoliv PV zařízení v rámci skupiny (VG). Jeho velikost je vždy násobkem tzv. fyzického rozsahu ( Physical Extent - PE) což je nejmenší možná velikost rozsahu (extentu) v rámci skupiny - VG.
- Maximální počet možných fyzických extentů (PE) je závislý na dostupné kapacitě všech fyzických blokových zařízení (PV) a nastavené maximální velikosti fyzického extentu (PE) v rámci skupiny (VG).
- Pokud fyzické blokové zařízení (PV) není součástí skupiny (VG), vykazuje nulový počet fyzických extentů (PE).
- Teprve po přidání fyzického blokového zařízení (PV) do skupiny (VG) se spočítá, kolik by se do jeho diskové kapacity mohlo vejít fyzických extentů, neboť jejich počet je závislý na nastavené velikosti fyzického extentu (PE) v rámci skupiny (VG).
Příprava blokových zařízení pro začlenění do LVM skupiny
Aby bylo možné blokové zařízení do LVM skupiny začlenit, musí mít nastaven správný identifikátor. To lze zajistit buď příkazem pvcreate, nebo i (v případě diskových oddílů) nastavením přes fdisk - a to tak že se příslušnému diskovému oddílu nastaví identifikátor 8e
.
Příklad demonstruje přípravu blokových zařízení pro začlenění do LVM skupiny:
- fyzického IDE disku
/dev/hda
- prvního primárního diskového oddílu na SATA disku
/dev/sda1
- a RAID pole
/dev/md1
stroj:~# pvcreate /dev/hda /dev/sda1 /dev/md1
|
Monitoring stavu blokových zařízení v rámci skupiny
pvscan
Příkaz pvscan vypisuje rychlé statistiky blokových zařízeních PV, které jsou v systému.
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
8e
- 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). - na ostatních blokových zařízeních které jsou ve skupině storage jsou obsazeny všechny extenty
To že jsou obsazeny všechny extenty apriori neznamená že je obsazená veškerá disková kapacita. Logické disky, které tyto extenty zabírají ve skutečnosti nemusí obsahovat žádná data. |
pvdisplay
Příkaz pvdisplay je určen ke zjišťování detailnějších informací o stavu jednotlivých blokových zařízeních v rámci LVM systému.
Z následujícího výpisu se můžete oproti stručnějšímu výpisu příkazu pvscan navíc dozvědět:
- jaká je velikost extentu a kolik jich lze na každé zařízení umístit
- že blokové zařízení
/dev/md1
má volných 92622 extentů tj. že další extenty budou v případě vytvoření dalšího logického disku, nebo zvětšení některého z již existujících umístěny právě sem.
Fragmentace v rámci LVM
Přesto, že se LVM snaží udržet rozsahy pokud možno kompaktní, časem může dojít k jejich rozdělení (neboli "fragmentaci"). U fragmentovaných logických disků (LV) se sniží výkon IO operací a jediným řešením je extenty srovnat a scelit.
Jak vlastně dochází k fragmentaci v rámci LVM skupiny?
Dochází k ní především při manipulaci s logickými disky (LV) v rámci skupiny (VG). Je-li logickými disky (LV) odstraněn, použije LVM uvolněný prostor při vytvoření nového, nebo roztažení již existujícího logického disku (LV). Díky tomu časem může dojít k takovému zpřeházení a rozsekání extentů jednotlivých logických disků, jako můžete názorně vidět na níže uvedeném schématu.
V následujícím příkladu se můžete pomocí příkazu lvs dozvědět do jaké míry je fragmentován logický disk storage
:
Scelení rozsahů lze provést stejným způsobem, jako když se připravuje fyzické blokové zařízení (PV) pro vyřazení ze skupiny (VG). Aby se však mohly rozdělené extenty srovnat, je dobré mít k dispozici alespoň jedno volné fyzické blokové zařízení (PV) s takovou kapacitou, jakou zabírá největší logický disk (LV) ve skupině (VG).
Příprava blokového zařízení na vyřazení ze skupiny - přesun dat
Pokud chceme scelit rozdělené rozsahy logického disku (LV), nebo potřebujeme vyhodit fyzické blokové zařízení (PV) ze skupiny (VG), můžeme pro přesun extentů použít příkaz pvmove. Rychlost přesunu je závislá na velikosti přesouvaných dat a možnostech řadiče.
Přesun (a scelení) extentů jednoho logického disku
Při scelování rozděleného rozsahu je třeba uvést příslušnou cestu. Lze použít buď přímo cestu k zařízení nebo symlink na toto blokové zařízení.
Následující příklad demonstruje přesun logického disku s názvem blok
, který patří do LVM skupiny data
. Tento logický disk byl v rámci skupiny vytvořen jako první, takže v systému je vidět také jako blokové zařízení /dev/dm-1
. Jak cesta /dev/data/blok
tak zařízení data-blok
v adresáři /dev/mapper
jsou symlinky na toto blokové zařízení.
Před spuštním přesunu..'
Z výpisů je vidět, že..
- vybraný logický disk má pouze jeden segment (tj. není frgmentován)
- a je umístěn celý na fyzickém blokovém zařízení
/dev/md1
, protože druhé fyzické zařízení/dev/md0p2
má všechny extenty volné (položka Allocated PE je nulová) - v systému je tento logický disk dostupný jako zařízení
/dev/dm-4
(Viz číslo za dvojtečkou položky Block device u jeho výpisu - a jeho velikost odpovídá 25 tis. fyzických extentů
Necháme tedy přesunout tento logický disk na volné fyzické zařízení /dev/md0p2
.
stroj:~# pvmove -n /dev/data/blok /dev/md1 /dev/md0p2
/dev/md1: Moved: 0,0%
/dev/md1: Moved: 1,0%
/dev/md1: Moved: 2,0%
...
/dev/md1: Moved: 99,3%
/dev/md1: Moved: 100,0%
|
Protože jsme neudali od kterého fyzického extentu se má začít rozsah ukládat, tak se data ukládají postupně od začátku.
Po přesunu..'
Přesun všech extentů - uvolnění fyzického disku
Pokud pouze potřebujeme uvolnit celý fyzický disk, pak není třeba udávat nic než které fyzické zařízení se má uvolnit. Pokud je dost místa pro přesun dat, budou se data postupně přesouvat na všechna zbylá zařízení ve skupině.
pvmove /dev/sda
|
- Mohu přijít o data, dojde-li během přesunu ke kolapsu?
- Ne. Přesun probíhá tak, že LVM vytvoří dočasné blokové zařízení
pvmove0
, tak jako při snapshotu. Původní zařízení je zamčeno, a dokud nedojde k úplnému přesunu, zůstávají data uložena tam kde byla. Teprve po úspěšném zkopírování všech datových bloků se původní obsazené extenty uvolní.
- Dá se přesun přerušit?
- Ano. V takovém případě však ale zůstane logický disk uzamčen, dokud přesun dat nedokončíte nebo nezrušíte parametrem --abort.
- Mohu za běhu přesunout zařízení které je namountované?
- Ano, musí však být před tím přemountováno do read-only režimu.