(57)【要約】【課題】記憶容量の削減及び記憶処理時間の短縮化を図り、高性能なストレージシステムを提供すること。【解決手段】記憶対象データを格納すると共に、参照先のデータ内容及び格納位置に基づくアドレスデータであり上記記憶対象データ又は他のアドレスデータを参照する上記アドレスデータをツリー構造にて格納するデータ格納手段と、上記記憶対象データを上記データ格納手段に格納する操作内容、及び、上記記憶対象データを参照するツリー構造の上記アドレスデータを上記データ格納手段に格納する操作内容、を表す操作ログを生成する操作ログ生成手段と、上記操作ログに基づいて、上記データ格納手段に上記記憶対象データ及び上記ツリー構造のアドレスデータを格納するファイルシステム確定手段と、を備える。【選択図】図８
2010198528.tif 000002
【特許請求の範囲】
【請求項１】
記憶対象データを格納すると共に、参照先のデータ内容及び格納位置に基づくアドレスデータであり前記記憶対象データ又は他のアドレスデータを参照する前記アドレスデータをツリー構造にて格納するデータ格納手段と、
前記記憶対象データを前記データ格納手段に格納する操作内容、及び、前記記憶対象データを参照するツリー構造の前記アドレスデータを前記データ格納手段に格納する操作内容、を表す操作ログを生成する操作ログ生成手段と、
前記操作ログに基づいて、前記データ格納手段に前記記憶対象データ及び前記ツリー構造のアドレスデータを格納するファイルシステム確定手段と、
を備えたストレージシステム。
【請求項２】
請求項１記載のストレージシステムであって、
前記操作ログ生成手段は、前記記憶対象データ及び前記ツリー構造のアドレスデータを、前記データ格納手段とは異なる記憶領域であるキャッシュメモリに格納すると共に、この格納操作に基づいて前記操作ログを生成して当該操作ログを前記キャッシュメモリに記憶する、
ストレージシステム。
【請求項３】
請求項２記載のストレージシステムであって、
前記ファイルシステム確定手段は、前記操作ログに基づいて前記記憶対象データを前記データ格納手段に格納すると共に、前記記憶対象データを前記データ格納手段に格納することによって特定された前記アドレスデータを用いた前記ツリー構造のアドレスデータを、前記操作ログに基づいて前記データ格納手段に格納する、
ストレージシステム。
【請求項４】
請求項３記載のストレージシステムであって、
前記ファイルシステム確定手段は、前記操作ログに基づいて、前記アドレスデータを、前記ツリー構造のアドレスデータのうち下位階層から上位階層に向かって順に前記データ格納手段に格納する、
ストレージシステム。
【請求項５】
請求項３又は４記載のストレージシステムであって、
前記ファイルシステム確定手段は、前記操作ログに基づいて、複数の前記記憶対象データを前記データ格納手段に格納した後に前記アドレスデータを前記データ格納手段に格納する、
ストレージシステム。
【請求項６】
請求項５記載のストレージシステムであって、
前記ファイルシステム確定手段は、同一のファイルを構成する前記複数の記憶対象データを前記データ格納手段に格納する、
ストレージシステム。
【請求項７】
請求項６記載のストレージシステムであって、
前記ファイルシステム確定手段は、同一のファイルを構成する前記複数の記憶対象データの全て、及び、当該複数の記憶対象データを参照する前記ツリー構造のアドレスデータを、前記キャッシュメモリに格納した後に、前記複数の記憶対象データ及び前記ツリー構造のアドレスデータを、前記データ格納手段に格納する、
ストレージシステム。
【請求項８】
記憶対象データを格納すると共に、参照先のデータ内容及び格納位置に基づくアドレスデータであり前記記憶対象データ又は他のアドレスデータを参照する前記アドレスデータをツリー構造にて格納するデータ格納手段を備えた情報処理装置に、
前記記憶対象データを前記データ格納手段に格納する操作内容、及び、前記記憶対象データを参照するツリー構造の前記アドレスデータを前記データ格納手段に格納する操作内容、を表す操作ログを生成する操作ログ生成手段と、
前記操作ログに基づいて、前記データ格納手段に前記記憶対象データ及び前記ツリー構造のアドレスデータを格納するファイルシステム確定手段と、
を実現させるためのプログラム。
【請求項９】
請求項８記載のプログラムであって、
前記操作ログ生成手段は、前記記憶対象データ及び前記ツリー構造のアドレスデータを、前記データ格納手段とは異なる記憶領域であるキャッシュメモリに格納すると共に、この格納操作に基づいて前記操作ログを生成して当該操作ログを前記キャッシュメモリに記憶する、
プログラム。
【請求項１０】
記憶対象データを格納すると共に、参照先のデータ内容及び格納位置に基づくアドレスデータであり前記記憶対象データ又は他のアドレスデータを参照する前記アドレスデータをツリー構造にて格納するデータ格納手段を備えた情報処理装置にて、
前記記憶対象データを前記データ格納手段に格納する操作内容、及び、前記記憶対象データを参照するツリー構造の前記アドレスデータを前記データ格納手段に格納する操作内容、を表す操作ログを生成し、
前記操作ログに基づいて、前記データ格納手段に前記記憶対象データ及び前記ツリー構造のアドレスデータを格納する、
データ格納方法。
【請求項１１】
請求項１０記載のデータ格納方法であって、
前記操作ログ生成時に、前記記憶対象データ及び前記ツリー構造のアドレスデータを、前記データ格納手段とは異なる記憶領域であるキャッシュメモリに格納すると共に、この格納操作に基づいて前記操作ログを生成して当該操作ログを前記キャッシュメモリに記憶する、
データ格納方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムにかかり、特に、格納したデータの内容に応じて特定される固有のアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレス型のストレージシステムに関する。
【背景技術】
【０００２】
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。
【０００３】
このような状況に応じて、近年では、特許文献１に示すように、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、データを分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置が特定される。具体的に、コンテンツアドレスストレージシステムでは、所定のデータを複数のフラグメントに分割すると共に、冗長データとなるフラグメントをさらに付加して、これら複数のフラグメントをそれぞれ複数の記憶装置にそれぞれ格納している。
【０００４】
そして、後に、コンテンツアドレスを指定することにより、当該コンテンツアドレスにて特定される格納位置に格納されているデータつまりフラグメントを読み出し、複数のフラグメントから分割前の所定のデータを復元することができる。
【０００５】
また、上記コンテンツアドレスは、データの内容に応じて固有となるよう生成される例えば、データのハッシュ値を用いる。このため、重複データであれば同じ格納位置のデータを参照することで、同一内容のデータを取得することができる。従って、重複データを別々に格納する必要がなく、重複記録を排除し、データ容量の削減を図ることができる。
【０００６】
また、コンテンツアドレスストレージシステムでは、ツリー型ファイルシステムが用いられている。これは、格納したデータを参照するコンテンツアドレス自体を、さらに上位階層に位置するコンテンツアドレスにて参照し、コンテンツアドレスをツリー構造に形成して格納している、というものである。これにより、上位階層から下位階層に向かって、コンテンツアドレスの参照先を辿っていくことで、目的の格納データにアクセスすることができる。
【０００７】
ここで、図１を参照して、コンテンツアドレスストレージシステムにおける、データ格納時の様子について説明する。ここでは、特に、データを格納してから、その格納したデータを参照するコンテンツアドレスのツリー構造（階層構造）の変化について説明する。
【０００８】
図１は、コンテンツアドレスストレージシステムのデータ格納手段に格納されたデータを示している。「ca00」や「ca01」に示される箱は、データブロックを示しており、「ca00」や「ca01」は、自身のデータ内容に応じて特定された格納位置を表すコンテンツアドレスを示している。
【０００９】
ここで、あるデータブロックから別のデータブロックを参照するときは、「ca」で示す直接アドレスを用いる方法と、「#1」で示す間接アドレスを用いる方法があり、アドレス対応表「ca100」には、間接アドレスの参照先となるコンテンツアドレスを格納している。例えば、「file1」の格納先は、「#3」となっており、直接コンテンツアドレス「ca30」を記録するのではなく、間接アドレスを用いている。これは、直接アドレスを用いるとき、ツリー構造のリーフにおける変更はルートまで伝搬されるためである。つまり、例えば、「ca30」の変更は、「ca11」の変更となり、さらに上位の「ca10」を変更しなければならない。ところが、間接アドレスを用いることで、当該間接アドレスに対応するコンテンツアドレスをアドレス対応表にて変更すればよく、上述したようなアドレス変更の伝搬を抑えることができる。なお、ツリー構造をたどる源は、ルート情報として格納されており、格納データは、このルート情報からツリー構造で下位階層にたどることができる。
【００１０】
次に、コンテンツアドレスストレージシステムにツリー構造を格納するときの動作を示すと共に、その問題を説明する。初期状態では、ルートディレクトリ「/」の配下に、「/dir1」と「/dir2」がある。そして、「/dir1」の配下に「/dir1/file1」と「/dir1/file2」があるときに、「/dir2/file3」を作成するときの動作を説明する。
【００１１】
はじめに、「/dir2/file3」を作成するためにファイルを「open」し、「dir2」に「file3」のエントリが作られる。すると、この「file3」のエントリである「file3=#5」がデータ格納手段に格納され、アドレスが「ca21-1」と求まる（１−１）。そして、このアドレス「ca21-1」を「dir2」が参照するアドレスとして格納し（１−２）、この「dir2,ca21-1」のデータブロックを参照するアドレスが「ca20-1」と求まる。その後、「dir2」の間接参照アドレスである「#2」に対応付けて、アドレス対応表に登録する（１−３）。これにより、アドレスデータのツリー構造が確定される。
【００１２】
次に、データブロック「data31」が、データ格納手段に格納されたとする（２−１）。すると、そのコンテンツアドレスが「ca51」と求まり、それを「file3」のデータブロックリスト「ca50(ca50-n)」に記録する（２−２）。これにより、データブロックリストのアドレスが「ca50-1」と求まり、これを「file3」の間接参照アドレスである「#5」に対応付けて、「#5=ca50-1」をアドレス対応表に登録する（２−３）。これにより、「file3」の状態が定まる。
【００１３】
その後、さらに、データブロック「data32」が、データ格納手段に格納された場合を考える（３−１）。すると、そのコンテンツアドレスが「ca52」と求まり、それを「file3」のデータブロックリスト「ca50(ca50-n)」に記録する（３−２）。これにより、データブロックリストのアドレスが「ca50-2」に変わり、これを「file3」の間接参照アドレスである「#5」に対応付けて、「#5=ca50-2」をアドレス対応表に登録する（３−３）。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００５−２３５１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかしながら、上述したコンテンツアドレスストレージシステムでは、ツリー構造の変化が、ディレクトリやファイルの作成のときだけでなく、ファイルの書き込みのときにも発生し、その量はファイルサイズに比例しうる。すると、本来格納不要であるコンテンツアドレスの中間状態が、データ格納手段に格納されることとなる。このため、将来同一データの格納に供えデータの消去をしないコンテンツアドレスストレージシステムの格納領域を無駄に使用することとなる。さらに、データからハッシュ値を求めるために一般的なファイルシステムより長い時間のかかるコンテンツアドレスストレージシステムにおいて、書き込み時間の遅延が生じる、という問題がある。
【００１６】
このため、本発明の目的は、上述した課題である、記憶容量の削減及び記憶処理時間の短縮化を図り、高性能なストレージシステムを提供することにある。
【課題を解決するための手段】
【００１７】
かかる目的を達成するため本発明の一形態であるストレージシステムは、
記憶対象データを格納すると共に、参照先のデータ内容及び格納位置に基づくアドレスデータであり上記記憶対象データ又は他のアドレスデータを参照する上記アドレスデータをツリー構造にて格納するデータ格納手段と、
上記記憶対象データを上記データ格納手段に格納する操作内容、及び、上記記憶対象データを参照するツリー構造の上記アドレスデータを上記データ格納手段に格納する操作内容、を表す操作ログを生成する操作ログ生成手段と、
上記操作ログに基づいて、上記データ格納手段に上記記憶対象データ及び上記ツリー構造のアドレスデータを格納するファイルシステム確定手段と、
を備える。
【００１８】
また、本発明の他の形態であるプログラムは、
記憶対象データを格納すると共に、参照先のデータ内容及び格納位置に基づくアドレスデータであり上記記憶対象データ又は他のアドレスデータを参照する上記アドレスデータをツリー構造にて格納するデータ格納手段を備えた情報処理装置に、
上記記憶対象データを上記データ格納手段に格納する操作内容、及び、上記記憶対象データを参照するツリー構造の上記アドレスデータを上記データ格納手段に格納する操作内容、を表す操作ログを生成する操作ログ生成手段と、
上記操作ログに基づいて、上記データ格納手段に上記記憶対象データ及び上記ツリー構造のアドレスデータを格納するファイルシステム確定手段と、
を実現させるためのプログラムである。
【００１９】
また、本発明の他の形態であるデータ格納方法は、
記憶対象データを格納すると共に、参照先のデータ内容及び格納位置に基づくアドレスデータであり上記記憶対象データ又は他のアドレスデータを参照する上記アドレスデータをツリー構造にて格納するデータ格納手段を備えた情報処理装置にて、
上記記憶対象データを上記データ格納手段に格納する操作内容、及び、上記記憶対象データを参照するツリー構造の上記アドレスデータを上記データ格納手段に格納する操作内容、を表す操作ログを生成し、
上記操作ログに基づいて、上記データ格納手段に上記記憶対象データ及び上記ツリー構造のアドレスデータを格納する、
という構成を採る。
【発明の効果】
【００２０】
本発明は、以上のように構成されることにより、記憶容量の削減及び記憶処理時間の短縮化を図ることができ、高性能なストレージシステムを提供することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明に関連するストレージシステムにおけるデータ格納の様子を示す図である。
【図２】本発明におけるストレージシステムの構成の概略を示すブロック図である。
【図３】本発明の実施形態１におけるストレージシステムの構成を示す機能ブロック図である。
【図４】図３に開示したストレージシステムの動作を示すフローチャートである。
【図５】図３に開示したストレージシステムにおけるデータ格納の様子を示す図である。
【図６】図３に開示したストレージシステムにおけるデータ格納の様子を示す図である。
【図７】図３に開示したストレージシステムにおけるデータ格納の様子を示す図である。
【図８】図３に開示したストレージシステムにおけるデータ格納の様子を示す図である。
【図９】本発明の実施形態２におけるストレージシステムの構成を示す機能ブロック図である。
【発明を実施するための形態】
【００２２】
＜実施形態１＞
本発明の第１の実施形態を、図２乃至図８を参照して説明する。図２は、ストレージシステムの概略を示すブロック図であり、図３は、その構成を示す機能ブロック図である。図４は、ストレージシステムの動作を示すフローチャートである。図５乃至図８は、ストレージシステムにおけるデータ格納の様子を示す図である。
【００２３】
ここで、本実施形態は、後述する実施形態２で説明するストレージシステムの具体的な一例を示すものである。そして、以下では、ストレージシステムが、複数台のサーバコンピュータが接続されて構成されている場合を説明する。但し、本発明におけるストレージシステムは、複数台のコンピュータにて構成されることに限定されず、１台のコンピュータで構成されていてもよい。
【００２４】
［構成］
本発明におけるストレージシステム１０は、例えば、図示しないネットワークを介してバックアップ処理を制御するバックアップシステムに接続している。そして、バックアップシステムは、ネットワークを介して接続されたバックアップ対象装置に格納されているバックアップ対象データ（記憶対象データ）を取得し、ストレージシステム１０に対して記憶するよう要求する。これにより、ストレージシステム１０は、記憶要求されたバックアップ対象データをバックアップ用に記憶する。なお、図３では、ストレージシステム１０に対してデータを記憶要求するバックアップシステムとして、ユーザアプリケーション３０を例示する。
【００２５】
そして、図２に示すように、本実施形態におけるストレージシステム１０は、複数のサーバコンピュータが接続されて構成を採っている。具体的に、ストレージシステム１０は、ストレージシステム１０自体における記憶再生動作を制御するサーバコンピュータであるアクセラレータノード１０Ａと、データを格納する記憶装置を備えたサーバコンピュータであるストレージノード１０Ｂと、を備えている。なお、アクセラレータノード１０Ａの数とストレージノード１０Ｂの数は、図２に示したものに限定されず、さらに多くの各ノード１０Ａ，１０Ｂが接続されて構成されていてもよい。
【００２６】
さらに、本実施形態におけるストレージシステム１０は、データを分割及び冗長化し、分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレスストレージシステムである。
【００２７】
なお、以下では、ストレージシステム１０が１つのシステムであるとして、当該ストレージシステム１０が備えている構成及び機能を説明する。つまり、以下に説明するストレージシステム１０が有する構成及び機能は、アクセラレータノード１０Ａあるいはストレージノード１０Ｂのいずれに備えられていてもよい。なお、ストレージシステム１０は、図２に示すように、必ずしもアクセラレータノード１０Ａとストレージノード１０Ｂとを備えていることに限定されず、いかなる構成であってもよい。
【００２８】
図３に、ストレージシステム１０の構成を示す。この図に示すように、ストレージシステム１０は、ファイルシステムアクセス部１１と、ツリー構造再現部１２と、データ再現部１３と、操作ログ１４と、ファイルシステム確定部１５と、データ格納部２０と、を備えている。そして、上記構成は、ストレージシステム１０に装備された演算装置にプログラムが組み込まれることで実現されたり、記憶装置にデータ格納領域として形成されていることによって実現されている。以下、各構成について詳述する。
【００２９】
上記データ格納部２０（データ格納手段）は、データを格納する記憶領域であると共に、データ格納処理を行う機能を有する。具体的に、データ格納部２０は、後述するように、ファイルシステム確定部１５等から格納する記憶対象データを与えられると、当該記憶対象データを格納する。同時に、格納した記憶対象データのデータ内容に基づいてハッシュ値を計算し、当該記憶対象データを参照するアドレスデータであるコンテンツアドレスを返却する。また、データ格納部２０は、上記記憶対象データ及び他のコンテンツアドレスを参照するツリー構造のコンテンツアドレスを格納する。このとき、他のコンテンツアドレスを参照するコンテンツアドレスは、参照先となる他のコンテンツアドレスのデータ内容に基づき当該他のコンテンツアドレスの格納位置を特定する値となる。このように、コンテンツアドレスは、参照先となるデータ内容及び格納位置に基づくアドレスデータであり、上位階層のコンテンツドレスが下位階層のコンテンツアドレスを参照し、また、最終的には格納された記憶対象データを参照するようツリー構造にて構成されている。なお、データ格納部２０におけるデータの格納状態の一例については後述する。
【００３０】
また、上記ファイルシステムアクセス部１１は、データの記憶要求等を行うユーザアプリケーション３０に対するアクセス手段を提供する。例えば、本実施形態におけるファイルシステムアクセス部１１は、「open」，「read」，「write」，「close」などオペレーティングシステムの一種であるＵＮＩＸ（登録商標）にて使用されるシステムコールに準ずるものに対応していることとする。但し、ファイルシステムアクセス部１１が提供するアクセス手段は、上述したシステムコールに限定されず、任意のインタフェースでもよい。また、上記ユーザアプリケーション３０は、ＮＦＳ（Network File System）やＣＩＦＳ（Common Internet File System）などのネットワークファイルシステムインタフェースを用いてもよく、同一マシン内のローカルファイルシステムとしてもかまわない。いずれにしても、ユーザアプリケーション３０の要求は、「open」，「close」，「mkdir」，「unlink」などのツリー構造に関する操作と、「read」，「write」などのデータに関する操作の２種に分類でき、ファイルシステムアクセス部１０は、ツリー構造に関する操作をツリー構造再現部１２に、データに関する操作をデータ再現部１３に振り分ける。
【００３１】
また、上記ツリー構造再現部１２は、ファイルシステムアクセス部１１からのツリー構造操作要求を受け、ツリー構造の操作に必要なデータをデータ格納部２０から読み出し、ツリー構造を一時的に生成して保持する。そして、この生成したツリー構造は最終的にファイルシステムとしてデータ格納部２０に格納する必要があるため、そのツリー構造を生成した操作内容を、「commitログ」として操作ログ１４に格納する。
【００３２】
また、上記データ再現部１３は、ファイルシステムアクセス部１１からのデータ転送要求を受け、「read」、「write」を処理する。例えば、データの書き込み要求時には、データ再現部１３は、まず、書き込み要求にかかる記憶対象データを一時的に保持し、その後、保持しているデータをデータ格納部２０に格納する。そして、データ格納部２０からコンテンツアドレスが返却されると、書き込みが完了した旨をファイルシステムアクセス部１１に応答する。特に、データの書き込みの際は、障害に対する処置が行われれば非同期におこなうこともできるため、データを一時的に保持した時点でファイルシステムアクセス部１１を経由してユーザアプリケーション３０に書き込み完了が通知され、次の書き込み要求を順次処理できる。このときは、「flushログ」として、後刻、一時的に保持している記憶対象データをデータ格納部２０に書き込む必要がある旨を操作ログ１４に格納する。なお、データの読み込みにおいては、データ格納部２０からコンテンツアドレスを指定し読み出すのが基本であるが、保持されたデータからの読み出しによるキャッシュ効果も期待できる。
【００３３】
また、上記操作ログ１４（キャッシュメモリ）は、ツリー操作およびデータ書き込みの記録が順次記録される。ツリー構造の確定には、それまでのデータ書き込み完了が必要なため、ツリー構造とデータ書き込みの両方の情報が必要となる。そして、操作ログ１４は、メモリ上にツリー構造再現部１２と、データ再現部１３の両方からアクセスできる共有メモリとして実現しても良いし、共有ファイルとして実現してもよい。また、耐障害性を確保するためにデータベースに対するトランザクションとして実現しても良い。
【００３４】
なお、上記操作ログ１４は、データ格納部２０が形成されているハードディスクなどの記憶装置とは異なる記憶領域であり、例えば、それよりもデータの記録再生速度が高速なフラッシュメモリに形成されている。
【００３５】
このように、上記ツリー構造再現部１２、データ再現部１３、操作ログ１４は、データ格納部２０に対して格納する際における記憶対象データやアドレスデータの操作内容を表す操作ログを生成して一時的に格納する操作ログ生成手段として機能する。このとき、特に、データ再現部１３は、データ格納部２０に対する記憶対象データを一時的に格納し、また、ツリー構造再現部１２は、記憶対象データを参照するアドレスデータのツリー構造を生成して一時的に格納するよう機能する。
【００３６】
また、上記ファイルシステム確定部１５（ファイルシステム確定手段）は、操作ログ１４に格納された「commitログ」と「flushログ」を順次読み取り、ツリー構造再現部１２とデータ再現部１３により一時的に更新された状態のツリー構造および記憶対象データを、データ格納部２０に格納する。なお、図３では、すべてのデータがファイルシステム確定部１５を経由しデータ格納部２０に入るように図示してあるが、ファイルシステム確定部１５が、ツリー構造再現部１２とデータ再現部１３にデータ格納部２０へデータの格納を促し、実際のデータ転送はファイルシステム確定部１５を経由しないようにしてもよい。
【００３７】
例えば、「close」のようなファイル操作の最後を示す要求を契機に、ツリー構造再現部１２は、ファイルシステム確定部１５に確定の要求を出すことができる。ファイルシステム確定部１５が、操作ログ１４に格納されたデータに基づき、ツリー操作とデータ転送を正しい順序でデータ格納部２０に確定させることにより、中間状態を排除したファイルシステムの確定が可能となる。なお、ファイルシステムの確定は、上述した「close」のような契機とは無関係に、所定の時間間隔（例えば、２分間隔）で実施することもできる。この場合、中間状態の排除は完全ではないが、そのインターバル間で発生したツリー構造の変化を記録することを抑制することができる。
【００３８】
［動作］
次に、上述したストレージシステム１０の動作を、図４乃至図８を参照して説明する。まず、図５は、ファイル作成から記憶対象データの書き込みまでについて、データ格納部２０の格納データ、ツリー構造再現部１２がキャッシュしているデータ、および、データ再現部１３がキャッシュしているデータを図示したものである。
【００３９】
図５のデータ格納部２０に示すように、初期状態では、ルートディレクトリ「/」の配下に、「/dir1」と「/dir2」があり、「/dir1」の配下に「/dir1/file1」と、「/dir1/file2」がある。ここに、「/dir2/file3」を作成するときの動作を示す。
【００４０】
まず、ユーザアプリケーション３０から「/dir2/file3」を「open」する要求があると、その要求はツリー構造再現部１２に渡される。ツリー構造再現部１２は、事前準備として、ツリー構造のアクセスのために「/dir2」をキャッシュ領域「&20」で参照可能とし、それをツリー構造再現部１２上のアドレス対応表に反映する。そして、「file3」に関する情報を格納する領域「&21」と「&50」とを割り当てて（１−１）、それらを「#5」としてアクセスできるよう、キャッシュ領域「&20」にアドレス「&21」を格納して、fileに関する情報を更新する（１−２）。このとき、「&20」、「&21」、「&50」に未確定のツリー構造が残るため、後刻「commit」してツリー構造を確定するために操作ログ１４を記録する。具体的には、「commit &21」（&20を確定する）、「commit &22 at close &50」（&50がcloseのときに&20を確定する）、という操作ログ１４を記録する。
【００４１】
続いて、データの書き込みがおこなわれると、データ再現部１３は、記憶対象データ「data31」を仮の領域「&51」に格納する（２−１）。そして、データ再現部１３は、格納したアドレス「&51」をツリー構造再現部１２に通知し、「&50」の最初の領域に「&51」が格納される（２−２）。同様に、データ再現部１３は、記憶対象データ「data32」を仮の領域「&52」に格納し（３−１）、格納したアドレス「&52」をツリー構造再現部１２に通知し、「&50」の領域に「&52」が格納される（３−２）。すると、「&51」、「&52」には未確定のデータが残るため、後刻「flush」して記憶対象データを確定するための操作ログ１４を記録する。具体的には、「flush &51 at close &50」（&50がcloseのときに&51を書き込む）、「flush &52 at close &50」（&50がcloseのときに&52を書き込む）、という操作ログ１４を記録する。このとき、操作ログ１４には、「&51」、「&52」と「&50」が関連づけられていることが記録される。これは、「flush」が完了する前に「commit」の処理が行われたときに、事前に「commit」をしておくものを検索するために使われる。
【００４２】
このように、データ再現部１３に記録対象データを格納し、また、ツリー構造再現部１２に記憶対象データを参照するアドレスデータのツリー構造を生成して格納し（図４のステップＳ１）、そのときの操作ログを記憶する（図４のステップＳ２）。
【００４３】
なお、中間状態を排除するという観点に鑑みると、ツリー構造は、できるだけ長くツリー構造再現部１２で保持し、構造の確定を待ったほうがよい。一方で、データについては、データ格納部２０に格納可能なサイズを超えた時点でデータブロックとして格納しはじめてかまわない。
【００４４】
次に、図６は、データが確定される動作を説明している。データ再現部１３は、「File3」を「close」するときには、操作ログ１４に記録されている「flush &51」、「flush &52」を行う。具体的には、データ再現部１３に保持されているデータ「data31」をデータ格納部１３に格納し（図４のステップＳ３）、当該格納した記憶対象データのコンテンツアドレス「ca51」を得る（４−１）。そして、コンテンツアドレスを得ると、それをツリー構造再現部１２のツリー構造に反映する（図４のステップＳ４）（４−２）。つまり、ツリー構造再現部１２内の「&50」に、アドレス「ca51」を格納する。同様に、データ再現部１３は、保持されているデータ「data32」を随時データ格納部１３に格納し、当該格納した記憶対象データのコンテンツアドレス「ca52」を得る（５−１）。そして、コンテンツアドレスを得ると、それをツリー構造再現部１２のツリー構造に反映する（５−２）。具体的には、ツリー構造再現部１２内の「&50」に、アドレス「ca52」を格納する。
【００４５】
そして、図７は、ファイルの書き込みが完了し、ツリー構造が確定するときの動作を示している。「File3」が「close」されると、上述したように「&50」のデータが確定し、コンテンツアドレス「ca51」、「ca52」がデータ格納部２０に格納される（６−１）。そして、ファイルシステム確定部１５は、これをデータ格納部２０のアドレス対応表に、「#5=ca50」を反映する（６−２）。
【００４６】
そして、操作ログ１４より、その後に残ったcommitを実施する。つまり、「commit &21」を行い、上述したように確定した「ca50」を参照する間接アドレス「#5」を含むデータである「&21」をデータ格納部２０に記録し、そのコンテンツアドレスが「ca21」と確定する（７−１）。従って、ツリー構造再現部１２の「&20」内に、コンテンツアドレス「ca21」を格納する（７−２）。そして、さらに、「commit &20」を行い、ツリー構造再現部１２内の「&20」をデータ格納部２０に格納し、そのコンテンツアドレスが「ca20-1」と確定する（８−１）。そして、これに対応して、データ格納部２０のアドレス対応表に、「#2=ca20-1」を反映する（８−２）。
【００４７】
以上のようにして、図８に示すよう、記憶対象データが格納され、当該データを参照するコンテンツアドレスのツリー構造が格納される（図４のステップＳ５）。従って、ツリー構造ファイルシステムを格納するときのツリー構造の変化における不要な中間状態が、データ格納部２０に格納されることがない。その結果、記憶容量の削減及び記憶処理時間の短縮化を図ることができ、高性能なストレージシステムを提供することができる。
【００４８】
このとき、特に、上述したように、同一ファイルである「File3」を構成する複数の記憶対象データ（data31,data32）をデータ格納部２０に格納してから、これによって特定されるコンテンツアドレスを用いて、ツリー構造を下位階層から上位階層に向かって順に確定している。従って、データ格納部２０上においてアドレスデータのツリー構造の変更を抑制することができ、当該アドレスデータの格納回数を抑制できる。その結果、より効果的に、ツリー構造の変化に伴うコンテンツアドレスの中間状態を表すデータを格納することを抑制できる。このとき、データ格納部２０に対して、同一ファイルを構成する全ての記憶対象データを格納してからツリー構造を格納することで、さらに効率的にアドレスデータのツリー構造の格納を実現できる。但し、同一ファイルを構成する記憶対象データのうち、一部の記憶対象データを格納した後に、当該記憶対象データを参照するアドレスデータのツリー構造を格納してもよい。
【００４９】
なお、上記では、記憶対象データやコンテンツアドレスのツリー構造が、ツリー構造再現部１２やデータ再現部１３に一時的に保持されているため、かかるデータを再利用することができ、キャッシュ効率の向上を図ることができる。従って、さらなる記憶再生処理の向上を図ることもできる。
【００５０】
＜実施形態２＞
次に、本発明の第２の実施形態を、図９を参照して説明する。図９は、本実施形態におけるストレージシステムの構成を示す機能ブロック図である。なお、本実施形態では、上述したストレージシステムの概略を説明する。
【００５１】
図９に示すように、本実施形態におけるストレージシステム１は、
記憶対象データを格納すると共に、参照先のデータ内容及び格納位置に基づくアドレスデータであり上記記憶対象データ又は他のアドレスデータを参照する上記アドレスデータをツリー構造にて格納するデータ格納手段２と、
上記記憶対象データを上記データ格納手段に格納する操作内容、及び、上記記憶対象データを参照するツリー構造の上記アドレスデータを上記データ格納手段に格納する操作内容、を表す操作ログを生成する操作ログ生成手段３と、
上記操作ログに基づいて、上記データ格納手段に上記記憶対象データ及び上記ツリー構造のアドレスデータを格納するファイルシステム確定手段４と、
を備える。
【００５２】
そして、上記ストレージシステムでは、
上記操作ログ生成手段は、上記記憶対象データ及び上記ツリー構造のアドレスデータを、上記データ格納手段とは異なる記憶領域であるキャッシュメモリに格納すると共に、この格納操作に基づいて上記操作ログを生成して当該操作ログを上記キャッシュメモリに記憶する、
という構成を採る。
【００５３】
また、上記ストレージシステムでは、
上記ファイルシステム確定手段は、上記操作ログに基づいて上記記憶対象データを上記データ格納手段に格納すると共に、上記記憶対象データを上記データ格納手段に格納することによって特定された上記アドレスデータを用いた上記ツリー構造のアドレスデータを、上記操作ログに基づいて上記データ格納手段に格納する、
という構成を採る。
【００５４】
また、上記ストレージシステムでは、
上記ファイルシステム確定手段は、上記操作ログに基づいて、上記アドレスデータを、上記ツリー構造のアドレスデータのうち下位階層から上位階層に向かって順に上記データ格納手段に格納する、
という構成を採る。
【００５５】
上記発明によると、まず、ストレージシステムは、記憶対象データと、この記憶対象データを参照するツリー構造のアドレスデータと、をデータ格納手段に格納する際に、これら各データを格納する操作内容を表す操作ログを生成する。具体的には、記憶対象データと、これを参照するツリー構造のアドレスデータと、をキャッシュメモリに格納し、この格納処理に基づいて操作ログを生成してキャッシュメモリに格納する。この時点では、まだ、データ格納手段には、記憶対象データ及びツリー構造のアドレスデータを格納しない。そして、その後、上記操作ログに基づいて、記憶対象データとツリー構造のアドレスデータを、データ格納手段に記憶する。特に、まず記憶対象データをデータ格納手段に格納し、その後、これによって特定されるアドレスデータを、ツリー構造の下位階層から上位階層に向かって順に、データ格納手段に格納する。
【００５６】
これにより、ツリー構造のアドレスデータの書き込み回数を削減でき、当該ツリー構造の変化を抑制することができる。従って、ツリー構造の変化に伴う中間状態を表すデータをデータ格納手段に格納することを抑制できる。その結果、記憶容量の削減及び記憶処理時間の短縮化を図ることができ、高性能なストレージシステムを提供することができる。
【００５７】
また、上記ストレージシステムでは、
上記ファイルシステム確定手段は、上記操作ログに基づいて、複数の上記記憶対象データを上記データ格納手段に格納した後に上記アドレスデータを上記データ格納手段に格納する、
という構成を採る。
【００５８】
また、上記ストレージシステムでは、
上記ファイルシステム確定手段は、同一のファイルを構成する上記複数の記憶対象データを上記データ格納手段に格納する、
という構成を採る。
【００５９】
また、上記ストレージシステムでは、
上記ファイルシステム確定手段は、同一のファイルを構成する上記複数の記憶対象データの全て、及び、当該複数の記憶対象データを参照する上記ツリー構造のアドレスデータを、上記キャッシュメモリに格納した後に、上記複数の記憶対象データ及び上記ツリー構造のアドレスデータを、上記データ格納手段に格納する、
という構成を採る。
【００６０】
このように、複数の記憶対象データをデータ格納手段に書き込んだ後に、これにより特定されるアドレスデータを格納することで、データ格納手段上においてアドレスデータのツリー構造の変更を抑制することができ、当該アドレスデータの格納回数を抑制できる。その結果、より効率的に、記憶容量の削減及び記憶処理時間の短縮化を図ることができる。
【００６１】
また、上述したストレージシステムは、情報処理装置に、プログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、
記憶対象データを格納すると共に、参照先のデータ内容及び格納位置に基づくアドレスデータであり上記記憶対象データ又は他のアドレスデータを参照する上記アドレスデータをツリー構造にて格納するデータ格納手段を備えた情報処理装置に、
上記記憶対象データを上記データ格納手段に格納する操作内容、及び、上記記憶対象データを参照するツリー構造の上記アドレスデータを上記データ格納手段に格納する操作内容、を表す操作ログを生成する操作ログ生成手段と、
上記操作ログに基づいて、上記データ格納手段に上記記憶対象データ及び上記ツリー構造のアドレスデータを格納するファイルシステム確定手段と、
を実現させるためのプログラムである。
【００６２】
そして、上記プログラムでは、
上記操作ログ生成手段は、上記記憶対象データ及び上記ツリー構造のアドレスデータを、上記データ格納手段とは異なる記憶領域であるキャッシュメモリに格納すると共に、この格納操作に基づいて上記操作ログを生成して当該操作ログを上記キャッシュメモリに記憶する、
という構成を採る。
【００６３】
また、上述したストレージシステムが作動することにより実行される、本発明の他の形態であるデータ格納方法は、
記憶対象データを格納すると共に、参照先のデータ内容及び格納位置に基づくアドレスデータであり上記記憶対象データ又は他のアドレスデータを参照する上記アドレスデータをツリー構造にて格納するデータ格納手段を備えた情報処理装置にて、
上記記憶対象データを上記データ格納手段に格納する操作内容、及び、上記記憶対象データを参照するツリー構造の上記アドレスデータを上記データ格納手段に格納する操作内容、を表す操作ログを生成し、
上記操作ログに基づいて、上記データ格納手段に上記記憶対象データ及び上記ツリー構造のアドレスデータを格納する、
という構成を採る。
【００６４】
そして、上記データ格納方法では、
上記操作ログ生成時に、上記記憶対象データ及び上記ツリー構造のアドレスデータを、上記データ格納手段とは異なる記憶領域であるキャッシュメモリに格納すると共に、この格納操作に基づいて上記操作ログを生成して当該操作ログを上記キャッシュメモリに記憶する、
という構成を採る。
【００６５】
上述した構成を有する、プログラム、又は、データ格納方法、の発明であっても、上記ストレージシステムと同様の作用を有するために、上述した本発明の目的を達成することができる。
【産業上の利用可能性】
【００６６】
本発明は、格納したデータの内容に応じて特定される固有のアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレス型のストレージシステムに利用することができ、産業上の利用可能性を有する。
【符号の説明】
【００６７】
１  ストレージシステム
２  データ格納手段
３  操作ログ生成手段
４  ファイルシステム確定手段
１０  ストレージシステム
１０Ａ  アクセラレータノード
１０Ｂ  ストレージノード
１１  ファイルシステムアクセス部
１２  ツリー構造再現部
１３  データ再現部
１４  操作ログ
１５  ファイルシステム確定部
２０  データ格納部
【図１】
2010198528.tif 000003
【図２】
2010198528.tif 000004
【図３】
2010198528.tif 000005
【図４】
2010198528.tif 000006
【図５】
2010198528.tif 000007
【図６】
2010198528.tif 000008
【図７】
2010198528.tif 000009
【図８】
2010198528.tif 000010
【図９】
2010198528.tif 000011