概要

  • NVM Express, Inc. は、NVMe 仕様ファミリを管理する非営利の業界コンソーシアムであり、SSD もコントローラもストレージアレイも製造していない。
  • NVMe は、機械式ディスクから受け継いだシリアルキューの前提を、マルチコアプロセッサとフラッシュの並列性に適したメモリ内の多数の送信キュー/完了キューに置き換えた。
  • コントローラ、サブシステム、名前空間という同じモデルは、PCIe 上のローカル環境でも、NVMe over Fabrics を介したリモート環境でも動作し、コスト特性の異なる TCP トランスポートと RDMA トランスポートを利用できる。
  • NVMe 2.x シリーズはモジュール式である。批准を経て 2026年8月4日に公開された 2.4 セットには、ベース仕様、PCIe/RDMA/TCP トランスポート、NVMe-MI、Boot、および複数の専門コマンドセットが含まれる。
  • このプロトコルは、容量とアクセスをより構成可能にする。ファイルシステム、耐久性、RAID、イレイジャーコーディング、ネットワーク、運用上のセキュリティ、アプリケーションの整合性は定義しない。

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

アプリケーションは、PCIe で接続されたローカルの NVMe 名前空間に対して読み取りや書き込みを発行できる。ファブリック型のアーキテクチャでは、同じコマンドモデルが Ethernet や RDMA ネットワークを通じて遠隔のサブシステムに到達できる。メディア、コントローラ、経路は変わるが、ストレージの文法はほぼ共通のままである。

この連続性が、ストレージ分離(ディスアグリゲーション)の基盤である。運用者は、各デバイスを利用するサーバーの筐体に置く代わりに、共有システムに容量を集約し、需要に応じてホストへ割り当てられる。

この移行は依存関係をなくすものではない。ディスカバリ、ネットワーク、マルチパス、認証、再接続、障害ドメインが新たに加わる。NVMe はストレージを、トポロジのないリソースではなく、構成可能なサービスへと変える。

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

ハードディスクから受け継がれたプロトコルは、機械的なレイテンシとより狭いキューによって形作られてきた。フラッシュは多数の操作を並列に処理でき、現代のサーバーは多数のコアを備えている。

NVMe は、メモリ内の送信キューと完了キューのペアを使用する。アプリケーションまたはドライバはコマンドを配置し、ドアベルでコントローラに通知し、割り込みまたはポーリングで完了を受け取る。この構造は共有ロックを減らし、キューをそれを使うコアの近くに置くことを可能にする。

その利点は自動的には得られない。実際のレイテンシとスループットは、ファームウェア、PCIe トポロジ、NUMA メモリ、キューの深さ、割り込み、ワークロードによって決まる。

コンソーシアムは、プロトコルのガバナンスと製品間の競争を分離している

NVMe の取り組みは 2000 年代後半に始まり、バージョン 1.0 は 2011 年に公開された。NVM Express, Inc. は 2014 年に設立された。このコンソーシアムには、プラットフォーム、プロセッサ、コントローラ、メディア、ネットワーク、システムの各メーカーが参加している。

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

コンソーシアムは契約と適合性プログラムを定義する。会員は、シリコン、ファームウェア、システム、サポート、性能の面で引き続き競争する。参加はプロセスへのアクセスを与えるものであり、製品がすべての機能を実装していることを証明するものではない。

NVMe 2.0 は肥大化する文書をモジュール式ファミリへと再編した

プロトコルが複数のトランスポートとデータモデルへ拡張されるにつれ、単一の文書の維持は難しくなった。2021 年の 2.0 再編は、ベース仕様、コマンドセット、トランスポートを分割した。

このアーキテクチャにより、TCP トランスポートはコマンドセット全体を書き直さずに進化でき、Zoned Namespaces は既存の各コントローラを変更せずに前進できる。その一方で、購入者は複数のバージョンを追跡しなければならない。

2026年8月4日に公開された NVMe 2.4 セットは、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 の各コマンドセットで構成される。つまり「NVMe 2.4」は、単一のファイルではなく、調整された一群の文書を指す。

