(57)【要約】【課題】データ管理情報（ＭＢＦ等）の記憶のために使用される，高速にアクセスできる記憶手段（第２記憶部）の記憶容量が少なくても良好に重複除去を行える技術を提供する。【解決手段】ストレージ制御装置１０は、ストレージ３０に記憶されたデータを記憶領域別に管理する複数のＭＢＦ３１を備え、一部のＭＢＦ３１をＲＡＭ１２上にキャッシュし、データの書込時には、ＲＡＭ１２上のＭＢＦ３１のみに基づき重複の有無を判定する。また、ストレージ制御装置１０は、各ＭＢＦの利用状況に基づき、ＭＢＦの利用頻度が高い方のハッシュログの内容が維持される形で、ストレージ３０内に格納済みのデータの重複除去を行う。【選択図】図２
2014199574.tif 000002
【特許請求の範囲】
【請求項１】
ストレージを、複数のデータ領域に分けられた複数のデータ記憶領域を備えた装置として取り扱って、前記ストレージ内の各データのストレージ内アドレスとハッシュ値との対応関係を複数のハッシュログによりデータ記憶領域別に管理すると共に、前記ストレージ内の各データの論理アドレス及びハッシュ値と、各データが格納されているデータ領域内のデータが登録されており且つ当該データ領域内の各データがいずれのデータ記憶領域に格納されているかを特定するために使用できるデータ管理情報の識別情報との対応関係をブロックマップにより管理する制御部と、
前記複数のハッシュログと、各データ領域に関するデータ管理情報とを記憶する第１記憶部と、
前記第１記憶部よりも高速にデータを読み書きできる第２記憶部と、
を備え、
前記制御部は、
読込対象データの前記ストレージからの読み込み時に、前記ブロックマップ内の当該読込対象データの論理アドレスに対応づけられた識別情報にて識別されるデータ管理情報が前記第２記憶部上に記憶されていなかった場合には、前記第１記憶部に記憶されている当該データ管理情報を前記第２記憶部上のいずれかのデータ管理情報の代わりに前記第２記憶部上に読み出し、読み出したデータ管理情報に基づき、前記読込対象データが格納されているデータ記憶領域に関する前記ハッシュログを特定し、特定したハッシュログ上の情報を用いて前記読込対象データを前記ストレージから読み込み、
格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第２記憶部に記憶されていなかった場合には、他のデータ管理情報に前記格納対象データが登録されているか否かを判定することなく、前記格納対象データを前記ストレージ内に格納し、
所定の条件が満たされた場合に、各データ管理情報の利用状況を基にした優先度にしたがい、少なくとも１つのデータ管理情報を選択し、選択した少なくとも１つのデータ管理情報が関連づけられているデータ領域上のデータについての，他のデータ領域上の重複データを前記ストレージから除去する
ストレージ制御装置。
【請求項２】
前記データ管理情報が、
関連付けられているデータ領域内のデータ記憶領域毎に、当該データ記憶領域に格納されたデータが登録されるブルームフィルタを含む多段ブルームフィルタである
ことを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記制御部は、
各データ管理情報の利用状況に基づき、前記第１記憶部に記憶されている複数のデータ管理情報を、利用頻度の多寡に基づき二分する機能を有し、
前記所定の条件が満たされた場合に、利用頻度の多い方の１つ以上のデータ管理情報の中から前記少なくとも１つのデータ管理情報を選択する
ことを特徴とする請求項１又は２に記載のストレージ制御装置。
【請求項４】
前記第２記憶部は、書込用データ管理情報及び書込用ハッシュログを記憶し、
前記制御部は、
前記格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第２記憶部に記憶されていなかった場合、前記格納対象データを前記ストレージ内に格納すると共に、前記格納対象データを書込用データ管理情報に登録し、書込用ハッシュログ及びブロックマップを更新する
ことを特徴とする請求項１から３のいずれか一項に記載のストレージ制御装置。
【請求項５】
重複除去を行ってストレージにデータを格納するストレージ制御方法において、
前記ストレージを、複数のデータ領域に分けられた複数のデータ記憶領域を備えた装置として取り扱って、前記ストレージ内の各データのストレージ内アドレスとハッシュ値との対応関係を第１記憶部上の複数のハッシュログによりデータ記憶領域別に管理すると共に、前記ストレージ内の各データの論理アドレス及びハッシュ値と、各データが格納されているデータ領域内のデータが登録されており且つ当該データ領域内の各データがいずれのデータ記憶領域に格納されているかを特定するために使用できるデータ管理情報の識別情報との対応関係を前記第１記憶部又は前記第１記憶部よりも高速にデータを読み書きできる第２記憶部上のブロックマップにより管理し、
読込対象データの前記ストレージからの読み込み時に、前記ブロックマップ内の当該読込対象データの論理アドレスに対応づけられた識別情報にて識別されるデータ管理情報が前記第２記憶部上に記憶されていなかった場合には、前記第１記憶部に記憶されている当該データ管理情報を前記第２記憶部上のいずれかのデータ管理情報の代わりに前記第２記憶部上に読み出し、
読み出したデータ管理情報に基づき、前記読込対象データが格納されているデータ記憶領域に関する前記ハッシュログを特定し、特定したハッシュログ上の情報を用いて前記読込対象データを前記ストレージから読み込み、
格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第２記憶部に記憶されていなかった場合には、他のデータ管理情報に前記格納対象データが登録されているか否かを判定することなく、前記格納対象データを前記ストレージ内に格納し、
所定の条件が満たされた場合に、各データ管理情報の利用状況を基にした優先度にしたがい、少なくとも１つのデータ管理情報を選択し、選択した少なくとも１つのデータ管理情報が関連づけられているデータ領域上のデータについての，他のデータ領域上の重複データを前記ストレージから除去する
ストレージ制御方法。
【請求項６】
コンピュータを、重複除去を行ってストレージにデータを格納するストレージ制御装置として動作させるストレージ制御プログラムであって、
前記コンピュータに、
前記ストレージを、複数のデータ領域に分けられた複数のデータ記憶領域を備えた装置として取り扱って、前記ストレージ内の各データのストレージ内アドレスとハッシュ値との対応関係を第１記憶部上の複数のハッシュログによりデータ記憶領域別に管理すると共に、前記ストレージ内の各データの論理アドレス及びハッシュ値と、各データが格納されているデータ領域内のデータが登録されており且つ当該データ領域内の各データがいずれのデータ記憶領域に格納されているかを特定するために使用できるデータ管理情報の識別情報との対応関係を前記第１記憶部又は前記第１記憶部よりも高速にデータを読み書きできる第２記憶部上のブロックマップにより管理し、
読込対象データの前記ストレージからの読み込み時に、前記ブロックマップ内の当該読込対象データの論理アドレスに対応づけられた識別情報にて識別されるデータ管理情報が前記第２記憶部上に記憶されていなかった場合には、前記第１記憶部に記憶されている当該データ管理情報を前記第２記憶部上のいずれかのデータ管理情報の代わりに前記第２記憶部上に読み出し、
読み出したデータ管理情報に基づき、前記読込対象データが格納されているデータ記憶領域に関する前記ハッシュログを特定し、特定したハッシュログ上の情報を用いて前記読込対象データを前記ストレージから読み込み、
格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第２記憶部に記憶されていなかった場合には、他のデータ管理情報に前記格納対象データが登録されているか否かを判定することなく、前記格納対象データを前記ストレージ
内に格納し、
所定の条件が満たされた場合に、各データ管理情報の利用状況を基にした優先度にしたがい、少なくとも１つのデータ管理情報を選択し、選択した少なくとも１つのデータ管理情報が関連づけられているデータ領域上のデータについての，他のデータ領域上の重複データを前記ストレージから除去する
処理を行わせるストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置とストレージ制御方法とストレージ制御プログラムとに関する。
【背景技術】
【０００２】
ストレージ（記憶装置）の記憶容量の有効活用を図る技術として、データ重複除去、重複排除等と呼ばれている，重複したデータをストレージ内に記憶しない技術が知られている。そして、データ重複除去を行う装置では、データが重複しているか否かの判定に、通常、ブルームフィルタや多段ブルームフィルタが用いられている。
【０００３】
多段ブルームフィルタは、ブルームフィルタを多段化したデータ構造である（例えば、特許文献１参照）。この多段ブルームフィルタは、データが記憶されている記憶領域（アドレス範囲）の検索機能を有している。従って、多段ブルームフィルタを用いれば、データの重複除去が高速に行えるのであるが、ストレージサイズが大きくなるにつれ、データの管理に使用する多段ブルームフィルタのサイズも大きくなる。そのため、多段ブルームフィルタを用いる場合には、比較的に大容量のメモリを装置に搭載することが行われている。
【０００４】
尚、本書で開示する技術に関連する文献としては、以下の特許文献２、３、非特許文献１も存在している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１８６９５４号公報
【特許文献２】特開２０１２−０９４２２０号公報
【特許文献３】国際公開第２０１０／１００７３３号
【非特許文献】
【０００６】
【非特許文献１】"2Q: a low overhead high performance buffer replacement algorithm" T. Johnson and Dennis Shasha, Very Large Database Systems Conference1994, September, 1994.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
開示の技術の課題は、多段ブルームフィルタの記憶のために使用される，高速にアクセスできる記憶手段（第２記憶部）の記憶容量が少なくても、良好に重複除去を行える技術を提供することにある。
【課題を解決するための手段】
【０００８】
開示の技術の一態様のストレージ制御装置は、
ストレージを、複数のデータ領域に分けられた複数のデータ記憶領域を備えた装置として取り扱って、前記ストレージ内の各データのストレージ内アドレスとハッシュ値との対応関係を複数のハッシュログによりデータ記憶領域別に管理すると共に、前記ストレージ内の各データの論理アドレス及びハッシュ値と、各データが格納されているデータ領域内のデータが登録されており且つ当該データ領域内の各データがいずれのデータ記憶領域に格納されているかを特定するために使用できるデータ管理情報の識別情報との対応関係を
ブロックマップにより管理する制御部と、
前記複数のハッシュログと、各データ領域に関するデータ管理情報とを記憶する第１記憶部と、
前記第１記憶部よりも高速にデータを読み書きできる第２記憶部と、
を備え、
前記制御部は、
読込対象データの前記ストレージからの読み込み時に、前記ブロックマップ内の当該読込対象データの論理アドレスに対応づけられた識別情報にて識別されるデータ管理情報が前記第２記憶部上に記憶されていなかった場合には、前記第１記憶部に記憶されている当該データ管理情報を前記第２記憶部上のいずれかのデータ管理情報の代わりに前記第２記憶部上に読み出し、読み出したデータ管理情報に基づき、前記読込対象データが格納されているデータ記憶領域に関する前記ハッシュログを特定し、特定したハッシュログ上の情報を用いて前記読込対象データを前記ストレージから読み込み、
格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第２記憶部に記憶されていなかった場合には、他のデータ管理情報に前記格納対象データが登録されているか否かを判定することなく、前記格納対象データを前記ストレージ内に格納し、
所定の条件が満たされた場合に、各データ管理情報の利用状況を基にした優先度にしたがい、少なくとも１つのデータ管理情報を選択し、選択した少なくとも１つのデータ管理情報が関連づけられているデータ領域上のデータについての，他のデータ領域上の重複データを前記ストレージから除去する。
【発明の効果】
【０００９】
上記技術によれば、データ管理情報（多段ブルームフィルタ等）の記憶のために使用される，高速にアクセスできる記憶手段（第２記憶部）の記憶容量が少なくても、良好に重複除去を行える。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施形態に係るストレージ制御装置の構成及び使用形態の説明図である。
【図２】図２は、ストレージ制御装置の機能ブロック図である。
【図３】図３は、ＭＢＦの説明図である。
【図４】図４は、ハッシュテーブルの説明図である。
【図５】図５は、ブロックマップの説明図である。
【図６Ａ】図６Ａは、格納処理の流れ図（その１）である。
【図６Ｂ】図６Ｂは、格納処理の流れ図（その２）である。
【図７】図７は、読込処理の流れ図である。
【図８Ａ】図８Ａは、ヒット頻度管理情報の説明図である。
【図８Ｂ】図８Ｂは、ヒット頻度管理情報の説明図である。
【図８Ｃ】図８Ｃは、ヒット頻度管理情報の説明図である。
【図９】図９は、重複除去処理の流れ図である。
【発明を実施するための形態】
【００１１】
以下、開示の技術の一実施形態に係るストレージ制御装置について、図面を参照して詳細に説明する。
【００１２】
図１に、本実施形態に係るストレージ制御装置１０の構成及び使用形態を示す。
【００１３】
この図１に示してあるように、ストレージ制御装置１０は、コンピュータ５０のＨＤＤ（Hard Disk Drive）１３に、ＯＳ（Operating System）、ストレージ制御プログラム１
８等をインストールした装置である。換言すれば、ＣＰＵ（Central Processing Unit）
１１が、ストレージ制御プログラム１８（及びＯＳ）をＲＡＭ（Random Access Memory）１２上にロードして実行しているコンピュータ５０が、ストレージ制御装置１０である。
【００１４】
ストレージ制御プログラム１８がインストールされるコンピュータ５０は、通常のコンピュータである。そのため、各構成要素の詳細説明は省略するが、ストレージ制御装置１０（コンピュータ５０）は、ＩＰＬ（Initial Program Loader）等のファームウェアを記憶したフラッシュＲＯＭ（Read Only Memory；図１では、“ＲＯＭ”）を備える。また、ストレージ制御装置１０は、各構成要素間を接続するチップセット（つまり、１つの集積回路又はバスで接続された複数の集積回路）を備える。
【００１５】
さらに、ストレージ制御装置１０は、ストレージ３０との間で通信を行うための通信インタフェース（“Ｉ／Ｆ”）、及び、少なくとも１台のユーザ端末１００との間で通信を行うための通信インタフェース（“Ｉ／Ｆ”）を備える。
【００１６】
ストレージ制御装置１０に接続されるストレージ３０は、データを格納するための複数の物理ブロック（単位記憶領域）を有し、データをリード／ライトする物理ブロックを、物理ブロックアドレス（ＰＢＡ：Phsycal Block Address）で指定できる装置である。
【００１７】
ストレージ制御装置１０には、ストレージ３０として、ＨＤＤや、ＳＳＤ（Solid State Drive）や、ＨＤＤ及び／又はＳＳＤを複数台組み合わせた装置が接続される。
【００１８】
以下、ストレージ制御装置１０の構成及び動作をさらに具体的に説明する。
【００１９】
尚、以下の説明において、データ（格納対象データ等）とは、ストレージ３０の１つの物理ブロックに記憶できるサイズの情報のことである。また、データのＬＢＡ（Logical Block Address；論理ブロックアドレス）とは、データの格納先／読込先アドレスとして
、ユーザ端末１００（ユーザ端末１００内のストレージ制御装置１０用のドライバ）が使用するアドレスのことである。
【００２０】
格納対象データとは、ストレージ制御装置１０がストレージ３０内に格納しようとしているデータのことである。また、格納対象データの検証用ハッシュ値とは、格納対象データから算出される，格納対象データと同一内容のデータがストレージ３０内に存在しているか否かの最終判定に使用されるハッシュ値のことである。この検証用ハッシュ値としては、通常、ＭＤ５（Message-Digest 5）、ＳＨＡ（Secure Hash Algorithm）−１、ＳＨ
Ａ−２５６等のアルゴリズムにより算出されるセキュアハッシュ値が使用される。
【００２１】
図２に、ストレージ制御装置１０の機能ブロック図を示す。
この図２に示してあるように、ストレージ制御装置１０は、格納処理部４１、読込処理部４２及び重畳除去処理部４３を備える。また、ストレージ制御装置１０は、ヒット頻度管理情報２０、ブロックマップ２１、ＭＢＦキャッシュテーブル２４、ハッシュログキャッシュテーブル２８、書込対象ＭＢＦ３１ｗ、ＭＢＦテーブル２２及びハッシュログテーブル２３をＲＡＭ１２上／ＨＤＤ１３内に保持した状態で動作する。尚、ストレージ制御装置１０の停止時には、ＲＡＭ１２上のヒット頻度管理情報２０、ブロックマップ２１、書込対象ＭＢＦ３１ｗ等が、ＨＤＤ１３内に保存される。そして、ストレージ制御装置１０の再起動時には、ＨＤＤ１３内に保存した情報に基づき、ＲＡＭ１２上に停止前と同じ情報が用意される。
【００２２】
格納処理部４１、読込処理部４２及び重畳除去処理部４３は、ストレージ制御プログラム１８（及びＯＳ）を、ＣＰＵ１１（制御部）が実行することにより実現されるユニット
（機能ブロック）である。処理部４１〜４３の詳細については後述するが、各処理部は、ストレージ３０を、全記憶領域（又は大部分の記憶領域）が同一サイズの複数の記憶領域（以下、データ記憶領域と表記する）に分割されている装置として取り扱う。また、各処理部は、ストレージ３０を、当該複数のデータ記憶領域が複数のグループ（データ領域）に分けられている装置として取り扱う。
【００２３】
ＨＤＤ１３内のＭＢＦテーブル２２は、複数の多段ブルームフィルタ（ＭＢＦ：Multi-layer Blume Filter）３１を、各ＭＢＦ３１の識別情報であるＭＢＦ−ＩＤに対応づけて記憶できるテーブルである。ＭＢＦテーブル２２の具体的な更新手順については後述するが、このＭＢＦテーブル２２は、ストレージ制御装置１０の運用開始時には、ＭＢＦ３１を１個も記憶しておらず、ストレージ制御装置１０の運用開始後に、ＭＢＦ３１が追加されるテーブルとなっている。
【００２４】
ＲＡＭ１２上のＭＢＦキャッシュテーブル２４は、ｍ（ｍは、通常、２以上）個のＭＢＦ３１を、各ＭＢＦ３１のＭＢＦ−ＩＤに対応づけて記憶できるテーブルである。ＭＢＦキャッシュテーブル２４には、ＭＢＦキャッシュテーブル２４から掃き出すＭＢＦ３１を、ＬＲＵ(Least Recently Used)アルゴリズムにより選択できるようにするための情報も
記憶される。
【００２５】
尚、このＭＢＦキャッシュテーブル２４も、ＭＢＦテーブル２２と同様に、ストレージ制御装置１０の運用開始時には、ＭＢＦ３１を１個も記憶していないテーブルである。
【００２６】
ＲＡＭ１２上の書込対象ＭＢＦ３１ｗは、或る格納対象データがストレージ３０内に書き込まれた際に、当該格納対象データの検証用ハッシュ値が登録されるＭＢＦ３１である。
【００２７】
ここで、書込対象ＭＢＦ３１ｗと、ＭＢＦテーブル２２上のＭＢＦ３１と、ＭＢＦキャッシュテーブル２４上のＭＢＦ３１との間の関係を説明しておくことにする。
【００２８】
具体的な処理手順については後述するが、書込対象ＭＢＦ３１ｗに既定数の検証用ハッシュ値が登録されると、内容及びＭＢＦ−ＩＤが書込対象ＭＢＦ３１ｗと同じＭＢＦ３１（以下、新ＭＢＦ３１と表記する）がＭＢＦキャッシュテーブル２４に追加される。さらに、書込対象ＭＢＦ３１ｗを、初期化し、書込対象ＭＢＦ３１ｗのＭＢＦ−ＩＤを新ＩＤに変更する処理が行われる。
【００２９】
また、新ＭＢＦ３１（書込対象ＭＢＦ３１ｗ）のＭＢＦキャッシュテーブル２４の追加時に、ＭＢＦキャッシュテーブル２４に既にｍ個のＭＢＦ３１が記憶されていた場合には、最も過去に利用されたＭＢＦ３１がＭＢＦキャッシュテーブル２４から掃き出される。尚、ＭＢＦキャッシュテーブル２４からのＭＢＦ３１の掃き出しは、ＭＢＦテーブル２２からのＭＢＦ３１の読み込み時にも行われる。
【００３０】
ＭＢＦキャッシュテーブル２４からのＭＢＦ３１の掃き出し時には、掃き出されるＭＢＦ３１がＭＢＦテーブル２２に記憶されているものであるか否が判断される。そして、ＭＢＦキャッシュテーブル２４から掃き出されるＭＢＦ３１がＭＢＦテーブル２２に未だ記憶されていないものであった場合には、当該ＭＢＦ３１がＭＢＦテーブル２２に追加される。
【００３１】
次に、ＭＢＦ３１の構成を、ＭＢＦ３１の利用法と共に説明する。
【００３２】
ＭＢＦ３１は、通常のＢＦ（ブルームフィルタ）と同様に、それを用いることにより、
格納対象データと同一内容のデータがストレージ３０に格納されているか否かを判定できるデータ構造である。ただし、ＭＢＦ３１は、所望のデータが書き込まれているデータ記憶領域の検索も行えるものとなっている。
【００３３】
具体的には、Ｍ（≧２）段のＭＢＦ３１は、通常、ｉ（ｉ＝１〜Ｍ）段目のＢＦとして、Ｘi-1個のＢＦを含む。また、通常、Ｍ段のＭＢＦ３１のｊ（ｊ＝２〜Ｍ）段目のＢＦ
のサイズ（ビット数）は、１段目のＢＦのサイズの１／Ｘj-1とされる。尚、Ｘは、２以
上の整数値である。以下、Ｘのことを、分割数とも表記する。
【００３４】
Ｍ段のＭＢＦ３１の１段目のＢＦは、２段目のＸ個のＢＦと対応づけられる。また、Ｍ段（Ｍ≧３）のＭＢＦ３１のｊ（ｊ＝２〜Ｍ−１）段目の各ＢＦは、ｊ＋１段目の，互いに異なるＸ個のＢＦと対応付けられる。
【００３５】
要するに、段数Ｍが３であり分割数Ｘが４であるＭＢＦ３１は、通常、図３に模式的に示した構成を有している。尚、この図３は、各ＢＦの横方向の長さが各ＢＦのサイズ（ビット数）を示し、ＢＦ間の上下関係がＢＦ間の対応関係を示しているものである。
【００３６】
以上、説明した対応関係はＢＦ間の対応関係であったが、Ｍ（≧２）段のＭＢＦ３１のＭ段目のＸi-1個のＢＦ（以下、最下段ＢＦとも表記する）には、ストレージ３０の，互
いに異なるデータ記憶領域が対応付けられる。
【００３７】
そして、ＭＢＦ３１は、或る最下段ＢＦに対応づけられているデータ記憶領域内に格納対象データを書き込んだ際に、当該最下段ＢＦと、当該最下段ＢＦに直接的／間接的に対応づけられている各ＢＦとに、格納対象データの検証用ハッシュ値を登録して使用するものとなっている。尚、或る最下段ＢＦに直接的に対応づけられているＢＦとは、当該最下段ＢＦに対応づけられている，１段上のＢＦのことである。また、或る最下段ＢＦに間接的に対応づけられているＢＦとは、当該最下段ＢＦに幾つかのＢＦを介して対応づけられている，２段以上の上のＢＦのことである。
【００３８】
従って、使用しているＭＢＦ３１が図３に示したものである場合、例えば、以下の手順で、或るデータ（以下、処理対象データと表記する）と同内容のデータが記憶されているデータ記憶領域を検索することができる。
【００３９】
（１）処理対象データの検証用ハッシュ値を算出。
（２）算出した検証用ハッシュ値（以下、算出ハッシュ値と表記する）がＢＦ１−１に登録されているか否かをチェック。
（３ａ）算出ハッシュ値がＢＦ１−１に登録されていなかった場合には、処理対象データが“図３のＭＢＦ３１の管理対象となっている１６個のデータ記憶領域”（以下、チェック対象領域と表記する）に記憶されていないと判定して処理を終了。
（３ｂ）算出ハッシュ値がＢＦ１−１に登録されていた場合には、ＢＦ１−１に対応づけられている２段目のＢＦ２−１〜２−４の中から、算出ハッシュ値が登録されているＢＦを特定（検索）。
（４ａ）算出ハッシュ値が登録されている２段目のＢＦが特定できなかった場合には、処理対象データがチェック対象領域に記憶されていないと判定して処理を終了。尚、１段目のＢＦ１−１に算出ハッシュ値が登録されているにも拘わらず、２段目の全ＢＦに算出ハッシュ値が登録されていない場合があるのは、ＢＦが、誤判定（擬陽性）があり得るものであるためである。
（４ｂ）算出ハッシュ値が登録されている２段目のＢＦが特定できた場合には、特定されたＢＦに対応付けられている４個の最下段ＢＦ（例えば、ＢＦ３−１〜３−４）の中から、算出ハッシュ値が登録されている最下段ＢＦを特定。
（５ａ）算出ハッシュ値が登録されている最下段ＢＦが特定できなかった場合には、算出ハッシュ値が登録されている２段目のＢＦを未チェックのＢＦの中から特定してから、（４）〔（４ａ）又は（４ｂ）〕に戻る。
（５ｂ）算出ハッシュ値が登録されている最下段ＢＦが特定できた場合には、処理対象データと同内容のデータが記憶されているデータ記憶領域を検索結果として処理を終了。
【００４０】
尚、上記したように、ＢＦは、誤判定（擬陽性）があり得るものである。従って、上記手順により検索されたデータ記憶領域内に、処理対象データと同内容のデータが記憶されていない場合もある。
【００４１】
図２に戻って、説明を続ける。
【００４２】
ＨＤＤ１３内のハッシュログテーブル２３は、基本的には、ストレージ３０内に実際に格納されているデータ毎に、そのデータが格納されている物理ブロックのＰＢＡと、そのデータの検証用ハッシュ値との組み合わせを記憶しておくためのテーブルである。ただし、ハッシュログテーブル２３には、データ記憶領域別に、データが格納されている物理ブロックのＰＢＡとデータの検証用ハッシュ値との組み合わせが記憶される。
【００４３】
具体的には、図４に模式的に示してあるように、ハッシュログテーブル２３は、ハッシュ値フィールドとＰＢＡフィールドとを備えたハッシュログ２５を、最下段ＢＦ指定情報別に記憶できる構成を有している。
【００４４】
最下段ＢＦ指定情報は、例えば、或るＭＢＦ３１のＭＢＦ−ＩＤと、当該ＭＢＦ３１の或る最下段ＢＦの，当該ＭＢＦ３１内における識別情報（以下、ＢＦ−ＩＤと表記する）との組み合わせである。この最下段ＢＦ指定情報は、いずれかのＭＢＦ３１の要素としてストレージ制御装置１０内に記憶されている１個の最下段ＢＦを特定でき、且つ、当該最下段ＢＦを含むＭＢＦのＭＢＦ−ＩＤが分かる情報でありさえすれば良い。
【００４５】
既に説明したように、ＭＢＦ３１の各最下段ＢＦは、ストレージ３０の，特定の（独自の）データ記憶領域と対応づけられる。従って、ハッシュログテーブル２３内の各ハッシュログ２５は、自身が対応づけられている最下段ＢＦ指定情報を介して、ストレージ３０の，特定のデータ記憶領域に対応づけられていることになる。
【００４６】
そして、ハッシュログテーブル２３内の或るデータ記憶領域に対応づけられているハッシュログ２５は、当該データ記憶領域内に書き込まれたデータに関するレコードが記憶されるテーブルとなっている。ここで、或るデータ領域内に書き込まれたデータに関するレコードとは、当該データの検証用ハッシュ値と当該データが書き込まれている論理ブロックのＰＢＡが設定されたレコードのことである。
【００４７】
以上、説明したように、ハッシュログテーブル２３には、各ＭＢＦ３１の最下段ＢＦの数をＬと表記すると  ＭＢＦ３１毎に、“Ｌ組のハッシュログ及び最下段ＢＦ指定情報”（以下、ＭＢＦ別ハッシュログ情報と表記する）が記憶される。ただし、ストレージ制御装置１０の運用開始時におけるハッシュログテーブル２３は、ＭＢＦテーブルと同様に、ＭＢＦ別ハッシュログ情報を１個も保持していない。そして、ハッシュログテーブル２３は、ＭＢＦテーブルの更新手順と同様の手順で更新されるテーブルとなっている。
【００４８】
すなわち、ストレージ制御装置１０のＲＡＭ１２（図２）上には、ｍ＋１個のＭＢＦ別ハッシュログ情報を記憶できるハッシュログキャッシュテーブル２８が用意されている。ストレージ制御装置１０の運用開始時、このハッシュログキャッシュテーブル２８は、書込対象ＭＢＦ３１ｗに関する“各ハッシュログ２５にレコードが１つも記憶されていない
ＭＢＦ別ハッシュログ情報”（以下、ＭＢＦ別ハッシュログ情報の初期値と表記する）のみを記憶した状態にある。
【００４９】
また、新ＭＢＦ３１（内容及びＭＢＦ−ＩＤが書込対象ＭＢＦ３１ｗと同じＭＢＦ３１）の追加により、ＭＢＦキャッシュテーブル２４から或るＭＢＦ３１が掃き出される際には、当該ＭＢＦ３１に関するＭＢＦ別ハッシュログ情報がハッシュログキャッシュテーブル２８から掃き出される。ＭＢＦテーブルからのＭＢＦ３１の読込により、ＭＢＦキャッシュテーブル２４から或るＭＢＦ３１が掃き出される際にも、当該ＭＢＦ３１に関するＭＢＦ別ハッシュログ情報がハッシュログキャッシュテーブル２８から掃き出される。
【００５０】
そして、ハッシュログキャッシュテーブル２８から掃き出されるＭＢＦ別ハッシュログ情報がハッシュログテーブル２２に未だ記憶されていないものであった場合には、当該ＭＢＦ別ハッシュログ情報がハッシュログテーブル２２に追加される。
【００５１】
また、新ＭＢＦ３１のＭＢＦテーブルへの追加時には、ハッシュログキャッシュテーブル２８の、それまでＭＢＦ別ハッシュログ情報が記憶されていなかった部分又は掃き出ししたＭＢＦ別ハッシュログ情報が記憶されていた部分に、新ＭＢＦ３１に関するＭＢＦ別ハッシュログ情報の初期値が追加される。
【００５２】
図５に、ＲＡＭ１２上のブロックマップ２１の構成を示す。
この図５に示してあるように、ブロックマップ２１は、ＬＢＡフィールド、ＭＢＦ−ＩＤフィールド及びハッシュ値フィールドを有する。
【００５３】
このブロックマップ２１は、格納対象データがストレージ３０内に格納される度に、当該格納対象データのＬＢＡ及び検証用ハッシュ値がそれぞれＬＢＡフィールド及びハッシュ値フィールドに設定されたレコードが追加されるテーブルである。或る格納対象データに関するレコードがブロックマップ２１に追加される際、当該レコードのＭＢＦ−ＩＤフィールドには、当該格納対象データの検証用ハッシュ値が登録されているＭＢＦ３１のＭＢＦ−ＩＤが設定される。
【００５４】
説明の便宜上、ヒット頻度管理情報２０（図２）の詳細は後述することにする。
【００５５】
以下、格納処理部４１、読込処理部４２及び重複除去処理部４３の機能を、説明する。
【００５６】
まず、格納処理部４１の機能を説明する。
格納処理部４１は、通常は、ストレージ３０に対するライト要求が、ユーザ端末１００用の通信インタフェース（“Ｉ／Ｆ”）によって受信されるのを待機（監視）している。
【００５７】
ユーザ端末１００から或る情報のライト要求が送信されてきた場合、格納処理部４１は、当該情報（以下、格納対象情報と表記する）が、ストレージ３０の１個の物理ブロックに記憶できるサイズの情報であるか否かを判断する。そして、格納処理部４１は、格納対象情報が、１個の物理ブロックに記憶できるサイズの情報であった場合には、格納対象情報自体を格納対象データとして取り扱って、図６Ａ及び図６Ｂに示した手順の格納処理を実行する。
【００５８】
一方、格納対象情報が、１個の物理ブロックに記憶できるサイズの情報でなかった場合、格納処理部４１は、格納対象情報を、物理ブロックに記憶可能なサイズの複数のデータに分割する。そして、格納処理部４１は、分割により得られたデータ毎に、そのデータを格納対象データとした格納処理（図６Ａ及び図６Ｂ）を実行する。
【００５９】
図６Ａに示してあるように、格納処理を開始した格納処理部４１は、まず、格納対象データの検証用ハッシュ値を算出する（ステップＳ１０１）。
【００６０】
次いで、格納処理部４１は、算出した検証用ハッシュ値（以下、算出ハッシュ値と表記する）が登録されている最下段ＢＦを、ＭＢＦキャッシュテーブル２４上の各ＭＢＦ３１及び書込対象ＭＢＦ３１ｗの中から検索する（ステップＳ１０２）。すなわち、格納処理部４１は、上記した（２）〜（５ａ）の処理を、ＭＢＦキャッシュテーブル２４上の各ＭＢＦ３１及び書込対象ＭＢＦ３１ｗに対して行う。
【００６１】
既に説明したように、ストレージ制御装置１０の運用開始時、ＭＢＦキャッシュテーブル２４上には、１個もＭＢＦ３１が記憶されていない。従って、ステップＳ１０２の検索は、ストレージ制御装置１０の運用開始後、しばらくの間は、書込対象ＢＦ３１ｗのみに対して行われる。
【００６２】
算出ハッシュ値が登録されている最下段ＢＦを検索できなかった場合（ステップＳ１０３；ＹＥＳ）、格納処理部４１は、書込対象ＭＢＦ３１ｗのデータ登録数が既定数未満であるか否かを判断する（図６Ｂ；ステップＳ１１１）。
【００６３】
そして、格納処理部４１は、書込対象ＭＢＦ３１ｗのデータ登録数が既定数未満であった場合（ステップＳ１１１；ＹＥＳ）には、格納対象データをストレージ３０内に書き込む（ステップＳ１１６）。このステップＳ１１６の処理時、格納処理部４１は、格納対象データを書き込む物理ブロックのＰＢＡ（以下、格納先ＰＢＡと表記する）を、書込対象ＭＢＦ３１ｗの各最下段ＢＦに対応付けられているデータ記憶領域内の空き物理ブロックのＰＢＡの中から選択する。尚、空き物理ブロックとは、データが格納されていない物理ブロックのことである。また、格納先ＰＢＡとしては、通常、前回の格納先ＰＢＡとしたアドレスの次アドレスが選択される。
【００６４】
格納対象データをストレージ３０内に書き込んだ格納処理部４１は、算出ハッシュ値を書込対象ＭＢＦ３１ｗに登録する（ステップＳ１１７）。すなわち、格納処理部４１は、格納対象データを格納したデータ記憶領域に対応づけられている，書込対象ＭＢＦ３１ｗの最下段ＢＭと、当該最下段ＢＦに直接的／間接的に対応づけられている，書込対象ＭＢＦ３１ｗの各ＢＦとに、算出ハッシュ値を登録する。また、このステップＳ１１７にて、格納処理部４１は、自身が管理している，ＲＡＭ１２の書込対象ＭＢＦ３１ｗのデータ登録数に、“１”を加算する処理も行う。
【００６５】
ステップＳ１１７の処理を終えた格納処理部４１は、算出ハッシュ値を登録した最下段ＢＭに対応付けられている，ハッシュログキャッシュテーブル２８上のハッシュログ２５に、格納先ＰＢＡと算出ハッシュ値とを設定したレコードを追加する（ステップＳ１１８）。より具体的には、格納処理部４１は、算出ハッシュ値を登録した最下段ＢＭを示す最下段ＢＭ指定情報に対応付けられているハッシュログキャッシュテーブル２８上のハッシュログ２５に、格納先ＰＢＡと算出ハッシュ値とを設定したレコードを追加する。
【００６６】
そして、格納処理部４１は、ブロックマップ２１に、格納先ＬＢＡと、書込対象ＢＦ３１ｗのＭＢＦ−ＩＤと、算出ハッシュ値とを設定したレコードを追加（ステップＳ１１９）してから、この書込処理を終了する。尚、書込先ＬＢＡとは、受信したライト要求に含まれるＬＢＡ、又は、当該ＬＢＡと、格納対象データの，格納対象情報（ライト要求で書き込みが指示されている情報）内での位置とから算出されるＬＢＡのことである。
【００６７】
ストレージ制御装置１０の運用開始後、ステップＳ１１７の処理が“既定数”と同回数実行されると、書込対象ＢＦ３１ｗのデータ登録数が“既定数”となる。そして、書込対
象ＢＦ３１ｗのデータ登録数が“既定数”となっている状況下、ステップＳ１０２（又はＳ１０４）の検索に失敗した場合、格納処理部４１は、書込対象ＭＢＦ３１ｗのデータ登録数が既定数未満ではないと判断する（ステップＳ１１１；ＮＯ）。
【００６８】
従って、格納処理部４１は、書込対象ＭＢＦ３１ｗと、内容、ＭＢＦ−ＩＤが同じＭＢＦ３１を、ＭＢＦキャッシュテーブル２４に記憶（追加）する（ステップＳ１１３）。換言すれば、格納処理部４１はデータ登録数が“既定数”となった書込対象ＭＢＦ３１ｗのコピー（以下、新ＭＢＦ３１と表記する）を、ＭＢＦキャッシュテーブル２４に記憶（追加）する（ステップＳ１１３）。
【００６９】
尚、このステップＳ１１３では、ＭＢＦキャッシュテーブル２４上のＭＢＦ３１をＭＢＦテーブル２２に追加する処理などが行われる場合がある。具体的には、ステップＳ１１３の処理時、格納処理部４１は、まず、ｍ個のＭＢＦ３１がＭＢＦキャッシュテーブル上に記憶されているか否かを判断する。
【００７０】
ｍ個のＭＢＦ３１がＭＢＦキャッシュテーブル上に記憶されていなかった場合、格納処理部４１は、新ＭＢＦ３１を、ＭＢＦキャッシュテーブルに追加してから、ステップＳ１１３の処理を終了する。
【００７１】
これに対して、ｍ個のＭＢＦ３１がＭＢＦキャッシュテーブルに記憶されていた場合、格納処理部４１は、ＭＢＦキャッシュテーブル上の、最も過去に利用されたＭＢＦ３１を注目ＭＢＦ３１として特定する。次いで、格納処理部４１は、注目ＭＢＦ３１のＭＢＦ−ＩＤが、登録済ＭＢＦ−ＩＤとしてＲＡＭ１２上に記憶されているか否かを判断する。
【００７２】
注目ＭＢＦ３１のＭＢＦ−ＩＤが登録済ＭＢＦ−ＩＤとしてＲＡＭ１２上に記憶されていなかった場合、格納処理部４１は、以下の３処理を行う。
（ａ）注目ＭＢＦ３１をそのＭＢＦ−ＩＤと共にＭＢＦテーブルに追加する処理
（ｂ）注目ＭＢＦ３１に関する，ハッシュログキャッシュテーブル２８上のＭＢＦ別ハッシュログ情報をハッシュログテーブルに追加する処理
（ｃ）ＭＢＦテーブルに追加したＭＢＦ３１のＭＢＦ−ＩＤを、登録済ＭＢＦ−ＩＤとしてＲＡＭ１２上に記憶する処理
【００７３】
これらの処理を終えた格納処理部４１は、ＭＢＦキャッシュテーブル上の，注目ＭＢＦ３１が記憶されていた部分に新ＭＢＦ３１を記憶してから、ステップＳ１１３の処理を終了する。
【００７４】
一方、注目ＭＢＦ３１のＭＢＦ−ＩＤが登録済ＭＢＦ−ＩＤとしてＲＡＭ１２上に記憶されていた場合、格納処理部４１は、上記３処理を行うことなく、ＭＢＦキャッシュテーブル上の，注目ＭＢＦ３１が記憶されていた部分に新ＭＢＦ３１を記憶する。そして、格納処理部４１は、ステップＳ１１３の処理を終了する。
【００７５】
ステップＳ１１３の処理を終えた格納処理部４１は、書込対象ＭＢＦを初期化し、書込対象ＭＢＦのＭＢＦ−ＩＤを新ＩＤに変更する処理（ステップＳ１１４）を行う。ここで、新ＩＤとは、既存のいずれのＭＢＦ−ＩＤとも異なるＭＢＦ−ＩＤのことである。新ＩＤは、例えば、書込対象ＭＢＦのＭＢＦ−ＩＤに“１”を加算することにより生成される。
【００７６】
次いで、格納処理部４１は、新ＭＢＦ３１に関するＭＢＦ別ハッシュログ情報の初期値をハッシュログキャッシュテーブルに記憶する（ステップＳ１１５）。このステップＳ１１５では、ハッシュログキャッシュテーブルの，注目ＭＢＦ３１に関するＭＢＦ別ハッシ
ュログ情報が記憶されていた部分に、新ＭＢＦ３１に関するＭＢＦ別ハッシュログ情報の初期値が記憶される。
【００７７】
そして、格納処理部４１は、既に説明したステップＳ１１６〜Ｓ１１９の処理を実行してから、書込処理を終了する。
【００７８】
以下、書込処理の残りのステップの処理の内容を説明する。
【００７９】
算出ハッシュ値が登録されている最下段ＢＦを検索できた場合（図６Ａ、ステップＳ１０３；ＹＥＳ）、格納処理部４１は、当該最下段ＢＦに対応づけられている，ハッシュログキャッシュテーブル２８上のハッシュログから、格納対象データの重複データに関するレコードを検索する（ステップＳ１０４）。ここで、格納対象データの重複データに関するレコードとは、ハッシュ値フィールドの値が算出ハッシュ値と一致しているレコードのことである。
【００８０】
格納対象データの重複データに関するレコードを検索できなかった場合（ステップＳ１０５；ＮＯ）、格納処理部４１は、ステップＳ１０２の検索に失敗した場合と同様に、ステップＳ１１１（図６Ｂ）以降の処理を実行して書込処理を終了する。。
【００８１】
一方、格納対象データの重複データに関するレコードを検索できた場合（ステップＳ１０５；ＹＥＳ）、格納処理部４１は、ヒット頻度管理処理（ステップＳ１０６；詳細は後述）を行う。
【００８２】
ヒット頻度管理処理を終えた格納処理部４１は、ブロックマップ２１に、格納先ＬＢＡと、検索した最下段ＢＦを含むＭＢＦ３１のＭＢＦ−ＩＤと、算出ハッシュ値とを設定したレコードを追加する（ステップＳ１０７）。そして、格納処理部４１は、この書込処理を終了する。
【００８３】
次に、読込処理部４２（図２）の機能を説明する。
【００８４】
読込処理部４２は、ストレージ３０からのデータの読み込みを行うユニット（機能ブロック）である。
【００８５】
図７に、読込処理部４２が、或るデータをストレージ３０から読み込む際に行う読込処理の流れ図を示す。尚、この流れ図及び以下の説明において、読込対象データとは、読込処理部４２がストレージ３０から読み込もうとしているデータのことである。また、読込対象ＬＢＡとは、読込対象データのＬＢＡのことである。読込処理部４２は、ストレージ３０に対するリード要求が、ユーザ端末１００から送信されてきた場合、この読込処理を何回か実行することにより要求された情報を用意して、ユーザ端末１００に返送する。
【００８６】
図７に示してあるように、読込処理を開始した読込処理部４２は、まず、読込対象ＬＢＡと対応づけられているＭＢＦ−ＩＤ及びハッシュ値をブロックマップ２１から検索する（ステップＳ２０１）。
【００８７】
読込対象ＬＢＡと対応づけられているＭＢＦ−ＩＤ等を検索できなかった場合（ステップＳ２０２；ＮＯ）、読込処理部４２は、ブロックサイズのＡＬＬ０データを読込対象ＬＢＡのデータの読込結果とする（ステップＳ２０８）。尚、ブロックサイズのＡＬＬ０データとは、全ビットが“０”であり、サイズがブロックサイズと一致するデータのことである。
【００８８】
そして、ステップＳ２０８の処理を終えた読込処理部４２は、この読込処理を終了する。
【００８９】
要するに、ブロックマップ２１には、過去にストレージ３０内に格納された全てのデータの格納先ＬＢＡが記憶されている（図６Ａ及び図６Ｂ参照）。従って、読込対象ＬＢＡと対応づけられているＭＢＦ−ＩＤ等を検索できなかった場合（ステップＳ２０２；ＮＯ）、読込対象データ（読込対象ＬＢＡで識別されるデータ）が存在していないことになる。そのため、ブロックサイズのＡＬＬ０データが、読込対象ＬＢＡのデータの読込結果とされる。
【００９０】
一方、読込対象ＬＢＡと対応づけられているＭＢＦ−ＩＤ等が検索できた場合（ステップＳ２０２；ＹＥＳ）、読込処理部４２は、対応ＭＢＦ３１がＲＡＭ１２上に存在するか否かを判断する（ステップＳ２０３）。ここで、対応ＭＢＦ３１とは、ステップＳ２０１の処理で検索されたＭＢＦ−ＩＤが割り当てられているＭＢＦ３１のことである。尚、ステップＳ２０３の処理は、ＭＢＦキャッシュテーブル上の全ＭＢＦ３１の中に、対応ＭＢＦ３１が存在するか否かを判断する処理ではなく、ＭＢＦキャッシュテーブル上の全ＭＢＦ３１と書込対象ＭＢＦ３１ｗとの中に、対応ＭＢＦ３１が存在しているか否かを判断する処理である。
【００９１】
対応ＭＢＦ３１がＲＡＭ１２上に存在していなかった場合（ステップＳ２０３；ＮＯ）、読込処理部４２は、ステップＳ２０４にて、以下の処理を行う。
【００９２】
読込処理部４２は、まず、ＭＢＦキャッシュテーブル上の、最も過去に利用されたＭＢＦ３１を注目ＭＢＦ３１として特定する。次いで、格納処理部４１は、注目ＭＢＦ３１のＭＢＦ−ＩＤが、登録済ＭＢＦ−ＩＤとしてＲＡＭ１２上に記憶されているか否かを判断する。
【００９３】
注目ＭＢＦ３１のＭＢＦ−ＩＤが登録済ＭＢＦ−ＩＤとしてＲＡＭ１２上に記憶されていなかった場合、格納処理部４１は、上記したものと同じ以下の３処理を行う。
（ａ）注目ＭＢＦ３１をそのＭＢＦ−ＩＤと共にＭＢＦテーブルに追加する処理
（ｂ）注目ＭＢＦ３１に関する，ハッシュログキャッシュテーブル２８上のＭＢＦ別ハッシュログ情報をハッシュログテーブルに追加する処理
（ｃ）ＭＢＦテーブルに追加したＭＢＦ３１のＭＢＦ−ＩＤを、登録済ＭＢＦ−ＩＤとしてＲＡＭ１２に記憶する処理
【００９４】
これらの処理を終えた格納処理部４１は、ＭＢＦテーブル２２から対応ＭＢＦ３１を読み込んで、注目ＭＢＦ３１の代わりのＭＢＦ３１としてＭＢＦキャッシュテーブル上に記憶する。また、格納処理部４１は、ハッシュログテーブル２２から対応ＭＢＦ３１に関するＭＢＦ別ハッシュログ情報を読み込んで、注目ＭＢＦ３１に関するＭＢＦ別ハッシュログ情報の代わりの情報としてハッシュログキャッシュテーブルに記憶する。
【００９５】
そして、格納処理部４１は、ステップＳ２０４の処理を終了する。
【００９６】
要するに、読込処理部４２は、格納処理部４１が、格納処理のステップＳ１１３、Ｓ１１５（図６Ｂ）にて行う処理とほぼ同内容の処理を、ステップＳ２０４にて行う。尚、ステップＳ２０４にて、ＭＢＦキャッシュテーブル上のＭＢＦ３１の数に関する判断が行われていないのは、ステップＳ２０４が、ＭＢＦキャッシュテーブル上のＭＢＦ３１の数が３となっていないと実行されないステップであるためである。
【００９７】
ステップＳ２０４の処理を終えた読込処理部４２は、ステップＳ２０５以降の処理を開
始する。
【００９８】
また、対応ＭＢＦ３１がＲＡＭ１２上に存在していた場合（ステップＳ２０３）、読込処理部４２は、ステップＳ２１０にてヒット頻度管理処理（詳細は後述）を行ってから、ステップＳ２０５以降の処理を開始する。
【００９９】
ステップＳ２０５にて、読込処理部４２は、ステップＳ２０１の処理で検索された検証用ハッシュ値（以下、処理対象ハッシュ値と表記する）が登録されている最下段ＢＦを対応ＭＢＦ３１から検索する。次いで、読込処理部４２は、検索した最下段ＢＦに対応づけられている，ハッシュログキャッシュログテーブル２８上のハッシュログから処理対象ハッシュ値に対応づけられているＰＢＡを検索する（ステップＳ２０６）。その後、読込処理部４２は、検索したＰＢＡが示している物理ブロックのデータを、読込対象データとしてストレージ３０から読み込む（ステップＳ２０７）。そして、読込処理部４２は、この読込処理を終了する
【０１００】
以下、重複除去処理部４３、ヒット頻度管理処理及びヒット頻度管理情報２０について、説明する。
【０１０１】
重複除去処理部４３は、ストレージ３０内に既に格納されているデータに対して重複除去を行うユニット（機能ブロック）である。
【０１０２】
すなわち、ストレージ制御装置１０は、上記したように、格納対象データのストレージ３０への格納時（図６Ａ、６Ｂ参照）、ＲＡＭ１２上のＭＢＦ３１及びＭＢＦ別ハッシュログ情報だけから、格納対象データの重複データの有無を判断する。従って、ストレージ制御装置１０を用いておけば、『ＨＤＤ１３内のＭＢＦ３１もＲＡＭ１２上に読み出して重複データの有無を判断する装置』や『ハッシュログテーブル２２がＲＡＭ１２上に存在する装置』を用いた場合よりも、格納対象データをストレージ３０内に高速に格納することが出来る。また、ストレージ制御装置１０は、『ハッシュログテーブル２２及びＭＢＦテーブル２３がＲＡＭ１２上に存在する装置』よりもＲＡＭ１２の記憶容量が少なくて済む装置となっていることにもなる。
【０１０３】
ただし、ストレージ制御装置１０は、ＲＡＭ１２上のＭＢＦ３１及びＭＢＦ別ハッシュログ情報だけから重複データの有無を判断する装置であるが故に、重複データが実際には存在している格納対象データをストレージ３０に書き込む場合がある装置ともなっている。
【０１０４】
そして、同じデータがストレージ３０内に存在したのでは、ストレージ３０の記憶容量が無駄に消費されることになる。そのため、ストレージ３０内に既に格納されているデータに対して重複除去を行うことが望ましいのであるが、重複除去のやり方によっては、リード要求に対する応答速度が遅くなってしまう。
【０１０５】
具体的には、例えば、ファイルαの書き込みにより、データＡ〜Ｄの検証用ハッシュ値がＭＢＦ別ハッシュログ情報＃１に記憶され、その後、データＡ〜Ｄと同内容のデータの検証用ハッシュ値が、それぞれ、ＭＢＦ別ハッシュログ情報＃２〜＃５に記憶された場合を考える。尚、説明の便宜上、ｍ＝２であるとする。
【０１０６】
この場合、様々な形でデータの重複がなくなるようにすることができる。ただし、ＭＢＦ別ハッシュログ情報＃１及びブロックマップ２１を更新することによってデータの重複をなくした場合、ＭＢＦ別ハッシュログ情報＃１のみの参照で読み出せていたファイルαが、ＭＢＦ別ハッシュログ情報＃２〜＃５を参照しなければ読み出せなくなってしまう。
【０１０７】
そして、ストレージ制御装置１０は、データの読込に必要とされるＭＢＦ及びＭＢＦ別ハッシュログ情報がＲＡＭ１２上になかった場合（図７参照）、ＨＤＤからそれらの情報をロードする装置である。従って、ＭＢＦ別ハッシュログ情報＃１及びブロックマップ２１の更新によりデータの重複をなくした場合、それまで、ＨＤＤからの情報の最大ロード回数が１回であったファイルαの読み出し時に、ＨＤＤから最少でも、２回、情報をロードしなければならなくなる。
【０１０８】
このように、重複除去のやり方によっては、リード要求に対する応答速度が遅くなってしまう。
【０１０９】
リード要求に対する応答速度が遅くならない形での重複除去を可能とするために想到した処理が、以下で説明するヒット頻度管理処理及び重複除去処理である。
【０１１０】
まず、ヒット頻度管理処理により参照・更新される情報であるヒット頻度管理情報２０の概要を説明する。
【０１１１】
ヒット頻度管理情報２０は、第１キュー情報〜第Ｎ＋１キュー情報を含む。ここで、第ｉ（ｉ＝１〜Ｎ＋１）キュー情報とは、『ＭＢＦ−ＩＤを複数個保持でき、任意位置のＭＢＦ−ＩＤの取り出しが可能なＦＩＦＯ（First In, First Out）キュー』である第ｉキ
ューを表す情報のことである。第ｉキュー情報には、第ｉキュー内に保持されている複数のＭＢＦ−ＩＤや、それらのＭＢＦ−ＩＤの第ｉキュー内での位置関係を示す情報が含まれる。
【０１１２】
次に、ヒット頻度管理処理の内容を説明する。尚、格納処理部４１又は読込処理部４２として機能しているＣＰＵ１１が実際に行うヒット頻度管理処理は、保持しているＭＢＦ−ＩＤの組み合わせや順番がそれまでとは異なるキューを表すものとなるように、幾つかのキュー情報の内容を変更する処理である。ただし、説明の便宜上、以下では、図８Ａに模式的に示したように、上記仕様のハードウェアキューである第１〜第Ｎ＋１キュー４０1〜４０N+1が存在しているものとして、ヒット頻度管理処理の内容を説明することにする。
【０１１３】
ヒット頻度管理処理は、その実行前に検索／特定されたＭＢＦ３１のＭＢＦ−ＩＤを用いて、ヒット頻度管理情報２０を更新する処理である。尚、ヒット頻度管理処理の実行前に検索／特定されたＭＢＦ３１のＭＢＦ−ＩＤ（以下、処理対象ＩＤと表記する）とは、書込処理（図６Ａ）では、ステップＳ１０２の処理で検索されたＭＢＦ３１のＭＢＦ−ＩＤのことである。また、処理対象ＩＤとは、読込処理（図７）では、ステップＳ２０１の処理で検索された対応ＭＢＦ３１のＭＢＦ−ＩＤのことである。
【０１１４】
既に説明した書込処理及び読込処理の処理手順から明らかなように、ヒット頻度管理処理は、ＲＡＭ１２上のＭＢＦ３１がそのまま使用できる場合、すなわち、キャッシュヒットした場合、に実行される処理となっている。従って、処理対象ＩＤは、キャッシュヒットしたＭＢＦ３１のＭＢＦ−ＩＤとなっていると言うことが出来る。
【０１１５】
ヒット頻度管理処理を開始したＣＰＵ１１は、まず、処理対象ＩＤを第１キュー４０への入力データとして取り扱って、入力データ（処理対象ＩＤ）と同じデータが第１キュー４０1内に存在しているか否かを判断する。
【０１１６】
そして、ＣＰＵ１１は、入力データと同じデータが第１キュー４０1内に存在していな
かった場合には、図８Ｂに模式的に示したように、入力データを第１キュー４０1に登録
（追加）してから、ヒット頻度管理処理を終了する。
【０１１７】
一方、入力データと同じデータが第１キュー４０1内に存在していた場合、ＣＰＵ１１
は、当該データを第１キュー４０1から取り出す。そして、ＣＰＵ１１は、図８Ｃに模式
的に示してあるように、取り出したデータ（処理対象ＩＤと同じデータ）を第２キュー４０2への入力データとして取り扱って、第２キュー４０2に対して、第１キュー４０1に対
する処理と同内容の処理を行う。
【０１１８】
すなわち、ＣＰＵ１１は、入力データと同じデータが第２キュー４０2内に存在してい
なかった場合には、図８Ｃに模式的に示してあるように、入力データを第１キュー４０2
に登録（追加）してから、ヒット頻度管理処理を終了する。一方、入力データと同じデータが第２キュー４０2内に存在していた場合、ＣＰＵ１１は、当該データを第２キュー４
０2から取り出す。そして、ＣＰＵ１１は、取り出したデータを第３キュー（図示略）へ
の入力データとして取り扱って、第３キューに対して、第１キュー４０1（及び第２キュ
ー４０2）に対する処理と同内容の処理を行う。
【０１１９】
第Ｎ−１キュー（図示略）から入力データと同じデータが取り出せた場合にＣＰＵ１１が第Ｎキュー４０Nに対して行う処理も、第１キュー４０1に対する処理と同内容の処理である。ただし、第Ｎキュー４０Nから入力データと同じデータが取り出せた場合にＣＰＵ
１１が第Ｎ＋１キュー４０Nに対して行う処理は、第１キュー４０1に対する処理とは若干異なる。
【０１２０】
具体的には、第Ｎキュー４０Nから入力データと同じデータが取り出せた場合、ＣＰＵ
１１は、まず、第Ｎ＋１キュー４０N+1内に処理対象データと同じデータが存在している
か否かを判断する。そして、ＣＰＵ１１は、第Ｎ＋１キュー４０N+1内に処理対象ＩＤと
同じデータが存在していなかった場合には、処理対象ＩＤを第Ｎ＋１キュー４０N+1に登
録してから、ヒット頻度管理処理を終了する。一方、第Ｎ＋１キュー４０N+1内に処理対
象ＩＤが存在していた場合、ＣＰＵ１１は、処理対象ＩＤを第Ｎ＋１キュー４０N+1から
取り出して第Ｎ＋１キュー４０N+1に登録し直す。換言すれば、ＣＰＵ１１は、処理対象
ＩＤの第Ｎ＋１キュー４０N+1内の位置を、破棄されるまでに最も時間がかかる先頭に変
更する。そして、ＣＰＵ１１は、ヒット頻度管理処理を終了する。
【０１２１】
次に、重複除去処理部４３の機能を説明する。
【０１２２】
重複除去処理部４３は、ヒット情報管理情報２０を参照することにより第Ｎ＋１キュー４０N+1の状況を把握する処理を、予め定められているスケジュール（Ｚ１時間毎；毎日
、Ｚ２時等）に従って行う。
【０１２３】
そして、重複除去処理部４３は、第Ｎ＋１キュー４０N+1内に１つ以上のＭＢＦ−ＩＤ
が存在していた場合には、第Ｎ＋１キュー４０N+1から全ＭＢＦ−ＩＤを取り出す。そし
て、取り出したＭＢＦ−ＩＤ毎に、そのＭＢＦ−ＩＤを処理対象ＭＢＦ−ＩＤとして取り扱うと共に、そのＭＢＦ−ＩＤに関する各ハッシュログ２５を処理対象ハッシュログとして取り扱って、図９に示した手順の重複除去処理を行う。尚、或るＭＢＦ−ＩＤに関する各ハッシュログ２５とは、当該ＭＢＦ−ＩＤで識別されるＭＢＦ３１の各最下段ＢＦに対応づけらているハッシュログ２５のことである。
【０１２４】
すなわち、或る処理対象ハッシュログに対する重複除去処理を開始した重複除去処理部４３は、まず、処理対象ハッシュログの最初のレコード上のハッシュ値（つまり、或るデータの検証用ハッシュ値）を、処理対象ハッシュ値として取得する（ステップＳ３０１）。
【０１２５】
次いで、重複除去処理部４３は、ストレージ制御装置１０内のＭＢＦの中から、処理対象ハッシュ値が登録されているＭＢＦ３１を検索すると共に、検索したＭＢＦ３１から，処理対象ハッシュ値が登録されている最下段ＢＭを検索する（ステップＳ３０２）。このステップＳ３０２の処理は、第Ｎ＋１キュー４０Ｎ＋１から取り出したいずれのＭＢＦ−ＩＤともＭＢＦ−ＩＤが一致しておらず、かつ、前回以前のステップＳ３０２の処理で処理対象ハッシュ値の登録の有無がチェックされていないＭＢＦの中から、処理対象ハッシュ値が登録されているＭＢＦ３１を検索する処理である。
【０１２６】
処理対象ハッシュ値が登録されているＭＢＦ３１を検索できた場合（ステップＳ３０３；ＮＯ）、重複除去処理部４３は、検索した最下段ＢＦに対応づけらているハッシュログから処理対象ハッシュ値が設定されているレコードを削除する（ステップＳ３０４）。このステップＳ３０４の処理は、検索した最下段ＢＦに対応づけらているハッシュログが、ハッシュログテーブル内及びハッシュログキャッシュテーブル内に存在していた場合には、両テーブル内のハッシュログに対して行われる。
【０１２７】
続くステップＳ３０５にて、重複除去処理部４３は、まず、検索したＭＢＦのＭＢＦ−ＩＤと処理対象ハッシュ値とが設定されているレコードをブロックマップから検索する。そして、重複除去処理部４３は、検索したレコード上のＭＢＦ−ＩＤを処理対象ＭＢＦ−ＩＤに変更（ステップＳ３０５）してから、ステップＳ３０６の判断を行う。尚、ステップＳ３０４の処理時に処理対象ハッシュ値が設定されているレコードを見出せなかった場合、重複除去処理部４３は、このステップＳ３０５の処理を行うことなく、ステップＳ３０６の判断を行う。
【０１２８】
ステップＳ３０６にて、重複除去処理部４３は、ステップＳ３０２〜Ｓ３０６のループ処理の終了条件が満たされたか否かを判断する。ここで、ステップＳ３０２〜Ｓ３０６のループ処理の終了条件とは、例えば、ステップＳ３０２の検索に失敗するまでループ処理を繰り返す、ループ処理を繰り返さない（ステップＳ３０２〜Ｓ３０５の処理を１回行う）といった条件のことである。
【０１２９】
そして、重複除去処理部４３は、ステップＳ３０２〜Ｓ３０６のループ処理の終了条件が満たされていなかった場合には、ステップＳ３０２以降の処理を再び開始する。
【０１３０】
重複除去処理部４３は、ステップＳ３０２の検索に失敗した場合（ステップＳ３０３；ＹＥＳ）には、処理対象ハッシュログの全レコードの処理が完了したか否かを判断する（ステップＳ３０７）。重複除去処理部４３は、ステップＳ３０２〜Ｓ３０６のループ処理の終了条件が満たされた場合（ステップＳ３０６；ＹＥＳ）にも、処理対象ハッシュログの全レコードの処理が完了したか否かを判断する（ステップＳ３０７）。
【０１３１】
処理対象ハッシュログの全レコードの処理が完了していなかった場合（ステップＳ３０７；ＮＯ）、重複除去処理部４３は、ステップＳ３０１に戻って、処理対象ハッシュログの次のレコード上のハッシュ値を、処理対象ハッシュ値として取得する。
【０１３２】
そして、重複除去処理部４３は、処理対象ハッシュログの全レコードの処理が完了したときに、この重複除去処理を終了する。
【０１３３】
要するに、上記したヒット頻度管理処理（図８Ｃ参照）により、第Ｎ＋１キュー４０N+1にＭＢＦ−ＩＤ＿βが入力されるのは、ＦＩＦＯキューである第Ｎキュー４０NからＭＢＦ−ＩＤ＿βが破棄される以前に、第Ｎ−１キューから、ＭＢＦ−ＩＤ＿βが取り出されたときである。また、第Ｎ−１キューもＦＩＦＯキューであるので、第Ｎ−１キューから
ＭＢＦ−ＩＤ＿βが取り出されるのは、第Ｎ−１キューからＭＢＦ−ＩＤ＿βが破棄される以前に、第Ｎ−２キューから、ＭＢＦ−ＩＤ＿βが取り出されたときである。
【０１３４】
他の各キューもＦＩＦＯキューであるので、各キューからＭＢＦ−ＩＤ＿βが破棄される以前に、前キューからＭＢＦ−ＩＤ＿βが取り出されないと、次キューにＭＢＦ−ＩＤ＿βが入力されない。従って、第Ｎ＋１キューに登録されるＭＢＦ−ＩＤは、最近のヒット頻度が特に高いＭＢＦのＭＢＦ−ＩＤとなる。
【０１３５】
また、重複除去処理部４３が行う重複除去処理は、そのようなＭＢＦに対応づけられている各ハッシュログの内容を維持して、重複除去を行うものとなっている。そして、最近のヒット頻度が特に高いＭＢＦに対応づけられている各ハッシュログの内容を維持しておけば、通常、ファイルの読み込み時に必要なＨＤＤからの情報の平均的なロード回数を増やさないことができる。従って、上記した重複除去処理及びヒット頻度管理処理による重複除去は、リード要求に対する応答速度が遅くならない形で重複除去を行えるものとなっていると言うことができる。
【０１３６】
《変形形態》
上記したストレージ制御装置１０は、各種の変形が行えるものである。例えば、ストレージ制御装置１０を、ブロックマップ２１がＨＤＤ１３に記憶される装置に変形することができる。また、ストレージ制御装置１０を、ハッシュログキャッシュテーブル２８がない装置（常に、ハッシュログテーブル２３に対するアクセスが行われる装置）に変形することができる。
【０１３７】
ＭＢＦの代わりに、同様の機能を有する，ＭＢＦに分類されない情報を採用することも出来る。すなわち、ＭＢＦの代わりに、各データが格納されているデータ領域内のデータが登録されており且つ当該データ領域内の各データがいずれのデータ記憶領域に格納されているかを特定するために使用できる情報を採用することも出来る。また、ヒット頻度管理処理の代わりに、各ＭＢＦの利用回数／頻度を計数する処理を採用することもできる。ヒット頻度管理処理を、実際にハードウェアキューを制御する処理に変形することもできる。
【０１３８】
ストレージ制御装置１０を、専用の装置や、ストレージ３０と一体化された装置に変形することも出来る。ストレージ制御装置１０を、論理ブロックアドレスでアクセスすべき記憶装置３０（内部で論理ブロックアドレスが物理ブロックアドレスに変換される記憶装置３０）に接続して使用する装置に変形することも出来る。尚、この変形は、ＰＢＡの代わりに記憶装置３０のＬＢＡが使用されるようにするだけで実現できる。
【０１３９】
また、ストレージ制御プログラム１８を、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）等の可搬型記録媒体に記録して配布することが出来る。
【０１４０】
以上、開示した技術に関し、更に以下の付記を開示する。
【０１４１】
（付記１）
ストレージを、複数のデータ領域に分けられた複数のデータ記憶領域を備えた装置として取り扱って、前記ストレージ内の各データのストレージ内アドレスとハッシュ値との対応関係を複数のハッシュログによりデータ記憶領域別に管理すると共に、前記ストレージ内の各データの論理アドレス及びハッシュ値と、各データが格納されているデータ領域内のデータが登録されており且つ当該データ領域内の各データがいずれのデータ記憶領域に格納されているかを特定するために使用できるデータ管理情報の識別情報との対応関係をブロックマップにより管理する制御部と、
前記複数のハッシュログと、各データ領域に関するデータ管理情報とを記憶する第１記憶部と、
前記第１記憶部よりも高速にデータを読み書きできる第２記憶部と、
を備え、
前記制御部は、
読込対象データの前記ストレージからの読み込み時に、前記ブロックマップ内の当該読込対象データの論理アドレスに対応づけられた識別情報にて識別されるデータ管理情報が前記第２記憶部上に記憶されていなかった場合には、前記第１記憶部に記憶されている当該データ管理情報を前記第２記憶部上のいずれかのデータ管理情報の代わりに前記第２記憶部上に読み出し、読み出したデータ管理情報に基づき、前記読込対象データが格納されているデータ記憶領域に関する前記ハッシュログを特定し、特定したハッシュログ上の情報を用いて前記読込対象データを前記ストレージから読み込み、
格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第２記憶部に記憶されていなかった場合には、他のデータ管理情報に前記格納対象データが登録されているか否かを判定することなく、前記格納対象データを前記ストレージ内に格納し、
所定の条件が満たされた場合に、各データ管理情報の利用状況を基にした優先度にしたがい、少なくとも１つのデータ管理情報を選択し、選択した少なくとも１つのデータ管理情報が関連づけられているデータ領域上のデータについての，他のデータ領域上の重複データを前記ストレージから除去する
ストレージ制御装置。
【０１４２】
（付記２）
前記データ管理情報が、
関連付けられているデータ領域内のデータ記憶領域毎に、当該データ記憶領域に格納されたデータが登録されるブルームフィルタを含む多段ブルームフィルタである
ことを特徴とする付記１に記載のストレージ制御装置。
【０１４３】
（付記３）
前記制御部は、
各データ管理情報の利用状況に基づき、前記第１記憶部に記憶されている複数のデータ管理情報を、利用頻度の多寡に基づき二分する機能を有し、
前記所定の条件が満たされた場合に、利用頻度の多い方の１つ以上のデータ管理情報の中から前記少なくとも１つのデータ管理情報を選択する
ことを特徴とする付記１又は２に記載のストレージ制御装置。
【０１４４】
（付記４）
前記第２記憶部は、書込用データ管理情報及び書込用ハッシュログを記憶し、
前記制御部は、
前記格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第２記憶部に記憶されていなかった場合、前記格納対象データを前記ストレージ内に格納すると共に、前記格納対象データを書込用データ管理情報に登録し、書込用ハッシュログ及びブロックマップを更新する
ことを特徴とする付記１から３のいずれか一項に記載のストレージ制御装置。
【０１４５】
（付記５）
重複除去を行ってストレージにデータを格納するストレージ制御方法において、
前記ストレージを、複数のデータ領域に分けられた複数のデータ記憶領域を備えた装置として取り扱って、前記ストレージ内の各データのストレージ内アドレスとハッシュ値との対応関係を第１記憶部上の複数のハッシュログによりデータ記憶領域別に管理すると共
に、前記ストレージ内の各データの論理アドレス及びハッシュ値と、各データが格納されているデータ領域内のデータが登録されており且つ当該データ領域内の各データがいずれのデータ記憶領域に格納されているかを特定するために使用できるデータ管理情報の識別情報との対応関係を前記第１記憶部又は前記第１記憶部よりも高速にデータを読み書きできる第２記憶部上のブロックマップにより管理し、
読込対象データの前記ストレージからの読み込み時に、前記ブロックマップ内の当該読込対象データの論理アドレスに対応づけられた識別情報にて識別されるデータ管理情報が前記第２記憶部上に記憶されていなかった場合には、前記第１記憶部に記憶されている当該データ管理情報を前記第２記憶部上のいずれかのデータ管理情報の代わりに前記第２記憶部上に読み出し、
読み出したデータ管理情報に基づき、前記読込対象データが格納されているデータ記憶領域に関する前記ハッシュログを特定し、特定したハッシュログ上の情報を用いて前記読込対象データを前記ストレージから読み込み、
格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第２記憶部に記憶されていなかった場合には、他のデータ管理情報に前記格納対象データが登録されているか否かを判定することなく、前記格納対象データを前記ストレージ内に格納し、
所定の条件が満たされた場合に、各データ管理情報の利用状況を基にした優先度にしたがい、少なくとも１つのデータ管理情報を選択し、選択した少なくとも１つのデータ管理情報が関連づけられているデータ領域上のデータについての，他のデータ領域上の重複データを前記ストレージから除去する
ストレージ制御方法。
【０１４６】
（付記６）
コンピュータを、重複除去を行ってストレージにデータを格納するストレージ制御装置として動作させるストレージ制御プログラムであって、
前記コンピュータに、
前記ストレージを、複数のデータ領域に分けられた複数のデータ記憶領域を備えた装置として取り扱って、前記ストレージ内の各データのストレージ内アドレスとハッシュ値との対応関係を第１記憶部上の複数のハッシュログによりデータ記憶領域別に管理すると共に、前記ストレージ内の各データの論理アドレス及びハッシュ値と、各データが格納されているデータ領域内のデータが登録されており且つ当該データ領域内の各データがいずれのデータ記憶領域に格納されているかを特定するために使用できるデータ管理情報の識別情報との対応関係を前記第１記憶部又は前記第１記憶部よりも高速にデータを読み書きできる第２記憶部上のブロックマップにより管理し、
読込対象データの前記ストレージからの読み込み時に、前記ブロックマップ内の当該読込対象データの論理アドレスに対応づけられた識別情報にて識別されるデータ管理情報が前記第２記憶部上に記憶されていなかった場合には、前記第１記憶部に記憶されている当該データ管理情報を前記第２記憶部上のいずれかのデータ管理情報の代わりに前記第２記憶部上に読み出し、
読み出したデータ管理情報に基づき、前記読込対象データが格納されているデータ記憶領域に関する前記ハッシュログを特定し、特定したハッシュログ上の情報を用いて前記読込対象データを前記ストレージから読み込み、
格納対象データの書き込み時に前記格納対象データが登録されているデータ管理情報が前記第２記憶部に記憶されていなかった場合には、他のデータ管理情報に前記格納対象データが登録されているか否かを判定することなく、前記格納対象データを前記ストレージ内に格納し、
所定の条件が満たされた場合に、各データ管理情報の利用状況を基にした優先度にしたがい、少なくとも１つのデータ管理情報を選択し、選択した少なくとも１つのデータ管理情報が関連づけられているデータ領域上のデータについての，他のデータ領域上の重複デ
ータを前記ストレージから除去する
処理を行わせるストレージ制御プログラム。
【０１４７】
（付記７）
ストレージを、複数のデータ領域に分けられた複数のデータ記憶領域を備えた装置として取り扱って、前記ストレージ内の各データのストレージ内アドレスとハッシュ値との対応関係を複数のハッシュログによりデータ記憶領域別に管理すると共に、前記ストレージ内の各データの論理アドレス及びハッシュ値と、各データが格納されているハッシュログの識別情報との対応関係をブロックマップにより管理する制御部と、
前記複数のハッシュログとを記憶する第１記憶部と、
前記第１記憶部よりも高速にデータを読み書きできる第２記憶部と、
を備え、
前記制御部は、
読込対象データの前記ストレージからの読み込み時に、前記ブロックマップ内の当該読込対象データの論理アドレスに対応づけられた識別情報にて識別されるハッシュログが前記第２記憶部上に記憶されていなかった場合には、前記第１記憶部に記憶されている当該ハッシュログを前記第２記憶部上のいずれかのハッシュログの代わりに前記第２記憶部上に読み出し、読み出したハッシュログ上の情報を用いて前記読込対象データを前記ストレージから読み込み、
格納対象データの書き込み時に前記格納対象データのハッシュ値と同じハッシュ値を保持したハッシュログが前記第２記憶部に記憶されていなかった場合には、他のハッシュログを用いて前記格納対象データの重複データの有無を判定することなく、前記格納対象データを前記ストレージ内に格納し、
所定の条件が満たされた場合に、各ハッシュログの利用状況を基にした優先度にしたがい、少なくとも１つのハッシュログを選択し、選択した少なくとも１つのハッシュログが関連づけられているデータ領域上のデータについての，他のデータ領域上の重複データを前記ストレージから除去する
ストレージ制御装置。
【符号の説明】
【０１４８】
１０  ストレージ制御装置
１１  ＣＰＵ
１２  ＲＡＭ
１３  ＨＤＤ
１８  ストレージ制御プログラム
２０  ヒット頻度管理情報
２１  ブロックマップ
２２  ＭＢＦ
２３  ハッシュログテーブル
２４  ＭＢＦキャッシュテーブル
２５  ハッシュログ
２８、ハッシュログキャッシュテーブル
３０  ストレージ
３１  多段ブルームフィルタ（ＭＢＦ）
３１ｗ  書込対象ＭＢＦ
４０  キュー
４１  格納処理部
４２  読込処理部
４３  後処理部
５０  コンピュータ
１００  ユーザ端末
【図１】
2014199574.tif 000003
【図２】
2014199574.tif 000004
【図３】
2014199574.tif 000005
【図４】
2014199574.tif 000006
【図５】
2014199574.tif 000007
【図６Ａ】
2014199574.tif 000008
【図６Ｂ】
2014199574.tif 000009
【図７】
2014199574.tif 000010
【図８Ａ】
2014199574.tif 000011
【図８Ｂ】
2014199574.tif 000012
【図８Ｃ】
2014199574.tif 000013
【図９】
2014199574.tif 000014