adv

Le moderne architetture informatiche si basano sempre più sulla virtualizzazione. Virtual Machine e Container, cosa sono ed in cosa differiscono?

Panorama

La crescente potenza dell’hardware disponibile negli ultimi anni ha riportato l’attenzione sull’architettura centralizzata, uno o più server fisici che fanno girare più sistemi operativi, fornitori di servizi informatici specifici, ammortizzando spazi e costi dei componenti ed automatizzando la distribuzione e la gestione.

Virtual Machine

Le macchine virtuali sono emulazioni di computer. Il server fisico, host, mette a disposizione l’hardware, un sistema operativo ed un hypervisor, componente che consente di emulare più sistemi operativi con i loro file system e le loro applicazioni. Anche le risorse “fisiche” come spazio disco, memoria RAM, scheda di rete, etc. di cui disporrà la macchina virtuale saranno emulate dall’hypervisor attingendo dalle risorse fisiche reali. Viene da se, quindi, la necessità di un considerevole asset di base in quanto, ad esempio, non sarà possibile, a meno di gestioni dinamiche delle risorse, emulare due sistemi dedicando a ciascuno 4 GB di RAM se il server di base ne ha solo 8 in totale in quanto parte della RAM servirà a far girare anche l’host. Lo stesso esempio si traspone facilmente per l’hard-disk.

Vantaggi delle Virtual Machine

Le virtual machine possono essere facilmente clonate e portate su altri sistemi ed il riavvio dei sistemi emulati in generale è molto più rapido che se si dovesse riavviare un server fisico reale. Ciò facilita la gestione in cluster, la manutenzione ed in generale il lavoro dei sistemisti, riducendo l’impatto negativo sull’utente finale del servizio.

Chiaramente, se tutto si concentra sul server fisico un danno a quest’ultimo si ripercuote su tutte le macchine virtuali ospitate. Per far fronte a queste eventualità ci sono, tuttavia, sistemi di ridondanza fisici, anche cluster.

Sistemi per Virtual Machine

Per creare un’architettura basata su virtual machine esistono varie soluzioni a pagamento e non.

L’azienda VMware propone soluzioni server come ESXi per un’architettura server con un client vSphere per connettersi e gestire le macchine virtuali. Proxmox è una soluzione analoga ma Linux-based, per la gestione ha un’interfaccia web ma consente anche accesso in ssh ed esecuzione comandi via cli (command line interface). Altre soluzioni che consentono la realizzazione di virtual machine anche sul proprio computer, ad esempio per testare altri sistemi operativi o utilizzare programmi che non possono funzionare su quello che anima il nostro computer, sono VMWare Workstation o VM Virtual Box di Oracle.

Container

Negli ultimi anni, nell’ambito della virtualizzazione, si sta affermando sempre più una nuova soluzione. I container rappresentano un differente approccio all’emulazione in quanto non è più mirato alla replica del sistema operativo ma all’esecuzione del singolo applicativo. Viene infatti realizzato un pacchetto contenente il file system, il software e tutte le librerie e le dipendenze di cui necessita per l’esecuzione. I container si appoggiano ad un motore, Docker è forse quello più noto, e, tramite esso, utilizzano direttamente le risorse del sistema host, sfruttando una caratteristica chiamata isolamento dei namespace. Tale soluzione è più leggera e rapida delle virtual machine, è mirata alla sola applicazione desiderata, senza aggiungere inutili infrastrutture, è portabile, può girare sotto qualunque architettura Windows o Linux che monti il suddetto motore.

Come alternative a Docker per i container si possono citare sistemi come Mesos Containerizer, OpenVZ, CoreOS rkt ed LCX Linux Containers.