送信キューと完了キューは、処理を CPU の近くに置く

送信キューにはホストが書き込んだコマンドが格納され、完了キューはコントローラの結果を受け取る。複数のペアをコアやアプリケーションに関連付けることができるため、競合が減る。

ドアベルは新しい要素を通知する。コントローラは割り込みを生成するか、ホストはポーリングできる。ポーリングは、より高い CPU 消費と引き換えにレイテンシを下げることがある。割り込みのコアレッシングはコストを減らすが、遅延を加える可能性がある。

キューの深さは万能な性能指標ではない。深すぎるキューは待ち時間とキューレイテンシを増やす。浅すぎるキューはデバイスを十分に活用できない。運用側はワークロードに応じて選択しなければならない。

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

コントローラはキューとコマンドを公開する。サブシステムは複数のコントローラを含むことができる。名前空間は論理的なストレージ領域を表し、共有、サイズ変更、複数経路からのアクセスが可能である。

この抽象化により、物理的な SSD とホストが見る識別情報とを混同しなくて済む。遠隔のサブシステムは多数のメディアを集約し、安定した名前空間を提示できる。

プロトコルは、データの配置方法、複製方法、保護方法を決めない。RAID、イレイジャーコーディング、シンプロビジョニング、整合性は、NVMe を取り巻くシステムの機能として残る。

管理コマンドは、入出力と同じくらい重要である

管理キューは、識別情報、キューの作成、フィーチャー、ログ、ファームウェア、名前空間、セキュリティを管理する。これらのコマンドは、通常の読み書きが可能になる環境を制御する。

管理上のエラーは、名前空間の削除、誤ったファームウェアの起動、電源設定の変更を引き起こしうる。したがって、権限、監査、変更ウィンドウが不可欠である。

管理/I/O の分離はアーキテクチャを簡素化するが、コントロールプレーンの重要性を下げるわけではない。ファブリックでは、これらのコマンドがデータと同じネットワークを経由することもある。

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

NVMe over PCIe は、共有メモリ構造とローカルバス上のコントローラレジスタを使用する。サーバーに搭載された SSD やカードに適した直接的な経路を提供する。

物理的な近さは単純なトポロジを保証しない。デバイスは PCIe スイッチの背後にあったり、別の NUMA ソケット上にあったり、レーンを共有していたりする。プロセス、メモリ、デバイスの配置が性能に影響する。

したがって、システムはドライブの台数だけでなく PCIe 経路も把握しなければならない。予期しないレイテンシは、メディアに到達する前のサーバートポロジに起因することがある。

NVMe over Fabrics は、ローカルな関係をネットワークサービスへと変える

NVMe-oF は、NVMe-MI 1.0 とともに 2016年6月に初版が公開され、コマンドカプセルとデータを遠隔のサブシステムへ運ぶ。ホストはファブリックを通じてキューを確立し、ネットワーク上の名前空間を認識する。

この分離により、容量と性能を共用できる。データを移動せずにホストを交換でき、システムは複数のクラスタへリソースを提供できる。

その一方で、NIC、スイッチ、経路、ディスカバリ、コントローラ、認証、マルチパスポリシーといった新しい障害点が生まれる。ストレージは、単なる接続ではなくデータコンポーネントとしてネットワークに依存するようになる。

ディスカバリコントローラは、ファブリックを動的にし、重要な機能を集中させる

ホストはディスカバリコントローラに問い合わせて、利用可能なサブシステムとアドレスを取得できる。これにより各経路の手動設定が不要になり、サービスの追加や削除が可能になる。

ただし、ディスカバリは中心的な依存対象になりうる。誤った情報は、ホストを間違ったターゲットへ導いたり、接続を妨げたりする。キャッシュ、冗長化、検証、識別情報の保護が必要である。

ディスカバリサービスは、ストレージ自体の可用性と混同してはならない。接続済みのホストは動作を続けられる一方で、新しいホストはサービスを発見できないことがある。

NVMe/TCP は、通常の IP ネットワーク上でファブリックを利用可能にした

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

