連載
» 2011年06月27日 00時00分 公開

ストレージ仮想化の体系的理解(4):ストレージの自動階層化を理解する (3/3)

[桂島航,デル株式会社]
前のページへ 1|2|3       

データ配置のアルゴリズム

 自動階層化のアルゴリズムは、非常に単純にいってしまえば、「移動ユニット」ごとにアクセス頻度を計測し、アクセス頻度が高いものは上位の階層に、アクセス頻度が低いものは下位の階層に移動する、というものである。しかし、実際に製品に実装するレベルではさまざまな点で違いが出てくる。

(1)データ移動のサイクル

 まず、どれぐらいのサイクルでデータ移動を行うかという点がある。これは製品によってまちまちで、24時間単位で行うものもあれば、1時間単位もあれば、もっと細かいサイクルで行うものもある。これには一長一短があって、サイクルが短いほど突発的な変化に即座に対応できるようになるが、階層間を行ったり来たりというような無駄なデータ移動が起きるリスクを抱えることになる。逆にサイクルが長いと、突発的な変化には対応できなくなるが、無駄なデータ移動は減ることになる。

 どちらを選べばよいかという点だが、大容量HDDを有効活用するところに自動階層化を使う目的があるのなら、長めのサイクルのほうがよりフィットするだろう。古くなってアクセスされなくなったデータを下位の階層に移動する際に、短いサイクルでデータを移動する必要はないからである。もし突発的なアクセスにSSDで対応したいという場合には、短い頻度でのデータ移動が有効だろう。ただ、このような突発的な変化への対応は、SSDをキャッシュとして用いる方法も得意とする分野なので、自動階層化と並行してそちらを検討してみるのもよいだろう。

[コラム] SSDキャッシュと自動階層化の違い

 自動階層化はSSDキャッシュと比較されることも多いので、その違いを簡単に説明しておこう。SSDキャッシュでは、自動階層化のように1つの階層としてSSDを使うのではなく、大容量キャッシュとしてSSDを用いる。DRAMキャッシュと同様に、リードキャッシュであればキャッシュ領域にデータの複製を作り、ライトキャッシュであればキャッシュ領域にデータを書いてライトバックという動きになる。(リードキャッシュのみをサポートするケースも多い)

 SSDキャッシュには自動階層化よりも優れている点がいくつかある。一つは、突発的なアクセスに対応しやすいという点である。自動階層化では、決められた時刻が来るまでSSDへのデータ移動は起こらないが、SSDキャッシュでは、SSDへのデータ複製が短時間で速やかに行われる。この性質から、下位の階層にあるデータに突如アクセスが集中し、そのデータがDRAMキャッシュに載りきらないようなケースでは、SSDキャッシュが非常に有力な選択肢になる。

 もう一つのSSDキャッシュの利点は、より細かい単位(数十KB程度など)でSSDへのデータ移動をコントロールすることができるという点だ。キャッシュはデータを複製するだけなので、細かい単位で出し入れを行ってもオーバヘッドが小さいためだ。

 一方、SSDキャッシュが苦手な分野もある。まず、SSDキャッシュでは、アクセス頻度を長いスパンで分析してSSDとHDDを使い分けるようなことはできない。少し時間が経過するとSSDからデータが追い出されてしまうためである。また、自動階層化のように、大容量HDDをうまく使っていくこともできない。コストの最適化というよりは性能の最適化に向いた技術である。

 このような違いから、SSDキャッシュと自動階層化はお互いをある程度補完する関係にあるとも言える。

