Introduzione
Lo scopo di questo tutorial è mettere su un server di virtualizzazione che sia la base per le macchine virtuali.
Facciamo una panoramica su quello che ci servirà :
Debian ETCH è l’ultima release stable rilasciata dalla comunità Debian.
LVM che sta per Logical Volume Manager è un sistema di gestione delle partizioni che consente di sfruttare delle partizioni logiche la cui grandezza è quindi modificabile. Un ulteriore vantaggio è dato dal fatto che è possibile inserire nel sistema un hard disk supplementare e montarlo nella stessa partizione logica, per esempio immaginate di avere un sistema con un solo hard disk da 80GB in cui in fase di installazione è stata prevista la gestione LVM ed ad un certo punto vi rendete conto che 80GB non vi soddisfano più, allora andate dal vostro rivenditore di fiducia, comprate un Hard Disk da 500GB per espandere la capacità della directory dove sono hostati tutti i siti dei vostri clienti quindi inserite l’hard disk, e dopo averlo formattato come LVM vi basterà digitare pochi comandi per aver aumentato di 500GB la capacità di quella directory senza “travasare” dati. Bello no? Bene, questo è uno degli innumerevoli vantaggi offerti dalla tecnologia LVM. Questo è un esempio di schema attuabile con LVM:
XEN è un famosissimo sistema di virtualizzazione che permette una virtualizzazione a livello Kernel oltre a quella di livello hardware per la quale ci vuole un aiuto dalla CPU la quale dovrebbe supportare la Full Virtualization (non è una “conditio sine qua non”).
Step 1: LVM
Durante l’installazione di Debian viene chiesto come configurare le partizioni e vengono proposte in sostanza tre opzioni: la prima è un partizionamento classico, la seconda è un partizionamento tramite LVM (che è quello che vogliamo) e la terza propone un partizionamento con LVM cifrato, che non è necessario a meno che non stiamo amministrando un sistema “mission critical”. Facciamo gestire al programma di installazione la dimensione delle partizioni e continuiamo l’installazione come al solito.
Installiamo SSH server da root col comando
apt-get install ssh
così possiamo gestire il sistema da remoto, e procediamo quindi a smanettare con le partizioni LVM.Vi ricordo a proposito di SSH di dare un’occhiata all’apposito tutorial su come configurare SSH nel dettaglio.
Prima di continuare diamo un paio di definizioni e poi analizziamo i comandi che ci serviranno per la gestione delle nostre partizioni logiche:
PV: Phisical Volume Può essere costituito da una partizione vera e propria oppure da un intero hard disk, oppure ancora un device RAID.
VG: Volume Group Costituisce il più alto livello di astrazione logica della memoria in quanto è il risultato della composizione dei device fisici.
LV: Logical Volume Sono le vere e proprie partizioni logiche
Elenco una lista dei comandi che ritengo utili per amministrare le partizioni con LVM con la relativa spiegazione dei loro effetti:
pvdisplay
vgdisplay
lvdisplay
Questi tre comandi visualizzano un elenco rispettivamente dei volumi fisici, dei device logici e dei volumi logici.
pvcreate
vgcreate
lvcreate
Questi tre comandi servono per creare rispettivamente volumi fisici, device logici e volumi logici.
lvremove
vgremove
Questi due comandi servono rispettivamente per rimuovere device logici e volumi logici.
vgreduce
lvreduce
Questi due comandi servono rispettivamente per ridurre la capacità device logici e volumi logici.
vgextend
lvextend
Questi due comandi servono rispettivamente per incrementare la capacità device logici e volumi logici.
vgchange
Questo comando serve per rendere attivo o inattivo un device logico in modo da prevenire qualunque azione su di esso.
pvscan
vgscan
Questi comandi servono per vedere i volumi fisici ed i device logici connessi al sistema
vgexport
vgimport
Questi comandi servono per esportare o importare device logici
pvmove
Questo comando serve per spostare un volume fisico
vgsplit
Questo comando serve per suddividere un volume logico
per utilizzare correttamente questi comandi è opportuno vadere i manuali o gli help per ciascuno digitando
man
oppure
--help
è di fondamentale importanza formattare i dischi fisici da aggiungere come LVM tramite cfdisk per esempio e formattare i devices logici col filesystem che volete utilizzare.
Step 2: XEN
Installazione
Procediamo con l’installazione di XEN scaricando i pacchetti necessari dai repository Debian tramite il comando apt-get
apt-get install linux-image-2.6-xen-vserver-686 xen-hypervisor-3.0.3-1-i386-pae xen-tools xen-linux-system-2.6.18-5-xen-vserver-686 linux-headers-2.6-xen-vserver-686 libc6-xen bridge-utils
Se volete potete anche verificare se il vostro processore supporta o meno la famigerata Virtualizzazione Hardware, per fare cio potete andare sul sito del produttore della vostra CPU e vedere se nelle caratteristiche è nominato qualcosa come “Virtualization Support” o “Full Virtualization”, e se effettivamente la Virtualizzazione Hardware è supportata, il che è vero per la maggior parte dei multicore Intel e della famiglia Opteron di AMD, potete lanciare anche il comando:
apt-get install xen-ioemu-3.0.3-1
Configurazione
Adesso che tutto è installato correttamente modifichiamo il file
/etc/modules
aggiungendo:
loop max_loop=64
e riavviamo la nostra macchina effettuando il boot col nuovo Kernel.
Apriamo quindi il file di configurazione del daemon XEN col comando:
vim /etc/xen/xend-config.sxp
cerchiamo la stringa (network-script network-bridge) col comando
/(network-script network-bridge)
togliamole il # di commento facendola diventare
(network-script network-bridge)
e riavviamo lo XEN daemon
/etc/init.d/xend restart
A questo punto vi basterà andare a vedere le interfacce di rete configurate per notare immediatamente che se ne sono aggiunte altre tre, per fare ciò basterà digitare da root:
ifconfig
Modifichiamo con VIM il file /etc/xen-tools/xen-tools.conf eseguendo il comando
vim /etc/xen-tools/xen-tools.conf
togliamo il # alla stringa
dir = /home/xen
e modifichiamo le stringhe contenenti le impostazioni per il kernel e per l’avvio come segue:
kernel = /boot/vmlinuz-2.6.18-5-xen-vserver-686
initrd = /boot/initrd.img-2.6.18-5-xen-vserver-686
ATTENZIONE: è il caso che vediate tramite il conmando
uname -a
la versione del kernel che state utilizzando in modo da poter immettere i parametri corretti
(come al solito per cercare delle stringhe con VIM conviene scrivere /kernel o comunque /
. Digitate
man vim
per avere informazioni sulle opzioni di utilizzo più dettagliate di VIM).
Step 3: Virtualizzazione di Debian ETCH
Adesso che tutto è pronto possiamo passare all’installazione del nostro sistema operativo preferito tramite XEN nella nuova partizione LVM che eravamo impazienti di utilizzare, e per fare ciò possiamo lanciare da root il comando:
xen-create-image --debootstrap --hostname etch-experimental --dhcp --dist=etch
dove come parametro di dist possiamo tranquillamente sostituire sid, sarge o etch, e come parametro di hostname possiamo passare qualunque nome vi venga in mente (il mio consiglio è di assegnare dei nomi che vi ricordino cosa effettivamente dovrà fare quel sistema operativo, ad esempio lamp-etch se volete utilizzarlo come server LAMP).
Dopo una decina di minuti (tranne errori) tornerete al vostro prompt con il messaggio:
All done
Ottimo, adesso possiamo avviare il nostro primo sistema operativo virtualizzato con XEN tramite il comando
xm create /etc/xen/etch-experimental.cfg
e se eseguiamo:
xm list
possiamo vedere i domini attivi.
Signori, vi presento il vostro primo Virtual Private Server (VPS).
Vi consiglio di dare un’occhiata alle opzioni che XEN vi mette a disposizione lanciando
xm --help
e
xen-create-image --help
e affinare le impostazioni di default delle macchine virtuali dando uno sguardo alle impostazioni modificabili nel file
/etc/xen-tools/xen-tools.conf
(ricordate sempre di fare un backup prima di cominciare a modificare).
Step 4: Primo avvio
Una volta avviato il sistema non ha nulla di interessante (a parte il fatto che è Debian) per cui dovrete accederci, ma non c’è installato SSH di default. XEN ci viene in aiuto col comando
xm console etch-experimental
mediante il quale apriamo una shell di root sulla macchina virtualizzata.
Come prima cosa cambiamo password di root con il comando
passwd root
e seguendo le istruzioni, poi installiamo il server SSH per poterci connettere da remoto
apt-get install ssh
un consiglio spassionato è di creare un utente guest e consentire l’accesso via SSH solo a lui (per ulteriori dettagli potete vedere la guida relativa alla Configurazione nel dettaglio del server SSH).
Per conoscere l’indirizzo che ha preso il sistema operativo virtualizzato vi basterà lanciare della console dello stesso il comando
ifconfig
Se volete che il router assegni in modo statico l’indirizzo ad una delle macchine virtuali (potrebbe essere molto utile nel caso di port forwarding o bridging) modifichiamo il file
/etc/network/interfaces
commentando la riga contenente
inet dhcp
e aggiungendo delle righe simili alle seguenti
iface eth1 inet static
address 192.168.1.3
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dove diciamo di assegnare staticamente l’indirizzo IP 192.168.1.3 all’interfaccia locale di rete eth1 contenuta nella rete 192.168.1.0 con subnet mask 255.255.255.0 e nella quale il gateway ha IP 192.168.1.1 . Ovviamente dovrete modificare i vari ip ed il nome dell’interfaccia in base alle vostre esigenze.
Alla Prossima 😉
Essendo un how-to linkato direttamente da wikipedia mi aspettavo (1) un maggior livello di dettaglio circa la preparazione dello storage del sistema host (che dischi usate? come li partizionate? RAID? come avviene il boot?) e (2) delle spiegazioni maggiormente dettagliate sui comandi utilizzati (e sul perchè di certe scelte): ad es. le VM di che storage dispongono? viene allogato in modo fisso o dinamico? (e cose del genere)
A parte questo, complimenti per la panoramica: sto pianificando l’installazione di un PVS Debian/Xen e queste informazioni mi saranno utili.