KVM

Aus xinux.net
Zur Navigation springen Zur Suche springen

Installation

Vorbereitung

Testen ob VT Unterstützung der CPU vorhanden ist

egrep -c '(vmx|svm)' /proc/cpuinfo

0 bedeutet keine Unterstützung 1 (oder mehr) Unterstützung vorhanden

Basis Pakete

 apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils virtinst ssh-askpass

Damit libvirt-bin automatisch start muss man in der Datei /etc/default/libvirt-bin die Option start_libvirtd auf "yes" setzen.

vi /etc/default/libvirt-bin
start_libvirtd="yes"


Netzwerk mit Bridgefunktion

  • apt-get remove resolvconf
  • /etc/network/interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto lan
iface lan inet static
       address 192.168.240.101
       netmask 255.255.240.0
       gateway 192.168.240.100
       bridge_ports eth0
       bridge_stp off
       bridge_fd 1
       bridge_maxwait 12
  • /etc/resolv.conf
nameserver 192.168.240.21
search xinux.org


  • reboot

Verifizieren der Installation

virsh -c qemu:///system list
Id Name                 Status
----------------------------------

Installation des Virtmanagers(GUI)

apt-get install virt-manager



Fedora KVM

Spice

Domain-Installation

virt-install --connect qemu:///system --name orion --ram 1024 --disk path=/dev/data/orion \
--cdrom /isos/ubuntu-10.04-server-amd64.iso --vnc --noautoconsole  --os-type linux --accelerate --network=bridge:br0
name Name der Domain
disk Diese Images werden in die Domain eingebunden. Es können mehrere Disks eingebunden werden, sowie weitere Optionen getrennt mit Leerzeichen gemacht werden.
ram Zu Verfügung stehender Arbeitspeicher der Domain
os-type linux, windows, solaris etc.
os-variant ubuntukarmic, winxp etc.
hvm Gebraucht full virtualization.
accelerate Benutze kvm oder KQEMU, wenn vorhanden.
import Die Installation ist bereits im Disk-Image enthalten.
vnc Aktiviert VNC-Display und öffnete einen beliebigen Port >5000, falls nicht --vncport angegeben ist.
vncport Setzt den Port für VNC fest.

Handling

This command outputs the guest's XML configuration file to standard out (stdout). 
You can save the data by piping the output to a file. An example of piping the output to a file called guest.xml:
virsh dumpxml GuestID > guest.xml


Migration zu neuem Host

virsh migrate --live <GuestName> <DestinationURL>

Beispiel:

# virsh migrate --live galactica qemu+ssh://test2.example.com/system

Autostart

virsh autostart <domain>
virsh autostart <domain> --disable

An/Aus

Connecten auf Hypervisor

virsh -c qemu+ssh://SERVER/system

In Konsole eingeben

Zum starten:

start VM

Zum virtuellen Stecker rausziehn:

destroy VM

Nach Installation von acpid auf VM

Normales herunterfahren:

shutdown VM

Configure a Serial Console in the Guest

Enable on the VM

cat /etc/init/ttyS0.conf
# 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

Run the following command to initiate the Serial Console (or restart the VM):

sudo start ttyS0

Connect on Host to VM

console VM

00:50:56:00:31:f9

Virtuelle MACAdresse vergeben

gaius=KVM server

virsh console XXXXXXX
VM:     cp /etc/udev/rules./70-persistent.net(cd).rules 70-persistent.net(cd).rules.orig
VM:     herunterfahren...
gaius:  vi /etc/libvirt/qemu/XXXXXX.xml

-> MAC eintragen

gaius:     virsh define XXXXXXXX
gaius:     virsh start XXXXXXXX

-> TESTEN

Images umwandeln


img zu qcow2

qemu-img convert -f raw -O qcow2 input.img output.qcow2

qcow2 zu raw

qemu-img convert -f qcow2 -O raw input.img output.raw

raw zu vmdk

qemu-img convert -f raw -O vmdk input.img output.raw

4 unterstützten VirtBox-Typen:

- .vdi [ VirtualBox Disk Image ]

- .vmdk [ Virtual Machine Disk ]

