È 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 il hypervisor KVM. L'obiettivo del progetto è dichiarato come la creazione del sistema di sandboxing più veloce per l'isolamento di processi, utilizzando virtualizzazione hardware. Il codice del progetto è scritto in C e C++, ed è distribuito sotto licenza GPLv3 (per coloro che non possono soddisfare i requisiti della GPLv3, è disponibile una licenza commerciale).

TinyKVM è destinato all'esecuzione isolata di qualsiasi programma console per Linux con prestazioni vicine a quelle dell'esecuzione normale. Il sovraccarico per la chiamata a ogni syscall è di circa 2 microsecondi. Come esempio di applicazione del progetto viene menzionato l'ulteriore isolamento dei processi nei sistemi di caching e di elaborazione delle richieste web. TinyKVM è stato sviluppato per sostituire l'emulatore libriscv, utilizzato per isolare l'elaborazione di ogni richiesta web nella piattaforma Varnish. Inoltre, è stata creata una variante 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 avviato tramite TinyKVM, il codice macchina dei programmi viene eseguito senza alcun strato di emulazione sulla CPU e limitato tramite l'API del hypervisor KVM, il che consente di eliminare gli overhead e raggiungere prestazioni vicine a quelle dell'esecuzione senza virtualizzazione. Le principali funzionalità di TinyKVM:

  • Limitazione del tempo massimo di esecuzione. Il programma può essere forzatamente arrestato dopo la scadenza del timeout, senza attivare gestori di segnali e thread.
  • Limitazione del consumo di memoria.
  • Possibilità di fork di istanze non inizializzate di macchine virtuali da un'istanza inizializzata di un programma isolato. Le copie delle macchine virtuali vengono create in modalità copy-on-write, consentendo un notevole risparmio di memoria, mantenendo solo un'istanza dei dati condivisi.
  • I process derivati possono essere ripristinati allo stato precedente (ad esempio, un gestore http derivato può tornare al proprio stato originale dopo aver elaborato ogni richiesta senza essere riavviato). Un'istanza di un processo isolato può anche essere riportata allo stato di un'altra macchina virtuale, anziché quella da cui è stata derivata, ma in questo caso i costi aggiuntivi saranno più elevati poiché sarà necessaria una modifica della tabella delle pagine di memoria.
  • Possibilità di creare pagine di memoria statiche durante l'inizializzazione, adatte anche per runtime avanzati, 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 tramite GDB. È possibile eseguire il debug in tempo reale con ripristino dell'esecuzione.

L'ambiente di hosting 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 kernel e spazio utente. TinyKVM utilizza grandi pagine di memoria (hugepage) per migliorare le prestazioni. Le chiamate di sistema invocate dalle applicazioni vengono intercettate dall'emulatore e reindirizzate all'ambiente host (il ritardo per l'elaborazione e la traduzione della chiamata emulata è di circa 2 microsecondi). In esso stesso 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