説明

ストレージシステム

【課題】記憶装置の交換時において読み出し性能が低下する、ことを解決する。
【解決手段】ストレージ装置210は、記憶対象データを記憶装置220に格納すると共に、当該記憶装置に既に記憶されている上記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている上記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部211と、記憶装置に記憶されている上記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部212と、上記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている上記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更するデータ再配置部213と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージシステムにかかり、特に、データを分散して複数の記憶装置に記憶するストレージシステムに関する。
【背景技術】
【0002】
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。
【0003】
このような状況に応じて、近年では、特許文献1に示すように、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、データを分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置が特定される。
【0004】
具体的に、コンテンツアドレスストレージシステムでは、所定のデータを複数のフラグメントに分割すると共に、冗長データとなるフラグメントをさらに付加して、これら複数のフラグメントをそれぞれ複数の記憶装置にそれぞれ格納している。そして、後に、コンテンツアドレスを指定することにより、当該コンテンツアドレスにて特定される格納位置に格納されているデータつまりフラグメントを読み出し、複数のフラグメントから分割前の所定のデータを復元することができる。このようにすることで、データへのアクセス性能を高めつつ、フラグメントのいくつかを消失した場合であってもデータを復元でき、耐障害性を高めている。
【0005】
また、上記コンテンツアドレスは、データの内容に応じて固有となるよう生成される。このため、重複データであれば同じ格納位置のデータを参照することで、同一内容のデータを取得することができる。従って、重複データを別々に格納する必要がなく、重複記録を排除し、データ容量の削減を図ることができる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2005−235171号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ここで、上述したようなデータを複数の記憶装置に分散して格納するコンテンツアドレスストレージシステムでは、ハードウェア保守の期限切れやスペック不足等の理由によって、古い記憶装置を新しい記憶装置に交換する必要が生じる。ところが、記憶装置の交換中は、交換対象の記憶装置に格納されているフラグメントを構成要素とするブロックデータの読み出しは、上述したように冗長データが付加されているため可能ではあるが、通常時と比較して、当該ブロックデータの読み出し性能が低下する。
【0008】
具体的には、上述した複数の記憶装置へのデータの分散格納は、全てのブロックデータに対して同様に行われている。つまり、記憶装置の交換中に読み出される可能性が高いデータブロックと読み出される可能性が低いブロックデータを意識することなく、記憶装置群に分散して格納している。従って、記憶装置の交換中に、特に、アクセスされる頻度が高いデータブロックの読み出し性能が低下する、という問題が生じる。
【0009】
このため、本発明の目的は、上述した課題である、記憶装置の交換時において読み出し性能が低下する、ということを解決することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するために、本発明の一形態であるストレージ装置は、
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている上記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている上記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部と、
記憶装置に記憶されている上記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部と、
上記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている上記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更するデータ再配置部と、
を備えた、という構成をとる。
【0011】
また、本発明の他の形態であるプログラムは、
情報処理装置に、
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部と、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部と、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更するデータ再配置部と、
を実現させるためのプログラムである。
【0012】
さらに、本発明の他の形態であるデータ格納方法は、
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御を行い、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶し、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更する、
という構成をとる。
【発明の効果】
【0013】
本発明は、以上のように構成されることにより、記憶装置の交換時において読み出し性能の向上を図ることができる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施形態1におけるストレージシステムを含むシステム全体の構成を示すブロック図である。
【図2】本発明の実施形態1におけるストレージシステムの構成の概略を示すブロック図である。
【図3】本発明の実施形態1におけるストレージシステムの構成を示す機能ブロック図である。
【図4】図3に開示したストレージシステムにおけるデータ記憶処理の様子を説明するための説明図である。
【図5】図3に開示したストレージシステムにおけるデータ記憶処理の様子を説明するための説明図である。
【図6】図3に開示したストレージシステムに記憶されるコンテンツアドレス管理テーブルの一例を示す図である。
【図7】図3に開示したストレージシステムに記憶されるストレージノード管理テーブルの一例を示す図である。
【図8】図3に開示したストレージシステムの動作を示すフローチャートである。
【図9】図3に開示したストレージシステムの動作を示すフローチャートである。
【図10】図3に開示したストレージシステムの動作を示すフローチャートである。
【図11】本発明の付記におけるストレージシステムの構成を示す機能ブロック図である。
【発明を実施するための形態】
【0015】
<実施形態1>
本発明の第1の実施形態を、図1乃至図10を参照して説明する。図1乃至図7は、ストレージシステムの構成を説明するための図であり、図8乃至図10は、ストレージシステムの動作を説明するための図である。
【0016】
ここで、本実施形態は、後述する付記に記載のストレージシステムの具体的な一例を示すものである。そして、以下では、ストレージシステムが、複数台のサーバコンピュータが接続されて構成されている場合を説明する。但し、本発明におけるストレージシステムは、複数台のコンピュータにて構成されることに限定されず、1台のコンピュータで構成されていてもよい。
【0017】
[構成]
図1に示すように、本発明におけるストレージシステム100は、ネットワークNを介してバックアップ処理を制御するバックアップシステム101に接続している。そして、バックアップシステム101は、ネットワークNを介して接続されたバックアップ対象装置102に格納されている記憶対象データ(バックアップ対象データ)を取得し、ストレージシステム100に対して記憶するよう要求する。これにより、ストレージシステム100は、記憶要求された記憶対象データをバックアップ用に記憶する。
【0018】
そして、図2に示すように、本実施形態におけるストレージシステム100は、複数のサーバコンピュータが接続された構成を採っている。具体的に、ストレージシステム100は、ストレージシステム100自体における記憶再生動作を制御するサーバコンピュータであるアクセラレータノード10と、データを格納する記憶装置を備えたサーバコンピュータであるストレージノード20と、を備えている。なお、図2や図3では、1台のアクセラレータノード10と複数台のストレージノード20とを図示しているが、アクセラレータノード10の数とストレージノード20の数は、図2,3に示したものに限定されず、さらに多くの各ノード10,20が接続されて構成されていてもよい。
【0019】
さらに、本実施形態におけるストレージシステム100は、データを分割及び冗長化し、分散して複数の記憶装置に記憶すると共に、記憶するデータの内容に応じて設定される固有のコンテンツアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレスストレージシステムである。
【0020】
なお、以下では、上述したようにストレージシステム100をアクセラレータノード10とストレージノード20とに分けて説明するが、以下に説明する構成及び機能は、アクセラレータノード10あるいはストレージノード20のいずれに備えられていてもよい。なお、ストレージシステム100は、図2,3に示すように、必ずしもアクセラレータノード10とストレージノード20とを備えていることに限定されず、いかなる構成であってもよく、例えば、1台のコンピュータにて構成されていてもよい。
【0021】
図3に、ストレージシステム100を構成するアクセラレータノード10及びストレージノード20の構成を示す。まず、ストレージノード20は、演算装置と記憶装置とを備えた一般的な情報処理装置であり、図3に示すように、アクセラレータノード10から記憶要求されたデータを格納する記憶装置21を1台又は複数台備えている。
【0022】
また、アクセラレータノード10も、演算装置と記憶装置とを備えた一般的な情報処理装置であり、図3に示すように、CPU(Central Processing Unit)などの演算装置にプログラムが組み込まれることで構築された、データ格納処理部11と、参照数管理部12と、データ再配置部13と、記憶装置管理部14と、を備えている。また、アクセラレータノード10は、記憶装置に形成されたコンテンツアドレス管理テーブル15と、ストレージノード管理テーブル16と、を備えている。以下、各構成について詳述する。
【0023】
まず、上記記憶装置管理部14について説明する。記憶装置管理部14は、上述した各ストレージノード20に装備された各記憶装置21の交換順序を、ストレージノード管理テーブル16にて管理する。具体的に、記憶装置管理部14は、ストレージノード20が管理者などによって交換されると、ストレージノード管理テーブル16内において、交換されたストレージノード20の識別情報(ストレージノードID)に関連付けた「ノード交換順序」を「1」に設定する。そして、交換されていない他のストレージノード20の「ノード交換順序」は、交換前の値に1加算する。このため、「ノード交換順序」の値は、他のストレージノード20が交換される度に増加するため、交換から時間が経過しているものほど大きくなる。なお、ストレージノード管理テーブルの一例を、図7に示す。
【0024】
また、記憶装置管理部14は、ストレージノード管理テーブル16にて、各ストレージノード20が「新規データ書き込み対象か否か」ということを管理している。具体的には、上述した「ノード交換順序」の値が大きい方から、同時に交換するストレージノードの数分だけ選択して、当該選択したストレージノード20を次に交換するストレージノードとして設定する。この場合には、選択されたストレージノード20のIDに関連付けられた「新規データ書き込み対象か否か」の項目に、「No」という情報を設定する。一方、それ以外のストレージノード20は、次の交換対象ではないとして、そのIDに関連付けられた「新規データ書き込み対象か否か」の項目に、「Yes」という情報を設定する。つまり、交換されてから多くの時間が経過したストレージノード20が、古い順に、次の交換対象として設定されて、その他のもの、つまり、交換されてから新しいものは、新しい順に、次の交換対象ではなく、新規データの格納対象となるストレージノードとして設定される。
【0025】
次に、データ格納処理部11(データ格納制御部)について説明する。データ格納処理部11によるコンテンツアドレスを用いた記憶対象データの格納処理について説明する。データ格納処理部11は、まず、記憶対象データAの入力を受けると、図4及び図5の矢印Y2に示すように、当該記憶対象データAを、所定容量(例えば、64KB)のブロックデータDに分割する。そして、このブロックデータDのデータ内容に基づいて、当該データ内容を代表する固有のハッシュ値Hを算出する(矢印Y3)。例えば、ハッシュ値Hは、予め設定されたハッシュ関数を用いて、ブロックデータDのデータ内容から算出する。
【0026】
そして、上記データ格納処理部11は、ブロックデータDのハッシュ値Hを用いて、当該ブロックデータDが既に記憶装置21に格納されているか否かを調べる。具体的には、まず、既に格納されているブロックデータDは、後述するように、そのハッシュ値Hが含まれた格納位置を表すコンテンツアドレスCAが、コンテンツアドレス管理テーブル15に登録されている。従って、格納前に算出したブロックデータDのハッシュ値Hがコンテンツアドレス管理テーブル15内に存在していない場合には、まだ同一内容のブロックデータDが記憶されていないと判断でき、ハッシュ値Hがコンテンツアドレス管理テーブル15内に存在している場合には、既に同一内容のブロックデータDが記憶されていると判断できる(図5の矢印Y4)。
【0027】
そして、上記データ格納処理部11は、まだ同一のブロックデータDが記憶されていないと判断されたブロックデータDを圧縮して、図5の矢印Y5に示すように、複数の所定の容量のフラグメントデータに分割する。例えば、図4の符号D1〜D9に示すように、9つのフラグメントデータ(分割データ31)に分割する。さらに、データ格納処理部11は、分割したフラグメントデータのうちいくつかが欠けた場合であっても、元となるブロックデータを復元可能なよう冗長データを生成し、上記分割したフラグメントデータ31に追加する。例えば、図4の符号D10〜D12に示すように、3つのフラグメントデータ(冗長データ32)を追加する。これにより、9つの分割データ31と、3つの冗長データ32とにより構成される12個のフラグメントデータからなるデータセット30を生成する。
【0028】
続いて、データ格納処理部11は、生成されたデータセットを構成する各フラグメントデータを、記憶装置に形成された各記憶領域に、それぞれ分散して格納する。例えば、図4に示すように、12個のフラグメントデータD1〜D12を生成した場合には、12個の記憶装置内にそれぞれ形成したデータ格納ファイルに、各フラグメントデータD1〜D12を1つずつそれぞれ格納する(図5の矢印Y6参照)。このとき、データ格納処理部11は、図7に示すようなストレージノード管理テーブル16を参照して、「新規データ書き込み対象か否か」の項目が「Yes」となっているストレージノード20に書き込む。つまり、交換されてから他と比較してまだ新しく次の交換対象とされていないストレージノード20に、新規データを格納する。
【0029】
また、データ格納処理部11は、上述したように記憶装置に格納したフラグメントデータD1〜D12の格納位置、つまり、当該フラグメントデータD1〜D12にて復元されるブロックデータDの格納位置を表す、コンテンツアドレスCAを生成して管理する。具体的には、格納したブロックデータDの内容に基づいて算出したハッシュ値Hの一部(ショートハッシュ)(例えば、ハッシュ値Hの先頭8B(バイト))と、論理格納位置を表す情報と、を組み合わせて、コンテンツアドレスCAを生成する(図5の矢印Y7)。そして、アクセラレータノード10は、記憶対象データのファイル名などの識別情報と、コンテンツアドレスCAとを関連付けてファイルシステムで管理すると共に、図6に示すようなコンテンツアドレス管理テーブル15に、生成したコンテンツアドレスCAの新規エントリを追加する。
【0030】
ここで、上記コンテンツアドレス管理テーブル15について説明する。コンテンツアドレス管理テーブル15は、データ格納処理部11にて各ストレージノード20に格納したブロックデータDの格納位置を、当該ブロックデータDの内容に応じて特定されるコンテンツアドレスを用いて管理したものである。具体的には、上述したように新規にブロックデータDが格納されると、図6に示すように、コンテンツアドレス管理テーブル15に新規エントリを追加し、当該ブロックデータDに対応するコンテンツアドレスCAに関連付けて、実際にブロックデータDのフラグメントを格納した格納位置を表す情報を、「フラグメント格納先アドレス」の項目に記憶する。これにより、コンテンツアドレスCAに関連付けられた格納先アドレスを参照することで、ブロックデータDを読み出すことができる。
【0031】
また、上述したコンテンツアドレス管理テーブル15は、図6に示すように、コンテンツアドレスに関連付けて、「参照数」、「直近1ヶ月間の参照数変化」、「再配置済みか否か」、を表す情報を記憶している。このとき、「参照数」とは、コンテンツアドレスが参照されている数、つまり、コンテンツアドレスが参照する格納先アドレスに格納されているブロックデータDが他のブロックデータの格納先を示すべく参照されている数、を表している。そして、この「参照数」は、参照数管理部12にて管理されており、例えば、新規にブロックデータが格納された際には、参照数が「1」となる。また、後述するように、コンテンツアドレスが他のブロックデータの格納先として当該他のブロックデータから参照された場合には、上記参照数が1ずつ加算される。なお、他の情報については後述する。
【0032】
また、上述したデータ格納処理部11は、記憶対象データのブロックデータDのハッシュ値Hが既にコンテンツアドレス管理テーブル15に存在している場合、つまり、既に同一内容のブロックデータDが格納されている場合には、格納前のブロックデータDのハッシュ値Hと一致したハッシュ値が含まれるコンテンツアドレスCAを、コンテンツアドレス管理テーブル15から取得する。そして、このコンテンツアドレスCAを、記憶要求にかかるブロックデータDの格納先を表すコンテンツアドレスCAとする。これにより、このコンテンツアドレスCAにて参照される既に格納されているデータが、記憶要求されたブロックデータDとして使用されることとなり、当該記憶要求にかかるブロックデータDは記憶する必要がなくなる。そして、参照数管理部12が、コンテンツアドレス管理テーブル15内の対応するコンテンツアドレスCAの「参照数」を、「1」加算する。
【0033】
また、参照数管理部12は、定期的に、例えば、毎月1回、コンテンツアドレス管理テーブル15内の各コンテンツアドレスの参照数をチェックし、前回チェック時からの変化数を算出する。つまり、各コンテンツアドレスの参照数が先月に比べていくつ変化したかを表す直近1カ月間の参照数の変化数を算出して、コンテンツアドレス管理テーブル15内の「直近1ヶ月間の参照数変化」の項目の値を更新する。ここで、毎月1回というのは、一例であり、任意の期間毎における参照数の変化を算出してもよい。
【0034】
また、データ再配置部13は、一定期間毎に動作して、ストレージノード管理テーブル16内の「直近1カ月間の参照数変化」の項目の値を調べる。そして、「直近1ヶ月間の参照数変化」の値が最も小さいブロックデータを特定して、当該ブロックデータを読み出す。なお、このとき、「直近1ヶ月間の参照数変化」の値が最も小さいブロックデータだけでなく、小さい方から予め設定された順番までのブロックデータを特定して読み出してもよい。
【0035】
続いて、データ再配置部13は、読み込んだブロックデータを、ストレージノード管理テーブル16を参照して、新規書き込み対象ではないストレージノード20、つまり、次の交換対象となっているストレージノード20に書き込んで再配置する。その後、再配置する前のブロックデータのフラグメントデータを削除して、コンテンツアドレス管理テーブル15の当該フラグメント格納先アドレスを変更して、さらに「再配置済みか否か」の項目を「Yes」に変更する。これにより、ブロックデータの実データの格納位置は変更されるが、ブロックデータの再配置を行った後であっても当該ブロックデータのコンテンツアドレスは変わっていないので、外部からは引き続き同一のコンテンツアドレスで当該ブロックデータにアクセスすることができる。
【0036】
なお、上記データ再配置部13は、例えば、新規データ書き込み対象となっているストレージノードと、対象となっていないストレージノードと、の容量使用率の差が一定値以上であったときに作動する。ここで、容量使用率とは、各ストレージノードに装備された記憶装置の記憶容量に対する実際に使用されている容量の割合である。従って、ストレージノード20間で、容量使用率が偏っている場合には、上述したように、参照数の変化が他と比較して少ないブロックデータを、次の交換対象となっているストレージノード20に再配置する処理を実行する。但し、ブロックデータの再配置の実施するタイミングは、上述したタイミングに限定されず、いかなるタイミングであってもよい。
【0037】
[動作]
次に、上述したアクセラレータノード10の動作を、図8乃至図10のフローチャートを参照して説明する。特に、以下では、上述したデータ格納処理部11と、参照数管理部12と、データ再配置部13との動作を説明する。
【0038】
まず、データ格納処理部11は、ファイルの書込み要求があると(ステップS1)、当該ファイルを複数のブロックデータに分割して、このブロックデータを記憶対象とする。そして、ブロックデータ毎にハッシュ値を計算し(ステップS2)、このハッシュ値と同じデータが既に記憶されているか判定する。例えば、コンテンツアドレス管理テーブル15に記憶されているハッシュ値を含むコンテンツアドレスを調べて、その一部であるハッシュ値に相当する部分に、同一のデータが記憶されているかを調べる。なお、同一データが既に記憶されているか否かの処理は、例えば、既に格納したブロックデータのハッシュ値を他の方法で記憶保持しており、この記憶保持しているハッシュ値と、新たに記憶するブロックデータから算出したハッシュ値とを比較して行ってもよい。
【0039】
そして、新たに記憶するブロックデータと同一データが記憶されていないと判定された場合には(ステップS3:No)、図4に示すように、新たに記憶するブロックデータDを圧縮して分割し(符号31)、さらに冗長データ(符号32)を付加した複数のフラグメントデータからなるデータセット30を生成する(ステップS4)。そして、ストレージノード管理テーブル16を参照して、新規書き込み対象の項目がYesであるストレージノード20に、ブロックデータを構成する複数のフラグメントデータを、分散して記憶する(ステップS5)。その後、コンテンツアドレス管理テーブル15に新規エントリを追加する。
【0040】
続いて、新たに記憶するブロックデータと同一データが記憶されていると判定された場合(ステップS3:Yes)の動作について説明する。この場合には、新たな記憶対象となっているブロックデータを記憶せず、既に記憶されているブロックデータを参照する。つまり、新たな記憶対象のブロックデータの格納位置として、既に記憶されているブロックデータのコンテンツアドレスを参照する。そして、そのコンテンツアドレスが参照されている数、つまり、コンテンツアドレス管理テーブル15内に記憶されているデータブロックの参照数を加算して、更新する(ステップS7)。
【0041】
次に、参照数管理部12の動作を、図9を参照して説明する。参照数管理部12は、毎月1回、コンテンツアドレス管理テーブル15内の各コンテンツアドレスの参照数をチェックする(ステップS11)。そして、前回チェック時との変化数を、コンテンツアドレス管理テーブル15の直近1ヶ月間の参照数変位の値として更新する(ステップS9)。ここで、毎月1回というのは、一例であり、任意の期間毎のチェックでもよい。
【0042】
ここで、記憶装置管理部14によるストレージノード管理テーブル16の更新、つまり、ノード交換順序の更新について説明する。記憶装置管理部14は、ストレージノード20が交換される度に実行され、ストレージノード管理テーブル16の更新を行う。具体的には、交換されたストレージノード20の「ノード交換順序」を「1」に初期化し、交換されていない他のストレージノード20の「ノード交換順序」を「1」加算する。これにより、「ノード交換順序」の値は、他のストレージノード20が交換される度に増加し、交換から時間が経過しているストレージノードの「ノード交換順序」ほど大きくなる。そして、「ノード交換順序」の値が大きい方から、同時に交換するストレージノードの数分だけ選択して、当該選択したストレージノード20を次に交換するストレージノードとして設定し、ストレージノード管理テーブル16内の「新規データ書き込み対象か否か」の項目を「No」に設定する。その他の「新規データ書き込み対象か否か」の項目は「Yes」に設定する。
【0043】
次に、データ再配置部13の動作を、図10を参照して説明する。データ再配置部13は、一定期間毎に動作して、ストレージノード管理テーブル16を参照して、新規データ書き込み対象となっているストレージノードと、対象となっていないストレージノードと、の容量使用率を比較する(ステップS21)。ここで、容量使用率の差が一定値以上ではなかった場合には(ステップS22:No)、処理を終了する。
【0044】
一方、容量使用率の差が一定値以上であった場合には(ステップS22:Yes)、コンテンツアドレス管理テーブル15を参照して、直近1ヶ月間の参照数変位が最も小さいブロックデータを再配置対象のブロックデータとして特定して(ステップS23)、当該ブロックデータを読み出す(ステップS24)。続いて、読み込んだブロックデータを新規書き込み対象ではないストレージノード、つまり、次の交換対象となっているストレージノードに書き込み、当該ブロックデータを再配置する(ステップS25)。
【0045】
その後、再配置する前のブロックデータのフラグメントデータを削除して(ステップS26)、コンテンツアドレス管理テーブル15の当該フラグメント格納先アドレスを変更し、さらに再配置済みをYesに変更する(ステップS17)。なお、ブロックデータの再配置を行った後も、当該ブロックデータのコンテンツアドレスは変わっていないので、外部からは引き続き同一のコンテンツアドレスで当該ブロックデータにアクセスすることができる。
【0046】
以上のように、本発明によると、コンテンツアドレスストレージシステムにおいて、記憶装置(ストレージノード)の交換時であっても、利用者の影響を抑制することができる。その理由は、格納済みのブロックデータの参照数の所定期間内における変化が少ないものは直近でアクセスされる可能性の低いブロックデータであると判断できるため、かかるブロックデータを次回交換対象の記憶装置に格納するからである。逆に言うと、アクセスされる可能性の高いブロックデータは、全て次回の交換対象外の記憶装置に格納することで、記憶装置交換時の影響を受けないようにしている。なお、ブロックデータの再配置を行った後も、当該ブロックデータのコンテンツアドレスは変わっていないので、引き続き同一のコンテンツアドレスで当該ブロックデータにアクセスすることが可能である。
【0047】
従って、本発明のストレージシステムでは、記憶装置交換時の性能低下の影響を抑制しつつ、古くなった記憶装置を交換することができるため、運用が容易となり、信頼性の向上を図ることができる。
【0048】
ここで、上記では、ブロックデータの参照数の所定期間内の変化が少ないものを、次の交換対象とされているストレージノードに再配置する場合を例示したが、逆に、参照数の所定期間内の変化が多いものを、次の交換対象とされていないストレージノードに再配置してもよい。これにより、結果として、次の交換対象とされているストレージノードには、ブロックデータの参照数の所定期間内の変化が少ないもの、つまり、直近でアクセスされる可能性の低いブロックデータが集まることとなり、上述同様に、記憶装置交換時における性能低下を抑制することができる。
【0049】
また、上記では、ストレージノードが次の交換対象であるか、あるいは、新規データ書き込み対象であるか、ということを、交換されてからの時間を反映した情報(ノード交換順序)にて決定していたが、かかる方法に限定されない。例えば、管理者などにより予めノード交換の順番が設定されており、その設定された順番に応じて、次の交換対象や新規データ書き込み対象のストレージノードが決定されてもよい。
【0050】
さらに、上記では、ブロックデータの参照数の変化の値に応じて、当該ブロックデータの再配置を行う場合を説明したが、ブロックデータの参照数の値に応じて、当該ブロックデータの再配置を行ってもよい。例えば、記憶されてから所定時間内における参照数の値が他と比較して小さいブロックデータを、次の交換対象となるストレージノードに再配置してもよい。あるいは、記憶されてから所定時間内における参照数の値が他と比較して大きいブロックデータを、次の交換対象ではないストレージノードに再配置してもよい。このようにすることで、参照数が少なくアクセスされる可能性の低いブロックデータが、次の交換対象となるストレージノードに集まることとなり、上述同様に、記憶装置交換時における性能低下を抑制することができる。
【0051】
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるストレージ装置210の構成の概略について図11を参照して説明する。また、本発明における、プログラム、データ格納方法の構成について説明する。但し、本発明は、以下の構成に限定されない。
【0052】
(付記1)
記憶対象データを記憶装置220に格納すると共に、当該記憶装置220に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置220に格納する場合に、当該記憶装置220に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部211と、
記憶装置220に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部212と、
前記記憶対象データの参照数に応じて、所定の記憶装置220に記憶されている前記記憶対象データを他の記憶装置220に格納して当該記憶対象データの格納先を変更するデータ再配置部213と、
を備えたストレージ装置210。
【0053】
(付記2)
付記1に記載のストレージ装置であって、
前記参照数管理部は、前記記憶対象データ毎の所定期間内における前記参照数の変化を計測し、
前記データ再配置部は、前記参照数の変化に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納する、
ストレージ装置。
【0054】
(付記3)
付記2に記載のストレージ装置であって、
前記データ再配置部は、前記参照数の変化が他と比較して少ない前記記憶対象データを、次の交換対象とされている他の記憶装置に格納する、
ストレージ装置。
【0055】
(付記4)
付記2に記載のストレージ装置であって、
前記データ再配置部は、前記参照数の変化が他と比較して多い前記記憶対象データを、次の交換対象とされていない他の記憶装置に格納する、
ストレージ装置。
【0056】
(付記5)
付記3に記載のストレージ装置であって、
前記記憶装置毎に、当該記憶装置の交換順序を管理する記憶装置管理部を備え、
前記データ再配置部は、前記参照数の変化が他と比較して少ない前記記憶対象データを、前記交換順序に基づいて次の交換対象とされている他の記憶装置に格納する、
ストレージ装置。
【0057】
(付記6)
付記5に記載のストレージ装置であって、
前記データ格納制御部は、前記交換順序に基づいて次の交換対象とされていない前記記憶装置に、新たに記憶する前記記憶対象データを格納する、
ストレージ装置。
【0058】
(付記7)
付記1乃至6のいずれいかに記載のストレージ装置であって、
前記データ再配置部は、前記記憶装置毎の容量使用率の差が一定値以上である場合に作動する、
ストレージ装置。
【0059】
(付記8)
情報処理装置に、
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部と、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部と、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更するデータ再配置部と、
を実現させるためのプログラム。
【0060】
(付記9)
付記8に記載のプログラムであって、
前記参照数管理部は、前記記憶対象データ毎の所定期間内における前記参照数の変化を計測し、
前記データ再配置部は、前記参照数の変化に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納する、
プログラム。
【0061】
(付記10)
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御を行い、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶し、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更する、
データ格納方法。
【0062】
(付記11)
付記10に記載のデータ格納方法であって、
前記記憶対象データ毎の所定期間内における前記参照数の変化を計測し、
前記参照数の変化に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納する、
データ格納方法。
【符号の説明】
【0063】
10 アクセラレータノード
11 データ格納処理部
12 参照数管理部
13 データ再配置部
14 記憶装置管理部
15 コンテンツアドレス管理テーブル
16 ストレージノード管理テーブル
20 ストレージノード
21 記憶装置
100 ストレージシステム
101 バックアップシステム
102 バックアップ対象装置
210 ストレージ装置
211 データ格納制御部
212 参照数管理部
213 データ再配置部
220 記憶装置


