(57)【特許請求の範囲】
【請求項１】
書き込み対象となるデータを所定容量に分割して記憶装置に格納すると共に、当該記憶装置に既に記憶されているデータと同一内容の他のデータを前記記憶装置に格納する場合に当該記憶装置に既に記憶されているデータを他のデータとして参照させるデータ書き込み部と、
書き込み対象となるデータを、予め設定された基準に従って分類されるユーザデータ部分と管理データ部分とに分離すると共に、当該分離された前記ユーザデータ部分と前記管理データ部分との分離前におけるデータ中の位置情報を含むインデックスデータを生成するデータ分離部と、を備え、
前記データ書き込み部は、前記ユーザデータ部分を格納したファイルを生成すると共に、当該ファイルに格納された前記ユーザデータ部分に関連付けられたメタデータとして、前記管理データ部分及び前記インデックスデータを前記ファイルに含めて格納することにより、前記ユーザデータ部分と前記管理データ部分と前記インデックスデータとを同一の前記ファイルに格納し、当該ファイルを書き込み対象となるデータとして前記記憶装置に記憶する、
ストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記データ書き込み部は、前記ファイルに格納された前記ユーザデータ部分の拡張属性及び／又は代替データストリームを前記メタデータとして用いる、
ストレージシステム。
【請求項３】
請求項１又は２に記載のストレージシステムであって、
前記データ書き込み部は、前記ファイルを分割することによって形成された前記ユーザデータ部分の分割データを前記記憶装置内の所定領域に格納する、
ストレージシステム。
【請求項４】
請求項２に記載のストレージシステムであって、
前記データ書き込み部は、前記ファイルを分割することによって形成された前記ユーザデータ部分と前記拡張属性部分と前記代替データストリーム部分との分割データを、当該各部分に応じた前記記憶装置内の各所定領域にそれぞれ格納する、
ストレージシステム。
【請求項５】
書き込み対象となるデータを所定容量に分割して記憶装置に格納すると共に、当該記憶装置に既に記憶されているデータと同一内容の他のデータを前記記憶装置に格納する場合に当該記憶装置に既に記憶されているデータを他のデータとして参照させるデータ書き込み部を備えた情報処理装置に、
書き込み対象となるデータを、予め設定された基準に従って分類されるユーザデータ部分と管理データ部分とに分離し、当該分離された前記ユーザデータ部分と前記管理データ部分との分離前におけるデータ中の位置情報を含むインデックスデータを生成するデータ分離部を実現させると共に、
前記データ書き込み部は、前記ユーザデータ部分を格納したファイルを生成すると共に、当該ファイルに格納された前記ユーザデータ部分に関連付けられたメタデータとして、前記管理データ部分及び前記インデックスデータを前記ファイルに含めて格納することにより、前記ユーザデータ部分と前記管理データ部分と前記インデックスデータとを同一の前記ファイルに格納し、当該ファイルを書き込み対象となるデータとして前記記憶装置に記憶する、ことを実現させるためのプログラム。
【請求項６】
書き込み対象となるデータを所定容量に分割して記憶装置に格納すると共に、当該記憶装置に既に記憶されているデータと同一内容の他のデータを前記記憶装置に格納する場合に当該記憶装置に既に記憶されているデータを他のデータとして参照させるデータ書き込み工程を有するデータ格納方法であって、
前記データ書き込み工程の前に、書き込み対象となるデータを、予め設定された基準に従って分類されるユーザデータ部分と管理データ部分とに分離すると共に、当該分離された前記ユーザデータ部分と前記管理データ部分との分離前におけるデータ中の位置情報を含むインデックスデータを生成するデータ分離工程を有し、
前記データ書き込み工程は、前記ユーザデータ部分を格納したファイルを生成すると共に、当該ファイルに格納された前記ユーザデータ部分に関連付けられたメタデータとして、前記管理データ部分及び前記インデックスデータを前記ファイルに含めて格納することにより、前記ユーザデータ部分と前記管理データ部分と前記インデックスデータとを同一の前記ファイルに格納し、当該ファイルを書き込み対象となるデータとして前記記憶装置に記憶する、
データ格納方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置にかかり、特に、同一内容のデータの重複記憶を排除するストレージ装置に関する。
【背景技術】
【０００２】
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。
【０００３】
このような状況に応じて、近年では、特許文献１に示すように、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、データを分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置が特定される。具体的に、コンテンツアドレスストレージシステムでは、所定のデータを複数のフラグメントに分割すると共に、冗長データとなるフラグメントをさらに付加して、これら複数のフラグメントをそれぞれ複数の記憶装置にそれぞれ格納している。
【０００４】
そして、後に、コンテンツアドレスを指定することにより、当該コンテンツアドレスにて特定される格納位置に格納されているデータつまりフラグメントを読み出し、複数のフラグメントから分割前の所定のデータを復元することができる。
【０００５】
また、上記コンテンツアドレスとして、データの内容に応じて固有となるよう生成される例えばデータのハッシュ値を用いる。このため、重複データであれば同じ格納位置のデータを参照することで、同一内容のデータを取得することができる。従って、重複データを別々に格納する必要がなく、重複記録を排除し、データ容量の削減を図ることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２３５１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、上述したデータの重複排除の判定は、一般的に、ファイルのデータをある長さ（固定長または可変長）に区切って、それらを比較することにより行っている。このため、１つのファイル中のデータの差異が、ファイルを区切った長さより小さな間隔で存在すると、それらは同一内容のデータとは判定されない。つまり、区切ったデータ間に同一内容のデータ部分が存在していた場合であっても、わずかな差異が存在すると、両方の区切ったデータが記憶されることとなり、効率よく記憶するデータの重複排除ができない。
【０００８】
例えば、データをバックアップするソフトウェアは、バックアップするデータの他に、独自の管理情報をバックアップファイルへ挿入することを行っている。すると、この挿入される独自の管理情報がバックアップ毎に異なり、かつ、この管理情報の挿入間隔がデータ重複判定時のデータ区切り間隔より短い場合には、上述したように、記憶するデータの重複排除ができない。その結果、データの格納効率が低下する、という問題が生じる。
【０００９】
このため、本発明の目的は、上述した課題である、データ格納効率の低下を解決することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成すべく、本発明の一形態であるストレージシステムは、
書き込み対象となるデータを所定容量に分割して記憶装置に格納すると共に、当該記憶装置に既に記憶されているデータと同一内容の他のデータを前記記憶装置に格納する場合に当該記憶装置に既に記憶されているデータを他のデータとして参照させるデータ書き込み部と、
書き込み対象となるデータを、予め設定された基準に従って分類されるユーザデータ部分と管理データ部分とに分離するデータ分離部と、を備え、
前記データ書き込み部は、前記ユーザデータ部分を格納したファイルを生成すると共に、当該ファイルに格納された前記ユーザデータ部分に関連付けられたメタデータとして前記管理データ部分を前記ファイルに含めて格納し、前記ファイルを書き込み対象となるデータとして前記記憶装置に記憶する、
という構成を取る。
【００１１】
また、本発明の他の形態であるプログラムは、
書き込み対象となるデータを所定容量に分割して記憶装置に格納すると共に、当該記憶装置に既に記憶されているデータと同一内容の他のデータを前記記憶装置に格納する場合に当該記憶装置に既に記憶されているデータを他のデータとして参照させるデータ書き込み部を備えた情報処理装置に、
書き込み対象となるデータを、予め設定された基準に従って分類されるユーザデータ部分と管理データ部分とに分離するデータ分離部を実現させると共に、
前記データ書き込み部は、前記ユーザデータ部分を格納したファイルを生成すると共に、当該ファイルに格納された前記ユーザデータ部分に関連付けられたメタデータとして前記管理データ部分を前記ファイルに含めて格納し、前記ファイルを書き込み対象となるデータとして前記記憶装置に記憶する、ことを実現させるためのプログラムである。
【００１２】
また、本発明の他の形態であるデータ格納方法は、
書き込み対象となるデータを所定容量に分割して記憶装置に格納すると共に、当該記憶装置に既に記憶されているデータと同一内容の他のデータを前記記憶装置に格納する場合に当該記憶装置に既に記憶されているデータを他のデータとして参照させるデータ書き込み工程を有するデータ格納方法であって、
前記データ書き込み工程の前に、書き込み対象となるデータを、予め設定された基準に従って分類されるユーザデータ部分と管理データ部分とに分離するデータ分離工程を有し、
前記データ書き込み工程は、前記ユーザデータ部分を格納したファイルを生成すると共に、当該ファイルに格納された前記ユーザデータ部分に関連付けられたメタデータとして前記管理データ部分を前記ファイルに含めて格納し、前記ファイルを書き込み対象となるデータとして前記記憶装置に記憶する、
という構成を取る。
【発明の効果】
【００１３】
本発明は、以上のように構成されることにより、データ格納効率の向上を図ることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態１におけるストレージシステムを含むシステム全体の構成を示すブロック図である。
【図２】本発明の実施形態１におけるストレージシステムの構成の概略を示すブロック図である。
【図３】本発明の実施形態１におけるストレージシステムの構成を示す機能ブロック図である。
【図４】図３に開示したストレージシステムにおけるデータ書き込み処理の様子を説明するための説明図である。
【図５】図３に開示したストレージシステムにおけるデータ書き込み処理の様子を説明する説明図である。
【図６】図３に開示したストレージシステムにおけるデータ書き込み処理の様子を説明する説明図である。
【図７】図６に開示したインデックスデータのデータ構造の一例を示す図である。
【図８】図３に開示したストレージシステムにおけるデータ書き込み処理の動作を示すフローチャートである。
【図９】図３に開示したストレージシステムにおけるデータ読み取り処理の動作を示すフローチャートである。
【図１０】付記１におけるストレージシステムの構成を示す機能ブロック図である。
【発明を実施するための形態】
【００１５】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図９を参照して説明する。図１は、システム全体の構成を示すブロック図である。図２は、ストレージシステムの概略を示すブロック図であり、図３は、ストレージシステムの構成を示す機能ブロック図である。図４乃至図６は、ストレージシステムにおけるデータ書き込み処理の動作を説明するための説明図である。図７は、記憶装置に記憶されるインデックスデータのデータ構造を示す図である。図８乃至図９は、ストレージシステムの動作を示すフローチャートである。
【００１６】
ここで、本実施形態は、後述する付記に記載のストレージ装置等の具体的な一例を示すものである。そして、以下では、ストレージシステムが、複数台のサーバコンピュータが接続されて構成されている場合を説明する。但し、本発明におけるストレージシステムは、複数台のコンピュータにて構成されることに限定されず、１台のコンピュータで構成されていてもよい。
【００１７】
［構成］
図１に示すように、本発明におけるストレージシステム１は、ネットワークＮを介してバックアップ処理を制御するバックアップシステム４に接続している。そして、バックアップシステム４は、ネットワークＮを介して接続されたバックアップ対象装置５に格納されているバックアップ対象データ（書き込み対象となるデータ）を取得し、ストレージシステム１に対して記憶するよう要求する。これにより、ストレージシステム１は、記憶要求されたバックアップ対象データをバックアップ用に記憶する。
【００１８】
そして、図２に示すように、本実施形態におけるストレージシステム１は、複数のサーバコンピュータが接続された構成を採っている。具体的に、ストレージシステム１は、ストレージシステム１自体における記憶再生動作を制御するサーバコンピュータであるアクセラレータノード２と、データを格納する記憶装置を備えたサーバコンピュータであるストレージノード３と、を備えている。なお、アクセラレータノード２の数とストレージノード３の数は、図２に示したものに限定されず、さらに多くの各ノード２，３が接続されて構成されていてもよい。
【００１９】
さらに、本実施形態におけるストレージシステム１は、データを分割及び冗長化し、分散して複数の記憶装置に記憶すると共に、記憶するデータの内容に応じて設定される固有のコンテンツアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレスストレージシステムである。このコンテンツアドレスストレージシステムについては、後に詳述する。
【００２０】
なお、以下では、ストレージシステム１が１つのシステムであるとして、当該ストレージシステム１が備えている構成及び機能を説明する。つまり、以下に説明するストレージシステム１が有する構成及び機能は、アクセラレータノード２あるいはストレージノード３のいずれに備えられていてもよい。なお、ストレージシステム１は、図２に示すように、必ずしもアクセラレータノード２とストレージノード３とを備えていることに限定されず、いかなる構成であってもよく、例えば、１台のコンピュータにて構成されていてもよい。さらには、ストレージシステム１は、コンテンツアドレスストレージシステムであることにも限定されず、重複排除機能を有しているストレージシステムであればよい。
【００２１】
図３に、本実施形態におけるストレージシステム１の構成を示す。図３に示すストレージシステム１は、上述したアクセラレータノード２及びストレージノード３内に仮想的に構築されたデータ分離／結合装置１０とＣＡＳ装置２０とを備えている。そして、データ分離／結合装置１０は、上述したバックアップ対象装置５やバックアップシステム４に装備されたデータ書き込み／読み取りソフトウェア３０に接続されており、このソフトウェア３０からの要求に応じて、ファイルを記憶したり、読み出す処理を行うものである。
【００２２】
そして、上記データ分離／結合装置１０は、装備された演算装置にプログラムが組み込まれることによって構築された、分離データ書き込み部１１と、データ分離部１２と、分離データ関連付け部１３と、分離データ読み取り部１４と、を備えている。また、ＣＡＳ装置２０のファイル２１には、ユーザデータ記憶部２２と、管理データ及びインデックスデータ記憶部２３と、が形成されている。
【００２３】
なお、実際には、上述したストレージシステム１が備える構成は、図２に示したアクセラレータノード２及びストレージノード３がそれぞれ備えているＣＰＵ（Central Processing Unit）などの演算装置やハードディスクドライブなどの記憶装置にて構成されている。
【００２４】
ここで、上述したように、本実施形態におけるストレージシステム１は、コンテンツアドレスストレージシステムである。このため、上述した分離データ書き込み部１１（データ書き込み部）及びＣＡＳ装置２０は、コンテンツアドレスを利用してデータを記憶装置２５に格納する機能を有しており、以下に説明するように、データを分割及び分散し、かつ、コンテンツアドレスにて格納位置を特定して、当該データを格納する。以下、ストレージシステム１にてコンテンツアドレスを利用したデータ書き込み処理について、図４乃至図５を参照して説明する。
【００２５】
まず、図４及び図５の矢印Ｙ１に示すように、データ書き込み／読み取りソフトウェア３０から分離データ書き込み部１１を介して書き込み要求されたファイルＡの入力を受けると、図４及び図５の矢印Ｙ２に示すように、当該ファイルＡを、所定容量（例えば、６４ＫＢ）のブロックデータＤに分割する。なお、上記ファイルＡは、例えば、後述するように、データ分離部１２にて分離されたユーザデータ部分２２を含むファイル２１であり、このファイル２１は、図３に示すように、ユーザデータ２２に関連付けられた拡張属性及び／又は代替データストリーム２３を含む。そして、拡張属性及び／又は代替データストリーム２３には、データ分離部１２にて分離された管理データ部分及びインデックスデータ部分が格納される。
【００２６】
そして、ファイルＡが分割されたブロックデータＤのデータ内容に基づいて、当該データ内容を代表する固有のハッシュ値Ｈを算出する（図５の矢印Ｙ３）。例えば、ハッシュ値Ｈは、予め設定されたハッシュ関数を用いて、ブロックデータＤのデータ内容から算出する。
【００２７】
続いて、ファイルＡのブロックデータＤのハッシュ値Ｈを用いて、当該ブロックデータＤが既に格納されているか否かを調べる。具体的には、まず、既に格納されているブロックデータＤは、そのハッシュ値Ｈと格納位置を表すコンテンツアドレスＣＡとが、関連付けられてＭＦＩ（Ｍａｉｎ  Ｆｒａｇｍｅｎｔ  Ｉｎｄｅｘ）ファイルに登録されている。従って、格納前に算出したブロックデータＤのハッシュ値ＨがＭＦＩファイル内に存在している場合には、既に同一内容のブロックデータＤが格納されていると判断できる（図５の矢印Ｙ４）。この場合には、格納前のブロックデータＤのハッシュ値Ｈと一致したＭＦＩ内のハッシュ値Ｈに関連付けられているコンテンツアドレスＣＡを、当該ＭＦＩファイルから取得する。そして、このコンテンツアドレスＣＡを、書き込み要求されたブロックデータＤのコンテンツアドレスＣＡとして返却する。これにより、このコンテンツアドレスＣＡにて参照される既に格納されているデータが、書き込み要求されたブロックデータＤとして使用されることとなり、当該書き込み要求にかかるブロックデータＤを記憶する必要がなくなる。
【００２８】
また、書き込み要求にかかるブロックデータＤがまだ記憶されていないと判断された場合には、かかるブロックデータＤを圧縮して、図５の矢印Ｙ５に示すように、複数の所定の容量のフラグメントデータに分割する。例えば、図４の符号Ｄ１〜Ｄ９に示すように、９つのフラグメントデータ（分割データ４１）に分割する。そしてさらに、分割したフラグメントデータのうちいくつかが欠けた場合であっても、元となるブロックデータを復元可能なよう冗長データを生成し、上記分割したフラグメントデータ４１に追加する。例えば、図４の符号Ｄ１０〜Ｄ１２に示すように、３つのフラグメントデータ（冗長データ４２）を追加する。これにより、９つの分割データ４１と、３つの冗長データとにより構成される１２個のフラグメントデータからなるデータセット４０を生成する。
【００２９】
続いて、上述したように生成されたデータセットを構成する各フラグメントデータを、記憶装置に形成された各記憶領域に、それぞれ分散して格納する。例えば、図４に示すように、１２個のフラグメントデータＤ１〜Ｄ１２を生成した場合には、複数の記憶装置内にそれぞれ形成したデータ格納ファイルに、各フラグメントデータＤ１〜Ｄ１２を１つずつそれぞれ格納する（図５の矢印Ｙ６参照）。
【００３０】
続いて、ストレージシステム１は、上述したように格納したフラグメントデータＤ１〜Ｄ１２の格納位置、つまり、当該フラグメントデータＤ１〜Ｄ１２にて復元されるブロックデータＤの格納位置を表すコンテンツアドレスＣＡを生成して管理する。具体的には、格納したブロックデータＤの内容に基づいて算出したハッシュ値Ｈの一部（ショートハッシュ）（例えば、ハッシュ値Ｈの先頭８Ｂ（バイト））と、論理格納位置を表す情報と、を組み合わせて、コンテンツアドレスＣＡを生成する。そして、このコンテンツアドレスＣＡを、ストレージシステム１内のファイルシステムに返却する（図５の矢印Ｙ７）。すると、ストレージシステム１は、バックアップ対象データのファイル名などの識別情報と、コンテンツアドレスＣＡとを関連付けてファイルシステムで管理する。
【００３１】
また、ブロックデータＤのコンテンツアドレスＣＡと、当該ブロックデータＤのハッシュ値Ｈと、を関連付けて、各ストレージノード３がＭＦＩファイルにて管理する。このように、上記コンテンツアドレスＣＡは、ファイルを特定する情報やハッシュ値Ｈなどと関連付けられて、アクセラレータノード２やストレージノード３の記憶装置に格納される。
【００３２】
さらに、ストレージシステム１は、上述したように格納したファイルを読み出す制御を行う。例えば、ストレージシステム１に対して、特定のファイルを指定して読み出し要求があると、まず、ファイルシステムに基づいて、読み出し要求にかかるファイルに対応するハッシュ値の一部であるショートハッシュと論理位置の情報からなるコンテンツアドレスＣＡを指定する。そして、コンテンツアドレスＣＡがＭＦＩファイルに登録されているか否かを調べる。登録されていなければ、要求されたデータは格納されていないため、エラーを返却する。
【００３３】
一方、読み出し要求にかかるコンテンツアドレスＣＡが登録されている場合には、上記コンテンツアドレスＣＡにて指定される格納位置を特定し、この特定された格納位置に格納されている各フラグメントデータを、読み出し要求されたデータとして読み出す。このとき、各フラグメントが格納されているデータ格納ファイルと、当該データ格納ファイルのうち１つのフラグメントデータの格納位置が分かれば、同一の格納位置から他のフラグメントデータの格納位置を特定することができる。
【００３４】
そして、読み出し要求に応じて読み出した各フラグメントデータからブロックデータＤを復元する。さらに、復元したブロックデータＤを複数連結し、ファイルＡなどの一群のデータに復元して返却する。
【００３５】
以上のようにして、本実施形態におけるストレージシステム１はデータの重複を排除しているが、さらにデータ格納効率を高めるための構成となっている。かかる構成について詳述する。
【００３６】
まず、データ分離／結合装置１０が備えるデータ分離部１２は、図６に示すように、所定のファイルを構成する分離前データ３０を、ファイルの実データ部分であり、当該ファイルが生成された時間や更新回数などによっても値が変化しない「ユーザデータ」群からなるユーザデータ部分３１と、タイムスタンプや通番などのように時間や更新回数などの違いによって値が変化しファイル自体の管理情報を含む「管理データ」群からなる管理データ部分３２と、に分離する。つまり、ユーザデータ部分３１は、他のユーザデータと同一内容となる可能性があり、重複排除効果が期待できるデータである。一方、管理データ部分３２は、他の管理データと同一内容となる可能性が低く、重複排除効果が期待しづらいデータである。なお、ユーザデータ部分３１と管理データ部分３２との分離は、予めデータ分離部１２に各データ部分を区別するための基準情報が設定されており、かかる基準情報に基づいて行われる。
【００３７】
そして、データ分離部１２は、書き込み対象となるデータを、必ずしも「ユーザデータ部分」と「管理データ部分」とに分離することに限定されない。予め設定された基準に従って分類される１種類あるいは複数種類の他のデータ部分に分離してもよい。
【００３８】
また、データ分離部１２は、図６に示すように、分離結果に基づいて、各ユーザデータや各管理データの分離前のデータに対する格納位置をそれぞれ特定する情報を含むインデックスデータ群からなるインデックスデータ部分３３を生成する。例えば、上記インデックデータは、図７に示すように、ファイル種別、分離前ファイルにおけるファイル内オフセット、分離後の各ファイルにおけるファイル内オフセット、分離後のデータ長など、種々の管理情報を含んでいる。具体的に、上記「ファイル種別」は、対応するユーザデータあるいは管理データが格納されているファイル種別やファイル自体を特定するファイル情報である。また、「分離前ファイルにおけるファイル内オフセット」は、分離されたユーザデータあるいは管理データの分離される前のファイル内における位置情報である。また、「分離後の各ファイルにおけるファイル内オフセット」は、分離されたユーザデータあるいは管理データが分離後に格納されたユーザデータファイルあるいは管理データファイル内における位置情報である。そして、「分離後のデータ長」は、分離されたユーザデータあるいは管理データ自体のデータ長である。但し、インデックスデータに記憶される情報は、上述した情報に限定されない。
【００３９】
そして、分離データ書き込み部１１（データ書き込み部）は、上記データ分離部１２にて分離されたデータを記憶装置２５に格納するが、このとき、図６に示すように分離されたユーザデータ部分３１と管理データ部分３２と生成されたインデックスデータ部分３３とを、同一のファイル２１に格納する。具体的に、分離データ書き込み部１１は、図３のファイル２１に示すように、ユーザデータ部分３１のみをユーザデータ２２としてファイル２１に格納し、このユーザデータ２２に関連付けられたメタデータである拡張属性や代替ストリーム２３に、管理データ部分３２とインデックスデータ部分３３とを格納する。例えば、ファイル２１は、拡張属性及び代替データストリームといったメタデータを含んでおり、拡張属性に管理データ部分３２を格納し、代替データストリームにインデックスデータ部分３３を格納している。但し、管理データ部分やインデックスデータ部分は、ファイル２１に関連付けられたメタデータであれば、いかなるデータに格納されていてもよい。
【００４０】
ここで、上述したファイルの「拡張属性」は、ファイル２１の属性データを拡張したデータであり、検索キーと任意の内容のデータの組み合わせを要素とする検索可能なリスト構造のデータである。このリスト構造は、ファイル２１のオフセットをキーに、データを取り出すユーザデータ２２と類似しており、当該ユーザデータ２２と同様の扱いができる。
【００４１】
また、上述した「代替データストリーム」は、ファイル２１上、ユーザデータ２２とは区分けして管理されたデータであり、代替データストリームごとに、データにアクセスするための識別子が割り当てられる。なお、１個のファイル２１に、複数の代替データストリームを持たせることも可能である。ファイル２１に代替データストリームの識別子を与え、ファイルを参照・更新すると、ユーザデータ２２の代わりに、識別子に対応した代替データストリームを参照・更新できる。
【００４２】
ここで、ファイル２１と、ファイル２１の拡張属性、代替データストリームの存在の整合性は、ストレージシステムが保障することとなる。
【００４３】
以上のように、ファイル２１の拡張属性と代替データストリームは、１個のファイル２１に複数のサブデータを持たせる効果がある。ファイル２１の拡張属性と代替データストリームを、ユーザデータ２２に対するサブデータストリームとみなすことで、ユーザデータ、管理データ、インデックスデータを、１個のファイルに書き込むことを実現している。
【００４４】
そして、上述したように一旦分離された後に１つのファイル２１に含められた書き込み対象となるデータは、当該ファイルが書き込み対象となるデータとして、分離データ書き込み部１１にてＣＡＳ装置２０に書き込まれる。以降のファイル２１の書き込み動作は、通常のコンテンツアドレスストレージシステムにおける書き込み動作と同様であり、上記図４，５を参照して説明したように、上述したファイル２１をさらに分割して、冗長化を行った上で分散して複数の記憶装置に記憶される。
【００４５】
このとき、分離データ書き込み部１１は、ファイル２１中の拡張属性及び／あるいは代替データストリームに書き込まれた管理データとインデックスデータを、可変長のブロックに区切り、記憶装置２５内にブロック集合２６、ブロック集合２７として格納する。例えば、管理データをブロック集合２６に格納し、インデックスデータをブロック集合２７に格納する。これにより、ブロック集合２６とブロック集合２７とは、重複排除が望めない管理データとインデックスデータのみを含むこととなる。また、分離データ書き込み部１１は、ファイル２１に書き込まれたユーザデータ２２を、可変長のブロックに区切り、記憶装置２５内にブロック集合２８として格納する。このブロック集合２８は、重複排除が望めるユーザデータのみを含むこととなる。なお、各ブロック集合２６，２７，２８は、上述したように予め特定のデータが格納される領域として記憶装置２５内に設定されている。
【００４６】
また、データ分離／結合装置１０が有する分離データ読み取り部１４（データ読み取り部）は、データ書き込み／読み取りソフトウェア３０から読み取りの要求があったファイル名をもとに、ファイル２１を記憶装置２５内から取得する。そして、分離データ関連付け部１３が、取得したファイル２１に関連付けられている拡張属性及び／又は代替データストリーム２３内のインデックスデータに記憶されている情報に基づいて、ユーザデータ及び管理データを読み取る。そして、これらをインデックスデータに記憶されている情報に従って、分離前のデータにおけるユーザデータ及び管理データの位置を特定し、当該ユーザデータ及び管理データを結合して、分離前のデータを生成する。
【００４７】
その後、分離データ読み取り部１４は、生成された分離前のデータを、データ書き込み／読み取りソフトウェア３０に返却する。これらにより、データ書き込み／読み取りソフトウェア３０は、データが分離され格納されていることを意識せずにファイルを参照することができる。
【００４８】
ここで、ストレージシステム１は、上述したように、記憶装置２５内で別々のブロック集合２６，２７，２８として格納されている拡張属性、代替データストリーム、ユーザデータを、１個のユーザデータファイル２１に関連付けて管理していることから、以下のような処理も可能である。例えば、拡張属性更新要求を受け取ると、ファイル２１の拡張属性部分を更新し、拡張属性部分だけを可変長のブロックに区切り、記憶装置２５にブロック集合２６として格納する。また、拡張属性参照要求を受けると、記憶装置２５に格納済みのブロックの集合２６から、拡張属性を再生して返却する。また、代替データストリーム更新要求を受け取ると、ファイル２１の代替データストリーム部分を更新し、代替データストリームだけを可変長のブロックに区切り、記憶装置２５にブロック集合２７として格納する。代替データストリーム参照要求を受けると、記憶装置２５に格納済みのブロック集合２７から、代替データストリームを再生して返却する。さらに、ユーザデータ更新要求を受け取ると、ファイル２１のユーザデータ部分を更新し、ユーザデータだけを可変長のブロックに区切り、記憶装置２５にブロックの集合２８として格納する。ユーザデータ参照要求を受けると、記憶装置２５に格納済みのブロックの集合２８からユーザデータを再生して返却する。
【００４９】
なお、書き込み対象となるデータの分離後のデータ（ユーザデータ、管理データ、インデックスデータ）と、データ書き込み先（ファイル２１のユーザデータ２２、拡張属性２３、代替データストリーム２３）の組み合わせの自由度は、データ格納先となるＣＡＳ装置２０の仕様に依存する。拡張属性および代替データストリームにおいても、ユーザデータを重複排除するＣＡＳ装置２０に格納することで、重複排除性能を確保できる。但し、拡張属性や代替データストリームを重複排除しないストレージ装置にデータを格納してもよい。かかる場合であっても、分離後のデータのうち、重複排除が望めない管理データとインデックスデータを、拡張属性や代替データストリームに書き込むが、ユーザデータ部分をユーザデータ２２に書き込んで重複排除機能を有するＣＡＳ装置２０に書き込むことで、重複排除性能を実現できる。
【００５０】
［動作］
次に、上述したストレージシステム１つまりデータ分離／結合装置１０の動作を、図３と、図８及び図９のフローチャートを参照して説明する。
【００５１】
まず、ファイルへのデータ書き込み時の動作について説明する。データ書き込み／読み取りソフトウェア３０は、データ分離／結合装置１０へデータ書き込み要求を発行する（ステップＳ１）。分離データ書き込み部１１は、受け取ったデータをデータ分離部１２に渡す。データ分離部１２は、受け取ったデータをユーザデータと管理データに分離し（ステップＳ２）、インデックスデータを生成して（ステップＳ３）、これらを分離データ書き込み部１１に返却する。
【００５２】
分離データ書き込み部１１は、ユーザデータを、ＣＡＳ装置２０へ、ファイル２１のユーザデータ２２として書き込む。管理データとインデックスデータについては、ファイル２１の拡張属性及び／又は代替データストリームとして書き込む（ステップＳ４）。拡張属性や代替データストリームに書き込まれた管理データとインデックスデータは、可変長のブロックに区切られ、記憶装置２５内に、ブロック集合２６、ブロック集合２７として格納される。これにより、ブロック集合２６とブロック集合２７は、重複排除が望めない管理データとインデックスデータのみを含むこととなる。また、ファイル２１に書き込まれたユーザデータ２２は、可変長のブロックに区切られ、データ重複排除機構を備えた記憶装置２５内に、ブロック集合２８として格納される。これにより、ブロック集合２８は、重複排除が望めるユーザデータのみを含むこととなる。
【００５３】
次に、読み取り時の動作について説明する。データ書き込み／読み取りソフトウェア３０は、データ分離／結合装置１０へデータ読み取り要求を発行する（ステップＳ１１）。分離データ読み込み部１４は、ファイル２１の拡張属性及び／又は代替データストリーム２３、ユーザデータ２２の形で格納されている管理データ、インデックスデータ、ユーザデータを、各ブロック集合２６，２７，２８内から取得し（ステップＳ１２）、分離データ関連付け部１３を用いてインデックスデータをもとに、順序良くブロックを結合して、元のデータを再生する（ステップＳ１３）。その後、再生したデータを、データ書き込み／読み取りソフトウェア３０へ返却する。
【００５４】
以上のように、本発明では、データの分離後に生成される図６に示すようなユーザデータ部分３１、管理データ部分３２、インデックスデータ部分３３を、それぞれ個々のファイルとして記憶装置に書き込むことを行っていない。このため、ファイル再生時であっても、３個のファイルの存在を確認する処理が不要となり、また、いずれかのファイルが消失することによってデータにアクセス不可能となることを防止することができる。つまり、本発明では、重複排除の効率を高めるべく、データを分離するものの、分離後のデータを１つのファイルとして扱うため、これら分離後のデータが常に存在することが保証される。そして、分離後の３つのデータのフラッシュの順序をアトミックに制御するとこで、分離後のデータの矛盾を抑制できる。その結果、高効率な重複排除を実現しつつ、障害からの復旧処理を簡素化でき、ストレージシステムの耐障害性の向上を図ることができる。
【００５５】
また、一般的に、ストレージ装置には格納可能なファイル数に上限があるが、上述したように、分離後に３つのデータが存在するものの、これらを１つのファイルとして管理するため、格納できるバックアップファイル数の増加を図ることができる。仮に分離後の３つのデータを３つのファイルとして扱う場合と比較すると、その場合よりも３倍のファイル数を扱うことができる。
【００５６】
なお、上記では、データ分離／結合装置１０を、データ重複排除機構を搭載したＣＡＳ装置２０とは別の装置とした構成を説明したが、データ分離／結合装置１０を、データ重複排除機構を搭載したＣＡＳ装置２０内に実装した構成としてもよい。
【００５７】
また、上記では、データ分離／結合装置１０は、バックアップファイルのデータを３つのデータに分離していたが、重複が望めるユーザデータと、重複が望めないデータ（管理情報データ、インデックスデータ）の２つに分離してもよい。この場合、単一の拡張属性、または単一の代替データストリームしか備えていないデータ重複排除機構を搭載したストレージと組み合わせた構成でも実現できる。
【００５８】
さらに、上記では、ファイルの拡張属性および代替データストリームが、ユーザデータと同様に重複排除されるストレージ装置と組み合わせた構成であったが、拡張属性や代替データストリームを重複排除しないストレージ装置と組み合わせた構成でも、上述と同等な効果を得ることができる。
【００５９】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるストレージシステム１１０の構成の概略について図１０を参照して説明する。また、本発明における、プログラム、データ格納方法の構成について説明する。但し、本発明は、以下の構成に限定されない。
【００６０】
（付記１）
書き込み対象となるデータを所定容量に分割して記憶装置１２０に格納すると共に、当該記憶装置に既に記憶されているデータと同一内容の他のデータを前記記憶装置に格納する場合に当該記憶装置に既に記憶されているデータを他のデータとして参照させるデータ書き込み部１１１と、
書き込み対象となるデータを、予め設定された基準に従って分類されるユーザデータ部分と管理データ部分とに分離するデータ分離部１１２と、を備え、
前記データ書き込み部１１１は、前記ユーザデータ部分を格納したファイルを生成すると共に、当該ファイルに格納された前記ユーザデータ部分に関連付けられたメタデータとして前記管理データ部分を前記ファイルに含めて格納し、前記ファイルを書き込み対象となるデータとして前記記憶装置１２０に記憶する、
ストレージシステム１１０。
【００６１】
（付記２）
付記１に記載のストレージシステムであって、
前記データ分離部は、分離された前記ユーザデータ部分と前記管理データ部分との分離前におけるデータ中の位置情報を含むインデックスデータを生成し、
前記データ書き込み部は、前記ファイルに格納された前記ユーザデータ部分に関連付けられた前記メタデータとして前記インデックスデータを前記ファイルに格納し、前記ファイルを書き込み対象となるデータとして記憶装置に記憶する、
ストレージシステム。
【００６２】
（付記３）
付記１又は２に記載のストレージシステムであって、
前記データ書き込み部は、前記ファイルに格納された前記ユーザデータ部分の拡張属性及び／又は代替データストリームを前記メタデータとして用いる、
ストレージシステム。
【００６３】
（付記４）
付記１乃至３のいずれかに記載のストレージシステムであって、
前記データ書き込み部は、前記ファイルを分割することによって形成された前記ユーザデータ部分の分割データを前記記憶装置内の所定領域に格納する、
ストレージシステム。
【００６４】
（付記５）
付記２に記載のストレージシステムであって、
前記データ書き込み部は、前記ファイルを分割することによって形成された前記ユーザデータ部分と前記拡張属性部分と前記代替データストリーム部分との分割データを、当該各部分に応じた前記記憶装置内の各所定領域にそれぞれ格納する、
ストレージシステム。
【００６５】
（付記６）
書き込み対象となるデータを所定容量に分割して記憶装置に格納すると共に、当該記憶装置に既に記憶されているデータと同一内容の他のデータを前記記憶装置に格納する場合に当該記憶装置に既に記憶されているデータを他のデータとして参照させるデータ書き込み部を備えた情報処理装置に、
書き込み対象となるデータを、予め設定された基準に従って分類されるユーザデータ部分と管理データ部分とに分離するデータ分離部を実現させると共に、
前記データ書き込み部は、前記ユーザデータ部分を格納したファイルを生成すると共に、当該ファイルに格納された前記ユーザデータ部分に関連付けられたメタデータとして前記管理データ部分を前記ファイルに含めて格納し、前記ファイルを書き込み対象となるデータとして前記記憶装置に記憶する、ことを実現させるためのプログラム。
【００６６】
（付記７）
付記６に記載のプログラムであって、
前記データ分離部は、分離された前記ユーザデータ部分と前記管理データ部分との分離前におけるデータ中の位置情報を含むインデックスデータを生成し、
前記データ書き込み部は、前記ファイルに格納された前記ユーザデータ部分に関連付けられた前記メタデータとして前記インデックスデータを前記ファイルに格納し、前記ファイルを書き込み対象となるデータとして記憶装置に記憶する、
プログラム。
【００６７】
（付記８）
書き込み対象となるデータを所定容量に分割して記憶装置に格納すると共に、当該記憶装置に既に記憶されているデータと同一内容の他のデータを前記記憶装置に格納する場合に当該記憶装置に既に記憶されているデータを他のデータとして参照させるデータ書き込み工程を有するデータ格納方法であって、
前記データ書き込み工程の前に、書き込み対象となるデータを、予め設定された基準に従って分類されるユーザデータ部分と管理データ部分とに分離するデータ分離工程を有し、
前記データ書き込み工程は、前記ユーザデータ部分を格納したファイルを生成すると共に、当該ファイルに格納された前記ユーザデータ部分に関連付けられたメタデータとして前記管理データ部分を前記ファイルに含めて格納し、前記ファイルを書き込み対象となるデータとして前記記憶装置に記憶する、
データ格納方法。
【００６８】
（付記９）
付記８に記載のデータ格納方法であって、
前記データ分離工程は、分離された前記ユーザデータ部分と前記管理データ部分との分離前におけるデータ中の位置情報を含むインデックスデータを生成し、
前記データ書き込み工程は、前記ファイルに格納された前記ユーザデータ部分に関連付けられた前記メタデータとして前記インデックスデータを前記ファイルに格納し、前記ファイルを書き込み対象となるデータとして記憶装置に記憶する、
データ格納方法。
【符号の説明】
【００６９】
１  ストレージシステム
２  アクセラレータノード
３  ストレージノード
４  バックアップシステム
５  バックアップ対象装置
１０  データ分離／結合装置
１１  分離データ書き込み部
１２  データ分離部
１３  分離データ関連付け部
１４  分離データ読み取り部
２０  ＣＡＳ装置
２１  ファイル
２２  ユーザデータ
２３  拡張属性、代替データストリーム
２５  記憶装置
３０  分離前データ
３１  ユーザデータ部分
３２  管理データ部分
３３  インデックスデータ部分
１１０  ストレージシステム
１１１  データ書き込み部
１１２  データ分離部
１２０  記憶装置
【図１】
0005660617.tif 000002
【図２】
0005660617.tif 000003
【図３】
0005660617.tif 000004
【図４】
0005660617.tif 000005
【図５】
0005660617.tif 000006
【図６】
0005660617.tif 000007
【図７】
0005660617.tif 000008
【図８】
0005660617.tif 000009
【図９】
0005660617.tif 000010
【図１０】
0005660617.tif 000011