この手軽さにはコストが伴う。TCP スタック、コピー、割り込み、CPU は、オーバーヘッドとテールレイテンシを増やす可能性がある。カーネルの最適化、オフロード、転送サイズが結果に大きく影響する。

このトランスポートはまた、破損を検出するためのフレーミング制御とダイジェスト制御を追加する。実装とポリシーが許す場合、TLS でセッションを保護できる。

NVMe/RDMA は、ファブリックの運用規律と引き換えに低レイテンシを目指す

RDMA は、CPU の介入を抑えてコマンドとデータを転送でき、キューペア、メモリ登録、NIC の機能を利用する。マイクロ秒と CPU サイクルが重要な環境に向いている。

RDMA は単一のファブリックではない。RoCE、iWARP、その他のバインディングは、動作と要件が異なる。輻輳、パケットロス、PFC や ECN、NIC の設定、登録済みメモリを理解しておく必要がある。

低レイテンシのベンチマークは、運用が簡単であることを証明しない。ファブリックの障害はストレージのタイムアウトとして現れることがあり、ネットワークとシステムにまたがるスキルが求められる。

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

名前空間は、複数のコントローラと経路からアクセスできる。ホストシステムは、負荷分散とフェイルオーバーの方法を選択する。非対称名前空間アクセス(ANA)は、どの経路が最適化済み、非最適化、または利用不可かを示す。

2 本のリンクがあっても独立性は保証されない。スイッチ、電源、コントローラ、経路を共有している可能性がある。運用者は各要素の喪失をテストし、ホスト側マルチパスの挙動を確認しなければならない。

誤ったポリシーは、トラフィックを低速な経路に流したり、障害のある経路を長く使い続けたりする原因になる。冗長性は台数として数えるのではなく、挙動として検証すべきである。

リザベーションは共有アクセスを調整するが、クラスタの合意形成を代替しない

NVMe のリザベーション(予約)により、ホストは登録して名前空間を予約し、許可されていない並行書き込みを防ぐことができる。クラスタやフェイルオーバーの場面で有用である。

ただし、これは合意形成プロトコルやアプリケーションの整合性を代替しない。障害を起こしたホストが予約状態を残すことがあり、復旧時には以前のノードが書き込みを続けないようにしなければならない。

回復には、フェンシング、世代管理、識別情報の検証が必要である。管理を誤った予約は、保護の仕組みをサービス停止へと変えうる。

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

ローカルデバイスは、暗黙の物理的境界に依存していることが多かった。ファブリックでは、イニシエータとターゲットが互いの識別情報を証明し、適切なチャネルを保護しなければならない。

NVMe は認証メカニズムを定義し、NVMe/TCP は TLS を利用できる。その価値は、鍵、証明書、更新、アルゴリズム、アクセスポリシーに依存する。TLS に対応したトランスポートでも、実際に使用する設定になっているとは限らない。

ディスカバリプレーン、管理プレーン、データプレーンはまとめて検討する必要がある。正しく認証された識別情報でも、権限が広すぎることがある。

NVMe-MI は、アプリケーション I/O とは別の管理経路を提供する

NVMe Management Interface(NVMe-MI)を使用すると、ツールがサブシステムの発見と管理、ヘルス情報の読み取り、デバイスの棚卸し、一部の操作を、主要な I/O 経路が使われていない場合でも実行できる。

この分離は保守と回復に役立つ。同時に、保護すべき 2 つ目のコントロールプレーンが増える。管理ツールは、機密データを読み取ったり、大規模にコンポーネントを変更したりできる。

NVMe-MI は Redfish システムや他の管理モデルと統合できる。統合によって、コンソーシアムとベンダーの間の責任範囲がなくなるわけではない。

Zoned Namespaces は、メディアの制約をホストに公開する

ZNS は容量を、シーケンシャルに書き込まれるゾーンに分割する。ソフトウェアにメディアの構成への可視性を与えることで、内部のガベージコレクション作業を一部減らし、耐久性や予測可能性を改善できる。

