源起
源于某个周日下午(2023-10-22), 看着最近一段时间逐步完善的软路由网络架构. 已经可以比较完美地满足现有的网络需求
- 国内外流量分流
- 端口映射
- P2P组网
- 媒体硬解
内心膨胀了, 开始想要把基础设施(PVE)升级到最新版本了. 甚至我完全没有去看更新日志, 脑子一热, 找了个流程就开始了升级.
升级过程一切顺利, 正常看到了版本号变更. 噩耗就发生在第一次重启之后. 发现我的ROS无法启动
源途
在日志中看到了简单的got timeout
, 由于其他虚拟机正常运行, 于是将目标投向了这些虚拟机不同的地方—直通网卡.
除了PVE的管理口, 是通过挂载进去的, 其余三个网口都是通过PCI直通的方式进入到ROS中. 在经过多次删减后, 发现0000:05:00:0
也就是最后一个网口, 只要去掉这个网口即可正常开机. 本来这个网口也被我拿来当作2.5G LAN的用途, 为了暂时先解决没网的问题, 只好先将这个网口先空余出来, 其他设备先接入到交换机中.
第二天, 本着试试的心态, 把这个网口直通到了一个win10的虚拟机, 依然启动不了. 这时想到了之前手动直通时接触到的一个命令 dmesg
. 找到了一个可能的错误
|
|
并且这一句前面刚好就是 0000:05:00:0
源灭
根据关键词搜索, 最终找到了 pcie_port_pm=off
将此参数加入到 pve的 /etc/default/grub
=> GRUB_CMDLINE_LINUX_DEFAULT=
然后update-grub
. 重启后再次将最后一个网口直通到win10虚拟机, 正常使用. 然后又胆大包天, 直接给怼到ROS里(这时候人还不在家), 战战兢兢地点击重启按钮, 手那个抖的啊…
源因
pve8使用了6.2.x的内核, 这个版本内核对于Intel I225网卡有bug, 主要就是在切换设备电源状态的时候失败了, 导致vfio模块无法正常加载所有网卡. 增加上面的参数就是关闭pcie端口的电源管理功能, 跳过这一步骤. 由于网卡也没有休眠之类的, 插着么总是会用的, 因此对于功耗的影响不大.
改天还是想办法把版本退回去好了, 对于新版本没有什么追求, 还是稳定最好.
教训: 升级!!! 升个鬼的级!!!