menu icon

Macchine virtuali (VM)

Un'introduzione alle macchine virtuali (VM), tecnologia per progettare ambienti di calcolo virtualizzati e il fondamento della prima generazione di cloud computing.

Cos'è una macchina virtuale (VM)?

Una macchina virtuale è una rappresentazione virtuale, o emulazione, di un computer fisico. Spesso viene indicata come guest mentre la macchina fisica su cui viene eseguita è nota come host.

La virtualizzazione permette di creare più macchine virtuali, ognuna con il proprio sistema operativo (OS) e le applicazioni, su una singola macchina fisica. Una VM non può interagire direttamente con un computer fisico. Ha invece bisogno di un livello software leggero denominato hypervisor per coordinarsi con l'hardware fisico sottostante. L'hypervisor alloca le risorse di calcolo fisico - come i processori, la memoria e lo storage - ad ogni VM. Separa le VM in modo che non interferiscano tra loro.

Anche se questa tecnologia è nota con nomi diversi, tra cui server virtuale, istanza del server virtuale (VSI) e server privato virtuale (VPS), in questo articolo verrà semplicemente indicata come macchine virtuali.

Come funziona la virtualizzazione

Quando un hypervisor viene utilizzato su un computer o un server fisico, (noto anche come server bare metal), permette al computer fisico di separare il sistema operativo e le applicazioni dall'hardware. Quindi, può dividersi in diverse "macchine virtuali" indipendenti.

Ognuna di queste nuove macchine virtuali può quindi eseguire autonomamente i propri sistemi operativi e le proprie applicazioni, condividendo le risorse originali dal server bare metal gestito dall'hypervisor. Le risorse includono memoria, RAM, storage e così via.

Il seguente video spiega le basi della virtualizzazione (5:20) e se desideri maggiori informazioni puoi leggere l'articolo: "5 vantaggi della virtualizzazione".

L'hypervisor agisce come un vigile urbano, dirigendo e allocando le risorse del server bare metal a ciascuna delle varie nuove macchine virtuali, verificando che non interferiscano tra loro.

Esistono due tipi primari di hypervisor.

Hypervisor di tipo 1, che viene eseguito direttamente sull'hardware fisico (di solito un server), sostituendo il sistema operativo. Di solito si utilizza un prodotto software separato per creare e gestire le VM sull'hypervisor. Alcuni strumenti di gestione, come VMware vSphere, consentono di selezionare un sistema operativo guest da installare nella VM.

È possibile utilizzare una VM come modello per le altre, duplicandola per crearne nuove. A seconda delle tue esigenze, potresti creare più template di VM per diversi scopi, come ad esempio test software, database di produzione e ambienti di sviluppo.

Hypervisor di tipo 2, che viene eseguito come applicazione all'interno di un sistema operativo host e di solito viene utilizzato sulle piattaforme desktop o notebook dei singoli utenti. Con un hypervisor di tipo 2 puoi creare manualmente una VM e poi installarvi un sistema operativo guest. Puoi utilizzare l'hypervisor per assegnare le risorse fisiche alla tua VM, impostando manualmente la quantità di core del processore e la memoria che può utilizzare. A seconda delle funzionalità dell'hypervisor, puoi impostare anche opzioni come l'accelerazione 3D per la grafica.

Per una panoramica completa degli hypervisor, leggi l'articolo: "Hypervisor: una guida completa".

Vantaggi e benefici delle VM

