KVM - disk, jako image u virtualniho serveru

Slávek Banko slavek.banko na axis.cz
Pátek Srpen 5 03:44:00 CEST 2016


On Thursday 04 of August 2016 21:43:28 Petr Podrabsky wrote:
> Je to bohuzel zdedena konfigurace. Moc lidi v okoli nemam, kteri s KVM
> pracuji a tak se snazim cist, jak maji ostatni KVM nainstalovane, abych
> to zlepsil. Mozne by stalo zato shrnout stavajici konfiguraci KVM
>
>
> 1 KVM server + 3 VM
>
> virtual mail server
> - image file pro OS
> - image file pro data
> virtual web server
> - image file pro OS
> - image file pro data
> virtual db server
> - image file pro OS
> - image file pro data
>
> Co jsem zatim zjistoval, tak komunikace v ramci VM mezi OS a bude mit
> vliv na IO operace. Dale si myslim, ze web by mohl byt dohromady s mail
> serverem (dalsi uspora IO operaci), jelikoz je potreba z webu posilat
> emaily. Zde je to mezi VM reseno pomoci ssh redirectu portu 25 na mail
> server. To jsou ve zkratce ty nejzasadnejsi veci, ktere si myslim, ze
> by se daly vylepsit. Vzhledem k IO operacim si myslim, ze nema smysl
> mit specialni image pro vsechny virtualy pro data.
>
> Zvetseni velikosti je vsude doporucovane pri vypnuti VM, coz pro
> klienty znamena vypadek sluzby. Pokud by se kopirovaly data o velikosti
> stovek GB, jednalo by se o hodinovy vypadek a to nejde.
>
> Budu vdecny za pripadna doporuceni nebo popostrceni, jakym zpusobem s
> virtualy zachazite.
>
> Petr
>

Pokud mohu konstatovat ze svých zvyklostí:

1) Na hostiteli místo image disků v souborech používat LVM a disky strojů 
mít coby LV. Odpadne tím režie souborového systému na hostiteli. A jako 
bonus získáte velmi jednoduchý způsob navyšování disků pro virtuální 
stroje - spuštění lvextent je tak snadné... :)

2) Je výhodné mít ve virtuálních strojích oddělený disk pro systém a disk 
(nebo disky) pro data => systémový a datový disk lze díky tomu zvětšovat 
nezávisle na sobě. Když si rozumně stanovíte velikost disku pro systém, 
tak obvykle není potřeba navyšovat jeho velikost. Zato u disku pro data 
může být navyšování dost běžné.

3) Na datovém disku vynechat MBR/GPT tabulku. Je zbytečnou překážkou při 
navyšování velikosti disku. Bez MBR/GPT tabulky nebude třeba po navýšení 
velikosti disku měnit i tabulku. A co především - nebude potřeba řešit 
reload tabulky po její změně, což jádro dělá nerado, pokud jsou oddíly 
připojené = používané. Pokud na datovém disku potřebujete více oddílů - 
typicky tmp, var, home, srv, jsou dvě cesty, jak to řešit bez MBR/GPT 
tabulky.

Buď můžete pro každý takový oddíl udělat na hostiteli samostatný image 
disku (tedy LV) a v hostech pak formátovat přímo disk jako celek = bez 
MBR/GPT tabulky. Po navýšení disku na hostiteli pak stačí hostovi poslat 
signál, že se disk zvětšil, a v hostovi poté už jen roztáhnout souborový 
systém - spuštění xfs_growfs je tak snadné... :) Nevýhodou ale je, že na 
hostiteli by byl přehršel oddílů všech hostů.

A nebo můžete v hostovi na jeho datovém disku udělat jeho vlastní LVM - 
opět přímo na disku jako celku = místo MBR/GPT tabulky bude LVM. Po 
navýšení disku na hostiteli pak stačí hostovi poslat signál, že se disk 
zvětšil, v hostovi poté provedete pvresize a z nově navýšeného LVM můžete 
hned navyšovat kapacitu jednotlivých LV hosta - spuštění lvextent && 
xfs_growfs je tak snadné... :)

V obou těchto způsobech lze navyšování velikosti disků / oddílů provádět 
plně za provozu = bez restartů, odstávek, zastavování služeb, odpojování 
souborových systémů.

Výjimkou je jen navyšování systémového disku. Za předpokladu, že hosté 
mají zavaděč systému na svém disku, je dobré mít na systémovém disku 
běžnou MBR/GPT tabulku, aby si hosté mohli svůj zavaděč bez obtíží na 
disk zapsat. Bohužel to ale přináší potřebu měnit tabulku po navýšení 
disku a stejně tak i problém s reloadem tabulky používaného disku. 
Prozatím bohužel nemám rozumnou cestu, jak se MBR/GPT vyhnout i na 
systémovém disku.

-- 
Slávek


Další informace o konferenci Linux