Nell’era del cloud computing, gli hy­per­vi­sor come KVM e Xen sono più im­por­tan­ti che mai. In cosa dif­fe­ri­sco­no queste due tec­no­lo­gie di vir­tua­liz­za­zio­ne? Mettiamo a confronto Xen e KVM evi­den­zian­do­ne si­mi­li­tu­di­ni e dif­fe­ren­ze.

Xen: una pre­sen­ta­zio­ne dell’hy­per­vi­sor

Un hy­per­vi­sor è un software di vir­tua­liz­za­zio­ne open source che permette di eseguire con­tem­po­ra­nea­men­te diversi sistemi operativi guest su un singolo computer host. Le risorse hardware del computer host sono allocate dall’hy­per­vi­sor Xen.

Che tipo di hy­per­vi­sor è Xen?

Xen è un co­sid­det­to hy­per­vi­sor di tipo 1 (o bare-metal hy­per­vi­sor). In quanto tale, viene in­stal­la­to di­ret­ta­men­te sull’hardware, con cui comunica at­tra­ver­so i propri driver. I sistemi operativi host e guest vengono quindi in­stal­la­ti al di sopra di esso. Xen assegna i sistemi operativi ai co­sid­det­ti domini dom0 e domU per dif­fe­ren­zia­re i diversi livelli di pri­vi­le­gio. Il sistema operativo host ap­par­tie­ne al dominio dom0 e quindi gode del livello di pri­vi­le­gio più alto. Tutti i sistemi operativi guest ap­par­ten­go­no a domU come sistemi “non pri­vi­le­gia­ti” (un­pri­vi­le­ged in inglese).

In ogni caso, tutte le co­mu­ni­ca­zio­ni tra il sistema operativo host e l’hardware non avvengono di­ret­ta­men­te tramite i driver del sistema operativo, ma tramite l’hy­per­vi­sor, che utilizza una speciale API per Xen. La profonda in­te­gra­zio­ne dell’hy­per­vi­sor Xen ga­ran­ti­sce un utilizzo più ef­fi­cien­te dell’hardware, un minore overhead e meno punti di attacco.

Xen: maggiore ef­fi­cien­za grazie alla pa­ra­vir­tua­liz­za­zio­ne

La pa­ra­vir­tua­liz­za­zio­ne è una tecnica di vir­tua­liz­za­zio­ne uti­liz­za­ta da Xen per aumentare l’ef­fi­cien­za. Uti­liz­zan­do la pa­ra­vir­tua­liz­za­zio­ne, i com­po­nen­ti hardware non vengono emulati dall’hy­per­vi­sor e il sistema guest è con­sa­pe­vo­le di essere eseguito in un ambiente vir­tua­liz­za­to. Questo comporta una co­mu­ni­ca­zio­ne molto più veloce tra i sistemi operativi guesti e l’hy­per­vi­sor Xen, ga­ran­ten­do così maggiori pre­sta­zio­ni. Tuttavia, questa tecnica pone requisiti speciali ai sistemi operativi in­stal­la­ti su Xen, ne­ces­si­tan­do ad esempio di driver spe­cia­liz­za­ti e di un supporto per la pa­ra­vir­tua­liz­za­zio­ne all’interno del kernel del sistema operativo. Si tratta comunque di requisiti sod­di­sfat­ti ormai da anni dai kernel dei sistemi operativi più comuni come Linux e BSD.

Nel caso in cui la pa­ra­vir­tua­liz­za­zio­ne non sia possibile o non sia de­si­de­ra­ta per un sistema operativo, Xen supporta anche la vir­tua­liz­za­zio­ne completa, dove i com­po­nen­ti hardware sono emulati vir­tual­men­te. Questo rallenta la vir­tua­liz­za­zio­ne, ma offre una maggiore com­pa­ti­bi­li­tà, per­met­ten­do di eseguire anche sistemi operativi che non sup­por­ta­no la pa­ra­vir­tua­liz­za­zio­ne.

Consiglio

KVM è solo una delle tante al­ter­na­ti­ve a Xen di­spo­ni­bi­li sul mercato. Ti pre­sen­tia­mo le più in­te­res­san­ti nel nostro articolo.

KVM: le ca­rat­te­ri­sti­che che lo con­trad­di­stin­guo­no

KVM (dall’inglese Kernel-based Virtual Machine) è anch’esso un hy­per­vi­sor open source che consente di eseguire più sistemi operativi guest su un singolo server fisico. Sebbene KVM e Xen abbiano fon­da­men­tal­men­te lo stesso scopo, sono costruiti su principi fun­zio­na­li dif­fe­ren­ti e quindi adatti a dif­fe­ren­ti casi d’uso.

Che tipo di hy­per­vi­sor è KVM?

In passato, KVM veniva spesso definito come un hy­per­vi­sor di tipo 2, poiché in pre­ce­den­za poteva co­mu­ni­ca­re con l’hardware solo at­tra­ver­so i driver del sistema operativo host. La pa­ra­vir­tua­liz­za­zio­ne non era quindi possibile e tutti i com­po­nen­ti hardware dovevano essere emulati da KVM per i sistemi guest.

