"データブロックを可変長で分割して管理するデータ管理方法であって、a1前記データブロックの所定の開始位置から所定サイズ分までの所定範囲について、ハッシュ値を算出するための算出用領域を所定量ずつ移動させながら、前記算出用領域内のデータと所定の第1ハッシュ関数とに基づいて、前記算出用領域内のデータ毎に第1ハッシュ値をそれぞれ算出し、a2前記所定範囲内で得られる前記各第1ハッシュ値のうち、所定の基準に基づいて相対的に決定される特徴値に該当する第1ハッシュ値を抽出し、a3前記特徴値に該当する前記第1ハッシュ値に対応する位置で前記データブロックを分割することにより、第1チャンクデータを取得し、a4分割後の前記データブロックについて、前記a1,a2,a3の処理を繰り返し実行することにより、元の前記データブロック全体を複数の前記第1チャンクデータに分割して管理する、データの管理方法。前記特徴値は、前記所定範囲内で得られる前記各第1ハッシュ値の中での、最小値または最大値のいずれかである、請求項1に記載のデータの管理方法。前記算出用領域内のデータに基づいて得られる前記第1ハッシュ値が、前記特徴値の理論的限界値として予め設定される値に一致する場合は、その理論的限界値に一致する前記第1ハッシュ値に対応する位置で前記データブロックを分割することにより、第1チャンクデータを生成する、請求項2に記載のデータの管理方法。前記所定の開始位置は、前記データブロックの先頭位置に所定の下限値を加えた値として設定される、請求項3に記載のデータの管理方法。前記データブロックの全体サイズが所定の上限値に満たない場合、前記データブロックの全体を前記第1チャンクデータとする、請求項4に記載のデータの管理方法。さらに、b1前記各第1チャンクデータと所定の第2ハッシュ関数とに基づいて、前記各第1チャンクデータ毎に第2ハッシュ値をそれぞれ算出し、b2記憶部に記憶されている複数の第2チャンクデータの第2ハッシュ値と前記各第1チャンクデータの前記第2ハッシュ値とを比較することにより、前記第1チャンクデータの前記第2ハッシュ値と一致する第2ハッシュ値が前記記憶部に記憶されているか否かを判定する、請求項5に記載のデータの管理方法。さらに、c1前記各第1チャンクデータのうち、当該第1チャンクデータついて算出される前記第2ハッシュ値が前記各第2チャンクデータの前記第2ハッシュ値のいずれとも一致しない新規の第1チャンクデータは、前記新規の第1チャンクデータの格納先と当該新規の第1チャンクデータの前記データブロックにおける元の位置とを対応付けて、前記記憶部に前記第2チャンクデータとして記憶させ、c2前記各第1チャンクデータのうち、当該第1チャンクデータについて算出される前記第2ハッシュ値が前記各第2チャンクデータの前記第2ハッシュ値のいずれかと一致する、記憶済の第1チャンクデータは、前記記憶済の第1チャンクデータに一致する前記第2チャンクデータの格納先と前記記憶済の第1チャンクデータの前記データブロックにおける元の位置とを対応付けて、前記記憶部に記憶させ、c3前記各第2チャンクデータの格納先と前記各第2チャンクデータについて算出される前記第2ハッシュ値とを対応付けて、前記記憶部に記憶させる、請求項6に記載のデータの管理方法。前記データブロックは、データブロックを記憶するためのデータブロック記憶部にいったん蓄積された後で、所定の指示に基づいて、前記各第1チャンクデータに分割される、請求項7に記載のデータの管理方法前記データブロックを受信しながら、前記データブロックを前記各第1チャンクデータに分割する、請求項7に記載のデータの管理方法。コンピュータがデータブロックを可変長で分割して管理するデータ管理方法であって、前記コンピュータは、所定のコンピュータプログラムを記憶するメモリと、前記所定のコンピュータプログラムを実行するマイクロプロセッサとを備え、前記マイクロプロセッサは、前記所定のコンピュータプログラムに基づいて、A前記データブロックを、前記複数の第1チャンクデータに可変長で分割する分割処理と、B前記各第1チャンクデータと、記憶部に記憶されている複数の第2チャンクデータとを比較し、前記各第1チャンクデータが前記各第2チャンクデータのうちのいずれかに一致するか否かを判定し、C前記各第1チャンクデータのうち前記各第2チャンクデータのいずれとも一致しない新規の第1チャンクデータは、前記新規の第1チャンクデータの格納先と当該新規の第1チャンクデータの前記データブロックにおける元の位置とを対応付けて、前記記憶部に記憶させ、前記各第1チャンクデータのうち前記各第2チャンクデータのいずれかと一致する記憶済の第1チャンクデータは、前記記憶済の第1チャンクデータに一致する前記第2チャンクデータの格納先と前記記憶済の第1チャンクデータの前記データブロックにおける元の位置とを対応付けて、前記記憶部に記憶させる、データ管理処理と、を実行し、前記分割処理は、a1前記データブロックの前記所定の開始位置から前記所定サイズ分までの前記所定範囲について、前記算出用領域を所定量ずつ移動させながら、前記算出用領域内のデータと前記所定の第1ハッシュ関数とに基づいて、前記算出用領域内のデータ毎に前記第1ハッシュ値をそれぞれ算出し、a2前記所定範囲内で得られる前記各第1ハッシュ値の中から、最小値または最大値のうちいずれか一方に予め指定される特徴値に該当する第1ハッシュ値を抽出し、a3前記特徴値に該当する前記第1ハッシュ値に対応する位置で前記データブロックを分割することにより、前記第1チャンクデータを取得し、a4分割後の前記データブロックについて前記a1,a2,a3の処理を繰り返し実行することにより、元の前記データブロック全体を複数の前記第1チャンクデータに分割し、前記重複検出処理は、b1前記各第1チャンクデータと所定の第2ハッシュ関数とに基づいて、前記各第1チャンクデータ毎に第2ハッシュ値をそれぞれ算出し、b2前記記憶部に記憶されている前記各第2チャンクデータの第2ハッシュ値と前記各第1チャンクデータの前記第2ハッシュ値とを比較することにより、前記第1チャンクデータの前記第2ハッシュ値と一致する第2ハッシュ値が前記記憶部に記憶されているか否かを判定し、前記データ管理処理は、c1前記各第1チャンクデータのうち、当該第1チャンクデータついて算出される前記第2ハッシュ値が前記各第2チャンクデータの前記第2ハッシュ値のいずれとも一致しない前記新規の第1チャンクデータは、前記新規の第1チャンクデータの格納先と当該新規の第1チャンクデータの前記データブロックにおける元の位置とを対応付けて、前記記憶部に前記第2チャンクデータとして記憶させ、c2前記各第1チャンクデータのうち、当該第1チャンクデータについて算出される前記第2ハッシュ値が前記各第2チャンクデータの前記第2ハッシュ値のいずれかと一致する、前記記憶済の第1チャンクデータは、前記記憶済の第1チャンクデータに一致する前記第2チャンクデータの格納先と前記記憶済の第1チャンクデータの前記データブロックにおける元の位置とを対応付けて、前記記憶部に記憶させ、c3前記各第2チャンクデータの格納先と前記各第2チャンクデータについて算出される前記第2ハッシュ値とを対応付けて、前記記憶部に記憶させる、請求項1に記載のデータの管理方法。データブロックを可変長で分割して管理するデータ管理システムであって、A前記データブロックを、複数の第1チャンクデータに可変長で分割する分割処理部と、B前記各第1チャンクデータと、記憶部に記憶されている複数の第2チャンクデータとを比較し、前記各第1チャンクデータが前記各第2チャンクデータのうちのいずれかに一致するか否かを判定し、C前記各第1チャンクデータのうち前記各第2チャンクデータのいずれとも一致しない新規の第1チャンクデータは、前記新規の第1チャンクデータの格納先と当該新規の第1チャンクデータの前記データブロックにおける元の位置とを対応付けて、前記記憶部に前記第2チャンクデータとして記憶させ、前記各第1チャンクデータのうち前記各第2チャンクデータのいずれかと一致する記憶済の第1チャンクデータは、前記記憶済の第1チャンクデータに一致する前記第2チャンクデータの格納先と前記記憶済の第1チャンクデータの前記データブロックにおける元の位置とを対応付けて、前記記憶部に記憶させる、データ管理処理部と、を備え、前記分割処理部は、a1前記データブロックの所定の開始位置から所定サイズ分までの所定範囲について、ハッシュ値を算出するための算出用領域を所定量ずつ移動させながら、前記算出用領域内のデータと所定の第1ハッシュ関数とに基づいて、前記算出用領域内のデータ毎に第1ハッシュ値をそれぞれ算出し、a2前記所定範囲内で得られる前記各第1ハッシュ値のうち、所定の基準に基づいて相対的に決定される特徴値に該当する第1ハッシュ値を抽出し、a3前記特徴値に該当する前記第1ハッシュ値に対応する位置で前記データブロックを分割することにより、第1チャンクデータを取得し、a4分割後の前記データブロックについて、前記a1,a2,a3の処理を繰り返し実行することにより、元の前記データブロック全体を複数の前記第1チャンクデータに分割して管理する、データ管理システム。前記各第1チャンクデータに分割される前のデータブロックを記憶するためのデータブロック記憶部は、前記記憶部とは別に存在する、請求項11に記載のデータ管理システム。従来技術では、ファイルを可変長で分割することにより、データの重複を排除するようになっている。ファイルを固定長で分割する場合に比べて、ファイルを可変長で分割する方が、一般的に、データの重複を排除する効率が高い。しかし、従来技術では、ハッシュ値と固定値が適切なサイズで一致する保証はない。ハッシュ値が固定値になかなか一致しない場合、ファイルの分割サイズが大きくなる。分割サイズが大きくなるほど、記憶済のデータと一致する可能性が低くなるため、重複を排除する効率が低下する。本発明は上記の問題に鑑みてなされたもので、その目的は、データを比較的適切なサイズで分割して管理することのできるデータ管理方法及びデータ管理システムを提供することにある。本発明の他の目的は、データを所定サイズに近いサイズに分割し、重複データを効率的に排除して、データを管理できるデータ管理方法及びデータ管理システムを提供することにある。本発明に従うデータ管理方法は、データブロックを可変長で分割して管理するデータ管理方法であって、a1データブロックの所定の開始位置から所定サイズ分までの所定範囲について、ハッシュ値を算出するための算出用領域を所定量ずつ移動させながら、算出用領域内のデータと所定の第1ハッシュ関数とに基づいて、算出用領域内のデータ毎に第1ハッシュ値をそれぞれ算出し、a2所定範囲内で得られる各第1ハッシュ値のうち、所定の基準に基づいて相対的に決定される特徴値に該当する第1ハッシュ値を抽出し、a3特徴値に該当する第1ハッシュ値に対応する位置でデータブロックを分割することにより、第1チャンクデータを取得し、a4分割後のデータブロックについて、a1,a2,a3の処理を繰り返し実行することにより、元のデータブロック全体を複数の第1チャンクデータに分割して管理する。特徴値は、所定範囲内で得られる各第1ハッシュ値の中での、最小値または最大値のいずれかであってもよい。算出用領域内のデータに基づいて得られる第1ハッシュ値が、特徴値の理論的限界値として予め設定される値に一致する場合は、その理論的限界値に一致する第1ハッシュ値に対応する位置でデータブロックを分割することにより、第1チャンクデータを生成してもよい。所定の開始位置は、データブロックの先頭位置に所定の下限値を加えた値として設定されてもよい。データブロックの全体サイズが所定の上限値に満たない場合、データブロックの全体を第1チャンクデータとしてもよい。本発明は、データを管理するプログラムとして把握してもよい。そのコンピュータプログラムは、通信媒体または記録媒体を介して流通させることができる。以下、図面に基づいて、本発明の実施形態を説明する。本実施形態では、以下のように、データブロックの一例としてのファイルデータの分割位置を検出するための複数の第1ハッシュ値の中から、その中に少なくとも一つ以上必ず存在する特徴値に該当する、第1ハッシュ値を検出する。特徴値としては、最小値または最大値のいずれかを用いることができる。複数の第1ハッシュ値の群には、その中で最も小さい値の第1ハッシュ値最小値と、その中で最も大きい値の第2ハッシュ値最大値とが、一つ以上含まれる。最小値または最大値が複数存在する場合、例えば、いずれか早く検出された方を採用することができる。図1は、本実施形態の全体概要を示す。図1には、データ分割処理S1と、重複検出処理S2と、データ管理処理S3とが示されている。データ分割処理S1は、ファイルデータを分割する処理である。重複検出処理S2は、分割されたファイルデータから重複するデータを検出する処理である。データ管理処理S3は、ファイルデータを分割して管理する処理である。データ分割処理S1を説明する。データ分割処理S1は、例えば、開始位置決定処理S10と、第1ハッシュ値算出処理S11と、ウインドウ移動処理S12と、特徴値検出処理S13と、分割位置決定処理S14とを含む。開始位置決定処理S10は、第1ハッシュ値を算出する処理を開始する位置HSを決定する。点線で示すウインドウWは、第1ハッシュ値を算出するための算出用領域に該当する。ウインドウサイズWLは、例えば、48バイト程度に設定してもよい。S10は、ファイルデータの先頭SoFから下限値LSだけ後ろの位置を、開始位置HSとして決定する。下限値LSは、例えば、4キロバイト程度に設定してもよい。第1ハッシュ値算出処理S11は、ウインドウ内に含まれるデータ例えば、48バイのデータを第1ハッシュ関数fxに入力して、第1ハッシュ値を算出する。ウインドウ移動処理S12は、第1ハッシュ値の算出された後で、ウインドウを所定量だけファイルデータの後側に向けて移動させる。ウインドウ移動処理S12は、開始位置HSから所定サイズPLだけ離れた終了位置HEまでの所定範囲を、ウインドウを所定量ずつ移動させる。ウインドウは、例えば、1バイトずつ移動する。所定サイズPLは、例えば、8キロバイト程度に設定してもよい。ウインドウが移動するたびに、第1ハッシュ値算出処理S11は、ウインドウ内のデータについての第1ハッシュ値を算出する。従って、開始位置HSから終了位置HEまでの所定範囲のデータについて、複数の第1ハッシュ値が算出されて保持される。特徴値検出処理S13は、保持された複数の第1ハッシュ値の中から、所定の基準に基づいて相対的に決定される特徴値に該当する第1ハッシュ値を検出する。所定の基準とは、例えば、複数の第1ハッシュ値の中から最も小さい値を選ぶこと、または、最も大きい値を選ぶことである。相対的に決定されるとは、予め設定される固定値ではなく、複数の第1ハッシュ値の中から相対的に選ばれる値であること、である。例えば、特徴値として最小値を例に挙げると、1,2,3,4という第1ハッシュ値の群では、1が最小値になる。さらに、7,8,9,7という他の第1ハッシュ値の群では、7が最小値となる。このように、特徴値は、複数の第1ハッシュ値の中に少なくとも一つ以上必ず存在する。特徴値が最大値である場合も同様である。分割位置決定処理S14は、特徴値に該当する第1ハッシュ値に対応する位置を分割位置DPとする。ファイルデータは、分割位置DPで分割されることにより、第1チャンクデータとなる。分割後の残されたファイルデータの開始位置に、再びウインドウが設定される。そして、再び、最終位置HEまで所定量ずつウインドウをずらしながら、ウインドウ内のデータについて第1ハッシュ値を算出する。各第1ハッシュ値の中から特徴値に該当する位置が分割位置DPとして設定される。以上の処理を繰り返すことにより、ファイルデータは、複数の第1チャンクデータに分割される。なお、ウインドウサイズWLは48バイト、下限値を4キロバイト、所定サイズPLを8キロバイトとして述べたが、これらの数値は例示である。他の数値を採用することもできる。さらに、図1では、説明の便宜のために、ウインドウサイズを2バイト、所定サイズを4バイトとして、示している。ウインドウは、1バイトずつ移動する。図1中のf0,f1,f2,f3等の値は、第1ハッシュ関数fxから得られた第1ハッシュ値であることを示す。データ分割処理S1では、下限値LS未満の第1チャンクデータは、生成されない。第1チャンクデータのサイズは、下限値LSから下限値LSに所定サイズPLを加えた値までの範囲の値となるLS≦チャンクサイズ≦LSPL。従って、本実施形態では、ファイルデータが下限値LS未満の小さいサイズで分割されたり、LSPLよりも大きいサイズで分割されたりするのを防止できる。つまり、第1チャンクデータのサイズを一定範囲に収めることができる。この結果、ファイルデータのうち重複しているデータを効率的に検出して、少ない記憶資源で効率的に管理することができる。重複検出処理S2を説明する。重複検出処理S2では、各第1チャンクデータ毎に第2ハッシュ値を算出する。即ち、第1チャンクデータを第2ハッシュ関数gxに入力することにより、第2ハッシュ値を得る。重複検出処理S2は、各第1チャンクデータの第2ハッシュ値と、記憶部に記憶されている各第2チャンクデータの第2ハッシュ値とが一致するか否かを判定する。図1では、第1チャンクデータに符号Caを付し、第2チャンクデータに符号Cbを付している。d1,d2,d3,d4等は、1バイト毎のデータを示す。図示の例では、例えば、3番目の第1チャンクデータCa3のデータd3とd5から、第2ハッシュ値g3が算出されている。対象のファイルデータDaの各第1チャンクデータCaについての第2ハッシュ値と、システムに既に記憶されている第2チャンクデータCbについての第2ハッシュ値とを比較すれば、重複しているチャンクデータが判明する。例えば、第1チャンクデータCa1,Ca3,Ca4,Ca5,Ca6は、第2チャンクデータCb1,Cb3,Cb4,Cb5,Cb6と同一である。互いの第2ハッシュ値が一致するためである。これに対し、2番目の第1チャンクデータCa2の第2ハッシュ値g2と、2番目の第2チャンクデータCb2の第2ハッシュ値g7とは一致しない。従って、第1チャンクデータCa2と第2チャンクデータCb2とは、異なる。第2ハッシュ値が異なる理由は、対象のファイルデータDaの第1チャンクデータCa2では、更新前の古いファイルデータDbの第2チャンクデータCb2に比べて、太線で囲むデータd4を備えていないためである。このように本実施形態では、データが追加または変更または削除された部分チャンクを検出することができる。データ管理処理S3の詳細は後述する。図2~図9を参照して第1実施例を説明する。図2は、データ管理システムの一例としてのファイルデータ管理システム10の全体構成を示す。ファイルデータ管理システム10は、例えば、NASNetworkAttachedStorageサーバ20と、第1ストレージ装置30と、第2ストレージ装置40とを備えることができる。NASサーバ20は、例えば、マイクロプロセッサ21と、メモリ22と、通信インターフェース図示せずとを備える。メモリ22には、重複排除プログラムP20と、マイグレーションプログラムP21とが記憶されている。重複排除プログラムP20は、ファイルデータの重複を検出して排除し、ファイルデータをチャンクデータに分割して管理するためのコンピュータプログラムである。その詳細は後述する。マイグレーションプログラムP21は、第2ストレージ装置40に記憶されたファイルデータを、重複排除プログラムP21に引き渡すコンピュータプログラムである。第1ストレージ装置30は、例えば、チャンクデータ310と、チャンクインデックス情報320と、ファイル格納情報330とを記憶する。チャンクインデックス情報320及びファイル格納情報330については、後述する。第2ストレージ装置40は、管理対象のファイルデータ410を記憶する。なお、第1ストレージ装置30と第2ストレージ装置40とは、同一であってもよい。ストレージ装置としては、例えば、ハードディスクドライブ、光ディスクドライブ、フラッシュメモリデバイス等の種々の装置を用いることができる。さらに、他のNASをストレージ装置として使用する構成でもよい。クライアントコンピュータ50は、NASサーバ20に接続されている。クライアントコンピュータ50は、ストレージ装置60に記憶されたファイルデータ410を、NASサーバ20に送信して、管理を依頼する。NASサーバ20は、クライアントコンピュータ50から受領したファイルデータ410を、第2ストレージ装置40に格納する。図3は、ファイル格納情報330の例を示す。ファイル格納情報330は、各ファイルデータ410毎にそれぞれ用意される。ファイル格納情報330は、ファイルデータ410の各部分に対応するチャンクデータが、管理システム10内のどこに記憶されているのかを管理するための管理情報である。ファイル格納情報330は、例えば、オフセット331と、チャンク格納場所332とを各チャンクデータ毎に対応付けて管理する。オフセット331は、チャンクデータのファイルデータにおける位置元々の位置を示す情報である。オフセット331は、ファイルデータの先頭アドレスからのオフセット値を示す。チャンク格納場所332は、チャンクデータの格納場所を示す情報である。チャンク格納場所は、格納先アドレスでもよいし、格納先アドレスに対応付けられるポインタのような情報でもよい。図4は、チャンクインデックス情報320の例を示す。チャンクインデックス情報320は、ファイルデータ管理システム10内に一つ設けられる。チャンクインデックス情報320は、ハッシュ値321と、チャンク格納場所322とを対応付けて管理する。ハッシュ値321は、チャンクデータ310について算出される第2ハッシュ値であり、チャンクデータ間の同一性を判断するために使用される。チャンク格納場所322は、図3で述べたチャンク格納場所332と同一である。図5は、ファイルデータ管理システム10の全体動作を示すフローチャートである。以下、ステップをSと略記する。本処理を含む以下の各処理は、マイクロプロセッサ21がメモリ22に記憶されたコンピュータプログラムP20を実行することにより、実現される。従って、以下の各処理の主語は、プログラムであってもよいし、マイクロプロセッサであってもよい。あるいは、以下の各処理の主語を、管理システム10またはNASサーバ20としてもよい。管理システム10は、クライアントコンピュータ50から送信されるファイルデータ410を受信し、第2ストレージ装置40に保存するS100。管理システム10は、データの重複排除を指示されたか否か判定するS200。重複排除の指示方法には、複数ある。例えば、クライアントコンピュータ50は、ファイルデータ410を管理システム10に送信した後で、重複排除を指示するためのコマンドを管理システム10に送信することができる。あるいは、管理システム10は、図外の他のコンピュータから、重複排除の指示を受領することもできる。さらに、管理システム10は、負荷の少ない時間帯を選んで、重複排除を自ら指示することもできる。重複排除が指示されるとS200:YES、管理システム10は、マイグレーションプログラムP21により、第2ストレージ装置40に記憶されたファイルデータ410を、重複排除プログラムP20に引き渡させる。重複排除プログラムP20は、入力されたファイルデータ410について、ファイル分割処理S300を実行し、その後で重複排除処理S400を実行する。ファイル分割処理及び重複排除処理については、図8,図9で後述する。図6は、ファイルデータ410を分割する方法を模式的に示す。図1でも述べたように、ファイルデータ410の先頭SoFから下限値LSだけ後ろの開始位置HSに、ウインドウWを設定する。ウインドウを1バイトずつ一定方向ファイルの終端側に移動させながら、ウインドウ内のデータを第1ハッシュ関数fxに入力して、第1ハッシュ値を算出する。管理システム10は、ウインドウを開始位置HSから終了位置HEまでの所定範囲所定サイズPL分のファイルデータだけ移動させる。これにより、図6の下側に白丸で示すように、複数の第1ハッシュ値が得られる。管理システム10は、図中黒丸で示すように、それら第1ハッシュ値のうち、特徴値最小値または最大値のいずれか一つに該当する第1ハッシュ値に対応する位置を、分割位置DPとして選択する。なお、図6では、ウインドウの右端を基準として、開始位置HS及び終了位置HEに一致させる。これに代えて、図7のように、ウインドウの左端を基準にしてもよい。図8を参照してファイル分割処理S300の詳細を説明する。以下、説明の便宜上、重複排除プログラムP20をプログラムP20と略記する場合がある。プログラムP20は、対象とするファイルデータのサイズが、下限値LSと所定サイズPLとの合計値以上であるか否かを判定するS301。下限値LSは、チャンクデータの下限サイズを規定する値である。所定サイズPLは、ウインドウの最大移動範囲を規定する値である。従って、下限値LSと所定サイズPLの合計値は、チャンクデータの上限サイズを示す。ファイルデータのサイズが下限値LSと所定サイズPLの合計値以上である場合S301:YES、対象ファイルデータを複数のチャンクデータに分割可能である。従って、プログラムP20は、ウインドウの位置を開始位置HSに設定するS302。ウインドウの基準を右端にする場合、開始位置HSは、図6に示すように、ファイルデータの先頭からLS-WLだけ後ろの位置である。プログラムP20は、ウインドウ内のデータを第1ハッシュ関数fxに入力して、第1ハッシュ値を算出するS303。プログラムP20は、ウインドウを1バイト右側にシフトさせるS304。プログラムP20は、シフト後のウインドウ位置が終了位置HEに到達したか否かを判定するS305。終了位置HEは、図6に示すように、開始位置HSから所定サイズPLだけ後ろの位置である。ウインドウ位置が終了位置HEに到達していない場合S305:NO、プログラムP20は、S303に戻り、ウインドウ内のデータから第1ハッシュ値を算出し、さらに、ウインドウを1バイトだけ右にシフトさせるS304。このように、プログラムP20は、ウインドウ位置が終了位置HEに到達するまで、S302~S304を繰り返し実行する。ウインドウ位置が終了位置HEに到達するとS305:YES、プログラムP20は、S303で取得された複数の第1ハッシュ値の中から、特徴値に該当する第1ハッシュ値を検索する。プログラムP20は、特徴値に該当する第1ハッシュ値に対応するデータ位置を、分割位置DPとして設定するS306。プログラムP20は、分割位置DPでファイルデータを分割するS307。分割位置DPを境として左右に分割されたファイルデータのうち、左側のデータ前側のデータをチャンクデータとする。プログラムP20は、ファイルデータからチャンクデータを一つ切り出した後S307、S301に戻る。プログラムP20は、S301~S307を繰り返し実行することにより、ファイルデータを複数のチャンクデータに分割していく。そして、ファイルデータのサイズが下限値LSと所定サイズPLの合計値未満になるとS301:NO、プログラムP20は、その残ったファイルデータの全体を一つのチャンクデータとするS308。これにより、第1ハッシュ値が無駄に算出されるのを防止できる。図9を参照して重複排除処理S400の詳細を説明する。重複排除プログラムP20は、一つのファイルデータから分割された複数のチャンクデータ第1チャンクデータの全てについて、以下に述べるS402~S407をそれぞれ実行するS401。プログラムP20は、対象のチャンクデータを第2ハッシュ関数gxに入力することにより、第2ハッシュ値を算出するS402。第2ハッシュ関数gxは、第1ハッシュ関数fxと同一でもよいし、異なっていてもよい。プログラムP20は、第2ハッシュ値を検索キーとして、チャックインデックス情報320を検索するS403。プログラムP20は、S402で算出された第2ハッシュ値と同一の第2ハッシュ値がチャンクインデックス情報320に存在するかを判定するS404。算出された第2ハッシュ値と同一の第2ハッシュ値がチャンクインデックス情報320に登録されていない場合S404:NO、プログラムP20は、未登録の第2ハッシュ値を有するチャンクデータを、第1ストレージ装置30に格納するS405。プログラムP20は、チャンクインデックス情報320に、チャンクデータの格納場所とその第2ハッシュ値とを登録するS406。プログラムP20は、対象ファイルデータに対応するファイル格納情報330に、ファイルデータにおけるチャンクデータの位置を示すオフセットと、チャンクデータの格納場所とを登録するS407。対象のチャンクデータについて算出された第2ハッシュ値が、チャンクインデックス情報320に登録されている場合S404:YESを説明する。この場合、プログラムP20は、その登録済の第2ハッシュ値に対応するチャンクデータの格納場所を、チャンクインデックス情報320から取得するS408。プログラムP20は、対象ファイルデータに対応するファイル格納情報330に、ファイルデータにおけるチャンクデータの位置を示すオフセットと、既に記憶されているチャンクデータの格納場所とを登録するS407。つまり、プログラムP20は、対象チャンクデータが既に管理システム10に記憶されているか否かを、第2ハッシュ値に基づいて判定する。プログラムP20は、そのチャンクデータが既に記憶されている場合、ファイル格納情報330に、記憶済のチャンクデータの格納場所を登録する。対象チャンクデータは管理システム10に格納されない。記憶済のチャンクデータと重複するためである。このように構成される本実施例では、開始位置HS=ファイル先頭位置LSから終了位置HE=HSPLまでの所定範囲で、第1ハッシュ値を算出する。さらに、本実施例では、複数の第1ハッシュ値の中に必ず一つ以上含まれる特徴値を用いて、ファイルデータをチャンクデータに分割する。従って、本実施例では、チャンクデータのサイズを、下限値LSから上限値=LSPLまでの予定した範囲に収めることができる。このため、下限値LS未満の短すぎるチャンクデータが生じたり、上限値を超えた長すぎるチャンクデータが生じたりするのを防止できる。従って、本実施例では、重複データの検出精度を高めて、重複データを効率的に排除でき、同一データが二重に保存されるのを抑制できる。ウインドウサイズWL、下限値LS及び所定サイズPL等の各数値は、例えば、ファイルデータの性質構造化データか非構造化データか等、ストレージの空き容量などの観点に基づいて、適宜設定することができる。本実施例のファイルデータ管理システム10は、種々の製品に組み込んで使用することができる。図10を参照して、第2実施例を説明する。本実施例を含む以下の各実施例は、第1実施例の変形例である。従って、以下、第1実施例との相違を中心に説明する。図10は、ファイル分割処理S300Aを示すフローチャートである。本フローチャートは、図8に示すS301~S308を全て備える。さらに、本フローチャートは、ウインドウ内のデータから第1ハッシュ値を算出する処理S303の後に、新規な処理S310,S311が追加されている。プログラムP20は、第1ハッシュ値を算出するとS303、その第1ハッシュ値が予め設定されている限界値に一致するか否かを判定するS310。限界値とは、特徴値の理論的限界を示す値である。特徴値がハッシュ値の最小値である場合、その限界値は0000である。特徴値がハッシュ値の最大値の場合、その限界値は、ハッシュ関数の仕様で定まる値例えばFFFFである。従って、特徴値に最小値が設定されている場合において、ウインドウ内のデータから算出された第1ハッシュ値が0であるときは、その時点で、特徴値が検出されたと判断しても差し支えない。第1ハッシュ値が特徴値の限界値に一致しており、その第1ハッシュ値は必ず特徴値に該当するためである。その後に、特徴値に該当する他の第1ハッシュ値が出現する可能性はある。従って、複数の特徴値が検出される場合、先に出現した特徴値を選択する構成とする。プログラムP20は、特徴値の限界値に一致する第1ハッシュ値が検出された時点で、第1ハッシュ値の算出を打ち切ることができるS310:YES。プログラムP20は、限界値に一致する第1ハッシュ値に対応する位置を分割位置に設定しS311、ファイルデータを分割位置で分割するS307。算出された第1ハッシュ値が限界値に一致しない場合S310:NO、プログラムP20はウインドウを1バイトだけ右にシフトさせS304、他のデータについての第1ハッシュ値を算出するS303。このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、算出された第1ハッシュ値が特徴値の理論的限界である限界値に一致する場合、その第1ハッシュ値を特徴値として選択する。所定範囲PLの全体について第1ハッシュ値の算出が終了していない場合でも、第1ハッシュ値の算出は中止される。従って、本実施例では、第1実施例よりも高速に、ファイルデータを適切なサイズに分割することができる。このため、ファイルデータの重複を検出して排除する処理をより高速に行うことができ、使い勝手が向上する。図11,図12を参照して第3実施例を説明する。本実施例では、受信した対象ファイルデータを逐次処理する。図11は、本実施例のファイルデータ管理システム10Aの全体構成を示す。図2に示す構成との第1の相違は、クライアントコンピュータ50から受領するファイルデータを保存するための第2ストレージ装置40が存在しないことである。第2の相違は、マイグレーションプログラムP21が存在しないことである。図12は、全体動作を示すフローチャートである。管理システム10Aは、クライアントコンピュータ50から対象ファイルデータを受信するとS100A、ただちにファイル分割処理S300及び重複排除処理S400を実行する。つまり、本実施例では、クライアントコンピュータ50から受領したファイルデータを、受領とほぼ同時に処理する。本実施例では、NASサーバ20内のバッファメモリまたはキャッシュメモリにファイルデータが一時的に記憶されることはある。しかし、それは、ファイル分割処理及び重複排除処理の開始契機を待つための記憶ではない。このように構成される本実施例も第1実施例と同様の効果を奏する。さらに、本実施例では、ほぼリアルタイムにファイルデータを分割して管理することができる。、本発明は、上述した実施形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、第2実施例と第3実施例とを組合せることもできる。"