> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://helpdesk.ggcircuit.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# 解决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 饱和峰值期间也是如此。