Progetto

Generale

Profilo

XenOnSargeHowto » Cronologia » Versione 6

Versione 5 (Amministratore Truelite, 24-02-2006 18:53) → Versione 6/12 (Amministratore Truelite, 28-02-2006 12:13)

 = 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-base.img seek=2048000k bs=1 count=1 
 dd if=/dev/zero of=swap.img seek=512000k bs=1 of=1 
 mkfs.ext3 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-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.