Vliv IO operací na výkon virtualizovaného stroje

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

Pro vytvoření optimalizovaného virtuálního stroje, je třeba si ujasnit jaký vliv na výkon virtualizovaného stroje má typ zvoleného virtuálního disku a jak s tím souvisí IO operace (čtení a zápis na disk).

Unixový OS

Schema virtual disc raw.svg

U nevirtualizovaného unixového stroje je z praktických důvodů výhodné, je-li systém rozdělen na několik samostatných diskových oddílů. I když pochopitelně lze mít (podobně jako u MS Windows celý systém na jednom spojitém disku.

/boot

Samostatný diskový oddíl /boot se zavaděčem, umístěný hned na prvním diskovém oddíle minimalizuje pravděpodobnost, že by se v případě nějakých hrátek s diskovými oddíly systém nepodařilo nabootovat.

  • velikost dat v něm obvykle nepřesáhne 80MB
  • počet souborů které obsahuje je zanedbatelný
  • Z IO operací se u něj uplatňuje pouze čtení při zavádění operačního systému. Zapisuje se do něj pouze je-li aktualizován zavaděč nebo jádro OS

swap

Význam odkládacího diskového oddílu (swap) se mění podle množství dostupné paměti a rychlosti s jakou systém stíhá zpracovávat obsah paměti. Do swapu se data z paměti odkládají pouze pokud nestačí množství přidělené paměti jinak ne.

  • "Swapovací diskový oddíl" se obvykle dělá 1,5krát větší než je velikost dostupné paměti, neboť se využívá také při uspávání OS na disk.
  • Je-li paměti dostatek a neplánujeme uspávát OS není swap zapotřebí
  • Z IO operací se u něj uplatňuje pouze zápis při odkládání obsahu paměti při velké zátěži, nebo při uspání OS na HDD.

Kořenový adresář /

Sám o sobě není nějak velký, pokud jsou jeho adresáře s největším množstvím dat připojeny jako samostatné diskové oddíly. Obvykle jde o následující adresáře:

/usr
Do tohoto adresáře se ukládá většina instalovaných aplikací. Také v něm administrátor může kompilovat jádro. Jeho oddělení od zbytku systému je výhodné z toho důvodu, že kontrolu jeho souborového systému lze provádět za běhu (diskový oddíl je přemountován aby byl ve stavu read-only). Tím lze mnimalizovat čas pro obnovu systému.
/srv
Tento adresář se používá pro serverové aplikace (web, ftp, aj.) U desktopu je většinou prázdný
/home
U desktopu adresář s největším mnosžstvím dat na kterém jsou umístěny uživatelské účty. Tím že je oddělený od systému, lze aktualizovat systém, aniž by hrozilo riziko ztráty či poškození uživatelských dat.

/var

Z hlediska objemu dat které obsahuje nejde o nijak velký adresář, ovšem z hlediska IO zatížení je zatížený nejvíc ze všech, jelikož se do něj odkládají logy a další systémové soubory.

"Raw" a "grow" formát disku

Schema virtual disc grow.svg

Při virtualizaci lze použít jak fyzický, síťový nebo virtuální disk. Virtuální disk ve formátu RAW není nic jiného než lokální soubor s obrazem disku, stejný jako když použijeme k zálohování příkaz 'dd'.

Na výkon virtualizovaného stroje pak nemá vliv jen rychlosti IO operací mezi virtualizovaným OS a jeho virtuálním diskem, ale také rychlost IO operací při ukládání změn v souboru virtuálního disku na disk fyzický.

Je-li virtuální disk v RAW formátu, je místo kam se budou data ukládat předem alokováno, kdežto u formátů které podporují "rostoucí" (growable) disk musí hostitelský systém před uložením data přerovnat, což pochopitelně vede k dalším IO operacím a tím i zpomalení IO operací ve virtualizovaném stroji.

Pochopitelně čím větší virtuální disk, tím větší zátěž. Proto je-li to možné, je lepší diskové oddíly virtuálního stroje u nichž probíhá mnoho IO operací, vytvořit jako samostatné virtuální disky v RAW formátu.


Použití "virtio" ovladačů

Schema virtual disc grow with virtio.svg

Pokud virtualizovaný systém používá pro přístup k virtuálnímu disku "virtio" ovladač, dojde k jeho výraznému zrychlení, protože veškeré IO operace mezi virtuálním strojem a jeho diskem probíhají v RAM, a teprve čas od času se uloží do souboru na lokálním fyzickém disku.

Na druhou stranu, když už na ukládání dojde, může být zátěž při ukládání změn tak velká, že může vést ke znatelnému zpomalení (až pozastavení) virtualizovaného stroje, neboť je tímto procesem přiškceno načítání z virtuálního disku. Zcela typicky se to projevuje tak, že to co je již načteno v paměti virtuálního stroje nabíhá bez problémů, kdežto to co vyžaduje načtení dalších dat z disku zdánlivě nereaguje.

Optimalizovaný virtuální stroj

Schema virtual disc with virtio.svg

Z výše uvedeného plyne, že je výhodné u virtuálního stroje rozdělit disky tak, aby IO operace spojené se zápisem na fyzický disk co nejméně zatěžovaly virtualizovaný systém a zároveň, aby byla minimalizována ztráta dat při ev. pádu stroje.

  1. Nepoužívat swap
  2. Adresář /var umístit do samostatného diskového oddílu v raw formátu
  3. Kořenový adresář / a zbytek systému umístit rovněž na disk v raw formátu, ale připojeném přes virtio
  4. Velké adresáře u kterých data narůstají postupně umístit na "rostoucí" disk