Hyper-V 基本使用
无论你是软件开发人员、IT 专业人员还是技术爱好者,你们中的许多人都需要运行多个操作系统。 Hyper-V 让你可以在 Windows 上以虚拟机形式运行多个操作系统。
微软官方文档
https://learn.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/
概括
Hyper-V 需要:
- 具有二级地址转换 (SLAT) 功能的处理器。
- Windows 10(专业版或企业版)或 Windows 11(专业版或企业版)。
- CPU 支持 VM 监视器模式扩展(Intel CPU 上的 VT-c)。
- 最少 4 GB 内存。
和服务器版本区别
Windows 上的 Hyper-V 中和在运行于 Windows Server 上的 Hyper-V 中区别:
仅在 Windows Server 中可用的 Hyper-V 功能:
- 将虚拟机从一台主机实时迁移到另一台主机
- Hyper-V 副本
- 虚拟光纤通道
- SR-IOV 网络
- 共享的 .VHDX
仅在 Windows 中可用的 Hyper-V 功能:
- 快速创建和 VM 库
- 默认网络(NAT 交换机)
限制
- 依赖于特定硬件的程序无法在虚拟机中正常运行。
- 对延迟敏感的高精度应用程序在主机中运行时也可能会出现问题。
启用虚拟化后,主机操作系统也像来宾操作系统一样在 Hyper-V 虚拟化层之上运行。
但主机操作系统与来宾操作系统的不同之处在于,它可以直接访问所有硬件,这意味着具有特殊硬件需求的应用程序仍然可以在主机操作系统中正常运行。
启用
管理员身份 使用 PowerShell 启用 Hyper-V
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
部署映像服务和管理工具 (DISM) 可帮助配置 Windows 和 Windows 映像。
DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V
通过“设置”启用 Hyper-V 角色
- 导航到“控制面板”。
- 选择“程序”,然后选择“程序和功能”。
- 选择“打开或关闭 Windows 功能”。
- 选择“Hyper-V”,然后选择“确定”。
创建虚拟机
图形化的很快就创建完成,注意要关闭安全启动。
关于安全启动和第一二代虚拟机的区别。
- https://learn.microsoft.com/zh-cn/windows-server/virtualization/hyper-v/plan/Should-I-create-a-generation-1-or-2-virtual-machine-in-Hyper-V
- https://learn.microsoft.com/zh-cn/previous-versions/windows/it-pro/windows-8.1-and-8/dn486875(v=ws.11)
一代支持大部分的操作系统,但不支持64位系统;二代支持更大启动卷和安全启动
管理员身份 使用 PowerShell 创建虚拟机
# Set VM Name, Switch Name, and Installation Media Path.
$VMName = 'TESTVM'
$Switch = 'External VM Switch'
$InstallMedia = 'C:\Users\Administrator\Desktop\en_windows_10_enterprise_x64_dvd_6851151.iso'
# Create New Virtual Machine
New-VM -Name $VMName -MemoryStartupBytes 2147483648 -Generation 2 -NewVHDPath "D:\Virtual Machines\$VMName\$VMName.vhdx" -NewVHDSizeBytes 53687091200 -Path "D:\Virtual Machines\$VMName" -SwitchName $Switch
# Add DVD Drive to Virtual Machine
Add-VMScsiController -VMName $VMName
Add-VMDvdDrive -VMName $VMName -ControllerNumber 1 -ControllerLocation 0 -Path $InstallMedia
# Mount Installation Media
$DVDDrive = Get-VMDvdDrive -VMName $VMName
# Configure Virtual Machine to Boot from DVD
Set-VMFirmware -VMName $VMName -FirstBootDevice $DVDDrive
嵌套虚拟化
嵌套虚拟化是可以让你在 Hyper-V 虚拟机 (VM) 中运行 Hyper-V 的一项功能。
例如,嵌套虚拟化可用于:
- 在嵌套 VM 中运行应用程序或仿真器
- 在 VM 上测试软件发行版
- 减少训练环境的部署时间
对容器使用 Hyper-V 隔离
先决条件
- 采用 VT-x 和 EPT 技术的 Intel 处理器
Hyper-V 主机必须是 Windows Server 2016 或更高版本,或者 Windows 10 或更高版本。
VM 配置版本为 8.0 或更高版本。 - AMD EPYC/Ryzen 处理器或更高版本
Hyper-V 主机必须是 Windows Server 2022 或更高版本,或 Windows 11 或更高版本。
VM 配置版本 9.3 或更高版本。
Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
直通显卡
NVIDIA GeForce 其实是理论上是可以使用『显卡直通』的(皮衣刀客:加钱上 Quadro 给你直通驱动),反观 Intel 的 SR-IOV 就很实在,但是核显的性能有时候不一定够用,所以就需要独显直通了,正好 Hyper-V 的 vGPU 是可以满足日常家用的需求的。
Hyper-V硬件直通需要满足以下几个条件:
- 必须使用Windows Server Hyper-V、Windows 10 20H1+ Pro
- 硬件支持IOMMU (Intel VT-d / AMD-Vi / ARM SMMU)
- 设备支持硬件直通,如NVIDIA GeForce系列家用显卡就不受支持(2021年4月更新的英伟达驱动据说移除了GeForce显卡的直通限制)
下面以Windows Server 2022系统为例,使用前先检查BIOS开启IOMMU (Intel VT-d / AMD-Vi / ARM SMMU) :
curl -o SurveyDDA.ps1 https://raw.githubusercontent.com/MicrosoftDocs/Virtualization-Documentation/live/hyperv-tools/DiscreteDeviceAssignment/SurveyDDA.ps1 .\SurveyDDA.ps1
All of the interrupts are line-based, no assignment can work
. 红色代表不被支持And it has no interrupts at all -- assignment can work
.绿色支持直通。PCIROOT(0)#PCI(0504)
硬件的位置路径
这里看看就可以了,多数显示不支持的设备也能直通成功,比如:NVIDIA GetForce GTX970显卡,也是能直通成功的。
- 获取直通设备的位置路径
在设备管理器中,右键查看属性,找到详细信息,获取位置路径 - 设备管理器里禁用准备直通的设备
- .通过Hyper-V管理器,完全关闭虚拟机。
执行如下命令
# 变量赋值$locationpath需要直通硬件的位置路径,$VmName直通的指定虚拟机名称
$locationpath = 'PCIROOT(0)#PCI(1F06)'
$VmName = 'openwrt'
# 卸载硬件
Dismount-VMHostAssignableDevice -LocationPath $locationpath -Force
# 直通设备的虚拟机不能被暂停或热迁移,所以自动关机动作必须为 ACPI shutdown 或者硬关机
Set-VM -Name $VmName -AutomaticStopAction TurnOff
# 将设备添加给指定虚拟机
Add-VMAssignableDevice -VMName $VmName -LocationPath $locationpath
# 查看虚拟机直通设备情况
Get-VMAssignableDevice -VMName openwrt
图形化
实现Hyper-V离散设备分配功能的图形界面工具。A
https://github.com/chanket/DDA
参考
【Windows使用】之--Hyper-V网卡、显卡直通等PCIe硬件直通
https://blog.vlinyu.com/archives/windows-hyper-v-discrete-device-assignment-dda
Hyper-V 显卡直通(vGPU)
https://oyo.moe/blog/88
https://jasper1024.com/jasper/ioubn7891wc/
https://blog.shigure.fun/laptop_gpu_hyperv/
A work-in-progress project dedicated to making GPU Paravirtualization on Windows Hyper-V easier!
快速直通
https://github.com/jamesstringerparsec/Easy-GPU-PV