Parlando del risparmio energetico sui server, non possiamo certo tralasciare l'argomento virtualizzazione. L'argomento è complesso e meriterebbe una guida a sé stante, ma cercheremo in ogni caso di fare una panoramica comprensibile. Se volete approfondire ulteriormente l'argomento potete trovare contenuti su www.pmi.it e su www.ictv.it, oltre che su HTML.it.
Sostanzialmente, il grosso vantaggio che ci offre la virtualizzazione è la condivisione delle risorse. Infatti, anche applicando tutte le tecniche spiegate nei capitoli precedenti di questa guida, su ciascun server potrebbe comunque rimanere una buona parte di risorse non utilizzate.
Specialmente durante la giornata, quando il processore e i dischi devono girare al massimo perché sono in attesa in ogni istante di una possibile richiesta, potrebbero esserci comunque periodi di scarso utilizzo. Se i server sono molti, questo spreco di energia diventa considerevole.
Inoltre, di solito si tende ad avere macchine sovradimensionate rispetto alle reali esigenze, per avere la facilità di poter crescere nel futuro. Quindi significa che un server viene probabilmente sfruttato per non più del 20% / 30% delle sue capacità, ma la maggior parte dei suoi consumi rimangono invece fissi al 100%.
Unire i server tramite virtualizzazione significa sfruttare meglio l'hardware a disposizione, "riempiendo" (per così dire) i vari server fisici per ridurre lo spreco. Grazie alla virtualizzazione, spostare un sistema da una macchina a un'altra è un lavoro molto più facile e indolore rispetto a una migrazione tradizionale.
Ragionando in termini di consumi, e calcolando un'ipotesi sensata di avere quattro server virtuali su una sola macchina fisica, possiamo arrivare a un risparmio di energia fino al 75% durante il normale orario di lavoro.
Tecniche di virtualizzazione
La virtualizzazione viene realizzata tramite diverse tecnologie.
In alcuni casi (VMware, Qemu), la virtualizzazione è realizzata completamente tramite software. In pratica, per fare le stesse cose, la CPU reale riceve delle istruzioni diverse a seconda che sia il sistema "reale" a mandarle o che sia invece la macchina virtuale. Questo a causa della modalità non privilegiata (user space) in cui devono per forza di cosa essere eseguiti i programmi di virtualizzazione sulle architetture x86. Questa tecnologia non richiede alcuna modifica al sistema operativo guest, cioè quello ospitato all'interno della macchina virtuale, che può quindi essere installato normalmente.
La paravirtualizzazione introduce invece delle modifiche nel sistema guest, modificando il kernel in modo che alcune istruzioni critiche non siano mai mandate dalla macchina virtuale alla CPU. In altre parole, il sistema operativo guest viene adattato per funzionare adeguatamente all'interno di una macchina virtuale. Questo porta un discreto guadagno in termini di prestazioni. Xen e User Mode Linux utilizzano la paravirtualizzazione.
Alcuni tecnologie incluse nei processori più recenti, come Intel VT e AMD-V, introducono un ulteriore aiuto: risolvono il problema delle istruzioni critiche per la CPU, essendo in grado di gestire correttamente tali istruzioni anche se provengono da un sistema non privilegiato quale una macchina virtuale. Xen e KVM supportano questa tecnologia.