(57)【特許請求の範囲】
【請求項１】
複数のデータと該複数のデータから生成した冗長コードとを分散格納する複数の記憶装置を管理する管理プログラムにおいて、
コンピュータに、
前記複数の記憶装置のうちの１つに障害が発生すると、該障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とを判断すると共に、前記使用されている記憶領域が、ユーザからのアクセス対象のデータの記憶に使用されているのか、該アクセス対象のデータの複製データの格納に使用されているのかを判断し、
前記アクセス対象のデータの記憶に使用されている記憶領域内のデータまたは冗長コードの復元順を、前記複製データの格納に使用されている記憶領域よりも先にして、前記複製データの格納に使用されている記憶領域内のデータまたは冗長コードの復元順を、前記使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先にして、前記障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定する、
処理を実行させることを特徴とする管理プログラム。
【請求項２】
前記使用されている記憶領域と前記使用されていない記憶領域との判断の際には、前記複数の記憶装置の記憶領域をまとめた論理ディスクの単位記憶領域ごとに、使用中か否かが設定された管理テーブルを記憶する記憶手段を参照し、前記障害が発生した記憶装置内の記憶領域のうち、使用中の単位記憶領域に割り当てられた記憶領域を、使用されていると判断することを特徴とする請求項１記載の管理プログラム。
【請求項３】
前記アクセス対象のデータの記憶に使用されている記憶領域と前記複製データの格納に使用されている記憶領域との判断の際には、前記複数の記憶装置の記憶領域をまとめた論理ディスクの単位記憶領域ごとに、前記アクセス対象のデータの記憶に使用中か、前記複製データの記憶に使用中か、あるいは未使用かを示すフラグが設定された管理テーブルを記憶する記憶手段を参照し、前記アクセス対象のデータの記憶に使用中の単位記憶領域に割り当てられた前記障害が発生した記憶装置内の記憶領域を、前記アクセス対象のデータの記憶に使用されていると判断し、前記複製データの記憶に使用中の単位記憶領域に割り当てられた前記障害が発生した記憶装置内の記憶領域を、前記複製データの記憶に使用されていると判断することを特徴とする請求項１記載の管理プログラム。
【請求項４】
復元順の決定の際には、管理情報が記憶された記憶領域内のデータまたは冗長コードの復元順を、前記使用されている記憶領域内のデータまたは冗長コードの復元順よりも先にすることを特徴とする請求項１乃至３のいずれかに記載の管理プログラム。
【請求項５】
複数のデータと該複数のデータから生成した冗長コードとを分散格納する複数の記憶装置を管理する管理装置において、
前記複数の記憶装置のうちの１つに障害が発生すると、該障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とを判断すると共に、前記使用されている記憶領域が、ユーザからのアクセス対象のデータの記憶に使用されているのか、該アクセス対象のデータの複製データの格納に使用されているのかを判断する判断手段と、
前記アクセス対象のデータの記憶に使用されている記憶領域内のデータまたは冗長コードの復元順を、前記複製データの格納に使用されている記憶領域よりも先にして、前記複製データの格納に使用されている記憶領域内のデータまたは冗長コードの復元順を、前記使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先にして、前記障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定する決定手段と、を有する、
ことを特徴とする管理装置。
【請求項６】
複数のデータと該複数のデータから生成した冗長コードとを分散格納する複数の記憶装置を管理する管理方法において、
コンピュータが、
前記複数の記憶装置のうちの１つに障害が発生すると、該障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とを判断すると共に、前記使用されている記憶領域が、ユーザからのアクセス対象のデータの記憶に使用されているのか、該アクセス対象のデータの複製データの格納に使用されているのかを判断し、
前記アクセス対象のデータの記憶に使用されている記憶領域内のデータまたは冗長コードの復元順を、前記複製データの格納に使用されている記憶領域よりも先にして、前記複製データの格納に使用されている記憶領域内のデータまたは冗長コードの復元順を、前記使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先にして、前記障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定する、
ことを特徴とする管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記憶装置を管理する管理プログラム、管理装置、および管理方法に関する。
【背景技術】
【０００２】
コンピュータシステムで管理するデータの信頼性を向上させる技術として、マルチノードストレージシステムやＲＡＩＤ（Redundant Array of Inexpensive Disks）がある。
マルチノードストレージシステムは、データを複数のコンピュータで分散管理するものである。マルチノードストレージシステムでは、例えば制御ノードの管理の下、仮想的なディスク（論理ディスク）に格納するデータが複数のディスクノードに分散格納される。
【０００３】
ＲＡＩＤでは、複数台のハードディスクを組み合わせて、冗長化された１台の論理的なボリュームとして管理することができる。ＲＡＩＤには、データ配置やデータの冗長化方法の異なる複数のレベルが定義されている。例えば、ＲＡＩＤには、同一のデータを複数のディスクに書き込むミラーリング技術（ＲＡＩＤ１）や、複数のデータからパリティデータを生成し、失ったデータを、パリティデータを用いて復元可能とする技術（ＲＡＩＤ５など）が定義されている。
【０００４】
なお、複数のデータと、その複数のデータから生成したパリティデータと含めたデータ群は、ストライプと呼ばれる。またストライプに含まれる複数のデータとパリティデータとを記憶する記憶領域は、ストリップと呼ばれる。
【０００５】
マルチノードストレージシステムとＲＡＩＤとを組み合わせて使用することも可能である。例えば、マルチノードストレージシステムを構成するディスクノードに、ＲＡＩＤを用いたストレージ装置を接続し、そのストレージ装置にマルチノードストレージシステムで管理しているデータを格納することができる。これにより、データの信頼性をさらに向上させることができる。
【０００６】
ところで、ＲＡＩＤ５を用いたストレージ装置は、ＲＡＩＤグループを構成する複数のディスクのうちの１台が壊れた場合、残っているディスク上のデータとパリティデータとを元に壊れたディスクに格納されていたデータを復元する。そしてストレージ装置は、復元したデータをスペアディスクに書き込んでいく。この処理をリビルド（Rebuild）処理と呼ぶ。スペアディスクに対し復元したデータをすべて書き込み終わったときに、リビルド処理が完了する。
【０００７】
リビルド処理中にデータアクセスがあった場合、リビルドが終わったストリップにアクセスするのかリビルドが行われていないストリップにアクセスするのかで処理が異なる。リビルドが終わったストリップへのアクセスであれば、リビルド処理を行っていない場合と同様の処理が行われる。すなわち、ストレージ装置は、リビルド処理が完了したストリップへのリード要求を受け取ると、ディスク内のリード対象データを包含するストリップからデータを読み込む。またストレージ装置は、リビルド処理が完了したストリップへのライト要求を受け取ると、書き込み対象のストリップと、そのストリップと同じストライプを構成するストリップのパリティデータとを読み込む。そしてストレージ装置は、パリティデータを再計算し、書き込み対象のストリップにデータを書き込むとともに、再計算したパリティデータを元のストリップに書き戻す。
【０００８】
一方、リビルド処理が行われていないストリップへのアクセスであれば、リジェネレート処理が行われる。リジェネレート処理は、リード対象のデータを復元する処理である。リジェネレート処理では、ストレージ装置が、リード対象のストリップと同じストライプを構成する他のディスクのストリップからデータとパリティデータとを読み出し、それらを用いてリードするデータを生成する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】国際公開第２００４／１０４８４５号
【特許文献２】特開２００５−０９９９９５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし、ユーザから見た場合、リード要求に応じた処理の過程でリジェネレート処理が行われると、リード要求に対するレスポンスが遅くなる。
１つの側面では、本発明はデータ復元中のレスポンスの遅延を抑制することができる管理プログラム、管理装置、および管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
１つの案では、複数のデータと該複数のデータから生成した冗長コードとを分散格納する複数の記憶装置を管理する管理プログラムにおいて、コンピュータに、複数の記憶装置のうちの１つに障害が発生すると、該障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とを判断し、使用されている記憶領域内のデータまたは冗長コードの復元順を、使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先にして、障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定する、処理を実行させることを特徴とする管理プログラムが提供される。
【００１２】
また１つの案では、複数のデータと該複数のデータから生成した冗長コードとを分散格納する複数の記憶装置を管理する管理装置において、複数の記憶装置のうちの１つに障害が発生すると、該障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とを判断する判断手段と、使用されている記憶領域内のデータまたは冗長コードの復元順を、使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先にして、障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定する決定手段と、を有することを特徴とする管理装置が提供される。
【００１３】
また１つの案では、複数のデータと該複数のデータから生成した冗長コードとを分散格納する複数の記憶装置を管理する管理方法において、コンピュータが、複数の記憶装置のうちの１つに障害が発生すると、該障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とを判断し、使用されている記憶領域内のデータまたは冗長コードの復元順を、使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先にして、障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定する、ことを特徴とする管理方法が提供される。
【発明の効果】
【００１４】
データ復元中のレスポンスの遅延を抑制することができる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態の機能構成を示す図である。
【図２】第２の実施の形態のマルチノードストレージシステム構成の一例を示す図である。
【図３】本実施の形態に用いるディスクノードのハードウェアの一構成例を示す図である。
【図４】ストレージ装置のハードウェア構成例を示す図である。
【図５】論理ボリュームのデータ構造の一例を示す図である。
【図６】論理ディスクのデータ構造の一例を示す図である。
【図７】ＲＡＩＤシステム領域のデータ構造例を示す図である。
【図８】デバイス情報記憶領域のデータ構造例を示す図である。
【図９】スライス情報記憶領域のデータ構造例を示す図である。
【図１０】論理ディスク内のデータの格納例を示す図である。
【図１１】第２の実施の形態に係るディスクノードとストレージ装置の機能を示すブロック図である。
【図１２】リビルド処理の手順を示すシーケンス図である。
【図１３】リビルド指示処理の手順を示すフローチャートである。
【図１４】スペアの物理ディスク内のデータの状態遷移を示す第１の図である。
【図１５】スライスリストの例を示す図である。
【図１６】スペアの物理ディスク内のデータの状態遷移を示す第２の図である。
【図１７】第３の実施の形態に係るディスクノードとストレージ装置の機能を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の機能構成を示す図である。管理装置１は、複数のデータと、その複数のデータから生成した冗長コードとを分散格納する複数の記憶装置２〜６を管理する。例えば、記憶装置２〜６には、ＲＡＩＤ５の技術により、複数のデータと冗長コードとが分散格納されている。なお、ＲＡＩＤ５における冗長コードは、パリティデータと呼ばれる。
【００１７】
記憶装置２〜６のうちの１つに障害が発生した場合、障害が発生した記憶装置に格納されているデータまたは冗長コードを、他の記憶装置それぞれに格納されているデータまたは冗長コードを用いて復元することができる。このような処理は、リビルド処理と呼ばれる。リビルド処理では、例えば記憶装置３に障害が発生した場合、記憶装置３に格納されていたデータまたは冗長コードが復元される。復元されたデータまたは冗長コードは、予備として用意されている記憶装置７に格納される。
【００１８】
管理装置１は、このようなリビルド処理におけるデータまたは冗長コードの復元順を制御する。復元順の制御のために、管理装置１は、記憶手段１ａ、判断手段１ｂ、決定手段１ｃ、および復元手段１ｄを有している。
【００１９】
記憶手段１ａは、複数の記憶装置２〜６の記憶領域をまとめた論理ディスクの単位記憶領域ごとに、使用中か否かが設定された管理テーブル１ａ−１を記憶する。
判断手段１ｂは、複数の記憶装置２〜６のうちの１つに障害が発生すると、障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とを判断する。例えば、判断手段１ｂは、記憶手段１ａを参照し、障害が発生した記憶装置内の記憶領域のうち、使用中の単位記憶領域に割り当てられた記憶領域が使用されていると判断する。
【００２０】
決定手段１ｃは、使用されている記憶領域内のデータまたは冗長コードの復元順を、使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先にして、障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定する。
【００２１】
復元手段１ｄは、決定手段１ｃで決定された復元順に沿って、複数の記憶装置２〜６のうちの障害が発生した記憶装置以外の記憶装置それぞれからデータまたは冗長コードを読み出し、障害が発生した記憶装置内のデータまたは冗長コードを復元する。そして、復元手段１ｄは、復元したデータまたは冗長コードを予備の記憶装置７に格納する。
【００２２】
このような管理装置１によれば、複数の記憶装置２〜６のうちの１つに障害が発生すると、判断手段１ｂにより、障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とが判断される。図１の例では、記憶装置３に障害が発生している。また、管理テーブル１ａ−１には、論理ディスクの単位記憶領域のうち、「area#2」、「area#4」、「area#5」が使用中であり、「area#1」、「area#3」、「area#6」が使用中でない（不使用）であることが示されている。この場合、判断手段１ｂは、記憶装置３の記憶領域のうち、論理ディスクの「area#2」、「area#4」、および「area#5」に割り当てられた記憶領域が使用されていると判断する。
【００２３】
次に決定手段１ｃにより、障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順が決定される。決定される復元順では、使用されている記憶領域内のデータまたは冗長コードの復元順が、使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先となる。図１の例では、論理ディスクの「area#2」、「area#4」、および「area#5」に割り当てられた記憶領域内のデータまたは冗長コードの復元順が、「area#1」、「area#3」、「area#6」に割り当てられた記憶領域内のデータまたは冗長コードよりも先となる。
【００２４】
そして、復元手段１ｄにより、決定手段１ｃで決定された復元順に沿って、障害が発生した記憶装置内のデータまたは冗長コードが復元される。復元されたデータまたは冗長コードは、復元手段１ｄにより記憶装置７に格納される。図１に示す記憶装置７の第１の状態は、使用されている記憶領域内のデータまたは冗長コードの復元が完了後の状態である。第１の状態では、記憶装置３内の記憶領域のうち、論理ディスクの「area#2」、「area#4」、および「area#5」に割り当てられた記憶領域内のデータまたは冗長コードが復元され、記憶装置７に格納されている。図１に示す記憶装置７の第２の状態は、使用されていない記憶領域内のデータまたは冗長コードの復元が完了後の状態である。第２の状態では、記憶装置３内のすべての記憶領域内のデータまたは冗長コードが復元され、記憶装置７に格納されている。
【００２５】
このように、使用されている記憶領域内のデータまたは冗長コードを優先的に復元するようにしたことで、データ復元中に発生したリード要求に対するレスポンスの遅延を抑制することができる。例えば、記憶装置３に障害が発生した場合を想定する。このとき障害が発生した記憶装置３に格納されたデータへのリード要求が発生すると、対象のデータが復元前であれば、記憶装置２，４〜６それぞれに分散格納されているデータまたは冗長コードを用いて対象のデータが復元される。そして、復元されたデータが応答される。この場合、リード要求に応じた処理の課程でデータ復元処理が行われるため、単純に対象のデータを記憶装置から読み出して応答する場合に比べて、応答に時間がかかる。他方、リード要求の対象のデータが既に復元済であれば、記憶装置７からデータが読み出され、読み出しデータが応答される。この場合、データの復元処理が行われない分、迅速に応答することができる。
【００２６】
管理装置１では、使用中の記憶領域内のデータを優先的に復元しているため、データ復元中のリード要求の対象となるデータが、復元済みである可能性が高くなる。その結果、データ復元中のレスポンスの遅延が抑制される。
【００２７】
ところで、ＲＡＩＤ５のようなパリティデータを含めたストライピングの技術と、ＲＡＩＤ１のようなミラーリングの技術とを併用してデータを管理することも可能である。このとき、ミラーリングによって二重化されたデータのうち、ユーザからのアクセス対象を一方のデータに限定しておくことができる。アクセス対象のデータが一方に限定されている場合、アクセス対象のデータを優先的に復元させることで、その結果、データ復元中のレスポンスの遅延をさらに抑制できる。
【００２８】
二重化されたデータのうちのアクセス対象のデータを優先的に復元させるこの場合、判断手段１ｂは、障害が発生した記憶装置における使用されている記憶領域内のデータが、アクセス対象のデータかを判断する。すなわち、判断手段１ｂは、使用されている記憶領域内が、ユーザからのアクセス対象のデータの記憶に使用されているのか、アクセス対象のデータの複製データの格納に使用されているのかを判断する。そして、決定手段１ｃは、アクセス対象のデータの記憶に使用されている記憶領域内のデータまたは冗長コードの復元順を、複製データの格納に使用されている記憶領域よりも先にして、データまたは冗長コードの復元順を決定する。これにより、先にアクセス対象のデータが復元され、次に複製データが復元される。その結果、ユーザからのアクセス対象となるデータが迅速に復元され、リード要求に対するレスポンスの遅延が抑制される。
【００２９】
なお、決定手段１ｃは、記憶装置２〜６内に管理情報が記憶されている場合、管理情報が記憶された記憶領域内のデータまたは冗長コードの復元順を、使用されている記憶領域内のデータまたは冗長コードの復元順よりも先にすることができる。これにより、管理情報を迅速に復元し、システムの信頼性低下を抑制することができる。
【００３０】
また、記憶装置２〜６がＲＡＩＤ機能を有するストレージ装置に内蔵されている場合がある。この場合、障害が発生した記憶装置に格納されているデータの復元は、ストレージ装置において行うことができる。そこで、記憶装置２〜６がＲＡＩＤ機能を有するストレージ装置に内蔵されている場合、管理装置１には、復元手段１ｄに代えて、データの復元順をストレージ装置に指示する指示手段が設けられる。指示手段は、決定手段１ｃで決定された復元順に沿って、障害が発生した記憶装置内のデータまたは冗長コードの復元を、複数の記憶装置２〜６を有するストレージ装置に指示する。
【００３１】
［第２の実施の形態］
第２の実施の形態は、ＲＡＩＤシステムとマルチノードストレージシステムとを組み合わせて、データの信頼性を向上させた場合における、リビルド処理中のレスポンス時間の遅延短縮の例である。
【００３２】
なお、ＲＡＩＤシステムとマルチノードストレージシステムとを組み合わせた場合、論理ディスクが２段階の階層構造となる。すなわち、ＲＡＩＤシステムのストレージ装置内で定義された複数の論理ディスクをまとめて、マルチノードストレージシステムにおいて定義された論理ディスクとすることができる。そこで以下の説明では、マルチノードストレージシステムにおいて定義された論理ディスクを特に「論理ボリューム」と呼び、ＲＡＩＤシステムで定義された論理ディスクと区別することとする。
【００３３】
図２は、第２の実施の形態のマルチノードストレージシステム構成の一例を示す図である。本実施の形態では、ネットワーク１０を介して、複数のディスクノード１００，２００，３００，４００、制御ノード５００、およびアクセスノード６００が接続されている。ディスクノード１００，２００，３００，４００それぞれには、ストレージ装置１１０，２１０，３１０，４１０が接続されている。
【００３４】
ストレージ装置１１０には、複数の物理ディスク１１１〜１１６が実装されている。物理ディスクは、例えば磁気によってデータの書き込みと読み出しを行うハードディスク装置（ＨＤＤ:Hard Disk Drive）である。ストレージ装置２１０には、複数の物理ディスク２１１〜２１６が実装されている。ストレージ装置３１０には、複数の物理ディスク３１１〜３１６が実装されている。ストレージ装置４１０には、複数の物理ディスク４１１〜４１６が実装されている。各ストレージ装置１１０，２１０，３１０，４１０は、内蔵する物理ディスクを用いたＲＡＩＤシステムである。本実施の形態では、各ストレージ装置１１０，２１０，３１０，４１０のＲＡＩＤ５のディスク管理サービスを提供する。
【００３５】
ディスクノード１００，２００，３００，４００は、接続されたストレージ装置１１０，２１０，３１０，４１０に格納されたデータを管理し、管理しているデータをネットワーク１０経由で端末装置２１，２２，２３に提供する。また、ディスクノード１００，２００，３００，４００は、冗長性を有するデータを管理している。すなわち、同一のデータが、少なくとも２つのディスクノードで管理されている。
【００３６】
制御ノード５００は、ディスクノード１００，２００，３００，４００を管理する。例えば、制御ノード５００は、ディスクノード１００，２００，３００，４００から新たなストレージ装置の接続通知を受け取ると、論理ボリュームを介して接続されたストレージ装置にアクセスできるようにする。
【００３７】
アクセスノード６００には、ネットワーク２０を介して複数の端末装置２１，２２，２３が接続されている。また、アクセスノード６００には、論理ボリュームが定義されている。そして、アクセスノード６００は、端末装置２１，２２，２３からの論理ボリュームのデータのアクセス要求に応答して、ディスクノード１００，２００，３００，４００内の対応するデータへアクセスする。
【００３８】
図３は、本実施の形態に用いるディスクノードのハードウェアの一構成例を示す図である。ディスクノード１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０９を介してＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。
【００３９】
ＲＡＭ１０２は、ディスクノード１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００４０】
バス１０９に接続されている周辺機器としては、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、通信インタフェース１０７、およびストレージインタフェース１０８がある。
【００４１】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、ディスクノード１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００４２】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。モニタ１１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４３】
入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４４】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１４に記録されたデータの読み取りを行う。光ディスク１４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４５】
通信インタフェース１０７は、ネットワーク１０に接続されている。通信インタフェース１０７は、ネットワーク１０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４６】
ストレージインタフェース１０８は、ストレージ装置１１０に接続されている。ストレージインタフェース１０８は、ストレージ装置１１０に対するデータの入出力を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３ではディスクノード１００のハードウェア構成を示したが、他のディスクノード２００，３００，４００、制御ノード５００、およびアクセスノード６００も同様のハードウェア構成で実現することができる。
【００４７】
図４は、ストレージ装置のハードウェア構成例を示す図である。ストレージ装置１１０は、物理ディスク１１１〜１１６を制御する制御部１１７を有している。制御部１１７は、例えば物理ディスク１１１〜１１６を用いたＲＡＩＤ５の制御を行うことができる。
【００４８】
制御部１１７は、ホストインタフェース（ＩＦ）１１７ａ、物理ディスクインタフェース（ＩＦ）１１７ｂ，１１７ｃ，１１７ｄ，１１７ｅ，１１７ｆ，１１７ｇ、ＲＡＩＤコントローラ１１７ｈ、ＣＰＵ１１７ｉ、およびメモリ１１７ｊを有している。
【００４９】
ホストＩＦ１１７ａは、ディスクノード１００と通信を行うインタフェースである。物理ディスクＩＦ１１７ｂ，１１７ｃ，１１７ｄ，１１７ｅ，１１７ｆ，１１７ｇは、物理ディスク１１１〜１１６に対してデータの入出力を行うインタフェースである。
【００５０】
ＲＡＩＤコントローラ１１７ｈは、ホストＩＦ１１７ａと、物理ディスクＩＦ１１７ｂ，１１７ｃ，１１７ｄ，１１７ｅ，１１７ｆ，１１７ｇそれぞれとに接続されている。ＲＡＩＤコントローラ１１７ｈは、ディスクノード１００からホストＩＦ１１７ａを介して入力された論理ディスクへのアクセス要求を、予め設定されたＲＡＩＤレベルに従って処理する。例えばＲＡＩＤコントローラ１１７ｈは、ＲＡＩＤ５の技術を適用して、論理ディスクへのアクセス要求に応じて、アクセス対象の記憶領域を有する物理ディスクにアクセスする。
【００５１】
ＣＰＵ１１７ｉとメモリ１１７ｊとは、内部バス１１７ｋを介して、ホストＩＦ１１７ａ、物理ディスクＩＦ１１７ｂ，１１７ｃ，１１７ｄ，１１７ｅ，１１７ｆ，１１７ｇ、およびＲＡＩＤコントローラ１１７ｈに接続されている。ＣＰＵ１１７ｉは、故障検知や、故障検知時のリビルド処理におけるリビルド順番の制御などを行う。メモリ１１７ｊは、ＣＰＵ１１７ｉに実行させる処理が記述されたプログラムや、各種データを記憶する。
【００５２】
なお、図４にはストレージ装置１１０のハードウェア構成を示したが、他のストレージ装置２１０，３１０，４１０も同様のハードウェア構成で実現できる。
次に、マルチノードストレージシステムにおいて定義される論理ボリュームのデータ構造について説明する。
【００５３】
図５は、論理ボリュームのデータ構造の一例を示す図である。第２の実施の形態では、論理ボリューム６０には論理ボリューム識別子「ＬＶＯＬ−Ｘ」が付与されている。ネットワーク経由で接続された４台のディスクノード１００，２００，３００，４００には、個々のノードの識別用にそれぞれ「ＤＰ１」、「ＤＰ２」、「ＤＰ３」、「ＤＰ４」というディスクノードＩＤが付与されている。そして、各ディスクノード１００，２００，３００，４００に接続されているストレージ装置１１０，２１０，３１０，４１０内の論理ディスク７１，７２，７３，７４は、ディスクノードＩＤと、各ディスクノード内での論理ディスク名との組によってネットワーク１０で一意に識別される。
【００５４】
各ディスクノード１００，２００，３００，４００が有するストレージ装置１１０，２１０，３１０，４１０それぞれにおいてＲＡＩＤ５のストレージシステムが構成されている。ＲＡＩＤ５では、ＲＡＩＤグループが作成される。ＲＡＩＤグループそれぞれには、１以上の論理ディスク７１，７２，７３，７４が含まれる。
【００５５】
論理ディスク７１，７２，７３，７４は、それぞれ複数のスライス７１ａ，７１ｂ，７１ｃ，・・・，７２ａ，７２ｂ，７２ｃ，・・・、７３ａ，７３ｂ，７３ｃ，・・・、７４ａ，７４ｂ，７４ｃ，・・・に分割されて管理されている。
【００５６】
論理ボリューム６０は、セグメント６１〜６４という単位で構成される。セグメント６１〜６４の記憶容量は、ストレージ装置１１０，２１０，３１０，４１０における管理単位であるスライスの記憶容量と同じである。例えば、スライスの記憶容量が１ギガバイトとするとセグメントの記憶容量も１ギガバイトである。論理ボリューム６０の記憶容量はセグメント１つ当たりの記憶容量の整数倍である。セグメント６１〜６４は、それぞれプライマリスライス６１ａ，６２ａ，６３ａ，６４ａとセカンダリスライス６１ｂ，６２ｂ，６３ｂ，６４ｂとの組（スライスペア）で構成される。
【００５７】
同一セグメントに属する２つのスライスは別々のディスクノードに属する。個々のスライスを管理する領域には論理ボリューム識別子やセグメント情報や同じセグメントを構成するスライス情報の他にフラグがあり、そのフラグにはプライマリあるいはセカンダリなどを表す値が格納される。
【００５８】
図５の例では、論理ボリューム６０内のスライスの識別子を、「Ｐ」または「Ｓ」のアルファベットと数字との組合せで示している。「Ｐ」はプライマリスライスであることを示している。「Ｓ」はセカンダリスライスであることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば、１番目のセグメント６１のプライマリスライスが「Ｐ１」で示され、セカンダリスライスが「Ｓ１」で示される。
【００５９】
なお、第２の実施の形態では、アクセスノード６００は、プライマリスライスに対してアクセスを行う。すなわちアクセスノード６００は、端末装置から論理ボリューム内のデータのアクセス要求を受け取ると、アクセス対象のデータが属するセグメントに割り当てられたプライマリスライスに対してアクセスを行う。
【００６０】
プライマリスライス内に書き込みが行われた場合には、ディスクノード１００，２００，３００，４００同士が連係動作を行い、同一のセグメントに割り当てられたスライス内のデータの同一性を保つ。例えば、データが更新されたプライマリスライスを管理するディスクノードが、同一のセグメントに割り当てられたセカンダリスライスを管理するディスクノードに対して、更新後のデータを送信する。更新後のデータを受信したディスクノードは、受信したデータをセカンダリスライスに書き込む。このようにして、論理ボリュームにおいてデータが二重化される。
【００６１】
図６は、論理ディスクのデータ構造の一例を示す図である。論理ディスク７１には、ＲＡＩＤシステム領域７１−１、デバイス情報記憶領域７１−２、スライス情報記憶領域７１−３、および複数のスライス７１ａ，７１ｂ，７１ｃ，・・・が設けられている。
【００６２】
ＲＡＩＤシステム領域７１−１は、ＲＡＩＤ５などのＲＡＩＤシステムの管理に利用する情報を格納する記憶領域である。
デバイス情報記憶領域７１−２とスライス情報記憶領域７１−３とは、ディスクノード１００が論理ディスク７１の管理に利用する管理情報を格納する管理情報領域である。デバイス情報記憶領域７１−２は、論理ディスク７１内のデータの管理に利用する情報（デバイス情報）を格納する記憶領域である。スライス情報記憶領域７１−３は、複数のスライス７１ａ，７１ｂ，７１ｃ，・・・の管理に利用する情報（スライス情報）を格納する記憶領域である。複数のスライス７１ａ，７１ｂ，７１ｃ，・・・は、論理ボリューム６０のセグメントのデータを記憶するデータ領域である。
【００６３】
ディスクノード１００から論理ディスク７１内のデータにアクセスする場合、論理ブロックアドレス（ＬＢＡ：Logical Block Address）によって、アクセス対象のデータを含むブロックが指定される。論理ディスク７１では、デバイス情報記憶領域７１−２の先頭の位置が、論理ディスク７１の開始アドレス（ＬＢＡ＝０）である。すなわち、論理ディスク７１のアドレスは、デバイス情報記憶領域７１−２、スライス情報記憶領域７１−３、および複数のスライス７１ａ，７１ｂ，７１ｃ，・・・に対して付与されている。そのためディスクノード１００からＲＡＩＤシステム領域７１−１内のデータに直接アクセスすることはできない。他方、ディスクノード１００は、論理ディスク７１のアドレス（ＬＢＡ）を指定することで、デバイス情報記憶領域７１−２、スライス情報記憶領域７１−３、および複数のスライス７１ａ，７１ｂ，７１ｃ，・・・内の任意のデータにアクセスすることができる。
【００６４】
図７は、ＲＡＩＤシステム領域のデータ構造例を示す図である。ＲＡＩＤシステム領域７１−１には、ＲＡＩＤシステム情報８１が格納されている。ＲＡＩＤシステム情報８１には、バージョン、ＲＡＩＤグループＩＤ、ＲＡＩＤレベル、ＲＡＩＤデバイス数、スペアデバイス数、ステータス、初期化時刻、状態変化時刻、ボリューム対応表、およびその他の属性のフィールドが設けられている。
【００６５】
バージョンのフィールドには、ＲＡＩＤシステムのバージョンが設定される。ＲＡＩＤグループＩＤのフィールドには、ＲＡＩＤグループを識別するための識別子（ＲＡＩＤグループＩＤ）が設定される。ＲＡＩＤレベルのフィールドには、適用されているＲＡＩＤレベル（例えばＲＡＩＤ５）が設定される。ＲＡＩＤデバイス数のフィールドには、ＲＡＩＤグループを構成する物理ディスクの数が設定される。スペアデバイス数のフィールドには、スペアとして用意された物理ディスクの数が設定される。ステータスのフィールドには、正常、リビルド中、縮退中（リビルドするためのスペアがない）などのＲＡＩＤシステムの現在の状態を示す情報が設定される。初期化時刻のフィールドには、ＲＡＩＤグループを作成した時刻が設定される。状態変化時刻のフィールドには、ステータスが変化した最近の時刻が設定される。ボリューム対応表のフィールドには、論理ボリュームと論理ディスクとの対応関係を示すボリューム対応表が設定される。例えば、ボリューム対応表には、論理ボリュームの論理ディスク名（ＬＤ−ＩＤ）に対応付けて、論理ディスクのＲＡＩＤグループＩＤとＲＡＩＤグループ内での識別番号（ＬＵＮ：Logical Unit Number）とが設定される。その他の属性のフィールドには、ストライプサイズやＲＡＩＤ５のパリティの作り方などの情報が設定される。
【００６６】
図８は、デバイス情報記憶領域のデータ構造例を示す図である。デバイス情報記憶領域７１−２には、デバイス情報８２が格納されている。デバイス情報８２には、論理ディスク名（ＬＤ−ＩＤ）、ブロック長、ブロック数、スライスサイズ、スライス数、スライス情報記憶領域開始アドレス、スライス情報記憶領域サイズ、チェックコード種別、暗号化種別、初期化時刻、およびその他の情報のフィールドが設けられている。
【００６７】
論理ディスク名（ＬＤ−ＩＤ）のフィールドには、論理ディスク名が設定される。ブロック長のフィールドには、１ブロックのバイト数（例えば、５１２バイト）が設定される。ブロック数のフィールドには、ブロック数で表したディスク容量（例えば：488281250）が設定される。スライスサイズのフィールドには、１スライスの大きさ（例えば１ギガバイト）が設定される。スライス数のフィールドには、確保できるスライスの数（例えば２３０）が設定される。スライス情報記憶領域開始アドレスのフィールドには、スライス情報記憶領域７１−３の先頭のアドレス（ＬＢＡ）が設定される。例えばスライス情報記憶領域７１−３の先頭のアドレスは、デバイス情報記憶領域７１−２の先頭のアドレス（ＬＢＡ＝０）からの相対位置（例えば２０４８ブロック目）で示される。スライス情報記憶領域サイズのフィールドには、スライス情報記憶領域７１−３の記憶容量（例えば１メガバイト)が設定される。チェックコード種別のフィールドには、エラーチェックコードの有無（例えばチェックあり）などが設定される。暗号化種別のフィールドには、暗号化の有無（例えば暗号化なし）や暗号化方式などが設定される。初期化時刻のフィールドには、スライス単位のディスクレイアウトにフォーマットした日時（例えば、2010年4月1日12時20分）が設定される。その他の情報のフィールドには、上記で説明した以外の論理ディスクの管理に使用される各種情報が設定される。
【００６８】
図９は、スライス情報記憶領域のデータ構造例を示す図である。スライス情報記憶領域７１−３には、デバイス情報記憶領域７１−２に書き込まれているスライス数分のスライス情報８３ａ，８３ｂ，８３ｃ，・・・が格納される。各スライス情報８３ａ，８３ｂ，８３ｃ，・・・には、スライスＩＤ、属性フラグ、論理ディスク名、スライス位置、スライスサイズ、およびその他の属性のフィールドが設けられている。
【００６９】
スライスＩＤのフィールドには、論理ディスク内でのスライスの識別番号が設定される。例えば、スライス情報８３ａのスライスＩＤのフィールドには、「１０００」と設定されている。
【００７０】
属性フラグのフィールドには、セグメントへの割当状態を示すフラグ（属性フラグ）が設定される。属性フラグには、プライマリ、セカンダリ、フリーなどがある。スライスが、論理ボリュームのセグメントに対してプライマリスライスとして割り当てられている場合、「プライマリ」の属性フラグが設定される。スライスが、論理ボリュームのセグメントに対してセカンダリスライスとして割り当てられている場合、「セカンダリ」の属性フラグが設定される。スライスが、論理ボリュームのセグメントに対して割り当てられていない場合、「フリー」の属性フラグが設定される。例えば、スライス情報８３ａの属性フラグのフィールドには、「フリー」と設定されている。
【００７１】
論理ディスク名のフィールドには、スライスが属する論理ディスクの論理ディスク名（ＬＤ−ＩＤ）が設定される。例えば、スライス情報８３ａの論理ディスク名のフィールドには、「ＬＤ−１０」と設定されている。
【００７２】
スライス位置のフィールドには、論理ディスク７１内でのスライス位置を示すアドレスが設定される。例えば、スライス情報８３ａのスライス位置のフィールドには、「４０９６」と設定されている。
【００７３】
スライスサイズのフィールドには、ブロック数によって示されるスライスのサイズが設定される。例えば、スライス情報８３ａのスライスサイズのフィールドには、「２０９７１５２」と設定されている。
【００７４】
その他の属性のフィールド（attr）には、上記以外のスライス管理に利用される属性情報が設定される。例えば、その他の属性のフィールドには、スライスが割り当てられた論理ボリュームの識別子や、割り当てられたセグメントを示すセグメントＩＤが設定される。
【００７５】
図６〜図９に示した論理ディスク７１内のデータは、複数の物理ディスク１１１〜１１５に分散格納される。
図１０は、論理ディスク内のデータの格納例を示す図である。論理ディスク７１のデータは、ＲＡＩＤ５（パリティデータを含むストライピング）によって、５台の物理ディスク１１１〜１１５に分散格納される。図１０では、ＲＡＩＤシステム領域７１−１に属するデータを「１−１」、「１−２」、・・・で示している。デバイス情報記憶領域７１−２に属するデータを、「２−１」、「２−２」、・・・で示している。スライス情報記憶領域７１−３に属するデータを、「３−１」、「３−２」、・・・で示している。スライス７１ａに属するデータを、「４−１」、「４−２」、・・・で示している。スライス７１ｂに属するデータを、「５−１」、「５−２」、・・・で示している。
【００７６】
図１０の例では、４つのデータを用いて１つのパリティデータが生成されている。なお、図１０では、パリティデータについては、「−」の右側に「Ｐ」と表記している。例えば「１−１」、「１−２」、「１−３」、「１−４」のデータに基づいて、パリティデータ「１−Ｐ１」が生成されている。パリティデータの生成に使用した４つのデータと、生成されたパリティデータとは、それぞれ異なる物理ディスクに格納される。
【００７７】
このような論理ボリューム及び論理ディスクを用いてデータを管理するシステムにおいて、ＲＡＩＤシステムを構成する物理ディスクの１つが故障すると、リビルド処理が行われる。以下にリビルド処理に関する機能について詳細に説明する。
【００７８】
図１１は、第２の実施の形態に係るディスクノードとストレージ装置の機能を示すブロック図である。ディスクノード１００は、管理情報記憶部１２０、管理情報制御部１３０、アクセス要求処理部１４０、およびリビルド指示部１５０を有する。
【００７９】
管理情報記憶部１２０は、ストレージ装置１１０内の論理ディスク７１に格納されているデバイス情報とスライス情報とを含む管理情報のコピーを記憶する。例えば、ＲＡＭ１０２またはＨＤＤ１０３の記憶領域の一部が、管理情報記憶部１２０として使用される。管理情報記憶部１２０が記憶するデバイス情報の内容は、ストレージ装置１１０内のデバイス情報記憶領域７１−２内のデバイス情報と同じである。管理情報記憶部１２０が記憶するスライス情報の内容は、ストレージ装置１１０内のスライス情報記憶領域７１−３内のスライス情報８３ａ，８３ｂ，８３ｃ，・・・と同じである。
【００８０】
管理情報制御部１３０は、管理情報記憶部１２０に記憶される管理情報を制御する。例えば、管理情報制御部１３０は、ディスクノード１００の起動時にストレージ装置１１０からデバイス情報とスライス情報とを取得し、管理情報記憶部１２０に格納する。また、管理情報制御部１３０は、論理ボリューム６０のセグメントへのスライスの割り当て指示を制御ノード５００から受け取ると、指示に従って管理情報記憶部１２０のスライス情報の内容を変更する。この際、管理情報制御部１３０は、ストレージ装置１１０内のスライス情報記憶領域７１−３内のスライス情報も更新する。
【００８１】
アクセス要求処理部１４０は、アクセスノード６００からのアクセス要求に従って、ストレージ装置１１０内のデータにアクセスする。例えばアクセス要求処理部１４０は、論理ボリュームのセグメント内のデータを指定したアクセス要求をアクセスノード６００から受け取る。アクセス要求処理部１４０は、受け取ったアクセス要求に応じて管理情報記憶部１２０を参照し、指定されたセグメントに割り当てられているスライスのスライスＩＤと、そのスライスが属する論理ディスク名（ＬＤ−ＩＤ）とを特定する。次にアクセス要求処理部１４０は、特定した論理ディスク名とスライスＩＤとを指定して、ストレージ装置１１０に対して、指定したスライス内のデータのアクセス要求を出力する。
【００８２】
リビルド指示部１５０は、ストレージ装置１１０がリビルド処理を実行する際に、リビルドの対象とする情報をストレージ装置１１０に指示する。例えば、リビルド指示部１５０は、ストレージ装置１１０からリビルド通知９１を受けることで、ストレージ装置１１０におけるリビルド処理の開始を認識する。リビルド通知９１には、例えば、リビルド対象の論理ディスクの論理ディスク名（ＬＤ−ＩＤ）が含まれる。リビルド指示部１５０は、リビルド処理が開始されたことを認識すると、管理情報記憶部１２０を参照し、リビルド対象の論理ディスクの記憶領域を１つずつ選択し、選択した記憶領域を指定したリビルド指示９２をストレージ装置１１０に送信する。リビルド指示９２には、リビルド対象の論理ディスクの論理ディスク名（ＬＤ−ＩＤ）、選択した記憶領域の開始アドレス、選択した記憶領域のサイズが含まれる。
【００８３】
ストレージ装置１１０は、複数の物理ディスク１１１〜１１６に加え、管理情報記憶部１１８、データアクセス部１１９、およびリビルド制御部１１０ａを有する。
管理情報記憶部１１８は、ストレージ装置１１０内の論理ディスク７１に格納されているデバイス情報とスライス情報とを含む管理情報のコピーを記憶する。例えば、メモリ１１７ｊの記憶領域の一部が、管理情報記憶部１１８として使用される。管理情報記憶部１１８が記憶するデバイス情報の内容は、デバイス情報記憶領域７１−２内のデバイス情報と同じである。管理情報記憶部１２０が記憶するスライス情報の内容は、スライス情報記憶領域７１−３内のスライス情報８３ａ，８３ｂ，８３ｃ，・・・と同じである。
【００８４】
データアクセス部１１９は、ディスクノード１００からアクセス要求に応じて、物理ディスク１１１〜１１６に格納されたデータにアクセスする。そしてデータアクセス部１１９は、アクセス結果を、ディスクノード１００に応答する。また、データアクセス部１１９は、ストレージ装置１１０の起動時に、論理ディスク７１から管理情報を取得し、管理情報記憶部１１８に格納する。
【００８５】
データアクセス部１１９は、異常検知部１１９ａを有している。異常検知部１１９ａは、物理ディスク１１１〜１１６の異常を検知する。例えば異常検知部１１９ａは、物理ディスク内のデータアクセスが連続して失敗した場合、アクセス先の物理ディスクに異常があると判断する。異常検知部１１９ａは、異常を検出すると、異常が検出された物理ディスクの識別情報（物理ディスクＩＤ）を含む異常発生通知を、リビルド制御部１１０ａに対して出力する。
【００８６】
リビルド制御部１１０ａは、異常発生通知を受け取ると、異常が発生した物理ディスクに対するリビルド処理を行う。例えばリビルド制御部１１０ａは、異常が発生した物理ディスク内のデータを、スペアとして用意されている他の物理ディスクにコピーする。具体的には、リビルド制御部１１０ａは、異常が発生した物理ディスク内のデータのうち、最初の論理ディスク７１のＲＡＩＤシステム領域７１−１に属するデータをコピーする。ＲＡＩＤシステム領域７１−１に属するデータのコピーが完了すると、リビルド制御部１１０ａは、リビルド通知をディスクノード１００に対して出力する。その後、リビルド制御部１１０ａは、ディスクノード１００からのリビルド指示に従って、異常が発生した物理ディスク内のデータをコピーする。
【００８７】
以上のような機能により、異常が発生した物理ディスクのリビルド処理が行われる。
図１２は、リビルド処理の手順を示すシーケンス図である。以下、図１２に示す処理をステップ番号に沿って説明する。
【００８８】
［ステップＳ１１］ストレージ装置１１０は、物理ディスクの故障を検出する。例えば、特定の物理ディスクへのアクセスが繰り返しエラーになると、異常検知部１１９ａがその物理ディスクが故障していると判断する。そして異常検知部１１９ａで故障と判断した物理ディスクの識別情報が、データアクセス部１１９からリビルド制御部１１０ａに通知される。
【００８９】
［ステップＳ１２］ストレージ装置１１０は、ＲＡＩＤシステム領域７１−１のリビルド処理を行う。例えば、リビルド制御部１１０ａは、故障した物理ディスク以外の物理ディスクからＲＡＩＤシステム領域７１−１のデータを読み出す。次にリビルド制御部１１０ａは、読み出したデータを用いて故障した物理ディスクに格納されていたＲＡＩＤシステム領域７１−１のデータを生成する。そしてリビルド制御部１１０ａは、生成したデータをスペアとして用意されていた物理ディスク１１６に格納する。
【００９０】
その後、リビルド制御部１１０ａは、ディスクノード１００に対して、リビルド発生通知を送信する。
［ステップＳ１３］ディスクノード１００では、リビルド発生通知をリビルド指示部１５０が受信する。リビルド指示部１５０は、リビルド発生通知を受信すると、管理情報領域のリビルド指示をストレージ装置１１０に送信する。
【００９１】
［ステップＳ１４］ストレージ装置１１０では、リビルド制御部１１０ａが管理情報領域のリビルド指示を受信する。リビルド制御部１１０ａは、管理情報領域のリビルド指示に従って、管理情報領域のリビルド処理を実行する。例えば、リビルド制御部１１０ａは、故障した物理ディスク以外の物理ディスクからデバイス情報記憶領域７１−２とスライス情報記憶領域７１−３とのデータを読み出す。次にリビルド制御部１１０ａは、読み出したデータを用いて故障した物理ディスクに格納されていたデバイス情報記憶領域７１−２とスライス情報記憶領域７１−３とのデータを生成する。そしてリビルド制御部１１０ａは、生成したデータをスペアとして用意されていた物理ディスク１１６に格納する。
【００９２】
その後、リビルド制御部１１０ａは、ディスクノード１００に対して、管理情報領域のリビルド完了通知を送信する。
［ステップＳ１５］ディスクノード１００では、管理情報領域のリビルド完了通知をリビルド指示部１５０が受信する。リビルド指示部１５０は、管理情報領域のリビルド完了通知を受信すると、プライマリスライスのうちの１つを選択する。そして、リビルド指示部１５０は、選択したプライマリスライスのリビルド指示をストレージ装置１１０に送信する。
【００９３】
［ステップＳ１６］ストレージ装置１１０では、リビルド制御部１１０ａがプライマリスライスのリビルド指示を受信する。リビルド制御部１１０ａは、プライマリスライスのリビルド指示に従って、指定されたプライマリスライスのリビルド処理を実行する。例えば、リビルド制御部１１０ａは、故障した物理ディスク以外の物理ディスクから、指定されたプライマリスライスのデータを読み出す。次にリビルド制御部１１０ａは、読み出したデータを用いて故障した物理ディスクに格納されていたプライマリスライスのデータを生成する。そしてリビルド制御部１１０ａは、生成したデータをスペアとして用意されていた物理ディスク１１６に格納する。
【００９４】
その後、リビルド制御部１１０ａは、ディスクノード１００に対して、指定されたプライマリスライスのリビルド完了通知を送信する。その後、リビルド対象の論理ディスクのすべてのプライマリスライスのリビルドが完了するまで、プライマリスライスのリビルド処理が繰り返し実行される。
【００９５】
［ステップＳ１７］すべてのプライマリスライスのリビルドが完了した場合、リビルド指示部１５０は、セカンダリスライスのうちの１つを選択する。そして、リビルド指示部１５０は、選択したセカンダリスライスのリビルド指示をストレージ装置１１０に送信する。
【００９６】
［ステップＳ１８］ストレージ装置１１０では、リビルド制御部１１０ａがセカンダリスライスのリビルド指示を受信する。リビルド制御部１１０ａは、セカンダリスライスのリビルド指示に従って、指定されたセカンダリスライスのリビルド処理を実行する。例えば、リビルド制御部１１０ａは、故障した物理ディスク以外の物理ディスクから、指定されたセカンダリスライスのデータを読み出す。次にリビルド制御部１１０ａは、読み出したデータを用いて故障した物理ディスクに格納されていたセカンダリスライスのデータを生成する。そしてリビルド制御部１１０ａは、生成したデータをスペアとして用意されていた物理ディスク１１６に格納する。
【００９７】
その後、リビルド制御部１１０ａは、ディスクノード１００に対して、指定されたセカンダリスライスのリビルド完了通知を送信する。その後、リビルド対象の論理ディスクのすべてのセカンダリスライスのリビルドが完了するまで、セカンダリスライスのリビルド処理が繰り返し実行される。
【００９８】
［ステップＳ１９］すべてのセカンダリスライスのリビルドが完了した場合、リビルド指示部１５０は、フリースライスのうちの１つを選択する。そして、リビルド指示部１５０は、選択したフリースライスのリビルド指示をストレージ装置１１０に送信する。
【００９９】
［ステップＳ２０］ストレージ装置１１０では、リビルド制御部１１０ａがフリースライスのリビルド指示を受信する。リビルド制御部１１０ａは、フリースライスのリビルド指示に従って、指定されたフリースライスのリビルド処理を実行する。例えば、リビルド制御部１１０ａは、故障した物理ディスク以外の物理ディスクから、指定されたフリースライスのデータを読み出す。次にリビルド制御部１１０ａは、読み出したデータを用いて故障した物理ディスクに格納されていたフリースライスのデータを生成する。そしてリビルド制御部１１０ａは、生成したデータをスペアとして用意されていた物理ディスク１１６に格納する。
【０１００】
その後、リビルド制御部１１０ａは、ディスクノード１００に対して、指定されたフリースライスのリビルド完了通知を送信する。その後、リビルド対象の論理ディスクのすべてのフリースライスのリビルドが完了するまで、フリースライスのリビルド処理が繰り返し実行される。
【０１０１】
このようにして、所定の順番で論理ディスク内のデータのリビルド処理が行われる。このとき、ディスクノード１００では、管理情報記憶部１２０を参照してリビルド対象の記憶領域を判断し、リビルド指示を生成する。
【０１０２】
図１３は、リビルド指示処理の手順を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
［ステップＳ３１］リビルド指示部１５０は、ストレージ装置１１０からリビルド発生通知を受信する。リビルド発生通知には、リビルド対象の論理ディスクを示す論理ディスク名が示されている。
【０１０３】
［ステップＳ３２］リビルド指示部１５０は、管理情報記憶部１２０を参照し、論理ディスク７１内における管理情報領域を示す情報を取得する。例えば、リビルド指示部１５０は、論理ディスク７１の先頭のアドレス（ＬＢＡ＝０）から、デバイス情報８２に含まれるスライス情報記憶領域開始アドレスまでの領域を、デバイス情報記憶領域７１−２と認識する。そこで、リビルド指示部１５０は、論理ディスク７１の先頭のアドレスからスライス情報記憶領域開始アドレスまでの記憶領域のサイズに、スライス情報記憶領域サイズを加算した値を、管理情報領域のサイズとする。
【０１０４】
［ステップＳ３３］リビルド指示部１５０は、ストレージ装置１１０に対して管理情報領域のリビルド指示を送信する。具体的には、リビルド指示部１５０は、リビルド対象の論理ディスクの論理ディスク名、管理情報領域の先頭のアドレス（ＬＢＡ＝０）、および管理情報領域のサイズを含むリビルド指示を、ストレージ装置１１０に送信する。
【０１０５】
［ステップＳ３４］リビルド指示部１５０は、管理情報領域のリビルド完了通知を受信したか否かを判断する。リビルド指示部１５０は、リビルド完了通知を受信した場合、処理をステップＳ３５に進める。リビルド指示部１５０は、リビルド完了通知を受信していなければ、ステップＳ３４の処理を繰り返し、リビルド完了通知を待つ。
【０１０６】
［ステップＳ３５］リビルド指示部１５０は、スライスを優先順に従って並び替える。具体的には、リビルド指示部１５０は、管理情報記憶部１２０を参照し、リビルド対象の論理ディスクに含まれる各スライスのスライスＩＤと属性フラグとを取得し、スライスリストを生成する。そして、リビルド指示部１５０は、各スライスのスライスＩＤを、所定の優先順に従って並べ替える。第２の実施の形態では、プライマリスライスの優先順が最も高く、次にセカンダリスライスの優先順が高く、フリースライスの優先順が最も低い。
【０１０７】
［ステップＳ３６］リビルド指示部１５０は、スライスリストの上位から順に、スライスを１つずつ選択する。すなわち、リビルド指示部１５０は、スライスリスト内の未選択のスライスのうち、最も上位のスライスを１つ選択する。
【０１０８】
［ステップＳ３７］リビルド指示部１５０は、ストレージ装置１１０に対して、選択したスライスのリビルドを指示する。
［ステップＳ３８］リビルド指示部１５０は、スライスのリビルド完了通知を受信したか否かを判断する。リビルド指示部１５０は、リビルド完了通知を受信した場合、処理をステップＳ３９に進める。リビルド指示部１５０は、リビルド完了通知を受信していなければ、ステップＳ３８の処理を繰り返し、リビルド完了通知を待つ。
【０１０９】
［ステップＳ３９］リビルド指示部１５０は、リビルド未実施のスライスがあるか否かを判断する。リビルド指示部１５０は、未実施のスライスがあれば処理をステップＳ３６に進める。リビルド指示部１５０は、すべてのスライスのリビルドが完了していれば、リビルド指示処理を終了する。
【０１１０】
このようにして、所定の順番でリビルドが実行される。以下に、リビルド処理によるスペアの物理ディスク１１６内のデータの状態遷移を示す。
図１４は、スペアの物理ディスク内のデータの状態遷移を示す第１の図である。図１４には、物理ディスク１１２が故障した場合のリビルド処理によるスペアの物理ディスク１１６内のデータの状態が示されている。
【０１１１】
第１の状態は、ＲＡＩＤシステム領域内のデータのリビルド後の状態を示している。物理ディスク１１２が故障したため、他の物理ディスク１１１，１１３〜１１５内のデータおよびパリティデータを用いて、物理ディスク１１２に格納されていたデータが生成されている。そして、生成されたデータが、物理ディスク１１６に格納されている。
【０１１２】
第２の状態は、管理情報領域内のデータのリビルド後の状態を示している。管理情報領域に含まれるデバイス情報記憶領域とスライス情報記憶領域とのデータが生成され、物理ディスク１１６に格納されている。
【０１１３】
管理情報領域のリビルドが完了すると、リビルド指示部１５０によって、スライスリストが生成される。
図１５は、スライスリストの例を示す図である。スライスリスト９３には、論理ディスクの各スライスのスライスＩＤと属性フラグとの組が登録されている。スライスリスト内のスライスＩＤは、属性フラグに基づいて並べ替えられる。すなわち、プライマリスライスが最上位、その次にセカンダリスライス、その次にフリースライスとなるように、スライスＩＤが並べ替えられる。
【０１１４】
そしてスライスＩＤの並べ替えを行ったスライスリスト９３の上位のスライスから順に、リビルド処理が行われる。
図１６は、スペアの物理ディスク内のデータの状態遷移を示す第２の図である。第３の状態は、プライマリスライス内のデータのリビルド後の状態を示している。故障した物理ディスク１１２以外の物理ディスク１１１，１１３〜１１５内のデータおよびパリティデータを用いて、物理ディスク１１２に格納されていたプライマリスライス内のデータが生成されている。そして、生成されたプライマリスライスのデータが、物理ディスク１１６に格納されている。
【０１１５】
第４の状態は、セカンダリスライス内のデータのリビルド後の状態を示している。故障した物理ディスク１１２以外の物理ディスク１１１，１１３〜１１５内のデータおよびパリティデータを用いて、物理ディスク１１２に格納されていたセカンダリスライス内のデータが生成されている。そして、生成されたセカンダリスライスのデータが、物理ディスク１１６に格納されている。
【０１１６】
第５の状態は、フリースライス内のデータのリビルド後の状態を示している。故障した物理ディスク１１２以外の物理ディスク１１１，１１３〜１１５内のデータおよびパリティデータを用いて、物理ディスク１１２に格納されていたフリースライス内のデータが生成されている。そして、生成されたフリースライスのデータが、物理ディスク１１６に格納されている。
【０１１７】
以上のように、データが格納されている領域を優先的にリビルド処理によって復元することにより、リビルド対象の論理ディスクに対してデータリードのアクセスが行われた場合に、アクセス対象のデータが復元済みである可能性が高くなる。アクセス対象のデータが復元済みであれば、リード要求の延長でリジェネレートが行われることがなく、効率よくデータをリードできる。その結果、リビルド対象の論理ディスクへのアクセス効率が向上する。
【０１１８】
またセカンダリスライスよりも先にプライマリスライスのリビルドを行うようにしたため、リビルド対象の論理ディスクに対してデータリードのアクセスが行われた場合に、アクセス対象のデータが復元済みである可能性がさらに向上している。
【０１１９】
さらに、データ領域よりも先に管理情報領域のリビルドを行うようにしたことで、管理情報が失われることが抑止される。すなわちＲＡＩＤ５では、２台の物理ディスクが同時に故障すると、故障した物理ディスクに格納されていたデータを生成することができない。そこで、管理情報を優先的にリビルドすることで、管理情報が失われる危険性を抑止できる。
【０１２０】
なお、上記の例ではフリースライス内のデータもリビルドしているが、フリースライスは論理ボリュームに割り当てられていないためリビルド処理を行わなくてもよい。
［第３の実施の形態］
第３の実施の形態は、ディスクノードによるソフトウェアＲＡＩＤを行うシステムにおけるリビルドの順番制御を行うものである。
【０１２１】
図１７は、第３の実施の形態に係るディスクノードとストレージ装置の機能を示すブロック図である。ソフトウェアＲＡＩＤを行う場合、ディスクノード７００には、複数の物理ディスク７１１〜７１６が実装されたディスクアレイ７１０が接続される。
【０１２２】
ディスクノード７００は、管理情報記憶部７２０、管理情報制御部７３０、データアクセス部７４０、およびリビルド制御部７５０を有する。データアクセス部７４０とおよびリビルド制御部７５０とにより、ソフトウェアＲＡＩＤ制御部７０１が構成される。ソフトウェアＲＡＩＤ制御部７０１は、ソフトウェアに基づくＣＰＵの処理によって、ＲＡＩＤ技術を実現したものである。なお、管理情報記憶部７２０と管理情報制御部７３０との機能は、それぞれ図１１に示した第２の実施の形態における管理情報記憶部１２０と管理情報制御部１３０との機能と同じである。
【０１２３】
データアクセス部７４０は、図１１に示した第２の実施の形態におけるアクセス要求処理部１４０とデータアクセス部１１９との機能を併せ持っている。例えば、データアクセス部７４０は、第２の実施の形態のデータアクセス部１１９と同様に、異常検知部７４１を有している。ただし、アクセス要求処理部１４０とデータアクセス部１１９との間で行われる通信機能については、データアクセス部７４０は有していない。また、第２の実施の形態のデータアクセス部１１９はＲＡＩＤコントローラ１１７ｈを用いてハードウェアによるＲＡＩＤを実現しているが、第３の実施の形態のデータアクセス部７４０はディスクノード７００のＣＰＵの演算によりＲＡＩＤを実現する。
【０１２４】
リビルド制御部７５０は、図１１に示した第２の実施の形態におけるリビルド指示部１５０とリビルド制御部１１０ａとの機能を併せ持っている。ただし、リビルド指示部１５０とリビルド制御部１１０ａとの間で行われる通信機能については、リビルド制御部７５０は有していない。
【０１２５】
このように、ソフトウェアＲＡＩＤ制御部７０１にリビルド制御部７５０を含めることで、ソフトウェアによりＲＡＩＤ技術を実現したシステムにおいても、所定の順番でリビルド処理を実行することができる。
【０１２６】
［その他の実施の形態］
第２の実施の形態では使用されているスライスのうちプライマリスライスのデータを優先的にリビルドしているが、他の基準でリビルドの優先順を制御してもよい。例えば、スライスに対するユーザからのアクセス頻度を基準にすることが考えられる。この場合、アクセス頻度が高いスライスほどリビルドの優先順を高くする。アクセス頻度が高いスライスのリビルドの優先順を高くすることで、リード対象のデータが既にリビルド済みである可能性が高くなり、リビルド処理による性能劣化を抑制できる。
【０１２７】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、ディスクノードが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disc）などがある。
【０１２８】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２９】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１３０】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０１３１】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０１３２】
以上の実施の形態に開示された技術には、以下の付記に示す技術が含まれる。
（付記１）  複数のデータと該複数のデータから生成した冗長コードとを分散格納する複数の記憶装置を管理する管理プログラムにおいて、
コンピュータに、
前記複数の記憶装置のうちの１つに障害が発生すると、該障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とを判断し、
前記使用されている記憶領域内のデータまたは冗長コードの復元順を、前記使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先にして、前記障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定する、
処理を実行させることを特徴とする管理プログラム。
【０１３３】
（付記２）  記憶領域の判断の際には、前記複数の記憶装置の記憶領域をまとめた論理ディスクの単位記憶領域ごとに、使用中か否かが設定された管理テーブルを記憶する記憶手段を参照し、前記障害が発生した記憶装置内の記憶領域のうち、使用中の単位記憶領域に割り当てられた記憶領域を、使用されていると判断することを特徴とする付記１記載の管理プログラム。
【０１３４】
（付記３）  記憶領域の判断の際には、前記使用されている記憶領域が、ユーザからのアクセス対象のデータの記憶に使用されているのか、該アクセス対象のデータの複製データの格納に使用されているのかを判断し、
復元順の決定の際には、前記アクセス対象のデータの記憶に使用されている記憶領域内のデータまたは冗長コードの復元順を、前記複製データの格納に使用されている記憶領域よりも先にして、前記障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定することを特徴とする付記１または２のいずれかに記載の管理プログラム。
【０１３５】
（付記４）  記憶領域の判断の際には、前記複数の記憶装置の記憶領域をまとめた論理ディスクの単位記憶領域ごとに、前記アクセス対象のデータの記憶に使用中か、前記複製データの記憶に使用中か、あるいは未使用かを示すフラグが設定された管理テーブルを記憶する記憶手段を参照し、前記アクセス対象のデータの記憶に使用中の単位記憶領域に割り当てられた前記障害が発生した記憶装置内の記憶領域を、前記アクセス対象のデータの記憶に使用されていると判断し、前記複製データの記憶に使用中の単位記憶領域に割り当てられた前記障害が発生した記憶装置内の記憶領域を、前記複製データの記憶に使用されていると判断することを特徴とする付記３記載の管理プログラム。
【０１３６】
（付記５）  復元順の決定の際には、管理情報が記憶された記憶領域内のデータまたは冗長コードの復元順を、前記使用されている記憶領域内のデータまたは冗長コードの復元順よりも先にすることを特徴とする付記１乃至４のいずれかに記載の管理プログラム。
【０１３７】
（付記６）  決定された復元順に沿った前記障害が発生した記憶装置内のデータまたは冗長コードの復元を、前記複数の記憶装置を有するストレージ装置に指示する指示手段をさらに有することを特徴とする付記１乃至５のいずれかに記載の管理プログラム。
【０１３８】
（付記７）  決定された復元順に沿って、前記複数の記憶装置のうちの前記障害が発生した記憶装置以外の記憶装置それぞれからデータまたは冗長コードを読み出し、前記障害が発生した記憶装置内のデータまたは冗長コードを復元する復元手段をさらに有することを特徴とする付記１乃至６記載の管理プログラム。
【０１３９】
（付記８）  複数のデータと該複数のデータから生成した冗長コードとを分散格納する複数の記憶装置を管理する管理装置において、
前記複数の記憶装置のうちの１つに障害が発生すると、該障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とを判断する判断手段と、
前記使用されている記憶領域内のデータまたは冗長コードの復元順を、前記使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先にして、前記障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定する決定手段と、
を有することを特徴とする管理装置。
【０１４０】
（付記９）  複数のデータと該複数のデータから生成した冗長コードとを分散格納する複数の記憶装置を管理する管理方法において、
コンピュータが、
前記複数の記憶装置のうちの１つに障害が発生すると、該障害が発生した記憶装置内の使用されている記憶領域と使用されていない記憶領域とを判断し、
前記使用されている記憶領域内のデータまたは冗長コードの復元順を、前記使用されていない記憶領域内のデータまたは冗長コードの復元順よりも先にして、前記障害が発生した記憶装置内に格納されているデータまたは冗長コードの復元順を決定する、
ことを特徴とする管理方法。
【符号の説明】
【０１４１】
１  管理装置
１ａ  記憶手段
１ａ−１  管理テーブル
１ｂ  判断手段
１ｃ  決定手段
１ｄ  復元手段
２〜７  記憶装置
【図１】
0005640618.tif 000002
【図２】
0005640618.tif 000003
【図３】
0005640618.tif 000004
【図４】
0005640618.tif 000005
【図５】
0005640618.tif 000006
【図６】
0005640618.tif 000007
【図７】
0005640618.tif 000008
【図８】
0005640618.tif 000009
【図９】
0005640618.tif 000010
【図１０】
0005640618.tif 000011
【図１１】
0005640618.tif 000012
【図１２】
0005640618.tif 000013
【図１３】
0005640618.tif 000014
【図１４】
0005640618.tif 000015
【図１５】
0005640618.tif 000016
【図１６】
0005640618.tif 000017
【図１７】
0005640618.tif 000018