要約
- NVM Express, Inc.は NVMe 仕様群を管理する非営利の業界コンソーシアムであり、SSD、controller、switch、storage system を製造する会社ではない。
- NVMe は HDD 時代の狭く直列的な queue の前提を、多数の submission queue と completion queue へ置き換え、並列 flash と multicore CPU に合わせた。
- 同じ controller、subsystem、namespace の意味を、ローカル PCIe でも、NVMe over Fabrics を通じた TCP や RDMA でも利用できる。
- NVMe 2.x はモジュール構造である。2026年8月4日に公開された2.4 set は、Base、PCIe/RDMA/TCP transport、NVMe-MI、Boot、複数の専用 command set をまとめる。
- NVMe は容量を composable にするが、filesystem、耐久性、RAID、erasure coding、network design、運用セキュリティ、application consistency は定義しない。
ストレージ命令は基本言語を変えずにサーバーの外へ出られる
一つの read command は、PCIe で接続されたローカル namespace へ向かうことも、fabric 上の遠隔 subsystem へ向かうこともできる。media、controller、path は変わるが、command と queue の基本モデルは保たれる。
この連続性が disaggregation を可能にする。容量を共有 pool へ集め、利用する host へ必要に応じて割り当てられるため、すべての device を同じ chassis に置く必要はない。
しかし、外部化によって discovery、network、multipath、authentication、reconnect、新しい failure domain が加わる。NVMe は storage をプログラム可能なサービスにするが、topology を消すわけではない。
Flash には機械的遅延ではなく並列性を前提にした protocol が必要だった
従来の storage interface は、回転ディスクの遅延と限られた並列処理を背景にしていた。Flash は多数の操作を並列に処理でき、現代の server は多くの CPU core を持つ。
NVMe は memory 上に submission queue と completion queue の組を置く。Host は command を書き、doorbell で controller へ通知し、interrupt または polling で completion を受け取る。複数 queue を core や process へ分ければ、共有 lock と contention を減らせる。
実性能は controller firmware、PCIe topology、NUMA、queue depth、interrupt 設定、workload に依存する。NVMe という名称だけで特定の latency や throughput は保証されない。
コンソーシアムは protocol governance と製品競争を分離する
NVMe の作業は2000年代末に始まり、1.0は2011年に公開され、NVM Express, Inc.は2014年に設立された。CPU、media、controller、network、cloud、system の企業が参加する。
調査時点では、Google の Amber Huffman が President、AMD の Curtis Ballard が Treasurer、Microchip の David Allen が Secretary を務め、公開 Board には13人の promoter 代表がいた。
コンソーシアムは共通契約と compliance を整える。会員は silicon、firmware、system、support、performance で競争を続ける。会員であることは、すべての feature の実装を意味しない。
NVMe 2.0は肥大化した一冊をモジュール仕様群へ変えた
複数 transport と新しい data model が加わるにつれ、一つの文書ですべてを保守することが難しくなった。2021年の2.0再構成は、Base、command set、transport を分離した。
この構造なら TCP を進化させても全 command を書き直す必要がなく、Zoned Namespace も標準 block controller を変えずに拡張できる。代わりに version matrix は複雑になる。
2026年8月4日に公開された2.4 set には、Base 2.4、PCIe Transport 1.4、RDMA Transport 1.3、TCP Transport 1.3、NVMe-MI 2.2、Boot 1.4、NVM、Key Value、Zoned Namespace、Computational Programs、Simple Log Memory の各 command set が含まれた。「NVMe 2.4」は一つのファイルではない。
Submission と completion queue は storage work を CPU core へ近づける
Host は submission queue へ command を書き、controller は completion queue へ status を返す。Core や application ごとに別の queue pair を使い、競合を減らせる。
Doorbell は新しい work を通知する。Polling は latency を下げる場合があるが CPU を消費する。Interrupt coalescing は CPU 負荷を下げる一方で待ち時間を増やし得る。Queue depth は利用率と tail latency の両方に影響する。
深い queue が常に良いわけではない。飽和を隠し、待ち時間を延ばすこともある。設定は workload と SLA に合わせる必要がある。
Controller、subsystem、namespace は論理 endpoint と物理 media を分ける
Controller は queue と command を公開する。Subsystem は複数 controller を含み得る。Namespace は host から見える論理容量で、複数 path から提供できる。
Host が見る identity は、一枚の SSD と一致する必要がない。Array は多数の media を束ねて安定した namespace を提示できる。
NVMe は data placement、replication、protection を決めない。RAID、erasure coding、thin provisioning、snapshot、consistency は周辺 system の責任である。
Administrative command は通常 I/O と同じくらい重要である
Admin queue は identification、I/O queue 作成、feature、log、firmware、namespace、security を管理する。通常の read/write が成立する環境を制御する層である。
誤った admin command は namespace 削除、誤 firmware activation、power state 変更を引き起こす。Permission、audit、change control が必要だ。
Admin と I/O を分離しても control plane の重要性は下がらない。Fabric では両方が同じ network と identity に依存する場合がある。
PCIe はローカル経路を memory と hardware へ近づける
NVMe over PCIe はローカル bus 上の共有 memory structure と controller register を使う。Server 内 SSD や card へ最も直接的に接続する形である。
物理的に近いことは topology が単純という意味ではない。Device は PCIe switch の先、別 NUMA socket、共有 lane 上にあるかもしれない。CPU、memory、device の配置が performance を左右する。
Drive 数だけでは不十分である。Media へ到達する前に、host 内部の PCIe path で latency が生じ得る。
NVMe over Fabrics はローカル controller 関係を network service へ変える
NVMe-oF 1.0と NVMe-MI 1.0は2016年6月9日に公開された。NVMe-oF は command capsule と data を遠隔 subsystem へ運び、host が fabric 上に queue を作る。
容量 pool を複数 host で共有し、compute と storage を分離できる。Host を交換しても data を動かさずに済む。
一方で NIC、switch、route、discovery、controller、authentication、multipath が data path へ入る。Network は単なる接続ではなく、data integrity system の一部になる。
Discovery controller は動的接続を容易にし、重要依存も作る
Host は discovery controller へ問い合わせ、利用可能な subsystem、address、service を知る。Target ごとの手動設定が減り、resource を動的に追加できる。
誤情報や service outage は新しい connection を妨げ、誤 target へ誘導する。Redundancy、cache、validation、identity protection が必要だ。
Discovery availability と data path availability は同一ではない。既存 session が動く一方、新しい host だけ接続できないことがある。
NVMe/TCP は一般的な IP network へ storage fabric を広げた
2019年に標準化された NVMe/TCP は command と data を TCP connection へ mapping する。Operator は routed Ethernet、IP tool、firewall、既存運用を使え、RDMA fabric を必須としない。
容易さには overhead がある。TCP stack、copy、interrupt、CPU は tail latency へ影響する。Kernel implementation、offload、transfer size、tuning が重要になる。
Transport は storage 向け framing と digest を持ち、TLS も利用できる。TLS 対応は、TLS が有効で正しく管理されていることを意味しない。
NVMe/RDMA は低 latency を狙い、厳密な fabric 設計を要求する
RDMA は queue pair、registered memory、NIC offload を使い、CPU 介入を減らして data を動かす。HPC と AI で microsecond と CPU cycle が重要な場合に有効である。
RDMA は一つの network ではない。RoCE、iWARP などの binding は、congestion、loss、PFC、ECN、memory registration で異なる要求を持つ。
高速 benchmark は簡単な operation を保証しない。Fabric 障害は storage timeout として見え、network と system の両方の知識が必要になる。
Multipath は冗長性を host の policy へ変える
一つの namespace は複数 controller と path から見える。Host は load balance と failover を選ぶ。Asymmetric Namespace Access は optimized、non-optimized、unavailable path を示す。
二本の link が同じ switch、controller、power、route を共有することもある。独立性は実際の failure test で確かめる必要がある。
誤った policy は遅い path へ I/O を流し、壊れた path を長く保持する。冗長性は port 数ではなく動作で評価する。
Reservation は共有アクセスを調整するが consensus を代替しない
NVMe reservation は host を登録し、namespace を reserve して未承認 writer を防ぐ。Cluster と failover で役立つ。
しかし cluster consensus や application consistency を置き換えない。故障 host が state を残すことがあり、fencing で古い node の write を防がなければならない。
Recovery を誤ると、保護策が outage や corruption の原因になる。
Storage が PCIe を離れると authentication と TLS が不可欠になる
ローカル device は一定の物理境界を前提にできた。Network 上では initiator と target が identity を証明し、必要な channel を保護する必要がある。
NVMe は authentication を定義し、NVMe/TCP は TLS を利用できる。実効性は key、certificate、rotation、algorithm、access policy、implementation に依存する。Support だけでは安全運用にならない。
Discovery、admin、data plane を一緒に評価する必要がある。本物の identity でも権限が広すぎれば危険だ。
NVMe-MI は application I/O と別の management path を提供する
NVMe Management Interface は subsystem の発見、health の読取、device inventory、管理 action を可能にし、主 I/O path が使われない時にも役立つ。
Maintenance と recovery に有用だが、別の高権限 interface も増える。集中 tool は機密情報を読み、大量 device を変え得る。
NVMe-MI は Redfish などと統合できる。統合は各標準と vendor の責任を一つにするものではない。
Zoned Namespace は media の制約を host software へ見せる
ZNS は capacity を順次書込の zone へ分ける。Host が media layout を知れば、controller 内部の garbage collection を減らし、endurance や predictability を改善できる。
効果を得るには zone-aware filesystem、database、storage layer が必要である。従来の block device 向け application が自動で恩恵を受けるわけではない。
ZNS は NVMe の取引を示す。Media behavior を公開すれば効率は上がるが、software portability の要求も増える。
Key Value、Simple Log Memory、Computational Programs は namespace の意味を広げる
専用 command set は key/value、簡単な log memory、storage 近傍での program execution を可能にし、変換や data movement を減らそうとする。
採用には controller、driver、library、application が必要である。仕様に存在しても、すべての SSD や array が提供するわけではない。
Option が増えるほど capability discovery と fallback が重要になる。Modularity は柔軟性と同時に新しい商用 matrix を生む。
Compliance は有用な証拠だが end-to-end performance を認証しない
Compliance program と interoperability workshop は、host-controller 間の具体動作を試し、文書だけでは分からない不一致を見つける。
List への掲載は、すべての topology で latency、endurance、recovery、security を保証しない。Optional feature と driver-firmware matrix は変化する。
購入者は compliance を最低線とし、自身の workload、failure、upgrade を試験すべきである。
Disaggregation は capacity を host から分離し、責任も再配分する
Local storage では device、server、system team が結び付きやすかった。Remote pool は複数 consumer を支え、allocation を software で変えられる。
Network、storage、platform、security、application team が同じ incident を共有する。Fabric degradation が database 障害に見え、controller firmware 障害が network loss に見えることもある。
経済性は単価だけでなく、capacity utilization と運用能力に依存する。
AI は storage latency を compute cost へ変える
Training は dataset を読み、checkpoint を書き、大規模な state を動かす。数千 accelerator が待てば、storage tail latency は高価な compute を浪費する。
TCP、RDMA、multipath、shared namespace は異なる architecture を提供する。Congestion、metadata、queue behavior、failure、recovery を含めて選ぶ必要がある。
目標は peak throughput だけでなく、同期負荷で予測可能な queue latency と recovery である。
NVMe 2.4は広い範囲と version pressure を示す
2.4 set は Base、transport、Boot、Management Interface、専用 command set をまとめる。NVMe は SSD connector ではなく、storage protocol stack になった。
Host が Base 2.4を支えても全 command set を持つとは限らず、TCP controller と RDMA 製品の feature も異なる。Support statement は具体的でなければならない。
Driver、OS、firmware、transport、management tool の組み合わせが、実際には protocol の一部になる。
NVMe は storage を composable にしたが、単純にはしなかった
共通契約は一つの switching cost を下げる。Command と namespace は PCIe から fabric へ、または vendor 間で移り得る。Data migration、security、network、observability、support は残る。
利点は protocol と product の分離である。リスクは、NVMe という同じ名称が非常に異なる architecture を隠すことだ。
Storage は programmable で distributed になるが、failure 時に全経路を理解すべき data integrity system であり続ける。
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加
