在Windows Server 2016 Hyper-V中开启嵌套虚拟化(NestedVM)

2023-11-14

早期如果我们想做Hyper-V功能测试,例如Hyper-V Cluster或者Hyper-V Replica时至少使用两台物理机器实现,作为大众屌丝没那么多钱购买机器怎么办?——嵌套虚拟化。嵌套虚拟化,顾名思义,即在虚拟机中运行虚拟机。该技术最早出现在VMware产品中,包括我,早期介绍Windows Server 2012 R2 Hyper-V时也不得不借助VMware产品实现Hyper-V高级功能测试。

随着Windows Server 2016的正式发布,微软服务器虚拟化产品Hyper-V也带来了该技术,即在Hyper-V虚拟机内运行Hyper-V。通过使用嵌套虚拟化,我们可以继续先前所说的高大上的功能,也能够进行Windows Server 2016中另外一个新功能-Hyper-V Container【后续为大家带来】。

其实作为IT人员或者企业管理员,大家都有一个共识:嵌套虚拟化技术似乎并不能在生产环境当中发挥任何重要作用。那么究竟应该在哪些情况中使用嵌套虚拟化技术呢?既然不能在生产环境发挥重要作用,为什么还大费周章开发这项技术?

个人认为使用嵌套虚拟化技术目前主要有以下场景:

第一:利用嵌套虚拟化技术搭建开发环境或者测试环境

过去,需要使用专用的物理服务器才能够完成一系列开发测试工作,因为需要在物理服务器当中安装 hypervisor,之后按照需求创建虚拟机。使用这种方式的问题在于成本过高。IT部门没有足够的预算为开发/测试环境购买专用硬件。即便预算方面不存在问题,如果硬件使用率很低,也很难证明专用服务器的必要性。

嵌套虚拟化技术可以解决这种问题,它允许IT部门在独立环境当中创建开发/测试虚拟机,并且不会产生任何专用硬件开销。企业可以在一个单独的虚拟 Hyper-V服务器当中搭建完整的开发/测试环境。确实,这台运行Hyper-V服务器的虚拟机需要大量内存、虚拟 CPU 和存储才能够保证虚拟化环境高效运行,但是Hyper-V能够支持大规模虚拟机。即便是这样的大型虚拟机也不会消耗过多的硬件资源,因此不用担心需要购买额外的 硬件服务器。

 

第二:培训

用户在进行Hyper-V培训过当中肯定不希望一个没有任何经验的管理员操作生产环境当中的Hyper-V服务器。但是可以使用嵌套虚拟化技术搭建一个全新环境,让没有经验的管理员“安全”学习Hyper-V的各种原理与技术。

 

第三:“屌丝版”私有云

Hyper-V 嵌套虚拟化特性允许IT管理员为有经验的用户提供虚拟Hyper-V服务器,将其作为私有云的替代解决方案。由于这些Hyper-V服务器是虚拟的,因此管理员能够限制资源使用情况,就像在真正的私有云环境当中一样。Windows Server 2016当中的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 处理器(AMD-V技术的暂时不支持)

配置嵌套虚拟化

1、 在Windows Server 2016中启用Hyper-V角色,创建一台虚拟机

clip_image002

2、 以管理员身份运行Windows PowerShell,使用以下命令开启Hyper-V嵌套虚拟化

Set-VMProcessor -VMName NestedVM -ExposeVirtualizationExtensions $true

clip_image004

3、 启动并连接虚拟机“NestedVM”

clip_image006

4、 在虚拟机“NestedVM”中安装Hyper-V角色

clip_image008

clip_image010

5、 在早期build中,如果想启用Hyper-V嵌套虚拟化,还必须进行另一项设置:启用MAC 地址欺骗,但是最新的RTM版本并不需要单独进行设置,如果还想启用MAC 地址欺骗,您可以使用命令行或者GUI操作

Get-VMNetworkAdapter -VMName NestedVM | Set-VMNetworkAdapter -MacAddressSpoofing On

clip_image012

6、 如果想禁用嵌套虚拟化,可使用以下 PowerShell 命令禁用已停止虚拟机的嵌套虚拟化

Set-VMProcessor -VMName NestedVM -ExposeVirtualizationExtensions $false

 

在早期build中,当启用嵌套虚拟化技术之后,如下功能无法使用:

  • 动态内存必须被关闭;
  • Runtime内存大小调整失败;
  • 虚拟机中的检查点功能不能正常工作;
  • 不能进行实时迁移操作;
  • 无法使用虚拟机“保存”和“恢复”;

 

