(57)【要約】【課題】ＲＡＩＤグループに空きの記憶領域を設けておきそれを利用する方法とは別の方法でＲＡＩＤレベルを変更することができる技術を提供する。【解決手段】ストレージシステムに備えられる複数の記憶装置に、ＲＡＩＤグループのメンバとしての記憶装置である二以上のメンバ記憶装置に加えて、ＲＡＩＤグループのメンバではないスペアの記憶装置が含まれる。ストレージシステムに備えられるコントローラが、ＲＡＩＤグループのＲＡＩＤレベルを第一のＲＡＩＤレベルから第二のＲＡＩＤレベルに変更することを、スペア記憶装置を利用して行う。【選択図】図４
2009037304.tif 000002
【特許請求の範囲】
【請求項１】
ＲＡＩＤグループのメンバとしての記憶装置である二以上のメンバ記憶装置とそのＲＡＩＤグループのメンバではないスペアの記憶装置である一又は複数のスペア記憶装置とを含んだ複数の記憶装置と、
前記ＲＡＩＤグループのＲＡＩＤレベルを、第一のＲＡＩＤレベルから、前記一又は複数のスペア記憶装置から選択されたスペア記憶装置を利用して第二のＲＡＩＤレベルに変更するコントローラと
を備えるストレージシステム。
【請求項２】
前記第一のＲＡＩＤレベルよりも前記第二のＲＡＩＤレベルの方が耐障害性に優れており、
前記コントローラが、前記二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が第一の閾値を超えた場合に、前記ＲＡＩＤグループのＲＡＩＤレベルを、前記第一のＲＡＩＤレベルから、前記選択されたスペア記憶装置を利用して前記第二のＲＡＩＤレベルに変更する、
請求項１記載のストレージシステム。
【請求項３】
前記コントローラが、前記二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が第二の閾値を超えた場合に、その或るメンバ記憶装置に記憶されている情報要素を前記複数のスペア記憶装置から選択された別のスペア記憶装置に書き込む情報退避処理を行うよう構成されており、
前記第一の閾値が前記第二の閾値よりも低い、
請求項２記載のストレージシステム。
【請求項４】
前記コントローラが、前記情報退避処理の後、前記ＲＡＩＤグループのＲＡＩＤレベルを、前記第二のＲＡＩＤレベルから前記第一のＲＡＩＤレベルに戻す、
請求項３記載のストレージシステム。
【請求項５】
前記コントローラが、前記或るメンバ記憶装置以外のメンバ記憶装置のエラーの発生度合いが所定の度合い以下の場合、及び／又は、各メンバ記憶装置のエラーの発生度合いが一定時間経っても所定の度合い以下の場合、前記ＲＡＩＤグループのＲＡＩＤレベルを、前記第二のＲＡＩＤレベルから前記第一のＲＡＩＤレベルに戻す、
請求項４記載のストレージシステム。
【請求項６】
前記第二のＲＡＩＤレベルは、前記ＲＡＩＤグループを構成する各記憶領域であるストライプ毎に少なくとも一つのパリティが生成されるＲＡＩＤレベルであり、
前記コントローラが、前記或るメンバ記憶装置に記憶されている情報要素を前記選択されたスペア記憶装置に書込み、ストライプ毎のパリティを前記或るメンバ記憶装置に書込む、
請求項２記載のストレージシステム。
【請求項７】
前記コントローラが、前記ＲＡＩＤグループから前記或るメンバ記憶装置を外し、前記選択されたスペア記憶装置を前記ＲＡＩＤグループのメンバとして管理することで、前記ＲＡＩＤグループのＲＡＩＤレベルを前記第二のＲＡＩＤレベルから前記第一のＲＡＩＤレベルに戻す、
請求項６記載のストレージシステム。
【請求項８】
前記第二のＲＡＩＤレベルは、前記ＲＡＩＤグループを構成する各記憶領域であるストライプ毎に少なくとも一つのパリティが生成されるＲＡＩＤレベルであり、
前記選択されたスペア記憶装置は複数個であり、
前記コントローラは、前記ＲＡＩＤグループを構成する複数のストライプについての複数のパリティを前記選択された複数のスペア記憶装置に分散させる、
請求項１記載のストレージシステム。
【請求項９】
前記第二のＲＡＩＤレベルは、前記ＲＡＩＤグループを構成する各記憶領域であるストライプ毎に少なくとも一つのパリティが生成されるＲＡＩＤレベルであり
前記コントローラは、前記ＲＡＩＤグループを構成する複数のストライプについての複数のパリティを、前記選択されたスペア記憶装置と前記二以上のメンバ記憶装置とに分散させる、
請求項１記載のストレージシステム。
【請求項１０】
前記第一のＲＡＩＤレベルから前記第二のＲＡＩＤレベルへの変更では、前記ＲＡＩＤグループを構成する記憶領域であるストライプ毎に、前記二以上のメンバ記憶装置から情報要素を読出す必要があり、
前記ＲＡＩＤグループの記憶空間を基に論理ボリュームが形成されており、前記論理ボリュームが複数の記憶領域である複数のページで構成されており、
前記コントローラが、前記ストレージシステムの外部から受信したライトコマンドが、仮想的なボリュームにおける仮想的な記憶領域を指定している場合、前記複数のページから選択されたページを前記仮想的な記憶領域に割り当て、割り当てたページに、前記ライトコマンドに従う情報要素を書込むよう構成されており、前記第一のＲＡＩＤレベルから前記第二のＲＡＩＤレベルへの変更では、前記仮想的な論理ボリュームに割当てられているページに対応したストライプについてのみ、情報要素の読出しを行う、
請求項１記載のストレージシステム。
【請求項１１】
前記一又は複数のスペア記憶装置は、複数のＲＡＩＤグループに共用である、
請求項１記載のストレージシステム。
【請求項１２】
前記コントローラが、キャッシュメモリを有し、前記ストレージシステムの外部からライトコマンドを受信し、そのライトコマンドに基づく情報要素を前記キャッシュメモリに書込み、その場合に、前記外部に書込み完了を報告し、それと非同期で、その情報要素を前記ＲＡＩＤグループに書き込むよう構成されており、もし、前記ＲＡＩＤグループのＲＡＩＤレベルの変更中であれば、前記キャッシュメモリに記憶されている情報要素を前記ＲＡＩＤグループに書き込むことを待ち、ＲＡＩＤレベルの変更が終了した後に、その情報要素を前記ＲＡＩＤグループに書き込む、
請求項１記載のストレージシステム。
【請求項１３】
前記第二のＲＡＩＤレベルは、前記ＲＡＩＤグループを構成する各記憶領域であるストライプ毎に、前記第一のＲＡＩＤレベルよりも多くのパリティが生成されるレベルである、
請求項１記載のストレージシステム。
【請求項１４】
前記コントローラが、前記二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が、第一の閾値を超えた場合に、前記ＲＡＩＤグループを構成するストライプ毎に、ストライプに記憶されている二以上の情報要素の読出しと、前記二以上の情報要素に基づくパリティの生成と、生成されたパリティの前記選択されたスペア記憶装置に対する書込みとを実行し、前記選択されたスペア記憶装置を前記ＲＡＩＤグループの更なるメンバとして管理することで、前記ＲＡＩＤグループのＲＡＩＤレベルを、前記第一のＲＡＩＤレベルから前記第二のＲＡＩＤレベルに変更する、
請求項１３記載のストレージシステム。
【請求項１５】
前記コントローラが、前記二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が第二の閾値を超えた場合に、その或るメンバ記憶装置に記憶されている情報要素を、前記複数のスペア記憶装置から選択された別のスペア記憶装置に書き込む情報退避処理を行うよう構成されており、
前記第一の閾値が前記第二の閾値よりも低い、
請求項１４記載のストレージシステム。
【請求項１６】
前記コントローラが、前記情報退避処理の後、前記選択された別のスペア記憶装置に記憶されている情報要素を、前記或るメンバ記憶装置が前記ストレージシステムから取り外され前記或るメンバ記憶装置の代わりに搭載された記憶装置である交換後メンバ記憶装置に書込み、前記ＲＡＩＤグループのメンバから前記選択されたスペア記憶装置を外すことで、前記ＲＡＩＤグループのＲＡＩＤレベルを、前記第二のＲＡＩＤレベルから前記第一のＲＡＩＤレベルに戻す、
請求項１５記載のストレージシステム。
【請求項１７】
前記コントローラが、前記ＲＡＩＤグループを構成するストライプ毎に、前記或るメンバ記憶装置に記憶されている情報要素を前記選択されたスペア記憶装置に書込み、前記ストライプ毎のパリティを前記或るメンバ記憶装置に書込み、前記ＲＡＩＤグループから前記或るメンバ記憶装置を外すことで、前記ＲＡＩＤグループのＲＡＩＤレベルを前記第二のＲＡＩＤレベルから前記第一のＲＡＩＤレベルに戻す、
請求項１４記載のストレージシステム。
【請求項１８】
ＲＡＩＤグループを構成する二以上の記憶装置と、
キャッシュメモリを有したコントローラと
を備え、
前記コントローラが、前記ストレージシステムの外部からライトコマンドを受信し、そのライトコマンドに基づく情報要素を前記キャッシュメモリに書込み、その場合に、前記外部に書込み完了を報告し、それと非同期で、その情報要素を前記ＲＡＩＤグループに書き込むよう構成されており、もし、前記ＲＡＩＤグループのＲＡＩＤレベルの変更中であれば、その情報要素を前記ＲＡＩＤグループに書き込むことを待ち、ＲＡＩＤレベルの変更が終了した後に、その情報要素を前記ＲＡＩＤグループに書き込む、
ストレージシステム。
【請求項１９】
ＲＡＩＤグループのメンバとしての記憶装置である二以上のメンバ記憶装置とそのＲＡＩＤグループのメンバではないスペアの記憶装置とを含んだ複数の記憶装置と、
前記二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が第二の閾値を超えた場合に、その或るメンバ記憶装置に記憶されている情報要素を前記スペアの記憶装置に書き込む情報退避処理を行うコントローラと
を備え、
前記コントローラが、前記情報退避処理を行う前に、前記ＲＡＩＤグループのＲＡＩＤレベルを、第一のＲＡＩＤレベルから、前記第一のＲＡＩＤレベルよりも耐障害性に優れた第二のＲＡＩＤレベルに変更する、
ストレージシステム。
【請求項２０】
前記コントローラが、前記外部に対するインタフェース装置である上位Ｉ／Ｆと、前記複数の記憶装置に対するインタフェース装置である下位Ｉ／Ｆとを含み、
前記上位Ｉ／Ｆが、前記外部からライトコマンドを受信することと、そのライトコマンドに基づく情報要素を前記キャッシュメモリに書込むことと、前記外部に書込み完了を報告することを行うよう構成されており、
前記下位Ｉ／Ｆが、前記キャッシュメモリに記憶された情報要素を前記ＲＡＩＤグループに書き込むことと、前記ＲＡＩＤグループのＲＡＩＤレベルの変更を行うことと、ＲＡＩＤレベルの変更中であれば前記キャッシュメモリに記憶されている情報要素を前記ＲＡＩＤグループに書き込むことを待ち、ＲＡＩＤレベルの変更が終了した後に、その情報要素を前記ＲＡＩＤグループに書き込むこととを行うよう構成されている、
請求項１２記載のストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＡＩＤグループを有するストレージシステムに関する。
【背景技術】
【０００２】
ＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）と呼ばれる技術では、任意のＲＡＩＤレベル（例えばＲＡＩＤ５、ＲＡＩＤ６）でデータを記憶するＲＡＩＤグループが構築される。ＲＡＩＤグループは、任意の数の物理記憶装置で構成される。
【０００３】
ＲＡＩＤレベルを変更する技術が知られている。その種の技術が、例えば、特許文献１に開示されている。特許文献１によれば、任意の台数のディスクで構成されているアレイグループ（ＲＡＩＤグループに相当）が、複数の冗長グループに分割される。各アレイグループでは、少なくとも一つの冗長グループが未使用冗長グループとされている。一つのアレイグループにおいて、ＲＡＩＤタイプ（ＲＡＩＤレベルに相当）が変更される場合には、冗長グループに記憶されているデータが未使用冗長グループに移動されることと、移動元の冗長グループが未使用冗長グループに変更されることとが、変更対象のＲＡＩＤタイプに関わる各冗長グループについて行われることにより、ＲＡＩＤタイプが変更される。
【０００４】
【特許文献１】特開２００６−３１８０１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１によれば、ＲＡＩＤグループを構成する各冗長グループは、全てのディスクに跨っており、複数の冗長グループのうちの少なくとも一つが未使用冗長グループとされる。このため、ＲＡＩＤグループにおける或るディスクにエラーが発生し易くなってきても、エラーの発生し易くなってきたそのディスクが、ＲＡＩＤレベルの変更のためのデータの移動先とされることになる。
【０００６】
従って、本発明の一つの目的は、ＲＡＩＤグループに空きの記憶領域を設けておきそれを利用する方法とは別の方法でＲＡＩＤレベルを変更することができる技術を提供することにある。
【０００７】
本発明の他の目的は、後の説明から明らかになるであろう。
【課題を解決するための手段】
【０００８】
ストレージシステムに備えられる複数の記憶装置に、ＲＡＩＤグループのメンバとしての記憶装置である二以上のメンバ記憶装置に加えて、ＲＡＩＤグループのメンバではないスペアの記憶装置が含まれる。ストレージシステムに備えられるコントローラが、ＲＡＩＤグループのＲＡＩＤレベルを第一のＲＡＩＤレベルから第二のＲＡＩＤレベルに変更することを、スペア記憶装置を利用して行う。
【発明を実施するための最良の形態】
【０００９】
実施形態１では、ストレージシステムが、複数の記憶装置と、コントローラとを備える。複数の記憶装置には、ＲＡＩＤグループのメンバとしての記憶装置である二以上のメンバ記憶装置と、そのＲＡＩＤグループのメンバではないスペアの記憶装置である一又は複数のスペア記憶装置とが含まれる。コントローラは、ＲＡＩＤグループのＲＡＩＤレベルを、第一のＲＡＩＤレベルから、一又は複数のスペア記憶装置から選択されたスペア記憶装置を利用して第二のＲＡＩＤレベルに変更する。
【００１０】
実施形態２では、実施形態１において、第一のＲＡＩＤレベルよりも第二のＲＡＩＤレベルの方が耐障害性に優れている（例えば、第一のＲＡＩＤレベルよりも第二のＲＡＩＤレベルの方が、ストライプ毎に生成されるパリティの数が多い）。コントローラが、二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が第一の閾値を超えた場合に、ＲＡＩＤグループのＲＡＩＤレベルを、第一のＲＡＩＤレベルから、上記選択されたスペア記憶装置を利用して第二のＲＡＩＤレベルに変更する。
【００１１】
実施形態３では、実施形態２において、コントローラが、二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が第二の閾値を超えた場合に、その或るメンバ記憶装置に記憶されている情報要素を、複数のスペア記憶装置から選択された別のスペア記憶装置に書き込む情報退避処理を行うよう構成されている。実施形態３では、第一の閾値が第二の閾値よりも低い。
【００１２】
実施形態４では、実施形態３において、コントローラが、情報退避処理の後、ＲＡＩＤグループのＲＡＩＤレベルを、第二のＲＡＩＤレベルから第一のＲＡＩＤレベルに戻す。
【００１３】
実施形態５では、実施形態４において、コントローラが、或るメンバ記憶装置以外のメンバ記憶装置のエラーの発生度合いが所定の度合い以下の場合、及び／又は、各メンバ記憶装置のエラーの発生度合いが一定時間経っても所定の度合い以下の場合、ＲＡＩＤグループのＲＡＩＤレベルを、第二のＲＡＩＤレベルから前記第一のＲＡＩＤレベルに戻す。言い換えれば、それ以外の場合、コントローラは、ＲＡＩＤグループのＲＡＩＤレベルを第二のＲＡＩＤレベルに維持する。
【００１４】
実施形態６では、実施形態２乃至５のうちの少なくとも一つにおいて、第二のＲＡＩＤレベルは、ＲＡＩＤグループを構成する各記憶領域であるストライプ毎に少なくとも一つのパリティが生成されるＲＡＩＤレベルである。コントローラが、或るメンバ記憶装置に記憶されている情報要素を上記選択されたスペア記憶装置に書込み、ストライプ毎のパリティを或るメンバ記憶装置に書込む。
【００１５】
実施形態７では、実施形態６において、コントローラが、ＲＡＩＤグループから或るメンバ記憶装置を外し（例えば、ＲＡＩＤグループから或るメンバ記憶装置が外れた内容に所定のテーブルを更新し）、上記選択されたスペア記憶装置をＲＡＩＤグループのメンバとして管理することで（例えば、ＲＡＩＤグループにスペア記憶装置が含まれるよう所定のテーブルを更新することで）、ＲＡＩＤグループのＲＡＩＤレベルを第二のＲＡＩＤレベルから第一のＲＡＩＤレベルに戻す。
【００１６】
実施形態８では、実施形態１乃至７のうちの少なくとも一つにおいて、第二のＲＡＩＤレベルは、ＲＡＩＤグループのストライプ毎に少なくとも一つのパリティが生成されるＲＡＩＤレベルである。上記選択されたスペア記憶装置は複数個である。コントローラは、ＲＡＩＤグループを構成する複数のストライプについての複数のパリティを上記選択された複数のスペア記憶装置に分散させる。
【００１７】
実施形態９では、実施形態１乃至８のうちの少なくとも一つにおいて、第二のＲＡＩＤレベルは、ＲＡＩＤグループを構成する各記憶領域であるストライプ毎に少なくとも一つのパリティが生成されるＲＡＩＤレベルである。コントローラは、ＲＡＩＤグループを構成する複数のストライプについての複数のパリティを、上記選択されたスペア記憶装置と上記二以上のメンバ記憶装置とに分散させる。
【００１８】
実施形態１０では、実施形態１乃至９のうちの少なくとも一つにおいて、第一のＲＡＩＤレベルから第二のＲＡＩＤレベルへの変更では、ＲＡＩＤグループを構成する記憶領域であるストライプ毎に、二以上のメンバ記憶装置から情報要素（後述するデータ要素とパリティのうちのいずれか一方）を読出す必要がある。ＲＡＩＤグループの記憶空間を基に論理ボリュームが形成されており、論理ボリュームが複数の記憶領域である複数のページで構成されている。コントローラが、ストレージシステムの外部（例えば、アプリケーション、スイッチ装置、或いはホスト計算機、以下、便宜上、「ホスト」と呼ぶ）から受信したライトコマンドが、仮想的なボリュームにおける仮想的な記憶領域を指定している場合、複数のページから選択されたページをその仮想的な記憶領域に割り当て、割り当てたページに、上記ライトコマンドに従う情報要素を書込むよう構成されている。この場合、コントローラは、第一のＲＡＩＤレベルから第二のＲＡＩＤレベルへの変更では、仮想的な論理ボリュームに割当てられているページに対応したストライプについてのみ、情報要素の読出しを行う。
【００１９】
実施形態１１では、実施形態１乃至１０（及び後述の実施形態１２乃至２０）のうちの少なくとも一つにおいて、一又は複数のスペア記憶装置は、複数のＲＡＩＤグループに共用である。
【００２０】
実施形態１２では、実施形態１乃至１１のうちの少なくとも一つにおいて、コントローラが、キャッシュメモリを有する。コントローラは、ホストからライトコマンドを受信し、そのライトコマンドに基づく情報要素をキャッシュメモリに書込み、その場合に、ホストに書込み完了を報告し、それと非同期で、その情報要素をＲＡＩＤグループに書き込むよう構成されている。コントローラは、もし、ＲＡＩＤグループのＲＡＩＤレベルの変更中であれば、キャッシュメモリに記憶されている情報要素をＲＡＩＤグループに書き込むことを待ち、ＲＡＩＤレベルの変更が終了した後に、その情報要素をＲＡＩＤグループに書き込む。
【００２１】
実施形態１３では、実施形態１乃至１２の少なくとも一つにおいて、第二のＲＡＩＤレベルは、ＲＡＩＤグループを構成する各記憶領域であるストライプ毎に、第一のＲＡＩＤレベルよりも多くのパリティが生成されるレベルである。具体的には、例えば、第二のＲＡＩＤレベルは、ＲＡＩＤ６であり、第一のＲＡＩＤレベルは、ＲＡＩＤ５である。
【００２２】
実施形態１４では、実施形態１３において、コントローラが、二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が、第一の閾値を超えた場合に、ＲＡＩＤグループを構成するストライプ毎に、ストライプに記憶されている二以上の情報要素の読出しと、二以上の情報要素に基づくパリティの生成と、生成されたパリティの上記選択されたスペア記憶装置に対する書込みとを実行する。コントローラは、上記選択されたスペア記憶装置をＲＡＩＤグループの更なるメンバとして管理することで、ＲＡＩＤグループのＲＡＩＤレベルを、第一のＲＡＩＤレベルから第二のＲＡＩＤレベルに変更する。
【００２３】
実施形態１５では、実施形態１４において、コントローラが、前述した情報退避処理（例えば後述のダイナミックスペアリング）を行うよう構成されており、第一の閾値が前記第二の閾値よりも低い。
【００２４】
実施形態１６では、実施形態１５において、コントローラが、情報退避処理の後、上記別のスペア記憶装置に記憶されている情報要素を、上記或るメンバ記憶装置がストレージシステムから取り外されその或るメンバ記憶装置の代わりに搭載された記憶装置である交換後メンバ記憶装置に書込み、ＲＡＩＤグループのメンバから上記選択されたスペア記憶装置を外すことで、ＲＡＩＤグループのＲＡＩＤレベルを、第二のＲＡＩＤレベルから第一のＲＡＩＤレベルに戻す。
【００２５】
実施形態１７では、実施形態１４において、コントローラが、ＲＡＩＤグループを構成するストライプ毎に、或るメンバ記憶装置に記憶されている情報要素を上記選択されたスペア記憶装置に書込み、ストライプ毎のパリティを或るメンバ記憶装置に書込み、ＲＡＩＤグループからその或るメンバ記憶装置を外すことで、ＲＡＩＤグループのＲＡＩＤレベルを第二のＲＡＩＤレベルから第一のＲＡＩＤレベルに戻す。
【００２６】
実施形態１８では、コントローラが、ホストからライトコマンドを受信し、そのライトコマンドに基づく情報要素をキャッシュメモリに書込み、その場合に、ホストに書込み完了を報告し、それと非同期で、その情報要素をＲＡＩＤグループに書き込むよう構成されている。コントローラは、もし、ＲＡＩＤグループのＲＡＩＤレベルの変更中であれば、キャッシュメモリに記憶されている情報要素をＲＡＩＤグループに書き込むことを待ち、ＲＡＩＤレベルの変更が終了した後に、その情報要素を前記ＲＡＩＤグループに書き込む。この実施形態１８では、ＲＡＩＤレベルの変更は、スペア記憶装置を利用する方法に代えて、ＲＡＩＤグループに空き領域を設けておきその空き領域を利用する方法が採用されても良い。すなわち、実施形態１８では、スペアの記憶装置の存在は必須でなくても良い。
【００２７】
実施形態１９では、コントローラが、情報退避処理を行う前に、ＲＡＩＤグループのＲＡＩＤレベルを、第一のＲＡＩＤレベルから、第一のＲＡＩＤレベルよりも耐障害性に優れた第二のＲＡＩＤレベルに変更する。この実施形態１９では、ＲＡＩＤレベルの変更は、スペア記憶装置を利用する方法に代えて、ＲＡＩＤグループに空き領域を設けておきその空き領域を利用する方法が採用されても良い。具体的には、例えば、コントローラは、上記第二の閾値よりも低い第一の閾値を、二以上のメンバ記憶装置のうちの或るメンバ記憶装置のエラーの発生度合が超えた場合に、上記のＲＡＩＤレベルの変更を行う。
【００２８】
実施形態２０では、実施形態１２又は１８において、コントローラが、ホストに対するインタフェース装置である上位Ｉ／Ｆと、複数の記憶装置に対するインタフェース装置である下位Ｉ／Ｆとを含む。上位Ｉ／Ｆが、ホストからライトコマンドを受信することと、そのライトコマンドに基づく情報要素をキャッシュメモリに書込むことと、ホストに書込み完了を報告することを行うよう構成されている。下位Ｉ／Ｆが、キャッシュメモリに記憶された情報要素をＲＡＩＤグループに書き込むことと、ＲＡＩＤグループのＲＡＩＤレベルの変更を行うことと、ＲＡＩＤレベルの変更中であればキャッシュメモリに記憶されている情報要素をＲＡＩＤグループに書き込むことを待ち、ＲＡＩＤレベルの変更が終了した後に、その情報要素をＲＡＩＤグループに書き込むこととを行うよう構成されている。
【００２９】
上述した複数の実施形態１乃至２０のうちの二以上の実施形態を組み合わせることができる。また、前述したストレージシステムは、一又は複数のストレージサブシステムで構成することができる。上述したコントローラは、例えば、プロセッサとメモリとを備えた回路とすることができる。プロセッサがメモリからコンピュータプログラムを読み込んで実行することで、上述したＲＡＩＤレベルの変更などの種々の処理を行うことができる。コンピュータプログラムは、ＣＤ−ＲＯＭ等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
【００３０】
以下、図面を参照して本発明の幾つかの実施形態を詳細に説明する。
【００３１】
＜第一の実施形態＞。
【００３２】
図１は、本発明の第一の実施形態に係る計算機システムの構成を示す。
【００３３】
第一の通信ネットワーク、例えばＳＡＮ２００に、一又は複数のホスト計算機１００と、ストレージシステム３００が接続されている。
【００３４】
ホスト計算機１００は、例えば、ＣＰＵ（Central Processing Unit）やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成される。
【００３５】
ストレージシステム３００は、例えば、アレイ状に配列された多数のディスクドライブ３２１を備えるＲＡＩＤシステムとすることができる。ストレージシステム３００は、ストレージ制御部３１０と、ストレージ部３２０とに大別することができる。
【００３６】
ストレージ制御部３１０は、例えば、複数（又は一つ）のチャネルアダプタ（以下、ＣＨＡ）３１１と、複数（又は一つ）のディスクアダプタ（以下、ＤＫＡ）３１５と、キャッシュメモリ（図では「ＣＭ」と略記）３１６と、共有メモリ（図では「ＳＭ」と略記）３１２と、接続部３１３と、サービスプロセッサ（以下、「ＳＶＰ」と略記）３１７とを備えている。
【００３７】
ＣＨＡ３１１は、ホスト計算機１００或いは他のストレージシステムとの間のデータ通信を行うインタフェース装置である。ＣＨＡ３１１は、例えば、マイクロプロセッサ（以下、ＭＰ）３１１２、メモリ３１１３、ポート３１１１等を備えたマイクロコンピュータシステム（例えば回路基盤）として構成することができる。
【００３８】
ＤＫＡ３１５は、ディスクドライブ３２１との間のデータ通信を行うインタフェース装置である。ＤＫＡ３１５は、例えば図２に例示するように、接続部Ｉ／Ｆ３１５２（接続部３１３を介した通信を行うためのインタフェース装置）、ディスクＩ／Ｆ３１５１（ディスクドライブ３２１と通信するためのインタフェース装置）、マイクロプロセッサ（以下、ＭＰ）３１５４、メモリ３１５６、ＤＲＲ（Data Recovery and Reconstruct）回路３１５５及び転送制御回路３１５３（ＤＫＡ３１５上に備えられる要素３１５１、３１５２、３１５４、３１５５及び３１５６間でのデータ転送を制御する回路）を備えたマイクロコンピュータシステム（例えば回路基盤）として構成することができる。ＤＲＲ回路（以下、単に「ＤＲＲ」と言う）３１５５は、指定された複数の情報要素を入力とし、それら複数の情報要素を基にパリティを生成しその生成されたパリティを出力するハードウェア回路である。なお、本実施形態の説明で用いる「情報要素」とは、後述するデータ要素とパリティのいずれか一方を指す。ＤＲＲ回路に入力される複数の情報要素には、少なくとも一つのデータ要素が含まれる。メモリ３１５６には、例えば、ホスト計算機１００からのＩＯコマンド（入出力コマンド）の処理の一環としてディスクドライブ３２１に対する入出力を行うＩＯプログラム３１５６０と、ＲＡＩＤレベルの変更のための処理を行うＲＡＩＤレベル制御プログラム３１５６１と、後述のダイナミックスペアリングを実行するダイナミックスペアリング実行プログラム３１５６２とが記憶される。ＭＰ３１５４は、それらのコンピュータプログラム３１５６０、３１５６１及び３１５６２をそれぞれ実行することで、ディスクドライブ３２１に対するデータの入出力や、ＲＡＩＤレベルの変更や、ダイナミックスペアリングが実行される。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するプロセッサによって処理が行われるものとする。
【００３９】
キャッシュメモリ３１６は、例えば、揮発性又は不揮発性のメモリであり、ホスト計算機１００から受信したデータや、ディスクドライブ３２１から読出されたデータを、一時的に記憶する。
【００４０】
共有メモリ３１２は、例えば、揮発性又は不揮発性のメモリであり、ＣＨＡ３１１或いはＤＫＡ３１５に参照される情報が格納される。共有メモリ３１２に記憶される情報としては、例えば、後述するエラーレート閾値Ａ（以下、単に「閾値Ａ」と言う）、エラーレート閾値Ｂ（以下、単に「閾値Ｂ」と言う）及び管理テーブル群がある。管理テーブル群には、例えば、ＲＡＩＤレベル管理テーブル３１２１（図３Ａ参照）、ＬＤＥＶ管理テーブル３１２２（図３Ｂ参照）、及びディスク管理テーブル３１２４（図３Ｃ参照）がある。各テーブル３１２１、３１２２、及び３１２４については後に詳述する。
【００４１】
接続部３１３は、ＣＨＡ３１１、ＤＫＡ３１５、キャッシュメモリ３１６、共有メモリ３１２及びＳＶＰ３１７を相互に接続させる。接続部３１３としては、例えば、バス、或いは、高速スイッチング動作によってデータ伝送を行う超高速クロスバススイッチを採用することができる。
【００４２】
ＳＶＰ３１７は、ストレージシステム３００を保守及び／又は管理するための装置（例えば回路基板）である。ＳＶＰ３１７は、第二の通信ネットワーク、例えばＬＡＮ５００に接続されており、ＬＡＮ５００を介して、保守端末（例えばパーソナルコンピュータ等の計算機）６００と通信することができる。ＳＶＰ３１７を制御コンソールとし、保守端末６００をそれの入出力コンソールとすることができる。
【００４３】
ストレージ部３２０には、複数のディスクドライブ（以下、単に「ディスク」と言う）３２１が含まれている。二以上のディスク３２１により、所定のＲＡＩＤレベルのＲＡＩＤグループ３２３を構成することができる。ＲＡＩＤグループ３２３を構成する二以上のディスク３２１の記憶空間を用いて、一又は複数の論理的な記憶装置（以下、「ＬＤＥＶ」と記載する）３２２を形成することができる。ＬＤＥＶは、論理ユニット（ＬＵ）或いは論理ボリュームと言い換えられても良い。ディスク３２１としては、例えば、ハードディスク、フレキシブルディスク、光ディスク等のような、ディスク型の記憶メディアのドライブを用いることができる。また、ディスク３２１に代えて、磁気テープドライブ、或いは半導体メモリ（例えばフラッシュメモリ）ドライブなど、他種の物理的な記憶装置が採用されても良い。
【００４４】
以上が、本実施形態に係る計算機システムの構成である。なお、この構成は、一例であり、他の構成が採用されてもよい。例えば、共有メモリ３１２とキャッシュメモリ３１６は、別々のメモリでなく、一つのメモリに共有メモリ領域とキャッシュメモリ領域とが設けられても良い。また、例えば、ストレージ制御部３１０は、ＣＰＵ、メモリ及び複数の通信ポートを備えた回路基盤（すなわち、図１のストレージ制御部よりもシンプルな構成）であっても良い。この場合、そのＣＰＵが、複数のＣＨＡ３１１やＤＫＡ３１５によって行われる処理を実行することができる。
【００４５】
以下、共有メモリ３１２に記憶される管理テーブル群における各種テーブルについて説明する。
【００４６】
図３Ａは、ＲＡＩＤレベル管理テーブル３１２１の構成例を示す。
【００４７】
ＲＡＩＤレベル管理テーブル３１２１には、ＬＤＥＶ３２２毎に、ＬＤＥＶ３２２を識別するためのＬＤＥＶ番号（例えば“ＬＤＥＶ＃０”）と、ＲＡＩＤレベル（例えば“ＲＡＩＤ５”）と、ディスク構成と、ＲＡＩＤレベル状態とが記録される。以下、或るＬＤＥＶを指す場合、ＬＤＥＶ番号でＬＤＥＶを指し、特にＬＤＥＶ番号それ自体を意味する場合には、「“」、「”」という記号を用いることにする。具体的には、例えば、ＬＤＥＶ番号が“ＬＤＥＶ＃０”のＬＤＥＶ３２２を指す場合には、単に、「ＬＤＥＶ＃０」と言うことにする。
【００４８】
「ディスク構成」とは、ＲＡＩＤグループ３２３における一つのストライプ（ストライプの意味については後述する）に存在する情報要素の種類を表す。具体的には、例えば、ディスク構成の値“３Ｄ＋１Ｐ”は、ホスト計算機１００に参照される３つのデータ要素と、それら３つのデータ要素を基に生成された一つのパリティとが、一つのストライプに書き込まれることを意味する。
【００４９】
ＲＡＩＤレベル状態を表す値としては、ＲＡＩＤレベルが確定していることを意味する“確定”と、ＲＡＩＤレベルが変更中であることを意味する値とがある。ＲＡＩＤレベルが変更中であることを意味する値としては、例えば、ＲＡＩＤレベルがＸからＹに変更されている最中である場合には、ＲＡＩＤレベル状態を表す値として、“Ｘ−Ｙ”が記録される（Ｘ及びＹは、任意のＲＡＩＤレベルを表す値、例えばＲＡＩＤ５、ＲＡＩＤ６など）。
【００５０】
図３Ｂは、ＬＤＥＶ管理テーブル３１２２の構成例を示す。
【００５１】
ＬＤＥＶ管理テーブル３１２２には、ＬＤＥＶ３２２毎に、ＲＡＩＤグループ番号（例えば“ＲＧ＃０）”と、ＬＤＥＶ番号（例えば“ＬＤＥＶ＃０”）と、ＬＤＥＶ３２２に関わる複数のディスク３２１をそれぞれ表すディスク番号（例えば“ディスク＃１”、“ディスク＃２”、“ディスク＃３”及び“ディスク＃４”）とが記録される。ＲＡＩＤグループ番号は、ＬＤＥＶの基になっているＲＡＩＤグループを表す番号である。
【００５２】
図３Ｃは、ディスク管理テーブル３１２４の構成例を示す。
【００５３】
ディスク管理テーブル３１２４には、ディスク３２１毎に、ディスクＩＤ（例えば、“ディスクＡ”）と、ディスク番号（例えば、“ディスク＃１”）と、ディスク状態及びエラーレートとが記録される。ディスク状態を表す値としては、例えば、ディスク３２１が正常であることを意味する“正常”と、ディスク３２１についてのエラーレートが閾値Ａ若しくは閾値Ｂを超えたことを意味する“閾値Ａ_over”或いは“閾値Ｂ_over”がある。
【００５４】
ディスクＩＤとは、ディスク３２１に固有のＩＤであり、不変であるのに対し、ディスク番号とは、入れ替えることができる。ＲＡＩＤグループを基に形成された各ＬＤＥＶの基になっているディスク３２１はディスク番号で表されているため、ＲＡＩＤグループのメンバとなっているディスク３２１は、ディスクＩＤとディスク番号の組合せから一意に特定することができる。以下、或るディスク３２１を指す場合、ディスク番号でディスクを指し、特にディスク番号それ自体を意味する場合には、「“」、「”」という記号を用いることにする。具体的には、例えば、ディスク番号が“ディスク＃３”のディスク３２１を指す場合には、単に、「ディスク＃３」と言うことにする。なお、一つのディスク３２１に割当てるディスク番号を入れ替えることができるため、例えば、“ディスク＃３”が割当てられているディスク（以下、対象ディスクＣ）に、“ディスク＃３”に代えて“スペア１”というディスク番号が割当てられた場合、対象ディスクＣはスペア１となり、スペアとして管理される。
【００５５】
以下、本実施形態で行われる処理の概要を説明する。
【００５６】
ストレージシステム３００に、複数（又は一つ）のＲＡＩＤグループ３２３について、複数（又は一つ）のスペアのディスク３２１が備えられている。スペアのディスク３２１は、例えば、一のＲＡＩＤグループ３２３の専用のスペアとして用意されているのではなく、複数のＲＡＩＤグループ３２３に共用のスペアとして用意されている。ＤＫＡ３１５のＭＰ３１５４で実行されるＲＡＩＤレベル制御プログラム３１５６１が、スペアディスクを利用して、ＲＡＩＤレベルの変更に関わる処理（以下、ＲＡＩＤレベル変更処理）を実行する。ＲＡＩＤレベル変更処理の最中でも、ホスト計算機１００からＩＯコマンドは受け付けられる。つまり、ＲＡＩＤレベル変更処理をオンライン中に行うことが可能である。
【００５７】
ＲＡＩＤレベル変更処理としては、ＲＡＩＤレベルをより耐障害性に優れたＲＡＩＤレベルに変更する処理（以下、便宜上「ＲＡＩＤアップ処理」と呼ぶ）と、ＲＡＩＤレベルをより耐障害性に劣ったＲＡＩＤレベルに変更する処理（以下、便宜上「ＲＡＩＤダウン処理」と呼ぶ）がある。ＲＡＩＤアップ処理を行う契機として、ディスク３２１についてのエラーレートが利用される。エラーレートとしては、エラーの発生回数或いは発生頻度を採用することができる。
【００５８】
具体的には、共有メモリ３１２に、ダイナミックスペアリングを実行するか否かの判断に利用される閾値Ｂと、ＲＡＩＤアップ処理を実行するか否かの判断に利用される閾値Ａとが記憶される。閾値Ａは、閾値Ｂよりも低い値である。
【００５９】
ＤＫＡ３１５のＭＰ３１５４で実行されるＩＯプログラム３１５６０が、ディスク３２１のエラーレートを監視する。ディスク３２１のエラーとしては、様々なエラー、例えば、ディスク３２１にＩＯコマンドを送信してから所定時間以内に応答がそのディスク３２１から返ってこない、ベリファイ処理（ディスク３２１に書き込んだデータをディスク３２１から読出しその読み出したデータと書き込んだデータとを比較する処理）の結果として不一致が検出された等を採用することができる。本実施形態では、ベリファイ処理の結果として不一致が検出されたことを、ディスク３２１のエラーが検出されたこととする。また、本実施形態では、ベリファイ処理の最中も、ホスト計算機１００からのＩＯコマンドの受け付け及び処理が行われるため、そのベリファイ処理のことを「オンラインベリファイ」と呼ぶことにする。
【００６０】
ＩＯプログラム３１５６０は、例えば、図３１に例示するように、ディスク３２１に情報要素を書込む都度に（Ｓ３１１：ＹＥＳ）、書込まれた情報要素をそのディスク３２１から読出し、読み出した情報要素と、そのディスク３２１に書込んだ情報要素（例えばＤＫＡ３１５のメモリ３１５６又はキャッシュメモリ３１６に残っている情報要素）とを比較する（Ｓ３１２）。その結果、不一致を検出した場合（Ｓ３１３：ＹＥＳ）、ＩＯプログラム３１５６０は、ライト要求の発行先のディスク３２１（例えばディスク＃３）に対応したエラーレート（ディスク管理テーブル３１２４に記録されているエラーレート）を更新し、更新後のエラーレート（図３１では“Ｋ”という文字で表している）と閾値Ａ及びＢとの比較を行う。
【００６１】
ＩＯプログラム３１５６０は、或るディスク（以下、便宜上、「ディスク＃３」とする）の更新後のエラーレートＫが、閾値Ａ以下であれば（Ｓ３１４Ａ：ＹＥＳ）、Ｓ３１１に戻り、閾値Ａより大きく閾値Ｂ以下であれば（Ｓ３１４Ａ：ＮＯ、Ｓ３１４Ｂ：ＹＥＳ）、ディスク＃３に対応したディスク状態を“閾値Ａ_over”に変更し（図２４Ａ参照）、ＲＡＩＤレベル制御プログラム３１５６１を呼び出し、ＲＡＩＤアップ処理を実行させる。
【００６２】
その後、ディスク＃３についてエラーが更に発生し、更新後のエラーレートＫが、閾値Ｂより大きければ（Ｓ３１４Ａ：ＮＯ、Ｓ３１４Ｂ：ＮＯ、Ｓ３１４Ｃ：ＹＥＳ）、ＩＯプログラム３１５６０は、ディスク＃３に対応したディスク状態を“閾値Ｂ_over”に変更し（図２４Ｂ参照）、ダイナミックスペアリング実行プログラム３１５６２を呼び出し、ダイナミックスペアリングを実行させる。
【００６３】
なお、ダイナミックスペアリングの後、コピーバックが行われる。コピーバックに付随して、ＲＡＩＤダウン処理が行われる。
【００６４】
以下、ＲＡＩＤアップ処理、ダイナミックスペアリング、コピーバック及びＲＡＩＤダウン処理について説明する。ＲＡＩＤアップ処理及びＲＡＩＤダウン処理では、どのＲＡＩＤレベルからどのＲＡＩＤレベルへの変更が行われても良いが、以下の説明では、ＲＡＩＤアップ処理では、ＲＡＩＤ５（３Ｄ＋１Ｐ）からＲＡＩＤ６（３Ｄ＋１Ｐ＋１Ｑ）への変更が行われ、ＲＡＩＤダウン処理では、ＲＡＩＤ６（３Ｄ＋１Ｐ＋１Ｑ）からＲＡＩＤ５（３Ｄ＋１Ｐ）に戻されることを例に採る（Ｐは、第一のパリティ、Ｑは、第二のパリティをそれぞれ意味する）。なお、その例を採用する理由は、例えば以下の通りである。
【００６５】
近年、１つのディスクの記憶容量が増加しており、この為、ディスク内のデータ要素を全てコピーすることに要する時間が長くなっている。このような長時間のコピーでは、ＲＡＩＤ５で１つのディスクに障害が発生しデータ復旧の為のコピーを実施している際に、更にもう１つのディスクにも障害が発生するという二重ディスク障害の発生頻度が高まる。ＲＡＩＤ５では、二重ディスク障害が発生してしまうと、データ復旧が不可能となる。それを回避する方法としては、予め、二重ディスク障害においてもデータ復旧が可能であるＲＡＩＤ６としておく方法が考えられるが、ＲＡＩＤ６にすると、後述するストライプ毎に二つのパリティを生成しなければならないので、ＲＡＩＤ５に比べて書込みのパフォーマンスが低下する。また、ＲＡＩＤ５よりも多くのディスクが予め必要となってしまう。
【００６６】
このような問題点を考慮して、以下の例では、上記のように、基本的には、ＲＡＩＤ５（３Ｄ＋１Ｐ）であり、ＲＡＩＤ５のＲＡＩＤグループにおいて或るディスク３２１のエラーレートが閾値Ａを超えた場合に、ＲＡＩＤ５（３Ｄ＋１Ｐ）からＲＡＩＤ６（３Ｄ＋１Ｐ＋１Ｑ）へ変更するＲＡＩＤアップ処理が行われる。
【００６７】
＜＜ＲＡＩＤアップ処理＞＞。
【００６８】
図４Ａは、ＲＡＩＤアップ処理前のＲＡＩＤグループの一例を示す。図４Ｂは、ＲＡＩＤアップ処理の概要及びＲＡＩＤアップ処理後のＲＡＩＤグループの一例を示す。図５は、ＲＡＩＤアップ処理のフローチャートである。以下、図４Ａ、図４Ｂ及び図５を参照して、ＲＡＩＤアップ処理について説明する。
【００６９】
例えば、図４Ａに示すように、ＲＡＩＤ５（３Ｄ＋１Ｐ）が、ディスク＃１、ディスク＃２、ディスク＃３及びディスク＃４という４台のディスク３２１で構成されている。そして、スペア１及びスペア２という２台のスペアのディスク３２１が備えられている。ＲＡＩＤグループがストライピングにより複数の記憶領域に区切られており、各記憶領域は、ＲＡＩＤグループを構成するディスク＃１乃至＃４に跨っている。その記憶領域が、本実施形態で言う「ストライプ」である。一つのディスク３２１における、ストライプの構成要素となる記憶領域を、以下、「ストライプ領域」と呼ぶ。また、本実施形態では、ストライプ領域に格納される単位が、本実施形態で言う「情報要素」、具体的には、「データ要素」又は「パリティ」である。
【００７０】
ディスク＃１乃至＃４のうちの少なくとも一つのエラーレートが閾値Ａを超えたことを契機に、ＲＡＩＤレベル制御プログラム３１５６１が、ディスク＃１乃至＃４から、ストライプ毎に、全ての情報要素（３つのデータ要素と第一のパリティ（以下、パリティＰ））を読み出してＤＲＲ回路３１５５に第二のパリティ（以下、パリティＱ）を生成させ、生成されたパリティＱを、スペア１に書込む（その結果として、スペア１には、全てのストライプについてのパリティＱが集約されることになる）。これにより、オンライン中でのＲＡＩＤ５からＲＡＩＤ６への変更が行われることになる。
【００７１】
具体的には、例えば、ディスク＃３のエラーレートが閾値Ａを超えて閾値Ｂ以下の場合、ＲＡＩＤレベル制御プログラム３１５６１は、ディスク＃３を基にしているＬＤＥＶを、ＬＤＥＶ管理テーブル３１２２を参照することで特定し、特定されたＬＤＥＶ（例えばＬＤＥＶ＃０、ＬＤＥＶ＃１及びＬＤＥＶ＃２）に対応したＲＡＩＤレベル状態（ＲＡＩＤレベル管理テーブル３１２１に記録されるＲＡＩＤレベル状態）を、ＲＡＩＤ５からＲＡＩＤ６への変更中を表す“ＲＡＩＤ５−６”に更新する（図２１Ａ参照）。
【００７２】
また、ＲＡＩＤレベル制御プログラム３１５６１は、複数のスペアのディスク３２１から一つのスペアのディスク３２１（例えばスペア１）を選択する。その際、ＲＡＩＤレベル制御プログラム３１５６１は、スペア１が他のＲＡＩＤグループでのＲＡＩＤレベル変更で利用されることの無いよう、スペア１について排他制御を行う（例えばロックをかける）。
【００７３】
ＲＡＩＤレベル制御プログラム３１５６１は、ＲＡＩＤ５からＲＡＩＤ６へ構成変更するというステータス（以下、構成変更ステータス）を含んだ情報を、ＳＶＰ３２７に通知する（Ｓ１０４）。その情報には、例えば、ＲＡＩＤレベル変更の対象となるＲＡＩＤグループの現在の構成（例えば、構成要素のディスクがディスク＃１乃至＃４であること）を表す情報や、そのＲＡＩＤグループを基に提供されるＬＤＥＶ（例えばＬＤＥＶ＃０乃至ＬＤＥＶ＃２）を表す情報や、パリティＱの格納先とするスペアのディスク３２１を表す情報（例えばスペア１を表す情報）が含まれる。ＳＶＰ３１７は、受信したステータス情報を解析することにより得られる、どのＲＡＩＤグループについてＲＡＩＤ５からＲＡＩＤ６に移行中であるかを表す情報を、保守端末６００に送り、保守端末６００が、その情報を表示する（Ｓ１０５）。このＳ１０５で、保守端末６００によって表示される画面の一例を、図２９Ａに示す。なお、保守端末６００によって表示される画面を、以下、便宜上「保守画面」と呼ぶ。
【００７４】
ＲＡＩＤレベル制御プログラム３１５６１は、ストライプに存在する全ての情報要素（例えば、データ要素Ｄ０１、Ｄ０２及びＤ０３とパリティＰ１）を読み出し、キャッシュメモリ３１６に書込む（Ｓ１０６）。ＲＡＩＤレベル制御プログラム３１５６１は、それらの情報要素を基にＤＲＲ回路３１５５によりパリティＱ（例えばパリティＱ１）を生成させる（Ｓ１０７）。生成されたパリティＱは、キャッシュメモリ３１６に書き込まれる（Ｓ１０８）。ＲＡＩＤレベル制御プログラム３１５６１は、そのパリティＱを、スペア１に書き込む（Ｓ１０９）。スペア１における、そのパリティＱが書かれた領域は、ＲＡＩＤ５からＲＡＩＤ６への変更が終了した後では、パリティＱの生成の基になった情報要素が記憶されているストライプの構成要素とされる。
【００７５】
ＲＡＩＤレベル制御プログラム３１５６１は、Ｓ１０６乃至Ｓ１０９が行われていないストライプがあれば（Ｓ１１０：ＮＯ）、Ｓ１０６における読出し元を次のストライプとし（Ｓ１１１）、そのストライプについてＳ１０６を行う。
【００７６】
ＲＡＩＤレベル制御プログラム３１５６１は、全てのストライプについてＳ１０６乃至Ｓ１０９が行われていれば（Ｓ１１０：ＹＥＳ）、ディスク＃３が基になっている全てのＬＤＥＶ（例えばＬＤＥＶ＃０乃至ＬＤＥＶ＃２）について、ＬＤＥＶを構成するディスク３２１（ＲＡＩＤグループを構成するディスク３２１）として“スペア１”を増やし（図２３Ａ参照）、ＲＡＩＤレベルを“ＲＡＩＤ５”から“ＲＡＩＤ６”に変更し、ディスク構成を“３Ｄ＋１Ｐ”から“３Ｄ＋１Ｐ＋１Ｑ”に変更し、ＲＡＩＤレベル状態を“ＲＡＩＤ５−６”から“確定”に変更する（図２１Ｂ参照）。これにより、ＲＡＩＤグループの構成要素が、ディスク＃１乃至＃４から、ディスク＃１乃至＃４とスペア１とに変更され、且つ、ＲＡＩＤレベルが、ＲＡＩＤ５（３Ｄ＋１Ｐ）からＲＡＩＤ６（３Ｄ＋１Ｐ＋１Ｑ）に変更されたことになる。ＲＡＩＤレベル制御プログラム３１５６１は、ＲＡＩＤ５からＲＡＩＤ６への変更が終了したことを意味する構成変更終了ステータスを含んだ情報を、ＳＶＰ３１７に通知する（Ｓ１１２）。ＳＶＰ３１７は、構成変更終了ステータスを含んだ情報を解析することにより、一時的にＲＡＩＤ６となったことを特定し、そのことを表す情報を保守端末６００に送信し、保守端末６００が、その情報を表示する（Ｓ１１３）。Ｓ１１３で表示された保守画面の一例を図２９Ｃに示す。
【００７７】
以上のＲＡＩＤアップ処理中に、保守端末６００は、進捗状況を表す情報（例えば、何パーセントまで処理が進んだかを表す情報）を表示することができる。その情報は、例えば、Ｓ１１１が行われる都度に更新される（その際の保守画面の一例を図２９Ｂに示す）。具体的には、例えば、ＲＡＩＤレベル制御プログラム３１５６１が、読み出し元とするストライプを更新する都度に、読み出しの済んだストライプの数をＳＶＰ３１７に通知する。ＳＶＰ３１７は、ＲＡＩＤグループにおけるストライプ総数に対する通知された数の比率を算出し、その比率を保守端末６００に送り、保守端末６００が、その比率を、進捗状況として表示することができる。なお、このような進捗状況（比率）の計算方法は、ＲＡＩＤアップ処理に限らず、後述のダイナミックスペアリング、コピーバック及びＲＡＩＤダウン処理についても適用することができる。
【００７８】
以上のＲＡＩＤアップ処理は、オンライン中、すなわち、ホスト計算機１００からのＩＯコマンドを受け付けと並行して行われる。ＲＡＩＤアップ処理の最中にホスト計算機１００からＩＯコマンドをＣＨＡ３１１が受けた場合、そのＩＯコマンドは、以下のように処理される。
【００７９】
（１）ＩＯコマンドがリードコマンドの場合。
【００８０】
ＣＨＡ３１１は、リードコマンドに従うデータ（以下、リードデータ）がキャッシュメモリ３１６にあれば、そのリードデータをホスト計算機１００に送信する。もし、そのリードデータがキャッシュメモリ３１６に無ければ、ＣＨＡ３１１は、ＤＫＡ３１５を介してリードデータをディスク３１１から読み出し、ホスト計算機１００へ返す。
【００８１】
以上のように、ＩＯコマンドがリードコマンドの場合には、リードデータがキャッシュメモリ３１６に記憶されていようといまいと、パリティの生成が行われない。このため、ＣＨＡ３１１は、ＤＫＡ３１５によってＲＡＩＤレベルが変更されている最中か否かに関わらず、リードデータの読出しをＤＫＡ３１５に要求する。
【００８２】
（２）ＩＯコマンドがライトコマンドの場合。
【００８３】
この場合、ライトコマンドに従うデータ（以下、ライトデータ）はディスク３２１に書込まれるが、その際には、パリティの更新（DRR回路３１５５の利用）が必要となる。このため、以下のような処理が行われる。
【００８４】
ＣＨＡ３１１は、ライトコマンドを受信し、そのライトコマンドに従うデータ（以下、ライトデータ）をキャッシュメモリ３１６に書き込み、その時点で、ホスト計算機１００に、書込み終了報告を送信する。そのライトデータのＤＫＡ３１５によるディスク３２１への書き込みは、ＣＨＡ３１１によるライトコマンドの受信とは非同期に行われる。
【００８５】
具体的には、ＤＫＡ３１５で実行されるＩＯプログラム３１５６０は、ダーティのデータ要素（ディスク３２１に未書込みのライトデータ要素、以下、便宜上「新データ要素」と言う）がキャッシュメモリ３１６に記憶されている場合、そのデータ要素の書込み先となるＬＤＥＶ３２２に対応したＲＡＩＤレベル状態（ＲＡＩＤレベル管理テーブル３１２１に記録されているＲＡＩＤレベル状態）を参照し、ＲＡＩＤレベルの変更中か否かを判断する。ＩＯプログラム３１５６０は、ＲＡＩＤレベルの変更中と判断された場合（例えば、ＲＡＩＤレベル状態が“ＲＡＩＤ５−６”の場合）、ＲＡＩＤレベルの変更の終了を待ち、ＲＡＩＤレベルの変更を優先する。ＲＡＩＤレベルの変更中ではないと判断された場合（例えば、ＲＡＩＤレベル状態が“確定”に変わった場合）、ＩＯプログラム３１５６０は、キャッシュメモリ３１６上の新データ要素を、書込み先のＬＤＥＶ３２２を構成する複数のディスク３２１へ書き込む。その際、ＲＡＩＤ５とＲＡＩＤ６のどちらの場合でも、ＩＯプログラム３１５６０は、更新前のデータ要素（以下、「旧データ要素」と言う）と、その旧データ要素に対応する旧パリティとを、それぞれのディスク３２１からキャッシュメモリ３１６へ読み出し、旧データ要素及び旧パリティと新データ要素をＤＲＲ回路３１５５に入力することで新しいパリティを得る。そして、ＩＯプログラム３１５６０は、新データ要素と新しいパリティとをそれぞれのディスク３２１へ書き込む。
【００８６】
以下、ダーティのライトデータの書込みを、ＲＡＩＤ５とＲＡＩＤ６の場合に分けて具体的に説明する。
【００８７】
（２−１）ＲＡＩＤ５の場合（ＲＡＩＤ５からＲＡＩＤ６への変更が行われていない状態の場合）。
【００８８】
ＩＯプログラム３１５６０は、図２５Ａに示すように、新データ要素Ｄ０３´に対応する旧データ要素Ｄ０３と、それに対応する旧パリティＰ１とを、ディスク＃３及び＃４からキャッシュメモリ３１６に読み出す。ＩＯプログラム３１５６０は、図２５Ｂに示すように、読み出されたデータ要素Ｄ０３及びパリティＰ１と新データ要素Ｄ０３´をＤＲＲ回路３１５５に入力することで新パリティＰ１´を取得する。ＩＯプログラム３１５６０は、図２６Ａに示すように、新データ要素Ｄ０３´を、旧データ要素Ｄ０３が記憶されているストライプ領域（ディスク＃３におけるストライプ領域）に書込み、新パリティＰ１´を、それに対応する旧パリティＰ１が記憶されているストライプ領域（ディスク＃４におけるストライプ領域）に書込む。
【００８９】
（２−２）ＲＡＩＤ６の場合（ＲＡＩＤ５からＲＡＩＤ６への変更が行われている最中の場合）。
【００９０】
新データ要素Ｄ０３´の書込み先が、ＬＤＥＶ＃０であるとする。そして、ＬＤＥＶ＃０に対応したＲＡＩＤレベル状態が“ＲＡＩＤ５−６”であるため、図２６Ｂに示すように、ＬＤＥＶ＃０について、ＲＡＩＤ５からＲＡＩＤ６への変更が行われている最中であるとする。
【００９１】
ＩＯプログラム３１５６０は、そのことを、ＲＡＩＤレベル管理テーブル３１２１を参照することにより特定することができる。そのことを特定した場合、ＩＯプログラム３１５６０は、図２６Ｂ及び図２７Ａに示すように、少なくともＬＤＥＶ＃０についてＲＡＩＤ５からＲＡＩＤ６への変更が完了するまで、新データ要素Ｄ０３´をＬＤＥＶ＃０（具体的には、それの基になっているディスク＃３）に書込むことを待つ。
【００９２】
ＩＯプログラム３１５６０は、少なくともＬＤＥＶ＃０についてＲＡＩＤ５からＲＡＩＤ６への変更が完了したことをＲＡＩＤレベル管理テーブル３１２１から特定した場合、図２７Ｂに示すように、新データ要素Ｄ０３´に対応する旧データ要素Ｄ０３と、それに対応する旧パリティＰ１及び旧パリティＱ１を、ディスク＃３及び＃４とスペア１からキャッシュメモリ３１６に読み出す。ＩＯプログラム３１５６０は、図２８Ａに示すように、新データ要素Ｄ０３´、旧データ要素Ｄ０３、旧パリティＰ１及び旧パリティＱ１をＤＲＲ回路３１５５に入力することで、新パリティＰ１´及び新パリティＱ１´を得る。新パリティＰ１´及び新パリティＱ１´は、キャッシュメモリ３１６に書込まれる。ＩＯプログラム３１５６０は、図２８Ｂに示すように、新データ要素Ｄ０３´を、旧データ要素Ｄ０３が記憶されているストライプ領域（ディスク＃３におけるストライプ領域）に書込み、新パリティＰ１´を、それに対応する旧パリティＰ１が記憶されているストライプ領域（ディスク＃４におけるストライプ領域）に書込み、新パリティＱ１´を、それに対応する旧パリティＱ１が記憶されているストライプ領域（スペア１におけるストライプ領域）に書込む。
【００９３】
＜＜ダイナミックスペアリング＞＞。
【００９４】
図６Ａは、ダイナミックスペアリングの概要を示す。
【００９５】
閾値Ｂを超えたエラーレートに対応したディスク３２１はディスク＃３である場合、ディスク＃３に記憶されている全ての情報要素を、他のディスク（例えば、ストライプ毎のパリティＱが格納されているスペア１とは別のスペアのディスク（スペア２））に書込むことが、ダイナミックスペアリングである（なお、スペア２についても、スペア１と同様に排他制御を行うことができる）。そのため、ディスク＃３から全ての情報要素を読み出すことができるならば、ディスク＃３からスペア２への単純なコピーによりダイナミックスペアリングが完了する。
【００９６】
もし、ディスク＃３に障害が発生しディスク＃３からの読出しが不可能となった場合、図６Ｂに示すように、他のディスク＃１、＃２、＃４及びスペア１のうちの少なくとも３つから情報要素（少なくとも一つのパリティを含んだ３以上の情報要素）を読出し、ＤＲＲ回路３１５５を利用することで、ディスク＃３に記憶されている情報要素を復元することができる。
【００９７】
或いは、もし、ディスク＃３だけでなく他の一つのディスクにも障害が発生しそのディスクからの読出しも不可能となってしまった場合、図１０に示すように、他の全てのディスクから情報要素を読出して、ＤＲＲ回路３１５５を利用することで、ディスク＃３に記憶されている情報要素を復元することができる。
【００９８】
ダイナミックスペアリング実行プログラム３１５６２は、ディスク＃３に記憶されている全ての情報要素がスペア２に書き込まれた場合、ディスク＃３が基になっている各ＬＤＥＶについて、構成要素が“ディスク＃３”から“スペア２”に変更となるようＬＤＥＶ管理テーブル３１２２を更新する（図２３Ｂ参照）。これにより、ＲＡＩＤ６のＲＡＩＤグループのメンバが、ディスク＃３からスペア２に変更となる。以後、例えば、そのＲＡＩＤグループを基に形成されているＬＤＥＶ＃０にデータが書き込まれる場合には、そのデータに基づく情報要素（データ要素或いはパリティＰ）は、ディスク＃３ではなくスペア２に書き込まれる。
【００９９】
ダイナミックスペアリングの開始前には、ストライプ毎のパリティＱがスペア１に格納されている。なぜなら、ダイナミックスペアリングは、或るディスク３２１のエラーレートが閾値Ｂを超えた場合に開始されるが、その閾値Ｂよりも低い閾値Ａをそのディスク３２１のエラーレートが越えた場合に、上記のＲＡＩＤ５からＲＡＩＤ６への変更のために、ストライプ毎のパリティＱが生成されてスペア１に格納されるためである。
【０１００】
図７は、ダイナミックスペアリングのフローチャートである。
【０１０１】
ダイナミックスペアリング実行プログラム３１５６２は、ダイナミックスペアリングの開始を表す情報をＳＶＰ３１７に通知する（Ｓ２０４）。その情報には、例えば、どのＲＡＩＤグループのどのディスク３２１についてダイナミックスペアリングが開始されるかを表す情報が含まれる。ＳＶＰ３１７は、受信した情報を解析することにより得られる、どのＲＡＩＤグループのどのディスクについてダイナミックスペアリングが開始されたかを表す情報を、保守端末６００に送り、保守端末６００が、その情報を保守画面に表示する（Ｓ２０５）。Ｓ２０５で表示される保守画面の一例を、図３３Ａに示す。
【０１０２】
ダイナミックスペアリング実行プログラム３１５６２は、ディスク＃３（閾値Ｂを超えたエラーレートに対応したディスク３２１）のストライプ領域から情報要素を読出すためにディスク＃３にアクセスし、それを読み出せた場合には（Ｓ２０６：ＹＥＳ）、読み出したデータ要素或いはパリティＰを、スペア２に書込む（Ｓ２０７）。
【０１０３】
もし、ディスク＃３に障害が発生しディスク＃３からの読出しが不可能である場合（Ｓ２０６：ＮＯ、Ｓ２０８：Ａ＝１）、ダイナミックスペアリング実行プログラム３１５６２は、他のディスク＃１、＃２、＃４及びスペア１のうちの少なくとも３つから情報要素（少なくとも一つのパリティを含んだ３以上の情報要素）を読出し、読み出した３以上の情報要素を基にＤＲＲ回路３１５５を利用してディスク＃３に記憶されている情報要素（データ要素或いはパリティＰ）を復元し（Ｓ２０９）、復元された情報要素を、スペア２に書込む（Ｓ２１１）。
【０１０４】
もし、ディスク＃３だけでなく他の一つのディスクにも障害が発生しそのディスクからの読出しも不可能である場合（Ｓ２０６：ＮＯ、Ｓ２０８：Ａ＝２）、ダイナミックスペアリング実行プログラム３１５６２は、他の全てのディスクから情報要素を読出し、読み出した情報要素を基にＤＲＲ回路３１５５を利用してディスク＃３に記憶されている情報要素を復元し（Ｓ２１０）、復元された情報要素を、スペア２に書込む（Ｓ２１１）。
【０１０５】
Ｓ２０６乃至Ｓ２１１についての処理が行われていないストライプがあれば（Ｓ２１２：ＮＯ）、ダイナミックスペアリング実行プログラム３１５６２は、実行対象を次のストライプとし（Ｓ２１３）、Ｓ２０６を実行する。
【０１０６】
一方、全てのストライプについてＳ２０６乃至Ｓ２１１についての処理が行われたならば（Ｓ２１２：ＹＥＳ）、ダイナミックスペアリング実行プログラム３１５６２は、ダイナミックスペアリングの終了を表す情報をＳＶＰ３１７に通知する（Ｓ２１４）。ＳＶＰ３１７は、ダイナミックスペアリングの終了を表す情報を保守端末６００に送り、保守端末６００が、その情報を保守画面に表示する（Ｓ２１５）。Ｓ２１５で表示される保守画面の一例を図３３Ｂに示す。
【０１０７】
＜＜コピーバック及びＲＡＩＤダウン処理＞＞。
【０１０８】
コピーバックは、例えば、ＲＡＩＤレベル制御プログラム３１５６１により行われる。ＲＡＩＤレベル制御プログラム３１５６１は、ダイナミックスペアリングの終了後、閾値Ｂを超えたエラーレートに対応するディスク＃３を閉塞させる。
【０１０９】
閉塞されたディスク＃３は、図８Ａに示すように、ユーザにより新しいディスクに交換される（閉塞されたディスク＃３の交換後のディスクを「新ディスク＃３」と呼ぶ）。ＲＡＩＤレベル制御プログラム３１５６１は、図８Ｂに示すように、スペア２から全てのデータ要素及びスペアを読出し、新ディスク＃３に書込む。
【０１１０】
もし、スペア２に障害が発生しスペア２から情報要素の読出しが不可能となった場合には、ＲＡＩＤレベル制御プログラム３１５６１は、ダイナミックスペアリングでの処理と同様に、図９Ａに示すように、ＲＡＩＤ６のＲＡＩＤグループを構成する他の３以上のディスクから、ストライプ毎に、情報要素を読出し、スペア２における情報要素を復元して、新ディスク＃３に書込む。
【０１１１】
スペア２に記憶されている全ての情報要素が新ディスク＃３に書込まれた後、ＲＡＩＤレベル制御プログラム３１５６１は、ＲＡＩＤダウン処理を開始する。具体的には、例えば、ＲＡＩＤレベル制御プログラム３１５６１は、任意の時点（例えば、ＲＡＩＤダウン処理の開始時点）で、ＲＡＩＤレベル管理テーブル３１２１の内容を、図２１Ｂに示した内容から、図２２Ａに示す内容に更新する（すなわち、ＲＡＩＤレベル状態を“確定”から“ＲＡＩＤ６−５”に更新する）。ＲＡＩＤレベル制御プログラム３１５６１は、ＲＡＩＤグループからスペア１及びスペア２を外し、そのＲＡＩＤグループに新ディスク＃３をメンバとして含めることで、ＲＡＩＤグループのＲＡＩＤレベルをＲＡＩＤ６からＲＡＩＤ５に戻す。具体的には、例えば、ＲＡＩＤレベル制御プログラム３１５６１は、ＬＤＥＶ管理テーブル３１２２の内容を、ＲＡＩＤグループにおけるＬＤＥＶについて“スペア１”及び“スペア２”を含んだ内容から（つまり図２３Ｂに示した内容）から、“スペア１”及び“スペア２”の代わりに“ディスク＃３”を含んだ内容（つまり図３Ｃに示した内容）に更新する。また、例えば、ＲＡＩＤレベル制御プログラム３１５６１は、ＲＡＩＤレベル管理テーブル３１２１の内容を、図２２Ａに示した内容から、図２２Ｂに示す内容に変更する（ＲＡＩＤレベルを“ＲＡＩＤ６”から“ＲＡＩＤ５”に変更し、ディスク構成を“３Ｄ＋１Ｐ＋１Ｑ”から“３Ｄ＋１Ｐ”に変更し、ＲＡＩＤレベル状態を“ＲＡＩＤ６−５”から“確定”に変更する）。
【０１１２】
以上の流れにより、ＲＡＩＤグループのＲＡＩＤレベルが、図４Ｂに示した一時的なＲＡＩＤ６から、図９Ｂに示すような元のＲＡＩＤ５に戻る。上記のように各テーブル３１２１、３１２２が更新された後は、例えば、ＲＡＩＤ５に戻ったＲＡＩＤグループを基に形成されたＬＤＥＶ＃０にデータが書かれる場合には、そのデータに基づくデータ要素及びパリティＰが、新ディスク＃３を含んだディスク＃１乃至＃４のそれぞれのストライプ領域に書き込まれる。
【０１１３】
図３０は、コピーバックのフローチャートである。
【０１１４】
ＲＡＩＤレベル制御プログラム３１５６１は、ダイナミックスペアリングの終了後、閾値Ｂを超えたエラーレートに対応するディスク＃３を閉塞させる（Ｓ４０１）。閉塞されたディスク＃３は、ユーザにより新ディスク＃３に交換される（Ｓ４０２）。
【０１１５】
ＲＡＩＤレベル制御プログラム３１５６１は、コピーバックの開始を表す情報をＳＶＰ３１７に通知する（Ｓ４０３）。その情報には、例えば、新ディスク＃３にはどのＲＡＩＤグループのどのディスク３２１からコピーバックされるかを表す情報が含まれる。ＳＶＰ３１７は、受信した情報を解析することにより得られる、どのＲＡＩＤグループのどのディスクから新ディスク＃３にコピーバックされるかを表す情報を、保守端末６００に送り、保守端末６００が、その情報を表示する（Ｓ４０４）。Ｓ４０４で表示される保守画面の一例を、図３４Ａに示す。
【０１１６】
ＲＡＩＤレベル制御プログラム３１５６１は、スペア２のストライプ領域から情報要素を読出すためにスペア２にアクセスし、それを読み出せた場合には（Ｓ４０５：ＹＥＳ）、読み出した情報要素を、新ディスク＃３に書込む（Ｓ４０６）。
【０１１７】
もし、スペア２に障害が発生しスペア２からの読出しが不可能である場合（Ｓ４０５：ＮＯ、Ｓ４０７：Ａ＝１）、ＲＡＩＤレベル制御プログラム３１５６１は、他のディスク＃１、＃２、＃４及びスペア１のうちの少なくとも３つから情報要素（少なくとも一つのパリティを含んだ３以上の情報要素）を読出し、読み出した情報要素を基にＤＲＲ回路３１５５を利用してスペア２に記憶されている情報要素を復元し（Ｓ４０８）、復元された情報要素を、新ディスク＃３に書込む（Ｓ４１０）。
【０１１８】
もし、スペア２だけでなく他の一つのディスクにも障害が発生しそのディスクからの読出しも不可能である場合（Ｓ４０５：ＮＯ、Ｓ４０７：Ａ＝２）、ＲＡＩＤレベル制御プログラム３１５６１は、他の全てのディスクから情報要素を読出し、読み出した情報要素を基にＤＲＲ回路３１５５を利用してスペア２に記憶されている情報要素を復元し（Ｓ４０９）、復元された情報要素を、スペア２に書込む（Ｓ４１０）。
【０１１９】
Ｓ４０５乃至Ｓ４１０についての処理が行われていないストライプがあれば（Ｓ４１１：ＮＯ）、ＲＡＩＤレベル制御プログラム３１５６１は、実行対象を次のストライプとし（Ｓ４１２）、Ｓ４０５を実行する。
【０１２０】
一方、全てのストライプについてＳ４０５乃至Ｓ４１０についての処理が行われたならば（Ｓ４１１：ＹＥＳ）、ＲＡＩＤレベル制御プログラム３１５６１は、コピーバックの終了を表す情報をＳＶＰ３１７に通知する（Ｓ４１３）。ＳＶＰ３１７は、コピーバックの終了を表す情報を保守端末６００に送り、保守端末６００が、その情報を表示する（Ｓ４１４）。Ｓ４１４で表示される保守画面の一例を、図３４Ｂに示す。
【０１２１】
ＲＡＩＤレベル制御プログラム３１５６１は、ＬＤＥＶ管理テーブル３１２２を、スペア１及びスペア２をＲＡＩＤグループから外し新ディスク＃３がＲＡＩＤグループに含まれた内容に更新する（Ｓ４１５）。また、ＲＡＩＤレベル制御プログラム３１５６１は、ディスク管理テーブル３１２４におけるスペア２の状態を“待機”に更新する（Ｓ４１６）。ＲＡＩＤレベル制御プログラム３１５６１は、ＲＡＩＤレベル管理テーブル３１２１において、ＲＡＩＤレベルを“ＲＡＩＤ６”から“ＲＡＩＤ５”に変更し、ディスク構成を“３Ｄ＋１Ｐ＋１Ｑ”から“３Ｄ＋１Ｐ”に変更し、ＲＡＩＤレベル状態を“ＲＡＩＤ６−５”から“確定”に変更し、ＲＡＩＤ５に戻ったことを表す情報をＳＶＰ３１７に通知する（Ｓ４１７）。ＳＶＰ３１７は、ＲＡＩＤ５に戻ったことを表す情報を、保守端末６００に送信し、保守端末６００が、その情報を表示する（Ｓ４１８）。Ｓ４１８で表示される保守画面の一例を、図３４Ｃに示す。
【０１２２】
以上、第一の実施形態によれば、ＲＡＩＤ５からスペア１を利用して一時的にＲＡＩＤ６へ変更したり、ダイナミックスペアリング及びコピーバックの変更後に、ＲＡＩＤ６からＲＡＩＤ５に戻したりすることができる。スペア１は、ＲＡＩＤ６のＲＡＩＤグループのメンバとなる以外の用途でも使用されるディスクである。このため、常にＲＡＩＤ６のＲＡＩＤグループとすることに比べて、初期的に必要なディスクの数を節約することができる。
【０１２３】
また、第一の実施形態によれば、上記のようなＲＡＩＤレベルの変更がオンライン中に行われる。言い換えれば、ＲＡＩＤレベルの変更が行われるからといって、ホスト計算機１００（具体的には、例えば、ＩＯを発行するアプリケーションプログラム）を静止化する、或いは、ストレージシステム３００がＩＯコマンドの受付けを拒否する（例えば、ＩＯコマンドを受けたらエラー或いはビジーといった所定の応答を返す）などのＩＯ制限は不要である。つまり、ホスト計算機１００からのＩＯコマンドの受付けと並行してＲＡＩＤレベルの変更を行うことができる。
【０１２４】
また、第一の実施形態によれば、ダイナミックスペアリングを実行するか否かのエラーレート閾値Ｂよりも低いエラーレート閾値Ａが用意され、そのエラーレート閾値Ａを或るディスクのエラーレートが越えたことを契機として、ＲＡＩＤ５から一時的なＲＡＩＤ６への変更が行われる。このため、ダイナミックスペアリングの開始前には、第二のパリティも用意されており、故に、ダイナミックスペアリング中に一つのＲＡＩＤグループについて二つのディスク３２１に障害が発生しても、ダイナミックスペアリングを継続し完遂することが可能となる。
【０１２５】
＜第二の実施形態＞。
【０１２６】
本発明の第二の実施形態を説明する。以下、第一の実施形態との相違点を主に説明し、第一の実施形態との共通点については説明を省略及び簡略する（これは、後述の第三の実施形態以降についても同様である）。
【０１２７】
第二の実施形態では、ＲＡＩＤ６からＲＡＩＤ５へ戻すＲＡＩＤダウン処理を行うか否かが選択される。その選択は、保守端末６００のユーザが行っても良いし、ＤＫＡ３１５が行っても良い。
【０１２８】
例えば、ＲＡＩＤレベル制御プログラム３１５６１は、図３０のＳ４１４の後、直ちにＳ４１５を行うのではなく、図３２に例示するように、ディスク管理テーブル３１２４を監視する（Ｓ５０１）。その監視の結果、所定の条件に合致した場合に（Ｓ５０２：ＹＥＳ）、ＲＡＩＤレベル制御プログラム３１５６１は、ＲＡＩＤ６の継続を推奨するメッセージと承認要求とをＳＶＰ３１７を通じて保守端末６００へ送信する。ＲＡＩＤレベル制御プログラム３１５６１は、保守端末６００からＳＶＰ３１７を通じてユーザからの承認有りを受けた場合には（Ｓ５０３：ＹＥＳ）、ＲＡＩＤ６を維持する（つまり、ディスク＃１、＃２、＃４、スペア１及びスペア２で構成されたＲＡＩＤグループ且つＲＡＩＤ６（３Ｄ＋１Ｐ＋１Ｑ）が維持される）。言い換えれば、ＲＡＩＤレベル制御プログラム３１５６１は、図３０のＳ４１４の後、上記所定の条件に合致しない場合に、ＲＡＩＤ５に戻す。
【０１２９】
ここで、所定の条件としては、例えば下記の（条件１）及び／又は（条件２）の採用が可能である。
【０１３０】
（条件１）交換したディスク以外のディスクのエラーレートが全体的に高い。
【０１３１】
ＲＡＩＤ５へ構成を戻した後、短時間で、同じＲＡＩＤグループ内で別のディスク３２１でエラーレートが閾値Aを超える可能性がある。その場合、再び、ＲＡＩＤ５からＲＡＩＤ６に変更するために各ストライプについて第二のパリティを計算する必要が生じる。このため、ＤＫＡ３１５に負担がかかる。そこで、（条件１）が採用される。
【０１３２】
第一の具体例として、ＲＡＩＤレベル制御プログラム３１５６１は、交換後の新ディスク＃３以外のディスクのエラーレートが閾値Ａよりも低い所定の値（例えば、閾値Aの半分の値）を超えていることが検出されたならば、（条件１）に合致したと判断する。
【０１３３】
第二の具体例として、ＲＡＩＤレベル制御プログラム３１５６１は、ＲＡＩＤグループにおける、交換後の新ディスク＃３以外の全てのディスクのエラーレートを合計し、その合計が閾値Ｂ以上であれば、（条件１）に合致したと判断する。
【０１３４】
（条件２）ダイナミックスペアリングが終了していから所定の時間内（例えば、保守端末６００のユーザから予め指定された時間内）に、交換後の新ディスク＃３のエラーレートが閾値Ａ又はそれよりも低い所定の値に達する。
【０１３５】
ダイナミックスペアリング実施後、交換後の新ディスクが新品ではない等の理由により、交換後の新ディスクにエラーが割りと発生する可能性がある。この場合、交換後の新ディスクのエラーレートが直ぐに閾値Ａを超えてしまって、それ故、再び、ＲＡＩＤ５からＲＡＩＤ６に変更するために各ストライプについて第二のパリティを計算する必要が生じる可能性がある。そこで、（条件２）が採用される。
【０１３６】
以上が、第二の実施形態についての説明である。なお、第二の実施形態では、例えば、保守端末６００のユーザが、予め、ＲＡＩＤ５からＲＡＩＤ６へ変更されたＲＡＩＤ６を維持することのモード（ＲＡＩＤ６維持モード）をＤＫＡ３１５に設定しておき、適宜に、そのＲＡＩＤ６維持モードをキャンセルしても良い。
【０１３７】
＜第三の実施形態＞。
【０１３８】
第三の実施形態では、ＲＡＩＤアップ処理において、エラーレートが閾値Ａを超えたディスク＃３に記憶されている情報要素が、スペア１に移され、パリティＱが、ディスク＃３に書き込まれる。これにより、ディスク＃１乃至＃４で構成されたＲＡＩＤ５から、ディスク＃１乃至＃４とスペア１で構成されたＲＡＩＤ６に変更される。その後、ディスク＃３のエラーレートが閾値Ｂを超えた場合には、ディスク＃３をＲＡＩＤグループのメンバから外すことで、ＲＡＩＤ６からＲＡＩＤ５に戻される。つまり、ダイナミックスペアリングやコピーバックが不要である。
【０１３９】
具体的には、図１１Ａに示すように、ＲＡＩＤアップ処理において、ＲＡＩＤレベル制御プログラム３１５６１は、ストライプ毎に、以下の処理を行う。例えば、１番目のストライプについて言えば、ＲＡＩＤレベル制御プログラム３１５６１は、ディスク＃１乃至＃４からデータ要素Ｄ０１、Ｄ０２、Ｄ０３やパリティＰ１を読み出し、そのうちの、ディスク＃３から読み出されたデータ要素Ｄ０３を、スペア１の、１番目のストライプに属するストライプ領域に書込む。また、ＲＡＩＤレベル制御プログラム３１５６１は、上記読み出されたデータ要素Ｄ０１、Ｄ０２、Ｄ０３及びパリティＰ１を基にＤＲＲ回路３１５５を用いてパリティＱ１を取得し、取得したパリティＱ１を、ディスク＃３における、データ要素Ｄ０３が記憶されているストライプ領域に、上書きする。
【０１４０】
以上のような処理を、ストライプ毎に行うことで、図１１Ｂに示すように、ディスク＃３に記憶されている全ての情報要素が、スペア１に記憶され、第一の実施形態ではスペア１に記憶される各ストライプのパリティＱが、ディスク＃３に記憶される。
【０１４１】
第三の実施形態では、ディスク＃３のエラーレートが閾値Ｂを超えた場合、ＲＡＩＤレベル制御プログラム３１５６１が、図１２に示すように、ディスク＃３を閉塞させる（Ｓ６０１）。閉塞されたディスク＃３が、ユーザによってストレージシステム３００から取り外される（Ｓ６０２）。ＲＡＩＤレベル制御プログラム３１５６１は、“スペア１”をＲＡＩＤグループのメンバから外し、“スペア１”が割当てられているディスク３２１に対して、“ディスク＃３”を割り当てる（Ｓ６０３）。これにより、ＲＡＩＤ構成が、ディスク＃１乃至＃４とスペア１とで構成されたＲＡＩＤ６から、ディスク＃１乃至＃４で構成されたＲＡＩＤ５に戻ったことになる（図１３参照）。但し、ＲＡＩＤ６からＲＡＩＤ５の変更前と後とでは、“ディスク＃３”が割当てられているディスク３２１が異なる。
【０１４２】
ＲＡＩＤレベル制御プログラム３１５６１は、ＲＡＩＤ６からＲＡＩＤ５に戻ったことを表す情報をＳＶＰ３１７に通知する（Ｓ６０４）。ＳＶＰ３１７は、ＲＡＩＤ６からＲＡＩＤ５に戻ったことを表す情報を保守端末６００に送信し、保守端末６００が、その情報を表示する（Ｓ６０５）。
【０１４３】
以上、第三の実施形態によれば、利用するスペアのディスク３２１が１つだけで済み、且つ、ダイナミックスペアリングによるコピーやディスク交換後のコピーバックを行う必要が無い。第三の実施形態では、パリティＱが書き込まれたディスク＃３を閉塞させＲＡＩＤグループから外すだけで、ＲＡＩＤ６からＲＡＩＤ５に戻すことができる。
【０１４４】
＜第四の実施形態＞。
【０１４５】
第四の実施形態では、ストライプ毎のパリティＱが、複数のスペアのディスク３２１に分散される。
【０１４６】
例えば、図１４Ａに示すように、３つのスペアディスク（スペア１、スペア２、スペア３）が用意されており、図１４Ｂに示すように、そのうちのスペア１及びスペア２が、パリティＱの書込み先として使用される。スペア１及びスペア２がそれぞれパリティＱの書込み先とされる頻度は、例えば均等である。具体的には、例えば、ＲＡＩＤレベル制御プログラム３１５６１は、パリティＱの書込み先を交互に変更する。
【０１４７】
なお、第四の実施形態では、ダイナミックスペアリングでは、第一の実施形態と同様に、図１５Ａに示すように、エラーレートが閾値Ｂを超えたディスク＃３に記憶されている情報要素が、未使用のスペア（ここではスペア３）にコピーされる。もし、図１５Ｂに示すように、ディスク＃３（及び他の一つのディスク）からの読出しができない場合には、全ての他のディスクから情報要素が読み出され、読み出された情報要素を基に、ディスク＃３に記憶されている情報要素が復元され、復元された情報要素が、スペア３に書き込まれる。
【０１４８】
この第四の実施形態によれば、ＲＡＩＤ６への変更において一つのスペアのディスクに書き込みが集中することを避けることができる。
【０１４９】
＜第五の実施形態＞。
【０１５０】
第五の実施形態では、第四の実施形態と同様に、第二のパリティの書込み先が分散される。但し、分散先は、複数のスペアではなく、１つのスペアとＲＡＩＤグループのメンバとなっている二以上のディスクである。
【０１５１】
例えば、図１６Ａに示すように、スペア１及びスペア２が用意されている。ＲＡＩＤレベル制御プログラム３１５６１は、ストライプ毎に、複数の情報要素を読み出し、それら複数の情報要素を基にＤＲＲ回路３１５５を利用してパリティＱを生成し、パリティＱをスペア１に書く。もし、パリティＱを、ＲＡＩＤグループの既存のメンバ（ディスク）に書く場合には、そのメンバのディスクに既存の情報要素をスペア１に書き、パリティＱを、その情報要素が記憶されているストライプ領域に上書きする（図１６Ｂ参照）。
【０１５２】
以上により、第二のパリティの書込み先は、スペア１→ディスク＃４→ディスク＃３→ディスク＃２→ディスク＃１の順で切り替わり、ディスク＃１の後はスペア１に戻る。
【０１５３】
なお、第五の実施形態では、ダイナミックスペアリングでは、第一の実施形態と同様に、図１７Ａに示すように、エラーレートが閾値Ｂを超えたディスク＃３に記憶されている情報要素が、未使用のスペア（ここではスペア２）にコピーされる。もし、図１７Ｂに示すように、ディスク＃３（及び他の一つのディスク）からの読出しができない場合には、全ての他のディスクから情報要素が読み出され、読み出された複数の情報要素を基に、ディスク＃３に記憶されている情報要素が復元され、復元された情報要素が、スペア２に書き込まれる。
【０１５４】
また、第五の実施形態では、図１８Ａに示すように、スペア２から新ディスク＃３へのコピーバックが行われる。スペア２から読めなければ、図１８Ｂに示すように、他のディスクを使用した復元が行われる。そして、ＲＡＩＤ６からＲＡＩＤ５に戻すためには、一つのディスクが不要となる。ここでは、スペア１に記憶されている、パリティＱ以外の各情報要素が、ＲＡＩＤグループにおけるディスク＃１乃至ディスク＃４に記憶されているパリティＱと交換される。これにより、図１９に示すように、スペア１に、パリティＱが集約される。その後、スペア１をＲＡＩＤグループのメンバから外すことで、ＲＡＩＤ６からＲＡＩＤ５への構成変更の完了となる。
【０１５５】
＜第六の実施形態＞。
【０１５６】
第六の実施形態では、ストレージシステム３００が、図２０Ａに示すように、Thin Provisioning技術に従う仮想ボリューム（以下、便宜上、「容量拡張ボリューム」と言う）３２２Ｖをホスト計算機１００に提供する機能を有する。ストレージシステム３００は、複数のＬＤＥＶ３２２で構成されたプール３２６を有し、プール３２６が、複数の実体のある記憶領域（以下、便宜上、「ページ」と言う）３２２１Ｒを有する。共有メモリ３１２に、容量拡張ボリュームにおけるどの仮想的な記憶領域（以下、仮想領域）３２２１Ｖにどのページ３２２１Ｒが割り当てられているかを表すマッピング情報（図示せず）が記憶される。ＣＨＡ３１１は、仮想領域３２２１Ｖを指定したライトコマンドを受けた場合、マッピング情報を参照し、その仮想領域３２２１Ｖにページ３２２１Ｒが未割り当てであれば、ページ３２２１Ｒをその仮想領域３２２１Ｖに割り当てる共に、どの仮想領域３２２１Ｖにどのページ３２２１Ｒを割当てたかをマッピング情報に登録し、割り当てたページ３２２１Ｒに、ＤＫＡ３１５を通じてデータを書く。
【０１５７】
一つのページが、例えば、図２０Ｂに示すように、一つのストライプに１対１で対応している。ＲＡＩＤレベル制御プログラム３１５６１は、どのページとどのストライプが１対１で対応しているかを特定し、仮想領域に割り当てられているページに対応したストライプのみについて、第二のパリティを取得する。言い換えれば、仮想領域に割り当てられていないページに対応したストライプについては、情報要素の読み出しやパリティＱの生成は行われない。
【０１５８】
なお、ページのサイズは、ストライプのサイズよりも小さくてもよいし、複数のストライプのサイズ分あっても良い。言い換えれば、一ストライプが複数のページに対応しても良いし、一ページが複数のストライプに対応しても良い。この場合、割当て済みのページを含んだストライプ、或いは、割当て済みのページに含まれる複数のストライプが特定され、特定されたストライプから複数の情報要素の読出しが行われる。
【０１５９】
以上、本発明の好適な幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【図面の簡単な説明】
【０１６０】
【図１】図１は、本発明の第一の実施形態に係る計算機システムの構成を示す。
【図２】図２は、ＤＫＡ（ディスクアダプタ）の構成例を示す。
【図３】図３Ａは、ＲＡＩＤレベル管理テーブルの構成例を示す。図３Ｂは、ＬＤＥＶ管理テーブルの構成例を示す。図３Ｃは、ディスク管理テーブルの構成例を示す。
【図４】図４Ａは、第一の実施形態でのＲＡＩＤアップ処理前のＲＡＩＤグループの一例を示す。図４Ｂは、第一の実施形態でのＲＡＩＤアップ処理の概要及びそのＲＡＩＤアップ処理後のＲＡＩＤグループの一例を示す。
【図５】図５は、第一の実施形態でのＲＡＩＤアップ処理のフローチャートである。
【図６】図６Ａは、ディスク＃３からの読出しが可能な場合の第一の実施形態におけるダイナミックスペアリングの概念図である。図６Ｂは、ディスク＃３からの読出しが不可能な場合の第一の実施形態におけるダイナミックスペアリングの概念図である。
【図７】図７は、第一の実施形態でのダイナミックスペアリングのフローチャートである。
【図８】図８Ａは、第一の実施形態でのダイナミックスペアリング後に閉塞されたディスク＃３の交換を示す。図８Ｂは、スペア２からの読出しが可能な場合の第一の実施形態でのコピーバックの概念図である。
【図９】図９Ａは、スペア２からの読出しが不可能な場合の第一の実施形態でのコピーバックの概念図である。図９Ｂは、第一の実施形態での、ＲＡＩＤ６からＲＡＩＤ５の変更後のＲＡＩＤグループを示す。
【図１０】図１０は、ディスク＃３と他のディスクからの読出しが不可能な場合の第一の実施形態におけるダイナミックスペアリングの概念図である。
【図１１】図１１Ａは、本発明の第三の実施形態でのパリティＱ１の書込みの概念図である。図１１Ｂは、第三の実施形態でのパリティＱの書込み後の状態の概念図である。
【図１２】図１２は、第三の実施形態でのＲＡＩＤ５へ戻す処理のフローチャートである。
【図１３】図１３は、第三の実施形態においてＲＡＩＤ５へ戻ったＲＡＩＤグループの概念図である。
【図１４】図１４Ａは、本発明の第四の実施形態においてＲＡＩＤアップ処理が始まる前のＲＡＩＤグループとスペアのディスクの概念図である。図１４Ｂは、第四の実施形態でのＲＡＩＤアップ処理におけるパリティＱの書き込みの概念図である。
【図１５】図１５Ａは、第四の実施形態でのダイナミックスペアリングの概念図である。図１５Ｂは、ディスク＃３からの読出し不可の場合の第四の実施形態でのダイナミックスペアリングの概念図である。
【図１６】図１６Ａは、本発明の第五の実施形態においてＲＡＩＤアップ処理が始まる前のＲＡＩＤグループとスペアのディスクの概念図である。図１６Ｂは、第五の実施形態でのＲＡＩＤアップ処理におけるパリティＱの書込みの概念図である。
【図１７】図１７Ａは、第五の実施形態でのダイナミックスペアリングの概念図である。図１７Ｂは、ディスク＃３からの読出し不可の場合の第五の実施形態でのダイナミックスペアリングの概念図である。
【図１８】図１８Ａは、第五の実施形態でのコピーバックの概念図である。図１８Ｂは、スペア２から読出し不可の場合の第五の実施形態でのコピーバックの概念図である。
【図１９】図１９は、スペア１に第二のパリティの集約の概念図である。
【図２０】図２０Ａは、本発明の第六の実施形態における容量拡張処理の概念図である。図２０Ｂは、第六の実施形態において割り当て済みページに対応したストライプについてパリティＱが生成されることの概念図である。
【図２１】図２１Ａは、ＲＡＩＤ５からＲＡＩＤ６への変更中の第一の実施形態でのＲＡＩＤレベル制御テーブルを示す。図２１Ｂは、ＲＡＩＤ５からＲＡＩＤ６への変更完了後の第一の実施形態でのＲＡＩＤレベル制御テーブルを示す。
【図２２】図２２Ａは、ＲＡＩＤ６からＲＡＩＤ５への変更中の第一の実施形態でのＲＡＩＤレベル制御テーブルを示す。図２２Ｂは、ＲＡＩＤ６からＲＡＩＤ５への変更完了後の第一の実施形態でのＲＡＩＤレベル制御テーブルを示す。
【図２３】図２３Ａは、ＲＡＩＤグループのメンバに一時的にスペア１が追加された第一の実施形態でのＬＤＥＶ管理テーブルを示す。図２３Ｂは、ディスク＃３とスペア２が交換された第一の実施形態でのＬＤＥＶ管理テーブルを示す。
【図２４】図２４Ａは、ディスク＃３のエラーレートが閾値Ａを超えた場合の第一の実施形態でのディスク管理テーブルを示す。図２４Ｂは、ディスク＃３のエラーレートが閾値Ｂを超えた場合の第一の実施形態でのディスク管理テーブルを示す。
【図２５】図２５Ａは、オンライン中にディスクから旧データ要素Ｄ０３及び旧パリティＰ１の読出されることを示す。図２５Ｂは、オンライン中にＤＲＲ回路を利用した新パリティＰ１´の生成が行われることを示す。
【図２６】図２６Ａは、オンライン中に新データ要素Ｄ０３´及び新パリティＰ１´が旧データ要素Ｄ０３及び旧パリティＰ１に上書きされることを示す。図２６Ｂは、オンライン中にホストからのデータ要素Ｄ０３´がキャッシュメモリに書き込まれたがＬＤＥＶ＃０がＲＡＩＤ５からＲＡＩＤ６へ変更中であるためそのデータ要素Ｄ０３´の書込みが保留となっていることを示す。
【図２７】図２７Ａは、ＬＤＥＶ＃０についてＲＡＩＤ６が確定したことを示す。図２７Ｂは、旧データ要素Ｄ０３及び旧パリティＰ１及びＱ１のディスクからキャッシュメモリへの読み出しを示す。
【図２８】図２８Ａは、新パリティＰ１´及びＱ１´の生成を示す。図２８Ｂは、オンライン中に新データ要素Ｄ０３´、新パリティＰ１´及びＱ１´が旧データ要素Ｄ０３、旧パリティＰ１及びＱ１に上書きされることを示す。
【図２９】図２９Ａは、ＲＡＩＤアップ処理の開始時の保守画面を示す。図２９Ｂは、ＲＡＩＤアップ処理中の管理画面を示す。図２９Ｃは、ＲＡＩＤアップ処理の完了時の保守画面を示す。
【図３０】図３０は、第一の実施形態でのコピーバック及びＲＡＩＤダウン処理の流れを示す。
【図３１】図３１は、第一の実施形態でのエラーレートの監視の流れの一例を示す。
【図３２】図３２は、本発明の第二の実施形態においてＲＡＩＤ６を維持するかＲＡＩＤ５に戻すかの選択の流れを示す。
【図３３】図３３Ａは、ダイナミックスペアリングの開始時の保守画面を示す。図３３Ｂは、ダイナミックスペアリングの完了時の保守画面を示す。
【図３４】図３４Ａは、コピーバックの開始時の保守画面を示す。図３４Ｂは、コピーバック完了時の保守画面を示す。図３４Ｃは、ＲＡＩＤ５への変更完了時の保守画面を示す。
【符号の説明】
【０１６１】
１００…ホスト計算機  ３００…ストレージシステム
【図１】
2009037304.tif 000003
【図２】
2009037304.tif 000004
【図３】
2009037304.tif 000005
【図４】
2009037304.tif 000006
【図５】
2009037304.tif 000007
【図６】
2009037304.tif 000008
【図７】
2009037304.tif 000009
【図８】
2009037304.tif 000010
【図９】
2009037304.tif 000011
【図１０】
2009037304.tif 000012
【図１１】
2009037304.tif 000013
【図１２】
2009037304.tif 000014
【図１３】
2009037304.tif 000015
【図１４】
2009037304.tif 000016
【図１５】
2009037304.tif 000017
【図１６】
2009037304.tif 000018
【図１７】
2009037304.tif 000019
【図１８】
2009037304.tif 000020
【図１９】
2009037304.tif 000021
【図２０】
2009037304.tif 000022
【図２１】
2009037304.tif 000023
【図２２】
2009037304.tif 000024
【図２３】
2009037304.tif 000025
【図２４】
2009037304.tif 000026
【図２５】
2009037304.tif 000027
【図２６】
2009037304.tif 000028
【図２７】
2009037304.tif 000029
【図２８】
2009037304.tif 000030
【図２９】
2009037304.tif 000031
【図３０】
2009037304.tif 000032
【図３１】
2009037304.tif 000033
【図３２】
2009037304.tif 000034
【図３３】
2009037304.tif 000035
【図３４】
2009037304.tif 000036