(57)【特許請求の範囲】
【請求項１】
書き込み対象となるデータの特性に対応してそれぞれ構成され、当該データを予め設定された基準に従って分割する複数の分割処理部と、
前記分割処理部にて分割された分割データを記憶装置に書き込むデータ書き込み部と、を備えると共に、
書き込み対象となるデータを受信して受信データとして一時的に記憶する受信バッファと、
前記受信バッファに記憶された前記受信データの特性を検出して、当該検出された受信データの特性に対応して構成された前記分割処理部を選択する分割処理選択部と、
前記分割処理選択部にて選択された前記分割処理部に、前記受信バッファに記憶された前記受信データを送信するデータ送信部と、を備えた、
ストレージ装置。
【請求項２】
請求項１に記載のストレージ装置であって、
前記分割処理部にて分割できなかったデータを分割保留データとして一時的に記憶するデータバッファを備え、
前記データ送信部は、前記データバッファに記憶された前記分割保留データと前記受信バッファに記憶された前記受信データとを一緒に、当該受信データの特性に対応して前記分割処理選択部にて選択された前記分割処理部に送信する、
ストレージ装置。
【請求項３】
請求項２に記載のストレージ装置であって、
前記分割処理部は、前記データ送信部から一緒に送信された前記分割保留データと前記受信データとを合わせたデータを分割すると共に、分割された分割データは前記データ書き込み部にて記憶装置に書き込まれ、分割できなかった分割保留データは前記データバッファに記憶される、
ストレージ装置。
【請求項４】
請求項２又は３に記載のストレージ装置であって、
前記データ送信部は、前記データバッファに前記分割保留データを記憶した後に前記受信バッファに記憶された前記受信データと、前記データバッファに記憶された前記分割保留データとを一緒に、前記分割処理部に送信する、
ストレージ装置。
【請求項５】
請求項１乃至４のいずれかに記載のストレージ装置であって、
前記分割処理部は、前記データを、予め設定された基準に従って分類される相互に対応するデータ部分とマーカ部分とに分割する、
ストレージ装置。
【請求項６】
書き込み対象となるデータを受信して受信データとして一時的に記憶する受信バッファを備えた情報処理装置に、
書き込み対象となるデータの特性に対応してそれぞれ構成され、当該データを予め設定された基準に従って分割する複数の分割処理部と、
前記分割処理部にて分割された分割データを記憶装置に書き込むデータ書き込み部と、
前記受信バッファに記憶された前記受信データの特性を検出して、当該検出された受信データの特性に対応して構成された前記分割処理部を選択する分割処理選択部と、
前記分割処理選択部にて選択された前記分割処理部に、前記受信バッファに記憶された前記受信データを送信するデータ送信部と、
を実現させるためのプログラム。
【請求項７】
請求項６に記載のプログラムであって、
前記データ送信部は、データバッファ内に一時的に記憶された前記分割処理部にて分割できなかったデータである分割保留データと、前記受信バッファに記憶された前記受信データとを一緒に、当該受信データの特性に対応して前記分割処理選択部にて選択された前記分割処理部に送信する、
プログラム。
【請求項８】
書き込み対象となるデータを受信して受信データとして受信バッファに一時的に記憶し、
前記受信バッファに記憶された前記受信データの特性を検出して、書き込み対象となるデータの特性に対応してそれぞれ構成され当該データを予め設定された基準に従って分割する複数の分割処理部のうち、前記検出された受信データの特性に対応して構成された前記分割処理部を選択し、
前記受信バッファに記憶された前記受信データを、選択された前記分割処理部に送信し、
前記分割処理部が、送信されたデータを分割し、
前記分割処理部にて分割された分割データを記憶装置に書き込む、
データ格納方法。
【請求項９】
請求項８に記載のデータ格納方法であって、
前記分割処理部にて分割できなかったデータを分割保留データとしてデータバッファに一時的に記憶し、
前記受信データを選択された前記分割処理部に送信する際に、前記データバッファに記憶された前記分割保留データを前記受信データと一緒に、当該受信データの特性に対応して選択された前記分割処理部に送信する、
データ格納方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置にかかり、特に、同一内容のデータの重複記憶を排除するストレージ装置に関する。
【背景技術】
【０００２】
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。【０００３】
このような状況に応じて、近年では、特許文献１に示すように、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、データを分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置が特定される。具体的に、コンテンツアドレスストレージシステムでは、所定のデータを複数のフラグメントに分割すると共に、冗長データとなるフラグメントをさらに付加して、これら複数のフラグメントをそれぞれ複数の記憶装置にそれぞれ格納している。【０００４】
そして、データ読み出し時には、コンテンツアドレスを指定することにより、当該コンテンツアドレスにて特定される格納位置に格納されているデータつまりフラグメントを読み出し、複数のフラグメントから分割前の所定のデータを復元することができる。【０００５】
また、上記コンテンツアドレスとしては、データの内容に応じて固有となるよう生成される値、例えば、データのハッシュ値を用いる。このため、重複データであれば同じ格納位置のデータを参照することで、同一内容のデータを取得することができる。従って、重複データを別々に格納する必要がなく、重複記録を排除し、データ容量の削減を図ることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２３５１７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、上述したように記憶するデータを重複排除するために、一連のストリームデータを所定のデータ長の単位に分割することが行われる。このとき、通常は、一連のストリームデータを一度バッファリングしてから、分割することが行われるため、バッファリング処理を行うモジュールと、分割処理を行うモジュールとが、一体的に構成する必要があった。【０００８】
そして、ストリームデータには種々の特性のものがあり、上記バッファリング処理と分割処理とは、データの特性に応じて行うことが効果的である。従って、各データ特性に応じて、上述したバッファリング処理と分割処理とを行う一体的なモジュールを、データ特性の数だけ開発することが望ましい。【０００９】
しかしながら、上述したようにバッファリング処理と分割処理とを行う一体的なモジュールは、バッファリング処理の規模が大きいファイルシステムに適用する場合、ストリームデータの特性の数に応じて開発することは困難であった。つまり、各データの特性に応じてバッファリング処理と分割処理とを行う一体的なモジュールをそれぞれ開発することで、開発コストが増加する、という問題があった。【００１０】
このため、本発明の目的は、上述した課題である、ストレージ装置における開発コストの増加、ということを解決することにある。
【課題を解決するための手段】
【００１１】
かかる目的を達成するため本発明の一形態であるストレージ装置は、
書き込み対象となるデータの特性に対応してそれぞれ構成され、当該データを予め設定された基準に従って分割する複数の分割処理部と、
上記分割処理部にて分割された分割データを記憶装置に書き込むデータ書き込み部と、を備えると共に、
書き込み対象となるデータを受信して受信データとして一時的に記憶する受信バッファと、
上記受信バッファに記憶された上記受信データの特性を検出して、当該検出された受信データの特性に対応して構成された上記分割処理部を選択する分割処理選択部と、
上記分割処理選択部にて選択された上記分割処理部に、上記受信バッファに記憶された上記受信データを送信するデータ送信部と、を備えた、
という構成をとる。【００１２】
また、本発明の他の形態であるプログラムは、
書き込み対象となるデータを受信して受信データとして一時的に記憶する受信バッファを備えた情報処理装置に、
書き込み対象となるデータの特性に対応してそれぞれ構成され、当該データを予め設定された基準に従って分割する複数の分割処理部と、
上記分割処理部にて分割された分割データを記憶装置に書き込むデータ書き込み部と、
上記受信バッファに記憶された上記受信データの特性を検出して、当該検出された受信データの特性に対応して構成された上記分割処理部を選択する分割処理選択部と、
上記分割処理選択部にて選択された上記分割処理部に、上記受信バッファに記憶された上記受信データを送信するデータ送信部と、
を実現させるためのプログラムである。【００１３】
また、本発明の他の形態であるデータ格納方法は、
書き込み対象となるデータを受信して受信データとして受信バッファに一時的に記憶し、
上記受信バッファに記憶された上記受信データの特性を検出して、書き込み対象となるデータの特性に対応してそれぞれ構成され当該データを予め設定された基準に従って分割する複数の分割処理部のうち、上記検出された受信データの特性に対応して構成された上記分割処理部を選択し、
上記受信バッファに記憶された上記受信データを、選択された上記分割処理部に送信し、
上記分割処理部が、送信されたデータを分割し、
上記分割処理部にて分割された分割データを記憶装置に書き込む、
という構成をとる。
【発明の効果】
【００１４】
本発明は、以上のように構成されることにより、ストレージ装置において、開発コストを抑制しつつ、効率的なデータ格納を実現することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態１におけるストレージシステムを含むシステム全体の構成を示すブロック図である。
【図２】本発明の実施形態１におけるストレージシステムの構成の概略を示すブロック図である。
【図３】本発明の実施形態１におけるストレージシステムの構成を示す機能ブロック図である。
【図４】図３に開示したストレージシステムにおけるデータ記憶処理の様子を説明するための説明図である。
【図５】図３に開示したストレージシステムにおけるデータ記憶処理の様子を説明する説明図である。
【図６】図３に開示したストレージシステムにおけるデータ分割処理の様子を説明する説明図である。
【図７】図３に開示したストレージシステムにおけるデータ分割処理の様子を説明する説明図である。
【図８】図３に開示したストレージシステムにおけるデータ分割処理の様子を説明する説明図である。
【図９】図３に開示したストレージシステムにおけるデータ分割処理の様子を説明する説明図である。
【図１０】図３に開示したストレージシステムにおけるデータ分割処理の様子を説明する説明図である。
【図１１】図３に開示したストレージシステムにおけるデータ分割処理の様子を説明する説明図である。
【図１２】図３に開示したストレージシステムにおけるデータ分割処理の動作を示すフローチャートである。
【図１３】付記１におけるストレージシステムの構成を示す機能ブロック図である。
【図１４】付記２におけるストレージシステムの構成を示す機能ブロック図である。
【発明を実施するための形態】
【００１６】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図１２を参照して説明する。図１は、システム全体の構成を示すブロック図である。図２は、ストレージシステムの概略を示すブロック図であり、図３は、ストレージシステムの構成を示す機能ブロック図である。図４乃至図５は、ストレージシステムにおけるデータ記憶処理の動作を説明するための説明図である。図６乃至図１１は、ストレージシステムにおけるデータ分割処理の動作を説明するための説明図である。図１２は、ストレージシステムの動作を示すフローチャートである。
【００１７】
ここで、本実施形態は、後述する付記に記載のストレージ装置等の具体的な一例を示すものである。そして、以下では、ストレージシステムが、複数台のサーバコンピュータが接続されて構成されている場合を説明する。但し、本発明におけるストレージシステムは、複数台のコンピュータにて構成されることに限定されず、１台のコンピュータで構成されていてもよい。
【００１８】
［構成］
図１に示すように、本発明におけるストレージシステム１は、ネットワークＮを介してバックアップ処理を制御するバックアップシステム４に接続している。そして、バックアップシステム４は、ネットワークＮを介して接続されたバックアップ対象装置５に格納されているバックアップ対象データとなるストリームデータを取得し、ストレージシステム１に対して記憶するよう要求する。これにより、ストレージシステム１は、記憶要求されたストリームデータをバックアップ用に記憶する。なお、ストレージシステム１が記憶するデータは、いかなる種類のデータであってもよい。
【００１９】
そして、図２に示すように、本実施形態におけるストレージシステム１は、複数のサーバコンピュータが接続されて構成を採っている。具体的に、ストレージシステム１は、ストレージシステム１自体における記憶再生動作を制御するサーバコンピュータであるアクセラレータノード２と、データを格納する記憶装置を備えたサーバコンピュータであるストレージノード３と、を備えている。なお、アクセラレータノード２の数とストレージノード３の数は、図２に示したものに限定されず、さらに多くの各ノード２，３が接続されて構成されていてもよい。
【００２０】
さらに、本実施形態におけるストレージシステム１は、データを分割及び冗長化し、分散して複数の記憶装置に記憶すると共に、記憶するデータの内容に応じて設定される固有のコンテンツアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレスストレージシステムである。このコンテンツアドレスストレージシステムについては、後に詳述する。
【００２１】
なお、以下では、ストレージシステム１が１つのシステムであるとして、当該ストレージシステム１が備えている構成及び機能を説明する。つまり、以下に説明するストレージシステム１が有する構成及び機能は、アクセラレータノード２あるいはストレージノード３のいずれに備えられていてもよい。なお、ストレージシステム１は、図２に示すように、必ずしもアクセラレータノード２とストレージノード３とを備えていることに限定されず、いかなる構成であってもよく、例えば、１台のコンピュータにて構成されていてもよい。さらには、ストレージシステム１は、コンテンツアドレスストレージシステムであることにも限定されない。
【００２２】
図３に、本実施形態におけるストレージシステム１の構成を示す。この図に示すように、ストレージシステム１は、バックアップシステム４からの要求に応じて、ファイルＡを記憶したり、読み出す処理を行うものである。
【００２３】
そして、ストレージシステム１は、ファイルシステムのＩ／Ｆ１０（インタフェース）を構成する、受信バッファ１１と、データバッファ１２と、モジュール選択部１３と、データ送信部１４と、結果受信部１５と、分割管理部１６と、データ書き出し部１７と、を備えている。また、ストレージシステム１は、データ受信部２１と、分割処理部２２と、結果送信部２３と、を備えた分割モジュール２０を複数備えている。さらに、ストレージシステム１は、データを記憶する記憶装置であるファイルシステム３０を備えている。
【００２４】
なお、上述した受信バッファ１１とデータバッファ１２とは、フラッシュメモリなどの記憶装置に形成されており、ファイルシステム３０は、ハードディスクドライブなどの記憶装置に形成されている。そして、その他の各部１３−１７，２０−２３は、ストレージシステム１に装備された演算装置にプログラムが組み込まれることによって構築されている。つまり、実際には、上述したストレージシステム１が備える構成は、図２に示したアクセラレータノード２及びストレージノード３が備えているＣＰＵ（Central Processing Unit）などの複数の演算装置や記憶装置にて構成されている。
【００２５】
ここで、上述したように、本実施形態におけるストレージシステム１は、コンテンツアドレスストレージシステムである。このため、上述したデータ書き出し部１７は、コンテンツアドレスを利用して、ファイルシステム３０にデータを格納する機能を有しており、以下に説明するように、データを分割及び分散し、かつ、コンテンツアドレスにて格納位置を特定して、データを格納する。以下、ストレージシステム１にてコンテンツアドレスを利用したデータ記憶処理について、図４乃至図５を参照して説明する。
【００２６】
まず、図４及び図５の矢印１に示すように、書き込み要求されたファイルＡの入力を受けると、図４及び図５の矢印Ｙ２に示すように、当該ファイルＡを、所定容量（例えば、６４ＫＢ）のブロックデータＤに分割する。なお、本実施形態の場合には、上記ファイルＡは、後述するように、分割モジュール２０にて分割された「データ」部分の集合や「マーカ」部分の集合であったり、あるいは、分割モジュール２０にて分割されたデータである各「データ」部分や各「マーカ」部分が、ブロックデータＤとなる。そして、分割されたブロックデータＤのデータ内容に基づいて、当該データ内容を代表する固有のハッシュ値Ｈを算出する（矢印Ｙ３）。例えば、ハッシュ値Ｈは、予め設定されたハッシュ関数を用いて、ブロックデータＤのデータ内容から算出する。
【００２７】
続いて、ブロックデータＤのハッシュ値Ｈを用いて、当該ブロックデータＤが既に格納されているか否かを調べる。具体的には、まず、既に格納されているブロックデータＤは、そのハッシュ値Ｈと格納位置を表すコンテンツアドレスＣＡとが、関連付けられてＭＦＩ（Ｍａｉｎ  Ｆｒａｇｍｅｎｔ  Ｉｎｄｅｘ）ファイルに登録されている。従って、格納前に算出したブロックデータＤのハッシュ値ＨがＭＦＩファイル内に存在している場合には、既に同一内容のブロックデータＤが格納されていると判断できる（図５の矢印Ｙ４）。この場合には、格納前のブロックデータＤのハッシュ値Ｈと一致したＭＦＩ内のハッシュ値Ｈに関連付けられているコンテンツアドレスＣＡを、当該ＭＦＩファイルから取得する。そして、このコンテンツアドレスＣＡを、書き込み要求されたブロックデータＤのコンテンツアドレスＣＡとして返却する。これにより、このコンテンツアドレスＣＡにて参照される既に格納されているデータが、書き込み要求されたブロックデータＤとして使用されることとなり、当該書き込み要求にかかるブロックデータＤを記憶する必要がなくなる。
【００２８】
また、書き込み要求にかかるブロックデータＤがまだ記憶されていないと判断された場合には、かかるブロックデータＤを圧縮して、図５の矢印Ｙ５に示すように、複数の所定の容量のフラグメントデータに分割する。例えば、図４の符号Ｄ１〜Ｄ９に示すように、９つのフラグメントデータ（分割データ４１）に分割する。そしてさらに、分割したフラグメントデータのうちいくつかが欠けた場合であっても、元となるブロックデータを復元可能なよう冗長データを生成し、上記分割したフラグメントデータ４１に追加する。例えば、図４の符号Ｄ１０〜Ｄ１２に示すように、３つのフラグメントデータ（冗長データ４２）を追加する。これにより、９つの分割データ４１と、３つの冗長データとにより構成される１２個のフラグメントデータからなるデータセット４０を生成する。
【００２９】
続いて、上述したように生成されたデータセットを構成する各フラグメントデータを、記憶装置に形成された各記憶領域に、それぞれ分散して格納する。例えば、図４に示すように、１２個のフラグメントデータＤ１〜Ｄ１２を生成した場合には、複数の記憶装置内にそれぞれ形成したデータ格納ファイルに、各フラグメントデータＤ１〜Ｄ１２を１つずつそれぞれ格納する（図５の矢印Ｙ６参照）。
【００３０】
続いて、ストレージシステム１は、上述したように格納したフラグメントデータＤ１〜Ｄ１２の格納位置、つまり、当該フラグメントデータＤ１〜Ｄ１２にて復元されるブロックデータＤの格納位置を表すコンテンツアドレスＣＡを生成して管理する。具体的には、格納したブロックデータＤの内容に基づいて算出したハッシュ値Ｈの一部（ショートハッシュ）（例えば、ハッシュ値Ｈの先頭８Ｂ（バイト））と、論理格納位置を表す情報と、を組み合わせて、コンテンツアドレスＣＡを生成する。そして、このコンテンツアドレスＣＡを、ストレージシステム１内のファイルシステムに返却する（図５の矢印Ｙ７）。すると、ストレージシステム１は、バックアップ対象データのファイル名などの識別情報と、コンテンツアドレスＣＡとを関連付けてファイルシステムで管理する。
【００３１】
また、ブロックデータＤのコンテンツアドレスＣＡと、当該ブロックデータＤのハッシュ値Ｈと、を関連付けて、各ストレージノード３がＭＦＩファイルにて管理する。このように、上記コンテンツアドレスＣＡは、ファイルを特定する情報やハッシュ値Ｈなどと関連付けられて、アクセラレータノード２やストレージノード３の記憶装置に格納される。
【００３２】
さらに、ストレージシステム１は、上述したように格納したファイルを読み出す制御を行う。例えば、ストレージシステム１に対して、特定のファイルを指定して読み出し要求があると、まず、ファイルシステムに基づいて、読み出し要求にかかるファイルに対応するハッシュ値の一部であるショートハッシュと論理位置の情報からなるコンテンツアドレスＣＡを指定する。そして、コンテンツアドレスＣＡがＭＦＩファイルに登録されているか否かを調べる。登録されていなければ、要求されたデータは格納されていないため、エラーを返却する。
【００３３】
一方、読み出し要求にかかるコンテンツアドレスＣＡが登録されている場合には、上記コンテンツアドレスＣＡにて指定される格納位置を特定し、この特定された格納位置に格納されている各フラグメントデータを、読み出し要求されたデータとして読み出す。このとき、各フラグメントが格納されているデータ格納ファイルと、当該データ格納ファイルのうち１つのフラグメントデータの格納位置が分かれば、同一の格納位置から他のフラグメントデータの格納位置を特定することができる。
【００３４】
そして、読み出し要求に応じて読み出した各フラグメントデータからブロックデータＤを復元する。さらに、復元したブロックデータＤを複数連結し、ファイルＡなどの一群のデータに復元して返却する。
【００３５】
以上のようにして、本実施形態におけるストレージシステム１はデータの重複を排除しているが、さらにデータ格納効率を高めるための構成をとなっている。かかる構成について詳述する。
【００３６】
まず、本実施形態におけるストレージシステム１は、上述したように複数の分割モジュール２０（分割処理部）を備えている。各分割モジュール２０は、ファイルシステムのＩ／Ｆ１０から送られてきたデータを受け取るデータ受信部２１と、受け取ったデータを予め設定された基準に従って分割してその結果を結果送信部２３に渡す分割処理部２２と、分割結果をファイルシステムのＩ／Ｆ１０に返却する結果送信部２３と、を備えている。
【００３７】
また、各分割モジュール２０は、書き込み対象となるデータの特性に対応して、各特性のデータを分割するために適切な構成に形成されている。例えば、メディアデータやドキュメントデータなどのデータ種別に応じてデータ構造が異なるが、かかるデータ構造に応じて、適切な分割を実現できるよう、各分割モジュール２０は構成されている。
【００３８】
そして、分割モジュール２０が備える上記分割処理部２２は、例えば、データの実データ部分であり生成された時間や更新回数などによっても値が変化しない「データ」部分と、かかる「データ」部分に対応し、タイムスタンプや通番などのように時間や更新回数などの違いによって値が変化する「マーカ」部分と、に分割する。そして、分割した各分割データを、結果送信部２３がファイルシステムのＩ／Ｆ１０に返却する。
【００３９】
ここで、上述した「マーカ」部分は、タイムスタンプや通番などのように時間や回数の違いによって値が変化するため、かかる部分が含まれたデータ自体は重複排除の妨げとなりうる。つまり、同一内容のデータであっても、「マーカ」部分がそれぞれ異なると、重複排除することができない。従って、上述したように「データ」部分と「マーカ」部分とに分割することで、データ書き出し部１７における上述したコンテンツアドレスを用いたファイルシステム３０への書き込み時に、特に「データ」部分を効率よく重複記憶を排除することができる。
【００４０】
一方で、上述したように、データを「データ」部分と「マーカ」部分とに分割する場合には、ファイルシステムのＩ／Ｆ１０から渡される書き込み対象となるデータに、相互に対応する「データ」部分と「マーカ」部分とが含まれていなければならい。このため、データの一部をストレージシステム１が受信していない場合には、分割が不可能となる。分割ができなかった場合に、結果送信部２３は、ファイルシステムのＩ／Ｆ１０へデータ分割保留要求を返却する。このとき、分割できなかったデータは、後述するようにデータバッファ１２にコピーされる。
【００４１】
なお、上述した分割方法は一例であって、分割モジュール２０による分割方法は上述した方法に限定されない。つまり、必ずしもストリームデータを、上述したように「データ」部分と「マーカ」部分とに分割することに限定されない。
【００４２】
次に、ファイルシステムのＩ／Ｆ１０の構成について詳述する。まず、受信バッファ１１は、ファイルシステムのＩ／Ｆ１０がバックアップシステム４から受信した書き込み対象となる所定のデータ長のストリームデータを、受信データとして一時的に保持する。
【００４３】
また、モジュール選択部１３（分割処理選択部）は、受信バッファ１１内に記憶されている受信データから、当該受信データのデータ種別などの特性を調べる。このとき、受信データの特性が、上述した各分割モジュール２０のいずれかが対応している特性であるかどうかを検出し、あるデータ特性であることが検出できた場合には、そのデータ特性に対応して構成された分割モジュール２０を選択する。
【００４４】
また、データ送信部１４は、受信バッファ１１に記憶されている受信データを、上述したモジュール選択部１３にて選択された分割モジュール２０に送信する。つまり、データ送信部１４は、受信データを、当該受信データの特性に対応している分割モジュール２０に送信することとなる。このとき、データ送信部１４は、後述するようにデータバッファ１２に記憶されているデータ（分割保留データ）も、上記受信データと一緒に、当該受信データの特性に対応して選択された分割モジュール２０に送信する。但し、データ送信部１４は、データバッファ内に分割保留データが存在しない場合は、受信バッファ１１内の受信データのみを分割モジュール２０に送る。
【００４５】
また、結果受信部１５は、上述したように分割モジュール２０から返却された分割結果、例えば、分割できた旨や、分割保留要求及び分割できなかったデータ自体を、分割モジュール２０から受信する。
【００４６】
そして、分割管理部１６は、上述したように分割モジュール２０から返却された結果をもとに、ファイルシステム３０にデータを書き出すかどうかを決定する。このとき、分割できた分割データは、データ書き出し部１７（データ書き込み部）に渡す。すると、データ書き出し部１７は、実際にデータを分割して、ファイルシステム３０（記憶装置）へ書き出す。このとき、上述したように、分割したデータは、さらにフラグメントデータに分割されたり冗長化され、複数の記憶装置に分散して記憶される。
【００４７】
一方、上記分割管理部１６は、分割保留要求が返却された場合には、当該分割が不可能であったデータを、分割保留データとしてデータバッファ１２に一時的に記憶するようコピーする。そして、このデータバッファ１２に記憶された分割保留データは、上述したように、データ送信部１４にて、受信バッファ１１に記憶された受信データと共に、分割モジュール２０に送信される。
【００４８】
［動作］
次に、上述したストレージシステムの動作を、図６乃至図１１、及び、図１２のフローチャートを参照して説明する。
【００４９】
まず、ファイルシステムのＩ／Ｆ１０は、図６の矢印１に示すように、受信したストリームデータを受信データとして受信バッファに記憶する（ステップＳ１）。続いて、モジュール選択部１３が、受信バッファ１１に記憶されている受信データの特性を調べ、当該特性に対応する分割モジュール２０を選択する（ステップＳ２）。
【００５０】
続いて、データ送信部１４は、受信バッファ１１内の受信データと、データバッファ１２内に記憶されている分割保留データとを一緒に、モジュール選択部１３で選択した分割モジュール２０に送る（ステップＳ３）。但し、図６の例では、データバッファ１２は空であるため、矢印Ｙ２に示すように、受信バッファ１１内の受信データのみを、選択された分割モジュール２０に送信する。
【００５１】
続いて、分割モジュール２０は、上述したようにファイルシステムのＩ／Ｆ１０から送信されたデータを、データ受信部２１にて受け取り、分割処理部２２へ渡す。分割処理部２２は、受け取ったデータを分割し、その結果を結果送信部２３へ渡す。但し、分割できなかった場合は、分割保留要求を渡す。そして、結果送信部２３は、受け取った分割結果をファイルシステムのＩ／Ｆ１０に渡す。ここでは、図７の矢印Ｙ３に示すように、分割モジュール２０が受け取ったデータが分割できなかったため、分割保留要求を渡す。
【００５２】
ファイルシステムのＩ／Ｆ１０は、結果受信部１５にて分割モジュール２０から分割結果を受け取り（ステップＳ４）、分割管理部１６に渡す。分割管理部１６は、分割モジュール２０から返却された結果をもとに、ファイルシステム３０にデータを書き出すかどうかを決定する。例えば、分割管理部１６は、分割できたデータがある場合には（ステップＳ５：Ｙｅｓ）、データ書き出し部１７に渡し、当該データ書き出し部１７は、受け取ったデータを分割して、ファイルシステム３０へ書き出す（ステップＳ６）。一方、分割保留となったデータは（ステップＳ５：Ｎｏ，ステップＳ７：Ｙｅｓ）、データバッファ１２をコピーする（ステップＳ８）。ここでは、図７に示すように、分割モジュール２０から受け取ったデータが分割できなかったため、かかるデータをデータバッファ１２に記憶する。
【００５３】
その後、図８の矢印Ｙ４に示すように、次のデータストリームを受信すると（ステップＳ９：Ｎｏ，ステップＳ１）、上述同様に、受信したストリームデータを受信データとして受信バッファに記憶する。続いて、モジュール選択部１３が、受信バッファ１１に記憶されている受信データの特性を調べ、当該特性に対応する分割モジュール２０を選択する（ステップＳ２）。
【００５４】
続いて、データ送信部１４は、受信バッファ１１内の受信データと、データバッファ１２内に記憶されている分割保留データとを一緒に、モジュール選択部１３で選択した分割モジュール２０に送る（ステップＳ３）。ここでは、図８に示すように、データバッファ１２に分割保留データが記憶されているため、矢印Ｙ５に示すように、受信バッファ１１内の受信データと、データバッファ１２内の分割保留データとを一緒に、選択された分割モジュール２０に送信する。
【００５５】
続いて、分割モジュール２０は、上述したようにファイルシステムのＩ／Ｆ１０から送信されたデータ、つまり、受信データと分割保留データとを合わせたデータを、データ受信部２１にて受け取り、分割処理部２２へ渡す。分割処理部２２は、受け取ったデータを分割し、その結果を結果送信部２３へ渡す。但し、分割できなかった場合は、分割保留要求を渡す。そして、結果送信部２３は、受け取った分割結果をファイルシステムのＩ／Ｆ１０に渡す。ここでは、図９の矢印Ｙ６に示すように、分割モジュール２０が受け取ったデータが分割できなかったため、分割保留要求を渡す。
【００５６】
ファイルシステムのＩ／Ｆ１０は、結果受信部１５にて分割モジュール２０から分割結果を受け取り（ステップＳ４）、分割管理部１６に渡す。分割管理部１６は、分割モジュール２０から返却された結果をもとに、ファイルシステム３０にデータを書き出すかどうかを決定する。ここでは、図９に示すように、分割モジュール２０から受け取ったデータが分割できなかったため（ステップＳ５：Ｎｏ，ステップＳ７：Ｙｅｓ）、かかるデータをデータバッファ１２に記憶する（ステップＳ８）。
【００５７】
その後、さらに、図１０の矢印Ｙ７に示すように、次のデータストリームを受信すると（ステップＳ９：Ｎｏ，ステップＳ１）、上述同様に、受信したストリームデータを受信データとして受信バッファに記憶する。続いて、モジュール選択部１３が、受信バッファ１１に記憶されている受信データの特性を調べ、当該特性に対応する分割モジュール２０を選択する（ステップＳ２）。
【００５８】
続いて、データ送信部１４は、受信バッファ１１内の受信データと、データバッファ１２内に記憶されている分割保留データとを一緒に、モジュール選択部１３で選択した分割モジュール２０に送る（ステップＳ３）。ここでは、図１０に示すように、データバッファ１２に分割保留データが記憶されているため、矢印Ｙ８に示すように、受信バッファ１１内の受信データと、データバッファ１２内の分割保留データとを一緒に、選択された分割モジュール２０に送信する。
【００５９】
続いて、分割モジュール２０は、上述したようにファイルシステムのＩ／Ｆ１０から送信されたデータを、データ受信部２１にて受け取り、分割処理部２２へ渡す。分割処理部２２は、受け取ったデータを分割し、その結果を結果送信部２３へ渡す。但し、分割できなかった場合は、分割保留要求を渡す。そして、結果送信部２３は、受け取った分割結果をファイルシステムのＩ／Ｆ１０に渡す。ここでは、図９の矢印Ｙ１１に示すように、分割モジュール２０が受け取ったデータに、分割できたデータと、分割できなかったデータが存在していたとする。
【００６０】
ファイルシステムのＩ／Ｆ１０は、結果受信部１５にて分割モジュール２０から分割結果を受け取り（ステップＳ４）、分割管理部１６に渡す。分割管理部１６は、分割モジュール２０から返却された結果をもとに、ファイルシステム３０にデータを書き出すかどうかを決定する。ここでは、図１１に示すように、分割モジュール２０から受け取ったデータのうち分割できたものについては（ステップＳ５：Ｙｅｓ）、矢印Ｙ１０に示すようにかかるデータを分割して、ファイルシステム３０に記憶する（ステップＳ６）。一方、分割モジュール２０から受け取ったデータのうち分割できなかったものについては（ステップＳ７：Ｙｅｓ）、かかるデータをデータバッファ１２に記憶する（ステップＳ８）。
【００６１】
以上のように、本発明によると、書き込み対象となるデータの特性が異なる場合であっても、バッファリング処理を共通化しているため、それぞれのデータ特性に対応した各バッファリング処理を行う機能を開発することがなく、特性が異なるストリームデータに対しても、同一のバッファリング処理でストリーム分割が可能である。従って、ストレージ装置における効率的なデータ格納を実現しつつ、開発コストを抑制することができ、低コスト化を図ることができる。特に、受信したデータの分割処理ができなかった場合、そのデータをデータバッファに保持し、次に受信したデータと一緒に再度分割処理を行う構成とすることで、より効果的に同一のバッファリング処理を使用してデータの分割が可能となる。
【００６２】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるストレージ装置１０１の構成の概略について図１３乃至図１４を参照して説明する。また、本発明における、プログラム、データ格納方法の構成について説明する。但し、本発明は、以下の構成に限定されない。
【００６３】
（付記１）
書き込み対象となるデータの特性に対応してそれぞれ構成され、当該データを予め設定された基準に従って分割する複数の分割処理部１２０と、
前記分割処理部１２０にて分割された分割データを記憶装置１３０に書き込むデータ書き込み部１１７と、を備えると共に、
書き込み対象となるデータを受信して受信データとして一時的に記憶する受信バッファ１１１と、
前記受信バッファ１１１に記憶された前記受信データの特性を検出して、当該検出された受信データの特性に対応して構成された前記分割処理部１２０を選択する分割処理選択部１１３と、
前記分割処理選択部１１３にて選択された前記分割処理部１２０に、前記受信バッファ１１１に記憶された前記受信データを送信するデータ送信部１１４と、を備えた、
ストレージ装置１０１。
【００６４】
（付記２）
付記１に記載のストレージ装置１０１であって、
前記分割処理部１２０にて分割できなかったデータを分割保留データとして一時的に記憶するデータバッファ１１２を備え、
前記データ送信部１１４は、前記データバッファ１１２に記憶された前記分割保留データと前記受信バッファ１１１に記憶された前記受信データとを一緒に、当該受信データの特性に対応して前記分割処理選択部１１３にて選択された前記分割処理部１２０に送信する、
ストレージ装置１０１。
【００６５】
（付記３）
付記２に記載のストレージ装置であって、
前記分割処理部は、前記データ送信部から一緒に送信された前記分割保留データと前記受信データとを合わせたデータを分割すると共に、分割された分割データは前記データ書き込み部にて記憶装置に書き込まれ、分割できなかった分割保留データは前記データバッファに記憶される、
ストレージ装置。
【００６６】
（付記４）
付記２又は３に記載のストレージ装置であって、
前記データ送信部は、前記データバッファに前記分割保留データを記憶した後に前記受信バッファに記憶された前記受信データと、前記データバッファに記憶された前記分割保留データとを一緒に、前記分割処理部に送信する、
ストレージ装置。
【００６７】
（付記５）
付記１乃至４のいずれかに記載のストレージ装置であって、
前記分割処理部は、前記データを、予め設定された基準に従って分類される相互に対応するデータ部分とマーカ部分とに分割する、
ストレージ装置。
【００６８】
（付記６）
書き込み対象となるデータを受信して受信データとして一時的に記憶する受信バッファを備えた情報処理装置に、
書き込み対象となるデータの特性に対応してそれぞれ構成され、当該データを予め設定された基準に従って分割する複数の分割処理部と、
前記分割処理部にて分割された分割データを記憶装置に書き込むデータ書き込み部と、
前記受信バッファに記憶された前記受信データの特性を検出して、当該検出された受信データの特性に対応して構成された前記分割処理部を選択する分割処理選択部と、
前記分割処理選択部にて選択された前記分割処理部に、前記受信バッファに記憶された前記受信データを送信するデータ送信部と、
を実現させるためのプログラム。
【００６９】
（付記７）
付記６に記載のプログラムであって、
前記データ送信部は、データバッファ内に一時的に記憶された前記分割処理部にて分割できなかったデータである分割保留データと、前記受信バッファに記憶された前記受信データとを一緒に、当該受信データの特性に対応して前記分割処理選択部にて選択された前記分割処理部に送信する、
プログラム。
【００７０】
（付記８）
書き込み対象となるデータを受信して受信データとして受信バッファに一時的に記憶し、
前記受信バッファに記憶された前記受信データの特性を検出して、書き込み対象となるデータの特性に対応してそれぞれ構成され当該データを予め設定された基準に従って分割する複数の分割処理部のうち、前記検出された受信データの特性に対応して構成された前記分割処理部を選択し、
前記受信バッファに記憶された前記受信データを、選択された前記分割処理部に送信し、
前記分割処理部が、送信されたデータを分割し、
前記分割処理部にて分割された分割データを記憶装置に書き込む、
データ格納方法。
【００７１】
（付記９）
付記８に記載のデータ格納方法であって、
前記分割処理部にて分割できなかったデータを分割保留データとしてデータバッファに一時的に記憶し、
前記受信データを選択された前記分割処理部に送信する際に、前記データバッファに記憶された前記分割保留データを前記受信データと一緒に、当該受信データの特性に対応して選択された前記分割処理部に送信する、
データ格納方法。
【００７２】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【００７３】
なお、本発明は、日本国にて２０１０年３月４日に特許出願された特願２０１０−４７４１０の特許出願に基づく優先権主張の利益を享受するものであり、当該特許出願に記載された内容は、全て本明細書に含まれるものとする。
【符号の説明】
【００７４】
１      ストレージシステム
２      アクセラレータノード
３      ストレージノード
４      バックアップシステム
５      バックアップ対象装置
１０    ファイルシステムのＩ／Ｆ
１１    受信バッファ
１２    データバッファ
１３    モジュール選択部
１４    データ送信部
１５    結果受信部
１６    分割管理部
１７    データ書き出し部
２０    分割モジュール
２１    データ受信部
２２    分割処理部
２３    結果送信部
３０    ファイルシステム
１０１  ストレージ装置
１１１  受信バッファ
１１２  データバッファ
１１３  分割処理選択部
１１４  データ送信部
１１７  データ書き込み部
１２０  分割処理部
１３０  記憶装置
【図１】
0005459388.tif 000002
【図２】
0005459388.tif 000003
【図３】
0005459388.tif 000004
【図４】
0005459388.tif 000005
【図５】
0005459388.tif 000006
【図６】
0005459388.tif 000007
【図７】
0005459388.tif 000008
【図８】
0005459388.tif 000009
【図９】
0005459388.tif 000010
【図１０】
0005459388.tif 000011
【図１１】
0005459388.tif 000012
【図１２】
0005459388.tif 000013
【図１３】
0005459388.tif 000014
【図１４】
0005459388.tif 000015