KVM

From PostgreSQL_wiki
Revision as of 09:45, 9 August 2012 by Martin (talk | contribs) (Installatie console)
Jump to: navigation, search

Installatie fysieke host

Installeer een kale machine met ruimte voor:

  • 8 Gb voor de fysieke machine, primary partition
  • 2 Gb swap, eerste logical partition op de extended partition
  • LVM op de tweede logical partition van de extended partition

Voor testuitvoer van het KVM gedeelte zie de uitvoer van tests na configuratiestappen in kvm test.

Prepareer LVM

Creeer het physical volume.

root@sauron:~# pvcreate /dev/sda6
 Physical volume "/dev/sda6" successfully created

en maak vervolens de volume group aan.

 root@sauron:~# vgcreate dev-kvm /dev/sda6

LVM snapshot logical volume

KVM maakt disk image aan op de LVM en daarbinnen partities. Om een partitie te mounten is een tussenstap nodig:

# kpartx -av /dev/dev-kvm/samba
add map dev--kvm-samba1 (253:17): 0 32112640 linear /dev/dev-kvm/samba 2048
add map dev--kvm-samba2 (253:18): 0 1435650 linear /dev/dev-kvm/samba 32116734
add map dev--kvm-samba5 : 0 1435648 linear 253:18 2
# mount -t ext3 /dev/mapper/dev--kvm-samba1 /mnt/dev-kvm/samba1/

Zie ook:

Debian

De installatie verloopt vanaf een USB-stick met een netinstall, installeer een kale machine van 4 Gb met een swap space van 2 Gb. De uitvoer van tests na configuratiestappen staat in kvm test . Voorbereiding virtuele machines:
Vervolgens als de machine draait:

udell-kvm:~# apt-get install kvm qemu lvm2 libvirt-bin virtinst bridge-utils virt-manager virt-clone virt-goodies virt-top

Ubuntu Server

De installatie verloopt via een .iso image van een CDRom, dus na de install is de volgende stap nodig voor zowel de host als de guests:

root@sauron:~# apt-get update && apt-get upgrade

De networkbridge voor KVM

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
  address 10.68.71.4
  netmask 255.255.255.224
  gateway 10.68.71.1
  bridge_ports eth0
  bridge_fd 9
  bridge_hello 2
  bridge_maxage 12
  bridge_stp off
udell-kvm:~# /etc/init.d/networking restart

Voeg toe aan /etc/modules

kvm
kvm-intel
udell-kvm:~# modprobe kvm kvm-intel

Inspectie dom0

Inspecteer de dom0 met:

root@sauron:~# virt-top

Zie kvm test.

Installatie domU

Prepareer een logical volume

Maak een (voorbeeld) logical partition aan op de gecreeerde volume group

 root@sauron:~# lvcreate -L 16G -n support dev-kvm

Zie kvm test voor testuitvoer.

Installatie console

De installatie verloopt middels vncviewer. Maak contact met de fysieke machine als de installatie op de fysieke machine is gestart. Let op: de -Y optie dient om grafisch weer te geven en het poortnummer is de poort waarop vnc voor de te installeren machines luistert.

martin@udell:~$ ssh -Y 192.168.1.201
Enter passphrase for key '/home/martin/.ssh/id_dsa': 
martin@sauron:~$ xvncviewer localhost:5901

VNC Viewer Free Edition 4.1.1 for X - built Apr  9 2010 18:41:55
Copyright (C) 2002-2005 RealVNC Ltd.
See http://www.realvnc.com for information on VNC.

Er verschijnt een grafisch venster, dat dienst doet als console. De installatie gaat hiervandaan verder. Soms verschijnt de volgende melding:

VNC:Rect too big

Start dan xvncviewer als volgt op:

xvnc4viewer -Autoselect=0 localhost:5900 &

Installatie Debian domU

De installatie van een virtuele machine verloopt op de Debian manier via een netinstall. virt-install haalt alle code, inclusief de netboot van de debian repository, in geval van Webhuis via een apt-cacher proxy vanwege de installatie van meerdere machines.

  • netinstall
  • generatie xml van de virtuele machine install
  • start van de install van de virtuele machine
  • voortzetting van de installatie via een vnc-console
  • generatie xml van de virtuele machine
  • start van de virtuele machine

Eerst zoekt virt-install de netinstall:

