ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Windows自带虚拟机Hyper-V:从开启到实战的完整指南

Windows自带虚拟机Hyper-V:从开启到实战的完整指南 先说你最关心的问题Windows确实有自带的虚拟机而且不是那种玩具级的阉割货它就是Hyper-V。很多人在装虚拟机时第一反应是去下载VMware或者VirtualBox但Windows专业版和企业版里其实一直藏着一套完整的虚拟化平台只不过入口藏得比较深大部分人没注意到。Hyper-V的本质是一个Type-1裸机型虚拟机监控程序什么意思呢就是它在Windows启动的时候直接跑在硬件和操作系统之间所有虚拟机都由它管理。这和VMware Workstation那种Type-2宿主型架构不同Hyper-V不需要先在Windows里面装一个应用软件然后让应用去调用硬件它是一开机就和系统绑定在一起的。所以日常使用中Hyper-V虚拟机的稳定性和资源分配效率其实很高尤其是跑Linux服务器类工作负载的时候比VMware轻量不少。这套东西原本是给服务器用的微软把它打包进了桌面版Windows很多人不知道而已。今天这篇就把Hyper-V从开启到建虚拟机、从网络配置到问题排查完整讲一遍照着抄就行。1. 先搞清楚Hyper-V到底是干什么的和VMware有什么本质区别1.1 Windows自带的虚拟化方案不止一个严格说起来Windows里“自带”的虚拟化东西其实有三套很多人搞混了。第一套是Hyper-V就是本文的主角完整的虚拟机管理器能装Windows、Linux、FreeBSD能自定义CPU、内存、磁盘、网络功能上不输VMware. Workstation。第二套是Windows沙盒Windows Sandbox这个是轻量级的一次性隔离环境每次打开都是全新的Windows系统关了以后所有数据清空适合测试不信任的软件。它底层也用了Hyper-V的技术但你不能自己控制系统配置不能装Linux灵活性很低。第三套是WSL2Windows Subsystem for Linux 2它是在Hyper-V平台上跑的一个轻量级Linux工具链不是完整桌面虚拟机没有图形界面主要用于开发场景。所以你看这三套东西都叫“Windows自带虚拟化”但定位完全不同。如果目标是“装一个完整的操作系统随意折腾日常使用”那答案就是Hyper-V。1.2 Hyper-V和VMware/VirtualBox的本质区别先明确一个概念虚拟机软件分两种架构。VMware Workstation和VirtualBox属于Type-2也就是你先把Windows装好然后在Windows里运行一个软件这个软件再去调用CPU虚拟化指令、分配内存、操作磁盘。相当于你在家里面建了一个房间再在房间里搭了一个小房子给虚拟机住。Hyper-V属于Type-1它不是一个普通的应用程序而是和Windows内核一起启动的系统级组件。Windows启动时Hyper-V的hypervisor层先加载然后Windows系统本身也是作为“虚拟机”跑在hypervisor上面的。你再创建的虚拟机和宿主Windows是平级的关系。这个架构差异带来几个实际感受性能更接近物理机因为虚拟机直接和hypervisor交互没有中间那一层软件转发CPU密集型和IO密集型任务的损耗更小。稳定性更好Hyper-V的调度器是内核级实现的不太会被宿主系统里的流氓软件拖垮。资源控制更精细可以动态调整内存、CPU配额还支持嵌套虚拟化。代价就是配置入口比较隐蔽它藏在控制面板的Windows功能里用起来没有VMware那么“傻瓜”。VMware的优势是界面友好、功能直观、兼容性好特别是运行macOS这种非Windows系统的场景Hyper-V完全不支持。但如果你只是想在Windows上跑Linux、跑Windows测试环境、搞开发服务器Hyper-V的表现完全够用而且省去了破解成本合法性也更稳妥。1.3 什么时候该用Hyper-V什么时候别用基于实际使用体验我列一个判断标准适合用Hyper-V的情况需要在Windows上跑Linux服务器系统做开发、测试、部署环境需要运行多个Windows系统做软件兼容性测试需要长期稳定运行的服务型虚拟机比如挂一个内部用的数据库、Git仓库同时在用Docker Desktop或者WSL2这两者其实都建议依赖Hyper-V平台机器性能足够至少在8GB内存以上最好是16GB不适合用Hyper-V的情况你要跑macOS虚拟机Hyper-V不支持老老实实VMware解锁工具你只想临时开个系统看看界面VirtualBox的快速创建更省心你的Windows是家庭版没有Hyper-V功能后面会说怎么绕过你需要在VMware里再开个Hyper-V虚拟机嵌套虚拟化场景极其复杂不推荐新手碰说白了Hyper-V是“正经干活”的工具VMware是“方便折腾”的工具看你的具体需求选。2. 开箱之前系统要求和虚拟化开关2.1 你的Windows版本支不支持Hyper-VHyper-V不是所有Windows版本都有的。官方限制是支持Windows 10/11专业版、企业版、教育版不支持Windows 10/11家庭版、专业教育版轻量版如Pro for Workstations实际上支持很多人买了笔记本出厂预装的是家庭版打开控制面板发现找不到Hyper-V这是一个非常高频率的踩坑点。怎么确认自己的版本右键“此电脑” → 属性看“Windows规格”里的版本信息。如果是家庭版有两条路一是升级到专业版在微软商店里购买专业版升级密钥几分钟就升级完。二是走命令行强制开启方法是用管理员身份打开命令行输入一套启用Hyper-V的DISM命令dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /all /norestart这个方法在家庭版上偶尔能生效但不保证而且有系统稳定性的小风险。我的建议是如果你确实需要跑虚拟机直接升级到专业版这是最干净、最省心的方案。家庭版升级专业版现在经常有活动价比纠结折腾半天值。2.2 BIOS/UEFI层面的虚拟化开启这一步非常关键很多人卡在这里Windows功能已经勾选Hyper-V了但装完重启后显示“虚拟机监控程序功能对该用户不可用”或者“Hyper-V无法启动”。绝大多数原因是CPU虚拟化指令没有在BIOS/UEFI里被打开。具体操作重启电脑开机时按Del或者F2进入BIOS设置不同品牌按键不同联想/戴尔一般是F2华硕/微星是Del。找到“CPU Configuration”或者“Advanced” → “CPU Setup”之类的选项。找到“Intel Virtualization Technology”Intel平台或者“SVM Mode”AMD平台改为Enabled。如果能看到“VT-d”相关的选项也一并开启后续直通设备会用到。保存退出重新进入Windows。怎么确认虚拟化是否已经开启打开任务管理器 → 性能 → CPU页面右下角有个“虚拟化已启用”的提示。如果显示“已禁用”那你还没开对。如果显示“已在固件中启用但Hyper-V没跑起来”那说明Windows功能没启用完整或者Hyper-V服务被关了。注意有些新电脑的BIOS里虚拟化选项默认是关闭的特别是品牌机的OEM主板这个一定要检查这是绝大多数“Hyper-V无法启动”案例的根因。2.3 三步启用Hyper-V组件确认版本支持、BIOS虚拟化开启之后接下来启用Hyper-V组件方式一图形界面打开“控制面板” → “程序” → “启用或关闭Windows功能”。在弹出的窗口里找到“Hyper-V”项展开后勾选“Hyper-V管理工具”和“Hyper-V平台”。点击确定等待安装完成重启系统。方式二命令行管理员权限Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All输入后回车它会自动执行并提示是否需要重启输入Y重启。重启后你会在开始菜单里找到“Hyper-V管理器”和“虚拟机连接”两个程序。Hyper-V管理器是图形化管理界面虚拟机连接是连接到虚拟机窗口的工具。补充一句启用Hyper-V过程中常见的连带反应是Windows自带的沙盒Sandbox功能会自动启用、内存完整性内核隔离默认打开这些不是故障是Hyper-V平台的正常联动。3. 创建你的第一台虚拟机从零到能开机3.1 虚拟交换机先解决网络基础打开Hyper-V管理器你会看到右侧有一个“虚拟交换机管理器”的入口。很多新手直接忽略这里上来就新建虚拟机结果虚拟机装好后上不了网然后一脸懵。正确的流程是先配网络再建虚拟机。虚拟交换机有三种类型理解清楚了就不会乱外部虚拟交换机虚拟机可以直接接入你的物理网络像一个独立的设备一样和宿主电脑、局域网内的其他设备处于同一个网段。适合需要外网直连的场景比如跑web服务器、ftp服务。内部虚拟交换机虚拟机只能和宿主机通信不能直接访问外部网络。适合测试用、或者要求隔离的环境。专用虚拟交换机虚拟机之间可以通信宿主机也访问不了。适合模拟完全隔离的内网环境。大多数情况下你只需要一个“外部虚拟交换机”。具体创建步骤打开虚拟交换机管理器 → 新建虚拟网络交换机 → 选择“外部”。名称随便写比如“外网”。最关键的一步在“外部网络”下拉框里选择你要绑定的物理网卡。如果你的电脑用的是无线网就选择Wi-Fi对应的网卡如果用网线就选择“以太网”。勾选“允许管理操作系统共享此网络适配器”这个选项的意思是宿主机Windows自己也继续用这张网卡上网不勾的话宿主机可能断网。确定系统会短暂断一下网然后自动恢复。这里有个常见坑如果你的电脑同时有有线网卡和无线网卡创建外部交换机时选错了网卡会导致虚拟机无法上网或者宿主机断网。3.2 创建虚拟机的完整流程网络配好后开始创建虚拟机。右键Hyper-V管理器里的本地主机名 → 新建 → 虚拟机会弹出一个向导。几个关键选项我逐一说明代数选择这是很多人困惑的地方。第1代和第2代的区别在于第1代兼容性最好支持各种老系统的安装Windows 7及以前、32位系统固件是传统BIOS。第2代启动速度快支持UEFI安全启动、支持更大的磁盘容量适合Windows 10/11、Windows Server 2016以上、以及较新版本的LinuxUbuntu 20.04及以上。我的建议是除非你要装Windows 7或者更老的系统否则一律选第2代。内存分配Windows系统建议至少4096MBLinux服务器可以给2048MB带桌面的Linux给4096MB以上。记得勾选“使用动态内存”这样虚拟机空闲时内存会被回收不占宿主机的资源。网络连接选择刚才建好的外部交换机。虚拟硬盘默认创建一个VHDX格式的虚拟磁盘大小建议至少给40GB类型选“动态扩展”就是实际用了多少才占多少空间。安装选项这里可以选择“从映像文件(.iso)安装操作系统”浏览选择你的系统镜像文件。也可以先不装系统创建好后再设置。创建完成后右击虚拟机 → 设置还可以进一步调整CPU核心数、添加多个网卡、配置DVD驱动器等等。一般新手用默认配置就够跑了。3.3 安装Linux/Windows系统的注意点创建完虚拟机后双击它打开“虚拟机连接”窗口点击工具栏上的绿色“启动”按钮就开始跑系统安装流程了。安装Windows系统时第2代虚拟机默认开启了安全启动Secure BootWindows 11必须要有这个才能装但如果你要装Windows 10一般没问题。安装过程中如果提示“找不到媒体”检查DVD驱动器的镜像是否加载了。如果安装Windows 11提示不满足TPM要求需要在虚拟机的设置里开启“受信任的平台模块”选项。安装Linux系统时如果你是第2代虚拟机装Ubuntu 22.04以上的就不用担心新的内核支持UEFI启动。如果装CentOS、Debian等对UEFI支持不完全的发行版建议直接用第1代虚拟机省去一堆引导问题。Linux安装时如果画面卡住或黑屏可以尝试在虚拟机的设置里关闭“安全启动”。安装完成后系统的初始密码通常是你安装时设置的账号密码。Linux发行版一般默认只开了SSH服务如果想方便地复制粘贴可以安装增强组件——但Hyper-V没有像VirtualBox那样的“增强功能”包它用的是“Linux Integration Services”新版Linux内核已经自带这个驱动了所以虚拟机里的复制粘贴CLI窗口里一般直接就可用。4. 网络折腾让虚拟机上网、让主机访问虚拟机4.1 默认交换机的上网原理很多人装完虚拟机后会发现虚拟机居然能上网。这其实不是沾了外部交换机的光而是Hyper-V有一个内置的“默认交换机”Default Switch它自带了NAT转发功能。只要你在创建虚拟机时没手动指定网络系统就会自动用这个默认交换机。默认交换机的好处是开箱即用虚拟机拿到的是一个私网IP一般是172.x网段或192.168.x网段通过宿主机的NAT转发访问互联网不需要你任何配置就能上网。但你会有另一个困惑宿主机访问不到虚拟机。这是因为默认交换机的NAT是单向的虚拟机访问外网没问题但从宿主机ping虚拟机的地址可能不通或者开虚拟机里的Web服务宿主机浏览器访问不到。这是默认交换机的机制决定的不是故障。4.2 主机访问虚拟机网站怎么配如果要在宿主机上直接访问虚拟机里的网站、SSH、数据库有两种做法方式一改用外部交换机把虚拟机的网卡改成外部交换机模式这样虚拟机和宿主机在同一个局域网段内宿主机直接通过虚拟机的IP访问即可。这种方式最直观也是大多数人的首选。具体操作虚拟机设置 → 网络适配器 → 选择你建好的外部交换机。需要注意的一点是外部交换机模式下如果局域网内IP冲突或者路由器开启了AP隔离虚拟机可能无法和宿主机互通。这时候可以手动给虚拟机设置静态IP确保和宿主机同网段。方式二保留默认交换机加端口转发规则如果你不想给虚拟机换网卡还是在默认交换机模式下想从宿主机访问虚拟机里的服务就得用PowerShell加一条端口转发规则netsh interface portproxy add v4tov4 listenport8080 listenaddress0.0.0.0 connectport80 connectaddress192.168.x.x这条命令的意思是宿主机监听8080端口所有访问宿主机8080端口的流量都转发到虚拟机的80端口。这样你在宿主机浏览器里访问http://localhost:8080就能看到虚拟机里的网站了。这个方案适合“不想暴露多个IP、只想通过宿主机统一入口访问”的场景。4.3 静态IP和MAC那点坑不管用哪种模式虚拟机重启后IP变化是一个非常扫兴的事情。你昨天还通过http://192.168.1.100访问服务今天重启就变了。解决方案是给虚拟机配置静态IP。Linux虚拟机编辑/etc/netplan/或者/etc/network/interfaces配置文件根据你实际的网段设置静态IP和网关。需要注意的是如果用的是外部交换机网关填你路由器的地址如果用的是默认交换机网关填默认交换机的IP一般在虚拟机里用ip route show能看到。Windows虚拟机在虚拟机里打开网络适配器设置手动指定IP、子网掩码、默认网关、DNS即可。这里有一个容易被忽视的问题静态MAC地址。Hyper-V每次启动虚拟机时如果没设置固定的MAC地址系统会自动生成一个。对于某些依赖MAC做授权的软件比如一些加密软件、KMS服务器这会导致每次重启后授权失效。解决办法是在虚拟机设置 → 网络适配器 → “高级功能”里将MAC地址改为“静态”然后填一个固定的MAC值。5. 实战中一定会踩的坑问题排查记录5.1 “虚拟机监控程序功能对该用户不可用”这个报错信息非常经典出现的位置一般在启用Hyper-V功能后打开Hyper-V管理器或者在命令行执行某些Hyper-V命令时。原因排序如下第一位BIOS里虚拟化没开回2.2节检查。第二位Hyper-V功能没有完整启用尤其是“Hyper-V平台”这个子项没勾上。回到“启用或关闭Windows功能”里检查。第三位执行了某个系统更新后Hyper-V的hypervisor被禁用。以管理员身份运行命令行执行bcdedit /set hypervisorlaunchtype auto重启。还有一种隐蔽情况电脑上装了其他第三方杀毒软件干扰了系统虚拟化服务。遇到这种情况建议暂时禁用杀毒软件后重新启用Hyper-V。5.2 网络适配器感叹号或虚拟机没有网络适配器这在创建外部交换机之后偶尔会出现。打开“设备管理器”看到网络适配器下面有个带感叹号的项目或者Hyper-V管理器里虚拟机的网络适配器显示非正常状态。排查步骤先去虚拟交换机管理器里看看你创建的外部交换机绑定的物理网卡有没有显示“不可用”或感叹号。如果是无线网卡有些老旧的Wi-Fi驱动和Hyper-V虚拟交换机不兼容会造成网卡禁用。解决方式是更新网卡驱动到最新版或者在虚拟交换机的设置里换一个物理网卡重新绑定。如果交换机本身正常但虚拟机里没有网络去虚拟机的设置 → 网络适配器确认已经选择了正确的交换机。有时候创建虚拟机时忘了选后来改设置又没保存会导致这种情况。5.3 Linux安装蓝屏/无法引导第2代虚拟机装一些老版本Linux发行版时容易遇到引导失败。具体表现是安装界面起不来或者启动时直接黑屏/蓝屏/卡在GRUB界面。解决方法首选方案在虚拟机设置 → 固件里把“安全启动”给关掉。这是第2代虚拟机装Linux最常见的坑很多Linux发行版没有签Microsoft签名被安全启动拦截了。次选方案重建一个第1代虚拟机来安装这个Linux系统。如果你是装Ubuntu 22.04及更新版本可以保持安全启动开启因为Canonical已经做了签名适配。5.4 和WSL2、Docker Desktop的相爱相杀这个话题很多人关心我装了Docker Desktop它提示我启用WSL2然后我手动启用了Hyper-V结果系统中的虚拟机打不开了或者完全搞混了。需要理清一个关系Docker Desktop有两种后端一种是基于Hyper-V一种是基于WSL2。WSL2本身就是在Hyper-V平台上跑的它只使用一个精简的系统不是完整虚拟机。如果同时用Hyper-V和Docker Desktop建议将Docker Desktop的后端设为WSL2这样资源占用更小启动更快而且不会和Hyper-V的虚拟机列表冲突。操作方法是Docker Desktop → Settings → General → 勾选“Use WSL 2 based engine”。此外还要注意一旦启用了Hyper-VVirtualBox和VMware Workstation 15以下版本都会运行不稳定。VMware Workstation 15.5及以上版本做了兼容适配可以在装好Hyper-V的系统上跑但性能会打折扣。如果必须用VMware可以把Hyper-V先关掉如果主力是Hyper-V建议放弃VMware不要两个并行用。5.5 虚拟机速度慢宿主机内存一直满这是个高频问题尤其在新手的机器上。表现是虚拟机一旦开机宿主机内存就飙到90%以上操作卡顿明显。原因和解决办法内存分配不合理创建虚拟机时分了8GB甚至更多宿主机自己只剩下很少的内存。建议虚拟机内存和自己的物理内存总量控制在物理内存的50%到60%以内留足宿主机运行空间。动态内存没开在虚拟机设置里勾选“动态内存”并设置一个合理的最小值和最大值。比如物理机32GB虚拟机最小1GB、最大8GB这样虚拟机空闲时不会占满内存。CPU核心数不要贪多CPU少分配几个核对虚拟机性能影响不大但对宿主机响应速度影响巨大。一般不会超过物理核心数一半为好。还有一个冷门技巧在虚拟机设置里把“内存缓冲”调整为50%可以在一定程度上缓解虚拟机内存占用过高的问题。5.6 虚拟机系统运行一段时间后时间漂移严重这个现象主要出现在Linux虚拟机里虚拟机里执行date发现时间比宿主机慢了几分钟甚至几个小时。原因是Hyper-V和Linux的时间同步机制问题。解决方法安装并启用系统服务chrony或ntp让虚拟机自己从互联网同步时间。在Hyper-V设置里将“集成服务”中的“时间同步”关闭避免Hyper-V的时间同步服务和虚拟机内部的时间同步服务打架。6. 一些真正好用的进阶操作到这里虚拟机基本已经跑起来了可以正常用了。但如果你想让虚拟机的使用体验更进一步下面几个操作是我在实际使用中觉得特别有价值的。6.1 开启嵌套虚拟化所谓嵌套虚拟化就是在虚拟机里再开一个虚拟机。很多人以为Hyper-V不支持但实际上Windows Server 2016和Windows 10 1709之后的Hyper-V都支持嵌套虚拟化。开启方法是在PowerShell里执行一条命令Set-VMProcessor -VMName 你的虚拟机名称 -ExposeVirtualizationExtensions $true执行完成后重启虚拟机在虚拟机里就能检测到虚拟化指令了。这意味着你可以在虚拟机里再跑一个WSL2、再跑一个Docker甚至再装一个Hyper-V。实际应用场景举例你做开发时需要在一台“干净”的Windows虚拟机里测试Docker容器的部署流程用嵌套虚拟化直接在虚拟机里跑Docker不用再开一台物理机效率翻倍。6.2 用检查点做系统快照Hyper-V里有一个机制叫“检查点”Checkpoint类似VMware的快照功能。在虚拟机运行时右击虚拟机 → 检查点可以生成一个当前状态的历史快照。这个功能特别适合测试场景。比如你准备在虚拟机里装一个不上不下的软件担心把系统搞坏装之前在干净状态下建一个检查点装完有问题直接恢复检查点秒回到安装前状态。Hyper-V的检查点是实时的不需要关闭虚拟机这一点比VMware原生功能方便VMware需要在开快照之前关系统或启用时间冻结选项。注意检查点会占用不少磁盘空间别建太多用完就删。6.3 导出和移动虚拟机如果要把虚拟机迁移到另一台电脑上不需要重装。在Hyper-V管理器里右击虚拟机 → 导出会生成一个包含虚拟磁盘、配置文件、检查点快照的完整文件夹。复制到目标机器导入即可。导入时注意选择“复制虚拟机”模式这样会生成一份完全独立的副本选择“使用现有ID”则保持原虚拟机的机器ID适合需要保持系统激活状态或软件授权的场景。6.4 宿主机的文件给虚拟机共享不要再用U盘或者网络传文件了Hyper-V自带一个很隐蔽的共享目录功能——虚拟机的设置 → “管理” → “共享文件夹”。实际上这个功能在Windows系统之间支持得比较好Linux系统也可以配置SMB共享。最简单的办法还是在宿主机上直接右键文件夹 → 属性 → 共享 → 共享给Everyone然后在虚拟机里通过文件资源管理器输入宿主机IP来访问。如果你用的是外部交换机模式这个非常顺畅跟在局域网里访问其他电脑一样。7. 最后几句实在话用了这么多年Hyper-V我的实际感受是它没有VMware那样花里胡哨的界面和一大堆引导教程第一次上手需要一点耐心但一旦你习惯了它的“高冷”会发现它是真的省资源、真的稳定。尤其是长期挂一个Linux服务器虚拟机连续跑几个月不重启Hyper-V的稳定性比VMware高出不少。最后再分享一个实用小技巧如果你在虚拟机里跑的服务比较重要建议在宿主机设置一个开机自启脚本用PowerShell命令Start-VM -Name 虚拟机名称来让虚拟机和宿主机一起启动。这样一旦宿主机断电重启虚拟机也会自动恢复运行不用每次都手动开。如果看完这篇发现你的Windows版本是家庭版、真的没有Hyper-V但你又不想付费升级那可以退而求其次用VirtualBox它免费、跨平台、支持的系统多虽然性能不如Hyper-V但日常工作学习完全够用。总之虚拟化这个技能是现在搞技术的人绕不开的基本功不管用哪套方案先把一台虚拟机跑起来再说。
返回列表