文章分类: ggRock
本条还可参阅:

解决Intel E800系列(ICE)适配器上的系统不稳定和iSCSI超时

解决英特尔 E800 系列 (ICE) 适配器上的系统不稳定性和 iSCSI 超时问题


症状


使用英特尔 E810 或其他 800 系列网络适配器(由 ice 驱动程序管理)的系统可能会遇到以下问题,特别是在无盘或 iSCSI 启动环境中:


  • 系统完全挂起: 服务器在高 I/O 事件期间(如虚拟机 (VM) 启动或大文件传输)变得无响应。
  • iSCSI 连接中断: 内核日志显示 Did not receive response to NOPIN,随后 iSCSI 会话失败。
  • 存储目标错误: 存储服务报告无法定位目标 IQN,导致客户端磁盘断开连接。
  • ZFS 死锁: 如果使用 ZFS,日志可能会充满有关 zd 块设备已存在的 debugfs 错误。


根本原因


主要原因是影响动态设备个性化 (DDP) 包的 固件到内核不匹配


当 Linux 系统升级(例如从内核 5.10 升级到 6.1)时,ice 驱动程序通常期望特定版本的 DDP 配置文件(例如 ice-xxxxxxxxxxxxxxxx.pkg)。如果此文件在 /lib/firmware/intel/ice/ddp/ 中缺失,驱动程序将回退到通用"操作系统默认"模式或"安全模式"。


在这种次优状态下,网卡禁用高级硬件卸载和数据包转向。在重负载下,CPU 被网络中断淹没,导致存储流量的心跳丢失和系统完全死锁。


解决方案路径


1. 识别缺失的固件


检查系统日志以识别内核请求的确切文件名:


dmesg | grep ice


寻找类似以下的错误:firmware: failed to load intel/ice/ddp/ice-xxxxxxxxxxxxxxxx.pkg (-2)


2. 部署优化的通信 DDP 固件


"操作系统默认"包通常不足以满足存储工作负载。建议使用 英特尔以太网 800 系列电信 (通信) DDP 包


  1. 从英特尔支持网站下载最新的通信 DDP 包。
  2. 提取 .pkg 文件并将其复制到系统固件目录:cp ice_comms-x.x.xx.x.pkg /lib/firmware/intel/ice/ddp/


3. 通过符号链接映射固件


使用现有的高性能包创建符号链接来满足内核的特定请求:


cd /lib/firmware/intel/ice/ddp
# 链接通用名称
ln -sf ice_comms-x.x.xx.x.pkg ice.pkg
# 链接 dmesg 中请求的特定名称
ln -sf ice_comms-x.x.xx.x.pkg ice-xxxxxxxxxxxxxxxx.pkg


4. 重建启动映像并重启


为了确保驱动程序在启动的最早阶段加载优化的固件,请重建 initramfs:


update-initramfs -u
reboot


验证


重启后,验证高级固件已成功加载:


dmesg | grep ice


正确的输出: ice 0000:xx:xx.x: The DDP package was successfully loaded: ICE COMMS Package version x.x.xx.x


一旦硬件卸载激活,iSCSI 心跳应保持稳定,即使在 I/O 饱和峰值期间也是如此。

更新于: 24/04/2026

这篇文章有帮助吗?

分享您的反馈意见

取消

谢谢!