Stikkordarkiv for virtuallisering

Sette opp kvm for Ubuntu 10.04

Kvm er det foretrukne verktøyet for virtualisering på Ubuntu. Med unntak av adhoc virtualisering eller for virtualisering på arbeidsstasjonanar der i hvertfall eg foretrekk VirtualBox. Virtualisering med kvm på ubuntu er ikkje så veldig vanskeleg. Her er ei lita rettleiing på korleis det kan settast opp. Dersom du er usikker på om cpuen din støtter virtualisering kan du sjekke dette med denne komandoen:

egrep '(vmx|svm)' --color=always /proc/cpuinfo

Installasjon av kvm

Installer nødvendige pakker:

sudo apt-get install kvm libvirt-bin bridge-utils

* kvm er kvm :-).
* libvirt-bin er administrasjonsverktøy for kvm.
* bridge-utils er for å sette opp nettverksbridge mellom dei virtuelle maskinene og det fysiske nettverkskortet.

Dersom du skal bruke ein vanleg brukar til å administrere kvm må den leggast til i libvirtd gruppa:

sudo usermod -G libvirtd -a <brukar>

Logg ut og inn igjen og kjør deretter følgande kommando for å sjå at kvm er riktig satt opp så lang:

$ virsh -c qemu:///system list
 Id Name                 State
----------------------------------

$

Dersom du får noko feilmeldinger her bør du fiksa det. Sjekk at du har skrivetilgang til /var/run/libvirt/libvirt-sock.

Oppsett av bridge

Rediger /etc/network/interfaces så den ser ut som under. Du må sjølvsagt bytte ut iper og slikt med det som passer for ditt nettverk.

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
 address 192.168.10.10
 network 192.168.10.0
 netmask 255.255.255.0
 broadcast 192.168.10.255
 gateway 192.168.10.1
 bridge_ports eth0
 bridge_stp off
 bridge_fd 0
 bridge_maxwait 0

Då er det bare å restarte nettverksinterfacene. Dersom du ikkje sitt lokalt på maskina er det bare å krysse fingrene og håpe du har har gjort alt riktig.

sudo /etc/init.d/networking restart

Litt til slutt…

Det finnes fine verktøy for å sette opp nye virtuelle maskiner (f.eks. ubuntu-vm-builder). Eg er imidlertid så sær(?) at eg foretrekk å gjera det manuelt slik eg har beskrive det i ei tidlegare posting.

Opprette ny virtuell maskin i kvm

Eg kjøyrer kvm på Ubuntu-serveren min heime. For dei uinnvidde kan kvm (Kernel-based Virtual Machine) forklarast som ein måte å kjøre fleire virtuelle datamaskiner på ei datamaskin. Det finnes masse dokumentasjon på korleis du set det opp, så det har eg ikkje tenkt å skriva noko om no. Diverre er det så sjeldan eg oppretter nye virtuelle maskiner at eg er litt usikker på detaljane kvar gang eg gjer det og det er sikkert fleire enn meg som slit med det. Difor har eg laga ein liten «howto» på korleis ein kan gjere det på den manuelle måten med libvirt og virsh. Det er også ein enkel forklaring på nokre av parameterane. Den forutsett litt kunskap om  kvm, virsh og xml (og sjølvsagt Linux).

Det er fleire måter å opprette diskfiler på. Her er eit par eksempel:

qemu-img create -f qcow2 /kvm/foobar/disk0.qcow2 32G
dd if=/dev/zero of=/kvm/foobar/disk1.img count=0 seek=$[32*1024*1024*2]

Opprett ei xml fil med beskrivelse av den virtuell maskina. Fila lagres som foobar.xml:

<domain type='kvm'>
  <name>foobar</name>
  <uuid>ec5293c1-9949-44d8-b1d0-3c8dd7336e63</uuid>
  <memory>2097152</memory>
  <currentMemory>2097152</currentMemory>
  <vcpu>2</vcpu>
  <os>
    <type arch='x86_64' machine='pc-0.11'>hvm</type>
    <boot dev='cdrom'/>
  </os>
  <features>
    <acpi/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='cdrom'>
      <source file='/kvm/foobar/debian-504-amd64-netinst.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
    </disk>
    <disk type='file' device='disk'>
      <source file='/kvm/foobar/disk0.qcow2'/>
      <target dev='vda' bus='virtio'/>
    </disk>
    <disk type='file' device='disk'>
      <source file='/kvm/foobar/disk1.qcow2'/>
      <target dev='vdb' bus='virtio'/>
    </disk>
    <interface type='bridge'>
      <mac address='52:54:de:ad:be:ef'/>
      <source bridge='br0'/>
      <model type='virtio'/>
    </interface>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5920' autoport='no' listen='192.168.10.50'/>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
    </video>
  </devices>
</domain>

Denne xml fila må sjølvsagt tilpassas dine behov. Det meste er sjølvforklarande, men det er nokre verdiar som alltid bør endrast:
* <name>: namnet på vm-en.
* <uuid>: bruk kommandoen uuidgen for å generere ein unik id.
* <source>: sti og filnamn til diskfila.
* <mac address>: denne må være unik. Heximal (0-9,a-f).
* <graphics>: port=’unik port på 59xx’, listen=’ip til serveren kvm kjører på’.

Då må fila lesast inn i med vrish. Kjøyr kommandoen virsh define foobar.xml og start med virsh start foobar. Då er det bare å ta favoritt vnc-klient, logge seg på og starte installasjonen. Når operativsystemet er ferdig installert må <boot dev=’cdrom’> endrast til <boot dev=’hd’> for at den skal boote frå diskimaget. Dette kan enklart gjerast ved å kjøre virsh edit foobar, gjere nødvendige endringer. Restart vm’en.