For best performance, use raw or qcow2 image formats.
参考: Stack Overflow for Teams Difference between KVM and QEMU
Qemu:
qemu是一个和vmware,virtualbox同类的竞争产品,其主要优势就是可移植。比如在PPC mac上运行MIPS代码,在X86 PC运行ARM代码。核心是重编译器将二进制机器代码从一种芯片架构翻译成另一种芯片架构。
另外qumu还可以虚拟磁盘,网络,VCA ,PCI, USB,并行/串行端口等。
KVM:
The main parts of KVM are two loadable kernel modules,
named , which provides the main virtualization functionality, and a second
kernel module that is processor specific, and for both
main CPU vendors.
KVM是可与Qemu协作加速虚拟化性能的一种优化技术。Qemu主要聚焦于硬件仿真和可移植性,而KVM则专注于通过开发kvm内核模块,承担qemu的部分职责,优化qemu原有虚拟化方式带来的不必要的性能损耗。
简单来说,qemu可以单独工作,当单独工作时,qemu会仿真包括cpu,内存在内的所有硬件设备。当和kvm协作工作时,
kvm会充当cpu和内存的代理,那样vm访问cpu不会走qemu的程序而是走kvm程序。qemu承担剩余的比如硬盘,总线等设备的仿真。
实现原理: KVM通过将CPU设置成guest模式,guest模式不能执行ring 0指令(ring 0机器代码可以做任何事情,linux 内核使用ring 0指令,用户代码使用ring 3指令。相当于环越大,使用计算机硬件的权限约束越大),执行ring 0代码需要切换到VMM(即虚拟化hypervisor)
kvm-qemu和直接使用qemu一样,只不过性能更好。按照老的流程,分配内存,加载代码,只不过代码不会重新编译,而是生成一个线程。
线程调用kvm模块将cpu切换guest模式,在执行高权限指令时,将切换至kvm进程。
使用这种方式好的一点在于:生成的线程是posix线程,你可以使用一般的linux工具去管理。比如一个vm有4个核,kvm-qemu会创建4和线程。每个线程会调用kvm内核模块去执行代码。
一般我们使用的都是windows,下面我将介绍如何在windows 10创建一个centos虚拟机(使用qemu)
1. 下载并安装qemu
下载链接在qemu官网上:https://www.qemu.org/download/#windows
安装完了之后你需要把qemu的安装路径放到环境变量PATH里面。
qemu的安装目录里有qemu-system-*代表的是芯片架构,如果你的芯片是x86的,那么就用
2. 开启windows监视平台功能
这个可能和你virtualbox冲突,用virtualbox的时候把他关掉。
然后勾选其中:
3. 开启windows监视平台功能
打开powershell,创建一个镜像。
然后下载一个centos.iso镜像:
这里注意把iso的路径和qcow2镜像名字换成你的
然后就可以看到centos的安装界面,一路next就完事了。然后默认这种情况,你的主机和虚拟机网络是不互通的。它网络结构什么样我也不清楚。
关于联网:
虚拟机也能联网,就是网速慢点。修改的,重启网络就可以联网了。
关于第二次启动:
因为启动的时候,iso已经写入到qcow2了,那么就把iso相关参数取消掉就可以了。