Le VM offrono diversi vantaggi rispetto all'hardware fisico tradizionale:

  • Utilizzo delle risorse e ROI migliorato: Poiché più VM vengono eseguite su un singolo computer fisico, i clienti non devono acquistare un nuovo server ogni volta che vogliono eseguire un altro sistema operativo e possono ottenere più guadagni da ogni componente hardware che già possiedono.
  • Scalabilità: con il cloud computing è facile implementare più copie della stessa macchina virtuale per gestire meglio l'aumento dei carichi di lavoro.
  • Portabilità: le VM possono essere spostate a seconda delle necessità tra i computer fisici in una rete. Questo permette di assegnare i carichi di lavoro ai server con potenza di calcolo supplementare. Le VM possono anche essere spostate tra ambienti locali e cloud, rendendole utili per scenari di cloud ibridi in cui le risorse di calcolo vengono condivise tra il data center e un provider del servizio cloud.
  • Flessibilità: creare una VM è più veloce e più semplice dell'installazione di un sistema operativo su un server fisico, poiché è possibile clonare una VM con il sistema operativo già installato. Gli sviluppatori e i tester software possono creare nuovi ambienti su richiesta per gestire nuove attività a seconda delle necessità.
  • Sicurezza: le VM migliorano la sicurezza in diversi modi rispetto ai sistemi operativi in esecuzione direttamente sull'hardware. Una VM è un file che può essere analizzato per rilevare software dannosi da un programma esterno. È possibile creare un'intera istantanea della VM in qualsiasi momento e poi ripristinarne lo stato se viene infettata da malware, garantendone l'integrità. La creazione veloce e facile di VM permette anche di eliminare completamente una VM compromessa e quindi di ricrearla rapidamente, accelerando il ripristino dalle infezioni da malware.

Utilizza i casi per le VM

Le VM possono essere utilizzate per diversi scopi, sia dagli amministratori IT aziendali che dagli utenti. Ecco alcune opzioni:

  • Cloud computing: negli ultimi 10 anni, le VM sono state l'unità fondamentale di elaborazione nel cloud, consentendo di eseguire e scalare correttamente decine di diversi tipi di applicazioni e carichi di lavoro.
  • Supporto DevOps: le VM sono un ottimo modo per supportare gli sviluppatori aziendali, che possono configurare i modelli di VM con le impostazioni per lo sviluppo software e i processi di verifica. Possono creare VM per compiti specifici come i test software statici, includendo questi passaggi in un flusso di lavoro di sviluppo automatizzato. Ciò permette di semplificare la toolchain DevOps.
  • Testare un nuovo sistema operativo: una VM consente di testare un nuovo sistema operativo sul desktop senza modificare il sistema operativo principale.
  • Identificare il malware: le VM sono utili per i ricercatori di malware che spesso hanno bisogno di macchine nuove su cui testare programmi dannosi.
  • Eseguire software incompatibili: alcuni utenti possono preferire un sistema operativo mentre hanno ancora bisogno di un programma disponibile solo per un altro SO. Un esempio è la linea di software Dragon di dettatura vocale. Il suo fornitore, Nuance, ha interrotto la produzione della versione macOS del suo prodotto. Tuttavia, eseguire un hypervisor basato su desktop - come VMware Fusion o Parallels - consente di eseguire Windows in una VM, dando accesso a quella versione del software.
  • Navigare in modo sicuro: utilizzando una macchina virtuale per navigare puoi visitare i siti senza preoccuparsi delle infezioni. Puoi scattare un'istantanea della tua macchina e ripristinare l'immagine dopo ogni sessione di navigazione. Un utente può configurare questa impostazione autonomamente, utilizzando un hypervisor desktop di tipo 2. In alternativa, un amministratore può fornire un desktop virtuale temporaneo ubicato sul server.

Tipi di VM

In questa sezione vengono descritti alcuni tipi differenti di macchine virtuali:

  • Macchine virtuali Windows
  • Macchine virtuali Android
  • Macchine virtuali Mac
  • Macchine virtuali iOS
  • Macchine virtuali Java
  • Macchine virtuali Python
  • Macchine virtuali Linux
  • Macchine virtuali VMware
  • Macchine virtuali Ubuntu

Macchine virtuali Windows

