记一次PVE系统Intel-I219-LM网卡断流异常排查

前言
最近在使用 PVE 主机内的 NAS 进行种子下载时,突然遇到了网络断流的问题。重启后问题依旧,只要 NAS 启动下载任务,过不了多久就会断网。插上显示器和键盘后排查发现,虚拟机状态、内存、磁盘 IO、负载一切正常,但就是 ping 不通网关。通过ip addr
和ip link
命令显示网卡状态正常,最后查看系统日志发现了大量的内核错误。本文记录了这次完整的排查过程和最终的解决方案。
美好周末正打算拿 NAS 下点番看,结果刚把任务挂上去,网络就断了。以为是服务器断电了,或者被拔网线了. 去看交换机上的指示灯,显示网卡指示灯狂闪。
问题现象
最初的现象是这样的:
- NAS 虚拟机启动下载任务后,网络突然断开
- 重启 PVE 主机后网络恢复,但只要 NAS 开始下载,问题就会重现
- 物理连接正常,网卡指示灯状态正常
- 虚拟机内部一切正常,CPU、内存、磁盘 IO 都在正常范围内
- 无法 ping 通网关,外网访问全部中断
- 网卡指示灯正常
最诡异的是,这个问题不是立即出现的。刚开机的时候一切正常,PVE 网络一切正常,只到 NAS 虚拟机启动,大概过了一两分钟,网络就会突然断掉。
日志分析
通过查看系统日志,发现了关键的错误信息:
1 | Sep 08 13:59:39 miniserver kernel: e1000e 0000:00:1f.6 eno1: Detected Hardware Unit Hang: |
这个错误信息反复出现,时间间隔很短,明显是网卡硬件层面的问题。
日志显示这个错误从 13:59:39 开始,到 14:01:41 这段时间内反复出现,基本上每几秒钟就有一次。这说明网卡已经完全失去了响应能力,难怪网络会断。
硬件信息确认
首先确认网卡型号:
1 | root@miniserver:~# lspci | grep Ethernet |
通过ip link
命令查看网络接口状态:
1 | root@miniserver:~# ip link |
确认网卡型号为 Intel I219-LM,使用的是 e1000e 驱动。
这里有个小知识点:最开始我看到日志里的e1000e
驱动时,还以为是 e1000 网卡,心想我的主板不是这个型号啊。后来查了资料才知道,e1000e
驱动支持多款 Intel 千兆网卡,包括 I219 系列。这就像 NVIDIA 的驱动一样,一个驱动支持多个型号的显卡。
从ip link
的输出还能看到,我的 PVE 主机使用了网桥配置,eno1
物理网卡被桥接到了vmbr0
虚拟网桥上。这种配置在 PVE 中很常见,所有的虚拟机都通过vmbr0
来共享物理网卡。
问题根因分析
网上去寻找相关问题 找到一堆论坛的帖子 问题指向了这个网卡本身的问题:
- Intel I219-LM 网卡在 Linux 环境下的通病:这个系列的网卡(包括 I219-V 和 I219-LM)在 Linux 系统下存在驱动层面的 bug
- “Hardware Unit Hang”错误:通常是由于网卡的高级电源管理功能(如 EEE - Energy Efficient Ethernet)与 Linux 内核驱动在特定条件下的兼容性问题
- 触发条件:在网络负载较高或特定数据传输模式下容易触发,比如 P2P 下载、大量小文件传输等
感谢互联网上的各路大神。我在 Google 上搜索e1000e Hardware Unit Hang
时,发现了一大堆相关的讨论。原来这个问题在 Proxmox 社区、Intel 官方论坛、还有各种 Linux 技术博客上都被广泛讨论过。
甚至 2016 年 Kernel.org Bugzilla 上就有 Bug Tracker 的 issue 了。但是直到今天也没修复这个问题。
这个问题高发于高负载场景下出现:
- P2P 下载
- 大量小文件传输
- 网络负载突然变化
- 网卡进入省电模式时
解决方案
临时解决方案
社区普遍有效的临时做法是关闭网卡的硬件卸载功能(以 root 身份执行):
1 | ethtool -K eno1 gso off gro off tso off tx off rx off rxvlan off txvlan off sg off |
命令与参数解释:
ethtool -K eno1
:对接口eno1
修改内核侧的卸载设置。gso off
:关闭通用分段卸载(Generic Segmentation Offload)。gro off
:关闭通用接收合并(Generic Receive Offload)。tso off
:关闭 TCP 分段卸载(TCP Segmentation Offload)。tx off
:关闭发送校验和卸载(Transmit checksum offload)。rx off
:关闭接收校验和卸载(Receive checksum offload)。rxvlan off
:关闭接收 VLAN 硬件处理。txvlan off
:关闭发送 VLAN 硬件处理。sg off
:关闭 scatter/gather(分散/聚集)功能。
为什么要关闭这些功能?
这些卸载功能本意是减轻 CPU 负担,但在某些驱动/固件组合下会触发网卡内部逻辑异常(如日志中的 Hardware Unit Hang
)。关闭后让数据处理回退到软件路径,能避免触发网卡的固件/驱动缺陷,从而恢复稳定性。
注意事项:
- 该设置为临时生效,重启后会丢失。需将对应命令加入持久化配置(例如
/etc/network/interfaces
中post-up
,或使用/etc/modprobe.d/
禁用特定功能)以保证重启后依然生效。 - 关闭硬件卸载后会增加 CPU 负载,但是对于 GbE 网卡和现代 CPU 的组合中,CPU 负载提高并不大。反而稳定性更为重要。
- 有条件建议避雷 Intel I219 网卡。
永久化配置
为了确保重启后设置仍然有效,需要修改网络配置文件:
编辑/etc/network/interfaces
文件,在eno1
接口配置中添加post-up
命令:
1 | auto lo |
保存后重启网络服务:
1 | systemctl restart networking |
或者直接重启 PVE 主机。
这里有个小细节需要注意:post-up
命令一定要放在iface eno1
下面,而不是iface vmbr0
下面。因为ethtool
是针对物理网卡eno1
进行设置的,而不是虚拟网桥vmbr0
。如果放错了位置,设置就不会生效。
效果验证
应用解决方案后,重新启动 NAS 虚拟机进行下载测试:
- 连续运行 1 小时,未再出现”Hardware Unit Hang”错误
- 网络连接稳定,未出现断流现象
- 下载速度正常,虚拟机网络性能未受明显影响
观察系统日志,确认再也没有出现”Hardware Unit Hang”的错误信息。
总结
I219-LM 和 I219-V 可以和和断流王 I225-V 坐一桌了
还不如隔壁的小螃蟹
稍微好点的是 I219 只在 Linux 驱动下出问题,Windows 环境到没有问题。
参考资料
- [BUG] 负载下网络接口崩溃 (英特尔公司以太网连接(11) I219-LM) · 问题 #8887 · harvester/harvester — [BUG] Network interface crashes under load (Intel Corporation Ethernet Connection (11) I219-LM) · Issue #8887 · harvester/harvester
- 史上最烂千兆网卡 i219 驱动更新 - 电脑讨论(新) - Chiphell - 分享与交流用户体验
- Fix Intel I219-V Detected Hardware Unit Hang | ServeTheHome Forums
- 如何修复 Proxmox 检测到在 Intel 网卡 First2Host 上的硬件单元挂起问题 — How To Fix Proxmox Detected Hardware Unit Hang On Intel NICs First2Host
- 118721 – e1000e 硬件单元在 TSO 开启时挂起 — 118721 – e1000e hardware unit hangs when TSO is on
- 已解决: 与 I219-LM 的连接问题 - Intel Community — 已解决: Disconnects with I219-LM - Intel Community
- 已解决: Intel I219-LM 随机断开连接 - Intel 社区 — 已解决: Intel I219-LM Random Disconnects - Intel Community
- e1000 driver hang | Page 15 | Proxmox Support Forum
- 标题: 记一次PVE系统Intel-I219-LM网卡断流异常排查
- 作者: Kaku
- 创建于 : 2025-09-08 15:17:21
- 更新于 : 2025-09-08 16:30:22
- 链接: https://www.kakunet.top/2025/09/08/记一次PVE系统Intel-I219-LM网卡断流异常排查/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。