Představen TinyKVM pro virtualizaci na úrovni jednotlivých procesů

Společnost Varnish Software, která vyvíjí systémy pro budování sítí pro doručování a kešování obsahu, představila otevřený projekt TinyKVM, který rozvíjí nástroje pro izolaci vykonávání jednotlivých procesů pomocí hypervisoru KVM. Cílem projektu je vytvořit nejrychlejší systém sandboxové izolace jednotlivých procesů, který využívá hardwarovou virtualizaci. Kód projektu je napsán v jazycích C a C++ a šíří se pod licencí GPLv3 (pro ty, kdo nejsou připraveni splnit požadavky GPLv3, je k dispozici komerční licence).

TinyKVM je určen pro izolované spuštění jakýchkoli konzolových programů pro Linux s výkonem blízkým běžnému vykonání. Náklady na vyvolání každého systémového volání činí přibližně 2 mikrosekundy. Jako příklad použití projektu se zmiňuje další izolace procesů v systémech kešování a zpracování webových požadavků. TinyKVM byl navržen jako náhrada emulátoru libriscv, který se používá pro izolaci zpracování každého webového požadavku na platformě Varnish. Dále byla vytvořena varianta knihovny libvmod, která umožňuje provádět moduly do Varnish za použití TinyKVM.

Představen TinyKVM pro virtualizaci na úrovni jednotlivých procesůPředstaven TinyKVM pro virtualizaci na úrovni jednotlivých procesů

Při spuštění pomocí TinyKVM je strojový kód programů vykonáván bez emulujících vrstev na CPU a je omezen pomocí API hypervisoru KVM, což umožňuje vyloučit režijní náklady a dosáhnout výkonu blízkého vykonání bez virtualizace. Hlavní funkce TinyKVM:

  • Omezení maximální doby vykonávání. Program může být násilně zastaven po uplynutí časového limitu, bez vyvolání zpracovatelů signálů a vláken.
  • Omezení spotřeby paměti.
  • Možnost odvětvení (fork) ne inicializovaných instancí virtuálních strojů z jedné inicializované instance izolovaného programu. Kopie virtuálních strojů se vytvářejí v režimu copy-on-write, což umožňuje výrazné úspory paměti, neboť se uchovává pouze jedna instance sdílených dat.
  • Odvozené procesy mohou být vráceny do předchozího stavu (například odvozený zpracovatel http-žádostí se může bez restartu vrátit do výchozího stavu po zpracování každé žádosti). Instance izolovaného procesu může být také resetována do stavu jiné virtuální mašiny, než ze které byla odvozená, ale náklady v tomto případě budou vyšší, neboť bude třeba změnit tabulku stránek paměti.
  • Možnost vytváření statických stránek paměti během inicializace, které jsou vhodné i pro sofistikované runtime, například jako v jazyce Go. V tomto případě je změna povolena pouze pro stránky, které jsou v režimu copy-on-write.
  • Podpora vzdáleného ladění pomocí GDB. Je možná ladění za běhu s obnovením provádění.

Hostitelské prostředí TinyKVM tvoří zúžené jádro chráněné před změnami, sestavené se zahrnutím ochrany stránek paměti a využívající SMAP (Prevence přístupu v supervizorskem režimu) a SMEP (Prevence vykonávání v supervizorskem režimu) pro dodatečnou izolaci mezi jádrem a uživatelským prostorem. TinyKVM používá velké stránky paměti (hugepage) pro zvýšení výkonu. Systémové volání vyvolaná programy jsou zachycována emulátorem a přesměrována do hostitelského prostředí (zpoždění na zpracování a překlad emulovaného volání je přibližně 2 mikrosekundy). V samotné virtuálním stroji se nepoužívají žádné ovladače, vstup/výstup a virtuální zařízení.

Představen TinyKVM pro virtualizaci na úrovni jednotlivých procesů


Zdroj: opennet.ru
Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster