虚拟化平台里跑 Windows 11,这件事本身不新鲜,但真正动手过的人都知道,坑几乎全集中在几个固定位置:虚拟化平台对 TPM 2.0 的模拟、CPU 型号与指令集的匹配、磁盘控制器驱动的加载时机、以及安装完成后那套 VirtIO 驱动的补装顺序。Proxmox VE(下称 PVE)作为基于 Debian 的开源虚拟化方案,底层是 KVM + QEMU,功能上完全撑得起 Windows 11 的硬件要求,但它的默认配置是给 Linux 虚拟机优化的,直接拿默认参数装 Windows 11,大概率卡在"这台电脑无法运行 Windows 11"的检测页,或者装完发现没有网卡、磁盘性能拉胯。
这篇内容面向的是已经装好 PVE、想在上面跑一台稳定 Windows 11 虚拟机的朋友,不管你是想搭一个隔离的办公环境、跑一些只有 Windows 才有的行业软件,还是做测试验证,下面的流程都能直接照着走。我会把每一步背后的原因讲清楚——为什么 CPU 类型要选 host、为什么磁盘要先挂 VirtIO 再补驱动、为什么 TPM 要单独建一个存储卷,这些"为什么"才是你以后排错时的底气。全文基于 PVE 8.x 的 Web 管理界面操作,命令行部分会单独标注,新手可以纯图形界面完成,老手可以直接跳到命令段落抄配置。
1. 动手之前:PVE 侧的三项前置确认
很多人虚拟机建到一半失败,回头排查发现是宿主机层面就没准备好。装 Windows 11 之前,有三件事必须先确认,否则后面全是无用功。
1.1 确认 CPU 虚拟化与嵌套支持已开启
PVE 跑在物理机上,前提是 BIOS/UEFI 里已经打开了 VT-x(Intel)或 AMD-V(AMD)以及 VT-d/IOMMU。这一步在装 PVE 时通常已经处理过,但如果你是从别人手里接过来的机器,或者用的是某些品牌整机,值得再核对一遍。登录 PVE 的 shell,执行:
egrep -c '(vmx|svm)' /proc/cpuinfo返回值大于 0 说明 CPU 虚拟化标志位可见。再确认 KVM 模块加载正常:
lsmod | grep kvm正常应该能看到kvm_intel或kvm_amd。如果这里为空,说明虚拟化没启用或者被其他虚拟化层占用了(比如宿主机本身跑在另一个虚拟机里但没开嵌套),这种情况 Windows 11 虚拟机要么起不来,要么性能惨不忍睹。
提示:如果你的 PVE 本身是跑在另一台虚拟化平台上的"套娃"环境,必须在最外层开启嵌套虚拟化,否则 Windows 11 的 TPM 模拟和部分指令会异常。生产环境不建议套娃,测试环境可以接受。
1.2 存储池的类型决定了虚拟磁盘的性能上限
PVE 支持多种存储后端:目录式(dir)、LVM、LVM-thin、ZFS、Ceph 等。装 Windows 11 我一般推荐LVM-thin 或 ZFS,原因是它们支持精简置备和快照,Windows 系统盘动辄几十 GB,精简置备能省下大量空间,快照则让你在装驱动、改配置前随手留个还原点。
在 PVE 界面左侧点"数据中心 → 存储",看一眼你打算放虚拟磁盘的存储,确认"内容"一栏勾选了"磁盘映像"。如果是 ZFS,还要注意是否开了压缩(compression=on 对 Windows 系统盘收益明显,文本和系统文件压缩率不错,几乎无性能损失)。这一步不需要改什么,但心里要有数:你把虚拟机磁盘放在机械盘组成的 dir 存储上,和放在 NVMe 组成的 ZFS 池上,体验是两个世界。
1.3 准备好 Windows 11 安装镜像与 VirtIO 驱动镜像
需要两个 ISO:一个是 Windows 11 官方安装镜像,另一个是VirtIO 驱动镜像(virtio-win.iso)。后者是整套方案的关键,PVE 默认的虚拟硬件对 Windows 来说"不认识",磁盘和网卡都需要 VirtIO 驱动才能发挥性能。把这两个 ISO 上传到 PVE 的 ISO 存储里,界面上传即可,路径通常是/var/lib/vz/template/iso/。
注意:Windows 11 安装镜像建议用较新的版本,老版本镜像在检测 TPM 和 Secure Boot 时行为略有差异。VirtIO 驱动镜像也要用较新的,里面包含了
vioscsi(磁盘)、NetKVM(网卡)、Balloon(内存气球)、viostor等驱动,装系统时只需要前两个,其余装完再补。
2. 创建虚拟机:参数逐项拆解与取舍逻辑
点右上角"创建虚拟机",PVE 会弹出一个分步向导。这个向导的默认值对 Linux 友好,对 Windows 11 需要改好几处,我按步骤说,重点讲每个参数为什么这么选。
2.1 常规与操作系统:机型选 q35,别用默认的 i440fx
"常规"页填名称、VM ID 即可,没什么讲究。到"操作系统"页,客户机操作系统选"Microsoft Windows",版本选"11/2022/Server 2022"这一档。关键在机型(Machine):默认是i440fx,必须改成q35。
原因很直接:Windows 11 要求 UEFI 启动 + TPM 2.0 + Secure Boot,而i440fx是传统 BIOS 时代的芯片组模型,对 UEFI 和 PCIe 的支持不完整,TPM 设备挂上去也可能识别异常。q35模拟的是现代 Intel 芯片组,原生支持 PCIe 总线和 UEFI,是 Windows 11 虚拟机的正确底座。这个选择在创建后虽然能改,但改机型相当于换主板,Windows 会认为硬件大变,可能触发重新激活甚至蓝屏,所以创建时就定好。
2.2 磁盘:总线选 SCSI + VirtIO SCSI 控制器
"磁盘"页是新手最容易踩坑的地方。默认总线可能是 SATA 或 IDE,性能差且不支持 TRIM。正确做法是:
- 总线/设备:SCSI
- 控制器:VirtIO SCSI single(或 VirtIO SCSI)
- 存储:选你 1.2 节确认过的池
- 磁盘大小:Windows 11 官方最低 64GB,实际用起来建议80GB 起步,系统更新、页面文件、临时文件加起来很容易吃掉 40GB 以上
- 缓存:Write back(有 UPS 或能接受断电风险时)或None(更安全,依赖存储自身缓存)
- 丢弃(Discard):勾选,让 Windows 的 TRIM 指令能透传到存储层,对 SSD 寿命和长期性能有好处
- SSD 仿真:勾选,让 Windows 认为这是固态盘,会启用相应的优化策略
这里解释一下为什么用 SCSI 而不是 VirtIO Block:VirtIO SCSI 支持热插拔、支持 SCSI 命令透传(TRIM 就靠它),而 VirtIO Block 是更轻量的块设备,性能略高但功能少。对 Windows 11 这种需要 TRIM 和良好兼容性的系统,VirtIO SCSI 是更稳的选择。
提示:创建时磁盘先按 VirtIO SCSI 挂上,但 Windows 安装程序默认没有这个驱动,会看不到磁盘。解决办法在下一节讲——安装时手动加载驱动,这是整个流程里最关键的一步。
2.3 CPU:类型必须选 host,核心数按需给
"CPU"页有两个关键项。类型(Type)默认是kvm64,这是一个兼容性优先的通用 CPU 模型,缺少很多现代指令集(如 AVX2、部分 SSE4 指令),Windows 11 的一些组件和软件会因此报错或性能异常。必须改成host,让虚拟机直接透传宿主机的 CPU 特性。
代价是:host 模式下虚拟机绑定了当前宿主机的 CPU 特性,如果你做集群迁移,目标宿主机 CPU 较老可能无法启动。单机环境或同构集群里,host 是最优解。核心数方面,给2 到 4 个 vCPU是甜点区,超过物理核心数会引发调度争抢,反而变慢。类型(Type)下面的"类别"保持默认即可。
2.4 内存与 Balloon:给足基础值,气球设备留余地
内存给4GB 起步,8GB 舒适。Windows 11 本身空闲占用就在 2.5GB 到 3.5GB 之间,4GB 会频繁触发页面文件交换。勾选"Ballooning 设备"可以让 PVE 在宿主机内存紧张时动态回收虚拟机内存,但 Windows 对气球驱动的响应不如 Linux 积极,实际收益有限,内存充足的宿主机可以不勾,避免不必要的复杂度。
2.5 网络:模型选 VirtIO,半虚拟化才能跑满带宽
"网络"页的模型默认可能是 Intel E1000,这是模拟的千兆网卡,兼容性好但性能一般。改成VirtIO(半虚拟化),配合后面要装的 NetKVM 驱动,能跑到接近线速,CPU 占用也低得多。桥接选vmbr0(默认网桥),防火墙按需。
2.6 最后一步:别急着点完成,先补 TPM 和 EFI
向导最后有个"确认"页,很多人直接点完成,结果虚拟机没有 TPM,Windows 11 安装时卡在硬件检测。正确做法是:先点完成创建虚拟机,然后立刻去硬件页补两样东西。
第一样是EFI 磁盘:选中虚拟机 → 硬件 → 添加 → EFI 磁盘,存储选和系统盘同一个池,预注册密钥选"是"(这就是 Secure Boot 的密钥注册)。没有 EFI 磁盘,虚拟机走的是传统 BIOS,Windows 11 直接拒绝安装。
第二样是TPM 状态:硬件 → 添加 → TPM 状态,版本选v2.0,存储同样选一个支持快照的池。TPM 在 PVE 里是以一个特殊卷的形式存在的,所以必须放在支持卷的存储上(LVM-thin、ZFS、dir 都行,但要注意 dir 存储需要支持 qcow2)。
注意:EFI 磁盘和 TPM 状态都建好之后,去"选项"页确认"引导顺序"里系统盘在前,且 BIOS 是 OVMF(UEFI)。有些版本创建后默认还是 SeaBIOS,需要手动在选项里把"BIOS"改成 OVMF (UEFI)。
3. 安装阶段:加载 VirtIO 驱动是唯一的硬门槛
虚拟机配置好了,挂上 Windows 11 ISO 和 virtio-win ISO,启动。前面几步都是顺的,直到安装程序走到"你想将 Windows 安装在哪里"——列表空空如也,提示找不到驱动器。这不是 bug,是 Windows 安装程序不认识 VirtIO SCSI 控制器。
3.1 在安装界面手动加载 vioscsi 驱动
在"找不到驱动器"的界面,点"加载驱动程序"→"浏览",此时会弹出文件浏览窗口。这里有个细节:你需要先让安装程序能看到 virtio-win 这个光驱。如果创建虚拟机时只挂了一个 CD/DVD 设备,需要先去硬件页再加一个 CD/DVD,挂上 virtio-win.iso,然后回到安装界面刷新。
浏览路径是:virtio-win 光驱 → amd64 → w11(或 w10,取决于驱动镜像版本,新版镜像里 w11 目录存在就用 w11,没有就用 w10,驱动是通用的)。选中后安装程序会列出可用的驱动,勾选VirtIO SCSI 控制器(对应 vioscsi),下一步,磁盘立刻出现。
这一步的意图值得说透:Windows 安装程序在启动时只加载了内置的存储驱动,VirtIO SCSI 是半虚拟化设备,不在内置列表里,所以必须手动喂驱动。这也是为什么前面强调磁盘总线选 SCSI 而不是 SATA——SATA 能被安装程序直接识别,但性能差且不支持 TRIM,为了省这一步而选 SATA,是捡了芝麻丢西瓜。
3.2 分区与安装:让安装程序自己分,别手动折腾
磁盘出现后,直接选中未分配空间点下一步,让 Windows 自己创建 EFI 分区、MSR 分区和系统分区。手动分区容易漏掉 EFI 分区导致装完无法引导。安装过程会重启一到两次,第一次重启时记得在 PVE 硬件页把 Windows ISO 从光驱里"弹出"(或者调整引导顺序让硬盘优先),否则可能又从 ISO 启动,陷入循环。
3.3 首次进入系统前的 OOBE 绕过考量
Windows 11 的 OOBE(开箱体验)阶段会强制要求联网和微软账户。在虚拟机里,此时网卡驱动还没装(VirtIO 网卡 Windows 不认识),系统会显示"没有网络连接",反而卡在联网检测页。这里有两个处理思路:
一是先在虚拟机里临时把网卡模型改成 E1000(Windows 自带驱动),完成 OOBE 后再改回 VirtIO 并装驱动。二是用 OOBE 的本地账户绕过方式(断网状态下按 Shift+F10 调出命令行,执行特定命令跳过联网检查)。第一种更省心,改网卡模型在关机状态下操作,改完开机即可,OOBE 走完再换回 VirtIO。
提示:改网卡模型前务必关机,热改可能导致设备状态异常。改回 VirtIO 后,Windows 设备管理器里会出现一个带感叹号的以太网控制器,这就是待装驱动的 VirtIO 网卡。
4. 装完系统之后:驱动补全与性能调优
系统装好、能进桌面,只完成了一半。VirtIO 驱动镜像里还有网卡、气球、串口等驱动没装,磁盘性能也没调优,这一步做完,虚拟机才算真正可用。
4.1 用 virtio-win-guest-tools 一次性补齐驱动
最省事的办法是挂载 virtio-win.iso 后,进光驱根目录运行virtio-win-guest-tools.exe,它会自动安装所有 VirtIO 驱动和 QEMU Guest Agent。装完重启,设备管理器里的黄色感叹号应该全部消失。如果某个驱动没装上,可以手动指定:设备管理器 → 右键未知设备 → 更新驱动 → 浏览到光驱对应目录(网卡在NetKVM/w11/amd64,气球在Balloon/w11/amd64)。
QEMU Guest Agent 值得单独提一句:装上它之后,PVE 才能获取虚拟机的 IP 地址、执行优雅关机(而不是直接断电)、做文件系统一致性快照。在 PVE 硬件页给虚拟机添加"QEMU Agent"设备(如果创建时没加),然后在 Windows 里确认服务QEMU Guest Agent是运行状态。
4.2 磁盘与内存的性能微调
驱动齐了之后,回到 PVE 硬件页做几项微调。磁盘的"丢弃"(Discard)如果创建时没勾,现在勾上;"IO thread"可以勾选,让磁盘 IO 走独立线程,多磁盘场景下减少主线程阻塞;缓存模式如果是 Write back,确认宿主机有断电保护,否则建议改 None。
内存方面,如果之前没开 Balloon,且宿主机内存充裕,可以不开;如果开了,在 Windows 里确认气球服务正常。CPU 类型确认是 host,如果之前为了兼容改过 kvm64,现在改回 host 并重启,性能会有可感知的提升。
4.3 关闭 Windows 侧的拖累项
虚拟机里的 Windows 11 有几项默认行为对虚拟化环境不友好。一是快速启动(Fast Startup),它让关机变成休眠,PVE 侧执行关机时可能等不到真正的关机信号,建议在电源选项里关掉。二是休眠,虚拟机不需要休眠,关掉能省下和内存等大的磁盘空间。三是系统还原,如果 PVE 侧已经用快照做备份,Windows 自带的还原点可以关掉,省空间。
另外,Windows 11 的动画和透明效果在虚拟机里意义不大,在"性能选项"里选"调整为最佳性能",界面响应会明显更跟手。这些不是必须,但做了之后体验提升是实打实的。
5. 踩过的坑与排查链路实录
上面是顺利路径,实际动手时总会遇到意外。这一节记录几个我实际遇到过、且网上资料比较零散的问题,把排查过程完整写出来,方便你对照。
5.1 安装时提示"此电脑无法运行 Windows 11"
这个提示出现的位置在安装程序刚启动不久。原因通常有三个:没加 TPM、没加 EFI 磁盘、或者机型还是 i440fx。排查顺序是:先看硬件页有没有 TPM 状态(版本 2.0)和 EFI 磁盘;再看选项页 BIOS 是不是 OVMF;最后看机型是不是 q35。三者缺一不可。
有一种隐蔽情况:TPM 加了,但存储池不支持快照或卷,TPM 卷创建失败,硬件页看起来有 TPM 但实际是坏的。判断方法是看 TPM 那一行的状态,或者去 PVE 的 shell 里ls /dev/pve/看有没有对应的卷。遇到这种情况,把 TPM 删掉,换一个 LVM-thin 或 ZFS 存储重建。
5.2 装完系统进桌面,网卡是感叹号
这是 VirtIO 网卡没装驱动的典型表现。如果之前为了过 OOBE 临时用了 E1000,现在改回 VirtIO 后必然出现。解决就是 4.1 节的驱动安装。如果装了 guest-tools 还是感叹号,去设备管理器看设备状态码,代码 10 通常是驱动没匹配上,手动指定NetKVM/w11/amd64目录即可。
5.3 虚拟机启动卡在 UEFI Shell
开机直接进 UEFI Shell,说明 EFI 分区里没有可引导的 Windows 引导文件,或者引导顺序错了。先检查选项页的引导顺序,确保系统盘(通常是 scsi0)在第一位。如果顺序对还是进 Shell,可能是安装时 EFI 分区没建好,需要重新安装或者用 Windows 安装盘的修复功能重建引导。
5.4 磁盘性能明显偏低
如果感觉虚拟机里磁盘操作卡顿,按这个顺序查:一看磁盘总线是不是 SCSI + VirtIO SCSI,SATA 或 IDE 会慢一个数量级;二看缓存模式,None 模式下如果存储本身没缓存,写性能会受限,可以试 Write back;三看是否勾了 Discard 和 SSD 仿真,缺了 TRIM 长期使用后性能会衰减;四看宿主机存储池本身的健康度,机械盘做 RAID 的池子跑 Windows 系统盘本来就吃力。
5.5 关机时 PVE 一直等,最后超时强制断电
这是 QEMU Guest Agent 没装或没运行,PVE 发不出优雅关机指令,只能等超时。装上 guest agent 并确认服务运行,关机就会变成秒级。如果装了还是慢,检查 Windows 的快速启动是否关掉——快速启动会让系统"假关机",agent 收不到真正的关机请求。
6. 快照、备份与长期维护的几个习惯
虚拟机跑起来之后,维护习惯决定了它能不能长期稳定。PVE 的快照和备份是两套机制,用途不同,别混用。
6.1 快照用于短期回滚,备份用于灾难恢复
快照(Snapshot)记录的是某一时刻的磁盘状态,回滚快,但依赖底层存储(LVM-thin、ZFS 支持,dir 存储的 qcow2 也支持),且快照链越长性能越差,不能当备份用。我的习惯是:装驱动前、改重要配置前、装大型软件前各打一个快照,确认没问题后把旧快照删掉,保持快照链不超过两三个。
备份(Backup)是把虚拟机完整导出成文件,存在独立位置,用于磁盘损坏或误删后的恢复。PVE 的备份计划可以设成每周一次,模式选"停止"(关机备份,一致性最好)或"快照"(在线备份,依赖存储支持)。Windows 虚拟机建议用停止模式,避免备份时文件系统不一致。
6.2 定期更新 VirtIO 驱动与 Guest Agent
VirtIO 驱动镜像会更新,新版本修复 bug、提升性能。不必频繁更新,但大版本升级 PVE 后,建议顺手把 guest-tools 重装一遍,保持驱动和宿主机 QEMU 版本匹配。Guest Agent 的版本也要跟得上,否则 PVE 的一些新功能(如更精确的资源监控)可能用不了。
6.3 监控虚拟机资源,别让气球和 CPU 争抢拖垮体验
在 PVE 的虚拟机概要页能看 CPU 和内存的实时曲线。如果发现 CPU 长期打满,先看是不是 vCPU 给多了导致调度争抢,适当减到物理核心数以内;如果内存频繁触顶且开了 Balloon,考虑直接加内存而不是依赖气球回收。Windows 虚拟机对资源波动的容忍度比 Linux 低,给足资源比精细调优更省心。
7. 几个容易被忽略的细节补充
最后补几个零散但实用的点,都是实际操作中总结出来的。
第一,虚拟机名称和主机名别用中文或特殊字符。PVE 的虚拟机名称会出现在存储路径和备份文件名里,中文在某些备份脚本或迁移场景下可能出问题。Windows 的主机名同理,装完系统后在系统属性里改成纯英文。
第二,时间同步。虚拟机默认从宿主机同步时间,但如果装了 Guest Agent,建议在 Windows 里把时间同步源指向一个可靠的时间服务器,避免长期运行后时间漂移影响证书验证等场景。
第三,虚拟光驱用完就弹。Windows ISO 和 virtio-win ISO 挂在光驱里不弹出,一是占着 ISO 文件可能影响存储维护,二是引导顺序没调好的话可能误从 ISO 启动。装完系统后把两个光驱都设成"不使用任何介质"。
第四,串口日志。排查启动问题时,给虚拟机加一个串口设备并配置到文件,能看到更底层的启动信息,比只看屏幕输出有用。这个在 Windows 上收益不如 Linux 明显,但遇到引导问题时是救命稻草。
第五,别在虚拟机里跑对时序敏感的任务。虚拟化环境的时间精度和物理机有差距,音频处理、高频交易这类对时序敏感的场景不适合放在普通虚拟机里,这是虚拟化本身的边界,不是配置能解决的。
整套流程走下来,从创建到调优大概半小时到一小时,熟练之后更快。核心就三件事:q35 + OVMF + TPM 2.0 满足 Windows 11 的硬件门槛,VirtIO SCSI + 手动加载驱动解决磁盘识别,guest-tools 补齐驱动和 agent。把这三件事做对,剩下的都是锦上添花。我自己维护的几台 Windows 11 虚拟机跑了两年多,中间经历过 PVE 大版本升级和存储池扩容,只要驱动和 agent 跟上,稳定性没什么可担心的。