フレッシュなデータをビジネスに活かすための、XtremIOの強みとは。
・リニアにスケールするパフォーマンス
・より高速なアプリケーション導入
・簡単にデータベースを仮想化
XtremIOの詳細は、こちらの資料をご覧ください!
オールフラッシュストレージのメリット
フラッシュメモリーを活用するストレージには、サーバーのPCIバスに直接接続するボード型のものがある。また、EMCが提供する「XtremIO」のように、SANストレージ型も登場している。ボード型は、サーバーに搭載できる量に制限があり、さらに独自ドライバーやキャッシュプログラムも必要になる。対してSAN型は、オールフラッシュの高性能に加え、高い拡張性と運用管理の容易さというメリットがある。
たとえばXtremIOでは、CPU、キャッシュを含むコントローラとSSDから構成されるノード(X-Brickという)を4ノードにまで増やせる拡張性を持っている。必要に応じ、10から80TBへ、更に今後ノード数とドライブ容量の拡張により最大320TBの物理容量へ拡張可能となる予定だ。8ノード構成では、最大200万IOPSもの読み取り性能を提供する。十分な物理容量と性能が確保できるので、扱いたいビッグデータすべてを、XtremIOに格納可能だ。このすべてを格納できる点は、運用管理面でも大きなメリットとなる。たとえば、データベースで高いレスポンスを得るために、サーバー側にキャッシュをたくさん搭載する方法もあるが、キャッシュ容量をどうすればいいかの判断も難しい。
「あるお客様では、システム導入初期にキャッシュのリードミスが40%だったものが、その後ユーザー数が増加したことで、リードミスが60%に、また、複数のデータベースを一つのストレージに統合した際には、それが80%に、さらに他のアプリケーションとともに仮想化した際には、95%のIOがリードミスするという状況に直面しました。これらの環境の変化によってランダムなトランザクションとクエリが増大したためです。これは一つの例にすぎませんが、こういったシステムの効率化の過程で、ランダムなI/Oは必ずと言っていい程増大します。そういった高ランダムI/Oとその変化に対応するために、キャッシュの増設やDB/アプリケーション側のチューニングを繰り返すことはもはや最適な手段とは言えません。高ランダムI/O下において何もしなくても一貫性のある高性能を提供できる、容量拡張性の高いストレージリソースが運用の観点からも求められます。オールフラッシュストレージはまさにそこに対応するソリューションです」(若松氏)
成長と継続的な進化が求められるビッグデータ分析において、チューニングレスで高い拡張性を提供できることは重要なメリットであり、オールフラッシュはそのための有効な解決策となりうるだろう。
フラッシュのデメリットは解消できたのか? 書き込みのボトルネック
オールフラッシュが有効な解決策と「なりうる」とした表現の背景には、その長所だけでなく、短所にも目を向ける必要があるためである。オールフラッシュストレージにも様々な技術があるとはいえ、そのベースとなっているのはNAND型フラッシュメモリー。それを使ったSSDにしても、従来から欠点がある。
その欠点は、書き込みに弱いという点である。フラッシュは書き込みによって摩耗するという性質上、書き込み回数の上限が寿命となる点が挙げられる。その上通常のアプリケーションからの書き込みとは別に、書き込み領域を確保するためのバックグラウンドでの追加の書き換え(ガベージコレクション)が発生する。これはデータの書き換えによってRAIDのパリティが更新される際に(RAIDのストライプ幅の隣接ブロックの空き領域が取れないときに)、さらに誘発され、書き込みが増幅される。また、アプリからの書き込み容量が大きくなればコスト(容量単価)が問題となる。加えて、書き込み性能は、読み取り性能の半分から1/3であり、摩耗度合の異なるフラッシュ領域間でランダムI/Oが発生した場合には、当然ながら、劣化の進んだ領域の性能に引きずられることで、さらに性能は劣化する。そのため、従来SSDに代表されるNAND型フラッシュは、読み取りの多い環境で主に推奨されてきた。
こういった問題にはどう対処するのか。依然として読み取りの多い環境に限定しなければならず、結局のところOLTPとOLAPのための単一プラットフォームとしてフラッシュストレージは時期尚早なのだろうか?
「これに対処する技術が、既にXtremIOには実装されています。実際のところ、対処法としては、フラッシュに対する書き込みを減らすしかありません。その最も効果的な方法は、重複するデータの書き込みを回避するインライン重複排除とパリティの書き込みを最小化するスマートなデータ保護技術を実装することです。その上で、書き込み単位を小さくすることがその効率を向上させます。書き込み単位が大きいと一般的にアレイのコントローラやバスといった内部コンポーネントがボトルネックとなって、スループットとI/Oあたりのレーテンシが落ちます。小さい単位で重複ブロックを判定し、小さい単位で書き込むことが、寿命と書き込み性能を向上する上で効果的です。XtremIOでは、4KBという小さいブロック単位で重複を判定し、その単位でデータを書き込みます。シンプロビジョニング下でも従来のようなアロケートされた領域に対して歯抜けでデータを書き込むことがないため、ガベージコレクションの必要もありません。また、XtremIOは、フラッシュに最適化したパリティエンコードアルゴリズムを実装しており、データの更新やリビルドをする際に、HDDに最適化されたRAIDとは違い、隣接するブロックにデータを書き込む必要がないため、常に空いているスペースにデータを書き込むことで、先程と同様ガベージコレクションの必要性を排除し、書き込みの最小化を実現しています」(若松氏)
さらにXtremIOの完全なインメモリ・オペレーションにより、テスト/開発/QA等データのコピーを大量に展開、利用するケースでその効率性は増幅されるという。内部的にはデータのフィンガープリントを持っていて、それを使って重複排除処理をすべてインメモリー上で実行する。実際の複製時には、メモリー内でフィンガープリントをコピーするだけなので、SSDに対する書き込みは無く、データの実容量は増えない。SSDの寿命を消費することもない。この方法だと大規模データの複製も、処理時間が大幅に短縮されるのは大きなメリットだ。この機能を活用すれば、ストレージの稼動率を大きく上げられる。