Questa è una guida che spiega come installare KVM su una macchina di Hetzner utilizzando LVM per le partizioni delle macchine virtuali. == Partizionare la macchina == Lanciare in rescue system e lanciare l'utility di hetzner installimages. L'utility ti chiederà di modificare un file di configurazione. La nostra modifica è questa: {{{ PART swap swap 1G PART /boot ext3 300M PART / ext4 200G PART /data ext3 all }}} Installiamo la macchina (nel nostro caso ubuntu 11.10) ed entriamo in ssh. Quindi smontiamo /data (che è sulla partizione raid /dev/md3) e ci creiamo dei logical volume con LVM (vedi [[LVM]] ). Ricordiamoci di modificare /etc/fstab per commentare la linea in cui monta /data, altrimenti la macchina non riparte!!! Noi abbiamo creato /dev/beers/ale , /dev/beers/lambic , /dev/beers/guinness etc etc. di 400 GB l'uno. == Interfaccia di rete == Le macchine di hetzner nascono con un eth0 con settato l'ip della macchina "host" (nel nostro caso 176.9.66.117). In più abbiamo una /29 (176.9.211.208/29). Abbiamo anche una /64 ipv6 (2a01:4f8:150:8461::/64). Ci troviamo il gateway sapendo che le subnet ipv6 di hetzner sono /59. Quindi il nostro gateway sara il primo ip disponibile della relativa /59. Nel nostro caso 2a01:4f8:150:8460::1. Modifichiamo /etc/network/interfaces aggiungendo sotto alla sezione di eth0, questa interfaccia di bridge: {{{ auto br0 iface br0 inet static address 176.9.66.117 broadcast 176.9.66.127 netmask 255.255.255.224 gateway 176.9.66.97 bridge_ports eth0 bridge_stp on bridge_maxwait 5 iface br0 inet6 static address 2a01:4f8:150:8461::1 netmask 59 gateway 2a01:4f8:150:8460::1 }}} IP presi {{{ host 176.9.211.209 ale (orazio) 176.9.211.210 claudyuss (corona) 176.9.211.211 hispanico (guinness) 176.9.211.212 }}} == Interfaccie di rete (ipv6) == da http://linux-attitude.fr/post/proxy-ndp-ipv6. Sfruttando la /64 assegnataci da heizner abbiamo impostato un proxy ndp sull host. In praticamente è equivalente a un proxy arp ipv4. {{{ sysctl -w net.ipv6.conf.all.proxy_ndp=1 ip -6 neigh add proxy 2a01:XXX:8461::212 dev eth0 }}} questo comando dice alla macchina "redirigire" il 212 attraverso eth0. La eth0 è l'interfaccia verso fuori, mentre br0 è il bridge collegato alle macchine virtuali. 2a01:XXX:8461::212 è l'indirizzo di una macchina host. aggiungendo n righe per ogni macchina su /etc/network/intefaces si risolve == Creare la propria macchina == Installare il pacchetto qemu-kvm e python-vm-builder Ognuno di noi ha una partizione LVM in /dev/beers/XXXX (corona, guinness, ale etc). Questo è un esempio per tirare su la macchina "ale" (ip 176.9.211.210). {{{ mkdir -p /var/lib/libvirt/images/ale/mytemplates/libvirt cp /etc/vmbuilder/libvirt/* /var/lib/libvirt/images/ale/mytemplates/libvirt/ vi /var/lib/libvirt/images/ale/vmbuilder.partition }}} modificarlo tipo: {{{ root 395000 swap 5000 }}} Creare un file che viene eseguito al primo avvio della macchina virtuale: {{{ vi /var/lib/libvirt/images/ale/boot.sh }}} scrivendoci dentro: {{{ echo "start on stopped rc RUNLEVEL=[2345]" > /etc/init/ttyS0.conf echo "stop on runlevel [!2345]" >> /etc/init/ttyS0.conf echo "respawn" >> /etc/init/ttyS0.conf echo "exec /sbin/getty -L 115200 ttyS0 xterm" >> /etc/init/ttyS0.conf start ttyS0 }}} dare questi comandi cambiando opportunamente i parametri: {{{ cd /var/lib/libvirt/images/ale/ IP=176.9.211.210 HOSTNAME=ale VMNAME=ale LVMGROUP=beers LVMVOL=ale USER=orazio PASSWORD=acab123 GATEWAY=176.9.211.209 MASK=255.255.255.248 NET=176.9.211.208 BROADCAST=176.9.211.215 DNS=8.8.4.4 UBUNTU=oneiric vmbuilder kvm ubuntu --suite=${UBUNTU} --flavour=virtual --arch=amd64 --mirror=http://de.archive.ubuntu.com/ubuntu -o --libvirt=qemu:///system --ip=$IP --gw=$GATEWAY --mask=$MASK --net=$NET --bcast=$BROADCAST --dns=$DNS --part=vmbuilder.partition --raw=/dev/mapper/${LVMGROUP}-${LVMVOL} --templates=mytemplates --user=$USER --name=$USER --pass=$PASSWORD --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid --addpkg=avahi-daemon --addpkg=openssh-server --mem=3000 --hostname=$HOSTNAME --bridge=br0 --firstboot=/var/lib/libvirt/images/${VMNAME}/boot.sh }}} editiamo il file xml con le impostazioni della macchina virtuale {{{ virsh edit ale }}} aggiungendo la parte per avere la console seriale (dentro il blocco xml "devices"): {{{ [...] }}} ricarichiamo le impostazioni e facciamo partire la macchina lanciando il comando "virsh" e scrivendo sulla shell di virsh "start ale". Se tutto va bene possiamo ora connetterci alla macchina virtuale via ssh e via console. Per provare la connessione via console, sempre dalla shell virsh scriviamo "console ale". === Usare KVM === Eseguendo il comando "virsh" abbiamo la shell virsh. Da lì possiamo dare una serie di comandi: Per avviare/fermare una macchina {{{ start nomemacchina }}} {{{ stop nomemacchina }}} Per vedere le macchine attive: {{{ list }}} Per entrare in console nella macchina {{{ console nomemacchina }}} Per far partire le macchine virtuali (vm) quando si avvia la macchina host: {{{ autostart nomemacchina }}} === Links === guida marco http://wiki.netgroup.uniroma2.it/doku.php?id=virtual_machine_creation_with_kvm_on_ubuntu_server_11.04