Nel frattempo, KVM è stato ampliato con l’opzione di pa­ra­vir­tua­liz­za­zio­ne, ma funziona in modo diverso rispetto a Xen: a dif­fe­ren­za di quest’ultimo, non viene in­stal­la­to sotto il sistema operativo host, ma è integrato di­ret­ta­men­te nel kernel di Linux, uti­liz­zan­do quindi i com­po­nen­ti software del sistema Linux per gestire i sistemi vir­tua­liz­za­ti e i loro processi. In KVM, ogni sistema operativo host dispone del proprio hardware vir­tua­liz­za­to, comprese le in­ter­fac­ce di rete, lo spazio su disco, ecc. Per ac­ce­le­ra­re questa vir­tua­liz­za­zio­ne completa, KVM utilizza la co­sid­det­ta Hardware-Assisted Vir­tua­li­za­tion (in italiano vir­tua­liz­za­zio­ne assistita da hardware), che è già integrata nella maggior parte dei pro­ces­so­ri moderni.

Tuttavia, con KVM non tutte le com­po­nen­ti vengono com­ple­ta­men­te vir­tua­liz­za­te. Per ac­ce­le­ra­re i sistemi e le ap­pli­ca­zio­ni in ese­cu­zio­ne, vengono offerte alcune in­ter­fac­ce pa­ra­vir­tua­liz­za­te in grado di co­mu­ni­ca­re di­ret­ta­men­te con l’hy­per­vi­sor tramite l’API Virtio. Quindi, KVM offre prin­ci­pal­men­te una pa­ra­vir­tua­liz­za­zio­ne per i di­spo­si­ti­vi di input e output, come ad esempio per l’in­ter­fac­cia di rete. Si può quindi parlare di pa­ra­vir­tua­liz­za­zio­ne parziale.

Compute Engine
La soluzione IaaS ideale per i tuoi carichi di lavoro
  • vCPU estre­ma­men­te van­tag­gio­se e potenti core dedicati
  • Massima fles­si­bi­li­tà senza periodo con­trat­tua­le minimo
  • Servizio di as­si­sten­za tecnica 24 ore su 24, 7 giorni su 7

KVM e Xen a confronto: quale hy­per­vi­sor offre le migliori pre­sta­zio­ni?

La dif­fe­ren­za prin­ci­pa­le tra i due hy­per­vi­sor risiede nel livello del software stack in cui operano. Essendo parte in­te­gran­te del kernel Linux, KVM sfrutta la vir­tua­liz­za­zio­ne assistita dall’hardware per vir­tua­liz­za­re com­ple­ta­men­te molti com­po­nen­ti hardware senza subire si­gni­fi­ca­ti­ve perdite di per­for­man­ce. Le prin­ci­pa­li in­ter­fac­ce di I/O vengono pa­ra­vir­tua­liz­za­te, il che dovrebbe co­sti­tui­re il fattore più im­por­tan­te per la maggior parte delle ap­pli­ca­zio­ni server. D’altra parte, Xen, essendo un hy­per­vi­sor di tipo 1, viene tra­di­zio­nal­men­te in­stal­la­to sul sistema operativo host, gestendo in questo modo la di­stri­bu­zio­ne delle risorse hardware in modo diretto. Questo, almeno sulla carta, permette a Xen di offrire una co­mu­ni­ca­zio­ne con l’hardware più ef­fi­cien­te e per­for­man­te. Tuttavia, grazie ai driver Virtio di KVM e alla vir­tua­liz­za­zio­ne assistita dall’hardware, Xen e KVM mostrano pre­sta­zio­ni simili.

Affinità della CPU

Na­tu­ral­men­te, i due hy­per­vi­sor non pre­sen­ta­no le stesse pre­sta­zio­ni in tutte le ap­pli­ca­zio­ni. KVM offre più potenza rispetto a Xen, so­prat­tut­to quando si parla di affinità della CPU (in inglese CPU Pinning). In questo contesto, l’hy­per­vi­sor è in grado di assegnare a un pro­ces­so­re vir­tua­liz­za­to un pro­ces­so­re fisico (o un core del pro­ces­so­re), in modo che il pro­ces­so­re possa essere uti­liz­za­to solo da questo sistema virtuale. Ciò risulta par­ti­co­lar­men­te van­tag­gio­so per le ap­pli­ca­zio­ni intensive dal punto di vista della CPU ed è possibile solo con KVM.

Pre­sta­zio­ni di rete

In termini di pre­sta­zio­ni di rete, Xen è in netto vantaggio. Anche se entrambi gli hy­per­vi­sor offrono in­ter­fac­ce di rete pa­ra­vir­tua­liz­za­te, ogni sistema vir­tua­liz­za­to con KVM ha il proprio di­spo­si­ti­vo di rete. Con Xen, tutti i sistemi guest con­di­vi­do­no una singola in­ter­fac­cia di rete virtuale, il che ga­ran­ti­sce un’ef­fi­cien­za superiore.

Con­clu­sio­ne

La scelta tra Xen e KVM dipende dalle tue esigenze spe­ci­fi­che. Grazie alla sua posizione di leader di mercato, all’in­te­gra­zio­ne nel kernel Linux e alla pos­si­bi­li­tà di vir­tua­liz­za­zio­ne completa, KVM risulta fon­da­men­tal­men­te più facile da uti­liz­za­re. Tuttavia, Xen offre, almeno sulla carta, pre­sta­zio­ni superiori grazie alla sua pa­ra­vir­tua­liz­za­zio­ne completa. La decisione su quale hy­per­vi­sor sia meglio per te deve quindi prendere in con­si­de­ra­zio­ne in primo luogo il tipo di ap­pli­ca­zio­ni che desideri vir­tua­liz­za­re e il tuo livello di espe­rien­za.

Vai al menu prin­ci­pa­le