(57)【要約】【課題】ストレージシステムの性能が低下すること。【解決手段】本発明のストレージシステムは、検索要求データに対応する要約データに基づいて、別の記憶手段に対応するインデックスデータを探索して、検索対象データを構成する一部のフラグメントデータ及び当該フラグメントデータの書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの要約データに基づいて特定の記憶手段に対応するインデックスデータを探索して、検索対象データを構成する他のフラグメントデータを特定する。【選択図】図１２
2015153067.tif 000002
【特許請求の範囲】
【請求項１】
記憶対象データを複数に分割した分割データを含む複数のフラグメントデータを生成して、当該複数のフラグメントデータを複数の記憶手段にそれぞれ分散して記憶すると共に、
前記フラグメントデータを参照する情報と、当該フラグメントデータにて構成される前記記憶対象データのデータ内容に基づいて算出された要約データと、を関連付けたインデックスデータを、当該インデックスデータにて参照される前記フラグメントデータの記憶先となる前記記憶手段毎に区別して記憶し、
さらに、前記インデックスデータを参照する情報と、当該インデックスデータに含まれた前記要約データの一部からなる部分要約データと、を関連付けた要約テーブルを記憶する、
分散記憶処理手段と、
検索要求データに対応する前記要約データに基づいて、前記要約テーブル及び前記インデックスデータを探索して、前記複数の記憶手段に記憶されている前記検索要求データを構成する複数のフラグメントデータを検索するデータ検索手段と、を備え、
前記分散記憶処理手段は、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込み時の状況を表す書き込み状況情報を含めて記憶し、
前記データ検索手段は、前記要約テーブルの少なくとも一部が利用不可である場合に、当該利用不可である要約テーブルによって参照される前記インデックスデータにてさらに参照される前記フラグメントデータを記憶する特定の前記記憶手段とは別の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データの前記要約データに基づいて当該検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて前記特定の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記分散記憶処理手段は、前記要約テーブルを、当該要約テーブルにて参照される前記インデックスデータにてさらに参照される前記フラグメントデータの記憶先となる前記記憶手段毎に区別して記憶し、
前記データ検索手段は、前記検索対象データの前記要約データの一部である部分要約データに基づいて、前記別の記憶手段に対応する利用可能な前記要約テーブルを探索して、当該別の記憶手段に対応する前記インデックスデータを探索し、前記検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて前記特定の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ストレージシステム。
【請求項３】
請求項２に記載のストレージシステムであって、
前記分散記憶処理手段は、前記インデックスデータを、当該インデックスデータにて参照される前記フラグメントデータの記憶先となる前記記憶手段に記憶し、前記要約テーブルを、当該要約テーブルにて参照される前記インデックスデータにてさらに参照される前記フラグメントデータの記憶先となる前記記憶手段に記憶し、
前記データ検索手段は、前記特定の記憶手段に記憶された前記要約テーブルが利用不可である場合に、前記検索対象データの前記要約データの一部である部分要約データに基づいて、前記別の記憶手段に記憶されている利用可能な前記要約テーブルを探索して、当該別の記憶手段に記憶されている前記インデックスデータを探索し、前記検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて、前記要約テーブルが利用不可である前記特定の記憶手段に記憶されている前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ストレージシステム。
【請求項４】
請求項１乃至３のいずれかに記載のストレージシステムであって、
前記分散記憶処理手段は、１つの記憶対象データから生成された前記複数のフラグメントデータを同一のタイミングで前記複数の記憶手段にそれぞれ分散して記憶すると共に、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込みタイミングに基づく値を表す書き込みタイミング情報を、前記書き込み状況情報として含めて記憶し、
前記データ検索手段は、前記別の記憶手段に対応する前記インデックスデータから特定した前記検索対象データを構成する一部のフラグメントデータの前記書き込み状況情報である前記書き込みタイミング情報、及び、検索対象データの前記要約データに基づいて、前記特定の前記記憶手段に記憶されている前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ストレージシステム。
【請求項５】
請求項１乃至４のいずれかに記載のストレージシステムであって、
前記分散記憶処理手段は、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込み時刻に基づく値を表す書き込み時刻情報を、前記書き込み状況情報として含めて記憶し、
前記データ検索手段は、前記別の記憶手段に対応する前記インデックスデータから特定した前記検索対象データを構成する一部のフラグメントデータの前記書き込み状況情報である前記書き込み時刻情報、及び、検索対象データの前記要約データに基づいて、前記特定の前記記憶手段に記憶されている前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ストレージシステム。
【請求項６】
請求項５に記載のストレージシステムであって、
前記データ検索手段は、前記特定の記憶手段に対応する前記インデックスデータを探索して、前記特定した書き込み時刻情報を基準として前後する所定時間内の前記書き込み時刻情報が関連付けられた前記インデックスデータから、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ストレージシステム。
【請求項７】
請求項４乃至６のいずれかに記載のストレージシステムであって、
前記分散記憶処理手段は、前記複数のフラグメントデータを前記複数の記憶手段にそれぞれ分散して記憶する際に、当該各記憶手段内の記憶領域に順番に追記する、
ストレージシステム。
【請求項８】
ストレージシステムの制御装置に、
記憶対象データを複数に分割した分割データを含む複数のフラグメントデータを生成して、当該複数のフラグメントデータを複数の記憶手段にそれぞれ分散して記憶すると共に、
前記フラグメントデータを参照する情報と、当該フラグメントデータにて構成される前記記憶対象データのデータ内容に基づいて算出された要約データと、を関連付けたインデックスデータを、当該インデックスデータにて参照される前記フラグメントデータの記憶先となる前記記憶手段毎に区別して記憶し、
さらに、前記インデックスデータを参照する情報と、当該インデックスデータに含まれた前記要約データの一部からなる部分要約データと、を関連付けた要約テーブルを記憶する、
分散記憶処理手段と、
検索要求データに対応する前記要約データに基づいて、前記要約テーブル及び前記インデックスデータを探索して、前記複数の記憶手段に記憶されている前記検索要求データを構成する複数のフラグメントデータを検索するデータ検索手段と、
を実現させると共に、
前記分散記憶処理手段は、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込み時の状況を表す書き込み状況情報を含めて記憶し、
前記データ検索手段は、前記要約テーブルの少なくとも一部が利用不可である場合に、当該利用不可である要約テーブルによって参照される前記インデックスデータにてさらに参照される前記フラグメントデータを記憶する特定の前記記憶手段とは別の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データの前記要約データに基づいて当該検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて前記特定の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ことを実現させるためのプログラム。
【請求項９】
記憶対象データを複数に分割した分割データを含む複数のフラグメントデータを生成して、当該複数のフラグメントデータを複数の記憶手段にそれぞれ分散して記憶すると共に、
前記フラグメントデータを参照する情報と、当該フラグメントデータにて構成される前記記憶対象データのデータ内容に基づいて算出された要約データと、を関連付けたインデックスデータを、当該インデックスデータにて参照される前記フラグメントデータの記憶先となる前記記憶手段毎に区別して記憶し、
さらに、前記インデックスデータを参照する情報と、当該インデックスデータに含まれた前記要約データの一部からなる部分要約データと、を関連付けた要約テーブルを記憶する、
分散記憶処理を行い、
検索要求データに対応する前記要約データに基づいて、前記要約テーブル及び前記インデックスデータを探索して、前記複数の記憶手段に記憶されている前記検索要求データを構成する複数のフラグメントデータを検索するデータ検索処理を行う、データ処理方法であって、
前記分散記憶処理の際に、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込み時の状況を表す書き込み状況情報を含めて記憶し、
前記データ検索処理の際に、前記要約テーブルの少なくとも一部が利用不可である場合に、当該利用不可である要約テーブルによって参照される前記インデックスデータにてさらに参照される前記フラグメントデータを記憶する特定の前記記憶手段とは別の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データの前記要約データに基づいて当該検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて前記特定の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
データ処理方法。
【請求項１０】
請求項９に記載のデータ処理方法であって、
前記分散記憶処理の際に、前記要約テーブルを、当該要約テーブルにて参照される前記インデックスデータにてさらに参照される前記フラグメントデータの記憶先となる前記記憶手段毎に区別して記憶し、
前記データ検索処理の際に、前記検索対象データの前記要約データの一部である部分要約データに基づいて、前記別の記憶手段に対応する利用可能な前記要約テーブルを探索して、当該別の記憶手段に対応する前記インデックスデータを探索し、前記検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて前記特定の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムにかかり、特に、データを分散して複数の記憶装置に記憶するストレージシステムに関する。
【背景技術】
【０００２】
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。
【０００３】
このような状況に応じて、近年では、特許文献１に示すように、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、データを分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置が特定される。
【０００４】
このように、コンテンツアドレスは、データの内容に応じて固有となるよう生成されるため、重複データであれば、同じ格納位置のデータを参照することで、同一内容のデータを取得することができる。従って、重複データを別々に格納する必要がなく、重複記録を排除し、データ容量の削減を図ることができる。つまり、コンテンツアドレスストレージシステムでは、同一内容のデータが記憶されていない場合だけ、新たなデータが記憶されるという重複排除機能を有している。
【０００５】
また、ストレージシステムでは、所定容量のブロックデータを複数のフラグメントデータに分割すると共に、冗長データとなるフラグメントをさらに付加して、これら複数のフラグメントデータをそれぞれ複数の記憶装置にそれぞれ格納している。そして、後にコンテンツアドレスを指定することにより、当該コンテンツアドレスにて特定される格納位置に格納されているフラグメントデータを読み出し、複数のフラグメントデータから分割前のブロックデータを復元することができる。
【０００６】
このように、ストレージシステムは、冗長データとなるフラグメントデータを付加しているため、付加した冗長データのフラグメント数以下のフラグメントデータが失われた場合でも、元のブロックデータを再生成することができる。
【０００７】
さらに、ストレージシステムでは、複数の記憶装置にフラグメントデータを格納する際に、一度に多くのフラグメントデータが失われないよう、また、所定の記憶装置に負荷が集中しないよう、分散配置機能を有している。ここで、各記憶装置には、それぞれデータ格納用コンテナを有しており、各データ格納用コンテナにそれぞれフラグメントデータを格納して、負荷分散している。
【０００８】
ここで、上述したようなストレージシステムにおいては、書き込み時に同一のデータが既に記憶装置に格納されているか否かの重複判定を行うこととなるが、大量のデータの中から重複判定を行うことは容易ではない。そこで、データの重複判定の効率化のために、実際のデータを比較するのではなく、データの内容に基づいて算出されたフィンガプリント（ハッシュ値）を比較する方法が使用されている。ハッシュ値は、実データに比べてデータサイズが小さいため、重複判定の高速化が可能となる。そして、データの読み込み時にも同様に、対象となるデータのコンテンツアドレスと既に記憶されているハッシュ値とを比較することで、検索の高速化が可能となる。
【０００９】
一方で、上述したハッシュ値は、書き込みデータをあるサイズに分割（チャンキング）したブロックデータ単位で計算されるため、データ量の増加に伴って、その数が増加していくことになる。そして、ストレージシステムの多くは、書き込み、および読み込み性能が重要視されるため、重複判定の高速化のために、同一のハッシュ値を効率的に探索する手法が必要となってくる。
【００１０】
そこで、ストレージシステムは、重複判定のために、ブロックデータのハッシュ値の一部であるショートハッシュをキーとして、そのハッシュ値に対応したデータにアクセスするための情報をまとめたテーブルであるハッシュテーブルを持つ。ハッシュテーブルを用いた場合には、ショートハッシュをベースに検索されるため、フルハッシュ値を比較する場合と比較して、検索性能を向上させることができる。また、重複判定のみならず、データの読み込みの際にも、読み込み要求のあった該当するブロックデータを検索する際に、ハッシュテーブルが使用される。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１３−１８２４７６
【発明の概要】
【発明が解決しようとする課題】
【００１２】
ここで、ストレージシステムは、データ格納専用に使用されるシステムのため、第一に、格納データ（データブロックや、そのフルハッシュ値）の信頼性が重要となってくる。そのため、格納データに関しては、信頼性を重視し、ジャーナル機能を持つファイルシステムに保存しているため、障害が発生した後には、ジャーナル情報から故障したデータの復旧が可能となる。
【００１３】
一方で、ハッシュテーブルは、上述したようにデータの高速検索を目的としていることと、保存されているデータから再度生成できる情報であることから、重要度が低いデータであり、信頼性よりも性能を重視した構成となっている。つまり、上述した格納データとは異なり、ジャーナル機能を持たない。そのため、電源断などの異常再起動が発生すると、実際に格納されているデータとハッシュテーブル内に格納されているデータとの整合性が保てなくなるが、整合性の回復のために、格納データから再度ハッシュテーブルを構築する処理を行わなければならなくなる。
【００１４】
しかしながら、ハッシュテーブルは、読み込み時の格納データの検索の際に最初にアクセスする情報であるために、その破損時や再構築中は、格納データへのアクセスができなくなる、という問題が生じる。そして、この再構築処理は、近年のデータの肥大化によって時間が長くなってきており、格納データにアクセスができない時間が長期化する、という問題も生じる。その結果、ストレージシステムの性能が低下する、という問題が生じる。
【００１５】
このため、本発明の目的は、上述した課題である、ストレージシステムの性能が低下する、ということを解決することにある。
【課題を解決するための手段】
【００１６】
本発明の一形態であるストレージシステムは、
記憶対象データを複数に分割した分割データを含む複数のフラグメントデータを生成して、当該複数のフラグメントデータを複数の記憶手段にそれぞれ分散して記憶すると共に、
前記フラグメントデータを参照する情報と、当該フラグメントデータにて構成される前記記憶対象データのデータ内容に基づいて算出された要約データと、を関連付けたインデックスデータを、当該インデックスデータにて参照される前記フラグメントデータの記憶先となる前記記憶手段毎に区別して記憶し、
さらに、前記インデックスデータを参照する情報と、当該インデックスデータに含まれた前記要約データの一部からなる部分要約データと、を関連付けた要約テーブルを記憶する、
分散記憶処理手段と、
検索要求データに対応する前記要約データに基づいて、前記要約テーブル及び前記インデックスデータを探索して、前記複数の記憶手段に記憶されている前記検索要求データを構成する複数のフラグメントデータを検索するデータ検索手段と、を備え、
前記分散記憶処理手段は、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込み時の状況を表す書き込み状況情報を含めて記憶し、
前記データ検索手段は、前記要約テーブルの少なくとも一部が利用不可である場合に、当該利用不可である要約テーブルによって参照される前記インデックスデータにてさらに参照される前記フラグメントデータを記憶する特定の前記記憶手段とは別の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データの前記要約データに基づいて当該検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて前記特定の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
という構成をとる。
【００１７】
本発明の他の形態であるプログラムは、
ストレージシステムの制御装置に、
記憶対象データを複数に分割した分割データを含む複数のフラグメントデータを生成して、当該複数のフラグメントデータを複数の記憶手段にそれぞれ分散して記憶すると共に、
前記フラグメントデータを参照する情報と、当該フラグメントデータにて構成される前記記憶対象データのデータ内容に基づいて算出された要約データと、を関連付けたインデックスデータを、当該インデックスデータにて参照される前記フラグメントデータの記憶先となる前記記憶手段毎に区別して記憶し、
さらに、前記インデックスデータを参照する情報と、当該インデックスデータに含まれた前記要約データの一部からなる部分要約データと、を関連付けた要約テーブルを記憶する、
分散記憶処理手段と、
検索要求データに対応する前記要約データに基づいて、前記要約テーブル及び前記インデックスデータを探索して、前記複数の記憶手段に記憶されている前記検索要求データを構成する複数のフラグメントデータを検索するデータ検索手段と、
を実現させると共に、
前記分散記憶処理手段は、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込み時の状況を表す書き込み状況情報を含めて記憶し、
前記データ検索手段は、前記要約テーブルの少なくとも一部が利用不可である場合に、当該利用不可である要約テーブルによって参照される前記インデックスデータにてさらに参照される前記フラグメントデータを記憶する特定の前記記憶手段とは別の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データの前記要約データに基づいて当該検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて前記特定の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ことを実現させる、
という構成をとる。
【００１８】
本発明の他の形態であるデータ処理方法は、
記憶対象データを複数に分割した分割データを含む複数のフラグメントデータを生成して、当該複数のフラグメントデータを複数の記憶手段にそれぞれ分散して記憶すると共に、
前記フラグメントデータを参照する情報と、当該フラグメントデータにて構成される前記記憶対象データのデータ内容に基づいて算出された要約データと、を関連付けたインデックスデータを、当該インデックスデータにて参照される前記フラグメントデータの記憶先となる前記記憶手段毎に区別して記憶し、
さらに、前記インデックスデータを参照する情報と、当該インデックスデータに含まれた前記要約データの一部からなる部分要約データと、を関連付けた要約テーブルを記憶する、
分散記憶処理を行い、
検索要求データに対応する前記要約データに基づいて、前記要約テーブル及び前記インデックスデータを探索して、前記複数の記憶手段に記憶されている前記検索要求データを構成する複数のフラグメントデータを検索するデータ検索処理を行う、データ処理方法であって、
前記分散記憶処理の際に、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込み時の状況を表す書き込み状況情報を含めて記憶し、
前記データ検索処理の際に、前記要約テーブルの少なくとも一部が利用不可である場合に、当該利用不可である要約テーブルによって参照される前記インデックスデータにてさらに参照される前記フラグメントデータを記憶する特定の前記記憶手段とは別の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データの前記要約データに基づいて当該検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて前記特定の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
という構成をとる。
【発明の効果】
【００１９】
本発明は、以上のように構成されることにより、ストレージシステムの性能の低下を抑制することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態１におけるストレージシステムを含む全体システムの構成を示すブロック図である。
【図２】図１に開示したストレージシステムの全体構成を示すブロック図である。
【図３】図２に開示したストレージシステムの構成を示す機能ブロック図である。
【図４】図３に開示したストレージシステムにデータを書き込むときの様子を説明するための説明図である。
【図５】図３に開示したストレージシステムにデータを書き込むときの様子を説明するための説明図である。
【図６】図３に開示したストレージシステムに書き込まれているデータの様子を説明するための説明図である。
【図７】図３に開示したストレージシステムに書き込まれているデータの様子を説明するための説明図である。
【図８】図３に開示したストレージシステムに書き込まれているデータを検索するときの様子を説明するための説明図である。
【図９】図３に開示したストレージシステムの動作を示すフローチャートである。
【図１０】図３に開示したストレージシステムの動作を示すフローチャートである。
【図１１】図３に開示したストレージシステムの動作を示すフローチャートである。
【図１２】本発明の付記１におけるストレージシステムの構成を示す図である。
【発明を実施するための形態】
【００２１】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図１２を参照して説明する。図１は、全体システムの構成を示すブロック図である。図２は、ストレージシステムの構成の概略を示すブロック図であり、図３は、ストレージシステムの構成を示す機能ブロック図である。図４乃至図８は、ストレージシステムに書き込まれるデータや検索時の様子を説明するための説明図である。図９乃至図１１は、ストレージシステムの動作を示すフローチャートである。
【００２２】
［構成］
本実施形態は、後述する付記に記載のストレージシステム等の具体的な一例を示すものである。そして、以下では、ストレージシステムが、複数台のサーバコンピュータが接続されて構成されている場合を説明する。但し、本発明におけるストレージシステムは、複数台のコンピュータにて構成されることに限定されず、１台のコンピュータで構成されていてもよい。
【００２３】
図１に示すように、本発明におけるストレージシステム１は、ネットワークＮを介してバックアップ処理を制御するバックアップサーバ４に接続している。そして、バックアップサーバ４は、ネットワークＮを介して接続されたバックアップ対象装置５に格納されているバックアップ対象データ（記憶対象データ）を取得し、ストレージシステム１に対して記憶するよう要求する。これにより、ストレージシステム１は、記憶要求されたバックアップ対象データをバックアップ用に記憶する。
【００２４】
ここで、本実施形態におけるストレージシステム１は、データを分割及び冗長化し、分散して複数の記憶装置に記憶すると共に、記憶するデータの内容に応じて設定されるコンテンツアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレスストレージシステムである。このコンテンツアドレスストレージシステムについては、後に詳述する。
【００２５】
図２に示すように、本実施形態におけるストレージシステム１は、複数のサーバコンピュータが接続された構成を採っている。具体的に、ストレージシステム１は、ストレージシステム１自体における記憶再生動作を制御するサーバコンピュータであるアクセスノード２と、データを格納する記憶装置を備えたサーバコンピュータであるストレージノード３と、を備えている。
【００２６】
上記アクセスノード２は、バックアップサーバ４とのデータの送受信を行い、バックアップサーバ４に対してファイルシステムサービスを提供する。そして、実際にバックアップ対象データのディスクへの格納は、ストレージノード３が行う。なお、図２では、２つのアクセスノード２と４つのストレージノード３を図示しているが、アクセスノード２の数とストレージノード３の数は、図２に示したものに限定されない。
【００２７】
図３に、本実施形態におけるストレージシステム１の構成を示す。この図に示すように、ストレージシステム１を構成するアクセスノード２は、装備された演算装置にプログラムが組み込まれることで構築された、Ｉ／Ｏ処理部２１、データ送受信部２２、重複判定部２３、を備えている。また、ストレージノード３は、装備された演算装置にプログラムが組み込まれることで構築された、フラグメント処理部３１、フラグメント探索部３２、タイムスタンプ取得部３３、ノード状態監視部３４、を備える。そして、ストレージノード３は、装備された記憶装置３５に、ハッシュテーブル３６、インデックスファイル３７、格納ファイル３８を記憶する。
【００２８】
なお、上述した各部は、アクセスノード２あるいはストレージノード３のどちらに装備されていてもよい。つまり、上述した各部は、ストレージシステムに装備された制御装置に構築されていればよい。以下、各構成について詳述する。
【００２９】
アクセスノード２のＩ／Ｏ処理部２１は、内部ネットワーク経由でバックアップサーバ４とバックアップデータの送信および受信を行う機能を有する。
【００３０】
アクセスノード２のデータ送受信部２２（分散記憶処理手段）は、重複判定部２３やストレージノード３の各部３１等と協働して、バックアップサーバ４から書き込み要求されたデータを、コンテンツアドレスを利用して、ストレージノード３に分散すると共に、重複排除を行って記憶する機能を有する。
【００３１】
具体的に、データ送受信部２２は、図４に示すように、まずバックアップサーバ４から書き込み要求されたファイルＡを、所定容量（例えば、６４ＫＢ）のブロックデータＤ（書き込み対象データ）に分割する。続いて、分割されたブロックデータＤのデータ内容に基づいて、当該データ内容に基づく要約データであるハッシュ値Ｈを算出する。例えば、ハッシュ値Ｈは、予め設定されたハッシュ関数を用いて、ブロックデータＤのデータ内容から算出する。なお、本実施形態では、要約データとしてハッシュ値Ｈを挙げているが、要約データは、ブロックデータの内容に基づいていかなる方法で算出されてもよい。
【００３２】
ここで、重複判定部２３は、ファイルＡのブロックデータＤのハッシュ値Ｈを用いて、当該ブロックデータＤが既に格納されているか否かを調べる。なお、重複判定処理については後述する。
【００３３】
そして、データ送受信部２２は、重複判定部２３による重複判定の結果、既にブロックデータＤがストレージノード３に格納されていると判定された場合には、既に記憶されているブロックデータＤの記憶位置を表すコンテンツアドレスを、書き込み要求されたブロックデータのコンテンツアドレスとして用いる。つまり、重複している場合には、実際に書き込みを行うことなく、既に記憶されているブロックデータＤの記憶位置を参照することとし、書き込み完了とする。
【００３４】
一方、データ送受信部２２は、重複判定部２３による重複判定の結果、書き込み要求にかかるブロックデータＤが重複しておらず、まだ記憶されていないと判断された場合には、以下のようにしてブロックデータＤの書き込みを行う。データ送受信部２２は、ブロックデータＤを複数の所定の容量のフラグメントデータに分割する。例えば、図４の符号Ｄ１〜Ｄ９に示すように、ブロックデータＤを９つのフラグメントデータ（分割データＦ１）に分割する。そしてさらに、分割したフラグメントデータのうちいくつかが欠けた場合であっても、元となるブロックデータＤを復元可能なよう冗長データを生成し、上記分割したフラグメントデータＦ１に追加する。例えば、図４の符号Ｄ１０〜Ｄ１２に示すように、３つのフラグメントデータ（冗長データＦ２）を追加する。これにより、９つの分割データＦ１と、３つの冗長データＦ２とにより構成される１２個のフラグメントデータからなるデータセットを生成する。なお、冗長データであるフラグメントデータの数は、設定により変化させることができる。
【００３５】
そして、データ送受信部２２は、生成した複数のフラグメントデータからなるデータセットを各ストレージノード３に分散記憶するよう送信する。
【００３６】
ストレージノード３のフラグメント処理部３１（分散記憶処理手段）は、アクセスノード２から送られてきたフラグメントデータをディスクに格納する。このとき、フラグメント処理部３１は、複数のストレージノード３にまたがって形成された仮想ノードＶ０１，Ｖ０２・・・に設けられた複数のデータ格納用コンテナに分散して格納する。
【００３７】
ここで、仮想ノードＶ０１，Ｖ０２・・・について、図５を参照して説明する。図５の例では、仮想ノードＶ０１は、複数のストレージノード３をまたがって、各ストレージノード３内に形成されたデータ格納領域となる１２個のデータ格納用コンテナ（符号０１〜１２）で形成されている。ここでは、４つの仮想ノードＶ０１，Ｖ０２，Ｖ１０，Ｖ１１が形成されていることとする。
【００３８】
そして、ブロックデータＤから生成された１２個のフラグメントデータがどの仮想ノードに格納されるかは、ブロックデータＤのハッシュ値の先頭から既定のビット数を確認することで決定される。図５の例では、仮想ノードが４つであるため、ブロックデータのハッシュ値の先頭２ビットの値に基づいて格納場所を決定する。例えば、ハッシュ値が、「00001111...」である場合には、先頭２ビット「00」から、「Ｖ００」の仮想ノードに格納することが決定される。このとき、図４に示すように、１２個のデータ格納用コンテナ（０１〜１２）に、それぞれ１つのフラグメントデータを格納する。
【００３９】
そして、フラグメント処理部３１は、上述したようにフラグメントデータを分散記憶する際には、以下のようにしてデータを管理する。まず、図６に示すように、データ格納用コンテナＶ００，Ｖ０１は、フラグメントデータを格納する格納ファイル３８と、当該フラグメントデータに関するフルハッシュ値などのメタデータを保存するインデックスファイル３７と、を持つ。フラグメント処理部３１は、送られてきたフラグメントデータを、格納ファイル３８に追記的に保存する。格納ファイル３８は、ファイルＩＤが１から昇順の番号で作成され、フラグメントデータがある一定の数だけ格納されると、ファイルＩＤの値を上げて、次の格納ファイルに書き出す。具体的に、格納ファイル３８には、図７（Ｃ）に示すように、格納ファイル内の所定の格納位置を表す各オフセットの位置に、フラグメントデータ自体が格納される。
【００４０】
また、フラグメント処理部３１は、格納ファイル３８にフラグメントデータを書き終えると、続いて、フラグメントデータ毎のメタデータであるインデックスデータをエントリとして、インデックスファイルに追記的に格納する。図７（Ｂ）にインデックスファイルの一例を示す。このように、インデックスファイル３７には、当該インデックスファイルの格納位置であるオフセット毎に、格納ファイル３８に格納したフラグメントデータに対応するメタデータであるインデックスデータが格納される。各インデックスデータは、格納ファイル３８に格納したフラグメントデータの元となるブロックデータＤのフルハッシュ値、当該フラグメントデータへのポインタ（参照情報）を表す格納ファイルＩＤ及びそのオフセット、当該フラグメントデータが書き込まれた時刻に基づくタイムスタンプ（書き込み時刻情報）、を含む。
【００４１】
なお、上記インデックスファイル３７は、当該インデックスファイル３７に含まれる各インデックスデータにて参照されるフラグメントデータが記憶されたストレージノード３毎に、当該ストレージノード３内に記憶される。つまり、インデックスファイル３７は、あるストレージノード３にフラグメントデータが記憶されると、そのフラグメントデータに対応するインデックスデータを、同一のストレージノード３に形成されたインデックスファイル３７内に格納する。このとき、インデックスデータを、インデックスファイル３７の格納領域に順番に追記する。
【００４２】
さらに、フラグメント処理部３１は、ハッシュテーブル３６（要約テーブル）に、格納ファイル３８に格納したフラグメントデータ毎のエントリを、当該フラグメントデータに対応するインデックスデータを参照する情報とショートハッシュ値とを関連付けて格納する。図７（Ａ）に、ハッシュテーブル３６の一例を示す。ハッシュテーブル３６の各エントリには、格納ファイル３８に格納されたフラグメントデータの元となるブロックデータＤのショートハッシュ値と、当該フラグメントデータを参照するインデックスデータへのポインタ（参照情報）を表すインデックスファイルＩＤ及びそのオフセットと、を格納している。なお、上記ショートハッシュ（部分要約データ）は、フラグメントデータの元となるブロックデータＤのフルハッシュ値（例えば、20 bytes）の一部（例えば、先頭から8 bytes）の値である。
【００４３】
なお、上記ハッシュテーブル３６は、当該ハッシュテーブル３６にて参照されるインデックスファイルつまり各インデックスデータに対応するフラグメントデータが記憶されたストレージノード３毎に、当該ストレージノード３内に記憶される。つまり、あるストレージノード３にフラグメントデータが記憶されると、そのフラグメントデータを参照するインデックスデータが含まれるインデックスファイルの参照情報とショートハッシュ値とのエントリを、同一のストレージノード３に形成されたハッシュテーブル３６に格納する。このとき、各エントリを、ハッシュテーブル３６の格納領域に順番に追記する。
【００４４】
そして、フラグメント処理部３１は、ブロックデータＤの格納位置として、当該ブロックデータＤのハッシュ値をデータ送受信部２２に返す。すると、データ送受信部２２は、ブロックデータＤの識別情報とハッシュ値とを関連付けて管理する。これにより、後述するように、ブロックデータＤの読み込み要求が有ったときに、ハッシュ値からその格納位置を検索することができる。
【００４５】
ここで、上述したデータ送受信部２２からの、ブロックデータＤから生成された複数のフラグメントデータのフラグメント処理部３１への書き込みの指示は、同一のタイミングで行われる。このため、各ストレージノード３の各フラグメント処理部３１での書き込みもほぼ同一のタイミングで行われることとなる。すると、１つのブロックデータＤから生成された複数のフラグメントデータの各ストレージノード３への書き込みは、ほぼ同一時刻で行われることとなる。その結果、これらフラグメントデータを参照する各インデックスデータに含まれるタイムスタンプの値も、同一あるいは近似した値となる。また、インデックスファイル３７には、当該インデックスファイル３７の格納領域に順番に追記して各インデックスデータが格納されるため、当該各インデックスデータは、書き込まれた順つまりタイムスタンプ順に並んで格納されることとなる。
【００４６】
また、インデックスファイル３７に格納される各インデックスデータに含まれる「フルハッシュ値」は、当該各インデックスデータにて参照されるフラグメントデータの元となる分割される前のブロックデータＤのハッシュ値である。そのため、１２個のフラグメントデータの各インデックスデータに含まれるフルハッシュ値は、各フラグメントデータを格納した全てのストレージノード３の各インデックスファイル３７内で同一となる。この性質を用いることで、後述するように、１つのブロックデータＤから生成されたフラグメントデータを格納するどれかひとつのストレージノード３のインデックスファイルにアクセスできる場合、このフラグメントデータが書き込まれたタイムスタンプを取得することができる。そして、そのタイムスタンプに基づいて、残りのフラグメントデータも容易に検索することができる。
【００４７】
以上のようにブロックデータＤを格納することで、データ送受信部２２及びフラグメント処理部３１（分散記憶処理手段、データ検索手段）は、バックアップサーバ４からデータの読み込み要求が有った場合や重複判定時に、図８に示すようにして格納されているブロックデータＤのコンテンツアドレスとなるハッシュ値やフラグメントデータにアクセスすることができる。
【００４８】
まず、検索対象となるブロックデータＤのハッシュ値を確認し、そのショートハッシュ値から自ノード３に記憶されたハッシュテーブル３６内を検索して、対象となるインデックスファイルＩＤとオフセットを取得する（矢印Ｙ１参照）。続いて、取得した情報からインデックスファイル３７にアクセスして、検索対象となるデータのフルハッシュ値と同一のフルハッシュ値が含まれるインデックスデータを探索する（矢印Ｙ２参照）。これにより、検索対象となるブロックデータＤと同一のフルハッシュ値が存在するか否かといった重複判定を行うことができる。そしてさらに、探索によって見つかったインデックスデータから格納ファイル３８にアクセスして、検索対象のフラグメントデータを読み込むことができる（矢印Ｙ３参照）。そして、各ストレージノード３から読み込まれたフラグメントデータを結合することで、検索対象となるブロックデータＤを生成し、そのブロックデータＤを返却することで、データの読み込みを行うことができる。
【００４９】
なお、ストレージノード３は、自己であるストレージノード３のハッシュテーブル３６が使用できない場合には、フラグメント探索部３２及びタイムスタンプ取得部３３（データ検索手段）にて、以下のようにして格納されているブロックデータＤを構成するフラグメントデータにアクセスする。
【００５０】
フラグメント探索部３２は、タイムスタンプ取得部３３を用いて、自己ではない別のストレージノード３に記憶されている検索対象となるブロックデータＤの一部を構成するフラグメントデータのタイムスタンプを取得する。そして、フラグメント探索部３２は、取得したタイムスタンプに基づいて、自己であるストレージノード３（特定のストレージノード）に記憶されているインデックスファイル３７内のタイムスタンプから、近い時刻に書き込まれたフラグメントデータのリストを取得する。
【００５１】
タイムスタンプ取得部３３は、フラグメント探索部３２からの要求を受けて、検索対象となるブロックデータＤのフラグメントデータを記憶する別のストレージノード３のハッシュテーブル３６にリモートアクセスする。そして、別のストレージノード３のハッシュテーブル３６を参照して、検索対象となるブロックデータＤのハッシュ値を基に、別のストレージノード３に記憶されているインデックスファイル３７内のインデックスデータを特定する。これにより、特定したインデックスデータに対応するフラグメントデータが書き込まれたタイムスタンプを取得する。そして、取得したタイムスタンプを、フラグメント探索部３２に返す。
【００５２】
ノード状態監視部３４は、正常に動作しているストレージノード３のリストを取得する機能を持つ。正常なストレージノード３とは、ストレージサービスとしての機能が動作していて、かつ、ハッシュテーブル３６などのデータにアクセスすることができるノードである。
【００５３】
なお、上述したフラグメント探索部３２、タイムスタンプ取得部３３、ノード状態監視部３４の機能については、以下の動作説明の際に詳述する。
【００５４】
［動作］
次に、上述した構成のストレージシステムの動作、特に、データ書き込み処理、データ読み込み処理、ハッシュテーブル再構築中のデータ読み込み処理の動作を、主に図９乃至図１１のフローチャートを参照して説明する。
【００５５】
（書き込み処理）
まず、図９を参照して、データ書き込み処理を説明する。バックアップサーバ４からの書き込み要求をアクセスノード２が受け取ると（ステップＳ１）、書き込み対象となるストリームデータは、あるサイズのブロックデータＤに分割される（ステップＳ２）。このブロックデータＤに対して、ハッシュ関数を用いてハッシュ値を算出して取得する。求められたハッシュ値を入力として、重複判定が行われる（ステップＳ３）。ここで、重複判定処理を、図８を参照して説明する。
【００５６】
上述したように算出したブロックデータＤのハッシュ値を基にして、任意のストレージノード３のハッシュテーブル３６にアクセスする。そして、ハッシュテーブル３６からハッシュ値のショートハッシュ値を検索して、同一のショートハッシュ値を持つエントリ（インデックスデータ）が存在するかを確認する（矢印Ｙ１参照）。この時に、エントリが見つからない場合は、記憶対象となるブロックデータＤと同一内容のデータは、ストレージノード３には書き込まれておらず、「非重複」となる。エントリが見つかった場合は、そのショートハッシュ値に対応するインデックスファイルＩＤとオフセットを取得する。なお、ハッシュテーブル３６ではショートハッシュ値のみで比較するため、複数のエントリが見つかる可能性がある。
【００５７】
続いて、見つかったハッシュテーブル３６のエントリの情報からインデックスファイル３７にアクセスして、当該インデックスファイル３７内のフルハッシュ値と算出したブロックデータＤのフルハッシュ値と比較する（矢印Ｙ２）。ここでフルハッシュ値が同一のエントリが見つかった場合は、書き込み対象となるブロックデータＤと同一内容のデータが既にストレージノード３に書き込まれていると判断でき、「重複」となる。一方、同一のエントリが見つからなかった場合は、「非重複」となる。
【００５８】
上述した重複判定にて、「重複」となった場合は（ステップＳ３：Ｙｅｓ）、書き込み完了を返却する（ステップＳ８）。「非重複」の場合は（ステップＳ３：Ｎｏ）、ブロックデータＤをフラグメントデータに分割して、各ストレージノード３に分散させる（ステップＳ４）。以下、各ストレージノード３にて破線Ａで囲まれた処理が行われ、フラグメントデータが格納される。
【００５９】
ストレージノード３では、受け取ったフラグメントデータを、図４に示すように各データ格納用コンテナに保存する。データ格納用コンテナは、各仮想ノード（図５のＶ００等）に１２個ずつ存在している（符号０１−１２）。ここでは、受け取ったハッシュ値の先頭２ビットを確認して、どの仮想ノードにデータを割り振るかを決定する。例えば、ハッシュ値が「1010101111...」の場合は、仮想ノードＶ１０が、その１２個のフラグメントデータを格納する。各データ格納用コンテナには、それぞれ１個のフラグメントデータが格納される。
【００６０】
フラグメントデータは、図６に示すように各データ格納用コンテナが持つ格納ファイル３８に、図７（Ｃ）のように保存される（ステップＳ５）。格納ファイル３８は、ファイルＩＤが１から昇順の番号で作成され、フラグメントデータがある一定の数溜まった場合に、次のファイルに書き出す。
【００６１】
格納ファイル３８にフラグメントデータが保存された後は、当該フラグメントデータのインデックスデータを各エントリとして、インデックスファイル３７に追記する。このとき、インデックスデータとして、フラグメントデータへのポインタである参照情報（格納ファイルＩＤ、オフセット）、フラグメントデータの元となるブロックデータＤのフルハッシュ値、フラグメントデータが書き込まれたタイムスタンプを、図７（Ｂ）のように記憶する（ステップＳ６）。
【００６２】
最後に、ハッシュテーブル３６に、書き込んだフラグメントデータに対応するインデックスデータを参照するエントリを書き込む。具体的には、各エントリとして、フラグメントデータの元となるブロックデータＤのショートハッシュ値、当該フラグメントデータを参照するインデックスデータへのポインタ（インデックスファイルＩＤ、オフセット）を、図７（Ａ）のように記憶する（ステップＳ７）。そして、記憶した各ブロックデータＤとハッシュ値とを関連付けて管理して、書き込み完了となる（ステップＳ８）。
【００６３】
（読み込み処理）
次に、図１０を参照して、データ読み込み処理を説明する。バックアップサーバ４からの読み込み要求をアクセスノード２が受け取ると（ステップＳ１１）、管理している情報から、読み込み対象となるブロックデータＤのハッシュ値を確認する（ステップＳ１２）。そして、アクセスノード２は、読み込み対象となるブロックデータＤのハッシュ値を、全てのストレージノード３に分散させる（ステップＳ１３）。
【００６４】
続いて、各ストレージノード３は、それぞれ破線Ｂで囲まれた処理を行い、フラグメントデータの読み込みを行う。まず、受け取ったハッシュ値のショートハッシュ値を用いて図７（Ｃ）に示すようなハッシュテーブル３６内を検索して（図８の矢印Ｙ１参照）、対象となるインデックスファイルＩＤとオフセットを取得する（ステップＳ１４）。そして、ストレージノード３は、取得した情報から、図７（Ｂ）に示すようなインデックスファイル３７にアクセスして、対象となるデータのフルハッシュ値と同一になるエントリであるインデックスデータを探索する（ステップＳ１５）（図８の矢印Ｙ２参照）。探索によって見つかったインデックスファイル３７のエントリであるインデックスデータから、図７（Ａ）に示すような格納ファイル３８にアクセスして（図８の矢印Ｙ３参照）、対象のフラグメントデータを読み込む（ステップＳ１６）。
【００６５】
その後、ストレージノード３あるいはアクセスノード２は、各ストレージノード３から読み込まれたフラグメントデータを結合して、読み込み対象となるブロックデータＤを生成し（ステップ１７）、そのブロックデータＤを返却する（ステップＳ１８）。
【００６６】
（ハッシュテーブル再構築中の読み込み処理）
次に、図１１を参照して、ハッシュテーブル再構築中におけるデータ読み込み処理を説明する。バックアップサーバ４からの読み込み要求をアクセスノード２が受け取ると（ステップＳ２１）、管理している情報から、読み込み対象となるブロックデータＤのハッシュ値を確認する（ステップＳ２２）。そして、アクセスノード２は、読み込み対象となるブロックデータＤのハッシュ値を、全てのストレージノード３に分散させる（ステップＳ２３）。
【００６７】
続いて、各ストレージノード３は、それぞれ破線Ｃで囲まれた処理を行い、フラグメントデータの読み込みを行う。ここで、ストレージノード３は、自己であるストレージノード３に記憶されているハッシュテーブル３６が正常か否かを調べ（ステップＳ２４）、ハッシュテーブル３６が正常である場合には（ステップＳ２４：Ｎｏ）、上述した図１０に示すような通常の読み込み処理を実行する（ステップＳ２５）。一方、ストレージノード３は、自己であるストレージノード３に記憶されているハッシュテーブル３６が再構築中の場合は（ステップＳ２４：Ｙｅｓ）、次のような方法で読み込み対象のフラグメントデータを読み込む。なお、以下では、ハッシュテーブル３６が再構築中であるストレージノード３を特定のストレージノード３と記し、その他のストレージノード３を別のストレージノード３と記す。
【００６８】
はじめに、特定のストレージノード３は、ノード状態監視部３４を用いて、正常なストレージノード３のリストを取得する（ステップＳ２６）。正常なノードとは、ストレージサービスとしての機能が動作しており、ハッシュテーブル３６などのデータにアクセスできるノードである。正常なノードのリストから、同一のブロックデータＤから生成されたフラグメントデータが格納されているストレージノード３を探索する。
【００６９】
具体的に、特定のストレージノード３による目的となるフラグメントデータが格納されている別のストレージノード３の探索は、データ格納時におけるフラグメントデータの振り分け規則を用いることができる。ここで、フラグメントデータは、ブロックデータＤのハッシュ値の先頭２ビットを用いて格納される仮想ノードが決定し、各仮想ノードは、フラグメントデータが格納されたデータ格納用コンテナの位置情報を持っている。このため、特定のストレージノード３は、目的となるフラグメントデータにて構成されるブロックデータＤのハッシュ値から、当該フラグメントデータを持つ別のストレージノード３を特定する。
【００７０】
続いて、特定のストレージノード３は、目的のフラグメントデータを持つ別のストレージノード３に記憶されているハッシュテーブル３６に、ブロックデータＤのショートハッシュ値をキーとしてアクセスする。そして、特定のストレージノード３は、別のストレージノード３のハッシュテーブル３６から、目的のフラグメントデータのメタデータであり、当該別のストレージノード３に記憶されているインデックスデータにアクセスするための情報（インデックスファイルＩＤとオフセット）を取得する（ステップＳ２７）。そして、特定のストレージノード３は、別のストレージノード３から取得したインデックスデータから、ブロックデータＤのフルハッシュ値をキーとして、目的となるフラグメントデータのインデックスデータを特定する。これにより、特定のストレージノード３は、別のストレージノード３に記憶されている、読み込み対象のフラグメントデータが書き込まれた時刻を表すタイムスタンプを取得する（ステップＳ２８）。
【００７１】
続いて、特定のストレージノード３は、別のストレージノード３から取得したタイムスタンプを基にして、自己である特定のストレージノード３に記憶されているインデックスファイル３７を参照して、タイムスタンプの値が近いエントリであるインデックスデータを検索する（ステップＳ２９）。このとき、インデックスファイル３７内から検索するインデックスデータは、別のストレージノード３から取得したタイムスタンプの前後１分程度の範囲にあるタイムスタンプを有するインデックスデータとする。ここで、規則のないストレージの場合、タイムスタンプを基に全てのエントリを探索することは非効率であるが、本実施形態におけるストレージシステムの場合、インデックスファイルは実質として追記型のデータ構造を持っている。このため、インデックスファイル内のインデックスデータは、タイムスタンプ順に並んでいるため、タイムスタンプの値が近いインデックスデータの検索が容易となる。
【００７２】
続いて、特定のストレージノード３は、タイムスタンプから検索されたインデックスファイル内のエントリのフルハッシュ値を順に比較して、ハッシュ値が同一となるインデックスデータを探索する（ステップＳ３０）。ここで、対象のエントリが見つからなかった場合は、読み込みエラーとして上位に返却する。対象のエントリが見つかった場合は、当該エントリであるインデックスデータにて参照される格納ファイル３８からフラグメントデータを読み込む（ステップＳ３１）。その後、特定のストレージノード３あるいはアクセスノード２は、各ストレージノード３から読み込まれたフラグメントデータを結合して、読み込み対象となるブロックデータＤを生成して（ステップＳ３２）、そのブロックデータＤを返却する（ステップＳ３３）。
【００７３】
以上のように、本発明におけるストレージシステムでは、高速検索のために設けているハッシュテーブルが障害となり復旧処理をしている最中でも、読み込み性能が低下することを抑制して、動作を継続することができる。その理由を以下に説明する。
【００７４】
まず、本発明のストレージシステムでは、フラグメントデータを保存する格納ファイル、フラグメントデータのメタデータを保存するインデックスファイルは、全てのストレージノードで実質的に追記型のデータ構造を持っている。このため、各ファイル内のデータは、タイムスタンプ順に並ぶこととなる。従って、ハッシュテーブル再構築中の場合に、ハッシュテーブルから格納データの情報を取得できなくても、そのフラグメントデータが書かれた時間（タイムスタンプ）がおおよそわかれば、どのファイルにフラグメントデータが格納されているかは、容易に推測することができる。
【００７５】
また、本発明では、目的のブロックデータから生成された各フラグメントデータは、すぐに各ノードに分散格納されるため、これらのデータは近い時間帯に書き込まれる可能性が極めて高く、全てのフラグメントデータが持つタイムスタンプも近い値を持つ。そのため、他のフラグメントデータが書かれたタイムスタンプを取得することで、自ノードのフラグメントデータが書かれた時間が推測可能となる。
【００７６】
そして、ハッシュテーブル再構築中には、当該ハッシュテーブルを用いず、他のフラグメントデータが書かれたタイムスタンプのみを用いて自ノードの中から絞り込んでいる。このとき、上述したようにタイムスタンプ順にメタデータ等が並ぶ性質を持っているため、データを極めて精度高く絞り込むことができ、フラグメントデータの格納場所を高速に検索することができる。
【００７７】
ここで、上記では、まず、別のストレージノード３のハッシュテーブル３６を探索して、フラグメントデータのタイムスタンプを取得する場合を例示したが、かかる方法によりタイムスタンプを取得することに限定されない。例えば、読み込み対象となるブロックデータＤのフルハッシュ値から、別のストレージノード３に記憶されているインデックスデータを探索して、当該フルハッシュ値を含むインデックスデータを取得してタイムスタンプを特定してもよい。
【００７８】
また、上述したインデックスデータには、参照するフラグメントデータを記憶した時刻を表すタイムスタンプを含めて記憶したが、タイムスタンプに替えて他のデータを記憶してもよい。例えば、同一のブロックデータＤから生成されたフラグメントデータが同一のタイミングで書き込まれたことを表すような値からなるタイミング情報を、上記タイムスタンプに替えてインデックスデータ内に記憶してもよい。このとき、タイミング情報は、他のタイミングと区別できるような情報である。なお、上記タイムスタンプに替える情報としては、同一のブロックデータＤから生成されたフラグメントデータの書き込み時の状況を、他のブロックデータの書き込み時の状況とは区別できる情報（書き込み状況情報）であれば、いかなる情報であってもよい。
【００７９】
また、上記では、インデックスファイル３７及びハッシュテーブル３６を、参照するフラグメントデータが格納されたストレージノードに格納する場合を例示したが、本発明は、かかる構成に限定されない。例えば、インデックスファイル３７やハッシュテーブル３６は、いかなる記憶装置に記憶されていてもよい。但し、各インデックスファイルやハッシュテーブル３６は、参照するフラグメントデータが格納されたストレージノード毎に区別されて記憶されているとよい。
【００８０】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるストレージシステム１００（図１２参照）、プログラム、データ処理方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００８１】
（付記１）
記憶対象データを複数に分割した分割データを含む複数のフラグメントデータを生成して、当該複数のフラグメントデータを複数の記憶手段１２０にそれぞれ分散して記憶すると共に、
前記フラグメントデータを参照する情報と、当該フラグメントデータにて構成される前記記憶対象データのデータ内容に基づいて算出された要約データと、を関連付けたインデックスデータを、当該インデックスデータにて参照される前記フラグメントデータの記憶先となる前記記憶手段毎に区別して記憶し、
さらに、前記インデックスデータを参照する情報と、当該インデックスデータに含まれた前記要約データの一部からなる部分要約データと、を関連付けた要約テーブルを記憶する、
分散記憶処理手段１１１と、
検索要求データに対応する前記要約データに基づいて、前記要約テーブル及び前記インデックスデータを探索して、前記複数の記憶手段に記憶されている前記検索要求データを構成する複数のフラグメントデータを検索するデータ検索手段１１２と、を備え、
前記分散記憶処理手段１１１は、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込み時の状況を表す書き込み状況情報を含めて記憶し、
前記データ検索手段１１２は、前記要約テーブルの少なくとも一部が利用不可である場合に、当該利用不可である要約テーブルによって参照される前記インデックスデータにてさらに参照される前記フラグメントデータを記憶する特定の前記記憶手段とは別の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データの前記要約データに基づいて当該検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて前記特定の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ストレージシステム１００。
【００８２】
上記発明のストレージシステムによると、まず、データの書き込みの際には、記憶対象データから複数のフラグメントデータを生成し、これらを複数の記憶手段に分散記憶する。このとき、フラグメントデータを参照する情報と、フラグメントデータの書き込み状況情報と、記憶対象データの要約データと、を関連付けたインデックスデータを、記憶手段毎に区別して記憶する。さらに、インデックスデータを参照する情報と、記憶対象データの要約データの一部からなる部分要約データと、を関連付けた要約テーブルも記憶する。
【００８３】
また、ストレージシステムは、データの読み込み時に、対象となるデータ（検索対象データ）が既に記憶されているか否かの検索を行う。このとき、まず、検索対象データの要約データの一部である部分要約データを用いて、要約テーブルを探索してインデックスデータを特定する。そして、検索対象データの要約データを用いて、特定したインデックスデータを探索して、検索対象データが存在するか否かを確認する。これにより、記憶位置を特定したフラグメントデータを読み出して、ブロックデータを再生成することで、読込処理を行う。
【００８４】
そして、ストレージシステムは、要約テーブルの一部あるいは全部が利用不可である場合には、以下のようにして読み込み対象となるデータの検索を行う。まず、利用不可である要約テーブルに対応する特定の記憶手段とは異なる別の記憶手段に対応するインデックスデータから、検索対象データの要約データと一致するものと関連付けられたインデックスデータを探索して、検索対象データの一部のフラグメントデータ及びその書き込み状況情報を特定する。そして、この特定した書き込み状況情報を利用して、特定の記憶手段に対応するインデックスデータからも、検索対象データの要約データと一致するものと関連付けられたインデックスデータを探索して、残りのフラグメントデータを特定する。このように、検索対象データの一部のフラグメントデータの書き込み状況情報を利用することで、残りのフラグメントデータも容易かつ迅速に特定することができる。その結果、要約テーブルの少なくとも一部が利用できない場合であっても、容易かつ迅速にデータの検索を行うことができ、ストレージシステムの性能が低下することを抑制することができる。
【００８５】
（付記２）
付記１に記載のストレージシステムであって、
前記分散記憶処理手段は、前記要約テーブルを、当該要約テーブルにて参照される前記インデックスデータにてさらに参照される前記フラグメントデータの記憶先となる前記記憶手段毎に区別して記憶し、
前記データ検索手段は、前記検索対象データの前記要約データの一部である部分要約データに基づいて、前記別の記憶手段に対応する利用可能な前記要約テーブルを探索して、当該別の記憶手段に対応する前記インデックスデータを探索し、前記検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて前記特定の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ストレージシステム。
【００８６】
（付記３）
付記２に記載のストレージシステムであって、
前記分散記憶処理手段は、前記インデックスデータを、当該インデックスデータにて参照される前記フラグメントデータの記憶先となる前記記憶手段に記憶し、前記要約テーブルを、当該要約テーブルにて参照される前記インデックスデータにてさらに参照される前記フラグメントデータの記憶先となる前記記憶手段に記憶し、
前記データ検索手段は、前記特定の記憶手段に記憶された前記要約テーブルが利用不可である場合に、前記検索対象データの前記要約データの一部である部分要約データに基づいて、前記別の記憶手段に記憶されている利用可能な前記要約テーブルを探索して、当該別の記憶手段に記憶されている前記インデックスデータを探索し、前記検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて、前記要約テーブルが利用不可である前記特定の記憶手段に記憶されている前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ストレージシステム。
【００８７】
上記構成のストレージシステムによると、要約テーブルの一部が利用不可である場合には、まず、利用可能である要約テーブルのみを用いて、検索対象データの要約データと一致するものと関連付けられたインデックスデータを探索して、検索対象データの一部のフラグメントデータ及びその書き込み状況情報を特定する。そして、この特定した書き込み状況情報を利用して、利用不可である要約テーブルが関連するインデックスデータからも、残りのフラグメントデータを特定する。これにより、要約テーブルの一部が利用できない場合であっても、容易かつ迅速にデータの検索を行うことができ、ストレージシステムの性能が低下することを抑制することができる。
【００８８】
（付記４）
付記１乃至３のいずれかに記載のストレージシステムであって、
前記分散記憶処理手段は、１つの記憶対象データから生成された前記複数のフラグメントデータを同一のタイミングで前記複数の記憶手段にそれぞれ分散して記憶すると共に、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込みタイミングに基づく値を表す書き込みタイミング情報を、前記書き込み状況情報として含めて記憶し、
前記データ検索手段は、前記別の記憶手段に対応する前記インデックスデータから特定した前記検索対象データを構成する一部のフラグメントデータの前記書き込み状況情報である前記書き込みタイミング情報、及び、検索対象データの前記要約データに基づいて、前記特定の前記記憶手段に記憶されている前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ストレージシステム。
【００８９】
（付記５）
付記１乃至４のいずれかに記載のストレージシステムであって、
前記分散記憶処理手段は、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込み時刻に基づく値を表す書き込み時刻情報を、前記書き込み状況情報として含めて記憶し、
前記データ検索手段は、前記別の記憶手段に対応する前記インデックスデータから特定した前記検索対象データを構成する一部のフラグメントデータの前記書き込み状況情報である前記書き込み時刻情報、及び、検索対象データの前記要約データに基づいて、前記特定の前記記憶手段に記憶されている前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ストレージシステム。
【００９０】
（付記６）
付記５に記載のストレージシステムであって、
前記データ検索手段は、前記特定の記憶手段に対応する前記インデックスデータを探索して、前記特定した書き込み時刻情報を基準として前後する所定時間内の前記書き込み時刻情報が関連付けられた前記インデックスデータから、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ストレージシステム。
【００９１】
（付記７）
付記４乃至６のいずれかに記載のストレージシステムであって、
前記分散記憶処理手段は、前記複数のフラグメントデータを前記複数の記憶手段にそれぞれ分散して記憶する際に、当該各記憶手段内の記憶領域に順番に追記する、
ストレージシステム。
【００９２】
上記構成のストレージシステムによると、まず、分散記憶の際に、インデックスデータには、フラグメントデータの書き込みのタイミングや時刻を表す情報が記憶される。そして、ストレージシステムは、まず、利用可能な要約テーブルに対応するインデックスデータを探索して、検索対象データの一部のフラグメントデータ、及び、その書き込み状況情報である書き込みのタイミングや時刻の情報を特定する。そして、この特定した書き込みのタイミングや時刻の情報から、利用不可である要約テーブルが関連するインデックスデータからも、残りのフラグメントデータを特定する。このとき、書き込みのタイミングや時刻が近い情報が関連付けられたフラグメントデータを特定することができる。そして、各記憶手段内の記憶領域に、書き込まれた順番でフラグメントデータが格納されている場合には、書き込みのタイミングや時刻を基準としてフラグメントデータを探索することがさらに容易となる。その結果、要約テーブルの一部又は全部が利用できない場合であっても、容易かつ迅速にデータの検索を行うことができ、ストレージシステムの性能が低下することを抑制することができる。
【００９３】
（付記８）
ストレージシステムの制御装置に、
記憶対象データを複数に分割した分割データを含む複数のフラグメントデータを生成して、当該複数のフラグメントデータを複数の記憶手段にそれぞれ分散して記憶すると共に、
前記フラグメントデータを参照する情報と、当該フラグメントデータにて構成される前記記憶対象データのデータ内容に基づいて算出された要約データと、を関連付けたインデックスデータを、当該インデックスデータにて参照される前記フラグメントデータの記憶先となる前記記憶手段毎に区別して記憶し、
さらに、前記インデックスデータを参照する情報と、当該インデックスデータに含まれた前記要約データの一部からなる部分要約データと、を関連付けた要約テーブルを記憶する、
分散記憶処理手段と、
検索要求データに対応する前記要約データに基づいて、前記要約テーブル及び前記インデックスデータを探索して、前記複数の記憶手段に記憶されている前記検索要求データを構成する複数のフラグメントデータを検索するデータ検索手段と、
を実現させると共に、
前記分散記憶処理手段は、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込み時の状況を表す書き込み状況情報を含めて記憶し、
前記データ検索手段は、前記要約テーブルの少なくとも一部が利用不可である場合に、当該利用不可である要約テーブルによって参照される前記インデックスデータにてさらに参照される前記フラグメントデータを記憶する特定の前記記憶手段とは別の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データの前記要約データに基づいて当該検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて前記特定の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
ことを実現させるためのプログラム。
【００９４】
（付記８．１）
付記８に記載のプログラムであって、
前記分散記憶処理手段は、前記要約テーブルを、当該要約テーブルにて参照される前記インデックスデータにてさらに参照される前記フラグメントデータの記憶先となる前記記憶手段毎に区別して記憶し、
前記データ検索手段は、前記検索対象データの前記要約データの一部である部分要約データに基づいて、前記別の記憶手段に対応する利用可能な前記要約テーブルを探索して、当該別の記憶手段に対応する前記インデックスデータを探索し、前記検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて前記特定の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
プログラム。
【００９５】
（付記８．２）
付記８．１に記載のプログラムであって、
前記分散記憶処理手段は、前記インデックスデータを、当該インデックスデータにて参照される前記フラグメントデータの記憶先となる前記記憶手段に記憶し、前記要約テーブルを、当該要約テーブルにて参照される前記インデックスデータにてさらに参照される前記フラグメントデータの記憶先となる前記記憶手段に記憶し、
前記データ検索手段は、前記特定の記憶手段に記憶された前記要約テーブルが利用不可である場合に、前記検索対象データの前記要約データの一部である部分要約データに基づいて、前記別の記憶手段に記憶されている利用可能な前記要約テーブルを探索して、当該別の記憶手段に記憶されている前記インデックスデータを探索し、前記検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて、前記要約テーブルが利用不可である前記特定の記憶手段に記憶されている前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
プログラム。
【００９６】
（付記８．３）
付記８乃至８．２のいずれかに記載のプログラムであって、
前記分散記憶処理手段は、１つの記憶対象データから生成された前記複数のフラグメントデータを同一のタイミングで前記複数の記憶手段にそれぞれ分散して記憶すると共に、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込みタイミングに基づく値を表す書き込みタイミング情報を、前記書き込み状況情報として含めて記憶し、
前記データ検索手段は、前記別の記憶手段に対応する前記インデックスデータから特定した前記検索対象データを構成する一部のフラグメントデータの前記書き込み状況情報である前記書き込みタイミング情報、及び、検索対象データの前記要約データに基づいて、前記特定の前記記憶手段に記憶されている前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
プログラム。
【００９７】
（付記８．４）
付記８乃至８．３のいずれかに記載のプログラムであって、
前記分散記憶処理手段は、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込み時刻に基づく値を表す書き込み時刻情報を、前記書き込み状況情報として含めて記憶し、
前記データ検索手段は、前記別の記憶手段に対応する前記インデックスデータから特定した前記検索対象データを構成する一部のフラグメントデータの前記書き込み状況情報である前記書き込み時刻情報、及び、検索対象データの前記要約データに基づいて、前記特定の前記記憶手段に記憶されている前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
プログラム。
【００９８】
（付記９）
記憶対象データを複数に分割した分割データを含む複数のフラグメントデータを生成して、当該複数のフラグメントデータを複数の記憶手段にそれぞれ分散して記憶すると共に、
前記フラグメントデータを参照する情報と、当該フラグメントデータにて構成される前記記憶対象データのデータ内容に基づいて算出された要約データと、を関連付けたインデックスデータを、当該インデックスデータにて参照される前記フラグメントデータの記憶先となる前記記憶手段毎に区別して記憶し、
さらに、前記インデックスデータを参照する情報と、当該インデックスデータに含まれた前記要約データの一部からなる部分要約データと、を関連付けた要約テーブルを記憶する、
分散記憶処理を行い、
検索要求データに対応する前記要約データに基づいて、前記要約テーブル及び前記インデックスデータを探索して、前記複数の記憶手段に記憶されている前記検索要求データを構成する複数のフラグメントデータを検索するデータ検索処理を行う、データ処理方法であって、
前記分散記憶処理の際に、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込み時の状況を表す書き込み状況情報を含めて記憶し、
前記データ検索処理の際に、前記要約テーブルの少なくとも一部が利用不可である場合に、当該利用不可である要約テーブルによって参照される前記インデックスデータにてさらに参照される前記フラグメントデータを記憶する特定の前記記憶手段とは別の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データの前記要約データに基づいて当該検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて前記特定の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
データ処理方法。
【００９９】
（付記１０）
付記９に記載のデータ処理方法であって、
前記分散記憶処理の際に、前記要約テーブルを、当該要約テーブルにて参照される前記インデックスデータにてさらに参照される前記フラグメントデータの記憶先となる前記記憶手段毎に区別して記憶し、
前記データ検索処理の際に、前記検索対象データの前記要約データの一部である部分要約データに基づいて、前記別の記憶手段に対応する利用可能な前記要約テーブルを探索して、当該別の記憶手段に対応する前記インデックスデータを探索し、前記検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて前記特定の記憶手段に対応する前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
データ処理方法。
【０１００】
（付記１０．１）
付記１０に記載のデータ処理方法であって、
前記分散記憶処理の際に、前記インデックスデータを、当該インデックスデータにて参照される前記フラグメントデータの記憶先となる前記記憶手段に記憶し、前記要約テーブルを、当該要約テーブルにて参照される前記インデックスデータにてさらに参照される前記フラグメントデータの記憶先となる前記記憶手段に記憶し、
前記データ検索処理の際に、前記特定の記憶手段に記憶された前記要約テーブルが利用不可である場合に、前記検索対象データの前記要約データの一部である部分要約データに基づいて、前記別の記憶手段に記憶されている利用可能な前記要約テーブルを探索して、当該別の記憶手段に記憶されている前記インデックスデータを探索し、前記検索対象データを構成する一部の前記フラグメントデータ及び当該フラグメントデータの前記書き込み状況情報を特定し、この特定した書き込み状況情報及び検索対象データの前記要約データに基づいて、前記要約テーブルが利用不可である前記特定の記憶手段に記憶されている前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
データ処理方法。
【０１０１】
（付記１０．２）
付記９乃至１０．１のいずれかに記載のデータ処理方法であって、
前記分散記憶処理の際に、１つの記憶対象データから生成された前記複数のフラグメントデータを同一のタイミングで前記複数の記憶手段にそれぞれ分散して記憶すると共に、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込みタイミングに基づく値を表す書き込みタイミング情報を、前記書き込み状況情報として含めて記憶し、
前記データ検索処理の際に、前記別の記憶手段に対応する前記インデックスデータから特定した前記検索対象データを構成する一部のフラグメントデータの前記書き込み状況情報である前記書き込みタイミング情報、及び、検索対象データの前記要約データに基づいて、前記特定の前記記憶手段に記憶されている前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
データ処理方法。
【０１０２】
（付記１０．３）
付記９乃至１０．２のいずれかに記載のデータ処理方法であって、
前記分散記憶処理の際に、前記インデックスデータに、当該インデックスデータにて参照される前記フラグメントデータの書き込み時刻に基づく値を表す書き込み時刻情報を、前記書き込み状況情報として含めて記憶し、
前記データ検索処理の際に、前記別の記憶手段に対応する前記インデックスデータから特定した前記検索対象データを構成する一部のフラグメントデータの前記書き込み状況情報である前記書き込み時刻情報、及び、検索対象データの前記要約データに基づいて、前記特定の前記記憶手段に記憶されている前記インデックスデータを探索して、前記検索対象データを構成する他の前記フラグメントデータを特定する、
データ処理方法。
【０１０３】
（付記１０．４）
付記１０．３に記載のデータ処理方法であって、
前記データ検索手段は、前記特定の記憶手段に対応する前記インデックスデータを探索して、前記特定した書き込み時刻情報を基準として前後する所定時間内の前記書き込み時刻情報が関連付けられた前記インデックスデータから、前記検索対象データを構成する他の前記フラグメントデータを特定する、
データ処理方法。
【０１０４】
（付記１０．５）
付記１０．２乃至１０．４のいずれかに記載のデータ処理方法であって、
前記分散記憶処理の際に、前記複数のフラグメントデータを前記複数の記憶手段にそれぞれ分散して記憶する際に、当該各記憶手段内の記憶領域に順番に追記する、
ストレージシステム。
【０１０５】
なお、上述したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【０１０６】
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【０１０７】
１  ストレージシステム
２  アクセスノード
２１  Ｉ／Ｏ処理部
２２  データ送受信部
２３  重複判定部
３  ストレージノード
３１  フラグメント処理部
３２  フラグメント探索部
３３  タイムスタンプ取得部
３４  ノード状態監視部
３５  ディスク
３６  ハッシュテーブル
３７  インデックスファイル
３８  格納ファイル
４  バックアップシステム
５  バックアップ対象装置
１００  ストレージシステム
１１１  分散記憶処理手段
１１２  データ検索手段
１２０  記憶手段
【図１】
2015153067.tif 000003
【図２】
2015153067.tif 000004
【図３】
2015153067.tif 000005
【図４】
2015153067.tif 000006
【図５】
2015153067.tif 000007
【図６】
2015153067.tif 000008
【図７】
2015153067.tif 000009
【図８】
2015153067.tif 000010
【図９】
2015153067.tif 000011
【図１０】
2015153067.tif 000012
【図１１】
2015153067.tif 000013
【図１２】
2015153067.tif 000014