SlideShare a Scribd company logo
1 of 80
Download to read offline
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Introduzione
OpenVZ
KVM
Proxmox
Riferimenti Generali
http://labs.truelite.it
http://www.openvz.org
http://www.linux-kvm.org
http://pve.proxmox.com
Simone Piccardi Sistemi di virtualizzazione su Linux
Introduzione
OpenVZ
KVM
Proxmox
Riferimenti Specifici
Documentazione OpenVZ: http://openvz.org/Main_Page
Documentazione qemu/KVM:
http://wiki.qemu.org/Manual
Documentazione KVM:
http://www.linux-kvm.org/page/Documents
Documentazione Proxmox:
http://pve.proxmox.com/wiki/Main_Page
Simone Piccardi Sistemi di virtualizzazione su Linux

More Related Content

What's hot

Virtualizzazione - FLOSS
Virtualizzazione - FLOSSVirtualizzazione - FLOSS
Virtualizzazione - FLOSSStefano Morandi
 
Docker la rivoluzione nel deployment
Docker la rivoluzione nel deploymentDocker la rivoluzione nel deployment
Docker la rivoluzione nel deploymentMauro Cicolella
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziareDaniele Mondello
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentalsmvetro
 
Joomla day 2010 Virtualizzare in locale pro e contro
Joomla day 2010 Virtualizzare in locale pro e controJoomla day 2010 Virtualizzare in locale pro e contro
Joomla day 2010 Virtualizzare in locale pro e controAndrea Adami
 
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.Gerardo Di Iorio
 
Google cloud: Big Data + docker = kubernetes
Google cloud: Big Data + docker = kubernetesGoogle cloud: Big Data + docker = kubernetes
Google cloud: Big Data + docker = kubernetesGiuliano Latini
 
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxTrace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxDeveler S.r.l.
 
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMwareSistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMwareClaudio Cardinali
 
Open Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspOpen Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspLaura Camellini
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzionegiacomos
 
Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...
Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...
Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...Claudio Cardinali
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggeraRoberto Polli
 
Introduzione a Docker (parte 2 - Pratica)
Introduzione a Docker (parte 2 - Pratica)Introduzione a Docker (parte 2 - Pratica)
Introduzione a Docker (parte 2 - Pratica)Cristian Consonni
 
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slidesLinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slidesMaurizio Antonelli
 
Automation Night (Docker)
Automation Night (Docker)Automation Night (Docker)
Automation Night (Docker)Giuliano Latini
 

What's hot (20)

Virtualizzazione - FLOSS
Virtualizzazione - FLOSSVirtualizzazione - FLOSS
Virtualizzazione - FLOSS
 
Docker la rivoluzione nel deployment
Docker la rivoluzione nel deploymentDocker la rivoluzione nel deployment
Docker la rivoluzione nel deployment
 
Virtualizzazione
VirtualizzazioneVirtualizzazione
Virtualizzazione
 
Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
 
Compilazione Kernel
Compilazione KernelCompilazione Kernel
Compilazione Kernel
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziare
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentals
 
Joomla day 2010 Virtualizzare in locale pro e contro
Joomla day 2010 Virtualizzare in locale pro e controJoomla day 2010 Virtualizzare in locale pro e contro
Joomla day 2010 Virtualizzare in locale pro e contro
 
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
 
Google cloud: Big Data + docker = kubernetes
Google cloud: Big Data + docker = kubernetesGoogle cloud: Big Data + docker = kubernetes
Google cloud: Big Data + docker = kubernetes
 
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxTrace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
 
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMwareSistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
 
Open Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspOpen Source Parallel Computing ltcsp
Open Source Parallel Computing ltcsp
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
 
Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...
Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...
Claudio Cardinali - Virtualizzazione. Di tutti. Per tutti. - LINUX LTSP KVM S...
 
Ambienti di virtualizzazione
Ambienti di virtualizzazioneAmbienti di virtualizzazione
Ambienti di virtualizzazione
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggera
 
Introduzione a Docker (parte 2 - Pratica)
Introduzione a Docker (parte 2 - Pratica)Introduzione a Docker (parte 2 - Pratica)
Introduzione a Docker (parte 2 - Pratica)
 
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slidesLinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
LinuxDay 2004 - Linux - Storia e caratteristiche vincenti - slides
 
Automation Night (Docker)
Automation Night (Docker)Automation Night (Docker)
Automation Night (Docker)
 

Similar to Sistemi di virtualizzazione in ambiente Linux

Tecnologie di virtualizzazione per il consolidamento dei server
Tecnologie di virtualizzazione per il consolidamento dei serverTecnologie di virtualizzazione per il consolidamento dei server
Tecnologie di virtualizzazione per il consolidamento dei serverTruelite
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxMarco Ferrigno
 
