Italiano English
Modifica History Actions

Differenze per "KVM"

Differenze tra le versioni 6 e 30 (in 24 versioni)
Versione 6 del 2011-12-09 15:56:25
Dimensione: 5461
Commento:
Versione 30 del 2012-10-15 23:08:56
Dimensione: 6110
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
Questa è una guida che spiega come installare KVM su una macchina di Hetzner utilizzando LVM per le partizioni delle macchine virtuali.

== Partizionare la macchina ==
Linea 9: Linea 12:
Sfortunamente la creazione dei volumi lvm sembra fallire. quindi non abbiamo usato questa configurazione 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:
Linea 11: Linea 24:
PART swap swap 1G
PART /boot ext3 300M
PART / ext4 200G
                                                                                                                              
PART lvm beers-swap 30G
PART lvm beers all
                                                                                                                                                       
LV beers corona /root/vmcorona ext4 400G
LV beers guinnes /root/vmguinness ext3 400G
LV beers ale /root/vmale ext3 400G
LV beers lambic /root/vmlambic ext3 400G
LV beers peroni /root/vmperoni ext3 400G
LV beers free /root/vmfree ext3 400G
                                                                                                                                                       
LV beers-swap swcorona /root/swcorona swap 5G
LV beers-swap swguinnes /root/swguinnes swap 5G
LV beers-swap swale /root/swale swap 5G
LV beers-swap swlambic /root/swlambic swap 5G
LV beers-swap swperoni /root/swperoni swap 5G
LV beers-swap swfree /root/swfree swap 5G
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
Linea 34: Linea 43:
=== INterfaccia di rete
Abbiamo configurato la rete con un bridge scopiazzando da http://wiki.hetzner.de/index.php/KVM
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
}}}
Linea 37: Linea 51:
Essendo la subnet assegnataci 176.9.211.208/29 abbiamo:
== 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.
Linea 39: Linea 58:
brctl addbr br0
ifconfig br0 176.9.211.209 netmask 255.255.255.248 up
tunctl -b -u root -t qtap0
brctl addif br0 qtap0
ifconfig qtap0 up 0.0.0.0 promisc
sysctl -w net.ipv6.conf.all.proxy_ndp=1
ip -6 neigh add proxy 2a01:XXX:8461::212 dev eth0
Linea 45: Linea 61:
Sembra che ogni interfaccia qtapX sarà assegnata a una diversa macchina virtuale.
In questo caso si dovrà anche generare un diverso mac per ogni macchina.

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
Linea 49: Linea 67:
Installare il pacchetto qemu-kvm
Linea 57: Linea 76:

modificarlo tipo:
Linea 63: Linea 81:
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:
Linea 66: Linea 101:
vmbuilder kvm ubuntu --suite=oneiric --flavour=virtual --arch=amd64 --mirror=http://de.archive.ubuntu.com/ubuntu -o --libvirt=qemu:///system --ip=176.9.211.210 --gw=176.9.211.209 --part=vmbuilder.partition --templates=mytemplates --user=administrator --name=Administrator --pass=howtoforge --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid --firstboot=/var/lib/libvirt/images/ale/boot.sh --mem=3000 --hostname=ale --bridge=br0
/var/lib/libvirt/images/ale/ubuntu-kvm# qemu-img convert tmpXl3TL2.qcow
2 -O raw /dev/beers/ale
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
Linea 71: Linea 108:
=== Links 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"):
{{{
[...]
<serial type="pty">
    <source path="/dev/pts/4"/>
    <target port="1"/>
</serial>
}}}

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 ===

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 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"):

[...]
<serial type="pty">
    <source path="/dev/pts/4"/>
    <target port="1"/>
</serial>

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

guida marco

http://wiki.netgroup.uniroma2.it/doku.php?id=virtual_machine_creation_with_kvm_on_ubuntu_server_11.04