(57)【特許請求の範囲】
【請求項１】
クライアント装置の要求に応じてデータを格納する格納手段を備えたファイルストレージ装置であって、
前記クライアント装置によって前記格納手段に格納を要求されたファイルの形式に応じて、前記ファイルから、独立したファイルとして前記格納手段に格納可能な部分のデータである独立可能データを抽出する抽出部と、
前記抽出部が抽出した前記独立可能データまたはファイルから前記独立可能データが削除されたデータである残データに合致するデータが前記格納手段に格納されているか否かを判定する重複判定部と、
前記重複判定部の判定結果にもとづいて、前記格納手段に格納されているデータに合致しない前記独立可能データまたは前記残データを前記格納手段に格納する格納処理部と、
前記クライアント装置の要求に応じて、前記格納処理部が前記格納手段に格納した前記独立可能データと前記残データとを結合してファイルに復元する復元部とを備え、
前記抽出部は、ファイルの形式に応じて定められ、独立したファイルとして抽出可能なデータの検出に用いられる制御タグ情報を、前記格納手段に格納を要求されたファイルの形式に応じて選択し、選択された制御タグ情報が含まれているか否かを検査して前記ファイルから独立可能データを抽出する
ことを特徴とするファイルストレージ装置。
【請求項２】
抽出部は、クライアント装置によって格納手段に格納を要求されたファイルから独立可能データを抽出した場合に、前記ファイルから前記独立可能データを削除し、前記独立可能データと残データとの結合位置を示す結合位置情報を生成し、
復元部は、前記クライアント装置の要求に応じて、前記結合位置情報によって示される結合位置で前記格納手段に格納されている前記独立可能データと前記残データとを結合して前記ファイルを復元する
請求項１記載のファイルストレージ装置。
【請求項３】
重複判定部は、
格納手段に格納する独立可能データおよび残データのハッシュ値をそれぞれ算出するハッシュ値算出部と、前記ハッシュ値算出部が算出したハッシュ値を登録するハッシュテーブルとを含み、
前記ハッシュ値算出部が算出した前記独立可能データのハッシュ値または前記残データのハッシュ値と、前記ハッシュテーブルに登録されているハッシュ値とが合致する場合に、前記独立可能データまたは前記残データに合致するデータが前記格納手段に格納されていると判定する
請求項１または請求項２記載のファイルストレージ装置。
【請求項４】
ハッシュテーブルには、ハッシュ値算出部がハッシュ値を算出したデータが格納手段に格納されている場所を示す格納先情報と、当該データのハッシュ値とが対応付けられて登録され、
重複判定部は、前記ハッシュ値算出部が算出した独立可能データのハッシュ値または残データのハッシュ値と、前記ハッシュテーブルに登録されているハッシュ値とが合致する場合に、前記ハッシュテーブルに登録されている前記ハッシュ値に対応付けられている格納先情報によって示される場所に格納されているデータを読み出し、読み出したデータと、前記独立可能データまたは前記残データとのバイト列が整合している場合に、前記独立可能データまたは前記残データに合致するデータが前記格納手段に格納されていると判定する
請求項３記載のファイルストレージ装置。
【請求項５】
抽出部は、クライアント装置によって格納手段に格納を要求されたファイルの形式に応じて、前記ファイルから、復元部によって復元可能なバイナリデータを独立可能データとして抽出する
請求項１から請求項４のうちいずれか１項記載のファイルストレージ装置。
【請求項６】
クライアント装置の要求に応じてファイルストレージ装置の格納手段にデータを格納するデータ格納方法であって、
前記クライアント装置によって前記格納手段に格納を要求されたファイルの形式に応じて、前記ファイルから、独立したファイルとして前記格納手段に格納可能な部分のデータである独立可能データを抽出し、
抽出した前記独立可能データまたは前記ファイルから前記独立可能データが削除されたデータである残データに合致するデータが前記格納手段に格納されているか否かを判定し、
前記判定の結果にもとづいて、前記格納手段に格納されているデータに合致しない前記独立可能データまたは前記残データを前記格納手段に格納し、
前記クライアント装置の要求に応じて、前記格納手段に格納した前記独立可能データと前記残データとを結合してファイルに復元し、
前記独立可能データを抽出する際、ファイルの形式に応じて定められ、独立したファイルとして抽出可能なデータの検出に用いられる制御タグ情報を、前記格納手段に格納を要求されたファイルの形式に応じて選択し、選択された制御タグ情報が含まれているか否かを検査して前記ファイルから独立可能データを抽出する
ことを特徴とするデータ格納方法。
【請求項７】
クライアント装置によって格納手段に格納を要求されたファイルから独立可能データを抽出した場合に、前記ファイルから前記独立可能データを削除し、前記独立可能データと残データとの結合位置を示す結合位置情報を生成し、
前記クライアント装置の要求に応じて、前記結合位置情報によって示される結合位置で前記格納手段に格納されている前記独立可能データと前記残データとを結合して前記ファイルを復元する
請求項６記載のデータ格納方法。
【請求項８】
クライアント装置の要求に応じてデータを格納する格納手段を備えたファイルストレージ装置に搭載されるデータ格納プログラムであって、
コンピュータに、
前記クライアント装置によって前記格納手段への格納を要求されたファイルの形式に応じて、前記ファイルから、独立したファイルとして前記格納手段に格納可能な部分のデータである独立可能データを抽出する抽出処理と、
前記抽出処理で抽出した前記独立可能データまたは前記ファイルから前記独立可能データが削除されたデータである残データに合致するデータが前記格納手段に格納されているか否かを判定する重複判定処理と、
前記重複判定処理の判定結果にもとづいて、前記格納手段に格納されているデータに合致しない前記独立可能データまたは前記残データを前記格納手段に格納する格納処理と、
前記クライアント装置の要求に応じて、前記格納処理で前記格納手段に格納した前記独立可能データと前記残データとを結合してファイルに復元する復元処理とを実行させ、
前記抽出処理で、ファイルの形式に応じて定められ、独立したファイルとして抽出可能なデータの検出に用いられる制御タグ情報を、前記格納手段に格納を要求されたファイルの形式に応じて選択させ、選択された制御タグ情報が含まれているか否かを検査して前記ファイルから独立可能データを抽出させる
ためのデータ格納プログラム。
【請求項９】
コンピュータに、
クライアント装置によって格納手段への格納を要求されたファイルから独立可能データを抽出した場合に、抽出処理で、前記ファイルから前記独立可能データを削除させ、前記独立可能データと残データとの結合位置を示す結合位置情報を生成させ、
前記クライアント装置の要求に応じて、復元処理で、前記結合位置情報によって示される結合位置で前記格納手段に格納されている前記独立可能データと前記残データとを結合して前記ファイルを復元させる
請求項８記載のデータ格納プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１台以上のクライアント装置によって共有されるファイルストレージ装置、ファイルストレージ装置におけるデータ格納方法およびデータ格納プログラムに関する。
【背景技術】
【０００２】
複数のクライアント装置で生成されたデータを集中的に格納するストレージ装置では、物理的な記録量を削減するデデュプリケーション（De-duplication）と呼ばれる手法が用いられる。この手法では、ハードディスク等の物理的な記憶媒体にデータを格納する段階で、既に格納されているデータとの重複を判定し、重複しているデータについては記憶媒体にデータを格納せず、既に格納済みの重複データへのポインタ情報のみを記録する。【０００３】
デデュプリケーションでは、一般に、ファイル単位、またはファイルシステムが記憶媒体にデータを格納するときに固定的に割り振られる物理データブロック単位で、格納するデータと既に格納済みのデータとが重複するか否かの判定が行われる。そして、重複するデータが排除されたデータを格納することによって物理的な記録量を削減する（例えば、特許文献１参照）。【０００４】
デデュプリケーションでは、一般に、ファイル単位やファイルシステムにおいて記憶媒体にデータを格納する際に固定的に割り振られる物理データブロック単位で、既に格納済みのデータとの重複の判定が行われる。重複判定の際に、ディジタル認証等で用いられているＳＨＡ１（Secure Hash Algorithm 1 ）やＭＤ５（Message Digest 5）といったハッシュ関数を用いて生成された数１０〜数１００ビットのサイズの小さいダイジェストデータ同士を比較判定することによって、同一のバイト列で構成されているファイルまたはデータブロックであるか否かが判定される。ダイジェストデータを用いた重複判定手法を採用することによって、ストレージ装置上で実行される重複判定にかかる処理コストが低減される。また、特に、高速な入出力処理の実行が見込まれるストレージ処理において、入出力処理と同時に重複判定を行うことによって、入出力処理性能の劣化を抑える効果も得られる。【０００５】
ダイジェストデータを用いた重複判定手法を採用する重複排除型ストレージシステムは、特に、同一のバイト列で構成されるファイルやデータブロックが多数見込まれる環境に適用される。具体的には、この重複排除型ストレージシステムは、バックアップデータの格納を目的としたストレージ装置や、複数の仮想オペレーティングシステムのシステム部分のイメージデータの格納を目的としたストレージ装置で、データ格納コストを下げる手段の一つとして広く適用が進んでいる。【０００６】
なお、特許文献２には、画像ファイルの重複格納を防止するシステムが記載されている。特許文献２に記載されているシステムは、入力された画像ファイルと既に画像ファイル記録システムに記録されている画像ファイルとが重複するか否かを判定し、重複する場合には入力された画像ファイルを格納しない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−１５８９９３号公報
【特許文献２】特開２００６−９２２６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、一般的なデデュプリケーションでは、ファイル単位やファイルシステムにおいて記憶媒体にデータを格納する際に固定的に割り振られる物理データブロック単位といった重複判定単位が用いられる。その場合、ユーザ等によってファイルデータに対する変更やデータの挿入があったときに、変更量や挿入量がごくわずかであっても、データの変更や挿入前後のファイルデータは、別のファイルデータと見なされてしまう。また、重複判定単位が物理データブロック単位である場合には物理データブロックへの分割方法は固定的である。よって、ファイルデータにおける大半のデータは、記憶媒体に格納済のデータと重複しているにも関わらず、重複したデータとして検出されないという課題がある。すなわち、ストレージ装置に格納されるデータの物理量の削減が十分でなく、ファイルデータの格納コストの軽減が十分に達成されていない。【０００９】
そこで、本発明は、格納されるデータの物理量をより減らして、ファイルデータの格納コストをより軽減することができるファイルストレージ装置、データ格納方法およびデータ格納プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明によるファイルストレージ装置は、クライアント装置の要求に応じてデータを格納する格納手段を備えたファイルストレージ装置であって、クライアント装置によって格納手段に格納を要求されたファイルの形式に応じて、ファイルから、独立したファイルとして格納手段に格納可能な部分のデータである独立可能データを抽出する抽出部と、抽出部が抽出した独立可能データまたはファイルから独立可能データが削除されたデータである残データに合致するデータが格納手段に格納されているか否かを判定する重複判定部と、重複判定部の判定結果にもとづいて、格納手段に格納されているデータに合致しない独立可能データまたは残データを格納手段に格納する格納処理部と、クライアント装置の要求に応じて、格納処理部が格納手段に格納した独立可能データと残データとを結合してファイルに復元する復元部とを備え、抽出部が、ファイルの形式に応じて定められ、独立したファイルとして抽出可能なデータの検出に用いられる制御タグ情報を、格納手段に格納を要求されたファイルの形式に応じて選択し、選択された制御タグ情報が含まれているか否かを検査してファイルから独立可能データを抽出することを特徴とする。
【００１１】
本発明によるデータ格納方法は、クライアント装置の要求に応じてファイルストレージ装置の格納手段にデータを格納するデータ格納方法であって、クライアント装置によって格納手段に格納を要求されたファイルの形式に応じて、ファイルから、独立したファイルとして格納手段に格納可能な部分のデータである独立可能データを抽出し、抽出した独立可能データまたはファイルから独立可能データが削除されたデータである残データに合致するデータが格納手段に格納されているか否かを判定し、判定の結果にもとづいて、格納手段に格納されているデータに合致しない独立可能データまたは残データを格納手段に格納し、クライアント装置の要求に応じて、格納手段に格納した独立可能データと残データとを結合してファイルに復元し、独立可能データを抽出する際、ファイルの形式に応じて定められ、独立したファイルとして抽出可能なデータの検出に用いられる制御タグ情報を、格納手段に格納を要求されたファイルの形式に応じて選択し、選択された制御タグ情報が含まれているか否かを検査してファイルから独立可能データを抽出することを特徴とする。
【００１２】
本発明によるデータ格納プログラムは、クライアント装置の要求に応じてデータを格納する格納手段を備えたファイルストレージ装置に搭載されるデータ格納プログラムであって、コンピュータに、クライアント装置によって格納手段への格納を要求されたファイルの形式に応じて、ファイルから、独立したファイルとして格納手段に格納可能な部分のデータである独立可能データを抽出する抽出処理と、抽出処理で抽出した独立可能データまたはファイルから独立可能データが削除されたデータである残データに合致するデータが格納手段に格納されているか否かを判定する重複判定処理と、重複判定処理の判定結果にもとづいて、格納手段に格納されているデータに合致しない独立可能データまたは残データを格納手段に格納する格納処理と、クライアント装置の要求に応じて、格納処理で格納手段に格納した独立可能データと残データとを結合してファイルに復元する復元処理とを実行させ、抽出処理で、ファイルの形式に応じて定められ、独立したファイルとして抽出可能なデータの検出に用いられる制御タグ情報を、格納手段に格納を要求されたファイルの形式に応じて選択させ、選択された制御タグ情報が含まれているか否かを検査してファイルから独立可能データを抽出させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、格納されるデータの物理量をより減らして、ファイルデータの格納コストをより軽減することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明によるファイルストレージ装置の一実施形態を含むストレージシステムの構成を示すブロック図である。
【図２】図１に示すファイルストレージ装置の内部構成を示すブロック図である。
【図３】図１に示すファイルストレージ装置のファイル書き込み処理を示すフローチャートである。
【図４】図１に示すファイルストレージ装置のファイル読み出し処理を示すフローチャートである。
【図５】図１に示すファイルストレージ装置のファイル削除処理を示すフローチャートである。
【図６】本発明によるファイルストレージ装置の主要部を示すブロック図である。
【発明を実施するための形態】
【００１５】
図１は、本発明によるファイルストレージ装置の一実施形態を含むストレージシステムの構成を示すブロック図である。図１を参照して、本発明によるファイルストレージ装置の一実施形態であるファイルストレージ装置３０を含むストレージシステムを説明する。
【００１６】
図１に示すストレージシステムは、少なくとも１つ以上のクライアント装置１０１〜１０ｎと、ファイルストレージ装置３０を含む。クライアント装置１０１〜１０ｎおよびファイルストレージ装置３０は、ネットワーク２０を介して相互に接続されている。
【００１７】
クライアント装置１０１〜１０ｎは、ファイルストレージ装置３０へのファイルデータの新規作成要求および削除要求や、ファイルストレージ装置３０に格納されているファイルデータの読み出し要求および書き込み要求等のファイルデータ処理要求を送信する。以下、クライアント装置１０１の説明を行うが、クライアント装置１０２〜１０ｎも、クライアント装置１０１と同様に動作する。
【００１８】
ファイルストレージ装置３０は、クライアント装置１０１からネットワーク２０を介して送信されたファイルデータ処理要求に応じて、ファイルの新規作成処理（つまり、クライアント装置１０１からネットワーク２０を介して送信されたファイルの格納要求に応じて格納する処理）、削除処理、ストレージ装置３０に格納されているファイルデータの読み出し処理および書き込み処理を実行する。そして、ファイルストレージ装置３０は、処理要求元のクライアント装置１０１に処理の実行結果をネットワーク２０を介して送信する。
【００１９】
図２は、図１に示すファイルストレージ装置の内部構成を示すブロック図である。図２を参照して、ファイルストレージ装置３０の内部構成を説明する。
【００２０】
ストレージ装置３０は、リクエスト処理部３１、ファイルデータ管理部３２、データオブジェクト格納管理部３３、ファイルフォーマット判定抽出部３４、データオブジェクト重複判定部３５、およびデータオブジェクト記憶部３６を備える。
【００２１】
リクエスト処理部３１は、クライアント装置１０１から送信されたファイルデータ処理要求をネットワーク２０を介して受信する。リクエスト処理部３１は、受信したファイルデータ処理要求に応じて、処理要求の内容およびファイルデータをファイルデータ管理部３２に出力する。また、リクエスト処理部３１は、ファイルデータ管理部３２からファイルデータ処理の完了通知を受信すると、ファイルデータ処理の完了通知をネットワーク２０を介してファイルデータ処理要求元のクライアント装置１０１に送信する。
【００２２】
ファイルデータ管理部３２は、ファイルストレージ装置３０内でのファイルシステムとして機能する。ファイルデータ管理部３２は、ファイルを一意に示すファイルＩＤ情報の生成、ファイルに付与される各種メタデータの管理、およびディレクトリツリー構成の管理を行う。また、ファイルデータ管理部３２は、クライアント装置１０１から送信された各種処理要求について、メタデータに基づいて実行可否の判定を行う。
【００２３】
データオブジェクト格納管理部３３は、ファイルデータ管理部３２で管理されているファイルデータを構成するデータオブジェクトの構成を示す情報の管理、および、データオブジェクト記憶部３６におけるデータオブジェクトの格納位置を示す格納先アドレス情報の管理を行う。そして、データオブジェクト格納管理部３３は、ファイルデータ管理部３２の要求に応じて、データオブジェクト記憶部３６からデータオブジェクトを読み出す処理や、データオブジェクト重複判定部３５の判定結果に応じてデータオブジェクトをデータオブジェクト記憶部３６に書き込む処理を実行する。
【００２４】
ファイルフォーマット判定抽出部３４は、ファイルデータのファイルフォーマット情報に基づいて、ファイルデータを構成するデータオブジェクトから、独立したファイルとして保存可能なデータ部分として抽出可能なデータオブジェクト（以下、サブデータオブジェクトと呼ぶ）の有無を判定する。そして、ファイルフォーマット判定抽出部３４は、抽出可能と判定したサブデータオブジェクトの抽出処理を実行する。
【００２５】
また、ファイルフォーマット判定抽出部３４は、サブデータオブジェクトの抽出後に、ファイルデータからサブデータオブジェクト部分を削除した残データ（以下、メインデータオブジェクトと呼ぶ）の成型処理を行う。
【００２６】
データオブジェクト重複判定部３５は、データオブジェクト記憶部３６に格納済みのデータオブジェクトと、新たにデータオブジェクト記憶部３６に登録しようとするデータオブジェクトとの間でデータの重複が存在しているかどうかの重複判定を行う。そして、データオブジェクト重複判定部３５は、判定結果に応じたデータの登録処理を実行する。また、データオブジェクト重複判定部３５は、データオブジェクト記憶部３６に登録されているデータの削除処理を実行する。
【００２７】
データオブジェクト記憶部３６は、少なくとも１つ以上のハードディスク等の記憶媒体を内蔵する。データオブジェクト記憶部３６は、データオブジェクト格納管理部３３やデータオブジェクト重複管理部３５からの要求に応じて、記憶媒体へのデータオブジェクトの書き込み、削除、および記憶媒体からのデータオブジェクトの読み出しを行う。
【００２８】
ここで、データオブジェクト格納管理部３３におけるデータオブジェクトの管理方法を詳しく説明する。
【００２９】
データオブジェクト格納管理部３３は、データオブジェクト管理テーブルを用いて、データオブジェクトの管理を行う。データオブジェクト管理テーブルは、２種類存在する。１つは、ファイルフォーマット判定抽出部３４によってファイルから抽出されたデータオブジェクトであるサブデータオブジェクトを管理するサブデータオブジェクト管理テーブルである。もう１つは、当該ファイルにおいてサブデータオブジェクト以外の部分のファイルデータを構成するメインデータオブジェクトを管理するメインデータオブジェクト管理テーブルである。
【００３０】
データオブジェクト格納管理部３３は、メインデータオブジェクト管理テーブルに、メインデータオブジェクトを一意に特定するＩＤ（メインデータオブジェクトＩＤ）情報、メインデータオブジェクトから抽出された全てのサブデータオブジェクトを一意に特定するＩＤ（サブデータオブジェクトＩＤ）情報、サブデータオブジェクトを抽出した場合にメインデータオブジェクトとサブデータオブジェクトとの結合方法を示す情報、データオブジェクト記憶部３６におけるメインデータオブジェクトの格納先アドレス情報、および、データオブジェクト記憶部３６へのメインデータオブジェクトの保存処理が完了したか否かを示すフラグ情報（メインデータオブジェクト保存完了フラグ）を登録する。なお、メインデータオブジェクトとサブデータオブジェクトとの結合方法を示す情報は、例えば、メインデータオブジェクトへのサブデータオブジェクトの挿入位置を示す情報を含む。
【００３１】
データオブジェクト格納管理部３３は、サブデータオブジェクト管理テーブルに、サブデータオブジェクトを一意に特定するサブデータオブジェクトＩＤ情報、データオブジェクト記憶部３６におけるサブデータオブジェクトの格納先アドレス情報、およびデータオブジェクト記憶部３６へのサブデータオブジェクトの保存処理が完了したか否かを示すフラグ情報（サブデータオブジェクト保存完了フラグ）を登録する。
【００３２】
次に、ファイルフォーマット判定抽出部３４におけるサブデータオブジェクトの抽出処理、およびサブデータオブジェクトの抽出後のメインデータオブジェクトの成型処理を詳しく説明する。
【００３３】
まず、ファイルフォーマット判定抽出部３４には、ファイル拡張子の種別（例えば、ｘｌｓ等）に応じて、ファイルデータに組み込まれている可能性があるサブデータオブジェクトの種別（例えば、ｊｐｇやｂｍｐ等）と、組み込まれているサブデータオブジェクトの抽出方法とが、対応可能ファイル情報として、予め設定されている。対応可能ファイル情報におけるファイル拡張子の種別には、アプリケーションソフトウェア（例えば、Adobe Reader（登録商標））に応じたアプリケーションファイルフォーマット（例えば、ＰＤＦ形式）の種別が設定されていてもよい。
【００３４】
ファイルフォーマット判定抽出部３４は、データオブジェクト格納管理部３３から入力されたファイルデータのファイルフォーマット情報（ファイル拡張子）に対する対応可能ファイル情報の設定を参照し、入力されたファイルデータから、画像データや映像データ等の独立したファイルとして抽出保存および復元が可能なバイナリデータとしてファイルに組み込まれているデータ部分をサブデータオブジェクトとして抽出する。すなわち、ファイルフォーマット判定抽出部３４は、入力されたファイルデータから、入力されたファイルデータのファイルフォーマット情報に応じて、対応可能ファイル情報に設定されているサブデータオブジェクトの抽出方法に従って、サブデータオブジェクトを抽出する。
【００３５】
ファイルフォーマット判定抽出部３４は、ファイルデータの先頭から、画像データ、映像データ等の独立したファイルとして抽出可能なデータオブジェクトの組み込み制御タグ情報が当該ファイルデータに含まれているか否かを検査する。なお、制御タグ情報は、ファイルフォーマットによって異なる。ファイルフォーマット判定抽出部３４は、データオブジェクト格納管理部３３によって与えられるファイルのファイルフォーマット情報に応じて、検出する制御タグ情報を選択する。検出する制御タグ情報は、対応可能ファイル情報に含まれていてもよい。
【００３６】
ファイルフォーマット判定抽出部３４は、ファイルデータに組み込み制御タグ情報が含まれている場合に、制御タグ情報に基づいて、独立したファイルとして抽出可能なデータオブジェクトをサブデータオブジェクトとして抽出する。
【００３７】
なお、ファイルフォーマット抽出部３４は、ファイルからサブデータオブジェクトを抽出した後に、当該ファイルからサブデータオブジェクトを削除して成型したデータオブジェクトをメインデータオブジェクトとして生成する。そして、ファイルフォーマット判定抽出部３４は、メインデータオブジェクトへのサブデータオブジェクトの挿入位置を示す挿入位置情報を生成する。つまり、挿入位置情報は、メインデータオブジェクトとサブデータオブジェクトとが結合される位置を示す情報である。挿入位置情報は、例えば、メインデータオブジェクトの先頭からのオフセット位置情報と、サブデータオブジェクトのデータ長を示すレングス情報を含む。
【００３８】
また、抽出対象のサブデータオブジェクトが複数存在する場合には、ファイルフォーマット判定抽出部３４は、全ての抽出対象のサブデータオブジェクトを抽出するとともに、個々のサブデータオブジェクトごとに挿入位置情報を生成する。
【００３９】
ファイルに制御タグ情報が含まれていない場合には、ファイルフォーマット判定抽出部３４は、サブデータオブジェクトが存在しないとして処理を完了する。
【００４０】
次に、データオブジェクト重複判定部３５が行う処理であるファイルの格納に用いられる情報の登録処理および情報の削除処理を詳しく説明する。
【００４１】
データオブジェクト重複判定部３５は、予め設定されたハッシュ関数を用いて、データオブジェクト記憶部３６に格納するメインデータオブジェクトおよびサブデータオブジェクトのハッシュ値を算出する機能を有する。また、データオブジェクト重複判定部３５は、算出したハッシュ値、データオブジェクト記憶部３６におけるメインデータオブジェクトおよびサブデータオブジェクトのデータの格納先アドレス情報、およびデータの重複回数を対応付けて管理するハッシュテーブルを備える。
【００４２】
情報の登録処理は、データオブジェクト格納管理部３３が、データオブジェクト重複判定部３５に、クライアント装置１０１からネットワーク２０を介して送信されたファイルの格納要求に応じてデータの登録命令を発行し、データオブジェクト記憶部３６に格納するメインデータオブジェクトおよびサブデータオブジェクトとともに出力したことに応じて実行される。
【００４３】
データの登録命令を受けたデータオブジェクト重複判定部３５は、データオブジェクト格納管理部３３から出力されたメインデータオブジェクトおよびサブデータオブジェクトのハッシュ値を算出する。そして、データオブジェクト重複判定部３５は、算出したハッシュ値に合致するハッシュ値がハッシュテーブルに登録されているかどうかを確認する。つまり、データオブジェクト重複判定部３５は、データオブジェクト単位で重複判定を行う。
【００４４】
算出したハッシュ値に合致するハッシュ値がハッシュテーブルに登録されていた場合には、データオブジェクト重複判定部３５は、該当するハッシュ値に対応付けられてハッシュテーブルに登録されているデータの格納先アドレス情報を取得する。そして、データオブジェクト重複判定部３５は、データの重複回数に１を加えて、データの格納先アドレス情報をデータオブジェクト格納管理部３３に通知する。以上で、情報の登録処理が完了する。
【００４５】
なお、異なるデータオブジェクトに基づいて同じハッシュ値が算出された場合の重複の誤検出を回避するために、データオブジェクト重複判定部３５が重複の誤検出回避機能を備えてもよい。この誤検出回避機能では、データオブジェクト重複判定部３５が、合致するハッシュ値がハッシュテーブルに登録されていた場合には、当該ハッシュ値に対応付けられているデータの格納先アドレス情報に基づいて、データオブジェクト記憶部３６に記憶されているデータを読み出す。さらに、この誤検出回避機能では、データオブジェクト重複判定部３５が、読み出したデータと、新規格納対象となっているメインデータオブジェクトまたはサブデータオブジェクトのデータとのバイト列が整合していることを確認する。
【００４６】
データオブジェクト格納管理部３３は、データオブジェクト重複判定部３５が算出したハッシュ値に合致するハッシュ値がハッシュテーブルに登録されていないと判定した場合には、データオブジェクト記憶部３６の空きデータ格納領域に、新規格納対象となっているメインデータオブジェクトまたはサブデータオブジェクトを格納する。データオブジェクト重複判定部３５は、算出したハッシュ値、データオブジェクト記憶部３６におけるメインデータオブジェクトまたはサブデータオブジェクトの格納先アドレス情報、およびデータの重複回数を０に設定したデータを対応付けてハッシュテーブルに登録する。そして、データオブジェクト重複判定部３５は、データの格納先アドレス情報をデータオブジェクト格納管理部３３に通知する。以上で、情報の登録処理が完了する。
【００４７】
情報の削除処理は、データオブジェクト格納管理部３３が、データオブジェクト重複判定部３５に、クライアント装置１０１からネットワーク２０を介して送信されたファイルの削除要求に応じてメインデータオブジェクトまたはサブデータオブジェクトの削除命令を発行し、削除対象となるメインデータオブジェクトまたはサブデータオブジェクトの格納先アドレス情報とともに出力したことに応じて実行される。
【００４８】
メインデータオブジェクトまたはサブデータオブジェクトの削除命令を受けたデータオブジェクト重複判定部３５は、データオブジェクト格納管理部３３から出力されたメインデータオブジェクトまたはサブデータオブジェクトの格納先アドレス情報に該当するハッシュテーブルの格納先アドレス情報を抽出する。
【００４９】
そして、データオブジェクト重複管理部３５は、抽出した格納先アドレス情報に対応付けられたデータの重複回数を確認する。データの重複回数が０であった場合には、データオブジェクト重複管理部３５は、格納先アドレス情報に基づいて、データオブジェクト記憶管理部３６に記録されているメインデータオブジェクトおよびサブデータオブジェクトを削除する。そして、データオブジェクト重複管理部３５は、情報の削除処理が完了したことをデータオブジェクト格納管理部３３に通知する。以上で、情報の削除処理が完了する。
【００５０】
データの重複回数が１以上であった場合には、データオブジェクト重複管理部３５は、データの重複回数を１減らす。そして、データオブジェクト重複管理部３５は、情報の削除処理が完了したことをデータオブジェクト格納管理部３３に通知する。以上で、情報の削除処理が完了する。
【００５１】
図１に示すストレージシステムにおいて、クライアント装置１０１からファイルストレージ装置３０に行われるファイルの新規作成、削除、読み出し、および書き込みといったファイルアクセス要求は、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）やＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）等のデファクトスタンダードとなっているネットワークファイルシステムプロトコルを用いて実行される。なお、クライアント装置１０１は、ファイルストレージ装置３０に新たなファイルの格納を要求する場合に、ファイルの新規作成および書き込みのファイルアクセス要求を行うものとする。
【００５２】
例えば、ファイルアクセス要求が行われると、ストレージ装置３０に備えられたリクエスト処理部３１において各種ネットワークファイルシステムプロトコルが解釈され、ファイルデータ管理部３２に各種ファイルアクセス要求が転送される。また、ファイルデータ管理部３２においてファイルアクセス処理が完了すると、リクエスト処理部３１において、ファイルアクセス処理の完了通知が各種ネットワークファイルシステムプロトコルに基づいて変換され、クライアント装置１０１に転送されるとする。
【００５３】
図１に示すストレージシステムにおいて、ファイルストレージ装置３０が、ファイルの新規作成を行う処理を説明する。なお、ファイルの新規作成を行う処理は、クライアント装置１０１の要求に応じて、ファイルを新たにデータオブジェクト記憶部３６に格納する場合に行われる処理である。
【００５４】
まず、リクエスト処理部３１は、クライアント装置１０１からファイルの新規作成を要求する新規作成要求を受信する。リクエスト処理部３１は、当該新規作成要求、ファイルの作成先となるディレクトリ名、ファイル名、およびその他のファイルのメタデータ情報をファイルデータ管理部３２に送信する。
【００５５】
ファイルデータ管理部３２は、リクエスト処理部３１からファイルの作成先となるディレクトリ名、ファイル名、その他ファイルのメタデータ情報を受信すると、ファイルの書き込み権限といったデータ作成権限に問題がなければ、ファイルを一意に特定するファイルＩＤ情報を生成する。そして、ファイルデータ管理部３２は、指定された各種メタデータ情報に基づいて生成されたファイルシステム上で管理するメタデータを、生成したファイルＩＤ情報に対応付けて保存する。メタデータとファイルＩＤ情報との保存が完了すると、ファイルデータ管理部３２は、ファイルの新規作成完了通知と生成したファイルＩＤ情報とをリクエスト処理部３１に送信する。リクエスト処理部３１は、受信したファイルの新規作成完了通知と当該ファイルのファイルＩＤ情報とをクライアント装置１０１に送信する。
【００５６】
なお、ファイルアクセス要求によって、ファイルの削除処理、ファイルデータの書き込み処理、およびファイルデータの読み出し処理が行われる場合には、ファイルの新規作成処理において生成されたファイルＩＤ情報を用いて処理対象のファイルが指定される。
【００５７】
次に、ファイルストレージ装置３０が、クライアント装置１０１の要求に応じてファイルの書き込みを行う処理を説明する。なお、ファイルの書き込みを行う処理は、クライアント装置１０１の要求に応じて、ファイルを新たにデータオブジェクト記憶部３６に格納する場合、またはデータオブジェクト記憶部３６に既に格納されているファイルを更新する場合に行われる処理である。ファイルを新たにデータオブジェクト記憶部３６に格納する場合には、前述したファイルの新規作成を行う処理が行われてから、生成されたファイルＩＤ情報を用いて、ファイルの書き込みを行う処理が実行される。
【００５８】
図３は、図１に示すファイルストレージ装置のファイル書き込み処理を示すフローチャートである。図３を参照して、図１に示すストレージシステムにおいて、ファイルストレージ装置３０がファイルデータを書き込む処理を説明する。
【００５９】
まず、リクエスト処理部３１は、クライアント装置１０１からファイルデータの書き込みを要求するファイル書き込み命令と、ファイルデータを書き込むファイルのファイルＩＤ情報とを受信する。リクエスト処理部３１は、ファイル書き込み命令の転送と併せて、書き込むファイルのファイルＩＤ情報、および書き込むファイルデータ本体をファイルデータ管理部３２に送信する。
【００６０】
ファイル書き込み命令を受信したファイルデータ管理部３２は、リクエスト処理部３１から受信したファイルＩＤ情報およびファイルデータ本体に基づいて、データオブジェクト格納管理部３３に、ファイルＩＤ情報、データオブジェクト書き込み命令、データオブジェクトに相当するファイルデータ本体、および、ファイルに付与されているファイル名の拡張子（つまり、ファイルフォーマット情報）を送信する（ステップＳ２００）。
【００６１】
データオブジェクト書き込み命令を受信したデータオブジェクト格納管理部３３は、メインデータオブジェクト管理テーブルに、受信したファイルＩＤ情報と同一のメインデータオブジェクトＩＤ情報を持つエントリを新規作成する。そして、データオブジェクト格納管理部３３は、当該エントリにおけるメインデータオブジェクト保存完了フラグを、保存処理が完了していないことを示す状態に設定する（ステップＳ２０１）。
【００６２】
次に、データオブジェクト格納管理部３３は、ファイルデータ管理部３２から受信したファイルフォーマット情報について、ファイルフォーマット判定抽出部３４がサブデータオブジェクトの有無および抽出を行うことができるファイルフォーマット（対応可能なファイルフォーマット）であるかどうか判定する（ステップＳ２０２）。対応可能なファイルフォーマットであるどうかは、対応可能ファイル情報のファイル拡張子の種別に、ファイルデータ管理部３２から受信したファイルフォーマット情報に合致するファイル拡張子が登録されているかによって判定できる。
【００６３】
ステップＳ２０２において、ファイルフォーマット判定抽出部３４が対応可能なファイルフォーマットであると判定した場合には、データオブジェクト格納管理部３３は、ファイルフォーマット判定抽出部３４に、ファイルデータ管理部３２から受信したデータオブジェクトおよびファイルフォーマット情報を送信する（ステップＳ２０３）。
【００６４】
ファイルフォーマット判定抽出部３４は、データオブジェクト格納管理部３３から受信したファイルフォーマット情報に基づいて、受信したデータオブジェクトからサブデータオブジェクトが抽出できるかどうか判定する（ステップＳ２０４）。
【００６５】
ステップＳ２０４においてサブデータオブジェクトが抽出できると判定された場合には、ファイルフォーマット判定抽出部３４は、データオブジェクトから抽出可能と判定したサブデータオブジェクトの抽出処理を実行する。そして、ファイルフォーマット判定抽出部３４は、当該データオブジェクトから抽出処理で抽出したサブデータオブジェクトを削除して、サブデータオブジェクトの削除後のデータオブジェクトであるメインデータオブジェクトを生成する成型処理を行う。そして、ファイルフォーマット判定抽出部３４は、データオブジェクト格納管理部３３に、抽出したサブデータオブジェクト、生成したメインデータオブジェクト、抽出したサブデータオブジェクト数、およびメインデータオブジェクトへのサブデータオブジェクトの挿入位置情報を返信する（ステップＳ２０５）。
【００６６】
なお、ステップＳ２０４においてサブデータオブジェクトが抽出できないと判定された場合には（ステップＳ２０４のＮ）、ファイルフォーマット判定抽出部３４は、データオブジェクト格納管理部３３に、サブデータオブジェクトを抽出不可であると返信する。以降の処理として、ステップＳ２０２において、ファイルフォーマット判定抽出部３４が対応していないファイルフォーマットであった場合（ステップＳ２０２のＮ）の処理と同じ処理が実行される。
【００６７】
ステップＳ２０５においてサブデータオブジェクトが抽出され、ファイルフォーマット判定抽出部３４からデータ群が返信されると、データオブジェクト格納管理部３３は、サブデータオブジェクト管理テーブルに、返信されたサブデータオブジェクト数に応じて、サブデータオブジェクトを一意に識別するサブデータオブジェクトＩＤ情報を付与する。そして、データオブジェクト格納管理部３３は、サブデータオブジェクトの保存処理が完了していない状態であることを示すサブデータオブジェクト保存完了フラグを設定したエントリ情報を作成する。また、データオブジェクト格納管理部３３は、メインデータオブジェクト管理テーブルに、関連するサブデータオブジェクトＩＤ情報およびサブデータオブジェクトの挿入位置情報を登録する（ステップＳ２０６）。
【００６８】
次に、データオブジェクト格納管理部３３は、サブデータオブジェクトを、データの登録命令とともに、データオブジェクト重複判定部３５に送信する（ステップＳ２０７）。
【００６９】
データオブジェクト重複判定部３５は、データオブジェクト格納管理部３３から送信されたサブデータオブジェクトの重複判定を行い、判定結果に応じてデータオブジェクトの登録処理であるデータ登録処理を実行する。具体的には、データオブジェクト重複判定部３５は、データオブジェクト格納管理部３３から送信されたサブデータオブジェクトのハッシュ値を算出する。そして、データオブジェクト重複判定部３５は、算出したハッシュ値が、データオブジェクト記憶部３６におけるハッシュテーブルに登録されているハッシュ値に合致しない場合に、重複するデータが格納されていないと判定する。このとき、データオブジェクト重複判定部３５は、サブデータオブジェクトをデータオブジェクト格納管理部３３に出力し、データオブジェクト記憶部３６への格納を指示する。データオブジェクト格納管理部３３は、指示に応じてサブデータオブジェクトをデータオブジェクト記憶部３６に格納する。データオブジェクト重複判定部３５は、データ登録処理を完了した後に、データオブジェクト格納管理部３３に、データの格納先を示すデータオブジェクト記憶部３６のデータ格納先アドレス情報を通知する（ステップＳ２０８）。
【００７０】
データ重複判定部３５からデータの格納先アドレス情報を通知されたデータオブジェクト格納管理部３３は、当該データのサブデータオブジェクト管理テーブルの対象エントリに格納先アドレス情報を登録するとともに、サブデータオブジェクト保存完了フラグを保存処理が完了したことを示す状態に設定する（ステップＳ２０９）。
【００７１】
データオブジェクト格納管理部３３は、ステップＳ２０５において抽出された全てのサブデータオブジェクトについて、データ登録処理が完了したかどうか確認する（ステップＳ２１０）。そして、データオブジェクト格納管理部３３は、データ登録処理が完了した後に、データの登録命令とともに、メインデータオブジェクトをデータオブジェクト重複判定部３５に送信する（ステップＳ２１１）。
【００７２】
なお、ステップＳ２０２に示す判定処理において、ファイルフォーマット判定抽出部３４が対応していないファイルフォーマットであった場合には（ステップＳ２０２のＮｏ）、データオブジェクト格納管理部３３は、ファイルデータ管理部３２から転送されたデータオブジェクトをメインデータオブジェクトとして位置づけ、ステップＳ２１１に示す動作と同じく、データの登録命令とともに、メインデータオブジェクトをデータオブジェクト重複判定部３５に送信する。
【００７３】
メインデータオブジェクトのデータと、当該メインデータオブジェクトの登録命令を受信したデータオブジェクト重複判定部３５は、メインデータオブジェクトの重複判定を行い、判定結果に応じてデータオブジェクトの登録処理であるデータ登録処理を実行する。具体的には、データオブジェクト重複判定部３５は、データオブジェクト格納管理部３３から送信されたメインデータオブジェクトのハッシュ値を算出する。そして、データオブジェクト重複判定部３５は、算出したハッシュ値が、データオブジェクト記憶部３６におけるハッシュテーブルに登録されているハッシュ値に合致しない場合に、重複するデータが格納されていないと判定する。このとき、データオブジェクト重複判定部３５は、メインデータオブジェクトをデータオブジェクト格納管理部３３に出力し、データオブジェクト記憶部３６への格納を指示する。データオブジェクト格納管理部３３は、指示に応じてメインデータオブジェクトをデータオブジェクト記憶部３６に格納する。データオブジェクト重複判定部３５は、データ登録処理を完了した後に、データオブジェクト記憶部３６のデータ格納先アドレス情報をデータオブジェクト格納管理部３３に通知する（ステップＳ２１２）。
【００７４】
データ格納先アドレス情報を受信したデータオブジェクト格納管理部３４は、メインデータオブジェクト管理テーブルに、書き込み処理対象と競合する同一のメインデータオブジェクトＩＤを持つエントリが存在しているかどうかを判定する。
【００７５】
メインデータオブジェクト管理テーブルに、同一のメインデータオブジェクトＩＤを持つエントリが存在していた場合（例えば、ファイルデータの更新処理の場合に相当）には、データオブジェクト格納管理部３４は、競合するメインデータオブジェクトＩＤを持つエントリによって管理されている全てのサブデータオブジェクトおよびメインデータオブジェクトの削除命令をデータオブジェクト重複管理部３５に送信する。データオブジェクト格納管理部３４は、全ての削除処理が完了した後に、競合するメインデータオブジェクトＩＤをもつエントリ、および関連するサブデータオブジェクトのサブデータオブジェクト管理テーブルのエントリを削除する。そして、データオブジェクト格納管理部３４は、データ書き込み対象となっているメインデータオブジェクトのエントリに、格納先アドレス情報を登録する。また、データオブジェクト格納管理部３４は、メインデータオブジェクト保存完了フラグを保存処理が完了したことを示す状態に設定する。さらに、データオブジェクト格納管理部３４は、ファイルデータ管理部３２にファイルデータの書き込みが完了したことを通知する。
【００７６】
メインデータオブジェクト管理テーブルに、同一のメインデータオブジェクトＩＤを持つエントリが存在していない場合には、データオブジェクト格納管理部３４は、データ書き込み対象となっているメインデータオブジェクトのエントリに格納先アドレス情報を登録する。また、データオブジェクト格納管理部３４は、メインデータオブジェクト保存完了フラグを保存処理が完了したことを示す状態に設定する。さらに、データオブジェクト格納管理部３４は、ファイルデータ管理部３２にファイルデータの書き込みが完了したことを通知する（ステップＳ２１３）。
【００７７】
ファイルデータの書き込みの完了通知を受信したファイルデータ管理部３２は、ファイルデータの書き込み完了通知と、ファイルデータを書き込んだファイルのＩＤ情報とをリクエスト処理部３１に送信する。リクエスト処理部３１は、受信したファイルデータの書き込み完了通知とファイルＩＤ情報とをクライアント装置１０１に送信し、ファイルデータを書き込む処理を完了する。
【００７８】
図４は、図１に示すファイルストレージ装置のファイル読み込み処理を示すフローチャートである。図４を参照して、図１に示すストレージシステムにおいて、ファイルストレージ装置３０がファイルデータを読み出す処理を説明する。
【００７９】
まず、リクエスト処理部３１は、クライアント装置１０１からファイルデータの読み込みを要求するファイル読み込み命令と、ファイルデータを読み込むファイルのファイルＩＤ情報とを受信する。リクエスト処理部３１は、ファイル読み込み命令の転送と併せて、読み込むファイルのファイルＩＤ情報をファイルデータ管理部３２に送信する。
【００８０】
ファイル読み込み命令を受信したファイルデータ管理部３２は、データオブジェクト格納管理部３３に、データオブジェクト読み込み命令およびファイルＩＤ情報を送信する（ステップＳ３００）。
【００８１】
データオブジェクト読み込み命令を受信したデータオブジェクト格納管理部３３は、メインデータオブジェクト管理テーブルに、受信したファイルＩＤ情報と同一となるメインデータオブジェクトＩＤ情報を持つエントリを検索する。そして、データオブジェクト格納管理部３３は、当該ＩＤ情報を持つエントリが複数存在しているかどうか確認する（ステップＳ３０１）。
【００８２】
ステップＳ３０１において、当該ＩＤ情報を持つエントリが複数存在していた場合には、データオブジェクト格納管理部３３は、該当する複数のエントリのうち、保存処理が完了していることを示す状態にメインデータオブジェクト保存完了フラグが設定されているエントリに登録されているデータオブジェクトを、読み出し対象として決定する（ステップＳ３０２）。
【００８３】
ステップＳ３０１において、当該ＩＤ情報を持つエントリが１つしか存在しない場合には、データオブジェクト格納管理部３３は、当該エントリに登録されているデータオブジェクトを読み出し対象として決定する。
【００８４】
データオブジェクト格納管理部３３は、読み出し対象のデータオブジェクトを決定すると、読み出し対象に決定したデータオブジェクトのエントリからデータオブジェクト記憶部３６の格納先アドレス情報を抽出し、データオブジェクト記憶部３６から、該当するデータオブジェクトを読み出す（ステップＳ３０３）。
【００８５】
そして、データオブジェクト格納管理部３３は、読み出し対象に決定したエントリに、サブデータオブジェクト情報が登録されているかどうか確認する（ステップＳ３０４）。
【００８６】
読み出し対象に決定したエントリに、サブデータオブジェクト情報が登録されていた場合には（ステップＳ３０４のＹｅｓ）、データオブジェクト格納管理部３３は、当該サブデータオブジェクト情報に登録されているサブデータオブジェクトＩＤ情報に基づいて、サブデータオブジェクト管理テーブルから該当するＩＤ情報の全てのエントリを探索する。その後、データオブジェクト格納管理部３３は、探索したエントリに登録されているデータオブジェクト記憶部３６の格納先アドレス情報を抽出し、データオブジェクト記憶部３６から、該当するメインデータオブジェクト、およびサブデータオブジェクトを全て読み出す（ステップＳ３０５）。
【００８７】
さらに、データオブジェクト格納管理部３３は、読み出し対象に決定したエントリに登録されているサブデータオブジェクトの挿入位置情報を基に、メインデータオブジェクトとサブデータオブジェクトとを用いて、データオブジェクトを復元する。そして、データオブジェクト格納管理部３３は、復元したデータオブジェクトを読み出し対象データとしてファイルデータ管理部３２に転送する（ステップＳ３０６）。
【００８８】
読み出し対象に決定したエントリに、サブデータオブジェクト情報が登録されていなかった場合には（ステップＳ３０４のＮｏ）、データオブジェクト格納管理部３３は、ステップＳ３０３においてデータオブジェクト記憶部３６から読み出したメインデータオブジェクトを、読み出し対象データとしてファイルデータ管理部３２に転送する（ステップＳ３０７）。
【００８９】
読み出し対象データを受信したファイルデータ管理部３２は、ファイルデータの読み込み完了通知と、読み出したファイルのＩＤ情報とをリクエスト処理部３１に送信する。リクエスト処理部３１は、受信したファイルデータの読み込み完了通知とファイルＩＤ情報とをクライアント装置１０１に送信し、ファイルデータを読み込む処理を完了する。
【００９０】
なお、ステップＳ３０１における、ファイルデータ管理部３２から受信したファイルＩＤ情報と同一となるメインデータオブジェクトＩＤ情報を持つエントリの存在数に関係なく、保存処理が完了していることを示す状態にメインデータオブジェクト保存完了フラグが設定されているエントリが存在しない場合には、データオブジェクト格納管理部３３は、ファイルデータ管理部３２に、読み出すべきデータオブジェクトが存在しないと通知する。
【００９１】
図５は、図１に示すファイルストレージ装置のファイル削除処理を示すフローチャートである。図５を参照して、図１に示すストレージシステムにおいて、ファイルストレージ装置３０がファイルを削除する処理を説明する。
【００９２】
まず、リクエスト処理部３１は、クライアント装置１０１からファイルの削除を要求するファイル削除命令と、削除するファイルのファイルＩＤとを受信する。リクエスト処理部３１は、ファイル削除命令の転送と併せて、削除するファイルのファイルＩＤ情報をファイルデータ管理部３２に送信する。
【００９３】
ファイル削除命令を受信したファイルデータ管理部３２は、データオブジェクト格納管理部３３に、データオブジェクト削除命令およびファイルＩＤ情報を送信する（ステップＳ４００）。
【００９４】
データオブジェクト削除命令を受信したデータオブジェクト格納管理部３３は、メインデータオブジェクト管理テーブルに、受信したファイルＩＤ情報と同一となるメインデータオブジェクトＩＤ情報を持つエントリを検索し、当該ＩＤ情報を持つエントリが複数存在しているかどうか確認する（ステップＳ４０１）。
【００９５】
ステップＳ４０１において、当該ＩＤ情報を持つエントリが複数存在していた場合には、データオブジェクト格納管理部３３は、該当する複数のエントリのうち、保存処理が完了していることを示す状態にメインデータオブジェクト保存完了フラグが設定されているエントリに登録されているデータオブジェクトを、削除対象として決定する（ステップＳ４０２）。
【００９６】
ステップＳ４０１において、当該ＩＤ情報を持つエントリが１つしか存在しない場合には、データオブジェクト格納管理部３３は、当該エントリに登録されているデータオブジェクトを削除対象として決定する。
【００９７】
データオブジェクト格納管理部３３は、削除対象のデータオブジェクトを決定すると、読み出し対象に決定したデータオブジェクトのエントリからデータオブジェクト記憶部３６の格納先アドレス情報を抽出する。そして、データオブジェクト格納管理部３３は、データオブジェクト重複判定部３５に、データオブジェクトの削除命令とともに、抽出した格納先アドレス情報を送信する。データオブジェクト格納管理部３３から削除命令および格納先アドレスを受信したデータオブジェクト重複判定部３５は、受信した格納先アドレス情報を基に、削除処理を実行する。データオブジェクト重複判定部３５は、削除処理が完了すると、データオブジェクト格納管理部３３に、削除処理が完了したことを通知する（ステップＳ４０３）。
【００９８】
さらに、ステップＳ４０３において削除処理の完了通知を受信したデータオブジェクト格納管理部３３は、削除対象に決定したエントリに、サブデータオブジェクト情報が登録されているかどうか確認する（ステップＳ４０４）。削除対象に決定したエントリに、サブデータオブジェクト情報が登録されていなかった場合には（ステップＳ４０４のＮｏ）、ステップＳ４０６に示す処理に進む。
【００９９】
削除対象に決定したエントリに、サブデータオブジェクト情報が登録されていた場合には（ステップＳ４０４のＹｅｓ）、データオブジェクト格納管理部３３は、当該サブデータオブジェクト情報に登録されているサブデータオブジェクトＩＤ情報に基づいて、サブデータオブジェクト管理テーブルから該当するＩＤ情報の全てのエントリを探索する。また、データオブジェクト格納管理部３３は、探索したエントリに登録されているデータオブジェクト記憶部３６の格納先アドレス情報を抽出する。そして、データオブジェクト格納管理部３３は、全ての当該サブデータオブジェクトに対するデータオブジェクトの削除命令を、抽出した格納先アドレス情報とともに、データオブジェクト重複判定部３５に送信する。
【０１００】
データオブジェクト格納管理部３３から削除命令および格納先アドレスを受信したデータオブジェクト重複判定部３５は、受信した格納先アドレス情報を基に、削除処理を実行する。データオブジェクト重複判定部３５は、削除処理が完了すると、データオブジェクト格納管理部３３に、削除処理が完了したことを通知する（ステップＳ４０５）。
【０１０１】
ステップＳ４０５または、ステップＳ４０３のＮｏに示す処理によって、データ重複判定部３５から削除処理の完了通知を受信したデータオブジェクト格納管理部３３は、メインデータオブジェクト管理テーブル、およびサブデータオブジェクト管理テーブルの削除処理対象となった全てのエントリを削除する。そして、データオブジェクト格納管理部３３は、ファイルデータ管理部３２に、削除処理の完了通知を送信する（ステップＳ４０６）。
【０１０２】
ファイルデータの削除処理の完了通知を受信したファイルデータ管理部３２は、ファイルの削除完了通知と、削除したファイルのＩＤ情報とをリクエスト処理部３１に送信する。リクエスト処理部３１は、送信されたファイルの削除完了通知と当該ファイルのファイルＩＤ情報とをクライアント装置１０１に送信し、ファイルを削除する処理を完了する。
【０１０３】
なお、ステップＳ４０１における、ファイルデータ管理部３２から受信したファイルＩＤ情報と同一となるメインデータオブジェクトＩＤ情報を持つエントリの存在数に関係なく、保存処理が完了していることを示す状態にメインデータオブジェクト保存完了フラグが設定されているエントリが存在しない場合には、データオブジェクト格納管理部３３は、ファイルデータ管理部３２に、削除すべきデータオブジェクトが存在しないと通知する。
【０１０４】
なお、図面を参照してこの発明の一実施形態を詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
【０１０５】
また、ファイルストレージ装置３０は、内部にコンピュータシステムを有している。上述したファイルストレージ装置３０の各処理部の動作は、プログラムの形式でコンピュータが読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここで、コンピュータが読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【０１０６】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、上記プログラムは、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【０１０７】
以上に説明したように、本実施形態のファイルストレージ装置３０は、登録しようとするファイルデータに対して、ファイルフォーマットに応じて、ファイルデータを構成するデータオブジェクト単位で、データオブジェクト重複判定部３５によって、ファイルストレージ装置３０のデータオブジェクト記憶部３６に格納されたデータオブジェクトとの重複を判定する。
【０１０８】
ファイルストレージ装置３０は、ファイルデータを生成するユーザ端末またはアプリケーション等によって実行されるデータ変更単位として適合しやすいデータオブジェクト単位で重複判定を行う。そのため、ユーザ端末またはアプリケーション等によって変更が行われたデータオブジェクトだけをファイルストレージ装置３０のデータオブジェクト記憶部３６に格納し、変更が発生していないデータオブジェクトは、重複するデータオブジェクトとしてデータオブジェクト記憶部３６に格納する必要がなくなる。よって、ファイルストレージ装置３０内に格納するデータの物理容量をより少なくし、ファイルデータの格納コストをさらに軽減することができる。
【０１０９】
また、ファイルストレージ装置３０は、ハッシュ関数により生成されたデータオブジェクトを代表するハッシュ値を用いて重複判定を行う。よって、物理データブロック単位で重複判定を行う場合よりも、ファイルストレージ装置３０上で重複判定を実行するときにかかる処理コストを低減することができる。特に、高速なデータ入出力処理（Ｉ／Ｏ処理）の実行が見込まれるストレージ処理においては、Ｉ／Ｏ処理と同時に重複判定を行うので、Ｉ／Ｏ処理性能の劣化を抑えることも期待できる。
【０１１０】
図６は、本発明によるファイルストレージ装置の主要部を示すブロック図である。図６に示すように、ファイルストレージ装置１（例えば、図１に示すファイルストレージ装置３０に相当）は、クライアント装置７（例えば、図１に示すクライアント装置１０１に相当）によって格納手段２（例えば、図２に示すデータオブジェクト記憶部３６に相当）に格納を要求されたファイルの形式に応じて、ファイルから、独立したファイルとして格納手段２に格納可能な部分のデータである独立可能データ（サブデータオブジェクトに相当）を抽出する抽出部３（例えば、図２に示すファイルフォーマット判定抽出部３４に相当）と、抽出部３が抽出した独立可能データまたはファイルから独立可能データが削除されたデータである残データ（メインデータオブジェクトに相当）に合致するデータが格納手段２に格納されているか否かを判定する重複判定部４（例えば、図２に示すデータオブジェクト重複判定部３５に相当）と、重複判定部４の判定結果にもとづいて、格納手段２に格納されているデータに合致しない独立可能データまたは残データを格納手段２に格納する格納処理部５（例えば、図２に示すデータオブジェクト格納管理部３３に相当）と、クライアント装置７の要求に応じて、格納処理部５が格納手段２に格納した独立可能データと残データとを結合してファイルに復元する復元部６（例えば、図２に示すデータオブジェクト格納管理部３３に相当）とを備えるように構成されている。
【０１１１】
また、上記の実施形態では、以下の（１）〜（４）に示すようなファイルストレージ装置も開示されている。
【０１１２】
（１）抽出部３が、クライアント装置７によって格納手段２に格納を要求されたファイルから独立可能データを抽出した場合に、ファイルから独立可能データを削除し、独立可能データと残データとの結合位置を示す結合位置情報を生成し、復元部６が、クライアント装置７の要求に応じて、結合位置情報によって示される結合位置で格納手段２に格納されている独立可能データと残データとを結合してファイルを復元するファイルストレージ装置。そのように構成された場合には、格納手段２に別個に格納した独立可能データと残データとを結合してファイルを復元することができる。
【０１１３】
（２）重複判定部４が、格納手段２に格納する独立可能データおよび残データのハッシュ値をそれぞれ算出するハッシュ値算出部と、ハッシュ値算出部が算出したハッシュ値を登録するハッシュテーブルとを含み、ハッシュ値算出部が算出した独立可能データのハッシュ値または残データのハッシュ値と、ハッシュテーブルに登録されているハッシュ値とが合致する場合に、独立可能データまたは残データに合致するデータが格納手段２に格納されていると判定するファイルストレージ装置。そのように構成された場合には、ハッシュ値にもとづいてデータの重複格納を防ぐことができる。
【０１１４】
（３）ハッシュテーブルには、ハッシュ値算出部がハッシュ値を算出したデータが格納手段に格納されている場所を示す格納先情報と、当該データのハッシュ値とが対応付けられて登録され、重複判定部４は、ハッシュ値算出部が算出した独立可能データのハッシュ値または残データのハッシュ値と、ハッシュテーブルに登録されているハッシュ値とが合致する場合に、ハッシュテーブルに登録されているハッシュ値に対応付けられている格納先情報によって示される場所に格納されているデータを読み出し、読み出したデータと、独立可能データまたは残データとのバイト列が整合している場合に、独立可能データまたは残データに合致するデータが格納手段２に格納されていると判定するファイルストレージ装置。そのように構成された場合には、異なるデータオブジェクトに基づいて同じハッシュ値が算出された場合の重複の誤検出を回避することができる。
【０１１５】
（４）抽出部３は、クライアント装置７によって格納手段２に格納を要求されたファイルの形式に応じて、ファイルから、復元部６によって復元可能なバイナリデータを独立可能データとして抽出するファイルストレージ装置。
【０１１６】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１１７】
この出願は、２０１０年３月２９日に出願された日本特許出願２０１０−７５７６６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１１８】
本発明を、同一のバイト列が部分的に含まれるファイルが多数見込まれる環境において、ユーザが作成したファイルを共有することを目的としたファイルストレージ装置に適用できる。
【符号の説明】
【０１１９】
１    ファイルストレージ装置
２    格納手段
３    抽出部
４    重複判定部
５    格納処理部
６    復元部
７    クライアント装置
１０１，１０ｎ  クライアント装置
２０  ネットワーク
３０  ファイルストレージ装置
３１  リクエスト処理部
３２  ファイルデータ管理部
３３  データオブジェクト格納管理部
３４  ファイルフォーマット判定抽出部
３５  データオブジェクト重複判定部
３６  データオブジェクト記憶部
【図１】
0005464269.tif 000002
【図２】
0005464269.tif 000003
【図３】
0005464269.tif 000004
【図４】
0005464269.tif 000005
【図５】
0005464269.tif 000006
【図６】
0005464269.tif 000007