PVE虚拟化实战排错小结

记录日期: 2026-04-08
环境上下文: PVE 9, Proxmox Backup Server (PBS), 群晖 NAS (万兆网络环境)

记录日期: 2026-04-08
环境上下文: PVE 9, Proxmox Backup Server (PBS), 群晖 NAS (万兆网络环境)


1. 存储与网络挂载问题

1.1 PBS 虚拟机如何挂载群晖 NFS 存储?

  • 问题: PVE 宿主机已挂载 NFS,PBS 能直接用吗?
  • 最佳实践: 绕过 PVE 宿主机,在 PBS 虚拟机(Debian)内部直接通过 /etc/fstab 挂载。这样可以避免虚拟磁盘(qcow2/raw)带来的极大小文件性能损耗。

1.2 NFS 挂载后提示权限拒绝 (os error 13 / Operation not permitted)

  • 原因: PBS 底层运行服务使用的是 backup 用户(UID 34),群晖 NFS 的默认权限拦截了该用户的读写和 chown 操作。
  • 解决办法:
    1. 在群晖 NFS 设置中,将对应 IP 的 Squash(映射) 改为 “无映射 (No mapping)”
    2. 在群晖 File Station 中,给共享文件夹新增一条 Everyone 可读写 的权限规则,并应用到子文件夹。
    3. 在 PBS 内重新挂载,并执行 chown -R backup:backup /mnt/nfs_backup

1.3 万兆网络下 NFS 挂载的 fstab 极限优化

  • 优化目标: 榨干万兆带宽,适配 PBS 海量小文件的读写特性。

  • fstab 配置参数:

    1
    10.139.27.3:/volume3/NetBackup /mnt/nfs_backup nfs nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noatime,nodiratime,_netdev,nconnect=16 0 0

    (核心参数:nconnect=16 开启多线程并发,noatime,nodiratime 关停无用时间戳写入极大地减轻 IO)


2. 虚拟机迁移与磁盘报错

2.1 群晖 VMM 虚拟机导出到 PVE 速度极慢

  • 原因: Web 浏览器单线程下载慢,且群晖 CPU 实时转换 vmdk 并打包 ova 极其耗时。

  • 解决办法: 导出时选择“导出到群晖共享文件夹”而非下载到本地。随后在 PVE 宿主机中直接进入该挂载目录,通过 tar -xvf xxx.ova 解压,并用 qm importdisk <VMID> <磁盘文件> <存储池> 导入。

    1
    2
    tar -xvf win2012-ipa-192.168.222.10.ova
    qm importdisk 106 win2012-ipa-192.168.222.10-disk1.vmdk data-zfs

2.2 Linux 虚拟机导入 PVE 后开机报错:找不到 root file system

  • 原因: 原系统内核中未预装 VirtIO SCSI 驱动,导致 PVE 下按 SCSI 挂载时无法识别引导盘。
  • 解决办法:
    1. 在 PVE 硬件中将磁盘“分离”,然后以 SATA(或 IDE)总线重新添加。
    2. 调整引导顺序开机进系统。
    3. 执行 update-initramfs -u (Debian/Ubuntu) 或 dracut -f (CentOS) 将 VirtIO 驱动刷入内核。
    4. 关机,再次将磁盘换回 SCSI (VirtIO SCSI) 以获得最高性能。

2.3 Windows 虚拟机 SATA 磁盘转 SCSI 蓝屏 (INACCESSIBLE_BOOT_DEVICE)

  • 原因: Windows 启动时缺乏预先注册的 VirtIO SCSI 控制器驱动。
  • “假盘诱饵”解决法:
    1. 保持系统盘为 SATA 开机,在 PVE 额外添加一块 1GB 的 SCSI 假盘。
    2. 开机进系统,设备管理器会识别出未知 SCSI 设备,打上 vioscsi 驱动。
    3. 关机,删除假盘。将主 SATA 盘分离,换成 SCSI 总线重新添加,完美开机。

