Portál AbcLinuxu, 1. května 2025 04:54
LVM slouží k vytváření a úpravám diskových oddílů za běhu systému. Článek obsahuje základní popis LVM2 (Logical Volume Manager) a podrobný návod pro začátečníky. Krok za krokem je vysvětleno, jak s LVM pracovat, a současně na příkladu ukázáno, jak vytvořit 20GB a 140GB logické oddíly na 60GB a 100GB discích.
LVM dnes existuje ve dvou verzích: LVM1 a LVM2. V tomto článku se budu zabývat LVM2. Podpora LVM1 byla v jádrech řady 2.4 a LVM2 je v jádrech řady 2.6, ale existují i LVM2 patche pro současná jádra 2.4.
Možné případy využití LVM:
Určitě se najdou i jiné možnosti.
Než použijeme LVM, máme disky a na nich vytvořené (např. nástrojem fdisk) diskové oddíly. Fyzické disky jsou v Linuxu obvykle označeny hda, hdb, atd., případně sda, sdb, atd. a fyzické diskové oddíly ještě navíc číslem (hda1, hda2, sdb1, atd.). Mezi fyzickými disky není možné přesouvat volné místo a mezi fyzickými diskovými oddíly jen s obtížemi. Zde nastupuje LVM. Určíme fyzické diskové oddíly, které bude LVM používat a tím vznikne LVM fyzický disk/diskový oddíl (PV - physical volume).
Dalším krokem je tyto fyzické diskové oddíly spojit do skupiny disků/diskových oddílů (VG - volume group). Tato skupina bude obsahovat volné místo ze všech spojených fyzických diskových oddílů. Ve skupině musí být minimálně jeden fyzický diskový oddíl (zejména na menších systémech se používá pouze jeden). Když jsme všechno určené místo sloučili, nezbývá než ho opět rozdělit.
Výsledkem našeho snažení budou logické diskové oddíly (LV - logical volume). Při dělení si můžeme vybrat ze dvou obvyklých postupů. První postup je rozdělit veškeré dostupné místo a, pokud nám časem toto rozdělení přestane vyhovovat, budeme volné místo přesouvat z jednoho logického oddílu do jiného (např. souborové systémy ext3 a reseirFS umožňují zvětšování i zmenšování). Druhý postup je vytvořit oddíly jen tak velké, jak potřebujeme, a zbylé volné místo časem přidáme, kam bude třeba. U některých souborových systémů je možný pouze tento postup, protože neumožňují zmenšení, ale pouze zvětšení (jfs, xfs). Druhý postup je obvyklý i pro postupné vytváření virtuálních počítačů. Pro nový virtuální počítač vytvoříme jeden logický oddíl pro data (root oddíl) a druhý pro swap (případně ještě další logické oddíly). V případě potřeby můžeme tyto oddíly zvětšovat a tím přidávat virtuálním počítačům další místo na disku.
Už víme teoreticky, jak LVM funguje, a teď si ukážeme, jak vše vytvořit v praxi.
Vytváření fyzických oddílů není obsahem tohoto článku, mohu jen doporučit nástroj fdisk. Je možné použít i celý disk (na obrázku sdb), ale to se nedoporučuje. Operační systémy, které nepodporují LVM, budou disk nerozdělený na fyzické diskové oddíly považovat za prázdný a hrozí zde ztráta všech dat. Pokud chceme použít celý fyzický disk, je lepší na něm vytvořit jeden fyzický oddíl přes celý disk (na obrázku sdb1). Ten bude ostatními systémy považován za neznámý. V tuto chvíli předpokládám, že máme vytvořené fyzické diskové oddíly. Inicializace diskového oddílu se provede příkazem pvcreate
. Jako parametr uvedeme jeden nebo více diskových oddílů. Fyzické diskové oddíly na obrázku inicializujeme příkazem
pvcreate /dev/sda2 /dev/sdb1
Tímto příkazem inicializujeme pro LVM druhý fyzický oddíl disku sda a první fyzický oddíl disku sdb. Informace o všech inicializovaných oddílech zobrazíme příkazem pvdisplay (jako parametr můžeme zadat jeden nebo více fyzických oddílů, o kterých chceme informace zobrazit).
Fyzické oddíly připravené v prvním kroku spojíme do skupiny diskových oddílů příkazem vgcreate
. První parametr tohoto příkazu je název nové skupiny a další parametry jsou spojované fyzické oddíly. Skupinu diskových oddílů data
na obrázku vytvoříme příkazem
vgcreate data /dev/sda2 /dev/sdb1
Pokud nechceme žádné speciality, skupina oddílů bude jen jedna. Informace o existujících skupinách oddílů zobrazíme příkazem vgdisplay (jako parametr můžeme zadat jednu nebo více skupin oddílů, o kterých chceme informace zobrazit). Z tohoto výpisu zjistíme i velikost celé skupiny a zbývající volné místo, které ještě není přiděleno žádnému logickému oddílu.
Skupinu oddílů máme vytvořenou, nastal čas volné místo rozdělit na logické diskové oddíly. Po přečtení předchozího textu už zajisté tušíte, že logické oddíly se budou vytvářet příkazem lvcreate
. Parametr -L je velikost vytvářeného logického oddílu v megabytech, název oddílu se určí parametrem -n a poslední parametr je název skupiny oddílů, kde bude logický oddíl vytvořen. Příkazem
lvcreate -L20000 -nmp3 data
vytvoříme 20GB diskový oddíl s názvem mp3
ve skupině oddílů data
. Nový logický diskový oddíl bude /dev/data/mp3
. Logický oddíl filmy
vytvoříme příkazem
lvcreate -L140000 -nfilmy data
Z obrázku je vidět, že máme dva fyzické disky o velikosti 100 GB a logický oddíl filmy
má 140 GB, což znamená, že používá místo z obou fyzických oddílů (sda2 a sdb1). Přesnější určení přidělovaného místa je možné použitím PE (physical extent) místo MB. V tomto článku nebudeme rozebírat, co to je, ale MB určené parametrem -L
se přepočítají na PE, které můžeme přímo určit parametrem -l
.
Poslední krok před připojením logického oddílu je vytvoření souborového systému. Vybraný souborový systém (ext3, reiserFS, ...) vytvoříme způsobem obvyklým pro použitou distribuci Linuxu (např. mkfs.ext3, mkfs.reiserfs, ...). Souborový systém ext3 na novém logickém oddílu vytvoříme příkazem mkfs.ext3 /dev/data/mp3
. Nový logický oddíl připojíme příkazem mount /dev/data/mp3 /cesta/kam/připojit
.
Nový logický disk máme připojený a nezbývá než upozornit, že pokud použijeme LVM i pro oddíl, ze kterého se zavádí systém (/boot), můžeme se dostat do problémů s bootem, protože zavaděče systému nemusí LVM zvládat. Kořenový souborový systém (/) může být i logický (LVM) oddíl, ale initrd musí obsahovat podporu LVM. V distribucích, se kterými jsem pracoval, skript mkinitrd už s LVM počítal.
vgextend
Zvětšování LV (např. když dochází místo na jednon LV) pokud ve VG je ještě volno: lvextend
případně s parametrem --resizefs
Myslím že na další díl by to nevydalo. Teď když už víte co je PV, VG a LV tak si pročtěte výstup příkazu lvm help
a uvidíte že na LVM nic složitého není.
Super, díky. Už se těším.
Lze získat z poškozeného LV nějak data, nebo popřípadě opravit??
Jednou mi na virtuálním stroji padl / a nemohl jsem ho již nijak detekovat. Jelikož to nebyl důležitý server tak jsem ho znovu nainstaloval a dále neřešil.root@kryten:~# pvs PV VG Fmt Attr PSize PFree /dev/md1 dwarf lvm2 a- 182.54G 56.95G root@kryten:~# lvs LV VG Attr LSize Origin Snap% Move Log Copy% holly-disk dwarf -wi-ao 40.00G holly-swap dwarf -wi-ao 1.00G ... toaster-disk dwarf -wi-a- 10.00G toaster-swap dwarf -wi-a- 256.00M root@kryten:~# vgs VG #PV #LV #SN Attr VSize VFree dwarf 1 12 0 wz--n- 182.54G 56.95G
- prakticke zmensenie/zvacsenie filesystemu ext3 a nasledne particie LVM - ukazka prace so snapshotmi (raz som to skusal, ale velmi sa mi nedarilo) - mirroring (tusim to uz niekto spominal).Dalej je mozne nieco take, ze mam LVM particiu na 2 strojoch a za behu systemu by som rad zosycnhronizoval ich obsah a nasledne presunul virtualny stroj Xenu z jedneho na druhy. Uvazoval som o mirrore cez RAID + ATA over ethernet, vcelku by to nejak slo, ale mozno by to bolo krajsie cez LVM.
-E resize=...
'? Tak či onak bych to považoval spíš za problém ext3 než LVM - podle vašeho popisu to dopadne naprosto stejně i v případě, že půjde místo logical volume o obyčejnou partition.
Ja mam treba XEN s Dom0 na nem LVM pro DomUs. Presne si to uz nepamatuji (nedelam to kazdy den),ale nebyl problem zmenit velikost LVM pro DomU za behu. Bohuzel zmena se promitla az po restartu DomU. Nevim jak to je s aktualnim Xenem, ale kdyby jsi potreboval vedet, tak to muzu vyzkouset a napsat podrobnosti.
Vyuziji tuto diskuzi k otazce. LVM2 vyuzivam avsak jsem nenasel odpoved na nasleduji vec.
Musi byt snapshot stejne velky nebo vetsi nez logical volume? Zkousel i snapshot o velikosti 1GB na 10GB logical volume (ne plne) a fungovalo. Rad bych se ujistil jak to je.
Je mozne udelat snapshot na jinou volume group? Na jedne volume group mi dochazi misto a druhou volume group mam prazdnou na zalohy. Bohuzel snapshot se mi nedari na jinou volume group. Mate nejaky koment? Zase se chci spise ujistit.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.