(57)【要約】【課題】ディスクアレイの再構築に要する時間を十分に短縮できるようにする。【解決手段】有効ＬＢＡ領域３３１には、ディスクアレイ２０を構成するＨＤＤにデータがライトされたアドレスのうちの最大のアドレスが保持される。アレイコントローラ３０内のリビルド制御部３１は、ディスクアレイ２０を構成するＨＤＤのうちの１台に障害が発生した場合、当該ディスクアレイ２０を再構築する処理を行う。リビルド制御部３１は、残りの例えばＨＤＤ２１-0の先頭アドレスから有効ＬＢＡ領域３３１に保持されている最大アドレスまでの第１の領域のデータに基づき、障害が発生したＨＤＤに代えて用いられる例えば新たなＨＤＤ２１-1の当該第１の領域に対応する第２の領域に、当該障害が発生したＨＤＤのデータを復元する。【選択図】      図１
2005107839.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２台のディスクドライブから構成される冗長性を持つディスクアレイを制御するアレイコントローラにおいて、
前記少なくとも２台のディスクドライブに既にデータがライトされているアドレスのうちの最大のアドレスを保持する最大アドレス保持手段と、
前記少なくとも２台のディスクドライブのうちの１台に障害が発生したために前記ディスクアレイを再構築する場合に、残りの少なくとも１台のディスクドライブの先頭アドレスから前記最大アドレス保持手段に保持されている最大アドレスまでの第１の領域のデータに基づき、前記障害が発生したディスクドライブに代えて用いられる新たなディスクドライブの当該第１の領域に対応する第２の領域に、当該障害が発生したディスクドライブのデータを復元するディスクアレイ再構築手段と
を具備することを特徴とするアレイコントローラ。
【請求項２】
前記ディスクアレイ再構築手段は、
前記少なくとも１台のディスクドライブの前記第１の領域からデータをリードする動作を、先頭アドレスから順にアドレスをインクリメントしながら繰り返す再構築用データリード手段と、
前記再構築用データリード手段によりリードされたデータをもとに前記新たなディスクドライブの同一アドレスに、前記障害が発生したディスクドライブの復元されたデータをライトするデータライト手段と
を含むことを特徴とする請求項１記載のアレイコントローラ。
【請求項３】
前記ディスクアレイ再構築手段は、前記データリード手段によってインクリメントされたアドレスが前記最大アドレス保持手段に保持されている最大アドレスを越えたか否かにより、前記ディスクアレイの再構築の完了を判定する再構築完了判定手段を含むことを特徴とする請求項２記載のアレイコントローラ。
【請求項４】
前記ディスクアレイを利用するホストからライト対象となる領域を指定するアドレスを含むライトコマンドが与えられた場合、前記少なくとも２台のディスクドライブのうち当該アドレスで指定される少なくとも１台のディスクドライブの領域に当該コマンドで指定されたデータをライトするライトコマンド実行手段と、
前記ライトコマンド実行手段によりデータがライトされたアドレスが前記最大アドレス保持手段に保持されている最大アドレスを越えているかを判定する最大アドレス判定手段と、
前記ライトコマンド実行手段によりデータがライトされたアドレスが前記最大アドレス保持手段に保持されている最大アドレスを越えている場合、当該最大アドレスを前記ライトされたアドレスに更新する最大アドレス更新手段と
を更に具備することを特徴とする請求項１記載のアレイコントローラ。
【請求項５】
前記最大アドレス保持手段に保持されている最大アドレスは予め定められた単位で丸められていることを特徴とする請求項１記載のアレイコントローラ。
【請求項６】
前記ディスクアレイを利用するホストからライト対象となる領域を指定するアドレスを含むライトコマンドが与えられた場合、前記少なくとも２台のディスクドライブのうち当該アドレスで指定される少なくとも１台のディスクドライブの領域に当該コマンドで指定されたデータをライトするライトコマンド実行手段と、
前記ライトコマンド実行手段によりデータがライトされたアドレスを前記予め定められた単位で丸めることにより得られる丸め後のライトアドレスが、前記最大アドレス保持手段に保持されている最大アドレスを越えているかを判定する最大アドレス判定手段と、
前記丸め後のライトアドレスが前記最大アドレス保持手段に保持されている最大アドレスを越えている場合、当該最大アドレスを前記丸め後のライトアドレスに更新する最大アドレス更新手段と
を更に具備することを特徴とする請求項５記載のアレイコントローラ。
【請求項７】
少なくとも２台のディスクドライブから構成される冗長性を持つディスクアレイを制御するアレイコントローラにより前記ディスクアレイを再構築するためのディスクアレイ再構築方法であって、
前記少なくとも２台のディスクドライブのうちの１台に障害が発生したために前記ディスクアレイを再構築する場合に、残りの少なくとも１台のディスクドライブのデータを、先頭アドレスから順にアドレスをインクリメントしながら順次リードするステップと、
前記少なくとも１台のディスクドライブからリードされたデータをもとに、前記新たなディスクドライブの同一アドレスに、前記障害が発生したディスクドライブの復元されたデータをライトするステップと、
前記インクリメント後のアドレスが、前記少なくとも２台のディスクドライブに既にデータがライトされているアドレスのうちの最大のアドレスを越えているか否かにより、前記ディスクアレイの再構築の完了を判定するステップと
を具備することを特徴とするディスクアレイ再構築方法。
【請求項８】
前記ディスクアレイを利用するホストからライト対象となる領域を指定するアドレスを含むライトコマンドが与えられた場合、前記少なくとも２台のディスクドライブのうち当該アドレスで指定される少なくとも１台のディスクドライブの領域に当該コマンドで指定されたデータをライトするステップと、
データがライトされたアドレスが、前記少なくとも１台のディスクドライブに既にデータがライトされているアドレスのうちの現時点において最大のアドレスを越えている場合に、当該最大アドレスを前記ライトされたアドレスに更新するステップと
を更に具備することを特徴とする請求項７記載のディスクアレイ再構築方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のディスクドライブから構成される冗長性を持つディスクアレイを制御するアレイコントローラに係り、特にディスクアレイ中の１つのディスクドライブに障害が発生したために当該障害が発生したディスクドライブを新たなディスクドライブに交換してディスクアレイを再構築するのに好適なアレイコントローラ及びディスクアレイ再構築方法に関する。
【背景技術】
【０００２】
冗長データを持つことによりデータの信頼性を向上させる技術として、複数のディスクドライブを用いて構成される冗長性を持つディスクアレイ（冗長化ディスクアレイ）、つまりＲＡＩＤ（Redundant Array of Inexpensive Disks、またはRedundant Array of Independent Disks）が知られている。ＲＡＩＤには幾つかのレベル（ＲＡＩＤレベル）が定義されており、ＲＡＩＤ１（ミラーリング）やＲＡＩＤ５（パリティ付きストライピング）などが知られている。いずれも複数のディスクドライブを用いて構成される冗長化ディスクアレイにデータ及び冗長データを配置することにより、いずれか１台のディスクドライブに障害が発生してもデータの復元を可能にする技術である。
【０００３】
さて、冗長化ディスクアレイを構成する複数のディスクドライブのうち、いずれか１台のディスクドライブに障害が発生した場合、当該障害が発生したディスクドライブを新たなディスクドライブと交換して、当該ディスクアレイを再構築する必要がある（例えば、特許文献１参照）。このディスクアレイを再構築する処理は、リビルド（Rebuild）と呼ばれる。このリビルドでは、ディスクアレイの冗長性を復活するために、障害が発生していない既存のディスクドライブのデータを利用して、障害が発生したディスクドライブに格納されていたデータを当該ドライブの全領域にわたり新たなディスクドライブに復元する処理が行われる。ＲＡＩＤ１を適用するディスクアレイであれば、既存のディスクドライブのデータをリードして新たなディスクドライブにライトする処理（即ち既存のディスクドライブのデータを新たなディスクドライブにコピーする処理）により、障害が発生したディスクドライブにもともと記録されていた全てのデータが新たなディスクドライブに復元される。
【特許文献１】特開平８−２２１２１７号公報（請求項１、段落００２９，００３０）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記したように、ディスクアレイを再構築（リビルド）する従来技術では、障害が発生していない既存のディスクドライブのデータを利用して、障害が発生したディスクドライブに記録されていたデータを当該ドライブの全領域にわたり新たなディスクドライブに復元する処理が行われる。例えばＲＡＩＤ１を適用するディスクアレイであれば、障害が発生していない既存のディスクドライブの全領域にわたり、当該ディスクドライブのデータが新たなディスクドライブにコピーされる。このため近年は、ディスクアレイを構成する各ディスクドライブが大容量化されるに伴い、当該ディスクアレイの再構築に要する時間が著しく長くなってきている。
【０００５】
しかしながら、ディスクアレイを構成する各ディスクドライブの全領域に有効なデータが格納されていることは極めて稀である。このため、障害が発生したディスクドライブに記録されていたデータを当該ドライブの全領域にわたって新たなディスクドライブに復元することは無駄である。そこで、有効なデータだけを新たなディスクドライブに復元することが考えられる。しかし、そのためには、ディスクドライブの全領域にわたって、例えばブロック単位でデータの有効／無効を管理しなければならず、煩雑である。また、有効データだけを新たなディスクドライブに復元する場合、ディスクに対する不連続なアクセスが発生するため、ディスクアクセス効率が低下する。このため、有効データだけを復元しても、ディスクアレイの再構築に要する時間を十分に短縮できるとは限らない。
【０００６】
本発明は上記事情を考慮してなされたものでその目的は、ディスクアレイの再構築に要する時間を十分に短縮できるアレイコントローラ及びディスクアレイ再構築方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の１つの観点によれば、少なくとも２台のディスクドライブから構成される冗長性を持つディスクアレイを制御するアレイコントローラが提供される。このアレイコントローラは、上記少なくとも２台のディスクドライブにデータがライト済みのアドレスのうちの最大のアドレスを保持する最大アドレス保持手段と、上記少なくとも２台のディスクドライブのうちの１台に障害が発生したために上記ディスクアレイを再構築する場合に、残りの少なくとも１台のディスクドライブの先頭アドレスから上記最大アドレス保持手段に保持されている最大アドレスまでの第１の領域のデータに基づき、上記障害が発生したディスクドライブに代えて用いられる新たなディスクドライブの当該第１の領域に対応する第２の領域に、当該障害が発生したディスクドライブのデータを復元するディスクアレイ再構築手段とを備えることを特徴とする。
【０００８】
このような構成のアレイコントローラにおいて、ディスクアレイを構成する少なくとも２台のディスクドライブのうちの１台に障害が発生したために当該ディスクアレイを再構築する場合、残りの少なくとも１台のディスクドライブのデータを用いて、障害が発生したディスクドライブに代えて用いられる新たなディスクドライブに、当該障害が発生したディスクドライブのデータが復元される。この際、上記構成のアレイコントローラでは、上記残りの少なくとも１台のディスクドライブの全領域のデータではなくて、先頭アドレスから上記最大アドレス保持手段に保持されているアドレス（即ち既にデータがライトされているアドレスのうちの最大のアドレス）までの第１の領域（つまりデータライト済みとして管理される領域）のデータを用いて、上記新たなディスクドライブの当該第１の領域に対応する第２の領域に、障害が発生したディスクドライブのデータが復元される。このように上記構成のアレイコントローラにおいては、データライト済みとして管理される連続するディスク領域だけが再構築されるため、再構築の時間を十分に短縮できる。しかも、上記残りの少なくとも１台のディスクドライブの先頭アドレスから上記最大アドレスまでの第１の領域のデータに対するアクセスはシーケンシャルに行えることから、ディスクアクセス効率も向上する。
【０００９】
ここで、最大アドレス保持手段に正しい最大アドレスを保持するためには、ホストからのライトコマンドに応じてディスクアレイを構成する少なくとも２台のディスクドライブのうちの少なくとも１台のディスクドライブにデータがライトされた際に、そのデータがライトされたアドレスが上記最大アドレス保持手段に保持されている最大アドレスを越えているかを最大アドレス判定手段にて判定し、データがライトされたアドレスが当該最大アドレスを越えている場合に、当該最大アドレスを上記データがライトされたアドレスに最大アドレス更新手段が更新する構成とすれば良い。
【００１０】
また、上記最大アドレス保持手段に保持される最大アドレスとして、予め定められた単位で丸められたアドレスを用いるならば、当該最大アドレス保持手段に保持される最大アドレスが更新される頻度を低減することができる。ここでは、データがライトされたアドレスを上記予め定められた単位で丸めることにより得られる丸め後のライトアドレスが、上記最大アドレス保持手段に保持されている最大アドレスを越えているかを最大アドレス判定手段にて判定し、丸め後のライトアドレスが当該最大アドレスを越えている場合に、当該最大アドレスを上記丸め後のライトアドレスに最大アドレス更新手段が更新する構成とすれば良い。
【発明の効果】
【００１１】
本発明によれば、ディスクアレイを構成する少なくとも２台のディスクドライブのうちの１台に障害が発生したために当該ディスクアレイを再構築する場合、残りの少なくとも１台のディスクドライブの全領域のデータではなくて、先頭アドレスから既にデータがライトされているアドレスのうちの最大のアドレスまでの領域のデータを用いて、障害が発生したディスクドライブに代えて用いられる新たなディスクドライブに、障害が発生したディスクドライブのデータが復元される構成とすることにより、再構築の時間を十分に短縮できる。しかも、上記先頭アドレスから上記最大アドレスまでの領域のデータに対するアクセスはシーケンシャルに行えることから、ディスクアクセス効率も向上できる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の一実施形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係るコンピュータシステムの構成を示すブロック図である。図１のコンピュータシステムは、各種アプリケーションを実行するホスト（ホストコンピュータ）１０と、このホスト１０の外部記憶装置として用いられるディスクアレイ２０と、アレイコントローラ（以下、ＲＡＩＤコントローラと称する）３０とから構成される。
【００１３】
ディスクアレイ２０は、例えば２台のハードディスクドライブ（以下、ＨＤＤと称する）２１-0，２１-1から構成されるＲＡＩＤである。ＨＤＤ２１-0，２１-1は、説明を簡略化するために同一記憶容量であり、最大の論理ブロックアドレスＬＢＡはＦＦＦＦｈ（末尾のｈは１６進表現であることを示す）であるものとする。ＨＤＤ２１-0，２１-1の記憶領域（ディスク領域）内には、ＲＡＩＤコントローラ３０が利用可能な専用のリザーブ領域２１０-0，２１０-1が予め確保されている。ここでは、リザーブ領域２１０-0，２１０-1は、ＨＤＤ２１-0，２１-1内の相対位置が同一の最終領域側（ＬＢＡ＝ＦＦＦＦｈの側）に確保されている。リザーブ領域２１０-0，２１０-1内の一部の領域は、後述する有効ＬＢＡｅを記憶するための有効ＬＢＡ領域２１１-0，２１１-1として用いられる。
【００１４】
本実施形態におけるディスクアレイ２０は、ＲＡＩＤコントローラ３０の制御により、ＲＡＩＤ１のディスクアレイ、いわゆるミラーリングディスクアレイとして機能する。ＲＡＩＤ１のディスクアレイ２０では、ホスト１０からは、当該ディスクアレイ２０を構成するＨＤＤ２１-0，ＨＤＤ２１-1のうちの一方のＨＤＤだけが認識でき、他方のＨＤＤは当該一方のＨＤＤの複製を保持するＨＤＤとして用いられる。このホスト１０から認識可能なＨＤＤをマスタ側ＨＤＤと呼び、マスタ側ＨＤＤの複製を保持するＨＤＤをバックアップ側ＨＤＤと称する。
【００１５】
ＲＡＩＤコントローラ３０はディスクアレイ２０を制御する。この例のように、ディスクアレイ２０をＲＡＩＤ１として機能させる場合、ＲＡＩＤコントローラ３０はホスト１０から要求されたデータをＨＤＤ２１-0，ＨＤＤ２１-1のうちの一方のＨＤＤ（マスタ側ＨＤＤ）に書き込む制御を行うと共に、その書き込み先と相対位置が同一の他方のＨＤＤ（バックアップ側ＨＤＤ）の領域に当該データの複製を書き込む制御を行う。
【００１６】
ＲＡＩＤコントローラ３０は、リビルド制御部３１と、ライト制御部３２と、ＲＡＭ３３とを備えている。ＲＡＭ３３の記憶領域の一部は、最大論理ブロックアドレス領域（以下、有効ＬＢＡ領域と称する）３３１として用いられる。有効ＬＢＡ領域３３１は、ディスクアレイ２０のＨＤＤ２１-0，２１-1に既にデータ（ブロックデータ）がライトされている論理ブロックアドレスＬＢＡのうち最大の論理ブロックアドレスＬＢＡｅ（以下、有効ＬＢＡｅと称する）を記憶するのに用いられる。
【００１７】
リビルド制御部３１は、ディスクアレイ２０の再構築、つまりリビルド（Rebuild）を制御する。リビルド制御部３１は、コピー部３１１と、リビルド完了判定部３１２とを含む。コピー部３１１は、ディスクアレイ２０を構成するＨＤＤ２１-0，２１-1のうちの正常なＨＤＤ（以下、ソース側ＨＤＤと称する）のデータを、障害が発生したＨＤＤと交換して用いられる新たなＨＤＤ（以下、ターゲット側ＨＤＤと称する）に例えばブロック単位で順次コピーする。リビルド完了判定部３１２は、コピー部３１１によるブロック単位のコピーが、有効ＬＢＡ領域３３１に記憶されている有効ＬＢＡｅにより指定されるブロックまで完了したかを判定する。ここでは、ブロック単位のコピーが有効ＬＢＡｅにより指定されるブロックまで完了した場合に、リビルド（ディスクアレイ２０の再構築）の完了が判定される。
【００１８】
ライト制御部３２は、ホスト１０からのライトコマンドに従ってディスクアレイ２０内のＨＤＤ２１-0及び２１-1にデータをライトするための制御を行う。ライト制御部３２は、有効ＬＢＡ判定部３２１と、有効ＬＢＡ更新部３２２とを含む。有効ＬＢＡ判定部３２１は、ホスト１０からのライトコマンドによって指定される論理ブロックアドレスＬＢＡｗが有効ＬＢＡ領域３３１に記憶されている有効ＬＢＡｅより大きいかを判定する。有効ＬＢＡ更新部３２２は、有効ＬＢＡ判定部３２１によってＬＢＡｗがＬＢＡｅより大きいと判定された場合に、有効ＬＢＡ領域３３１，２１１-0，２１１-1に記憶されている有効ＬＢＡｅを当該ＬＢＡｗに更新する。
【００１９】
次に、図１に示したコンピュータシステムの動作について、ホスト１０からＲＡＩＤコントローラ３０に対し、論理ブロックアドレスＬＢＡｗで指定されるＨＤＤのブロックにデータをライトすることを指示するライトコマンドが発行された場合の動作を例に図２のフローチャートを参照して説明する。ここでは、ＨＤＤ２１-0がマスタ側ＨＤＤとして用いられ、ＨＤＤ２１-1がバックアップ側ＨＤＤとして用いられるものとする。また、図１のコンピュータシステムの起動時には、ＨＤＤ２１-0の有効ＬＢＡ領域２１１-0またはＨＤＤ２１-1の有効ＬＢＡ領域２１１-1に記憶（保存）されている有効ＬＢＡｅが、ＲＡＭ３３内の有効ＬＢＡ領域３３１にコピーされるものとする。また、図１のコンピュータシステムが初めて起動される場合、有効ＬＢＡ領域２１１-0，２１１-1には有効ＬＢＡｅとして初期値０（００００ｈ）が初期設定されるものとする。
【００２０】
まず、ＲＡＩＤコントローラ３０内のライト制御部３２は、ホスト１０からのライトコマンドに従い、ＬＢＡｗで指定されるマスタ側ＨＤＤ２１-0のブロックに当該コマンドで指定されたデータをライトする（ステップＳ１）。このステップＳ１において、ライト制御部３２は、ＬＢＡｗで指定されるバックアップ側ＨＤＤ２１-1のブロックにも上記ライトコマンドで指定されたデータをライトする。つまりライト制御部３２は、ＬＢＡｗで指定されるＨＤＤ２１-0及び２１-1のブロックに、ライトコマンドで指定されたデータをライトする。
【００２１】
ライト制御部３２内の有効ＬＢＡ判定部３２１は、ホスト１０からのライトコマンドに従うデータライトが実行されると、データがライトされたブロックの論理ブロックアドレスＬＢＡｗをＲＡＭ３３内の有効ＬＢＡ領域３３１に記憶されている有効ＬＢＡｅと比較する（ステップＳ２）。もし、ＬＢＡｗの方がＬＢＡｅより大きいならば、有効ＬＢＡ判定部３２１は有効ＬＢＡ更新部３２２に制御を渡す。すると有効ＬＢＡ更新部３２２は、ＲＡＭ３３に確保されている有効ＬＢＡ領域３３１並びにＨＤＤ２１-0，２１-1のリザーブ領域２１０-0，２１０-1に確保されている有効ＬＢＡ領域２１１-0，２１１-1にそれぞれ記憶されているＬＢＡｅをＬＢＡｗに更新する（ステップＳ３）。このステップＳ３が実行されると、ライト制御部３２はライトコマンドの実行を終了する。これに対し、ＬＢＡｗの方がＬＢＡｅより大きくないならば、ライト制御部３２ははそのままライトコマンドの実行を終了する。このようにして、有効ＬＢＡ領域３３１，２１１-0，２１１-1には、ＨＤＤ２１-0，２１-1に既にデータがライトされている論理ブロックアドレスＬＢＡのうち、最大の論理ブロックアドレスＬＢＡが有効ＬＢＡｅとして記憶される。図４は、この有効ＬＢＡｅと、ＨＤＤ２１-0，２１-1において既にデータがライトされている有効データ領域Ａ０，Ａ１との関係を示す。
【００２２】
次に、図１に示したコンピュータシステムの動作について、ディスクアレイ２０の再構築時の動作を例に図３のフローチャートを参照して説明する。ここでは、ディスクアレイ２０を構成するＨＤＤ２１-0，２１-1のうちの例えばＨＤＤ２１-1で障害が発生したために、当該ＨＤＤ２１-1が新たなＨＤＤに交換されたものとする。また、説明の便宜上、障害が発生したＨＤＤ２１-1に代えて用いられる新たなＨＤＤの参照番号に、元のＨＤＤ２１-1の参照番号を用いるものとする。この状態で、ホスト１０からＲＡＩＤコントローラ３０に対してディスクアレイ２０の再構築が指示されると、ＲＡＩＤコントローラ３０内のリビルド制御部３１が起動される。ここでのディスクアレイ２０の再構築では、ソース側ＨＤＤは既存のＨＤＤ２１-0であり、ターゲット側ＨＤＤは新たに用いられるＨＤＤ２１-1である。
【００２３】
リビルド制御部３１が起動されると、まず当該リビルド制御部３１内のコピー部３１１が、論理ブロックアドレスＬＢＡｉを初期値０に設定する（ステップＳ１１）。次にコピー部３１１は、ＬＢＡｉで指定されるソース側ＨＤＤ２１-0の領域（ブロック）に格納されているデータをリードする（ステップＳ１２）。そしてコピー部３１１は、ソース側ＨＤＤ２１-0からリードしたデータを、ＬＢＡｉで指定されるターゲット側ＨＤＤ２１-1の領域（ブロック）にライトする（ステップＳ１３）。これにより、ＬＢＡｉで指定されるソース側ＨＤＤ２１-0のデータが、同じＬＢＡｉで指定されるターゲット側ＨＤＤ２１-1のブロックにコピーされたことになる。
【００２４】
次にコピー部３１１は、次のコピー元及びコピー先の論理ブロックアドレスを示すように、現在のＬＢＡｉを１だけインクリメントして、リビルド完了判定部３１２に制御を渡す（ステップＳ１４）。すると、リビルド完了判定部３１２は、インクリメント後のＬＢＡｉをＲＡＭ３３内の有効ＬＢＡ領域３３１に記憶されている有効ＬＢＡｅと比較する（ステップＳ１５）。
【００２５】
もし、インクリメント後のＬＢＡｉがＬＢＡｅより小さいかＬＢＡｅに等しいならば、つまりＬＢＡｉがＨＤＤ２１-0内の有効データ領域（第１の領域）Ａ０に属しているならば、リビルド完了判定部３１２はディスクアレイ２０の再構築（リビルド）の未完了（継続）を判定する。この場合、リビルド完了判定部３１２はコピー部３１１に対し、ソース側ＨＤＤ２１-0内の有効データ領域Ａ０からターゲット側ＨＤＤ２１-1内の対応する領域（第２の領域）Ａ１へのデータコピーの継続を要求する。するとコピー部３１１は、インクリメント後のＬＢＡｉを用いて、ソース側ＨＤＤ２１-0からターゲット側ＨＤＤ２１-1へのデータのコピーを継続する（ステップＳ１２，Ｓ１３）。
【００２６】
これに対し、インクリメント後のＬＢＡｉがＬＢＡｅより大きいならば、つまりＬＢＡｉがＨＤＤ２１-0内の有効データ領域Ａ０から外れているならば、リビルド完了判定部３１２はディスクアレイ２０の再構築（リビルド）の完了を判定する。この場合、リビルド完了判定部３１２はコピー部３１１にディスクアレイ２０の再構築の完了を通知する。これによりコピー部３１１は、ソース側ＨＤＤ２１-0からターゲット側ＨＤＤ２１-1へのデータのコピー処理を終了する。
【００２７】
このようにコピー部３１１は、図５に示すように、ソース側ＨＤＤ２１-0の全記憶領域のうちＬＢＡｉ＝０（００００ｈ）からＬＢＡｉ＝ＬＢＡｅ（００ＦＦｈ）までの有効データ領域Ａ０のデータをブロック単位でシーケンシャルにリードして、そのリードデータをターゲット側ＨＤＤ２１-1の対応する領域Ａ１にシーケンシャルにライトするデータコピーを実行する。これにより、ＨＤＤ２１-0の全領域のデータをＨＤＤ２１-1にコピー（復元）する場合に比べて、コピー（リビルド）時間を十分に短縮できる。また、ＨＤＤ２１-0に既にデータ（ブロックデータ）がライトされている論理ブロックアドレスＬＢＡのうち最大の論理ブロックアドレスのみを有効ＬＢＡｅとして記憶するだけで良く、管理が簡単である。これに対し、有効なデータだけをＨＤＤ２１-0からＨＤＤ２１-1にコピー（復元）する方法では、ＨＤＤ２１-0，２１-1に対する不連続なアクセスが多発するためディスクアクセス効率の低下を招く。しかも、有効なデータの管理は煩雑である。
【００２８】
なお、上述の説明では省略されているが、ＨＤＤ２１-0のリザーブ領域２１０-0のデータはＨＤＤ２１-1のリザーブ領域２１０-1にコピーされる。このリザーブ領域２１０-0，２１０-0を、ＨＤＤ２１-0，２１-1の先頭領域側、つまりＬＢＡ＝０（００００ｈ）の側に確保しても良い。
【００２９】
また、ＲＡＩＤコントローラ３０内に書き換え可能な不揮発性メモリを備えることが可能な場合、当該不揮発性メモリの一部の領域に、上記有効ＬＡＢｅを記憶するようにしても良い。この場合、リザーブ領域２１０-0，２１０-1内に必ずしも有効ＬＢＡ領域２１１-0，２１１-1を確保する必要はない。
【００３０】
上記実施形態では、ＨＤＤ２１-0，２１-1にライトされたデータ（ブロックデータ）の論理ブロックアドレスＬＢＡのうち最大の論理ブロックアドレスが有効ＬＢＡｅとして管理（記憶）される。しかし、論理ブロックアドレスを予め定められた単位（例えば１０ＭＢ単位）で丸め、その丸め後の論理ブロックアドレスを用いて、有効ＬＢＡｅに代わる有効ＬＢＡｅ’を管理するようにしても良い。この場合、書き込み論理ブロックアドレスＬＢＡｗに対応する丸め後の論理ブロックアドレスをＬＢＡｗ’、丸め後の最大論理ブロックアドレスをＬＢＡｅ’とすると、上記ステップＳ２に相当する処理では、ＬＢＡｗ’とＬＢＡｅ’とを比較すれば良い。そして、ＬＢＡｗ’＞ＬＢＡｅ’の場合だけ、ＬＢＡｅ’をＬＢＡｗ’に更新する。このようにすると、最悪の場合には、丸めの単位だけ有効データ領域が広がる可能性があるが、ＬＢＡｅ’を更新する頻度を低減できる。
【００３１】
［変形例］
上記実施形態では、ディスクアレイ２０が２台のＨＤＤ２１-0，２１-1から構成され、ＲＡＩＤ１のディスクアレイ（つまりミラーリングディスクアレイ）として機能する場合を前提としている。しかし、ディスクアレイを構成するＨＤＤの台数は２台を越えていても良く、ＲＡＩＤレベルもＲＡＩＤ１でなくても良い。
【００３２】
そこで、図１のディスクアレイ２０に代えて図６に示すディスクアレイ２００を用いた、上記実施形態の変形例について、図１を援用して説明する。ディスクアレイ２００は、３台のＨＤＤ２１-0，２１-1，２１-2から構成される。ここでは、ディスクアレイ２００は、ＲＡＩＤ５レベルで用いられるものとする。この場合、ＨＤＤ２１-0〜２１-2は、いずれもデータ並びにパリティデータ（冗長データ）の格納用に用いられ、パリティデータは各ＨＤＤ２１-0〜２１-2に分散して格納される。なお、ディスクアレイ２００がＲＡＩＤ３レベルで用いられる場合には、ＨＤＤ２１-0〜２１-2のうちの２台がデータ格納用（データディスク用）に、残りの１台がパリティデータ格納用（パリティディスク用）に割り当てられる。
【００３３】
ＨＤＤ２１-0〜２１-2によって実現されるディスクアレイ２０のディスク領域は、図６に示すようにストライプ単位に分割して管理される。ストライプは、ＨＤＤ２１-0〜２１-2の相対位置が同一のブロック領域から構成される。ここでは、説明を簡略化するために、１ストライプを構成するＨＤＤ２１-0〜２１-2のブロックサイズが１ブロックであるものとする。この場合、１ストライプを構成するＨＤＤ２１-0〜２１-2の各ブロックのうち、２つのブロックにはデータＤ０，Ｄ１が、残りの１ブロックにはデータＤ０，Ｄ１のパリティデータＰが格納される。ホスト１０からのライトコマンドによってデータＤ０（またはＤ１）をデータＤ０’（またはＤ１’）に更新することが指示された場合、データＤ０（またはＤ１）がデータＤ０’（またはＤ１’）に更新されると共に、パリティデータＰがデータＤ０’（またはＤ１’）とデータＤ１（またはＤ０）とのパリティデータＰ’に更新される。パリティデータＰ’の生成方法については、本発明に直接関係しないため省略する。
【００３４】
図１のコンピュータシステムにおいてディスクアレイ２０に代えてディスクアレイ２００を用いた場合でも、ホスト１０からＲＡＩＤコントローラ３０に対してライトコマンドが発行された際の有効ＬＢＡｅの更新は、上記実施形態と同様に行われる。ディスクアレイ２００内のＨＤＤ２１-0〜２１-2のいずれか１台に障害が発生した場合、残りの２台のＨＤＤのデータから、障害が発生したＨＤＤのデータまたはパリティデータがストライプ単位に復元可能である。なお、相対位置が同一の各ＨＤＤ２１-0〜２１-2に属するブロック（ブロック群）をそれぞれストライプと呼び、相対位置が同一の各ＨＤＤ２１-0〜２１-2に属するストライプの集合をストライプグループと呼ぶこともある。
【００３５】
図７は、図６に示したディスクアレイ２００中のＨＤＤ２１-2に障害が発生したために、当該障害発生ＨＤＤ２１-2が新たなＨＤＤ２１-2（便宜的に障害発生ＨＤＤと同一参照番号を付してある）に交換された状態でディスクアレイ２００を再構築する際のデータの復元処理を示す。ここでは、ＬＢＡｉで指定されるＨＤＤ２１-0及び２１-1のブロックに格納されているデータＤ１０及びＤ１１をリードするためのデータリード７０及び７１がＲＡＩＤコントローラ３０（に相当するＲＡＩＤコントローラ）によって行われる。次に、このデータリード７０及び７１でＨＤＤ２１-0及び２１-1からリードされたデータＤ１０及びＤ１１を排他的論理和（ＸＯＲ）するための演算（ＥＸＯＲ演算）７２が行われる。このＥＸＯＲ演算７２により生成されるデータＤ１２を、対応するストライプが属するＨＤＤ２１-2のブロックにライトするためのデータライト７３が行われる。ここで、Ｄ１０及びＤ１１が共に非パリティデータであれば、Ｄ１２はパリティデータである。また、Ｄ１０及びＤ１１の一方がパリティデータであれば、Ｄ１２は非パリティデータである。以上の動作は、図７の例では、ＬＢＡｉ＝０（００００ｈ）からＬＢＡｉ＝ＬＢＡｅ（００ＦＦｈ）までＬＢＡｉをインクリメントしながら繰り返し行われる。
【００３６】
このように、ＲＡＩＤ５レベルで用いられるディスクアレイ２００を再構築する場合、ＨＤＤ２１-2が交換された新たなＨＤＤであるものとすると、ＨＤＤ２１-2には、他のＨＤＤ２１-0及び２１-1におけるＬＢＡｉ＝０（００００ｈ）からＬＢＡｉ＝ＬＢＡｅ（００ＦＦｈ）までの領域のデータからストライプ単位で復元されたデータがライトされる。
【００３７】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００３８】
【図１】本発明の一実施形態に係るコンピュータシステムの構成を示すブロック図。
【図２】同実施形態におけるホスト１０からライトコマンドが発行された場合の動作手順を示すフローチャート。
【図３】同実施形態におけるディスクアレイ２０の再構築時の動作手順を示すフローチャート。
【図４】有効ＬＢＡｅと、ＨＤＤ２１-0，２１-1において既にデータがライトされている有効データ領域Ａ０，Ａ１との関係を示す図。
【図５】ディスクアレイ２０の再構築時にソース側ＨＤＤ２１-0の有効データ領域Ａ０のデータがターゲット側ＨＤＤ２１-1にコピーされる様子を示す図。
【図６】上記実施形態の変形例で図１のディスクアレイ２０に代えて用いられるディスクアレイ２００の構成を示す図。
【図７】上記実施形態の変形例におけるディスクアレイ２００の再構築時に実行されるデータ復元処理を示す図。
【符号の説明】
【００３９】
１０…ホスト、２０，２００…ディスクアレイ、２１-0，２１-1，２１-2…ＨＤＤ（ディスクドライブ）、３０…ＲＡＩＤコントローラ（アレイコントローラ）、３１…リビルド制御部（ディスクアレイ再構築手段）、３２…ライト制御部、３３…ＲＡＭ、２１０-0，２１０-1…リザーブ領域、２１１-0，２１１-1，３３１…有効ＬＢＡ領域（最大アドレス保持手段）、３１１…コピー部（再構築用データリード手段、データ復元手段）、３１２…リビルド完了判定部（再構築完了判定手段）、３２１…有効ＬＢＡ判定部（最大アドレス判定手段）、３２２…有効ＬＢＡ更新部（最大アドレス更新手段）。
【図１】
2005107839.tif 000003
【図２】
2005107839.tif 000004
【図３】
2005107839.tif 000005
【図４】
2005107839.tif 000006
【図５】
2005107839.tif 000007
【図６】
2005107839.tif 000008
【図７】
2005107839.tif 000009