(2)新しいデータをどの階層に置くか

 新しいデータが書かれた場合にどの階層に置かれるかという点も、製品によって動きが異なる部分である。1つのアプローチは、新しいデータは必ず最上位の階層に置くというものである。この方法のメリットは、性能の高い上位の階層を使うことで書き込み性能を上げやすいところにある。新しいデータは後続アクセスがあることが多いので、その場合に高速な読み出しができるという面でも有利なアプローチである。

 別のアプローチとして、複数の階層に分散して置くやり方もある。例えば、データを更新する際に、現在そのデータが属している階層に更新データを置くような動作である。このアプローチのよさは、下位の階層をより積極的に使えるという点である。ただし、書き込み性能、そして後続の読み出しに対する性能面ではリスクを抱えることになる。どちらが合うかはユーザーのアプリケーションの種類によるだろう。

 なお、新しいデータは必ず下位の階層に置くというモードを持つ製品もあり、データのインポートの際などにこのモードが使われる。自動階層化をオンにしたままデータをインポートすると上位の階層の容量が浪費されてしまうが、データのインポートの間にこのモードをオンにしておけば、他のボリュームへの性能インパクトを抑えつつデータをインポートできるという仕組みだ。

(3)スナップショットデータの扱い

 マスターデータとは異なる移動ポリシーをスナップショットデータに適用することで、より細やかな最適化を実現するアプローチもある。スナップショットデータは主に復旧の際に使われるデータであるため、求められる性能はマスターデータよりもずっと低い。その特性を利用して、スナップショットのブロックは下位の階層に積極的に移動してしまうのがこのアプローチの狙いである。

 いままでのストレージでは、スナップショットデータがマスターデータと同じ種類のメディアに保管されているケースが多かった。スナップショットデータを考慮した自動階層化を適用することで、上位の階層の容量をより有効にマスターデータに活用できるようになる。

設定可能なパラメータ

 自動階層化をきちんと動かすためには、いくつかのパラメータを正しく設定することが必要になる場合が少なくない。この章では、ポイントとなりやすいパラメータについて説明していこう。

(1)自動階層化の無効化

 全ての種類のデータに自動階層化がフィットするとは限らない。例えば、映像データのようにシーケンシャルアクセスが中心のデータではSSDを使うメリットはあまりなく、こういったデータに自動階層化を適用してしまうと貴重なSSDが無駄に消費されてしまう。

 このようなケースのために、自動階層化をボリューム単位でオン・オフできる機能を持つ製品がある。自動階層化をオフにする際には、従来の階層化ストレージのように、どの階層にそのボリュームを置くかを指定する。このような機能があれば、映像データは自動階層化をオフにして7.2Krpm HDDの階層に格納し、他のデータでは自動階層化をオンにするような運用が可能だ。

 また、この機能があれば、性能要件の高いボリュームだけをSSDの階層に置くことを保証することもできる。自動階層化では非アクティブなデータは下の階層に自動的に移動されていくが、データベースなどでは、特定のボリュームに関しては速い応答を常に保証したいケースもあるだろう。そのような場合には、そのボリュームのみ自動階層化をオフにして、SSDの階層に格納すればよい。

 いろいろなタイプのデータをストレージに格納する場合には、ボリューム単位で自動階層化のオン・オフができるかをチェックしておいたほうがよいだろう。

(2)分析区間の指定

 アクセス頻度の分析を行う時間区域を指定する機能を持つ製品もある。この機能がどういったケースで役立つかを説明するために、昼間にトランザクション処理を、夜間にバッチ処理を走らせるケースを考えてみよう。ユーザーにとってより重要な処理は昼間のトランザクション処理で、この場合における性能を最適化したいとする。ここに単純に自動最適化機能を適用すると、夜間のバッチ処理のアクセスに引きずられて、昼間のトランザクション処理にとっては最適ではないデータ移動が行われてしまうかもしれない。

 このような場合に、分析時間の区域指定機能が役に立つ。上記の例でいえば、この機能を使うことで夜間のバッチ処理を除いた形でアクセス頻度を分析できるので、トランザクション処理に最適化されたデータ配置を行うことが可能になる。

 ただ、こういったパラメータ設定に関しては、あまりやりすぎると自動階層化による自動化・省力化という一番のメリットを失う結果にもなりかねない。そのため、詳細にはあまり踏み込まない形での運用を行っていくことが理想だろう。

 以上、自動階層化について説明してきた。自動階層化という技術を理解する際に、また、製品の選定をする際に少しでも役に立つ情報があれば幸いである。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。