(57)【要約】【課題】リカバリ処理に起因して退避処理実行時間が長期化するのを防止する。【解決手段】退避処理実行手段２は、退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段３に格納し、退避処理を実行する。障害検出手段４は、障害が発生した障害ストレージ装置を検出する。退避処理中止指示手段５は、障害の発生が検出された場合、退避処理実行手段２による退避処理を中止させる。復旧対象データ判定手段６は、二重化状態が損なわれたデータを復旧対象データとする。冗長データコピー先選択手段７は、復旧対象データの冗長データコピー先を、退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する。冗長データコピー手段は、冗長データコピー先の記憶領域に復旧対象データをコピーする。【選択図】図１
2010066862.tif 000002
【特許請求の範囲】
【請求項１】
複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理プログラムであって、
前記コンピュータを、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する退避処理実行手段、
障害が発生した障害ストレージ装置を検出する障害検出手段、
前記退避処理中に前記障害検出手段で障害の発生が検出された場合、前記退避処理実行手段による前記退避処理を中止させる退避処理中止指示手段、
前記障害検出手段で検出された前記障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとする復旧対象データ判定手段、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する冗長データコピー先選択手段、
前記冗長データコピー先選択手段で選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする冗長データコピー手段、
として機能させるデータ管理プログラム。
【請求項２】
前記冗長データコピー先選択手段は、前記復旧対象データの総量に対して、前記退避処理対象ストレージ装置以外のストレージ装置内の空き領域が不足している場合、不足しているデータ容量分だけ、前記退避処理対象ストレージ装置内の空き領域を前記冗長データコピー先として選択することを特徴とする請求項１記載のデータ管理プログラム。
【請求項３】
前記冗長データコピー先選択手段は、前記退避処理対象ストレージ装置内に格納されている前記復旧対象データの前記冗長データコピー先を決定後、前記退避処理対象ストレージ装置以外のストレージ装置に格納されている前記復旧対象データの前記冗長データコピー先を決定することを特徴とする請求項１記載のデータ管理プログラム。
【請求項４】
前記復旧対象データ判定手段は、前記障害検出手段で検出された前記障害ストレージ装置以外の正常ストレージ装置に格納されているデータ同士の対応関係を調査し、対応関係にある他のデータが存在しないデータを前記復旧対象データとすることを特徴とする請求項１記載のデータ管理プログラム。
【請求項５】
前記退避処理実行手段は、前記退避処理が中止された場合、前記冗長データコピー手段によるコピー処理が終了後、前記退避対象ストレージ装置内のデータの退避処理を再実行することを特徴とする請求項１記載のデータ管理プログラム。
【請求項６】
複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理装置であって、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する退避処理実行手段と、
障害が発生した障害ストレージ装置を検出する障害検出手段と、
前記退避処理中に前記障害検出手段で障害の発生が検出された場合、前記退避処理実行手段による前記退避処理を中止させる退避処理中止指示手段と、
前記障害検出手段で検出された前記障害ストレージ装置の障害により二重化状態が損なわれたデータを判断し、復旧対象データとする復旧対象データ判定手段と、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する冗長データコピー先選択手段と、
前記冗長データコピー先選択手段で選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする冗長データコピー手段と、
を有するデータ管理装置。
【請求項７】
複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理方法であって、
前記コンピュータが、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行し、
障害が発生した障害ストレージ装置を検出し、
前記退避処理中に障害の発生が検出された場合、前記退避処理を中止させ、
前記障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとし、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択し、
選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする、
ことを特徴とするデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のストレージ装置に格納されたデータを管理するためのデータ管理プログラム、データ管理装置、およびデータ管理方法に関し、特に二重化されたデータを管理するためのデータ管理プログラム、データ管理装置、およびデータ管理方法に関する。
【背景技術】
【０００２】
コンピュータシステムでは、多数のユーザが使用する大量のデータを管理する必要がある。このような大量のデータを管理するためのシステムの１つとして、マルチノードストレージシステムがある。
【０００３】
マルチノードストレージシステムは、複数のノードで構成されるストレージシステムである。例えば、マルチノードストレージシステムには、アクセスノード、制御ノード、およびディスクノードで構成される。アクセスノードは、ディスクノードに格納されたデータへのアクセス環境をユーザに提供するコンピュータである。ユーザは、アクセスノードに対してデータへのアクセス要求を出すことで、ディスクノードに格納されたデータにアクセスすることができる。制御ノードは、マルチノードストレージシステムで提供されるデータの保守管理をコンピュータである。例えば、制御ノードは、仮想的に定義した論理ボリュームと、ディスクノードが管理するストレージ装置内の記憶領域との対応関係を管理する。ディスクノードは、ストレージ装置を有しており、ストレージ装置の記憶領域を、一定の大きさで区切ったスライスと呼ぶ領域で管理する。
【０００４】
マルチノードストレージシステムでは、同一のデータを異なる複数のディスクノードで管理する。すなわち、同じデータが、異なるディスクノードに属する２つのスライスに格納される。このようにデータを冗長化することで、１つのディスクノードに障害が発生してもデータを失わずに済む。
【０００５】
なお、ディスクノードに障害が発生すると、そのディスクノードに格納されたデータが使用できなくなり、データの二重化状態が失われる。その場合、制御ノードがディスクノードに指示を出し、リカバリ処理が開始される。リカバリ処理とは、データの二重化を復旧する処理である。
【０００６】
リカバリ処理では、制御ノードが、障害などでアクセスができなくなったスライスとペアを組んでいたスライス（二重化が失われたスライス）を特定する。次に、制御ノードは、二重化が失われたスライスとペアを組む別のスライス（これをリザーブスライスと呼ぶ）を確保する。そして、制御ノードは、確保したリザーブスライスに対してデータコピーを行うように、二重化が失われたスライスを管理するディスクノードに指示する。このようなリカバリ処理により、マルチノードストレージシステムでは、ディスクノードで障害が発生してもデータの二重化状態が回復される。
【０００７】
ところで、障害とは別の理由で、ディスクノードの機能を停止する場合がある。例えばディスクノードのハードウェアを、より性能の高い別のハードウェアと入れ替える場合などである。このような場合、データの退避処理（evacuate処理）が行われる。退避処理とは、指定したディスクノードが管理するデータを他のノードにコピーする処理である。管理者は、退避処理の後に指定したディスクノードを新しいハードウェアと交換する。ディスクノードを交換後、そのディスクノードが再度マルチノードストレージシステムに組み込まれる。なお、ディスクノードのハードウェアの交換時に限らず、ディスクノードのＯＳ（Operating System）などの再起動を伴うソフトウェアのアップグレード時にも退避処理が行われる。ディスクノードのメンテナンス時に退避処理を行うことにより、データの二重化を維持したままハードウェアのグレードアップなどの作業が可能となる。
【０００８】
なお、退避処理に要する時間は、ディスクノードが管理しているストレージ装置の記憶容量に大きく依存する。最近のストレージ装置の大容量化に伴い退避処理の時間も長くなる傾向にある。退避処理に長時間を要することにより、退避処理中に、退避処理対象とは別のディスクノードに障害が発生する可能性も高くなる。退避処理中に退避処理対象ではないディスクノードに障害が発生すると退避処理が打ち切られ、リカバリ処理が実行される。
【特許文献１】特開２００５−４６８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、退避処理を中止してリカバリ処理を実行した場合、退避処理対象のディスクノードのスライスが、リザーブスライスとして選択される場合がある。すると、退避処理対象のディスクノードのスライスにデータがコピーされる。この場合、リカバリ完了後に退避処理を中止したディスクノードの退避処理を再度続行すると、中止前よりも退避させなければならないデータ量が増え、退避処理が完了するまでの時間が長期化してしまう。
【００１０】
本発明はこのような点に鑑みてなされたものであり、リカバリ処理に起因して退避処理実行時間が長期化するのを防止できるデータ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、以下のような機能を実現するデータ管理装置が提供される。データ管理装置は、複数のストレージ装置に格納されたデータを管理するために、退避処理実行手段、障害検出手段、退避処理中止指示手段、復旧対象データ判定手段、冗長データコピー先選択手段、および冗長データコピー手段を有する。
【００１２】
退避処理実行手段は、任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する。障害検出手段は、障害が発生した障害ストレージ装置を検出する。退避処理中止指示手段は、退避処理中に障害検出手段で障害の発生が検出された場合、退避処理実行手段による退避処理を中止させる。復旧対象データ判定手段は、障害検出手段で検出された障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとする。冗長データコピー先選択手段は、記憶手段を参照し、復旧対象データの冗長データコピー先を、退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する。冗長データコピー手段は、冗長データコピー先選択手段で選択された冗長データコピー先の記憶領域に、復旧対象データをコピーする。
【００１３】
また、データ管理装置と同様の機能をコンピュータに実行させるデータ管理プログラム、およびデータ管理装置で実行される処理をコンピュータで実行するデータ管理方法が提供される。
【発明の効果】
【００１４】
上記データ管理プログラム、データ管理装置、およびデータ管理方法では、退避処理対象のストレージ装置内のデータ量を増加させずにリカバリ処理が実行され、退避処理実行時間の長期化を防止できる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、実施の形態の概要を示す図である。実施の形態では、複数のストレージ装置１ａ，１ｂ，１ｃ，１ｄに格納されたデータを管理するために、退避処理実行手段２、障害検出手段４、退避処理中止指示手段５、復旧対象データ判定手段６、冗長データコピー先選択手段７、および冗長データコピー手段８を有する。
【００１６】
なお、図１の例では、ストレージ装置１ａ，１ｂ，１ｃ，１ｄ内が単位記憶領域（スライス）に分割され、二重化されたスライスに同じ識別番号を付している。
退避処理実行手段２は、任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段３に格納する。図１の例では、ストレージ装置１ｃが、退避処理対象ストレージ装置である。また、退避処理実行手段２は、退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する。図１の例では、ストレージ装置１ｃに格納されているデータが、他のストレージ装置１ａ，１ｂ，１ｄにコピーされる。
【００１７】
障害検出手段４は、障害が発生した障害ストレージ装置を検出する。図１の例では、ストレージ装置１ｄに障害が発生している。
退避処理中止指示手段５は、退避処理中に障害検出手段４で障害の発生が検出された場合、退避処理実行手段２による退避処理を中止させる。図１の例では、識別番号「１」のスライスのデータと、識別番号「３」のスライスのデータとのコピーが終了した時点で、退避処理が中止されたものとする。すなわち、識別番号「２」のスライスのデータのコピーは実行されていない（退避処理が未処理である）。
【００１８】
復旧対象データ判定手段６は、障害検出手段４で検出された障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとする。例えば、復旧対象データ判定手段６は、正常に動作しているストレージ装置１ａ，１ｂ，１ｃから格納されているデータの情報を収集し、各データの対応関係を調査することで、二重化状態が損なわれているデータを検出し、検出したデータを復旧対象データとする。図１の例では、識別番号「２」、「３」、「５」のスライスのデータが復旧対象データとなる。
【００１９】
冗長データコピー先選択手段７は、記憶手段３を参照して退避処理対象ストレージ装置を認識する。次に、冗長データコピー先選択手段７は、復旧対象データの冗長データコピー先を、退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する。図１の例では、ストレージ装置１ａ，１ｂの記憶領域が優先的に冗長データコピー先として選択される。なお、冗長データコピー先を選択する場合、コピー元の復旧対象データが格納されたストレージ装置とは異なるストレージ装置内の記憶領域が選択される。
【００２０】
冗長データコピー手段８は、冗長データコピー先選択手段で選択された冗長データコピー先の記憶領域に、復旧対象データをコピーする。
このような機能によって、退避処理実行手段２による退避処理実行中にストレージ装置の障害が検出されると、退避処理中止指示手段５による退避処理が中止され、リカバリ処理が開始される。リカバリ処理では、復旧対象データ判定手段６により復旧対象データが特定される。次に、冗長データコピー先選択手段７により、復旧対象データの冗長データコピー先が選択される。その際、退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択される。そして、冗長データコピー手段８により、冗長データコピー先の記憶領域に復旧対象データがコピーされる。
【００２１】
このように、リカバリ処理において退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に冗長データコピー先を選択するようにしたため、退避処理対象ストレージ装置の記憶領域が冗長データコピー先として選択されることを防止できる。その結果、リカバリ処理の実行に起因して退避対象データが増大することがなくなり、退避処理の長期化が防止される。
【００２２】
ところで、図１に示した機能は、マルチノードストレージシステムに適用することができる。マルチノードストレージシステムでは、各ストレージ装置が個別のディスクノードで管理されている。そのため、ディスクノードに対してネットワーク経由でコピー指示を出すことで、ディスクノード間でデータをコピーさせることができる。そこで、退避処理や障害検出時のリカバリ処理は、ディスクノードにネットワークで接続された制御ノードからの遠隔制御によって実行することが可能となる。以下に、マルチノードストレージシステムを用いた実施の形態を詳細に説明する。
【００２３】
図２は、本実施の形態のマルチノードストレージシステム構成例を示す図である。本実施の形態では、ネットワーク１０を介して、複数のディスクノード１００，２００，３００，４００、制御ノード５００、アクセスノード３０，４０、および管理ノード５０が接続されている。ディスクノード１００，２００，３００，４００それぞれには、ストレージ装置１１０，２１０，３１０，４１０が接続されている。
【００２４】
ストレージ装置１１０には、複数のハードディスク装置（ＨＤＤ）１１１，１１２，１１３，１１４が実装されている。ストレージ装置２１０には、複数のＨＤＤ２１１，２１２，２１３，２１４が実装されている。ストレージ装置３１０には、複数のＨＤＤ３１１，３１２，３１３，３１４が実装されている。ストレージ装置４１０には、複数のＨＤＤ４１１，４１２，４１３，４１４が実装されている。各ストレージ装置１１０，２１０，３１０，４１０は、内蔵するＨＤＤを用いたＲＡＩＤシステムである。本実施の形態では、各ストレージ装置１１０，２１０，３１０，４１０のＲＡＩＤ５のディスク管理サービスを提供する。
【００２５】
ディスクノード１００，２００，３００，４００は、例えば、ＩＡ（Intel Architecture）と呼ばれるアーキテクチャのコンピュータである。ディスクノード１００，２００，３００，４００は、接続されたストレージ装置１１０，２１０，３１０，４１０に格納されたデータを管理し、管理しているデータをネットワーク１０経由で端末装置２１，２２，２３に提供する。また、ディスクノード１００，２００，３００，４００は、冗長性を有するデータを管理している。すなわち、同一のデータが、少なくとも２つのディスクノードで管理されている。
【００２６】
制御ノード５００は、ディスクノード１００，２００，３００，４００を管理する。例えば、制御ノード５００は、管理ノード５０から新たなストレージ装置の追加要求を受け取ると、新たな論理ボリュームを定義し、その論理ボリュームを介して追加されたストレージ装置に格納されていたデータにアクセスできるようにする。
【００２７】
アクセスノード３０，４０には、ネットワーク２０を介して複数の端末装置２１，２２，２３が接続されている。アクセスノード３０，４０には、論理ボリュームが定義されている。そして、アクセスノード３０，４０は、端末装置２１，２２，２３からの論理ボリューム上でのデータのアクセス要求に応答して、ディスクノード１００，２００，３００，４００内の対応するデータへアクセスする。
【００２８】
管理ノード５０は、管理者がマルチノードストレージシステムの運用を管理するために使用するコンピュータである。例えば、管理ノード５０では、マルチノードストレージシステムにおける論理ボリュームの使用量などの情報を収集し、運用状況を画面に表示する。
【００２９】
図３は、制御ノードのハードウェア構成例を示す図である。制御ノード５００は、ＣＰＵ（Central Processing Unit）５０１によって装置全体が制御されている。ＣＰＵ５０１には、バス５０７を介してＲＡＭ（Random Access Memory）５０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）５０３、グラフィック処理装置５０４、入力インタフェース５０５、および通信インタフェース５０６が接続されている。
【００３０】
ＲＡＭ５０２は、制御ノード５００の主記憶装置として使用される。ＲＡＭ５０２には、ＣＰＵ５０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ５０２には、ＣＰＵ５０１による処理に必要な各種データが格納される。ＨＤＤ５０３は、制御ノード５００の二次記憶装置として使用される。ＨＤＤ５０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００３１】
グラフィック処理装置５０４には、モニタ１１が接続されている。グラフィック処理装置５０４は、ＣＰＵ５０１からの命令に従って、画像をモニタ１１の画面に表示させる。モニタ１１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置がある。
【００３２】
入力インタフェース５０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース５０５は、キーボード１２やマウス１３から送られてくる信号を、バス５０７を介してＣＰＵ５０１に送信する。なお、マウス１３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３３】
通信インタフェース５０６は、ネットワーク１０に接続されている。通信インタフェース５０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００３４】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には、制御ノード５００のハードウェア構成を示しているが、ディスクノード１００，２００，３００，４００、アクセスノード３０，４０、および管理ノード５０も同様のハードウェア構成で実現することができる。
【００３５】
図４は、論理ボリュームのデータ構造を示す図である。本実施の形態では、論理ボリューム６０には論理ボリューム識別子「ＬＶＯＬ−Ｘ」が付与されている。ネットワーク経由で接続された４台のディスクノード１００，２００，３００，４００には、個々のノードの識別のためにそれぞれ「ＤＰ−Ａ」、「ＤＰ−Ｂ」、「ＤＰ−Ｃ」、「ＤＰ−Ｄ」というノード識別子が付与されている。そして、各ディスクノード１００，２００，３００，４００に接続されているストレージ装置１１０，２１０，３１０，４１０は、ディスクノード１００，２００，３００，４００のノード識別子によってネットワーク１０で一意に識別される。
【００３６】
各ディスクノード１００，２００，３００，４００が有するストレージ装置１１０，２１０，３１０それぞれにおいてＲＡＩＤ５のストレージシステムが構成されている。各ストレージ装置１１０，２１０，３１０，４１０で提供される記憶機能は、複数のスライス１１５ａ〜１１５ｆ，２１５ａ〜２１５ｆ，３１５ａ〜３１５ｆ，４１５ａ〜４１５ｆに分割されて管理されている。
【００３７】
論理ボリューム６０は、セグメント６１〜６６という単位で構成される。セグメント６１〜６６の記憶容量は、ストレージ装置１１０，２１０，３１０，４１０における管理単位であるスライスの記憶容量と同じである。例えば、スライスの記憶容量が１ギガバイトとするとセグメントの記憶容量も１ギガバイトである。論理ボリューム６０の記憶容量はセグメント１つ当たりの記憶容量の整数倍である。セグメント６１〜６６は、それぞれプライマリスライス６１ａ，６２ａ，６３ａ，６４ａ，６５ａ，６６ａとセカンダリスライス６１ｂ，６２ｂ，６３ｂ，６４ｂ，６５ｂ，６６ｂとの組（スライスペア）で構成される。
【００３８】
同一セグメントに属する２つのスライスは別々のディスクノードに属する。個々のスライスを管理する領域には論理ボリューム識別子やセグメント情報や同じセグメントを構成するスライス情報の他にフラグがあり、そのフラグにはプライマリあるいはセカンダリなどを表す値が格納される。
【００３９】
図４の例では、論理ボリューム６０内のスライスの識別子を、「Ｐ」または「Ｓ」のアルファベットと数字との組合せで示している。「Ｐ」はプライマリスライスであることを示している。「Ｓ」はセカンダリスライスであることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば、１番目のセグメント６１のプライマリスライスが「Ｐ１」で示され、セカンダリスライスが「Ｓ１」で示される。
【００４０】
図５は、ディスクノードとアクセスノードとの機能を示すブロック図である。アクセスノード３０は、論理ボリュームアクセス制御部３１を有している。論理ボリュームアクセス制御部３１は、端末装置２１，２２，２３からの論理ボリューム６０内のデータを指定したアクセス要求に応じて、指定されたデータを管理するディスクノードに対してデータアクセスを行う。具体的には、論理ボリュームアクセス制御部３１は、アクセス対象のデータが記憶された論理ボリューム６０内のブロックを特定する。次に、論理ボリュームアクセス制御部３１は、特定したブロックに対応するセグメントを特定する。さらに、論理ボリュームアクセス制御部３１は、セグメントを構成するプライマリスライスに対応するディスクノードおよびそのディスクノード内のスライスを特定する。そして、論理ボリュームアクセス制御部３１は、特定したディスクノードに対して、特定したスライスへのアクセス要求を出力する。アクセスノード４０も、アクセスノード３０と同様の機能を有している。
【００４１】
ディスクノード１００は、Ｉ／Ｆ部１２０、デバイス制御部１３０、スライス情報記憶部１４０、および制御部１５０を有する。
Ｉ／Ｆ部１２０は、所定の通信プロトコルにより、他の装置とネットワーク１０を介したデータ通信を実現するための通信機能である。デバイス制御部１３０は、ストレージ装置１１０を制御する。
【００４２】
スライス情報記憶部１４０は、ストレージ装置１１０のスライスを管理するためのスライス情報を記憶する記憶機能である。例えば、ディスクノード１００のＲＡＭ内の記憶領域の一部がスライス情報記憶部１４０として使用される。なお、スライス情報は、スライス毎に設けられたメタデータを集めたものである。メタデータは、対応するスライスが割り当てられたセグメントや、スライスペアにおいて対となる他のスライスを示す情報である。
【００４３】
制御部１５０は、データアクセス制御部１５１、ハートビート送信部１５２、データ管理部１５３を有する。
データアクセス制御部１５１は、アクセスノードからのアクセス要求（リード要求またはライト要求）を受け付けた場合に、スライス情報記憶部１４０を参照して、アクセス対象のスライスを判断する。そして、データアクセス制御部１５１は、ストレージ装置１１０内のアクセス要求に応じたデータにアクセスする。例えば、アクセス要求がリード要求であれば、データアクセス制御部１５１は、ストレージ装置１１０からデータを取得し、アクセスノード３０に送信する。また、アクセス要求がライト要求であれば、データアクセス制御部１５１は、ストレージ装置１１０にデータを書き込む。
【００４４】
ハートビート送信部１５２は、ディスクノード１００およびストレージ装置１１０が正常動作していることを制御ノード５００に定期的に通知する。具体的には、ハートビート送信部１５２は、ディスクノード１００およびストレージ装置１１０が正常に動作している場合、定期的に制御ノード５００へ正常に動作していることを示す正常通知（ハートビート）を送信する。制御ノード５００では、ディスクノード１００からのハートビートが一定時間途絶えた場合に、ディスクノード１００での障害が発生したことを認識する。
【００４５】
データ管理部１５３は、制御ノード５００からスライス情報の更新指示を受け付けた場合に、スライス情報記憶部１４０に記憶されているスライス情報を更新する。スライス情報の更新処理としては、例えば、スライスのプライマリ化がある。データ管理部１５３は、プライマリ化指示を受け付けた場合、スライス情報記憶部１４０内のプライマリ化指示に含まれるスライスＩＤで示されるメタデータの属性を「プライマリ（Ｐ）」に更新する。
【００４６】
また、データ管理部１５３は、スライス割当指示を受け付けた場合、スライス割当指示に含まれるスライスＩＤをキーにして、スライス情報記憶部１４０からメタデータを特定する。データ管理部１５３は、特定したメタデータの内容を、スライス割当指示で指定された内容（割当先のセグメントやペアとなる他のスライスの情報が含まれる）に応じて更新する。ストレージ装置１１０のスライスをセグメントに割り当てた場合、データ管理部１５３は、他のディスクノードで管理されているペアとなるスライスからデータを取得し、新たに割り当てられたスライスに格納する。
【００４７】
なお、データ管理部１５３は、スライス情報内のメタデータを更新すると、ストレージ装置１１０内の対応するメタデータも更新する。これにより、ストレージ装置１１０内のメタデータとスライス情報記憶部１４０内のメタデータとの同一性が維持される。さらに、データ管理部１５３は、制御ノード５００から、スライス情報取得要求を受け取ると、スライス情報記憶部１４０内のスライス情報を制御ノード５００に送信する。
【００４８】
退避処理やリカバリ処理が行われる場合、制御ノード５００からディスクノード１００にストレージ装置１１０内のデータのコピー指示が出される。データ管理部１５３は、制御ノード５００からのコピー指示を受け取ると、ストレージ装置１１０内のデータを他のディスクノードに転送する。
【００４９】
さらに、データ管理部１５３は、プライマリスライスとセカンダリスライスとのデータの冗長性確保処理を行う。具体的には、データ管理部１５３は、データアクセス制御部１５１によってライト要求に基づくデータの書き込みが行われた場合、データが書き込まれたスライス（プライマリスライス）に対応するセカンダリスライスを管理するディスクノードのデータ管理部と連携動作し、セカンダリスライス内のデータを更新する。
【００５０】
なお、ディスクノード２００，３００，４００もディスクノード１００と同様の機能を有している。
次に、スライス情報記憶部１４０に格納されるデータについて詳細に説明する。
【００５１】
図６は、スライス情報記憶部のデータ構造例を示す図である。スライス情報記憶部１４０には、メタデータテーブル１４１が格納されている。メタデータテーブル１４１には、ディスクノードＩＤ、スライスＩＤ、状態、論理ボリュームＩＤ、セグメントＩＤ、ペアのディスクノードＩＤ、およびペアのスライスＩＤの欄が設けられている。メタデータテーブル１４１内の横方向に並べられた情報同士が互いに関連付けられ、メタデータを示す１つのレコードを構成している。
【００５２】
ディスクノードＩＤの欄は、ストレージ装置１１０を管理しているディスクノード１００の識別情報（ディスクノードＩＤ）が設定される。
スライスＩＤの欄には、メタデータに対応するスライスのストレージ装置１１０内での識別情報（スライスＩＤ）が設定される。
【００５３】
状態の欄には、スライスの状態を示す状態フラグが設定される。スライスが論理ボリュームのセグメントに割り当てられていない場合、状態フラグ「Ｆ」が設定される。論理ボリュームのセグメントのプライマリストレージに割り当てられている場合、状態フラグ「Ｐ」が設定される。論理ボリュームのセグメントのセカンダリストレージに割り当てられている場合、状態フラグ「Ｓ」が設定される。
【００５４】
論理ボリュームＩＤの欄には、スライスに対応するセグメントが属する論理ボリュームを識別するための識別情報（論理ボリュームＩＤ）が設定される。
ペアのディスクノードＩＤの欄には、ペアのスライス（同じセグメントに属する別のスライス）を有するストレージ装置を管理するディスクノードの識別情報（ディスクノードＩＤ）が設定される。
【００５５】
ペアのスライスＩＤの欄には、ペアのスライスを、そのスライスが属するストレージ装置内で識別するための識別情報（スライスＩＤ）が設定される。
次に、制御ノード５００の機能を詳細に説明する。制御ノード５００は、論理ボリュームを管理すると共に、ディスクノード１００，２００，３００，４００に障害が発生したときのリカバリ処理を行う。また、制御ノード５００は、システム管理者からの操作入力などに応答し、いずれかのストレージ装置に格納されているデータの退避処理を行う。
【００５６】
図７は、制御ノードの機能を示すブロック図である。制御ノード５００は、インタフェース（Ｉ／Ｆ）部５１０、記憶部５２０、および制御部５３０を有する。Ｉ／Ｆ部５１０は、所定の通信プロトコルにより、ディスクノード１００，２００，３００，４００、アクセスノード３０，４０、および管理ノード５０と、ネットワーク１０を介したデータ通信を実現するための通信機能である。
【００５７】
記憶部５２０は、各種情報を記憶する記憶機能である。例えば、ＲＡＭ５０２の記憶領域の一部を、記憶部５２０として利用することができる。記憶部５２０には、スライス情報テーブル５２１、セグメント情報テーブル５２２、復旧対象リスト５２３、退避対象スライスリスト５２４、および退避処理対象ディスクノードリスト５２５が記憶されている。
【００５８】
スライス情報テーブル５２１は、各ディスクノード１００，２００，３００，４００から収集したメタデータ（ストレージ装置内の各スライスに関して、割り当てられたセグメント、および対となる他のスライスが示された情報）が登録されたデータテーブルである。スライス情報テーブル５２１は、制御部５３０内のスライス情報収集部５３２によって作成される。
【００５９】
セグメント情報テーブル５２２は、論理ボリュームを構成する各セグメントに対して割り当てられたスライスを示す情報である。セグメント情報テーブル５２２は、スライス情報収集部５３２によって、ディスクノード１００，２００，３００，４００から収集したメタデータ基づいて生成される。
【００６０】
復旧対象リスト５２３は、リカバリ処理の対象となるセグメントを示す情報である。復旧対象リスト５２３は、制御部５３０内の復旧対象抽出部５３３によって生成される。
退避対象スライスリスト５２４は、退避処理を実行する際に、データを退避させるべきスライスのリストである。退避対象スライスリスト５２４は、制御部５３０内の退避制御部５３５によって生成される。
【００６１】
退避処理対象ディスクノードリスト５２５は、退避処理の対象となっているディスクノードのリストである。退避対象スライスリスト５２４は、制御部５３０内の退避制御部５３５によって生成される。
【００６２】
制御部５３０は、監視部５３１、スライス情報収集部５３２、復旧対象抽出部５３３、二重化制御部５３４、および退避(Evacuate)制御部５３５を有する。
監視部５３１は、ディスクノード１００，２００，３００，４００が正常に動作しているか否かを監視する処理部である。具体的には、監視部５３１は、ディスクノード１００，２００，３００，４００から定期的に送られてくるハートビートを受信する。そのとき、監視部５３１は、ハートビートの受信時刻を、ディスクノードに対応付けて記憶する。そして、監視部５３１は、前回のハートビート受信から所定期間以上経過しても次のハートビートを送ってこないディスクノードがあると、そのディスクノードに障害が発生したものと判断する。
【００６３】
スライス情報収集部５３２は、システムの運用開始時にディスクノード１００，２００，３００，４００からスライス情報を収集し、スライス情報テーブル５２１とセグメント情報テーブル５２２とを生成する。また、スライス情報収集部５３２は、監視部５３１によってディスクノード１００，２００，３００，４００のいずれかに異常が発生したことが検知された場合に、正常に動作しているディスクノードからスライス情報（メタデータの集合）を収集する。そして、スライス情報収集部５３２は、収集したスライス情報に基づいて、スライス情報テーブル５２１とセグメント情報テーブル５２２とを新たに生成する。
【００６４】
復旧対象抽出部５３３は、監視部５３１によりディスクノードの障害が検出されると、復旧対象のセグメントを検出する。具体的には、復旧対象抽出部５３３は、障害発生により再生成されたセグメント情報テーブル５２２に基づいて、復旧対象のセグメントを抽出する。復旧対象のセグメントとは、プライマリスライスまたはセカンダリスライスの一方のみが記憶されているセグメントである。そして、復旧対象抽出部５３３は、復旧対象のセグメントを示す情報を復旧対象リスト５２３に格納する。
【００６５】
二重化制御部５３４は、セグメントのデータの二重化が保たれるように、セグメントへのスライス割当を制御する。すなわち、ディスクノードの障害により二重化状態が崩れたセグメントが発生すると、そのセグメントのリカバリ処理（二重化回復処理）を行う。リカバリ処理は、復旧対象のセグメントに割り当てられているスライスを、正常に動作しているストレージ管理装置の空きスライスと二重化させる処理である。リカバリ処理は、大別するとプライマリ化処理、空きスライス割当処理、およびスライス情報更新処理に分かれる。
【００６６】
プライマリ化処理は、復旧対象のセグメントに現在割り当てられているスライスをすべてプライマリにする処理である。具体的には、二重化制御部５３４は、復旧対象リスト５２３とセグメント情報テーブル５２２とから、復旧対象セグメントに割り当てられているスライスのディスクノードＩＤおよびスライスＩＤを取得する。そして、二重化制御部５３４は、取得した復旧対象のスライスのディスクノードＩＤに該当するストレージ装置を有するディスクノードに対して、プライマリ化指示を送信する。プライマリ化指示で指定されたスライスは、そのプライマリか指示を受け取ったディスクノードによって、属性がプライマリに変更される。
【００６７】
続いて、二重化制御部５３４は、空きスライス割当処理を行う。具体的には、二重化
制御部５３４は、スライス情報テーブル５２１から、復旧対象のセグメントに現在割り当てられているスライス（プライマリスライス）とは異なるストレージ装置に属するスライスで、いずれのセグメントにも割り当てられていないスライス（空きスライス）を検索する。
【００６８】
そして、二重化制御部５３４は、検索されたスライスの１つを選択し、復旧対象のセグメントのセカンダリスライスとして割り当てる。この際、二重化制御部５３４は、退避処理対象ディスクノードリスト５２５を参照し、退避処理対象のディスクノードの存否を確認する。退避処理対象のディスクノードがある場合、二重化制御部５３４は、そのディスクノードが管理するスライスは、空きスライス割当処理におけるセカンダリスライスとしての選択する優先順位を最も低くする。すなわち、退避処理対象のディスクノード以外のディスクノードが管理するスライスの中に空きスライスが無くなったときにのみ、退避処理対象のディスクノードが管理するスライスが、復旧対象のセグメントに割り当てられる。
【００６９】
さらに、二重化制御部５３４は、セカンダリスライスとするスライスへのデータコピー指示を、プライマリスライスを管理するディスクノードに対して送信する。データコピー指示には、セカンダリスライスを管理するディスクノードのディスクノードＩＤと、セカンダリスライスのスライスＩＤとが含まれる。データコピー指示を受け取ったディスクノードは、プライマリスライスのデータをセカンダリスライスを管理するディスクノードに転送する。データを受け取ったディスクノードは、そのデータをセカンダリスライスに格納する。これにより、復旧対象のセグメントのデータが二重化される。
【００７０】
そして、二重化制御部５３４は、復旧対象のセグメントのプライマリスライスとセカンダリスライスとのそれぞれを管理するディスクノードに対して、スライス情報更新指示を送信し、復旧対象リスト５２３の内容を消去する。スライス情報更新指示には、復旧対象のセグメントに割り当てられたスライスのメタデータが含まれる。スライス情報更新指示を受け取ったディスクノードは、スライス情報更新指示に含まれるメタデータにより、スライス情報記憶部とストレージ装置とのメタデータを更新する。
【００７１】
退避制御部５３５は、管理者による操作入力などに基づいて退避処理を行う。具体的には、退避制御部５３５は、退避処理対象のストレージ装置を指定した退避指示を受け取ると、指定されたストレージ装置を管理するディスクノードのディスクノードＩＤを退避処理対象ディスクノードリスト５２５に登録する。次に退避制御部５３５は、スライス情報テーブル５２１を参照し、退避処理対象のストレージ装置のスライスのうち、セグメントに割り当てられているスライス（状態が「Ｐ」または「Ｓ」）を検出する。そして退避制御部５３５は、検出したスライス（退避処理対象スライス）に関するディスクノードＩＤとスライスＩＤとを、退避対象スライスリスト５２４に登録する。
【００７２】
次に退避制御部５３５は、セグメント情報テーブル５２２を参照し、退避処理対象スライスがプライマリスライスか否かを判断する。退避処理対象スライスがプライマリスライスであれば、退避制御部５３５は、同じセグメントに割り当てられたセカンダリスライスを管理するディスクノードに対して、プライマリスライスへの変更指示（プライマリ化指示）を送信する。
【００７３】
さらに、退避制御部５３５は、退避処理対象のディスクノード以外のディスクノードが管理する空きスライスの中から、退避処理対象スライスのデータを退避させるためのスライスを選択する。そして、退避制御部５３５は、退避処理対象のディスクノードに対して、選択したスライスへのデータコピー指示を送信する。退避制御部５３５は、ディスクノードからコピー完了の応答を受け取ると、コピー先のディスクノードに対してスライス情報更新指示を送信する。退避処理対象スライスが複数ある場合、退避制御部５３５は、退避処理対象スライスを１つずつ選択する。そして、退避制御部５３５は、前に選択した退避処理対象スライスのデータのコピーが終了すると、次の退避処理対象スライスのデータコピー指示を送信する。
【００７４】
退避制御部５３５は、選択した１つの退避処理対象スライスのデータコピーが終了するごとに、コピー先のディスクノードに対してセグメント情報の更新指示を送信する。すなわち退避制御部５３５は、コピー先のスライスを、コピー元のスライスと同じセグメントのセカンダリスライスとするメタデータを、コピー先のスライスを管理するディスクノードに送信する。
【００７５】
なお、退避制御部５３５は、退避処理中に、退避処理対象のディスクノード以外のディスクノードで障害が検出されると、退避処理を中止する。中止した退避処理は、リカバリ処理の完了後に再開される。例えば、退避制御部５３５は、二重化制御部５３４によるリカバリ処理の完了を検知すると、中止していた退避処理を再開する。また、退避制御部５３５は、二重化制御部５３４によるリカバリ処理の完了後、管理者からの再開指示があったときに中止していた退避処理を再開するようにしてもよい。
【００７６】
ところで、図１に示した各機能と図７に示した機能との対応関係は次の通りである。図１の退避処理実行手段２と退避処理中止指示手段５との機能は、図７の退避制御部５３５に含まれる。図１の記憶手段３の機能は、図７の記憶部５２０に含まれる。図１の障害検出手段４の機能は、図７の監視部５３１に含まれる。図１の復旧対象データ判定手段６、冗長データコピー先選択手段７、および冗長データコピー手段８の機能は、図７の二重化制御部５３４に含まれる。
【００７７】
次に、記憶部５２０に格納される情報について詳細に説明する。
図８は、スライス情報テーブルのデータ構造例を示す図である。スライス情報テーブル５２１には、ディスクノードＩＤ、スライスＩＤ、状態、論理ボリュームＩＤ、セグメントＩＤ、ペアのディスクノードＩＤ、およびペアのスライスＩＤの欄が設けられている。スライス情報テーブル５２１内の横方向に並べられた情報同士が互いに関連付けられ、メタデータを示す１つのレコードを構成している。スライス情報テーブル５２１の各欄に設定される情報は、メタデータテーブル１４１の同名の欄と同じ情報である。ただし、スライス情報テーブル５２１は、ディスクノード１００のメタデータテーブル１４１とは異なり、複数のディスクノード１００，２００，３００，４００から収集したすべてのスライス情報に含まれるメタデータが登録されている。
【００７８】
図９は、セグメント情報テーブルのデータ構造例を示す図である。セグメント情報テーブル５２２には、論理ボリュームＩＤ、セグメントＩＤ、プライマリ情報、およびセカンダリ情報の欄が設けられている。
【００７９】
論理ボリュームＩＤの欄には、マルチノードストレージシステムで定義された論理ボリュームの識別情報（論理ボリュームＩＤ）が設定される。セグメントＩＤの欄には、論理ボリュームに定義されたセグメントの識別情報（セグメントＩＤ）が設定される。
【００８０】
プライマリ情報の欄には、対応するセグメントに割り当てられたプライマリスライスに関する情報が設定される。プライマリ情報の欄は、ディスクノードＩＤとスライスＩＤとの欄に細分化されている。ディスクノードＩＤの欄には、プライマリスライスとして割り当てられたスライスを管理するディスクノードの識別情報（ディスクノードＩＤ）が設定される。スライスＩＤの欄には、プライマリスライスとして割り当てられたスライスの識別情報（スライスＩＤ）が設定される。
【００８１】
セカンダリ情報の欄には、対応するセグメントに割り当てられたセカンダリスライスに関する情報が設定される。セカンダリ情報の欄は、ディスクノードＩＤとスライスＩＤとの欄に細分化されている。ディスクノードＩＤの欄には、セカンダリスライスとして割り当てられたスライスを管理するディスクノードの識別情報（ディスクノードＩＤ）が設定される。スライスＩＤの欄には、セカンダリスライスとして割り当てられたスライスの識別情報（スライスＩＤ）が設定される。
【００８２】
図１０は、復旧対象リストのデータ構造例を示す図である。復旧対象リスト５２３には、論理ボリュームＩＤとセグメントＩＤとの欄が設けられている。
論理ボリュームＩＤの欄には、リカバリ処理による復旧対象となるセグメントが属する論理ボリュームの識別情報（論理ボリュームＩＤ）が設定される。セグメントのＩＤの欄には、リカバリ処理による復旧対象となるセグメントの識別情報（セグメントＩＤ）が設定される。
【００８３】
図１１は、退避対象スライスリストのデータ構造例を示す図である。退避対象スライスリスト５２４には、ディスクノードＩＤとスライスＩＤとの欄が設けられている。退避対象スライスリスト５２４内の横方向に並べられた情報同士が互いに関連付けられ、退避処理対象スライスを示す１つのレコードを構成している。
【００８４】
ディスクノードＩＤの欄には、退避処理の対象となるスライスを管理するディスクノードの識別情報（ディスクノードＩＤ）が設定される。スライスＩＤの欄には、退避処理の対象となるスライスの識別情報（スライスＩＤ）が設定される。
【００８５】
図１２は、退避処理対象ディスクノードリストのデータ構造例を示す図である。退避処理対象ディスクノードリスト５２５には、退避処理対象となっているディスクノードの識別情報（ディスクノードＩＤ）が設定される。
【００８６】
以上のような構成のシステムにより、退避処理やリカバリ処理が実行される。そして、退避処理中に退避処理対象のディスクノードとは別のディスクノードに障害が発生すると、退避処理を中止してリカバリ処理が開始される。以下、退避処理とリカバリ処理とについて詳細に説明する。
【００８７】
図１３は、退避処理の手順を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。なお、退避処理は、ディスクノードを指定した退避処理の指示が入力されたときに開始される。
【００８８】
［ステップＳ１１］退避制御部５３５は、退避処理の指示で指定されたディスクノード（退避処理対象ディスクノード）のディスクノードＩＤが登録された退避処理対象ディスクノードリスト５２５を生成する。そして、退避制御部５３５は、生成した退避処理対象ディスクノードリスト５２５を記憶部５２０に格納する。
【００８９】
［ステップＳ１２］退避制御部５３５は、退避対象スライスリスト５２４を生成する。具体的には、退避制御部５３５は、スライス情報テーブル５２１を参照し、退避処理対象ディスクノードが管理するスライスのうち、論理ボリュームのセグメントに割り当てられているスライス（退避対象スライス）のメタデータを検索する。セグメントに割り当てられているスライスとは、状態の欄に「Ｐ（プライマリスライス）」または「Ｓ（セカンダリスライス）」のフラグが設定されたスライスである。退避制御部５３５は、検出した各メタデータのディスクノードＩＤとスライスＩＤとの組みを退避対象スライスリスト５２４に設定する。そして、退避制御部５３５は、生成した退避対象スライスリスト５２４を、記憶部５２０に格納する。
【００９０】
［ステップＳ１３］退避制御部５３５は、退避対象スライスリスト５２４から退避対象スライスを１つ選択する。具体的には、退避制御部５３５は、退避対象スライスリスト５２４から、１つのレコード（ディスクノードＩＤとスライスＩＤとの組み）を選択する。
【００９１】
［ステップＳ１４］退避制御部５３５は、選択したスライスがプライマリスライスか否かを判断する。具体的には、退避制御部５３５は、スライス情報テーブル５２１から、ステップＳ１３で選択したスライスのディスクノードＩＤとスライスＩＤとの組みに対応するメタデータを検索する。そして、退避制御部５３５は、検出したメタデータの状態が「Ｐ（プライマリスライス）」であれば、選択したスライスがプライマリスライスであると判断する。選択したスライスがプライマリスライスであれば、処理がステップＳ１５に進められる。選択したスライスがセカンダリスライスであれば、処理がステップＳ１６に進められる。
【００９２】
［ステップＳ１５］退避制御部５３５は、選択したスライスとペアのスライスのプライマリ化処理を行う。具体的には、退避制御部５３５は、ステップＳ１４で検出したメタデータにおけるペアのディスクノードＩＤおよびペアのスライスＩＤによって、ペアのスライスを特定する。選択したスライスがプライマリスライスであるため、ペアのスライスはセカンダリスライスである。そこで、退避制御部５３５は、セカンダリスライスを管理するディスクノードに対して、プライマリ化（メタデータの属性を「Ｐ」に変更）の指示を送信する。プライマリ化指示には、プライマリ化すべきスライスのスライスＩＤが含まれる。
【００９３】
プライマリ化指示を受信したディスクノードでは、指定されたスライスのメタデータの属性を「Ｐ」に変更する。プライマリ化を行ったディスクノードは、プライマリ化完了応答を退避制御部５３５に返す。プライマリ化完了応答を受け取った退避制御部５３５は、スライス情報テーブル５２１とセグメント情報テーブル５２２を更新する。すなわち、プライマリ化させたスライスのメタデータの属性が「Ｐ」に変更され、選択された退避対象スライスのメタデータの属性が「Ｓ」に変更される。
【００９４】
［ステップＳ１６］退避制御部５３５は、退避対象スライスのデータを、他のスライスにコピーする。具体的には、退避制御部５３５は、スライス情報テーブル５２１を参照し、選択した退避対象スライスのペアのスライスとは異なるディスクノードで管理された空きスライスを１つ選択する。そして、退避制御部５３５は、退避対象スライスを管理するディスクノードに対して、退避対象スライスの空きスライスへのデータコピー指示を送信する。このデータコピー指示には、退避対象スライスのスライスＩＤ、コピー先のディスクノードのディスクノードＩＤ、および選択した空きスライスのスライスＩＤが含まれる。
【００９５】
データコピー指示を受け取ったディスクノードは、退避対象スライス内のデータを、指定された空きスライスにコピーする。データコピーを行ったディスクノードは、データコピー完了応答を退避制御部５３５に返す。
【００９６】
［ステップＳ１７］退避制御部５３５は、メタデータを更新する。具体的には、退避制御部５３５は、データのコピー先となったスライスを管理するディスクノードに対して、その空きスライスを、選択した退避対象スライスと同じセグメントのセカンダリスライスとして割り当てることを示すスライス情報更新指示を送信する。スライス情報更新指示を受け取ったディスクノードは、指定された内容でデータコピー先となったスライスのメタデータを更新する。メタデータを更新したディスクノードは、退避制御部５３５に対してメタデータ更新完了応答を返す。メタデータ更新完了応答を受け取った退避制御部５３５は、スライス情報テーブル５２１とセグメント情報テーブル５２２を更新する。
【００９７】
［ステップＳ１８］退避制御部５３５は、退避対象スライスを退避対象スライスリスト５２４から削除する。
［ステップＳ１９］退避制御部５３５は、退避対象スライスリスト５２４に未選択の退避対象スライスがあるか否かを判断する。未選択の退避対象スライスがあれば、処理がステップＳ１３に進められる。すべての退避対象スライスについての退避処理が完了していれば、処理がステップＳ２０に進められる。
【００９８】
［ステップＳ２０］退避制御部５３５は、退避処理対象ディスクノードを退避処理対象ディスクノードリスト５２５から削除する。その後、処理が終了する。
このように、退避処理では、退避対象スライスが１つずつ選択され、順次処理される。退避処理が完了する前にディスクノードの障害が検出されると、退避処理は中止される。退避処理が中止されても、退避処理対象ディスクノードリスト５２５の内容は維持される。
【００９９】
次に、リカバリ処理について詳細に説明する。
図１４は、リカバリ処理の手順を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。なお、図１４の処理は、ディスクノードからのハートビートが所定時間以上途絶えたときに実行される。
【０１００】
［ステップＳ３１］監視部５３１は、ディスクノードからのハードビートが所定時間途絶えたことにより、そのディスクノードの異常を検出する。
［ステップＳ３２］二重化制御部５３４は、退避制御部５３５による退避処理中か否かを判断する。退避処理中でなければ、処理がステップＳ３３に進められる。退避処理中であれば、処理がステップＳ３４に進められる。
【０１０１】
［ステップＳ３３］制御部５３０内の各要素が連携して、通常リカバリ処理を実行する。この処理の詳細は後述する。その後、リカバリ処理が終了する。
［ステップＳ３４］制御部５３０内の各要素が連携して、退避処理中リカバリ処理を実行する。この処理の詳細は後述する。その後、リカバリ処理が終了する。
【０１０２】
このように、リカバリ処理は、退避処理中か否かによって処理内容が異なってくる。以下、通常リカバリ処理と退避処理中リカバリ処理との詳細な手順について説明する。
図１５は、通常リカバリ処理の手順を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
【０１０３】
［ステップＳ４１］スライス情報収集部５３２は、正常なディスクノードからスライス情報を収集する。具体的には、スライス情報収集部５３２は、監視部５３１から、異常を検出したディスクノードのディスクノードＩＤを取得する。次に、スライス情報収集部５３２は、異常を検出したディスクノード以外の各ディスクノードに対して、スライス情報取得要求を送信する。スライス情報取得要求を受信した各ディスクノードは、スライス情報記憶部に格納されているスライス情報（スライス毎のメタデータ）をスライス情報収集部５３２に送信する。スライス情報収集部５３２は、各ディスクノードが送信したスライス情報を受信する。
【０１０４】
［ステップＳ４２］スライス情報収集部５３２は、スライス情報テーブル５２１とセグメント情報テーブル５２２とを再構成する。具体的には、スライス情報収集部５３２は、収集したスライス情報に基づいてスライス情報テーブルを生成し、記憶部５２０内のスライス情報テーブル５２１を更新する。さらに、スライス情報収集部５３２は、収集したスライス情報に基づいてセグメント情報テーブルを生成し、記憶部５２０内のセグメント情報テーブル５２２を更新する。なお、セグメント情報テーブル５２２を生成する際には、スライス情報収集部５３２は、収集したスライス情報の各メタデータの状態を参照する。そして、スライス情報収集部５３２は、メタデータの状態が「Ｐ」であれば、そのメタデータの情報を、セグメント情報テーブル５２２のプライマリ情報の欄に設定する。また、スライス情報収集部５３２は、メタデータの状態が「Ｓ」であれば、そのメタデータの情報を、セグメント情報テーブル５２２のセカンダリ情報の欄に設定する。この際、障害が発生したディスクノードからはスライス情報が収集されないため、再構築したセグメント情報テーブル５２２では、障害が発生したディスクノードで管理するスライスを割り当てていたセグメントのプライマリ情報またはセカンダリ情報の欄は空欄となる。
【０１０５】
［ステップＳ４３］復旧対象抽出部５３３は、復旧対象リスト５２３を作成する。具体的には、復旧対象抽出部５３３は、セグメント情報テーブル５２２を参照し、プライマリ情報とセカンダリ情報とのいずれかの欄が空欄となっているセグメントを抽出する。そして、復旧対象抽出部５３３は、抽出したセグメントの情報（論理ボリュームＩＤとセグメントＩＤ）を復旧対象リスト５２３に登録する。これにより、異常が検出されたディスクノードが管理するスライスが割り当てられていたセグメント（復旧対象セグメント）を示す情報が登録された復旧対象リスト５２３が生成される。生成された復旧対象リスト５２３は、記憶部５２０に格納される。
【０１０６】
［ステップＳ４４］二重化制御部５３４は、復旧対象セグメントの既割当スライスをプライマリスライスとする。具体的には、二重化制御部５３４は、復旧対象リスト５２３から、復旧対象セグメントのディスクノードＩＤおよびセグメントＩＤを取得する。そして、二重化制御部５３４は、セグメント情報テーブル５２２を参照し、復旧対象セグメントに割り当てられている既存のスライス（既割当スライス）がプライマリスライスかセカンダリスライスかを判断する。既割当スライスがセカンダリスライスであれば、二重化制御部５３４は、その既割当スライスのディスクノードＩＤに該当するディスクノードに対してプライマリ化指示を送信する。すると、既割当スライスがプライマリスライスに変更される。
【０１０７】
［ステップＳ４５］二重化制御部５３４は、復旧対象セグメントに対して、セカンダリスライスを割り当てる。具体的には、二重化制御部５３４は、スライス情報テーブル５２１を参照し、復旧対象セグメントの既割当スライスとは別のディスクノードで管理されている空きスライス（状態が「Ｆ」のスライス）を１つ選択する。そして、二重化制御部５３４は、選択したスライスを復旧対象セグメントのセカンダリスライスとして割り当てる。なお、この時点では、スライス情報テーブル５２１では、割り当てたスライスの状態が「Ｒ」（リザーブスライスであることを示す）に設定される。そして、後述するメタデータの更新処理が完了したときに、そのスライスの状態が「Ｓ」（セカンダリスライス）に変更される。
【０１０８】
［ステップＳ４６］二重化制御部５３４は、復旧対象セグメントの既割当スライス（プライマリスライス）から新たに割り当てたスライス（セカンダリスライス）へのデータコピーを指示する。具体的には、二重化制御部５３４は、プライマリスライスを管理するディスクノードに対して、セカンダリスライスのディスクノードＩＤとスライスＩＤとを指定したデータコピー指示を送信する。
【０１０９】
［ステップＳ４７］二重化制御部５３４は、スライス情報更新指示をプライマリスライスとセカンダリスライスとを管理するディスクノードに送信する。送信されるスライス情報更新指示には、既割当スライスを復旧対象セグメントのプライマリライスとし、ステップＳ４５で割り当てたスライスを復旧対象セグメントのセカンダリスライスとすることが示される。各ディスクノードでは、スライス情報記憶部とストレージ装置とのそれぞれに格納されたメタデータが更新される。ディスクノードは、メタデータを更新すると、スライス情報更新完了の応答を二重化制御部５３４に送信する。二重化制御部５３４は、ディスクノードからスライス情報更新完了の応答が返されると、スライス情報テーブル５２１とセグメント情報テーブル５２２とを更新する。
【０１１０】
このようにして、退避処理を実行していないときのリカバリ処理が完了する。次に、退避処理中のリカバリ処理を詳細に説明する。
図１６は、退避処理中リカバリ処理を示す第１のフローチャートである。以下、図１６に示す処理をステップ番号に沿って説明する。
【０１１１】
［ステップＳ５１］退避制御部５３５は、退避処理を中止する。具体的には、二重化制御部５３４から退避制御部５３５へ退避処理中止の指示が出される。退避制御部５３５は、退避処理中止の指示に応答して、退避処理を中止する。その際、退避対象スライスリスト５２４の内容はクリアされるが、退避処理対象ディスクノードリスト５２５の内容は維持される。
【０１１２】
［ステップＳ５２］スライス情報収集部５３２は、正常なディスクノードからスライス情報を収集する。この処理の詳細は、図１５のステップＳ４１と同様である。
［ステップＳ５３］スライス情報収集部５３２は、スライス情報テーブル５２１とセグメント情報テーブル５２２とを再構成する。この処理の詳細は、図１５のステップＳ４２と同様である。
【０１１３】
［ステップＳ５４］復旧対象抽出部５３３は、復旧対象リスト５２３を作成する。この処理の詳細は、図１５のステップＳ４３と同様である。
［ステップＳ５５］二重化制御部５３４は、復旧対象セグメントの既割当スライスをプライマリスライスとする。この処理の詳細は、図１５のステップＳ４４と同様である。
【０１１４】
［ステップＳ５６］二重化制御部５３４は、未処理の復旧対象セグメントに退避対象スライスをもつセグメントがあるか否かを判断する。具体的には、二重化制御部５３４は、復旧対象リスト５２３を参照して、復旧対象セグメントを判断する。なお、二重化制御部５３４は、復旧対象セグメントに対して二重化復旧のためにセカンダリスライスが割り当てられているか否かの情報を内部で記憶しており、セカンダリスライスが割り当てられていない復旧対象セグメントを未処理と認識する。次に、二重化制御部５３４は、セグメント情報テーブル５２２を参照して、未処理の復旧対象セグメントに割り当てられている既割当スライスを判断する。さらに、二重化制御部５３４は、退避対象ディスクノードリスト５２５を参照し、既割当スライスが退避対象ディスクノードに属しているスライスならば退避対象スライスに該当し、この退避対象スライスを持つセグメントが該当する復旧対象セグメントと判断する。該当する復旧対象セグメントがあれば処理がステップＳ５７に進められる。該当する復旧対象セグメントがなければ、処理がステップＳ６１（図１７参照）に進められる。
【０１１５】
［ステップＳ５７］二重化制御部５３４は、退避対象スライスが割り当てられた未処理の復旧対象セグメントを１つ選択する。
［ステップＳ５８］二重化制御部５３４は、選択した復旧対象セグメントに、退避対象ディスクノード以外のディスクノードで管理されているスライスを割り当てる。具体的には、二重化制御部５３４は、スライス情報テーブル５２１から、退避対象ディスクノード以外のディスクノードに対応するスライスから、空きスライス（状態が「Ｆ」）を１つ選択する。そして、選択したスライスを、ステップＳ５７で選択した復旧対象セグメントのセカンダリスライスとして割り当てる。その後、処理がステップＳ５６に進められる。
【０１１６】
図１７は、退避処理中リカバリ処理を示す第２のフローチャートである。以下、図１７に示す処理をステップ番号に沿って説明する。
［ステップＳ６１］二重化制御部５３４は、未処理の復旧対象セグメントがあるか否かを判断する。具体的には、二重化制御部５３４は、復旧対象リスト５２３を参照して、復旧対象セグメントを判断する。そして、二重化制御部５３４は、復旧対象セグメントのうち、セカンダリスライスを割り当てていないセグメントがあれば、未処理の復旧対象セグメントがあると判断する。未処理の復旧対象セグメントがある場合、処理がステップＳ６２に進められる。未処理の復旧対象セグメントがない場合、処理がステップＳ７４（図１８参照）に進められる。
【０１１７】
［ステップＳ６２］二重化制御部５３４は、退避対象ディスクノード以外のディスクノードに空きスライスがあるか否かを判断する。具体的には、二重化制御部５３４は、スライス情報テーブル５２１から、退避対象ディスクノード以外のディスクノードに対応するスライスのうち、空きスライス（状態が「Ｆ」）があるか否かを判断する。空きスライスがあれば、処理がステップＳ６３に進められる。空きスライスがなければ、処理がステップＳ７１（図１８に示す）に進められる。
【０１１８】
［ステップＳ６３］二重化制御部５３４は、未処理の復旧対象セグメントを１つ選択する。
［ステップＳ６４］二重化制御部５３４は、ステップＳ６３で選択した復旧対象セグメントに、退避対象ディスクノード以外のディスクノードで管理されているスライスを割り当てる。具体的には、二重化制御部５３４は、スライス情報テーブル５２１から、退避対象ディスクノード以外のディスクノードに対応するスライスから、空きスライス（状態が「Ｆ」）を１つ選択する。そして、選択したスライスを、ステップＳ６３で選択した復旧対象セグメントのセカンダリスライスとして割り当てる。その後、処理がステップＳ６１に進められる。
【０１１９】
図１８は、退避処理中リカバリ処理を示す第３のフローチャートである。以下、図１８に示す処理をステップ番号に沿って説明する。
［ステップＳ７１］二重化制御部５３４は、未処理の復旧対象セグメントを１つ選択する。
【０１２０】
［ステップＳ７２］二重化制御部５３４は、ステップＳ７１で選択した復旧対象セグメントに、退避対象ディスクノードで管理されているスライスを割り当てる。具体的には、二重化制御部５３４は、スライス情報テーブル５２１から、退避対象ディスクノードに対応するスライスから、空きスライス（状態が「Ｆ」）を１つ選択する。そして、選択したスライスを、ステップＳ７１で選択した復旧対象セグメントのセカンダリスライスとして割り当てる。
【０１２１】
［ステップＳ７３］二重化制御部５３４は、未処理の復旧対象セグメントがあるか否かを判断する。未処理の復旧対象セグメントがあれば、処理がステップＳ７１に進められる。未処理の復旧対象セグメントがなければ、処理がステップＳ７４に進められる。
【０１２２】
［ステップＳ７４］二重化制御部５３４は、復旧対象セグメントの既割当スライス（プライマリスライス）から新たに割り当てたスライス（セカンダリスライス）へのデータコピーを指示する。具体的には、二重化制御部５３４は、プライマリスライスを管理するディスクノードに対して、セカンダリスライスのディスクノードＩＤとスライスＩＤとを指定したデータコピー指示を送信する。
【０１２３】
［ステップＳ７５］二重化制御部５３４は、スライス情報更新指示をプライマリスライスとセカンダリスライスとを管理するディスクノードに送信する。送信されるスライス情報更新指示には、既割当スライスを復旧対象セグメントのプライマリライスとし、ステップＳ４５で割り当てたスライスを復旧対象セグメントのセカンダリスライスとすることが示される。各ディスクノードでは、スライス情報記憶部とストレージ装置とのそれぞれに格納されたメタデータが更新される。ディスクノードは、メタデータを更新すると、スライス情報更新完了の応答を二重化制御部５３４に送信する。二重化制御部５３４は、ディスクノードからスライス情報更新完了の応答が返されると、スライス情報テーブル５２１とセグメント情報テーブル５２２とを更新する。
【０１２４】
［ステップＳ７６］二重化制御部５３４は、退避処理を再実行するか否かを判断する。例えば、リカバリ処理終了後に中止した退避処理を再実行する旨の指示が予め入力されていた場合、退避処理を再実行すると判断する。また、二重化制御部５３４は、退避処理の再実行の有無を問い合わせる画面を表示し、管理者からの再実行の要否を示す操作入力に基づいて、退避処理再開の要否を判断してもよい。退避処理を再実行する場合、処理がステップＳ７７に進められる。退避処理を再実行しない場合、退避処理中リカバリ処理が終了する。
【０１２５】
［ステップＳ７７］二重化制御部５３４は、退避処理の再実行を退避制御部５３５に送信する。これにより、退避制御部５３５により退避処理が再実行される。再実行される退避処理の詳細は、図１３に示した処理と同様である。ただし、退避処理対象ディスクノードリスト５２５については中止された退避処理において作成されたものが使用される。そのため、再実行された退避処理では、ステップＳ１１に示す退避処理対象ディスクノードリスト作成処理は行われない。二重化制御部５３４が退避処理再開指示を出力すると、退避処理中リカバリ処理が終了する。
【０１２６】
以上のような手順でリカバリ処理が行われる。以下に、退避処理中に障害が発生したときのスライス割当状態の遷移について説明する。
図１９は、退避処理中に障害が発生したときのスライス割当の状態遷移を示す図である。図１９において、ストレージ装置１１０，２１０，３１０，４１０を管理するディスクノードのディスクノードＩＤを、各ストレージ装置１１０，２１０，３１０，４１０の下に示している。また、ストレージ装置１１０，２１０，３１０，４１０内のスライスのスライスＩＤを、各スライスの左に示している。
【０１２７】
第１の状態［ＳＴ１］は、退避処理開始時のスライス割当状態を示している。図１９の例では、ストレージ装置３１０の退避処理が開始されている。ストレージ装置３１０には、３つのスライスがセグメントに割り当てられている。そこで、ストレージ装置３１０のスライスＩＤ「２」のスライスのデータをストレージ装置２１０のスライスＩＤ「２」のスライスに退避させ、ストレージ装置３１０のスライスＩＤ「３」のスライスのデータをストレージ装置４１０のスライスＩＤ「２」のスライスに退避させ、ストレージ装置３１０のスライスＩＤ「６」のスライスのデータをストレージ装置１１０のスライスＩＤ「２」のスライスに退避させるものとする。
【０１２８】
この場合、ストレージ装置３１０内の退避対象スライスが順に選択され、退避先のスライスにデータがコピーされる。なお、ストレージ装置３１０のスライスＩＤ「３」のスライスは、セグメントＩＤ「３」のセグメントのプライマリリスライスである。そこで、セグメントＩＤ「３」のセグメントのセカンダリスライス（ストレージ装置２１０のスライスＩＤ「３」のスライス）のプライマリ化を行った後、データコピーが行われる。
【０１２９】
このような退避処理中に、退避対象のストレージ装置３１０以外のストレージ装置に障害が発生すると、退避処理は中止される。
第２の状態［ＳＴ２］は、障害発生時のスライス割当状態を示している。図１９の例では、ストレージ装置３１０のスライスＩＤ「６」のスライスのデータを退避させる前に、ストレージ装置４１０に障害が発生している。この場合、退避処理が中止される。
【０１３０】
第３の状態［ＳＴ３］は、退避処理中止後のスライス割当状態を示している。退避処理が中止されたため、依然として、ストレージ装置３１０のスライスＩＤ「６」のスライスは、セグメントＩＤ「２」のセグメントに割り当てられている。なお、退避処理が中止されても、ストレージ装置が退避処理の対象であることを示す情報は維持される。
【０１３１】
退避処理が中止されると、リカバリ処理が開始される。リカバリ処理では、まずスライス情報テーブル５２１とセグメント情報テーブル５２２とが再構成される。
図２０は、再構成されたスライス情報テーブルの例を示す図である。再構成されたスライス情報テーブル５２１には、障害が発生したディスクノード４００（ディスクノードＩＤ「ＤＰ−Ｄ」）のメタデータは含まれていない。そのため、正常動作している３台のディスクノード１００，２００，３００から収集したメタデータから、セグメント情報テーブル５２２が再構成される。
【０１３２】
図２１は、再構成されたセグメント情報テーブルの例を示す図である。再構成されたセグメント情報テーブル５２２では、１つのスライスしか割り当てられていないセグメントが存在する。このセグメントが、復旧対象セグメントとして選択される。
【０１３３】
次に、退避処理中のリカバリ処理におけるスライス割当の状態遷移例について説明する。
図２２は、退避処理中のリカバリ処理におけるスライス割当の状態遷移を示す図である。リカバリ処理を行う場合、障害が発生したストレージ装置４１０に格納されていたスライスが割り当てられていたセグメントがリカバリ対象となる。そして、リカバリ対象のセグメントに割り当てられている別のセグメントのデータを用いて、データの二重化が実行される。データの二重化を行う場合、退避処理対象のストレージ装置３１０のスライスが優先的に処理される。
【０１３４】
第４の状態［ＳＴ４］は、退避対象スライスのリカバリ処理時のスライス割当状態を示している。図２２の例では、ストレージ装置４１０のスライスＩＤ「６」のスライスが、セグメントＩＤ「２」のセグメントに対して、プライマリスライスとして割り当てられている。またこのセグメントには、退避処理対象のストレージ装置３１０のスライスＩＤ「６」のスライスが、セカンダリスライスとして割り当てられている。そこで、ストレージ装置３１０のスライスＩＤ「６」のスライスをプライマリスライスに変更した後、そのスライスのデータのコピーが行われる。図２２の例では、ストレージ装置３１０のスライス番号「６」の退避対象スライスのデータが、ストレージ装置１１０のスライス番号「２」のスライスにコピーされている。
【０１３５】
その後、退避処理対象のストレージ装置３１０以外のストレージ装置１１０，２１０に格納されているデータのリカバリ処理が行われる。
第５の状態［ＳＴ５］は、退避対象ではないスライスのリカバリ処理時のスライス割当状態を示している。図２２の例では、ストレージ装置１１０のスライスＩＤ「２」のスライスのデータが、ストレージ装置２１０のスライスＩＤ「１」のスライスにコピーされる。また、ストレージ装置２１０のスライスＩＤ「３」のスライスのデータが、ストレージ装置１１０のスライスＩＤ「５」のスライスにコピーされる。
【０１３６】
第６の状態［ＳＴ６］は、リカバリ処理終了時の状態を示している。リカバリ処理が終了したことにより、ストレージ装置４１０のスライスが割り当てられていたセグメントは、正常に動作しているストレージ装置１１０，２１０，３１０のスライスが二重化して割り当てられている。また、退避処理対象のストレージ装置３１０は、リカバリ処理時のコピー先として選択される優先順位が最も低いため、リカバリ処理により新たにデータがコピーされずに済んでいる。
【０１３７】
リカバリ処理終了後、中止した退避処理を再開することができる。
図２３は、再開した退避処理におけるスライス割当の状態遷移を示す図である。第７の状態［ＳＴ７］は、退避処理再開時のスライス割当状態を示している。図２３の例では、空きスライスは、ストレージ装置２１０のスライスＩＤ「６」のスライスのみである。そこで、ストレージ装置２１０のスライスＩＤ「６」のスライスに、退避対象スライスの退避が行われる。
【０１３８】
なお、退避対象スライスであるストレージ装置３１０のスライスＩＤ「６」のスライスは、プライマリスライスである。そこで、そのスライスとペアを組んでいるストレージ装置１１０のスライスＩＤ「２」のスライスが、プライマリスライスに変更される。
【０１３９】
第８の状態［ＳＴ８］は、退避処理終了後のスライス割当状態を示している。退避処理が終了したことにより、ストレージ装置３１０内のスライスはすべて空きスライスとなっている。
【０１４０】
このようにして、再開した退避処理が実行される。退避処理対象のストレージ装置３１０のスライスは、リカバリ処理におけるリザーブスライスとして選択される優先順位が低い。そのため、退避処理を中止してリカバリ処理が実行されても、退避対象スライス数が増加せずに済む。その結果、再開した退避処理では、中止時点で未処理だった退避対象スライスのデータを退避させるだけで済む。すなわち、退避処理中に退避処理対象のストレージ装置とは異なるストレージ装置が故障してリカバリ処理が実行されても、退避処理の長期化が防止される。
【０１４１】
しかも、リカバリ処理において、退避処理対象ディスクノードで管理されているスライスのコピー先の選択を優先して実行する。これにより、未処理の復旧対象セグメントがあるにも拘わらず退避処理対象ディスクノード以外のディスクノードに空きスライスが無くなってしまった場合であっても、未処理の復旧対象セグメントに割り当てるスライスを確実に選択できる。
【０１４２】
すなわち、リカバリ処理で未処理の復旧対象セグメントに割り当てるスライスを選択する場合、既に割り当てられているスライスとは異なるディスクノードで管理されているスライスを選択する必要がある。退避処理対象ディスクノード以外のディスクノードに空きスライスが無くなってしまった場合、空きスライスは退避処理対象ディスクノードにしか存在しない。このとき、未処理の復旧対象セグメントの既に割り当てられているスライスが退避処理対象ディスクノードで管理されている場合、二重化のためのペアとなるスライスの選択の余地が無くなってしまう。退避処理対象ディスクノードで管理されているスライスのコピー先の選択を優先して実行しておけば、このようなペアとなるスライスが選択できないという事態の発生を回避することができる。
【０１４３】
さらに、上記実施の形態では、退避対象スライスがプライマリスライスの場合、ペアとなるスライスをプライマリ化した後、データのコピーを実行する。これにより、アクセスノード３０，４０からのデータアクセスを、データコピー処理を行っていないストレージノードに対して行わせることができる。すなわち、アクセスノード３０，４０は、制御ノード５００からセグメント情報テーブル５２２に示される情報を取得し、常にプライマリスライスに対してデータアクセスを行う。アクセスノード３０，４０がデータアクセスを行ったときに、アクセス先のスライスが、アクセス対象のセグメントのプライマリスライスではない場合、アクセスノード３０，４０は、制御ノード５００から最新のセグメント情報テーブル５２２を取得し、改めてプライマリスライスにアクセスを行う。このように、アクセスノード３０，４０が常にプライマリスライスにアクセスするように制御されていることから、退避処理によるコピー元のスライスがプライマリスライスの場合、ペアとなるスライスをプライマリ化することで、退避対象スライスへのアクセスを防止できる。その結果、退避処理のためのデータコピーとアクセスノード３０，４０からのアクセスが同一セグメントに同時に行われることがなくなり、アクセス効率の低下を防止できる。
【０１４４】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、制御ノードやディスクノードが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disc）などがある。
【０１４５】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１４６】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１４７】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
【０１４８】
（付記１）  複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理プログラムであって、
前記コンピュータを、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する退避処理実行手段、
障害が発生した障害ストレージ装置を検出する障害検出手段、
前記退避処理中に前記障害検出手段で障害の発生が検出された場合、前記退避処理実行手段による前記退避処理を中止させる退避処理中止指示手段、
前記障害検出手段で検出された前記障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとする復旧対象データ判定手段、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する冗長データコピー先選択手段、
前記冗長データコピー先選択手段で選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする冗長データコピー手段、
として機能させるデータ管理プログラム。
【０１４９】
（付記２）  前記冗長データコピー先選択手段は、前記復旧対象データの総量に対して、前記退避処理対象ストレージ装置以外のストレージ装置内の空き領域が不足している場合、不足しているデータ容量分だけ、前記退避処理対象ストレージ装置内の空き領域を前記冗長データコピー先として選択することを特徴とする付記１記載のデータ管理プログラム。
【０１５０】
（付記３）  前記冗長データコピー先選択手段は、前記退避処理対象ストレージ装置内に格納されている前記復旧対象データの前記冗長データコピー先を決定後、前記退避処理対象ストレージ装置以外のストレージ装置に格納されている前記復旧対象データの前記冗長データコピー先を決定することを特徴とする付記１記載のデータ管理プログラム。
【０１５１】
（付記４）  前記復旧対象データ判定手段は、前記障害検出手段で検出された前記障害ストレージ装置以外の正常ストレージ装置に格納されているデータ同士の対応関係を調査し、対応関係にある他のデータが存在しないデータを前記復旧対象データとすることを特徴とする付記１記載のデータ管理プログラム。
【０１５２】
（付記５）  前記復旧対象データ判定手段は、仮想的に設けられた論理ボリュームの記憶領域を構成する複数のセグメントへの前記複数のストレージ装置の記憶領域を構成するスライスの割当関係を示すメタデータを、前記複数のストレージ装置から収集し、収集した前記メタデータに基づいて、１つのスライスしか割り当てられていないセグメントを復旧対象セグメントとし、前記復旧対象セグメントに割り当てられているスライス内のデータを前記復旧対象データとすることを特徴とする付記１記載のデータ管理プログラム。
【０１５３】
（付記６）  前記退避処理実行手段は、前記退避処理が中止された場合、前記冗長データコピー手段によるコピー処理が終了後、前記退避対象ストレージ装置内のデータの退避処理を再実行することを特徴とする付記１記載のデータ管理プログラム。
【０１５４】
（付記７）  前記複数のストレージ装置はそれぞれ個別のディスクノードで管理されており、
前記退避処理実行手段は、前記退避処理対象ストレージ装置に格納されているデータのコピー先となる退避データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の空き領域から選択し、前記退避処理対象ストレージ装置を管理する前記ディスクノードに、前記退避データコピー先への前記退避処理対象ストレージ装置内のデータのコピーを実行させることを特徴とする付記１記載のデータ管理プログラム。
【０１５５】
（付記８）  前記複数のストレージ装置はそれぞれ個別のディスクノードで管理されており、
前記冗長データコピー手段は、前記復旧対象データが格納された前記ストレージ装置を管理する前記ディスクノードに、前記冗長データコピー先選択手段で選択された前記冗長データコピー先への前記復旧対象データのコピーを実行させることを特徴とする付記１記載のデータ管理プログラム。
【０１５６】
（付記９）  複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理装置であって、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行する退避処理実行手段と、
障害が発生した障害ストレージ装置を検出する障害検出手段と、
前記退避処理中に前記障害検出手段で障害の発生が検出された場合、前記退避処理実行手段による前記退避処理を中止させる退避処理中止指示手段と、
前記障害検出手段で検出された前記障害ストレージ装置の障害により二重化状態が損なわれたデータを判断し、復旧対象データとする復旧対象データ判定手段と、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択する冗長データコピー先選択手段と、
前記冗長データコピー先選択手段で選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする冗長データコピー手段と、
を有するデータ管理装置。
【０１５７】
（付記１０）  複数のストレージ装置に格納されたデータの管理をコンピュータに実行させるデータ管理方法であって、
前記コンピュータが、
任意のストレージ装置を指定した退避要求が入力されると、指定された退避処理対象ストレージ装置の識別情報を記憶手段に格納し、前記退避処理対象ストレージ装置に格納されている全データを他のストレージ装置にコピーする退避処理を実行し、
障害が発生した障害ストレージ装置を検出し、
前記退避処理中に障害の発生が検出された場合、前記退避処理を中止させ、
前記障害ストレージ装置の障害により二重化状態が損なわれたデータを復旧対象データとし、
前記記憶手段を参照し、前記復旧対象データの冗長データコピー先を、前記退避処理対象ストレージ装置以外のストレージ装置の記憶領域から優先的に選択し、
選択された前記冗長データコピー先の記憶領域に、前記復旧対象データをコピーする、
ことを特徴とするデータ管理方法。
【図面の簡単な説明】
【０１５８】
【図１】実施の形態の概要を示す図である。
【図２】本実施の形態のマルチノードストレージシステム構成例を示す図である。
【図３】制御ノードのハードウェア構成例を示す図である。
【図４】論理ボリュームのデータ構造を示す図である。
【図５】ディスクノードとアクセスノードとの機能を示すブロック図である。
【図６】スライス情報記憶部のデータ構造例を示す図である。
【図７】制御ノードの機能を示すブロック図である。
【図８】スライス情報テーブルのデータ構造例を示す図である。
【図９】セグメント情報テーブルのデータ構造例を示す図である。
【図１０】復旧対象リストのデータ構造例を示す図である。
【図１１】退避対象スライスリストのデータ構造例を示す図である。
【図１２】退避処理対象ディスクノードリストのデータ構造例を示す図である。
【図１３】退避処理の手順を示すフローチャートである。
【図１４】リカバリ処理の手順を示すフローチャートである。
【図１５】通常リカバリ処理の手順を示すフローチャートである。
【図１６】退避処理中リカバリ処理を示す第１のフローチャートである。
【図１７】退避処理中リカバリ処理を示す第２のフローチャートである。
【図１８】退避処理中リカバリ処理を示す第３のフローチャートである。
【図１９】退避処理中に障害が発生したときのスライス割当の状態遷移を示す図である。
【図２０】再構成されたスライス情報テーブルの例を示す図である。
【図２１】再構成されたセグメント情報テーブルの例を示す図である。
【図２２】退避処理中のリカバリ処理におけるスライス割当の状態遷移を示す図である。
【図２３】再開した退避処理におけるスライス割当の状態遷移を示す図である。
【符号の説明】
【０１５９】
１ａ，１ｂ，１ｃ，１ｄ  ストレージ装置
２  退避処理実行手段
３  記憶手段
４  障害検出手段
５  退避処理中止指示手段
６  復旧対象データ判定手段
７  冗長データコピー先選択手段
８  冗長データコピー手段
【図１】
2010066862.tif 000003
【図２】
2010066862.tif 000004
【図３】
2010066862.tif 000005
【図４】
2010066862.tif 000006
【図５】
2010066862.tif 000007
【図６】
2010066862.tif 000008
【図７】
2010066862.tif 000009
【図８】
2010066862.tif 000010
【図９】
2010066862.tif 000011
【図１０】
2010066862.tif 000012
【図１１】
2010066862.tif 000013
【図１２】
2010066862.tif 000014
【図１３】
2010066862.tif 000015
【図１４】
2010066862.tif 000016
【図１５】
2010066862.tif 000017
【図１６】
2010066862.tif 000018
【図１７】
2010066862.tif 000019
【図１８】
2010066862.tif 000020
【図１９】
2010066862.tif 000021
【図２０】
2010066862.tif 000022
【図２１】
2010066862.tif 000023
【図２２】
2010066862.tif 000024
【図２３】
2010066862.tif 000025