Il software è come il sesso, è meglio quando è libero. (Software is like sex, it's better when it's free).

— Linus Torvalds

ProxMox VE, virtualizzazione livello enterprise per tutti

http://www.stenoweb.it/files/blog/proxmoxve.png In pieno clima vacanziero stò testando una interessante soluzione di virtualizzazione che se mantiene le premesse può dare seriamente filo da torcere ai più blasonati VMWare ESX, Citrix XenServer e al nuovo fiammante Hyper-V di Microsoft. Ok, forse non subito, e forse solo in fascia "entry", ma questo prodotto presenta una caratteristica unica, non presente negli altri prodotti: l'unione di due dei paradigmi della virtualizzazione: system virtualization (container, VPS) e full virtualization hardware. Ecco qua il ProxMox Virtual Environment.

Nuova tecnologia ?

Proxmox VE è un progetto opensource austriaco portato avanti da Proxmox Server Solutions GmbH con il patrocinio della Internet foundation Austria (IPA).
Nuova tecnologia ? No, niente di nuovo. ProxMox VE si limita ad usare tecnologie già esistenti per "impacchettare" un prodotto relativamente semplice da gestire e pronto in pochi minuti. Si, non stò scherzando, in pochi minuti.

Cosa fa ?

ProxMox VE usa due tecnologie diverse per proporre una ambiente che permette di "mischiare" le VM prodotte, e una comoda e leggera interfaccia web per gestire il tutto (o quasi). Facciamo una piccola panoramica sulle due tecnologie utilizzate:

OpenVZ

OpenVZ è una tecnologia di virtualizzazione a livello di sistema operativo operata da un Kernel Linux modificato per lo scopo. Permette ad un server di isolare multiple istanze dello stesso sistema operativo (Linux); "istanze" conosciute come Containers, Virtual Private Servers (VPSs), o Virtual Environments (VEs). E' una tecnologia usatissima dai provider internet e deriva da Virtuozzo di SWSoft.
A differenza delle virtual machine prodotte da software tipo VMWare, e paravirtualizzazioni tipo quelle proposte da Xen, OpenVZ è limitato dal fatto che sia host che guest devono essere Linux (anche se si possono usare differenti distribuzioni). Il vantaggio di questa tecnologia è che abbiamo solo un decadimento (dichiarato) delle performance di un misero 1-3% rispetto ad una macchina fisica, e che risorse quali la RAM, ad esempio, vengono allocate dinamicamente e non impegnate allo "start" della VPS. Quindi un singolo server può, usando queste caratteristiche, "potenzialmente" ospitare un elevato numero di server virtuali. Se "esplorate" il sistema virtualizzato da OpenVZ vi accorgete che in pratica tutto stà in un sistema chrooted in /var/lib/vz/private/xxx dove "xxx" è il numero/nome della VPS.

KVM

Sviluppato da Qumranet, KVM è un modulo per il kernel di Linux entrato nella mainline dello stesso dalla versione 2.6.20 che, similmente a quanto fanno programmi come VMware, Bochs e Virtual PC, permette di creare una o più macchine virtuali in cui far girare versioni non modificate di Linux, Windows o Open/Free BSD. Ad ogni macchina virtuale vengono assegnate una serie di risorse hardware virtualizzate, quali scheda di rete, hard disk, scheda video ecc.
A differenza degli hypervisor esterni, che assumono il controllo della macchina e dividono le risorse tra i sistemi operativi guest, KVM è parte di Linux ed utilizza il suo stesso scheduler dei processi e lo stesso sistema di gestione della memoria. Ciò significa che KVM è molto più compatto e semplice da utilizzare. Interessante notare, ad esempio, che le macchine virtuali create con KVM sono normali processi gestibili attraverso comandi come top, kill e taskset.

Installazione del sistema host

