<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>KVM</title><revhistory><revision><revnumber>31</revnumber><date>2012-10-15 23:12:44</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>30</revnumber><date>2012-10-15 23:08:56</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>29</revnumber><date>2012-10-15 22:48:50</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>28</revnumber><date>2011-12-12 23:57:20</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>27</revnumber><date>2011-12-12 23:53:04</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>26</revnumber><date>2011-12-12 23:46:46</date><authorinitials>217.202.36.3</authorinitials></revision><revision><revnumber>25</revnumber><date>2011-12-10 13:20:50</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>24</revnumber><date>2011-12-10 13:09:26</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>23</revnumber><date>2011-12-10 12:57:37</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>22</revnumber><date>2011-12-10 12:56:53</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>21</revnumber><date>2011-12-10 12:55:30</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>20</revnumber><date>2011-12-10 12:53:48</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>19</revnumber><date>2011-12-10 12:20:44</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>18</revnumber><date>2011-12-10 12:18:32</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>17</revnumber><date>2011-12-10 12:07:31</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>16</revnumber><date>2011-12-10 12:02:07</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>15</revnumber><date>2011-12-10 11:57:30</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>14</revnumber><date>2011-12-10 11:50:08</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>13</revnumber><date>2011-12-10 11:37:24</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>12</revnumber><date>2011-12-10 11:33:39</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>11</revnumber><date>2011-12-10 11:30:33</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>10</revnumber><date>2011-12-09 17:59:12</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>9</revnumber><date>2011-12-09 17:00:36</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>8</revnumber><date>2011-12-09 16:56:02</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>7</revnumber><date>2011-12-09 16:51:19</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>6</revnumber><date>2011-12-09 15:56:25</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>5</revnumber><date>2011-12-09 14:48:20</date><authorinitials>claudyus</authorinitials></revision><revision><revnumber>4</revnumber><date>2011-12-08 21:32:16</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>3</revnumber><date>2011-12-08 18:32:03</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>2</revnumber><date>2011-12-08 18:30:28</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision><revision><revnumber>1</revnumber><date>2011-12-08 17:39:08</date><authorinitials>OrazioPirataDelloSpazio</authorinitials></revision></revhistory></articleinfo><para>Questa è una guida che spiega come installare KVM su una macchina di Hetzner utilizzando LVM per le partizioni delle macchine virtuali. </para><section><title>Partizionare la macchina</title><para>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: </para><screen><![CDATA[PART swap swap 1G                                                                                                                                      
PART /boot ext3 300M                                                                                                                                   
PART / ext4 200G                                                                                                                                       
PART /data ext3 all                                                                                                                                   ]]></screen><para>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 <ulink url="http://www.nnx.me/KVM/LVM#">LVM</ulink> ). 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. </para></section><section><title>Interfaccia di rete</title><para>Le macchine di hetzner nascono con un eth0 con settato l'ip della macchina &quot;host&quot; (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. </para><para>Modifichiamo /etc/network/interfaces aggiungendo sotto alla sezione di eth0, questa interfaccia di bridge: </para><screen><![CDATA[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
]]><![CDATA[
        bridge_ports    eth0
        bridge_stp      on
        bridge_maxwait  5
]]><![CDATA[
iface br0 inet6 static
        address         2a01:4f8:150:8461::1
        netmask         59
        gateway         2a01:4f8:150:8460::1]]></screen><para>IP presi </para><screen><![CDATA[host   176.9.211.209
ale (orazio) 176.9.211.210
claudyuss (corona) 176.9.211.211
hispanico (guinness) 176.9.211.212]]></screen></section><section><title>Interfaccie di rete (ipv6)</title><para>da <ulink url="http://linux-attitude.fr/post/proxy-ndp-ipv6"/>. </para><para>Sfruttando la /64 assegnataci da heizner abbiamo impostato un proxy ndp sull host. In praticamente è equivalente a un proxy arp ipv4. </para><screen><![CDATA[sysctl -w net.ipv6.conf.all.proxy_ndp=1
ip -6 neigh add proxy 2a01:XXX:8461::212 dev eth0]]></screen><para>questo comando dice alla macchina &quot;redirigire&quot; 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. </para><para>aggiungendo n righe per ogni macchina su /etc/network/intefaces si risolve </para></section><section><title>Creare la propria macchina</title><para>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 &quot;ale&quot; (ip 176.9.211.210). </para><screen><![CDATA[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]]></screen><para>modificarlo tipo: </para><screen><![CDATA[root 395000
swap 5000]]></screen><para>Creare un file che viene eseguito al primo avvio della macchina virtuale: </para><screen><![CDATA[vi /var/lib/libvirt/images/ale/boot.sh]]></screen><para>scrivendoci dentro: </para><screen><![CDATA[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]]></screen><para>dare questi comandi cambiando opportunamente i parametri: </para><screen><![CDATA[cd /var/lib/libvirt/images/ale/
]]><![CDATA[
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 
]]><![CDATA[
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]]></screen><para>editiamo il file xml con le impostazioni della macchina virtuale </para><screen><![CDATA[virsh edit ale]]></screen><para>aggiungendo la parte per avere la console seriale (dentro il blocco xml &quot;devices&quot;): </para><screen><![CDATA[[...]
<serial type="pty">
    <source path="/dev/pts/4"/>
    <target port="1"/>
</serial>]]></screen><para>ricarichiamo le impostazioni e facciamo partire la macchina lanciando il comando &quot;virsh&quot; e scrivendo sulla shell di virsh &quot;start ale&quot;. </para><para>Se tutto va bene possiamo ora connetterci alla macchina virtuale via ssh e via console. </para><para>Per provare la connessione via console, sempre dalla shell virsh scriviamo &quot;console ale&quot;. </para><section><title>Usare KVM</title><para>Eseguendo il comando &quot;virsh&quot; abbiamo la shell virsh. Da lì possiamo dare una serie di comandi: </para><para>Per avviare/fermare una macchina </para><screen><![CDATA[start nomemacchina]]></screen><screen><![CDATA[stop nomemacchina]]></screen><para>Per vedere le macchine attive: </para><screen><![CDATA[list]]></screen><para>Per entrare in console nella macchina </para><screen><![CDATA[console nomemacchina]]></screen><para>Per far partire le macchine virtuali (vm) quando si avvia la macchina host: </para><screen><![CDATA[autostart nomemacchina]]></screen></section><section><title>Links</title><para>guida marco </para><para><ulink url="http://wiki.netgroup.uniroma2.it/doku.php?id=virtual_machine_creation_with_kvm_on_ubuntu_server_11.04"/> </para></section></section></article>