开发者社区> 科技小先锋> 正文

Hyper-V 2016 系列教程19 借助嵌套虚拟化在虚拟机中运行 Hyper-V

简介:
+关注继续查看

 嵌套虚拟化是一项功能,使你可以在 Hyper-V 虚拟机内运行 Hyper-V。 换而言之,借助嵌套虚拟化,Hyper-V 主机本身可进行虚拟化。 嵌套虚拟化的一些用例包括在虚拟化容器主机中运行 Hyper-V 容器、在虚拟化环境中设置 Hyper-V 实验室或者无需单个硬件测试多台计算机方案。 本文档将详细介绍软件和硬件先决条件、配置步骤和限制。

先决条件

  • 运行 Windows Server 2016 或 Windows 10 周年更新的 Hyper-V 主机。

  • 运行 Windows Server 2016 或 Windows 10 周年更新的 Hyper-V VM。

  • 配置版本为 8.0 或更高的 Hyper-V VM。

  • 采用 VT-x 和 EPT 技术的 Intel 处理器。

配置嵌套虚拟化

  1. 创建虚拟机。 请参阅以上针对必需 OS 和 VM 版本的先决条件。

  2. 虚拟机处于关闭状态时,请在物理 Hyper-V 主机上运行以下命令。 这样可以实现虚拟机的嵌套虚拟化。

none

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
  1. 启动虚拟机。

  2. 在虚拟机中安装 Hyper-V,就像针对物理服务器一样。 有关安装 Hyper-V 的详细信息,请参阅安装 Hyper-V

禁用嵌套虚拟化

可使用以下 PowerShell 命令禁用已停止虚拟机的嵌套虚拟化:

none

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $false

动态内存和运行时内存大小调整

当 Hyper-V 在虚拟机内运行时,必须关闭虚拟机以调整其内存。 这意味着,即使启用了动态内存,内存量将不会波动。 对于没有启用动态内存的虚拟机,在虚拟机开启情况下对调整内存量的任何尝试都将失败。

请注意,只启用嵌套虚拟化不会影响动态内存或者运行时内存大小调整。 仅当 Hyper-V 在 VM 中运行时会出现不兼容。

网络连接选项

有两个选项可用于与嵌套虚拟机连接:MAC 地址欺骗和 NAT 模式。

MAC 地址欺骗

为了通过两台虚拟交换机路由网络数据包,必须在第一级虚拟交换机上启用 MAC 地址欺骗。 使用以下 PowerShell 命令完成此操作。

none

Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On

网络地址转换

第二个选项依赖于网络地址转换 (NAT)。 此方法非常适合于无法使用 MAC 地址欺骗的情况,例如在公有云环境中。

首先,必须在主机虚拟机(“中间”虚拟机)中创建一个虚拟 NAT 交换机。 请注意,IP 地址仅作举例之用,会因环境不同有所差异:

none

new-vmswitch -name VmNAT -SwitchType Internal
New-NetNat –Name LocalNAT –InternalIPInterfaceAddressPrefix “192.168.100.0/24”

接下来,将 IP 地址分配给网络适配器:

none

get-netadapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24

每个嵌套的虚拟机必须分配有一个 IP 地址和网关。 请注意,网关 IP 必须指向上一步中的 NAT 适配器。 您可能想要分配 DNS 服务器:

none

get-netadapter "Ethernet" | New-NetIPAddress -IPAddress 192.168.100.2 -DefaultGateway 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24
Netsh interface ip add dnsserver “Ethernet” address=<my DNS server>

第三方虚拟化应用

除 Hyper-V 外的虚拟化应用程序在 Hyper-V 虚拟机中不受支持,可能会失败。 这包括需要硬件虚拟化扩展的任何软件。


本文转自成杭 51CTO博客,原文链接:http://blog.51cto.com/hangtc/1965065,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
虚拟机的运行架构
虚拟机作为应用软件安装在操作系统上 可以在此应用软件上安装多个操作系统 直接安装在硬件上的系统为宿主
18 0
《Java 虚拟机》运行期优化
《Java 虚拟机》运行期优化
22 0
Mac系统运行Win软件应用虚拟机软件CrossOver2023
CrossOver2023版是在Mac上运行Win软件的最简单方法,有了它,你无须 Win许可、重新启动或使用虚拟机即可在mac上使用Win软件。CrossOver23可以轻松地从Dock本地启动Win程序。CrossOver版还集成了macOS 功能,例如跨平台复制和粘贴,以及用于Win应用程序的共享文件系统。简单的使用方式,小白用户也可以自己安装虚拟机,让用户自己在mac电脑上安装Windows系统,增加电脑的使用方式,你可以用它来办公、来玩游戏,使用方式很广泛,需要注意的是,安装多个虚拟系统,需要电脑拥有很高的配置,方可支持运行!
41 0
Win10运行VMware虚拟机时蓝屏问题
Win10运行VMware虚拟机时蓝屏问题的解决办法
118 0
JNI用C加载JDK产生JVM虚拟机,并运行JAVA类main函数(MACOS/LINUX/WINDOWS)
JNI用C加载JDK产生JVM虚拟机,并运行JAVA类main函数(MACOS/LINUX/WINDOWS)
31 0
JDK的问题:用C启动虚拟机跟java运行结果有差异
JDK的问题:用C启动虚拟机跟java运行结果有差异
22 0
新手入门指南之玩转蓝桥云课(线上运行虚拟机,c++,Java,Javaweb,python环境,以及如何成功利用命令行运行这些环境)(2)
新手入门指南之玩转蓝桥云课(线上运行虚拟机,c++,Java,Javaweb,python环境,以及如何成功利用命令行运行这些环境)(2)
319 0
新手入门指南之玩转蓝桥云课(线上运行虚拟机,c++,Java,Javaweb,python环境,以及如何成功利用命令行运行这些环境)(1)
新手入门指南之玩转蓝桥云课(线上运行虚拟机,c++,Java,Javaweb,python环境,以及如何成功利用命令行运行这些环境)(1)
216 0
同一个JDK,命令行运行,与JNI加载虚拟机,还是有差异
同一个JDK,命令行运行,与JNI加载虚拟机,还是有差异
12 0
JVM:Java运行时数据区域----Java虚拟机栈
JVM:Java运行时数据区域----Java虚拟机栈
34 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
基于英特尔 SSD 的虚拟机缓存解决SSD
立即下载
Mesos,数据中心操作系统的核心
立即下载
Matrix集群操作系统
立即下载