← LeisureLinux 文章索引
LeisureLinux · 微信公众号文章

别再让内核当“中间商”:深度解析 Linux DAX 零拷贝技术

AI/Agent 阅读原文(微信)↗

摘要:2026年 Linux 社区最火的存储话题是什么?是 DAXFS。本文带你硬核拆解 DAX 技术,手把手教你在没有高性能硬件的情况下,用内存模拟出极致的 I/O 通道。

一、 引言:为什么我们需要 DAX?

在 Linux 的世界里,访问文件一直有个"潜规则":数据必须在磁盘、内核页缓存(Page Cache)和用户空间之间搬来搬去。

虽然页缓存提升了速度,但在高性能计算、AI 推理等场景下,这种**"二次拷贝"**带来的延迟和 CPU 损耗已经成了性能杀手。于是,DAX(Direct Access,直接访问)技术应运而生。

二、 什么是 DAX?绕过内核的"特权路"

简单来说,DAX 是一把开启存储硬件的"仓库钥匙"

1. 传统 I/O 的"快递模式"

你读一个文件:硬盘 -> 内核缓冲区 -> 应用程序。

  • 弊端:浪费内存空间,增加 CPU 拷贝开销。

2. DAX 的"面对面模式"

在支持 DAX 的硬件(如 NVDIMM、CXL 设备)上,内核不再充当搬运工。

  • 原理:内核通过mmap直接将硬件的物理地址映射到进程的虚拟地址空间。

  • 结果:应用程序通过 CPU 指令(Load/Store)直接读写硬件,实现真正的零拷贝(Zero-copy)

最新动态:在 2026 年第 4 周的 Linux 周报中,DAXFS的提议再次将这一技术推向高潮,旨在通过更灵活的文件接口管理大规模共享内存。2026年第4周(1月19日至25日) - Linux 和开源新闻周报

{#section path-to-node="18"}

三、 内核层是如何实现 DAX 的?

DAX 并不是一个简单的驱动,而是 Linux 内核多个子系统的"大合唱":

  1. 设备识别:内核通过libnvdimm子系统识别出具有字节寻址能力的硬件(如/dev/pmem)。

  2. 缺页异常处理:这是最核心的一步。当程序访问数据时,内核触发缺页异常,但它不从磁盘读数据,而是直接修改进程页表,将硬件物理地址填进去。

  3. 文件系统配合:像 Ext4 或 XFS 这种支持 DAX 的文件系统,在挂载时会调用dax_direct_access接口,彻底停用页缓存机制。

四、 硬核实操:没有硬件也能玩转 DAX

想在自己的电脑上体验 DAX?不需要昂贵的傲腾内存,我们可以用普通物理内存来模拟

第一步:修改内核参数

编辑/etc/default/grub,在GRUB_CMDLINE_LINUX中添加:

[Bash]{ngcontent-ng-c2411640571=""}

# 模拟 1G 的持久内存,从物理地址 4G 处开始
memmap=1G!4G

更新 grub 并重启:sudo update-grub && reboot

第二步:检查设备

重启后,你应该能看到一个新的 pmem 设备:

[Bash]{ngcontent-ng-c2411640571=""}

ls /dev/pmem*
# 应该能看到 /dev/pmem0
```text

### 第三步:配置并挂载文件系统 {#第三步配置并挂载文件系统 path-to-node="31"}

使用`ndctl`{index-in-node="3" path-to-node="32"}工具(需安装)配置模式,并以 DAX 模式挂载:

[Bash]{ngcontent-ng-c2411640571=""}

设置为 fsdax 模式

sudo ndctl create-namespace -f -e namespace0.0 --mode=fsdax

格式化并挂载(关键点:-o dax)

sudo mkfs.xfs /dev/pmem0 sudo mount -o dax /dev/pmem0 /mnt/dax_test ```

第四步:验证零拷贝

你可以通过mount命令查看挂载选项,或者使用 C 语言编写一个简单的mmap程序,测试读写延迟。你会发现,这块"磁盘"的速度已经达到了内存级!

五、 总结与展望

DAX 技术是 Linux 向极致性能演进的关键一步。随着CXL高性能 AI 算力的普及,DAX 将不再是少数专家的玩具,而是开发者必须掌握的底层基石。

想看更多关于 Linux 内核硬核技术的拆解?欢迎关注LeisureLinux公众号,同名B站频道更有详细的操作视频演示,带你领略 Linux 系统的底层之美!

本文整理自微信公众号 LeisureLinux 的原创内容(Linux / AI / 安全 硬核技术)。

· 阅读原文(微信公众号)

· 关注公众号 LeisureLinux,第一时间获取技术深度内容。

LeisureLinux 公众号二维码(微信扫一扫关注)