パソコンの記憶装置には“HDD(Hard Disk Drive)”、あるいは“SSD(Solid State Drive)”が主に利用されています。前者はいわゆるハードディスクと呼ばれるもので、ハードウェアに搭載されている光学ディスクにデータを読み込むことで機能します。パソコン普及期から主流になっている記憶装置なので、今でもHDDを搭載しているパソコンは数多く存在します。
一方、SSDは“フラッシュメモリ”と呼ばれる技術を用いており“不揮発性メモリ”とも呼ばれています。通常のメモリはデータ処理が高速なことからアプリケーションを動かしたり、パソコンを操作するためのデータ格納庫として利用されますが、電源を切るとメモリ内のデータは消去されてしまいます。SSDはこのメモリを、電源を切ってもデータの保存がされるため、データを保存しつつ処理を高速にし、次世代の記憶装置として普及しています。
SSDに用いられているフラッシュメモリ技術は、企業が運用するストレージにも活用され“フラッシュストレージ”と呼ばれる製品が市場で普及しています。フラッシュストレージはフラッシュメモリ技術を全面的に採用したストレージハードウェアのことで、従来型のストレージに比べて大容量のデータ格納ができることと、高速なデータ処理によってシステムパフォーマンスを向上できるのが特徴です。
今回ご紹介する“NVMe(Non-Volatile Memory Express)”は、このフラッシュストレージでの通信を最適化するための新しいプロトコルです。実はフラッシュストレージには様々なメリットがあるものの、それを活用しきれない現状がありました。
[RELATED_POSTS]
NVMeとは?
SSDやフラッシュストレージはHDDに替わる新たなストレージ技術として注目されていましたが、従来の接続プロトコルであるSCSIやSATAではその限界転送速度を超えられないという問題がありました。そうした中でNVMeはSSDおよびフラッシュストレージ向けに開発された通信プロトコル/インターフェースで、米Intel、韓国Samsung Electronics、米SanDisk、米Dell、米Seagate Technologyといった先進的なベンダーが参画する推進団体によって2011年に策定されました。
メモリベースのストレージであるSSDやフラッシュストレージはパイプラインやランダムアクセスといったデータ処理方法が特徴であり、NVMeはそれを有効的に活用できることで注目されています。
従来の通信プロトコルと比べた際の具体的な改良点は、4KBの転送に必要なメッセージが2つではなく1つで済む点や、コマンドを処理するためのキューが1つではなく複数になっているという点です。複数といっても10個や20個ではなく、実に6万5,536個ものキューを持ちます。そのため多数のディスクI/O要求を同時に処理するようなサーバーでは、大幅な高速化が実現されます。ただしその分、一般消費者向けのパソコンに搭載されているSSDでは、そこまで大きな効果は期待できません。
この他にNVMeは以下のような特徴を持ちます。
- コマンドの発行または完了パスにおいてキャッシュ不可な/MMIOレジストリの読込みを必要としない
- コマンド発行パスにおいて最大で一つのMMIOレジストリの書込みが必要
- 最大で64KのI/Oキューのサポート、各I/Oキューが最大64Kコマンドをサポート
- 適切に優先度が定義された仲裁メカニズムとともに各I/Oキューと紐づけ
- 全ての4KB読み込みリクエストを完了するための情報が64Bコマンド自身に含まれ、効率的でスモールなランダムI/Oオペレーションを確保
- 効率的で合理的なコマンドセット
- MSI/MSI-X のサポートとインタラプトの集約
- 複数の名前空間のサポート
- SR-IOVのようなI/Oの仮想化アーキテクチャの効率的なサポート
- 堅牢なエラー報告と管理の能力
- 仕様は合理化されたレジスタのセットを定義し、以下の機能が含まれます:
- コントローラ機能の表示
- デバイス障害のステータス (コマンドステータスはCQを通じ直接処理される)
- 管理者キュー設定(管理者コマンドを通じ処理されるI/Oキュー設定)
- スケーラブルな数の送信と完了のキュー向けのドアベルレジストリ
NVMeとAHCI
NVMeについて理解する上でもう一つ知っておいていただきたいのが“AHCI”についてです。AHCIとはSATAへの拡張機能を持つインターフェース規格のことであり、NVMeの比較対象としてよく挙がります。2つの通信プロトコルで決定的に違う点は、何に対して最適化されているかという点です。
NVMeはPCI Express SSDに最適化されている通信プロトコルである一方、AHCIはHDDを前提にしたSATAに最適化されている通信プロトコルです。この他の違いとしては、AHCIはコマンドを処理するためのキューが1つなのに対し、NVMeは前述のように6万5,536個のキューを持ちます。これだけを考慮してもNVMeとAHCIには明らかな性能の違いがあることが分かります。
AHCIはNVMeと同じく高速な処理ができる通信プロトコルとして注目されていましたが、その対象は従来のプロトコルであるSATAの拡張であって、SSDやフラッシュストレージの処理を高速化するわけではありません。
これからのNVMe
現在急速に市場で普及を始めているNVMeは、今後12ヵ月~18カ月かけて市場の中心になっていくと考えられています。その背景にはフラッシュストレージのビジネス活用が具体的になってきたことや、容量あたりの単価が少しずつハードディスクを使用したストレージに近づいていることが挙げられます。
では、NVMeはどのように使用されていくのでしょうか?
書き込みキャッシュとしてのNVMe
一部のストレージベンダーでは、書き込みキャッシュとしてNVMe接続のデバイスを使用しています。構成上はもともと高速SSDが書き込みキャッシュとして実装されていましたが、近年ではNVMe接続のDRAMデバイスへの切り替えが徐々に進んでいます。
読み取りキャッシュとしてのNVMe
別のストレージ構成ではNVMeが読み取りキャッシュとして使用されています。この使い方はHDDを搭載したハイブリッド構成として理に適っているものです。一部のオールフラッシュストレージ(AFS)ではメタデータをキャッシュするために、SATA SDDに加えてNVMe SSDを超高速ストレージ層として実装しています。
永続ストレージとしてのNVMe SSD
オールフラッシュストレージで最も使用されているのはSATA SSDではなくNVMe SSDを永続ストレージとして使用することです。ほとんどの構成ではストレージの回復力を提供するために必要とされているのは、デュアルポートのNVMeです。
業界初のエンドツーエンドのNVMeオールフラッシュソリューション
NetAppではNVMeメディア向けに設計され、ホストへのNVMe/FC接続でさらに高速化されたAFF A800オールフラッシュ システムが、200マイクロ秒未満という驚異的に低いレイテンシを実現します。AFF A800は、1,140万を超えるIOPSと300GB/秒のスループットを1つのクラスタで提供できるので、人工知能やディープ ラーニングの可能性を新たな領域にまで押し広げます。
NVMe / FCを使用すれば、AFF Aシリーズ システムで実行できるワークロードを60%増加したり、アプリケーションの応答時間を半分に短縮することも可能です。NetAppが行っているNVMeへの先進的な取り組みについて、レポートを入手しその全容についてぜひ知ってください。
NetAppのストラテジスト兼チーフ エバンジェリストであるジェフ・ベクスターのプレゼンテーション「Creating the Fabric of a New Generation of Enterprise Apps」をご覧いただくと、より理解を深めていただけると思います。
- カテゴリ:
- オンプレ
- キーワード:
- nvme