RSS
Blog
Immagine che racconta la parte 5 della serie di post sul blog Xen di Mohsen Mostafa Jokar

Xen, Virtualizzazione e Cloud Computing #05: Xen Project, Unikernel e il futuro

29 ottobre 2020 - di Mohsen Mostafa Jokar

Gli articoli precedenti di questa serie hanno introdotto la virtualizzazione, descritto come Xen la ottenga attraverso la sua architettura e le sue caratteristiche chiave, e descritto altre piattaforme con cui Xen interagisce. Questo articolo conclude la serie, descrivendo alcuni entusiasmanti progressi nella virtualizzazione e come Xen li supporti.

Come abbiamo visto, un hypervisor carica una VM che contiene un sistema operativo completo come GNU / Linux, Windows o BSD. La VM deve essere complessa e abbastanza potente perché è essenzialmente un intero sistema informatico. Per impostazione predefinita, il sistema operativo in una VM supporta un'ampia gamma di hardware di molti fornitori con design e driver diversi. Questi sistemi operativi sono anche multiutente, multi-processo e multiuso.

Per eseguire un'applicazione senza la maggior parte del software aggiuntivo di cui non ha bisogno, è stato sviluppato il concetto di unikernel. Un unikernel ha un unico scopo (di solito), ed è creato per essere eseguito in una VM o in un Container invece che direttamente sull'hardware, quindi è libero dalla complessità dei driver di dispositivo. Un unikernel non è multiutente o multi-processo, ma crea solo un singolo thread di codice che esegue un'applicazione. Può essere compilato solo con le librerie di cui ha bisogno. Pertanto, un unikernel è piccolo, leggero e veloce da caricare ed eseguire. Ma funziona solo in una VM o in un container.

Xen Panda mascotte

In un senso molto ampio, un unikernel riproduce il semplice ambiente di esecuzione dei mainframe nell'era precedente ai sistemi operativi multiutente. Ricorda anche due progetti della fine degli anni '1990, il MIT exokernel e Nemesis, sviluppato da Citrix insieme a diverse università.

Architettura di base di un unikernel

Un unikernel genera un ambiente di runtime singolare che non dispone di una shell, non può generare sottoprocessi e non può creare più thread. Gli sviluppatori selezionano il set minimo di librerie necessario per l'esecuzione della applicazione. Queste librerie vengono quindi compilate con l'applicazione e creano un'immagine eseguibile (l'unikernel) che può essere eseguita direttamente su un hypervisor senza un sistema operativo completo come GNU / Linux o Windows OS. L'unikernel è considerato una VM dal punto di vista dell'hypervisor. Puoi anche pensare a unikernel come un puro runtime per linguaggi di programmazione. Esistono Unikernel per ocaml, Erlang, Java, Haskell, Ruggine, Rubino, Go, e altri linguaggi.

Xen Project è leader nella nascita di Unikernel. Questa tecnologia è forse diventata il fulcro di una nuova forma di Cloud computing, in cui un hypervisor può supportare molte VM.

La Figura 7 mostra i componenti necessari per eseguire un unikernel.

Figura 7. Architettura per l'esecuzione di un unikernel
Figura 7. Architettura per l'esecuzione di un unikernel

Ho spiegato in precedenza che il vantaggio dei contenitori è la loro velocità e dimensioni ridotte. Queste caratteristiche erano ragioni importanti per utilizzare i contenitori prima dell'avvento degli unikernels. Infatti, gli unikernels tendono a battere i contenitori per velocità e dimensioni. Hanno anche un'eccellente sicurezza perché non contengono componenti aggiuntivi in ​​cui potrebbero nascondersi vulnerabilità. I tempi di avvio sono quasi istantanei.

Tra le funzionalità appena elencate, la sicurezza è la più importante. Gli unikernel, a causa della mancanza di funzioni fornite da un sistema operativo standard, hanno una superficie di attacco minore. Non ci sono shell, utilità e nessun altro programma che un intruso possa sfruttare per ottenere accesso al sistema.

La maggior parte degli unikernel si compila in applicazioni, ognuna delle quali ha un'impronta univoca a causa della sua combinazione unica di codice e funzioni di libreria. Pertanto, anche se un intruso trova un vettore di attacco in un unikernel, non funzionerà con altri unikernel.

La Figura 8 mostra i componenti di uno standard Kernel Linux. Un unikernel rimuove i livelli del sistema operativo tradizionale, lasciando solo le librerie di sistema minime necessarie, il runtime del linguaggio di programmazione e il codice dell'applicazione stesso.

Figura 8. Componenti tipici del sistema operativo
Figura 8. Componenti tipici del sistema operativo

Il progetto Xen come leader fornisce una serie di funzionalità agli amanti di Unikernel. Ne esaminerò alcuni qui.

