(57)【特許請求の範囲】
【請求項１】
書き込み対象ファイルをブロックに分割し、前記書き込み対象ファイルの書き込み方法を重複排除するか否かで指定する制御手段と、
記憶媒体を有し、前記書き込み方法に応じて前記ブロックに対するハッシュ値を算出し、前記ハッシュ値に基づいて前記記憶媒体のアドレスを決定して書き込む記憶手段と、を有し、
前記書き込み方法が重複排除しない場合、
前記制御手段は、
前記ブロックに識別情報を付与し、
前記記憶手段は前記識別情報から前記ハッシュ値を算出する
ストレージ装置。
【請求項２】
前記書き込み方法が重複排除する場合、
前記記憶手段は前記ブロックの内容から前記ハッシュ値を算出する、
請求項１記載のストレージ装置。
【請求項３】
前記識別情報は、
前記ブロックの識別番号とオフセットとブロックサイズとを含む、
請求項１または２記載のストレージ装置。
【請求項４】
前記制御手段は、
クライアントの指示に基づいて重複排除するか否かを指定する、
請求項１から３の内の１項記載のストレージ装置。
【請求項５】
前記書き込み方法が重複排除する場合、
前記記憶手段は前記ブロックが予め書き込まれていれば上書きしない、
請求項１から４の内の１項記載のストレージ装置。
【請求項６】
前記書き込み方法が重複排除しない場合、
前記記憶手段は前記ブロックが予め書き込まれていれば上書きする、
請求項１から５の内の１項記載のストレージ装置。
【請求項７】
前記書き込み方法が重複排除しない場合、
前記記憶手段は
前記識別番号を過去に設定され未使用となった識別番号から設定する、
請求項４から６の内の１項記載のストレージ装置。
【請求項８】
書き込み対象ファイルをブロックに分割し、前記書き込み対象ファイルの書き込み方法を重複排除するか否かで指定する制御手段と、
記憶媒体を有し、前記書き込み方法に応じて前記ブロックに対するハッシュ値を算出し、前記ハッシュ値に基づいて前記記憶媒体のアドレスを決定して書き込む記憶手段と、を有し、
前記書き込み方法が重複排除しない場合、
前記記憶手段は前記ブロックが予め書き込まれていれば上書きする、
ストレージ装置。
【請求項９】
書き込み対象ファイルをブロックに分割し、
前記書き込み対象ファイルの書き込み方法を重複排除するか否かで指定し、
前記書き込み方法に応じて前記ブロックに対するハッシュ値を算出し、
前記ハッシュ値に基づいて記憶媒体のアドレスを決定して書き込みを行い、
前記書き込み方法が重複排除しない場合、
前記ブロックに識別情報を付与し、
前記記憶手段は前記識別情報から前記ハッシュ値を算出する、
ストレージ方法。
【請求項１０】
前記書き込み方法が重複排除する場合、
前記ブロックの内容から前記ハッシュ値を算出する、
請求項９記載のストレージ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、重複排除機能を有するストレージ技術に関する。
【背景技術】
【０００２】
複数のファイルに含まれる重複するファイルデータを共有化して保存する重複排除機能を有するＣＡＳ（Ｃｏｎｔｅｎｔｓ  Ａｄｄｒｅｓｓ  Ｓｔｏｒａｇｅ）システムが開発されている。ＣＡＳシステムは、ファイルデータを分散して複数の記憶媒体に保存すると共に、ファイルデータの内容に応じて特定される固有のコンテンツアドレスによって、当該ファイルデータを保存する位置を特定する。ＣＡＳシステムでは、重複しているファイルデータの再書き込みを省略できることから、書き込みの処理性能や記憶媒体の利用効率を向上させることができる。
【０００３】
特許文献１には、複数のノード装置をネットワークで結合してディスクアレイ装置に書き込むストレージシステムが開示されている。特許文献１によれば、あるノード装置がファイルデータを書き込む処理を行い、これとは別のノード装置が重複排除処理を行う。これにより、ノード装置の読み書きする処理性能へ、重複排除処理が及ぼす影響を抑制することができる。
【０００４】
特許文献２には、複数のストレージ装置にデータを分散記憶して重複排除する複数の記憶処理装置と、一群のデータからなるデータフローを何れかの記憶処理装置に割り当ててフローが流れるよう設定するスイッチ部とを有するストレージシステムが開示されている。特許文献２によれば、スイッチ部は、データフローの特性と記憶処理装置の特性とに基づいて、データフローを割り当てる。これにより、ストレージシステムの効率的な負荷分散が図れる。
【０００５】
特許文献３には、ファイルデータを分散して記憶する関連技術が開示されている。分散データ記憶配信システムは、データを記憶するストレージ装置を備えた計算機を複数のネットワークに接続して、大容量のデータ記憶システムを構築している。そして、分散データ記憶配信システムは、データを配置する機能とデータの配置を管理する機能とを有している。なお、特許文献３は、重複排除処理については言及していない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１５／１２５２７１号
【特許文献２】国際公開第２０１２／１１７６５８号
【特許文献３】国際公開第２０１０／１１６６０８号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１や特許文献２に開示された重複排除機能を有するストレージシステム（ＣＡＳシステム）は、以下の課題を有している。
【０００８】
特許文献１や特許文献２に開示されたストレージシステムでは、ファイルの部分的な上書きや削除を繰り返した場合、参照されなくなったデータを格納している領域がすぐに利用可能とならない課題があり、また、ファイルデータの並びと記憶媒体でのデータの並びが一致しない状況が容易に発生する。そのため、記憶媒体の利用効率の低下や、ファイルデータの書き込み読み出しの処理性能が低下してしまう。これに対処するために、上書きや削除に適している重複排除を行わない通常の書き込み読み出しを行おうとすると、記憶媒体の利用効率が低下してしまう。
【０００９】
また、特許文献１や特許文献２の重複排除機能を有するストレージシステムでは、複数の装置を接続し連携させることによって重複排除機能を実現しており、単体の装置で処理能力を低下させずにこれを実現する技術は開示されていない。特許文献１では、ひとつの物理ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を、ファイルデータを書き込む処理と重複排除する処理とを行う２つの論理ＣＰＵに分ける技術も開示している。しかしながら、この場合、２つの論理ＣＰＵが互いの処理負荷の影響を受けないようにするために、各々の処理量に上限を設けて、本来の処理能力を低下させている。
【００１０】
本発明は、上記の課題に鑑みてなされたものであり、その目的は、記憶媒体の利用効率と書込読出の処理性能のファイル毎の優先度に応じて、重複排除を行うもしくは行わない書き込みを単体の装置で使い分けるストレージ装置を提供することにある。
【課題を解決するための手段】
【００１１】
本発明のストレージ装置は、書き込み対象ファイルをブロックに分割し、前記書き込み対象ファイルの書き込み方法を重複排除するか否かで指定する制御手段と、記憶媒体を有し、前記書き込み方法に応じて前記ブロックに対するハッシュ値を算出し、前記ハッシュ値に基づいて前記記憶媒体のアドレスを決定して書き込む記憶手段と、を有する。
【００１２】
本発明のストレージ方法は、書き込み対象ファイルをブロックに分割し、前記書き込み対象ファイルの書き込み方法を重複排除するか否かで指定し、前記書き込み方法に応じて前記ブロックに対するハッシュ値を算出し、前記ハッシュ値に基づいて記憶媒体のアドレスを決定して書き込みをする。
【発明の効果】
【００１３】
本発明によれば、記憶媒体の利用効率と書込読出の処理性能のファイル毎の優先度に応じて、重複排除を行うもしくは行わない書き込みを単体の装置で使い分けるストレージ装置を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態のストレージ装置の構成を示すブロック図である。
【図２】本発明の第２の実施形態のストレージ装置の構成を示すブロック図である。
【図３】本発明の第２の実施形態のストレージ装置のモード管理テーブルの例を示す図である。
【図４】本発明の第２の実施形態のストレージ装置のファイル管理テーブルの例を示す図である。
【図５】本発明の第２の実施形態のストレージ装置の未使用ファイルテーブルの例を示す図である。
【図６】本発明の第２の実施形態のストレージ装置のファイル読み出し動作を示すフローチャートである。
【図７】本発明の第２の実施形態のストレージ装置のファイル書き込み動作を示すフローチャートである。
【図８】本発明の第２の実施形態のストレージ装置のファイル書き込み動作を示すフローチャートである。
【図９】本発明の第２の実施形態のストレージ装置のファイル削除動作を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、図を参照しながら、本発明の実施形態を詳細に説明する。但し、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
（第１の実施形態）
図１は、本発明の第１の実施形態のストレージ装置の構成を示すブロック図である。本実施形態のストレージ装置１は、書き込み対象ファイルをブロックに分割し、前記書き込み対象ファイルの書き込み方法を重複排除するか否かで指定する制御手段１１を有する。さらに、記憶媒体を有し、前記書き込み方法に応じて前記ブロックに対するハッシュ値を算出し、前記ハッシュ値に基づいて前記記憶媒体のアドレスを決定して書き込む記憶手段１２を有する。
【００１６】
ストレージ装置１によれば、ファイルデータに応じて、重複排除を行う書き込みと、重複排除を行わない通常の書き込みの双方に、単体の装置で対応することができる。
【００１７】
以上のように、本実施形態によれば、記憶媒体の利用効率と書込読出の処理性能のファイル毎の優先度に応じて、重複排除を行うもしくは行わない書き込みを単体の装置で使い分けるストレージ装置を提供することができる。
（第２の実施形態）
図２は、本発明の第２の実施形態のストレージ装置の構成を示すブロック図である。本実施形態のストレージ装置２は、データ通信用ネットワークインターフェイス２１と、管理通信用ネットワークインターフェイス２２と、制御手段であるファイルシステムアクセス部２３とを有する。さらに、モード管理テーブル２４と、ファイル管理テーブル２５と、未使用ファイルテーブル２６とを有する。さらに、記憶手段であるコンテンツアドレスストレージ部２７（ＣＡＳ部２７）とディスク装置２８とを有する。
【００１８】
ストレージ装置２は、データ通信用ネットワークと管理通信用ネットワークを通して、利用者の端末であるクライアントに接続している。クライアントは、データ通信用ネットワークを通して、ストレージ装置２のファイルの読み書き等の操作を行う。また、クライアントは、管理通信用ネットワークを通して、ストレージ装置２の設定や管理を行う。クライアントは、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やサーバなどの情報端末とすることができる。
【００１９】
なお、データ通信用ネットワークに接続するクライアントと、管理通信用ネットワークに接続するクライアントとは、同じクライアントであっても別のクライアントであってもよい。また、クライアントは１つであっても複数であってもよい。また、データ通信用ネットワークと管理通信用ネットワークは、別々のネットワークであっても同じネットワークであってもよい。
【００２０】
データ通信用ネットワークインターフェイス２１は、データ通信用ネットワークを介してクライアントに接続する。管理通信用ネットワークインターフェイス２２は、管理通信用ネットワークを介してクライアントに接続する。これらの通信は、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）等により行うことができる。
【００２１】
モード管理テーブル２４は、ファイルの書き込みを、重複排除を行うＤＥ（Ｄｕｐｌｉｃａｔｉｏｎ  Ｅｌｉｍｉｎａｔｉｏｎ）モードと、重複排除を行わないＧＰ（Ｇｅｎｅｒａｌ  Ｐｕｒｐｏｓｅ）モードのどちらで行うかを示す。モード管理テーブル２４は、管理通信用ネットワークを通じてクライアントにより設定される。
【００２２】
ファイルシステムアクセス部２３は、データ通信用ネットワークを通じてクライアントからアクセスされる。クライアントからのアクセスには、ＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）等のプロトコルを用いることができる。
【００２３】
ファイルシステムアクセス部２３は、クライアントからのＩ／Ｏ（Ｉｎ／Ｏｕｔ）要求を下位のＣＡＳ部２７へのＩ／Ｏ要求へと変換して、要求の処理を実行する。ファイルシステムアクセス部２３は、クライアントからの要求を受けて、ＣＡＳ部２７へ書き込むファイルの、ブロックへの分割や、書き込みや、読み出しや、削除などの各種の処理を行う。ファイルシステムアクセス部２３は、ファイルシステムアクセス部２３に設定された基準に基づいて、ブロックを分割することができる。ブロックの分割に際しては、ブロックのサイズを固定もしくは可変とすることができる。例えば、１０２４ＫＢのファイルを、８個の９６ＫＢのサイズのブロックと４個の６４ＫＢのブロックに分割する等である。
【００２４】
ファイルシステムアクセス部２３は、ファイル管理テーブル２５および未使用ファイルテーブル２６を作成して、ファイルを管理する。また、ファイルシステムアクセス部２３は、ＣＡＳ部２７へ書き込むファイルを、モード管理テーブル２４に基づいて、ＤＥモードとＧＰモードのいずれかに指定する。
【００２５】
ＣＡＳ部２７は、ディスク装置２８に接続し、ディスク装置２８を管理する。すなわち、ＣＡＳ部２７は、ファイルの各ブロックを、ファイルシステムアクセス部２３が指定したＤＥモードとＧＰモードのいずれかでディスク装置２８へ書き込み、また、読み出す。ディスク装置２８は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などの記憶媒体とすることができる。なお、図２では２台のディスク装置２８を記載しているが、ディスク装置２８の台数は任意とすることができる。
【００２６】
ファイルシステムアクセス部２３とＣＡＳ部２７とは、ＣＰＵを用い、ＣＰＵでプログラムを動作させることによって実現することができる。
【００２７】
図３は、モード管理テーブル２４の例を示す図である。モード管理テーブル２４は、管理通信用ネットワークを通じてクライアントにより設定される。対象パスの列は、ＤＥモードもしくはＧＰモードを設定する対象となる、ファイルシステム、ディレクトリ、ファイル等のパスを格納する。モードの列は、重複排除を優先する場合はＤＥモードであることを表す符号（ＤＥ）を、汎用的なＩ／Ｏ特性を優先する場合はＧＰモードであることを表す符号（ＧＰ）を格納する。
【００２８】
図４は、ファイル管理テーブル２５の例を示す図である。ファイルパスの列は、管理対象となる各ファイルの全パスを格納する。ファイル識別番号の列は、各ファイルに割り付けられた他のファイルとは重複しない一意な識別番号を格納する。ファイル管理テーブル２５はまた、ファイルを構成する各ブロックの情報を格納する。オフセットの列はブロックの先頭位置を格納し、ブロックサイズの列はそのブロックのサイズを格納する。図４では、ブロックのサイズが可変の場合を示すが、ブロックのサイズは固定でもよい。さらに、コンテンツアドレスの列は、ＣＡＳ部２７が各ブロックをディスク装置２８に格納した際に、ディスク装置２８から得たコンテンツアドレスを格納する。
【００２９】
ファイルパスは、クライアントによりファイルに設定される。クライアントは、クライアントが当該のファイルはＤＥモード、即ち記憶媒体の利用効率が優先と判断する場合は、ＤＥに対応するよう、予め設定したモード管理テーブル２４に準じてファイルパスを設定することができる。また、クライアントは、ＧＰモード、即ち書き込み読み出しの処理性能が優先と判断する場合は、ＧＰに対応するよう、モード管理テーブル２４に準じてファイルパスを設定することができる。
【００３０】
ファイル識別番号とオフセットとブロックサイズとは、ファイルシステムアクセス部２３により設定される。また、ファイルシステムアクセス部２３は、ＣＡＳ部２７から各ブロックのコンテンツアドレスを受け取る。ファイルシステムアクセス部２３は、ブロックごとに、ファイルパスとファイル識別番号とオフセットとブロックサイズとコンテンツアドレスとを、ファイル管理テーブル２５に登録する。
【００３１】
図５は、未使用ファイルテーブル２６の例を示す図である。未使用ファイルテーブル２６は、削除されたファイルのファイル識別番号と削除時のファイルサイズを格納する。ファイルシステムアクセス部２３は、削除されたファイルのファイル識別番号とファイルサイズとを、未使用ファイルテーブル２６に登録する。
【００３２】
次に、ストレージ装置２の動作を、ファイルの読み出し、ファイルの書き込み、ファイルの削除の３つの動作に分けて説明する。
【００３３】
図６は、ストレージ装置２のファイル読み出し動作を示すフローチャートである。ファイルを構成するブロック毎に、図６のフローチャートの処理を行うことでファイルの読み出しを行うことができる。図６のフローチャートでストレージ装置２は、ファイルシステムアクセス部２３がクライアントから読み出すファイルのファイルパスの指定を受けて、開始となる。
【００３４】
ファイルシステムアクセス部２３は、ファイル管理テーブル２５を参照して、読み出し対象となるファイルパスのファイルのブロックのコンテンツアドレスを取得する（ステップＡ１０）。
【００３５】
ファイルシステムアクセス部２３は、ＣＡＳ部２７に、読み出し対象となるファイルのブロックのコンテンツアドレスから、ブロックを読み出す指示をする。ＣＡＳ部２７は、ディスク装置２８から当該のコンテンツアドレスのブロックを読み出して、ファイルシステムアクセス部２３に送り（ステップＡ１１）、終了する。その後、ファイルシステムアクセス部２３は、読み出されたブロックをファイルに復元し、データ通信用ネットワークインターフェイス２１を通して、当該のファイルをクライアントに送ることができる。
【００３６】
図７は、ストレージ装置２のファイル書き込み動作における、ファイルシステムアクセス部２３の動作を示すフローチャートである。図７のフローチャートで、ストレージ装置２は、ファイルシステムアクセス部２３がクライアントから書き込むファイルの指定を受けて、開始となる。ファイルには、ファイルパスが設定されている。
【００３７】
ファイルシステムアクセス部２３は、当該ファイルのファイルパスと、モード管理テーブル２４の対象パスとモードとを参照し、書き込み対象のファイルが、ＤＥモードなのかＧＰモードなのかを確認する（ステップＢ１０）。ＤＥモードの場合（ステップＢ１１のＹＥＳ）、ファイルシステムアクセス部２３は、書き込み対象のファイルのブロックをＣＡＳ部２７へ書き込み（ステップＢ１２）、ステップＢ１８に移行する。ＣＡＳ部２７の書き込み動作は後述する。
【００３８】
ステップＢ１２に際して、ファイルシステムアクセス部２３は、当該ファイルが新規ファイルであれば一意なファイル識別番号を設定する。さらに、ファイルシステムアクセス部２３が設定している基準に基づいて、当該ファイルをブロックに分割する。ファイルシステムアクセス部２３は、ファイル識別番号とブロックの開始オフセットとブロックサイズとの３つの組の情報を有するブロック識別情報をファイルパスと共にファイル管理テーブルに登録する。そして、ファイルシステムアクセス部２３は、当該ブロック識別情報を付与せずに、各ブロックをＣＡＳ部２７へ書き込む。
【００３９】
ＧＰモードの場合（ステップＢ１１のＮＯ）、ファイルシステムアクセス部２３は、当該ファイルが既存ファイルか新規ファイルかを確認する。すなわち、当該ファイルにファイル識別番号が設定されていれば既存ファイル、設定されていなければ新規ファイルと判断する（ステップＢ１３）。
【００４０】
既存ファイルの場合（ステップＢ１３のＹＥＳ）、ステップＢ１７に移行する。新規ファイルの場合（ステップＢ１３のＮＯ）、以下のようにしてファイル識別番号を設定する。
【００４１】
まず、ファイルシステムアクセス部２３は、未使用ファイルテーブル２６が空か否かを確認する（ステップＢ１４）。未使用ファイルテーブル２６が空の場合（ステップＢ１３のＹＥＳ）、ファイルシステムアクセス部２３は新たに一意なファイル識別番号を設定する（ステップＢ１５）。
【００４２】
未使用ファイルテーブル２６が空でない場合（ステップＢ１３のＮＯ）、ファイルシステムアクセス部２３は、未使用ファイルテーブル２６から未使用のファイル識別番号を１つ選択し設定する（ステップＢ１６）。未使用のファイル識別番号の選択は、例えば、未使用ファイルテーブル２６での上位から順に選択してもよい。その後、ファイルシステムアクセス部２３は、選択したファイル識別番号を、未使用ファイルテーブル２６から削除する。
【００４３】
これにより、未使用のファイル識別番号を設定した新たなファイルが、前回と同じブロックサイズとオフセットとを有する場合は、前回と同じコンテンツアドレスに保存されることになる。すなわち、ディスク装置２８で未使用となったコンテンツアドレスを、未使用のまま放置することなく、新たなファイルデータの保存に使用できるようになり、記憶媒体の利用効率を改善した書き込みが可能である。
【００４４】
なお、ステップＢ１２では、前記のステップＢ１４−ステップＢ１６のようには処理しない。これは、ＤＥモードの場合、同一内容のブロックに対して同じコンテンツアドレスを付与することで、複数ファイル間で重複しているブロックを１度だけ保存するようにすることで、記憶媒体の容量を節約するためである。
【００４５】
ファイルシステムアクセス部２３は、ブロックを、ファイル識別番号とオフセットとブロックサイズの３つの組を有するブロック識別情報を付与して、ＣＡＳ部２７へ書き込み（ステップＢ１７）、ステップＢ１８に移行する。ＣＡＳ部２７の書き込み動作は後述する。
【００４６】
ステップＢ１７に際して、ファイルシステムアクセス部２３は、ファイルシステムアクセス部２３が設定している基準に基づいて、当該ファイルをブロックに分割する。このとき、当該ファイルをブロックに分割せずに、当該ファイル全体を１つのブロックとする場合もある。図４のファイル管理テーブル２５は、ＧＰモードのファイルであるファイル識別番号１３５９と１３６０が、ファイル全体を１つのブロックとする例を示している。
【００４７】
ファイルシステムアクセス部２３は、ファイル識別番号とオフセットとブロックサイズの３つの組の情報を有するブロック識別情報をファイルパスと共にファイル管理テーブルに登録する。そして、ファイルシステムアクセス部２３は、当該ブロック識別情報を付与して、各ブロックをＣＡＳ部２７へ書き込む。
【００４８】
ステップＢ１８で、ファイルシステムアクセス部２３は、ＣＡＳ部２７から各ブロックのコンテンツアドレスを受け取り、受け取ったコンテンツアドレスでファイル管理テーブル２５を更新し、終了する。
【００４９】
図８は、ストレージ装置２のファイル書き込み動作におけるＣＡＳ部２７の動作を示すフローチャートである。図８のフローチャートでストレージ装置２は、ＣＡＳ部２７がファイルシステムアクセス部２３からのブロックの書き込みを受けて、開始となる。
【００５０】
ＣＡＳ部２７は、書き込まれるブロックに識別情報（ファイル識別番号、オフセット、ブロックサイズ）が付与されているか否かを確認する（ステップＣ１０）。識別情報が付与されている場合（ステップＣ１０のＹＥＳ）、ＣＡＳ部２７はブロック識別情報に対するハッシュ値を計算する（ステップＣ１１）。ＣＡＳ部２７は、計算したハッシュ値に基づいて、ディスク装置２８上の格納先を決定し、書き込みを行い、格納先のコンテンツアドレスをファイルシステムアクセス部２３に通知して（ステップＣ１２）、終了する。この場合、ブロックがすでに書き込まれている場合は、上書きして書き込みを行う。
【００５１】
ステップＣ１０がＹＥＳの場合、ブロックはＧＰモードで格納されることになる。ハッシュ値を計算する識別情報は、ブロックの内容そのものではないので、ブロックがすでに書き込まれている場合は上書きすることで、最新の内容を格納することができることになる。また、識別情報からのハッシュ値の計算は、ブロックの内容からのハッシュ値の計算に比べて容易であるため、書き込み処理を速くできる。
【００５２】
なお、ハッシュ値に基づいてブロックの格納先のアドレスを決定する方法は次のようにすることができる。すなわち、ＣＡＳ部２７がハッシュ値とブロックを書き込んだアドレスの対応表を保持している。与えられたブロックのハッシュ値がすでにその対応表にあれば該当するアドレスを用いることができる。対応表になければ、ブロックをディスク装置２８に格納後、格納したアドレスで対応表を更新する。
【００５３】
識別情報が指定されていない場合（ステップＣ１０のＮＯ）、ＣＡＳ部２７は、ブロックの内容に対するハッシュ値を計算する（ステップＣ１３）。ＣＡＳ部２７は、該当のブロックが格納済みか否かを判定する（ステップＣ１４）。格納済みの場合（ステップＣ１４のＹＥＳ）、上書きをせずに終了する。
【００５４】
未格納の場合（ステップＣ１４のＮＯ）、計算したハッシュ値に基づいて、ディスク装置２８上の格納先を決定し、書き込みを行い、格納先のコンテンツアドレスをファイルシステムアクセス部２３に通知して（ステップＣ１５）、終了する。ステップＣ１０がＮＯの場合、ブロックはＤＥモードで格納されることになる。よって、記憶媒体の利用効率の向上や、上書きをしないため書き込みの処理を速くすることなどが可能となる。
【００５５】
図９は、ストレージ装置２のファイル削除動作を示すフローチャートである。図９のフローチャートでストレージ装置２は、ファイルシステムアクセス部２３がクライアントから削除するファイルのファイルパスの指定を受けて、開始となる。
【００５６】
ファイルシステムアクセス部２３は、ファイルパスとモード管理テーブル２４を参照し、削除対象のファイルのモードを確認する（ステップＤ１０）。ＧＰモードの場合（ステップＤ１１のＹＥＳ）、ファイルシステムアクセス部２３は、ファイル管理テーブル２５から削除対象のファイルの識別番号とブロックサイズを取得し、取得した識別番号とブロックサイズで未使用ファイルテーブル２６を更新する（ステップＤ１２）。次に、当該ファイルを削除し、ファイル管理テーブル２５から当該ファイルの情報を削除することでファイル管理テーブル２５を更新し（ステップＤ１３）、終了する。
【００５７】
ＤＥモードの場合（ステップＤ１１のＮＯ）、ファイルシステムアクセス部２３は、当該ファイルを削除し、ファイル管理テーブル２５から当該ファイルの情報を削除することでファイル管理テーブル２５を更新し（ステップＤ１３）、終了する。
【００５８】
なお、モード管理テーブル２４とファイル管理テーブル２５と未使用ファイルテーブル２６は、ファイルシステムアクセス部２３がメモリ等の記憶媒体を有することで、ファイルシステムアクセス部２３に格納されることができるが、これには限定されない。モード管理テーブル２４とファイル管理テーブル２５と未使用ファイルテーブル２６は、ＣＡＳ部に格納されてもよい。
【００５９】
なお、モード管理テーブル２４とファイル管理テーブル２５と未使用ファイルテーブル２６は、各々図３と図４と図５に示すテーブル形式を有するが、これには限定されない。モード管理テーブル２４とファイル管理テーブル２５と未使用ファイルテーブル２６は、Ｂ−ｔｒｅｅ等のデータ構造などの形態とすることもできる。また、モード管理テーブル２４とファイル管理テーブル２５と未使用ファイルテーブル２６は、図３と図４と図５に示すテーブルと同等の情報を保持し管理できるデータ構造であれば、どのような形態であってもよい。
【００６０】
以上のように、本実施形態のストレージ装置２は、クライアントが指定するファイルデータの格納方法に応じて、ブロックに対するハッシュ値を算出し、算出したハッシュ値に基づいて記憶媒体のアドレスを決定して書き込む。これにより、ハッシュ値により、重複排除を行うアドレスと行わないアドレスとを分けることができる。よって、ストレージ装置２は、重複排除を行う書き込みと、重複排除を行わない通常の書き込みとの双方に、単体の装置で対応することができる。
【００６１】
さらに、ストレージ装置２は、重複排除を行わない場合は、ファイルの削除で未使用となった記憶媒体上のコンテンツアドレスを新たなファイルに割り当てる。これにより、ファイルの内容に基づいて記憶媒体の格納先を選択した場合に問題となる記憶媒体の利用効率の低下を抑制でき、記憶媒体の利用効率を改善した書き込みが可能となる。
【００６２】
以上のように、本実施形態によれば、記憶媒体の利用効率と書込読出の処理性能のファイル毎の優先度に応じて、重複排除を行うもしくは行わない書き込みを単体の装置で使い分けるストレージ装置を提供することができる。
【００６３】
本発明は上記実施形態に限定されることなく、特許請求の範囲に記載した発明の範囲内で種々の変形が可能であり、それらも本発明の範囲内に含まれるものである。
【００６４】
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
（付記１）
書き込み対象ファイルをブロックに分割し、前記書き込み対象ファイルの書き込み方法を重複排除するか否かで指定する制御手段と、
記憶媒体を有し、前記書き込み方法に応じて前記ブロックに対するハッシュ値を算出し、前記ハッシュ値に基づいて前記記憶媒体のアドレスを決定して書き込む記憶手段と、を有するストレージ装置。
（付記２）
前記書き込み方法が重複排除する場合、前記記憶手段は前記ブロックの内容から前記ハッシュ値を算出する、付記１記載のストレージ装置。
（付記３）
前記書き込み方法が重複排除しない場合、前記制御手段は前記ブロックに識別情報を付与し、前記記憶手段は前記識別情報から前記ハッシュ値を算出する、付記１または２記載のストレージ装置。
（付記４）
前記識別情報は、前記ブロックの識別番号とオフセットとブロックサイズとを含む、付記３記載のストレージ装置。
（付記５）
前記制御手段は、クライアントの指示に基づいて重複排除するか否かを指定する、付記１から４の内の１項記載のストレージ装置。
（付記６）
前記書き込み方法が重複排除する場合、前記記憶手段は前記ブロックが予め書き込まれていれば上書きしない、付記１から５の内の１項記載のストレージ装置。
（付記７）
前記書き込み方法が重複排除しない場合、前記記憶手段は前記ブロックが予め書き込まれていれば上書きする、付記１から６の内の１項記載のストレージ装置。
（付記８）
前記書き込み方法が重複排除しない場合、前記記憶手段は前記識別番号を過去に設定され未使用となった識別番号から設定する、付記４から７の内の１項記載のストレージ装置。
（付記９）
書き込み対象ファイルをブロックに分割し、
前記書き込み対象ファイルの書き込み方法を重複排除するか否かで指定し、
前記書き込み方法に応じて前記ブロックに対するハッシュ値を算出し、
前記ハッシュ値に基づいて記憶媒体のアドレスを決定して書き込みをする、ストレージ方法。
（付記１０）
前記書き込み方法が重複排除する場合、前記ブロックの内容から前記ハッシュ値を算出する、付記９記載のストレージ方法。
（付記１１）
前記書き込み方法が重複排除しない場合、前記ブロックに識別情報を付与し、前記識別情報から前記ハッシュ値を算出する、付記９または１０記載のストレージ方法。
（付記１２）
前記識別情報は、前記ブロックの識別番号とオフセットとブロックサイズとを含む、付記１１記載のストレージ方法。
（付記１３）
クライアントの指示に基づいて重複排除するか否かを指定する、付記９から１２の内の１項記載のストレージ方法。
（付記１４）
前記書き込み方法が重複排除する場合、前記ブロックが予め書き込まれていれば上書きしない、付記９から１３の内の１項記載のストレージ方法。
（付記１５）
前記書き込み方法が重複排除しない場合、前記ブロックが予め書き込まれていれば上書きする、付記９から１４の内の１項記載のストレージ方法。
（付記１６）
前記書き込み方法が重複排除しない場合、前記識別番号を過去に設定され未使用となった識別番号から設定する、付記１２から１５の内の１項記載のストレージ方法。
【符号の説明】
【００６５】
１、２    ストレージ装置
１１    制御手段
１２    記憶手段
２１    データ通信用ネットワークインターフェイス
２２    管理通信用ネットワークインターフェイス
２３    ファイルシステムアクセス部
２４    モード管理テーブル
２５    ファイル管理テーブル
２６    未使用ファイルテーブル
２７    コンテンツアドレスストレージ部
２８    ディスク装置
【図１】
0006406283.tif 000002
【図２】
0006406283.tif 000003
【図３】
0006406283.tif 000004
【図４】
0006406283.tif 000005
【図５】
0006406283.tif 000006
【図６】
0006406283.tif 000007
【図７】
0006406283.tif 000008
【図８】
0006406283.tif 000009
【図９】
0006406283.tif 000010