m2硬盘安装ubuntu出现I/O错误: DMAR fault的排查记录(含解决方案)
在旧台式机安装Ubuntu24.04 的过程中,我遇到一个非常棘手的问题:
- 第一次安装失败; 安装过程中, 提示io错误
- 关机后, 再次安装, 安装成功
- 进入系统后, 硬盘灯持续规律闪烁, 频繁出现 I/O 错误、系统卡顿、硬盘灯间隔性闪烁、并伴随 DMAR/IOMMU 报错
最开始遇到这个问题, 我以为是硬盘问题, 更换为 sata硬盘后, 问题消失。似乎从某种程序上证明是此硬盘问题; 随后此”坏硬盘“, 就安静的放在角落; 今天整理物品, 发现这块硬盘, 突然想到, 让ai帮忙分析分析硬盘是什么原因导致的故障, 以后如何避免买到类似的硬盘;
这篇文章记录整个排查过程,希望给未来遇到类似问题的人提供一个可参考的解决思路。
1. 硬件与环境背景
- 主板:Gigabyte Z97X-UD3H(2014年)
- CPU:Intel i7-4790K(Haswell)
- NVMe:YMTC PC300 512GB(支持 HMB,NVMe1.4)
- 系统:Ubuntu 24.04
- NVMe 安装在主析的m2硬盘槽位
这是典型的“老主板 + 新 NVMe 控制器”的组合,在 Linux 下非常容易触发兼容性问题。
2. 问题现象
(1)安装 Ubuntu 时随机 I/O 错误
- 系统安装过程中文件复制中断
- 安装流程偶尔直接失败
- 重试偶尔能安装成功
(2)安装成功后,进入系统, 硬盘灯持续规律闪烁
- 开机后系统明显不顺畅。
- 复制文件时,会出现卡顿, 此时硬盘灯一直有规律的闪烁;
(3)复制大文件(如 ubuntu.iso 6GB)出现卡顿
- 传输速度会突然降到零,直到系统无响应。
(4)dmesg 出现 DMAR/IOMMU 报错
DMAR: DRHD: handling fault status reg 2
DMAR: [DMA Write] Request device [01:00.0] fault addr ...
DMAR: write no_pasid
(5) 硬盘smart 检测无异常
使用 smartctl 读取 NVMe 健康状态: smartctl -x /dev/nvme0
SMART overall-health self-assessment: PASSED
Media and Data Integrity Errors: 0
Temperature: 27~31C
这一步至关重要:
硬盘smart信息说明: NVMe 并没有坏。
但是硬盘灯闪烁,似乎是硬盘无法写入, 有故障;
4. 排查思路与定位过程
(1) 没加散热器, 高温导致硬盘进入防御模式
购买并中装置散热器,问题依然存在.
(2) 进入命令行模式, 复制文件, 发现报错
(3) dmsg 中查看 DMAR 错误
从 DMAR 错误入手 → 怀疑 IOMMU(VT-d)
Google 搜索关键字:
DMAR write no_pasid
Device fault VT-d NVMe
Z97 NVMe IOMMU issue
大量报告显示: Z97/H97/B85/X99 等老主板的 IOMMU 对新 NVMe 控制器支持极差。
特别是支持 HMB 的 NVMe,会频繁触发 DMA remapping 错误。
尝试关闭 IOMMU(最终突破)
sudo nano /etc/default/grub
GRUB_CMDLINE_LINUX="intel_iommu=off"
sudo update-grub
重启后
dmesg | grep -i dmar
DMAR: IOMMU disabled
随后系统立刻恢复流畅,所有异常消失。
总结: 软件/兼容性问题,而不是硬盘故障
YMTC PC300 属于新 NVMe 控制器(支持 NVMe1.4 + HMB), 而 Gigabyte Z97 主板发布于 2014 年,BIOS 对新型 DMA 功能支持不完整。
当 Linux 使用 Intel IOMMU 进行 DMA 页表(I/O Page Table)映射时,会触发:
PASID 错误
IOMMU Translation Fault
NVMe DMA 超时
关闭 IOMMU 后,NVMe 直接使用传统 DMA → 完全恢复正常。
结语
这次排查耗费了近五天时间,从怀疑硬盘损坏、到怀疑 BIOS、文件系统、驱动,再到最终定位到 IOMMU 与 NVMe 控制器的不兼容。
最终的解决方法却只是一行:
intel_iommu=off