XenOnSargeHowto » Cronologia » Versione 10
Versione 9 (Amministratore Truelite, 06-07-2006 17:12) → Versione 10/12 (Amministratore Truelite, 06-07-2006 17:54)
[[TracNav(TOC)]] = Come creare un server di virtualizzazione usando Xen su una Debian Sarge = Si considerino i presenti requisiti di base: * una distribuzione linux debian, release Sarge, installata; * una buona quantità di spazio su disco libero su una partizione; * almeno due interfacce di rete (eth0, eth1); * una quantità di memoria ram maggiore o uguale a 512MB. Il primo passo è l'installazione del kernel xen e dei relativi tool che vanno presi da un repository esterno in quanto non presenti in sarge. I seguenti comandi abilitano il repository esterno ed installano i pacchetti necessari. {{{ echo "deb http://packages.debianbase.de/sarge/i386/xen3 ./" >> /etc/apt/sources.list apt-get update apt-get install iproute xen udev hotplug bridge-utils linux-xen0-2.6 cd /usr/src dpkg -i kernel-xen0-2.6.12.6-xen_tha1_i386.deb mv /lib/tls /lib/tls.disabled }}} Una volta installati i pacchetti, è necessario rigenerare l'initrd per il vostro sistema con il comando {{{ mkinitrd -o /boot/xen-modules-2.6.12.6-xen 2.6.12.6-xen }}} e successivamente aggiungere a grub le voci necessarie per fare il boot con il kernel xen, nel file {{{ "/boot/grub/menu.lst" }}} {{{ # # Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST title Xen 3.0.1 - Linux 2.6.12.6-xen kernel /boot/xen-3.0.1.gz module /boot/xen-linux-2.6.12.6-xen root=/dev/hda1 ro module /boot/xen-modules-2.6.12.6-xen ### BEGIN AUTOMAGIC KERNELS LIST ## lines between the AUTOMAGIC KERNELS LIST markers will be modified ## by the debian update-grub script except for the default options below ## DO NOT UNCOMMENT THEM, Just edit them to your needs }}} Ipotizzando che ''eth0'' sia l'interfaccia di rete in ascolto sulla rete locale con dhcp e che ''eth1'' sia collegata ad uno switch per una rete interna di test, possiamo creare un nuovo bridge da fare usare alle macchine virtuali; di default xen crea un bridge sulla ''eth0'' per le sue interfacce virtuali. Il file {{{ "/etc/network/interfaces" }}} dovrebbe quindi avere questo aspetto. {{{ # The primary network interface auto eth0 iface eth0 inet dhcp auto xen-br-testlan iface xen-br-testlan inet static address 10.0.0.0 network 10.0.0.0 netmask 255.255.255.0 bridge_ports eth1 post-up ifconfig xen-br-testlan 0.0.0.0; ifconfig xen-br-testlan up }}} A questo punto è possibile riavviare il sistema nel nuovo domain0 xen. Se il sistema si è avviato senza problemi possiamo creare una nuova istanza di debian sarge che girerà come ospite (guest) sul sistema host. La prima cosa da fare è la creazione di due file da usare rispettivamente come partizione di root da 2GB e come swapfile da 512MB. {{{ mkdir -p /home/vserver/images cd /home/vserver/images dd if=/dev/zero of=sarge.img of=sarge-base.img seek=2048000k bs=1 count=1 dd if=/dev/zero of=swap.img seek=512000k bs=1 count=1 mkfs.ext3 sarge.img sarge-base.img mkswap swap.img }}} Una volta create e formattate le partizioni, è necessario installare debootstrap con {{{ "apt-get install debootstrap" }}} per poi procedere all'installazione di un sistema base. {{{ modprobe loop mount -o loop sarge.img sarge-base.img /mnt debootstrap sarge /mnt http://ftp.it.debian.org/debian }}} Il passo successivo è l'installazione dei moduli del kernel xen sul nuovo sistema guest seguito dalla creazione di alcuni file necessari ed alla modifica di alcune impostazioni di sistema. Disabilitazione delle librerie TLS {{{ cp -a /lib/modules/2.6.12.6-xen /mnt/lib/modules mv /mnt/lib/tls /mnt/lib/tls.disabled }}} Creazione del file ''/mnt/etc/fstab'' {{{ /dev/hda1 / ext3 defaults,errors=remount-ro 0 1 /dev/hda2 none swap sw 0 0 }}} Le console diverse da tty1 vanno disabilitate in ''/mnt/etc/inittab'' {{{ # Note that on most Debian systems tty7 is used by the X Window System, # so if you want to add more getty's go ahead but skip tty7 if you run X. # 1:2345:respawn:/sbin/getty 38400 tty1 #2:23:respawn:/sbin/getty 38400 tty2 #3:23:respawn:/sbin/getty 38400 tty3 #4:23:respawn:/sbin/getty 38400 tty4 #5:23:respawn:/sbin/getty 38400 tty5 #6:23:respawn:/sbin/getty 38400 tty6 }}} A questo punto è possibile smontare il disco virtuale con {{{ umount /mnt }}} e procedere alla creazione del file di configurazione per la macchina vituale xen che chiameremo ''sarge-base.sxp'' {{{ name ="sarge-base" kernel ="/boot/xen-linux-2.6.12.6-xen" ramdisk ="/boot/initrd-2.6.12-xen" root ="/dev/hda1 ro" memory =64 disk = [ 'file:/home/vserver/images/sarge_base.img,hda1,w' , 'file:/home/vserver/images/swap.img,hda2,w'] # network vif = ['bridge=xenbr0', 'bridge=xen-br-testlan'] }}} Una volta salvato il file, sarà possibile avviare la macchina virtuale con il comando {{{ xm create -c sarge-base.sxp }}}. Se tutto procede senza problemi, verrà avviata una macchina virtuale con 64MB di ram, e due interfacce di rete. Il parametro "-c" passato alla linea di comando fa si che la console virtuale venga agganciata subito (in caso contrario la macchina virtuale viene avviata in background). Il comando {{{ "xm" }}} permette di effettuare alcune operazioni sulle macchine virtuali e di controllarne lo stato. {{{ xm list }}} mostra la lista delle macchine virtuali attive. {{{ xm reboot }}} forza il riavvio di una macchina virtuale. {{{ xm shutdown }}} forza lo shutdown di una macchina virtuale. {{{ xm destroy }}} distrugge istantaneamente una macchina virtuale. {{{ xentop }}} consente di avere l'equivalente del comando ''top'' per le macchine virtuali in esecuzione. Per avere delle macchine virtuali funzionanti correttamente una volta avviato il sistema occorrerà anche completare, all'interno dello stesso, la configurazione. Questo comporta anzitutto mettere un {{{sources.list}}} valido, del tipo: {{{ deb http://ftp.it.debian.org/debian sarge main contrib deb http://security.debian.org/ sarge/updates main contrib }}} e configurare {{{/etc/network/interfaces}}} con qualcosa del tipo: {{{ auto lo eth0 iface lo inet loopback iface eth0 inet dhcp hostname sarge }}} inoltre dato che {{{debootstrap}}} non installa {{{module-init-tools}}}, necessario per usare i moduli (e far funzionare DHCP) con il kernel 2.6, occorrerà configurare una prima volta la rete a mano ed installarlo.