Per usare la full virtualization di KVM bisogna disporre di un processore di recente generazione a 64 bit che supporti le estensioni Intel VT o AMD-V, come i Core Duo, Xeon, AMD64 Athlon X2 e Opteron. Nel mio caso ho usato un Intel Quad Core con 4GB di RAM, per poter stressare un po' il sistema e vedere come si comporta.
L'installazione è quasi una formalità: si scarica la ISO da circa 250MB, si crea un CD e lo si infila nella macchina di test.
E si, Proxmox VE non è un pacchetto da installare su una distro esistente, è un po' com VMWare ESX, un sistema completo, a tutti gli effetti una distribuzione Linux ottimizzata e parametrizzata per virtualizzare server.
La cosa interessante è che, a differenza del già citato VMWare ESX, Proxmox VE si basa su una "normale" Debian Etch 4.0 64Bit (con kernel opportunamente patchato ed ottimizzato allo scopo), con cui condivide anche i repository. Cosa significa questo ? Che oltre alla sicurezza di un sistema stabile e affidato come Debian, possiamo utilizzare qualsiasi hardware ufficialmente supportato dalla versione stable di Debian. E chi ha a che fare con i server sà quello che questo significa.
Anzi, aggiungerei anche qualcosina in più, dal momento che Proxmox "monta" il kernel 2.6.24 in sostituzione dell' "ufficiale" Debian Etch 2.6.18.
L'installazione è filata via liscia dopo aver risposto a qualche canonica domanda sul partizionamento del disco e sulla configurazione della scheda di rete. Tempo impiegato: circa 10 minuti.
A questo punto, dopo i canonici apt-get update e apt-get upgrade per allineare il software all'ultima versione disponibile, da un PC basta collegarsi con un normale browser al server usando https:, et voilà, siamo pronti ad installare e configurare le nostre Virtual Machine.

Installazione dei sistemi guest

Attraverso l'interfaccia web (potete vedere degli screenshot sul wiki del progetto per farvi una idea) con pochi click del mouse si creano le VM di tipo container OpenVZ o full virtualization con KVM.
Nel mio caso la macchina di test aveva VMWare Server 1.0.6 e con la guida apposita o migrato le macchine esistenti. Windows 2008 server e le VPS Linux, invece, le ho installate da zero.
In totale ho buttato su:

  • 2 VM Windows XP
  • 1 VM Windows 2003 Server
  • 1 VM Windows 2008 Server
  • 2 VPS Debian Etch
  • 1 VPS Centos 5

L'installazione di un sistema Windows da zero è molto semplice: si carica la ISO di Windows (o si usa il CD di installazione) in /var/lib/vz/images/ISO e si avvia la VM: Proxmox VE dispone di una console VNC e attraverso questa si installa normalmente il tutto.
Ho avuto qualche problema con la migrazione di una macchina XP: ma seguando i consigli di Qumranet a riguardo ho risolto l'inghippo.
L'installazione di una VPS OpenVZ è invece una operazione di una banalità disarmante: attraverso l'interfaccia web abbiamo a disposizione una serie di VPS già pronte: basta scaricare il template dal sito del progetto e crearle: operazione che porta vià qualche secondo. Se non basta questo possiamo usare anche quelle "ufficiali" di Virtuozzo, papà di OpenVZ. Sono disponibili a questo indirizzo. Ce ne sono per tutti i gusti.

Funzionalità avanzate

Se ne intravedono già, dalla possibilità di fare una backup dall'interfaccia utente (non ancora funzionante) alla gestione di "Cluster" di server. Questo non ho potuto testarlo, non ho una seconda macchina di test a disposizione, ma in buona sostanza permette di "unire" più server fisici in una unica entità, gestirli centralmente e migrare i server virtuali da uno all'altro.
La gestione della rete e delle interfacce viene fatta utilizzando, come succede per Xen, le utility standard di Linux, quali le brutils per gestire i bridge e i devices tap.

Performance

Premetto che non ho messo sotto carico le VM, e quindi le mie valutazioni lasciano il tempo che trovano. Ma nella stessa macchina prima c'era VMWare Server 1.0.6 e l' incremento di velocità e responsività che ho notato con le VM create con Proxmox VE è strabiliante: non c'e' proprio paragone, sembra quasi di essere su una macchina fisica.
Ad essere sinceri il confronto andrebbe fatto con Xen e ESX e con macchine "con carico", ma questo per ora non è nelle mie possibilità.

