RAID5: ストライプサイズ(ストリップサイズ)によるディスクパフォーマンス性能差


ストライプサイズとは?ストリップサイズとは?

最近に業界用語を変更しているメーカーが多いようですね。

ストライピングでは、論理ディスクのデータがXバイトずつ順番に、アレイ内の異なる物理ディスクに配置されます。
業界用語では、Xバイトの各セットをストリップ(strip)と呼びます。
ストライプ(stripe)は、アレイ内のすべてのドライブにまたがる1つの完全なデータ行です。
業界でよく使われている「ストリップサイズ」を指す表現として、HPの設定ツールではこれまで「ストライプサイズ」を使用してきましたが、これは2010年に変更されています。

ストライプサイズとは?

以下の場合、32KBです。
以前は、メーカーはこのストリップサイズを「ストライプサイズ」と表現していました。

ストライプサイズとは?

上記がRAID0としたら、ストリップサイズが32KBで、ストライプサイズが32KB×4本(ストリップサイズ×アレイディスク数)=128KBになります。
上記がRAID5としたら、ストリップサイズが32KBで、ストライプサイズが32KB×3本(ストリップサイズ×有効アレイディスク本数)=96KBになります。


一般に、アレイはストリップサイズが大きいほど、RAIDアレイのパフォーマンスは高くなります。


ストリップサイズの違いによるパフォーマンス差の理論

ストリップサイズ32KBの場合

RAID5の書き込みロジック

RAID5では、論理ドライブに対する高レベル書き込み操作ごとに数回の低レベル操作が実行されます。
表2に示すとおり、RAID5の書き込みごとに、4回の低レベルディスク操作とパリティ計算が実行されます。
最悪の場合、RAID5ランダム書き込み性能は単一のRAID 0ドライブの4分の1にしか達しない場合があります。 
これがRAID5の書き込みが遅いといわれるゆえんで、またRAID5の書き込みはRAIDコントローラ性能も影響します。

RAID5高レベル書き込み操作の分析 
  1. データドライブの読み取り (現在のデータの取得) 
  2. パリティドライブの読み取り (現在のパリティ情報の取得)
  3. 新しいパリティの計算 (現在のデータおよびパリティ、さらに新しいデータに基づく) 
  4. データドライブへの書き込み (データドライブへの新しいデータ値の書き込み)
  5. パリティドライブへの書き込み (パリティドライブへの新しいパリティ値の書き込み) 
一回のストライプサイズの書き込み(書き込み変更)に上記処理が発生します。


以下から文章で記述している「ストライプサイズ」は全て厳密には「ストリップサイズ」を示しています

テスト環境

OS搭載メモリサイズ: 4GB
OS:Windows Server 2008 R2 Server Standard Edition x64

アレイコントローラ

SmartアレイP410i (FW3.52)
キャッシュ1GB(読み込み25%、書き込み75%)

RAID5

SAS 300GB 10krpm x11
ステータス:   OK   
フォールト トレランス:   分散データ ガーディング (RAID 5)   
容量:   2.68 TB   
アクセラレーター:   無効
ストライプ サイズ:   64KB と 256 KB 

RAID5ストライプサイズ 64KB (アクセラレーター無効)


-----------------------------------------------------------------------
CrystalDiskMark 3.0 (C) 2007-2010 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

           Sequential Read :   928.080 MB/s
          Sequential Write :    49.726 MB/s
         Random Read 512KB :    78.460 MB/s
        Random Write 512KB :    29.013 MB/s
    Random Read 4KB (QD=1) :     1.082 MB/s [   264.2 IOPS]
   Random Write 4KB (QD=1) :     0.366 MB/s [    89.3 IOPS]
   Random Read 4KB (QD=32) :    17.737 MB/s [  4330.3 IOPS]
  Random Write 4KB (QD=32) :     4.616 MB/s [  1126.9 IOPS]

  Test : 2000 MB [D: 4.7% (129.0/2743.5 GB)] (x5)
  Date : 2010/12/30 18:11:28
    OS : Windows Server 2008 R2 Server Standard Edition (full installation) [6.1 Build 7600] (x64)

RAID5ストライプサイズ 256KB (アクセラレーター無効)


-----------------------------------------------------------------------
CrystalDiskMark 3.0 (C) 2007-2010 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

           Sequential Read :   859.136 MB/s
          Sequential Write :    63.664 MB/s
         Random Read 512KB :    78.905 MB/s
        Random Write 512KB :    32.948 MB/s
    Random Read 4KB (QD=1) :     1.081 MB/s [   264.0 IOPS]
   Random Write 4KB (QD=1) :     0.366 MB/s [    89.4 IOPS]
   Random Read 4KB (QD=32) :    17.705 MB/s [  4322.6 IOPS]
  Random Write 4KB (QD=32) :     4.575 MB/s [  1116.8 IOPS]

  Test : 2000 MB [D: 4.9% (133.8/2743.5 GB)] (x5)
  Date : 2010/12/28 15:56:26
    OS : Windows Server 2008 R2 Server Standard Edition (full installation) [6.1 Build 7600] (x64)

ストライプサイズを増やしたことにより、RAID5によるWriteパフォーマンスが伸びたことがわかる。
(Seq、512KBの値)
理論上のように、64KBから256KBで4倍とまではいかなかった。

SeqのReadパフォーマンスが、256KBに比べ64KBの方が良いのは、Seqによるブロックサイズ(IO要求サイズ)とRAIDを構成するディスク本数の相性が悪かったんだと思われます。
1MBサイズのIOが要求されたときに、
64KBでは16本のディスクから読み取る必要があり、今回のディスク構成の場合10本からストライプを読み取るので、4ストライプ分(256KB)無駄が発生します。
256KBでは4本のディスクから読み取る必要があり、今回のディスク構成の場合10本からストライプを読み取るので、6ストライプ分(1536KB)無駄が発生します。
その無駄な読み取り差によるものと思われます。



参考)RAID5ストライプサイズ 64KB (アクセラレーター有効)


-----------------------------------------------------------------------
CrystalDiskMark 3.0 (C) 2007-2010 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

           Sequential Read :   919.535 MB/s
          Sequential Write :   621.194 MB/s
         Random Read 512KB :   113.558 MB/s
        Random Write 512KB :   411.480 MB/s
    Random Read 4KB (QD=1) :     1.666 MB/s [   406.7 IOPS]
   Random Write 4KB (QD=1) :     5.776 MB/s [  1410.3 IOPS]
   Random Read 4KB (QD=32) :    17.233 MB/s [  4207.3 IOPS]
  Random Write 4KB (QD=32) :     3.119 MB/s [   761.4 IOPS]

  Test : 2000 MB [D: 4.7% (129.0/2743.5 GB)] (x5)
  Date : 2010/12/30 16:56:21
    OS : Windows Server 2008 R2 Server Standard Edition (full installation) [6.1 Build 7600] (x64)
  



サブページ リスト

作成日:2010/12/28
更新日:2011/02/18
Comments