VMWare: Hypervisor

16 / 100

Hypervisor

In informatica l’hypervisor (in italiano conosciuto come ipervisore), conosciuto anche come virtual machine monitor (VMM), è il componente centrale e più importante di un sistema basato sulle macchine virtuali. Un computer sul quale venga eseguito un hypervisor che a sua volta controlla una o più macchine virtuali è detto macchina host, e ogni macchina virtuale è detta macchina guest. Il compito di un hypervisor è quello di presentare all’utente i sistemi operativi delle macchine guest e di gestire la loro esecuzione. Grazie ad un hypervisor, all’interno di ogni macchina guest, possono essere eseguiti contemporaneamente diversi sistemi operativi, ognuno dei quali può controllare delle risorse hardware virtualizzate.

Questo tipo di virtualizzazione è diversa dalla virtualizzazione a livello di sistema operativo, dove tutte le istanze (dette anche container) devono essere eseguite in un unico kernel. Il termine inglese hypervisor è un rafforzativo di supervisor, usato tradizionalmente per il kernel di un sistema operativo. In altre parole si vuole indicare che un hypervisor è il supervisor di un supervisor. Il termine è nato approssimativamente nel 1970, mentre prima si usava il termine Control Program.

La potenza di calcolo e la complessità dei moderni sistemi informatici induce a trovare nuove vie per facilitarne la gestione ed ottimizzarne l’utilizzo. Spesso i calcolatori che offrono servizi (server, non “desktop”) sono sotto utilizzati per questioni di sicurezza e praticità: viene, di norma, installata una sola applicazione per sistema operativo e dunque una sola applicazione per calcolatore. Questa condizione implica la presenza di più calcolatori, che occupano spazio ed impiegano ingenti risorse di denaro, nonché di gestione e manutenzione.

La virtualizzazione è la tecnologia emergente che sembra raccogliere interesse soprattutto da parte delle aziende, che permette ad un server fisico ospitante di gestire sistemi operativi andando ad emulare le istanze delle macchine non più fisiche, ma appunto virtuali, e dei relativi sistemi operativi ospitati; questo agevola il mantenimento di un insieme di applicazioni su un singolo server e con un maggior livello di affidabilità. L’hypervisor è il componente chiave per un sistema basato appunto sulla virtualizzazione.

Compiti dell’hypervisor

Il virtual machine monitor (es. Xen, open source monitor di macchine virtuali, VMware ESX attuale standard di virtualizzazione in ambito enterprise o Hyper-V monitor di macchine virtuali di Microsoft) deve operare in maniera trasparente senza pesare con la propria attività sul funzionamento e sulle prestazioni dei sistemi operativi.

Svolge attività di controllo al di sopra di ogni sistema, permettendone lo sfruttamento anche come monitor e debugger delle attività dei sistemi operativi e delle applicazioni in modo da scoprire eventuali malfunzionamenti ed intervenire celermente. I requisiti richiesti a questo scopo sono quelli di compatibilità, performance e semplicità. Gli ambiti di applicazione delle macchine virtuali sono molteplici ed eterogenei fra loro, poiché la virtualizzazione sta diventando sinonimo di sicurezza informatica ed affidabilità del sistema.

L’hypervisor può controllare ed interrompere eventuali attività pericolose, e ciò fa sì che si usino macchine virtuali sempre più frequentemente in ambito di ricerca e collaudo di software. Tra gli altri, i vantaggi della virtualizzazione che i sostenitori della tecnologia vedono in questa soluzione quando ben progettata sono di riduzione e controllo dei costi consolidando l’hardware. L’hypervisor può allocare le risorse dinamicamente quando e dove necessario, ridurre in modo drastico il tempo necessario alla messa in opera di nuovi sistemi, isolare l’architettura nel suo complesso da problemi a livello di sistema operativo ed applicativo, abilitare ad una gestione più semplice di risorse eterogenee e, come già accennato, facilitare collaudo e debugging di ambienti controllati.

Classificazione
La classificazione si fa risalire all’articolo pubblicato nel 1974 da Gerald J. Popek e Robert P. Goldberg, in cui sono stati individuati due tipi di hypervisor:

Tipo-1,
Detto anche nativo o bare-metal hypervisor:
questi hypervisor sono eseguiti direttamente sull’hardware dell’host, del quale hanno quindi controllo diretto. Alcuni esempi sono: AntsleOS[3], Microsoft Hyper-V e Xbox One system software, Nutanix AHV, XCP-ng, Oracle VM Server, POWER Hypervisor e VMware ESXi (formalmente noto come ESX) e Xen.

