女主宣言
嵌套虚拟化就是虚拟化环境里再次进行虚拟化,简单的说就是虚拟机里运行虚拟机,听起来有点递归的感觉。那是不是可以无限嵌套下去呢?递归有终结条件,否则无限递归下去资源耗尽,嵌套虚拟化嵌套层次越深复杂度越高性能也越差越容易出问题。本文讲述了嵌套虚拟化的一次踩坑经历,希望对遇到类似问题的同学有所帮助。
PS:丰富的一线技术、多元化的表现形式,尽在“360云计算”,点关注哦!
1
引言
公司很多业务部门有这样的需求:一台windows虚拟机运行android模拟器,qemu嵌套qemu,会出现android模拟器图形窗口不显示一直黑屏。这次要说的问题是kvm上运行windows 10虚拟机,windows 10里通过vmware workstation pro再运行linux虚拟机。对于一名linux开发人员来说,windows不开源,没资料没代码,处理windows问题非常有挑战性。
2
小坑
屋漏偏逢连夜雨,怕什么来什么,vmware workstation一打开就报错。
host上kvm是一种hypervisor,guest里vmware workstation也是一种hypervisor,windows hyper-v也是一种hypervisor,看样子是vmware workstation和windows hyper-v冲突了,在windows 10里禁用hyper-v role还是无法解决问题。
虚拟化刚开始是全翻译的,hypervisor对guest的指令一条条做翻译,guest是不知道自己运行在虚拟机里的,这样性能是很差的。
硬件厂商实现了一些硬件加速的虚拟化方案,典型的如intel的vt-x技术,vt-x实现了non-roo