On Fri, Nov 11, 2011 at 07:57:06PM +0800, Osier Yang wrote:
Basically, the drivers is implemented by using kvm tool binary
currently, (see ./kvm help for more info).
Current implementation supports define/undefine, start/destroy/,
suspend/resume, connect to guest console via "virsh console",
and balloon memory with with "virsh setmem" (using ./kvm balloon
command). Also as it supports cgroup controllers "cpuacct", and
"memory", so some other commands like "schedinfo",
"memtune" can
also work. Some other commands such as "domid", "domname",
"dumpxml"
,"autostart", etc. are supported, as the driver is designed
as a "stateful" driver, those APIs just need to talk with libvirtd
simply.
As Native Linux KVM Tool is designed for both non-root and root users,
the driver is designed just like QEMU, supports two modes of the
connection:
kvmtool:///system
kvmtool+unix:///system
kvmtool:///session
kvmtool+unix:///session
An example of the domain XML (all the XMLs supported currently are
listed):
% virsh -c kvm:///system dumpxml kvm_test
<domain type='kvmtool'>
<name>kvm_test</name>
<uuid>88bf38f1-b6ab-cfa6-ab53-4b4c0993d894</uuid>
<memory>524288</memory>
<currentMemory>524288</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch='x86_64'>hvm</type>
<kernel>/boot/bzImage</kernel>
<boot dev='hd'/>
</os>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/kvmtool</emulator>
<disk type='file' device='disk'>
<source file='/var/lib/libvirt/images/linux-0.2.img'/>
<target dev='vda' bus='virtio'/>
</disk>
<filesystem type='mount' accessmode='passthrough'>
<source dir='/tmp'/>
<target dir='/mnt'/>
</filesystem>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<memballoon model='virtio'/>
</devices>
</domain>
---
cfg.mk | 1 +
daemon/Makefile.am | 4 +
daemon/libvirtd.c | 7 +
po/POTFILES.in | 2 +
src/Makefile.am | 36 +-
src/kvmtool/kvmtool_conf.c | 130 ++
src/kvmtool/kvmtool_conf.h | 66 +
src/kvmtool/kvmtool_driver.c | 3079 ++++++++++++++++++++++++++++++++++++++++++
src/kvmtool/kvmtool_driver.h | 29 +
My main suggestion here would be to split up the kvmtool_driver.c
file into 3 parts as we did with the QEMU driver.
kvmtool_driver.c -> Basic libvirt API glue
kvmtool_command.c -> ARGV generation
kvmtool_process.c -> KVMtool process start/stop/autostart/autodestroy
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|