Tipo-2,
Detto anche hosted hypervisor:
questi hypervisor sono eseguiti all’interno di un tradizionale sistema operativo, proprio come un qualsiasi altro programma. Alcuni esempi sono: Parallels Desktop for Mac, QEMU, VirtualBox, VMware Player, VMware Workstation
Nella realtà la distinzione tra questi due tipi non è sempre definita in modo chiaro. Ad esempio, Kernel-based Virtual Machine (KVM) di Linux e bhyve di FreeBSD sono moduli del kernel[5] che in pratica trasformano un sistema operativo host in un hypervisor di tipo-1.. In modo simile, dato che Linux e FreeBSD sono considerati sistemi operativi per uso generico, le cui applicazioni sono in competizione per le risorse delle macchine virtuali, KVM e bhyve possono essere classificati come hypervisor di tipo-2.

Hypervisor

Un hypervisor è firmware, software o hardware che è il componente centrale di una VM. Chiariamo qui un po ‘di terminologia: il sistema su cui vengono installate le VM si chiama sistema host, e le macchine installate sulle VM sono chiamate sistemi guest. L’hypervisor è il livello che gestisce tutte le risorse tra le VM e l’hardware effettivo del sistema (o il sistema operativo che ospita l’hypervisor). Anche se i sistemi operativi vengono eseguiti su hardware virtuale, è compito dell’hypervisor far sembrare che il sistema operativo abbia accesso all’hardware reale.

Gli hypervisor forniscono un confine stabile e inespugnabile tra i diversi sistemi operativi eseguiti come VM. L’hypervisor simula i componenti hardware per la VM, che sono configurati dall’utente. L’hardware utilizzato dalle VM (tramite hypervisor) sono frazioni dell’hardware effettivo del sistema. Pertanto, non si possono superare i limiti dell’hardware reale. Ad esempio, se disponi di 16 GB di RAM, puoi suddividerla in 8 GB tra due VM.

Il punto critico è che la tecnologia che rende possibili le VM: hypervisor; non richiede alcun hardware speciale. È solo un componente software essenziale. Esistono due tipi significativi di hypervisor:

Tipo 2: hypervisor ospitati

Sono consapevole che sto dimostrando il tipo 2 prima dell’1, ma c’è una sequenza. Gli hypervisor ospitati rimangono a livello di applicazione. Questo potrebbe esserti familiare se hai mai usato Oracle VM VirtualBox, VMWare o GNOME Boxes.

Questa è un’applicazione che ti consente di installare un sistema operativo come macchina virtuale all’interno del tuo sistema operativo (il sistema operativo in cui è installata l’applicazione stessa). Questo è notevolmente facile da configurare e utilizzare. Tutto quello che devi fare è installare un’applicazione che ti consenta di creare VM e ottenere un’immagine del sistema operativo richiesto. È possibile specificare direttamente la quantità di RAM, spazio su disco rigido, ecc. Che si desidera consentire alla VM di utilizzare.

Ci sono aspetti positivi significativi nell’utilizzo di un hypervisor ospitato, specialmente per utenti regolari come noi. Tuttavia, c’è un problema. La struttura abituale di un sistema informatico segue questa sequenza:

Hardware fisico

Firmware

Drivers

Sistema operativo

Applicazioni

Entrando un po ‘negli aspetti tecnici, il software che usiamo su un sistema informatico ha diversi “privilegi”. Ad esempio, se si consente a qualsiasi software di accedere alla configurazione delle prestazioni del processore, si può andare avanti e rovinare facilmente l’intero sistema. Questa è una cattiva pratica di sicurezza. In realtà, ciò che accade è che il kernel di un sistema operativo interagisce con l’hardware.

Se un’app richiede l’accesso a qualsiasi componente hardware, può inviare una richiesta al kernel e il kernel fornirà una risposta appropriata.

Queste richieste vengono chiamate chiamate di sistema o syscalls.

Ora prendiamo il caso di una VM su un hypervisor ospitato.

Ad esempio, esegui un’applicazione sul SO guest. Questo invierà una syscall al kernel del SO guest.

Questo, a sua volta, verrà interpretato e convertito in un’altra syscall dall’hypervisor, che ora invierà quella syscall al kernel del sistema operativo host (perché ricorda, l’hypervisor ospitato è solo un’altra applicazione per il sistema operativo host).

Il kernel del sistema operativo host invierà la risposta all’hypervisor, che dovrà ora essere convertito nella risposta appropriata per l’applicazione nel sistema operativo guest. Uff.

Tutto ciò significa che gli hypervisor ospitati devono affrontare un processo piuttosto lungo. Sulla maggior parte dell’hardware moderno, non ci vuole tutto il tempo che sembra, ma non è come la velocità e le prestazioni native. La soluzione a questo problema è l’hypervisor di tipo 1.

Translate »