3. 驱动与 QEMU Guest Agent

3.1 极老系统 (Windows 2008 R2) 无法安装 VirtIO 驱动

  • 问题: 运行新版驱动包提示系统版本不支持。
  • 解决办法: 使用历史养老版本 **virtio-win-0.1.137.iso**。不要运行根目录的安装包,直接进入 guest-agent 目录安装 msi 服务,并在设备管理器中手动指定 2k8r2 目录更新网卡/磁盘驱动。

3.2 PBS (Linux) 虚拟机自身提示:Guest Agent 未运行

  • 解决办法: Debian 系统需手动安装命令。

    1
    2
    3
    apt update
    apt install qemu-guest-agent -y
    systemctl enable --now qemu-guest-agent

    (注:记得也要在 PVE 面板勾选开启此选项)

    3.3 windows虚拟机的内存都提示全部用满到100%

    222

    原理解释: Windows 系统有一个非常积极的内存管理机制。为了让系统变快,它会把空闲的内存全部征用过来作为“文件系统缓存(Standby Cache)”。但在 PVE 宿主机(基于 Linux)的上帝视角看来,它不知道哪些是 Windows 真正在用的内存,哪些是缓存,它只看到这 8GB 的内存块被 Windows 全部“摸”过一遍了,所以就如实汇报为 100% 使用率。

    如果不处理: 完全没关系,这只是面板显示问题,当 Windows 内的程序真正需要内存时,缓存会自动让出空间,不会导致系统卡顿。

    如何解决(让面板显示真实内存): 你需要安装 VirtIO 的 内存气球驱动 (Balloon Driver) 和服务

    1. 将那张 virtio-win.iso 镜像重新挂载给这台虚拟机。
    2. 进 Windows 打开 设备管理器,找到带有黄色感叹号的 PCI 设备(通常叫 PCI 数据捕获和信号处理控制器等)。
    3. 右键更新驱动,指向光驱盘符,勾选包含子文件夹安装。此时会安装上 VirtIO Balloon Driver
    4. (关键一步)安装气球服务: 打开 Windows 的 CMD 命令行(以管理员身份运行),进入光驱盘符下的 Balloon\2k12\amd64 目录,执行命令:blnsvr.exe -i
    5. 回到 PVE 面板,这台虚拟机的内存占用率稍等一会儿就会从 100% 暴跌回真实的百分比(比如 20% 左右)了。

4. PBS 维护与自动备份策略

4.1 屏蔽 PBS 网页端“无有效订阅”弹窗

  1. 终端执行替换命令修改判断逻辑:

    1
    2
    3
    4
    5
    6
    7
    cp /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak

    line_num=$(grep -n "res.data.status.toLowerCase() !== 'active'" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js | head -1 | cut -d: -f1)
    sed -i "${line_num}s/!==/===/" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js


    systemctl restart proxmox-backup-proxy

4.2 终极双保险备份策略(防死锁)

  • 核心原则:千万不要把 PBS 虚拟机备份到 PBS 自己的数据存储里!
  • 业务虚拟机(如软路由、Windows 等):
    • 任务设置:PVE 计划任务(如 21:00),目标选 PBS 存储。
    • 保留策略:在 PBS 面板 的“精简 (Prune)”中设置(推荐 7-7-4-6)。
    • 垃圾回收:在 PBS 设置每天执行 GC 任务,释放实际物理空间。
  • PBS 虚拟机自身:
    • 任务设置:PVE 计划任务(如 23:00),目标必须选 PVE 宿主机自带的 local 存储。
    • 保留策略:直接在 PVE 备份任务的高级设置中指定(如保留最近 3 份),防止撑爆本地系统盘。

111

image-20260408172108757

PVE虚拟化实战排错小结

https://bg4vrg.com/post/20260408171359.html

作者

fei

发布于

2026-04-08

更新于

2026-04-08

许可协议

评论