Come detto prima, gli unikernel si concentrano su pacchetti piccoli e veloci. In Paravirtualization (PV), Xen Project può dare accesso al livello hardware sottostante a Unikernel. Ma l'hypervisor contiene ancora i driver effettivi per l'hardware, quindi non è necessario reimplementarli negli unikernels. Tuttavia, gli unikernels sono liberi di utilizzare la modalità HVM e implementare i driver hardware effettivi.

La sicurezza è nel DNA dello Xen Project hypervisor e significa esporre una superficie di attacco la più piccola possibile. Questa funzione è in linea con Unikernel.

Le prestazioni e la sicurezza sono molto importanti sia per Xen Project sia per unikernel. La struttura bare-metal dell'hypervisor di Xen fornisce una buona piattaforma per molte VM unikernel su un singolo host.

Tra i progetti unikernel troviamo:

Unikraft: un nuovo processo di sviluppo per unikernel

Con tutte le caratteristiche positive di unikernel, ci sono comunque alcuni svantaggi. Unikernel obbliga gli sviluppatori a trasferire manualmente le applicazioni nel sistema operativo minimo sottostante e a creare l'elenco delle librerie utilizzate. Pensa a un grande progetto come Apache, MariaDB, o Suricata-IDS. Come puoi intuire, questo richiede molto impegno da parte di esperti e una notevole quantità di tempo. Qual'è la soluzione? Questi sviluppatori devono sacrificare le elevate prestazioni degli unikernel e attenersi a un sistema operativo standard?

L'obiettivo di Unikraft è quello di risolvere questo problema e fornire una base di codice unikernel altamente configurabile. Un altro obiettivo è incoraggiare gli sviluppatori a fornire il loro codice nelle librerie invece che lavorare su progetti indipendenti. Unikraft spera di creare una comunità attorno a sistemi operativi minimi e fornire uno strumento in grado di costruire automaticamente questo tipo di sistemi operativi.

È già attivo un piccolo kernel - sistema operativo chiamato Mini-OS , incluso con l'hypervisor Xen. È la radice di molti progetti unikernel perché ha i driver del kernel per l'hypervisor Xen. Ma gli obiettivi del progetto Unikraft differiscono da quelli di Mini-OS.

Unikraft è in una fase ancora iniziale. Secondo il NEC Lab, le sue caratteristiche saranno:

  • Avvio rapido e breve tempo di migrazione
  • Basso impatto sulla memoria
  • Forte sicurezza
  • Alta densità
  • Alte prestazioni
  • Strumenti e processi a misura di sviluppatore
  • Capacità di funzionare su tutte le principali piattaforme

Al momento della stesura di questo articolo, i progetti Unikraft sono:

LightVM

LightVM è una soluzione di virtualizzazione basata su Xen che offre tempi di avvio rapidi per le VM anche quando ne ospitano un gran numero. LightVM lo fa sostituendo il database di configurazione di Xenstore con una nuova soluzione distribuita chiamata NoXS (no Xenstore). NoXS riduce la velocità di accesso al database fornendo una page condivisa per ogni dispositivo che contiene tutte le informazioni necessarie per l'inizializzazione del dispositivo stesso. LightVM utilizza anche il nuovo toolstack Chaos che esegue operazioni come creazione di istanze, migrazione, salvataggio e ripristino. Attualmente, LightVM si basa sul kernel Linux per Dom0, ma per DomU può utilizzare guest basati su Linux e Mini-OS. LightVM può avviare una VM in 2.3 ms, due volte più velocemente di Docker. Con LightVM puoi dire: "La mia VM è sia più leggera sia più sicura del tuo Container. "

MirageOS

MirageOS è una libreria che fornisce funzionalità di sistema operativo. Viene utilizzata per creare Unikernel che forniscono applicazioni di rete sicure e ad alte prestazioni per il Cloud computing e le piattaforme mobile. Il linguaggio di programmazione principale per MirageOS è Ocaml, un linguaggio di programmazione di alto livello con caratteristiche funzionali e orientate agli oggetti, in grado di creare programmi sicuri e ad alte prestazioni. Puoi sviluppare il tuo programma sul tuo PC da Ocaml e quindi compilarlo in un programma completamente autonomo per Unikernel. Ora ci sono più di 100 librerie MirageOS e MirageOS offre molte implementazioni di basso livello dei protocolli più comuni, come TCP / IP, UDP, IPV6, UDPV6, ICMP, DNS, SSH, VNC, HTTP, XMPP e i driver del dispositivo Xen. MirageOS ti aiuta a eseguire i tuoi server in modo più economico, sicuro e veloce in qualsiasi Cloud basata su Xen.

Altri aspetti Xen Project, il suo futuro

Xen Project lavora costantemente per supportare nuovi hardware e tecnologie. Alcuni dei suoi sforzi attuali sono mirati verso AMD EPYC , la famiglia di processori Hygon Dhyana 18h, Raspberry Pi4 e AVX512 di Intel.

