KVM是linux的一个内核模块,提供基于硬件辅助的虚拟化,可以极大的提高虚拟机的性能。
结合KVM,再由QEMU实现I/O虚拟化,虚拟机可以模拟Intel and AMD (x86 and x86_64), PPC 440, PPC 970, S/390, ARM (Cortex A15, AArch64), MIPS32多种架构,并且达到近乎于物理机的性能效果。
在此前提下,QEMU基于二进制代码翻译的软件完全虚拟化就显得性能低下,毫无用武之地了,但这一模块依旧在不断更新维护着。
我想问基于软件的完全虚拟化存在的意义何在呢?或者说还存在任何应用场景吗?
欢迎大家讨论~
(1)不同硬件架构的虚拟化,比如在小型机上跑PC的软件,或者在手机上跑PC软件,等等。总之cpu指令集不同,就要用qemu
(2)彻底的硬件仿真,这个对于调试开发比较有帮助,可以消除硬件的差异。一些软件比如说有反虚拟机监测的逻辑,用一般的虚拟机没法正确测试调试的,可以用
(3)虚拟机嵌套,在虚拟机里再开虚拟机,比如说用单个计算机模拟私有云的部署,用qemu会好一些。
(1)您的意思是,如使用kvm需要Intel-VT或AMD-V等机制来支撑,而小型机没有这些硬件辅助的支持,所以需要使用qemu。
但性能相对较弱的小型机有虚拟化的必要吗?
(2)这一点您说的是软件模拟可实现更为彻底的硬件仿真吗?
(3)KVM也支持虚拟机的嵌套,只需打开相应配置项即可,具体查询方法如下cat /sys/module/kvm_intel/parameters/nested
,
具体效果没有实际试过,但理论上kvm更好。