释放小七猫的分享欲

PVE9.x 的功能优化、直通与山特 BOX-650 UPS 配置

categories: 技术 tags: NAS
@ 27/10/2025

PVE9.x 的优化与直通配置

一键优化脚本

推荐使用这个脚本:

PVE-Tools-9

这个脚本的下载需要良好的网络条件,并且可以重复使用,所以建议下载到本地,随时调用。

# 1. 下载脚本
wget https://raw.githubusercontent.com/Mapleawaa/PVE-Tools-9/main/PVE-Tools.sh

# 2. 添加执行权限
chmod +x PVE-Tools.sh

# 3. 运行脚本
sudo ./PVE-Tools.sh

并非每个功能都要用上,基础功能选择:

  • 更换软件源,非必要不更换,实在解决不了网络问题再换
  • 删除订阅弹窗:必要
  • 合并 local 和 local-lvm,建议合并,这种分区方式并没有明显好处
  • 更新系统:非必要不更新,内核更新之后可能对直通不利,可以手动 apt update 但不要接 apt upgrade -y
  • 硬件(PCI)直通:一键开启即可,会在 grub 中加入 iommu 参数开启 PCI 直通。
  • CPU 电源模式:功耗优化,见下面
  • 温度监控管理:会修改主页面,添加温控显示,自便

一套弄完,重启后可以直通非显卡的 PCI 设备,硬盘、网卡等等都没有问题了。

温度监控与功耗优化

现在的优化脚本已经不提供这么细的选项了,需要手动安装查看:

root@pve:~# apt install lm-sensors
...
root@pve:~# sensors
nvme-pci-0100
...
Package id 0:  +46.0°C  (high = +100.0°C, crit = +100.0°C)
Core 0:        +41.0°C  (high = +100.0°C, crit = +100.0°C)
Core 4:        +39.0°C  (high = +100.0°C, crit = +100.0°C)
...
Core 31:       +44.0°C  (high = +100.0°C, crit = +100.0°C)

PVE 的 CPU 电源模式默认运行在 Performance 性能模式,让 CPU 一直处在高频,功耗、温度都非常高,大冬天的空载给我干到 45 度…高频率转了两天我才发现功耗问题

还好可以用 PVE-TOOLS-9 直接修改为 powersave 模式,根据我查到的资料,这个电源模式只是待机状态下的 CPU 性能,并不会影响到 CPU 峰值性能,顶多就是从低负载切到高负载的时候有些延迟,这种延迟对于我们普通用户来说不算什么,所以直接设为 powersave 就可以了。

功耗直接降低 20W,CPU 温度降到 22 度左右,到了正常水平,不用再一天 2 度电了,不想折腾的话到这一步就可以了。

root@pve:~# sensors
...
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +30.0°C  (high = +100.0°C, crit = +100.0°C)
Core 0:        +22.0°C  (high = +100.0°C, crit = +100.0°C)
Core 4:        +22.0°C  (high = +100.0°C, crit = +100.0°C)
...
Core 30:       +24.0°C  (high = +100.0°C, crit = +100.0°C)
Core 31:       +24.0°C  (high = +100.0°C, crit = +100.0°C)

将 local-lvm 合并到 local

  1. local 分区

勾选全部功能,用于替代 local-lvm

  1. local-lvm 分区

没有数据的话,跳过,如果已经创建了虚拟机或者 LXC 容器,先进行硬盘迁移:

将硬盘迁移到 local 分区

  1. 将 local-lvm 合并到 local

自动合并:使用 ./PVE-Tools.sh 脚本

...
  3  . 合并 local 与 local-lvm (小硬盘救星)
...

根据提示合并即可,local-lvm 数据会被清除,但不影响 local

手动合并:

# 删除local-lvm分区
lvremove /dev/pve/data -y

# 将剩余的空间扩展至local分区
lvextend -rl +100%FREE /dev/pve/root

合并之后,移除 local-lvm

刷新页面,成功完成迁移

lsblk 也变得很干净,原本的 pve-data 分区已经没有了

root@pve:~# lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme0n1      259:4    0 465.8G  0 disk
├─nvme0n1p1  259:5    0  1007K  0 part
├─nvme0n1p2  259:6    0     1G  0 part /boot/efi
└─nvme0n1p3  259:7    0 464.8G  0 part
  ├─pve-swap 252:0    0     8G  0 lvm  [SWAP]
  └─pve-root 252:1    0 456.8G  0 lvm  /

关闭自动更新

自动更新可能会导致一些功能失效,系统稳定之后建议关闭,

sudo systemctl disable pve-daily-update.timer

如果使用 SR-IOV,一定不要更新内核,后面会讲到如何固定内核。

核显 SR-IOV

为什么选择 SR-IOV 方案,而不是核显直通。

  1. 核显只有一个,也就意味着直通会导致仅有一个虚拟机可以使用该显卡,资源无法得到充分利用。
  2. 从流程上看,SR-IOV 操作更加简单,不用在宿主机上禁用整个显卡,而是虚拟出多个 PCI 显卡,在充分利用资源的同时减少操作复杂性,宿主机也可以调用该显卡进行计算。
  3. SR-IOV 并不会导致显卡大量性能损失。

但如果要用显卡显示画面或者玩游戏,就只能直通整个显卡。

