www.riccardotempesta.com

...le mie soluzioni ai problemi informatici di tutti i giorni... e anche un po' di cavoli miei...

  • Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri
Home Informatica Ubuntu su XEN Server

Ubuntu su XEN Server

Ho installato XenServer 5.0 in uno dei nostri server aziendali... inizialmente ero un po' scettico data la nota "scarsa praticità" dei sistemi XEN.
Mi sono dovuto ricredere in meno di mezzo secondo dopo aver visto XenCenter!... Credo che abbia ben pocoda invidiare all'ormai noto ESX di VMWare.

La prima cosa che ho fatto è stato installare Ubuntu 8.04.1 come macchina guest per valutare le performance. L'installazione è andata liscia come l'olio e la macchina è partita regolarmente, ma non sono riuscito ad installare i XenTools per alcuni errori di I/O che ricevevo.


Cercando per la rete ho "distillato" il modo più rapido per avere una macchina Ubuntu guest perfettamente operativa.

Di seguito le istruzioni:

Step 1: Configurazione macchina guest

Installate i pacchetti XEN per il kernel e i moduli! Ovvero loggatevi nella macchina guest e digitate:

sudo apt-get install libc6-xen udev linux-image-2.6.24-24-xen linux-ubuntu-modules-2.6.24-24-xen linux-headers-lum-2.6.24-24-xen

N.B: Al momento della scrittura di questo articolo era disponibile il kernel 2.6.24-24. Se il comando dovesse dare degli errori fatevi un giro con apt-cache search per la corretta versione dei pacchetti.

Step 2: Configurazione GRUB (necessaria ?)

Questa operazione deve essere eseguita con i privilegi di root.

Al momento della stesura di questo articolo il pacchetto del kernel XEN non riconfigurava il grub a causa di un bug... quindi aprite "/boot/grub/menu.lst" e cercate qualcosa come:

title           Ubuntu 8.04.1, kernel 2.6.24-24-xen
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.24-24-xen root=UUID=26161ba7-30b9-40bf-a6b8-f49796b958c1 ro quiet splash
initrd          /boot/initrd.img-2.6.24-24-xen
quiet

Qualora la sezione non esistesse aggiungetela cambiando l'UUID del parametro "root" (colore blu) e riscrivendolo come compare nelle altre righe a seguire del grub.

Ovviamente dovrete anche cmbiare l'opzione "default" del grub in modo da selezionare il nuovo kernel come kernel predefinito di avvio.

Step 3: Shutdown

Eseguite lo shutdown della macchina virtuale... in questo momento se proverete a riavviare la macchina con il nuovo kernel riceverete un errore... quindi NON FATELO ANCORA!

Step 4: Individuazione UUID macchina

Per prima cosa dovete individuare l'UUID della macchina virtuale, ovvero il suo codice identificativo. Per farlo basta conoscere la label della nostra macchina.
Loggatevi nella macchina XenServer e digitate il seguente comando sostituendo mylabel con il nome della macchina virtuale così come è scritto nel vostro XenCenter.

xe vm-list name-label=mylabel params=uuid --minimal

Il comando restituirà qualcosa come:

 780d24f7-3480-3709-5f3b-bfcf16c91f1f

Ok, questo codice è il vostro UUID... servirà nei prossimi comandi per configurare la macchina virtuale.

Step 5: Passare a PyGRUB

PyGRUB è un bootloader ispirato a grub, ma scritto in python che consente a Xen di avviare la macchina virtuale. Per attivarlo e configurarlo dovrete digitare i seguenti comandi:

xe vm-param-set uuid=uuid HVM-boot-policy=
xe vm-param-set uuid=uuid PV-bootloader=pygrub
xe vm-param-set uuid=uuid PV-args="console=tty0 xencons=tty"

Ovviamente dovrete sostituire l'uuid scritto in rosso con il vostro UUID individuato precedentemente.

Step 6: Configurare il disco di avvio

Ora dobbiamo istruire Xen per l'avvio da uno dei nostri dischi... presumibilmente il primo.
Anche i dischi, come le macchine virtuali, hanno un loro codice identificativo, per trovarlo digitare:

xe vm-disk-list uuid=uuid

Il comando restituirà un output del tipo:

Disk 0 VBD:
uuid ( RO)             : 8218efef-92d6-892e-f14e-55fd86641f53
    vm-name-label ( RO): Disco
       userdevice ( RW): hda


