维塔斯科技

 找回密码
 立即注册
查看: 2546|回复: 15
打印 上一主题 下一主题

VMware Workstation嵌套(Nested)虚拟化 Hyper-V运行OpenWRT x64示例

[复制链接]

该用户从未签到

56

主题

436

帖子

946

积分

高级会员

Rank: 4

积分
946
跳转到指定楼层
楼主
发表于 2016-3-29 20:27:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
背景
众所周知,一般(默认)情况下,几乎所有的虚拟化技术都不可以共存或者嵌套,例如同一个Windows Server不可以同时开启Hyper-V角色并安装VMware Workstation;
类似的,也不可以在ESXi虚拟机里面再开启Hyper-V角色并运行Hyper-V虚拟机。
不过,这仅仅是一般情况下。
实际上,包括但不限于VMware,还是提供了嵌套虚拟化的方法的。

什么是嵌套虚拟化?
嵌套虚拟化英文叫做“Nested virtualization”,Wikipedia链接在这里https://en.wikipedia.org/wiki/Virtualization#NESTED。
例如物理宿主是Windows 7,安装VMware Workstation,然后创建Windows Server 2008 R2 VMware虚拟机,此时是一般常说的虚拟化;
如果再将这个Windows Server虚拟机的Hyper-V角色激活,并安装一个OpenWRT x64 Hyper-V虚拟机,此时就是嵌套(Nested)虚拟化了。
如果您需要ESXi嵌套Hyper-V的方法,请google搜索“esxi nested hyper-v”,当然也可以举一反三搜索其他的虚拟化嵌套技术。

嵌套虚拟化有什么用?
不可以用于生产环境,微软、VMware以及Wikipedia上均有类似的提醒;
用于测试还是不错的,比如只有一个ESXi宿主,但是需要测试Hyper-V的虚拟化。

嵌套虚拟化的性能如何?
取决于硬件、软件的性能及用途等因素,性能不会好,具体有多差要看具体情况,作为测试还是没问题的。

嵌套虚拟化需要CPU的什么特性?
EPT(Intel VT-x with Extended Page Tables)是必须的;
VT-d不是必须的;
如果需要嵌套64位虚拟机,则VT-x是必须;
如果没有VT-x,只能嵌套32位虚拟机,无法嵌套64位虚拟机。

示例:
物理宿主:i7-4770T,开启VT-x、VT-d及EPT,Windows 7 x64 Enterprise;
虚拟化:VMware Workstation 11;
虚拟化宿主:VMware虚拟机 Windows Server 2008 R2;
嵌套虚拟化:Hyper-V;
嵌套虚拟机:OpenWRT x64软路由。

步骤:
(1)确保BIOS中开启VT-x及EPT。
如果不确定自己的CPU是否支持相应的特性,可以到Intel的ARK搜索CPU型号并参看其显示的CPU特性。链接在这里,http://ark.intel.com/。

(2)在VMware Workstation中创建Windows Server 2008 R2虚拟机,
创建时Virtual Machine Settings->Opentions->Guest operating system->Version选择“Hyper-V (unsupported)”,见截图:



(3)Virtual Machine Settings->Hardware->Processors->Virtualization engine中Preferred mode选择Intel VT-x/EPT or AMD-V/RVI,并且勾选Virtualize Intel VT-x/EPT or AMD-V/RVI,见截图:



(4)启动Windows Server 2008 R2虚拟机,激活Hyper-V角色。

(5)在Hyper-V中创建OpenWRT虚拟机。

(6)启动OpenWRT虚拟机,见截图:






回复

使用道具 举报

该用户从未签到

68

主题

392

帖子

870

积分

高级会员

Rank: 4

积分
870
沙发
发表于 2016-3-29 20:27:51 | 只看该作者
有趣的教學
但只適合測試

回复 支持 反对

使用道具 举报

该用户从未签到

55

主题

369

帖子

809

积分

高级会员

Rank: 4

