让虚拟机直接通过网络从PXE服务器加载启动镜像,不依赖本地硬盘,从而实现一台物理服务器批量启动多个无盘系统。这套方案常用于网吧无盘、学校机房、企业终端部署等场景,下面从原理到具体操作,一步步拆给你看。
虚拟无盘引导的基本原理
无盘引导并不是什么黑科技,本质上是把传统硬盘启动的“本地磁盘”替换成“网络镜像”,虚拟机启动时,BIOS/UEFI固件通过PXE协议向DHCP服务器请求IP地址,同时获取TFTP服务器上的启动引导文件,之后加载这个引导文件,再由引导文件挂载远程的磁盘镜像,完成操作系统启动。
PXE引导的核心链路
整个链路中会出现三次关键通信:
- 虚拟机网卡发出广播,寻找DHCP服务
- DHCP服务器返回IP地址,同时告知TFTP服务器地址和引导文件路径
- 虚拟机从TFTP下载引导文件,执行后加载远程镜像
这个过程中,虚拟机网卡的启动模式必须设置为“桥接模式”或“自定义NAT”,并且网卡必须勾选“启动时连接”,否则PXE请求无法转发到物理网络。
无盘启动与传统磁盘启动的区别
| 启动方式 | 存储位置 | 部署成本 | 运维复杂度 | 适用场景 |
|---|---|---|---|---|
| 本地硬盘启动 | 虚拟机本机虚拟磁盘 | 低 | 低 | 单机开发测试 |
| 虚拟无盘引导 | 远程NAS/服务器镜像 | 较高 | 中等 | 批量桌面虚拟化、考试机房 |
行业共识认为,无盘虚拟化最大的优势是集中管理与快速分发,你只需更新一个母盘镜像,所有虚拟机下一次启动就会加载最新系统。
虚拟机无盘引导的完整实现步骤
这里以VMware Workstation作为虚拟机平台,配合Serva或Tiny PXE Server搭建环境,整个流程按顺序操作,每一步都有明确目的。
准备无盘引导所需的三类组件
- DHCP服务端:分配IP,同时提供PXE选项(next-server和filename)
- TFTP服务端:提供引导文件,比如pxelinux.0或bootx64.efi
- 存储服务端:通过NFS、iSCSI或CIFS共享镜像磁盘文件
如果你的虚拟机客户端是UEFI引导,务必确认启动文件是EFI格式,Legacy BIOS则使用pxelinux.0,混用会导致卡在PXE引导界面。

配置DHCP和TFTP服务
以Serva为例,安装后进入“TFTP/HTTP”选项卡,将PXE启动脚本启用,关键配置项如下:
- 设置IP池范围,例如
168.10.100-192.168.10.200 - 在“DHCP server”中勾选“Proxy DHCP”
- 指定启动文件为
pxelinux.0,路径对应TFTP根目录
多数情况下,Proxy DHCP比全功能DHCP更安全,因为你可以让现有路由器继续分配IP,只由PXE服务额外响应引导请求,这一步是很多新手在虚拟机无盘引导配置过程中最容易踩坑的地方路由器DHCP已经把IP分配完了,PXE请求却得不到引导地址。
在虚拟机中制作母盘镜像
母盘镜像是所有客户端系统的“原版磁盘”,你可以在同一台宿主机上先创建一个普通虚拟机,装好Windows或Linux系统,再将其虚拟磁盘文件复制一份作为共享镜像。
具体操作为:
- 新建虚拟机,选择“稍后安装操作系统”
- 删除默认的虚拟磁盘,改用现有磁盘文件
- 安装系统后,把虚拟机磁盘设为只读或独立模式
这里有一个关键操作路径:虚拟机设置 → 硬盘 → 独立(Independent) → 持久模式(Persistent),非独立磁盘在快照回滚时会导致镜像覆盖异常,务必避免。
配置虚拟网卡启用PXE启动
在虚拟机设置中找到网卡,选择“桥接模式”,然后在高级选项中,将“唤醒信号”和“PXE启动”都置为开启,如果是VMware Workstation,还可以执行以下命令查看网卡状态:
vmrun -T ws getVirtualMachineNetworking "<虚拟机路径>"
确认网卡类型为e1000或vmxnet3,真实网络环境兼容性更好的是e1000,纯虚拟内部网络用vmxnet3更高效。
修改虚拟机固件启动顺序
这一步尤其重要,进入虚拟机BIOS设置,把网络启动(Network Boot)移到最前面,或者在虚拟机的.vmx文件中追加下面两行配置:
bios.bootOrder = "ethernet0,hdd"
ethernet0.bootProtocol = "pxe"
保存后启动虚拟机,你会看到屏幕出现PXE引导信息,CLIENT MAC ADDR”和“BOOTP REQUEST”,表示虚拟机已经成功发出网络引导请求。
测试从远程镜像启动

镜像服务器准备完成后,虚拟机开机应立即进入系统加载画面,而不是弹出磁盘错误,如果卡在“No boot filename received”,说明DHCP的filename参数没传对,检查TFTP根目录下是否有同名文件。
如果系统启动后蓝屏或读到错误驱动器,多半是虚拟磁盘控制器类型不匹配母盘用的是SATA,而共享镜像挂载时被识别成了SCSI,调整后再试即可。
常见问题与排查思路
不同虚拟化平台的PXE实现细节不同,但排查思路高度一致,按照网络层、引导层、镜像层三层来定位问题,能最快解决问题。
DHCP能分配IP但下载不了引导文件
先ping一下TFTP服务器地址,确认路由通,然后检查防火墙是否放行UDP 69端口,在服务器端用Wireshark抓包,看是否有TFTP Request发出但无应答,绝大多数情况下,这个问题出在防火墙或TFTP根目录路径错误。
虚拟机启动后直接进硬盘系统
这是网卡启动顺序没有生效,重新检查.vmx文件里的bios.bootOrder,确保优先级数值最小的是ethernet0,有些虚拟机默认禁用PXE ROM,需要在虚拟机手动输入Ctrl+R进入网卡配置界面,把PXE选项设为Enabled。
多个虚拟机同时无盘启动速度慢
这属于正常现象,因为TFTP传输速度有限,业界常用方案是使用HTTP协议替代TFTP来下载启动内核,qemu和iPXE均支持,具体操作是:在PXE配置文件中把引导地址从tftp://改成http://,然后让Web服务器提供引导文件,速度能提升数倍。
虚拟无盘引导适合哪种虚拟化环境
如果你用的是Proxmox VE,虚拟无盘引导的实现会更简单,因为Proxmox原生支持iSCSI存储,同样地,在VMware ESXi环境中,通过vSphere虚拟机无盘引导配置,也能实现类似效果。
常用虚拟化平台对比
| 平台 | PXE支持 | 镜像存储方式 | 配置复杂度 | 适合场景 |
|---|---|---|---|---|
| VMware Workstation | 支持,需手动改配置 | 本地/共享NFS | 中等 | 个人测试、教学演示 |
| VirtualBox | 支持,但UEFI PXE较弱 | 共享文件夹或iSCSI | 中等 | 轻量实验室 |
| Proxmox VE | 原生支持 |
ZFS/iSCSI/NFS |
较低 | 生产级无盘集群 |
对于想要低成本体验虚拟无盘引导的用户,我建议先用VirtualBox配合Tiny PXE Server在单台电脑上做实验,跑通了全套流程再迁移到生产环境。
虚拟无盘引导的进阶思路:从虚拟到物理
当你习惯在虚拟机里做无盘引导后,会发现这套逻辑可以无缝延伸到物理机,虚拟机无盘启动和物理机无盘启动的差异只有一个物理机需要网卡ROM自带PXE支持,而虚拟机网卡天然模拟了这个功能,你完全可以在虚拟机里做好无盘环境,然后用同一个镜像给物理机批量部署。
这种“先虚拟后物理”的玩法,目前被相当一部分运维团队采用,他们先在VMware虚拟机里完成驱动封装和镜像优化,再通过iPXE引导物理机启动同一份镜像,这样做的好处是:虚拟机环境便于快照回滚,不会因为一次误操作破坏母盘,而且物理机出现硬件兼容问题时,随时可以回到虚拟机版本对照排查。
常见问题解答
虚拟机无盘引导和普通网络重装系统有什么区别?
网络重装系统是一次性的,安装完后系统写入本地硬盘;而无盘引导是永久的,每次开机都从网络读取镜像,本地硬盘完全不用参与启动,无盘引导镜像可以随时更新和回滚,网络重装无法做到这种灵活性。
虚拟无盘引导对宿主机性能影响大吗?
主要开销集中在网络I/O和内存缓存上,采用固态硬盘存储镜像时,多台虚拟机并发启动的瓶颈在千兆网卡,一般10台以内虚拟机同时启动不会有明显延迟,如果超过20台,建议升级到万兆网络或使用SR-IOV网卡直通。
家用网段可以做虚拟机无盘引导吗?
可以,在家用路由器后面单独挂一台小主机,安装Serva或Tiny PXE Server,虚拟机使用桥接模式就能实现,前提是路由器关闭DHCP的“默认网关冲突”检测,并最好为服务器设置静态IP,避免重启后IP漂移导致PXE引导失败。
虚拟无盘引导的本质是把存储与计算分离,虚拟机只负责计算,所有系统状态都集中保存在镜像服务器上,对于需要批量部署、快速重装、集中管控的场景,这套技术能明显降低维护成本,按照上面步骤从一台虚拟机跑通,你再回头看无盘工作站或考试机房方案时,会发现底层的原理完全一致。
