考完期末考这天修了一晚上 PVE 上的虚拟机启动不了的问题。起因是更换了系统盘,将原来的机械硬盘换成了一个 SSD,重装了 PVE,发现虚拟机无法开机。这期间查询了大量论坛,尝试了各种各样的方法,最后终于以非常简单的方式解决,决定写一写记录一下,避免以后再遇到,因为这个问题单纯看 PVE 的报错竟然是完全和问题原因不沾边的!

更换系统盘前,将虚拟机 vm1 迁移到了另一个节点上,更换系统盘重装系统后,将 vm1 迁移回了这台物理机上,启动虚拟机,得到了如下报错:

shell
TASK ERROR: KVM virtualisation configured, but not available. Either disable in VM configuration or enable in BIOS.

按照报错的指引,进入 BIOS 查看了设置,设置是正确的,有启用虚拟化支持。

然后在网络上查询了大量资料、论坛讨论记录,均无法解决。这个过程尝试了包括:

  • apt upgrade 升级

  • 开新虚拟机

  • 重装系统(PVE)

  • 在虚拟机 Option 中取消 KVM hardware Virtualization 的启用,这样就没有使用 KVM 技术,虚拟机性能是会更差的。但是启动 vm1 发现虚拟机一直重启,对新虚拟机是有如下报错:

    shell
    Error: Unknown device type.
    can't create interface fwln306i0 - command '/sbin/ip link add name fwln306i0 mtu 1500 type veth peer name fwpr306p0 mtu 1500' failed: exit code 2
    kvm: -netdev type=tap,id=net0,ifname=tap306i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown: network script /var/lib/qemu-server/pve-bridge failed with status 512
    TASK ERROR: start failed: QEMU exited with code 1

上述方法都没有解决问题。

真正发现问题原因是我在查看 BIOS 和重装系统后,发现每次开机启动 PVE 都有这样的报错:

PVE开机报错

经过询问大佬,才知道,我们更换系统盘后,由于仍想利用旧的机械硬盘,机械盘仍然插在物理机上。拔掉旧的盘之后问题就解决了。

PVE 采用 LVM,产生了逻辑卷冲突,导致了上图的报错,至于为什么会有什么关于虚拟化的报错,我们就不太清楚了,但是因为这个奇怪的报错我们浪费了两三个小时......