「NVMe over Fabrics」でストレージ環境が一変する

1990年代末から2000年代初め、ストレージネットワークが人気を集め始め、ファイバーチャネル技術が広く採用されるようになった。その数年後にイーサネットで使えるiSCSIプロトコルが登場し、ファイバーチャネルのハードウェア導入コストをかけたくない企業がこれを採用した。これらはどちらも、接続元(イニシエータ)とストレージ機器(ターゲット)の通信にSCSIストレージプロトコルを使う。ところが、永続ストレージ媒体としてフラッシュが台頭すると、SCSIのパフォーマンス不足が問題になってきた。

 その問題を解決し、SCSIに代わる新しいプロトコルとして開発したのが「Non-Volatile Memory Express」(以下、NVMe)だ。NVMeは他のプロトコルとどこが違うのか。「NVMe over Fabrics」の登場でストレージネットワーク状況はどう変わるのか。

いきさつ

 ストレージネットワーク技術は、ストレージハードウェアの進化と統合的な一元管理ストレージのニーズとともに進歩してきた。ファイバーチャネルの起源はメインフレームで採用していた「ESCON」というファイバーベースの接続プロトコルにまでさかのぼることができる。一方、SCSIはサーバ内のHDDの物理接続に端を発している。

 SCSIは当初、パラレル通信プロトコルだったが(サーバにHDDを取り付けたことがあれば、SCSIのフラットケーブルに覚えがあるだろう)、Serial Attached SCSI(SAS)の開発によってシリアルインタフェースに移行した。PC分野ではSerial ATA(SATA)に対応する「Advanced Host Controller Interface」(AHCI)が相当する。これらのプロトコルは今でもHDDやソリッドステートドライブ(SSD)に使われている。

 サーバとストレージを物理的に接続するファイバーチャネルやイーサネットでは、SCSIが依然としてハイレベルストレージ通信プロトコルの役割を果たしている。しかし、SCSIはそもそも、システムメモリやプロセッサより桁違いにレスポンスの遅いHDDを想定して開発されているため、高速のSSDに対して使うにはパフォーマンス不足が問題になる。ほとんどのSATAドライブはまだ、インタフェース上限6Gbps、実効データ転送速度600MbpsのSATA 3.0仕様に基づいている。SASドライブは12GbpsのSAS 3.0に移行しつつあるが、多くはまだ6Gbpsだ。

 しかし、SASとSATAの深刻な問題は、単一デバイスの同時I/Oに対する処理能力不足にある。HDDの構造を考えた場合、複数の同時I/O要求を処理するのは非常に難しく、不可能な場合もある。読み取りヘッドと書き込みヘッドが複数の要求で同じにならない可能性もある。バッファリングを利用するとしても、拡張性がない。SASとSATAのどちらの設計も、複数I/Oキュー処理に対応していない。AHCIには32個しかコマンドを保持しないキューが1つあるだけだ。SCSIのキューは実装に応じて128~256個のコマンドに対応するが、キューはやはり1つしかない。

 単一キューだけではレイテンシに悪影響がある。キューのサイズが大きくなれば、他の多くの要求が完了するのを待たねばならず、新しい要求のレイテンシが長くなる。HDDではそれほど問題にならないが、可動部品がなく、個別I/Oレイテンの低いSSDでは大きなボトルネックになる。

NVMeの登場

 デバイスレベルとネットワークレベルでこうしたインタフェースの問題を解決するために、SCSIを置き換えるプロトコルとしてNVMeが誕生した。NVMeは専用ストレージバスではなくPCIeバスを使い、内部接続ディスクデバイスに高い帯域幅と低レイテンシを提供する。例えば、PCIe 3.0×4レーンのデバイスでは、1デバイス当たり約4Gbpsの帯域幅を実現できる。

 NVMeで大きく変わったのはストレージプロトコルの最適化だ。I/Oアクセスのシリアル化に必要な内部ロッキングの量を少なくし、割り込み処理の効率を高めた。また、NVMeは最大65535個のキューに対応しており、各キューに65535個のエントリを保持できる。単一キューではないため、大量の同時I/O要求を処理できる。プロセッサのコア数が増え、大量の処理を同時に行う現在のIT環境では、複数のI/Oキューに対応するストレージデバイスの意義は大きく、外部I/Oスループットの向上にもつながる。

 NVMe規格は2011年、メンバー企業約90社で構成するNVM Expressワーキンググループが策定した。2013年、Samsung Electronicsが初のNVMe対応ドライブを発表した。同ワーキンググループは2017年5月、NVMe規格1.3をリリースし、セキュリティやリソース共有、SSD耐久性管理の課題に対応する機能を追加した。

NVMe over Fabrics

 NVMeがデバイス接続用の新しいストレージプロトコルになるとすれば、iSCSIにおけるSCSIやファイバーチャネルプロトコルに取って代わることも想像に難くない。ファブリック対応のNVMe規格は2014年に開発を開始し、2016年に公開された。

 NVMe over Fabricsのトランスポート開発には、リモートダイレクトメモリアクセス(RDMA)を使用する方式と、ファイバーチャネルを使用する方式(FC-NVMe)の2種類がある。

 RDMAを使用する方式では、2台のコンピュータのアプリケーションメモリ間でプロセッサを介さずにデータを転送することで、高速で低レイテンシのデータ転送を実現できる。RDMAの実装には「InfiniBand」「iWARP」「RDMA over Converged Ethernet」(RoCE、“ロッキー”と読む)がある。Mellanox Technologiesなどのベンダーは、NVMe over Fabricsオフロード機能を備え、InfiniBandとイーサネットの両方に対応する100Gbpsの高速アダプターカードを提供している。

 ファイバーチャネルを使用する方式では、既存のファイバーチャネルを利用してSCSIとNVMeのストレージトランスポートに対応するようにアップグレードできる。この場合、適切なファームウェアを使ってスイッチをアップグレードするだけで既存のインフラを利用できる可能性がある。ホストレベルではホストバスアダプター(HBA)がNVMeに対応すること(一般に16Gbpsまたは32Gbps)、ストレージデバイスもNVMe over Fabricsに対応することが必要となる。

NVMeの実装

 NVMeはデータセンターに普及しており、サーバでNVMeデバイスを利用するのが最も分かりやすい用途だろう。ベンダー各社は既にNVMe対応のサーバを物理コネクタやBIOSのサポートとともに市場に投入し始めている。

 最新のオペレーティングシステムや、「VMware vSphere」などのハイパーバイザープラットフォームもNVMeに対応してきている。「VMware vSAN」プラットフォームは2015年11月からNVMeデバイスに対応している。

 ストレージ機器のバックエンドストレージ接続としてNVMeに対応するという用途もある。ストレージベンダーは既にバックエンドインタフェースをSASに移行しており、Fibre Channel Arbitrated Loop(FC-AL)やパラレルSCSIを順次置き換えつつある。

 NVMeを実装すると、フラッシュデバイス用に高速で低レイテンシの接続を提供でき、ストレージオペレーティングシステムのコードが効率的ならアレイのパフォーマンスを飛躍的に向上させることができる。現時点までに、Hewlett Packard Enterprise(HPE)が「3PAR」でNVMeに対応、NetAppが「FlashCache」で読み込みキャッシュにNVMeを採用、Pure Storageが「FlashArray//X」プラットフォームでNVMeに対応している。

 Pure StorageのNVMe対応FlashArray//Xは、従来の半分のレイテンシと2倍の書き込み帯域幅を実現するという。この仕様にはホストベースのNVMe over Fabrics対応は含まれておらず、今後、さらにパフォーマンスが向上する可能性が見込まれる。

NVMeオプション

 NVMe技術を最大限に活用するには、SAN全体に導入する方がいい。これを実現するのがNVMe over Fabricsだ。導入方法には前述の2つの選択肢がある。適切なインフラを備えているデータセンターならFC-NVMeに移行できる可能性がある。2017年4月、Cisco Systems

