半導体ストレージを最大限に利用しよう
著者:Dennis Martin
Storage Magazine 2012年3月号より
半導体ストレージの長所は明白である。早くて、熱を出さず、CPUに負荷をかけない。そして今この技術は、データセンターのストレージの基本的な使い方も変えつつある。
半導体ストレージは、データストレージ環境に多くの変化をもたらし、日々のストレージ運用のしかたも塗り替えた。半導体は、常に高パフォーマンスを維持するストレージとしてだけでなく、自動ティアリング、アプリケーションのキャッシング、データ圧縮の分野において、再び注目を集めている。
半導体ストレージは、ストレージ業界を一変させただけでなく、今や全コンピューター産業に影響を与えようとしている。我々は半導体ストレージが、コンシューマーエレクトロニクス産業にどのような変革をもたらしたのかを、目の当たりにしてきた。コンシューマー・デバイスの全分野において、半導体ストレージは回転式ディスクドライブに入れ替わったのだ。
半導体ストレージに対する熱い期待は、データセンターにも広がりつつある。データベース管理者やシステム管理者、アプリケーションのオーナーたちは、半導体ストレージとそれがもたらす恩恵に気づきつつある。彼らは、パフォーマンスや電力消費の利点をよく理解している。それでも、半導体ストレージがエンタープライズアプリケーションをサポートする耐久性については、まだ懸念をもっている。しかし、ストレージ業界は、半導体ストレージの耐久性の問題を、新しい半導体ストレージコントローラーによって解決しつつある。このコントローラーは、半導体ストレージの寿命を伸ばし、低価格の半導体ストレージメディアのパフォーマンスを上げることができる。このため、エンタープライズアプリケーションにおいて、今まで高価な半導体ストレージメディアしか使われなかったところにより安価な半導体ストレージメディアを使う事ができるようになった。
SSDへのベストフィット
半導体ドライブ(SSD)は、ハードディスクドライブ(HDD)に対して、現実的でより高速な選択肢となった。とはいえ、あるジョブに対して正しいストレージを決定する最初のステップは、アプリケーション個別のストレージパフォーマンス要件を定義するところから始まるものだ。これらの要件は、半導体ストレージと従来のハードディスクストレージとを比較して、どちらがより要件にふさわしく、かつよりコスト効率のよいソリューションであるかによって決められるべきである。まず、比較的シンプルな例から始めてみよう。そして次に、もっと複雑な条件に移っていこう。SSDがすでに入り込んでいるデータセンター環境の一分野は、ラップトップコンピューターの中である。ラップトップPCに内蔵されているSSDは、非常に高速のブートアップと総合的なパフォーマンスの向上を提供し、さらに、内蔵のSSDが非常にわずかの電力しか使わないために、バッテリー寿命をはるかに長時間まで延ばせるようになった。ワープロやグラフつきの大きな文書、スプレッドシードのマクロ、データベースやビデオなどのアプリケーションの応答は極めて速くなる。ラップトップへ、あるいはラップトップからのファイルのコピーも非常に高速だ。このように見ていくと、半導体ストレージを使うことによる恩恵は、実際のところ、単なるアプリケーションのパフォーマンスをこえている。
同じ恩恵が、デスクトップPCでも実現されている。半導体ストレージを、例えばコンピューターのブートに使用することは、比較的容易で安価なパフォーマンス改善の方法である。SSDをデスクトップのブートドライブとしてインストールすれば、ほとんどのI/Oが高速化するという至って単純な理由によって、年季の入ったマシンの寿命を延ばすことにつながる。
これは、適切なインターフェイスを持ったSSDさえ入手できれば、古くなったラップトップコンピューターにも適用可能である。
データベース運用の高速化
パフォーマンスの改善あるいは、ストレージのレイテンシーの短縮が必要なアプリケーションは、半導体ストレージ技術にとって恰好のターゲットである。例えば、多くのデータベースオペレーションは、実際は、パッケージとしてグループ化された一連の小さなリクエストとして行われる。テーブルスキャンやクエリーなどのパッケージでは、ひとつのリクエストのアウトプットが、次のリクエストのインプットとなり、ということを順番に繰り返して実行されている。全体のトランザクションを構成する、これらの小さなリクエストの全てが回答を貰うまでは、アプリケーションに最終的な答えはかえってこない。このようなケースでは、半導体を使うことにより、レイテンシーが大幅に減少する(ターンアラウンドが速くなる)ことによって、アプリケーションの全体のパフォーマンスやエンドユーザーの体感に大きな違いをもたらす。
最上のエンタープライズハードディスクドライブが、ひとつのリクエストに対して掛かる平均シークタイムレイテンシーは、およそ2ms である。ここで注意しておかなければならないのは、データ保護への懸念から、全てのストレージシステムがドライブのキャッシュメモリを有効にしているわけではない、という点だ。だから、使用中のSSDがハードディスクと全く同じパフォーマンスを持っていたとしても、SSDのほうにはシークタイムがない分、全体ではより少ないレイテンシーを提供できるのだ。全てのI/Oが、ハイエンドのエンタープライズハードティスクのシークタイムレイテンシーの影響下に置かれている、複雑なデータベーストランザクションの巨大なバッチ処理を想像してほしい。次に同じ複雑なデータベースオペレーションのバッチが、より高速なストレージデバイスでシークタイムレイテンシーなしで実行される様子を想像してほしい。そうすればSSDが、データベースアプリケーションにとって、なぜそんなに良いのかがわかるだろう。
SSDが可能にするティアリング
半導体ストレージ技術によって得られるパフォーマンスの改善は、データベースアプリケーションに限ったことではない。今我々が目にしている、キャッシングとティアリングソリューションに対する需要の増加の理由は、ここにある。ほとんどのサーバーは、それが単体であろうが、グループになっていようが、各サーバーがさまざまなアプリケーションの負荷によって、忙しい時間帯と、そうでない時間帯を持ちながら、常に何らかの処理を行っている。もしあなたが、全てのデータを半導体ストレージに入れているのであれば、キャッシングやティアリングについて考える必要はないかもしれない。しかし、あなたのデータセンターが多くのデータセンターと同じようなものであれば、あなたの現在のアプリケーションデータの大半は、なんらかの種類のハードディスクドライブに保存されているということだ。
SSD用ティアリングによってユーザーは、どのデータをSSDにおくべきか、いつそれをそこにおくべきかを決めることができる。ティアリングは手動で実行するか、ホスト上またはストレージコントローラー内のティアリングソフトウェアによって自動で実行される。ティアリングとは、特定のホットデータを適切なタイミングでSSDティアに移動し、そのデータを(またも適切なタイミングで)速度の遅いディスクに戻すシステムのことである。もし、ティアリングが手動で実行された場合、管理者は常にI/O活動を監視しなければならず、特定のファイルやデータをいつ移動するかを決めなければならない。あなたは、全システムのファイルひとつひとつのアクセス回数を手動で追跡し、これらのアクセス回数に基づいて、いつSSDから、あるいはSSDへファイルを移動しなければならないかを決めなくてはならないことになる。システムのサイズの大小にかかわらず、このようなタスクを手動で行うのは不可能であり、自動ティアリングソフトウェアが必要になる。自動ティアリングソフトウェアによって、ファイルとデータのアクセスは自動的に追跡され、データの移動はユーザーが定義したポリシーに基づいて、スケジュールされた時間に行われる。ティアリングは、高速のティアに移動されたデータを使うアプリに恩恵をもたらすだけではあるが、パフォーマンスの改善は即時であり、その度合いも大きい。もしあなたが、アプリケーションのパフォーマンスの改善が必要であるにもかかわらず、どのアプリがパフォーマンス改善を必要としているか決めかねている-あるいはあなたがそれを証明するだけの時間的余裕がない-ときには、自動ティアリングソリューションは、よい選択である。もしティアリングによって恩恵を受けるアプリケーションがひとつだけならば、あなたにとって自動ティアリングソフトウェアは必要ない。
しかし、ほとんどのデータセンターは、何十、何百、もしかすると数千もの、パフォーマンスの改善によって恩恵を受けるアプリケーションを持っている。
半導体キャッシング
もうひとつのアプローチはSSDキャッシングである。SSDのキャッシングはホストのソフトウェアまたはストレージのコントローラーによって決められる。これは、ユーザーやアプリケーションに認知されているオリジナルのロケーションから、データを移動することなく、データのコピーをSSDに置くものだ。キャッシングは、ほとんど全ての決定がキャッシングソフトウェアかコントローラーで行われるため、比較的管理が簡単である。キャッシングは、キャッシュにアクセス可能なデータの中に「ホット」と考えられるデータを持っているアプリケーションであれば、どんなアプリケーションでも効果をもたらす。しかし、パフォーマンスの改善はティアリングに比べてややゆっくりしており、より多くのデータがキャッシュに集まってくるにつれて上がってくる。この、ゆっくり上がってくるパフォーマンスの改善の仕方は、「ウォームアップ」あるいは「ランプアップ」と呼ばれる。これは、実装方法やI/Oオペレーションの発生回数によって、分単位で発生することもあれば時間単位で発生することもある。キャッシングは、実装方法によってリード・オンリーにもリード/ライト両方可能にもできる。SSDを使ったキャッシングの多くが、メモリー・キャッシュや時としてプロセッサー内部のキャッシュで使われているアルゴリズムを踏襲している。いくつかのSSDキャッシング製品の中には、明らかにホットなデータの他に、キャッシュ・ソフトウェアが、I/Oパターンの観察から次にホットデータになりそうだと判断した隣接データを、事前にフェッチする機能を持っているものもある。たいがいのキャッシング製品は、管理者がどのファイルまたはどのボリュームをキャッシュ・パフォーマンス改善の対象にするかを決められるようになっており、この機能によってキャッシュの動きを低下させるようなデータは排除することができる。もし、あなたのアプリケーションの大半あるいは全てがパフォーマンス改善によって恩恵を受けるだろう、と思えるのであれば、是非SSDキャッシングを検討すべきだ。
ティアリングとキャッシングによるパフォーマンス改善のためのストレージとして、SSDの容量を増やすことも可能だ。どちらのソリューションにしても、効果が出るにはどれだけのSSDの容量が必要か算出しなくてはならない。多くの環境において、パフォーマンス改善の明らかな効果を得るには、ディスク・ストレージ全体の3%~10%程度のSSDが必要となる。
SSDを使ったデータ圧縮
圧縮は、半導体ストレージの特徴を活かし、新たな注目を浴びつつあるテーマである。ギガバイトあたりの単価だけで比べると、SSD技術は一般的にHDD技術よりも高価であるため、データをSSDに保存する前に圧縮することは、SSD技術の利点を活かす方法のひとつで、これにより、高価なリソースの消費を減らすことができる。プロセッサーのパフォーマンスが上がっている現在、余っているCPUサイクルを、ディスクよりもはるかに高速なデバイスに保存するために、データを圧縮し、結果として全体のパフォーマンスを改善する、というアプローチはなかなか合理的な方法だと言えるだろう。圧縮がホスト側で行われても、ストレージシステム側で行われても、効果は同じだ。あるストレージシステムで圧縮の設定がONになると、データはストレージシステムに入る時点で即座に圧縮されるため、キャッシュ、SSD、ディスク・デバイスは圧縮データしか見えないことになる。結果として、各デバイスで消費される容量は減ることになる。
前述した、もう一つのソリューションが、全てを半導体ストレージに替える、という方法だ。これは、昨年新興企業が仕掛けて流行りだしたトレンドを、大手ストレージ・ベンダーが取り入れたことによって、今後普及していくだろう。今年、大手ストレージ・ベンダーから半導体ストレージ・アレイが発表されることを大いに期待していいだろう。また、近い将来、全ての半導体ストレージ・アレイが、シン・プロビジョニング、データ重複排除、など現在ハードディスクだけで構成されているストレージシステムの機能を持つようになるのも、まず間違いないと思われる。
著者略歴:Dennis Martinは1980年からIT業界で仕事をしてきた。コンピューター業界アナリスト団体兼テスト・ラボでもあるDemartekの、創立者兼会長である。
Copyright 2000 - 2012, TechTarget. All Rights Reserved,
*この翻訳記事の翻訳著作権はJDSFが所有しています。
このページに掲載されている記事・写真・図表などの無断転載を禁じます。