【特許請求の範囲】
【請求項1】
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部と、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部と、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更するデータ再配置部と、
を備えたストレージ装置。
【請求項2】
請求項1に記載のストレージ装置であって、
前記参照数管理部は、前記記憶対象データ毎の所定期間内における前記参照数の変化を計測し、
前記データ再配置部は、前記参照数の変化に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納する、
ストレージ装置。
【請求項3】
請求項2に記載のストレージ装置であって、
前記データ再配置部は、前記参照数の変化が他と比較して少ない前記記憶対象データを、次の交換対象とされている他の記憶装置に格納する、
ストレージ装置。
【請求項4】
請求項2に記載のストレージ装置であって、
前記データ再配置部は、前記参照数の変化が他と比較して多い前記記憶対象データを、次の交換対象とされていない他の記憶装置に格納する、
ストレージ装置。
【請求項5】
請求項3に記載のストレージ装置であって、
前記記憶装置毎に、当該記憶装置の交換順序を管理する記憶装置管理部を備え、
前記データ再配置部は、前記参照数の変化が他と比較して少ない前記記憶対象データを、前記交換順序に基づいて次の交換対象とされている他の記憶装置に格納する、
ストレージ装置。
【請求項6】
請求項5に記載のストレージ装置であって、
前記データ格納制御部は、前記交換順序に基づいて次の交換対象とされていない前記記憶装置に、新たに記憶する前記記憶対象データを格納する、
ストレージ装置。
【請求項7】
請求項1乃至6のいずれいか一項に記載のストレージ装置であって、
前記データ再配置部は、前記記憶装置毎の容量使用率の差が一定値以上である場合に作動する、
ストレージ装置。
【請求項8】
情報処理装置に、
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御部と、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶する参照数管理部と、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更するデータ再配置部と、
を実現させるためのプログラム。
【請求項9】
記憶対象データを記憶装置に格納すると共に、当該記憶装置に既に記憶されている前記記憶対象データと同一のデータ内容の他の記憶対象データを記憶装置に格納する場合に、当該記憶装置に既に記憶されている前記記憶対象データを他の記憶対象データとして参照させるデータ格納制御を行い、
記憶装置に記憶されている前記記憶対象データ毎に、当該記憶対象データが他の記憶対象データとして参照されている数を表す参照数を記憶し、
前記記憶対象データの参照数に応じて、所定の記憶装置に記憶されている前記記憶対象データを他の記憶装置に格納して当該記憶対象データの格納先を変更する、
データ格納方法。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2011−170665(P2011−170665A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2010−34565(P2010−34565)
【出願日】平成22年2月19日(2010.2.19)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】