は高性能ファイバーチャネルディレクタ「MDS 9710」でFC-NVMeに対応すると発表した。Brocadeは2017年3月発表の「G610」などのGen6 32Gbpsスイッチで既にNVMeに対応している。

 ファイバーチャネルのメーカーは、適切なファイバーチャネル機器を使っている場合は既存の環境を完全に入れ替えなくてもNVMeに移行できるとしている。32Gbps接続に対応済みのデータセンターならこれが当てはまるが、多くのサーバは恐らくまだ32GbpsのHBAカードを導入していないだろう。

 NVMe対応ストレージアレイが登場して同じインフラにSCSIとNVMeが共存できるようになれば、全てを一度にNVMeにアップグレードしなくて済む可能性がある。既存のハードウェアを維持できるかどうかは環境によって異なる。管理と運用の観点でファイバーチャネルに慣れ親しんでいるデータセンターやIT部門なら、ハードウェア入れ替えコストが原因でなかなか実現できないコンバージドイーサネットへの移行よりも、NVMeの方が移行しやすくなるかもしれない。

 ファイバーチャネルではなくRDMAを使用して新しいストレージネットワークを実装する場合、スケーラビリティは下がるが、パフォーマンスが少し高くなる。一部のベンダーはこの方式を採用した製品を提供している。スタートアップメーカーのE8 Storageは、100ギガビットイーサネット(GbE)コンバージドスイッチとRDMAネットワークインタフェースカードを使用して高パフォーマンスSANを実装するNVMe対応ストレージアレイを開発した。同社は、1000万読み込みIOPSと200万書き込みIOPS、読み込みレイテンシ100マイクロ秒と書き込みレイテンシ40マイクロ秒を実現するとしている。

 スタートアップメーカーのExceleroが開発したソフトウェア定義型ストレージ(SDS)の「NVMesh」では、NVMe対応サーバメッシュを使用して分散コンピュートストレージファブリックを構築し、ハイパーコンバージドコンピュート環境などさまざまなシステムを実装できる。Micron Technologyの3.2TB SSDとMellanox TechnologiesのイーサネットRoCEスイッチを利用する、Micron Technologyの「SolidScale」というプラットフォームにも採用されている。

 Pure Storageは2017年6月に開催した「Accelerate」カンファレンスにおいて、同社の「FlashStack」のリファレンスアーキテクチャでCiscoと提携してNVMe over Fabricsをサポートすることを発表した。これには、FlashArray//X、「Cisco MDS 9700」ディレクタと「Cisco Unified Computing System」(Cisco UCS)、「C-Series」スイッチ、32Gbps HBAが含まれる。同社はバックエンドシェルフ接続にNVMe over Fabricsを採用してシングルコントローラーで追加シェルフをサポートする機能も発表した。

 スタートアップメーカーのApeiron Data Systemsは、40GbEと外部化したハイパーコンバージドデザインを採用し、ストレージとコンピュートを別々に拡張できるNVMeアレイアーキテクチャを開発している。

今後の展望

 NVMeはSSDデバイスの標準接続規格としてSCSIとSASに取って代わっていくだろう。ハイエンド環境ではNVMe over Fabricsの採用が進みそうだ。導入コストが掛かっても、それに見合うだけの高いアプリケーションパフォーマンスを実現できる。

 NVMeを既存のアレイプラットフォームに採用して、スナップショットやレプリケーション、圧縮、重複排除などの機能を維持する動きと、それほど機能豊富ではないExceleroやApeiron Data Systemsなどの新しいプラットフォームアーキテクチャでの導入の両方に注目したい。これまでは、機能が少ないことを理由にNVMe対応製品になかなか関心が集まらなかった。しかし、オールフラッシュへの流れを乗り越えたものの、SSDの能力を最大限に引き出すことのできない古いアーキテクチャは、これから徐々にNVMeに置き換えられていくだろう。