フラッシュストレージioDriveの性能と信頼性

2014年2月19日(水)
高木 健誠

ioDriveの歴史

 
 ioDriveは、米Fusion-io社で開発された PCI Express接続型の超高速半導体ストレージです。2008年の発売開始以降、Facebookに代表されるWeb2.0系の企業ユーザはもちろん、医療、通信、金融など様々なミッションクリティカルな環境で活躍しています。現在は第2世代のioDrive2(2011年10月発表)がメインストリームとなっています。
 
 ioDriveがここまで普及した理由の1つとして性能や信頼性の面もありますが、多数のサーバベンダ にOEM供給をしているという点も重要なポイントになっています。2014年1月時点で、HP、IBM 、DELL、Supermicro、Cisco、富士通、日立、LenovoにOEM供給をしています。
 
 OEM品のため、保守サービス等がサーバベンダから一括して受けられたり、保守料金が標準保守サービスに含まれているため、安価に購入できたりすることが大きなメリットとなっています。
 
フュージョンアイオーの歴史
図1:フュージョンアイオーの歴史(クリックすると拡大)
 
 ioDriveは、PCI-Express接続型の半導体ストレージとして5年以上の実績を積んだことになります。接続方法はいまだ目新しいですが、すでに安心してお使いいただけるデバイスとして認知され、今後の更なる普及を見込んでいます。
 

SSDとの違い

 
 昨今、安価で大容量のSSD (ioDriveと区別するため他社の半導体ストレージをSSDとします)も登場してきました。ここであらためてioDriveがSSDとどう違うのかご紹介します。
 

ioDriveのアーキテクチャ

 
 ioDriveはディスクコントローラやRAIDコントローラを介さず、PCI Expressバスに直結してCPUからダイレクトにアクセスさせることで非常に高い性能を実現しています。このアーキテクチャをカットスルーアーキテクチャと呼んでいます。
 
カットスルーアーキテクチャ
図2:カットスルーアーキテクチャ(クリックすると拡大)
 
 「PCI ExpressはSATA/SASに比べて帯域が広いため、ioDriveはSSDより高速である」と思われている方も多くいらっしゃるかと思います。もちろんそれも理由の1つではあるのですが、SASも12Gbps も登場していますし、他社からもPCI Expressに接続するタイプのSSDも登場してきています。ioDriveの優位性はどこから来ているのでしょうか? 主な違いを見てみましょう。
 

Virtual Storage Layer(VSL)

 
 ioDriveの最大の特徴は、Virtual Storage Layer(VSL)と呼ばれるドライバにあります。VSLはドライバなので、ホスト上のCPU、メモリ上で動作を行います。ホストのCPU、メモリを使うのは非効率だという意見をいただくことがありますが、この仕組みこそがioDriveの最大の強みとなっています。
 
 NANDフラッシュは上書き処理ができないため、古いデータを書き換える場合は、いったん削除してからデータを書き込む必要があります。しかし削除処理が非常に遅いという欠点もあるため、通常は追記型のアルゴリズムを採用しています。そのため、OSのファイルシステムが認識しているデータの記録箇所(論理アドレス)と、NANDフラッシュ上のデータの記録場所(物理アドレス)が異なることになります。
 
 そこでSSDでは論理アドレスとNANDフラッシュ上の物理アドレスを対応させるマッピングテーブルをSSDの内部RAMに保管し、変換処理をSSDの組み込みのCPUで行っています(RAIDコントローラを介している場合はRAIDコントローラ内でのアドレス変換も発生してしまいます)。
 
  このように複数のレイヤで組み込みのCPUを使ったアドレス変換をしているため、レイテンシが大幅に上がってしまうという欠点があります。Fusion-ioは組み込みのプロセッサを使う代わりに、I/O待ちで遊んでいるホスト側のCPU、DRAMリソースを少し借りることで、圧倒的な低レイテンシ性能を実現しているのです。
 
アドレス変換のイメージ
図3:アドレス変換のイメージ(クリックすると拡大)
 

十分な保証使用量

 
 NANDフラッシュは書き込みに応じて劣化していきます。各サーバベンダで取り扱うSSDには保証使用量(書き込み容量)が規定されており、その使用量を超えるとサポート対象外になるというケースがほとんどです。
 
 しかし、ioDriveは十分な保証使用量が規定されており、エンタープライズ環境でも安心してご使用いただけます。 例えばHPからOEM頂いている「HP 1205GB MLC G2 PCIe IOアクセラレータ」(ioDrive2 1.2TB同等品)では保証使用量が17PBと規定されています。これは1日あたり約9TB書き込んでも5年は使用できる計算になり、エンタープライズ環境でも安心して利用できる保証使用量となっています。
 