La maggior parte degli hypervisor supportano le VM che eseguono Windows come guest. L'hypervisor Hyper-V di Microsoft fa parte del sistema operativo Windows. Quando installato, crea una partizione principale contenente sia l'hypervisor che il sistema operativo Windows principale. Entrambi hanno accesso privilegiato all'hardware. Altri sistemi operativi, inclusi i guest Windows, vengono eseguiti in partizioni secondarie che comunicano con l'hardware tramite la partizione principale.

Macchine virtuali Android

Il sistema operativo Android open source di Google è comune sui dispositivi mobili e i dispositivi domestici connessi, come i dispositivi di home entertainment. Il sistema operativo Android è compatibile solo con l'architettura del processore ARM utilizzata in questi dispositivi, ma gli appassionati, i videogiocatori Android o gli sviluppatori di software potrebbero volerlo eseguire su PC.

Questo è problematico poiché i PC sono basati su un'architettura di processore x86 completamente diversa e un hypervisor di virtualizzazione hardware trasferisce solo le istruzioni tra la VM e la CPU. Non le converte per i processori con diverse serie di istruzioni. Esistono vari progetti che risolvono questo problema.

Alcuni progetti, come Shashlik o Genymotion, utilizzano un emulatore che ricrea l'architettura ARM nel software. Un'alternativa, il progetto Android-x86, esegue invece il porting di Android sull'architettura x86. Per eseguirlo è necessario installare il programma Android-x86 come una macchina virtuale utilizzando l'hypervisor di tipo 2 VirtualBox. Un'altra alternativa, Anbox, esegue il sistema operativo Android sul kernel di un sistema operativo Linux host.

Macchine virtuali Mac

Apple permette solo al suo sistema macOS di funzionare su hardware Apple, bloccandone l'esecuzione su hardware non Apple come VM o in altri modi che violano l'accordo di licenza con l'utente finale. È possibile utilizzare gli hypervisor di tipo 2 su hardware Mac per creare VM con un guest macOS.

Macchine virtuali iOS

Attualmente non è possibile eseguire iOS in una VM, dato che Apple controlla rigorosamente il suo sistema operativo iOS e non permette di eseguirlo su dispositivi senza iOS.

La soluzione più simile a una VM iOS è il simulatore di iPhone incluso nell'ambiente di sviluppo integrato Xcode, che simula l'intero sistema iPhone nel software.

Macchine virtuali Java

La piattaforma Java è un ambiente di esecuzione per i programmi scritti nel linguaggio di sviluppo del software Java. L'obiettivo di Java era offrire la funzionalità "write once, run anywhere". Ciò significa che qualsiasi programma Java poteva essere eseguito su qualsiasi hardware basato sulla piattaforma Java. Per realizzarlo, la piattaforma Java include una Java Virtual Machine (JVM).

I programmi Java contengono bytecode, istruzioni destinate alla JVM. La JVM compila questo bytecode in codice macchina, ovvero il linguaggio di livello più basso utilizzato dal computer host. La JVM in una piattaforma Java di elaborazione convertirà una serie diversa di istruzioni di codice macchina per ogni JVM, in base al codice macchina previsto dal processore.

La JVM, quindi, non esegue un intero sistema operativo e non utilizza un hypervisor come le altre VM. Converte invece i programmi software di livello applicativo per eseguirli su hardware particolare.

Per ulteriori informazioni su Java, leggere l'articolo: "Java: una guida completa".

Macchine virtuali Python

Come la JVM, la VM Python non viene eseguita su un hypervisor e non contiene un sistema operativo guest. È uno strumento che consente ai programmi scritti nel linguaggio di programmazione Python di funzionare su una serie di CPU.

Simile a Java, Python converte i suoi programmi in un formato intermedio chiamato bytecode, memorizzandolo in un file pronto per essere eseguito. Quando il programma viene eseguito, la VM Python converte il bytecode in codice macchina per l'esecuzione veloce.

Macchine virtuali Linux

