(57)【要約】【課題】書き込み途中の状態にある領域に含まれるデータブロックのデータとそのチェックデータとの整合性を確保しながら、データと冗長データとの間の一貫性を回復する。【解決手段】ＣＰＵ１２３は、ディスクアレイ１１へのディスクライト処理が異常終了した後の起動時に、その異常終了した際に書き込み途中であった、ストライプグループに属するデータストライプ中の領域に、所定のデータが設定されたデータ部と当該データ部のデータに固有のチェックコードが設定されたチェックデータ部とを含むデータブロックを、当該領域のサイズに一致するブロック数だけ書き込む制御を行う。そしてＣＰＵ１２３は、少なくとも、データブロックが書き込まれたデータストライプのうちの、当該データブロックが書き込まれた領域のデータから、当該データストライプを含むストライプグループに属する冗長ストライプの対応する領域の冗長データを再構成する。【選択図】      図１
2005044213.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ディスクドライブにより構成される冗長化論理ディスクドライブであって、データを格納するための少なくとも１つのデータストライプと当該データストライプのデータに対応する冗長データを格納するための冗長ストライプとを含むストライプグループを単位に管理される冗長化論理ディスクドライブを制御するディスク制御装置において、
外部から与えられた書き込み要求に従って前記論理ディスクドライブに対する書き込み処理が開始される時点から当該書き込み処理が完了するまで、書き込みを開始する論理アドレス及び書き込みデータのサイズの情報を含む、当該書き込み要求に関する情報を記憶する不揮発性の記憶手段と、
外部から与えられた書き込み要求に従う書き込み処理が異常終了した後の起動時に、前記記憶手段に記憶されている論理アドレス及びサイズの情報によって示される、前記論理ディスクドライブ上のストライプグループに属するデータストライプ中の領域に、予め定められた値のデータが設定されたデータ部と当該データ部のデータの正当性を検証するための当該データ部のデータに固有のチェックコードが設定されたチェックデータ部とを含むデータブロックを、当該領域のサイズに一致するブロック数だけ書き込む手段と、
少なくとも、前記書き込み手段によりデータブロックが書き込まれたデータストライプのうちの、当該データブロックが書き込まれた領域のデータから、当該データストライプを含むストライプグループに属する冗長ストライプの対応する領域の冗長データを再構成する手段と
を具備することを特徴とするディスク制御装置。
【請求項２】
前記ストライプグループは前記少なくとも１つのデータストライプを含む複数のデータストライプを含み、
前記再構成手段は、前記書き込み手段によりデータブロックが書き込まれたデータストライプを含むストライプグループに属する全てのデータストライプのうちの、少なくとも、当該データブロックが書き込まれたデータストライプの領域のデータと他のデータストライプの対応する領域のデータとから、当該ストライプグループに属する冗長ストライプの対応する領域の冗長データを再構成する
ことを特徴とする請求項１記載のディスク制御装置。
【請求項３】
前記再構成手段は、前記書き込み手段によりデータブロックが書き込まれた領域がストライプグループ中の複数のデータストライプにまたがっている場合、当該複数のデータストライプの各々に属する領域毎に、当該ストライプグループに属する冗長ストライプの対応する領域の冗長データを再構成することを特徴とする請求項２記載のディスク制御装置。
【請求項４】
前記再構成手段は、前記書き込み手段によりデータブロックが書き込まれたデータストライプを含むストライプグループに属する全てのデータストライプのデータから、当該ストライプグループに属する冗長ストライプの冗長データを再構成することを特徴とする請求項１記載のディスク制御装置。
【請求項５】
複数の物理ディスクドライブにより構成される冗長化論理ディスクドライブであって、データを格納するための少なくとも１つのデータストライプと当該データストライプのデータに対応する冗長データを格納するための冗長ストライプとを含むストライプグループを単位に管理される冗長化論理ディスクドライブにおける、データストライプのデータと冗長ストライプの冗長データとの間の一貫性を回復するための、冗長化論理ディスクドライブの一貫性回復方法において、
外部から与えられた書き込み要求に従って前記論理ディスクドライブに対する書き込み処理を開始する際に、書き込みを開始する論理アドレス及び書き込みデータのサイズの情報を含む、当該書き込み要求に関する情報を不揮発性の記憶手段に記憶するステップと、
外部から与えられた書き込み要求に従う書き込み処理が異常終了した後の起動時に、前記記憶手段に記憶されている論理アドレス及びサイズの情報によって示される、前記論理ディスクドライブ上のストライプグループに属するデータストライプ中の領域に、予め定められた値のデータが設定されたデータ部と当該データ部のデータの正当性を検証するための当該データ部のデータに固有のチェックコードが設定されたチェックデータ部とを含むデータブロックを、当該領域のサイズに一致するブロック数だけ書き込むステップと、
少なくとも、前記書き込みステップでデータブロックが書き込まれたデータストライプのうちの、当該データブロックが書き込まれた領域のデータから、当該データストライプを含むストライプグループに属する冗長ストライプの対応する領域の冗長データを再構成するステップと、
前記再構成ステップの実行の後、前記記憶手段に記憶されている対応する書き込み要求に関する情報を削除するステップと
を具備することを特徴とする冗長化論理ディスクドライブの一貫性回復方法。
【請求項６】
前記ストライプグループは前記少なくとも１つのデータストライプを含む複数のデータストライプを含み、
前記再構成ステップでは、前記書き込みステップでデータブロックが書き込まれたデータストライプを含むストライプグループに属する全てのデータストライプのうちの、少なくとも、当該データブロックが書き込まれたデータストライプの領域のデータと他のデータストライプの対応する領域のデータとから、当該ストライプグループに属する冗長ストライプの対応する領域の冗長データを再構成する
ことを特徴とする請求項５記載の冗長化論理ディスクドライブの一貫性回復方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の物理ディスクドライブから構成される冗長化論理ディスクドライブを制御するディスク制御装置に係り、特に当該論理ディスクドライブへのデータ書き込み処理が異常終了したなどの要因でデータと冗長データとの一貫性が失われた場合に、その一貫性を回復するのに好適なディスク制御装置及び冗長化論理ディスクドライブの一貫性回復方法に関する。
【背景技術】
【０００２】
従来から、ディスクの一定サイズのデータブロック、例えばセクタ毎に冗長な情報を持つことにより、当該ディスクの信頼性を向上させる技術が知られている。この技術によれば、セクタ（例えば５１２バイト）データ毎に、例えばＣＲＣ（Cyclic Redundancy Check）コードを含む一定バイト数のチェックデータを記録し、ハードウェア或いはファームウェアに起因するデータの不正を当該チェックデータを用いて検出することにより、誤ったデータが入出力されるのを未然に防ぐことが可能となる。
【０００３】
一方、冗長データを持つことによりデータの信頼性を向上させる技術として、複数の物理ディスクドライブを用いて冗長化論理ディスクドライブを実現するＲＡＩＤ（Redundant Array of Inexpensive Disks、またはRedundant Array of Independent Disks）が知られている。ＲＡＩＤには幾つかのレベル（ＲＡＩＤレベル）が定義されており、ＲＡＩＤ１（ミラーリング）やＲＡＩＤ５（パリティ付きストライピング）などが知られている。いずれも複数の物理ディスクドライブを用いて構成される冗長化論理ディスクドライブ上に、データ及び冗長データを配置することにより、いずれかの物理ディスクドライブに障害が発生してもデータの復元を可能にする技術である。このようなＲＡＩＤ技術、例えばＲＡＩＤ５を適用するディスク記憶システム（ディスクアレイシステム）においては、ディスクへのデータの書き込み途中で、停電などの要因によりＲＡＩＤのコントローラ（ディスク制御装置）の動作が停止して、ディスクへのデータ書き込み処理（ディスクライト処理）が異常終了した場合、次に述べるように、論理ディスクドライブ上でデータと冗長データとの間の一貫性が失われる虞がある。
【０００４】
まず、ＲＡＩＤ５を適用する論理ディスクドライブでは、ストライプグループと呼ばれる単位で冗長データが配置される。ストライプグループは、論理ディスクドライブを構成する複数の物理ディスクドライブの同一物理オフセット（物理位置）にそれぞれ存在するストライプから構成される。ディスク記憶システムにおけるディスクライト処理では、ストライプグループに属するストライプにデータを書き込む際に、当該ストライプグループに属する他のストライプに冗長データとしてのパリティデータを書き込む必要がある。ここで、データが書き込まれるストライプはデータストライプと呼ばれ、パリティデータが書き込まれるストライプはパリティストライプと呼ばれる。もし、ディスクライト処理が異常終了した場合には、例えばデータストライプへのデータの書き込みは完了しているのにパリティストライプへのパリティデータの書き込みが完了していない状態、或いはその逆の状態などが発生する。このような場合、同一ストライプグループ内で、データストライプ上のデータとパリティストライプ上のパリティデータとの間の一貫性が失われる。
【０００５】
そこで、ＲＡＩＤシステムの再起動時には、この失われた一貫性を回復するために、データの修復処理が必要となる。なお、データとパリティとの一貫性がとれていないストライプグループ内のデータ領域は、ＲＡＩＤＨＯＬＥ（或いはＷＲＩＴＥＨＯＬＥ、ＰＡＲＩＴＹＨＯＬＥ）と呼ばれる。
【０００６】
通常、ＲＡＩＤシステムに適用されるディスク制御装置装置では、ディスクライト処理を行う際に、ライトすべき論理ディスクドライブの領域を指定する情報が不揮発性の記憶装置に記録され、ディスクライト処理の完了時にその記録情報が削除される。これによりディスク制御装置は、ディスクライト処理が異常終了してもシステムの再起動時に不揮発性の記憶装置を参照することにより、異常終了時にデータの書き込みが行われていた論理ディスクドライブの領域（ＲＡＩＤＨＯＬＥ）を認識することができる。そこでディスク制御装置は、システムの再起動時に、この領域（ＲＡＩＤＨＯＬＥ）のデータとパリティとの一貫性を回復するための処理（一貫性回復処理）を実行する（例えば、特許文献１参照）。ここでは、ディスク制御装置は、異常終了時にデータの書き込みが行われていた論理ディスクドライブの領域（ＲＡＩＤＨＯＬＥ）を含むストライプグループに属する全てのデータストライプ（データブロック）のデータを読み出し、そのデータからパリティデータを復元する。ディスク制御装置は、このパリティデータを、上記ストライプグループに属するパリティストライプ（パリティブロック）に記録することで、当該ストライプグループにおけるデータとパリティとの一貫性を回復する。
【特許文献１】特許第３０７１０１７号（段落００４０乃至００４３、図３）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記従来技術においては、ディスクライト処理が異常終了しても、その際にデータの書き込みが行われていた論理ディスクドライブの領域を含むデータストライプ（データブロック）から、システムの再起動時にデータを読み出すことが可能なことを前提としている。
【０００８】
しかしながら、ディスクライト処理が異常終了するタイミングによっては、論理ディスクドライブの領域へのデータの書き込み途中で処理が停止してしまうため、システム再起動時に当該領域を含むデータストライプ（データブロック）からデータを読み出す際に、セクタ不良等のメディアエラーが発生して、データを読み出せない虞がある。この場合、冗長データを生成（復元）できないため、データと冗長データとの一貫性を回復できない。
【０００９】
ところで、冗長化論理ディスクドライブを構成する複数の物理ディスドライブの各々では、一定サイズのデータブロック（セクタ）単位にデータの正当性を検証するためのチェックデータが記録される。もし、ストライプグループにおけるデータと冗長データとの一貫性を回復する処理で冗長データが修復できたとしても、つまりデータと冗長データとの一貫性が回復できたとしても、当該ストライプグループに属するデータブロック（セクタ）に付加されるチェックデータ自体が正しい値に修復されずに、当該チェックデータが対応するデータブロック（セクタ）のデータに対して矛盾している場合には、その後のディスク入出力に伴うチェックデータを用いたデータの検証でエラーとなる。そのため、ストライプグループにおけるデータと冗長データとの一貫性を回復する処理では、当該ストライプグループに属するデータブロック（セクタ）のデータと当該データブロック（セクタ）に付加されるチェックデータとの一貫性についても考慮する必要がある。
【００１０】
本発明は上記事情を考慮してなされたものでその目的は、複数の物理ディスクドライブにより構成される冗長化論理ディスクドライブへのディスクライト処理が異常終了した結果、書き込み途中の状態にある領域を含むストライプグループを対象に、当該領域に含まれるデータブロックのデータとそのチェックデータとの整合性を確保しながら、データと冗長データとの間の一貫性を回復できるディスク制御装置及び冗長化論理ディスクドライブの一貫性回復方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の１つの観点によれば、複数の物理ディスクドライブにより構成される冗長化論理ディスクドライブであって、データを格納するための少なくとも１つのデータストライプと当該データストライプのデータに対応する冗長データを格納するための冗長ストライプとを含むストライプグループを単位に管理される冗長化論理ディスクドライブを制御するディスク制御装置が提供される。このディスク制御装置は、外部から与えられた書き込み要求に従って上記論理ディスクドライブに対する書き込み処理が開始される時点から当該書き込み処理が完了するまで、書き込みを開始する論理アドレス及び書き込みデータのサイズの情報を含む、当該書き込み要求に関する情報を記憶する不揮発性の記憶手段と、外部から与えられた書き込み要求に従う書き込み処理が異常終了した後の起動時に、上記記憶手段に記憶されている論理アドレス及びサイズの情報によって示される、上記論理ディスクドライブ上のストライプグループに属するデータストライプ中の領域に、予め定められた値のデータが設定されたデータ部と当該データ部のデータの正当性を検証するための当該データ部のデータに固有のチェックコードが設定されたチェックデータ部とを含むデータブロックを、当該領域のサイズに一致するブロック数だけ書き込む手段と、少なくとも、この書き込み手段によりデータブロックが書き込まれたデータストライプのうちの、当該データブロックが書き込まれた領域のデータから、当該データストライプを含むストライプグループに属する冗長ストライプの対応する領域の冗長データを再構成する手段とを備えたことを特徴とする。
【００１２】
ここで、上記ストライプグループが複数のデータストライプを含む冗長化論理ディスクドライブの場合、上記再構成手段では、上記書き込み手段によりデータブロックが書き込まれたデータストライプを含むストライプグループに属する全てのデータストライプのうちの、少なくとも、当該データブロックが書き込まれたデータストライプの領域のデータと他のデータストライプの対応する領域のデータとから、当該ストライプグループに属する冗長ストライプの対応する領域の冗長データが再構成されるようにするとよい。
【発明の効果】
【００１３】
本発明によれば、複数の物理ディスクドライブにより構成される冗長化論理ディスクドライブにデータを書き込む書き込み処理（ディスクライト処理）が異常終了した場合に、その後の起動時の処理により、書き込み処理が異常終了したために書き込み途中の状態にある領域を含むストライプグループを対象に、当該領域に含まれるデータブロックのデータ部のデータとそのチェックデータとの整合性を確保しながら、データと冗長データとの間の一貫性を回復することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明をＲＡＩＤ５レベルのディスク記憶システムに適用した実施の形態について図面を参照して説明する。図１は本発明の一実施形態に係るディスク記憶システムの構成を示すブロック図である。このディスク記憶システムは、ディスク記憶装置としてのディスクアレイ１１と当該ディスクアレイ１１を制御するディスクアレイコントローラ（ディスク制御装置）１２とを備えている。
【００１５】
ディスクアレイ１１は、複数の物理ディスクドライブ、例えば３台のハードディスクドライブ（以下、ＨＤＤと称する）１１０-0（＃０），１１０-１（＃１），１１０-2（＃２）から構成されるＲＡＩＤであり、各種ユーザデータ等の記録に用いられる。ディスクアレイ１１は、ディスクアレイコントローラ（ＲＡＩＤコントローラ）１２の制御により、ＲＡＩＤ５レベルのディスク記憶装置として機能する。この場合、ディスクアレイ１１は、データ記憶に必要なディスクドライブ（物理ディスクドライブ）の台数がＮであるものとすると、Ｎ＋１台のディスクドライブ（ここでは、３台のＨＤＤ１１０-0，１１０-１，１１０-2）から構成される。このＮ＋１台のディスクドライブ（３台のＨＤＤ１１０-0，１１０-１，１１０-2）は、後述するホストシステム１５により、例えば論理的に単一のディスクドライブ、つまり論理ディスクドライブ（論理ディスク）として使用される。
【００１６】
ＨＤＤ１１０-0〜１１０-2から構成されるＲＡＩＤ５レベルのディスクアレイ１１では、各ＨＤＤ１１０-0〜１１０-2（のディスク領域）をストライピングしてデータが配置される。図２に示すように、各ＨＤＤ１１０-0〜１１０-2内の同一物理オフセット（物理位置）に存在するストライプをまとめてストライプグループＳＧと呼ぶ。同一のストライプグループＳＧに属するＨＤＤ１１０-0〜１１０-2内の３つのストライプのうち、いずれか２つのストライプにはデータ（ＤＡＴＡ）が配置され、残りのストライプには、他の２つのストライプ上のデータの冗長データとしてのパリティデータ（ＰＡＲＩＴＹ）が配置される。このパリティデータが配置されるストライプをパリティストライプ（冗長ストライプ）Ｐと呼び、当該パリティストライプＰと同一のストライプグループＳＧに属し、データが配置される他の２つのストライプをデータストライプＤＳ０，ＤＳ１と呼ぶ。ＲＡＩＤ５では、パリティストライプＰＳが割り当てられるストライプグループＳＧ内の位置（パリティ位置）は、ストライプグループＳＧ毎にＮ＋１台のディスクドライブ（ＨＤＤ１１０-0〜１１０-2）間で順に移動される。図２の例では、パリティストライプＰＳは、ストライプグループＳＧ０ではＨＤＤ１１０-2に、次のストライプグループＳＧ１ではＨＤＤ１１０-0に、それぞれ割り当てられる。このようにＲＡＩＤ５では、パリティストライプＰＳをストライプグループＳＧ単位でＮ＋１台の物理ディスクドライブ（ＨＤＤ１１０-0〜１１０-2）に分散させることによって、同一物理ディスクドライブへのアクセスが集中するのを防止するように構成されている。
【００１７】
ストライプグループＳＧ中の各データストライプＤＳ０，ＤＳ１は、図３に示すように一定数の複数のデータブロックから構成される。また、パリティストライプＰＳも各データストライプＤＳ０，ＤＳ１と同数のデータブロック（パリティブロック）から構成される。ストライプを構成する複数のデータブロックは、ＨＤＤ１１０-i（ｉ＝０〜２）内で連続している。データブロックは、例えばＨＤＤ（ディスクドライブ）に対するアクセスの最小単位であるセクタである。データストライプＤＳ０，ＤＳ１を構成する各データブロック（セクタ）は、図３に示すように、データ部Ｄとチェックデータ部Ｃとから構成される。データ部Ｄは５１２バイトであり、チェックデータ部Ｃは８バイトである。
【００１８】
図４は、チェックデータ部Ｃのフォーマットの一例を示す。図４の例では、チェックデータ部Ｃはバイト０〜バイト７の８バイトから構成される。チェックデータ部Ｃのバイト０，１は、データ部Ｄ（ここでは５１２バイト）のデータの正当性を検証するためのチェックコード（冗長コード）であるＣＲＣ（Cyclic Redundancy Check）コードを格納するのに用いられる。また、チェックデータ部Ｃのバイト２〜５は、データ部Ｄのデータ（を含むデータブロック）の格納先として割り当てられた論理ディスク上のアドレス（論理ブロックアドレスＬＢＡ）を格納するのに用いられる。また、チェックデータ部Ｃのバイト６，７は、データ部Ｄのデータの格納先として割り当てられた論理ディスクの識別情報である論理ディスク番号ＬＤＩＳＫno番号を格納するのに用いられる。
【００１９】
再び図１を参照すると、ディスクアレイ１１を構成するＨＤＤ１１０-0〜１１-2は、インタフェースバス１３によりディスクアレイコントローラ１２と接続されている。ディスクアレイコントローラ１２は、インタフェースバス１４を介してホストシステム１５と接続されている。ホストシステム１５は、ディスクアレイシステムを利用する単一のホストコンピュータまたはホストコンピュータの集合体である。インタフェースバス１４には、図１のディスクアレイシステムとの間でデータの入出力を行う当該ディスクアレイシステムとは別のデータ記憶システムが接続可能である。インタフェースバス１３，１４は、ＳＣＳＩ（Small Computer System Interface）或いはファイバチャネル（Fibre Channel）である。
【００２０】
ディスクアレイコントローラ１２は、ホストインタフェース（ホストＩ／Ｆ）１２１と、ディスクインタフェース（ディスクＩ／Ｆ）１２２と、ＣＰＵ１２３と、プログラムメモリ１２４と、キャッシュメモリ１２５と、書き換え可能な不揮発性記憶装置としての例えばＮＶ（Nonvolatile）ＲＡＭ１２６とを備えている。ホストインタフェース１２１、ディスクインタフェース１２２、ＣＰＵ１２３、プログラムメモリ１２４、キャッシュメモリ１２５及びＮＶＲＡＭ１２６は、内部バス１２７によって相互接続されている。内部バス１２７は、ＰＣＩ（Peripheral Component Interconnect）バス等の汎用バスである。
【００２１】
ホストインタフェース１２１は、ホストシステム１５（または図１のディスクアレイシステム以外のデータ記憶システム）とディスクアレイコントローラ１２との接続を制御する。即ちホストインタフェース１２１は、ホストシステム１５（または他のデータ記憶システム）とディスクアレイコントローラ１２との間のデータ転送（データ転送プロトコル）をインタフェースバス１４を介して制御する。ホストインタフェース１２１は、ディスクアレイ１１によって実現される論理ディスクにデータを書き込むための要求をインタフェースバス１４から受信した場合、当該要求で指定されたデータをキャッシュメモリ１２５に書き込ませるために、当該データを内部バス１２７を介して当該キャッシュメモリ１２５に転送するデータ転送回路としての機能を有する。またホストインタフェース１２１は、ディスクアレイ１１（論理ディスク）からデータを読み出すための要求をホストシステム１５から受信した場合、当該要求で指定されたデータをキャッシュメモリ１２５から読み出してホストシステム１５に送信するための制御を行う。
【００２２】
ＨＤＤインタフェース１２２は、ディスクアレイ１１内のＨＤＤ１１０-0〜１１０-2との間のデータ転送を制御する。即ちＨＤＤインタフェース１２２は、ＨＤＤ１１０-0〜１１０-2へのデータの書き込み、及びＨＤＤ１１０-0〜１１０-2からのデータの読み出しを制御する。ＨＤＤインタフェース１２２は、ＨＤＤ１１０-0〜１１０-2から読み出されたデータをキャッシュメモリ１２５に書き込ませるために、当該データを内部バス１２７を介して当該キャッシュメモリ１２５に転送するデータ転送回路としての機能を有する。
【００２３】
ＣＰＵ１２３はプログラムメモリ１２４に格納されているプログラムに従ってディスクアレイコントローラ１２全体を制御する。特にＣＰＵ１２３は、ディスクライト処理が異常終了した後のシステム再起動時に、書き込み処理が異常終了したために書き込み途中の状態にある領域を含むストライプグループにおけるデータと冗長データとの間の一貫性を回復するための処理を実行する。
【００２４】
キャッシュメモリ１２５は、ホストシステム１５（またはデータ記憶システム）からインタフェースバス１４を介して与えられる（つまり外部から与えられる）ディスクアレイ１１（論理ディスク）への書き込み／読み出し（入出力）要求で指定されるデータの書き込み／読み出しの高速化のためのバッファとして用いられる。例えば、書き込み要求に対しては、当該要求で指定されたデータがキャッシュメモリ１２５に書き込まれ、その段階で要求元に書き込み処理完了が通知される。その後、キャッシュメモリ１２５に書き込まれたデータがディスクアレイ１１に書き込まれる（ライトバックされる）。一方、読み出し要求に対しては、当該要求で指定されたデータがキャッシュメモリ１２５に格納されているか否かが判定され、格納されているならば、そのデータが要求元に転送される。これに対し、指定されたデータがキャッシュメモリ１２５に格納されていないならば、当該データがディスクアレイ１１からキャッシュメモリ１２５に読み出される。しかる後に、キャッシュメモリ１２５に読み出されたデータが要求元に転送される。
【００２５】
ＮＶＲＡＭ１２６は、外部装置（ホストシステム１５または図１のディスクアレイシステム以外のデータ記憶システム）からの書き込み要求に関する情報を当該要求に従うディスクライト処理が完了するまで記憶するのに用いられる。ここでは、書き込み要求に従って当該要求で指定されたデータをディスクアレイ１１に書き込むディスクライト処理を開始するに際して、当該書き込み要求に関する情報がＮＶＲＡＭ１２６に記憶される。そして、ディスクライト処理が完了すると、対応する書き込み要求に関する情報がＮＶＲＡＭ１２６から削除される。明らかなように、ＮＶＲＡＭ１２６に記憶されたデータは、システムの電源の遮断などによって消失することはない。外部からディスクアレイコントローラ１２に与えられる書き込み要求には、当該コントローラ１２（内のＣＰＵ１２３）により当該要求を識別するためのＩＤ（要求ＩＤ）が割り当てられる。
【００２６】
図５は、書き込み要求に関する情報を記憶するのに割り当てられるＮＶＲＡＭ１２６の記憶領域のデータ構造例を示す。図５に示すように、ＮＶＲＡＭ１２６の記憶領域には、書き込み要求に関する情報を記憶するための複数のエントリが割り当てられる。この複数のエントリは、書き込み要求を識別する要求ＩＤに対応付けで用意される。つまりＮＶＲＡＭ１２６の記憶領域内の各エントリは、それぞれ固有の要求ＩＤに対応付けられている。各エントリは、フラグ（有効／無効フラグ）フィールド５１と、論理ディスク番号（ＬＤＩＳＫno）フィールド５２と、論理ブロックアドレス（ＬＢＡ）フィールド５３と、サイズフィールド５４とを有する。フィールド５１は、対応するエントリの内容（つまり対応するエントリに記憶されている書き込み要求に関する情報）が有効であるか否か（無効であるか）を示すフラグ（フラグ情報）を記憶するのに用いられる。フィールド５２は、対応する書き込み要求で指定される書き込み先の論理ディスクを示す論理ディスク番号を記憶するのに用いられる。フィールド５３及び５４は、書き込み要求で指定される、書き込みを開始すべき論理ブロックアドレス（論理アドレス）及び書き込みデータのサイズの情報を記憶するのに用いられる。つまりフィールド５３及び５４は、書き込み要求で指定される論理ディスク上の領域を記憶するのに用いられる。
【００２７】
次に、図１のディスク記憶システムの動作について説明する。今、ホストシステム１５からディスクアレイコントローラ１２に対して、ディスクアレイ１１（論理ディスクドライブ）にデータを書き込むための書き込み要求が与えられたものとする。この場合、ホストシステム１５からの書き込み要求により指定されるデータがキャッシュメモリ１２５に記憶される。その後、ディスクアレイコントローラ１２内のＣＰＵ１２３は、キャッシュメモリ１２５に記憶されたデータをディスクアレイ１１に書き込むためのディスクライト処理を開始する。
【００２８】
さてＣＰＵ１２３は、ホストシステム１５からの書き込み要求に従うディスクライト処理を開始するに際し、ＮＶＲＡＭ１２６の領域を参照して、フラグフィールド５１に無効を示すフラグが設定されているエントリ（つまり空きエントリ）を１つ探す。ＣＰＵ１２３は、この書き込み要求で指定された、書き込み先となる論理ディスクを示す論理ディスク番号、書き込みを開始すべき論理ブロックアドレスｘ、及び書き込みデータのサイズｙを示す情報を、探したエントリの論理ディスク番号フィールド５２、論理ブロックアドレスフィールド５３及びサイズフィールド５４に、それぞれ格納する。つまりＣＰＵ１２３は、書き込み要求に関する情報を、ＮＶＲＡＭ１２６の領域内の１つの空きエントリに格納する。次にＣＰＵ１２３は、書き込み要求に関する情報が格納されたエントリのフラグフィールド５１に設定されているフラグを、有効を示す状態に切り替える。これにより、開始しようとしているディスクライト処理を指定する書き込み要求に、当該書き込み要求に関する情報が格納されたエントリに対応付けられている要求ＩＤが割り当てられたことになる。そしてＣＰＵ１２３は、書き込み要求で指定され、且つ先にキャッシュメモリ１２５に書き込まれたデータを、当該書き込み要求で指定されるディスクアレイ１１（論理ディスク）の領域（ｘ，ｙ）に書き込むためのディスクライト処理を開始する。このディスクライト処理は、ディスクインタフェース１２２を利用して実行される。
【００２９】
やがて、書き込み要求に従うディスクライト処理が正常に完了すると、ＣＰＵ１２３は当該書き込み要求に割り当てられた要求ＩＤで指定されるエントリのフラグフィールド５１に設定されているフラグを、無効を示す状態に切り替える。これにより、対応する書き込み要求に関する情報が論理的に削除される。したがって、ディスクライト処理中にシステムの電源が遮断するなどの要因で、当該ディスクライト処理が異常終了すると、当該ディスクライト処理に対応する書き込み要求に関する情報は削除されずにＮＶＲＡＭ１２６に残される。
【００３０】
次に、ディスクライト処理が異常終了した後にシステムが再起動された場合に行われる一貫性回復処理について、図６乃至図１０を参照して説明する。なお、図６は一貫性回復処理の手順を示すフローチャート、図７はシステム再起動時のＮＶＲＡＭ１２６の内容例を示す図、図８は一貫性回復処理の対象となるストライプグループＳＧを構成するデータストライプＤＳ０，ＤＳ１及びパリティストライプＰＳとＲＡＩＤＨＯＬＥとの関係を示す図、図９及び図１０は図８のストライプグループを対象とする一貫性回復処理を説明する図である。
【００３１】
まず、システムの再起動時、ＣＰＵ１２３はＮＶＲＡＭ１２６をアクセスし、ディスクライト処理が異常終了した書き込み要求が存在するか否かを判定する（ステップＳ１）。この判定は、ＮＶＲＡＭ１２６の領域内のエントリ群の中に、有効状態を示すフラグが設定されているエントリがあるかを調べることで実現される。図７の例では、要求ＩＤ＝１に対応するエントリのフラグフィールド５１に、有効状態を示すフラグが設定されている。このエントリのフィールド５２，５３，５４には、それぞれ論理ディスク番号＝０，論理ブロックアドレス＝ｘ＝１０００，サイズ＝ｙ＝２００の情報が格納されている。この場合、ＣＰＵ１２３は、要求ＩＤ＝１の書き込み要求に従うディスクライト処理中に、システム電源の遮断等の要因で、当該ディスクライト処理が異常終了したと判断する。また、ＣＰＵ１２３は、上記要求ＩＤ＝１に対応するエントリに格納されている当該要求ＩＤ＝１の書き込み要求に関する情報から、ディスクライト処理が異常終了した際にデータの書き込み途中であった領域（ｘ，ｙ）を特定する（ステップＳ２）。図７の例では、ディスクアレイ１１により実現される論理ディスク番号＝０の論理ディスクの論理ブロックアドレス＝ｘ＝１０００から始まるサイズ＝ｙ＝２００（データブロック）の領域、つまり領域（ｘ，ｙ）＝（１０００，２００）が特定される。この領域（ｘ，ｙ）＝（１０００，２００）は、図８に示すように、ストライプグループＳＧに属する２つのデータストライプＤＳ０，ＤＳ１にまたがっているものとする。ＣＰＵ１２３は、この特定された領域をＲＡＩＤＨＯＬＥと見なして、当該ＲＡＩＤＨＯＬＥを以下の手順で修復する。
【００３２】
まず、ＣＰＵ１２３は、ＲＡＩＤＨＯＬＥとして特定した論理ディスク上の領域（ｘ，ｙ）に、図９に示すように、サイズｙ（ｙデータブロック分）のダミーデータｄｄを書き込むための制御を行う（ステップＳ３）。ここで、領域（ｘ，ｙ）のうち、データストライプＤＳ０に属する領域のサイズをａ（データブロック）、データストライプＤＳ１に属する領域のサイズをｙ−ａ（＝２００−ａ）とする（図９参照）。また、ダミーデータｄｄのうち、データストライプＤＳ０の領域（ｘ，ａ）に書き込まれるデータをｄｄ０、データストライプＤＳ１の領域（ａ＋１，ｙ）に書き込まれるデータをｄｄ１とする。サイズｙ（＝２００）のダミーデータｄｄはｙ（＝２００）個のデータブロック（セクタ）ｄｂ１〜ｄｂｙから構成される。各データブロックｄｂｉ（ｉ＝１〜ｙ）は、例えば値が全て“０”の５１２バイトのデータ部Ｄと、当該データ部Ｄのデータ（値が全て“０”のデータ）の正当性を検証するための８バイトのチェックデータ部Ｃとから構成される。ここで、各データブロックｄｂｉのチェックデータ部Ｃ中のバイト０，１には、値が全て“０”の５１２バイトのデータ部Ｄに対応して予め求められている、当該データ部Ｄのデータに固有のＣＲＣコードＣＲＣ０が設定されている。このチェックデータ部Ｃ中のＣＲＣコードＣＲＣ０は、ｙ個のデータブロックｄｂ１〜ｄｂｙに共通な値である。また、各データブロックｄｂｉのチェックデータ部Ｃ中のバイト２〜５には、当該データブロックｄｂｉが書き込まれる論理ディスク上の論理ブロックアドレスが設定され、バイト６，７には、論理ディスク番号１が設定されている。つまり、各データブロックｄｂｉのデータ部Ｄとチェックデータ部Ｃとは整合性が取れている。
【００３３】
上記した論理ディスク上の領域（ｘ，ｙ）へのｙデータブロック分のデータ（ｙ個のデータブロックｄｂ１〜ｄｂｙ）の書き込みにより、当該領域（ｘ，ｙ）からのデータの読み出しで、セクタ不良等のメディアエラーが発生するのを防止できる。
【００３４】
このような状態でＣＰＵ１２３は、論理ディスク上の領域（ｘ，ｙ）を含むストライプグループＳＧを対象に、ストライプグループＳＧ中のデータストライプＤＳ０，ＤＳ１のデータＤ０，Ｄ１をディスクアレイ１１（論理ディスク）から読み出すための制御を行う（ステップＳ４）。そしてＣＰＵ１２３は、図１０に示すように、読み出されたデータストライプＤＳ０，ＤＳ１のデータＤ０，Ｄ１を排他的論理和（ＸＯＲ）するための演算を図示せぬ排他的論理和演算回路により行わせることで、パリティストライプＰＳのパリティデータＰを生成する（ステップＳ５）。ＣＰＵ１２３は生成されたパリティデータＰをパリティストライプＰＳに書き込むための制御を行う（ステップＳ６）。これにより、パリティストライプＰＳのパリティデータＰが再構成され、ストライプグループＳＧにおけるデータとパリティデータとの間の一貫性が回復される。この状態でＣＰＵ１２３は、ＮＶＲＡＭ１２６の領域内の、要求ＩＤ＝１のエントリのフラグフィールド５１に設定されているフラグを、無効を示す状態に切り替える（ステップＳ７）。これにより、対応する書き込み要求に関する情報が論理的に削除される。
【００３５】
上記実施形態では、データストライプＤＳ０及びＤＳ１の全領域のデータを対象に排他的論理和演算を行うことで、パリティストライプＰＳの全領域のパリティデータを再構成している。この場合、本来再構成の必要のないパリティデータ部分に対応するデータストライプＤＳ０及びＤＳ１中のデータ部分まで読み出される。そこで、ステップ２でＲＡＩＤＨＯＬＥとして特定された領域（ｘ，ｙ）のうち、データストライプＤＳ０に属するサイズａの領域のデータとデータストライプＤＳ１に属するサイズｙ−ａの領域のデータとを別々に処理することにより、パリティストライプＰＳの対応するサイズａの領域のパリティデータとパリティストライプＰＳの対応するサイズｙ−ａの領域のパリティデータとを個別に再構成するようにしてもよい。具体的には、まず図１１（ａ）に示すように、領域（ｘ，ｙ）のうち、データストライプＤＳ０に属するサイズａの領域Ａ００のデータｄ００と、データストライプＤＳ１に属し、領域Ａ００と物理オフセットが同一のサイズａの領域Ａ０１のデータｄ０１とから、排他的論理和演算によりパリティデータｐ０を再構成する。このパリティデータｐ０は、パリティストライプＰＳに属し、領域Ａ００，Ａ０１と物理オフセットが同一のサイズａの領域Ａ０に書き込まれる。次に図１１（ｂ）に示すように、領域（ｘ，ｙ）のうち、データストライプＤＳ１に属するサイズｙ−ａの領域Ａ１１のデータｄ１１と、データストライプＤＳ０に属し、領域Ａ１１と物理オフセットが同一のサイズｙ−ａの領域Ａ１０のデータｄ１０とから、排他的論理和演算によりパリティデータｐ１を再構成する。このパリティデータｐ１は、パリティストライプＰＳに属し、領域Ａ１０，Ａ１１と物理オフセットが同一のサイズｙ−ａの領域Ａ１に書き込まれる。なお、領域（ｘ，ｙ）がデータストライプＤＳ０及びＤＳ１のいずれか一方だけに属する場合には、図１１（ａ）及び図１（ｂ）に示す処理ずれか一方のみを行えばよい。
【００３６】
また、上記実施形態では、ディスクアレイコントローラ１２がホストシステム１５から独立して設けられている。しかし、ディスクアレイコントローラ１２がホストシステム１５に組み込まれた構成であっても構わない。
【００３７】
また、上記実施形態では、本発明をＲＡＩＤ５レベルのディスク記憶システムに適用した場合について説明した。しかし本発明は、ＲＡＩＤ１レベル、ＲＡＩＤ３レベル、或いはＲＡＩＤ４レベルなど、冗長データを利用した冗長化論理ディスクドライブを備えたディスク記憶システムであれば、同様に適用可能である。
【００３８】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００３９】
【図１】本発明の一実施形態に係るディスク記憶システムの構成を示すブロック図。
【図２】図１中のディスクアレイ１１におけるストライピングを説明するための図。
【図３】図２中の各ストライプを構成するデータブロックのフォーマット例を示す図。
【図４】図３中のチェックデータ部Ｃのフォーマット例を示す図。
【図５】図１中のＮＶＲＡＭ１２６の記憶領域のデータ構造例を示す図。
【図６】同実施形態における一貫性回復処理の手順を示すフローチャート。
【図７】システム再起動時のＮＶＲＡＭ１２６の内容例を示す図。
【図８】一貫性回復処理の対象となるストライプグループＳＧを構成するデータストライプＤＳ０，ＤＳ１及びパリティストライプＰＳとＲＡＩＤＨＯＬＥとの関係を示す図。
【図９】ストライプグループを対象とする一貫性回復処理を説明する図。
【図１０】ストライプグループを対象とする一貫性回復処理を説明する図。
【図１１】ストライプグループを対象とする一貫性回復処理の変形例を説明する図。
【符号の説明】
【００４０】
１１…ディスクアレイ（冗長化論理ディスクドライブ、冗長化論理ディスク）、１２…ディスクアレイコントローラ（ディスク制御装置）、１５…ホストシステム、１２１…ホストインタフェース（ホストＩ／Ｆ）、１２２…ディスクインタフェース（ディスクＩ／Ｆ）、１２３…ＣＰＵ、１２５…キャッシュメモリ、１２６…ＮＶＲＡＭ（不揮発性の記憶手段）、１１０-0〜１１０-2…ＨＤＤ（物理ディスクドライブ）。ＳＧ，ＳＧ０，ＳＧ１…ストライプグループ、ＤＳ０，ＤＳ１…データストライプ、ＰＳ…パリティストライプ（冗長ストライプ）、Ｄ…データ部、Ｃ…チェックデータ部、ｄｂｉ…データブロック。
【図１】
2005044213.tif 000003
【図２】
2005044213.tif 000004
【図３】
2005044213.tif 000005
【図４】
2005044213.tif 000006
【図５】
2005044213.tif 000007
【図６】
2005044213.tif 000008
【図７】
2005044213.tif 000009
【図８】
2005044213.tif 000010
【図９】
2005044213.tif 000011
【図１０】
2005044213.tif 000012
【図１１】
2005044213.tif 000013