(57)【要約】【課題】  より効率のよいデータ書き込みの高速化を図ったディスクアレイ制御装置を提供する。【解決手段】  外部のホスト装置から転送されたデータがストライプグループを構成するストライプ単位に分散されて格納される複数のディスクドライブからなるディスクアレイに対するアクセスを制御するディスクアレイ制御装置におけるデータ配置方法であって、前記ストライプグループのパリティを生成し、前記ストライプグループの論理容量をファイルシステムのアクセス単位に適合させるデータ配置方法。【選択図】      図３
2009080549.tif 000002
【特許請求の範囲】
【請求項１】
外部のホスト装置から転送されたデータがストライプグループを構成するストライプ単
位に分散されて格納される複数のディスクドライブからなるディスクアレイに対するアク
セスを制御するディスクアレイ制御装置におけるデータ配置方法であって、
前記ストライプグループのパリティを生成し、
前記ストライプグループの論理容量をファイルシステムのアクセス単位に適合させる
データ配置方法。
【請求項２】
外部のホスト装置から転送されたデータがストライプグループを構成するストライプ単
位に分散されて格納される複数のディスクドライブからなるディスクアレイに対するアク
セスを制御するディスクアレイ制御装置におけるデータ配置方法であって、
前記ストライプグループのパリティを生成し、
前記複数のストライプグループの論理容量をファイルシステムのアクセス単位にストライ
プ単位の未使用領域を設定することにより適合させる
データ配置方法。
【請求項３】
外部のホスト装置から転送されたデータがストライプグループを構成するストライプ単
位に分散されて格納される複数のディスクドライブからなるディスクアレイに対するアク
セスを制御するディスクアレイ制御装置において、
予め定められたストライプグループ用に設けられたディスクキャッシュ手段であって、
対応するストライプグループに属するストライプをブロック単位で一時記憶するためのキ
ャッシュメモリと、外部から指定されたストライプのパリティデータをブロック単位で生
成する排他的論理和演算機能を持つパリティ生成回路とを有するディスクキャッシュ手段
と、
パリティ生成の対象となるストライプグループの更新されたパリティデータをブロック
単位で生成するのに必要なブロックデータを、前記ディスクキャッシュ手段内の前記キャ
ッシュメモリを介して当該ディスクキャッシュ手段内の前記パリティ生成回路に読み込ま
せることで、当該パリティ生成回路により対応するパリティデータを生成させる主制御手
段とを
具備し前記ストライプグループの論理容量をファイルシステムのアクセス単位に適合させ
るように働くことを特徴とするディスクアレイ制御装置。
【請求項４】
前記複数のストライプグループの論理容量をファイルシステムのアクセス単位に適合さ
せるように働くことを特徴とする請求項１に記載のディスクアレイ制御装置。
【請求項５】
前記アクセス単位への適合は、未使用領域を複数のディスクドライブへ分散させる形態
にて実施することを特徴とする請求項１に記載のデータ配置方法。
【請求項６】
ファイルシステムの開始位置のずれに対応させて論理アドレスをずらすことを特徴とす
る請求項１に記載のデータ配置方法。
【請求項７】
前記複数のストライプグループの論理容量を複数種類のファイルシステムのアクセス単
位に適合させるように働くことを特徴とする請求項１に記載のデータ配置方法。
【請求項８】
前記複数のストライプグループの論理容量をファイルシステムの複数のアクセス単位に
適合させるように働くことを特徴とする請求項１に記載のデータ配置方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクアレイ制御装置に係わり、特にディスクアレイ制御装置のデータ配
置方法に関する。
【背景技術】
【０００２】
一般にディスクアレイ装置は、複数のディスクドライブからなるディスクアレイと、こ
のディスクアレイ内の各ディスクドライブに対するアクセスを制御するディスクアレイ制
御装置とを備え、当該各ディスクドライブを並列に動かしてアクセスの高速化を図ると共
に、冗長構成によって信頼性の向上を図るようにした外部記憶装置として知られている。
【０００３】
上記ディスクアレイ制御装置は、ホスト装置から転送される書き込みデータに対して、
データ訂正情報としてのパリティデータを排他的論理和演算により生成し、上記複数のデ
ィスクドライブのうちのいずれかに書き込むようになっている。これにより、複数のディ
スクドライブのうちの１台の故障に対し、このパリティデータと残りのディスクドライブ
のデータを用いて排他的論理和演算を行うことで、故障したディスクドライブのデータを
復元することを可能としている。
【０００４】
このような、パリティ等によるデータ冗長化の方式の１つとして、ＲＡＩＤ（Redundan
t Arrays of Inexpensive Disks ）方式が知られている。ＲＡＩＤ方式では、ＲＡＩＤの
データとパリティとの関連において、ＲＡＩＤレベルとして種々のレベルに分類されてお
り、その代表的なものにレベル３とレベル５がある。
【０００５】
レベル３のＲＡＩＤはＲＡＩＤ３と呼ばれており、大量のデータを転送するシーケンシ
ャルアクセス（を伴う業務）に適している。一方、レベル５のＲＡＩＤはＲＡＩＤ５と呼
ばれており、少量のデータの読み出し／書き込みが多量に発生するランダムアクセス（を
伴う業務）に適している。
【０００６】
さてディスクアレイ制御装置は、ディスクドライブとホスト装置との間の転送データを
一時記憶しておくキャッシュメモリ（ディスクキャッシュ）を有しているのが一般的であ
る。このような構成では、キャッシュメモリに目的データが存在する場合には、ＲＡＩＤ
３やＲＡＩＤ５といったＲＡＩＤレベルに無関係に、（機械的なアクセス動作を伴う）デ
ィスクドライブをアクセスすることなく、当該キャッシュメモリから目的データを高速ア
クセスできる。
【０００７】
ＲＡＩＤ３では、ホスト装置から転送される更新データを分割して、その分割された更
新データ間の排他的論理和演算を行うことで更新パリティを生成する。これに対し、ＲＡ
ＩＤ５では、ホスト装置から転送される更新データと、当該更新データの格納先となるデ
ィスクドライブ内領域に格納されている更新前のデータと、当該更新データの格納先に対
応する別のディスクドライブの領域に格納されている更新前のパリティ（パリティデータ
）との間の排他的論理和演算を行うことで、更新パリティを生成する。
【０００８】
従来のディスクアレイ制御装置では、上記の更新パリティの生成において、論理的なア
ドレスを物理的なアドレスに変換する管理テーブルを作成し、物理的に連続した1データ
ストライプのデータを作成し、データ書き込みの高速化を図っているため、管理テーブル
を保存するためのハードウェア等が必要となり、コストがかかるという問題があった（例
えば特許文献１参照）。
【特許文献１】特許第３５９０３８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、より効率のよいデータ書き込みの高速化を図ったディスクアレイ制御装置を
提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明のディスクアレイ制御装置は、外部のホスト装置か
ら転送されたデータがストライプグループを構成するストライプ単位に分散されて格納さ
れる複数のディスクドライブからなるディスクアレイに対するアクセスを制御するディス
クアレイ制御装置において、予め定められたストライプグループ用に設けられたディスク
キャッシュ手段であって、対応するストライプグループに属するストライプをブロック単
位で一時記憶するためのキャッシュメモリと、外部から指定されたストライプのパリティ
データをブロック単位で生成する排他的論理和演算機能を持つパリティ生成回路とを有す
るディスクキャッシュ手段と、パリティ生成の対象となるストライプグループの更新され
たパリティデータをブロック単位で生成するのに必要なブロックデータを、前記ディスク
キャッシュ手段内の前記キャッシュメモリを介して当該ディスクキャッシュ手段内の前記
パリティ生成回路に読み込ませることで、当該パリティ生成回路により対応するパリティ
データを生成させる主制御手段とを具備し前記ストライプグループの論理容量をファイル
システムのアクセス単位に適合させるように働くことを特徴とする。
【００１１】
なお、以上のディスクアレイ装置に係る本発明は、ディスクアレイを制御する制御装置
（ディスクアレイコントローラ）に係る発明としても、ディスクアレイ装置におけるデー
タ更新方法に係る発明としても成立する。
【００１２】
また、本発明は、コンピュータに当該発明に相当する手順を実行させるためのプログラ
ムに係る発明としても成立する。
【発明の効果】
【００１３】
本発明によれば、より効率のよいデータ書き込みの高速化を図ったディスクアレイ制御
装置が得られる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施例を説明する。
【実施例１】
【００１５】
本発明による実施例１を図１乃至図４を参照して説明する。
図１は本発明の一実施形態に係るディスクアレイ装置を備えたコンピュータシステムの
構成を示すブロック図である。
図１において、ディスクアレイ装置は、制御装置１と、当該制御装置１に接続されたデ
ィスクアレイ２と、当該制御装置１に接続された不揮発性メモリ３とから構成される。デ
ィスクアレイ２は、複数のディスク装置、例えば図では４台のディスク装置２１，２２，
２３，２４から構成される。
【００１６】
制御装置１は、ディスクアレイ２を制御するコントローラ（ディスクアレイコントロー
ラ）であり、ホストコンピュータ１０と接続されている。ディスクアレイ２は、ホストコ
ンピュータ１０からは１つの論理的なディスク装置としてみえる。ホストコンピュータ１
０と制御装置１とのインターフェースには、例えばＳＣＳＩ（Small Computer System In
terface）、或いはＰＣＩバス（Peripheral Component Interconnect Bus）等が適用可能
である。
【００１７】
なお、本実施形態では、図１に示す構成を中心として説明するが、当該技術分野に属す
る熟練者にとって、それらの詳しい細部の説明がなくても、図１に示す構成から派生する
他のコンピュータシステムの構成であっても、本発明を実施できることは明らかである。
【００１８】
ここで、図１の構成の詳細な説明の前に、本実施形態の説明で用いる用語について説明
する。
ａ）論理ブロック
論理ブロックとは、ホストコンピュータ１０からみたデータブロック、更に詳細に述べ
るならば、ホストコンピュータ１０からみたディスクアレイ２における論理的なディスク
領域上のデータブロックを示す。
ｂ）物理ブロック
物理ブロックとは、ディスクアレイ２上の物理的なブロック、更に詳細に述べるならば
、ディスクアレイ２における物理的なディスク領域上のデータブロックを示す。データブ
ロック（論理ブロック、物理ブロック）のサイズは予め定められており、一定である。
【００１９】
ｃ）論理アドレス
論理アドレスとは、ホストコンピュータ１０からみたディスクアレイ（ディスク装置）
２上のデータアドレスを示す。ここでは、論理アドレスは、ディスクアレイ２における論
理的なディスク領域上のデータブロックの位置、つまり論理ブロックの位置を示す論理ブ
ロックアドレスとして用いられる。
【００２０】
ｄ）物理アドレス
物理アドレスとは、ディスクアレイ２上のデータ（データブロック）の物理的位置を示
すために使用する。ここでは、物理アドレスは、ディスクアレイ２（を構成するディスク
装置）上のデータブロックの物理的位置、つまり物理ブロックの位置を示す物理ブロック
アドレスであり、後述する物理ストライプ番号と物理ブロック番号とから構成される。
【００２１】
ｅ）論理アドレスタグ
論理アドレスタグとは、各論理ブロックに対する論理アドレスとタイムスタンプからな
る情報群を示す。
ｆ）パリティブロック
パリティブロックとは、複数の論理ブロックに対応する冗長データを格納するためのデ
ータブロックを意味する。
ｇ）論理アドレスタグブロック
論理アドレスタグブロックとは、論理アドレスタグからならデータブロックを意味する
。
ｈ）論理ブロック番号
論理ブロック番号とは、ホストコンピュータからみたディスクアレイ２上のデータブロ
ックの番号を示す。
ｉ）物理ブロック番号
物理ブロック番号とは、ディスクアレイ２上の後述する物理ストライプ内のデータブロ
ックの相対位置を示す番号であり、ディスクアレイ２を構成するディスク装置に固有の番
号である。
【００２２】
不揮発性メモリ３には、書き込みバッファ３１、アドレス変換テーブル３２、タイムス
タンプ３３、書き込みバッファ管理テーブル３４、及びパリティキャッシュ３７が配置さ
れる。なお、ホストコンピュータ１０とディスクアレイ装置との間で入出力されるデータ
を一時保持するのに用いられるデータキャッシュについては省略されている。
【００２３】
書き込みバッファ３１は、ディスクアレイ２に書き込むデータをログ構造化して保持す
るのに用いられる。アドレス変換テーブル３２は、ホストコンピュータ１０からみたディ
スクアレイ（ディスク装置）２上のデータアドレス（データブロックアドレス）、つまり
論理アドレス（論理ブロックアドレス）を、ディスクアレイ２における物理的なデータ（
データブロック）の位置を示すアドレス、つまり物理アドレス（物理ブロックアドレス）
に変換するのに用いられる変換マップである。タイムスタンプ３３は、書き込みの時間的
順序を維持するのに用いられる。書き込みバッファ管理テーブル３４は、書き込みバッフ
ァ３１内の空き領域の情報及び当該バッファ３１に保持されている書き込データの論理ア
ドレスの情報を保持するのに用いられる。
【００２４】
パリティキャッシュ３７は、ディスクアレイ２にパリティデータを含む後述する１論理
アドレスタグストライプ分のデータを書き込む際に、当該パリティデータを一時保持する
のに用いられる。
【００２５】
制御装置１は、ＲＯＭ等の記憶装置（図示せず）に予め格納されている制御プログラム
に従ってディスクアレイ２へのアクセス等を制御すると共に、不揮発性メモリ３上の書き
込みバッファ３１、アドレス変換テーブル３２、タイムスタンプ３３、書き込みバッファ
管理テーブル３４、及びパリティキャッシュ３７を管理する。
【００２６】
図１において、制御装置１内には図示せぬパリティ生成回路があり、このパリティ生成回
路と制御装置１の他の部分と不揮発性メモリ３とにディスクキャッシュ手段が構成されて
いる。また制御装置１は主制御手段として機能している。
【００２７】
他方これらは、一般的なCPU（Central Processing Unit）とメモリで実行されるソフトウ
ェアで構成してもよい。単純なHDDコントローラとRAID機能を持ったソフトウェアの組合
せでも実施可能である。ホストコンピュータ１０で実行し、ここでのキャッシュメモリに
替わりホストコンピュータのメインメモリを用いてもよい。
【００２８】
図２は、この発明の一実施例を示すブロック構成図を示している。図２は、N台のDiskを
使用したRAID5の代表的なデータ及びパリティの配置例である。
Stripe Group SG i は、Data i,j(0≦j≦N-1) 及び Parity i を指し、各Data i,j及びPa
rity iは同じデータ容量 S i を持つ。このときの SG i の容量 SGS i は、SGS i = S i 
x (N-1) であり、容量効率は (N-1)/ N となる。また、Parity i は次の式で計算できる
。
【００２９】
Parity i = Data i,0 .ＸＯＲ． Data i,1 .ＸＯＲ． Data i,2 .ＸＯＲ． …
.ＸＯＲ． Data i,N-2 (.ＸＯＲ．は排他的論理和を示す)
【００３０】
例えば、Data i,1 を new Data i,1 に書き換える場合、Parity i も更新する必要がある
が、2種類の方法がある。
（１）            SG i に属する書き換えられるデータ Data i,1 以外のデータをリー
ドし、新しいデータを使用して new Parity i を計算する方法
【００３１】
new Parity i = Data i,0 .ＸＯＲ． new Data i,1 .ＸＯＲ． Data i,2 .ＸＯＲ． … .
ＸＯＲ． Data i,N-1
【００３２】
（２）            Data i,1、Parity i 及び new Data i,1 から new Parity i を求め
る方法
new Parity i = Data i,1 .ＸＯＲ． Parity i .ＸＯＲ． new Data i,1
（１）の場合、１つのデータを更新する際に、N-2回のリードと2回のライトを行う必要が
ある。（２）の場合、2回のリードと2回のライトが必要である。同じStripe Groupに属す
る n個のデータを書き換える場合は、（１）では N-1-n回のリードと n+1回のライトが必
要となり、（２）ではそれぞれ n+1回のリード・ライトが必要である。
【００３３】
本実施例では、ファイルシステムのアクセス単位に注目し、RAID5のデータ更新に付随す
るリード処理を排除することにより、書き込み性能を向上させる手法を提示する。
【００３４】
前述の（１）のデータ更新方法では、更新するデータ数 n が N-1 である場合、すなわち
、同じStripe Groupに属するすべてのデータを更新する場合、パリティを作成するために
Diskからリードする必要がない。
【００３５】
図３は、HDD4台でファイルシステムのアクセスサイズが8の場合の例である。Stripe Grou
p ３個にてクラスターサイズを満たしている。
Stripe Group SG k, SG k+1, SG k+2 (k=0,3,6,…) の合計論理容量が８になるようにす
る。すなわち、図４のように、Data k+2,2 (k=0,3,6,…)に論理アドレス(LA)を割り当て
ず、データは常に特定の値、例えば 0 であることにする。論理アドレス(LA)８〜１５へ
の書き込み要求がきた場合、下記のようにパリティを計算するために必要なすべてのデー
タがあるため、Diskからデータをリードする必要がなく、リード0回、ライト11回で処理
が完了する。
【００３６】
更にＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を利用する場合は、スキャタ
ー／ギャザーリストを用いて制御装置１レベルでは各Ｄｉｓｋに１回ずつ合計４回のライ
ト処理で済むことになる。各Ｄｉｓｋの物理ブロックアドレスを指定して行う。
【００３７】
new Parity 3 = new Data 3,0(LA 8) .ＸＯＲ． new Data 3,1(LA 9) .ＸＯＲ． new Dat
a 3,2(LA 10)
【００３８】
new Parity 4 = new Data 4,0(LA 11) .ＸＯＲ． new Data 4,1(LA 12) .ＸＯＲ． new D
ata 4,2(LA 13)
【００３９】
new Parity 5 = new Data 5,0(LA 14) .ＸＯＲ． new Data 5,1(LA 15) .ＸＯＲ． 0
一方、一般的なRAID5の場合、前述の（１）の方法では、下記のようになり、リード4回、
ライト12回の処理が必要である。
new Parity 2 = Data 2,0(LA 6) .ＸＯＲ． Data 2,1(LA 7) .ＸＯＲ． new Data 2,2(LA
8)
new Parity 3 = new Data 3,0(LA 9) .ＸＯＲ．  new Data 3,1(LA 10) .ＸＯＲ． new D
ata 3,2(LA 11)
【００４０】
new Parity 4 = new Data 4,0(LA 12) .ＸＯＲ． new Data 4,1(LA 13) .ＸＯＲ． new D
ata 4,2(LA 14)
【００４１】
new Parity 5 = new Data 5,0(LA 15) .ＸＯＲ． Data 5,1(LA 16) .ＸＯＲ． Data 5,2(
LA 17)
【００４２】
前述（２）の方法でも、下記の通り、リード4回、ライト12回の処理が必要となる。
new Parity 2 = Data 2,2(LA 8) .ＸＯＲ． Parity 2 .ＸＯＲ． new Data 2,2(LA 8)
new Parity 3 = new Data 3,0(LA 9) .ＸＯＲ．  new Data 3,1(LA 10) .ＸＯＲ． new D
ata 3,2(LA 11)
【００４３】
new Parity 4 = new Data 4,0(LA 12) .ＸＯＲ． new Data 4,1(LA 13) .ＸＯＲ． new D
ata 4,2(LA 14)
【００４４】
new Parity 5 = Data 5,0(LA 15) .ＸＯＲ． Parity 5 .ＸＯＲ． new Data 5,0(LA 15)
以上より、この例では、リード4回、ライト1回の処理を排除することができる。
図５は、RAID5に対するWrite処理のフローである。パリティ生成回路もしくは ホスト
コンピュータのCPUで実行される。
ステップＳ２０１で、まずWriteコマンドを受け付ける。続くステップＳ２０２では、パ
リティ作成可能かを判定する。YESであればステップＳ２０４でパリティ作成を行い、続
いてステップＳ２０５でデータ・パリティをDiskへWriteする。
【００４５】
他方、ステップＳ２０２でNOと判定された場合は、次のステップＳ２０３へ移りステップ
Ｓ２０４の処理に先立って不足データをDiskからReadしなければならない。
【００４６】
ステップＳ２０３の部分が、従来の方法では高い確率(ほぼ100%)で実行されるが、本例で
は実行される確率が下がる(ほぼ0%)ため、高速化が実現できる。
実施例に挙げた例(LA8〜15へのWrite)でも、従来の方法ではステップＳ２０２条件分岐で
Noになるが、本発明ではYesになる。
なお、未使用領域を特定のDiskのみに割り当てることも可能だが、上記実施例では、Stri
pe Group内の Data k,j に均等に割り当てることにより、RAID5からのデータ読み込み時
にかかる各Diskへの負荷を均等にすることができ、読み込み性能の向上を図ることができ
る。
【００４７】
また未使用領域はクラスター内に複数あってもよい。ディスクドライブ数をｎ、アクセス
単位をａ、Stripe Group数をｇとすると、未使用領域の個数は（ｎ−１）×ｇ−ａとなる
。
【００４８】
また、ファイルシステムの開始位置が論理アドレス 0 からずれている場合、論理アドレ
スの割り当てを変更することで、上記と同様の効果が期待できる。例えば、ファイルシス
テムの開始位置がLA 2になっている場合、これまでのLA 6をLA 0にずらすことで、対応可
能である。
【００４９】
単一の論理ディスクに複数のパーティションを持つ場合、別々のファイルシステムでフォ
ーマットし、使用することが可能である。そのため、複数のStripe Groupの論理容量に対
応することで、すべてのパーティションのファイルシステムで、同様の効果を期待できる
。
【００５０】
上記のように本実施例では、Stripe Groupの論理サイズ及び境界をファイルシステムの
アクセス単位に合わせることで、RAID5の書き込み処理を行う際に、パリティを作成する
ためのデータを読む必要が無くなり、書き込み性能を向上させることができる。
【００５１】
効果として、ファイルシステムのデータ単位を利用し、変換せずに物理的に連続した１
Stripe Groupのデータを作成し、書き込みの高速化を実現しているため、特別なハードウ
ェア等は必要ない。
【００５２】
概要として、ストライプグループの論理容量をファイルシステムのアクセス単位にマッ
チさせることで、RAID5のデータ書き込み性能を向上させた。未使用領域を複数のディス
クに分散させることで、データ読み込み時の各ディスクの不可を均等にし、読み込み性能
の向上を図った。
【００５３】
なお、この発明は上記実施例に限定されるものではなく、この外その要旨を逸脱しない
範囲で種々変形して実施することができる。RAID５の他にRAID６の構成のディスクアレイ
に対しても有効性がある。Stripe Group 数個以上にて複数クラスターサイズを満たして
もよい。
【００５４】
また、上記した実施の形態に開示されている複数の構成要素を適宜に組み合わせること
により、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素
から幾つかの構成要素を削除しても良いものである。さらに、異なる実施の形態に係る構
成要素を適宜組み合わせても良いものである。
【図面の簡単な説明】
【００５５】
【図１】この発明の一実施例を示すブロック構成図。
【図２】同実施例に関わるRAID5の代表的なデータ・パリティ配置例の図。
【図３】この発明の実施例の効果を説明するためのDisk４台、アクセス単位８の例を示す図。
【図４】同実施例の論理アドレスの割り当ての説明図。
【図５】RAID5に対するWrite処理のフロー。
【符号の説明】
【００５６】
１…制御装置
２…ディスクアレイ
３…不揮発性メモリ
１０…ホストコンピュータ
２１，２２，２３，２４…ディスク装置
３１…書き込みバッファ
３２…アドレス変換テーブル
３３…タイムスタンプ
３４…書き込みバッファ管理テーブル
３７…パリティキャッシュ
【図１】
2009080549.tif 000003
【図２】
2009080549.tif 000004
【図３】
2009080549.tif 000005
【図４】
2009080549.tif 000006
【図５】
2009080549.tif 000007