5136
Commento:
|
← Versione 31 del 2012-10-15 23:12:44 ⇥
6130
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 14: | Linea 14: |
Ricordiamoci di modificare /etc/fstab per commentare la linea in cui monta /data, altrimenti la macchina non riparte!!! | |
Linea 17: | Linea 18: |
L'idea è quella di lasciare eth0 così com'è ed aggiungere delle tap. Ogni tap è su un bridge diverso. Ogni bridge è dato in pasto a una macchina kvm. Questa configurazione è stata copiata da quella "ufficiale" di Hetzner: http://wiki.hetzner.de/index.php/KVM |
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. |
Linea 20: | Linea 22: |
Essendo la subnet assegnataci 176.9.211.208/29 abbiamo: | Modifichiamo /etc/network/interfaces aggiungendo sotto alla sezione di eth0, questa interfaccia di bridge: |
Linea 22: | Linea 24: |
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 |
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 28: | Linea 41: |
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. MIGLIORARE, la parte di rete non si è ben capita! |
|
Linea 34: | Linea 45: |
host 176.9.211.209 | |
Linea 39: | Linea 51: |
==== IPv6 ==== Ci è stata assegnata 2a01:4f8:150:8461:: / 64 Abbiamo configurato ipv6 sulla macchina host così: |
== 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 43: | Linea 58: |
ip -6 a add 2a01:4f8:150:8461::1/59 dev eth0 ip route add default via 2a01:4f8:150:8460::1 |
sysctl -w net.ipv6.conf.all.proxy_ndp=1 ip -6 neigh add proxy 2a01:XXX:8461::212 dev eth0 |
Linea 46: | Linea 61: |
dove l'indirizzo del gw ce lo siamo trovato col primo indirizzo disponibile della /59 (questa cosa su hetzner non è documentata o è documentata in tedesco). | 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 e python-vm-builder | |
Linea 68: | Linea 87: |
# This script will run the first time the virtual machine boots # It is ran as root. |
|
Linea 71: | Linea 88: |
# Expire the user account passwd -e administrator |
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 |
Linea 74: | Linea 94: |
# Install openssh-server apt-get update apt-get install -qqy --force-yes openssh-server |
|
Linea 81: | Linea 98: |
{{{ 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 }}} con questo comando abbiamo creato un file tipo ''/var/lib/libvirt/images/ale/ubuntu-kvm/tmpXl3TL2.qcow2'' contenente l'immagine della macchina. A questo punto dobbiamo copiarla sulla nostra partizione LVM che abbiamo creato in precedenza: |
|
Linea 88: | Linea 101: |
cd /var/lib/libvirt/images/ale/ubuntu-kvm qemu-img convert tmpXl3TL2.qcow2 -O raw /dev/beers/ale }}} |
cd /var/lib/libvirt/images/ale/ |
Linea 92: | Linea 103: |
a questo punto a possiamo rimuovere il file di immagine: {{{ rm tmpXl3TL2.qcow2 |
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 102: | Linea 113: |
modificandolo per dirgli che la nostra macchina non parte più da un file ma da una partizione LVM: | aggiungendo la parte per avere la console seriale (dentro il blocco xml "devices"): |
Linea 105: | Linea 116: |
<disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/dev/vg0/vm5'/> <target dev='hda' bus='ide'/> <address type='drive' controller='0' bus='0' unit='0'/> </disk> [...] }}} ricarichiamo le impostazioni e facciamo partire la macchina: {{{ virsh --connect qemu:///system define /etc/libvirt/qemu/ale.xml start ale |
<serial type="pty"> <source path="/dev/pts/4"/> <target port="1"/> </serial> |
Linea 120: | Linea 122: |
Se tutto va bene possiamo ora connetterci alla macchina virtuale come administrator e password "howtoforge". | ricarichiamo le impostazioni e facciamo partire la macchina lanciando il comando "virsh" e scrivendo sulla shell di virsh "start ale". |
Linea 122: | Linea 124: |
=== Links | 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 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"):
[...] <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
guida marco