- .vhd [ Virtual Hard Disk ]

- .hhd [ Parallels Hard Disk ]


das ist falsch .... wer hat es geschrieben?

umwandeln VirtB. zu KVM

qemu-img convert "source".vmdk -O qcow2 "target".qemu
qemu-img convert "source".hhd -O qcow2 "target".qemu
qemu-img convert "source".vhd -O qcow2 "target".qemu
qemu-img convert "source".vdi -O qcow2 "target".qemu

RAW (for VirtualBox)

qemu-img convert "source".vmdk -O raw "target".img

umwandeln VirtB. zu VirtB. (vdi-vmdk)

VBoxManage clonehd "source".vdi "target".vmdk --format VMDK

LVM in VMDK umwandeln

lvcreate -L592M -s -n myvolume /dev/myvg/myvolume_snapshot
qemu-img convert /dev/myvg/myvolume_snapshot -O vmdk myvolume.vmdk


RAW Image mounten

Ein Raw Image ist ein einfaches Abbild einer Festplatte. Daher lässt es sich auch relativ leicht und ohne größere Umwege einhängen.

losetup /dev/loop0 foo.img
kpartx -av /dev/loop0
mount /dev/mapper/loop0p1 /mnt
[arbeiten durchführen...]
unmount /mnt
kpartx -dv /dev/loop0
losetup -d /dev/loop0

QCOW2 Image mounten

Ein dynamisches QCOW2 Image kann im System nicht mehr einfach so gemounted werden. Dafür kann man einen Umweg über NBD (Network Block Device) nehmen. Damit wird das gewünschte Image als Network Block Device gestartet und eingehängt.

modprobe nbd max_part=8
qemu-nbd --connect=/dev/nbd0 disk.img
mount /dev/nbd0p1 /mnt

disconnecten

qemu-nbd --d /dev/nbd0

snapshot and backup

list

zerkling:~# virsh list 
 Id    Name                           State
----------------------------------------------------
 13    nog                            running
 16    crass                          running

snapshot list

virsh snapshot-list crass
 Name                 Creation Time             State
------------------------------------------------------------

show active image

grep "source file" /etc/libvirt/qemu/crass.xml 
     source file='/b-one/kvm/crass.img'

make snapshot

virsh snapshot-create-as crass 1  "crass-1" --disk-only --atomic

show active image

grep "source file" /etc/libvirt/qemu/crass.xml 
     source file='/b-one/kvm/crass.1'

blockpull image

virsh blockpull --wait --domain crass /b-one/kvm/crass.1

snapshot list

virsh snapshot-list crass
Name                 Creation Time             State
------------------------------------------------------------
1                    2013-03-21 23:50:03 +0100 disk-snapshot

delete snapshot

virsh snapshot-delete crass 1 --metadata
Domain snapshot 1 deleted

backup image

cp  /b-one/kvm/crass.img /bucket-save/

Snapshot

Weitere Infos

Links


snapshot

http://kashyapc.wordpress.com/2013/01/22/live-backup-with-external-disk-snapshots-and-libvirts-blockpull/ Huang Wenlong 2011-09-26 03:14:09 EDT

Verify it with libvirt-0.9.4-13.el6.x86_64


1. define a persistent domain named "snap"with qcow2 disks 2. create a snapshot for domain snap

  1. virsh snapshot-create snap

3. virsh # snapshot-list snap

Name                 Creation Time             State

1317020538           2011-09-26 15:02:18 +0800 shutoff

4.virsh # undefine snap error: Failed to undefine domain snap error: Requested operation is not valid: cannot delete inactive domain with 1 snapshots

5. virsh undefine --snapshots-metadata snap Domain snap has been undefined

4. check snapshot metadata (no metadata)

  1. ls /var/lib/libvirt/qemu/snapshot/snap

5. define a new domain with the same name, but different UUID 6. check snapshot for domain test:

  1. virsh snapshot-list snap
Name                 Creation Time             State

https://bugzilla.redhat.com/show_bug.cgi?id=735457

Links

qemu-monitor

http://blog.vmsplice.net/2011/03/how-to-access-qemu-monitor-through.html

Links