Portál AbcLinuxu, 7. května 2025 12:20
V minulém díle jsme po lehkém úvodu prošli správu výpočetních zdrojů Linux-VServeru. V posledním díle seriálu se podíváme na stejnou problematiku u OpenVZ.
Minule jsme se zmínili, k čemu vlastně správa výpočetních zdrojů slouží, postupně jsme ji probrali u Linux-VServeru, který vychází z limitů SVr4, 4.3BSD a POSIX.1-2001. Zkušený správce tak pouze rozšíří své znalosti. U OpenVZ je tomu jinak. Autoři vytvořili zcela nové metody a použili jiné postupy. Pojďme se podívat jaké.
Parametry pro přidělované systémové prostředky virtuálním serverům OpenVZ můžeme rozdělit do tří kategorií: primární, sekundární a pomocné. Primární slouží k základnímu nastavení a omezení přidělení systémových prostředků. Sekundární jsou na nich závislé. Pomocné pomáhají izolovat běžící aplikace uvnitř VPS a určují způsob, jakým mají aplikace zpracovávat chyby, a jakým jim mají být přiděleny systémové prostředky. Tím také umožňují nastavit administrátorská pravidla pro spouštěné aplikace. Celkový koncept parametrů OpenVZ je velmi složitý a neprůhledný. Administrátor si musí být vědom, jakého cíle chce dosáhnout, jinak systém nemusí být stabilní.
V kontextu OpenVZ je měkký limit označován jako bariéra (barrier) a tvrdý limit jako limit (limit).
Následující seznam uvádí systémové prostředky, které můžeme omezit. Jejich hodnoty jsou ukládány v lokálním souboru nastavení VPS /etc/sysconfig/vz-scripts/<VPS_ID>.conf
:
Primární parametry:
avnumproc
– Průměrný počet procesů a vlákennumproc
– Maximální počet procesů a vláken, které smí VPS vytvořit.numtcpsock
– Maximální počet TCP soketů. Omezíme tak počet klientů, které může server obsloužit.numothersock
– Maximální počet jiných než TCP soketůvmguardpages
– Maximální počet stránek, které jsou aplikaci běžící ve VPS zaručeny.Sekundární parametry:
kmemsize
– Velikost neswapované paměti alokované jádrem. Vztahuje se k počtu procesů (numproc
). Každý zabírá minimálně 24 KiB, typicky 40 – 60 KiB, avšak i mnohem více. Pokud bude kmemsize nastaven na příliš nízkou hodnotu, nemusí být pro všechny procesy dostačující.tcpsndbuf
– Celková velikost bufferů pro posílání TCP soketů. Rozdíl tvrdého a měkkého limitu by měl být větší nebo roven 2,5násobku numtcpsock
. 2,5 KiB odpovídá minimální velikost TCP soketu v systému.tcprcvbuf
- Celková velikost bufferů pro přijímání TCP soketů. Rozdíl tvrdého a měkkého limitu by měl být větší nebo roven 2,5násobku numtcpsock
. 2,5 KiB odpovídá minimální velikost TCP soketu v systému.othersockbuf
– Velikost bufferů pro posílání jiných než TCP soketů. Rozdíl tvrdého a měkkého limitu by měl být větší nebo roven 2,5násobku numothersock
. 2,5 KiB odpovídá minimální velikost TCP soketu v systému.dgramrcvbuf
– Velikost bufferů pro přijímání jiných než TCP soketů. Parametr závisí na numothersock
. Jeho hodnota nemusí být příliš vysoká v případě, že VPS nebude často posílat velmi velké datagramy.oomguarpages
– Takzvaná záruka out-of-memory ve stránkách. Pokud nedojde k vážnému nedostatku paměti, nebude zabit žádný proces, jestliže je současné využití paměti nižší než měkký limit tohoto parametru. Vztahuje se k vmguardpages
.privvpages
– Velikost privátní paměti alokované aplikací. Do toho parametru není započítaná paměť, která je sdílena více procesy. Vychází z vmguardpages
.Pomocné parametry:
lockedpages
– Neodswapovatelná paměť ve stránkách.shmpages
– Celková velikost sdílené paměti (včetně objektů tmpfs, IPC, ...) alokované procesem VPS ve stránkách.numfile
– Počet souborů otevřených všemi procesy VPS.numflock
– Počet souborových zámků vytvořených procesy VPS.numpty
– Počet pseudoterminálů, například sezení ssh, screen, xterm.numsiginfo
– Počet struktur siginfo, omezuje velikost fronty signálů.dcachesize
– Velikost záznamů dentry a záznamů o i-uzlech uzamčených v paměti.physpages
– Celková velikost využité RAM. Jedná se o informativní parametr. Jeho hodnota bude využívána při zobrazování volné paměti programy ps, top, ...numiptent
– Počet záznamů filtru IP paketůNastavení těchto parametrů je možné změnit přímo konfiguračním souborem nebo pomocí utility vzctl
. Příklad ukazuje změnu nastavení měkkého i tvrdého limitu s trvalým uložením změn:
# vzctl set 101 --kmemsize 2211840:2359296 --save
Nastavený limit systémových zdrojů můžeme uvnitř každého VPS získat ze souboru /proc/user_beancounters
. Soubor obsahuje aktuální a maximální „zatížení“ zdrojů, bariéru a limit pro každý zdroj.
V hardwarovém uzlu tento soubor obsahuje informace napříč všemi VPS.
Využití paměti můžeme zjistit pomocí utility vzmemcheck
:
# vzmemcheck -v Output values in % veid LowMem LowMem RAM MemSwap MemSwap Alloc Alloc Alloc util commit util util commit util commit limit 101 0.19 1.93 1.23 0.34 1.38 0.42 1.38 4.94 1 0.27 8.69 1.94 0.49 7.19 1.59 2.05 56.54
Parametrem -v
odmítneme zobrazení informací o hardwarovém uzlu. Chceme-li zobrazit absolutní informace v MiB namísto podílů, použijeme přepínač -A
. Sloupec util
značí využití daného systémového prostředku. Sloupec commit
značí, kolik prostředků systém „slíbil“ VPS.
Správu systémových prostředků můžeme provádět následujícími způsoby:
Prvním je použití konfiguračních souborů - při vytváření VPS je pro konfiguraci přidělení systémových prostředků použit soubor ve-name.conf-sample
. Standardně jsou k dispozici dva soubory:
ve-light.conf-sample
– pro vytvoření VPS s limity.ve-vps.basic.conf-sample
– pro vytvoření VPS s běžným nastavením.Tyto soubory je možné použít i pro změnu nastavení již existujících VPS. Jsou zachovány pouze parametry OSTEMPLATE
(označení distribuce), VE_ROOT (adresář se soubory běžícího VPS) a VE_PRIVATE
(adresář se soubory zastaveného VPS). Pokud chceme například aplikovat nastavení souboru ve-light.conf-sample
:
# vzctl set 101 --applyconf light --save
Druhým způsobem správy je užití speciální utility vzctl
.
Třetí způsob je přímé editování konfiguračního souboru /etc/sysconfig/vz-scripts/VPS_ID.conf
.
Utility systému OpenVZ umožňují vytvoření několika VPS, každého výkonnostně odpovídajícího určitému zlomku hardwarového uzlu. Pro vytvoření konfiguračního souboru pro 20 ekvivalentních VPS použijeme následující příkazy:
# cd /etc/sysconfig/vz-scripts/ # vzsplit -n 20 -f vps.equaltest
Tím je vytvořen konfigurační soubor ve-vps.equaltest.conf-sample
. Tento soubor je potřeba validovat utilitou vzcfgvalidate
. Tato utilita kontroluje konfigurační soubor a nabízí doporučení k jeho úpravám.
Mezi hodnotami přidělení jednotlivých systémových prostředků existují důležité závislosti. Vzhledem k jejich počtu a složitosti je velmi obtížné zkontrolovat, zda nedošlo k vážnému narušení těchto provázaností. K tomuto účelu je určena utilita vzcfgvalidate
:
# vzcfgvalidate /etc/sysconfig/vz-scripts/101.conf Error: kmemsize.bar should be > 1835008 (currently, 25000) Recommendation: dgramrcvbuf.bar should be > 132096 (currently, 65536) Recommendation: othersockbuf.bar should be > 132096 (currently, 65536)
Utilita zobrazuje porušení závislostí:
Tímto uzavíráme seriál zabývající se Linux-VServerem a OpenVZ. Společně jsme si prošli instalaci systémů, tvorbu virtuálních serverů a základy jejich konfigurace. Pokud toužíte získat další informace o systémech, doporučuji navštívit stránky projektů - Linux-VServer a OpenVZ, bližší informace k virtualizaci na úrovni jádra nalezneme na Wikipedii.
Přeji vám mnoho úspěchů s virtuálními stroji!
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.