DAOS如何从NVMe和SCM内存中榨取最大性能
当标准文件系统开始被数百万次小型随机I/O操作压垮时,开发者通常会寻找变通方案。常见的情况是:现代NVMe驱动器以惊人的速度运行,但标准Linux内核堆栈在锁和上下文切换上消耗了大量时间。

Linux Foundation的专家正在开发DAOS(分布式异步对象存储)。这是一个用C语言编写的开源分布式对象存储系统,专为非易失性内存(NVM)、存储类内存模块和NVMe驱动器设计。
核心理念
传统存储试图将旧的POSIX模型强加于快速内存,这造成了瓶颈。DAOS采取了不同的方式:该项目完全抛弃了传统的内核I/O堆栈。
系统提供键值结构与异步事务性I/O,取代了熟悉的文件和文件夹。数据流在写入时不会相互阻塞,硬件访问通过SPDK和PMDK库直接进行。
项目功能特性
开发者在架构中构建了多个核心功能来处理大规模数据。
- 异步非阻塞事务支持并行写入
- 从客户端到存储的端到端数据完整性验证
- 单个节点故障时自动恢复
- 无中断服务的弹性集群扩展
值得关注的是接口方面。与单一用途的KV存储不同,DAOS提供了便捷的客户端包装器。你可以通过原生Python字典与其交互,连接到Spark,通过TensorFlow-IO传递数据,或使用科学软件中传统的HDF5和MPI-IO库。为了兼容遗留软件,还提供了并行文件系统仿真。
底层实现与细节
代码采用C语言编写,代码库自2016年就已存在。该项目在GitHub上获得了约一千颗星,但不要指望能轻松部署。这可不是一个一条命令就能安装的可爱CLI工具。
完整的DAOS运行需要支持NVMe的专业硬件,最好还配备非易失性内存(SCM)。仅靠几台廉价的云服务器无法评估这个概念。设置控制平面和客户端库需要对网络堆栈和基础设施有扎实的理解。
错误日志和文档虽然详细但内容繁杂。如果构建过程中出现问题,你需要仔细查阅日志或在社区Slack和论坛寻求帮助。
适用人群
这个项目并非为日常网站或小型PostgreSQL数据库设计。它的定位是需要处理海量吞吐量的基础设施。
- 在TensorFlow上训练超大规模神经网络的团队,当数据集加载成为瓶颈时。
- 在Hadoop和Spark上进行分布式分析的数据工程师。
- 标准Lustre或GPFS已无法应对的科学实验室和高性能计算集群。
- 在裸NVMe磁盘上构建自有存储的高负载系统开发者。
总结
DAOS展示了软件架构如何适应新硬件的绝佳范例。这个项目复杂、用途专一、对基础设施要求高,但在其适用领域确实解决了系统开销的实际问题。如果你正在为机器学习或大数据分析任务构建存储,阅读文档绝对值得。
相关项目