(57)【要約】【課題】ディスクアレイのデータ障害を復旧できるようにする。【解決手段】ＣＰＵ２０８は、アレイ１２内の１つのＨＤＤが故障している状態でデータ復元が完了していないデータセットへの書き込みを行う場合、正常なＨＤＤからスペアＨＤＤ１２０に、書き込みの対象となるデータセットにおける故障ＨＤＤのデータを復元する制御を行う。そしてＣＰＵ２０８は、スペアＨＤＤ１２０を含む正常なＨＤＤの書き込み対象データセットに対応する領域へのデータ書き込みを実行する。このデータ書き込みの期間、書き込み領域を特定する書き込み領域情報がテーブルＴＢＬ１に記憶される。ＣＰＵ２０８は、データ書き込みが異常終了した後の起動時に、テーブルＴＢＬ１に記憶されている書き込み領域情報によって示される書き込み途中領域に対応する全データセットを対象に、データ及び冗長データの整合性を修復するための処理を行う。【選択図】      図１
2005078430.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも３台のディスクドライブにより構成されるディスクアレイであって、データ及び当該データに対応する冗長データを格納する少なくとも１つのデータセットを含むストライプを単位に管理されるディスクアレイと、
前記ディスクアレイを制御するディスク制御装置とを具備し、
前記ディスク制御装置は、
前記ディスクアレイを構成するディスクドライブの１つが故障している状態で、外部から与えられた書き込み要求に従って、当該ディスクアレイに割り付けられたスペアディスクドライブへのデータ復元が完了していないデータセットを書き込み対象とするデータ書き込みを行う場合に、当該ディスクアレイ内の故障したディスクドライブを除く正常なディスクドライブから、当該書き込み対象データセットにおける故障したディスクドライブのデータを復元する部分復元手段と、
前記部分復元手段により復元されたデータを、前記スペアディスクドライブの前記書き込み対象データセットに対応する領域に書き込む手段と、
前記部分復元手段により復元されたデータが前記スペアディスクドライブの前記書き込み対象データセットに対応する領域に書き込まれた後に、当該スペアディスクドライブを含む正常なディスクドライブの当該書き込み対象データセットに対応する領域へのデータ書き込みを実行する手段と、
前記書き込み要求で指定されたデータ書き込みが開始される時点から当該書き込みが完了するまで、書き込みの対象となる書き込み領域を特定する書き込み領域情報を記憶する不揮発性の書き込み領域情報記憶手段と、
データ書き込みが異常終了した後の起動時に、前記書き込み領域情報記憶手段に記憶されている書き込み領域情報によって示される書き込み領域を書き込み途中領域として特定する手段と、
前記特定手段により特定された書き込み途中領域に対応する全データセットを対象に、データ及び冗長データの整合性を修復する手段とを備えている
ことを特徴とするディスクアレイ装置。
【請求項２】
前記ディスク制御装置は、
前記書き込み要求で指定されたデータ書き込みが開始される際に、書き込みの対象となる書き込み領域を特定する書き込み領域情報を前記書き込み領域情報記憶手段に記憶する手段と、
前記書き込み領域への書き込みが完了した際に当該書き込み領域を特定する、前記書き込み領域情報記憶手段内の書き込み領域情報を無効化する手段と
を更に備えることを特徴とする請求項１記載のディスクアレイ装置。
【請求項３】
前記ディスク制御装置は２重化されており、当該２重化されたディスク制御装置は、当該２重化されたディスク制御装置間で、前記書き込み領域情報記憶手段の内容を一致化させるための通信を行う通信手段をそれぞれ備えていることを特徴とする請求項２記載のディスクアレイ装置。
【請求項４】
前記ディスク制御装置内の通信手段は、前記書き込み領域情報記憶手段に書き込み領域情報が記憶される際には、他方のディスク制御装置内の通信手段との間の通信により、当該他方のディスク制御装置内の前記書き込み領域情報記憶手段に同一の書き込み領域情報を記憶させ、前記書き込み領域情報記憶手段内の書き込み領域情報が無効化される際には、当該他方のディスク制御装置内の通信手段との間の通信により、当該他方のディスク制御装置の前記書き込み領域情報記憶手段内の対応する書き込み領域情報を無効化させることを特徴とする請求項３記載のディスクアレイ装置。
【請求項５】
前記ディスク制御装置は、
前記ディスクアレイを構成するディスクドライブの１つが故障した場合に、故障したディスクドライブのデータを、当該故障したディスクドライブを除く前記ディスクアレイ内の正常なディスクドライブから前記スペアディスクドライブに復元する全復元手段と、
故障したディスクドライブのデータの復元の状況を示す復元管理情報を記憶する不揮発性の復元管理情報記憶手段と、
前記部分復元手段によるデータ復元が必要か否かを前記復元管理情報記憶手段に記憶されている復元管理情報をもとに判定する手段と
を更に備えることを特徴とする請求項２記載のディスクアレイ装置。
【請求項６】
前記ディスク制御装置は２重化されており、当該２重化されたディスク制御装置は、当該２重化されたディスク制御装置間で、前記書き込み領域情報記憶手段の内容及び前記復元管理情報記憶手段の内容をそれぞれ一致化させるための通信を行う通信手段をそれぞれ備えていることを特徴とする請求項５記載のディスクアレイ装置。
【請求項７】
前記ディスク制御装置内の通信手段は、前記書き込み領域情報記憶手段に書き込み領域情報が記憶される際には、他方のディスク制御装置内の通信手段との間の通信により、当該他方のディスク制御装置内の前記書き込み領域情報記憶手段に同一の書き込み領域情報を記憶させ、前記書き込み領域情報記憶手段内の書き込み領域情報が無効化される際には、当該他方のディスク制御装置内の通信手段との間の通信により、当該他方のディスク制御装置の前記書き込み領域情報記憶手段内の対応する書き込み領域情報を無効化させ、前記復元管理情報記憶手段にデータ復元済みを示す復元管理情報が記憶される際には、当該他方のディスク制御装置内の通信手段との間の通信により、当該他方のディスク制御装置の前記復元管理情報記憶手段に同一の復元管理情報を記憶させることを特徴とする請求項６記載のディスクアレイ装置。
【請求項８】
前記ディスク制御装置は、前記全復元手段によりストライプ単位で前記スペアディスクドライブにデータが復元される都度、復元済みを示す復元管理情報を前記復元管理情報記憶手段を更に備え、
前記ディスク制御装置内の通信手段は、前記復元管理情報記憶手段に復元済みを示す復元管理情報が記憶される際には、他方のディスク制御装置内の通信手段との間の通信により、当該他方のディスク制御装置内の前記復元管理情報記憶手段に同一の復元管理情報を記憶させる
ことを特徴とする請求項７記載のディスクアレイ装置。
【請求項９】
少なくとも３台のディスクドライブにより構成されるディスクアレイであって、データ及び当該データに対応する冗長データを格納する少なくとも１つのデータセットを含むストライプを単位に管理されるディスクアレイを制御するディスク制御装置において、
前記ディスクアレイを構成するディスクドライブの１つが故障している状態で、外部から与えられた書き込み要求に従って、当該ディスクアレイに割り付けられたスペアディスクドライブへのデータ復元が完了していないデータセットを書き込み対象とするデータ書き込みを行う場合に、当該ディスクアレイ内の故障したディスクドライブを除く正常なディスクドライブから、当該書き込み対象データセットにおける故障したディスクドライブのデータを復元する部分復元手段と、
前記部分復元手段により復元されたデータを、前記スペアディスクドライブの前記書き込み対象データセットに対応する領域に書き込む手段と、
前記部分復元手段により復元されたデータが前記スペアディスクドライブの前記書き込み対象データセットに対応する領域に書き込まれた後に、当該スペアディスクドライブを含む正常なディスクドライブの当該書き込み対象データセットに対応する領域へのデータ書き込みを実行する手段と、
前記書き込み要求で指定されたデータ書き込みが開始される時点から当該書き込みが完了するまで、書き込みの対象となる書き込み領域を特定する書き込み領域情報を記憶する不揮発性の書き込み領域情報記憶手段と、
データ書き込みが異常終了した後の起動時に、前記書き込み領域情報記憶手段に記憶されている書き込み領域情報によって示される書き込み領域を書き込み途中領域として特定する手段と、
前記特定手段により特定された書き込み途中領域に対応する全データセットを対象に、データ及び冗長データの整合性を修復する手段と
を具備することを特徴とするディスク制御装置。
【請求項１０】
データ及び当該データに対応する冗長データを格納する少なくとも１つのデータセットを含むストライプを単位に管理され、少なくとも３台のディスクドライブにより構成されるディスクアレイを備えたディスクアレイ装置において、ディスクアレイのデータ障害を復旧する方法であって、
前記ディスクアレイを構成するディスクドライブの１つが故障している状態で、外部から与えられた書き込み要求に従って、当該ディスクアレイに割り付けられたスペアディスクドライブへのデータ復元が完了していないデータセットを書き込み対象とするデータ書き込みを行う場合に、当該ディスクアレイ内の故障したディスクドライブを除く正常なディスクドライブから、当該書き込み対象データセットにおける故障したディスクドライブのデータを復元するステップと、
復元されたデータを、前記スペアディスクドライブの前記書き込み対象データセットに対応する領域に書き込むステップと、
復元されたデータが前記スペアディスクドライブの前記書き込み対象データセットに対応する領域に書き込まれた後に、当該スペアディスクドライブを含む正常なディスクドライブの当該書き込み対象データセットに対応する領域へのデータ書き込みを実行するステップと、
前記書き込み要求で指定されたデータ書き込みが開始される際に、書き込みの対象となる書き込み領域を特定する書き込み領域情報を不揮発性の書き込み領域情報記憶手段に記憶するステップと、
前記書き込み領域への書き込みが完了した際に当該書き込み領域を特定する、前記書き込み領域情報記憶手段内の書き込み領域情報を無効化するステップと、
データ書き込みが異常終了した後の起動時に、前記書き込み領域情報記憶手段に記憶されている書き込み領域情報によって示される書き込み領域を書き込み途中領域として特定するステップと、
特定された書き込み途中領域に対応する全データセットを対象に、データ及び冗長データの整合性を修復するステップと
を具備することを特徴とするディスクアレイのデータ障害を復旧する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、少なくとも３台のディスクドライブにより構成される冗長構成のディスクアレイを備えたディスクアレイ装置に係り、特にディスクアレイを構成するディスクドライブのうちの１つが故障したために欠陥となったデータセットへのデータ書き込みが異常終了したことに起因して発生するデータ障害を復旧するのに好適な、ディスクアレイ装置、ディスク制御装置及びディスクアレイのデータ障害を復旧する方法に関する。
【背景技術】
【０００２】
近年の計算機システムでは、当該システムの外部記憶装置として、複数のディスクドライブ（物理ディスクドライブ）、例えば磁気ディスクドライブ（以下、ＨＤＤと称する）から構成されるディスクアレイを備えたディスクアレイ装置が用いられることが多くなっている。この種のディスクアレイ装置の特徴は、ディスクアレイ内の各ＨＤＤ（メンバーＨＤＤ）を並列に動かして読み出し／書き込みを分散して実行することでアクセスの高速化を実現すると共に、冗長構成によって信頼性の向上を実現する点にある。ディスクアレイを制御する制御装置（ディスク制御装置）は、ホスト（ホストコンピュータ）から転送される書き込みデータに対して、データ訂正情報としての冗長データを生成し、上記複数のＨＤＤのうちのいずれかに書き込む。これにより、複数のＨＤＤのうちの１台の故障に対し、この冗長データと残りのＨＤＤのデータを用いて故障したＨＤＤのデータを修復することを可能としている。
【０００３】
データ冗長化の手法の１つとして、ＲＡＩＤ（Redundant Array of Independent DisksまたはRedundant Array of Inexpensive Disks）の手法が知られている。ＲＡＩＤ手法では、ＲＡＩＤのデータと冗長データとの関連において、種々のＲＡＩＤレベルに分類されている。ＲＡＩＤレベルの代表的なものとして、少なくとも３台のＨＤＤから構成されるディスクアレイに適用され、冗長データとしてのパリティデータの付加によりデータの信頼性を高めるようにした、レベル３とレベル４とレベル５とが知られている。例えば、レベル３（ＲＡＩＤレベル３）では、ホストから転送される更新データ（書き込みデータ）を分割して、その分割された更新データ間の排他的論理和（ＸＯＲ）演算を行うことでパリティデータを生成し、当該パリティデータで複数（少なくとも３台）のＨＤＤのいずれかに書き込まれている元のパリティデータを更新する。一方、レベル５（ＲＡＩＤレベル５）では、ホスト計算機から転送される更新データ（新データ）と、当該更新データの格納先となるＨＤＤ内領域に格納されている更新前のデータ（旧データ）と、当該更新データの格納先に対応する別のＨＤＤの領域に格納されている更新前のパリティデータ（旧パリティデータ）との間の排他的論理和演算を行うことで、更新されたパリティデータ（新パリティデータ）を生成し、当該更新パリティデータで元のパリティデータを更新する。レベル４（ＲＡＩＤレベル４）は、レベル５と同様である。但し、レベル４ではパリティデータは特定のＨＤＤに格納され、レベル５ではパリティデータは各ＨＤＤに分散して格納される。
【０００４】
このようなＲＡＩＤ手法を適用したディスクアレイ装置では、ディスクアレイ内のメンバーＨＤＤが故障した場合に、故障したＨＤＤ以外のＨＤＤから、一定のデータ単位毎にデータを読み出して、それらのデータの排他的論理和演算を行うＲＡＩＤの機能により、故障したＨＤＤのデータを、故障したＨＤＤに代えて用いられるＨＤＤ内に修復することができる。その一方、この種のディスクアレイ装置には、以下の問題点があることも知られている。
【０００５】
ディスクアレイ装置の問題点は、データとパリティデータとを各ＨＤＤに書き込んでいる最中に停電などの障害が発生して、この書き込みが正常に終了できなかった場合（つまり異常終了した場合）に発生する。一般にＨＤＤへのデータ書き込みでは、当該ＨＤＤ内でのシーク動作や回転待ちなど、様々な要因により遅延が発生する。シーク動作とは、ヘッドを目標トラックに移動させる動作である。回転待ちとは、シーク動作の完了後にディスク媒体の回転により目標トラックの目標セクタ（データセクタ）がヘッドの位置に到達するのを待つことである。データ書き込みの遅延時間は各ＨＤＤで一定しないことから、ディスク制御装置（ディスクアレイコントローラ）の制御によりデータとパリティデータのＨＤＤへの書き込みを同時に実施したとしても、このデータとパリティデータとが対応するＨＤＤ（内のディスク媒体）に実際に書き込まれるタイミングには必ずずれが生じる。したがって、データとパリティデータとをそれぞれ対応するＨＤＤに書き込んでいる最中に停電などによりその書き込みが中断された（異常終了した）場合、データとパリティデータのどちらか一方のみの書き込みが完了していることもあり得る。このような状態が発生すると、データとパリティデータとを関連付ける最小単位であるデータセットでは、データとパリティデータとの相関関係が不整合となる。この状態をそのまま放置すると、将来ＨＤＤが故障した場合には、パリティデータを使用して故障したＨＤＤのデータを復元する際に、誤ったデータを復元してしまう。
【０００６】
そこで従来から、上述のディスクアレイ装置における問題に対処するための技術が提案されている（例えば、特許文献１参照）。この特許文献１で提案された技術（以下、先行技術と称する）では、ディスク制御装置は、ＨＤＤに格納されているデータを更新する際に、そのデータの書き込み対象領域が特定可能な情報を不揮発メモリに記憶する。データの書き込み途中に停電が発生した場合、ディスク制御装置は、停電からの復帰後の装置立ち上げ処理にて不揮発性メモリを参照して、書き込み途中の領域を検出する。ディスクアレイは、検出した書き込み途中の領域の例えばデータセットを単位に、当該データセット内のデータから新たなパリティデータを再計算しＨＤＤの元の位置に上書きする。これにより、書き込み途中の停電によるデータとパリティデータとの不整合を解消できる。
【特許文献１】特開平１１−１５４０５８号公報（段落００１０、００２０、００２３、００２４、図４、図５）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記先行技術は、ディスクアレイ内の何れのＨＤＤも故障していない、パリティデータにより冗長性が正しく保たれているデータセットでは確かに有効である。しかし、ディスクアレイ内の何れかのＨＤＤが故障している状態で、データの書き込み途中で停電が発生した場合、書き込み途中の領域のデータセットは欠陥のあるデータセットとなっている可能性がある。もし、書き込み途中の領域のデータセットが欠陥のあるデータセットの場合、復帰後の装置立ち上げ処理で、当該データセットにおけるデータとパリティデータとの不整合を解消することはできない。その理由について、ディスクアレイが第１乃至第３のＨＤＤから構成されている場合を例に述べる。
【０００８】
まず、第２のＨＤＤが故障している状態で、第１のＨＤＤにデータを書き込む必要があるものとする。このデータ（新データ）に対応するパリティデータ（旧パリティデータ）、即ち新データが書き込まれる領域が属するデータセットにおける旧パリティデータは、第３のＨＤＤに格納されているものとする。この場合、ディスク制御装置は、新データが書き込まれる領域が属するデータセットを対象に、第１のＨＤＤからの旧データ（更新されるデータ）の読み出しと第３のＨＤＤからの旧パリティデータの読み出しとを行い、旧データと新データと旧パリティデータとの間の排他的論理和（ＸＯＲ）演算から、新パリティデータを生成する。次にディスク制御装置は、第１のＨＤＤへの新データの書き込みと第３のＨＤＤへの新パリティデータの書き込みとを開始する。この状態で停電が発生し、そのとき第１のＨＤＤへの新データの書き込みは完了しているのに対し、第３のＨＤＤへの新パリティデータの書き込みは未完了であったものとする。この場合、第１のＨＤＤに書き込まれた新データと、第３のＨＤＤ内の対応するパリティデータとの相関関係は不整合となる。この不整合を解消するには、停電からの復帰後の装置立ち上げ処理で、第３のＨＤＤ内のパリティデータに対応する、他の第１及び第２のＨＤＤ内のデータの間の排他的論理和演算を行って、正しいパリティデータを生成する必要がある。そのためには、故障している第２のＨＤＤのデータを復元する必要がある。しかし、当該第２のＨＤＤのデータに対応する、第１のＨＤＤのデータと第３のＨＤＤのパリティデータとの間の整合性は失われているため、当該第２のＨＤＤのデータを正しく復元することはできず、データの消失が発生する。
【０００９】
通常、ディスクアレイ装置には、故障したＨＤＤに代えて用いられる、ホットスペアと呼ばれるＨＤＤが設けられている。そこでディスクアレイ装置では、ディスクアレイ内のいずれかのＨＤＤが故障した場合に、当該故障したＨＤＤのデータを、ディスクアレイ内の他のＨＤＤのデータからホットスペアＨＤＤ上に復元することにより、欠陥のあるデータセットへの書き込みが長時間継続しないように配慮されている。しかし、故障したＨＤＤのデータをホットスペアＨＤＤに復元するには、当該ＨＤＤの容量にもよるが、通常数時間かかることから、その間上記の問題が発生する危険性を有している。
【００１０】
本発明は上記事情を考慮してなされたものでその目的は、ディスクアレイを構成するディスクドライブのうちの１つが故障したために欠陥となったデータセットへのデータ書き込みが異常終了しても、当該データセットに含まれているデータとパリティデータとの不整合によりデータが消失するのを簡単に防止できる、ディスクアレイ装置、ディスク制御装置及びディスクアレイのデータ障害を復旧する方法に関する。
【課題を解決するための手段】
【００１１】
本発明の１つの観点によれば、少なくとも３台のディスクドライブにより構成されるディスクアレイであって、データ及び当該データに対応する冗長データを格納する少なくとも１つのデータセットを含むストライプを単位に管理されるディスクアレイと、このディスクアレイを制御するディスク制御装置とを備えたディスクアレイ装置が提供される。上記ディスク制御装置は、上記ディスクアレイを構成するディスクドライブの１つが故障している状態で、外部から与えられた書き込み要求に従って、当該ディスクアレイに割り付けられたスペアディスクドライブへのデータ復元が完了していないデータセットを書き込み対象とするデータ書き込みを行う場合に、当該ディスクアレイ内の故障したディスクドライブを除く正常なディスクドライブから、当該書き込み対象データセットにおける故障したディスクドライブのデータを復元する部分復元手段と、この部分復元手段により復元されたデータを、上記スペアディスクドライブの上記書き込み対象データセットに対応する領域に書き込む手段と、上記部分復元手段により復元されたデータが上記スペアディスクドライブの上記書き込み対象データセットに対応する領域に書き込まれた後に、当該スペアディスクドライブを含む正常なディスクドライブの当該書き込み対象データセットに対応する領域へのデータ書き込みを実行する手段と、上記書き込み要求で指定されたデータ書き込みが開始される時点から当該書き込みが完了するまで、書き込みの対象となる書き込み領域を特定する書き込み領域情報を記憶する不揮発性の書き込み領域情報記憶手段と、データ書き込みが異常終了した後の起動時に、上記書き込み領域情報記憶手段に記憶されている書き込み領域情報によって示される書き込み領域を書き込み途中領域として特定する手段と、この特定手段により特定された書き込み途中領域に対応する全データセットを対象に、データ及び冗長データの整合性を修復する手段とを備えたことを特徴とする。
【００１２】
また本発明は、上記ディスク制御装置に、次の各手段、即ち上記書き込み要求で指定されたデータ書き込みが開始される際に、書き込みの対象となる書き込み領域を特定する書き込み領域情報を上記書き込み領域情報記憶手段に記憶する手段と、上記書き込み領域への書き込みが完了した際に当該書き込み領域を特定する、上記書き込み領域情報記憶手段内の書き込み領域情報を無効化する手段とを更に備えたことを特徴とする。
【００１３】
また本発明は、上記ディスク制御装置を２重化し、当該２重化されたディスク制御装置に、当該２重化されたディスク制御装置間で、上記書き込み領域情報記憶手段の内容を一致化させるための通信を行う通信手段をそれぞれ備えたことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、スペアディスクドライブへのデータ復元が完了していない欠陥のあるデータセットへの書き込みが発生した場合には、そのデータセットにおける故障ディスクドライブのデータをスペアディスクドライブに復元してから、そのデータセットへのデータ書き込みを行うことにより、欠陥のあるデータセットへの書き込みを無くすことができる。これにより、データセットへのデータの書き込み途中で、停電が発生したり、或いはディスク制御装置の故障が発生した結果、データ書き込みが異常終了しても、当該データセットにおけるデータと冗長データの整合性を修復できる。ここで、データ書き込みが異常終了した領域の情報、つまり書き込み途中の領域の情報は、不揮発性の書き込み領域情報記憶手段に記憶されていることから、簡単に特定できる。
【００１５】
また本発明によれば、ディスク制御装置が２重化されたディスクアレイ装置において、当該２重化されたディスク制御装置間の通信で、当該２重化されたディスク制御装置がそれぞれ有する書き込み領域情報記憶手段の内容を一致化することができるため、書き込み処理中のディスク制御装置が故障により停止しても、他方のディスク制御装置が当該他方の制御装置が有する書き込み領域情報記憶手段の内容から書き込み途中の領域を特定して、対応するデータセットにおけるデータと冗長データの整合性を修復することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態につき図面を参照して説明する。図１は本発明の一実施形態に係るディスクアレイ装置１０の構成を示すブロック図である。図１において、ディスクアレイ装置１０は、２重化されたディスク制御装置１１-0及び１１-1と、当該ディスク制御装置１１-0及び１１-1によって制御されるディスクアレイ１２とを備えている。ディスク制御装置１１-0及び１１-1は、ディスクアレイ装置１０を外部記憶装置として利用するホスト（ホストコンピュータ）２０と、ホストインタフェースバス１３を介して接続されている。ディスク制御装置１１-0及び１１-1はまた、ディスクアレイ１２と、ディスクインタフェースバス１４を介して接続されている。ホストインタフェースバス１３は、例えばＳＣＳＩ（Small Computer System Interface）、或いはファイバチャネル（Fibre Channnel）である。ディスクインタフェースバス１４も、ＳＣＳＩ、或いはファイバチャネルである。ディスクアレイ１２は、少なくとも３台のＨＤＤ、例えば４台のＨＤＤ１２０-0（＃０）〜１２０-3（＃３）から構成される。ＨＤＤ１２０-0〜１２０-3は、ディスクインタフェースバス１４により相互接続されている。また、ディスクインタフェースバス１４には、ディスクアレイ１２を構成するＨＤＤ１２０-0〜１２０-3のうちのいずれかのＨＤＤが故障した場合に、その故障ＨＤＤに代えて用いられるホットスペアＨＤＤ１２０（＃ＳＰ）も接続されている。
【００１７】
ここで、本実施形態において適用されるＲＡＩＤに関係する用語について、図２を参照して説明する。本実施形態では、ＨＤＤ１２０-0〜１２０-3全体が、ホスト２０により、１つのディスクアレイ１２として使用される。アレイ（ディスクアレイ）とは、複数のＨＤＤ（ここではＨＤＤ１２０-0〜１２０-3）から構成される、ＲＡＩＤの機能により関連付けられた単位である。本実施形態では、説明を簡単にするため、複数の物理的なＨＤＤ（ここではＨＤＤ１２０-0〜１２０-3）が提供するディスク領域全体で、１つのディスクアレイ１２、つまり論理的に単一のディスクドライブ（論理ディスクドライブ、或いは論理ディスク）が構成されているものとする。しかし一般的には、ＨＤＤ１２０-0〜１２０-3の各記憶領域にまたがって形成されるパーティション毎に、ディスクアレイ（論理ディスク）を定義することが可能である。つまり、ＨＤＤ１２０-0〜１２０-3から同一の物理オフセットで論理的に切り出されるＨＤＤ１２０-0〜１２０-3内の各記憶領域をそれぞれ論理的なＨＤＤと見なして、ディスクアレイ（論理ディスク）を定義することが可能である。
【００１８】
メンバーＨＤＤとは、ＲＡＩＤの機能によりディスクアレイ１２を構成する個々のＨＤＤ、即ちＨＤＤ１２０-0〜１２０-3を示す。セクタブロック（データブロック）１２１とは、ＨＤＤ１２０-0〜１２０-3の最小アクセス単位であり、通常５１２バイトである。データセット１２２とは、ＲＡＩＤの機能によりデータ及びパリティデータが関連付けられた、各ＨＤＤ１２０-0〜１２０-3内の同一物理オフセット（物理位置）に存在するセクタデータのグループを示す。ストライプ１２３とは、ホスト２０から指定されたデータを、ディスクアレイ１２を構成する各ＨＤＤ１２０-0〜１２０-3へ分散する単位を示す。１つのストライプ１２３は、ｎ個（ｎは１以上の整数）のデータセット１２２から構成される。このｎ個のデータセット１２２のうち、１つのＨＤＤに含まれるｎ個のセクタデータ１２１は、当該ＨＤＤ内で物理的に連続している。１つのストライプ１２３を構成するｎ個のデータセット１２２は、それぞれデータセット番号０〜ｎ−１で識別される。
【００１９】
再び図１を参照する。ディスク制御装置１１-0及び１１-1の内部の基本構成は同一である。そこで図１には、ディスク制御装置１１-0及び１１-1のうちの例えばディスク制御装置１１-0の構成だけが示されており、ディスク制御装置１１-１の構成については省略されている。ディスク制御装置１１-0は、ホストインタフェース（ホストＩ／Ｆ）２０１と、ディスクインタフェース（ディスクＩ／Ｆ）２０２と、キャッシュメモリ２０３と、キャッシュコントローラ２０４と、ＦＲＯＭ（フラッシュＲＯＭ）２０５と、ＮＶＲＡＭ（Nonvolatile ＲＡＭ）２０６と、ローカルメモリ２０７と、ＣＰＵ２０８と、チップセット２０９と、通信回路２１０と、内部バス２１１とを備えている。
【００２０】
ホストインタフェース２０１は、ホスト２０とディスクアレイ装置１０内のディスク制御装置１１-0との接続を制御する。即ちホストインタフェース２０１は、ホスト２０とディスク制御装置１１との間のデータ転送（データ転送プロトコル）を制御する。ホストインタフェース２０１は、ディスクアレイ１２にデータを書き込むことを要求する書き込み要求をホスト２０から受信した場合、当該要求で指定されたデータをキャッシュコントローラ２０４によりキャッシュメモリ２０３に書き込ませるために、当該データを内部バス２１１を介してキャッシュコントローラ２０４に転送するデータ転送回路としての機能を有する。またホストインタフェース２０１は、ディスクアレイ１２からデータを読み出すことを要求する読み出し要求をホスト２０から受信した場合、当該要求で指定されたデータをキャッシュメモリ２０４から読み出してホスト２０に送信するための制御を行う。
【００２１】
ディスクインタフェース２０２は、ディスクアレイ１２内の各ＨＤＤ１２０-0〜１２０-3との間のデータ転送を制御する。即ちディスクインタフェース２０２は、ＨＤＤ１２０〜１２０-3へのデータの書き込み、及びＨＤＤ１２０-0〜１２０-3からのデータの読み出しを制御する。ディスクインタフェース２０２は、ディスクアレイ１２内のＨＤＤ１２０-i（ｉ＝０〜３）から読み出されたデータを、キャッシュコントローラ２０４によりキャッシュメモリ２０３に書き込ませるために、内部バス２１１を介してキャッシュコントローラ２０３に転送するデータ転送回路としての機能を有する。
【００２２】
キャッシュメモリ２０３は、ホスト２０からホストインタフェースバス１３を介して与えられる、ディスクアレイ１１（論理ディスク）への書き込み／読み出し（入出力）要求で指定されるデータの書き込み／読み出しの高速化のためのバッファとして用いられる。例えば、書き込み要求に対しては、当該要求で指定されたデータがキャッシュメモリ１２５に書き込まれ、その段階で要求元に書き込み処理完了が通知される。その後、キャッシュメモリ２０３に書き込まれたデータがディスクアレイ１１に書き込まれる（ライトバックされる）。一方、読み出し要求に対しては、当該要求で指定されたデータがキャッシュメモリ２０３に格納されているか否かが判定され、格納されているならば、そのデータが要求元に転送される。これに対し、指定されたデータがキャッシュメモリ２０３に格納されていないならば、当該データがディスクアレイ１１からキャッシュメモリ２０３に読み出される。しかる後に、キャッシュメモリ２０３に読み出されたデータが要求元に転送される。キャッシュメモリコントローラ２０４は、キャッシュメモリ２０３を制御する。キャッシュメモリコントローラ２０４は、キャッシュメモリ２０３上の任意のデータに対し排他的論理和（ＸＯＲ）演算によりパリティデータを生成する機能を有する。ＦＲＯＭ２０５は、ＣＰＵ２０８により実行される制御用プログラムを格納するための書き換えが可能な不揮発性メモリである。なお、ＦＲＯＭ２０５に代えて読み出し専用の不揮発性メモリ、例えばＲＯＭを用いることも可能である。
【００２３】
ＮＶＲＡＭ２０６は、書き換え可能な不揮発性メモリである。ここでは、ＮＶＲＡＭ２０６は、バッテリバックアップされたＲＡＭである。しかし、ＮＶＲＡＭ２０６としてバックアップ電源を必要としない書き換え可能な不揮発性メモリ、例えばＦＲＯＭ（フラッシュＲＯＭ）を用いることも可能である。ＮＶＲＡＭ２０６は、ディスク書き込み管理テーブルＴＢＬ１と故障ＨＤＤ復元管理テーブルＴＢＬ２とを保存するのに用いられる。ディスク書き込み管理テーブルＴＢＬ１は、ディスクアレイ１２にデータを書き込むことを要求するホスト２０からの書き込み要求（書き込みコマンド）に関する情報（例えば、書き込み要求で指定されたデータが書き込まれるディスクアレイ１２の領域を特定するための情報）を、当該要求に従うディスク書き込み処理が完了するまで記憶するのに用いられる。このディスク書き込み管理テーブルＴＢＬ１を用いたディスク書き込みの管理のために、ホスト２０からディスク制御装置１１-0に与えられる書き込み要求（書き込みコマンド）には、当該要求（コマンド）を識別するためのＩＤ（コマンドＩＤ）が割り当てられる。本実施形態において、書き込み要求（書き込みコマンド）に割り当てられるコマンドＩＤは番号（以下、コマンド番号と称する）である。一方、故障ＨＤＤ復元管理テーブルＴＢＬ２は、ディスクアレイ１２内のいずれかのＨＤＤが故障した結果実行される、当該故障ＨＤＤのデータをホットスペアＨＤＤ１２０に復元する復元処理での復元状況を管理するのに用いられる。
【００２４】
ローカルメモリ２０７は、ＦＲＯＭ２０５からコピーされた制御プログラムを記憶するのに用いられる。またローカルメモリ２０７の一部の領域は、ＣＰＵ２０８が動作する上で使用するワーク領域として用いられる。ＣＰＵ２０８は、ローカルメモリ２０７に格納された制御プログラムのプログラムコードに従い、ディスク制御装置１１-0内の各部を制御する。特にＣＰＵ２０８は、システムの再起動時に、書き込み処理が異常終了したために書き込み途中の状態にある領域（以下、書き込み途中領域と称する）が属する全てのデータセットにおけるデータと冗長データとの間の一貫性を回復するための処理を実行する。
【００２５】
チップセット２０９は、ＣＰＵ２０８及び当該ＣＰＵ２０８の周辺回路を内部バス２１１に結合するブリッジ回路を含む。このブリッジ回路は、内部バス２１１が後述するようにＰＣＩ（Peripheral Component Interconnect）バスである本実施形態では、ＰＣＩブリッジである。通信回路２１０は、ディスク制御装置１１-1内の通信回路２２０と信号線１５を介して通信することにより、ディスク制御装置１１-0内のＮＶＲＡＭ２０６の内容（ディスク書き込み管理テーブルＴＢＬ１及び故障ＨＤＤ復元管理テーブルＴＢＬ２）とディスク制御装置１１-1内のＮＶＲＡＭ（図示せず）の内容（ディスク書き込み管理テーブル及び故障ＨＤＤ復元管理テーブル）との一致化を図る。内部バス２１１は汎用バスであり、例えばＰＣＩバスである。ホストインタフェース２０１、ディスクインタフェース２０２、キャッシュコントローラ２０４及びチップセット２０９は、内部バス２１１により相互接続されている。また、ＦＲＯＭ２０５、ＮＶＲＡＭ２０６、ローカルメモリ２０７、ＣＰＵ２０８及び通信回路２１０は、チップセット２０９により内部バス２１１に接続されている。
【００２６】
図３は、ＮＶＲＡＭ２０６に保存されるディスク書き込み管理テーブルＴＢＬ１のデータ構造例を示す。図３に示すように、ディスク書き込み管理テーブルＴＢＬ１は、書き込み要求に関する情報を記憶するための複数のエントリを有している。この複数のエントリは、書き込み要求（書き込みコマンド）を識別するためのコマンド番号に対応付けて用意される。つまりディスク書き込み管理テーブルＴＢＬ１の各エントリは、それぞれ固有のコマンド番号に対応付けられている。各エントリは、フラグフィールド３１と、論理ディスク番号フィールド３２と、論理アドレス（論理ブロックアドレス）フィールド３３と、転送サイズフィールド３４とを有する。フィールド３１は、フラグ（フラグ情報）を記憶するのに用いられる。このフラグは、対応するエントリの内容、つまり対応するコマンド番号が割り当てられた書き込み要求に関する情報（論理ディスク番号、論理アドレス及び転送サイズ）が有効であるか否か（無効であるか）を示す。ここでは、フラグは１バイトで構成され、０１ｈ（末尾のｈは１６進表現であることを示す）、つまり“１”で、対応するエントリの内容が有効であることを示し、００ｈ、つまり“０”で、対応するエントリの内容が無効（対応するエントリが空き）であることを示す。フィールド３２は、論理ディスク番号を記憶するのに用いられる。論理ディスク番号とは、ホスト２０から認識可能なディスクの単位であり、例えばアレイ番号である。ここでは、フィールド３２には、対応するコマンド番号が割り当てられた書き込み要求で指定される書き込み先の論理ディスク（ディスクアレイ１２）を示す論理ディスク番号（アレイ番号）が記憶される。フィールド３３及び３４は、それぞれ、書き込み要求で指定される書き込みを開始すべき論理アドレス及び書き込みデータのサイズ（転送サイズ）の情報を記憶するのに用いられる。論理アドレスとは、論理ディスク（ディスクアレイ１２）内での相対的なセクタアドレスを示す。転送サイズとは、例えばセクタ（データセクタ）数で示される書き込みデータのデータ長を示す。つまりフィールド３３及び３４は、書き込み要求で指定される論理ディスク（ディスクアレイ１２）上の領域を特定するための情報を記憶するのに用いられる。
【００２７】
図４は、ＮＶＲＡＭ２０６に保存される故障ＨＤＤ復元管理テーブルＴＢＬ２のデータ構造例を示す。図４に示すように、故障ＨＤＤ復元管理テーブルＴＢＬ２は、ストライプ番号に対応付けられる複数のエントリを有している。このテーブルＴＢＬ２のエントリ数は、ディスクアレイ１２上のストライプ数に一致する。故障ＨＤＤ復元管理テーブルＴＢＬ２の各エントリには、対応するストライプ内のｎ個のデータセット０〜ｎ−１のうち、故障ＨＤＤに含まれているデータ（セクタデータ）が全て復元済みであるか否かを示すフラグ（フラグ情報）が設定される。
【００２８】
次に、図１のディスクアレイ装置の動作を説明する。まず、ディスクアレイ１２内のＨＤＤ１２０-0（＃０）〜１２０-3（＃３）のうちの例えばＨＤＤ１２０-1（＃１）が故障したものとする。この場合、故障ＨＤＤ１２０-1のデータをホットスペアＨＤＤ１２０（＃ＳＰ）に復元するための故障ＨＤＤ復元処理が、例えばディスク制御装置１１-0によって、図５のフローチャートの示す手順で次のように実行される。
【００２９】
まず、ディスク制御装置１１-0内のＣＰＵ２０８は、最初に処理すべきストライプ１２３のストライプ番号ｉを初期値０に設定すると共に（ステップＳ１）、ストライプ番号ｉで指定されるストライプ１２３内の最初に処理すべきデータセット１２２のデータセット番号ｊを初期値０に設定する（ステップＳ２）。以下の説明では、ストライプ番号ｉで指定されるストライプ１２３及びデータセット番号ｊで指定されるデータセット１２２を、それぞれストライプｉ及びデータセットｊと呼ぶ。
【００３０】
次にＣＰＵ２０８は、ＮＶＲＡＭ２０６に保存されている故障ＨＤＤ復元管理テーブルＴＢＬ２のストライプ番号ｉに対応するエントリｉに設定されているフラグを参照する（ステップＳ３）。そしてＣＰＵ２０８は、参照したフラグの状態から、ストライプｉに属するｎ個のデータセット０〜ｎ−１に含まれている、故障ＨＤＤ１２０-1内の各セクタデータ１２１が全て復元済みであるか否かを判定する（ステップＳ４）。
【００３１】
もし、復元済みでないならば、ＣＰＵ２０８は、ストライプｉに属する各データセット０〜ｎ−１を対象に、当該各データセット０〜ｎ−１に含まれている故障ＨＤＤ１２０-1のデータを復元するための制御を次のように実行する。まずＣＰＵ２０８は、ストライプｉに属するデータセットｊの中から、故障ＨＤＤ１２０-1を除く正常なＨＤＤ、即ちＨＤＤ１２０-0，１２０-2及び１２０-3に格納されているセクタデータを読み出すための制御を行う（ステップＳ５）。キャッシュコントローラ２０４は、ＨＤＤ１２０-0，１２０-2及び１２０-3から読み出されたセクタデータを排他的論理和（ＸＯＲ）演算することにより、ストライプｉに属するデータセットｊ内の、故障ＨＤＤ１２０-1のデータ（セクタデータ）を復元する（ステップＳ６）。ＣＰＵ２０８は、復元された故障ＨＤＤ１２０-1のデータ（セクタデータ）を、ストライプｉに属するデータセットｊに対応するスペアＨＤＤ１２０内の領域（セクタ位置）に書き込むための制御を行う（ステップＳ７）。これにより、ストライプｉに属するデータセットｊ内の、故障ＨＤＤ１２０-1のデータ（セクタデータ）が、スペアＨＤＤ１２０の対応する領域に復元される。
【００３２】
ＣＰＵ２０８は、以上の制御（ステップＳ５〜Ｓ７）を、ストライプｉに属する全てのデータセットについて処理し終えるまで、データセット番号ｊをインクリメントしながら繰り返す（ステップＳ８，Ｓ９）。そして、ストライプｉに属する全てのデータセットについて処理し終えると、ＣＰＵ２０８は、ステップＳ３で参照した故障ＨＤＤ復元管理テーブルＴＢＬ２のエントリｉ中のフラグを、復元済みを示す状態に変更する（ステップＳ１０）。次にＣＰＵ２０８は、ディスク制御装置１１-１の故障ＨＤＤ復元管理テーブル（図示せず）のエントリｉ中のフラグを、復元済みを示す状態に変更することを、通信回路２１０を用いて当該ディスク制御装置１１-１に要求する（ステップＳ１１）。これにより、ディスク制御装置１１-0内のＮＶＲＡＭ２０６に保存されている故障ＨＤＤ復元管理テーブルＴＢＬ２と、ディスク制御装置１１-１内のＮＶＲＡＭに保存されている故障ＨＤＤ復元管理テーブルとの一致化が図られる。
【００３３】
次にＣＰＵ２０８は、全ストライプについて処理し終えたか否かを判定する（ステップＳ１２）。もし、未処理のストライプが残されているならば、ＣＰＵ２０８はストライプ番号ｉを１だけインクリメントし（ステップＳ１３）、そのインクリメント後のストライプ番号ｉで指定されるストライプｉについて、上述の制御を行う。やがて、ディスクアレイ１２における全てのストライプについて処理し終えると、ＣＰＵ２０８は、スペアＨＤＤ１２０を、故障ＨＤＤ１２０-1に代えて用いられる、ディスクアレイ１２の新たなメンバーＨＤＤとして設定する（ステップＳ１４）。
【００３４】
次に、ホスト２０から書き込み要求が与えられた場合の動作について、図６及び図７を参照して説明する。なお、図６は、ホスト２０からの書き込み要求に従うディスク書き込み処理の手順を示すフローチャート、図７はデータセット復元を説明するための図である。今、ホスト２０からディスクアレイ装置１０のディスク制御装置１１-0に対して、ディスクアレイ１２（論理ディスク）にデータを書き込むための書き込み要求が与えられたものとする。この場合、ホスト２０からの書き込み要求により指定された書き込みデータがホストインタフェース２０１で受信されてキャッシュコントローラ２０４に転送され、当該キャッシュコントローラ２０４によりキャッシュメモリ１２５に記憶される。この段階で、ホスト２０からの書き込み要求に対する書き込み完了が、ホストインタフェース２０１からホスト２０に通知される。その後、ディスク制御装置１２内のＣＰＵ２０８は、キャッシュメモリ１２５に記憶された書き込みデータをディスクアレイ１１に書き込む（ライトバックする）ためのディスク書き込み処理を図６のフローチャートに従って開始する。
【００３５】
まずＣＰＵ２０８は、ホスト２０からの書き込み要求で指定された書き込み先（書き込みターゲット）のアレイ（ここではディスクアレイ１２）の状態をチェックし（ステップＳ２１）、当該アレイ内に故障しているＨＤＤが存在するか否かを判定する（ステップＳ２２）。ここでは、図７に示すように、ディスクアレイ１２内のＨＤＤ１２０-1が故障しているものとする。また、ＨＤＤ１２０-1のデータを図５のフローチャートの示す手順でスペアＨＤＤ１２０に復元している最中であるものとする。
【００３６】
この例のように、故障ＨＤＤ（ここではＨＤＤ１２０-1）が存在する場合、ＣＰＵ２０８は、ディスクアレイ１２に対してスペアＨＤＤが割り付けられているか否か、つまりディスクアレイ１２内のメンバーＨＤＤが故障した場合に、当該故障したＨＤＤの内容が復元されるスペアＨＤＤが割り付けられているか否かを判定する（ステップＳ２３）。この例では、ディスクアレイ１２に対してスペアＨＤＤ１２０が割り付けられている。この場合、ＣＰＵ２０８は、ホスト２０からの書き込み要求に含まれている書き込み開始論理アドレス及び転送サイズで指定される書き込み対象領域に対応するストライプ（以下、書き込み対象ストライプｐと呼ぶ）について、故障ＨＤＤ１２０-1のデータをスペアＨＤＤ１２０に復元済みであるか否かを判定する（ステップＳ２４）。この判定は、故障ＨＤＤ復元管理テーブルＴＢＬ２内の、ストライプｐに対応するエントリ（つまりエントリｐ）を参照することで行われる。
【００３７】
もし、ストライプｐに対応する故障ＨＤＤ１２０-1内のデータの復元が未完了であるならば、ホスト２０からの書き込み要求で指定されたデータの書き込みを実行する前に、以下に述べるデータ復元処理を実行する。まずＣＰＵ２０８は、書き込み対象ストライプｐに属するデータセットのうちの、上記書き込み対象領域に対応するデータセット（以下、書き込み対象データセットｑと呼ぶ）の中から、図７に示すように、故障ＨＤＤ１２０-1を除く正常なＨＤＤ、即ちＨＤＤ１２０-0，１２０-2及び１２０-3に格納されているセクタデータＤ０，Ｄ２，Ｐを読み出すための制御を行う（ステップＳ２５）。キャッシュコントローラ２０４は、ＨＤＤ１２０-0，１２０-2及び１２０-3から読み出されたセクタデータＤ０，Ｄ２，Ｐを排他的論理和（ＸＯＲ）演算することにより、書き込み対象ストライプｐに属する書き込み対象データセットｑ内の、故障ＨＤＤ１２０-1のデータ（セクタデータ）Ｄ１を復元する（ステップＳ２６）。
【００３８】
ＣＰＵ２０８は、復元された故障ＨＤＤ１２０-1のデータ（セクタデータ）Ｄ１を、ストライプｐに属するデータセットｑに対応するスペアＨＤＤ１２０内の領域（セクタ位置）に書き込むための制御を行う（ステップＳ２７）。これにより、ストライプｐに属するデータセットｑ内の、故障ＨＤＤ１２０-1のデータ（セクタデータ）が、スペアＨＤＤ１２０の対応する領域に復元される。この段階で、故障ＨＤＤ１２０-1に代えてスペアＨＤＤ１２０をディスクアレイ１２の要素として利用するならば、データセットｑは、当該データセットｑ内のデータＤ０，Ｄ１及びＤ２とパリティデータＰとの間で整合性のある、つまり欠陥のない完全なデータセットとなる。
【００３９】
ＣＰＵ２０８はステップＳ２７を実行すると、ステップＳ２５でＨＤＤ１２０-0，１２０-2及び１２０-3から読み出されたセクタデータのうち、ホスト２０からの書き込み要求で指定される更新の対象となるセクタデータが格納されているＨＤＤを除くＨＤＤから読み出されたセクタデータと、ステップＳ２７でスペアＨＤＤ１２０内に復元されたセクタデータと、書き込み要求で指定された書き込みデータ（新データ）とから、新パリティデータを生成する（ステップＳ２８）。
【００４０】
ＣＰＵ２０８は、以上のステップＳ２５〜Ｓ２８を、上記書き込み対象領域に対応する全ての書き込み対象ストライプｐを対象に、その書き込み対象ストライプｐに属する全ての書き込み対象データセットｑについて実行する（ステップＳ２９，Ｓ３０）。
【００４１】
一方、ディスクアレイ１２を構成するＨＤＤ１２０-0〜１２０-3がいずれも故障していない場合には（ステップＳ２２）、ＣＰＵ２０８は、周知の新パリティデータ生成処理（ステップＳ３１，Ｓ３２）を実行する。同様に、ＨＤＤ１２０-0〜１２０-3のいずれか１つが故障しているにも拘わらずに、ディスクアレイ１２に対してスペアＨＤＤ１２０が割り付けられていなくても（ステップＳ２３）、ホスト２０からの書き込み要求で指定された書き込み対象領域が故障ＨＤＤ１２０-1以外のＨＤＤに存在する場合には（ステップＳ３３）、ＣＰＵ２０８は上記新パリティデータ生成処理（ステップＳ３１，Ｓ３２）を実行する。同様に、ＨＤＤ１２０-0〜１２０-3のいずれか１つが故障していても、ディスクアレイ１２に対してスペアＨＤＤ１２０が割り付けられ（ステップＳ２３）、且つホスト２０からの書き込み要求で指定された書き込み対象領域に対応する書き込み対象ストライプが復元済みの場合には（ステップＳ２４）、ＣＰＵ２０８は上記新パリティデータ生成処理（ステップＳ３１，Ｓ３２）を実行する。この新パリティデータ生成処理では、まず、ホスト２０からの書き込み要求で指定された書き込み対象領域に対応する全ての書き込み対象データセットｑについて、当該書き込み対象領域に格納されているデータ（旧データ）と、当該書き込み対象領域に対応するＨＤＤ（例えばＨＤＤ１２０-3）内の領域に格納されているパリティデータ（旧パリティデータ）とが読み出される（ステップＳ３１）。そして、ステップＳ３１で読み出された旧データ及び旧パリティデータと、ホスト２０からの書き込み要求で指定された新データとの排他的論理和演算により、新パリティデータが生成される（ステップＳ３２）。
【００４２】
ＣＰＵ２０８は、書き込み対象領域に対応する全ての書き込み対象データセットｑについて新パリティデータが生成されると、ＮＶＲＡＭ２０６に保存されているディスク書き込み管理テーブルＴＢＬ１を参照して、フラグフィールド３１に設定されているフラグにより無効（空き）であることが示されているエントリ（以下、エントリｒと呼ぶ）を探す（ステップＳ３５）。ＣＰＵ２０８は、探したディスク書き込み管理テーブルＴＢＬ１内のエントリｒ中のフィールド３２、フィールド３３及びフィールド３４に、それぞれホスト２０からの書き込み要求で指定された論理ディスク番号（アレイ番号）、論理アドレス及び転送サイズを示す情報を設定すると共に、当該エントリｒ中のフィールド３１に設定されているフラグを有効を示す状態（０１ｈ）に更新する（ステップＳ３６）。
【００４３】
次にＣＰＵ２０８は、ディスク書き込み管理テーブルＴＢＬ１のエントリｒに設定した情報と当該エントリｒを指定する情報とを、通信回路２１０により信号線１５を介して、ディスク制御装置１１-1内の通信回路２２０に送信することにより、テーブルＴＢＬ１のエントリｒに設定された情報と同一の情報を、当該ディスク制御装置１１-１内に設けられたＮＶＲＡＭに保存されているディスク書き込み管理テーブル（いずれも図示せず）内のエントリｒに設定させる（ステップＳ３７）。これにより、ディスク制御装置１１-0内のＮＶＲＡＭ２０６に保存されているディスク書き込み管理テーブルＴＢＬ１と、ディスク制御装置１１-１内のＮＶＲＡＭに保存されているディスク書き込み管理テーブルとの一致化が図られる。
【００４４】
次にＣＰＵ２０８は、上記書き込み要求で指定された書き込み対象領域に対応する全ての書き込み対象データセットｑについて、当該書き込み要求で指定された新データと、上記生成された新パリティデータとを、当該データセットｑのうちの対応するＨＤＤ内の領域に書き込むための制御を行う（ステップＳ３８）。ＣＰＵ２０８は、この新データ及び新パリティデータの書き込みが完了すると、ＮＶＲＡＭ２０６に保存されているディスク書き込み管理テーブルＴＢＬ１内のエントリｒのフィールド３１に設定されているフラグを無効状態（００ｈ）に変更する（ステップＳ３９）。またＣＰＵ２０８は、ディスク制御装置１１-１のディスク書き込み管理テーブル内のエントリｒのフィールド３１に設定されているフラグを無効状態にすることを、通信回路２１０を用いて当該ディスク制御装置１１-１に要求する（ステップＳ４０）。
【００４５】
これにより、新データ及び新パリティデータの書き込みの途中で停電が発生しても、ＮＶＲＡＭ２０６内のディスク書き込み管理テーブルＴＢＬ１の中から、有効を示すフラグが設定されているエントリを検索することで、データとパリティデータとの相関関係が不整合となる可能性のある書き込み途中領域を特定することができる。また、ディスク制御装置１１-0内の通信回路２１０とディスク制御装置１１-１内の通信回路２２０との通信により、ディスク制御装置１１-0に設けられたディスク書き込み管理テーブルＴＢＬ１とディスク制御装置１１-１に設けられたディスク書き込み管理テーブルとの一致化が図られるため、例えばディスク制御装置１１-0が故障しても、当該ディスク制御装置１１-0に代えてディスク制御装置１１-１が当該制御装置１１-１内のディスク書き込み管理テーブルを用いて、データとパリティデータとの相関関係が不整合となる可能性のある書き込み途中領域を特定することができる。
【００４６】
また、本実施形態においては、故障したＨＤＤ１２０-1のデータをスペアＨＤＤ１２０に復元する処理（故障ＨＤＤ復元処理）が完了していない状態で、欠陥のあるデータセットｑ（つまり復元未完了のデータセットｑ）への書き込みが発生した場合には、まずスペアＨＤＤ１２０を利用して当該データセットｑを復元する処理が行われる。即ち、データセットｑの中から、正常なＨＤＤ１２０-0，１２０-2及び１２０-3に格納されているデータＤ０，Ｄ２及びパリティデータＰが読み出され、それらの排他的論理和演算を行うことで、故障したＨＤＤ１２０-1のデータＤ１が復元される。この復元されたデータＤ１を、データセットｑに対応するスペアＨＤＤ１２０内の領域に書き込むことにより、当該データセットｑは、故障ＨＤＤ１２０-1に代えてスペアＨＤＤ１２０を用いるならば、欠陥のない完全なデータセットとなる。即ち本実施形態においては、まだ復元が完了していないデータセットｑへの書き込み時には、データを書き込む前に、そのデータセットｑについてスペアＨＤＤ１２０へＨＤＤ１２０-1のデータを復元し、一時的に完全なデータセットｑとした上でデータを書き込む。このように本実施形態においては、復元が済んでいない欠陥のあるデータセットｑへの書き込みが発生した場合に、スペアＨＤＤ１２０を利用して当該データセットｑを欠陥のない完全なデータセットｑとした後に、当該データセットｑへの新データ及び新パリティデータの書き込みを行うことにより、欠陥のあるデータセットｑへの書き込みを無くすことができる。このようにすると、データセットｑへのデータの書き込み中に停電やディスク制御装置１１-0の故障が発生しても、後述するように、故障していない正常なＨＤＤとスペアＨＤＤ１２０とから、当該データセットｑにおけるデータとパリティデータとの整合性を修復することができる。
【００４７】
なお、本実施形態では、書き込み対象ストライプｐが復元未完了の場合に、当該ストライプｐに属するデータセットのうち、書き込み対象領域に対応するデータセットｑだけを復元処理（ステップＳ２５〜Ｓ２７）の対象としている。しかし、書き込み対象ストライプｐに属する全データセットを復元処理の対象としても構わない。この場合、故障ＨＤＤ復元管理テーブルＴＢＬ２のエントリｐのフラグを復元済みを示す状態とするとよい。
【００４８】
次に、停電等の要因によりディスクアレイ装置１０の電源が遮断され、その後、ディスクアレイ装置１０の電源が復帰して装置が再起動された際、或いはディスク制御装置１１-1が故障してディスク制御装置１１-0が処理を引き継ぐ場合に行われる、データとパリティデータとの整合性を修復するための処理（データ整合性修復処理）について、図８のフローチャートを参照して説明する。
【００４９】
まず、ディスク制御装置１１-0内のＣＰＵ２０８は、ＮＶＲＡＭ２０６に保存されているディスク書き込み管理テーブルＴＢＬ１内の各エントリのフィールド３１に設定されているフラグの状態を順次参照することにより、有効なエントリ、つまりディスクアレイ１２へのデータ書き込みの途中で当該書き込みが異常終了した書き込み要求に関する情報（書き込み対象領域を特定する情報）が記憶されているエントリを検索する（ステップＳ４１）。もし、目的のエントリが検索できたなら、つまり書き込み途中領域が存在するならば、（ステップＳ４２）、ＣＰＵ２０８は、ディスクアレイ１２内に故障したＨＤＤが存在するか否かを判定する（ステップＳ４３）。この例のように、故障したＨＤＤ（ここではＨＤＤ１２０-1）が存在するならば、ＣＰＵ２０８は、ディスクアレイ１２にスペアＨＤＤ１２０が割り付けられているか否かを判定する（ステップＳ４４）。もし、ディスクアレイ１２にスペアＨＤＤ１２０が割り付けられているならば、上述した図６のフローチャートに従うディスク書き込み処理から明らかなように、書き込み途中のデータセットｑに対応する故障ＨＤＤ１２０-1のデータは必ずスペアＨＤＤ１２０に復元される。したがって、故障ＨＤＤ１２０-1のデータをスペアＨＤＤ１２０に復元するための図５のフローチャートに従う処理の進捗状況に無関係に、欠陥のない完全なデータセットｑが形成される。本実施形態では、この完全なデータセットｑが形成された状態で当該データセットｑへのデータの書き込みが行われる。したがって、このデータセットｑへのデータの書き込み途中で、停電等の要因で当該書き込みが異常終了しても、データセットｑにおけるデータとパリティデータとの相関関係の整合性を以下に述べる手順で修復できる。
【００５０】
まずＣＰＵ２０８は、ステップＳ４１で検索できたディスク書き込み管理テーブルＴＢＬ１内のエントリの情報により特定される書き込み途中領域に対応するデータセットを１つ選択し、そのデータセット（以下、データセットｑと称する）の中から、故障したＨＤＤ１２０-1とパリティデータが格納されているＨＤＤ１２０-3とを除くＨＤＤ、即ちＨＤＤ１２０-0、ＨＤＤ１２０-2及びスペアＨＤＤ１２０にそれぞれ格納されているデータＤ０，Ｄ２及びＤ１を読み出すための制御を行う（ステップＳ４５）。キャッシュコントローラ２０４は、読み出されたデータＤ０，Ｄ２及びＤ１の排他的論理和演算を行うことで、正しいパリティデータＰを生成する（ステップＳ４６）。
【００５１】
ＣＰＵ２０８は、キャッシュコントローラ２０４により算出されたパリティデータＰを、データセットｑに対応するＨＤＤ１２０-3の領域に上書きするための制御を行う（ステップＳ４７）。これにより、データセットｑにおけるデータＤ０，Ｄ１及びＤ２とパリティデータＰとの整合性をデータを消失することなく修復できる。
【００５２】
ＣＰＵ２０８は、以上のステップＳ４５〜Ｓ４７を、上記書き込み途中領域に対応する全てのデータセットｑについて実行する（ステップＳ４８）。これにより、書き込み途中領域に対応する全てのデータセットｑにおけるデータＤ０，Ｄ１及びＤ２とパリティデータＰとの整合性をデータを消失することなく修復できる。そこでＣＰＵ２０８は、ステップＳ４１で検索されたディスク書き込み管理テーブルＴＢＬ１内のエントリのフィールド３１に設定されているフラグを、無効を示す状態（００ｈ）に変更する（ステップＳ４９）。
【００５３】
ＣＰＵ２０８は、上述した一連の処理（ステップＳ４１〜Ｓ４９）を、ディスク書き込み管理テーブルＴＢＬ１から未処理の有効なエントリが検索されなくなるまで（ステップＳ４２）、つまり全ての書き込み途中領域について、当該書き込み途中領域に対応する全てのデータセットにおけるデータとパリティデータとの整合性を修復し終えるまで、繰り返す。
【００５４】
なお、本実施形態とは異なって、ディスクアレイ１２内に故障したＨＤＤが存在しない場合には（ステップＳ４３）、書き込み途中領域に対応する全てのデータセットに関し、ディスクアレイ１２を構成するＨＤＤ１２０-0〜１２０-3のうち、パリティデータが記憶されているＨＤＤを除く他のＨＤＤだけを用いて、データとパリティデータとの整合性を修復することができる。この場合、ＣＰＵ２０８は、ディスクアレイ１２にスペアＨＤＤ１２０が割り付けられているか否かを判定する処理（ステップＳ４４）を行わずに、上記ステップＳ４５に進む。
【００５５】
また、ディスクアレイ１２内に故障したＨＤＤ（ＨＤＤ１２０-1）が存在しているにも拘わらずに、ディスクアレイ１２にスペアＨＤＤ１２０が割り付けられていない場合には、欠陥のあるデータセットに対してデータ書き込みが行われることになる。この欠陥のあるデータセットに対する書き込みの途中で当該書き込みが異常終了した場合、当該データセットにおけるデータとパリティデータとの整合性を修復することは不可能である。そこで、故障したＨＤＤが存在しているにも拘わらずに、ディスクアレイ１２にスペアＨＤＤ１２０が割り付けられていない場合には（ステップＳ４３，Ｓ４４）、ＣＰＵ２０８は、ディスクアレイ１２をホスト２０からアクセスできない状態（いわゆる閉塞状態）にする（ステップＳ５０）。そしてＣＰＵ２０８は、ディスクアレイ１２の領域に対応するディスク書き込み管理テーブルＴＢＬ１の全エントリを対象に、フィールド３１に設定されているフラグを無効を示す状態（００ｈ）に変更する（ステップＳ５１）。
【００５６】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００５７】
【図１】本発明の一実施形態に係るディスクアレイ装置の構成を示すブロック図。
【図２】同実施形態において適用されるＲＡＩＤに関係する用語を説明するための図。
【図３】図１中のＮＶＲＡＭ２０６に保存されるディスク書き込み管理テーブルＴＢＬ１のデータ構造例を示す図。
【図４】図１中のＮＶＲＡＭ２０６に保存される故障ＨＤＤ復元管理テーブルＴＢＬ２のデータ構造例を示す図。
【図５】同実施形態におけるスペアＨＤＤ１２０を利用した故障ＨＤＤ復元処理の手順を示すフローチャート。
【図６】同実施形態におけるディスク書き込み処理の手順を示すフローチャート。
【図７】同実施形態におけるデータセット復元を説明するための図。
【図８】同実施形態におけるデータ整合性修復処理の手順を示すフローチャート。
【符号の説明】
【００５８】
１０…ディスクアレイ装置、１１-0，１１-1…ディスク制御装置、１２…ディスクアレイ、２０…ホスト、１２０-0〜１２０-3…ＨＤＤ（ディスクドライブ）、１２０…スペアＨＤＤ（スペアディスクドライブ）、２０３…キャッシュメモリ、２０４…キャッシュコントローラ、２０６…ＮＶＲＡＭ（不揮発性メモリ）、２０８…ＣＰＵ、２１０，２２０…通信回路、ＴＢＬ１…ディスク書き込み管理テーブル（書き込み領域情報記憶手段）、ＴＢＬ２…故障ＨＤＤ復元管理テーブル（復元管理情報記憶手段）。
【図１】
2005078430.tif 000003
【図２】
2005078430.tif 000004
【図３】
2005078430.tif 000005
【図４】
2005078430.tif 000006
【図５】
2005078430.tif 000007
【図６】
2005078430.tif 000008
【図７】
2005078430.tif 000009
【図８】
2005078430.tif 000010