FDP(Flexible Data Placement)— 灵活数据放置

发布时间:2026/7/24 20:07:07
FDP(Flexible Data Placement)— 灵活数据放置 FDPFlexible Data Placement— 灵活数据放置 什么是 FDPFDPFlexible Data Placement是 NVMe 2.0 引入的最新特性允许主机精确控制数据写入 NAND 的物理位置从而从根本上降低写放大WAF提升 SSD 寿命与性能。 简单说FDP 让主机告诉 SSD “这批数据放一起那批数据放另一边”——SSD 不再需要盲目猜测数据的生命周期。 FDP 解决什么问题回顾 WAF 产生的根源传统 SSD 的困境 主机混合写入热数据 冷数据 → 同一个 Block ↓ 热数据频繁更新 → 该 Block 变脏 ↓ GC 触发搬移冷数据其实根本没必要动它 ↓ WAF 升高 寿命白白消耗 延迟抖动 根本原因SSD 不知道哪些数据生命周期相似 FDP vs 传统方案对比方案主机控制粒度WAF 改善实现复杂度传统 NVMe❌ 无控制基准简单ZNSZone 级粗粒度显著高需重写应用FDPPlacement Handle 级细粒度极显著中等兼容现有接口Multi-streamStream 级已废弃有限中等FDP 是 ZNS 和传统 NVMe 之间的黄金中间路线——改善效果接近 ZNS但对应用改动远小于 ZNS。⚙️ FDP 核心概念1️⃣ Reclaim UnitRU回收单元FDP 将 NAND 空间划分为多个 RU 每个 RU ≈ 一个或多个 NAND Block RU 是 GC 的最小回收单位2️⃣ Placement HandlePH放置句柄主机写入时携带 PH 标签 相同 PH 的数据 → 写入同一批 RU 不同 PH 的数据 → 写入不同 RU物理隔离3️⃣ Reclaim GroupRG回收组多个 RU 组成一个 RG 每个 PH 对应一个 RG 主机通过分配不同 PH 实现数据隔离 FDP 数据隔离示意没有 FDP混合存放 Block A: [热数据1][冷数据1][热数据2][冷数据2] Block B: [热数据3][冷数据3][热数据4][冷数据4] GC时必须搬移冷数据 → WAF 高 ───────────────────────────────────────────── 有 FDP按生命周期隔离 PH0热数据区: [热数据1][热数据2][热数据3][热数据4] PH1冷数据区: [冷数据1][冷数据2][冷数据3][冷数据4] GC时热数据区整块回收冷数据纹丝不动 → WAF≈1 ️ FDP 在数据库中的应用以RocksDB为例最典型的受益者RocksDB LSM-Tree 数据分层 Level 0最热频繁 Compaction → PH 0 Level 1 → PH 1 Level 2 → PH 2 Level 3最冷极少变动 → PH 3 WAL顺序写日志 → PH 4 效果 ├── 不同 Level 数据物理隔离 ├── Compaction 只影响对应 Level 的 RU ├── WAF 从 ~3.0 降至 ~1.2 └── P99 延迟降低 40% FDP 实测效果业界数据指标传统 NVMeFDP 优化后改善幅度WAF2.5 ~ 4.01.1 ~ 1.5↓ 60%SSD 寿命基准↑ 2~3x大幅延长P99 写延迟基准↓ 30~50%显著改善吞吐量稳定性波动较大极稳定明显改善️ FDP 使用示例# 检查设备是否支持 FDPnvme fdp status /dev/nvme0n1# 查看可用的 Placement Handlenvme fdp usage /dev/nvme0n1# 使用 io_uring 携带 FDP 标签写入伪代码struct io_uring_sqe sqe{.opcodeIORING_OP_WRITE, .fdfd, .addrbuf, .lenlen, .offoffset, .ioprioIORING_RECFSUPD_IPI(placement_handle)// 指定 PH};# RocksDB 开启 FDP 支持OPTIONS: use_fdptruefdp_placement_handles[0,1,2,3,4] FDP vs ZNS如何选择选 ZNS 的场景 ├── 应用天然顺序写日志、对象存储 ├── 愿意重写存储层以获得极致 WAF └── 追求最低硬件成本DRAM 用量最少 选 FDP 的场景 ├── 现有应用改动成本高数据库、文件系统 ├── 需要随机写支持 ├── 想快速获得 WAF 改善而不重构系统 └── 生产环境平滑迁移 两者共存 FDP 和 ZNS 并不互斥 未来 SSD 可能同时支持两种模式 按工作负载特性灵活选择 一句话总结FDP 是 SSD 与软件握手的新方式——主机不再把数据随手一扔而是告诉 SSD 每笔数据的归属让 GC 变得精准高效。这是继 ZNS 之后存储软硬件协同优化的又一次重要突破。