# ゾーン名前空間SSD
## 定義
Zoned Namespace SSD(ZNS)は、フラッシュ SSD の名前空間を固定サイズの append-only ゾーンに分割し、ホストがゾーンの選択・書き込み・リセット(消去)を直接管理できるようにするストレージインターフェースである。従来のブロックインターフェースと異なり、ホストはゾーンへの逐次書き込みのみが許可され、ランダム上書きはできない。この制約により、SSD 内部でのガーベジコレクションの多くをホスト側の設計に委ねることができ、write amplification の削減が期待される。[[@2025__SoCC__Valet - Efficient Data Placement on Modern SSDs]] の評価では Western Digital Ultrastar DC ZN540(4 TB)が用いられている。(Source: [[@2025__SoCC__Valet - Efficient Data Placement on Modern SSDs]])
## 横断的知見
- **ZNS に対応するファイルシステム・アプリケーションの層は薄く、host-managed の恩恵を最大限引き出すにはホスト側の実装コストが依然として大きい**: 論文 Table 1 によれば、ZNS(2021年導入)に対応するファイルシステムは f2fs・btrfs のみ、対応アプリケーションは RocksDB のみで、いずれも汎用性・保守性に課題を抱える(btrfs の ZNS サポートは著者らの環境でベンチマークが動作しないほど限定的)。(Source: [[@2025__SoCC__Valet - Efficient Data Placement on Modern SSDs]])
- **ZNS の生の帯域を引き出すには、カーネル内ファイルシステムのキャッシュ・同期オーバーヘッドを避けることが決定的に重要である**: zonefs(ZNS をシステムコールで直接操作するカーネル内ラッパー)への書き込みはスレッド数1〜14で全帯域を維持できたのに対し、汎用性の高い f2fs は帯域の30〜50%に留まった。f2fs は O_DIRECT 指定下でもなお内部キャッシュへの書き込みマッピングとロック処理でCPU時間の34.43%を同期(sync)に費やす。(Source: [[@2025__SoCC__Valet - Efficient Data Placement on Modern SSDs]])
- **ZNS 上に独自の軽量ストレージエンジンを構築するアプローチ(valet-mapper)は、ゾーン単位でのガーベジコレクション(ゾーン全体のリセットによるデータ移動ゼロの空き容量確保)を可能にし、書き込みアンプリフィケーションを抑えられる**: ログ構造化アプリケーションでは頻繁に更新される WAL のようなストリームが専用ゾーンに隔離されるため、全 extent が削除されたゾーンをデータ移動なしでリセットできる頻度が高い。実験では Valet が1059 MiB のデータ移動ゼロで空き容量を確保したのに対し、f2fs は同条件で1059 MiB のデータを移動した。(Source: [[@2025__SoCC__Valet - Efficient Data Placement on Modern SSDs]])
## 未解決の問い
- ZNS 上でのマルチテナント運用(複数アプリケーションによる同時ゾーン利用)は、zenfs のようなアプリケーション固有ソリューションでは原理的にサポートされない。汎用シムレイヤー方式(Valet)以外に、この制約を解消する設計は考えられるか。
- FDP(Flexible Data Placement)は ZNS と異なりホストによるゾーン管理・ガーベジコレクションの責務を負わない設計だが、ハードウェアの一般提供が進んでいない。ZNS と FDP のどちらが長期的により持続可能な標準になるかは、本論文執筆時点では未解決。
- valet-mapper のような userspace ストレージエンジンが zonefs 経由で ZNS を扱う場合と、NVMe コマンドを直接発行する場合とで、性能・実装複雑性のトレードオフはどう変わるか(論文は zonefs 経由を選択し、直接 NVMe 操作は将来課題としている)。
## 関連
- ソース: [[@2025__SoCC__Valet - Efficient Data Placement on Modern SSDs]]
- 概念: [[ホスト誘導データ配置]] / [[シムレイヤー]]
- エンティティ: [[Valet]] / [[zenfs]] / [[f2fs]]