Disk 0 VDI:
uuid ( RO)             : b9f4340f-8a71-491c-95ea-1eb80045e9a2
       name-label ( RW): vdi_hda
    sr-name-label ( RO): LocalStorage
     virtual-size ( RO): 8594128896

A noi interessa il codice VBD (nell'esempio è "8218efef-92d6-892e-f14e-55fd86641f53"). Ovviamente se avete più dischi collegati selezionate il codice VBD del disco di avvio.

Ora dobbiamo semplicemente attivare il flag "bootable":

xe vbd-param-set uuid=vbd-uuid bootable=true

In questo caso vbd-uuid dovrà essere sostituito con il codice VBD che abbiamo trovato prima.

Step 7: Caveat!!

Un piccolo caveat derivato dall'esperienza diretta: Chiudete e riaprite XenCenter... non mi chiedete perché, ma se non lo fate potreste avere problemi ad interagire con la console.

Step 8: Avviate la macchina virtuale

Se tutto è andato liscio ora sarete in grado di avviare la macchina virtuale con il nuovo kernel. Per confermare che state usando il kernel giusto fate il log-in e digitate:

uname -a

Se il comando restituisce una linea come la seguente allora avete seguito bene le mie istruzioni :)

Linux ubuntu 2.6.24-24-xen #1 SMP Wed Apr 15 18:53:17 UTC 2009 i686 GNU/Linux

Step 9: Attivare gli XenTools

Da XenCenter cliccate nel menù "VM" > "Install XEN Tools". Questa operazione inserirà un CD-ROM virtuale contenente gli XenTools.

Ora, dalla macchian guest digitate:

sudo mkdir /media/xt
sudo mount /dev/xvdd /media/xt

N.B.: /dev/xvdd potrebbe variare... il nome esatto lo trovate nello XenCetner in alto a destra nel tab console della vostra macchina virtuale.

Se l'operazione di mount è riuscita dovreste ricevere come risposta:

mount: block device /dev/xvdd is write-protected, mounting read-only

A questo punto installate gli XEN tools:

sudo dpkg -i /media/xt/Linux/dpkg/xe-guest-utilities_*_i386.deb

Se doveste ricevere un errore assicuratevi di usare la bash come defult shell (in Ubuntu 8.04.1 JeOS è impostata a dash di default).
Per usare la bash al posto della dash digitate:

# Digitate questi comandi se e solo se avete ricevuto degli errori nel passaggio precedente
sudo apt-get install bash
sudo unlink /bin/sh
sudo ln -s /bin/bash /bin/sh
sudo dpkg -i /media/xt/Linux/dpkg/xe-guest-utilities_*_i386.deb

Step 10: Bingo!

Fatevi un applauso!

Se tutto è andato liscio la procedura è completa... il mio consiglio ora è di creare un template a partire dalla macchina appena creata per evitare di dovre ripetere la procedura ogni volta.

Un piccolo gadget

Questo script è un piccolo gadget da copiare nella macchina XenServer per automatizzare i passaggi da 4 a 6:

#!/bin/bash

# Copyright (c) 2009-2010 Riccardo Tempesta - Idealia Group s.r.l.
# Feel free to use, modify, redistribuite or whatever you like to do with this script :)

LABEL=$1

if [ -z "$LABEL" ]; then
        echo "usage: $1 "
        exit 1
fi

VM_UUID=`xe vm-list name-label="$LABEL" params=uuid --minimal`
VBD_UUID=`xe vm-disk-list uuid=$VM_UUID|grep uuid|head -n 1|cut -d: -f2|cut -d" " -f2`

if [ -z "$VM_UUID" ]; then
        echo "Unknown machine"
        exit 1
fi

echo
echo "VM UUID  : $VM_UUID"
echo "VBD UUID : $VBD_UUID"
echo

echo "Press any key to continue or CTRL+C to abort"

read

xe vm-param-set uuid=$VM_UUID HVM-boot-policy=
xe vm-param-set uuid=$VM_UUID PV-bootloader=pygrub
xe vm-param-set uuid=$VM_UUID PV-args="console=tty0 xencons=tty"
xe vbd-param-set uuid=$VBD_UUID bootable=true

echo "Done"
 

 

 

 

Il sondaggio

Quale è l'operatore telefonico meno ladro?
 

Feed sito internet

Nessun URL del feed specificato.