PVE Proxmox
PVE Proxmox per virtualizzare.....
due anni dopo
09 aprile 2012.
VIRTUALIZZAZIONE
Tramite la virtualizzazione è possibile eseguire
contemporaneamente più istanze di sistemi
operativi “guest” in un’unica macchina fisica
“host”. I sistemi operativi “guest” colloquiano con
le risorse messe a disposizione dalla macchina
fisica “host” attraverso un componente software di
livello intermedio generalmente denominata
“hypervisor” o “virtual machine monitor”.
Perché virtualizzare ?
PER CONSOLIDARE / RIDURRE
IL NUMERO DI SERVER FISICI
Tramite la virtualizzazione si possono “eseguire” più
macchine virtuali nella stessa macchina fisica
riducendo il numero dei server (considerando che
spesso le risorse CPU/RAM/HD non vengono
pienamente sfruttate dai server “fisici”).
Perché virtualizzare ?
PER RIDURRE IL TCO (Total Cost of Ownership)
Il consolidamento ad un numero inferiore di server
permette una notevole riduzione dei costi legati
all’energia utilizzata per alimentare i server e per
mantenere la temperatura ambientale adatta alle
sale server. Inoltre si riducono i costi di acquisto e
i canoni di manutenzione dei server fisici.
Perché virtualizzare ?
PER GESTIRE IN MODO PIU' SEMPLICE LE
PROCEDURE DI “DISASTER RECOVERY”.
L’intero sistema operativo “guest” può essere
facilmente salvato e ripristinato riducendo
notevolmente i tempi di indisponibilità in caso di
guasto.
Perché virtualizzare ?
PER POTER ESEGUIRE APPLICAZIONI
“LEGACY”
Alcune organizzazioni utilizzano applicazioni
sviluppate per sistemi operativi che girano su
hardware ormai obsoleto, non supportato o
addirittura introvabile. Attraverso la
virtualizzazione è possibile continuare ad
utilizzare quelle applicazioni che diversamente
dovrebbero essere migrate ad una architettura più
attuale affrontando i costi relativi al porting e al
debug.
Perché virtualizzare ?
ALTA DISPONIBILITA'
Se è presente una infrastruttura di server fisici con delle
caratteristiche hardware tra loro compatibili e questi
server condividono una area dati (storage) sulla quale
risiedono le macchine virtuali, sarà possibile spostare
l’esecuzione di una macchina virtuale su un altro host in
caso di “failure” o per manutenzione. Alcuni sistemi di
virtualizzazione prevedono lo spostamento automatico
delle macchine virtuali tra i vari host in funzione al
carico.
LE DIVERSE TIPOLOGIE DI
VIRTUALIZZAZIONE
EMULATION
FULL VIRTUALIZATION
PARAVIRTUALIZATION
OPERATING SYSTEM LEVEL VIRTUALIZATION
Vediamo quali sono le differenze....
EMULAZIONE
Con l’emulazione l'hypervisor simula l’intero hardware set che permette al
sistema operativo guest di essere eseguito senza alcune modifiche.
Il software di virtualizzazione si incarica di presentare al sistema operativo
guest un’architettura hardware completa a lui nota, indipendentemente
dall’architettura hardware presente sulla macchina host.
L’emulatore simula un’architettura hardware diversa da quella fisica
FULL VIRTUALIZATION
La Full Virtualization detta anche Native Virtualization è molto simile alla
Emulation. Come nell’emulazione, i sistemi operativi guest girano senza
alcuna modifica in macchine virtuali ospitate sul sistema host. La differenza
rispetto all’emulazione sta nel fatto che i sistemi operativi guest devono essere
compatibili con l’architettura hardware della macchina fisica.
In questo modo molte istruzioni possono essere eseguite direttamente
sull’hardware senza bisogno di un software di traduzione garantendo
prestazioni superiori rispetto all’emulazione.
La Full Virtualization presenta al sistema operativo guest la stessa architettura
hardware presente sull'host fisico
PARAVIRTUALIZATION
L'hypervisor presenta alle macchine virtuali una versione modificata
dell’hardware sottostante, mantenendone tuttavia la medesima
architettura. Il sistema operativo in esecuzione sulle macchine virtuali è
invece modificato per evitare alcune particolari chiamate di sistema.
La Paravirtualization è simile alla full virtualization, ma è necessario
modificare il sistema operativo guest per ottimizzare l’esecuzione
sull’ambiente virtualizzato
Operating System level Virtualization
Non si utilizza un Hypervisor, ma la virtualizzazione è creata utilizzando
copie del sistema operativo installato sull'host.
I sistemi guest creati saranno a tutti gli effetti istanze del sistema operativo
host con un proprio file system, configurazione di rete e applicazioni.
Le istanze guest utilizzano lo stesso kernel della macchina host.
Questo è tuttavia il principale svantaggio di questa tecnica, che la rende
inutilizzabile da coloro che vogliono eseguire sistemi operativi diversi
sullo stesso host.
ALCUNI ESEMPI DI SISTEMI DI “VIRTUALIZZAZIONE”
Emulazione: Microsoft Virtual PC, QEMU
Full Virtualization: Vmware (in base alla versione),
Virtual Box, Win4Lin Pro e Xen, KVM
Paravirtualization: Vmware (in base alla versione), Xen e
User-mode Linux
Operating System level Virtualization (contextualization /
containers): Virtuozzo (OpenVZ), Linux VServers
questa sera parleremo nello specifico di KVM e
OpenVZ !!
ALCUNI NUMERI (dati non aggiornati !!)
VMWare – 400.000.000 righe di codice
XEN – 400.000 righe di codice
KVM – 8.700 righe di codice
PROXMOX
DEMO – come si presenta l'interfaccia Web !
OpenVZ
OpenVZ è una tecnologia di virtualizzazione basata sul
kernel Linux;
OpenVZ è una versione nata da Parallels Virtuozzo
Container, un prodotto software proprietario fornito da
Parallels Inc; OpenVZ è sotto licenza GNU GPL versione
2 ed il suo progetto è sostenuto e sponsorizzato da
Parallels;
OpenVZ consente a un server fisico di eseguire più istanze
isolate di un sistema operativo, note come contenitori;
OpenVZ
OpenVZ può essere visto come una sorta di CHROOT, ma a differenza
del processo CHROOT che gira in user space, il processo OpenVZ
gira in kernel space (maggiore sicurezza)
Ogni contenitore è una entità separata, e si comporta come un server
fisico:
può essere riavviato indipendentemente dal padre
ha un proprio utente root
può avere uno o più indirizzi IP (propri)
memoria, cicli processore, files, applicazioni, librerie di sistema e
file di configurazione...
NON può avere un proprio kernel.... perchè è un contenitore
eseguito dal kernel della macchina padre
KVM - Kernel-based Virtual Machine
KVM (Kernel-based Virtual Machine) è una soluzione per
la virtualizzazione (di tipo full virtualization) per Linux (a
partire dal kernel 2.6.20 o come patch a partire dalla
versione 2.6.16) basata su piattaforma x86.
Per poter essere utilizzato KVM richiede che la piattaforma
hw supporti una particolare estensione per la
virtualizzazione.
Nello specifico, Intel-VT per i processori Intel e AMD-V
per i processori AMD.
KVM - Kernel-based Virtual Machine
La soluzione KVM è composta da un modulo per il kernel
(kvm.ko) che gestisce l'infrastruttura, da un modulo specifico in
base alla tipologia di processore utilizzato (kvm-intel.ko o
kvm-amd.ko) e da una versione modificata di QEMU.
http://www.linux-kvm.org/page/Processor_support
Tramite KVM è possibile virtualizzare macchine Linux e
Windows; ad ogni macchina virtuale viene assegnato un
proprio "set di harware virtuale" privato: scheda di rete, hard
disk, scheda grafica...
KVM - Kernel-based Virtual Machine
All'indirizzo
http://www.linux-kvm.org/page/Guest_Support_Status
sono disponibili i sistemi operativi guest supportati da
KVM.
All'indirizzo
http://www.linux-kvm.org/page/Management_Tools
sono disponibili una serie di soluzioni che consentono
di gestire KVM
Questa sera parleremo di PVE Proxmox !
Quando usare OpenVZ
e quando usare KVM ?
Dipende !
Quando usare OpenVZ
e quando usare KVM ?
es. Ho bisogno di un server su cui far girare LAMP
(Linux, Apache, MySQL, Php) senza aver bisogno di
nessuna interfaccia grafica.... utilizzo OpenVZ
es. Ho bisogno di un server su cui far girare un servizio
FTP... utilizzo OpenVZ
es. Ho bisogno di un sistema operativo completo di
interfaccia grafica o di un ambiente con uno specifico
kernel o di un sistema operativo per cui non esiste un
template (OpenVZ)... utilizzo KVM
PRO
OpenVZ
Creazione di una nuova macchina
virtuale in un lampo !
E possibile ridimensionare lo spazio
disco senza dover apportare modiche
alla macchina virtuale (basta
riassegnare lo spazio !)
Posso installare sistemi operativi diversi
da quello della macchina host (es.
posso installare una RedHat come
macchina virtuale su di una Debian
su cui è stato installato OpenVZ)
Spazio su disco occupato inferiore
rispetto ad un macchina full
virtualized
CONTRO
NON posso utilizzare un kernel
diverso da quello della
macchina host
NON posso virtualizzare
macchine Windows
OpenVZ: alcuni comandi utili per la shell
vzlist -a (visualizza l'elenco e lo stato dei CT)
vzctl start ID (avvia il contenitore)
vzctl enter ID (entra nel contesto del contenitore)
vzctl stop ID (arresta il contenitore)
vzctl set ID --hostname PIPPO --save (modifica l'hostname della
macchina ID, al volo !)
vzctl set ID --ipadd IP --save (aggiunge un indirizzo IP al
contenitore, al volo !)
vzctl set ID --ipdel IP --save (rimuove un indirizzo IP dal
contenitore, al volo !)
KSM - Kernel Samepage Merging
KSM è una tecnologia introdotta a partire dal kernel 2.6.32.
Kernel SamePage Merging (KSM) consente alle pagine di memoria
identiche di essere unite dal kernel in una singola pagina condivisa
fra uno o più processi. Questa caratteristica viene usata da KVM per
consentire a più macchine virtuali ospiti simili di avere una impronta
in memoria ridotta.
Funziona così http://pve.proxmox.com/wiki/KSM
“One case that might come to mind is webhosting where you might
want to maximize scalability. Redhat claims that tests with KSM
were able to achieve 600 vms on a host with 48 cores and 256 GB
RAM” … tratto da questo sito
http://www.linux-kvm.com/content/using-ksm-kernel-samepage-merging-kvm
NB. da valutare attentamente prima di attivarne la gesionte in quanto
la tecnologia consente di risparmiare RAM a scapito di un maggiore
utilizzo della CPU.
Perchè utilizzare
PVE (Proxmox
Virtual
Environment)
come sistema di
virtualizzazione ?
Perchè è open source
Perchè consente di gestire due diversi sistemi di virtualizzazione (OpenVZ
e KVM) tramite un'unica intuitiva interfaccia Web
Perchè è un progetto “vivo” che in poco tempo è notevolmente
migliorato.... e migliorerà ancora http://pve.proxmox.com/wiki/roadmap
PROXMOX – Installazione
Tramite il CD di installazione (Bare-metal ISO Installer) l'intero
sistema di virtualizzazione è operativo nel giro di pochi minuti
L'installazione tramite CD “azzera” completamente qualsiasi
partizione presente sul PC su cui viene installato Proxmox
Al termine dell'installazione otterremo un server con le seguenti
caratteristiche:
* Sistema operativo completo (Debian Lenny 64bit)
* Hard disk partizionato con LVM2
* Proxmox VE Kernel con supporto OpenVZ e KVM
* Tools per il Backup e Restore delle macchine virtuali
* Interfaccia Web per la manutenzione del sistema
PROXMOX – quali sono le
virtualizzazioni supportate ?
Container Virtualization (OpenVZ)
Full Virtualization (KVM)
Paravirtualization (KVM), KVM supporta la
paravirtualizzazione di alcune periferiche per
consentire un incremento delle prestazioni di I/O
(VirtIO)
Proxmox - Paravirtualized Network
Drivers for Windows
Tratto da
http://pve.proxmox.com/wiki/Paravirtualized_Network_Drivers_for_Windows
“In order to improve network performance, special paravirtualized network
drivers can be installed in Windows guests. The KVM project released
drivers for Windows 2000, Windows XP and Vista. The Windows XP
drivers are known to work also on Windows 2003 Server (also the Vista
drivers can be used for Windows 2008).
For production systems (windows), the stable e1000 emulations is
recommended (but you need the latest drivers from Intel, the built in
e1000 drivers are not working).”
NON è vero :-) .... VIRTIO funziona !
Proxmox dentro proxmox dentro
proxmox dentro proxmox ......
E' possibile installare proxmox dentro un altro proxmox
ma con alcune limitazioni per i processori INTEL:
pur abilitando il parametro “-enable-nesting” per le
macchine guest di tipo KVM non viene abilitato il
supporto “vmx”
questo significa che (solo per processori INTEL) NON
posso creare nuove macchine KVM in un server
proxmox contenuto in un'altro server proxmox !
http://avikivity.blogspot.com/2009/09/nested-vmx-support-coming-to-kvm.html
Proxmox e OpenVZ
Tramite Proxmox è possibile creare una macchina virtuale OpenVZ in pochi
secondi partendo da un template
Tramite questo link è possibile accedere ad un elenco di template per OpenVZ
http://wiki.openvz.org/Download/template/precreated
PROXMOX – Installazione da CD bare-metal
DEMO !
Installazione da CD
Configurazione dei dischi e delle partizioni
Configurazione delle schede di rete della macchina padre
http://pve.proxmox.com/wiki/Network_Model
PROXMOX – DOVE SALVARE LE IMMAGINI
DEI DISCHI DELLE MACCHINE VIRTUALI ?
DRBD - http://pve.proxmox.com/wiki/DRBD
VANTAGGI:
semplice da realizzare ed economica
soluzione prestante
richiede solo i 2 server proxmox in cluster
e' possibile migrare “live” le macchine virtuali KVM
SVANTAGGI:
spazio disco limitato in base al numero di hd che fisicamente possono
essere installati sui 2 server
dubbi personali :-|
http://forum.proxmox.com/threads/3371-DRBD-primary-secondary?p=
PROXMOX – DOVE SALVARE LE IMMAGINI
DEI DISCHI DELLE MACCHINE VIRTUALI ?
ISCSI – Openfiler
VANTAGGI:
scalabile
e' possibile riutilizzare del “vecchio” HW
soluzione “economica” (sfruttando vecchio HW)
SVANTAGGI:
meno prestante rispetto alla soluzione DRDB
implementata direttamente sui 2 server proxmox
PROXMOX – DOVE SALVARE LE IMMAGINI
DEI DISCHI DELLE MACCHINE VIRTUALI ?
SOLUZIONI ALTERNATIVE
SAN http://it.wikipedia.org/wiki/Storage_Area_Network
ATAoE http://en.wikipedia.org/wiki/ATA_over_Ethernet
http://www.coraid.com/
http://lbserver.org/aoe/backup.html
PROXMOX – DOVE SALVARE LE IMMAGINI
DEI DISCHI DELLE MACCHINE VIRTUALI ?
Tratto dal forum di proxmox:
http://forum.proxmox.com/threads/3192-Perfect-storage?highlight=perfect
For ISO store, I suggest a NFS share.
For vzdump backups, I suggest a NFS share.
For KVM images, I suggest using a big iSCSI LUN and LVM on it
For KVM images, a NFS share is the easiest way (but no online
backup via snapshots here)
e.g. by using openfiler on your storage box you can configure
everything you need.
E vorrei aggiungere anche:
http://forum.proxmox.com/threads/3456-Storing-Virtual-Disks-Contai
PROXMOX – Migrazione macchine virtuali
DEMO !
Migrazione macchine KVM
Proxmox – backup macchine virtuali
http://pve.proxmox.com/wiki/Backup_-_Restore_-_Live_M
i backup possono essere eseguiti a “caldo”
i backup delle macchine virtuali (OpenVZ e KVM)
vengono gestiti tramite il programma vzdump
migrare a “caldo” implica l'uso degli snapshot di LVM
in sostanza, ad ogni avvio di un backup:
viene attivato lo snapshot del volume logico di LVM
viene eseguito il backup
viene distrutto lo snapshot
Proxmox e le schede di rete
http://pve.proxmox.com/wiki/Network_Model
Alcuni “trucchetti” per Proxmox
Come spegnere le macchine virtuali Linux
qm shutdown ID
Come spegnere le macchine virtuali Windows
http://www.linuxtrent.it/pillola-20-spegnimento-forzato-ma
Come escludere un disco di una macchina virtuale dalla
procedura di backup:
aggiungere il parametro backup=no al file ID.conf
DOMANDE ?
Shorewall e Proxmox
Come configurare il firewall per
proteggere le macchine virtuali.
Cosè shorewall ?
http://shorewall.net
Shorewall NON è un firewall
Shorewall è un tool per la configurazione delle
regole di firewalling implementate tramite
Netfilter
Shorewall e Proxmox
Alcune note di installazione:
apt-get update
apt-get install shorewall-perl
modificare il parametro “IP_FORWARDING” in
/etc/shorewall/shorewall.conf impostando il valore a “On”
modificare il parametro “FASTACCEPT” in /etc/shorewall/shorewall.conf
impostando il valore a “Yes”
modificare il parametro “BRIDGING” in /etc/shorewall/shorewall.conf
impostando il valore a “No”
dopo aver opportunamente configurato e testato i vari file nella cartella
/etc/shorewall è possibile impostare l'avvio automatico di shorewall
modificando il parametro “startup” a “1” nel file /etc/default/shorewall
Shorewall e Proxmox
Alcuni comandi utili:
shorewall check
verifica la correttezza dei file di configurazione
shorewall try /etc/shorewall 10
avvia shorewall per 10 secondi
shorewall clear
rimuove tutte le regole impostate da shorewall
“Webbografia” !
http://www.serverlab.it/index.php/2009/09/09/utilizzi-benefici-virtualizzazione/
http://www.linux-kvm.org
http://wiki.qemu.org/Main_Page
http://pve.proxmox.com/wiki/Main_Page
http://wiki.openvz.org/Main_Page
https://labs.truelite.it/truedoc/wiki/LinuxOpenVZHowto
http://www.linux-kvm.com/content/using-ksm-kernel-samepage-merging-kvm
http://arstechnica.com/software/news/2008/09/red-hat-acquires-qumranet-will-embrace-kvm.ars
http://www.mjmwired.net/kernel/Documentation/vm/ksm.txt
http://www.myatus.co.uk/it/2009/08/31/guide-firewall-and-router-with-proxmox/
Scarica

Slide nona serata - Proxmox e la virtualizzazione