Xen
Da OZiOSi.
Indice |
Appunti su Xen
Hardware DL320 G5 (Dual Xeon 3200 dualcore con supporto VT-x)
Ram: 4GB
OS: Gentoo 2006.1
Per l'installazione del dom0 il riferimento principale e` stato:
Xen and Gentoo su gentoo wiki
make.conf di base
CFLAGS="-O2 -march=nocona -pipe"
CHOST="x86_64-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
USE="nptl multilib sdl"
MAKEOPTS="-j9"
LANG="it_IT"
LINGUAS="it"
Il kernel per i domU e` lo stesso di dom0 ma nella sezione "Xen" sono abilitati i frontend drivers e non i backend.
La configurazione finale prevede tre NIC divisi in questa maniera:
- eth0 per le macchine virtuali che forniscono servizi in LAN
- eth1 per le macchine virtuali che forniscono servizi verso Internet
- eth2 per gestire dom0
Rete
eth0 ed eth1 non hanno IP in dom0, mentre eth2 non e` visibile alle domU.
La configurazione prevede due bridge che vengono creati da uno script network-bridge che richiama l'orginale network-bridge passando i parametri che ci occorrono.
Il vecchio network-bridge e` stato rinominato in network-bridge.xen, quello nuovo contiene:
#!/bin/sh
# Exit if anything goes wrong.
set -e
#
# First arg is the operation.
OP=$1
shift
#
script=/etc/xen/scripts/network-bridge.xen
#
case ${OP} in
start)
$script start vifnum=0 bridge=xbr0 netdev=eth0
$script start vifnum=1 bridge=xbr1 netdev=eth1
;;
stop)
$script stop vifnum=0 bridge=xbr0 netdev=eth0
$script stop vifnum=1 bridge=xbr1 netdev=eth1
;;
status)
$script status vifnum=0 bridge=xbr0 netdev=eth0
$script status vifnum=1 bridge=xbr1 netdev=eth1
;;
*)
echo 'Comando sconosciuto: ' ${OP}
echo 'Utilizza: start, stop, status'
exit 1
esac
in questo modo posso collegare le macchine per la LAN su xbr0 e quello per internet su xbr1 esempio di una macchina in lan:
kernel = '/boot/vmlinux-2.6.16-r1-xenU' ... vif = [ 'mac=00:16:3e:01:01:02, bridge=xbr0' ] ... pci=['0x:0x.0', '0y:0x.0']
esempio di una macchina verso internet:
kernel = "/boot/vmlinux-2.6.16-r1-xenU" ... vif = [ 'mac=00:16:3e:01:01:03,bridge=xbr1' ] ...
gli IP vengono assegnati sempre tramite DHCP.
PCI
Il "pci=['0x:0x.0']" serve per dare accesso diretto a quel domU ad un controller SCSI aggiuntivo, per farlo in gru.conf va aggiunti il parametro pciback.hide=(0x:0x.0) da passare al kernel in questo modo:
title = Gentoo Xen 3.0.2
root (hd0,0)
kernel (hd0,0)/xen.gz
module (hd0,0)/vmlinux-2.6.16-r1-xen0 root=/dev/cciss/c0d0p5 pciback.hide=(0x:0x.0)('0y:0x.0')
dopo lunghe tribolazioni l'avvio del kernel per dom0 e` diventato
title = Xen 3 root (hd0,0) kernel (hd0,0)/xen.gz module (hd0,0)/vmlinux-2.6.16-r1-xen0 root=/dev/cciss/c0d0p5 pci=routeirq max_loop=64 pciback.permissive pciback.hide=(0f:08.0)
- pci=routeirq Non ho indagato bene, me lo richiedeva il kernel durante il probe delle periferiche PCI
- max_loop=64 Per avere piu` di 8 device di loopback
- pciback.permissive Non so, non ho notato grossi cambiamenti
Attenzione, se la periferica PCI viene utilizzata anche da dom0 il kernel si freeza. Avevo provato a passare l'Id PCI della scheda video ma questo non mi permetteva l'avvio del Kernel dom0
Red Hat su domU
Non essendoci script o immagini gia` pronte per mettere una RHES in domU ho installato una RHES in un FS di 4GB nel server HP senza fargli installare il boot loader.
Dopo aver riavviato il dom0 ho creato un file che sara` il FS del domU:
dd if=/dev/zero of=virtual1 bs=1k seek=4096k count=1
mkfs -t ext3 virtual1
mount -o loop virtual1 /mnt
cp -ax /{root,dev,var,etc,usr,bin,sbin,lib,lib64} /mnt
mkdir /mnt/{proc,sys,home,tmp}
umount /mnt
in questo modo in virtual1 c'e` una RedHat pronta per essere fatta bootare da xen.

