(57)【特許請求の範囲】
【請求項１】
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部と、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部と、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更するデータ再配置部と、
を備え、
前記参照数管理部は、前記記憶対象データ毎の所定期間内における前記参照数の変化を計測し、
前記データ再配置部は、前記参照数の変化が他と比較して少ない前記記憶対象データを、次の交換対象とされている他の記憶装置に格納する、
ストレージ装置。
【請求項２】
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部と、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部と、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更するデータ再配置部と、
を備え、
前記参照数管理部は、前記記憶対象データ毎の所定期間内における前記参照数の変化を計測し、
前記データ再配置部は、前記参照数の変化が他と比較して多い前記記憶対象データを、次の交換対象とされていない他の記憶装置に格納する、
ストレージ装置。
【請求項３】
請求項１に記載のストレージ装置であって、
前記記憶装置毎に、当該記憶装置の交換順序を管理する記憶装置管理部を備え、
前記データ再配置部は、前記参照数の変化が他と比較して少ない前記記憶対象データを、前記交換順序に基づいて次の交換対象とされている他の記憶装置に格納する、
ストレージ装置。
【請求項４】
請求項３に記載のストレージ装置であって、
前記データ格納制御部は、前記交換順序に基づいて次の交換対象とされていない前記記憶装置に、新たに記憶する前記記憶対象データを格納する、
ストレージ装置。
【請求項５】
請求項１乃至４のいずれいか一項に記載のストレージ装置であって、
前記データ再配置部は、前記記憶装置毎の容量使用率の差が一定値以上である場合に作動する、
ストレージ装置。
【請求項６】
情報処理装置に、
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部と、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部と、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更するデータ再配置部と、
を実現させると共に、
前記参照数管理部は、前記記憶対象データ毎の所定期間内における前記参照数の変化を計測し、
前記データ再配置部は、前記参照数の変化が他と比較して少ない前記記憶対象データを、次の交換対象とされている他の記憶装置に格納する、
ことを実現させるためのプログラム。
【請求項７】
情報処理装置に、
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部と、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部と、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更するデータ再配置部と、
を実現させると共に、
前記参照数管理部は、前記記憶対象データ毎の所定期間内における前記参照数の変化を計測し、
前記データ再配置部は、前記参照数の変化が他と比較して多い前記記憶対象データを、次の交換対象とされていない他の記憶装置に格納する、
ことを実現させるためのプログラム。
【請求項８】
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御を行い、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶し、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更する、データ格納方法であり、
前記記憶対象データ毎の所定期間内における前記参照数の変化を計測し、
前記参照数の変化が他と比較して少ない前記記憶対象データを、次の交換対象とされている他の記憶装置に格納する、
データ格納方法。
【請求項９】
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御を行い、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶し、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更する、データ格納方法であり、
前記記憶対象データ毎の所定期間内における前記参照数の変化を計測し、
前記参照数の変化が他と比較して多い前記記憶対象データを、次の交換対象とされていない他の記憶装置に格納する、
データ格納方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムにかかり、特に、データを分散して複数の記憶装置に記憶するストレージシステムに関する。
【背景技術】
【０００２】
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。
【０００３】
このような状況に応じて、近年では、特許文献１に示すように、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、データを分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置が特定される。
【０００４】
具体的に、コンテンツアドレスストレージシステムでは、所定のデータを複数のフラグメントに分割すると共に、冗長データとなるフラグメントをさらに付加して、これら複数のフラグメントをそれぞれ複数の記憶装置にそれぞれ格納している。そして、後に、コンテンツアドレスを指定することにより、当該コンテンツアドレスにて特定される格納位置に格納されているデータつまりフラグメントを読み出し、複数のフラグメントから分割前の所定のデータを復元することができる。このようにすることで、データへのアクセス性能を高めつつ、フラグメントのいくつかを消失した場合であってもデータを復元でき、耐障害性を高めている。
【０００５】
また、上記コンテンツアドレスは、データの内容に応じて固有となるよう生成される。このため、重複データであれば同じ格納位置のデータを参照することで、同一内容のデータを取得することができる。従って、重複データを別々に格納する必要がなく、重複記録を排除し、データ容量の削減を図ることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２３５１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、上述したようなデータを複数の記憶装置に分散して格納するコンテンツアドレスストレージシステムでは、ハードウェア保守の期限切れやスペック不足等の理由によって、古い記憶装置を新しい記憶装置に交換する必要が生じる。ところが、記憶装置の交換中は、交換対象の記憶装置に格納されているフラグメントを構成要素とするブロックデータの読み出しは、上述したように冗長データが付加されているため可能ではあるが、通常時と比較して、当該ブロックデータの読み出し性能が低下する。
【０００８】
具体的には、上述した複数の記憶装置へのデータの分散格納は、全てのブロックデータに対して同様に行われている。つまり、記憶装置の交換中に読み出される可能性が高いデータブロックと読み出される可能性が低いブロックデータを意識することなく、記憶装置群に分散して格納している。従って、記憶装置の交換中に、特に、アクセスされる頻度が高いデータブロックの読み出し性能が低下する、という問題が生じる。
【０００９】
このため、本発明の目的は、上述した課題である、記憶装置の交換時において読み出し性能が低下する、ということを解決することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明の一形態であるストレージ装置は、
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている上記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている上記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部と、
記憶装置に記憶されている上記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部と、
上記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている上記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更するデータ再配置部と、
を備えた、という構成をとる。
【００１１】
また、本発明の他の形態であるプログラムは、
情報処理装置に、
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部と、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部と、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更するデータ再配置部と、
を実現させるためのプログラムである。
【００１２】
さらに、本発明の他の形態であるデータ格納方法は、
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御を行い、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶し、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更する、
という構成をとる。
【発明の効果】
【００１３】
本発明は、以上のように構成されることにより、記憶装置の交換時において読み出し性能の向上を図ることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態１におけるストレージシステムを含むシステム全体の構成を示すブロック図である。
【図２】本発明の実施形態１におけるストレージシステムの構成の概略を示すブロック図である。
【図３】本発明の実施形態１におけるストレージシステムの構成を示す機能ブロック図である。
【図４】図３に開示したストレージシステムにおけるデータ記憶処理の様子を説明するための説明図である。
【図５】図３に開示したストレージシステムにおけるデータ記憶処理の様子を説明するための説明図である。
【図６】図３に開示したストレージシステムに記憶されるコンテンツアドレス管理テーブルの一例を示す図である。
【図７】図３に開示したストレージシステムに記憶されるストレージノード管理テーブルの一例を示す図である。
【図８】図３に開示したストレージシステムの動作を示すフローチャートである。
【図９】図３に開示したストレージシステムの動作を示すフローチャートである。
【図１０】図３に開示したストレージシステムの動作を示すフローチャートである。
【図１１】本発明の付記におけるストレージシステムの構成を示す機能ブロック図である。
【発明を実施するための形態】
【００１５】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図１０を参照して説明する。図１乃至図７は、ストレージシステムの構成を説明するための図であり、図８乃至図１０は、ストレージシステムの動作を説明するための図である。
【００１６】
ここで、本実施形態は、後述する付記に記載のストレージシステムの具体的な一例を示すものである。そして、以下では、ストレージシステムが、複数台のサーバコンピュータが接続されて構成されている場合を説明する。但し、本発明におけるストレージシステムは、複数台のコンピュータにて構成されることに限定されず、１台のコンピュータで構成されていてもよい。
【００１７】
［構成］
図１に示すように、本発明におけるストレージシステム１００は、ネットワークＮを介してバックアップ処理を制御するバックアップシステム１０１に接続している。そして、バックアップシステム１０１は、ネットワークＮを介して接続されたバックアップ対象装置１０２に格納されている記憶対象データ（バックアップ対象データ）を取得し、ストレージシステム１００に対して記憶するよう要求する。これにより、ストレージシステム１００は、記憶要求された記憶対象データをバックアップ用に記憶する。
【００１８】
そして、図２に示すように、本実施形態におけるストレージシステム１００は、複数のサーバコンピュータが接続された構成を採っている。具体的に、ストレージシステム１００は、ストレージシステム１００自体における記憶再生動作を制御するサーバコンピュータであるアクセラレータノード１０と、データを格納する記憶装置を備えたサーバコンピュータであるストレージノード２０と、を備えている。なお、図２や図３では、１台のアクセラレータノード１０と複数台のストレージノード２０とを図示しているが、アクセラレータノード１０の数とストレージノード２０の数は、図２，３に示したものに限定されず、さらに多くの各ノード１０，２０が接続されて構成されていてもよい。
【００１９】
さらに、本実施形態におけるストレージシステム１００は、データを分割及び冗長化し、分散して複数の記憶装置に記憶すると共に、記憶するデータの内容に応じて設定される固有のコンテンツアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレスストレージシステムである。
【００２０】
なお、以下では、上述したようにストレージシステム１００をアクセラレータノード１０とストレージノード２０とに分けて説明するが、以下に説明する構成及び機能は、アクセラレータノード１０あるいはストレージノード２０のいずれに備えられていてもよい。なお、ストレージシステム１００は、図２，３に示すように、必ずしもアクセラレータノード１０とストレージノード２０とを備えていることに限定されず、いかなる構成であってもよく、例えば、１台のコンピュータにて構成されていてもよい。
【００２１】
図３に、ストレージシステム１００を構成するアクセラレータノード１０及びストレージノード２０の構成を示す。まず、ストレージノード２０は、演算装置と記憶装置とを備えた一般的な情報処理装置であり、図３に示すように、アクセラレータノード１０から記憶要求されたデータを格納する記憶装置２１を１台又は複数台備えている。
【００２２】
また、アクセラレータノード１０も、演算装置と記憶装置とを備えた一般的な情報処理装置であり、図３に示すように、ＣＰＵ（Central Processing Unit）などの演算装置にプログラムが組み込まれることで構築された、データ格納処理部１１と、参照数管理部１２と、データ再配置部１３と、記憶装置管理部１４と、を備えている。また、アクセラレータノード１０は、記憶装置に形成されたコンテンツアドレス管理テーブル１５と、ストレージノード管理テーブル１６と、を備えている。以下、各構成について詳述する。
【００２３】
まず、上記記憶装置管理部１４について説明する。記憶装置管理部１４は、上述した各ストレージノード２０に装備された各記憶装置２１の交換順序を、ストレージノード管理テーブル１６にて管理する。具体的に、記憶装置管理部１４は、ストレージノード２０が管理者などによって交換されると、ストレージノード管理テーブル１６内において、交換されたストレージノード２０の識別情報（ストレージノードＩＤ）に関連付けた「ノード交換順序」を「１」に設定する。そして、交換されていない他のストレージノード２０の「ノード交換順序」は、交換前の値に１加算する。このため、「ノード交換順序」の値は、他のストレージノード２０が交換される度に増加するため、交換から時間が経過しているものほど大きくなる。なお、ストレージノード管理テーブルの一例を、図７に示す。
【００２４】
また、記憶装置管理部１４は、ストレージノード管理テーブル１６にて、各ストレージノード２０が「新規データ書き込み対象か否か」ということを管理している。具体的には、上述した「ノード交換順序」の値が大きい方から、同時に交換するストレージノードの数分だけ選択して、当該選択したストレージノード２０を次に交換するストレージノードとして設定する。この場合には、選択されたストレージノード２０のＩＤに関連付けられた「新規データ書き込み対象か否か」の項目に、「Ｎｏ」という情報を設定する。一方、それ以外のストレージノード２０は、次の交換対象ではないとして、そのＩＤに関連付けられた「新規データ書き込み対象か否か」の項目に、「Ｙｅｓ」という情報を設定する。つまり、交換されてから多くの時間が経過したストレージノード２０が、古い順に、次の交換対象として設定されて、その他のもの、つまり、交換されてから新しいものは、新しい順に、次の交換対象ではなく、新規データの格納対象となるストレージノードとして設定される。
【００２５】
次に、データ格納処理部１１（データ格納制御部）について説明する。データ格納処理部１１によるコンテンツアドレスを用いた記憶対象データの格納処理について説明する。データ格納処理部１１は、まず、記憶対象データＡの入力を受けると、図４及び図５の矢印Ｙ２に示すように、当該記憶対象データＡを、所定容量（例えば、６４ＫＢ）のブロックデータＤに分割する。そして、このブロックデータＤのデータ内容に基づいて、当該データ内容を代表する固有のハッシュ値Ｈを算出する（矢印Ｙ３）。例えば、ハッシュ値Ｈは、予め設定されたハッシュ関数を用いて、ブロックデータＤのデータ内容から算出する。
【００２６】
そして、上記データ格納処理部１１は、ブロックデータＤのハッシュ値Ｈを用いて、当該ブロックデータＤが既に記憶装置２１に格納されているか否かを調べる。具体的には、まず、既に格納されているブロックデータＤは、後述するように、そのハッシュ値Ｈが含まれた格納位置を表すコンテンツアドレスＣＡが、コンテンツアドレス管理テーブル１５に登録されている。従って、格納前に算出したブロックデータＤのハッシュ値Ｈがコンテンツアドレス管理テーブル１５内に存在していない場合には、まだ同一内容のブロックデータＤが記憶されていないと判断でき、ハッシュ値Ｈがコンテンツアドレス管理テーブル１５内に存在している場合には、既に同一内容のブロックデータＤが記憶されていると判断できる（図５の矢印Ｙ４）。
【００２７】
そして、上記データ格納処理部１１は、まだ同一のブロックデータＤが記憶されていないと判断されたブロックデータＤを圧縮して、図５の矢印Ｙ５に示すように、複数の所定の容量のフラグメントデータに分割する。例えば、図４の符号Ｄ１〜Ｄ９に示すように、９つのフラグメントデータ（分割データ３１）に分割する。さらに、データ格納処理部１１は、分割したフラグメントデータのうちいくつかが欠けた場合であっても、元となるブロックデータを復元可能なよう冗長データを生成し、上記分割したフラグメントデータ３１に追加する。例えば、図４の符号Ｄ１０〜Ｄ１２に示すように、３つのフラグメントデータ（冗長データ３２）を追加する。これにより、９つの分割データ３１と、３つの冗長データ３２とにより構成される１２個のフラグメントデータからなるデータセット３０を生成する。
【００２８】
続いて、データ格納処理部１１は、生成されたデータセットを構成する各フラグメントデータを、記憶装置に形成された各記憶領域に、それぞれ分散して格納する。例えば、図４に示すように、１２個のフラグメントデータＤ１〜Ｄ１２を生成した場合には、１２個の記憶装置内にそれぞれ形成したデータ格納ファイルに、各フラグメントデータＤ１〜Ｄ１２を１つずつそれぞれ格納する（図５の矢印Ｙ６参照）。このとき、データ格納処理部１１は、図７に示すようなストレージノード管理テーブル１６を参照して、「新規データ書き込み対象か否か」の項目が「Ｙｅｓ」となっているストレージノード２０に書き込む。つまり、交換されてから他と比較してまだ新しく次の交換対象とされていないストレージノード２０に、新規データを格納する。
【００２９】
また、データ格納処理部１１は、上述したように記憶装置に格納したフラグメントデータＤ１〜Ｄ１２の格納位置、つまり、当該フラグメントデータＤ１〜Ｄ１２にて復元されるブロックデータＤの格納位置を表す、コンテンツアドレスＣＡを生成して管理する。具体的には、格納したブロックデータＤの内容に基づいて算出したハッシュ値Ｈの一部（ショートハッシュ）（例えば、ハッシュ値Ｈの先頭８Ｂ（バイト））と、論理格納位置を表す情報と、を組み合わせて、コンテンツアドレスＣＡを生成する（図５の矢印Ｙ７）。そして、アクセラレータノード１０は、記憶対象データのファイル名などの識別情報と、コンテンツアドレスＣＡとを関連付けてファイルシステムで管理すると共に、図６に示すようなコンテンツアドレス管理テーブル１５に、生成したコンテンツアドレスＣＡの新規エントリを追加する。
【００３０】
ここで、上記コンテンツアドレス管理テーブル１５について説明する。コンテンツアドレス管理テーブル１５は、データ格納処理部１１にて各ストレージノード２０に格納したブロックデータＤの格納位置を、当該ブロックデータＤの内容に応じて特定されるコンテンツアドレスを用いて管理したものである。具体的には、上述したように新規にブロックデータＤが格納されると、図６に示すように、コンテンツアドレス管理テーブル１５に新規エントリを追加し、当該ブロックデータＤに対応するコンテンツアドレスＣＡに関連付けて、実際にブロックデータＤのフラグメントを格納した格納位置を表す情報を、「フラグメント格納先アドレス」の項目に記憶する。これにより、コンテンツアドレスＣＡに関連付けられた格納先アドレスを参照することで、ブロックデータＤを読み出すことができる。
【００３１】
また、上述したコンテンツアドレス管理テーブル１５は、図６に示すように、コンテンツアドレスに関連付けて、「参照数」、「直近１ヶ月間の参照数変化」、「再配置済みか否か」、を表す情報を記憶している。このとき、「参照数」とは、コンテンツアドレスが参照されている数、つまり、コンテンツアドレスが参照する格納先アドレスに格納されているブロックデータＤが他のブロックデータの格納先を示すべく参照されている数、を表している。そして、この「参照数」は、参照数管理部１２にて管理されており、例えば、新規にブロックデータが格納された際には、参照数が「１」となる。また、後述するように、コンテンツアドレスが他のブロックデータの格納先として当該他のブロックデータから参照された場合には、上記参照数が１ずつ加算される。なお、他の情報については後述する。
【００３２】
また、上述したデータ格納処理部１１は、記憶対象データのブロックデータＤのハッシュ値Ｈが既にコンテンツアドレス管理テーブル１５に存在している場合、つまり、既に同一内容のブロックデータＤが格納されている場合には、格納前のブロックデータＤのハッシュ値Ｈと一致したハッシュ値が含まれるコンテンツアドレスＣＡを、コンテンツアドレス管理テーブル１５から取得する。そして、このコンテンツアドレスＣＡを、記憶要求にかかるブロックデータＤの格納先を表すコンテンツアドレスＣＡとする。これにより、このコンテンツアドレスＣＡにて参照される既に格納されているデータが、記憶要求されたブロックデータＤとして使用されることとなり、当該記憶要求にかかるブロックデータＤは記憶する必要がなくなる。そして、参照数管理部１２が、コンテンツアドレス管理テーブル１５内の対応するコンテンツアドレスＣＡの「参照数」を、「１」加算する。
【００３３】
また、参照数管理部１２は、定期的に、例えば、毎月１回、コンテンツアドレス管理テーブル１５内の各コンテンツアドレスの参照数をチェックし、前回チェック時からの変化数を算出する。つまり、各コンテンツアドレスの参照数が先月に比べていくつ変化したかを表す直近１カ月間の参照数の変化数を算出して、コンテンツアドレス管理テーブル１５内の「直近１ヶ月間の参照数変化」の項目の値を更新する。ここで、毎月１回というのは、一例であり、任意の期間毎における参照数の変化を算出してもよい。
【００３４】
また、データ再配置部１３は、一定期間毎に動作して、ストレージノード管理テーブル１６内の「直近１カ月間の参照数変化」の項目の値を調べる。そして、「直近１ヶ月間の参照数変化」の値が最も小さいブロックデータを特定して、当該ブロックデータを読み出す。なお、このとき、「直近１ヶ月間の参照数変化」の値が最も小さいブロックデータだけでなく、小さい方から予め設定された順番までのブロックデータを特定して読み出してもよい。
【００３５】
続いて、データ再配置部１３は、読み込んだブロックデータを、ストレージノード管理テーブル１６を参照して、新規書き込み対象ではないストレージノード２０、つまり、次の交換対象となっているストレージノード２０に書き込んで再配置する。その後、再配置する前のブロックデータのフラグメントデータを削除して、コンテンツアドレス管理テーブル１５の当該フラグメント格納先アドレスを変更して、さらに「再配置済みか否か」の項目を「Ｙｅｓ」に変更する。これにより、ブロックデータの実データの格納位置は変更されるが、ブロックデータの再配置を行った後であっても当該ブロックデータのコンテンツアドレスは変わっていないので、外部からは引き続き同一のコンテンツアドレスで当該ブロックデータにアクセスすることができる。
【００３６】
なお、上記データ再配置部１３は、例えば、新規データ書き込み対象となっているストレージノードと、対象となっていないストレージノードと、の容量使用率の差が一定値以上であったときに作動する。ここで、容量使用率とは、各ストレージノードに装備された記憶装置の記憶容量に対する実際に使用されている容量の割合である。従って、ストレージノード２０間で、容量使用率が偏っている場合には、上述したように、参照数の変化が他と比較して少ないブロックデータを、次の交換対象となっているストレージノード２０に再配置する処理を実行する。但し、ブロックデータの再配置の実施するタイミングは、上述したタイミングに限定されず、いかなるタイミングであってもよい。
【００３７】
［動作］
次に、上述したアクセラレータノード１０の動作を、図８乃至図１０のフローチャートを参照して説明する。特に、以下では、上述したデータ格納処理部１１と、参照数管理部１２と、データ再配置部１３との動作を説明する。
【００３８】
まず、データ格納処理部１１は、ファイルの書込み要求があると（ステップＳ１）、当該ファイルを複数のブロックデータに分割して、このブロックデータを記憶対象とする。そして、ブロックデータ毎にハッシュ値を計算し（ステップＳ２）、このハッシュ値と同じデータが既に記憶されているか判定する。例えば、コンテンツアドレス管理テーブル１５に記憶されているハッシュ値を含むコンテンツアドレスを調べて、その一部であるハッシュ値に相当する部分に、同一のデータが記憶されているかを調べる。なお、同一データが既に記憶されているか否かの処理は、例えば、既に格納したブロックデータのハッシュ値を他の方法で記憶保持しており、この記憶保持しているハッシュ値と、新たに記憶するブロックデータから算出したハッシュ値とを比較して行ってもよい。
【００３９】
そして、新たに記憶するブロックデータと同一データが記憶されていないと判定された場合には（ステップＳ３：Ｎｏ）、図４に示すように、新たに記憶するブロックデータＤを圧縮して分割し（符号３１）、さらに冗長データ（符号３２）を付加した複数のフラグメントデータからなるデータセット３０を生成する（ステップＳ４）。そして、ストレージノード管理テーブル１６を参照して、新規書き込み対象の項目がＹｅｓであるストレージノード２０に、ブロックデータを構成する複数のフラグメントデータを、分散して記憶する（ステップＳ５）。その後、コンテンツアドレス管理テーブル１５に新規エントリを追加する。
【００４０】
続いて、新たに記憶するブロックデータと同一データが記憶されていると判定された場合（ステップＳ３：Ｙｅｓ）の動作について説明する。この場合には、新たな記憶対象となっているブロックデータを記憶せず、既に記憶されているブロックデータを参照する。つまり、新たな記憶対象のブロックデータの格納位置として、既に記憶されているブロックデータのコンテンツアドレスを参照する。そして、そのコンテンツアドレスが参照されている数、つまり、コンテンツアドレス管理テーブル１５内に記憶されているデータブロックの参照数を加算して、更新する（ステップＳ７）。
【００４１】
次に、参照数管理部１２の動作を、図９を参照して説明する。参照数管理部１２は、毎月１回、コンテンツアドレス管理テーブル１５内の各コンテンツアドレスの参照数をチェックする（ステップＳ１１）。そして、前回チェック時との変化数を、コンテンツアドレス管理テーブル１５の直近１ヶ月間の参照数変位の値として更新する（ステップＳ９）。ここで、毎月１回というのは、一例であり、任意の期間毎のチェックでもよい。
【００４２】
ここで、記憶装置管理部１４によるストレージノード管理テーブル１６の更新、つまり、ノード交換順序の更新について説明する。記憶装置管理部１４は、ストレージノード２０が交換される度に実行され、ストレージノード管理テーブル１６の更新を行う。具体的には、交換されたストレージノード２０の「ノード交換順序」を「１」に初期化し、交換されていない他のストレージノード２０の「ノード交換順序」を「１」加算する。これにより、「ノード交換順序」の値は、他のストレージノード２０が交換される度に増加し、交換から時間が経過しているストレージノードの「ノード交換順序」ほど大きくなる。そして、「ノード交換順序」の値が大きい方から、同時に交換するストレージノードの数分だけ選択して、当該選択したストレージノード２０を次に交換するストレージノードとして設定し、ストレージノード管理テーブル１６内の「新規データ書き込み対象か否か」の項目を「Ｎｏ」に設定する。その他の「新規データ書き込み対象か否か」の項目は「Ｙｅｓ」に設定する。
【００４３】
次に、データ再配置部１３の動作を、図１０を参照して説明する。データ再配置部１３は、一定期間毎に動作して、ストレージノード管理テーブル１６を参照して、新規データ書き込み対象となっているストレージノードと、対象となっていないストレージノードと、の容量使用率を比較する（ステップＳ２１）。ここで、容量使用率の差が一定値以上ではなかった場合には（ステップＳ２２：Ｎｏ）、処理を終了する。
【００４４】
一方、容量使用率の差が一定値以上であった場合には（ステップＳ２２：Ｙｅｓ）、コンテンツアドレス管理テーブル１５を参照して、直近１ヶ月間の参照数変位が最も小さいブロックデータを再配置対象のブロックデータとして特定して（ステップＳ２３）、当該ブロックデータを読み出す（ステップＳ２４）。続いて、読み込んだブロックデータを新規書き込み対象ではないストレージノード、つまり、次の交換対象となっているストレージノードに書き込み、当該ブロックデータを再配置する（ステップＳ２５）。
【００４５】
その後、再配置する前のブロックデータのフラグメントデータを削除して（ステップＳ２６）、コンテンツアドレス管理テーブル１５の当該フラグメント格納先アドレスを変更し、さらに再配置済みをＹｅｓに変更する（ステップＳ１７）。なお、ブロックデータの再配置を行った後も、当該ブロックデータのコンテンツアドレスは変わっていないので、外部からは引き続き同一のコンテンツアドレスで当該ブロックデータにアクセスすることができる。
【００４６】
以上のように、本発明によると、コンテンツアドレスストレージシステムにおいて、記憶装置（ストレージノード）の交換時であっても、利用者の影響を抑制することができる。その理由は、格納済みのブロックデータの参照数の所定期間内における変化が少ないものは直近でアクセスされる可能性の低いブロックデータであると判断できるため、かかるブロックデータを次回交換対象の記憶装置に格納するからである。逆に言うと、アクセスされる可能性の高いブロックデータは、全て次回の交換対象外の記憶装置に格納することで、記憶装置交換時の影響を受けないようにしている。なお、ブロックデータの再配置を行った後も、当該ブロックデータのコンテンツアドレスは変わっていないので、引き続き同一のコンテンツアドレスで当該ブロックデータにアクセスすることが可能である。
【００４７】
従って、本発明のストレージシステムでは、記憶装置交換時の性能低下の影響を抑制しつつ、古くなった記憶装置を交換することができるため、運用が容易となり、信頼性の向上を図ることができる。
【００４８】
ここで、上記では、ブロックデータの参照数の所定期間内の変化が少ないものを、次の交換対象とされているストレージノードに再配置する場合を例示したが、逆に、参照数の所定期間内の変化が多いものを、次の交換対象とされていないストレージノードに再配置してもよい。これにより、結果として、次の交換対象とされているストレージノードには、ブロックデータの参照数の所定期間内の変化が少ないもの、つまり、直近でアクセスされる可能性の低いブロックデータが集まることとなり、上述同様に、記憶装置交換時における性能低下を抑制することができる。
【００４９】
また、上記では、ストレージノードが次の交換対象であるか、あるいは、新規データ書き込み対象であるか、ということを、交換されてからの時間を反映した情報（ノード交換順序）にて決定していたが、かかる方法に限定されない。例えば、管理者などにより予めノード交換の順番が設定されており、その設定された順番に応じて、次の交換対象や新規データ書き込み対象のストレージノードが決定されてもよい。
【００５０】
さらに、上記では、ブロックデータの参照数の変化の値に応じて、当該ブロックデータの再配置を行う場合を説明したが、ブロックデータの参照数の値に応じて、当該ブロックデータの再配置を行ってもよい。例えば、記憶されてから所定時間内における参照数の値が他と比較して小さいブロックデータを、次の交換対象となるストレージノードに再配置してもよい。あるいは、記憶されてから所定時間内における参照数の値が他と比較して大きいブロックデータを、次の交換対象ではないストレージノードに再配置してもよい。このようにすることで、参照数が少なくアクセスされる可能性の低いブロックデータが、次の交換対象となるストレージノードに集まることとなり、上述同様に、記憶装置交換時における性能低下を抑制することができる。
【００５１】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるストレージ装置２１０の構成の概略について図１１を参照して説明する。また、本発明における、プログラム、データ格納方法の構成について説明する。但し、本発明は、以下の構成に限定されない。
【００５２】
（付記１）
記憶対象データを記憶装置２２０に格納すると共に、当該記憶装置２２０に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置２２０に格納する場合に、当該記憶装置２２０に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部２１１と、
記憶装置２２０に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部２１２と、
前記記憶対象データの参照数に応じて、所定の記憶装置２２０に記憶されている前記記憶対象データを他の記憶装置２２０に格納して当該記憶対象データの格納先を変更するデータ再配置部２１３と、
を備えたストレージ装置２１０。
【００５３】
（付記２）
付記１に記載のストレージ装置であって、
前記参照数管理部は、前記記憶対象データ毎の所定期間内における前記参照数の変化を計測し、
前記データ再配置部は、前記参照数の変化に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納する、
ストレージ装置。
【００５４】
（付記３）
付記２に記載のストレージ装置であって、
前記データ再配置部は、前記参照数の変化が他と比較して少ない前記記憶対象データを、次の交換対象とされている他の記憶装置に格納する、
ストレージ装置。
【００５５】
（付記４）
付記２に記載のストレージ装置であって、
前記データ再配置部は、前記参照数の変化が他と比較して多い前記記憶対象データを、次の交換対象とされていない他の記憶装置に格納する、
ストレージ装置。
【００５６】
（付記５）
付記３に記載のストレージ装置であって、
前記記憶装置毎に、当該記憶装置の交換順序を管理する記憶装置管理部を備え、
前記データ再配置部は、前記参照数の変化が他と比較して少ない前記記憶対象データを、前記交換順序に基づいて次の交換対象とされている他の記憶装置に格納する、
ストレージ装置。
【００５７】
（付記６）
付記５に記載のストレージ装置であって、
前記データ格納制御部は、前記交換順序に基づいて次の交換対象とされていない前記記憶装置に、新たに記憶する前記記憶対象データを格納する、
ストレージ装置。
【００５８】
（付記７）
付記１乃至６のいずれいかに記載のストレージ装置であって、
前記データ再配置部は、前記記憶装置毎の容量使用率の差が一定値以上である場合に作動する、
ストレージ装置。
【００５９】
（付記８）
情報処理装置に、
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部と、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部と、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更するデータ再配置部と、
を実現させるためのプログラム。
【００６０】
（付記９）
付記８に記載のプログラムであって、
前記参照数管理部は、前記記憶対象データ毎の所定期間内における前記参照数の変化を計測し、
前記データ再配置部は、前記参照数の変化に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納する、
プログラム。
【００６１】
（付記１０）
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御を行い、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶し、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更する、
データ格納方法。
【００６２】
（付記１１）
付記１０に記載のデータ格納方法であって、
前記記憶対象データ毎の所定期間内における前記参照数の変化を計測し、
前記参照数の変化に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納する、
データ格納方法。
【符号の説明】
【００６３】
１０    アクセラレータノード
１１    データ格納処理部
１２    参照数管理部
１３    データ再配置部
１４    記憶装置管理部
１５    コンテンツアドレス管理テーブル
１６    ストレージノード管理テーブル
２０    ストレージノード
２１    記憶装置
１００  ストレージシステム
１０１  バックアップシステム
１０２  バックアップ対象装置
２１０  ストレージ装置
２１１  データ格納制御部
２１２  参照数管理部
２１３  データ再配置部
２２０  記憶装置
【図１】
0005585116.tif 000002
【図２】
0005585116.tif 000003
【図３】
0005585116.tif 000004
【図４】
0005585116.tif 000005
【図５】
0005585116.tif 000006
【図６】
0005585116.tif 000007
【図７】
0005585116.tif 000008
【図８】
0005585116.tif 000009
【図９】
0005585116.tif 000010
【図１０】
0005585116.tif 000011
【図１１】
0005585116.tif 000012