一个 Rust 写的存储系统,想把 HPC 和 AI 的存储栈统一了

搞过 HPC 集群的人都知道一个尴尬的现实:超算那边跑 Lustre/BeeGFS,AI 那边跑 Ceph 对象存储,LLM 推理还得再搭一套 Redis 做 KV Cache。三套存储栈,三套运维,数据搬来搬去,GPU 利用率不到 50%。

PowerFS 想用一套存储把这三件事全干了。

不是"兼容"那种贴皮换药,而是从零开始用 Rust 写了一套统一存储引擎,把 POSIX 文件接口、S3 对象接口、KV Cache 接口塞进同一个数据池------数据写一次,三种接口都能读。

下面是 6 个我觉得比较有意思的技术点。

1. Rust 写的,没有 GC 抖动

这是第一个值得说的。Java/Go 写的存储系统在满负载下会有 GC Stop-The-World,P99 延迟突然飙到几百毫秒。HPC 场景对抖动零容忍------MPI 同步屏障下,一个进程卡 200ms,整个 job 全等。

PowerFS 全栈 Rust,无 GC,内存安全交给编译器。满负载跑 72 小时,P99 延迟波动 < 5%。没有 STW,没有妥协。

2. 三个接口,一个数据池

POSIX(FUSE/Kernel)给 HPC 科学计算,S3 给 AI 数据集和模型快照,KV Cache 给 LLM 推理。三种接口共享同一份 Needle 二进制格式存储,写一次到处读。

以前要在集群里同时部署 Lustre + Ceph + Redis,现在一套 PowerFS 搞定。运维成本直降,数据不再孤岛。

3. Filer Raft 强一致:元数据不丢不乱

所有元数据操作(mkdir/create/unlink/rename/lookup)全部走 Filer Raft commit,3 节点多数派写入才返回成功。线性强一致,没有"最终一致"的含糊。

关键设计是 Leader Lease Read :读操作在 Leader 任期内直接本地读,不走 Raft Read Index,省一次网络往返。元数据读取延迟 < 2ms。

按 bucket 分片,每个 bucket 是独立 Raft 组,水平扩展无上限。

4. Volume Lease:数据层排他锁,60 秒复用

元数据靠 Raft,数据靠 Lease。每个 64MB Stripe 一把排他锁,写者独占。关键优化是 60 秒长期复用 ------同一个文件的连续写操作命中缓存后零 RPC,直接写盘。

锁的释放用 Rust 的 RAII 机制(Drop trait),作用域结束自动释放,不会忘记 unlock。崩溃恢复靠 TTL + grace period(= 租期 × 2),不会出现锁泄漏。

5. NVMe-oF 直连 + SPDK 裸盘:两种模式都是绕内核

Mode A :Volume Server 用 SPDK 用户态驱动直接操作 NVMe 裸盘,绕过 ext4/xfs 文件系统,绕过系统调用,绕过 Block 层。4K 随机读从 50 万 IOPS 提到 200 万+,延迟从 100μs 降到 20μs。

Mode B :直接连 NVMe-oF Target 全闪存阵列,连 Volume Server 都不要。客户端通过 RDMA 直达阵列,2 跳到达 SSD。阵列自带 RAID/EC/快照/压缩,PowerFS 专注元数据和一致性。

两种模式都做到了内核零参与。

6. 全链路硬件加速:NVMe 到 GPU 显存零拷贝

SPDK 裸盘 I/O + RDMA 无损网络 + GPU Direct 传输。数据从 NVMe SSD 到 GPU HBM 显存,全程零拷贝,不经过 CPU 内存中转。

这对 LLM 推理特别关键:KV Cache 数据在 NVMe 上,GPU 通过 GPU Direct 直接读取,相当于把 GPU 显存扩展到了 NVMe SSD。GPU 利用率从 40-50% 提升到 90%+。

数据说话

指标 提升 单线程元数据 ops 40x (5万→200万 ops/s) 目录列表(1万条目) 10.6x (50ms→4.7ms) 4K 随机读 IOPS 4x (50万→200万+) LLM 推理 GPU 利用率 40%→90%+

PowerFS 是开源项目,Apache 2.0 协议,代码全部 Rust 实现。

GitHub : github.com/powerfs/powerfs

如果你也在被 HPC+AI 混合负载的存储问题折磨,欢迎来 Star、Fork、提 Issue。

相关推荐
掘金酱7 小时前
🔥 AI 时代,Token 就是你的数字燃料!晒账单,赢好礼!
前端·人工智能·ai编程
Wang's Blog7 小时前
Vibe Coding一人即团队系列12: 提示词的四类编写范式与结构化实践
人工智能
Rocky Ding*7 小时前
一文读懂Wan 3.0视频创作大模型核心基础知识
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·wan 3.0
richard_first8 小时前
Transformer 与大语言模型:第3章 输入是如何进入 Transformer 的
人工智能·深度学习·transformer
樊小肆8 小时前
DeepSeeker-Code源码导读11-统一注册表registry
人工智能·agent
鉴生Eric8 小时前
从冷负荷预测到群控寻优:用 AI 智能体把中央空调能耗打下来 20%+ 的全链路实践
人工智能
脉动数据行情18 小时前
Java SpringBoot 对接知名台股 TWSE|批量采集上市股票行情实践
java·开发语言·spring boot
水獭比特8 小时前
工作流都公开了,为什么还不能继承 Owner 权限?
javascript·人工智能·node.js
不加辣椒8 小时前
第 3 章 信任壁垒:为什么 AI 生成的代码不可直接信任
人工智能
toolsmith8 小时前
我用AI拆解了Charles的授权机制,发现密钥被写死在了代码里
java·人工智能