情報畑でつかまえてロゴ
本サイトは NTTテクノクロスが旬の IT をキーワードに
IT 部門が今知っておきたい最新テクノロジーに関する情報をお届けするサイトです

SPDK~高速化技術とクラウド 第9回~

ストレージアクセス高速化技術の一つであるSPDK(Storage Performance Development Kit)について解説します。

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)