Linux è un sistema operativo guest comune utilizzato in molte VM. È anche un sistema operativo host comune utilizzato per eseguire le VM e dispone inoltre di un suo hypervisor, denominato KVM (kernel-based virtual machine). Il kernel Linux mainstream include KVM dal 2007. Sebbene sia un progetto open source, Red Hat è ora proprietario della società originale che ha sviluppato KVM.

Macchine virtuali VMware

VMware è stato uno dei primi fornitori di software di virtualizzazione e oggi è uno dei più importanti fornitori di hypervisor di tipo 1 e 2 e di software VM per i clienti aziendali.

"VMware: una guida completa" fornisce una panoramica completa di tutte le soluzioni VMware.

Macchine virtuali Ubuntu

Ubuntu è una distribuzione Linux prodotta da Canonical. È disponibile nelle versioni desktop e server. Entrambe possono essere installate come una VM. Ubuntu può essere distribuito come sistema operativo guest su Microsoft Hyper-V. Fornisce una versione ottimizzata di Ubuntu Desktop perfettamente compatibile con Hyper-V’s Enhanced Session Mode, assicurando una completa integrazione tra l'host Windows e Ubuntu VM. Include il supporto per l'integrazione degli appunti, il ridimensionamento del desktop dinamico, le cartelle condivise e lo spostamento del mouse tra i desktop host e guest.

Multi-tenant e single-tenant

Nel cloud computing, le macchine virtuali sono tipicamente offerte in entrambe le versioni: single-tenant e multi-tenant.

Le macchine virtuali pubbliche o multi-tenant, sono macchine virtuali in cui più utenti condividono infrastrutture fisiche comuni. Questo è l'approccio più conveniente e scalabile per la fornitura di macchine virtuali, ma non include caratteristiche di isolamento che le organizzazioni con rigorosi requisiti di sicurezza o conformità potrebbero richiedere.

Due modelli per macchine virtuali single-tenant sono host dedicati e istanze dedicate.

Un host dedicato richiede il noleggio di un'intera macchina fisica, il mantenimento di un accesso continuo e il controllo della macchina, dell'hardware e di qualsiasi software installato su di essa. Questo modello fornisce la massima flessibilità e trasparenza hardware, il controllo e il posizionamento dei carichi di lavoro e offre anche alcuni vantaggi per determinati software bring-your-own license.

Un'istanza dedicata offre lo stesso isolamento single-tenant e lo stesso controllo sul posizionamento dei carichi di lavoro, ma non può essere associata a una macchina fisica specifica. Così, ad esempio, se un'istanza dedicata viene riavviata, potrebbe essere associata a una nuova macchina fisica - una macchina dedicata al singolo account, ma comunque una nuova macchina, potenzialmente in una posizione fisica diversa.

Modelli di prezzi per le macchine virtuali

I modelli di prezzi più comuni per le macchine virtuali nel cloud sono pay-as-you-go (per ora o secondo), istanze transient/spot, istanze riservate e host dedicati.

  • Pay-as-you-go: Nel modello pay-as-you-go non sono previsti costi iniziali per la macchina virtuale e gli utenti pagano semplicemente quello che usano, tipicamente con fatturazione all'ora o al secondo, in base al tipo di provider e di istanza.
  • Istanze transient/spot: Il modello di costo più basso delle VM, le istanze transient/spot beneficiano della capacità in eccesso dei provider, che però può essere reclamata dal provider in qualsiasi momento. Di solito, sono utili per le applicazioni che non devono essere sempre disponibili o che sono molto costose per qualsiasi altro modello.
  • Istanze riservate: A differenza dei modelli pay-as-you-go, le istanze riservate prevedono un impegno a termine esplicito, di solito tra uno e tre anni, ma sono disponibili con forti sconti.
  • Host dedicati: Nel caso degli host dedicati, all'utente viene addebitato il costo del server fisico totale, fatturato in base agli incrementi con cui il provider offre i server dedicati, tipicamente orari o mensili.

Macchine virtuali e server bare metal

