要約

  • NVM Express, Inc. は、NVMe 仕様ファミリーを支える非営利の業界コンソーシアムである。SSD、コントローラー、スイッチ、ストレージシステムを製造しているわけではない。
  • NVMe は、HDD 時代のシリアルな前提を、メモリ上の多数のサブミッションキューとコンプリーションキューに置き換えた。これは並列なフラッシュとマルチコア CPU に適合する。
  • コントローラー、サブシステム、名前空間という同じモデルは、ローカルでは PCIe 経由、離れた場所では NVMe over Fabrics 経由で機能する。TCP と RDMA はそれぞれ異なる運用プロファイルをもたらす。
  • NVMe 2.x はモジュール式である。2026年8月4日に公開された 2.4 セットは、Base、PCIe/RDMA/TCP トランスポート、NVMe-MI、Boot、および複数の専門化されたコマンドセットを調整する。
  • このプロトコルは容量をより構成可能にするが、ファイルシステム、耐久性、RAID、イレイジャーコーディング、ネットワーク設計、運用上の安全性、アプリケーションの一貫性を定義するものではない。

ストレージコマンドは、基本言語を変えずにサーバーを離れられる

アプリケーションは、ローカルの PCIe 名前空間から読み取るか、ファブリックを通じてリモートのサブシステムから読み取る。メディア、コントローラー、経路は変わるが、コマンドモデルはほぼ同じままである。

この連続性がディスアグリゲーションを可能にする。容量をプールし、各デバイスを消費側サーバーに組み込む代わりに、必要に応じてホストに割り当てることができる。

そこにディスカバリー、ネットワーク、マルチパス、認証、再接続、新しい障害ドメインが加わる。NVMe はストレージを、トポロジーのないリソースではなく、プログラム可能なサービスにする。

フラッシュには、機械的なレイテンシではなく並列性のためのプロトコルが必要だった

旧来のインターフェースは、HDD と狭いキューを反映していた。フラッシュは多数の操作を並列に処理できる一方、サーバーは多数の CPU コアを持つ。

NVMe は、メモリ上のサブミッションキューとコンプリーションキューのペアを利用する。ホストはコマンドを書き込み、ドアベルを操作し、割り込みまたはポーリングでコンプリーションを受け取る。複数のキューにより共有ロックが減り、コアに割り当てることができる。

それでも性能は、ファームウェア、PCIe トポロジー、NUMA、キューの深さ、割り込み、ワークロードに依存する。プロトコルの名前が普遍的なレイテンシを保証するわけではない。

コンソーシアムは、プロトコルの運営・管理を製品競争から分離している

作業は2000年代後半に始まり、NVMe 1.0 は 2011 年に登場し、NVM Express, Inc. は 2014 年に設立された。会員は CPU、メディア、コントローラー、ネットワーク、クラウド、システム市場から集まっている。

基準日時点で、Google の Amber Huffman が会長、AMD の Curtis Ballard が会計、Microchip の David Allen が書記を務めていた。公開された理事会には13人のプロモーター代表が名を連ねていた。

コンソーシアムは仕様と適合性を定義する。会員はシリコン、ファームウェア、システム、サポート、性能の面で引き続き競争する。会員資格は完全な実装を証明するものではない。

NVMe 2.0 は肥大化する文書をモジュール式ファミリーに分割した

複数のトランスポートとデータモデルにより、単一の文書では扱いにくくなっていた。2021年の 2.0 再構成は、Base、コマンドセット、トランスポートを分離した。

TCP はすべてのコマンドを書き直すことなく進化でき、ZNS はすべての標準コントローラーを変更することなく成長できる。その代わり、バージョン管理のマトリックスは複雑になる。

2026年8月4日の 2.4 セットには、Base 2.4、PCIe 1.4、RDMA 1.3、TCP 1.3、NVMe-MI 2.2、Boot 1.4 と、NVM、Key-Value、Zoned Namespace、Computational Programs、Simple Log Memory の各コマンドセットが含まれていた。「NVMe 2.4」は単一の文書ではない。

サブミッションキューとコンプリーションキューは、作業を CPU コアの近くに運ぶ

ホストはサブミッションキューにコマンドを書き込み、コントローラーはコンプリーションキューで結果を報告する。プロセスやコアはそれぞれ独自のペアを使い、競合を減らせる。

ドアベルは新しい作業を知らせる。ポーリングはレイテンシを下げ、CPU を占有する。割り込みコアレッシングはサイクルを節約するが、待ち時間を増やすことがある。キューの深さは利用率とテールレイテンシに影響する。

キューを深くすれば常に良いとは限らない。飽和を隠し、待ち時間を増やす可能性がある。正しい設定はワークロード次第である。

コントローラー、サブシステム、名前空間は、論理エンドポイントをメディアから分離する

コントローラーはキューとコマンドを提供する。サブシステムは複数のコントローラーを含むことができる。名前空間は論理容量を表し、複数の経路から到達可能である。

したがって、ホストの識別情報は物理 SSD と必ずしも一致しない。アレイは多くのメディアを束ね、安定した名前空間を提示できる。

NVMe はデータ配置、レプリケーション、保護を決定しない。RAID、イレイジャーコーディング、シンプロビジョニング、一貫性は、周囲のシステム側にある。

管理コマンドは I/O の環境を決める

管理キュー(Admin Queue)は、識別、キュー作成、フィーチャー、ログ、ファームウェア、名前空間、セキュリティを管理する。通常の読み取りと書き込みのためのコンテキストを作り出す。

管理コマンドは、名前空間の削除、誤ったファームウェアの有効化、パワーステートの変更を行える。権限、監査、変更管理が重要になる。

管理と I/O の分離はアーキテクチャを改善するが、コントロールプレーンが重要でなくなるわけではない。ファブリックでは、両方が同じネットワークに依存することがある。

PCIe はローカル経路をメモリとハードウェアの近くに保つ

PCIe 上の NVMe は、ローカルバス上の共有メモリ構造とコントローラーレジスタを利用する。これはサーバー内の SSD とカードへの直接的な経路である。

トポロジーは依然として重要だ。デバイスは PCIe スイッチの背後、別の NUMA ソケット上、または共有レーン上に配置されることがある。CPU、メモリ、デバイスを適切に配置する必要がある。

ドライブの台数だけではインベントリとして不十分である。レイテンシは、メディアに到達する前にホスト内で発生し得る。

NVMe over Fabrics は、ローカルな関係をネットワークサービスにする

NVMe-oF 1.0 と NVMe-MI 1.0 は2016年6月9日に公開された。NVMe-oF はカプセルとデータをリモートのサブシステムへ運び、ファブリック経由でキューを確立する。

容量はプールでき、コンピュートから分離できる。データを移動することなく、ホストを交換できる。

その代わり、NIC、スイッチ、経路、ディスカバリー、コントローラー、認証、マルチパスがデータ経路に加わる。ネットワークはデータ整合性システムの一部になる。

ディスカバリーコントローラーは接続を簡素化し、重要な依存関係を生む

ホストはディスカバリーコントローラーにサブシステム、アドレス、サービスを問い合わせる。各ターゲットの手動設定は不要になる。

誤った情報や障害は、新しい接続を妨げたり、誤った宛先へ導いたりする可能性がある。冗長化、キャッシュ、検証、アイデンティティ保護が必要である。

ディスカバリーとデータ可用性は同じではない。既存のセッションは継続できる一方、新しいホストは何も見つけられないことがある。

NVMe/TCP はストレージファブリックを通常の IP ネットワークにもたらした

2019年に標準化された TCP トランスポートは、コマンドとデータを TCP 接続にマッピングする。運用者は、RDMA ファブリックを構築せずに、ルーティングされたイーサネット、IP ツール、ファイアウォールを利用できる。

その入手しやすさにはコストが伴う。TCP スタック、コピー、割り込み、CPU はテールレイテンシに影響する。カーネル、オフロード、転送サイズ、チューニングが重要である。

このトランスポートはフレーミングとダイジェストを追加し、TLS を使用できる。TLS をサポートしていることは、TLS が有効化されている、または正しく運用されていることを意味しない。

NVMe/RDMA は低レイテンシを目指し、ファブリックの規律を要求する

RDMA は、キュー・ペア、登録済みメモリ、NIC オフロードを利用して、CPU の介入を減らしてデータを転送する。これは HPC と AI にとって魅力的である。

RDMA は単一のネットワークではない。RoCE、iWARP、その他のバインディングは、輻輳、ロス、PFC、ECN、メモリ登録について異なる要件を持つ。

高速なベンチマークが簡単な運用を証明するわけではない。ファブリックの問題はストレージのタイムアウトとして現れ、ネットワークとシステムの知識が必要になる。

マルチパスは冗長性をホストの決定にする

名前空間は複数のコントローラーと経路から到達可能である。ホストは負荷分散とフェイルオーバーを決定する。非対称名前空間アクセス(ANA)は、最適化された経路、最適化されていない経路、利用できない経路を示す。

2つのリンクがスイッチ、コントローラー、電源、経路を共有していることがある。独立性は実際の障害でテストされなければならない。

誤ったポリシーは、不良経路を長時間使い続けたり、I/O を低速経路に送ったりする。冗長性はポートの数ではなく、観測される挙動である。

リザベーションは共有アクセスを調整するが、コンセンサスの代わりにはならない

NVMe リザベーションにより、ホストは登録して名前空間を予約し、権限のない書き込みをブロックできる。クラスターやフェイルオーバーのシナリオで役立つ。

ただし、クラスターのコンセンサスやアプリケーションの一貫性の代わりにはならない。障害が発生したホストが状態を残すことがあり、フェンシングによって古いノードの書き込みを防がなければならない。

不適切なリカバリは、保護を障害や破損に変えてしまうことがある。

ストレージが PCIe を離れると、認証と TLS が重要になる

ローカルデバイスは暗黙の物理的境界の恩恵を受けていた。ネットワーク上では、イニシエーターとターゲットがアイデンティティを証明し、チャネルを保護しなければならない。

NVMe は認証を定義し、TCP は TLS を採用できる。その結果は、鍵、証明書、ローテーション、アルゴリズム、ポリシーに依存する。サポートは安全な利用を意味しない。

ディスカバリー、管理、データプレーンをまとめて考慮する必要がある。正当なアイデンティティでも、過剰な権限を持つことがある。

NVMe-MI はアプリケーション I/O から分離された管理プレーンを作る

NVMe Management Interface(NVMe-MI)は、主要な I/O 経路の外でも、インベントリ、ヘルス確認、特定のアクションを可能にする。

これは保守とリカバリに役立つが、特権的なインターフェースを追加する。管理ツールは機密情報を読み取ったり、デバイスを大量に変更したりできる。

NVMe-MI は Redfish と統合できる。統合によって、標準間・ベンダー間の責任の境界がなくなるわけではない。

Zoned Namespaces はメディアの制約をソフトウェアに見えるようにする

ZNS は容量を順次書き込み可能なゾーンに分割する。ホストへの可視性は内部ガベージコレクションを減らし、耐久性や予測可能性を向上させることができる。

その利点には、ゾーン対応のファイルシステム、データベース、ストレージ層が必要である。通常のブロックアプリケーションは自動的には恩恵を受けない。

ZNS はトレードオフを示す。メディアへの洞察を増やすことで効率は向上するが、ソフトウェアへの移植性の要求も高まる。

Key Value、Simple Log Memory、Computational Programs は名前空間を拡張する

専門化されたコマンドセットは、Key/Value アクセス、単純なログ構造、ストレージ近くでのプログラム実行を可能にする。翻訳とデータ移動を減らすことを目的としている。

利用はコントローラー、ドライバー、ライブラリ、アプリケーションに依存する。仕様があるからといって、その機能が普遍的に使えるわけではない。

オプションが増えるほど、機能のディスカバリーとフォールバックが重要になる。モジュール性は柔軟性と、新しい市場のマトリックスを生む。

適合性は証拠を提供するが、エンドツーエンドの性能を認定するわけではない

プログラムとワークショップは、具体的なホスト・コントローラー間の相互作用をテストし、文書だけでは明らかにならない逸脱を発見する。

リスト掲載は、あらゆるトポロジーにおけるレイテンシ、耐久性、リカバリ、セキュリティを測定するものではない。オプション機能やドライバー・ファームウェアのマトリックスは変化する。

購入者は適合性を最低限の基準として使い、自社のワークロード、障害、アップグレードを自らテストすべきである。

ディスアグリゲーションは容量をホストから切り離し、責任を再配分する

ローカルストレージは、デバイス、サーバー、システムチームを結び付けていた。リモートプールは多くの消費者にサービスを提供し、ソフトウェアによって割り当てられる。

ネットワーク、ストレージ、プラットフォーム、セキュリティ、アプリケーションの各チームがインシデントを共有する。ファブリックの劣化はデータベースの障害のように見え、ファームウェアの問題はネットワーク喪失のように見えることがある。

経済性は、テラバイトあたりの価格だけでなく、利用率と運用能力に依存する。

AI はストレージのレイテンシをコンピュートのコストにする

トレーニングはデータセットを読み込み、チェックポイントを書き込み、大規模に状態を移動させる。何千ものアクセラレーターが待つとき、ストレージの待ち時間は高くつく。

TCP、RDMA、マルチパス、共有名前空間は、さまざまなアーキテクチャを提供する。輻輳、リカバリ、メタデータ、キューの挙動は選択に含めるべきである。

目標はピークスループットだけでなく、同期された負荷の下での予測可能なキューとリカバリのレイテンシである。

NVMe 2.4 は広がりとバージョン圧力を示す

このセットは、Base、トランスポート、Boot、管理インターフェース、コマンドセットを調整する。NVMe は単なる SSD 接続ではなく、スタックである。

ホストは、どのコマンドセットも持たずに Base 2.4 をサポートできる。TCP コントローラーは RDMA 製品とは異なる機能を持つことがある。サポートの表明は具体的でなければならない。

ドライバー、OS、ファームウェア、トランスポート、管理ツールはマトリックスを構成し、それが実質的にプロトコルの一部となる。

NVMe はストレージを構成可能にしたが、単純にはしなかった

共通の契約は、あるスイッチングコストを下げる。コマンドと名前空間は、PCIe からファブリックへの、あるいはベンダーからベンダーへの移行に耐えられる。データ移行、セキュリティ、可観測性、ネットワーク、サポートは残る。

利点は、プロトコルと製品の分離である。リスクは、非常に異なるアーキテクチャを同じ名前の下に隠すことである。

ストレージはプログラム可能で分散的になるが、障害の下で理解されなければならない整合性システムであり続ける。