この利点を得るには、ファイルシステム、データベース、ストレージ層がゾーンを理解していなければならない。従来のブロックデバイス向けに設計されたアプリケーションは、自動的にはこのモデルの恩恵を受けない。

ZNS は NVMe に内在する緊張関係を示している。より多くの挙動を公開すれば効率を改善できるが、ソフトウェアの移植性への要求は高まる。

Key Value、Simple Log Memory、Computational Programs は、名前空間の用途を広げる

専門コマンドセットは、キー/バリューデータ、単純なログメモリ、ストレージの近くで実行される計算プログラムへのアクセスを可能にする。これらは、特定のワークロードにおけるデータ変換とデータ移動を減らそうとするものだ。

その採用は、コントローラ、ドライバ、ライブラリ、アプリケーションに依存する。仕様書にコマンドセットが存在しても、すべての SSD やアレイで使える万能機能ではない。

プロトコルが提供するモデルが増えるほど、ソフトウェアは機能を正確に検出し、フォールバック経路を用意しなければならない。技術的なモジュール化は、新たな製品選定の組み合わせを生む。

適合性は有益な証明を提供するが、エンドツーエンドの性能を保証しない

相互運用性プログラムとワークショップは、ホストとコントローラの間の具体的な挙動を検証する。仕様書を読むだけでは見えない不整合を検出する。

適合リストは、あらゆるトポロジにおけるレイテンシ、耐久性、回復性、セキュリティを測定するものではない。オプション機能は異なる場合があり、ドライバとファームウェアの組み合わせも変化する。

購入者は適合性を最低基準とみなし、自社のワークロード、障害シナリオ、アップグレードサイクルをテストすべきである。

NVMe は容量をサーバーから分離し、責任を移した

ローカルストレージは、デバイス、ホスト、システム担当チームを一体に結び付けていた。分離により、多数の消費者でプールを共有し、ソフトウェアで割り当てを変更できるようになる。

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

したがって、経済的な利益は、テラバイトあたりの価格だけでなく、容量の利用効率と運用能力に依存する。

AI は、ストレージのレイテンシを計算コストとして顕在化させる

学習ジョブはチェックポイントを書き込み、データセットを読み込み、大規模に状態を移動する。数千のアクセラレータが待機しているとき、ストレージのばらつきは大きな計算投資の無駄につながりうる。

NVMe/TCP、RDMA、マルチパス、共有名前空間は、複数の可能なアーキテクチャを提供する。選択にあたっては、輻輳、トポロジ、スループット、メタデータ、リカバリ、キューの挙動を考慮しなければならない。

目標は最大のベンチマークスコアだけではなく、同期した運用中の予測可能なキューレイテンシと回復時間である。

2.4 セットは、範囲の広さとバージョン管理の負担の両方を示す

NVMe 2.4 は、ベース仕様、トランスポート、Boot、管理インターフェイス、専門コマンドセットを一つにまとめている。この規模は、NVMe が単なる SSD コネクタではなく、一つのスタックになったことを示している。

これはサポート表明を複雑にする。ホストが Base 2.4 に対応していても、すべてのコマンドセットやセキュリティ機能に対応しているとは限らない。コントローラが TCP を提供しても、RDMA 製品と同じ機能を持つとは限らない。

追跡の対象は、ドライバ、ファームウェア、OS、トランスポート、管理ツールの各バージョンである。実際には、この組み合わせの把握がプロトコルの一部になっている。

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

共通プロトコルは移行コストの一部を減らす。コマンドモデルは、PCIe からファブリックへの移行や、ベンダー間の移行でも生き残る。ただし、データ移行、名前空間の識別情報、セキュリティポリシー、ネットワーク、可観測性、サポートといった他のコストは残る。

戦略上の利点は、プロトコルと製品の分離がより明確になることである。リスクは、複雑なアーキテクチャを同じ NVMe という名称の背後に隠すことである。

ストレージはプログラム可能で分散配置可能になる。しかし、障害時に各層の理解が求められる整合性システムであることに変わりはない。