Che cos'è una macchina virtuale?

Una macchina virtuale (VM) è un computer basato su software che fornisce un ambiente isolato sull'hardware host. Le macchine virtuali possono eseguire programmi e sistemi operativi, archiviare dati, connettersi alle reti ed eseguire altre funzioni di computing. Gran parte delle tecnologie da cui traiamo beneficio oggi, come il cloud computing e l'intelligenza artificiale, è radicata nel concetto di macchina virtuale, che consente a sistemi operativi e software di essere separati da una macchina fisica. Ad esempio, le VM nel cloud computing vengono utilizzate per virtualizzare le risorse dei server dei fornitori di servizi cloud, dando vita all'architettura cloud multi-tenant che consente ai clienti di condividere le risorse pur rimanendo isolati gli uni dagli altri.

Come funzionano le macchine virtuali?

Le macchine virtuali utilizzano la tecnologia di virtualizzazione per creare hardware virtuale, ovvero una versione virtuale di un computer su una macchina fisica. La macchina fisica su cui vengono eseguite le VM è detta host, mentre le VM in esecuzione sull'host sono chiamate guest

Ogni VM guest viene eseguita su una partizione isolata sull'host, completamente separata dalle altre guest. Puoi ospitare più VM su una singola macchina host, spesso un server, in esecuzione su uno strato software noto come hypervisor.

L'hypervisor astrae le risorse fisiche della macchina host, come CPU, GPU, TPU, memoria, archiviazione o reti, in un pool che può essere sottoposto a provisioning e allocato dinamicamente alle VM guest in base alle esigenze, offrendo maggiore flessibilità e aumentando l'efficienza complessiva.

Due tipi principali di hypervisor

  • Tipo 1: hypervisor bare metal. Vengono eseguiti direttamente sull'hardware fisico dell'host. Sono comunemente utilizzati nei data center aziendali per le loro elevate prestazioni ed efficienza. Ad esempio, Google Cloud utilizza un hypervisor basato su KVM per alimentare le macchine virtuali Compute Engine.
  • Tipo 2: hypervisor ospitati. Vengono eseguiti come applicazione sopra un sistema operativo esistente, il che li rende adatti all'uso desktop. Il caso d'uso più comune è quello sviluppo e test.

Tipi di macchine virtuali

In generale, ci sono due tipi di macchine virtuali: Process VM (VM di elaborazione) e system VM (VM di sistema).

Una VM di elaborazione, chiamata anche macchina virtuale dell'applicazione o managed runtime environment (MRE), crea l'ambiente virtuale di un sistema operativo mentre è in esecuzione un'app o un singolo processo e lo elimina non appena esci. Le VM di elaborazione consentono di creare un ambiente indipendente dalla piattaforma che consente di eseguire un'app o un processo allo stesso modo su qualsiasi piattaforma. Un esempio concreto è il runtime Node.js su App Engine, che consente a un programma Node.js di essere eseguito in un ambiente gestito su Google Cloud, indipendentemente dal sistema operativo sottostante.

Una VM di sistema (a volte chiamata macchina virtuale hardware) simula un sistema operativo completo, consentendo la presenza di più ambienti del sistema operativo sulla stessa macchina. In genere, si tratta del tipo di VM a cui si riferiscono le persone quando parlano di "macchine virtuali". Le VM di sistema possono eseguire il proprio sistema operativo e le proprie applicazioni, mentre un hypervisor monitora e distribuisce le risorse della macchina host fisica tra le VM di sistema.

Alcuni fornitori di servizi cloud, tra cui Google, offrono la possibilità aggiuntiva di personalizzare la quantità esatta di processori virtuali e memoria virtuale in ogni istanza. Ciò consente un "dimensionamento corretto" più preciso per ogni carico di lavoro ed evita il sottoutilizzo e i costi associati di licenza software e risorse per l'istanza di calcolo. Ad esempio, alcuni carichi di lavoro potrebbero richiedere un rapporto elevato tra core di calcolo e memoria, mentre altri potrebbero richiedere il contrario. La personalizzazione della macchina virtuale risolve questi casi d'uso senza effettuare un overprovisioning e senza pagare in eccesso per risorse che non verranno utilizzate.

Confronto tra VM e container

Sebbene sia le VM che i container vengano utilizzati per isolare le applicazioni, lo fanno in modi fondamentalmente diversi. Una macchina virtuale virtualizza l'intero stack hardware fisico, compreso il sistema operativo. In questo modo, ogni VM è un ambiente autonomo e isolato, ma ciò significa anche che le VM tendono a essere più grandi e a occupare più risorse.

Al contrario, i container sono più leggeri perché virtualizzano solo lo strato del sistema operativo. Invece di raggruppare un sistema operativo completo con ogni applicazione, un container condivide il kernel del sistema operativo dell'host. Ciò consente ai container di utilizzare meno risorse rispetto alle VM e di avviarsi più rapidamente pur rimanendo isolati. Questo rende i container interessanti per lo sviluppo di nuove applicazioni. Poiché molte delle applicazioni sviluppate negli ultimi 10 anni sono state scritte per i container, molti carichi di lavoro, tra cui e-commerce, back-office e AI, sono "container native".

Come vengono utilizzate le macchine virtuali?

Le VM sono i componenti di base delle risorse di computing virtualizzate e svolgono un ruolo principale nella creazione di qualsiasi applicazione, strumento o ambiente, sia nel cloud che on-premise.

Ecco alcuni dei modi più comuni in cui le aziende utilizzano le macchine virtuali:

Più macchine fisiche possono essere riconfigurate come VM ed eseguite su un host insieme ad altre VM, in modo che le organizzazioni possano ridurre la proliferazione. Nel corso del tempo, le VM hanno dimostrato di essere in grado di eseguire anche le applicazioni più sensibili alle prestazioni.

Un'organizzazione IT centrale può eseguire il provisioning e gestire le VM per ogni unità aziendale e area funzionale, accelerando l'accesso alle risorse e migliorando la visibilità aziendale.

Le VM possono fungere da ambienti isolati per i test e lo sviluppo che includono funzionalità complete, ma non hanno alcun impatto sull'infrastruttura circostante.

Le VM possono essere facilmente disattivate o attivate, migrate e adattate, offrendo la massima flessibilità per lo sviluppo e il deployment.

La flessibilità e la portabilità offerte dalle VM sono essenziali per aumentare la velocità delle iniziative di migrazione.

La replica dei sistemi negli ambienti cloud che utilizzano le VM può offrire un ulteriore livello di sicurezza e certezza. Anche gli ambienti cloud possono essere aggiornati continuamente.

Le VM forniscono la base per creare un ambiente cloud insieme a un ambiente on-premise, comportando flessibilità senza la necessità di abbandonare i sistemi legacy.

Vantaggi delle macchine virtuali

Le macchine virtuali offrono molti vantaggi, in particolare se si sceglie una VM cloud, tra cui: 

Scalabilità

Le VM basate su cloud semplificano la scalabilità delle applicazioni, aumentando la disponibilità e le prestazioni. Puoi aumentare la capacità in base alla domanda senza dover investire in server fisici di proprietà. 

Portabilità 

Una macchina virtuale è un singolo pacchetto software con risorse hardware, un sistema operativo e tutte le sue applicazioni. Puoi spostare facilmente le VM da un server all'altro o persino dall'hardware on-premise agli ambienti cloud. 

Ingombro e costi ridotti

Le VM consentono di eseguire più ambienti virtuali da una singola macchina, contribuendo a ridurre l'impronta dell'infrastruttura fisica, la bolletta dell'elettricità e i costi di manutenzione e gestione. 

Provisioning più rapido 

Le VM possono essere facilmente duplicate, consentendo alle aziende di creare nuovi ambienti identici senza doverli configurare da zero.

Affidabilità

Le macchine virtuali e i loro componenti esistono virtualmente e rimangono isolati dalle altre VM guest. Se la VM si arresta in modo anomalo, le altre VM guest rimarranno operative e la macchina host fisica non sarà interessata. 

Maggiore sicurezza

Le macchine virtuali consentono di eseguire più sistemi operativi senza influire sul sistema operativo host. Le VM consentono di creare ambienti virtuali sicuri per testare le app o persino studiare le vulnerabilità della sicurezza senza rischi elevati per la macchina host. 

Potenziali sfide delle macchine virtuali

Tuttavia, ci sono alcune considerazioni da tenere a mente quando si eseguono le VM. Una delle maggiori sfide potenziali delle macchine virtuali è che l'esecuzione di più sistemi operativi e di un livello hypervisor può comportare un costo in termini di prestazioni se la macchina host non è sufficientemente robusta. Inoltre, l'hardware virtuale potrebbe non essere efficiente come l'hardware fisico di una macchina fisica. Infine, la maggior parte dei fornitori di servizi cloud offre macchine virtuali con CPU e memoria fisse, il che porta a un utilizzo inefficiente delle risorse.

Molte di queste preoccupazioni possono essere superate scegliendo di utilizzare le VM offerte da un provider di servizi cloud. Le VM cloud offrono molti vantaggi rispetto alle VM tradizionali, poiché consentono alle organizzazioni di accedere alla potenza di calcolo di un intero data center di computer, anziché di una singola macchina. Inoltre, le dimensioni delle macchine virtuali di Google Compute Engine offrono tipi di macchine personalizzate. Invece di scegliere tra tipi di macchine predefiniti che potrebbero includere capacità in eccesso, puoi personalizzare il rapporto CPU-memoria in base ai tuoi carichi di lavoro, in modo da pagare solo le risorse che utilizzi effettivamente. Questo approccio mirato riduce al minimo gli sprechi e può ridurre significativamente la spesa per il cloud, soprattutto quando si esegue la migrazione da on-premise a Google Cloud o da altri fornitori di servizi cloud. Compute Engine offre anche tipi di macchina virtuali ottimizzati per esigenze specifiche dei clienti per carichi di lavoro aziendali, configurazioni di memoria elevata o carichi di lavoro impegnativi come machine learning o computing ad alte prestazioni.

Google Cloud offre anche macchine virtuali schermate per una maggiore sicurezza e un'integrità verificabile delle tue istanze VM. Le macchine virtuali schermate di Google Cloud sfruttano funzionalità e controlli di sicurezza della piattaforma avanzati che proteggono i carichi di lavoro aziendali da minacce come attacchi remoti, escalation dei privilegi e utenti malintenzionati interni. 

Risolvi le tue sfide aziendali con Google Cloud

I nuovi clienti ricevono 300 $ di crediti senza costi da spendere su Google Cloud.
Parla con un esperto del team di vendita di Google Cloud per discutere della tua sfida unica in modo più dettagliato.

Fai il prossimo passo

Inizia a creare su Google Cloud con 300 $ di crediti senza costi e oltre 20 prodotti Always Free.

Google Cloud