积分
809
板凳
发表于 2016-3-29 20:27:51 | 只看该作者

这是网络设置问题,请参看TCP/IP教程和微软的Hyper-V手册。

回复 支持 反对

使用道具 举报

该用户从未签到

68

主题

432

帖子

950

积分

高级会员

Rank: 4

积分
950
地板
发表于 2016-3-29 20:27:51 | 只看该作者
T大,我爱你~教du会hai好多东西,哈哈哈哈哈,谢谢你~

回复 支持 反对

使用道具 举报

该用户从未签到

55

主题

445

帖子

963

积分

高级会员

Rank: 4

积分
963
5#
发表于 2016-3-29 20:27:52 | 只看该作者
跪拜高手。。。。昨晚刚刚开始搭2012r2。。。

回复 支持 反对

使用道具 举报

该用户从未签到

52

主题

403

帖子

876

积分

高级会员

Rank: 4

积分
876
6#
发表于 2016-3-29 20:27:52 | 只看该作者
想问下这样嵌套,性能会下降多少?

回复 支持 反对

使用道具 举报

该用户从未签到

72

主题

542

帖子

1172

积分

金牌会员

Rank: 6Rank: 6

积分
1172
7#
发表于 2016-3-29 20:27:52 | 只看该作者
T大你真会玩。。。。

回复 支持 反对

使用道具 举报

该用户从未签到

61

主题

393

帖子

867

积分

高级会员

Rank: 4

积分
867
8#
发表于 2016-3-29 20:27:53 | 只看该作者

谢谢捧场

回复

使用道具 举报

该用户从未签到

78

主题

435

帖子

966

积分

高级会员

Rank: 4

积分
966
9#
发表于 2016-3-29 20:27:53 | 只看该作者
在密集环境下部署VMware需要这些理论基础。
CPU支持VT和VT-x的,我们叫硬件辅助的CPU虚拟化
CPU不支持的,我们叫基于软件的CPU虚拟化
CPU虚拟化就要扯到x86架构下的cpu保护模式,也叫保护虚拟地址模式,是一种提供硬件级别内存保护的x86处理器模式。
cpu保护模式有4个特权等级,分别是Ring0,Ring1,Ring2,Ring3。
Ring0是最优先等级,代码运行在Ring0时,处理器将允许特权代码完全地并且无限制地使用全部硬件资源。
我们在部署虚拟化的时候,
虚拟机操作系统和虚拟机管理器(Virtual Machine Manager,缩写VMM)都是运行在Ring0和Ring3
正是因为这两个代码都运行在Ring0上,那么虚拟机上的客户机操作系统的特权代码就会影响到其他虚拟机上的工作,还会影响到VMM的稳定性,
为了解决这个冲突,所以才有了开篇的“众所周知”,只允许VMM在Ring0上运行特权上编码,因此如果客户机操作系统是32位,那么虚拟机客户机操作系统可以在Ring 1上运行特权编码;如果客户机操作系统是64位的,那么它的编码特权只能在Ring 3上运行,或者就是干脆不支持硬件CPU虚拟化的就不能虚拟化64位操作系统。
支持硬件辅助虚拟化CPU,有两个模式,一个是根模式,另个是访客模式。
VMM使用Ring0和Ring3的根模式,虚拟机上的操作系统使用Ring0和Ring3的访客模式。
访客模式的Ring 0上执行一些特权代码仍然需要经过VMM的拦截和处理。



回复 支持 反对

使用道具 举报

该用户从未签到

63

主题

366

帖子

813

积分

高级会员

Rank: 4

积分
813
10#
发表于 2016-3-29 20:27:54 | 只看该作者

没有。
这玩意儿就是测试和玩玩。

回复 支持 反对

使用道具 举报

发表回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

    移动客户端:
    关注我们:
  • 手机客户端:
  • 安卓版
  • 扫描二维码下载

Archiver|手机版|邢台网云科技有限公司 ( 冀ICP备16008275号 )

快速回复 返回顶部 返回列表