È stato presentato TinyKVM per la virtualizzazione a livello di singoli processi.

L'azienda Varnish Software, che sviluppa sistemi per la creazione di reti di distribuzione e caching dei contenuti, ha presentato il progetto open source TinyKVM, che sviluppa strumenti per l'isolamento dell'esecuzione di singoli processi tramite l'hypervisor KVM. L'obiettivo del progetto è la creazione del sistema di sandboxing più veloce per l'isolamento di singoli processi, utilizzando la virtualizzazione hardware. Il codice del progetto è scritto nei linguaggi C e C++, e distribuito con licenza GPLv3 (per chi non è in grado di soddisfare i requisiti della GPLv3 è disponibile una licenza commerciale).

TinyKVM è progettato per l'esecuzione isolata di qualsiasi programma console per Linux con prestazioni simili a quelle di un'esecuzione normale. L'overhead per ogni chiamata di sistema è di circa 2 microsecondi. Come esempio di applicazione del progetto si menziona l'ulteriore isolamento dei processi nei sistemi di caching e elaborazione delle richieste web. TinyKVM è stato sviluppato per sostituire l'emulatore libriscv, utilizzato per isolare l'elaborazione di ogni richiesta web sulla piattaforma Varnish. È stata inoltre creata una versione della libreria libvmod, che consente di eseguire moduli per Varnish utilizzando TinyKVM.

È stato presentato TinyKVM per la virtualizzazione a livello di singoli processi.È stato presentato TinyKVM per la virtualizzazione a livello di singoli processi.

Quando viene avviato tramite TinyKVM, il codice macchina dei programmi viene eseguito senza strati di emulazione sulla CPU e viene regolato tramite le API dell'hypervisor KVM, il che consente di escludere l'overhead e raggiungere prestazioni vicine a quelle dell'esecuzione senza virtualizzazione. Le principali caratteristiche di TinyKVM sono:

  • Limitazione del tempo massimo di esecuzione. Un programma può essere fermato forzatamente dopo il timeout, senza chiamare gestori di segnali e thread.
  • Limitazione dell'uso della memoria.
  • Possibilità di fork di istanze non inizializzate macchine virtuali da un'unica istanza inizializzata del programma isolato. Le copie delle macchine virtuali vengono create in modalità copy-on-write, il che consente di risparmiare notevolmente memoria, conservando solo un'istanza dei dati condivisi.
  • I processi ramificati possono essere ripristinati allo stato precedente (ad esempio, un gestore di richieste http ramificato può tornare allo stato originale dopo l'elaborazione di ogni richiesta senza un riavvio). Un'istanza di un processo isolato può anche essere ripristinata allo stato di un'altra macchina virtuale, e non quella da cui è stata ramificata, ma in questo caso i costi generali saranno più elevati, poiché sarà necessaria una modifica della tabella delle pagine di memoria.
  • La possibilità di creare pagine di memoria statiche durante l'inizializzazione, adatte anche per runtime sofisticati, come nel linguaggio Go. In questo caso, le modifiche sono consentite solo per le pagine in modalità copy-on-write.
  • Supporto per il debug remoto con GDB. È possibile il debug in tempo reale con ripresa dell'esecuzione.

L'ambiente ospite TinyKVM forma un kernel ridotto, protetto da modifiche, costruito con l'inclusione della protezione delle pagine di memoria e utilizza SMAP (Supervisor Mode Access Prevention) e SMEP (Supervisor Mode Execution Prevention) per un'ulteriore isolamento tra il kernel e lo spazio utente. TinyKVM utilizza pagine di memoria grandi (hugepage) per migliorare le prestazioni. Le chiamate di sistema invokeable dai programmi vengono intercettate dall'emulatore e reindirizzate all'ambiente host (il ritardo per l'elaborazione e la traduzione della chiamata emulata è di circa 2 microsecondi). All'interno della macchina virtuale non vengono utilizzati driver, input/output e dispositivi virtuali.

È stato presentato TinyKVM per la virtualizzazione a livello di singoli processi.


Fonte: opennet.ru
Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster