フラッシュ・キャッシングについて知っておかなければならないこと(前編)


George Crump
Storage Magazine 2014年7月号より

 

半導体ストレージをキャッシュとして使うことにより、サーバーとアプリケーションのパフォーマンスは劇的に向上する。しかし、フラッシュ・キャッシュの選択が重要な鍵となる。

フラッシュ機器は、データストレージのパフォーマンス問題を解決する、効果的な方法の一つだ。特に、アプリケーションが常駐しているサーバーにインストールしたときの効果は顕著だ。フラッシュをアプリケーションデータのキャッシュとして使用すると、パフォーマンスは自動的に上がっていく。またサーバー内のストレージも、ストレージネットワーク上で共有しているストレージも、両方パフォーマンスを上げていくことができる。現在、ITプロフェッショナルが直面している課題は、どのフラッシュ・キャッシングが一番よいかを決めることだ。

 

フラッシュ・キャッシングへの三つの道

ストレージパフォーマンスを改善する必要が出てきた時、検討すべきフラッシュ・キャッシングには主に3つのタイプがある。

  ・ファイルレベル・キャッシング  
  ・ブロックレベル・キャッシング  
  ・集約型キャッシング

それぞれの方式には長所と欠点がある。本稿では、読者が自分の環境に最適なキャッシング・ソリューションを選べるように、各キャッシングについて説明する。

これらの製品はどのタイプでも、フラッシュベースのストレージにアクセスを行う環境にあるサーバーにインストールするのが一般的だ。フラッシュベースのストレージは、サーバー内かストレージネットワーク上に置かれる。最も一般的な使われ方は、サーバー内に半導体ストレージを置く方法で、サーバーサイド・フラッシュと呼ばれることが多い。前述の3つのソリューションはいずれも、フォームファクターの半導体ドライブ(SSD)、PCIエクスプレス(PCle)ベースのフラッシュストレージカード、あるいは最近登場してきた、サーバーのメモリーソケットにインストールして使うデュアル・インライン・メモリー・モジュール(DIMM)ベースのフラッシュデバイスを利用できる。

(これらのハードウェアの詳細については「SSD、PCIe、DIMMフラッシュストレージ:あなたのサーバーに最適な半導体ストレージの選び方」参照)これらのソリューションのほとんどは、ストレージ専用ネットワーク上のフラッシュストレージもサポートしている。通常、フラッシュストレージに求められる唯一の要件は、ソフトウェアにとってブロックデバイスとして認識してもらうことだ。

 

ファイルレベル・フラッシュキャッシング

その名が示すように、ファイルレベル・キャッシング・ソフトウェアは、OSやアプリケーション内部でファイルレベルで動作する。これらの製品は、キャッシュ価値を測定する ため、特定のファイルを自動的に分析評価する。しかし、大部分の製品は、ファイル全体を高速にするもので、ファイルの一部だけを高速にするものではない。
ファイルレベル・キャッシングソリューションを、仮想化環境内でハイパーバイザー・レベルでインストールすることは通常できない。そのため、ソフトウェアのシングルインスタンスから、複数の仮想マシン(VM)にキャッシング・サービスを提供することはできない。代わりに、高速化したいひとつひとつのVM上のゲストOSにインストールしなければならない。ファイルレベル・キャッシングは、ベアメタルや非仮想化サーバーにインストールすることもできる。
ここで重要なのは、個々のソフトウェアインスタンスが、何らかの形のフラッシュで作られた専用のブロックデバイスと共に提供されていなければならないことだ。

この実装方法では、キャッシング・ソフトウェアの複数のインスタンスを管理する必要が出てくる。さらに仮想化環境では、内部サーバーのSSDを場合によっては多数の独立したブロックデバイスに分割しなければならない。しかし、その見返りとして非常に効率の良いアプリケーション高速化を実現できる。何らかの理由で一時的にSSDティアに選ばれたデータにキャッシュが無駄に使われることはない。ファイルレベル・キャッシング製品は、データベースログやインデックスのような、高速化を必要とするアプリケーションに特化した環境で使われることが多く、個々のファイルを選択することができる。この機能によって、ファイルレベル・キャッシングソリューションでは、手動で選択したファイルのキャッシュによる分布ができるのが、当たり前になっている。
結果として、ファイルレベル・キャッシングは余分なフラッシュ容量を使わずに、数個の基幹ファイルに対する優れた高速化を実現する。しかし、このレベルの効率性の達成のためには、フラッシュのハードウェアとソフトウェアを購入する以前に、どのファイルをキャッシュとして指定すべきかを充分に把握しておかねばならない。

 

 

ブロックレベル・フラッシュキャッシング

ブロックレベル・キャッシングはブロックレベルで動作するため、I/Oを発生させているファイルやアプリケーションには無頓着だ。その代わりこのソリューションは、最もアクティブなデータブロックを探し出し、そこを高速化する。そのブロックの出所は関係ない。 ファイルレベル・キャッシングと違って、ブロックレベル・キャッシングは、サーバー上の全VMのパフォーマンスを、ひとつのキャッシング・ソリューションを導入して、一挙に高速化したいと考えるような仮想化環境に理想的だ。この方式の長所は、物理ホスト1台につきインスタンスのキャッシング・ソフトウェアだけを実装すれば良いという点だ。欠点は、ホスト上の全データが平等に扱われるので、アクティブなデータセットはどんなものであってもフラッシュ容量を使ってしまうという点だ。

いくつかのブロックレベル製品は、現在特定のVMに対する特定のI/Oが追跡できるようにインテリジェントな機能を追加し始めている。この機能により、キャッシング・ソフトウェアが特定のVMをキャッシュに取り込んだり、別のVMを常にキャッシュから除外したりするようにカストマイズもできる。しかしこの最適化はイチかバチかのやり方だ。なぜなら、ブロックレベル・キャッシング・ソリューションは仮想マシン内部の特定のファイルだけを高速化するためにVMの中をのぞくことができないからだ。

 

著者略歴:George Crumpは、ストレージと仮想化を専門とするITアナリスト企業Storage Switzerlandの社長である。

 

 

 

Copyright 2000 - 2014, TechTarget. All Rights Reserved,

*この翻訳記事の翻訳著作権はJDSFが所有しています。
このページに掲載されている記事・写真・図表などの無断転載を禁じます。