TinyKVM præsenteret til virtualisering på procesniveau

Virksomheden Varnish Software, der udvikler systemer til opbygning af indholdsleveringsnetværk og caching, har præsenteret det åbne projekt TinyKVM, som udvikler værktøjer til isolering af udførelse af enkelte processer ved hjælp af KVM-hypervisoren. Projektets mål er at skabe det hurtigste system til sandbox-isolering af individuelle processer, der bruger hardwarevirtualisering. Projektets kode er skrevet i C og C++ og distribueres under GPLv3-licensen (for dem der ikke er klar til at opfylde kravene i GPLv3, er der en kommerciel licens tilgængelig).

TinyKVM er designet til isoleret kørsel af enhver konsolprogrammering til Linux med en ydeevne tæt på normal udførelse. Overhead for at kalde hver systemopkald ligger på cirka 2 mikrosekunder. Som et eksempel på anvendelse er der nævnt yderligere procesisolering i caching- og web-anmodningsbehandlingssystemer. TinyKVM er udviklet til at erstatte emulatoren libriscv, der anvendes til isolering af behandlingen af hver web-anmodning på Varnish-platformen. Derudover er der oprettet en version af libvmod-biblioteket, som gør det muligt at tilføje moduler til Varnish ved hjælp af TinyKVM.

TinyKVM præsenteret til virtualisering på procesniveauTinyKVM præsenteret til virtualisering på procesniveau

Med TinyKVM udføres maskinkoden for programmer uden emulerende lag på CPU'en og begrænses ved hjælp af KVM-hypervisorens API, hvilket eliminerer overhead og opnår en ydeevne tæt på eksekvering uden virtualisering. De vigtigste funktioner i TinyKVM inkluderer:

  • Begrænsning af maksimal udførelsestid. Programmet kan tvinges til at stoppe efter udløbet af en timeout, uden at signal- og trådbehandlere kaldes.
  • Begrænsning af hukommelsesforbrug.
  • Mulighed for at fork'e (dokumentere) uinitialiserede instanser virtual machines fra en initialiseret instans af det isolerede program. Kopier af virtuelle maskiner oprettes i copy-on-write-tilstand, hvilket skaber betydelige besparelser på hukommelse ved kun at gemme én instans af de delte data.
  • Bifurkerede processer kan nulstilles til en tidligere tilstand (for eksempel kan en bifurkert HTTP-anmodningsbehandler uden genstart vende tilbage til sin oprindelige tilstand efter hver anmodning). Instansen af en isoleret proces kan også nulstilles til tilstanden af en anden virtuel maskine end den, den blev bifurkert fra, men omkostningerne ved dette vil være højere, da det vil kræve ændring af sidebordet.
  • Muligheden for at oprette statiske hukommelsessider under initialiseringen, velegnet selv til avancerede runtime-miljøer, som i sproget Go. I dette tilfælde tillades ændringer kun for sider, der er i copy-on-write-tilstand.
  • Understøttelse af fjernfejlfinding med GDB. Fejlfinding på farten med genoptagelse af udførelsen er muligt.

Gæstemiljøet TinyKVM danner en beskåret kerne, beskyttet mod ændringer, bygget med indbygget beskyttelse af hukommelsessider og anvender SMAP (Supervisor Mode Access Prevention) og SMEP (Supervisor Mode Execution Prevention) for yderligere isolation mellem kernen og brugerområdet. TinyKVM bruger store hukommelsessider (hugepage) for at forbedre ydeevnen. Systemopkald kaldt fra programmer opsnappes af emulatoren og omdirigeres til værtsmiljøet (behandling og oversættelse af det emulerede opkald tager cirka 2 mikrosekunder). I selve virtuelle maskiner bruger ikke nogen drivere, input/output eller virtuelle enheder.

TinyKVM præsenteret til virtualisering på procesniveau


Kilde: opennet.ru
Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster