概要

  • NVM Express, Inc. は NVMe ファミリーを統括する非営利コンソーシアムであり、SSD、コントローラー、スイッチ、ストレージシステムを製造しているわけではありません。
  • NVMe は、機械式ディスクから受け継がれた前提を、メモリ上の複数の submission queue と completion queue に置き換え、並列フラッシュとマルチコア CPU に適合させました。
  • 同じ controller・subsystem・namespace のモデルは、PCIe 上でローカルに動作することも、NVMe over Fabrics でリモートに動作することもでき、TCP と RDMA という運用特性の異なるトランスポートがあります。
  • NVMe 2.x はモジュール構造です。2026年8月4日公開の 2.4 セットは、Base、PCIe/RDMA/TCP 各トランスポート、NVMe-MI、Boot、および複数の専門 command set を統合しています。
  • このプロトコルは容量へのアクセスをより構成可能(コンポーザブル)にします。ただし、ファイルシステム、耐久性、RAID、イレイジャーコーディング、ネットワーク設計、運用上のセキュリティ、アプリケーションの整合性は定義しません。

ストレージの命令は、基本となる言語を変えずにサーバーの外へ出られる

読み取りは、PCIe 経由でローカルの NVMe namespace に向けることも、ファブリック経由でリモートの subsystem に向けることもできます。媒体、コントローラー、経路は変わりますが、コマンドモデルは維持されます。

この連続性により、ディスアグリゲーション(分離)が可能になります。容量をプールし、消費するシャーシに各デバイスを設置する代わりに、需要に応じてホストへ割り当てられます。

分離は、ディスカバリー、ネットワーク、マルチパス、認証、再接続、そして新たな障害ドメインという依存関係を追加します。NVMe はストレージを、トポロジーのないリソースではなく、プログラム可能なサービスに変えます。

フラッシュには並列性向けに設計されたプロトコルが必要だった

従来のインターフェースは、機械的なレイテンシと狭いキューを反映していました。フラッシュは多くの操作を並列に処理でき、現代のサーバーには多数のコアがあります。

NVMe は、メモリ上の submission queue と completion queue のペアを使用します。ホストはコマンドを配置し、ドアベルを更新し、割り込みまたはポーリングで完了を受け取ります。キューの数を増やすことで共有ロックを減らし、特定のコアに割り当てることもできます。

結果はファームウェア、PCIe、NUMA、キューの深さ、割り込み、ワークロードに依存します。プロトコルの名称は、普遍的な性能水準を保証するものではありません。

コンソーシアムはプロトコルの統治と製品競争を分離している

この作業は2000年代後半に始まり、NVMe 1.0 は2011年に登場し、NVM Express, Inc. は2014年に設立されました。CPU、メディア、コントローラー、ネットワーキング、システム、クラウドの各企業が参加しています。

調査時点では、Google の Amber Huffman が President、AMD の Curtis Ballard が Treasurer、Microchip の David Allen が Secretary を務めていました。公開されている取締役会には、プロモーター代表13名が含まれていました。

コンソーシアムは契約(仕様)とコンプライアンスプログラムを定義します。メンバーは、シリコン、ファームウェア、システム、サポート、性能で競争しています。コンソーシアムに所属しているからといって、製品がすべての機能を実装していることにはなりません。

NVMe 2.0 は肥大化する文書をモジュール型ファミリーに変えた

複数のトランスポートと新しいデータモデルが登場したことで、単一の仕様書として維持するのが難しくなりました。2021年の 2.0 再編成により、Base、command set、トランスポートが分離されました。

これにより、TCP はすべてのコマンドを書き直すことなく進化でき、ZNS は従来のコントローラーをすべて変更せずに前進できます。その代償として、バージョンの組み合わせマトリクスは複雑になります。

2026年8月4日に公開された NVMe 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 の各 command set を統合したものです。単一のファイルではありません。

Submission queue と completion queue が処理をコアに近づける

ホストは submission queue にコマンドを書き込み、コントローラーは completion queue で状態を返します。異なるコアやプロセスが別々のペアを使うことで、競合を減らせます。

ドアベルは新しい処理を通知します。ポーリングは CPU を消費する代わりにレイテンシを下げられ、割り込みコアレッシングはサイクルを節約する代わりに待ち時間を増やします。キューの深さは、利用率とテールレイテンシを変えます。

より深いキューが常に良いとは限りません。飽和を隠し、待ち時間を増やす可能性があります。構成はワークロードに従うべきです。

Controller・subsystem・namespace は論理エンドポイントと物理媒体を分離する

controller はキューとコマンドを公開します。subsystem は複数の controller をグループ化できます。namespace は論理容量を表し、複数の経路から提示できます。

ホストから見える識別情報は、必ずしも SSD と一致しなくなります。アレイは多数の媒体を集約し、安定した namespace を提供できます。

NVMe はデータの配置、レプリケーション、保護を決めません。RAID、イレイジャーコーディング、シンプロビジョニング、整合性は上位システムの役割です。

管理コマンドが I/O 環境を制御する

admin queue は、識別、キューの作成、機能、ログ、ファームウェア、namespace、セキュリティを管理します。通常の運用を可能にする層です。

管理コマンドは、namespace の削除、誤ったファームウェアの有効化、電源状態の変更を行うことができます。権限、監査、変更管理が必要です。

admin と 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 はカプセルとデータをリモートの subsystem に運び、ホストはネットワーク経由でキューを作成し、namespace を確認します。

このアーキテクチャにより、共有プールと、コンピュートとストレージの分離が可能になります。ホストはデータを移動せずに変更できます。

また、データ経路に NIC、スイッチ、ルーティング、ディスカバリー、コントローラー、認証、マルチパスが追加されます。ネットワークファブリックは、完全性(インテグリティ)システムの一部になります。

Discovery controller は動的な運用を容易にする一方、重要な依存関係を生む

ホストは discovery controller に問い合わせて、subsystem、アドレス、サービスを把握します。これにより、各ターゲットを手動で設定する必要がなくなります。

誤った情報やサービス停止は、新しい接続を妨げたり、ホストを誤った場所へ誘導したりする可能性があります。冗長性、キャッシュ、検証、アイデンティティ保護が必要です。

ディスカバリーはデータパスの可用性と同じではありません。新しいホストが何も発見できない間も、既存の接続は継続できます。

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

2019年に標準化された NVMe/TCP は、コマンドとデータを TCP 上にマッピングします。事業者は RDMA を構築せずに、ルーティング可能なイーサネット、IP ツール、ファイアウォール、既知の運用慣行を利用できます。

この容易さはオーバーヘッドを追加します。TCP、コピー、割り込み、CPU はテールレイテンシに影響を与える可能性があります。カーネル、オフロード、転送サイズ、チューニングが決定的です。

このトランスポートには固有のフレーミングとダイジェストが含まれ、TLS を使用できます。TLS に対応していることは、有効化されていることも、適切に運用されていることも意味しません。

NVMe/RDMA は、より厳格なファブリック運用で低レイテンシを目指す

RDMA は、queue pair、登録済みメモリ、NIC の機能を使用して、CPU の介入を減らしながらデータを移動します。HPC や AI にとって魅力的です。

RDMA は単一のネットワークではありません。RoCE、iWARP、その他のバインディングは、輻輳、損失、PFC、ECN、メモリに関して異なる要件を持ちます。

高速なベンチマークは、運用の容易さを証明しません。ネットワークの問題はストレージのタイムアウトとして現れることがあり、複合的なスキルが要求されます。

マルチパスは冗長性をホストの判断に変える

namespace は複数の controller とパスから見えることがあります。ホストは負荷分散またはフェイルオーバーを選択します。Asymmetric Namespace Access は、optimized、non-optimized、unavailable の各パスを示します。

2つのリンクがスイッチ、コントローラー、電源、経路を共有している場合があります。独立性は実際の障害で検証する必要があります。

誤ったポリシーは I/O を低速な経路に送ったり、停止した経路からの離脱を遅らせたりする可能性があります。冗長性は観測された挙動であり、ポート数の問題ではありません。

Reservation は共有アクセスを調整するが、コンセンサスには取って代わらない

NVMe reservations は、ホストを登録し、namespace を予約して不正な書き込みを防ぐことを可能にします。クラスターやフェイルオーバーで役立ちます。

これはクラスターのコンセンサスやアプリケーションの整合性を置き換えるものではありません。停止したホストはクリーンアップが必要な状態を残す可能性があり、フェンシングによって古いノードが書き込みを続けるのを防ぐ必要があります。

reservation の回復を誤ると、サービス停止やデータ破損を引き起こす可能性があります。

ストレージが PCIe の外に出ると、認証と TLS が重要になる

ローカルデバイスは物理的な境界をある程度受け継いでいました。ネットワークでは、イニシエーターとターゲットが相互にアイデンティティを認証し、チャネルを保護する必要があります。

NVMe は認証メカニズムを定義し、TCP は TLS を使用できます。結果は鍵、証明書、更新、アルゴリズム、ポリシーに依存します。対応していることは、安全な構成を意味しません。

ディスカバリー、管理、データの各プレーンをまとめて分析する必要があります。認証されたアイデンティティであっても、過剰な権限を持つことがあります。

NVMe-MI は I/O から分離された管理プレーンを生む

NVMe Management Interface は、アプリケーションの経路が稼働していない場合でも、subsystem のインベントリ取得、ヘルスの読み取り、操作の実行を可能にします。

これは保守と復旧に役立ちますが、特権的なインターフェースがもう1つ増えます。管理プラットフォームは、機密情報を読み取ったり、デバイスを大規模に変更したりできる可能性があります。

NVMe-MI は Redfish や他のシステムと統合されます。統合によって、各標準の責任範囲が融合するわけではありません。

Zoned Namespaces は媒体の制約をソフトウェアに公開する

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

その恩恵を得るには、ゾーンを認識するファイルシステム、データベース、またはストレージ層が必要です。従来のブロックデバイス向けに設計されたアプリケーションは、自動的にその恩恵を得られません。

ZNS はトレードオフを示しています。媒体に関する知識を増やすことで効率は向上するかもしれませんが、ソフトウェアの移植コストは高くなります。

Key Value、Simple Log Memory、Computational Programs が namespace の概念を広げる

専門化された command set により、キー/バリュー、シンプルなログ、ストレージの近くでのプログラム実行が可能になります。これらは、変換処理とデータ移動の削減を目指します。

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

選択肢が増えるほど、ケイパビリティディスカバリーとフォールバックが重要になります。モジュール化は柔軟性を生む一方、新たな製品マトリクスも生み出します。

コンプライアンスは証拠を提供するが、エンドツーエンドの性能を認証するものではない

相互運用性プログラムとワークショップは、ホストとコントローラー間の具体的な挙動を検証します。仕様書では明らかにならない不一致を検出します。

リストは、全トポロジーにおけるレイテンシ、耐久性、復旧、セキュリティを測定するものではありません。オプションやドライバー・ファームウェアの組み合わせは変化します。

購入者はコンプライアンスを最低基準として使い、自社のワークロード、障害、アップグレードを検証する必要があります。

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

ローカルストレージは、デバイス、ホスト、システムチームを結びつけていました。リモートプールは多くの消費者にサービスを提供でき、割り当てをソフトウェアで変更できます。

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

経済性は、テラバイト単価だけでなく、稼働率と運用能力に依存します。

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

トレーニングと推論はデータセットを読み込み、チェックポイントを書き込み、大規模に状態を移動します。何千ものアクセラレータが待機している場合、ストレージの無駄は大きなコストになります。

TCP、RDMA、マルチパス、共有 namespace は選択肢を提供しますが、輻輳、復旧、メタデータ、キューの挙動と合わせて評価する必要があります。

目標はピークスループットだけでなく、同期負荷時における予測可能なキューレイテンシと復旧です。

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

このセットは、Base、トランスポート、Boot、Management Interface、command set を統合しています。NVMe はもはや SSD のコネクタではなく、スタックです。

ホストはすべての command set をサポートせずに Base 2.4 をサポートできます。TCP コントローラーは RDMA コントローラーと異なる場合があります。サポート表明には詳細が必要です。

ドライバー、OS、ファームウェア、トランスポート、管理ツールはマトリクスを形成し、実際上はプロトコルの一部です。

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

この契約は乗り換えコストを減らします。コマンドと namespace は、PCIe からファブリックへ、あるいはあるベンダーから別のベンダーへの移行を生き延びることができます。データ移行、セキュリティ、可観測性、ネットワーク、サポートは残ります。

利点は、プロトコルと製品を分離できることです。リスクは、大きく異なるアーキテクチャを同じ NVMe ブランドの下に隠してしまうことです。

ストレージはプログラム可能かつ分散可能になりますが、障害時に理解しておくべき完全性(インテグリティ)システムであり続けます。