关于我们常说的虚拟化和半虚拟化
本次我们知道了I/O虚拟化也存在半虚拟化、全虚拟化、硬件辅助虚拟化。但是我们常常听到某某Hypervisor产品是全虚拟化还是半虚拟化,但个人认为FV和PV的更主要区别是在于CPU的虚拟化技术 。
CPU的FV/PV和l/O 的FV/PV并不是紧密联系的,例如早期的VMware ESX使用CPU FV +I/O FV,早期的Xen使用CPU PV +I/O PV,但在HVM技术出现之后,其各自主流结构已经变成VMware ESXi使用VT-x+I/O FV, Xen使用VT-x+I/O PV了,所以目前的Xen也都没有必须使用修改过内核的Guest OS的限制了。
因此当我们说一项技术是全虚拟化还是半虚拟化,应该关注的是它对于CPU、内存、I/O虚拟化是如何实现的。
KVM虚拟化
这里以KVM为例,CPU、内存虚拟化由KVM实现,I/O虚拟化由QEMU实现。网上公开的资料称KVM是硬件辅助的全虚拟化方式。
- CPU虚拟化:基于硬件辅助的全虚拟化。
- 内存虚拟化:硬件辅助的EPT页表虚拟化。
- I/O虚拟化:默认使用QEMU软件实现全虚拟化,也支持Virtio的半虚拟化方式,也支持硬件直通和SR-IOV的方式。
接下来会详细介绍KVM虚拟化架构。
评论区