转自oschina的一篇回答,讲的简单易懂,原地址如下:http://www.oschina.net/question/1050447_156315。
1. qemu, libvirt, virt-manager的关系:qemu和KVM的关系,我在http://my.oschina.net/kelvinxupt/blog/265108这篇博客中有提到。libvirt是一个中间层专门用于管理虚拟化的函数库,将底层不同的虚拟化驱动如qemu+kvm, XEN等都用统一的接口封装。这样对用户而言,只需要知道libvirt的接口就能使用虚拟机,而不用关心底层的各种驱动的细节。virsh和virt-manager还有kimchi等软件都是调用libvirt来实现虚拟机的管理。用户通常是直接使用上面这三个软件的。
2. qemu-img通常和qemu-system-x86等命令配合使用,用来创建和管理qemu的镜像文件。kvm是一个内核模块,虚拟了一个设备/dev/kvm,利用该文件的ioctl来提供接口。qemu就是调用了这些接口来使用kvm。用户不会直接和kvm打交道,只需要在执行qemu的时候加入--enable-kvm就可以使用kvm来加速了。
3. 个人觉得kvm的学习路线从上往下学比较容易些,可以从virsh,virt-manager,libvirt的使用入手,然后学习qemu,再到内核的kvm。
4. 生产环境中为了提高资源的利用率,会专门做一个专注于虚拟化的发行版。该发行版至包含了虚拟化的软件包如qemu,libvirt,kernel以及一些必要的软件包,及其精简。如redhat的rhev-h。然后将该发行版直接安装在裸机上,用作VMM。