装好系统后一定不要升级内核,因为 i915 驱动可能不匹配最新的内核,SR-IOV 直通的 PVE 宿主机和虚拟机都需要安装 i915 驱动,安装当时的最新版(注意内核匹不匹配),装好了就不要再动了。建议将虚拟化显卡数量设为 4 个,最多 7 个。

提供几份参考资料,重点是内核版本一定要对得上:

  1. i915-sriov-dkms

i915 驱动作者的发布页,最新最全,但需要一定阅读能力和技术水平。

  1. PVE9.x 开启 Intel 核显 SR-IOV 教程

玩家的自制视频教程,可能会落后一些,需要对照发布页进行部分命令的修改。

  1. 精简傻瓜式配置 PVE 核显虚拟化和直通

玩家自制图文教程,同样需要结合官方发布页命令进行针对性修改。

固定内核版本

一旦切换内核,以上流程又要重新走一遍,没有必要:

proxmox-boot-tool kernel pin 6.14.8-2-pve

6.14.8-2-pve 替换为自己的当前内核版本

即便你更新系统 apt upgrade -y,新的内核可能会被安装,但不会启用,也就不会影响到直通功能。

UPS/NUT

我的 UPS 是山特 BOX-650/850 对于山特 BOX650/850,可以使用标准的 usbhid 协议来进行通信,所以需要额外安装 nut-driver-usbhid-ups 驱动包。

在有 OpenWRT 路由器的条件下,把 UPS 接到路由器是最好的,因为它一定是 24 小时开机,并且对于断电不敏感,天生 UPS 圣体。

服务端参考

  1. 群晖 (Synlogy) 和威联通 (QNAP) 公用 ups-针对 apc ups
  2. OpenWRT 软路由 UPS 教程 - 基于山特 TG-BOX 850

客户端参考:

  1. 山特 ups 配合 nut 实现断电安全关机
  2. UPS 一拖多:保护你的 NAS 和 Linux 服务器

OpenWRT 服务端

经过一番折腾,终于弄好了 luci-app-nut 服务器

下面贴一份适用于山特 BOX650/850 的示例配置

  1. 最核心的配置是 nut-server,这个配置会让 OpenWRT 在网络中创建一个 UPS 服务器,其他各种设备都可以通过这个服务器获取 UPS 的信息。
  2. nut-monitor 是 OpenWRT 自己对 UPS 的监控,通过 monitor,OpenWRT 也可以实现自动关机。不过我刚刚也说了,路由器这东西本身对断电不敏感,所以配不配都无所谓。
  3. nut-cgi 通过网页监控 UPS 状态,我没成功配好,但我认为配好之后可能 800 年也不会去看一次。因此只要确保 nut-server 正常工作就行了。

这份配置对于 BOX650/850+OpenWRT 的组合可以直接贴过去,服务起好之后群晖可以直接连接。

root@OpenWRT:/etc/config# cat nut_*
# /etc/config/nut-cgi
config upsset

config host
        option upsname 'box650'
        option displayname 'Santak BOX-650'
        option hostname 'localhost'

# /etc/config/nut-monitor
config upsmon 'upsmon'

config master
        option powervalue '1'
        option upsname 'box650'
        option hostname '127.0.0.1'
        option username 'monuser'
        option password 'secret'

# /etc/config/nut-server
config driver 'box650'
        option port 'auto'
        option driver 'usbhid-ups'
        list default 'input_voltage'

config default 'default_input_voltage'
        option value '230.0'

config user
        option username 'monuser'
        option password 'secret'
        option upsmon 'master'

config listen_address
        option address '0.0.0.0'

config upsd 'upsd'

查看 nut 状态:

root@OpenWRT:/etc/config# /etc/init.d/nut-server status
running
root@OpenWRT:/etc/config# /etc/init.d/nut-monitor status
running

这两个 running 之后,就可以用其他设备连 UPS 服务器了,nut-cgi 可能网页无法获取到信息,但不影响了。给这些进程设置自启动。

/etc/init.d/nut-server enable
/etc/init.d/nut-cgi enable
/etc/init.d/nut-monitor enable

查看 UPS 的详细信息:

root@OpenWRT:~# upsc box650
battery.charge: 100
battery.charge.low: 20
battery.runtime: 492
...
ups.timer.shutdown: -1
ups.timer.start: -1
ups.type: offline / line interactive
ups.vendorid: 0463

PVE 客户端

PVE 客户端的话,按照客户端参考 2 配置即可,当 UPS 发送 LOWBATT 命令时,PVE 会自动关机,这种配置方案适用与所有 Linux 机型。

root@pve:~# systemctl status nut-monitor

● nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller
     Loaded: loaded (/usr/lib/systemd/system/nut-monitor.service; enabled; preset: enabled)
     Active: active (running) since Mon 2025-10-27 22:25:57 CST; 11h ago
...
Oct 28 07:01:15 pve nut-monitor[1262]: Communications with UPS box650@10.0.0.1 lost
Oct 28 07:01:15 pve nut-monitor[82798]: Network UPS Tools upsmon 2.8.1
Oct 28 07:01:58 pve nut-monitor[1262]: Poll UPS [box650@10.0.0.1] failed - Driver not connected
# 这里出现 established 就对了
Oct 28 07:02:03 pve nut-monitor[1262]: Communications with UPS box650@10.0.0.1 established
Oct 28 07:02:03 pve nut-monitor[82929]: Network UPS Tools upsmon 2.8.1