Nella scelta di una macchina virtuale invece di un server fisico, noto anche come server bare metal, non basata confrontare le varie funzionalità, ma è necessario considerare le proprie esigenze e le relative tempistiche.

I server bare metal si basano su hardware, potenza e isolamento. Sono server fisici single-tenant completamente privi di cicli di hypervisor (software di virtualizzazione) e interamente dedicati a un singolo cliente.

I carichi di lavoro che danno priorità alle prestazioni e all'isolamento, come ad esempio le applicazioni con intenso utilizzo di dati e gli obblighi di conformità normativa, sono tipicamente ideali per i server bare metal - soprattutto se distribuiti su periodi di tempo prolungati.

Le applicazioni di e-commerce, ERP, CRM, SCM e di servizi finanziari sono solo alcuni carichi di lavoro ideali per i server bare metal.

Pertanto, quando posizionare un hypervisor su hardware bare metal per realizzare una macchina virtuale? Quando i carichi di lavoro richiedono massima flessibilità e scalabilità.

Le macchine virtuali incrementano la capacità dei server e aumentano l'utilizzo - ideale per spostare i dati da una macchina virtuale all'altra, ridimensionare i dataset e suddividere i carichi di lavoro dinamici.

Macchine virtuali e contenitori

Il modo più semplice per comprendere cos'è un contenitore è capire in cosa si differenzia da una macchina virtuale tradizionale. Nella virtualizzazione tradizionale - sia locale che nel cloud - un hypervisor viene utilizzato per virtualizzare l'hardware fisico. Ogni VM contiene quindi un sistema operativo guest, una copia virtuale dell'hardware che il sistema operativo richiede di eseguire, con un'applicazione e le relative librerie e dipendenze associate.

Invece di virtualizzare l'hardware sottostante, i contenitori virtualizzano il sistema operativo (tipicamente Linux), in modo che ogni contenitore inclusa solo l'applicazione e le relative librerie e dipendenze. L'assenza del sistema operativo guest è il motivo per cui i contenitori sono così leggeri e, quindi, veloci e portatili.

I contenitori e il motore di orchestrazione che li gestisce, Kubernetes, sono perfetti per architetture moderne, native del cloud e di microservizi. Anche se i contenitori sono più comunemente associati ai servizi stateless, possono essere utilizzati anche per i servizi stateful.

I contenitori stanno inoltre diventando più comuni negli scenari di cloud ibridi, poiché possono essere eseguiti in modo coerente su laptop, cloud e ambienti IT on-premise tradizionali.

Il post del blog "Contenitori e VM: qual è la differenza?" fornisce ulteriori informazioni.

Nel seguente video, Sai Vennam descrive le nozioni base della containerizzazione e le differenze con le VM (8:09):

Come scegliere un fornitore di macchine virtuali

