Predstavljen TinyKVM za virtualizaciju na razini pojedinačnih procesa

Tvrtka Varnish Software, koja razvija sustave za izgradnju mreža isporuke i keširanja sadržaja, predstavila je otvoreni projekt TinyKVM, koji razvija alat za izolaciju izvršavanja pojedinih procesa pomoću hipervizora KVM. Cilj projekta je izrada najbržeg sustava sandbox izolacije pojedinih procesa uz korištenje hardverske virtualizacije. Kod projekta napisan je na jezicima C i C++, a distribuira se pod GPLv3 licencom (za one koji ne žele ispuniti uvjete GPLv3 dostupna je komercijalna licenca).

TinyKVM je namijenjen izoliranom pokretanju bilo kakvih konzolnih programa za Linux s performansama sličnim uobičajenom izvršavanju. Prekidi prilikom poziva svakog sistemskog poziva iznose oko 2 mikrosekunde. Kao primjer primjene projekta spominje se dodatna izolacija procesa u sustavima za keširanje i obradu web zahtjeva. TinyKVM je razvijen kao zamjena za emulator libriscv, koji se koristi za izolaciju obrade svakog web zahtjeva na Varnish platformi. Dodatno je razvijena i verzija biblioteke libvmod, koja omogućuje izvođenje modula za Varnish koristeći TinyKVM.

Predstavljen TinyKVM za virtualizaciju na razini pojedinačnih procesaPredstavljen TinyKVM za virtualizaciju na razini pojedinačnih procesa

Pri pokretanju pomoću TinyKVM, strojni kod programa izvršava se bez emulirajućih slojeva na CPU-u i ograničen je pomoću KVM hipervizorskog API-ja, što omogućuje isključivanje prekida i postizanje performansi sličnih izvršavanju bez virtualizacije. Glavne mogućnosti TinyKVM-a su:

  • Ograničenje maksimalnog vremena izvršavanja. Program se može prisilno zaustaviti nakon isteka vremenskog ograničenja, bez pozivanja rukovatelja signala i dretvi.
  • Ograničenje potrošnje memorije.
  • Mogućnost fork-a neinicijaliziranih instanci virtualnih mašina iz jednog inicijaliziranog eksperimenta izoliranog programa. Kopije virtualnih mašina stvaraju se u režimu copy-on-write, što omogućuje značajno smanjenje potrošnje memorije, pohranjujući samo jedan primjerak zajedničkih podataka.
  • Odvojeni procesi mogu se resetirati na prethodno stanje (na primjer, odvojeni obrtnik http zahtjeva može se bez ponovnog pokretanja vratiti u izvorno stanje nakon obrade svakog zahtjeva). Primjer izoliranog procesa također se može resetirati u stanje druge virtualne mašine, a ne onoj iz koje je odvojena, ali troškovi će u tom slučaju biti veći jer će biti potrebno promijeniti tablice stranica memorije.
  • Mogućnost stvaranja statičkih stranica memorije tijekom inicijalizacije, prikladnih čak i za sofisticirane runtime okruženja, kao što je u Go jeziku. U tom slučaju dozvoljena su samo izmjena stranica koje su u modu copy-on-write.
  • Podrška za daljinsko otklanjanje pogrešaka putem GDB-a. Moguće je otklanjanje pogrešaka u hodu s nastavkom izvršavanja.

Gostujuće okruženje TinyKVM čini skraćeno jezgro, zaštićeno od promjena, sastavljeno s uključenom zaštitom stranica iz memorije i koristi SMAP (Preventivni pristup načina nadzora) i SMEP (Preventivno izvršavanje načina nadzora) za dodatnu izolaciju između jezgre i korisničkog prostora. TinyKVM koristi velike stranice memorije (hugepage) za poboljšanje performansi. Sustavni pozivi koje pozivaju programi se presreću od strane emulatora i preusmjeravaju u host-okruženje (odgoda za obradu i prevođenje emuliranog poziva iznosi oko 2 mikrosekunde). U samoj virtualnoj mašini ne koriste se nikakvi upravljački programi, ulaz/izlaz i virtualne uređaje.

Predstavljen TinyKVM za virtualizaciju na razini pojedinačnih procesa


Izvor: opennet.ru
Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster