本周,我把家里的 Hypervisor 8 主机中的Windows11完整迁移到了 Proxmox VE 9.2.3。
说起为什么要迁移这台Windows11,那都是Intel CC150惹的祸,功耗随着时间的增加而增加。
迁移过程还算顺利,Windows 11 虚拟机也成功导入过来。我花了不少时间把 CPU 类型、磁盘控制器、VirtIO 驱动等参数都优化了一遍,对比一下功耗表,不错,还是睿频好,功耗低,用电量也低。
然后,就在迁移完成后的第四天,我习惯性打开 PVE 的磁盘管理看了一眼健康状态。什么玩儿,磁盘剩余寿命只剩 16%,而且 CRC 错误计数数值为5。我当时的第一反应是:不对,我记得磁盘标签写的剩余87%,难道我插错盘了?再一寻思,这是三年前写的了,时间如白驹,电子产品的终点就是电子垃圾,得了,这块盘不稳了,哎,又是钱。

虽然这块盘之前运行的时候兢兢业业,从还没小毛病,企业盘嘛,就是耐用,然后闲置了,本月PVE扩容就装上去了,当时磁盘结果是PASS,没想到Windows11迁移完成后,监控数据直接把问题摆在了明面上。我不敢再拖,立刻决定把这台 Windows 11 虚拟机的重要数据迁移到另一块健康磁盘上,虽然我是整机备份方案,能迁移就不要选还原,费时间。
迁移采用PVE自带方案:
- 1.关闭虚拟机
- 2.分离磁盘
- 3.迁移磁盘到新LVM-Thin
- 4.重新添加磁盘
- 5.开机验证
迁移过程开始得很顺利,我用 PVE 的 Web 界面把虚拟磁盘做了克隆和迁移。因为是老盘,我就直接操作完成后选择了擦除。启动 Windows 11 后,PVE提示一个磁盘不存在,怎么也进不去系统。

我再仔细一瞅:咋还有一个EFI 分区没有跟着迁移!容量不大,只有4MB,但是已经不存在了,这事办的,我是一惊,没有回头路,都格式化了。
原虚拟机在 ESXi 的时候,EFI 启动文件是直接写在系统盘里的。迁移到 PVE 后,我只关注了数据盘,却把 EFI 分区留在了被移除的旧磁盘上。系统自然找不到启动文件,直接挂了。那一刻我真是很无语,难道今天一定要采用还原才能过门了?
不然就看看能不能用PE修复一下,先把作废的EFI磁盘分离,成功,移除时,提示报错,原始磁盘LVM不存在。web界面完全无法操作了,卡住了,一环扣一环,此路不通那就换条路,那就换shell看看:
先备份配置:
cp /etc/pve/qemu-server/100.conf /etc/pve/qemu-server/100.conf.bak
编辑配置文件:
nano /etc/pve/qemu-server/100.conf
删除未使用的磁盘:
unused0: vm_disk:vm-100-disk-0
为什么一个已经不存在的卷和磁盘,即使已经分离了,也能直接让一台vm不能开机呢?
必须说起:为什么 qm unlink --force 会失败
Proxmox 在执行 qm unlink 时,即使加了 --force,仍然会尝试删除底层存储卷(如果该卷属于某个存储池)。当底层 LVM 卷组已经不存在时,lvremove 命令找不到卷组,整个操作就中断了,连配置文件的修改也未能完成。
这是一个已知的尴尬情况:对于已经物理移除的磁盘,qm 工具无法干净地只删除配置项,必须手动编辑配置文件。
那么,这算是完成了修复的第一步,但是EFI磁盘真的是没有,那用PE修复,那是不是还有其他方法呢?
于是我开始检索解决方案。最终找到的办法是:在 PVE 里给这台 Windows 11 虚拟机额外添加一个 EFI 磁盘,然后把启动文件重新注入进去。具体操作是:在 PVE Web 界面给虚拟机添加一个新的 EFI Disk。

这么直接了当,难道是PVE知道我们会经常干这事儿?
折腾了1个多小时后,虚拟机终于成功启动了。这次事件让我更加意识到,做 homelab 也好,生产环境也好,备份很重要,用心去做事,要仔细,看清楚再做,如有提示,看清楚再点击确认,不要觉得好像是没事了。
硬盘寿命 16% + CRC 错误已经亮起红灯,巧不巧啊,618要来了,我本来是没打算买硬盘的。
