ここまで、自動階層化のユーザーメリットについて説明してきた。本章では、そのメリットを実現するための技術について解説していこう。
自動階層化をサポートしたストレージはさまざまな製品が市場に存在し、製品によって効果が大きく変わる。しかし、ベンダはそれぞれ自社製品の優れた点のみを紹介するため、各製品の特性の違いをユーザーが理解するのはなかなか難しい。
本記事では、自動階層化の各方式の特性の違いを読者に理解してもらうべく、以下の4つの観点からポイントを整理し、それぞれがどういった特性の違いを生むのかについて解説する。
まず、どういった粒度でデータを移動するのかという点、つまり「移動ユニットのサイズ」について取り上げる。ユニットサイズが大きいか小さいかは、自動階層化の効果を左右する重要なポイントの1つである。
自動階層化では、この移動ユニットの単位で、アクセス頻度などの統計情報がメタデータとして管理される。このメタデータ情報に基づいて、各ユニットがアクティブか非アクティブかといった分析が行われ、階層間のデータ移動が行われるのである。最適化の観点では、ユニットサイズは小さいほうがよい。ユニットが小さければ小さいほど、異なる特性のデータが同一ユニットに含まれている可能性が減り、より正確な最適化が可能になるためだ。ユニットサイズが大きいと、適切でないデータ移動が行われる可能性が高くなってしまう。ユニットのある部分はアクティブだが、それ以外の部分は非アクティブというような状況が生まれやすくなるためだ。例えば、ユニットサイズが1GBだとして、ユニット内に100MBのアクティブなデータが存在するために、残りの900MBを含めたユニット全体が上位階層に移動してしまうというシナリオは、ユーザーにとっては望ましいものではないだろう。
ユニットサイズは製品によって大きく異なる。GBレベルの製品もあれば、MBレベルの製品、そして1MBよりも細かい単位での階層化を可能にする製品もある。検討している製品の自動最適化機能はどれぐらいのユニットサイズでデータ移動を行うのか、確認した方がよいだろう。
製品によってユニットサイズに差がある背景には、ユニットサイズを小さくすることの技術的な難しさがある。ユニットサイズを小さくすればするほど、自動階層化のためのメタデータ処理のオーバヘッドは増加するからである(使用容量という意味でも、計算処理量という意味でも)。オーバヘッドが大きくならない形で小さなユニットサイズを実現する部分は、自動階層化の実装における1つのポイントといえるだろう。
自動階層化の効果を大きく左右するもう1つのポイントが、「どのようなストレージ階層を構成することができるか」という点である。異なる特性を持つ階層を組み合わせることで、いろいろな最適化を行う余地が生まれる。
(1) ドライブタイプによる階層化
ストレージ階層化の基本は、ドライブタイプによる階層化である。具体的には、SSDとHDD、そしてHDDではさらに15Krpm、10Krpm、7.2Krpmという回転数の違いで階層を分ける。回転数ではなく、FC、SAS、ニアラインSAS、SATAというインターフェイス名で呼ばれることもあるが、意図は同じである。ドライブタイプによる階層化では、多くの製品が3階層の構成を取れるようになっている。典型的な構成は上からSSD、15Krpm HDD、7.2Krpm HDDというものである。性能に優れるSSDと容量コストに優れる7.2Krpm HDDを、15Krpm HDDで補完する構成である。
15Krpm HDDを使う理由としては主に2つの側面がある。1つは、SSDを大容量で持つことはコスト的に難しいため、十分な性能を確保するために15Krpm HDDで補完するという考え方である。もう1つは、7.2Krpm HDDの階層の性能があまり高くないので、15Krpm HDDで補完するという考え方である。7.2Krpm HDDは1TBを超える大容量ドライブのためRAID6で組む場合が多く、ドライブタイプの性能の違い以上に(RAID6のために)SSDと大きな性能ギャップが生まれるためだ。これらの理由から、3階層をサポートする製品では15Krpm HDDを含めた構成をベンダが推奨するケースが多い。SSDの高性能が必要ない場合は、15Krpm HDDと7.2Krpm HDDの2階層という構成が一般的だ。もちろん、SSDと7.2Krpm HDDの二階層で組むというやり方もある。この場合は、上記で述べた問題を回避するために、十分な容量のSSDを用意する必要があるだろう。
(2)RAIDタイプ、内外周による階層化
ドライブタイプのほかには、RAIDタイプによる階層化がある。RAIDタイプによって、性能や信頼性などの特性に差があるので、その違いを利用した最適化を行うのが狙いだ。
具体的な例としては、RAID10とRAID5のように2つのRAIDタイプを作り、その間でデータ移動を行う実装がある。RAID10はライトに強く、RAID5はリードには強いがライトには弱い(ライトペナルティのため)という特性を利用して、ライト性能の高いRAID10でライトを受け、一定時間経つとRAID5にデータを移して大部分のリードはそちらで受けるという仕組みだ。こうすることで、ライト性能を落とさずに、容量効率の高いRAID5を大部分のデータに適用し、容量コストを抑えることができる。
ほかには、ディスクの内外周を使った階層化もある。ハードディスクでは、ディスクの内周と外周のどちらにデータが置かれるかで性能が大きく異なる(外周のほうが速度が速いため)。この差を利用して、あまりアクセスのないデータは内周に、そしてアクセス頻度の高いデータは外周に置くという最適化を行う。
ドライブタイプによる階層化は基本となるものであり、ベンダが階層化という言葉を使うときにはこのタイプの階層化のみを指していることも少なくない。RAIDタイプ、そしてディスクの内外周による階層化は、ドライブタイプによる階層化とともに使われ、入れ子のような階層構造を形成することで、より細やかな最適化を可能にする。
Copyright © ITmedia, Inc. All Rights Reserved.