Presentazione delle principali tecnologie di virtualizzazione disponibili in ambiente GNU/Linux: panoramica, caratteristiche e principali strumenti di gestione.
Relatore: Simone Piccardi
Evento: Corso "Sistemi di virtualizzazione software in ambiente Linux" - 13 Maggio 2014
Organizzatore SIAF - Sistema Informatico dell'Ateneo Fiorentino
Luogo: Università degli studi di Firenze
Un server aziendale conforme alla normativa sulla privacy con Linux e Samba
Sistemi di virtualizzazione in ambiente Linux
1. Introduzione
OpenVZ
KVM
Proxmox
Sistemi di virtualizzazione su Linux
Tecnologie di virtualizzazione e consolidamento
Simone Piccardi
Truelite Srl
Via Monferrato, 6 Firenze
www.truelite.it
13 Maggio 2014
Simone Piccardi Sistemi di virtualizzazione su Linux
2. Introduzione
OpenVZ
KVM
Proxmox
Di cosa parler`o
1 Introduzione
Panoramica sui concetti
Panoramica tecnologie
2 OpenVZ
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
3 KVM
Architettura
Funzionalit`a di base
Gestione delle risorse
4 Proxmox
Simone Piccardi Sistemi di virtualizzazione su Linux
3. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
Perch´e la virtualizzazione
I server attuali sono spesso sotto-utilizzati:
multiprocessori con carichi poco significativi
grandi quantit`a di memoria, usata come cache
dischi di dimensioni sempre maggiori
`e possibile tenere su una macchina fisica quello che prima stava su
molte
Simone Piccardi Sistemi di virtualizzazione su Linux
4. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
Vantaggi della virtualizzazione
La virtualizzazione consente di creare pi`u macchine virtuali su una
sola macchina reale:
si possono consolidare su una sola macchina diversi server
si possono utilizzare diversi sistemi operativi su una sola
macchina
si possono fornire risorse in maniera dinamica secondo le
esigenze
si risparmia energia elettrica usando meglio le risorse hardware
Simone Piccardi Sistemi di virtualizzazione su Linux
5. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
Vantaggi della virtualizzazione
La virtualizzazione consente di separare la manutenzione di
hardware e software:
si possono separare macchine virtuali con diversi livelli di
sicurezza, dividendo i rischi
si possono mantenere per compatibilit`a su hardware recente
vecchie versioni di sistema operativo
si pu`o gestire l’aggiornamento delle macchine fisiche
separatamente da quello delle macchine virtuali
Simone Piccardi Sistemi di virtualizzazione su Linux
6. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
Svantaggi della virtualizzazione
Gli svantaggi in realt`a sono molto pochi:
perdita di prestazioni, ma poco significativa nella maggior
parte dei casi, e sempre minore grazie al supporto hardware
minore sicurezza, in caso di compromissione del sistema di
virtualizzazione si pu`o prendere il controllo di molte macchine
lo svantaggio pi`u significativo `e quello relativo alla sicurezza
Simone Piccardi Sistemi di virtualizzazione su Linux
7. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
Tipi di virtualizzazione
Le tecnologie di virtualizzazione si possono dividere
sommariamente in tre categorie:
container si usa il kernel per creare un contenitore in cui far
girare un sistema operativo ospite all’interno di un ambiente
virtuale.
software virtualization si emula in software un intero
computer fornendo un hardware virtuale su cui fare una
installazione del tutto identica a quella di una macchina fisica
hardware virtualization si sfrutta il supporto hardware dei
moderni processori per emulare in maniera efficiente intero
computer
Simone Piccardi Sistemi di virtualizzazione su Linux
8. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
Container: Vantaggi e svantaggi
Vantaggi:
prestazioni, lo stesso kernel esegue tutti i programmi di tutte
le macchine virtuali
ottimizzazione delle risorse, la memoria ed il disco sono
sfruttati integralmente senza rigide allocazioni
Svantaggi:
non si possono virtualizzare sistemi operativi diversi
Simone Piccardi Sistemi di virtualizzazione su Linux
9. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
Software virtualization: Vantaggi e svantaggi
Vantaggi:
si possono utilizzare anche altri sistemi operativi
non necessita di processori recenti con supporto hardware
in certi casi si pu`o utilizzare anche su architetture hardware
diverse
Svantaggi:
prestazioni ridotte di esecuzione, si esegue un emulatore su cui
gira un sistema operativo che esegue altri programmi
prestazioni ridotte di I/O, si devono emulare le periferiche
Simone Piccardi Sistemi di virtualizzazione su Linux
10. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
Hardware virtualization: Vantaggi e svantaggi
Vantaggi:
si possono utilizzare anche altri sistemi operativi
alta velocit`a per l’esecuzione nativa del sistema ospite
Svantaggi:
necessita di processori recenti con il supporto hardware
Simone Piccardi Sistemi di virtualizzazione su Linux
11. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
Tecnologie disponibili: container
Le tecnologie di virtualizzazione basate sulla realizzazione di
container sono:
LXC
linux-vserver
OpenVZ
Simone Piccardi Sistemi di virtualizzazione su Linux
12. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
linux-vserver
Una delle soluzioni presenti da maggior tempo:
usa kernel modificato per la separazione dei server virtuali
non richiede supporto dal processore
accesso diretto all’hardware tramite il kernel in esecuzione
qualche problema per la separazione della rete
non supportato nel kernel ufficiale (e sviluppo quasi fermo)
molto veloce, funzionalit`a ridotte, sviluppo fermo.
Simone Piccardi Sistemi di virtualizzazione su Linux
13. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
LXC
L’ultimo arrivato (iniziato con il kernel 2.6.19, usabile dal 2.6.26):
usa le funzionalit`a gi`a presenti nel kernel
separa parzialmente i server virtuali con l’uso dei namespace
non richiede supporto dal processore
accesso diretto all’hardware tramite il kernel in esecuzione
procede di pari passo con lo sviluppo del kernel ufficiale
molto veloce ed efficiente, funzionalit`a ridotte, sviluppo costante.
Simone Piccardi Sistemi di virtualizzazione su Linux
14. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
OpenVZ
Nasce come applicazione proprietaria, rilasciato poi come GPL:
usa un kernel modificato per la separazione dei server virtuali
sfrutta dove possibile le funzionalit`a gi`a presenti nel kernel
accesso diretto all’hardware tramite il kernel in esecuzione
non richiede supporto dal processore
supporta diversi modelli di rete e live migration
molto veloce ed efficiente, molte funzionalit`a, sviluppo costante.
Simone Piccardi Sistemi di virtualizzazione su Linux
15. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
Tecnologie disponibili: software virtualization
Le tecnologie di virtualizzazione basate sulla virtualizzazione
software sono:
qemu
kqemu
Virtualbox
Simone Piccardi Sistemi di virtualizzazione su Linux
16. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
qemu
E’ stata una delle prime macchine virtuali create su Linux:
emula completamente un PC, comprese alcune periferiche, vi
si pu`o installare qualunque sistema operativo
eseguito come programma dal sistema ospite, non richiede
modifiche al kernel, n´e supporto da parte del processore
usa come sistema ospite Linux, FreeBSD, Solaris, MacOS e
Windows
gira su diverse piattaforme ospite (x86, PPC) e emula diverse
piattaforme hardware (x86, PPC, ARM, SPARC, MIPS)
relativamente semplice da usare, molto lento, utilizza molta
memoria, efficiente nell’uso dello spazio disco.
Simone Piccardi Sistemi di virtualizzazione su Linux
17. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
kqemu
La versione originale di qemu `e molto lenta, kqemu:
usa modulo del kernel per accelerare l’esecuzione dei sistema
ospitato
il sistema operativo e le applicazioni ospiti sono eseguiti
direttamente dal processore
funziona solo per emulazioni di piattaforma x86 su x86
disponibile solo sotto Linux, non pu`o essere usato per
installare Windows
non supportato dal kernel ufficiale, sviluppo fermo
relativamente semplice da usare, meno lento, utilizza molta
memoria, efficiente nell’uso dello spazio disco, sviluppo fermo.
Simone Piccardi Sistemi di virtualizzazione su Linux
18. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
VirtualBox
Era una applicazione proprietaria, rilasciata poi sotto GPL:
approccio analogo a kqemu, accelerazione tramite moduli del
kernel
multi-piattaforma, pu`o essere eseguita su Linux, Windows,
Solaris, MacOSX
pu`o eseguire come sistema ospite qualunque sistema operativo
non supportato nel kernel ufficiale ma ben sviluppato
estremamente semplice, ottima interfaccia di gestione,
moderatemente veloce, richiede parecchie risorse (memoria e
spazio disco), alcune funzionalit`a restano proprietarie.
Simone Piccardi Sistemi di virtualizzazione su Linux
19. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
Tecnologie disponibili: hardware virtualization
Le tecnologie di virtualizzazione basate sulla virtualizzazione
assistita dall’hardware sono:
Xen paravirtualization
Xen full virtualization
KVM
Simone Piccardi Sistemi di virtualizzazione su Linux
20. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
Xen paravirtualization
La prima versione, basata sul concetto di hypervisor, consente di
eseguire pi`u sistemi operativi:
uno strato di controllo, l’hypervisor, esegue un kernel
principale (dom0) che esegue le restanti istanze virtuali (domU).
senza supporto hardware occorrono delle modifiche al sistema
operativo eseguito (disponibili per Linux e BSD)
funzionalit`a avanzate come live-migration, interfacce virtuali,
accesso a disco veloce con LVM.
richiede modifiche non supportate dal kernel ufficiale
complesso da usare, molto veloce, ottime funzionalit`a, necessita di
parecchie risorse (in memoria e spazio disco).
Simone Piccardi Sistemi di virtualizzazione su Linux
21. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
Xen full virtualization
Versione che usa il supporto hardware:
viene usato ancora l’hypervisor ma pu`o emulare una macchina
fisica senza modifiche al sistema operativo eseguito
l’accesso alle periferiche reali `e pi`u lento in quanto simulato
appoggiandosi a qemu o moduli dedicati
mantiene le funzionalit`a avanzate di live-migration, interfacce
virtuali, dischi su LVM.
quasi completamente supportato con le ultime versioni del
kernel ufficiale
complesso da usare, molto veloce, ottime funzionalit`a, necessita di
parecchie risorse (memoria e spazio disco).
Simone Piccardi Sistemi di virtualizzazione su Linux
22. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
KVM
E’ la tecnologia di virtualizzazione nativa su Linux:
infrastruttura generica per la creazione di macchine virtuali
parte del kernel ufficiale a partire dalla versione 2.6.20
usa una versione modificata di qemu per fornire il supporto
delle periferiche
funzionalit`a avanzate di live-migration, interfacce virtuali,
dischi su LVM
complesso da usare, molto veloce, necessita di parecchie risorse.
Simone Piccardi Sistemi di virtualizzazione su Linux
23. Introduzione
OpenVZ
KVM
Proxmox
Panoramica sui concetti
Panoramica tecnologie
Cosa usare
Ci concentreremo su KVM e OpenVZ per i seguenti motivi:
disponibilit`a di un buon supporto
prodotti di punta nel rispettivo settore
fortemente sviluppati
disponibilit`a di Proxmox, un’interfaccia di gestione via web
combinata di entrambi
Simone Piccardi Sistemi di virtualizzazione su Linux
24. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
OpenVZ
ogni istanza (virtual environment o VE) `e completamente
separata dalle altre (riguardo file, processi, rete e IPC)
ogni VE si comporta come un sistema ordinario, si pu`o
installare e configurare qualunque servizio
il sistema consente un controllo molto dettagliato delle risorse
associate a ciascun VE
la rete `e virtualizzata e la si pu`o anche far gestire
completamente dall’interno di ciascun VE
sono supportate funzionalit`a avanzate come la sospensione dei
processi e la live-migration
Simone Piccardi Sistemi di virtualizzazione su Linux
25. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
OpenVZ
Alcune funzionalit`a di notevole interesse:
supporto per la realizzazione di “template” che rendono
immediata l’installazione di macchine simili
supporto per il backup completo di una istanza senza dover
fermare la stessa (snapshot con LVM) o con downtime
minimale
spostamento dei dati da un VE all’altro con una semplice
copia di file dalla macchina ospite
`e una piattaforma ideale da usare per consolidare server linux,
anche con distribuzioni diverse
Simone Piccardi Sistemi di virtualizzazione su Linux
26. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Directory
Le configurazioni di OpenVZ sono mantenute sotto /etc/vz in
forma di assegnazione di variabili di shell, ogni VE `e identificato da
un numero (CTID o container ID):
la configurazione generale del sistema `e mantenuta sotto
/etc/vz/vz.conf
le configurazioni di ogni VE sono mantenute in
/etc/vz/conf/CTID.conf
i file di ogni VE sono mantenuti in
/var/lib/vz/private/CTID.conf
Simone Piccardi Sistemi di virtualizzazione su Linux
27. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Architettura
OpenVZ `e un’estensione del kernel per il gi`a presente supporto per
i container:
I VE vengono attivati sul sistema ospitante, i relativi
programmi girano come processi ordinari:
all’interno di un VE viene eseguito l’userspace di una
distribuzione (a partire da init)
un VE utilizza i pacchetti ordinari, eccetto quelli relativi al
kernel ed alla gestione dell’hardware
il sistema ospitante vede tutti i processi e tutti i file dei VE
Simone Piccardi Sistemi di virtualizzazione su Linux
28. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Architettura
Ciascun VE vede un ambiente virtuale proprio, separato da quello
degli altri VE e del sistema ospitante:
ogni VE vede soltanto i processi lanciati al suo interno
non possono essere montati filesystem (ma si possono
predisporre bind mount dal sistema ospitante)
non `e disponibile l’accesso diretto all’hardware (con qualche
eccezione)
ci sono due modelli per la gestione della rete, routing (venet)
e bridging (veth)
Simone Piccardi Sistemi di virtualizzazione su Linux
29. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Architettura
Tutti i file dei VE vengono mantenuti direttamente sul filesystem
del sistema ospitante, non sono necessarie allocazioni
predeterminate dello spazio disco:
la radice di un VE corrisponde alla directory dove sono
installati i relativi file (/var/lib/vz/private/CTID )
ogni VE vede la suddetta directory come propria radice su un
disco virtuale (/dev/simfs)
la dimensione del disco visto da un VE `e impostata e
controllata dal sistema ospitante
il sistema ospitante `e in grado di spostare/copiare i file di un
VE come fa con qualunque altro file
Simone Piccardi Sistemi di virtualizzazione su Linux
30. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Installazione
OpenVZ richiede un kernel modificato ed alcuni programmi di
gestione in userspace:
pacchettizzato da Debian fino a Squeeze (kernel -openvz)
pacchettizzato da Proxmox (pve-kernel) con supporto a
lungo termine
un pacchetto omonimo per il programma di gestione vzctl e
tutta la relativa infrastruttura
Simone Piccardi Sistemi di virtualizzazione su Linux
31. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Introduzione
Un kernel con il supporto per OpenVZ fornisce le infrastrutture di
gestione necessarie:
il programma vzlist consente di elencare i VE attivi (e la
presenza del supporto per openvz)
nel file /proc/user beancounters sono elencate le
impostazioni relative alle risorse assegnati, i contatori per l’uso
e per l’eventuale superamento dei limiti
ulteriori informazioni sono disponibili sotto /proc/vz/
Simone Piccardi Sistemi di virtualizzazione su Linux
32. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Il programma vzctl
La gestione di OpenVZ viene effettuata principalmente attraverso il
programma vzctl che consente di:
installare e rimuovere i VE
avviare, fermare, sospendere, spostare i VE
impostare le caratteristiche, i limiti e le risorse dei VE
entrare in un VE o eseguire un programma al suo interno
il comando richiede sempre l’indicazione del VE su cui operare
tramite il suo CTID.
Simone Piccardi Sistemi di virtualizzazione su Linux
33. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
La creazione di un VE
La creazione di un VE viene eseguita con il comando vzctl
create CTID, dove CTID non sia gi`a stato utilizzato:
il comando crea il VE partendo da un template contenente
tutti i file necessari al nuovo sistema
il programma usa di default il template indicato dal parametro
DEF OSTEMPLATE di /etc/vz/vz.conf a meno di una
indicazione esplicita con --ostemplate
il nome del template indica il corrispondente file con
estensione .tar.gz sotto /var/lib/vz/template/cache/
Simone Piccardi Sistemi di virtualizzazione su Linux
34. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
La creazione di un VE
Ad un nuovo VE vengono assegnate da vzctl create un insieme
di risorse a partire da un default:
caratteristiche e risorse vengono ottenute dal file indicato dal
parametro CONFIGFILE di vz.conf o dall’opzione --config
al nome indicato deve corrispondere un file nella forma
/etc/vz/conf/ve-nome.conf-sample
tutte le risorse possono essere assegnate esplicitamente con le
corrispondenti opzioni a riga di comando
Simone Piccardi Sistemi di virtualizzazione su Linux
35. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Cancellazione di un VE
Un VE pu`o essere rimosso con vzctl destroy CTID:
tutti i file presenti sotto /var/lib/vz/private/CTID
verranno eliminati
tutti i file di configurazione relativi al template (sotto
/etc/vz/conf verranno eliminati
attenzione: il comando non chiede conferma, la cancellazione
`e definitiva e non si pu`o tornare indietro
per disabilitare temporaneamente l’uso di un VE si usi invece
vzctl set --disabled yes CTID
Simone Piccardi Sistemi di virtualizzazione su Linux
36. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Lancio di un VE
Una volta creato un VE deve essere esplicitamente avviato vzctl
start CTID:
il comando ritorna immediatamente, se si vuole attendere che
le operazioni di avvio siano completate si usi l’opzione --wait
il comando non avvia un VE disabilitato, se si vuole forzare
l’avvio occorre utilizzare l’opzione --force
per automatizzare l’avvio di un VE al riavvio della macchina
ospite occorrer`a impostarlo con vzctl set --onboot yes
CTID
Simone Piccardi Sistemi di virtualizzazione su Linux
37. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Fermata e riavvio di un VE
Un VE attivo pu`o essere fermato con il comando vzctl stop
CTID:
il comando esegue halt all’interno del container, con uno
shutdown pulito dello stesso
con l’opzione --fast viene usata direttamente la system call
reboot con terminazione immediata dei processi
con vzctl restart CTID si effettua il riavvio
Simone Piccardi Sistemi di virtualizzazione su Linux
38. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Ulteriori comandi
Oltre ai precedenti vzctl consente di eseguire alcune operazioni
direttamente su un VE attivo:
con vzctl enter CTID si ottiene una shell di root all’interno
del VE (eseguibile solo da root del sistema ospitante)
con vzctl exec CTID comando si esegue un comando
all’intero del VE
con vzctl status CTID si ottiene lo stato di un VE
Simone Piccardi Sistemi di virtualizzazione su Linux
39. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Gestione della rete
Per la gestione della rete esistono due modalit`a alternative:
routing, in cui il VE dispone di una interfaccia virtuale
punto-punto verso una corrisponde nel sistema ospitante su
cui viene inviato il traffico, questo viene instradato poi dal
sistema ospitate.
bridging, in cui il VE dispone di una interfaccia ethernet
virtuale con una corrispondente nel sistema ospitante che deve
essere configurata in bridge con una interfaccia reale dello
stesso
Simone Piccardi Sistemi di virtualizzazione su Linux
40. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Gestione della rete con il routing
La gestione della rete con il routing viene effettuata esclusivamente
dal sistema ospitante:
dal sistema ospitante si assegna un indirizzo IP al VE con
vzctl set --ipadd IP CTID
nel VE viene creata una interfaccia punto-punto venet0 con
assegnato in aliasing l’indirizzo indicato
nel sistema ospitante viene creata una interfaccia venet0
corrispondente alla analoga presente nel VE
nel sistema ospitante viene creata una rotta statica per il
traffico diretto all’indirizzo IP del VE verso l’interfaccia
venet0
Simone Piccardi Sistemi di virtualizzazione su Linux
41. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Gestione della rete con il routing
Nella gestione della rete con il routing oltre agli indirizzi di rete
devono essere impostati dal sistema ospitante:
l’hostname del VE con vzctl set --hostname NOME
i DNS con vzctl set --nameserver IP DNS
il dominio con vzctl set --searchdomain DOMINO
infine un indirizzo deve essere rimosso con vzctl set --ipdel
IP e si possono assegnare pi`u indirizzi ripetendo il comando vzctl
set --ipadd IP
Simone Piccardi Sistemi di virtualizzazione su Linux
42. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Gestione della rete con il bridging
Nella gestione della rete con il bridging si crea una interfaccia
ethernet virtuale nel VE e questo ne pu`o gestire l’impostazione:
l’interfaccia deve essere creata con il comando vzctl set
--netif add nome (il default `e eth0)
la si pu`o rimuovere con vzctl set --netif del nome
se ne indica il MAC-address con vzctl set --mac XX:..
l’interfaccia cos`ı creata corrisponder`a ad una equivalente
interfaccia virtuale vethCTID.N nel sistema ospitante che dovr`a
essere messa in bridge con una interfaccia reale
Simone Piccardi Sistemi di virtualizzazione su Linux
43. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Gestione della rete con il bridging
Una volta creata l’interfaccia ethernet nel VE il sistema ospitante
dovr`a gestire il traffico:
si indica il MAC-address dell’interfaccia nel sistema ospitante
con vzctl set --host mac XX:..
si indica il bridge di cui andr`a a far parte con vzctl set
--bridge nome
si dovr`a predisporre un bridge (chiamato nome) con membro
l’interfaccia reale su cui si vuole vengano fatti uscire i
pacchetti
Simone Piccardi Sistemi di virtualizzazione su Linux
44. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Gestione della rete con il bridging
Per il funzionamento di questa configurazione:
il VE deve configurare la sua rete con le modalit`a ordinarie
previste dalla distribuzione installata
all’avvio del VE la corrispondente interfaccia veth nel sistema
ospite viene inserita nel bridge indicato
l’interfaccia accetta solo pacchetti ethernet diretti al MAC
address indicato (a meno di non disabilitare il filtro con
--mac filter)
dall’interno del VE non `e possibile cambiare il MAC address
dell’interfaccia
Simone Piccardi Sistemi di virtualizzazione su Linux
45. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Le risorse di OpenVZ
OpenVZ consente un controllo molto dettagliato delle risorse
associate ad un VE, ciascuna delle quali `e identificata da un nome:
il consumo delle risorse pu`o essere controllato nel file
/proc/user beancounters
le risorse si impostano con il comando vzctl set CTID
passando una opzione nella forma --nomerisorsa=BAR:LIM
per ogni risorsa si possono indicare una barriera (BAR) ed un
limite (LIM), indicando un solo valore questo viene usato per
entrambi
si pu`o usare unlimited per indicare un valore illimitato ed il valore
del limite deve essere maggiore o uguale di quello della barriera
Simone Piccardi Sistemi di virtualizzazione su Linux
46. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Limiti e garanzie
Il significato di una risorsa di OpenVZ varia a seconda della risorsa
stessa:
le risorse contenenti la stringa guard indicano una garanzia,
cio`e un valore minimo garantito per la stessa e non una
limitazione
per le garanzie la barriera indica il valore fino a cui l’uso della
risorsa `e garantito, non essendoci restrizioni il limite deve
essere unlimited
per le altre risorse il significato e l’eventuale differenza fra
barriera e limite viene documentato nella descrizione della
pagina di manuale
in genere si usano i default e non si modificano a meno di non
riscontrare superamenti dei limiti in /proc/user beancounter
Simone Piccardi Sistemi di virtualizzazione su Linux
47. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Gestione della memoria
Nelle versioni pi`u recenti di OpenVZ la gestione della ripartizione
della memoria `e stata notevolmente semplificata:
con vzctl set --ram bytes si imposta la quantit`a di RAM
assegnata ad un VE, la barriera viene ignorata, vale solo il
valore del limite
con vzctl set --swap si imposta la quantit`a di area di
swap assegnata ad un VE, la barriera viene ignorata, vale solo
il valore del limite
l’uso di queste funzionalit`a richiede la presenza di
/proc/vz/vswap.
Simone Piccardi Sistemi di virtualizzazione su Linux
48. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Gestione delle macchine virtuali
Gestione delle risorse
Gestione del disco
Oltre alle impostazioni sull’uso delle risorse vzctl set consente di
controllare l’utilizzo del disco:
con vzctl set --diskspace si imposta la dimensione del
disco come vista dal VE in forma di quote disco, la barriera fa
da soft limit il limite da hard limit
con vzctl set --quotatime si imposta il periodo di grazia
per lo sforamento del limite imposto dalla barriera
con vzctl set --ioprio si imposta il valore di ionice del
VE (il default `e 4)
Simone Piccardi Sistemi di virtualizzazione su Linux
49. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
Caratteristiche generali di KVM
il sistema di ogni istanza viene eseguito a velocit`a nativa
grazie al supporto hardware dei processori moderni
`e disponibile su piattaforma x86, con porting in corso per
ARM e PPC
pu`o utilizzare come disco virtuale sia file che volumi logici
emulazione dell’hardware con qemu, ma per disco e rete sono
disponibili dispositivi virtuali per un accesso ad alta velocit`a
uso pi`u efficace della memoria: supporto per il memory
ballooning e l’unione di pagine identiche (KSM)
Simone Piccardi Sistemi di virtualizzazione su Linux
50. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
Caratteristiche generali di KVM
Le funzionalit`a di maggiore interesse di KVM:
la virtualizzazione completa consente l’installazione di
qualunque sistema operativo
supporta accesso diretto (con hotplug) di una istanza ai
dispositivi PCI della macchina ospite
supporta l’accesso ai dispositivi USB dalla macchina ospite
live-migration delle istanze in presenza di storage con
supporto dell’accesso condiviso
adatto all’installazione di altri sistemi operativi o macchine virtuali
che necessitano accesso all’hardware della macchina ospite
Simone Piccardi Sistemi di virtualizzazione su Linux
51. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
Installazione di KVM
Il supporto per KVM `e presente nel kernel ufficiale da molti anni in
genere necessario solo installare la parte in userspace:
occorre il supporto da parte del processore, indicato dalla
presenza delle estensioni svm o vmx in /proc/cpuinfo
su Debian i programmi in user space sono forniti dal
pacchetto qemu-kvm
devono essere caricati i moduli kvm e, a seconda del
processore, kvm-intel o kvm-amd
Simone Piccardi Sistemi di virtualizzazione su Linux
52. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
Esecuzione di una macchina virtuale
L’esecuzione di una macchina virtuale con KVM viene effettuata
attraverso il programma kvm:
ogni macchina virtuale viene gestita da una istanza di kvm che
gira come singolo processo
il programma avvia la macchina virtuale eseguendo un bios
emulato e presenta un hardware virtualizzato completo
i dischi vengono visti a seconda dell’emulazione come IDE,
SCSI o VIRTIO (quest’ultimi nella forma /dev/vdX)
le caratteristiche della macchina virtuale sono impostate da
specifiche opzioni a riga di comando
Simone Piccardi Sistemi di virtualizzazione su Linux
53. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
Opzioni generiche di kvm
Una prima serie di opzioni consentono di definire il comportamento
del programma:
-daemonize indica di lanciare il programma come demone
distaccandosi dal terminale
-name nome assegna un identificativo alla macchina
-boot order=XXX indica l’ordine di avvio (a floppy, c hard
disk, d CDROM, n rete)
Simone Piccardi Sistemi di virtualizzazione su Linux
54. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
Opzioni di accesso alla console
Per l’avvio e l’accesso alla console della macchina virtuale sono
disponibili le opzioni:
-vga tipo indica il modello di scheda VGA da emulare (ex.
cirrus, ecc.)
-vnc display indica di associare la VGA emulata ad un
display VNC che pu`o essere indicato nella forma
ip-o-hostname:N o unix:/socket/path/name/
-spice opzioni abilita il protocollo di desktop remoto
SPICE (pi`u efficiente, ma richiede un client apposito)
Simone Piccardi Sistemi di virtualizzazione su Linux
55. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
Installazione macchine virtuali
Si ricordi che KVM `e un sistema di virtualizzazione completa,
pertanto `e sempre necessario procedere ad una installazione nella
macchina virtuale:
si deve disporre di un dispositivo di installazione per il proprio
sistema operativo (in genere un CD o una sua immagine .iso)
si deve far partire una macchina virtuale associandovi il CD
(kvm -cdrom file.iso o kvm -cdrom /dev/cdrom)
si deve procedere all’installazione ordinaria sulla macchina
virtuale usando una console sulla stessa
Simone Piccardi Sistemi di virtualizzazione su Linux
56. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
La gestione di CPU e memoria
Il numero di CPU e la memoria da assegnare ad una macchina
virtuale vengono indicate attraverso delle opportune opzioni:
-cpu tipo indica il modello di CPU da emulare
-m N imposta la dimensione della memoria assegnata alla
macchina virtuale in megabytes
-smp n indica il numero di processori da emulare
si possono indicare i processori per socket e cores usando un
valore nella forma sockets=n,cores=m
Simone Piccardi Sistemi di virtualizzazione su Linux
57. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
La gestione delle risorse hardware
La gestione delle altre risorse hardware `e controllata da altrettante
opzioni:
-drive consente di gestire i dischi virtuali
-netdev consente di gestire le interfacce di rete virtuali
-device imposta un dispositivo virtuale
queste prendono i loro argomenti nella forma di serie di
assegnazioni chiave=valore o valori singoli, separati da virgole
Simone Piccardi Sistemi di virtualizzazione su Linux
58. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
La gestione delle risorse hardware
Con -device si imposta un dispositivo emulato nella macchina
virtuale, il primo argomento `e il tipo di dispositivo, ad esempio:
virtio-blk-pci per un disco virtuale VIRTIO
virtio-net-pci per una interfaccia di rete virtuale VIRTIO
ide-cd per il cdrom
l’elenco di di quelli disponibili si ottiene con kvm -device help
Simone Piccardi Sistemi di virtualizzazione su Linux
59. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
La gestione delle risorse hardware
Gli ulteriori parametri di -device indicano come mappare il
dispositivo e dipendono dal tipo dello stesso, ad esempio:
drive=nome indica il nome con cui fare riferimento al
dispositivo nell’opzione -drive nel caso di un disco
netdev=nome indica un nome con cui fare riferimento al
dispositivo nell’opzione -netdev nel caso di interfaccia di rete
bootindex=NNN imposta un indice di priorit`a per l’avvio
parametri pi`u specifici consentono di impostare le caratteristiche di
un dispositivo (ad esempio mac imposta il MAC address)
Simone Piccardi Sistemi di virtualizzazione su Linux
60. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
La gestione dei dischi
La gestione dei dischi lato ospite viene effettuata con l’opzione
--drive, i principali parametri sono:
file=/path indica il file dove mantenere i dati del disco (pu`o
essere un file di dispositivo)
media=tipo indica il tipo di supporto (valori possibili disk o
cdrom)
id=dev indica il nome associato al dispositivo specificato nel
parametro drive di -device
Simone Piccardi Sistemi di virtualizzazione su Linux
61. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
La gestione dei dischi
Le prestazioni nell’uso dei dischi dipendono strettamente dalla
modalit`a di gestione, in particolare se:
se nella macchina virtuale `e necessario o meno emulare un
controller (IDE o SCSI) o si pu`o usare direttamente VIRTIO
se nella macchina ospitante i dati vengono salvati su un file
oppure si d`a accesso diretto ad un dispositivo (o volume
logico)
Simone Piccardi Sistemi di virtualizzazione su Linux
62. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
La gestione della rete
La gestione delle interfacce di lato ospite viene effettuata con
l’opzione --netdev, i principali parametri sono:
type=tipo tipo dell’interfaccia, che si pu`o indicare
direttamente come primo argomento (ex. user, tap)
id=dev indica il nome associato al dispositivo specificato nel
parametro netdev di -device
ifname=nome indica il nome dell’interfaccia di rete nel
sistema ospitante
Simone Piccardi Sistemi di virtualizzazione su Linux
63. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Funzionalit`a di base
Gestione delle risorse
La gestione della rete
Come per i dischi l’efficienza della rete dipende dalle modalit`a con
cui la si gestisce:
si possono emulare nella macchina virtuale varie schede di
rete, ma qualora disponibile per essa il driver per il VIRTIO si
ottengono migliori prestazioni
`e sempre opportuno utilizzare un dispositivo di tipo tap per
mappare l’interfaccia di rete della macchina virtuale su una
interfaccia di rete nella macchina ospite ed usare il bridging
Simone Piccardi Sistemi di virtualizzazione su Linux
64. Introduzione
OpenVZ
KVM
Proxmox
Proxmox
Proxmox `e una distribuzione Debian-based che integra OpenVZ e
KVM con una interfaccia di gestione via web:
interfaccia di gestione via web, compresa console e grafica
accessibile in remoto via VNC nel browser
supporto per configurazioni cluster, storage su iSCSI, LVM,
directory locali e NFS
supporto per il backup ed il ripristino delle macchine virtuali
supporto per lo spostamento a caldo delle macchine virtuali
da un nodo all’altro del cluster.
Simone Piccardi Sistemi di virtualizzazione su Linux
65. Introduzione
OpenVZ
KVM
Proxmox
Installazione
Per l’installazione di Proxmox si possono seguire due approcci:
si pu`o installare la piattaforma direttamente su una macchina
usando il CD di installazione fornito dal progetto
(http://www.proxmox.com/downloads/proxmox-ve)
si pu`o installare Debian Stable ed installare la piattaforma in
un secondo tempo dai pacchetti, ad esempio seguendo la
procedura illustrata su https://labs.truelite.it/
projects/truedoc/wiki/ProxmoxOnSqueeze
Simone Piccardi Sistemi di virtualizzazione su Linux
66. Introduzione
OpenVZ
KVM
Proxmox
Interfaccia di gestione
Una volta installata la piattaforma l’interfaccia di gestione `e
disponibile in HTTPs sulla porta 8006, da questa si possono:
creare macchine virtuali con KVM e VE con OpenVZ
gestire i supporti per lo spazio disco
gestire i nodi di un eventuale cluster
avviare, fermare, accedere in console alle macchine virtuali
Simone Piccardi Sistemi di virtualizzazione su Linux
67. Introduzione
OpenVZ
KVM
Proxmox
Architettura
Proxmox utilizza direttamente KVM ed OpenVZ, mantenendo una
organizzazione coerente delle macchine virtuali:
tutte le configurazioni delle macchine virtuali sono riportate
sotto /etc/pve, montata su un filesystem in cluster
tutte le macchine virtuali (KVM o OpenVZ) sono identificate
con un numero univoco (il VMID)
per OpenVZ /etc/vz/conf diventa semplicemente un link
simbolico a /etc/pve/openvz
per KVM le definizioni delle macchine virtuali vengono
mantenute sotto /etc/pve/qemu-server/ e viene fornito il
comando qm come analogo di vzctl
Simone Piccardi Sistemi di virtualizzazione su Linux
68. Introduzione
OpenVZ
KVM
Proxmox
Gestione dello storage
Proxmox consente di gestire lo storage su cui vengono mantenuti i
dati delle macchine virtuali:
ogni storage viene identificato con un nome
si pu`o indicare se lo storage `e condiviso (iSCSI, FC, NFS)
si possono selezionare i tipi di dati stoccabili: immagini,
template, dump, immagini ISO
Simone Piccardi Sistemi di virtualizzazione su Linux
69. Introduzione
OpenVZ
KVM
Proxmox
Gestione dello storage
Proxmox di usare diversi supporti come storage:
dispositivi remoti iSCSI
Volume Group di LVM (anche in versione cluster)
directory locali
dischi di rete con NFS
Simone Piccardi Sistemi di virtualizzazione su Linux
70. Introduzione
OpenVZ
KVM
Proxmox
Gestione semplificata di KVM
Proxmox consente una gestione semplificata delle macchine virtuali
con KVM:
macchine virtuali e relative caratteriste sono mantenute in
altrettanti file VMID.conf sotto /etc/pve/qemu-server/
il comando qm consente di gestire avvio, creazione, modifica e
migrazione delle macchine virtuali
il comando consente anche di gestire lo storage,
ridimensionare i dischi e la creazione di snapshot
Simone Piccardi Sistemi di virtualizzazione su Linux
71. Introduzione
OpenVZ
KVM
Proxmox
Sintassi di base di qm
Il comando qm prevede sempre almeno due argomenti, una
operazione ed il VMID cui questa si applica nella forma qm oper
VMID, le principali operazioni sono:
start avvia la macchina virtuale
stop spegne la macchina virtuale (spegnimento fisico)
shutdown ferma la macchina (esegue un halt)
reboot riavvia la macchina virtuale (esegue reboot)
Simone Piccardi Sistemi di virtualizzazione su Linux
72. Introduzione
OpenVZ
KVM
Proxmox
Sintassi di base di qm
Ulteriori operazioni effettuabili con qm sono:
create crea una macchina virtuale (le propriet`a devono essere
impostate con ulteriori opzioni)
destroy elimina una macchina virtuale (attenzione,
operazione non recuperabile)
migrate migra la macchina virtuale verso un altro nodo
resize ridimensiona i dischi della macchina virtuale
Simone Piccardi Sistemi di virtualizzazione su Linux
73. Introduzione
OpenVZ
KVM
Proxmox
Sintassi di base di qm
Ulteriori operazioni effettuabili con qm sono:
snapshot crea uno snapshot della macchina virtuale
delsnapshot cancella uno snapshot della macchina virtuale
rollback riporta la macchina virtuale allo stato salvato su
uno snapshot
Simone Piccardi Sistemi di virtualizzazione su Linux
74. Introduzione
OpenVZ
KVM
Proxmox
La gestione dei dump
Una delle funzionalit`a pi`u importanti di Proxmox `e fornita dal
comando vzdump che consente di effettuare dei dump delle
macchine virtuali:
il comando funziona sia con OpenVZ che con KVM, e salva
sia i dati che le configurazioni
il comando crea dei .tar con contenente l’intero albero dei
file per OpenVZ e le immagini dei dischi per KVM
i comandi vzrestore e qmrestore consentono di ripristinare
un dump indicando semplicemente il file ed il VMID sui cui
creare il ripristino
Simone Piccardi Sistemi di virtualizzazione su Linux
75. Introduzione
OpenVZ
KVM
Proxmox
Il comando vzdump
Il comando richiede si indichi il VMID di cui operare il dump, e
crea i file sotto /var/lib/vz/dump:
con -destdir si indica una directory alternativa per il
salvataggio dei dump
con -ionice si imposta un priorit`a di I/O
con -maxfiles si imposta il numero massimo di copie
conservate
Simone Piccardi Sistemi di virtualizzazione su Linux
76. Introduzione
OpenVZ
KVM
Proxmox
Il comando vzdump
L’opzione principale di vzdump `e per`o -mode che controlla la
modalit`a di esecuzione del dump, da indicare con uno fra:
stop ferma la macchina virtuale ed effettua la copia dei file,
con un downtime molto lungo
suspend per OpenVZ esegue un primo rsync, poi sospende il
VE, riesegue un rsync finale e riattiva il VE, con un
downtime minimo, per KVM `e analogo a stop
snapshot crea uno snapshot con LVM, ed esegue la copia su
di esso senza downtime, ma richiede che i dati siano su LVM e
che ci sia spazio sufficiente per lo snapshot
Simone Piccardi Sistemi di virtualizzazione su Linux
77. Introduzione
OpenVZ
KVM
Proxmox
Il comando vzrestore
Il comando richiede si indichi file del dump e VMID su cui
ripristinarlo nella forma vzrestore /path/name NNN :
con -storage si indica lo storage su cui ripristinare i dati
della macchina virtuale
con -force si sovrascrive una macchina virtuale preesistente
con - al posto di /path/name legge dallo standard input
Simone Piccardi Sistemi di virtualizzazione su Linux
78. Introduzione
OpenVZ
KVM
Proxmox
Il comando qmrestore
Il comando richiede si indichi file del dump e VMID su cui
ripristinarlo nella forma qmrestore /path/name NNN :
con -storage si indica lo storage su cui ripristinare i dati
della macchina virtuale
con -force si sovrascrive una macchina virtuale preesistente
con -unique assegna alla macchina virtuale ripristinata un
altro MAC-address univoco
Simone Piccardi Sistemi di virtualizzazione su Linux