 |
|
 |
| |
本文は、Excella シリーズの特徴と特性について、RAID方式の観点から解説したものです。特徴を理解していただくことにより、より快適に弊社製品をご使用いただくための考え方について、説明させていただいています。方式の特徴と、利害得失。OSから見た場合の特性。OSの振る舞いについて、順に説明します。 |
| ● |
チャンクサイズが 2つの方式を分けた |
| |
ご承知の様に、最初に実用化されたデータ障害対応型のディスクアレイは、RAID
3 です。その後、パターソン氏らによって、RAID としてディスクアレイが体系付けられた時に、速度重視型の
RAID 3 に対して、より一般的なHDDを複数並べて構成する RAID 5 の考え方が、一般的なものとして提唱されました。
この論文で最も特徴的に表現されていたのが、RAID 5 による、同時複数箇所のライトの論理的可能性であったと考えられています。パリティの第二生成法
( 書き換えるデータディスクと、パリティディスクのみから、パリティディスクのデータを生成する方法 ) が、同時ライトの実現の上で最も重要な概念です。
この特徴の差の元となるのが、チャンクサイズ ( ホストから見た場合のセクタ配置を、一つのデータディスクに連続して配置するセクタ数
) による差です。 |
| ● |
チャンクサイズがセクタ単位
( RAID 3 の基本形 ) |
| |
基本形の RAID 3 では、各データディスクの同一セクタは同時にアクセスされデータディスクが
8 であれば、
512バイト×8=4,096バイトを論理セクタサイズとして扱われます。この場合、チャンクサイズは、セクタ(もしくは表現方法によってはバイト)になります。この全ディスク同時アクセスこそが、RAID
3 の基本的特徴です。 |
| ● |
チャンクサイズが 128セクタ単位など ( RAID
5 の基本形 ) |
| |
これに対して、基本形の RAID
5 では、各ディスクは同時ではなく、別々にアクセスされ、たとえば、上位から見た最初の 128セクタ ( 64KB
) は、ディスク1が持ち、次の 128セクタ をディスク2が持つと言うように、チャンクサイズを 64KB
等と大き目のサイズにしています。 |
| (1) |
この時代のRAIDは主にSCSIインターフェイスのディスクで構成されていましたが、SCSIインターフェイスチップは、スキャッタギャザリスト機能
( DMAのアドレスと、長さをリスト構造でチップに渡す機能 ) を持っておらず、1回のDMA起動で転送する領域は、連続領域に限定されていたために、それなりのサイズをチャンクサイズ
( この場合は、1回のDMAで転送するサイズ ) とする必要がありました。 |
| (2) |
多くの場合、ディスクは、1本もしくは数本のSCSIケーブルにディジーチェイン接続されており、複数ディスクの同時データ転送は不可能でした。RAID
3 の様に、同時にディスクをアクセスする事ができず、順番にアクセスする事に大きな意味がありました。 |
| チャンクサイズを大きくする事で、一般的に市販されているLSIの組み合わせのみで、RAIDコントローラを構成可能でした。初期において、特殊なハードウエアを使用せずに、RAID
5 コントローラを一般化した会社として、後にIBMの子会社となった Mylex ( その後売却 ) があります。 |
| ● |
チャンクサイズがセクタ単位の場合の利害得失 |
| |
RAID 3 では、逆に言うとチャンクサイズを小さくするためのハードウエア的工夫が必要でした。実際には、 |
(1)
(2) |
同時にアクセスするために、ディスクと同数の独立したSCSIインターフェイスが必要。
データを1セクタ毎不連続なアドレスにDMAするためには、特殊なDMA機構が必要。 |
の2点の重要なハードウエア的特長が必要でした。
この頃の RAID 3 もしくは、RAID 3 ライクなディスクアレイを販売していた会社として、Ciplico
や、TEXA ( Excella アーキテクチャの前身 ) があります。
当然の事ながら、この時代の性能比較では、圧倒的に RAID 3 ライクな方式の方が高速で、これに対しMylex
等は安価で、コンパクトにRAIDを構成できる事が、主な特徴でした。 |
(1)
(2) |
RAID 3 は、単体ディスクより高速で、高価なもの。(
ディスク耐障害性のある RAID 0 )
RAID 5 は、単体ディスクより遅いが、ディスクの障害に対して、データ保護可能なもの。 |
というそれぞれの特徴がありました。
こうした中、Excella シリーズの基本アーキテクチャは、RAID 5 のもう一つの特徴であるディスクアクセスの平準化と、論理セクタサイズを
512バイト としてアクセス可能な形態として、セクタサイズをチャンクサイズとする RAID 3 ライクな
RAID 5として始まりました。
この時点での特徴は、 |
(1)
(2)
(3)
(4)
(5) |
ディスク毎に独立したインターフェースを持ち、同時アクセス可能。
ディスク毎に独立したFIFOを持ち、完全同時並行データ転送可能。
独自のDMA機能による、ハードウエアでのデータ並び替え機能。
制御CPUと独立の大きなデータ転送能力を持つディスクキャッシュ。
全てハードウエアによるパリティ生成機構。 |
| これらの特長により、ハードウエアは複雑ですが、(
特にシーケンシャルの ) データ転送速度の速い RAID を実現しました。 |
| ● |
セクタ単位チャンクサイズのRAID ( 大きなデータが得意 ) |
| |
チャンクサイズがセクタの RAID
3 ライクなアーキテクチャのRAIDは、初期の RAID 0 のメインマーケットであった、高いデータ転送速度が要求される映像系の用途や、大きなデータを高速で読み書きしたい画像系の用途
( DTPなど ) で主に使われてきました。また、データ転送速度と同時に、コマンド発行から、データ転送までのディレイを最小化するレスポンス重視の方向にチューニングされていました。Excella
は、このグループに属し、レスポンス重視、単一アクセスでも最大性能が発揮できる、ストリーミングが得意なタイプになります。 |
| ● |
チャンクサイズの大きなRAID ( 安くできる、次第にトランザクション性能向上
) |
| |
これに対し、チャンクサイズが大きい
RAID 5 のRAIDは、まだまだ低速ではありましたが、コマンドキューイングが一般化したことから、PCの世界でも
( 汎用機用のRAID<EMCなど>では一般的であった ) 同時に複数のコマンド受付が可能になり、パターソン氏らが最初に提唱した複数箇所の同時アクセスを実現できる方向が少しづつ見えてきました。またSCSIインターフェイスチップも、仮想記憶のためにOSからの要求がありスキャッタギャザリスト機能を持つようになりました。
これにより、単位時間当たりに処理できるコマンド数を多くする、トランザクション重視の方向へのチューニング方向が明確になってきました。
この同時アクセス性においては、ディスクインターフェースが、SCSI から SATA/SAS になり、(
RAID 3 ライクなRAIDでは以前から必須であった ) ドライブ独立に変わってきたことによる性能向上も寄与しています。ハードウエアの集積度が飛躍的に向上したことから、当初と比べるとドライブ独立にする事でハードウエアが複雑化する事はさほど重要な要素ではなくなってきました。IFTなどが、このグループに属し、トランザクション重視、同時アクセスが多い時に最大性能が発揮できるタイプになります。 |
| |
今後は、RAID 5 から、RAID
6 に主流が移行するのではないかと考えられていますが、ここでもチャンクサイズの違いが、2つの方式を大きく分けています。 |
| ● |
セクタ単位チャンクサイズのRAID |
| |
チャンクサイズの小さなタイプ
( Excellaシリーズ などのストリーミング重視タイプ ) の場合は、ガロア演算方式を使用すれば、RAID
5 と同等の性能を発揮できます。ハードウエアで RAID 6 機能を実現してしまえば、RAID 6 だからといって、速度低下する事はなく、2台のHDDがダウンしていても、正常状態とほとんど同じ速度で動作可能です。 |
| ● |
チャンクサイズの大きなRAID |
| |
しかし、チャンクサイズの大きなタイプ
( IFTなどのトランザクション重視タイプ ) の場合には、RAID 6 では、同時複数ライトが可能な組み合わせが激減する事、第二パリティ生成法で
RAID 6 のパリティを演算するためには、複雑な演算が必要な事などから、RAID 6 で同等の性能に到達するのには、今しばらく時間が必要なように思われます。
そのため、トランザクション重視タイプでは、現状では、RAID 5 で速度を取るか、RAID 6 で安全性を取るかの二者択一が必要かと考えます。 |
| |
ここでは、セクタ単位チャンクサイズのRAIDをより高速に、快適に使用していただく上での留意点について説明します。以下の説明は、映像系のRAIDでは比較的常識的な方法ですが、IT系のアプリケーションでは、圧倒的にトランザクション重視型のRAIDが使われる事もあり、あまり意識されないようです。 |
| ● |
ランダムライト速度は、OSのアクセス境界で変わる |
| |
OSは、一般的に 4KB単位やそれ以上の
2のべき乗単位のサイズでディスクアクセスします。
これに対して、セクタ単位のチャンクサイズの場合、たとえば、データディスク数を 8台にすると、丁度 4KBで全データディスクの1セクタづつアクセスする事になります。
そこで、 |
| (1) |
データディスク数を 4,8 など
2のべき乗数にする。
Excella 212の場合、8データ 2パリティで 10台でお使いいただくと、この関係を満足します。 |
| (2) |
パーティションの開始アドレスを、8セクタの単位にあわせる。 |
Windowsの場合、ベーシックパーティションだと、MBRを
( セクタ0 に ) 1セクタとった後、セクタ境界が1、9、の様に 2のべき乗数から1つずれたアドレスを取りますので、拡張パーティションにして論理フォーマットしてください。そうするだけで
8セクタの単位に合った開始アドレスになります。
Linuxの場合には、論理シリンダあたりのセクタ数(論理的トラック辺りセクタ数と、ヘッド数の積)が奇数に設定されているため、8xn+1シリンダから領域を確保してください。シリンダ番号は、1基数なので、8の倍数+1になります。たとえば
シリンダ9から領域確保すると、8の倍数のセクタから確保されます。 |
| ● |
ベンチマークで比較してみる (IOMeter ) |
| |
この様な効果を、一般的なベンチマークである
IOMeter で簡単に比較する事ができます。 |
| (1) |
最初に Excella 212
を 10台の RAID 6 で準備 |
| (2) |
IOMeter で特にランダムライト速度を測定 |
| (3) |
設定の Align I/O の項目に 4KBを設定 |
| 小さなデータサイズ ( 4KBなど
) ですと、Align するかしないかで、数倍の速度差が観測できるはずです。データサイズが大きくなるとそれほど顕著な差はなくなりますが、それでも速度差は観測されます。シーケンシャルライトや、リードにはそれほど顕著な差はありません。 |
| |
最初に新しく領域確保 ( 論理フォーマット
) して使い出した当初のアクセス速度は速いのに、使っていくうちに速度が低下していきます。これは、最初は1つのファイルが綺麗に連続して配置されているのに、使っていくうちに不連続な隙間に配置されるようになる
( いわゆるフラグメンテーション状態 ) ためです。 |
| ● |
クラスタサイズを大きめに ( 2,048以上、8,192/16K 等
) |
| |
なるべく連続して配置させるためには、領域配置の単位であるクラスタのサイズを大きくしておく事が重要です。ディスクの容量が1GBにも満たない時代では、クラスタサイズが大きくなってしまうと、色々と隙間がもったいない事もあったと思いますが、数TBの現在、1KB以下の膨大な数のクラスタで管理する事は、逆にいろいろな意味で損失の方が大きくなっています。
そこで、2,048 以上のクラスタサイズでフォーマットされる事をお勧めします。映像系では、キャプチャボードなどの側の要求で既に常識的になっているため、当然と考えられていますが、IT系だからといって、細かすぎるクラスタは、いたずらにフラグメンテーションを大きくするだけで、あまりメリットはありません。
ちなみに、現在のRAID容量は大きいため、Windowsでは、1,024MB以上では、規定値が 2048
です。4,096MB以上では、規定値が 4,096 ですので、数百GB以上の場合、8,192 以上、16K/32K/64Kなどの選択が有効です。(
TBクラスの容量では、8,192/16K程度が推奨されます。 ) |
| ● |
ディスクフルにしない ( 85%以下で ) |
| |
ファイルシステムは、スペースがあればできるだけ連続して領域を確保しようとするのですが、スペースがなくなると、隙間を使い始めます。一旦そうなると、ファイルの配置は急速に悪化します。したがって、一定以上のスペースが常に残っているように、管理して使用する事で、このようなファイル配置の悪化を防ぐ事ができます。できれば、80%以上になったら、早めに不要なファイルを削除するか、システムが常に監視するレベルを低めに設定しておく事を、お勧めします。 |
|
 |