(57)【要約】【課題】ノード障害の際にシステムの容量が枯渇してしまうこと。【解決手段】本発明のストレージシステムは、記憶対象データから生成された複数のフラグメントデータを複数の記憶手段にそれぞれ分散して記憶する分散記憶処理手段と、記憶手段に障害が発生することにより失われたフラグメントデータを他のフラグメントデータに基づいて復元して他の記憶手段に記憶するデータ復元手段と、を備える。そして、上記データ復元手段は、失われたフラグメントデータのうち、少なくとも一部を復元した場合における復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない記憶手段の容量とに基づいて、復元するフラグメントデータの数を決定する復元データ数決定手段を有する。【選択図】図１２
2015148919.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶手段に対してデータを記憶する際に、記憶対象データを複数に分割した分割データ及び当該記憶対象データを復元するための冗長データからなる複数のフラグメントデータを生成して、前記複数の記憶手段にそれぞれ分散して記憶する分散記憶処理手段と、
前記記憶手段のいずれかに障害が発生した場合に、当該障害が発生することにより失われた前記フラグメントデータを、当該障害が発生した前記記憶手段とは異なる他の記憶手段に記憶されている他のフラグメントデータに基づいて復元して、当該他の記憶手段に記憶するデータ復元手段と、を備え、
前記データ復元手段は、前記失われたフラグメントデータのうち、少なくとも一部を復元した場合における復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない前記記憶手段の容量とに基づいて、復元する前記フラグメントデータの数を決定する復元データ数決定手段を有する、
ストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記復元データ数決定手段は、前記算出した復元後の全てのデータ容量が、障害が発生していない前記記憶手段の容量に基づく許容容量値以下となるよう、復元する前記フラグメントデータの数を決定する、
ストレージシステム。
【請求項３】
請求項１又は２に記載のストレージシステムであって、
前記分散記憶手段は、１つの記憶対象データから生成された前記複数のフラグメントデータの前記各記憶手段に対する配置状況を表す分散パターンに従って、前記複数のフラグメントデータを前記複数の記憶手段にそれぞれ分散して記憶し、
前記復元データ数決定手段は、前記分散パターンに基づいて、障害が発生することにより失われた前記フラグメントデータの数を確認し、当該失われた前記フラグメントデータのうち復元する当該フラグメントデータの数を変更しながら復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない前記記憶手段の容量とに基づいて、復元する前記フラグメントデータの数を決定する、
ストレージシステム。
【請求項４】
請求項３に記載のストレージシステムであって、
前記分散記憶手段は、前記記憶対象データ毎に、前記複数の記憶手段に対する前記フラグメントデータの配置状況がそれぞれ異なる前記分散パターンに従って、それぞれ前記フラグメントデータをそれぞれ分散して記憶し、
前記復元データ数決定手段は、前記各分散パターンにて分散記憶された全ての前記記憶対象データについて、復元後の前記フラグメントデータの数が同一となるよう、復元する前記フラグメントデータの数を決定する、
ストレージシステム。
【請求項５】
請求項４に記載のストレージシステムであって、
前記復元データ数決定手段は、復元する前記フラグメントデータの数を決定する前に、前記各分散パターンにて分散記憶された前記各記憶対象データについて、失われた前記フラグメントデータの数が異なる場合に、失われた前記フラグメントデータの数が多い前記記憶対象データの前記フラグメントデータを復元することを決定する、
ストレージシステム。
【請求項６】
請求項５に記載のストレージシステムであって、
前記復元データ数決定手段は、復元する前記フラグメントデータの数を決定する前に、前記各分散パターンにて分散記憶された前記各記憶対象データについて、失われた前記フラグメントデータの数が異なる場合に、当該フラグメントデータの数が同一となるよう、失われた前記フラグメントデータの数が多い前記記憶対象データの前記フラグメントデータを復元することを決定する、
ストレージシステム。
【請求項７】
請求項１乃至６のいずれかに記載のストレージシステムであって、
前記分散記憶処理手段は、前記復元データ数決定手段にて決定された復元する前記フラグメントデータの数に基づく復元後の前記記憶対象データについてのフラグメントデータの数を、前記記憶対象データから生成する前記フラグメントデータの数として設定し、当該数のフラグメントデータを前記記憶対象データから生成して、前記複数の記憶手段に分散して記憶する、
ストレージシステム。
【請求項８】
情報処理装置に、
記憶対象データを複数に分割した分割データ及び当該記憶対象データを復元するための冗長データからなる複数のフラグメントデータを生成して、複数の記憶手段にそれぞれ分散して記憶する分散記憶処理手段と、
前記記憶手段のいずれかに障害が発生した場合に、当該障害が発生することにより失われた前記フラグメントデータを、当該障害が発生した前記記憶手段とは異なる他の記憶手段に記憶されている他のフラグメントデータに基づいて復元して、当該他の記憶手段に記憶するデータ復元手段と、を実現させると共に、
前記失われたフラグメントデータのうち、少なくとも一部を復元した場合における復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない前記記憶手段の容量とに基づいて、復元する前記フラグメントデータの数を決定する復元データ数決定手段を有する前記データ復元手段を実現させる、
ためのプログラム。
【請求項９】
複数の記憶手段に対してデータを記憶する際に、記憶対象データを複数に分割した分割データ及び当該記憶対象データを復元するための冗長データからなる複数のフラグメントデータを生成して、前記複数の記憶手段にそれぞれ分散して記憶し、
前記記憶手段のいずれかに障害が発生した場合に、当該障害が発生することにより失われた前記フラグメントデータを、当該障害が発生した前記記憶手段とは異なる他の記憶手段に記憶されている他のフラグメントデータに基づいて復元して、当該他の記憶手段に記憶するデータ復元処理を行い、
前記データ復元処理の際に、前記失われたフラグメントデータのうち、少なくとも一部を復元した場合における復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない前記記憶手段の容量とに基づいて、復元する前記フラグメントデータの数を決定する、
データ処理方法。
【請求項１０】
請求項９に記載のデータ処理方法であって、
データを記憶する際に、１つの記憶対象データから生成された前記複数のフラグメントデータの前記各記憶手段に対する配置状況を表す分散パターンに従って、前記複数のフラグメントデータを前記複数の記憶手段にそれぞれ分散して記憶し、
復元する前記フラグメントデータの数を決定する際に、前記分散パターンに基づいて、障害が発生することにより失われた前記フラグメントデータの数を確認し、当該失われた前記フラグメントデータのうち復元する当該フラグメントデータの数を変更しながら復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない前記記憶手段の容量とに基づいて、復元する前記フラグメントデータの数を決定する、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムにかかり、特に、データを分散して複数の記憶装置に記憶するストレージシステムに関する。
【背景技術】
【０００２】
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。
【０００３】
このような状況に応じて、近年では、特許文献１に示すように、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、データを分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置が特定される。
【０００４】
このように、コンテンツアドレスは、データの内容に応じて固有となるよう生成されるため、重複データであれば、同じ格納位置のデータを参照することで、同一内容のデータを取得することができる。従って、重複データを別々に格納する必要がなく、重複記録を排除し、データ容量の削減を図ることができる。つまり、コンテンツアドレスストレージシステムでは、同一内容のデータが記憶されていない場合だけ、新たなデータが記憶されるという重複排除機能を有している。
【０００５】
また、ストレージシステムでは、所定容量のブロックデータであるチャンクを複数のフラグメントデータに分割すると共に、冗長データとなるフラグメントをさらに付加して、これら複数のフラグメントデータをそれぞれ複数の記憶装置にそれぞれ格納している。そして、後にコンテンツアドレスを指定することにより、当該コンテンツアドレスにて特定される格納位置に格納されているフラグメントデータを読み出し、複数のフラグメントデータから分割前の所定のデータを復元することができる。
【０００６】
このように、ストレージシステムは、冗長データとなるフラグメントデータを付加しているため、付加した冗長データのフラグメント数以下のフラグメントデータが失われた場合でも、元のチャンクを再生成することができる。
【０００７】
また、ストレージシステムでは、複数の記憶装置であるノードを備えている場合には、ノード間で負荷が偏ったり集中したりしないよう、分散配置機能を有している。ここで、各ノードには、それぞれコンポーネントと呼ばれるデータ格納領域を有しており、各コンポーネントにそれぞれフラグメントデータを格納している。そして、コンテンツアドレスストレージシステムでは、コンポーネント単位で負荷分散を行っている。
【０００８】
ここで、図１に、ストレージシステムにおけるコンポーネントの配置例を示す。まず、ストレージシステムは、１つのチャンクから生成された複数のフラグメントデータをそれぞれ格納する複数のコンポーネントを、複数のノードに分散して配置する際の「分散パターン」を複数有している。ここでは、各「分散パターン」は、それぞれ１２個のコンポーネント（符号０１〜１２）を有しており、５つのノードに２個あるいは３個のコンポーネントをそれぞれ配置する５つのパターン（符号Ｐ１〜Ｐ５）となっている。
【０００９】
そして、ストレージシステムは、フラグメントデータを生成する元となるチャンク毎に、当該データ内容に基づくハッシュ値を算出し、そのハッシュ値に応じて「分散パターン」を決定し、その「分散パターン」で各フラグメントデータを各コンポーネントに格納する。
【００１０】
ここで、データが書き込まれてから各ノードに分散格納するまでの例を、図２に示す。まず、ストレージシステムは、重複判定機能によってまだ記憶されていないユニークと判断されたチャンクＤを、９個のフラグメントデータＦ１に分割すると共に、３個の冗長データであるフラグメントデータＦ２を付加して、これらをノード間に分散配置する。このブロックデータについては、そのハッシュ値から図１に示す「分散パターン１」が選択されており、各フラグメントデータを、各ノードの対応するコンポーネントに格納している。
【００１１】
このように、フラグメントデータをノード間に分散格納させることによって、ノード障害が発生した場合でも、一度に失われるフラグメントデータの数を少なくしている。そして、ノード障害により一部のフラグメントデータが失われた場合であっても、冗長データを付加しているため、元のチャンクを再生成することができる。例えば、特許文献１に示すように、障害ノードに格納されていた失われたデータを、他のノードの空き領域に再配置することで、データを復元することができる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１０−１９１５５８
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、上述したストレージシステムでは、障害が発生したノード上のフラグメントデータを復元することによって、システムの容量を圧迫してしまう、という問題が生じる。
【００１４】
一例として、５台のノードから構成されるストレージシステムを考え、各ノードの容量をそれぞれ「１００」（単位は任意）とする。そして、システムの８０％の容量が使用されている場合、各容量は以下のようになる。
・使用済み容量：４００（＝１００×５台×０．８）
・空き容量    ：１００（＝１００×５台−使用済み容量）
【００１５】
そして、ノード障害が発生した場合、障害となったノード上のフラグメントデータが復元され、残りのノードに再配置される。その際、以下のように、空き容量が「０」となる。つまり、障害となったノード上には、「８０」（＝１００×０．８）の容量のデータが配置されていたが、これらが復元されて、残りの４台のノードに「２０」の容量ずつ分散配置されることとなる。
・使用済み容量：４００（復元後。ノード障害前と同等）
・空き容量    ：０（＝１００×５台−使用済み容量）
【００１６】
このように、データを分散配置したストレージシステムにおいて、ノード障害の際にシステムの容量が枯渇してしまう、という問題が生じる。
【００１７】
このため、本発明の目的は、上述した課題である、データを分散配置したストレージシステムにおいて、ノード障害の際にシステムの容量が枯渇してしまう、ということを解決することにある。
【課題を解決するための手段】
【００１８】
本発明の一形態であるストレージシステムは、
複数の記憶手段に対してデータを記憶する際に、記憶対象データを複数に分割した分割データ及び当該記憶対象データを復元するための冗長データからなる複数のフラグメントデータを生成して、前記複数の記憶手段にそれぞれ分散して記憶する分散記憶処理手段と、
前記記憶手段のいずれかに障害が発生した場合に、当該障害が発生することにより失われた前記フラグメントデータを、当該障害が発生した前記記憶手段とは異なる他の記憶手段に記憶されている他のフラグメントデータに基づいて復元して、当該他の記憶手段に記憶するデータ復元手段と、を備え、
前記データ復元手段は、前記失われたフラグメントデータのうち、少なくとも一部を復元した場合における復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない前記記憶手段の容量とに基づいて、復元する前記フラグメントデータの数を決定する復元データ数決定手段を有する、
という構成をとる。
【００１９】
また、本発明の一形態であるプログラムは、
情報処理装置に、
記憶対象データを複数に分割した分割データ及び当該記憶対象データを復元するための冗長データからなる複数のフラグメントデータを生成して、複数の記憶手段にそれぞれ分散して記憶する分散記憶処理手段と、
前記記憶手段のいずれかに障害が発生した場合に、当該障害が発生することにより失われた前記フラグメントデータを、当該障害が発生した前記記憶手段とは異なる他の記憶手段に記憶されている他のフラグメントデータに基づいて復元して、当該他の記憶手段に記憶するデータ復元手段と、を実現させると共に、
前記失われたフラグメントデータのうち、少なくとも一部を復元した場合における復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない前記記憶手段の容量とに基づいて、復元する前記フラグメントデータの数を決定する復元データ数決定手段を有する前記データ復元手段を実現させる、
という構成をとる。
【００２０】
また、本発明の一形態であるデータ処理方法は、
複数の記憶手段に対してデータを記憶する際に、記憶対象データを複数に分割した分割データ及び当該記憶対象データを復元するための冗長データからなる複数のフラグメントデータを生成して、前記複数の記憶手段にそれぞれ分散して記憶し、
前記記憶手段のいずれかに障害が発生した場合に、当該障害が発生することにより失われた前記フラグメントデータを、当該障害が発生した前記記憶手段とは異なる他の記憶手段に記憶されている他のフラグメントデータに基づいて復元して、当該他の記憶手段に記憶するデータ復元処理を行い、
前記データ復元処理の際に、前記失われたフラグメントデータのうち、少なくとも一部を復元した場合における復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない前記記憶手段の容量とに基づいて、復元する前記フラグメントデータの数を決定する、
という構成をとる。
【発明の効果】
【００２１】
本発明は、以上のように構成されることにより、データを分散配置したストレージシステムにおいてノード障害の際にシステムの容量の枯渇を抑制することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明に関連するストレージシステムにおける複数のノードに対するフラグメントデータの分散パターンを示す図である。
【図２】本発明に関連するストレージシステムにおけるデータ書き込み時の様子を示す図である。
【図３】本発明の実施形態１におけるストレージシステムを含む全体システムの構成を示すブロック図である。
【図４】図３に開示したストレージシステムの全体構成を示すブロック図である。
【図５】図４に開示したストレージシステムの構成を示す機能ブロック図である。
【図６】図５に開示したストレージシステムの動作を説明するための説明図である。
【図７】図５に開示したストレージシステムの動作を説明するための説明図である。
【図８】図５に開示したストレージシステムの動作を説明するための説明図である。
【図９】図５に開示したストレージシステムの動作を示すフローチャートである。
【図１０】図５に開示したストレージシステムの動作を示すフローチャートである。
【図１１】図５に開示したストレージシステムの動作を示すフローチャートである。
【図１２】本発明の付記１におけるストレージシステムの構成を示す図である。
【発明を実施するための形態】
【００２３】
＜実施形態１＞
本発明の第１の実施形態を、図３乃至図１１を参照して説明する。図３は、全体システムの構成を示すブロック図である。図４は、ストレージシステムの構成の概略を示すブロック図であり、図５は、ストレージシステムの構成を示す機能ブロック図である。図６乃至図８は、ストレージシステムにおけるデータ書き込み処理及びデータ復元処理の動作を説明するための説明図である。図９乃至図１１は、ストレージシステムの動作を示すフローチャートである。
【００２４】
ここで、本実施形態は、後述する付記に記載のストレージシステム等の具体的な一例を示すものである。そして、以下では、ストレージシステムが、複数台のサーバコンピュータが接続されて構成されている場合を説明する。但し、本発明におけるストレージシステムは、複数台のコンピュータにて構成されることに限定されず、１台のコンピュータで構成されていてもよい。
【００２５】
図３に示すように、本発明におけるストレージシステム１は、ネットワークＮを介してバックアップ処理を制御するバックアップシステム４に接続している。そして、バックアップシステム４は、ネットワークＮを介して接続されたバックアップ対象装置５に格納されているバックアップ対象データ（記憶対象データ）を取得し、ストレージシステム１に対して記憶するよう要求する。これにより、ストレージシステム１は、記憶要求されたバックアップ対象データをバックアップ用に記憶する。
【００２６】
図４に示すように、本実施形態におけるストレージシステム１は、複数のサーバコンピュータが接続された構成を採っている。具体的に、ストレージシステム１は、ストレージシステム１自体における記憶再生動作を制御するサーバコンピュータであるアクセスノード２と、データを格納する記憶装置を備えたサーバコンピュータであるストレージノード３と、を備えている。なお、アクセスノード２の数とストレージノード３の数は、図４に示したものに限定されず、さらに多くの各ノード２，３が接続されて構成されていてもよい。
【００２７】
そして、本実施形態におけるストレージシステム１は、データを分割及び冗長化し、分散して複数の記憶装置に記憶すると共に、記憶するデータの内容に応じて設定される固有のコンテンツアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレスストレージシステムである。このコンテンツアドレスストレージシステムについては、後に詳述する。
【００２８】
なお、以下では、ストレージシステム１がアクセスノード２とストレージノード３とによって構築されていることとして説明するが、必ずしもアクセスノード２とストレージノード３とを備えていることに限定されず、いかなる構成であってもよい。例えば、本発明におけるストージシステムは、１台のコンピュータにて構成されていてもよい。さらには、ストレージシステム１は、コンテンツアドレスストレージシステムであることにも限定されず、データを複数の記憶装置に分散記憶する機能を有しているストレージシステムであればよい。
【００２９】
図５に、本実施形態におけるストレージシステム１の構成を示す。この図に示すように、ストレージシステム１を構成するアクセスノード２は、装備された演算装置にプログラムが組み込まれることで構築された、ファイルシステムサービス２０、重複排除機能部２１、フラグメント分散機能部２２、ノード死活監視機能部２３、データ復元制御機能部２４、を備えている。また、アクセスノード２は、装備された記憶装置に記憶する情報として、ハッシュテーブル２５、コンポーネント容量情報２６、コンポーネント数情報２７、システム容量情報２８、コンポーネント配置情報２９、を持つ。
【００３０】
また、ストレージノード３は、装備された演算装置にプログラムが組み込まれることで構築された、フラグメント格納機能部３１、データ復元機能部３２、ディスク死活監視機能部３３、を備える。また、ストレージノード３は、後述するようにフラグメンドデータを記憶する記憶装置として、物理ディスク３０を持つ。なお、図５に示す全てのストレージノード３も、同じ構成を有している。
【００３１】
ここで、上述したように、本実施形態におけるストレージシステム１は、コンテンツアドレスストレージシステムである。このため、ストレージシステム１は、コンテンツアドレスを利用してデータをストレージノード３の物理ディスク３０に格納する機能を有しており、以下に説明するように、データを分割及び分散し、かつ、コンテンツアドレスにて格納位置を特定して、データを格納する。
【００３２】
まず、ストレージシステム１によるデータ書き込み処理について、図６乃至図８の説明図、および、図９のフローチャートを参照して説明する。
【００３３】
まず、アクセスノード２に記憶される情報について説明する。ハッシュテーブル２５は、後述するように、既にストレージノード３の物理ディスク３０に記憶されているチャンクＤのハッシュ値を記憶する。コンポーネント容量情報２６は、コンポーネント１つあたりの容量を記憶する。コンポーネント数情報２７は、分散パターン１つあたりのコンポーネントの総数を記憶する。システム容量情報２８は、各ストレージノード３の記憶容量の情報を記憶する。コンポーネント配置情報２９は、複数のストレージノード３に対するコンポーネントの配置情報を記憶する。
【００３４】
書き込み処理は、図７及び図８の矢印Ｙ１に示すように、アクセスノード２のファイルシステムサービス２０が上位装置から書き込み要求されたデータであるファイルＡを受信することで開始される（ステップＳ１）。そして、アクセスノード２の重複排除機能部２１が、図７及び図８の矢印Ｙ２に示すように、ファイルＡを所定容量（例えば、６４ＫＢ）のブロックデータであるチャンクＤ（書き込み対象データ）に分割する（ステップＳ２）。
【００３５】
続いて、分割されたチャンクＤのデータ内容に基づいて、当該データ内容を代表する固有のハッシュ値Ｈを算出する（図８の矢印Ｙ３）（ステップＳ３）。例えば、ハッシュ値Ｈは、予め設定されたハッシュ関数を用いて、チャンクＤのデータ内容から算出する。
【００３６】
続いて、ファイルＡのチャンクＤのハッシュ値Ｈを用いて、当該チャンクＤが既に格納されているか否かを調べる（ステップＳ４）。このとき、既に格納されているチャンクＤは、そのハッシュ値Ｈと格納位置を表すコンテンツアドレスＣＡとが関連付けられて記憶されたＭＦＩ（Ｍａｉｎ  Ｆｒａｇｍｅｎｔ  Ｉｎｄｅｘ）ファイルであるハッシュテーブル２５に登録されている。従って、格納前に算出したチャンクＤのハッシュ値ＨがＭＦＩファイル内に存在している場合には、既に同一内容のチャンクＤが格納されていると判断できる（図８の矢印Ｙ４）。この場合には、格納前のチャンクＤのハッシュ値Ｈと一致したＭＦＩ内のハッシュ値Ｈに関連付けられているコンテンツアドレスＣＡを、当該ＭＦＩファイルから取得する。そして、このコンテンツアドレスＣＡを、書き込み要求されたチャンクＤのコンテンツアドレスＣＡとして返却する。
【００３７】
そして、返却されたコンテンツアドレスＣＡが参照する既に格納されているデータを、書き込み要求されたチャンクＤとして使用する。つまり、書き込み要求されたチャンクＤの格納先として、返却されたコンテンツアドレスＣＡが参照する領域を指定することで、当該書き込み要求されたチャンクＤを記憶したこととする。このように、書き込み要求にかかるチャンクＤが重複していると判断された場合（ステップＳ５：Ｙｅｓ）、実際に書き込みを行うことなく、上位に書き込み完了が通知される。
【００３８】
一方、書き込み要求にかかるチャンクＤが重複しておらず、まだ記憶されていないと判断された場合には（ステップＳ５：Ｎｏ）、以下のようにしてユニークなチャンクＤの書き込みを行う。まず、フラグメント分散機能部２２は、チャンクＤを圧縮して、図８の矢印Ｙ５に示すように、複数の所定の容量のフラグメントデータに分割する（ステップＳ６）。例えば、図７の符号Ｄ１〜Ｄ９に示すように、チャンクＤを９つのフラグメントデータ（分割データＦ１）に分割する。そしてさらに、分割したフラグメントデータのうちいくつかが欠けた場合であっても、元となるチャンクＤを復元可能なよう冗長データを生成し、上記分割したフラグメントデータＦ１に追加する（ステップＳ７）。例えば、図７の符号Ｄ１０〜Ｄ１２に示すように、３つのフラグメントデータ（冗長データＦ２）を追加する。これにより、９つの分割データＦ１と、３つの冗長データＦ２とにより構成される１２個のフラグメントデータからなるデータセットを生成する。
【００３９】
このとき、フラグメント分散機能部２２は、後述する分散パターンあたりのコンポーネントの総数を表すコンポーネント数情報２７を元に、冗長データのフラグメントの数を設定して、複数のフラグメントデータからなるデータセットを生成する。例えば、コンポーネント数情報が「１２」である場合には、上述したように９つの分割データＦ１と、３つの冗長データＦ２とにより構成される１２個のフラグメントデータからなるデータセットを生成する。また、コンポーネント数情報が「１０」である場合には、上述したように９つの分割データＦ１と、１つの冗長データＦ２とにより構成される１０個のフラグメントデータからなるデータセットを生成する。なお、コンポーネント数情報は、初期状態では「１２」に設定されているが、後述するデータ復元機能部２４，３２等によって更新される値である。
【００４０】
続いて、フラグメント分散機能部２２は、ストレージノード３のフラグメント格納機能部３１と協働して、上述したように生成されたデータセットを構成する各フラグメントデータを、複数のストレージノード３の物理ディスク３０に分散して格納する。このとき、フラグメント分散機能部２２は、フラグメントデータの元となるチャンクのハッシュ値を元に、当該チャンクのフラグメントデータの分散パターンを決定する。そして、フラグメント分散機能部２２は、決定された分散パターンに従って、各ストレージノード３の物理ディスク３０にそれぞれコンポーネントと呼ばれるデータ格納領域を配置し、各コンポーネントにそれぞれフラグメントデータを格納する（図８の矢印Ｙ６参照）（ステップＳ８）。
【００４１】
ここで、分散パターンは、１つのチャンクＤから構成される複数のフラグメントデータが分散記憶される各コンポーネントの、複数のストレージノード３に対する配置を表す情報である。そして、分散パターンは、予めいくつかの種類が設定されており、例えば、図６に示すようにコンポーネント配置情報２９に記憶されている。ここでは、各「分散パターン」（Ｐ１〜Ｐ５）は、それぞれ１２個のコンポーネント（符号０１〜１２）を有しており、５つのノードに２個あるいは３個のコンポーネントをそれぞれ配置する５つのパターンとなっている。
【００４２】
図７に示す例では、チャンクＤのハッシュ値から「分散パターン１」（Ｐ１）を決定し、かかる分散パターンで各ストレージノード３に各コンポーネントを配置して、各フラグメントデータを格納している。つまり、この例では、５つのストレージノードのうち、２つのストレージノードにそれぞれ３つのフラグメントデータが格納され、３つのストレージノードにそれぞれ２つのフラグメントデータが格納される。
【００４３】
このとき、フラグメント分散機能部２２は、各コンポーネントに書き込まれたフラグメントデータの容量を元に、当該コンポーネント毎の容量をコンポーネント容量情報２９に記憶して更新を行う（ステップＳ９）。
【００４４】
続いて、フラグメント分散機能部２２は、上述したように格納したフラグメントデータＤ１〜Ｄ１２の格納位置、つまり、当該フラグメントデータＤ１〜Ｄ１２にて復元されるチャンクＤの格納位置を表すコンテンツアドレスＣＡを生成して管理する。具体的には、格納したチャンクＤの内容に基づいて算出したハッシュ値Ｈの一部（ショートハッシュ）（例えば、ハッシュ値Ｈの先頭８Ｂ（バイト））と、論理格納位置を表す情報と、を組み合わせて、コンテンツアドレスＣＡを生成する。そして、このコンテンツアドレスＣＡをファイルシステムサービス２０に返却し（図８の矢印Ｙ７）、バックアップ対象データのファイル名などの識別情報と、コンテンツアドレスＣＡとを関連付けて上述したＭＦＩファイルにて管理する。これにより、記憶したチャンクＤのコンテンツアドレスＣＡが、ハッシュテーブル２５に格納されることとなる。なお、このとき、各チャンクＤの分散パターンも併せて管理される。例えば、各チャンクＤのフラグメントデータを分散記憶したときの分散パターンを、コンポーネント配置情報２９やＭＦＩファイルに記憶して管理する。
【００４５】
そして、ファイルシステムサービス２０は、書き込み要求されたデータの書き込み完了を、上位装置に通知する（ステップＳ１０）。このようにして、書き込み処理が完了する。
【００４６】
次に、ストレージシステム１によるデータ読み出し処理について説明する。上位装置からストレージシステム１のファイルシステムサービス２０に対して、特定のファイルを指定して読み出し要求があると、まず、読み出し要求にかかるファイルに対応するハッシュ値の一部であるショートハッシュと論理位置の情報からなるコンテンツアドレスＣＡを指定する。そして、コンテンツアドレスＣＡがＭＦＩファイルであるハッシュテーブル２５に登録されているか否かを調べる。登録されていなければ、要求されたデータは格納されていないため、エラーを返却する。
【００４７】
一方、読み出し要求にかかるコンテンツアドレスＣＡが登録されている場合には、上記コンテンツアドレスＣＡにて指定される格納位置を特定し、この特定された格納位置に格納されている各フラグメントデータを、読み出し要求されたデータとして読み出す。このとき、各フラグメントが格納されているデータ格納ファイルと、当該データ格納ファイルのうち１つのフラグメントデータの格納位置が分かれば、同一の格納位置から他のフラグメントデータの格納位置を特定することができる。
【００４８】
そして、読み出し要求に応じて読み出した各フラグメントデータから元となるチャンクＤを復元する。さらに、復元したチャンクＤを複数連結し、ファイルＡなどの一群のデータに復元して返却する。
【００４９】
次に、複数のストレージノード３のうち、いずれか１つに障害が発生し、データを復元するときのデータ復元処理について、図９乃至図１０のフローチャートを参照して説明する。
【００５０】
まず、アクセスノード２のノード死活監視機能部２３で、ストレージノード３のノード障害を検出した場合（ステップＳ２１）、アクセスノード２のデータ復元制御機能部２４は、コンポーネント配置情報２９から、失われたコンポーネント配下のフラグメントデータが復元可能か確認を行う（ステップＳ２２）。例えば、冗長データ数より多いフラグメントデータが失われていないかどうかにより、復元可能か否かの確認を行う。フラグメントデータが復元不可能と判断された場合は（ステップＳ２３：Ｎｏ）、なにも行わずに処理を終える。フラグメントデータが復元可能であると判断された場合は（ステップＳ２３：Ｙｅｓ）、コンポーネントをどこまで復元するか決定する（ステップＳ２４）。
【００５１】
ここで、上記ステップＳ２４のコンポーネントをどこまで復元するかを決定する処理の詳細を、図１１のフローチャートを参照して説明する。なお、この処理は、アクセスノード２のデータ復元機能部２４とストレージノード３のデータ復元機能部３２及びフラグメント格納機能部３１とが協働して行う。
【００５２】
まず、データ復元機能部２４，３２等（データ復元手段、復元データ数決定手段）は、ノード障害によって失われたコンポーネント配下のフラグメントが復元可能と判断された場合（ステップＳ３１）、いくつのコンポーネントの復元を行うかの判断を行う。このとき、以下に説明するように、２段階で復元するコンポーネントの決定を行う。１段階目は、分散パターン毎に個別で復元するコンポーネントを決定する処理を行い、２段階目は、全ての分散パターンで所定数のコンポーネントを復元した場合における全データ容量が、予め設定されている閾値（許容容量値）以下となるか否かによって決定する。なお、閾値は、システムの利用者によってシステムの使用状況等から決定されるものであり、例えば、障害が生じていない残りのストレージノード３の全ての容量の９０％に設定されている。但し、閾値は、上述した値であることに限定されず、障害が発生していない残りのストレージノード３の全容量や空き容量に応じて設定される値であってもよい。
【００５３】
具体的に、まず、コンポーネント配置情報２９や各チャンクＤの分散パターンの管理情報から、ノード障害により各分散パターンにおいて失われた各チャンクＤのコンポーネント数を確認する（ステップＳ３２）。そして、分散パターン間で失われたコンポーネント数が異なる場合は（ステップＳ３２：Ｙｅｓ）、失われたコンポーネント数の多い分散パターンに該当する各チャンクＤのコンポーネントの復元を決定する（ステップＳ３３）。このとき、各分散パターンの各チャンクＤで失われたコンポーネント数が同一となるよう、失われたコンポーネント数が多い分散パターンに該当する各チャンクＤついてのコンポーネントを復元するよう決定する。例えば、図６に示す分散パターンで各チャンクが記憶されておりあり、ノード５に障害が生じた場合には、分散パターンＰ１，Ｐ２，Ｐ３のチャンクＤでは２つのコンポーネントが失われ、分散パターンＰ４，Ｐ５のチャンクでは３つのコンポーネントが失われることとなる。このため、各分散パターンＰ４，Ｐ５の各チャンクＤのコンポーネントをそれぞれ１つ復元するよう決定する。なお、失われたコンポーネント数が全ての分散パターンで均一の場合は（ステップＳ３２：Ｎｏ）、ここではなにも行われない。
【００５４】
次に、データ復元機能部２４，３２等（データ復元手段、復元データ数決定手段）は、コンポーネント配置情報２９や各チャンクＤの分散パターンの管理情報に基づいて、復元するコンポーネントの数を変更していき、各数のコンポーネントを復元したときの復元後のデータ容量が、いつ閾値を下回るかを確認する（ステップＳ３４，Ｓ３５：Ｎｏ，Ｓ３６）。このとき、全ての分散パターンに該当するチャンクＤにおけるコンポーネント数が同一となるよう、復元数を失われたコンポーネントの最小数から１つずつ減少させていき、コンポーネントの復元数を変更していく。例えば、図６に示す分散パターンでノード５に障害が生じた場合には、まずは復元数を「２」とし、その後、「１」、「０」と変更していく。データ復元機能部２４，３２等は、各復元数のコンポーネントを全ての分散パターンのチャンクＤで復元した場合における復元後の全てのデータ容量を、コンポーネント容量情報２６に基づいて算出する。そして、算出したデータ容量が、上記閾値を下回るかどうか確認する。
【００５５】
そして、全ての分散パターンのチャンクＤでｎ個（ｎは０ではない整数）のコンポーネントの復元時に、復元するデータ容量が閾値を下回ることを確認できた場合に（ステップＳ３６：Ｎｏ）、全ての分散パターンのチャンクＤでｎ個のコンポーネントを復元することを決定する（ステップＳ３８）。復元するコンポーネント数が決定すると、当該復元する数と残っているコンポーネント数とを足した値を、新たなコンポーネント数情報２７として更新する（ステップＳ３９）。
【００５６】
以上のようにして、全ての分散パターンにおいて復元するコンポーネントの数が決定された後の動作を、図１０のステップＳ２４以降を参照して説明する。上述したように、復元するコンポーネント数が決定され（ステップＳ２４）、コンポーネント数情報２７を更新すると（ステップＳ２５）、復元を行うコンポーネントが存在するか否かを確認する（ステップＳ２６）。復元するコンポーネントが存在する場合は（ステップＳ２６：Ｎｏ）、各ストレージノード３の容量負荷を考慮して、どのストレージノード３上にコンポーネントを復元するか決定し（ステップＳ２７）、コンポーネント、および、その配下のフラグメントの復元を行い（ステップＳ２８）、コンポーネントにフラグメントを確認する（ステップＳ２９）。
【００５７】
ここで、上述したストレージシステムにおけるノード障害時のデータ復元の具体例を説明する。まず、図６に示すように、５つのストレージノードに、コンポーネント総数の１２個の５つの分散パターン（Ｐ１〜Ｐ５）のチャンクＤが記憶されている場合を想定する。このとき、各ストレージノードの容量が「１００」（単位は任意）、各コンポーネントの容量が「７」であることとする。また、上述した閾値は、「９０％」であることとする。
【００５８】
上記条件によると、いずれのストレージノードにも障害が生じていない場合には、ストレージノード３全体の容量は、「５００」であり、コンポーネントの合計容量は、「４２０」（＝７×６０コンポーネント）である。すると、ストレージノード３の使用量は、「８４％」となる。
【００５９】
上記状況で、「ストレージノード５」に障害が発生した場合、失われたコンポーネント数は、「分散パターン１，２，３」でそれぞれ「２つ」、「分散パターン４，５」でそれぞれ「３つ」となる。すると、「分散パターン１，２，３」と「分散パターン４，５」との各チャンクＤで、失われたコンポーネントの数が異なるため、これらを同一にするよう、「分散パターン４，５」のコンポーネントの「各１つ」が復元対象として決定される。これにより、コンポーネントを復元した場合に失われたコンポーネント数が、全ての分散パターンにおいて「２つ」というように同一となる。
【００６０】
次に、全ての分散パターンで、復元するコンポーネントの数を決定する。まずは、全ての分散パターンで「２つ」（ｎ＝２）のコンポーネントを復元する場合のコンポーネントの合計容量、つまり、復元後の全てのデータ容量を計算する。
・コンポーネント合計容量＝４２０（＝７×１２コンポーネント×５分散パターン）
上記コンポーネント合計容量は、ストレージノード障害後における４台ストレージノード全体の容量「４００」（＝１００×４）の１０５％となるため、閾値を超えることとなり、ｎ＝２でコンポーネントの復元は行われない。
【００６１】
次に、全ての分散パターンで「１つ」（ｎ＝１）のコンポーネントを復元する場合のコンポーネントの合計容量を計算する。
・コンポーネント合計容量＝３８５（＝７×１１コンポーネント×５分散パターン）
上記コンポーネント合計容量は、ストレージノード障害後における４台ストレージノード全体の容量「４００」の約９６％となるため、閾値を超えることとなり、ｎ＝１でのコンポーネントの復元も行われない。
【００６２】
結果的に、上述した例では、「分散パターン４，５」にそれぞれ該当する各チャンクＤにおいて、１つずつのコンポーネントが復元される。このとき、分散パターンあたりのコンポーネントの総数は「１０」となり、コンポーネント数情報２７が更新される。これにより、フラグメント分散機能部２２では、ノード障害前には、１つのチャンクＤについて９つのフラグメントに３つの冗長フラグメントを付加して１２個のフラグメントデータを生成していたが、ノード障害後には、１つのチャンクＤについて９つのフラグメントに１つの冗長フラグメントを付加して１０個のフラグメントデータを生成するようになる。
【００６３】
なお、上述した具体例において、仮に、閾値が９７％である場合には、ｎ＝１、つまり、全ての分散パターンで復元数が「１」となり、上述した「分散パターン４，５」で復元するコンポーネントと併せると、全ての分散パターンでコンポーネント総数が「１１」となるよう復元されることとなる。
【００６４】
以上のように、ストレージノードの障害後に容量が「４００」となった際に、全てのコンポーネントを復元すると、「４２０」の容量となってしまい、フラグメント復元中にシステム容量が枯渇する可能性があった。しかしながら、本発明におけるストレージシステムでは、一部のコンポーネントのフラグメントのみ復元を行うため、システム容量の枯渇を抑制することができる。
【００６５】
このとき、ストレージノード障害前の空き容量は「１００」であり、本システムでは、冗長用フラグメントが付加されるため、実際に上位から書き込める容量は、「７５」（＝１００×９／１２）であった。一方、ストレージノード障害後は、空き容量が「５０」（＝４００−３５０）であるが、冗長用フラグメントの数が「３」から「１」になっているため、上位から書き込みが可能な容量は「４５」となる。すなわち、空き容量は、「１００」から「５０」へと「５０％」に減少しているが、実際に書き込める容量は、「７５」から「４５」へと「４０％」の減少で済むこととなり、記憶容量の効率的な利用を図ることができる。
【００６６】
また、上述した例では、コンポーネントを全く復元しなかった場合には、データの冗長性が低下する。ここで、その後に、例えばディスク死活監視機能部３３により各ストレージノード３における物理ディスクの障害等が検出されることによってフラグメントが一部失われた場合を考える。この場合、「分散パターン１，２，３」ではチャンクは再構成可能であるが、「分散パターン４，５」では、冗長フラグメント３つに対して３つのフラグメントデータを失っているため、チャンクは再構成不可能となる。しかしながら、本発明では、「分散パターン１，２，３」とコンポーネント数を同一すべく、「分散パターン４，５」でそれぞれコンポーネントを１つ復元しているため、フラグメントデータが一部失われた場合であっても、「分散パターン４，５」においてもチャンクが再構成可能となる。その結果、チャンクの耐性つまり冗長性を一定に保つことができ、システムの信頼性の向上を図ることができる。
【００６７】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるストレージシステム（図１２参照）、プログラム、データ処理方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００６８】
（付記１）
複数の記憶手段１２０に対してデータを記憶する際に、記憶対象データを複数に分割した分割データ及び当該記憶対象データを復元するための冗長データからなる複数のフラグメントデータを生成して、前記複数の記憶手段にそれぞれ分散して記憶する分散記憶処理手段１１１と、
前記記憶手段のいずれかに障害が発生した場合に、当該障害が発生することにより失われた前記フラグメントデータを、当該障害が発生した前記記憶手段とは異なる他の記憶手段に記憶されている他のフラグメントデータに基づいて復元して、当該他の記憶手段に記憶するデータ復元手段１１２と、を備え、
前記データ復元手段１１２は、前記失われたフラグメントデータのうち、少なくとも一部を復元した場合における復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない前記記憶手段の容量とに基づいて、復元する前記フラグメントデータの数を決定する復元データ数決定手段１１３を有する、
ストレージシステム１００。
【００６９】
（付記２）
付記１に記載のストレージシステムであって、
前記復元データ数決定手段は、前記算出した復元後の全てのデータ容量が、障害が発生していない前記記憶手段の容量に基づく許容容量値以下となるよう、復元する前記フラグメントデータの数を決定する、
ストレージシステム。
【００７０】
（付記３）
付記１又は２に記載のストレージシステムであって、
前記分散記憶手段は、１つの記憶対象データから生成された前記複数のフラグメントデータの前記各記憶手段に対する配置状況を表す分散パターンに従って、前記複数のフラグメントデータを前記複数の記憶手段にそれぞれ分散して記憶し、
前記復元データ数決定手段は、前記分散パターンに基づいて、障害が発生することにより失われた前記フラグメントデータの数を確認し、当該失われた前記フラグメントデータのうち復元する当該フラグメントデータの数を変更しながら復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない前記記憶手段の容量とに基づいて、復元する前記フラグメントデータの数を決定する、
ストレージシステム。
【００７１】
（付記４）
付記３に記載のストレージシステムであって、
前記分散記憶手段は、前記記憶対象データ毎に、前記複数の記憶手段に対する前記フラグメントデータの配置状況がそれぞれ異なる前記分散パターンに従って、それぞれ前記フラグメントデータをそれぞれ分散して記憶し、
前記復元データ数決定手段は、前記各分散パターンにて分散記憶された全ての前記記憶対象データについて、復元後の前記フラグメントデータの数が同一となるよう、復元する前記フラグメントデータの数を決定する、
ストレージシステム。
【００７２】
上記発明によると、複数の記憶手段のうちいずれかに障害が発生したときに、障害が発生していない残りの記憶手段の容量に基づいて、復元するフラグメントデータの数を決定して、失われたフラグメントデータの全て又は一部を復元する。具体的には、全ての記憶対象データについて失われたフラグメントデータが複数ある場合には、全ての記憶対象データについてのフラグメントデータの数が同一になり、かつ、復元後のデータ容量が残りの記憶手段の容量に基づく許容容量値以下となるよう、復元するフラグメントデータの数を決定する。そして、決定された数のフラグメントデータのみを復元することで、データの復元によるシステムの信頼性を維持しつつ、システム全体の容量の枯渇を抑制することができる。
【００７３】
（付記５）
付記４に記載のストレージシステムであって、
前記復元データ数決定手段は、復元する前記フラグメントデータの数を決定する前に、前記各分散パターンにて分散記憶された前記各記憶対象データについて、失われた前記フラグメントデータの数が異なる場合に、失われた前記フラグメントデータの数が多い前記記憶対象データの前記フラグメントデータを復元することを決定する、
ストレージシステム。
【００７４】
（付記６）
付記５に記載のストレージシステムであって、
前記復元データ数決定手段は、復元する前記フラグメントデータの数を決定する前に、前記各分散パターンにて分散記憶された前記各記憶対象データについて、失われた前記フラグメントデータの数が異なる場合に、当該フラグメントデータの数が同一となるよう、失われた前記フラグメントデータの数が多い前記記憶対象データの前記フラグメントデータを復元することを決定する、
ストレージシステム。
【００７５】
上記構成により、分散パターンが異なることにより、記憶対象データ間で失われたフラグメントデータの数が異なる場合には、失われた数が多い記憶対象データについてのフラグメントデータが優先して復元される。これにより、その後における記憶対象データの耐性つまり冗長性を一定に保つことができ、システムの信頼性の向上を図ることができる。
【００７６】
（付記７）
付記１乃至６のいずれかに記載のストレージシステムであって、
前記分散記憶処理手段は、前記復元データ数決定手段にて決定された復元する前記フラグメントデータの数に基づく復元後の前記記憶対象データについてのフラグメントデータの数を、前記記憶対象データから生成する前記フラグメントデータの数として設定し、当該数のフラグメントデータを前記記憶対象データから生成して、前記複数の記憶手段に分散して記憶する、
ストレージシステム。
【００７７】
上記構成により、記憶手段の障害発生後においても、容量の枯渇を抑制しつつ、冗長性を確保し、さらには、記憶容量の効率的な利用を図ることができる。
【００７８】
（付記８）
情報処理装置に、
記憶対象データを複数に分割した分割データ及び当該記憶対象データを復元するための冗長データからなる複数のフラグメントデータを生成して、複数の記憶手段にそれぞれ分散して記憶する分散記憶処理手段と、
前記記憶手段のいずれかに障害が発生した場合に、当該障害が発生することにより失われた前記フラグメントデータを、当該障害が発生した前記記憶手段とは異なる他の記憶手段に記憶されている他のフラグメントデータに基づいて復元して、当該他の記憶手段に記憶するデータ復元手段と、を実現させると共に、
前記失われたフラグメントデータのうち、少なくとも一部を復元した場合における復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない前記記憶手段の容量とに基づいて、復元する前記フラグメントデータの数を決定する復元データ数決定手段を有する前記データ復元手段を実現させる、
ためのプログラム。
【００７９】
（付記８．１）
付記８に記載のプログラムであって、
前記分散記憶手段は、１つの記憶対象データから生成された前記複数のフラグメントデータの前記各記憶手段に対する配置状況を表す分散パターンに従って、前記複数のフラグメントデータを前記複数の記憶手段にそれぞれ分散して記憶し、
前記復元データ数決定手段は、前記分散パターンに基づいて、障害が発生することにより失われた前記フラグメントデータの数を確認し、当該失われた前記フラグメントデータのうち復元する当該フラグメントデータの数を変更しながら復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない前記記憶手段の容量とに基づいて、復元する前記フラグメントデータの数を決定する、
プログラム。
【００８０】
（付記８．２）
付記８．１に記載のプログラムであって、
前記分散記憶手段は、前記記憶対象データ毎に、前記複数の記憶手段に対する前記フラグメントデータの配置状況がそれぞれ異なる前記分散パターンに従って、それぞれ前記フラグメントデータをそれぞれ分散して記憶し、
前記復元データ数決定手段は、前記各分散パターンにて分散記憶された全ての前記記憶対象データについて、復元後の前記フラグメントデータの数が同一となるよう、復元する前記フラグメントデータの数を決定する、
プログラム。
【００８１】
（付記８．３）
付記８．２に記載のプログラムであって、
前記復元データ数決定手段は、復元する前記フラグメントデータの数を決定する前に、前記各分散パターンにて分散記憶された前記各記憶対象データについて、失われた前記フラグメントデータの数が異なる場合に、失われた前記フラグメントデータの数が多い前記記憶対象データの前記フラグメントデータを復元することを決定する、
プログラム。
【００８２】
（付記８．４）
付記８．３に記載のプログラムであって、
前記復元データ数決定手段は、復元する前記フラグメントデータの数を決定する前に、前記各分散パターンにて分散記憶された前記各記憶対象データについて、失われた前記フラグメントデータの数が異なる場合に、当該フラグメントデータの数が同一となるよう、失われた前記フラグメントデータの数が多い前記記憶対象データの前記フラグメントデータを復元することを決定する、
プログラム。
【００８３】
（付記９）
複数の記憶手段に対してデータを記憶する際に、記憶対象データを複数に分割した分割データ及び当該記憶対象データを復元するための冗長データからなる複数のフラグメントデータを生成して、前記複数の記憶手段にそれぞれ分散して記憶し、
前記記憶手段のいずれかに障害が発生した場合に、当該障害が発生することにより失われた前記フラグメントデータを、当該障害が発生した前記記憶手段とは異なる他の記憶手段に記憶されている他のフラグメントデータに基づいて復元して、当該他の記憶手段に記憶するデータ復元処理を行い、
前記データ復元処理の際に、前記失われたフラグメントデータのうち、少なくとも一部を復元した場合における復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない前記記憶手段の容量とに基づいて、復元する前記フラグメントデータの数を決定する、
データ処理方法。
【００８４】
（付記１０）
付記９に記載のデータ処理方法であって、
データを記憶する際に、１つの記憶対象データから生成された前記複数のフラグメントデータの前記各記憶手段に対する配置状況を表す分散パターンに従って、前記複数のフラグメントデータを前記複数の記憶手段にそれぞれ分散して記憶し、
復元する前記フラグメントデータの数を決定する際に、前記分散パターンに基づいて、障害が発生することにより失われた前記フラグメントデータの数を確認し、当該失われた前記フラグメントデータのうち復元する当該フラグメントデータの数を変更しながら復元後のストレージシステム内の全てのデータ容量を算出し、当該算出した復元後の全てのデータ容量と、障害が発生していない前記記憶手段の容量とに基づいて、復元する前記フラグメントデータの数を決定する、
データ処理方法。
【００８５】
（付記１０．１）
付記１０に記載のデータ処理方法であって、
データを記憶する際に、前記記憶対象データ毎に、前記複数の記憶手段に対する前記フラグメントデータの配置状況がそれぞれ異なる前記分散パターンに従って、それぞれ前記フラグメントデータをそれぞれ分散して記憶し、
復元する前記フラグメントデータの数を決定する際に、前記各分散パターンにて分散記憶された全ての前記記憶対象データについて、復元後の前記フラグメントデータの数が同一となるよう、復元する前記フラグメントデータの数を決定する、
データ処理方法。
【００８６】
（付記１０．２）
付記１０．１に記載のデータ処理方法であって、
復元する前記フラグメントデータの数を決定する前に、前記各分散パターンにて分散記憶された前記各記憶対象データについて、失われた前記フラグメントデータの数が異なる場合に、失われた前記フラグメントデータの数が多い前記記憶対象データの前記フラグメントデータを復元することを決定する、
データ処理方法。
【００８７】
（付記１０．３）
付記１０．２に記載のデータ処理方法であって、
復元する前記フラグメントデータの数を決定する前に、前記各分散パターンにて分散記憶された前記各記憶対象データについて、失われた前記フラグメントデータの数が異なる場合に、当該フラグメントデータの数が同一となるよう、失われた前記フラグメントデータの数が多い前記記憶対象データの前記フラグメントデータを復元することを決定する、
データ処理方法。
【００８８】
なお、上述したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００８９】
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【００９０】
１  ストレージシステム
２  アクセスノード
２０  ファイルシステムサービス
２１  重複排除機能部
２２  フラグメント分散機能部
２３  ノード死活監視機能部
２４  データ復元機能部
２５  ハッシュテーブル
２６  コンポーネント容量情報
２７  コンポーネント数情報
２８  システム容量情報
２９  コンポーネント配置情報
３  ストレージノード
３０  物理ディスク
３１  フラグメント格納機能部
３２  データ復元機能部
３３  ディスク死活監視機能部
４  バックアップシステム
５  バックアップ対象装置
１００  ストレージシステム
１１１  分散記憶処理手段
１１２  データ復元手段
１１３  復元データ数決定手段
１２０  記憶手段
【図１】
2015148919.tif 000003
【図２】
2015148919.tif 000004
【図３】
2015148919.tif 000005
【図４】
2015148919.tif 000006
【図５】
2015148919.tif 000007
【図６】
2015148919.tif 000008
【図７】
2015148919.tif 000009
【図８】
2015148919.tif 000010
【図９】
2015148919.tif 000011
【図１０】
2015148919.tif 000012
【図１１】
2015148919.tif 000013
【図１２】
2015148919.tif 000014