LVM v Linuxu
LVM (Logical Volume Management) je v Linuxu nástroj, jak spojovat logická zařízení do větších celků. Využívá se pro vytváření velkých souborových systémů, pro možnost plynulého zvyšování kapacity souborových systémů bez nutnosti kopírování dat, pro možnost vyměňování disků, vytváření snímků souborových systémů a podobně.
Obsah
Struktura LVM
LVM operuje s PV (Physical Volume), VG (Volume Group) a LV (Logical Volume). Základem LVM jsou bloková zařízení (PV), ze kterých se pak sestavují svazky (VG) a na nich se vytvářejí logické jednotky (LV), která vystupují jako bloková zařízení a lze je tedy snadno naformátovat a použít jako nosné médium pro souborový systém.
PV – Physical Volume
PV jsou bloková zařízení (nejčastěji oddíl, ale může to být třeba i celý disk, případně RAID pole). Vytváří se příkazem:
pvcreate /dev/hda3
Dostupné PV lze vypsat příkazy:
pvscan pvdisplay
Velikost PV je udána v bajtech nebo v PE (Physical Extent).
VG – Volume Group
Svazky sdružují PV do větších celků. Parametrem příkazu vgcreate
je název nového svazku a pak seznam PV, které budou do VG zařazeny. Další PV lze samozřejmě do svazku přidávat dodatečně, případně je i odebírat (vše za provozu). Vytvoření svazku:
vgcreate NAZEV_VG /dev/hda3
Dostupné VG lze vypsat příkazy:
vgscan vgdisplay
Druhý příkaz zobrazí též velikost dostupného místa v bajtech a v PE.
VG svazky je nutné aktivovat (při startu systému je provedeno obvykle automaticky), k čemuž slouží příkaz:
vgchange -a y
LV – Logical Volume
Na VG svazku lze vytvořit logickou jednotku (LV), se kterou se dále může pracovat jako s běžným blokovým zařízením (např. oddílem na pevném disku). Následující příkaz vytvoří 1500 MB velkou logickou jednotku:
lvcreate -L1500 -nNAZEV_LV NAZEV_VG
Velikost vytvářeného LV je možné zadat v MB (přepínač -l
) nebo v počtu PE, který se pak uvádí pomocí přepínače -l
.
Seznam dostupných LV lze zobrazit příkazem:
lvscan lvdisplay
Vytvořené logické zařízení se nachází v adresáři /dev podobně, jako ostatní bloková zařízení (viz výstup zmíněných příkazů). Lze ho naformátovat a připojit do systému.
Administrace LVM
Deaktivace VG
Deaktivace VG se provádí automaticky při ukončování běhu počítače. Ručně ji lze provést příkazem:
vgchange -a n NAZEV_VG
Odstranění VG
VG lze odstranit příkazem:
vgremove NAZEV_VG
Zvětšení VG
Do VG lze přidat další PV, čímž dojde ke zvětšení VG. Následně je možné zvětšit LV, případně data přemístit a odebrat jiný PV a podobně. Přidávaný PV musí být samozřejmě nejprve vytvořen příkazem pvccreate
. Další PV lze do VG přidat příkazem:
vgextend NAZEV_VG /dev/hda4
Zmenšení VG
Z VG lze odstranit PV jen pokud PV není součástí nějakého LV. V takovém případě není z PV alokováno žádné PE, což lze zjistit pomocí příkazu:
pvdisplay
V případě, že žádný PE z vybraného PV není alokováno, lze ho z VG vyjmout příkazem:
vgreduce NAZEV_VG /dev/hda4
Odstranění LV
LV svazek může být po odpojení příkazem umount zrušen:
umount /dev/NAZEV_VG/NAZEV_LV lvremove /dev/NAZEV_VG/NAZEV_LV
Zvětšení LV
Pokud je ve VG svazku volné místo (tj. volné PE, viz příkaz vgdisplay
), je možné LV zvětšit:
lvextend -L12G /dev/NAZEV_VG/NAZEV_LV
Ve výše uvedeném příkazu se logická jednotka LV zvětšuje o 12 GB. Zvětšovat lze i o počet PE pomocí přepínač -l
. Po zvětšení logické jednotky je ještě nutné zvětšit souborový systém, který je na ní umístěn:
resize2fs /dev/NAZEV_VG/NAZEV_LV
Pokud není přítomna podpora pro online zvětšení, je nutné nejprve souborový systém odpojit příkazem umount.
Zmenšení LV
Při zmenšování LV svazku je nutné nejprve zmenšit souborový systém, který je na něm umístěn. Pak je nutné zjistit počet bloků, které zmenšený souborový systém zabírá a zmenšit logickou jednotku LV. Toho lze dosáhnout příkazy:
umount /dev/NAZEV_VG/NAZEV_LV resize2fs /dev/NAZEV_VG/NAZEV_LV 123456 tune2fs -l /dev/NAZEV_VG/NAZEV_LV lvreduce -l-67890 /dev/NAZEV_VG/NAZEV_LV
Ve výše zmíněných příkazech se nejprve odpojí souborový systém, který se následně zmenší. Pak jsou vypsány informace o zmenšeném souborovém systému, aby bylo vidět, jak je velký (příkazem tune2fs). Následně je adekvátně zmenšena i logická jednotka LV.
Odstranění PV
Pokud je ve VG svazku dostatek volného místa (PE jednotek), je možné do nich přemístit obsazené jednotky zvoleného PV pomocí příkazu:
pvmove /dev/hda4
Výše uvedeným příkazem budou všechny obsazené PE jednotky na PV svazku /dev/hda4 přemístěny do volného místa příslušného VG svazku. Příkaz lze spustit i když jsou logické jednotky LV na tomto VG svazku používány. Po dokončení přesunu se můžeme pomocí příkazu pvdisplay /dev/hda4 ujistit, že na tomto PV nejsou žádné obsazené PE jednotky. Pak je možné uvolněnou PV z VG svazku odstranit příkazem:
vgreduce NAZEV_VG /dev/hda4