SPDK~高速化技術とクラウド 第9回~
ストレージアクセス高速化技術の一つであるSPDK(Storage Performance Development Kit)について解説します。
テクノロジーコラム
- 2024年08月20日公開
NTTテクノクロスの山下です。データセンターやクラウド環境において、ストレージパフォーマンスは非常に重要な要素です。特に、低レイテンシと高スループットが求められるアプリケーションにおいては、従来のストレージアクセス方法では限界があります。そこで登場するのが、SPDK(Storage Performance Development Kit)とRDMA(Remote Direct Memory Access)です。本記事では、SPDKの基本や利点について詳しく解説します。RDMAの基本については第7回連載と第8回連載をご覧ください。
ストレージの進展とSPDK
SPDKを理解する前提知識として、まずコンピュータ用のストレージの進展について簡単に解説します。
アプリケーションからストレージへのアクセス方式の変遷
近年のストレージ装置そのものとストレージアクセスプロトコル、両方の進展について簡単に図にまとめました。
SPDKを理解することを目的としていますので、省略している個所も多いですがご容赦ください。
また、ネットワーク越しのストレージアクセスについては次回記事で解説します。本記事ではあくまでもあるコンピュータからのローカルなストレージアクセスのみについて解説します。
図をみると、ストレージそのものは以下の2種類
・HDD(Hard Disc Drive)
・SSD(Solid State Drive)
ストレージとコンピュータをつなぐプロトコルは以下の2種類となります
・SATA(Serial ATA)
・NVMe(Non-Volatile Memory Express)
それぞれについて、違いをみていきましょう。
HDD vs SSD
まずは、ハード的な違いについて表にまとめてみました。
むろん特定用途でHDDが優れている場合もありますが、一般的にはSSDの方がストレージとしての性能は高いことがわかると思います。
この表は、HDDとSSDの一般的な特徴を示していますが、個々の製品やテクノロジーによって異なる場合があります。また、特定の用途や要件によっても選択肢が異なる場合がありますのでご注意ください。
ストレージ | HDD | SSD |
原理 | 磁気ディスクにデータを記録 | フラッシュメモリにデータを記録 |
アクセス速度 | 低速(ミリ秒単位) | 高速(マイクロ秒単位) |
ランダムアクセス | 低速 | 高速 |
シーケンシャルアクセス | 高速 | 高速 |
耐久性 | 機械的な部品のため、衝撃や振動に弱い | 電子部品のため、衝撃や振動に強い |
騒音 | 回転するディスクと読み取りヘッドの動作により、わずかな騒音が発生する | 無音 |
電力消費 | 高め | 低め |
価格 | 容量あたりのコストが低い | 容量あたりのコストが高い |
容量 | 大容量のドライブが利用可能 | 容量は小さいが、容量あたりの性能が高い |
キャッシュ | キャッシュメモリを使用してパフォーマンスを向上させる | キャッシュメモリを使用してパフォーマンスを向上させる |
SATA vs NVMe
次にストレージアクセス用プロトコルの観点で、違いについて表にまとめてみました。
ストレージ用プロトコルは、IDEなど他にも存在していますが、ここでは本記事に登場するSATAとNVMeに絞って比較しました。
むろん特定用途でSATAが優れている場合もありえますが、SSDをストレージにした場合のアクセスはNVMeの方が有利です。
プロトコル自体もSATAはHDDや光学ドライブアクセス用に開発されたのに対して、NVMeはSSDアクセスに特化して開発されたプロトコルですので当然といえば当然かもしれません。
この表は、SATAとNVMeの一般的な特徴を示していますが、個々の製品やテクノロジーによって異なる場合があります。また、特定の用途や要件によっても選択肢が異なる場合があります。
特徴 | SATA | NVMe |
インターフェース | シリアル | PCI Express |
最大転送速度 | 最大6 Gbps(SATA III) | 最大32 Gbps(PCIe Gen3 x4)または最大64 Gbps(PCIe Gen4 x4) |
レイテンシ | 比較的高い | 極めて低い |
キュー深度 | 32キュー | 最大64,000キュー |
コマンドサポート | 1コマンドのみ | 複数のコマンドを同時に処理可能 |
ドライバの必要性 | 必要 | 必要 |
ホットスワップサポート | サポート | サポート |
電力消費 | 低め | 低め |
物理的なサイズ | 2.5インチまたは3.5インチ | M.2フォームファクタや拡張カード |
対応デバイス | ハードディスクドライブ(HDD)およびソリッドステートドライブ(SSD)等 | ソリッドステートドライブ(SSD) |
ストレージアクセスの技術進化
さて、最初の図に戻ります。
まず①の状態ですが、HDDとSATAの組み合わせです。コスト的には安価ですので、この組み合わせの商品も現存します。
ただしストレージのアクセス速度はSSDとNVMeの組み合わせに比較すると遅いです。
次に②の状態はSSDとSATAの組み合わせです。HDDからSSDに代わることによりハードウェア的な進化がありました。
逆に、SSDが持つ性能をSATAでは引き出せないという状態に陥ります。
そこで③の状態になります。SSDアクセス用に特化したプロトコルであるNVMeが登場したことによりストレージへのアクセス性能が再度向上します。
ただし、ここで問題となったのがOS(カーネル)です。
カーネルは、アプリケーションとハードウェアを媒介してくれる便利なものですが、同時に割り込みや複数回のコピー(アプリケーション→カーネル、カーネル→ストレージ)という構造的なボトルネックが顕在化しました。
そこで、④としてストレージのドライバをユーザー空間上で実現するSPDKが登場しました。アプリケーションはストレージへのアクセス(書き込み・読み込み)をカーネル非介在で実施することにより、超高速アクセスを得ることができます。
SPDKとは?
ここで、あらためてSPDK(Storage Performance Development Kit)について解説します。SPDKは、Intelが開発したオープンソースのライブラリとツールのセットで、ユーザースペースでの高速ストレージアクセスを実現します。SPDKは、NVMe(Non-Volatile Memory Express)デバイスやNVMe over Fabrics(NVMe-oF)プロトコルをサポートしており、カーネルバイパス技術を使用してストレージパフォーマンスを最大化します。NVMe over Fabrics(NVMe-oF)プロトコルについては次回記事で解説します。
SPDKの利点
SPDKを利用する利点を以下にまとめました。
-
高スループット:
- カーネルバイパス技術を使用することで、カーネルのオーバーヘッドを削減し、高スループットを実現します。
-
低レイテンシ:
- ユーザースペースで直接ストレージデバイスにアクセスするため、レイテンシが最小限に抑えられます。
-
柔軟性:
- SPDKは、さまざまなストレージデバイスやプロトコルに対応しており、カスタマイズが容易です。
SPDKとDPDKの類似点
本記事で解説したSPDKと、他連載で記載のDPDK(Data Plane Development Kit)には多くの類似点があります。
SPDKとDPDKの比較を以下にまとめました。
高速化のターゲットが、ストレージであるかNIC(Network Interface Card)であるかの違いはあるものの「カーネル処理をバイパスして処理高速化を図る」という基本的な考え方は大きな共通点となっています。
SPDK | DPDK | |
目的 | ストレージアプリケーションのパフォーマンス向上 | データプレーンアプリケーションのパフォーマンス向上 |
ライセンス形式 | BSDライセンスのオープンソース(一部BSD/GPLのDualライセンス) | |
ライブラリ | ユーザーモードのライブラリ | |
ハードウェアアクセラレーション | 特定のハードウェアアクセラレーションをサポート | |
パフォーマンス | 高いストレージパフォーマンスを実現 | 高いデータプレーンパフォーマンスを実現 |
プロトコルサポート | NVMe、iSCSI、NVMe-oFなどのストレージプロトコルをサポート | Ethernet、InfiniBandなどのネットワークプロトコルをサポート |
マルチスレッドサポート | マルチスレッド環境での効率的なパフォーマンスを実現 | |
ユーザーコミュニティ | アクティブなオープンソースコミュニティ | |
プラットフォーム | Linux、FreeBSDなどのオペレーティングシステム上で動作 |
まとめ
SPDKとRDMAは、仮想化環境やデータセンターにおけるストレージパフォーマンスを最適化するための強力な技術です。SPDKは、ユーザースペースでの高速ストレージアクセスを実現し、NVMeデバイスやNVMe-oFプロトコルをサポートしています。一方、RDMAは、ネットワークを介してリモートメモリに直接アクセスする技術であり、低レイテンシと高スループットを実現します。ネットワークを介したストレージアクセスに関連するNVMe-oFプロトコルについては次回記事で解説します。
[著者プロフィール]
フューチャーネットワーク事業部 第二ビジネスユニット
山下 英之(YAMASHITA HIDEYUKI)