エンタープライズレベルの信頼性

 
 NANDフラッシュにも故障は発生します。そのためSSDにおいても故障に備えてRAID構成を組むのが一般的です。例えば200GBのSSDを2本用意してRAID1を構成する等です。しかし当たり前ですがこの構成ですと200GBの容量が無駄になってしまいます。RAID5を組んだとしてもSSD1本分の容量は犠牲になってしまいます。またリビルド時間も問題となります。デバイスの容量が大きくなればなるほどリビルド時間も長くなり、その間のパフォーマンス劣化も無視できません。
 
 SSDでは、このアプローチは必ずしも適切とは言えません。 RAIDは、もともと 信頼性の低い磁気ディスクのために作られたものです。磁気ディスクはモータやヘッド等の駆動部分があり、摩耗による故障の確率が高くなっています。そこでRAIDを用いて磁気ディスクを複数用意して信頼性を上げています。
 
  NANDフラッシュは性質上、 駆動部分は必要ありません。しかし、 SSDはNANDフラッシュが一部でも故障すると、デバイス全体の故障につながってしまうため、磁気ディスク同様にRAID構成を組むのが一般的になっています。一方、ioDriveは独自の信頼性技術であるAdaptive Flashbackテクノロジを採用し、RAIDの問題点を克服しつつカード単体で非常に高い信頼性を持っています。
 
 Adaptive Flashbackは、デバイスやNANDフラッシュチップ単位ではなく、論理ブロック単位でパリティ保護するテクノロジです。そのため、NANDフラッシュチップの故障やチップ内のブロックレベルの故障が発生しても、自動的に予備領域と置き換える動作をします。ブロックレベルで予備領域と置き換えるため、ユーザが使用できる容量の低下は発生しませんし、置き換え単位も小さいため、瞬時にリビルドが完了します。
 
Adaptive Flashback機能
図4:Adaptive Flashback機能(クリックすると拡大)
 
 ioDriveは、このようなテクノロジを駆使してカード1枚でもエンタープライズレベルの信頼性を持つことを可能にしているのです。
 

低レイテンシ性能がもたらすものとは

 
 ストレージの性能比較項目として一般的なのはIOPSと帯域ですが、SSDの登場によりレイテンシが注目されるようになりました。HDDの場合はどのモデルも回転数やシークタイムはそれほど差違がなく、結果的にレイテンシも差違がないため、比較項目としてはあまり注目されてこなかったのだと思います。
 
 ここでは初心に振り返って改めてレイテンシがなぜ重要なのか紹介したいと思います。今後の機器選定の際の基準として注目いただければと思います。
 
 情報処理技術者試験でおなじみの待ち行列理論で学ぶリトルの法則で考えると非常にイメージがしやすいです。リトルの法則では、例えばお店の前にできる行列の長さは、
 
L(行列の長さ)= λ(単位時間あたりのお客の到着率) × W(平均滞在時間)
 
で表されました。
 ストレージの世界に置き換えると、Lはキューデプス(ストレージが一度に受け取れるIOリクエスト数 )、λはIOPS(単位時間あたりのIO数)、Wはレイテンシになります。IOPSの式に直すと
 
IOPS  = キューデプス ÷ レイテンシ 
 
となります。
 
 つまり、IOPS性能をあげるためにはキューデプスを増加させる方法と、レイテンシを短くする2通りの方法があることがわかります。これまではHDDを大量に用意してこのキューデプスを増加させることでIOPS性能を確保してきました。
 
 しかし、この方法には限界があります。いくらキューデプスを増加させてもキューを全て満たせるような大量のIOが発行できなければ、IOPSは上がらないのです。OLTPのようなトランザクション処理では一度に発行できるIOが限られることが多々あります。厳密に在庫管理しているオンラインショッピングサイトを想像してみてください。 注文が来た場合、在庫を確認して注文数に応じて在庫を引き当てる(アップデートする)必要があります。このアップデート自体はたいしたIOではないですが、この処理が終わらない限り、注文は完了しません。少量のIOでも素早く処理する必要があるのです。同一の商品に注文が殺到するとさらに問題が顕著になります。排他制御がかかり、引き当て処理は並列ではなく逐次的に処理されてしまいます。
 
 このようにビジネスロジックによっては一度に大量のIOを発行できないケースがあり、効率よくキューを満たせるかどうかは、アプリケーション依存の部分があります。
 
 そこで、レイテンシを低くするアプローチが注目されています。レイテンシを低くできれば、キューデプスの状況に関わらずIOPS性能を稼ぐことができます。
 
 いわゆる一般のディスクベンチマークでは、とにかくIOを大量に発行して単位時間あたりにどれくらいIOを処理できるか測定をしますが、このようなベンチマークは簡単にキューを満たしてしまいます。そのため、ベンチマーク結果はいいのに実環境では速度はあまり向上しない、ベンチマーク結果ではそこまで差がないのに実環境ではなぜか差が出てしまう、といったケースが出てきます。ioDriveを評価される場合は、単純なベンチマークではなく実環境を想定したワークロードでの評価をお願いします。 
 
 次回は、ioDriveを活用してアプリケーションの高速化とコスト削減を両立させる方法を紹介します。
 
フュージョンアイオー株式会社

フュージョンアイオー株式会社 インターナショナルセールス APAC Japan セールスエンジニア。大手SIerでネットワークの設計構築、ユーザ企業でのインフラ担当(設計・構築・運用)を経て2012年より現職。主にHPC、仮想化、DB案件を担当。趣味はビリヤード、スキーと海外旅行。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています