外观
虚拟机开不了机
适用范围
点 Start 后任务失败、卡住不动,或者虚拟机变成 running 状态但屏幕上什么都没有。
不适用于这些更具体的情况,本页只做分流:
- 报错提示与锁 (lock) 相关 → 虚拟机被锁定
- 是快照或备份任务失败,虚拟机本身能正常开机 → 快照或备份失败
- 虚拟机能开机,但客户机内部没有网络 → 客户机没有网络
- 是直通设备导致的黑屏或 Code 43 → 直通常见问题
开始排查前
先弄清楚三件事,避免做无用功:
- 这台虚拟机之前能正常开机吗? 一直不能开机(新建的)和「昨天还好好的」是两类完全不同的问题。
- 最近有没有改动? 改过配置(BIOS 类型、磁盘总线、CPU 类型)、做过迁移、扩过盘、宿主机是否断电或异常重启过、存储是否有变化。
- 谁在依赖这台虚拟机? 如果上面跑着别人在用的服务,先评估要不要先通知,再决定排查花多长时间。
下面的检查大多是只读的
除了「改回原配置」这一步,本页其余检查都不会碰数据,可以放心按顺序做。
排查步骤
第一步:在命令行直接启动,看完整报错
Web UI 的失败提示常常只有一句话。宿主机 shell 里执行:
sh
qm start <vmid>命令行会把完整错误打出来,按报错内容分流:
| 报错关键字 | 大概率原因 | 下一步 |
|---|---|---|
unable to acquire lock / ... is locked | 虚拟机处于锁定状态 | 到 虚拟机被锁定,不要直接 qm unlock |
存储名 + not found / not online / no such logical volume | 存储不可用 | pvesm status 确认,见下一节 |
Cannot allocate memory / 内存相关 | 宿主机可用内存不够 | 检查其他虚拟机占用、气球驱动设置,或先关掉别的客户机腾内存 |
PCI/设备相关(Device eth0 not found、vfio 相关) | 直通设备不存在或被占用 | 到直通常见问题 |
| 没有报错,命令直接返回成功 | 启动层面没问题,看下面「黑屏」部分 | 见第三步 |
第二步:存储不可用时,先确认范围
sh
pvesm status关注这台虚拟机的磁盘所在的存储,状态是不是 active。
- NFS/SMB 存储掉线:宿主机侧的挂载断了,通常是网络或对端 NAS 的问题,其他用这个存储的虚拟机会一起受影响。
- 本地 LVM-Thin 或 ZFS 报错:可能是空间写满或池本身异常,分别见 local-lvm 满了 和 ZFS 池降级。
- 只有这一台虚拟机受影响,存储本身状态正常:检查这台虚拟机的磁盘条目是否还在(例如被误删、被其他任务占用):
sh
qm config <vmid> | grep -E '^(scsi|sata|virtio|ide)[0-9]'把输出里的卷名拿去和存储里实际存在的卷核对(pvesm list <存储名>)。
第三步:任务返回成功,但没有画面或卡在启动动画
先确认它是不是真的卡住了,而不是还在走 BIOS/引导阶段:
sh
qm status <vmid>看到 status: running 但 Console 里长时间黑屏,检查这几项——这些也是创建虚拟机时反复强调「装完别乱改」的选项:
- Options → Boot Order:光驱或网卡排在了硬盘前面。
- BIOS 类型改过(SeaBIOS ↔ OVMF):系统装的时候是哪种就必须一直是哪种,中途切换基本等于换了引导方式,会直接起不来。
- 磁盘总线改过(比如从 SATA 换成 SCSI):客户机里没有对应驱动,Linux 可能进不去根文件系统,Windows 会蓝屏。
- ISO 还挂着:装完系统忘记弹出安装介质,导致又从安装程序启动。检查
虚拟机 → Hardware → CD/DVD Drive。
UEFI 客户机偶尔需要手动介入
OVMF/UEFI 模式下,如果启动项丢失,可能会停在 EFI Shell。这种情况下通常不是「坏了」,而是需要在 Shell 里手动选择或重建启动项,参考具体系统的 UEFI 修复方法。
第四步:看更详细的日志
sh
journalctl -u qmeventd -n 100 --no-pager
tail -100 /var/log/pve/tasks/active日志里通常能看到 QEMU 进程本身抛出的错误(比如具体哪个设备初始化失败),比 Web UI 的摘要更有用。
第五步:这台虚拟机是 HA 资源
如果它被纳入了高可用管理,反复启动失败会被 HA 判定为 error 状态并停止自动重试,避免无限循环重启浪费资源。
sh
ha-manager status看到对应资源处于 error,先按前面几步排查根因,解决后再让 HA 重新接管,而不是直接反复点 Start。
确认恢复
qm status <vmid>输出status: running。- Console 能看到正常的登录界面,或者能 SSH 进去。
- Web UI 的 Summary 页能看到客户机 IP(说明系统和网络都正常,前提是装了 QEMU Guest Agent)。
- 如果是断电、OOM 或存储抖动引起的,观察一段时间(比如一天)确认不会复发,而不是解决了当下这次就结束。
仍未解决
按 如何有效求助 整理信息,至少准备:
sh
pveversion -v
qm config <vmid>加上 qm start <vmid> 的完整报错、journalctl -u qmeventd 相关片段,以及这台虚拟机磁盘所在存储的配置和状态。