(57)【要約】【課題】必要な場合にデータを可能な限り３重化状態に近付けることでディスクの空き領域を有効活用すること。【解決手段】（１）まず、ディスクノード１０２−６が故障によりダウンすると、（２）ダウンしたディスクノード１０２−６のＲＡＩＤ装置１０３−６に記憶されているマスタデータＦ−１（図１２を参照）に対応する複製予備データＦ−３を記憶するＲＡＩＤ装置１０３−１を特定する。このＲＡＩＤ装置１０３−１に記憶されている複製予備データＦ−３を複製データＦ−２に昇格させる。このように、ＲＡＩＤ装置群１０３−１〜１０３−６に十分な空き領域があり、故障したディスクノードが保持していたデータのスライスがすべて３重化されていた場合には、故障直後もデータの冗長化が喪失していないため、即座にリカバリ完了となる。【選択図】図１３
2010238124.tif 000002
【特許請求の範囲】
【請求項１】
データごとにマスタデータおよびその複製データが分散されているストレージ群にアクセス可能なコンピュータを、
前記各ストレージに関する故障のリスク度を取得する取得手段、
前記取得手段によって取得されたリスク度に基づいて、前記ストレージ群の中から複製元のストレージを決定する決定手段、
前記決定手段によって決定された複製元のストレージに記憶されているマスタデータまたは複製データを、前記複製元のストレージとは異なる複製先のストレージに複製予備データとして複製させる制御手段、
として機能させることを特徴とするデータ管理プログラム。
【請求項２】
前記取得手段は、
前記ストレージ群からの警告メッセージに応じたコストに基づいて、前記各ストレージに関する故障のリスク度を取得することを特徴とする請求項１に記載のデータ管理プログラム。
【請求項３】
前記取得手段は、
所定期間内における前記ストレージ群からの警告メッセージに応じたコストに基づいて、前記各ストレージに関する故障のリスク度を取得することを特徴とする請求項２に記載のデータ管理プログラム。
【請求項４】
前記決定手段は、
前記リスク度に基づいて、前記複製先のストレージの中から上書き先のストレージを決定し、
前記上書き先のストレージに記憶されている前記複製予備データを、前記上書き先のストレージ以外の他のストレージに記憶されているデータにより上書きさせることを特徴とする請求項１〜３のいずれか一つに記載のデータ管理プログラム。
【請求項５】
前記取得手段は、
前記ストレージ群の空き容量を取得し、
前記決定手段は、
前記取得手段によって取得された空き容量が所定の空き容量以下である場合、前記リスク度に基づいて、前記複製先のストレージの中から上書き先のストレージを決定することを特徴とする請求項４に記載のデータ管理プログラム。
【請求項６】
前記コンピュータを、
前記ストレージ群の中から故障したストレージを検出する検出手段、
前記検出手段によって検出された故障したストレージに記憶されている複製元となるデータを特定する複製元特定手段、
前記複製元特定手段によって特定されたデータの複製先となるデータを、故障していないストレージの中から特定する複製先特定手段、
前記複製先特定手段によって特定された複製先となるデータを、当該データの複製元となるデータに設定する設定手段、
として機能させることを特徴とする請求項１〜５のいずれか一つに記載のデータ管理プログラム。
【請求項７】
前記設定手段は、
前記複製先となるデータが前記複製予備データである場合、当該複製予備データを前記複製データに設定し、前記複製先となるデータが前記複製データである場合、当該複製データを前記マスタデータに設定することを特徴とする請求項６に記載のデータ管理プログラム。
【請求項８】
前記制御手段は、
前記設定手段によって設定されたデータがマスタデータである場合、当該マスタデータの複製データを、前記マスタデータを記憶するストレージ以外の他のストレージに複製させる請求項６または７に記載のデータ管理プログラム。
【請求項９】
データごとにマスタデータおよびその複製データが分散されているストレージ群にアクセス可能なデータ管理装置であって、
前記各ストレージに関する故障のリスク度を取得する取得手段と、
前記取得手段によって取得されたリスク度に基づいて、前記ストレージ群の中から複製元のストレージを決定する決定手段と、
前記決定手段によって決定された複製元のストレージに記憶されているマスタデータまたは複製データを、前記複製元のストレージとは異なる複製先のストレージに複製予備データとして複製させる制御手段と、
を備えることを特徴とするデータ管理装置。
【請求項１０】
データごとにマスタデータおよびその複製データが分散されているストレージ群にアクセス可能なコンピュータが、
前記各ストレージに関する故障のリスク度を取得する取得工程と、
前記取得工程によって取得されたリスク度に基づいて、前記ストレージ群の中から複製元のストレージを決定する決定工程と、
前記決定工程によって決定された複製元のストレージに記憶されているマスタデータまたは複製データを、前記複製元のストレージとは異なる複製先のストレージに複製予備データとして複製させる制御工程と、
を実行することを特徴とするデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データを管理するデータ管理プログラム、データ管理装置、およびデータ管理方法に関する。
【背景技術】
【０００２】
従来から、通信ネットワークの構成要素の個々の故障状態を評価識別するシステムと方法が開示されている（たとえば、下記特許文献１を参照。）。この技術では、データ収集／処理モジュールは、通信ネットワークから警報メッセージ信号を収集し処理して異常状態信号を生成する。異常状態信号と外部状態信号と登録された参照データに基づいて直接的リスク信号および間接的リスク信号を生成する。異常状態にある構成要素に関連するリスクを評価する際の補助として直接的リスクと間接的リスクを組み合わせ、構成要素のリスク信号を表示する。また通信ネットワークのサブネットワークに関連する切断の影響データと故障影響データに基づいてサブネットワークのリスク信号を計算し表示する。また、通信ネットワークがこのような保守活動に応じてどのように応答するかを決定するために様々なタイプの保守活動を考慮に入れたリスク計算を調整する。
【０００３】
また、ホットスペアパトロールを必要とすることなく、冗長性の高い別の論理グループから故障代替デバイスを取り込んで冗長性を回復する技術も開示されている（たとえば、下記特許文献２を参照。）。この技術では、ＲＡＩＤ−１のミラーデバイス対応の場合、構成制御部は、デバイスアレイユニットの論理グループとして、同一データをＮ＝２台のデバイスに格納して２重化した第１論理グループと、同一データを（Ｎ＋１）＝３台のデバイスに格納して３重化した第２論理グループとを構築する。故障処理部は、冗長度の低い第１論理グループで１台のデバイスが故障して冗長性が失われた際に、冗長度の高い第２論理グループの１台のデバイスを第１論理グループに取り込み、故障代替デバイスとしてデータを復元し、第１論理グループの冗長性を回復する。
【０００４】
また、論理ボリューム内でデータを二重化し、物理モジュールの役割を固定せずに論理ボリュームの割当てを行う技術が開示されている（たとえば、下記特許文献３を参照。）。この技術では、統合管理モジュールは、クライアントからの要求に基づき、指定された範囲のストレージ装置を持つモジュールをスライスデータの割当対象として選択し、プライマリ論理ボリュームを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割当て、セカンダリ論理ボリュームを同じデータ領域を担当するプライマリ論理ボリュームを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０８−３０７５２４号公報
【特許文献２】特開平１０−２６０７８９号公報
【特許文献３】特開２００５−００４６８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来方式ではノード間でデータを２重化することでデータロストのリスクを軽減しているが、ノードが故障したときには必ずリカバリ動作が必要となる。ノード毎に保持するデータが増大するに伴い、リカバリの所要時間が増加傾向にあり、リカバリ中に他のノードが故障すると２重障害となることから、データロストが発生する可能性があるという問題がある。
【０００７】
この発明は、上述した従来技術による問題点を解消するため、必要な場合にデータを可能な限り３重化状態に近付けることでディスクの空き領域を有効活用することができるデータ管理プログラム、データ管理装置、およびデータ管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、このデータ管理プログラム、データ管理装置、およびデータ管理方法は、データごとにマスタデータおよびその複製データが分散されているストレージ群にアクセス可能とし、前記各ストレージに関する故障のリスク度を取得し、取得されたリスク度に基づいて、前記ストレージ群の中から複製元のストレージを決定し、決定された複製元のストレージに記憶されているマスタデータまたは複製データを、前記複製元のストレージとは異なる複製先のストレージに複製予備データとして複製させることを要件とする。
【発明の効果】
【０００９】
このデータ管理プログラム、データ管理装置、およびデータ管理方法によれば、必要な場合にデータを可能な限り３重化状態に近付けることでディスクの空き領域を有効活用することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】ストレージシステムのシステム構成を示す説明図である。
【図２】実施の形態にかかるノードのハードウェア構成を示すブロック図である。
【図３】警告メッセージの発生時におけるストレージシステムのシステム構成を示す説明図である。
【図４】スコアテーブルを示す説明図である。
【図５】警告ログテーブルを示す説明図である。
【図６】リスク点ランキングテーブルを示す説明図である。
【図７】管理ノードによるリスク点ランキング処理の処理手順を示すフローチャートである。
【図８】本実施の形態にかかるストレージシステムにおけるデータの分散記憶状態を示す説明図である。
【図９】本実施の形態にかかるストレージシステムにおけるデータの３重化を示す説明図である。
【図１０】上書き前のストレージシステムにおけるデータの分散記憶状態を示す説明図である。
【図１１】上書き後のストレージシステムにおけるデータの分散記憶状態を示す説明図である。
【図１２】本実施の形態にかかるストレージシステムにおけるデータの３重化を示す説明図である。
【図１３】本実施の形態にかかるストレージシステムにおけるデータの昇格を示す説明図である。
【図１４】本実施の形態にかかるストレージシステムにおけるデータの３重化を示す説明図である。
【図１５】本実施の形態にかかるストレージシステムにおけるデータの昇格の一例を示す説明図である。
【図１６】管理テーブルを示す説明図である。
【図１７】更新後の管理テーブルを示す説明図である。
【図１８】スライステーブルを示す説明図である。
【図１９】更新後のスライステーブルを示す説明図である。
【図２０】本実施の形態にかかるデータの３重化処理のシーケンス図である。
【図２１】複製予備データの削除処理のシーケンス図である。
【図２２】データの昇格処理を示すシーケンス図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、このデータ管理プログラム、データ管理装置、およびデータ管理方法の好適な実施の形態を詳細に説明する。
【００１２】
（ストレージシステムのシステム構成）
図１は、ストレージシステム１００のシステム構成を示す説明図である。ストレージシステム１００は、管理ノード１０１と複数（図１では例として６台）のディスクノード１０２−１〜１０２−６とがインターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのネットワーク１１０により相互に交信可能に接続されている。
【００１３】
管理ノード１０１は、ディスクノード１０２−１〜１０２−６を管理するコンピュータである。ディスクノード１０２−１〜１０２−６は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）装置１０３−１〜１０３−６を備えており、ＲＡＩＤ装置１０３−１〜１０３−６に対しデータのリード／ライトの制御をおこなう。ＲＡＩＤ装置１０３−１〜１０３−６は、複数のハードディスクをまとめて１台のハードディスクとして管理する装置である。各ＲＡＩＤ装置１０３−１〜１０３−６は、スライス単位でデータを保存する。
【００１４】
本明細書では、各ディスクノード１０２−１〜１０２−６とそのディスクノード１０２−１〜１０２−６が制御するＲＡＩＤ装置１０３−１〜１０３−６の組み合わせをストレージと称す。また、各ディスクノード１０２−１〜１０２−６には、そのディスクノード１０２−１〜１０２−６を一意に識別するＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）が用意されている。本明細書では、ディスクノードＩＤと称す。
【００１５】
図１に示したディスクノード１０２−１〜１０２−６における符号の枝番と対応付けるため、上述したディスクノード１０２−１のディスクノードＩＤは「００１」、ディスクノード１０２−２のディスクノードＩＤは「００２」、ディスクノード１０２−３のディスクノードＩＤは「００３」、ディスクノード１０２−４のディスクノードＩＤは「００４」、ディスクノード１０２−５のディスクノードＩＤは「００５」、ディスクノード１０２−６のディスクノードＩＤは「００６」とする。
【００１６】
（ノードのハードウェア構成）
図２は、実施の形態にかかるノード（管理ノード１０１、ディスクノード１０２−１〜１０２−６）のハードウェア構成を示すブロック図である。図２において、ノードは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、磁気ディスクドライブ２０４と、磁気ディスク２０５と、光ディスクドライブ２０６と、光ディスク２０７と、ディスプレイ２０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２０９と、キーボード２１０と、マウス２１１と、スキャナ２１２と、プリンタ２１３と、を備えている。また、各構成部はバス２００によってそれぞれ接続されている。
【００１７】
ここで、ＣＰＵ２０１は、ノードの全体の制御を司る。ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。磁気ディスクドライブ２０４は、ＣＰＵ２０１の制御にしたがって磁気ディスク２０５に対するデータのリード／ライトを制御する。磁気ディスク２０５は、磁気ディスクドライブ２０４の制御で書き込まれたデータを記憶する。
【００１８】
光ディスクドライブ２０６は、ＣＰＵ２０１の制御にしたがって光ディスク２０７に対するデータのリード／ライトを制御する。光ディスク２０７は、光ディスクドライブ２０６の制御で書き込まれたデータを記憶したり、光ディスク２０７に記憶されたデータをコンピュータに読み取らせたりする。
【００１９】
ディスプレイ２０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ２０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００２０】
インターフェース（以下、「Ｉ／Ｆ」と略する。）２０９は、通信回線を通じてネットワーク１１０に接続され、このネットワーク１１０を介して他の装置に接続される。そして、Ｉ／Ｆ２０９は、ネットワーク１１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２１】
キーボード２１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス２１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００２２】
スキャナ２１２は、画像を光学的に読み取り、データ管理装置内に画像データを取り込む。なお、スキャナ２１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ２１３は、画像データや文書データを印刷する。プリンタ２１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００２３】
（警告メッセージ発生時の状態）
図３は、警告メッセージの発生時におけるストレージシステム１００のシステム構成を示す説明図である。（１）あるディスクノード１０２−１〜１０２−６、ここでは、ディスクノード１０２−６（ＲＡＩＤ装置１０３−６でもよい）においてエラーにより警告メッセージが発生する。
【００２４】
（２）すると、警告メッセージは、ディスクノード１０２−６からネットワーク１１０を経由して管理ノード１０１に送信される。（３）管理ノード１０１では、警告メッセージの内容を解析して、ディスクノード１０２−６のリスク点を計算する。リスク点とは、故障のしやすさを示す指標値であり、ここでは、値が高いほど故障がしやすいことを示す。リスク点の計算の詳細については後述する。
【００２５】
図４は、スコアテーブルを示す説明図である。スコアテーブル４００は、管理ノード１０１の記憶装置内に記憶される。スコアテーブル４００は、警告ごとに、警告対象、警告内容およびスコアをレコード化したテーブルである。警告対象とは、警告メッセージの元となるエラーが生じた装置であり、ここでは、ディスクノードまたはＲＡＩＤ装置となる。エラー名とは、警告メッセージに記述されており、警告対象で発生したエラーの内容を特定する名称である。スコアとは、エラーの重要度を示す数値であり、数値が高いほど重大なエラーとなる。
【００２６】
図５は、警告ログテーブルを示す説明図である。警告ログテーブル５００は、管理ノード１０１の記憶装置内に記憶されている。警告ログテーブル５００は、警告メッセージごとに、ディスクノードＩＤ、（発生）日時、エラー名およびスコアをレコード化したテーブルである。「ディスクノードＩＤ」には、警告メッセージに記述されている警告メッセージの送信元のディスクノードのディスクノードＩＤが書き込まれる。「日時」には、警告メッセージに記述されているエラーの発生日時（警告メッセージの受信日時でもよい）が書き込まれる。「エラー名」には、警告メッセージに記述されているエラー名が書き込まれる。
【００２７】
図６は、リスク点ランキングテーブル６００を示す説明図である。リスク点ランキングテーブル６００は、管理ノード１０１の記憶装置内に記憶されている。順位、ディスクノードＩＤおよびリスク点をレコード化したテーブルである。「順位」はリスク点の高さのランキングを示している。「ディスクノードＩＤ」は、そのレコードの順位にランキングされているディスクノードを特定している。「リスク点」はそのレコードのリスク点を示している。
【００２８】
ここで、リスク点の計算方法について説明する。リスク点は、図２に示した管理ノード１０１のＣＰＵが警告ログテーブル５００を参照することで、リスク点の計算対象となるディスクノードＩＤと同一レコードのエラー名を読み出す。そして、スコアテーブル４００を参照することで、読み出されたエラー名と同一レコードの警告対象およびスコアを読み出す。各ディスクノードのリスク点は、下記式（１）により計算される。
【００２９】
リスク点＝（ディスクノードのスコアの合計）×（ＲＡＩＤ装置のスコアの合計）
・・・（１）
【００３０】
図５の警告ログテーブル５００を例に挙げると、ディスクノードＩＤ：００６のディスクノード１０２−６のリスク点は、（１＋２）×（１＋２）＝９となる。
【００３１】
（リスク点ランキング処理）
図７は、管理ノード１０１によるリスク点ランキング処理の処理手順を示すフローチャートである。まず、ディスクノード群１０２−１〜１０２−６から警告メッセージが受信されたか否かを判断する（ステップＳ７０１）。受信された場合（ステップＳ７０１：Ｙｅｓ）、警告メッセージを解析する（ステップＳ７０２）。具体的には、警告メッセージに記述されているディスクノードＩＤ、日時、およびエラー名を抽出する。そして、抽出されたディスクノードＩＤ、日時およびエラー名を警告ログテーブル５００に新規レコードとして追加する（ステップＳ７０３）。
【００３２】
つぎに、全ディスクノード１０２−１〜１０２−６についてリスク点の再計算を実行する（ステップＳ７０４）。この再計算では、ステップＳ７０３で追加されたレコードも考慮されることとなる。このあと、リスク点ランキングテーブル６００を更新して（ステップＳ７０５）、ステップＳ７０１に戻る。一方、ステップＳ７０１において、警告メッセージが受信されていない場合（ステップＳ７０１：Ｎｏ）、指定時刻であるか否かを判断する（ステップＳ７０６）。指定時刻でない場合（ステップＳ７０６：Ｎｏ）、ステップＳ７０１に戻る。
【００３３】
一方、指定時刻になった場合（ステップＳ７０６：Ｙｅｓ）、古いレコードを警告ログテーブル５００から削除して（ステップＳ７０７）、ステップＳ７０１に戻る。なお、削除対象となる期間は、管理ノード１０１のオペレータが自由に設定することができる。このように、リスク点ランキング処理は、常時実行されることとなる。
【００３４】
（データの３重化）
つぎに、本実施の形態にかかるストレージシステム１００におけるデータの３重化について説明する。各ストレージのＲＡＩＤ装置には、すでに、データごとにマスタデータおよびその複製データが分散して記憶されている。本実施の形態では、通常は、２重化、すなわち、一データごとに、マスタデータおよび複製データをＲＡＩＤ装置群のどこかに分散記憶させておくが、故障が発生しそうな場合や発生したときに３重化、すなわち、マスタデータおよび複製データのほか、複製予備データというマスタデータまたは複製データの予備となる複製データを、ＲＡＩＤ装置群のどこかに分散記憶させる。
【００３５】
図８は、本実施の形態にかかるストレージシステム１００におけるデータの分散記憶状態を示す説明図である。図８中、“Ｘ−♯”（Ｘはアルファベット、♯は枝番号）で表記した図形は、ＲＡＩＤ装置に記憶されているスライス単位のデータを示している。たとえば、ＲＡＩＤ装置１０３−１には、データＡ−１，Ｂ−２が記憶されている。なお、データはスライス単位となっているため、“Ｘ”はスライス名にもなる。
【００３６】
また、データＸ−♯の枝番号♯は、データの複製種別（マスタデータか複製データか複製予備データか）を示している。具体的には、♯＝１がマスタデータ、♯＝２が複製データ、♯＝３が複製予備データを示している。たとえば、スライスＡにおいて、データＡ−１がマスタデータであり、データＡ−２が複製データであり、データＡ−３が複製予備データである。
【００３７】
図９は、本実施の形態にかかるストレージシステム１００におけるデータの３重化を示す説明図である。図９では、図８に示した分散記憶状態からの３重化を示している。たとえば、ディスクノード１０２−６のリスク点が最も高い場合、ＲＡＩＤ装置１０３−６が最も故障する確率が高いこととなる。したがって、故障する前に、ストレージシステム１００全体のアクセス負荷が低い時間帯において、ＲＡＩＤ装置１０３−６に記憶されているマスタデータＦ−１と複製データＡ−２とを他のディスクノードのＲＡＩＤ装置の空き領域にコピーする。
【００３８】
図９では、ＲＡＩＤ装置１０３−１に、マスタデータＦ−１のコピーとなる複製予備データＦ−３を格納する。同様に、ＲＡＩＤ装置１０３−５に、複製データＡ−２のコピーとなる複製予備データＡ−３を格納する。このように、リスク点が高いストレージ内のデータについてストレージ群内の空き領域に第３のデータとなる複製予備データを保存しておくことで、異なるストレージが連続して故障してもデータ消失を防止することができる。
【００３９】
なお、複製予備データの複製先のＲＡＩＤ装置は、各ＲＡＩＤ装置１０３−１〜１０３−６の空き領域（複製元のデータが保存可能か）、複製先のディスクノードのリスク点（リスク点が低いほうが好ましい）、同一データの分散度（マスタデータ、複製データ、複製予備データは、可能な限り異なるＲＡＩＤ装置に分散して記憶されているのが好ましい）により決定されることとなる。
【００４０】
（データ上書き）
ストレージ群全体の空き領域が少なくなると、リスク点の低いノードの複製予備データから順に、他のデータに上書きされるようにする。これにより、リスク点の高いディスクノードの複製予備データについては、可能な限り保存されることとなる。なお、リカバリ時のデータ冗長化復旧用の領域として、常にディスクノード（厳密にはＲＡＩＤ装置）１台分の空き領域は保持しておく。
【００４１】
図１０は、上書き前のストレージシステム１００におけるデータの分散記憶状態を示す説明図である。図１０において、ディスクノード１０２−１を最もリスク点が低いディスクノードとする。ＲＡＩＤ装置１０３−１には、マスタデータＦ−１の複製予備データＦ−３が記憶されており、他のデータへの上書き対象となる。
【００４２】
図１１は、上書き後のストレージシステム１００におけるデータの分散記憶状態を示す説明図である。図１１において、ＲＡＩＤ装置１０３−３に記憶されているマスタデータＨ―１とＲＡＩＤ装置１０３−４に記憶されているマスタデータＧ−１が、ＲＡＩＤ装置１０３−１の複製予備データＦ−１の記憶領域に書き込まれる。これにより、複製予備データＦ−３がマスタデータＨ−１，Ｇ−１の複製データＨ−２，Ｇ−２に上書きされることとなる。
【００４３】
（データの昇格）
つぎに、データの昇格について説明する。データの昇格とは、あるデータが上位のデータに格上げされる処理であり、たとえば、あるスライスＸにおいて、その複製予備データＸ−３自体が複製データＸ−２またはマスタデータＸ−１になること、または、複製データＸ−２自体がマスタデータＸ−１になることをいう。データの昇格は、３重化されているデータのうちいずれかのデータが記憶されているＲＡＩＤ装置または当該ＲＡＩＤ装置を制御するディスクノードが故障によりダウンした場合に実行される。
【００４４】
図１２は、本実施の形態にかかるストレージシステム１００におけるデータの３重化を示す説明図である。図１２では、データＦが、マスタデータＦ−１，複製データＦ−２，複製予備データＦ−３として３重化されている。同様に、データＡが、マスタデータＡ−１，複製データＡ−２，複製予備データＡ−３として３重化されている。また、本例では、ディスクノード１０２−６のＲＡＩＤ装置１０３−６にマスタデータＦ−１と複製データＡ−２が記憶されているものとする。
【００４５】
図１３は、本実施の形態にかかるストレージシステム１００におけるデータの昇格を示す説明図である。図１３は、図１２の状態からのデータの昇格を示している。ここでは、ディスクノード１０２−６が故障によりダウンしたものとする。（１）まず、ディスクノード１０２−６が故障によりダウンすると、（２）ダウンしたディスクノード１０２−６のＲＡＩＤ装置１０３−６に記憶されているマスタデータＦ−１（図１２を参照）に対応する複製予備データＦ−３を記憶するＲＡＩＤ装置１０３−１を特定する。このＲＡＩＤ装置１０３−１に記憶されている複製予備データＦ−３を複製データＦ−２に昇格させる。
【００４６】
同様に、ダウンしたディスクノード１０２−６のＲＡＩＤ装置１０３−６に記憶されているマスタデータＦ−１（図１２を参照）に対応する複製データＦ−２を記憶するＲＡＩＤ装置１０３−５を特定する。このＲＡＩＤ装置１０３−５に記憶されている複製予備データＦ−２をマスタデータＦ−１に昇格させる。
【００４７】
また、ダウンしたディスクノード１０２−６のＲＡＩＤ装置１０３−６に記憶されている複製データＡ−２（図１２を参照）に対応する複製予備データＡ−３を記憶するＲＡＩＤ装置１０３−５を特定する。このＲＡＩＤ装置１０３−５に記憶されている複製予備データＡ−３を複製データＡ−２に昇格させる。
【００４８】
このように、ＲＡＩＤ装置群１０３−１〜１０３−６に十分な空き領域があり、故障したディスクノードが保持していたデータのスライスがすべて３重化されていた場合には、故障直後もデータの冗長化が喪失していないため、即座にリカバリ完了となる。
【００４９】
図１４は、本実施の形態にかかるストレージシステム１００におけるデータの３重化を示す説明図である。図１４では、データＡのみが、マスタデータＡ−１，複製データＡ−２，複製予備データＡ−３として３重化されている。また、本例では、ディスクノード１０２−６のＲＡＩＤ装置１０３−６にマスタデータＦ−１と複製データＡ−２が記憶されているものとする。
【００５０】
図１５は、本実施の形態にかかるストレージシステム１００におけるデータの昇格の一例を示す説明図である。図１５は、図１４の状態からのデータの昇格を示している。ここでは、ディスクノード１０２−６が故障によりダウンしたものとする。（１）まず、ディスクノード１０２−６が故障によりダウンすると、（２）ダウンしたディスクノード１０２−６のＲＡＩＤ装置１０３−６に記憶されているマスタデータＦ−１（図１４を参照）に対応する複製データＦ−２を記憶するＲＡＩＤ装置１０３−５を特定する。このＲＡＩＤ装置１０３−５に記憶されている複製データＦ−２をマスタデータＦ−１に昇格させる。
【００５１】
また、データＦは、マスタデータＦ−１のみとなるため、ＲＡＩＤ装置１０３−１〜１０３−５の空き領域（ここでは、ＲＡＩＤ装置１０３−２）に複製データＦ−２としてコピーする。
【００５２】
また、ダウンしたディスクノード１０２−６のＲＡＩＤ装置１０３−６に記憶されている複製データＡ−２（図１４を参照）に対応する複製予備データＡ−３を記憶するＲＡＩＤ装置１０３−５を特定する。このＲＡＩＤ装置１０３−５に記憶されている複製予備データＡ−３を複製データＡ−２に昇格させる。
【００５３】
このように、ディスクに十分な空き領域がなく、故障したノードが保持していたデータのスライスが一部のみ３重化されていた場合には、冗長化復旧作業を行う必要があるスライスのみリカバリする。そのため、従来よりも短時間でリストア完了することができることとなる。
【００５４】
（管理テーブルおよびその状態変化）
つぎに、管理テーブルおよびその状態変化について説明する。図１６は、管理テーブルを示す説明図である。管理テーブル１６００は、管理ノード１０１に記憶されている。管理テーブル１６００は、ディスクノード群を管理するテーブルであり、ディスクノードＩＤ、スライス名、データ種別、スライスのペアを保持するディスクノードＩＤ、および複製予備データを保持するディスクノードＩＤをフィールド項目とする。また、ここでは、例として、各フィールド項目の値は、図１４の構成に対応しているものとする。
【００５５】
なお、データ種別は、データの枝番号♯に相当する。「スライスのペアを保持するディスクノードＩＤ」とは、同一データであって異なる種別のデータを保持するディスクノードのディスクノードＩＤである。たとえば、１行目のレコードでは、ディスクノードＩＤ：００１であるディスクノード１０２−１のＲＡＩＤ装置１０３−１にマスタデータＡ−１が記憶されていることを示している。
【００５６】
また、そのマスタデータＡ−１のペアとなる複製データＡ−２を保持するＲＡＩＤ装置は、ディスクノードＩＤ：００６のＲＡＩＤ装置１０３−６であり、複製予備データＡ−３を保持するＲＡＩＤ装置は、ディスクノードＩＤ：００５のＲＡＩＤ装置１０３−５であることを示している。また、管理テーブル１６００において存在しないディスクノードＩＤには、「０００」が設定される。
【００５７】
図１７は、更新後の管理テーブル１６００を示す説明図である。図１７に示した更新後の管理テーブル１６００は、図１６に示した状態からの更新、すなわち、図１４に示した分散記憶状態から図１５に示した３重化状態への更新を示している。具体的には、図１４から図１５への３重化において、レコードＲ１の網掛け箇所が変更された箇所であり、レコードＲ２が複製により追加されたレコードであり、レコードＲ３，Ｒ４の網掛け箇所が昇格により変更された箇所であり、二十線のレコードＲ５，Ｒ６は、故障により削除されたレコードを示している。
【００５８】
図１８は、スライステーブルを示す説明図である。スライステーブルとは、各ディスクノードの記憶装置に記憶されているテーブルであり、そのディスクノードが制御するＲＡＩＤ装置に記憶されているデータの内容を示している。具体的には、スライス名：Ｘとデータ種別（♯＝１〜３の枝番号）とスライスのアドレス範囲を示すアドレス情報をスライスごとにレコード化して記憶している。図１８に示した（Ａ）〜（Ｆ）のスライステーブルは、図１４に示した構成に対応しているものとする。
【００５９】
図１９は、更新後のスライステーブルを示す説明図である。図１９に示した更新後の管理テーブル１６００は、図１８に示した状態からの更新、すなわち、図１４に示した分散記憶状態から図１５に示した３重化状態への更新を示している。
【００６０】
図１６〜図１９に示したように、管理テーブル１６００やスライステーブルでは、データの複製があった場合はレコードが追加・更新され、データの昇格があった場合はレコードのデータ種別が更新され、故障が検出された場合には、故障したディスクノードのレコードが削除される。
【００６１】
（データ管理処理のシーケンス）
図２０は、本実施の形態にかかるデータの３重化処理のシーケンス図である。まず、管理ノード１０１が、リスク点ランキングテーブル６００を参照して、指定順位以上のディスクノード（以下、高ランクノード）を特定する（ステップＳ２００１）。ここで、指定順位とは、オペレータが自由に設定した順位である。つぎに、管理ノード１０１は、高ランクノードに対し３重化指示をネットワークを介して送信する（ステップＳ２００２）。高ランクノードは、３重化指示を受信すると、管理ノード１０１に対し、複製先ノード候補問合せと３重化対象となるデータの容量を返信する（ステップＳ２００３）。
【００６２】
管理ノード１０１は、複製先ノード候補問合せを受信すると、高ランクノードを除く残余のディスクノードに対し、空き容量問合せを送信する（ステップＳ２００４）。空き容量問合せを受信したディスクノードは、管理ノード１０１に対し空き容量を返信する（ステップＳ２００５）。管理ノード１０１は、残余の各ディスクノードから送信されてきた空き容量を比較して、複製先ノードを決定する（ステップＳ２００６）。
【００６３】
複製先ノードとしては、３重化対象のデータの容量分の空き容量があることが前提となる。空き容量を満たす複製先ノード候補が複数ある場合には、３重化対象となるデータと同一データが記憶されていないノードを優先する。これにより、ストレージ群内で分散配置することができる。また、リスク点が高いノードを優先することとしてもよい。いずれを優先するかは初期設定により決めておくこととしてもよい。
【００６４】
このようにして、複製先ノードが決定されると（ステップＳ２００６）、管理ノード１０１は、高ランクノードに対し、複製先ノードのディスクノードＩＤを含む複製指示を送信する（ステップＳ２００７）。高ランクノードは、複製指示を受信すると、複製先ノードに対し、３重化対象となるデータの複製データを送信する（ステップＳ２００８）。複製先ノードは、送信されてきた複製データを受信して空き領域に書き込む（ステップＳ２００９）。すなわち、３重化対象となる複製データを複製予備データとして記憶することとなる。
【００６５】
そして、複製先ノードは、書込みの完了通知を管理ノード１０１に送信し（ステップＳ２０１０）、スライステーブルを更新する（ステップＳ２０１１）。具体的には、複製予備データについて新規レコードを追加する。また、管理ノード１０１は、複製先ノードから完了通知を受信すると、管理テーブル１６００を更新する（ステップＳ２０１２）。具体的には、複製予備データについて新規レコードを追加し、スライスのペアとなるレコードを更新する。このようなシーケンスにより、データの３重化を自動実行することができる。
【００６６】
図２１は、複製予備データの削除処理のシーケンス図である。このシーケンスは、削除した空き領域に他のデータを書き込むための処理であり、上述した上書き処理に相当するシーケンスである。まず、管理ノード１０１が、ストレージ群（ＲＡＩＤ装置群）全体の空き容量を取得する（ステップＳ２１０１）。空き容量の取得処理については、管理ノード１０１が各ディスクノードに問合せをしてその応答により各ディスクノードから各ＲＡＩＤ装置の空き容量を受信する。
【００６７】
つぎに、取得された空き容量が所定空き容量以下であるか否かを判断する（ステップＳ２１０２）。所定空き容量は、ＲＡＩＤ装置１台分のディスク容量などオペレータにより設定することができる。ＲＡＩＤ装置１台分のディスク容量以上空き容量があると、ストレージが１つ故障してもその故障したストレージに記憶されているデータを空き容量にすべてリストアすることができる。所定空き容量以下でない場合（ステップＳ２１０２：Ｎｏ）、余裕があるため、管理ノード１０１の処理を終了する。
【００６８】
一方、所定空き容量以下である場合（ステップＳ２１０２：Ｙｅｓ）、リスク点ランキングテーブル６００を参照して、指定順位以下のディスクノード（以下、低ランクノード）を特定する（ステップＳ２１０３）。そして、特定された低ランクノードが制御するＲＡＩＤ装置において、複製予備データを保持するスライスを削除対象スライスに決定する（ステップＳ２１０４）。このあと、管理ノード１０１は、低ランクノードに対し複製予備データの削除指示を送信する（ステップＳ２１０５）。
【００６９】
低ランクノードは、削除指示を受信すると、削除対象スライスの複製予備データを削除する（ステップＳ２１０６）。そして、低ランクノードは、完了通知を管理ノード１０１に送信して（ステップＳ２１０７）、スライステーブルを更新する（ステップＳ２１０８）。また、管理ノード１０１は、完了通知を受信すると、管理テーブル１６００を更新する（ステップＳ２１０９）。このあと、管理ノード１０１は、他のディスクノードに対し、低ランクノードにデータ書込み指示を送信することで、データ書込み指示を受けたディスクノードは、低ランクノードの空き領域にデータを複製することができる。
【００７０】
図２２は、データの昇格処理を示すシーケンス図である。まず、管理ノード１０１は、全ディスクノードに対し生存確認要求を送信し（ステップＳ２２０１）、各ディスクノードは、生存確認要求を受信すると、管理ノード１０１に対し生存確認応答を送信する（ステップＳ２２０２）。管理ノード１０１は、生存確認応答がないディスクノードを故障ノードとして故障検出し、故障ノードのＲＡＩＤ装置に記憶されているデータを喪失データとして特定する（ステップＳ２２０３）。
【００７１】
そして、管理テーブル１６００を参照して、喪失データと同種のデータを昇格対象データに特定する（ステップＳ２２０４）。具体的には、喪失データについて、故障していない他のＲＡＩＤ装置に喪失データの複製予備データがある場合には、その複製予備データが昇格対象データとなり、複製予備データはないが複製データがある場合には、複製予備データが昇格対象データとなる。すなわち、枝番号♯が最大となるデータが昇格対象データとなる、図１５の例では、ＲＡＩＤ装置１０３−５に記憶されている複製データＦ−２と複製予備データＡ−３が昇格対象データとなる。
【００７２】
また、管理ノード１０１は、昇格によりマスタデータのみとなるデータがある場合、故障ノード以外の他のノードの空き容量を参照して、空き容量に余裕のある複製先ノードを特定する（ステップＳ２２０５）。ここでも、複製先ノード候補が複数ある場合には、上述したように、リスク点が高いディスクノードを優先してもよい。
【００７３】
このあと、管理ノード１０１は、昇格対象データがあるディスクノードに昇格指示を送信する（ステップＳ２２０６）。昇格指示を受信したディスクノードは、スライステーブルを更新することで、昇格対象データを昇格させる（ステップＳ２２０７）。具体的には、スライステーブルのデータ種別の番号を設定変更する。たとえば、昇格対象データが複製予備データである場合は、データ種別の番号を「３」→「２」に変更し、複製データである場合は、データ種別の番号を「２」→「１」に変更する。
【００７４】
そして、昇格処理をしたディスクノードは、昇格処理の完了通知を管理ノード１０１に送信する（ステップＳ２２０８）。また、管理ノード１０１は、ステップＳ２２０５において、複製先ノードを特定している場合には、昇格処理をしたディスクノードに対し、昇格したデータの複製指示を送信する（ステップＳ２２０９）。
【００７５】
昇格処理をしたディスクノードは、複製指示を受信すると、複製先ノードに対し、昇格処理されたデータの複製データを複製先ノードに送信する（ステップＳ２２１０）。複製先ノードは、複製データを受信すると、複製データを書き込む（ステップＳ２２１１）。これにより、昇格されたマスタデータを昇格時に複製することができる。そして、複製先ノードはスライステーブルを更新し（ステップＳ２２１２）、管理ノード１０１に完了通知を送信する（ステップＳ２２１３）。このあと、管理テーブル１６００は、昇格処理（ステップＳ２２０７）および複製処理（ステップＳ２２１１）について管理テーブル１６００を更新する（ステップＳ２２１４）。
【００７６】
このように、管理ノード１０１やディスクノードでは、図２０〜図２２に示した処理（矢印とブロックで表現した機能）を、図２に記憶されたプログラムをＣＰＵに実行させることにより、またはＩ／Ｆ２０９により実現している。
【００７７】
以上のことから、上述した実施の形態では、ディスクノードの故障リスクをリスク点として記録し、リスク点の高いディスクノードが保持しているデータから優先的に複製予備データを作成する。これにより、リカバリ発生時の冗長化復旧時間の短縮が見込めることとなる。また、複製予備データは、ストレージ群全体の空き領域がなくなると他のデータに上書きする。これにより、リスク点の高いディスクノードの複製予備データについては、可能な限り保持することができる。
【００７８】
したがって、将来的に冗長化消失の可能性の高いデータを優先的に３重化しておくことによって、リカバリ発生時の所要時間を短縮させることができる。これにより、二重障害によるデータロストのリスクを低下させることができる。また、空き領域を利用してデータを３重化させる方式のため従来方式と同等の設備投資で実現することができる。このように、ストレージの新陳代謝機能を活かし、データを可能な限り３重化状態に近付けることができる。
【００７９】
なお、本実施の形態で説明したデータ管理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することとしてもよい。
【符号の説明】
【００８０】
１００  ストレージシステム
１０１  管理ノード
１０２−１〜１０２−６  ディスクノード
１０３−１〜１０３−６  ＲＡＩＤ装置
１１０  ネットワーク
４００  スコアテーブル
５００  警告ログテーブル
６００  リスク点ランキングテーブル
１６００  管理テーブル
【図１】
2010238124.tif 000003
【図２】
2010238124.tif 000004
【図３】
2010238124.tif 000005
【図４】
2010238124.tif 000006
【図５】
2010238124.tif 000007
【図６】
2010238124.tif 000008
【図７】
2010238124.tif 000009
【図８】
2010238124.tif 000010
【図９】
2010238124.tif 000011
【図１０】
2010238124.tif 000012
【図１１】
2010238124.tif 000013
【図１２】
2010238124.tif 000014
【図１３】
2010238124.tif 000015
【図１４】
2010238124.tif 000016
【図１５】
2010238124.tif 000017
【図１６】
2010238124.tif 000018
【図１７】
2010238124.tif 000019
【図１８】
2010238124.tif 000020
【図１９】
2010238124.tif 000021
【図２０】
2010238124.tif 000022
【図２１】
2010238124.tif 000023
【図２２】
2010238124.tif 000024