ZNS(Zoned Namespace)— 分区命名空间
️ ZNSZoned Namespace— 分区命名空间 什么是 ZNSZNSZoned Namespace是 NVMe 2.0 引入的一种新型命名空间模式将 SSD 的存储空间划分为一系列固定大小的区域Zone每个 Zone 只能顺序写入必须显式重置后才能重新写入。 简单说ZNS 把 SSD 的内部管理逻辑暴露给主机让主机来决定数据怎么摆放。 传统 SSD 的问题传统 SSDFTL 全权管理 主机随机写入 ↓ FTL 内部重新排列 → 写放大WAF 高 FTL 触发 GC → 延迟抖动 FTL 维护映射表 → 消耗大量 DRAM ↓ 主机对内部发生的事情一无所知核心矛盾主机最了解数据的冷热和生命周期但 FTL 却在盲目猜测。⚙️ ZNS 如何解决这个问题ZNS SSD 主机按 Zone 顺序写入 ↓ FTL 映射极度简化顺序写 无需复杂地址映射 不需要传统 GC → WAF 接近 1.0 ✅ 映射表极小 → DRAM 需求大幅降低 ✅ 延迟稳定可预期 → QoS 大幅提升 ✅️ Zone 的基本结构┌─────────────────────────────────────────────┐ │ ZNS SSD │ ├──────────┬──────────┬──────────┬────────────┤ │ Zone 0 │ Zone 1 │ Zone 2 │ Zone N │ │ 128MB │ 128MB │ 128MB │ 128MB │ ├──────────┴──────────┴──────────┴────────────┤ │ 每个 Zone 状态 │ │ Empty → Implicitly/Explicitly Opened │ │ → Full → Reset → Empty循环 │ └─────────────────────────────────────────────┘Zone 的四种状态状态说明Empty空闲可以开始写入Open已打开正在顺序写入Full已写满不可再写入Read Only只读特殊情况⚠️ 同时打开的 Zone 数量有上限Active Zone Limit需要主机合理管理。 ZNS vs 传统 NVMe 对比对比维度传统 NVMe SSDZNS SSD写入方式随机写FTL 处理顺序写Zone 内WAF1.5 ~ 3.0≈ 1.0GC 开销有影响延迟极少或无DRAM 需求大映射表极小尾延迟较高GC 抖动极低且稳定主机复杂度低FTL 透明较高需 ZNS-aware 软件适用场景通用顺序写为主的场景 ZNS 的典型应用场景1️⃣ RocksDBLSM-Tree 数据库LSM-Tree 天然顺序写 → 与 ZNS Zone 完美契合 ZenFSRocksDB ZNS 插件直接管理 Zone → WAF 降低 50%写入吞吐提升显著2️⃣ 对象存储如 Ceph每个对象映射到独立 Zone Zone 满了直接回收整个 Zone 一起删 → 无碎片GC 极简化3️⃣ 日志 / WALWrite-Ahead Log日志天然顺序追加写 Zone 写满 → 归档 → Reset → 完美匹配 Zone 生命周期模型️ ZNS 生态工具# 查看 ZNS 设备信息nvme zns id-ns /dev/nvme0n1# 查看所有 Zone 状态nvme zns report-zones /dev/nvme0n1# 重置指定 Zonenvme zns reset-zone /dev/nvme0n1-s0x0# 使用 fio 测试 ZNS 性能fio--namezns_test\--filename/dev/nvme0n1\--rwwrite\--bs128k\--zonemodezbd\--direct1 ZNS 的未来ZNS 代表了一种趋势将存储硬件的内部细节向上层软件开放Host-Managed Storage让软件栈更好地利用硬件特性传统硬件越来越智能对软件透明 未来硬件暴露特性软件协同优化 ↓ ZNS → FDPFlexible Data Placement→ 更细粒度的数据放置控制 Solidigm 积极参与 NVMe 标准制定ZNS 和 FDP 特性是下一代数据中心 SSD 的重要方向。 一句话总结ZNS 是一场权力下放的革命——把数据摆放的决策权从 SSD 固件交还给主机软件换来的是近乎完美的 WAF、极低的尾延迟和更低的硬件成本。代价是软件栈需要变得更聪明。