彻底抛弃 Page Cache?Linux 迎来新文件系统 DAXFS
Linux 文件系统领域很久没有出现令人眼前一亮的新面孔了。就在本周六,Multikernel.io 团队正式对外公布了一项名为 DAXFS 的开源文件系统提案。
不同于我们熟悉的 Ext4、XFS 或 Btrfs,DAXFS 的设计目标非常垂直且极端:它是一个只读文件系统,旨在彻底绕过 Linux 内核中传统的块设备层和页缓存,直接在物理内存或类内存硬件上通过“直通访问”提供极速的 I/O 性能。
什么是 DAXFS?
DAXFS 全称为 Direct Access File System。顾名思义,它利用了 Linux 内核的 DAX 基础设施。
在传统文件系统中,当你读取一个文件时,内核通常会将数据从磁盘复制到内存中的页缓存,然后应用程序再从页缓存中读取数据。虽然这对慢速机械硬盘是必要的优化,但对于现代超高速硬件(如 CXL 内存池、PMEM 或 GPU 显存)来说,这种“复制”操作反而成为了性能瓶颈。
DAXFS 的核心逻辑是:既然数据已经在内存里了,为什么还要再复制一次?
它允许用户空间程序直接映射底层的连续物理内存区域。当你对 DAXFS 中的文件进行读取时,本质上是在直接进行内存加载指令,完全消除了 CPU 的复制开销和内存带宽的浪费。
核心特性与技术细节
根据邮件列表的披露,DAXFS 具有以下显著的技术特征:
- 1. 零拷贝效率(Zero-Copy Efficiency):它完全绕过了缓冲区头和页缓存。文件读取操作被解析为直接的内存地址访问。
- 2. 纯粹的物理共享:通过映射连续的物理地址或
dma-buf,多个内核实例或容器可以共享同一份物理页面。这与传统的共享内存不同,它是以文件系统的形式呈现的。 - 3. 硬件集成能力:DAXFS 支持挂载由 GPU、FPGA 或 CXL设备导出的内存。这意味着你可以像访问普通文件一样,直接访问显存或远端内存池中的数据。
- 4. 极简设计:由于是只读文件系统,它不需要处理复杂的日志、写时复制或动态分配逻辑。这使得它的代码库非常精简,运行时开销极低。
为什么我们需要它?
你可能会问,现有的 Ext4 和 XFS 配合 -o dax 挂载选项也能实现直通访问,为什么还需要专门造一个 DAXFS?
主要原因在于针对性优化。随着 CXL 技术的普及,服务器架构正在发生剧变。计算与存储的界限变得模糊,大量的存储设备开始表现得像内存一样。
DAXFS 的主要应用场景直击当前高性能计算的痛点:
- • AI 模型权重加载:大语言模型的权重文件动辄几百 GB。使用 DAXFS,可以将存放权重的 CXL 内存区域直接挂载为文件系统。GPU 读取模型时,不需要经过系统内存的多次拷贝,实现了真正的“零拷贝”加载。
- • 容器镜像共享:在云原生环境中,多个容器往往运行着相同的基础镜像。通过 OverlayFS 将 DAXFS 作为底层只读层,所有容器可以共享同一份物理内存中的系统文件,极大地节省了物理内存占用。
- • 多内核环境:这是开发团队 Multikernel.io 的老本行。在某些高安全或隔离场景下,同一台物理机上运行着多个独立的内核实例,DAXFS 可以让它们高效地共享数据而无需通过网络协议栈。
现状与展望
目前 DAXFS 仍处于提案和开发阶段。它是一个针对特定硬件(CXL、PMEM)和特定场景(只读、高性能共享)的专用工具,通过 dma-buf API 与硬件交互。
虽然它不会取代 Ext4 成为你的根文件系统,但在 AI 训练推理集群和下一代数据中心架构中,DAXFS 这种极致削减软件栈开销的思路,代表了未来的存储演进方向——存储即内存。
对于致力于压榨硬件每一滴性能的 Linux 开发者和系统架构师来说,这无疑是一个值得关注的利好消息。