La scelta di una macchina virtuale e del cloud provider non è difficile, se si hanno le idee chiare su cosa cercare. La macchina virtuale deve rispondere alle esigenze dei carichi di lavoro e al budget aziendale, ovviamente, ma anche altri fattori sono importanti per la scelta dell'ambiente di virtualizzazione. Di seguito sono riportati dieci aspetti da considerare per la scelta del fornitore di servizi di macchina virtuale.

  • Supporto affidabile - Assicurarsi che la disponibilità dell'assistenza clienti sia 24/7, per telefono, email e chat o di persona. È particolarmente utile poter parlare con una persona vera che ti aiuti a risolvere le situazioni IT critiche. È anche importante tenere presente quali cloud provider offrono servizi aggiuntivi per un supporto pratico.
  • Opzioni gestite - Il provider cloud offre soluzioni gestite e non gestite? Se non conosci bene la tecnologia di virtualizzazione, considera un provider che offra servizi di installazione, manutenzione e monitoraggio continuo delle prestazioni.
  • Integrazione software - L'ambiente della macchina virtuale si integra correttamente? I sistemi operativi, il software di terze parti, la tecnologia open source e le applicazioni contribuiscono a fornire più soluzioni per il tuo business. Avrai bisogno di un fornitore di macchina virtuale che offra assistenza e collaborazioni consolidate con i principali fornitori di software del settore. Nota: Non scegliere soluzioni con blocchi del fornitore.
  • Rete e infrastrutture di alta qualità - Come viene aggiornata l'infrastruttura su cui viene eseguita la tua nuova macchina virtuale? Ciò include server bare metal affidabili, data center moderni e backbone di rete. Un cloud provider deve essere in grado di fornire hardware all'avanguardia e tecnologie di rete ad alta velocità.
  • Ubicazione, posizione, luogo - Più vicini saranno i dati agli utenti, meno saranno i problemi in termini di latenza, sicurezza e tempestiva dei servizi. Una rete globale efficace di data center distribuiti e sedi POP è fondamentale per disporre dei dati dove e quando necessario.
  • Backup e ripristino - Che piano offre il tuo provider cloud per assicurare la disponibilità operativa delle macchine virtuali in caso di eventi imprevisti? Include anche opzioni di backup e ridondanza per l'ambiente virtualizzato? L'operatività continua è un aspetto da tenere seriamente in considerazione.
  • Scalabilità semplificata - Quanto è facile e veloce aumentare o ridurre la potenza, riservare e aggiornare la tua macchina virtuale? Il modello preferito dalle aziende per quanto riguarda la scalabilità della macchina virtuale è "on-demand".
  • Varie configurazioni di CPU - Più sono le configurazioni disponibili, meglio è. Non tutte le configurazioni di macchina virtuale sono adatte a ogni carico di lavoro per ciascuna sessione di utilizzo. Assicurati di cercare un fornitore di macchine virtuali che distribuisca vari pacchetti di configurazione, con requisiti single-tenant e multi-tenant.
  • Livelli di sicurezza - Verifica con attenzione che il tuo provider li includa. I tuoi dati aziendali sono estremamente preziosi, soprattutto se si tratta di informazioni sensibili del cliente. Le linee di rete private, le opzioni dei data center federali, le funzioni di crittografia integrate e il rispetto degli standard di conformità normativa sono essenziali per proteggere il tuo asset più prezioso.
  • Supporto per una migrazione trasparente - Le tue priorità IT evolveranno sempre. Questo lo sappiamo tutti. Qualsiasi fornitore di macchina virtuale deve essere in grado di aiutarti a gestire gli ambienti ibridi, on-premise e off-premise. Verifica che siano disponibili opzioni di migrazione completa dei dati, in rete e basate sulle applicazioni.

Macchine virtuali e IBM Cloud

IBM Cloud offre l'opportunità di configurare ed eseguire le tue VM in base a diverse opzioni tecniche e di prezzo. Puoi selezionare i profili tecnici per le VM in base alla potenza di calcolo richiesta, alla memoria, lo storage locale e le funzionalità della GPU, personalizzando il sistema in base al carico di lavoro specifico. Puoi anche gestire le VM VMware utilizzando IBM Cloud for VMware Solutions.

Puoi scegliere tra nodi pubblici o privati per rispettare i tuoi requisiti di sicurezza e conformità. Un servizio single-tenant privato può risiedere su un host dedicato di tua scelta tra oltre 60 data center IBM in 19 paesi del mondo.

Scegli tra numerose opzioni di implementazione a seconda delle tue esigenze di budget. Un'istanza VM pubblica che puoi prenotare in anticipo per un periodo di tempo è meno costosa di un sistema non riservato. In alternativa, puoi scegliere una VM basata sui prezzi di mercato per gestire i carichi di lavoro temporanei.

IBM Cloud consente anche di combinare le risorse di server virtuali e bare metal per adattarle ai requisiti dei carichi di lavoro.

Per saperne di più, visita la pagina IBM Cloud e registrati per un ID IBM.