Da Zero all'open per PA e PMI
Da Zero all'open per PA e PMIDa Zero all'open per PA e PMI
Da Zero all'open per PA e PMINaLUG
 
Linuxday 2012 : Introduzione a Proxmox Ve
Linuxday 2012 : Introduzione a Proxmox VeLinuxday 2012 : Introduzione a Proxmox Ve
Linuxday 2012 : Introduzione a Proxmox VeIvan Zini
 
Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Majong DevJfu
 
php day 2008 - Introduzione agli ez components
php day 2008 - Introduzione agli ez componentsphp day 2008 - Introduzione agli ez components
php day 2008 - Introduzione agli ez componentsGaetano Giunta
 
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e KubernetesWorkshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetesblexin
 
Hardware Libero - Linux Day 2007
Hardware Libero - Linux Day 2007Hardware Libero - Linux Day 2007
Hardware Libero - Linux Day 2007pino_otto
 
Meetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e KubernetesMeetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e Kubernetesdotnetcode
 
Understanding Linux
Understanding LinuxUnderstanding Linux
Understanding LinuxNaLUG
 
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...Maurizio Antonelli
 
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...Marco Cavallini
 
Linux e fs storia e caratteristiche vincenti
Linux e fs   storia e caratteristiche vincentiLinux e fs   storia e caratteristiche vincenti
Linux e fs storia e caratteristiche vincentiMaurizio Antonelli
 
Virtualizzazione Power IBM
Virtualizzazione Power IBMVirtualizzazione Power IBM
Virtualizzazione Power IBMS.info Srl
 

Similar to Sistemi di virtualizzazione in ambiente Linux (20)

Tecnologie di virtualizzazione per il consolidamento dei server
Tecnologie di virtualizzazione per il consolidamento dei serverTecnologie di virtualizzazione per il consolidamento dei server
Tecnologie di virtualizzazione per il consolidamento dei server
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
 
Da Zero all'open per PA e PMI
Da Zero all'open per PA e PMIDa Zero all'open per PA e PMI
Da Zero all'open per PA e PMI
 
Da 0 all'open per PA e PMI
Da 0 all'open per PA e PMIDa 0 all'open per PA e PMI
Da 0 all'open per PA e PMI
 
Linuxday 2012 : Introduzione a Proxmox Ve
Linuxday 2012 : Introduzione a Proxmox VeLinuxday 2012 : Introduzione a Proxmox Ve
Linuxday 2012 : Introduzione a Proxmox Ve
 
Seminario VMWare 2014
Seminario VMWare 2014Seminario VMWare 2014
Seminario VMWare 2014
 
Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05
 
php day 2008 - Introduzione agli ez components
php day 2008 - Introduzione agli ez componentsphp day 2008 - Introduzione agli ez components
php day 2008 - Introduzione agli ez components
 
Da DotNet a DotNetCore
Da DotNet a DotNetCoreDa DotNet a DotNetCore
Da DotNet a DotNetCore
 
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e KubernetesWorkshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
 
Hardware Libero - Linux Day 2007
Hardware Libero - Linux Day 2007Hardware Libero - Linux Day 2007
Hardware Libero - Linux Day 2007
 
Meetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e KubernetesMeetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e Kubernetes
 
Understanding Linux
Understanding LinuxUnderstanding Linux
Understanding Linux
 
debian gnu linux
debian gnu linuxdebian gnu linux
debian gnu linux
 
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
 
Infrastructure as Data
Infrastructure as DataInfrastructure as Data
Infrastructure as Data
 
Glv on air 08-10_2019
Glv on air   08-10_2019Glv on air   08-10_2019
Glv on air 08-10_2019
 
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
 
Linux e fs storia e caratteristiche vincenti
Linux e fs   storia e caratteristiche vincentiLinux e fs   storia e caratteristiche vincenti
Linux e fs storia e caratteristiche vincenti
 
Virtualizzazione Power IBM
Virtualizzazione Power IBMVirtualizzazione Power IBM
Virtualizzazione Power IBM
 

More from Truelite

Workshop – Il server FUSS: struttura, filosofia progettuale e casi d’uso
Workshop – Il server FUSS: struttura, filosofia progettuale e casi d’usoWorkshop – Il server FUSS: struttura, filosofia progettuale e casi d’uso
Workshop – Il server FUSS: struttura, filosofia progettuale e casi d’usoTruelite
 
Introduzione architettura FUSS
Introduzione architettura FUSSIntroduzione architettura FUSS
Introduzione architettura FUSSTruelite
 
Systemd - Como Lug
Systemd - Como LugSystemd - Como Lug
Systemd - Como LugTruelite
 
Systemd - Firenze LUG
Systemd - Firenze LUGSystemd - Firenze LUG
Systemd - Firenze LUGTruelite
 