Se credi che l'open source abbia cambiato il mondo del software, puoi immaginare cosa RISC-V, (pronunciato "Risk-Five") potrebbe fare per il mondo dei microprocessori. RISC-V si basa sul principio RISC (Reduced Instruction Set Computer). È però troppo presto per giudicare il futuro di RISC-V. Al momento della stesura di questo articolo, RISC-V presentava alcuni problemi logistici, tra cui la mancanza di un processo di certificazione, nessuna standardizzazione per le famiglie di parti o imballaggi e nessun plug-and-play degli stack hardware o software. Alcuni sistemi operativi, inclusi GNU / Linux e FreeBSD, verranno portati sull'architettura RISC-V. Xen Project stesso sta lavorando sul porting.

Anche dal settore embedded e automobilistico arrivano buone notizie sul fronte Xen Project. Diverse società, tra cui EPAM, Xilinx e GlobalLogic stanno lavorando su Xen per dispositivi embedded per cambiare il mondo dei veicoli.

Tutti i veicoli oggigiorno si basano su computer, che ormai di solito controllano la maggior parte delle parti di un'auto. Alcune di queste parti sono delicate e la sicurezza è una grande preoccupazione in questo settore. Componenti come il controllo del motore, la guida autonoma, le reti, le spie luminose, il display della velocità e il serbatoio del carburante sono fondamentali e devono essere protetti. 

Al giorno d'oggi, la maggior parte delle auto utilizza varianti di Android, ma questo sistema operativo non è abbastanza veloce e sicuro per tale scopo. Ancora più importante, alcune delle opzioni dell'auto richiedono una connessione Internet, che apre una porta agli attacchi. Se un aggressore penetra nel computer dell'auto, può giocare con la vita del conducente e degli altri occupanti.

Xen Project offre buona sicurezza e buone prestazioni. Con un computer per auto che esegue un hypervisor Xen, il sistema operativo dell'auto può essere avviato in un millisecondo e Xen può fornire una buona sicurezza tramite l'isolamento. In queste auto, il sistema operativo funziona come DomU sotto il controllo dell'hypervisor Xen. Per ulteriori informazioni su questo campo, puoi leggere "Automotive Virtualization by Xen"Sul sito web di EPAM e "Virtual Open Systems: Automotive mixed-critical virtualization done right" Sul sito web di Arm.

Xen Project è attivo nell'area unikernel, lavorando per supportare nuove tecnologie e hardware.

Contribuire a Xen

Se vuoi lavorare su Xen Project, alle sue mailing list, che sono piuttosto attivi. È possibile inviare richieste di base sull'hypervisor Xen a xen-users@lists.xenproject.orge domande sul suo sviluppo a xen-devel@lists.xenproject.org.

Per aiutare a testare ed eseguire il debug del progetto Xen, visita Xen Project Test Days page.

Sono autore di un libro su Xen Project: "Hello Xen Project". È open source, quindi chiunque può modificare e aggiungere capitoli. Spero di poter aggiungere anche io stesso altri capitoli in futuro.
 

Leggi il post precedente

Informazioni su Mohsen Mostafa Jokar:

Mohsen Mostafa Jokar


Mohsen Mostafa Jokar è un amministratore Linux e un virtualization engineer. Il suo interesse per la virtualizzazione risale ai tempi della scuola, quando vide per la prima volta Microsoft Virtual PC. Lo ha installato su un PC con 256 MB di RAM e lo ha utilizzato per usare Virtualize Windows 98 e DOS. Successivamente, Mohsen si è interessato alla virtualizzazione e ha familiarizzato con più prodotti.

Insieme alla virtualizzazione, Mohsen ha cominicato a lavorare su GNU / Linux. Ha installato LindowsOS come sua prima distribuzione Linux, acquisendo successivamente familiarità con Fedora Core, Knoppix, RedHat e altre distribuzioni. Utilizzando il sistema operativo Linux, ha familiarizzato con bochs, ma l'ha trovato troppo lento e dopo alcune ricerche ha scoperto Qemu. Qemu era più veloce di bochs e l'installazione del modulo KQEMU gli ha permesso di eseguire la virtualizzazione ancora più velocemente. Dopo Qemu, Mohsen ha fatto conoscenza con Innotek VirtualBox e lo ha scelto come sua principale applicazione di virtualizzazione. Innotek VirtualBox aveva una buona GUI ed era facile da usare.

Alla fine, Mohsen ha conosciuto Xen, che ama perché è sicuro, stabile e affidabile. Ha scritto un libro su Xen, "Hello Xen Project", e lo ha reso disponibile sul wiki di Xen. Lo ha reso gratuito per aiutare a rendere Xen più accessibile e per incoraggiare i principianti a usarlo come prima piattaforma di virtualizzazione. Si considera uno "Xen Soldier".

Post davvero informativo! Grazie