Xen su debian lenny 64 bit, no frills guide parte 1

Mi ero ripromesso di scrivere questa guida, per motivi pratici di supporto alla mia sempre fallace memoria e per motivi di condivisione con i miei colleghi in Cpline. C’è voluto un po’ di tempo, ma finalmente eccomi qui con un modesto ma perfetto allo scopo Acer Altos G540 M2 pronto per essere trasformato in hypervisor per ospitare macchine (para)virtualizzate.

L’articolo è un barboso howto passo passo, quindi chi non fosse interessato puo’ tranquillamente fermare la lettura qui

La scelta hardware

Per realizzare un hypervisor Xen possiamo veramente scegliere qualsiasi computer, a patto che soddisfi questo requisito:

Cpu con estensioni Intel VT o AMD-V

Semplice, non basta altro. Il modo più veloce per controllare se una cpu soddisfa i requisiti è quella di avviare con una live Linux distro e dare i seguenti comandi :

[sourcecode language=”bash”]cat /proc/cpuinfo | grep vmx (per Intel)
cat /proc/cpuinfo | grep svm (per AMD)[/sourcecode]

L’installazione di Debian amd64

Scegliamo di effettuare una installazione da netinstall che con soli 131 Mb di download della iso più lo scaricamento dei pacchetti base dalla repository APT ci permetterà di avere un sistema operativo di base aggiornato in breve tempo.

Io di solito utilizzo questo schema di partizioni :

100 Mb /boot ext2
10 Gb / ext3

Lo spazio rimanente lo userò a macchina pronta con LVM.

Una volta terminata l’installazione di default apportiamo alcuni ritocchi come l’immancabile installazione di SSH e la creazione di un file di swap, che non fa mai male.

[sourcecode language=”bash”]apt-get install ssh
dd if=/dev/zero of=/var/spool/swapfile bs=1024 count=262144
mkswap /var/spool/swapfile
nano -w /etc/fstab
/var/spool/swapfile swap swap defaults 0 0
swapon -a[/sourcecode]

L’installazione di Xen

Nel nostro ambiente Debian tutto quello che dobbiamo fare è dare questo semplice comando :

[sourcecode language=”bash”]
apt-get install xen-hypervisor-3.2-1-amd64 xen-linux-system-2.6.26-1-xen-amd64 xen-utils-3.2-1 xenstore-utils xenwatch xen-shell xen-tools[/sourcecode]

Successivamente editiamo il file /etc/modules inserendo la seguente linea

[sourcecode language=”bash”]
loop max_loop=64[/sourcecode]

necessaria, qualora decidessimo di installare delle virtual machine con dischi basati su file immagine. Se abbiamo intenzione di usare unicamente virtual machines basate su LVM possiamo tralasciare questa modifica.

Di seguito diamo un ultimo ritocco a /etc/xen/xend-config.sxp levando il commento a (network-script network-bridge) e commentando (network-script network-dummy). Inoltre inseriamo la linea (vif-script vif-bridge)

[sourcecode language=”bash”]
(network-script network-bridge)
#(network-script network-dummy)
(vif-script vif-bridge)
[/sourcecode]

In questo modo ci ritroveremo con un nuovo kernel con le patch di Xen e con tutti gli strumenti necessari  per riavviare con il nostro nuovo hypervisor.

Riavvio e controlli

Riavviamo il nostro host hypervisor nuovo fiammante e dovremmo ritrovarci dopo la sequenza di boot al prompt di Linux.

Inserite le nostre credenziali verifichiamo che sia stato avviato il kernel xen con uname -a

[sourcecode language=”bash”]
Linux vito2 2.6.26-1-xen-amd64 #1 SMP Fri Mar 13 22:30:40 UTC 2009 i686 GNU/Linux [/sourcecode]

Controlliamo che il demone di controllo xend sia avviato con un primo comando della serie xm

[sourcecode language=”bash”]
xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 231 2 r—– 21609.8
[/sourcecode]

Per ultima cosa controlliamo il corretto settaggio delle schede di rete con brctl show

[sourcecode language=”bash”]
bridge name bridge id STP enabled interfaces
eth0 8000.001d6035f29d no peth0
[/sourcecode]

Se tutto è posto apponiamo ancora alcuni ritocchi ai file di configurazione e poi saremo pronti a creare la nostra prima macchina paravirtualizzata basata ovviamente su debian 64bit.

Il primo parametro da cambiare tra quelli di default è XENDOMAINS_SAVE. Si trova in /etc/default/xendomains .

Nella configurazione sample troviamo il path dove salvare le virtual machines quando spegniamo l’hypervisor. Questo comportamento però ha causato secondo la mia esperienza dei malfunzionamenti in sede di riavvio, con le macchine virtuali che non rispondevano e rimanevano bloccate. E’ sufficiente non indicare alcun path nel file di configurazione per fare in modo che le macchine virtuali in sede di spegnimento dell’hypervisor vengano a loro volta spente prima di procedere allo shutdown dell’host principale.

Per fare in modo che all’avvio dell’hypervisor si avviino anche le virtual machine che ci interessano occorre creare una directory in /etc/xen chiamata auto e all’interno di essa creare dei link simbolici ai file di configurazione delle macchine virtuali da avviare allo startup. Questo magari lo vedremo in dettaglio quando creeremo la nostra prima macchina virtuale linux.