LDAP: caratteristiche e funzionalità
LDAP: caratteristiche e funzionalitàLDAP: caratteristiche e funzionalità
LDAP: caratteristiche e funzionalitàTruelite
 
Server aziendali con Linux
Server aziendali con LinuxServer aziendali con Linux
Server aziendali con LinuxTruelite
 
Il software libero nella scuola, esperienze e soluzioni
Il software libero nella scuola, esperienze e soluzioniIl software libero nella scuola, esperienze e soluzioni
Il software libero nella scuola, esperienze e soluzioniTruelite
 
Il software libero: una risorsa per lo sviluppo e l'economia locale
Il software libero: una risorsa per lo sviluppo e l'economia localeIl software libero: una risorsa per lo sviluppo e l'economia locale
Il software libero: una risorsa per lo sviluppo e l'economia localeTruelite
 
Esperienze di migrazione a software libero
Esperienze di migrazione a software liberoEsperienze di migrazione a software libero
Esperienze di migrazione a software liberoTruelite
 
Il testo unico sulla privacy
Il testo unico sulla privacyIl testo unico sulla privacy
Il testo unico sulla privacyTruelite
 
Il software libero come scelta strategica d'impresa
Il software libero come scelta strategica d'impresaIl software libero come scelta strategica d'impresa
Il software libero come scelta strategica d'impresaTruelite
 
Lo sviluppo del Software Libero per le PMI e la PA"
Lo sviluppo del Software Libero per le PMI e la PA"Lo sviluppo del Software Libero per le PMI e la PA"
Lo sviluppo del Software Libero per le PMI e la PA"Truelite
 
Un server aziendale conforme alla normativa sulla privacy con Linux e Samba
Un server aziendale conforme alla normativa sulla privacy con Linux e SambaUn server aziendale conforme alla normativa sulla privacy con Linux e Samba
Un server aziendale conforme alla normativa sulla privacy con Linux e SambaTruelite
 

More from Truelite (13)

Workshop – Il server FUSS: struttura, filosofia progettuale e casi d’uso
Workshop – Il server FUSS: struttura, filosofia progettuale e casi d’usoWorkshop – Il server FUSS: struttura, filosofia progettuale e casi d’uso
Workshop – Il server FUSS: struttura, filosofia progettuale e casi d’uso
 
Introduzione architettura FUSS
Introduzione architettura FUSSIntroduzione architettura FUSS
Introduzione architettura FUSS
 
Systemd - Como Lug
Systemd - Como LugSystemd - Como Lug
Systemd - Como Lug
 
Systemd - Firenze LUG
Systemd - Firenze LUGSystemd - Firenze LUG
Systemd - Firenze LUG
 
LDAP: caratteristiche e funzionalità
LDAP: caratteristiche e funzionalitàLDAP: caratteristiche e funzionalità
LDAP: caratteristiche e funzionalità
 
Server aziendali con Linux
Server aziendali con LinuxServer aziendali con Linux
Server aziendali con Linux
 
Il software libero nella scuola, esperienze e soluzioni
Il software libero nella scuola, esperienze e soluzioniIl software libero nella scuola, esperienze e soluzioni
Il software libero nella scuola, esperienze e soluzioni
 
Il software libero: una risorsa per lo sviluppo e l'economia locale
Il software libero: una risorsa per lo sviluppo e l'economia localeIl software libero: una risorsa per lo sviluppo e l'economia locale
Il software libero: una risorsa per lo sviluppo e l'economia locale
 
Esperienze di migrazione a software libero
Esperienze di migrazione a software liberoEsperienze di migrazione a software libero
Esperienze di migrazione a software libero
 
Il testo unico sulla privacy
Il testo unico sulla privacyIl testo unico sulla privacy
Il testo unico sulla privacy
 
Il software libero come scelta strategica d'impresa
Il software libero come scelta strategica d'impresaIl software libero come scelta strategica d'impresa
Il software libero come scelta strategica d'impresa
 
Lo sviluppo del Software Libero per le PMI e la PA"
Lo sviluppo del Software Libero per le PMI e la PA"Lo sviluppo del Software Libero per le PMI e la PA"
Lo sviluppo del Software Libero per le PMI e la PA"
 
Un server aziendale conforme alla normativa sulla privacy con Linux e Samba
Un server aziendale conforme alla normativa sulla privacy con Linux e SambaUn server aziendale conforme alla normativa sulla privacy con Linux e Samba
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
  • 80. Introduzione OpenVZ KVM Proxmox Riferimenti Specifici Documentazione OpenVZ: http://openvz.org/Main_Page Documentazione qemu/KVM: http://wiki.qemu.org/Manual Documentazione KVM: http://www.linux-kvm.org/page/Documents Documentazione Proxmox: http://pve.proxmox.com/wiki/Main_Page Simone Piccardi Sistemi di virtualizzazione su Linux