root@dom0-123:~# virt-install --connect qemu:///system -n cfengine3 -r 256 --vcpus=2 --disk path=/dev/dev-kvm/cfengine3 \
                              -l http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-amd64 os-type linux \
                              --os-variant debiansqueeze --accelerate --network=bridge:br1 --hvm --vnc --force --debug

De installatie met virt-install is vrij intelligent. Het draait om het vinden van de informatie om de installatie te starten. Na enige meldingen van de software die zijn weg zoekt in het archief vindt virt-install de voor de installatie belangrijke bestanden, het is zelfs een netinstall:

Wed, 26 Jan 2011 08:55:50 DEBUG    Fetching URI: http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/MANIFEST
Wed, 26 Jan 2011 08:55:50 DEBUG    Saved file to /var/lib/libvirt/boot/virtinst-MANIFEST.gBEjKl
Retrieving file MANIFEST...                                                                                                      | 3.3 kB     00:00 ... 
Wed, 26 Jan 2011 08:55:50 DEBUG    Detected a Debian distro
Wed, 26 Jan 2011 08:55:50 DEBUG    Fetching URI: http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux
Wed, 26 Jan 2011 08:56:02 DEBUG    Saved file to /var/lib/libvirt/boot/virtinst-linux.aW2jsK=======================-  ] 176 kB/s | 2.2 MB     00:00 ETA 
Retrieving file linux...                                                                                                         | 4.6 MB     00:11 ... 
Wed, 26 Jan 2011 08:56:02 DEBUG    Fetching URI: http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz
Wed, 26 Jan 2011 08:56:34 DEBUG    Saved file to /var/lib/libvirt/boot/virtinst-initrd.gz.724oyj=====================-] 210 kB/s | 6.4 MB     00:00 ETA 
Retrieving file initrd.gz...                                                                                                     |  13 MB     00:31 ... 

De xml van de virtuele machine install

Wed, 26 Jan 2011 08:56:34 DEBUG    Generated install XML: 
<domain type='kvm'>
  <name>cfengine3</name>
  <currentMemory>262144</currentMemory>
  <memory>262144</memory>
  <uuid>8c6c8c04-de68-eab9-fe18-e77b4b69b543</uuid>
  <os>
    <type arch='x86_64'>hvm</type>
    <kernel>/var/lib/libvirt/boot/virtinst-linux.aW2jsK</kernel>
    <initrd>/var/lib/libvirt/boot/virtinst-initrd.gz.724oyj</initrd>
    <cmdline>method=http://ftp.nl.debian.org/debian/dists/squeeze/main/installer-amd64</cmdline>
  </os>
  <features>
    <acpi/><apic/><pae/>
  </features>
  <clock offset="utc"/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>destroy</on_reboot>
  <on_crash>destroy</on_crash>
  <vcpu>2</vcpu>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='block' device='disk'>
      <driver name='qemu'/>
      <source dev='/dev/dev-kvm/cfengine3'/>
      <target dev='vda' bus='virtio'/>
    </disk>
    <interface type='bridge'>
      <source bridge='br1'/>
      <mac address='52:54:00:48:30:e6'/>
      <model type='virtio'/>
    </interface>
    <input type='tablet' bus='usb'/>
    <graphics type='vnc' port='-1' keymap='en-us'/>
    <console type='pty'/>
    <video>
      <model type='cirrus'/>
    </video>
  </devices>
</domain>

De xml van de virtuele machine

Creating domain...                                                                                                               |    0 B     00:00     
Wed, 26 Jan 2011 08:56:34 DEBUG    Started guest, looking to see if it is running
Wed, 26 Jan 2011 08:56:34 DEBUG    Launching console callback
Wed, 26 Jan 2011 08:56:34 DEBUG    Generated boot XML: 
<domain type='kvm'>
  <name>cfengine3</name>
  <currentMemory>262144</currentMemory>
  <memory>262144</memory>
  <uuid>8c6549c04-de48-e5b9-fe12-e7596869b543</uuid>
  <os>
    <type arch='x86_64'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/><apic/><pae/>
  </features>
  <clock offset="utc"/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <vcpu>2</vcpu>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='block' device='disk'>
      <driver name='qemu'/>
      <source dev='/dev/dev-kvm/cfengine3'/>
      <target dev='vda' bus='virtio'/>
    </disk>
    <interface type='bridge'>
      <source bridge='br1'/>
      <mac address='52:54:00:23:40:6e'/>
      <model type='virtio'/>
    </interface>
    <input type='tablet' bus='usb'/>
    <graphics type='vnc' port='-1' keymap='en-us'/>
    <console type='pty'/>
    <video>
      <model type='cirrus'/>
    </video>
  </devices>