La seconda questione da sistemare è l’orologio di sistema. Per via di un bug del kernel 2.6.26-1-xen ogni virtual machine che fa riferimento a xen come clocksource può dare problemi  di sincronia dell’ora e degradare l’orologio con conseguente instabilità del sistema.

La soluzione è editare alcuni file di sistema. Il primo in Dom0 (hypervisor) in /etc/sysctl.conf aggiungendo la linea

[sourcecode language=”bash”]
xen.independent_wallclock=1[/sourcecode]

Per quanto riguarda le virtual machines (DomU) oltre ad aggiungere la medesima linea sempre nel file /etc/sysctl.conf dovremo indicare nel file di configurazione il parametro extra=”clocksource=jiffies”

Siamo pronti a questo punto a creare la nostra prima virtual machine.

Lo vedremo nel prossimo post.

Credits :

http://wiki.debian.org/Xen
http://www.howtoforge.com/perfect_setup_xen3_debian

Serie di posts Xen no frills guide:
Parte 1
Parte 2
Parte 3

4 thoughts on “Xen su debian lenny 64 bit, no frills guide parte 1

  1. […] Dema blog La vita comincia a 100Mbs , simmetrici (Gaspar Torriero) Salta al contenuto Chi sonoPerché Dema.tv « Xen su debian lenny 64 bit, no frills guide parte 1 […]

  2. Luciano De Martino

    Salve, mi sto avvicinando da poco al mondo Linux e sono particolarmente interessato alla tematica di virtualizzazione.

    Se mi permette vorrei chiederle 4 informazioni veloci:

    1) Installando su Debian/XEN una XP Pro, si riesce da quest’ultima ad accedere anche alle varie periferiche removibili (USB, etc.) e ad utilizzare per esempio Hard disk esterni?

    2) Lavorando nella grafica/multimedia avrei bisogno di una “sistemazione” il più fluida possibile (che non rallenti troppo l’esperienza) e flessibile (es. in grado di gestire HD esterni NTFS).

    La soluzione Debian/Xen può fare al caso mio o è più adatta per software non grafici tipo office automation, programmazione, e altri file System, etc?

    3) Ho un vecchio desktop P4 2.4Ghz 512MB Matrox 32MB su quello (non avendo VT) volevo installare Virtual Box versione free. Cosa ne pensa di quel prodotto? Xen è meglio?

    4) Ho letto che Ubuntu è un derivato di Debian. In molti me lo hanno consigliato. Ma si potrebbe adottare una soluzione Ubuntu/Xen?

    Basta così. La ringrazio per avermi concesso tutto questo tempo.
    Senza volerla impegnare troppo… aspetto le sue risposte e la ringrazio.

    Cordiali saluti.

    Luciano De Martino

  3. Ciao Luciano.
    Vediamo un po’:
    1)Esiste in Xen la possibilità di attivare il PCI passthrough che permette di assegnare una risorsa fisica alla DomU, nascondendola prima a Dom0. Personalmente avevo provato proprio con un controller USB, ma senza successo. Puoi trovare informazioni qui e qui.

    2)La virtualizzazione con Xen è concepita per i server o al limite per i desktop client. Non ha molto senso virtualizzare workstation grafiche, in quanto vi accederai unicamente in Remote Desktop o VNC e non potrai utilizzare la potenza della scheda video. Xen come Vmware ESXi e altri simili nascono per ottimizzare le risorse permettendo l’installazione di molteplici server all’interno di un unico hardware, per semplificare la gestione con strumenti di migrazione dei sistemi da un host all’altro senza downtime e mille altri vantaggi che con una macchina fisica non sarebbero immediatamente disponibili, tra tutti il cambio al volo delle risorse di sistema della macchina virtuale.

    3)Il P4 non ha abbastanza potenza per fungere da hypervisor, o meglio, potresti installare xen e virtualizzare un paio di DomU paravirt con 128MB per assegnare loro compiti semplici come un piccolo server di posta o server samba, ma niente di più. Virtual box con un hardware come quello che mi hai descritto non ce la fa. Lascia perdere.

    4)Ubuntu ha abbandonato il suporto a Xen per KVM. E’ possibile però installare xen anche su Ubuntu. Segui questo howto per 9.10 che probabilmente si può benissimo applicare anche alla nuova 10.4.

    Ciao e mi raccomando, la prossima volta solo del tu, altrimenti non rispondo 🙂

  4. Luciano De Martino

    Grazie mille per l’estrema puntualità e la disponibilità.

    1) Virtual box riesce a gestire le USB, ma non ho ancora capito:
    a) quanto mi costa
    b) dove si compra.

    2) Peccato, credevo che con VT-d si potesse accedere anche a dispositivi I/O, schede grafiche, etc.
    Devo aver letto da qualche parte che la filosofia di Virtual Box sarebbe un pò questa. Quando mi sono imbattuto in XEN ho pensato che fosse un prodotto più completo e professionale di VB. Ho letto che si possono gestire anche i Core e così pensavo che gestisse anche la scheda grafica. E va bé!

    3) Ma sostanzialmente… Debian e Ubuntu differscono principalmente per le uscite delle nuove versioni o c’é dell’altro?

    4) Tu usi KDE o GNOME? O altro?

    Fine.

    Grazie ancora per il tempo e buona giornata.

    P.S: Con un estremo sforzo sono riuscito a darti del tu.
    Mi merito un bel premio no?? Alla prossima…