在Windows Server 2016 Hyper-V中启用嵌套虚拟化之后如下功能依然不可用

  • 动态内存必须被关闭;
  • Runtime内存大小调整失败;

clip_image014

可以使用Hyper-V中的“保存”和“恢复”

clip_image016

 

最早在build10565时写过一篇在Windows 10下启用Hyper-V嵌套虚拟化技术,有兴趣的朋友可以前往我的51CTO博客:

Microsoft 嵌套虚拟化技术(Nested Virtualization)

http://ericxuting.blog.51cto.com/8995534/1704391

 本文固定链接: http://365vcloud.net/2016/10/10/%e5%9c%a8windows-server-2016-hyper-v%e4%b8%ad%e5%bc%80%e5%90%af%e5%b5%8c%e5%a5%97%e8%99%9a%e6%8b%9f%e5%8c%96%ef%bc%88nestedvm%ef%bc%89/ | Eric的学习之路 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Windows Server 2016 Hyper-V中开启嵌套虚拟化(NestedVM) 的相关文章

  • 在SQL Server 2016中存储JSON格式的数据

    In this article I continue to review the exciting features available in SQL Server 2016 One such feature is the long awa
  • phpStorm 2016.1 最新版激活方法

    新版激活方法 1 在线激活 最新 http 123 206 193 241 1017 http www 0 php com 1017 xff08 可用 xff0c 更新于 20170621 xff09 http idea singee77
  • 2016 Personal Training #11 Div.2 B G J

    UVALive 5963 题意 xff1a 给你n个数 xff0c 如果这n个数满足 xff1a 例如n 61 4第一个数前面有0个数后面有三个数那么这第一个位置数可以为0或者3 xff0c 第二个位置可以为1或2等等 给出的n个数满足则输
  • 2016 Personal Training #4 Div.2 A B C G H

    xff21 URAL 2091 题意 xff1a 有四个类别 xff11 xff0e xff21 和 xff22 都包含 xff0c xff12 xff0e 只包含 xff21 不包含 xff22 xff0c xff13 xff0e 只包含
  • Luogu 1712 [NOI 2016] 区间

    传送门思路参考代码 传送门 思路 唉 xff0c 我太弱了 xff0c 什么都不会 xff0c 这么个傻逼题 xff0c 居然把离散化写错了 xff0c 唉 xff0c 我太弱啦 xff01 显然我们可以考虑枚举最短长度和最长长度 xff0
  • Outlook 2013/2016 显示“正在启动...“ 无法进入Outlook的解决方案

    因上次非正常关闭 xff0c 导致Outlook 2016启动时 xff0c 一直处于启动界面 xff0c 无法进入主界面正常工作 刚开始Outlook 2016启动界面显示的是 34 正在处理 34 查询网上各种方法 xff0c 安全启动
  • 随着稻香河流继续奔跑 ——致2016

    写在前面 xff0c 2016于我而言 xff0c 是丰收的一年 这一年 xff0c 我收获了能力与本领 xff0c 收获了美丽与自信 xff0c 收获了欣赏和肯定 2017 xff0c 我会不忘来时路 xff0c 继续前行 2016的驿站
  • 2016,再见 2017,还请多多指教

    先来一个象征意义上的序 今天是2017 01 01 新年的第一天 昨天适合总结 今天适合制作新年计划 昨天没做总结 于是今天总结和新年计划一起来吧 充满回忆的2016 昨天在驾校练车练了一天 倒库终于能倒进去了 回到住处已经下午5点 买了路
  • 一个脚本打比赛之SMP WEIBO 2016

    一个脚本打比赛之SMP WEIBO 2016 前言 xff1a 如何对用户进行精准画像是社交网络分析的基础问题 本文就如何对weibo用户网络提取特征发表一点小的想法 xff0c 还请尽管拍砖 数据来源 xff1a SMP WEIBO 20
  • Win10中使用Hyper-V安装Ubuntu18.04、实现ssh远程连接及Hpyer-V中Ubuntu全屏问题

    利用Windows10自带的虚拟机Hyper V安装Ubuntu18 04 并实现配置主机通过ssh连接Hpyer V中Ubuntu虚拟机 同时解决Ubuntu虚拟机在Hpyer V全屏时不能铺满屏幕的问题 首先安装Hyper V 打开Wi
  • 【系统篇 / 域】❀ 06. Windows10 加入域 ❀ Windows Server 2016

    简介 众所周知 Windows Server 2016 与其它版本不同的地方就是支持 Windows10 加入域服务了 修改 DNS Windows10 加入域之前 需要把网卡的DNS指向域服务器 在Windows10系统中 鼠标右击右下角
  • visio2016企业批量授权版本的激活方式

    首先先下载visio2016的企业批量授权版本 下载地址 用window的资源管理器打开压缩包 点击setup exe 之后默认安装 接下来就是激活的过程 win r快捷键 输入cmd cd C Program Files Microsof
  • 2016 OWASP Mobile TOP 10 中文版

    M1 平台使用不当 这个类别包括平台功能的滥用 或未能使用平台的安全控制 它可能包括 Android 的意图 intent 平台权限 TouchID 的误用 密钥链 KeyChain 或是移动操作系统中的其他一些安全控制 有几种方式使移动应
  • 我的 BIOS 设置中没有启用 Hyper-V 的选项

    我是 Windows Phone 8 应用程序开发新手 我安装了SDK 8 0 当我运行应用程序时 它显示一条错误 告诉我启用 Hyper V 在搜索过程中我发现这个 MSDN 文档BIOS 中有解决方案 但是当进入我的BIOS设置时 却没
  • 从 C# 调用特定版本的 PowerShell

    我正在尝试使用Get VM从 Hyper V 主机上的 C 调用 Cmdlet 显然 相应的PowerShell模块Hyper V必须先导入 然而 导入失败 显然是因为该模块仅在 PowerShell 3 0 上受支持 至少我是这么认为的
  • Windows Phone 8 模拟器未运行。它在卸载 Oracle 虚拟机之前正在运行

    我正在使用 Windows Phone 8 应用程序 我的 Windows Phone 8 模拟器工作正常 但当我安装 Oracle 虚拟机以通过它学习一些东西时 它停止工作 但是当我测试我的 Windows Phone 应用程序时 应用程
  • Android:您的CPU不支持VT-x

    您的 CPU 不支持 VT x 运行此 AVD 需要 Intel HAXM 您的 CPU 不支持 VT x 不幸的是 您的计算机不支持硬件加速虚拟化 以下是您的一些选择 1 使用物理设备进行测试 2 在具有支持VT x和NX的Intel处理
  • 无法复制到 Windows 10 上的 Windows 容器(“docker cp”)

    我在笔记本电脑上设置了适用于 Windows 的 Docker 然后从Linux容器 to Windows容器在 Docker 的设置中 这会提示几次重新启动和 Windows 更新 我提取了一个图像并使用以下命令运行基于它的容器 dock
  • docker-machine:没有机器名称,不存在“默认”

    我下载并安装了 Docker for Windows 1 12 1 它又安装了 docker machine 和 docker compose 我没有安装 Docker Toolbox 因为它与已安装的内容重复 并且我的系统满足要求 htt
  • 适用于 Windows 的 Docker 桌面

    我正在尝试在我的 Windows 10 Pro 64 位计算机上运行 Docker 桌面 其构建规范和设置详细信息如下 版本 Windows 10 专业版 64 位 版本 1903 操作系统版本 18362 657 CPU 英特尔 i7 H

随机推荐

  • QT BUG解决:QMetaObject::connectSlotsByName: No matching signal for xxxxxxxxx

    QT BUG解决 QMetaObject connectSlotsByName No matching signal for xxxxxxxxx 问题描述 采用右键 转到槽 的功能生成的槽函数无法连接到信号 此时会报错该槽没有信号对应 QM
  • Bash编程语法

    变量 a 10 定义一个变量 echo a 输出变量a unset a 删除变量a readonly b b变量只读 只读变量不能删除 字符串 name asdsdsd 拼接字符串 name2 hello name 数组 arrayname
  • 快速序列化组件MessagePack介绍

    简介 MessagePack for C MessagePack CSharp 是用于C 的极速MessagePack序列化程序 比MsgPack Cli快10倍 与其他所有C 序列化程序相比 具有最好的性能 MessagePack for
  • arduino 智能车组装步骤_Arduino智能小车硬件安装说明

    1 工具准备 安装过程中可能用到以下工具 请提前准备好 2 小车地盘组装 按小车底盘组装说明组装小车底盘 说明截图如下 三 安装船型开关及电池盒 如下图 船型开关从底部按进 两侧引出电源开关线 电池盒如图安装 电池盒红线 正极 接船型开关
  • Qt SVG Viewer Example 看看看~

    Qt提供在widgets和其他paint device上渲染和展示SVG的类 本例就允许用户载入SVG文件并在QGraphicsView上用QGraphicsSvgItem显示它 并且例子还可以选择渲染者 QGraphicsView可以用Q
  • 【华为OD】

    华为OD试题注意事项 使用合适的编程语言 在华为OD机试中多数情况下使用C 或Java 按照题目要求进行编码 仔细阅读题目描述并理解要求 在编码前可以进行伪代码编写或画流程图有助于理解和排除逻辑错误 注意代码的规范性 注重代码的可读性和可维
  • vulnhub-Kioptrix2014靶场

    以下演示在测试环境进行 遵纪守法 靶场下载地址Kioptrix 2014 5 VulnHub 看网上都说这个靶场 在下载之后运行前 需要将靶场默认网卡卸载 之后再重新添加网卡 不然获取不到IP 本着听人劝 吃饱饭原则 安装前辈经验操作 信息
  • 冒泡排序和鸡尾酒排序

    传统冒泡排序 import java util Arrays author 新新 ClassName BubbleSort Description 冒泡排序 date 2022年03月17日 public class BubbleSort1
  • 快手春节现金褥羊毛活动 (攻略)

    注册得10元 扫描下面二维码 手机注册 然后下载快手 使用该手机号登陆后 10元到手 注意 一定要下载快手 该手机号登陆 只有新用户新设备才有10元 标题快手春节红包6亿活动中的组队PK活动 先放入口地址 微信扫一扫 点击下图 重要的规则
  • springcloud 微服务之间传递token解决方案

    后续更新地址 https www aiprose com blog 36 在springcloud 微服务中大部分是通过token来验证用户的 那么有个问题 假设现在有A服务 B服务 外部使用RESTApi请求调用A服务 在请求头上有tok
  • 华为手机信息

    手机相关 荣耀手机产品线包括V系列 HONOR系列 X系列以及Play系列 V系列的第一代手机 V8 magic系列第一代手机 荣耀magic 2016 X系列第一代手机 X3 2013 Play系列第一代手机 Play 2018 HONO
  • 人脸识别手把手教学传送门

    http t csdn cn cVdHb
  • 2023 hdu 第10场 1004 Do you Like Interactive Problem

    Problem Description 现在有一个整数 x x x 1 x n
  • 分布式集群框架——Google文件系统GFS

    Google文件系统GFS Google文件系统 Google File System GFS 是一个大型的分布式文件系统 它为Google云计算提供海量存储 并且与Chubby MapReduce以及Bigtable等技术结合十分紧密 处
  • jenkins 配置root用户

    修改用户为root 避免权限导致的问题 vim etc sysconfig jenkins 修改目录权限 chown R root root var lib jenkins chown R root root var cache jenki
  • 数据库系列MySQL:优化配置文件

    配置流程 1 MySQL文件目录中后缀名为 ini文件的就是MySQL的默认配置文件 2 程序启动会先加载配置文件中的的配置 之后才会真正启动程序 3 更改完配置文件设置后需要重新启动服务端才可以生效 优化方案一 服务器内存 4 8GB k
  • linux释放buff/cache缓存空间

    当free m发现操作系统buff cache占用缓存过高导致可用内存过小时 这是后需要手动释放一下缓存 输入命令 echo 3 gt proc sys vm drop caches
  • Flask App 数据发送到 PostgreSQL 数据库

    对象关系映射器 如果您计划制作任何类型的现代 Web 服务 那么管理通过网站或应用程序的数据流是一项需要掌握的关键技能 使用flask 对象关系映射器 ORM 被用来让你的应用程序与关系数据库进行交互 对象关系映射器是一个框架 在我们的例子
  • [Echarts可视化] 一.入门篇之简单绘制中国地图和贵州地区

    最近发生了很多事情 去到了一个新环境学习 但是不论在哪里 我都需要不忘初心 坚持做自己喜欢的事情 在CSDN写博客 教学 爱娜 生活等等 这篇文章主要是通过Echarts可视化介绍入门知识 中国地图和贵州地区各省份的数据分析 其中贵州地图才
  • 在Windows Server 2016 Hyper-V中开启嵌套虚拟化(NestedVM)

    早期如果我们想做Hyper V功能测试 例如Hyper V Cluster或者Hyper V Replica时至少使用两台物理机器实现 作为大众屌丝没那么多钱购买机器怎么办 嵌套虚拟化 嵌套虚拟化 顾名思义 即在虚拟机中运行虚拟机 该技术最