Oro colato ?

Naturalmente no, almeno non ancora. In fondo è ancora una beta, la roadmap la potete vedere sul wiki a questo indirizzo.
Ci sono vari problemi, a volte bisogna scendere dietro le quinte e sistemare le cose a colpi di shell, anche se devo dire che questo è divertente ed aiuta a capire meglio come funziona il tutto.
Manca la gestione del backup, la documentazione dei file .conf delle VM per poter gestire e passare parametri aggiuntivi a KVM (ad esempio collegare dispositivi USB, ora possibile solo dalla console di qemu), la gestione di più processori assegnati alle VM rende tutto traballante con bellissimi BSOD da parte di Windows. Ho avuto anche problemi per installare una Full VM Linux, costringendomi a lanciare a mano KVM e la console QEMU. Non ho nemmeno capito come e se bilanciare il traffico tra le VM create (con il nice di linux ?).

Ma son problemi di gioventù, tutto è molto promettente. Il team di sviluppo ha schedulato la 1.0 per fine estate, dichiarando che sarà utilizzabile in ambiente di produzione.

Ma a me un dubbio resta: KVM è pronto ? Avessero usato Xen al suo posto mi sarei sentito forse un pochino più tranquillo ;)

Qualcuno ha un IBM Bladecenter S da prestarmi ? Vorrei fare qualche test :D

Bye.

ottimo articolo, steno :)
no, KVM effettivamente non è ancora pronto, ma si spera che in un 6 mesi lo diventi (sì, cosa che era già stata detta più di sei mesi fa, evvabbè).
interessante la possibilità di gestire cluster di server fisici, c'è qualche altro progetto che la offre al momento?

Qumranet ha un [http://www.qumranet.com/products-and-solutions prodotto commerciale basato su KVM] quindi deduco che per loro è pronto :)

Mah ! Non sò, per ora ho una decina di persone che lavorano sul terminal server di test virtualizzato con Proxmox (il tutto condito da frequenti backup), non ho notato problemi "gravi". Mi pare solo che venga distribuita troppo "democraticamente" la priorità nei processi, un po' quello che succedeva installando un terminal server su macchine monoprocessore.
Ripeto, il prodotto promette bene, vediamo se limano un po' di imperfezioni e dotano lo strumento di maggior controllo da parte dell'amministratore.
Per fare un esempio scemo (ma mica tanto) da interfaccia web non si riesce a fare lo shutdown di una VM Win2003 se non si è connessi sulla stessa come admin.
Il problema si risolve [http://www.proxmox.com/forum/showthread.php?t=580 come ho suggerito io stesso sul forum] ma questo denota appunto problemi di gioventù dove i dettagli (che nello sviluppo prendono sempre la maggior parte del tempo) devono ancora essere presi in carico e risolti.

Vediamo come và, magari ci risentiamo fra un paio di mesi ...

Riguardo altri progetti simili io non ne ho notizia, fino ad ora ho sempre visto prodotti che si installano su una distro di base esistente. Niente di "out of the box" così. Ma questo non significa nulla, come ho scoperto Proxmox VE per caso chissà quanti altri ne esistono ...

bel articolo, bravo!

Qual'e' oggi la tua opinione? A distanza di quasi 3 anni e tante versioni.

Ho avuto modo di provare a configurare due server in cluster drbd e sono rimasto secco... per me una soluzione scalabile, robusta e professionale... avrei delle forti titubanze a mettere su un server fisico con questa soluzione a portata di mano.

Sinceramente non saprei. Da allora non ho più avuto modo di provarlo, non sono mai uscito dall'ambito test con questo prodotto.
A distanza di tre anni direi che le alternative (se non ti servono i container OpenVZ) ci sono e pure meglio testate tipo VMWare ESXi o Citrix XenServer.

If you're extra candy crush fanboy then you'll love candy crush saga
cheats software.