You are on page 1of 8

Kernel-based Virtual

Machine (KVM)
Dott. Luca Tasquier
E-mail: luca.tasquier@unina2.it

Introduzione
Kernel-based Virtual Machine (KVM) un sistema fullvirtualization esclusivamente per GNU Linux, su piattaforma x86.
Esso consiste in un modulo kernel (kvm.ko) che fornisce la
virtualizzazione dellinfrastruttura di base ed un modulo specifico
per il processore in uso (kvm-intel.ko o kvm-amd.ko) a seconda
dei casi.
KVM necessita di supporto alla virtualizzazione hardware Intel VT
o AMD-V.

Approccio kernel-based - 1
KVM presenta un approccio diverso rispetto ad altri sistemi di
virtualizzazione professionale. Esso non prevede infatti lutilizzo di
un hypervisor a se stante, ma utilizza il kernel Linux a questo
scopo.
Grazie a questo il team di sviluppo di KVM non deve preoccuparsi
di scrivere da s driver per le periferiche o tool di gestione, tutto
ci offerto dal kernel Linux. Questo permette rilasci frequenti e
un codice molto pi snello, ma sopratutto rende KVM compatibile
con tutte le periferiche, che possono essere utilizzate su kernel
Linux.

Approccio kernel-based - 2
Le virtual machine sono nel sistema dei semplici processi. Questo
permette di gestire/monitorare una virtual machine, come si fa con
qualunque altro processo del sistema operativo GNU Linux.
Una volta ricavato il pid relativo al processo che rappresenta una
determinata virtual machine, diventa semplice verificarne
landamento o gestirne il suo ciclo di vita, proprio come si fa con gli
altri processi del sistema.

Architettura
Il kernel Linux posto direttamente "sopra" lhardware della
macchina fisica, contiene al suo interno il modulo KVM e le virtual
machine sono dei processi che emulano le periferiche di I/O e che
comunicano con il kernel attraverso il device /dev/kvm, un canale
di comunicazione tra lhypervisor e le VM, creato dai due moduli
kvm.ko ed a seconda del processore, kvm-intel.ko oppure kvmamd.ko.

Funzionamento
La funzione principale di /dev/kvm quella di mettere in contatto la
parte user-space (le virtual machine) con quella kernel-space del
sistema operativo, che ospita le virtual machine. Attraverso di esso
vengono svolte attivit fondamentali come lallocazione di memoria
o la lettura/scrittura dei registri dei processori delle VM.
Inoltre realizza la modalit "guest mode" che si aggiunge alle due
modalit standard dellambiente Linux (kernel e user). proprio
questo che permette di trasformare il kernel in un hypervisor. La
modalit "guest mode" utilizzata infatti, per lesecuzione di
operazioni privilegiate da parte delle virtual machine.

Gestione dell'I/O
KVM fa uso di una versione opportunamente modificata di QEMU
per realizzare la parte di I/O (dischi, schede di rete, audio, video,
ecc.) di una virtual machine.
Ogni richiesta di I/O da parte di una VM viene intercettata per
essere emulata da QEMU.

Vantaggi
Il fatto che le singole virtual machine vengano viste dal sistema
come semplici processi, consente al kernel di trattarli come tali e
questo ne aumenta notevolmente la facilit di gestione. Infatti per
lo scheduling e il mapping della memoria delle VM vengono
utilizzati gli strumenti tipici del sistema operativo GNU Linux, cosa
che permette di implementare automaticamente un rudimentale
sistema di distribuzione di carico tra le diverse virtual machine.
Grazie a ci infatti la macchina che ospita la VM, se dotata di
hardware sufficiente, risulta sempre fluida e dimostra buona
velocit di risposta, anche quando il sistema ospitato sotto
sforzo.

You might also like