</domain>

De installatie is gestart en virt-install heeft de melding het console niet te kunnen openen. virt-install geeft aan dat de rest van de installatie via een console.

Cannot open display: 
Run 'virt-viewer --help' to see a full list of available command line options
Wed, 26 Jan 2011 08:56:35 DEBUG    Removing /var/lib/libvirt/boot/virtinst-linux.aW2jsK
Wed, 26 Jan 2011 08:56:35 DEBUG    Removing /var/lib/libvirt/boot/virtinst-initrd.gz.724oyj
Wed, 26 Jan 2011 08:56:37 DEBUG    Domain state after install: 1
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.
root@dom0-148:~#

Openen van een console

Het openen van het console verloop via twee stappen.

  • Met de grafische optie inloggen op de host
  • vnc starten op de console
martin@dell:~$ ssh -Y 10.99.99.99
Enter passphrase for key '/home/martin/.ssh/key': 
Linux dom0-123 2.6.32-5-amd64 #1 SMP Wed Jan 12 03:40:32 UTC 2011 x86_64
Last login: Wed Jan 26 13:46:08 2011 from 10.68.71.149
martin@dom0-123:~$ xvnc4viewer localhost:5900

De vnc console is verre van ideaal, maar wel werkbaar en is tenslotte maar een enkele keer nodig. De machine funcitoneert pas na een handmatige start.

Installatie Ubuntu-server domU

De installatie van een virtuele Ubuntu-server domU verloopt middels een iso-image.

 root@sauron:~# virt-install --connect qemu:///system -n test01 -r 128 --vcpus=2 --disk path=/dev/dev-kvm/support \
                -c /var/lib/ubuntu-server-10.4.20100612.iso os-type linux --os-variant ubuntulucid --accelerate \
                --network=bridge:br0 --hvm --vnc --force --debug

Het nadeel van deze methode is dat het noodzakelijk is om onmiddelijk nadat de host is opgebracht een uprade uit te voeren.

root@sauron:~# apt-get update && apt-get upgrade

console virtuele machine

Een console vanaf de dom0 op een virtuele machine vereist op elke host configuratie instellingen en een eenmalig herstart of start van de geconfigureerde console.
Maak in de virtuele machine het bestand /etc/init/ttyS0.conf aan en voorzie het van de volgende inhoud:

# ttyS0 - getty
#
# This service maintains a getty on ttyS0 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -L 115200 ttyS0 xterm

Herstart de virtuele machine, of geef het volgende commando:

root@sauron:~# start ttyS0

Verbind daarna vanf de dom0 met:

root@sauron:~# virsh console <virtuele machine>

Geef nog een <enter> voor een login prompt als de virtuele console zonder login verschijnt.
Documentatie van Ubuntu: https://help.ubuntu.com/community/KVM/Access
Zie ook kvm test.

Reset root password

  • Start de kvm machine
  • Grub: esc om het boot proces te onderbreken
  • e voor edit van de machine
  • voeg aan het eind toe aan de linux regel init=/bin/bash
  • crtl x
  • in de machine mount -o remount,rw /
  • passwd voor een nieuw password
  • reboot

Weeggooien domU

Een domU verdwijnt met het commando:

root@sauron:~# virsh undefine <domU>

Cloneren domU

Het cloneren van een machine is op zich een eenvoudig proces, maar er is een voozorgsmaatregel noodzakelijk. Zet een hekje in het bestand /etc/udev/rules.d/70-persistent-net.rules voor de volgende regel:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:36:5e:11:af", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Let op, bij een reboot van de clone machine zet udev de regel er doorleuk weer achteraan. Start het cloneren met de opdracht:

root@sauron:~# virt-clone -o clone -n server-5 -m 52:54:00:54:1c:b4 --auto-clone -f /dev/dev-kvm/server-5 

Via vncviewer is het ip adres te achterhalen en is de login op dat adres mogelijk.

Praktische toepassing virt-clone

  • Maak voor LVM eerst het volume aan
  • Specificeer het volume bij het clone commando
  • Gebruik de --force optie bij herhaald genereren
  • Denk erom de gewraakte netwerk regel uit de udev configuratie te halen na elke boot van de cloneer machine

Terug naar: Webhuis bouwstenen