飞牛NAS(物理机)有一块有线网卡 ,在系统中开启了 OVS 桥接。在这台 NAS 上用虚拟机安装了 iStoreOS 作为旁路由,网络模式为桥接,与宿主机共享同一个物理网段。
刚配置好时一切正常:路由器后台能同时看到飞牛宿主机的 IP 和 iStoreOS 的 IP,内网设备也能正常通过旁路由上网。
但是大约运行 14-24 小时后,问题出现:
- 登录路由器管理页面,在“在线设备”列表中,有线网卡对应的连接全部消失(既看不到飞牛宿主机的 IP,也看不到 iStoreOS 的 IP)。
- 然而,路由器物理端口状态灯正常,显示 1000M 连接。
- 此时,飞牛宿主机的无线网卡(另一块网卡)仍然能正常联网,说明网络本身没有断,但有线侧的桥接似乎“静默失效”了。
重启整个 NAS 后能暂时恢复,但大约一天后又重复出现,非常影响稳定性。最后和ai反复讨论后,基本确定是ovs带来的问题。解决方案是将ovs改为普通网桥即可。论坛上已经有把把ovs切换成原生网桥的教程了,精力比较集中的可以按照这个来折腾。链接在这。无法开启OVS的情况下使用原生Linux Bridge网络实现创建虚拟机 - 虚拟机 飞牛私有云论坛 fnOS
我自己懒得看,就找deepsek专业版,让他一条一条输出代码,人就粘贴复制再粘贴复制,不太动脑子也搞定了,给大家一个参考。提示词里面的“enp0s31f6”切换成自己的网卡名字就行。
飞牛ovs切换到linux普通网桥,切换后保持现在docker和虚拟机连接正常。
目前已经在操作界面关闭了有线网卡的ovs了。
有线网卡名字 enp0s31f6,生成步骤和指令。
做拆分,我跟着执行一步,反馈信息,你再告诉我如何做下一步。
不要一股脑先扔给我。
感谢迪老师,荣耀归于大鲸鱼。
—————————————————————————————————26年6月2号更新
切换网桥后面问题依旧。后面经过和迪老师的多次探讨,定位在网卡问题。我的网卡型号是Intel I219-V,这个型号在windows下是没有问题的,但是在linux下就有这个问题,很难解决。
通过命令行可以查看网卡型号
lspci -nnk | grep -A 3 -i ethernet
输出如下,可以看到网卡型号是 intel I219-V,后来查了下好像这个型号问题。查这个型号,论坛里已经有相关帖子了 Intel I219-V 网卡在飞牛 OS 中高负载卡死,OVS + 虚拟机场景下如何解决? - 问答互助 飞牛私有云论坛 fnOS
00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (10) I219-V [8086:0d4f] Subsystem: Lenovo Ethernet Connection (10) I219-V [17aa:22b1] Kernel driver in use: e1000e Kernel modules: e1000e 02:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS522A PCI Express Card Reader [10ec:522a] (rev 01)
解决方法也很简单,关闭一些网卡的硬件功能就行了,我这边参考ai给的意见,只关了TSO和GSO。关闭的这些功能将会由cpu承担,不影响使用。注意:enp0s31f6 需要替换成你自己的网卡名字
sudo ethtool -K enp0s31f6 tso off gso off
也可以参考这篇文章,功能关多一点。记一次PVE系统Intel-I219-LM网卡断流异常排查 | Kaku的个人博客 eno1 要替换成自己的网卡名字
ethtool -K eno1 gso off gro off tso off tx off rx off rxvlan off txvlan off sg off
就是每次重启都要重新输入一次,可以让迪老师基于飞牛os的特性改成持久化方案。这边是我的方案
第一步,创建service文件
sudo nano /etc/systemd/system/nic-fix.service
第二步,粘贴以下内容,如果要关更多硬件功能,tso off gso off 改成 eno1 gso off gro off tso off tx off rx off rxvlan off txvlan off sg off。ctrl+o 保存,回车确认,ctrl+x退出。注意 enp0s31f6 需要替换成自己的网卡名
[Unit]
Description=Disable TSO/GSO for Intel I219-V NIC
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/ethtool -K enp0s31f6 tso off gso off
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
第三步,加载并且启动服务
sudo systemctl daemon-reload
sudo systemctl enable nic-fix.service
sudo systemctl start nic-fix.service
验证生效
ethtool -k enp0s31f6
在一堆输出中下面的字段,就是关闭成功了。
tcp-segmentation-offload: off (这就是 TSO)
generic-segmentation-offload: off (这就是 GSO)
目前已经72小时没有断联了,之前24小时内必断联。
--------以下是我作为非科班和ai交互的一些感想和细节,和解决问题无关,纯碎碎念
目前AI解决问题还是要人把控方向,之前和迪老师讨论,ai认为cpu从网卡那获取不到数据,要弄什么多个cpu分流,还有扩大网卡的缓存之类的。当时我的直觉就感觉这个顶多治标,坚持让ai专注于查网卡的问题,不要发散,才把真正的问题找到。
这里ai认为是cpu那边取数据太慢的问题。并认为可以立即永久修复。

我当时就质疑了cpu能力并不弱,但是ai还死犟


然后我就继续质疑:如果是外部带来的数据量太大,根本原因不应该是查找为什么数据量太大吗,我这个旁路由并没有带多少设备。AI继续犟嘴

然后就让ai查网络的问题,经过抓包发现网卡早就没流量了。因为ai一直认为是cpu没有把数据取走,是阻塞点。然后我就问他:既然已经没有流量了,cpu为什么没有把多余的处理完?一直塞在这里? 这个时候ai终于认可了我的疑问,然后开始排查网卡的问题。

接下来就是他给我一句命令,我执行一次反馈输出,慢慢排查到网卡或者驱动的问题

然后定位到可能是驱动问题

解决方法很离谱,居然是断 电重启(其实拔插网线就行了,或者重启网卡),备选是换网卡。。。
那我肯定不能忍,这是你迪老师的实力吗?忽悠我是吧。我就让他查查网卡型号,看有没有适应性的驱动:如果说是网卡驱动的配合问题。那是不是要确定下网卡型号,检查下目前所用的驱动是不是最合适的?

一步一步就定位到I219 系列网卡与 e1000e 驱动搭配时非常著名的长期已知问题。剩下就简单了,让ai提出解决方法,同时自己上网找一找资料,论坛也搜一搜I219,果然已经有人给出过解决方案了。也非常庆幸没有被ai牵着鼻子走,不然他会往我电脑里装一堆东西。
