kvm qemu libvirt的区别和联系
在所谓的kvm技术中,应用到的其实有2个东西:qemu+kvm
kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备;
qemu是模拟IO设备(网卡,磁盘),kvm加上qemu之后就能实现真正意义上服务器虚拟化。
因为用到了上面两个东西,所以一般都称之为qemu-kvm。
libvirt则是调用kvm虚拟化技术的接口用于管理的,用libvirt管理方便,直接用qemu-kvm的接口太繁琐。

一个典型的KVM安装包括以下部件:


一个管理虚拟硬件的设备驱动,这个驱动通过一个字符设备/dev/kvm陈列它的功能
一个模拟硬件的用户空间部件,目前,这在用户空间处理,它是一个稍微改动过的QEMU进程。

 

Run guest VM with following command:

$ qemu-system-x86_64 -enable-kvm -cpu host

and check if vmx flag is present:

$ egrep --color=auto 'vmx|svm' /proc/cpuinfo

一些实例

qemu-system-x86_64 -enable-kvm -hda ubuntu_p_w_picpaths/disk32.img -hdb ubuntu_p_w_picpaths/my-seed32.img -smp 1 -cpu host -nographic
qemu-system-x86_64 -enable-kvm -hda IncludeOS_tests_v3.1.1-proto-11-gfe06609-dirty.img -smp 1 -cpu host -device virtio-net,netdev=net0,mac=c0:01:0a:00:00:0a -netdev tap,id=net0 -m 50 -nographic

http://ec2-52-88-236-63.us-west-2.compute.amazonaws.com/?p=94

注1: QEMU 是一种处理器模拟器,依赖于动态二进制翻译机制,在易于移植至新的主机CPU架构的同时,还要获得合理的速度响应。除提供CPU模拟之外,它还提供了一系 列设备模型,允许它运行多种未经修改的客户操作系统;因此QEMU可以被看做一个宿主虚拟机监控软件。它还提供了加速模式,以支持(供kernel code的)二进制翻译和原生执行(供user code)的混合方式,这与VMware Workstation和Microsoft VirtualPC相同。
QEMU 也可以用作纯用户级处理的CPU模拟,在这种运作模式下,它类似于Valgrind。
QEMU有一个特有的可移植×××,虚拟机可以运行在任何PC之上,即使用户只有有限的权限,而且没有管理员访问权限也没有关系,这让“USB优盘上的PC”这一概念变得可行。也有类似的应用,比如MojoPac,但是它们需要管理员权限才能运行。
注2: KVM,Kernel-based Virtual machine 。KVM是一种Linux下的kernel虚拟化基础结构,它自身无法进行任何模拟。需要用户空间的程序使用/dev/kvm接口来设置客户虚拟机的地址空间,像其输入I/O,并将其视频显示映射至主机。QEMU自0.10.0之后可以使用KVM。