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