要約
- NVM Express, Inc.は、NVMe 仕様群を管理する非営利の業界団体であり、SSD、コントローラー、スイッチ、ストレージアレイを製造する企業ではない。
- NVMe は、機械式ハードディスク時代の比較的狭く逐次的なキューモデルを、メモリー上に置かれた複数のサブミッションキューとコンプリーションキューに置き換え、並列処理に適したフラッシュメモリーとマルチコアプロセッサーに対応する。
- 同じコントローラー、サブシステム、名前空間の意味体系を、サーバー内部では PCIe 経由で、サーバー外部では NVMe over Fabrics を利用して TCP または RDMA ネットワーク経由で提供できる。
- NVMe 2.x はモジュール型アーキテクチャを採用している。2026年8月4日に公開された2.4仕様群には、Base、PCIe/RDMA/TCP トランスポート、NVMe-MI、Boot、複数の専用コマンドセットが含まれる。
- このプロトコルは容量の構成自由度を高めるが、ファイルシステム、永続性、RAID、イレージャーコーディング、ネットワーク設計、運用上のセキュリティ、アプリケーション整合性は定義しない。
基本言語を変えずにストレージコマンドをサーバー外へ送れる
読み取り要求は、ローカルの PCIe SSD 上の名前空間にも、ファブリック経由でリモートのサブシステムにも送信できる。媒体、コントローラー、経路は変わるが、コマンド、キュー、名前空間のモデルはおおむね維持される。
これがストレージ分離の基礎となる。容量を共有プールに集約し、各ドライブを利用する筐体に取り付けなくても、必要に応じてホストへ割り当てられる。
ただし、サーバー外へ移すと、検出、ネットワーク、マルチパス、認証、再接続、新たな障害領域が加わる。NVMe はストレージをプログラム可能なサービスにするが、トポロジーを消すものではない。
フラッシュメモリーには並列性を前提としたプロトコルが必要
従来のストレージインターフェースは、機械的なシークと少ない同時処理数の影響を受けていた。フラッシュメモリーは多数の要求を同時に処理でき、現代のサーバーも多くの CPU コアを備える。
NVMe はメモリー上のサブミッションキューとコンプリーションキューを使用する。ホストはコマンドを書き込み、ドアベルでコントローラーに通知し、割り込みまたはポーリングによって完了情報を読み取る。複数のキューを異なるコアやプロセスに割り当て、共有ロックと競合を減らせる。
実際の結果は、コントローラーのファームウェア、PCIe トポロジー、NUMA、キュー深度、割り込み方針、ワークロードにも左右される。NVMe を採用しても、一定の性能水準が自動的に得られるわけではない。
業界団体がプロトコルの運営と製品競争を分離
NVMe の開発は2000年代末に始まり、1.0仕様は2011年に公開され、NVM Express, Inc.は2014年に設立された。会員はプロセッサー、フラッシュメモリー、コントローラー、ネットワーク、システム、クラウドコンピューティングの各業界にまたがる。
調査時点では、Google の Amber Huffman が President、AMD の Curtis Ballard が Treasurer、Microchip の David Allen が Secretary を務め、公開されている理事会には13人の promoter 代表が記載されている。
業界団体は共通規約、変更、適合性の枠組みを担い、会員各社はチップ、ファームウェア、システム設計、サポート、性能をめぐって競争を続ける。標準化作業への参加は、ある製品がすべての機能を実装していることを意味しない。
NVMe 2.0は拡大し続ける単一文書をモジュール型の仕様群に分割
PCIe 以外のトランスポートと新しいデータモデルが登場するにつれ、すべてを一つの仕様に収めることが難しくなった。2021年の NVMe 2.0再編では、Base、コマンドセット、トランスポートが分離された。
これにより、TCP トランスポートは独立して発展でき、Zoned Namespace も従来型コントローラーをすべて変更せずに拡張できる。一方、調達側はより複雑なバージョンの組み合わせを管理する必要がある。
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 を継続的に消費する。割り込みの集約は CPU 消費を抑える一方、待ち時間を増やす場合がある。キュー深度は使用率とテールレイテンシーに影響する。
キューは深いほど常によいわけではない。飽和を見えにくくし、待ち行列の時間を延ばすことがある。適切な設定はワークロードと SLA を起点に決める必要がある。
コントローラー、サブシステム、名前空間が論理エンドポイントと物理媒体を分離
コントローラーはキューとコマンドを公開する。一つのサブシステムに複数のコントローラーを含められる。名前空間は論理容量を表し、異なるコントローラーや経路を通じてホストに提供できる。
したがって、ホストから見える識別情報が物理 SSD 一台に対応する必要はない。アレイは複数種類の媒体を組み合わせ、安定した名前空間を提供できる。
NVMe はデータの配置、複製、保護方法を決めない。RAID、イレージャーコーディング、シンプロビジョニング、スナップショット、アプリケーション整合性は、引き続き上位システムの責任となる。
管理コマンドは通常の I/O と同じく重要
管理キューは、デバイスの識別、I/O キューの作成、機能設定、ログの読み取り、ファームウェア、名前空間、セキュリティの管理に使われる。通常の読み書きを成立させる環境を制御する。
誤った管理コマンド一つで、名前空間を削除したり、不適切なファームウェアを有効化したり、電源状態を変更したりする可能性がある。権限、監査、変更管理はこの層も対象にしなければならない。
管理処理と I/O の分離はアーキテクチャ上有益だが、制御系が重要でないという意味ではない。ファブリック環境では、両者が同じネットワークと ID 体系に依存する場合もある。
PCIe はローカル経路をメモリーとハードウェアに近づける
NVMe over PCIe は、ローカルバス上の共有メモリー構造とコントローラーレジスターを介して通信し、サーバー内の SSD やカードへの直接的な経路を提供する。
物理的に近いからといってトポロジーが単純とは限らない。デバイスが PCIe スイッチの背後にある場合、別の NUMA ソケットに接続される場合、レーンを共有する場合がある。CPU、メモリー、デバイスの位置が性能に影響する。
したがって、ドライブ数だけを数えることはできない。異常な遅延は、媒体に到達する前のホスト内部の PCIe 経路で発生する可能性がある。
NVMe over Fabrics がローカルのコントローラー関係をネットワークサービスに変える
NVMe-oF 1.0と NVMe-MI 1.0は2016年6月9日に公開された。NVMe-oF はコマンドカプセルとデータをリモートのサブシステムへ転送し、ホストはファブリック経由でキューを確立して名前空間へアクセスする。
これにより、容量のプール化とコンピュートとストレージの分離が可能になる。ホストを交換しても、データは共有システムに残せる。
同時に、NIC、スイッチ、経路、検出、コントローラー、認証、マルチパスがデータ経路に加わる。ネットワークは単なる「接続」ではなく、ストレージの完全性を構成する一部となる。
検出コントローラーは動的接続を簡素化する一方、重要な依存先にもなる
ホストは検出コントローラーに問い合わせ、利用可能なサブシステム、アドレス、サービスを取得できる。各ターゲットへの経路を手作業で設定する必要がなくなり、リソースの動的な追加と削除も容易になる。
誤った情報や検出サービスの停止は、新規接続を妨げたり、ホストを誤ったターゲットへ誘導したりする可能性がある。冗長化、キャッシュ、ID 保護、内容の検証が必要となる。
検出機能の可用性とデータ経路の可用性は異なる。既存のセッションが動作を続ける一方で、新しいホストがサービスを検出できない場合がある。
NVMe/TCP が一般的な IP ネットワークにファブリックストレージを持ち込む
2019年に標準化された NVMe/TCP は、コマンドとデータを TCP 接続に対応付ける。運用者は RDMA ファブリックを構築しなくても、ルーティング可能な Ethernet、IP ツール、ファイアウォール、使い慣れたネットワーク運用手法を利用できる。
利便性には処理負荷が伴う。TCP スタック、コピー、割り込み、CPU がテールレイテンシーに影響する可能性がある。カーネル実装、オフロード、転送サイズ、調整はいずれも重要となる。
トランスポートはストレージ固有のフレーミングとダイジェストも定義し、TLS を利用できる。TLS への対応は、有効化済みであることや安全に運用されていることを意味しない。
NVMe/RDMA は低遅延を追求する一方、より厳格なファブリック設計を求める
RDMA はキューペア、登録済みメモリー、NIC オフロードによって CPU の関与を減らし、マイクロ秒単位の時間と CPU サイクルを重視する HPC や AI の用途に適する。
RDMA は単一方式のネットワークではない。RoCE や iWARP などのバインディングは、輻輳、パケット損失、PFC、ECN、メモリー管理について異なる要件を持つ。
低遅延のベンチマーク結果は、運用が単純であることを意味しない。ネットワーク障害がストレージのタイムアウトとして表れる場合があり、ネットワークとシステムの両チームによる共同診断が必要となる。
マルチパスが冗長性をホストの方針選択に変える
一つの名前空間に複数のコントローラーと経路からアクセスできる。ホストが負荷分散とフェイルオーバーを決定する。Asymmetric Namespace Access は、最適化済み、非最適化、利用不可の経路を示す。
二本のリンクが同じスイッチ、コントローラー、電源、経路を共有している可能性もある。真の独立性は障害試験で検証しなければならない。
誤った方針は不良経路を長く残したり、I/O を遅い経路へ送ったりする可能性がある。冗長性はポート数ではなく、実際の動作で評価すべきである。
予約機能は共有アクセスを調整するが、クラスター合意の代わりにはならない
NVMe の予約機能では、ホストが名前空間を登録して予約し、許可されていない書き込み元からのアクセスを防げる。クラスターやフェイルオーバーでよく使われる。
これは合意プロトコルやアプリケーション整合性の代わりにはならない。障害が発生したホストが予約状態を残す可能性があり、復旧処理では古いノードを隔離し、再び書き込まないようにする必要がある。
誤った復旧処理は、保護機構を利用不能やデータ破損の原因に変えてしまう。
ストレージが PCIe の外へ出ると認証と TLS が必須条件になる
ローカルデバイスは、多くの場合、物理的な境界を引き継ぐ。ネットワーク接続では、イニシエーターとターゲットが互いの ID を証明し、適切な制御チャネルとデータチャネルを保護する必要がある。
NVMe は認証方式を定義し、NVMe/TCP は TLS を利用できる。実際の保護水準は、鍵、証明書、更新、アルゴリズム、アクセス方針、実装品質に左右される。機能の存在は、安全な設定が完了していることを意味しない。
検出、管理、データの各処理面を一体として評価する必要がある。ID が真正であっても、権限が広すぎる場合がある。
NVMe-MI がアプリケーション I/O から独立した管理経路を提供
NVMe Management Interface を利用すると、主要な I/O 経路がアプリケーションに使われていない場合でも、ツールがサブシステムを検出し、健全性を読み取り、デバイスを棚卸しし、一部の管理操作を実行できる。
これは保守と復旧に役立つが、権限の強いインターフェースをもう一つ増やす。集中管理基盤は、機密情報を読み取ったり、多数のデバイスを一括変更したりできる。
NVMe-MI は Redfish などの管理体系と統合できる。統合されても、異なる標準化団体や供給事業者の責任が一本化されるわけではない。
Zoned Namespace が媒体の制約をホストソフトウェアに公開
ZNS は容量を順次書き込み型のゾーンに分割する。ソフトウェアが媒体の配置を把握すれば、コントローラー内部のガベージコレクションを減らし、耐久性や予測可能性を高められる場合がある。
効果を得るには、ファイルシステム、データベース、ストレージ層がゾーンを理解する必要がある。従来のブロックデバイス向けに設計されたアプリケーションが自動的に利点を得ることはない。
ZNS は NVMe のトレードオフを示す。媒体の動作をより多く公開すれば効率を高められる一方、ソフトウェアの移植コストも増える。
Key Value、Simple Log Memory、Computational Programs が名前空間の意味を拡張
専用コマンドセットは、キーと値によるアクセス、単純なログメモリー、ストレージ付近でのプログラム実行を支援し、変換処理とデータ移動の削減を目指す。
採用にはコントローラー、ドライバー、ライブラリー、アプリケーションが関係する。仕様に記載されていても、すべての SSD やアレイがその機能を提供するとは限らない。
機能が増えるほど、対応能力の検出と代替処理が重要になる。モジュール化は柔軟性をもたらす一方、新たな商用互換性マトリクスを生む。
適合性試験は有用な証拠を提供するが、エンドツーエンドの性能は認証しない
適合性プログラムと相互運用性ワークショップは、特定のホストとコントローラーの動作を試験し、仕様を読むだけでは分からない相違を発見できる。
一覧への掲載は、あらゆるトポロジーで一定の遅延、耐久性、復旧、セキュリティ水準を備えることを意味しない。任意機能とドライバー・ファームウェアの組み合わせは変化し続ける。
購入者は適合性を最低条件と捉え、自らのワークロード、障害、更新手順を試験すべきである。
ストレージ分離は容量とサーバーを切り離す一方、責任も再配分する
ローカルストレージは、多くの場合、デバイス、ホスト、システム担当チームを一体化する。リモートプールは複数の利用者にサービスを提供し、ソフトウェアを通じて割り当てを調整できる。
その結果、ネットワーク、ストレージ、プラットフォーム、セキュリティ、アプリケーションの各チームが同じ障害に関わる。ファブリックの性能低下がデータベースの問題に見えたり、コントローラーのファームウェア問題がネットワーク切断に見えたりする場合がある。
経済的な効果は、TB 当たりの価格だけでなく、容量使用率と運用能力によって決まる。
AI ではストレージ遅延が直接的な計算コストになる
学習処理はデータセットを読み込み、チェックポイントを書き込み、大規模な状態を交換する。数千台のアクセラレーターが待機すると、ストレージのテールレイテンシーによって高価な計算資源が浪費される。
TCP、RDMA、マルチパス、共有名前空間はそれぞれ異なるアーキテクチャを提供する。選択時には輻輳、メタデータ、キューの動作、障害、復旧を考慮する必要がある。
目標はピーク時のスループットだけでなく、同期負荷の下で予測可能な待ち行列時間と復旧時間を保つことであるべきだ。
NVMe 2.4はプロトコルの範囲を示す一方、バージョン管理の負担を高める
2.4仕様群は Base、トランスポート、Boot、Management Interface、専用コマンドセットを整合させる。NVMe は単なる SSD インターフェースではなく、完全な技術スタックになっている。
ホストが Base 2.4に対応していても、すべてのコマンドセットに対応するとは限らない。TCP コントローラーも、RDMA 製品とは異なる機能を持つ可能性がある。対応状況は具体的に示す必要がある。
ドライバー、OS、ファームウェア、トランスポート、管理ツールで構成される組み合わせは、実務上プロトコルの一部である。
NVMe はストレージを構成可能にするが、サービスを単純にはしない
共通プロトコルは、ある種の切り替えコストを下げる。コマンドと名前空間を PCIe からファブリックへ移したり、ある供給事業者から別の供給事業者へ切り替えたりできる。一方、データ移行、ID、セキュリティ、ネットワーク、可観測性、サポートのコストは残る。
利点は、プロトコルと製品がより明確に分離されることにある。リスクは、「NVMe」という名称が大きく異なるアーキテクチャを覆い隠すことである。
その結果、ストレージはよりプログラム可能で分散可能になるが、障害時にも明確に説明できなければならないデータ完全性システムであることに変わりはない。
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加
