(57)【特許請求の範囲】
【請求項１】
ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なう重複除去部と、
前記所定アドレスへの書込み回数に相当する指標値を算出する算出部と、
前記算出部によって算出される前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定する制御部と、
前記所定アドレスを含む複数のアドレスについて前記算出部によって算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第１記憶領域と、を有し、
前記制御部は、前記データブロックを前記所定アドレスに書き込む際に前記第１記憶領域を参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留させ、
前記算出部は、時間の経過とともに前記複数の指標値相互間の差が相対的に小さくなるように、前記第１記憶領域に記憶される前記複数の指標値を更新する、情報処理装置。
【請求項２】
前記制御部は、前記指標値が前記複数の指標値の中で上位に属していない場合、前記データブロックについて前記重複除去処理を実行させる、請求項１に記載の情報処理装置。
【請求項３】
前記算出部は、
前記第１記憶領域に記憶される前記複数の指標値のそれぞれに０よりも大きく且つ１未満の定数を乗算し、
前記所定アドレスが前記第１記憶領域に記憶されているか否かを判定し、
前記所定アドレスが前記第１記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“１”を加算する一方、
前記所定アドレスが前記第１記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第１記憶領域から削除し、値“１”を、前記指標値として、前記所定アドレスに対応付けて前記第１記憶領域に追加する、請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記算出部は、
前記所定アドレスが前記第１記憶領域に記憶されているか否かを判定し、
前記所定アドレスが前記第１記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“１”を加算する一方、
前記所定アドレスが前記第１記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第１記憶領域から削除し、前記最小の指標値に“１”を加算した値を、前記指標値として、前記所定アドレスに対応付けて前記第１記憶領域に追加する、請求項１または請求項２に記載の情報処理装置。
【請求項５】
前記複数のアドレスと各アドレスに書き込まれる各データブロックから得られるハッシュ値とを対応付けて記憶する第２記憶領域と、
前記ハッシュ値と前記ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付けて記憶する第３記憶領域と、を有し、
前記重複除去部は、前記第２記憶領域および前記第３記憶領域を用いて前記重複除去処
理を実行し、
前記制御部は、前記指標値が前記複数の指標値の中で上位に属する場合、前記ストレージから割り当てられた新たなアドレスに前記データブロックを書き込むとともに、前記第２記憶領域において、前記所定アドレスに対応付けられたハッシュ値を、前記新たなアドレスに書き換え、前記所定アドレスに対して書き込まれるデータブロックを、前記新たなアドレスに上書きすることで、前記データブロックについて前記重複除去処理を保留させる、請求項１〜請求項４のいずれか一項に記載の情報処理装置。
【請求項６】
ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なう重複除去部と、
前記所定アドレスへの書込み回数に相当する指標値を算出する算出部と、
前記算出部によって算出される前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定する制御部と、
前記所定アドレスを含む複数のアドレスについて前記算出部によって算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第１記憶領域と、
前記複数のアドレスと各アドレスに書き込まれる各データブロックから得られるハッシュ値とを対応付けて記憶する第２記憶領域と、
前記ハッシュ値と前記ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付けて記憶する第３記憶領域と、を有し、
前記重複除去部は、前記第２記憶領域および前記第３記憶領域を用いて前記重複除去処理を実行し、
前記制御部は、
前記データブロックを前記所定アドレスに書き込む際に前記第１記憶領域を参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留させ、
前記指標値が前記複数の指標値の中で上位に属する場合、前記ストレージから割り当てられた新たなアドレスに前記データブロックを書き込むとともに、前記第２記憶領域において、前記所定アドレスに対応付けられたハッシュ値を、前記新たなアドレスに書き換え、前記所定アドレスに対して書き込まれるデータブロックを、前記新たなアドレスに上書きすることで、前記データブロックについて前記重複除去処理を保留させる、情報処理装置。
【請求項７】
前記ストレージは、性能の異なる複数の記憶部を含む階層化ストレージであり、
前記複数の記憶部のうち、前記重複除去用アドレスまたは前記新たなアドレスに対するアクセス頻度に応じた性能の記憶部に、前記重複除去用アドレスまたは前記新たなアドレスに対応するデータブロックを配置する階層化処理を行なう階層化部を有する、請求項５または請求項６に記載の情報処理装置。
【請求項８】
コンピュータに、
ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を実行させるとともに、
前記所定アドレスへの書込み回数に相当する指標値を算出する算出処理と、
算出した前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定する決定処理と、を実行させ、
前記決定処理に際して、前記所定アドレスを含む複数のアドレスについて算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第１記憶領域を、前記データブロックを前記所定アドレスに書き込む際に参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留し、
前記算出処理に際して、時間の経過とともに前記複数の指標値相互間の差が相対的に小さくなるように、前記第１記憶領域に記憶される前記複数の指標値を更新する、
処理を実行させる、重複除去プログラム。
【請求項９】
コンピュータに、
ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を実行させるとともに、
前記所定アドレスへの書込み回数に相当する指標値を算出する算出処理と、
算出した前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定する決定処理と、を実行させ、
前記決定処理に際して、前記所定アドレスを含む複数のアドレスについて算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第１記憶領域を、前記データブロックを前記所定アドレスに書き込む際に参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留し、
前記重複除去処理に際して、前記複数のアドレスと各アドレスに書き込まれる各データブロックから得られるハッシュ値とを対応付けて記憶する第２記憶領域と、前記ハッシュ値と前記ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付けて記憶する第３記憶領域と、を用い、
前記決定処理に際して、前記指標値が前記複数の指標値の中で上位に属する場合、前記ストレージから割り当てられた新たなアドレスに前記データブロックを書き込むとともに、前記第２記憶領域において、前記所定アドレスに対応付けられたハッシュ値を、前記新たなアドレスに書き換え、前記所定アドレスに対して書き込まれるデータブロックを、前記新たなアドレスに上書きすることで、前記データブロックについて前記重複除去処理を保留する、
処理を実行させる、重複除去プログラム。
【請求項１０】
コンピュータによって、
ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なうとともに、
前記所定アドレスへの書込み回数に相当する指標値を算出する算出処理と、
算出した前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定する決定処理と、を行ない、
前記決定処理に際して、前記所定アドレスを含む複数のアドレスについて算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第１記憶領域を、前記データブロックを前記所定アドレスに書き込む際に参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留し、
前記算出処理に際して、時間の経過とともに前記複数の指標値相互間の差が相対的に小さくなるように、前記第１記憶領域に記憶される前記複数の指標値を更新する、
重複除去方法。
【請求項１１】
コンピュータによって、
ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なうとともに、
前記所定アドレスへの書込み回数に相当する指標値を算出する算出処理と、
算出した前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定する決定処理と、を行ない、
前記決定処理に際して、前記所定アドレスを含む複数のアドレスについて算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第１記憶領域を、前記データブロックを前記所定アドレスに書き込む際に参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留し、
前記重複除去処理に際して、前記複数のアドレスと各アドレスに書き込まれる各データブロックから得られるハッシュ値とを対応付けて記憶する第２記憶領域と、前記ハッシュ値と前記ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付けて記憶する第３記憶領域と、を用い、
前記決定処理に際して、前記指標値が前記複数の指標値の中で上位に属する場合、前記ストレージから割り当てられた新たなアドレスに前記データブロックを書き込むとともに、前記第２記憶領域において、前記所定アドレスに対応付けられたハッシュ値を、前記新たなアドレスに書き換え、前記所定アドレスに対して書き込まれるデータブロックを、前記新たなアドレスに上書きすることで、前記データブロックについて前記重複除去処理を保留する、
重複除去方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、重複除去プログラム、及び重複除去方法に関する。
【背景技術】
【０００２】
近年、処理対象データの増加に伴い、当該処理対象データやそのバックアップデータを保存するストレージに要するコストも増加している。このとき、ストレージに保存されるデータには、同一のデータブロックが何度も繰り返し含まれる場合がある。
【０００３】
そこで、重複除去技術によってストレージに同一のデータブロックが保存されるのを抑止し、ストレージに要するコストを抑えることが提案されている。
【０００４】
上述した重複除去技術では、データブロックをストレージに書き込む際、例えばハッシュ値を用いて書込み対象のデータブロックと同一のデータブロックがストレージに存在するか否かが検出される。同一のデータブロックが存在しない場合、当該書込み対象のデータブロックはストレージに書き込まれる。これに対し、同一のデータブロックが存在する場合、当該書込み対象のデータブロックをストレージに書き込まないようにして、同一のデータブロックの重複が除去される。
【０００５】
一方、一般に、データブロック等の情報は、生成されてから一定時間が経過すると、その参照頻度が低下する傾向にある。このような傾向のもと、近年、ビッグデータの活用機会の増加等に伴い、高性能なストレージにデータが参照されることなく長期保存されて滞留するケースが多発し、ストレージの性能低下を招いている。
【０００６】
そこで、性能の異なる複数の記憶デバイスを含む階層化ストレージを用いる階層化技術によって、ストレージの性能を改善することが提案されている。性能の異なる複数の記憶デバイスとしては、例えば、ＳＣＭ（Storage Class Memory），ＳＳＤ（Solid State Drive），ＨＤＤ（Hard Disk Drive）が用いられる。
【０００７】
上述した階層化技術では、ストレージへのデータアクセスがアドレス（即ち当該アドレスに保存されるデータブロック）毎に監視され、アドレスに対するアクセス頻度が検出される。そして、検出されたアクセス頻度と予め設定したポリシとに応じて、各種記憶デバイス間でデータブロックの再配置が行なわれる。例えば、アクセス頻度の高いデータブロックは処理速度の速い記憶デバイスに配置され、アクセス頻度の低いデータブロックは処理速度の遅い安価な記憶デバイスに配置される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１４−４１４５２号公報
【特許文献２】特開２００９−２０５２０１号公報
【特許文献３】特開２００９−１２９０７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、ストレージに対し上述した重複除去技術と階層化技術との両方を適用する場合、例えば、重複除去技術を適用した後に階層化技術が適用される。
【００１０】
このとき、特定のアドレスにおけるデータブロックが何度も書き換えられる場合、各データブロック自体の出現頻度（アクセス頻度）は低いため、階層化技術によって、各データブロックは処理速度の遅い記憶デバイス上に配置される。また、本来であれば実際の記憶デバイス上においてもデータブロックが上書きされて書き換えられるべきところが、各データブロックの内容が異なるため、重複除去技術によって、各データブロックに新たなアドレスが割り当てられ各データブロックが書き込まれる。このため、ストレージにおける記憶領域が無駄に使用されてしまい、ガベージコレクションの処理量が増加してストレージの性能が低下する。
【００１１】
なお、ガベージコレクションは、例えば、上述のごとく新たなアドレスに無駄に書き込まれた各データブロックを、不要なデータブロックとして破棄することで、当該不要なデータブロックを格納していた領域を解放する機能である。
【００１２】
一つの側面では、本件明細書に開示の発明は、ストレージを効率よく利用しながら重複除去を実現することを目的とする。
【課題を解決するための手段】
【００１３】
本件の情報処理装置は、重複除去部、算出部、制御部、及び第１記憶領域を有する。前記重複除去部は、ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なう。前記算出部は、前記所定アドレスへの書込み回数に相当する指標値を算出する。前記制御部は、前記算出部によって算出される前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定する。前記第１記憶領域は、前記所定アドレスを含む複数のアドレスについて前記算出部によって算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する。前記制御部は、前記データブロックを前記所定アドレスに書き込む際に前記第１記憶領域を参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留させる。前記算出部は、時間の経過とともに前記複数の指標値相互間の差が相対的に小さくなるように、前記第１記憶領域に記憶される前記複数の指標値を更新する。
また、本件の情報処理装置は、上述と同様の重複除去部、算出部、制御部、及び第１記憶領域のほかに、第２記憶領域および第３記憶領域を有する。前記第２記憶領域は、前記複数のアドレスと各アドレスに書き込まれる各データブロックから得られるハッシュ値とを対応付けて記憶する。前記第３記憶領域は、前記ハッシュ値と前記ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付けて記憶する。ここで、前記重複除去部は、前記第２記憶領域および前記第３記憶領域を用いて前記重複除去処理を実行する。前記制御部は、前記データブロックを前記所定アドレスに書き込む際に前記第１記憶領域を参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留させ、前記指標値が前記複数の指標値の中で上位に属する場合、前記ストレージから割り当てられた新たなアドレスに前記データブロックを書き込むとともに、前記第２記憶領域において、前記所定アドレスに対応付けられたハッシュ値を、前記新たなアドレスに書き換え、前記所定アドレスに対して書き込まれるデータブロックを、前記新たなアドレスに上書きすることで、前記データブロックについて前記重複除去処理を保留させる。
【発明の効果】
【００１４】
ストレージを効率よく利用しながら重複除去を実現することができる。
【図面の簡単な説明】
【００１５】
【図１】関連技術によって重複除去処理後に階層化処理を行なう場合の処理を説明する図である。
【図２】関連技術によって階層化処理後に重複除去処理を行なう場合の処理を説明する図である。
【図３】図２に示す処理を説明すべく同じアドレスにデータブロックを連続的に書き込む例を示す図である。
【図４】図２に示す処理を説明すべく高速デバイスに配置されるデータブロックの例を示す図である。
【図５】図２に示す処理を説明すべく同じデータブロックが複数のアドレスに書き込まれた例を示す図である。
【図６】図２に示す処理を説明すべく同じデータブロックが複数のアドレスに書き込まれていて各アドレスのアクセス回数が少ない例を示す図である。
【図７】図２に示す処理を説明すべく図６に示す例に対してデバイスの割当てを行なった例を示す図である。
【図８】図２に示す処理を説明すべく高速デバイスにおけるデータブロック配置例とアクセス回数との関係を示す図である。
【図９】図２に示す処理を説明すべく低速デバイスにおけるデータブロック配置例とアクセス回数との関係を示す図である。
【図１０】本実施形態のストレージシステムのハードウエア構成例及び機能構成例を示すブロック図である。
【図１１】本実施形態におけるアドレスと書込み回数指標値との対応関係の一例を示す図である。
【図１２】本実施形態におけるアドレスと書込み回数指標値との対応関係の他例を示す図である。
【図１３】関連技術の重複除去エンジンにおける書込み動作の流れを説明するフローチャートである。
【図１４】関連技術における読出し動作の流れを説明するフローチャートである。
【図１５】本実施形態の重複除去エンジンにおける書込み動作の流れを説明するフローチャートである。
【図１６】本実施形態における読出し動作の流れを説明するフローチャートである。
【図１７】本実施形態における書込み回数指標値の一例についての更新動作の流れを説明するフローチャートである。
【図１８】本実施形態における書込み回数指標値の他例についての更新動作の流れを説明するフローチャートである。
【図１９】関連技術の重複除去エンジンにおけるアドレスとハッシュ値との対応関係の一例を示す図である。
【図２０】関連技術の重複除去エンジンにおけるハッシュ値と重複除去用アドレスとの対応関係の一例を示す図である。
【図２１】関連技術における重複除去用アドレスとデータブロックとの対応関係の一例を示す図である。
【図２２】関連技術の階層化ストレージにおけるデータ構造の一例を示す図である。
【図２３】本実施形態の重複除去エンジンにおけるアドレスとハッシュ値または階層化ストレージのアドレスとの対応関係の一例を示す図である。
【図２４】本実施形態におけるアドレスと書込み回数指標値との対応関係の一例を示す図である。
【図２５】本実施形態の階層化ストレージが重複除去エンジンに見せるアドレスとデータブロックとの対応関係の一例を示す図である。
【図２６】本実施形態の階層化ストレージにおけるデータ構造の一例を示す図である。
【発明を実施するための形態】
【００１６】
以下に、図面を参照し、本願の開示する情報処理装置、重複除去プログラム、及び重複除去方法の実施形態について、詳細に説明する。ただし、以下に示す実施形態は、あくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能を含むことができる。そして、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【００１７】
〔１〕関連技術
図１は、関連技術によって重複除去処理後に階層化処理を行なう場合の処理を説明する図である。図１の（Ａ）に示すように、ここでは、ホストからの書込み要求に応じて重複除去エンジンが重複除去処理を行なった後、階層化ストレージによって階層化処理が行なわれる場合の処理について説明する。なお、階層化ストレージにおいては、例えば、性能の異なる記憶デバイスとしてＳＳＤ及びＨＤＤの二種類が備えられ、階層化エンジンが階層化処理を行なう。
【００１８】
ホストには、ホストから見えるアドレス空間として、例えば図１の（Ｂ）に示すような表形式のデータ構造Ｔ１が提供される。データ構造Ｔ１は、ホストから指定される各アドレスと、当該アドレスに書き込まれるデータブロックから得られるハッシュ値とを対応付ける。以下では、各アドレスをＬＢＡ（Logical Block Address）という場合がある。また、ハッシュ値を算出するアルゴリズムとしては、ＭＤ（Message-Digest）５や、ＳＨＡ（Secure Hash Algorithm）−１や、ＳＨＡ−２５６などが挙げられる。
【００１９】
図１の（Ｂ）では、ホストが、アドレス０，１，７，８に内容ａのデータブロックを書き込み、アドレス３に内容ｂのデータブロックを書き込み、アドレス４，９に内容ｃのデータブロックを書き込んだ状態が示されている。以下、内容ａ，ｂ，ｃ，…のデータブロックをそれぞれデータブロックａ，ｂ，ｃ，…と表記する。また、データブロックａ，ｂ，ｃ，…から得られるハッシュ値を、それぞれハッシュ値Ａ，Ｂ，Ｃ，…と表記する。
【００２０】
重複除去エンジンのメモリには、例えば、図１の（Ｃ）に示すような表形式のデータ構造Ｔ２と、ホストに見せるアドレスと、当該データ構造Ｔ２のインデックスとが記憶される。データ構造Ｔ２は、ハッシュ値と当該ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付ける。重複除去用アドレスは、階層化ストレージのアドレス、即ち階層化ストレージが重複除去エンジンに見せるアドレスである。図１の（Ｃ）に示すデータ構造Ｔ２では、ハッシュ値Ａ，Ｂ，Ｃがそれぞれ階層化ストレージのＬＢＡ０，１，２に対応付けられる。つまり、図１の（Ｄ）に示すように、階層化ストレージのＬＢＡ０，１，２には、それぞれデータブロックａ，ｂ，ｃが対応付けられる。
【００２１】
一方、階層化ストレージのメモリには、例えば、図１の（Ｅ）に示すような表形式のデータ構造Ｔ４が記憶される。データ構造Ｔ４は、階層化ストレージのＬＢＡ毎に、アクセス回数（アクセス頻度）と、当該ＬＢＡに対応するデータブロックを実際に配置する記憶デバイスを特定する情報とを対応付ける。図１の（Ｅ）において、記憶デバイスを特定する情報には、例えば、デバイス種別（ＨＤＤかＳＳＤか）と、当該種別のデバイス上のアドレス（ＬＢＡ）とが含まれる。
【００２２】
そして、図１の（Ｆ）には、図１の（Ｅ）に示すデータ構造Ｔ４に従って実際のデバイス（ＨＤＤ，ＳＳＤ）上に書き込まれるデータブロックの内容（アドレス空間）が示されている。階層化ストレージにおいて、ＬＢＡ０に対するアクセス回数は２０回でありアクセス頻度が高いと判断され、ＬＢＡ０に対応するデータブロックａは、処理速度の速いＳＳＤ上のＬＢＡ０に配置される。また、階層化ストレージにおいて、ＬＢＡ１，２に対するアクセス回数はそれぞれ５回，２回でありアクセス頻度が低いと判断され、ＬＢＡ１，２に対応するデータブロックｂ，ｃは、それぞれ、処理速度の遅い安価なＨＤＤ上のＬＢＡ０，１に配置される。
【００２３】
このように重複除去処理後に階層化処理を行なう場合、上述のごとく、特定のアドレスにおけるデータブロックが何度も書き換えられると、各データブロックに対するアクセス頻度は低いため、階層化処理によって、各データブロックはＨＤＤ上に配置される。また、本来であれば実際の記憶デバイス上においてもデータブロックが上書きされて書き換えられるべきところが、各データブロックの内容が異なるため、重複除去処理によって、各データブロックに新たなアドレスが割り当てられ各データブロックが書き込まれる。このため、ストレージにおける記憶領域が無駄に使用され、ガベージコレクションの処理量が増加してストレージの性能が低下する。
【００２４】
これに対処すべく、例えば図１の（Ｇ）に示すようにデータ構造Ｔ２においてハッシュ値毎に被参照数を管理し、被参照数が０になった実データブロックを上書きすることで、記憶領域が無駄に使用されるのを抑止することが可能である。しかし、ハッシュ値毎に被参照数を記憶することで、使用するメモリ量が多くなってしまうという課題がある。
【００２５】
ついで、図２〜図９を参照しながら、関連技術によって階層化処理後に重複除去処理を行なう場合の処理について説明する。ここで、図２は、関連技術によって階層化処理後に重複除去処理を行なう場合の処理を説明する図である。
【００２６】
図２の（Ａ）に示すように、ここでは、ホストからの書込み要求に応じて階層化エンジンが階層化処理を行なった後、重複除去ストレージ（ＳＳＤ）または重複除去ストレージ（ＨＤＤ）によって重複除去処理が行なわれる場合の処理について説明する。なお、各重複除去ストレージにおいては、例えば、性能の異なる記憶デバイスとしてＳＳＤまたはＨＤＤが備えられ、重複除去エンジンが重複除去処理を行なう。
【００２７】
ホストには、ホストから見えるアドレス空間として、例えば図２の（Ｂ）に示すような表形式のデータ構造Ｔ１が提供される。データ構造Ｔ１は、ホストから指定される各アドレスと、当該アドレスに書き込まれるデータブロックから得られるハッシュ値とを対応付ける。
【００２８】
図２の（Ｂ）では、時刻ｔ＝ｔ０，ｔ１，ｔ２（ｔ０＜ｔ１＜ｔ２）でのデータブロックの書込み状態が示される。つまり、時刻ｔ＝ｔ０では、ホストが、アドレス０，１，７，８にデータブロックａを書き込み、アドレス３にデータブロックｂを書き込み、アドレス４，９にデータブロックｃを書き込んだ状態が示されている。そして、ホストが、時刻ｔ＝ｔ１にアドレス４のデータブロックをｃからｄに書き換えた後、時刻ｔ＝ｔ２にアドレス４のデータブロックをｄからｅに書き換えた状態が示されている。
【００２９】
時刻ｔ＝ｔ０〜ｔ２においてＳＳＤとＨＤＤとの間のデータ移動が起こらず、時刻ｔ＝ｔ２において、例えば、図２の（Ｃ）に示すような表形式のデータ構造Ｔ４が記憶されているものとする。このとき、各デバイス（ＳＳＤ，ＨＤＤ）に書き込まれるデータブロックは、図２の（Ｄ１）〜（Ｄ３）及び（Ｅ１）〜（Ｅ３）に示すようになる。
【００３０】
図２の（Ｃ）に示すデータ構造Ｔ４では、ホストから指定されるＬＢＡ毎に、アクセス回数と、当該ＬＢＡに対応するデータブロックを配置する記憶デバイスを特定する情報とが対応付けられている。
【００３１】
当該データ構造Ｔ４において、ホストから指定されるＬＢＡ１，８に対するアクセス回数は２回でありアクセス頻度が高いと判断される。これに伴って、ＬＢＡ１，８に対応するデータブロックａは、図２の（Ｄ１）に示すように、時刻ｔ＝ｔ０〜ｔ２の間、ＳＳＤ上のＬＢＡ０，２に配置される。また、ホストから指定されるＬＢＡ４に対するアクセス回数は３回でありアクセス頻度が高いと判断され、ＬＢＡ４に対応するデータブロックは、図２の（Ｄ１）に示すように、時刻ｔ＝ｔ０，ｔ１，ｔ２にＳＳＤ上のＬＢＡ１においてｃ，ｄ，ｅに書き換えられる。
【００３２】
一方、当該データ構造Ｔ４において、ホストから指定されるＬＢＡ０，３，７，９に対するアクセス回数は１回でありアクセス頻度が低いと判断される。これに伴って、ＬＢＡ０，３，７，９に対応するデータブロックａ，ｂ，ａ，ｃは、図２の（Ｅ１）に示すように、時刻ｔ＝ｔ０〜ｔ２の間、ＨＤＤ上のＬＢＡ０，１，２，３に配置される。
【００３３】
つまり、階層化エンジンによって、重複除去ストレージ（ＳＳＤ）に対して図２の（Ｄ１）に示すような書込みが行なわれるとともに、重複除去ストレージ（ＨＤＤ）に対して図２の（Ｅ１）に示すような書込みが行なわれる。
【００３４】
そして、重複除去ストレージ（ＳＳＤ）では、重複除去エンジンによって、図２の（Ｄ１）に示す書込みに応じて、図２の（Ｄ２）に示すような表形式のデータ構造Ｔ２が作成され記憶される。図２の（Ｄ２）に示すデータ構造Ｔ２では、ハッシュ値Ａ，Ｃ，Ｄ，Ｅが、それぞれ当該ハッシュ値Ａ，Ｃ，Ｄ，Ｅに対応するデータブロックａ，ｃ，ｄ，ｅを記憶する、ＳＳＤ上のＬＢＡ０，１，２，３に対応付けられる。
【００３５】
同様に、重複除去ストレージ（ＨＤＤ）では、重複除去エンジンによって、図２の（Ｅ１）に示す書込みに応じて、図２の（Ｅ２）に示すような表形式のデータ構造Ｔ２が作成され記憶される。図２の（Ｅ２）に示すデータ構造Ｔ２では、ハッシュ値Ａ，Ｂ，Ｃが、それぞれ当該ハッシュ値Ａ，Ｂ，Ｃに対応するデータブロックａ，ｂ，ｃを記憶する、ＨＤＤ上のＬＢＡ０，１，２に対応付けられる。
【００３６】
図２の（Ｄ３）及び（Ｅ３）には、上述のような処理によって実際のデバイス（ＨＤＤ，ＳＳＤ）上に書き込まれるデータブロックの内容（アドレス空間）が示されている。つまり、ＳＳＤにおいては、時刻ｔ＝ｔ０でデータブロックａ，ｃがＬＢＡ０，１に書き込まれ、時刻ｔ＝ｔ１でデータブロックｄがＬＢＡ２に書き込まれ、時刻ｔ＝ｔ２でデータブロックｅがＬＢＡ３に書き込まれる。一方、ＨＤＤには、時刻ｔ＝ｔ０〜ｔ２の間、データブロックａ，ｂ，ｃがＬＢＡ０，１，２に保存される。
【００３７】
ここで、図２に示すごとく階層化処理後に重複除去処理を行なう場合に生じる二つの課題について、図３〜図９を参照しながら説明する。
【００３８】
図２に示すごとく階層化処理後に重複除去処理を行なう場合の、一つ目の課題は、ホストが同じアドレスにおけるデータブロックを何度も書き換えるときに生じる。このとき、一般的には容量の少ない高速な記憶デバイス（例えばＳＳＤ）における新たなアドレスへの書込みが多発し、記憶デバイスの容量が足りなくなって、ガベージコレクションを行なわないと新たな書込みを行なえないという課題が生じる。
【００３９】
例えば図３に示すように、ホストが特定のアドレス（ここではＬＢＡ０）に対しデータブロックａ，ｂ，ｃ，ｄ，ｅ，ｆを時刻ｔ＝ｔ０〜ｔ５に順に書き込んだとする。このとき、アドレス０へのアクセス回数が増加するので、階層化エンジンは、アドレス０に書き込むべきデータブロックを高速デバイス（ＳＳＤ）に配置するように判断する。高速デバイスでは、重複除去ストレージ（ＳＳＤ）が動作するため、図４に示すように、連続的に書き込まれるデータブロックの内容が少しでも異なれば別のアドレスに書き込まれる。つまり、ホストは、同じアドレスにおけるデータブロックを書き換えているのにも関わらず、高速デバイス上では、異なる複数のアドレスが使用される（図２の（Ｄ３）参照）。
【００４０】
二つ目の課題は、同じデータブロックが異なる複数のアドレスから読み出されるときに生じる。このとき、実際には同じデバイスの同じアドレスから読み出されているにも関わらず、ホストに見えるアドレス毎のアクセス回数が少ないために当該データブロックが低速デバイス（ＨＤＤ）に配置され続けるという課題が生じる。
【００４１】
ここで、例えば、図５に示すように、ホストに見えるアドレス０〜５に、それぞれデータブロックａ，ｂ，ｃ，ａ，ａ，ａの書込みが行なわれた状態で、各アドレスに対するアクセス回数（読出し回数）が図６に示す値であったとする。このとき、高速デバイスの容量によっては、図７に示すように、アドレス１，２に書き込まれるデータブロックｂ，ｃを高速デバイス（ＳＳＤ）に配置し、アドレス０，３，４，５に書き込まれるデータブロックａを低速デバイス（ＨＤＤ）に配置する。それぞれのデバイス上では、図２を参照しながら上述したように重複除去処理が行なわれるため、高速デバイス（ＳＳＤ）では、図８に示すようなデータブロック配置となる一方、低速デバイス（ＨＤＤ）では、図９に示すようなデータブロック配置となる。結果的には、図８及び図９に示すように、アクセス回数の最も多いデータブロックａが低速デバイス（ＨＤＤ）に配置される。
【００４２】
〔２〕本実施形態の概要
本実施形態では、重複除去処理後に階層化処理を行なう場合を対象として改良を行なって、先に重複除去処理を行なう場合に生じる課題を解消することで、ストレージを効率よく利用しながら重複除去が実現される。
【００４３】
上述したように、全てのハッシュ値について被参照数を記憶することは、メモリを大量に使用するため、好ましくない。これに対し、直近の一定期間内にホストから受けた書込みアクセスについてのみアドレス毎の書込み回数（書込み回数に相当する指標値）を記憶することは、全てのハッシュ値について被参照数を記憶する場合に比べ、メモリ使用量が少なくて済む。なお、書込み回数に相当する指標値は、書込み回数指標値、もしくは、指標値という場合がある。
【００４４】
そこで、本実施形態では、全てのデータブロックに対し重複除去処理を行なわず、データブロックを何度も書き換えられるアドレスについて、実デバイス上の領域が新たに確保され、当該領域に当該データブロックが上書き保存される。これにより、同一アドレスに連続的（頻繁）に書き込まれるデータブロックに対しては、重複除去処理が行なわれないようにする。したがって、同一アドレスにおけるデータブロックが何度も書き換えられる際に、ストレージ上での記憶領域の使用量が増大するのを抑止しながら、重複除去処理を実現することができる。
【００４５】
つまり、本実施形態で開示される情報処理装置は、重複除去エンジンを含むコンピュータであり、重複除去エンジンによって、ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なう。このとき、重複除去エンジンは、前記所定アドレスへの書込み回数に相当する指標値を算出し、算出した指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定して切り換える。
【００４６】
また、前記情報処理装置の第１記憶領域には固定サイズのデータ構造Ｔ３またはＴ３′（図１０〜図１２参照）が新たに用意される。重複除去エンジンは、前記データブロックを前記所定アドレスに書き込む際に、第１記憶領域のデータ構造Ｔ３またはＴ３′を参照する。第１記憶領域のデータ構造Ｔ３またはＴ３′は、前記所定アドレスを含む複数のアドレスについて算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する。
【００４７】
そして、重複除去エンジンは、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留する。一方、重複除去エンジンは、前記指標値が前記複数の指標値の中で上位に属していない場合、前記データブロックについて前記重複除去処理を実行する。
【００４８】
〔３〕本実施形態のストレージシステムのハードウエア構成及び機能構成
まず、図１０を参照しながら、本実施形態のストレージシステム１の構成及び機能構成について説明する。図１０は、本実施形態のストレージシステム１のハードウエア構成例及び機能構成例を示すブロック図であり、図１０に示すように、本実施形態のストレージシステム１は、ホスト１０、情報処理装置２０及び階層化ストレージ２を含む。また、階層化ストレージ２は、情報処理装置３０及びストレージ４０，５０を含む。
【００４９】
ホスト（ホスト装置）１０は、本実施形態の階層化ストレージ２を利用する、ＰＣ（Personal Computer），サーバ等の情報処理装置（コンピュータ）である。ホスト１０は、情報処理装置２０を介して、階層化ストレージ２におけるデータブロックに対する書込みアクセス／読出しアクセスを行なう。なお、データブロックは、例えば、ストレージ技術における「チャンク（Chunk）」（ビット列）である。
【００５０】
情報処理装置２０は、重複除去エンジンとしての機能を含むＰＣ，サーバ等のコンピュータである。情報処理装置２０は、階層化ストレージ２におけるストレージ４０，５０の所定アドレスにデータブロックを書き込む際に、当該データブロックについての重複除去処理を行なう。所定アドレスは、ホスト１０によって指定される、ホスト１０から見える階層ストレージ２におけるアドレスである。情報処理装置２０は、少なくとも処理部２１及び記憶部２２を含む。なお、情報処理装置２０は、重複除去エンジン２０と称されてもよい。
【００５１】
情報処理装置３０は、階層化処理エンジンとしての機能を含むＰＣ，サーバ等のコンピュータである。情報処理装置３０は、情報処理装置２０による重複除去処理後のデータブロックについて階層化処理を行なう。情報処理装置３０は、少なくとも処理部３１及び記憶部３２を含む。なお、情報処理装置３０は、階層化エンジン３０と称されもよい。
【００５２】
なお、処理部２１，３１は、それぞれ情報処理装置２０，３０全体を制御する。処理部２１，３１は、単一のプロセッサであってもよいし、マルチプロセッサであってもよい。処理部２１，３１は、例えば、ＣＰＵ（Central Processing Unit），ＭＰＵ（Micro Processing Unit），ＤＳＰ（Digital Signal Processor），ＡＳＩＣ（Application Specific Integrated Circuit），ＰＬＤ（Programmable Logic Device），ＦＰＧＡ（Field Programmable Gate Array）のいずれか一つであってもよい。また、処理部２１，３１は、ＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。
【００５３】
記憶部２２は、処理部２１による重複除去処理に必要な各種データを格納する。当該各種データとしては、例えば、表形式のデータ構造Ｔ１，Ｔ２，Ｔ３（またはＴ３′）が含まれるほか、プログラムなどが含まれる。データ構造Ｔ１，Ｔ２，Ｔ３（またはＴ３′）は、それぞれ記憶部２２の第１〜第３記憶領域２２１，２２２，２２３に記憶される。プログラムとしては、処理部２１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムが含まれてもよい。アプリケーションプログラムには、重複除去プログラム２２０が含まれてもよい。記憶部２２としては、ＲＡＭ（Random Access Memory）やＨＤＤが用いられてもよいし、フラッシュメモリ等の半導体記憶装置（ＳＳＤ）が用いられてもよい。
【００５４】
同様に、記憶部３２は、処理部３１による階層化処理に必要な各種データを格納する。当該各種データとしては、例えば、表形式のデータ構造Ｔ４が含まれるほか、プログラムなどが含まれる。データ構造Ｔ４は、記憶部３２の第４記憶領域３２１に記憶される。プログラムとしては、処理部３１に実行させるＯＳプログラムやアプリケーションプログラムが含まれてもよい。アプリケーションプログラムには、階層化プログラム３２０が含まれてもよい。記憶部３２としては、ＲＡＭやＨＤＤが用いられてもよいし、フラッシュメモリ等の半導体記憶装置（ＳＳＤ）が用いられてもよい。
【００５５】
処理部２１，３１に実行させるプログラムは、光ディスク，メモリ装置，メモリカード等の非一時的な可搬型記録媒体に記録されてもよい。可搬型記録媒体に格納されたプログラムは、例えば処理部２１，３１からの制御により、記憶部２２，３２にインストールされた後、実行可能になる。また、処理部２１，３１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００５６】
なお、光ディスクは、光の反射によって読み取り可能にデータを記録された可搬型の非一時的な記録媒体である。光ディスクとしては、Ｂｌｕ−ｒａｙ，ＤＶＤ（Digital Versatile Disc），ＤＶＤ−ＲＡＭ，ＣＤ−ＲＯＭ（Compact Disc Read Only Memory），ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。メモリ装置は、機器接続インタフェース（図示略）との通信機能を搭載した非一時的な記録媒体、例えばＵＳＢ（Universal Serial Bus）メモリである。メモリカードは、メモリリーダライタ（図示略）を介し処理部１０に接続されてデータの書込／読出対象になる、カード型の非一時的な記録媒体である。
【００５７】
情報処理装置２０の処理部２１は、重複除去プログラム２２０を実行することにより、以下に説明する、重複除去部２１１、算出部２１２、及び制御部２１３としての機能を果たす。
【００５８】
重複除去部２１１は、ストレージ４０，５０の所定アドレス（ホスト１０から見えるアドレス）にデータブロックを書き込む際に前記データブロックについての重複除去処理を行なう。
【００５９】
算出部２１２は、所定アドレスへの書込み回数に相当する指標値を算出する。所定アドレスへの書込み回数に相当する指標値としては、所定アドレスへの書込み回数そのものが用いられてもよいが、本実施形態では、図１１または図１２を参照しながら後述するような値が用いられる。
【００６０】
算出部２１２によってアドレス毎に算出される指標値は、情報処理装置２０の記憶部２２における第１記憶領域２２１に記憶されるデータ構造Ｔ３またはＴ３′において、例えば図１１や図１２に示すように、各アドレスに対応付けられて記憶される。つまり、本実施形態の重複除去エンジン２０では、図１の（Ｇ）に示すごとき被参照数を用いる代わりに、固定サイズのデータ構造Ｔ３またはＴ３′が新たに用意される。
【００６１】
ここで、算出部２１２は、データブロックの書込みが行なわれる都度、時間の経過とともにデータ構造Ｔ３またはＴ３′における複数の指標値相互間の差が相対的に小さくなるように、データ構造Ｔ３またはＴ３′に記憶される複数の指標値を更新する。
【００６２】
このとき、算出部２１２による指標値の算出・更新手法としては、例えば、以下のような二つの手法が考えられる。
【００６３】
まず、一つ目の手法について、図１１を参照しながら説明する。図１１は、本実施形態におけるアドレス（ホスト１０に見せるアドレス）と書込み回数指標値との対応関係（データ構造Ｔ３）の一例を示す図である。なお、一つ目の手法による更新処理手順については、図１７を参照しながら後述する。
【００６４】
一つ目の手法において、算出部２１２は、データ構造Ｔ３に記憶される複数の指標値のそれぞれに０よりも大きく且つ１未満の定数ｘを乗算する。つまり、データ構造Ｔ３における全ての指標値が定数倍される。図１１に示す例では、定数ｘとして０．９９が用いられている。
【００６５】
算出部２１２は、ホスト１０によって指定される書込みアドレス（所定アドレス）がデータ構造Ｔ３に記憶されているか否かを判定する。
【００６６】
書込みアドレスがデータ構造Ｔ３に記憶されている場合、算出部２１２は、当該書込みアドレスに対応する指標値に“１”を加算する。
【００６７】
一方、書込みアドレスがデータ構造Ｔ３に記憶されていない場合、算出部２１２は、データ構造Ｔ３における複数の指標値のうちの最小の指標値と当該最小の指標値に対応付けられたアドレスとをデータ構造Ｔ３から削除する。そして、算出部２１２は、値“１”を、指標値として、当該書込みアドレスに対応付けてデータ構造Ｔ３に追加する。
【００６８】
例えば、図１１の左側に示すデータ構造Ｔ３のごとく、アドレス４の指標値が１０．７であり、アドレス２の指標値が２．２であり、アドレス９の指標値が１．４である時に、ホスト１０からアドレス１０を指定する書込みアクセスが行なわれたとする。この場合、全ての指標値に０．９９が乗算された後、最小の指標値１．４×０．９９＝１．３８６と当該最小の指標値に対応付けられたアドレス９とが削除され、新たな指標値“１”が新たな指定アドレス１０に対応付けられてデータ構造Ｔ３に追加される。このようにデータ構造Ｔ３における指標値は、０以上の小数を含む値になる。
【００６９】
上述した一つ目の手法によれば、ホスト１０からのアクセスの傾向が変わったときに過去の情報に引きずられることなく、直近の傾向を反映したデータ配置が可能になる。
【００７０】
ついで、二つ目の手法について、図１２を参照しながら説明する。図１２は、本実施形態におけるアドレス（ホスト１０に見せるアドレス）と書込み回数指標値との対応関係（データ構造Ｔ３′）の他例を示す図である。なお、二つ目の手法による更新処理手順については、図１８を参照しながら後述する。
【００７１】
二つ目の手法において、算出部２１２は、ホスト１０によって指定される書込みアドレス（所定アドレス）がデータ構造Ｔ３′に記憶されているか否かを判定する。
【００７２】
書込みアドレスがデータ構造Ｔ３′に記憶されている場合、算出部２１２は、当該書込みアドレスに対応する指標値に“１”を加算する。
【００７３】
一方、書込みアドレスがデータ構造Ｔ３′に記憶されていない場合、算出部２１２は、データ構造Ｔ３′における複数の指標値のうちの最小の指標値と当該最小の指標値に対応付けられたアドレスとをデータ構造Ｔ３′から削除する。そして、算出部２１２は、当該最小の指標値に“１”を加算した値を、指標値として、当該書込みアドレスに対応付けてデータ構造Ｔ３′に追加する。
【００７４】
例えば、図１２の左側に示すデータ構造Ｔ３のごとく、アドレス４の指標値が１４であり、アドレス２の指標値が４であり、アドレス９の指標値が２である時に、ホスト１０からアドレス１０を指定する書込みアクセスが行なわれたとする。この場合、最小の指標値２と当該最小の指標値に対応付けられたアドレス９とが削除され、最小の指標値２に“１”を加算した値“３”が、新たな指定アドレス１０に対応付けられてデータ構造Ｔ３′に追加される。このようにデータ構造Ｔ３′における指標値は、１以上の整数値になる。
【００７５】
制御部２１３は、算出部２１２によって上述のごとく算出される指標値に応じ、データブロックについて重複除去処理を実行するか保留するかを決定して切り換える。
【００７６】
特に、制御部２１３は、ホスト１０からの書込みアクセスに応じてデータブロックを所定アドレス（指定された書込みアドレス）に書き込む際に第１記憶領域２２１のデータ構造Ｔ３またはＴ３′を参照する。そして、制御部２１３は、所定アドレスについて算出された指標値が、データ構造Ｔ３またはＴ３′における複数の指標値の中で上位に属する場合、当該データブロックについて重複除去部２１１による重複除去処理を保留させる。
【００７７】
一方、制御部２１３は、所定アドレスについて算出された指標値が、データ構造Ｔ３またはＴ３′における複数の指標値の中で上位に属していない場合、当該データブロックについて重複除去部２１１による重複除去処理を実行させる。
【００７８】
なお、「指標値が複数の指標値の中で上位に属する」か否かを判断する基準は、例えばユーザが上位を規定する割合を指定することで設定される。例えば、ユーザが上位を規定する割合として２０％を指定した場合、データ構造Ｔ３またはＴ３′における指標値の数が１００であれば、指標値が１〜２０位の範囲内であれば「上位に属する」と判断される一方、指標値が２１位以下であれば「上位に属していない」と判断される。
【００７９】
また、本実施形態において、記憶部２２の第２記憶領域２２２及び第３記憶領域２２３には、それぞれ、データ構造Ｔ１（図１９，図２３参照）及びデータ構造Ｔ２（図２０参照）が保存される。
【００８０】
データ構造Ｔ１は、ホスト１０から指定される各アドレスと、当該アドレスに書き込まれるデータブロックから得られるハッシュ値とを対応付ける。図１９，図２３に示すデータ構造Ｔ１では、各アドレスとハッシュ値とが対応づけられている。
【００８１】
データ構造Ｔ２は、各データブロックから得られるハッシュ値と当該ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付ける。重複除去用アドレスは、階層化ストレージ２のアドレス、即ち階層化ストレージ２が重複除去エンジン２０に見せるアドレスである。
【００８２】
本実施形態の重複除去部２１１は、上述したデータ構造Ｔ１，Ｔ２を用いて重複除去処理を実行する。
【００８３】
そして、制御部２１３は、所定アドレスについて算出された指標値が、データ構造Ｔ３またはＴ３′における複数の指標値の中で上位に属する場合、階層化ストレージ２から割り当てられた新たなアドレスに、書込み対象のデータブロックを書き込む。さらに、制御部２１３は、データ構造Ｔ１において、所定アドレスに対応付けられたハッシュ値を、階層化ストレージ２から割り当てられた新たなアドレスに書き換える（図２３参照）。これにより、所定アドレスに対して連続的（頻繁）に書き込まれるデータブロックを、前記新たなアドレスに上書きすることで、当該書込み対象のデータブロックについて重複除去処理が保留される。
【００８４】
このように、重複除去エンジン２０は、書込みアドレスに対応する指標値がデータ構造Ｔ３またはＴ３′における書込み回数指標値の上位に属する場合、重複除去処理を行なわず、ホスト１０に見せるアドレスに対応する領域を階層化ストレージ２から確保し、当該領域にデータブロックを上書き保存する。
【００８５】
ところで、情報処理装置３０の処理部３１は、階層化プログラム３２０を実行することにより、以下に説明する、階層化部３１１としての機能を果たす。
【００８６】
本実施形態のストレージシステム１には、階層化ストレージ２が含まれている。本実施形態の階層化ストレージ２は、性能の異なる複数の記憶デバイス（記憶部）として、ＳＳＤ４０及びＨＤＤ５０を含む。なお、記憶デバイスは、ＳＳＤ，ＨＤＤに限定されるものでなく、性能の異なる他の記憶デバイス、例えばＳＣＭなどが含まれていてもよい。
【００８７】
階層化部３１１は、重複除去用アドレス、または階層化ストレージ２から割当てられた新たなアドレスに対するアクセス頻度（アクセス回数）に応じた性能の記憶デバイスに、重複除去用アドレスまたは新たなアドレスに対応するデータブロックを配置する階層化処理を行なう。
【００８８】
このとき、階層化部３１１は、記憶部３２の第４記憶領域３２１におけるデータ構造Ｔ４（図２６参照）を用いて階層化処理を行なう。データ構造Ｔ４は、重複除去用アドレスまたは新たなアドレスと、当該アドレスに対するアクセス回数と、当該アドレスに対応するデータブロックを配置する記憶デバイスを特定する情報とを対応付ける。記憶デバイスを特定する情報には、例えば、デバイス種別（ＨＤＤかＳＳＤか）と、当該種別のデバイス上のアドレス（ＬＢＡ）とが含まれる。
【００８９】
階層化部３１１による階層化処理では、データ構造Ｔ４を用いて、階層化ストレージ２のアドレス（階層化ストレージ２が重複除去エンジン２０に見せるアドレス）毎に、各アドレスにおけるデータブロックへのデータアクセスが監視される。そして、階層化部３１１は、アドレスに対するアクセス回数を検出し、検出したアクセス頻度と予め設定したポリシとに応じて、各種記憶デバイス間でデータブロックの再配置を行なう。例えば、アクセス頻度の高いデータブロックは処理速度の速い記憶デバイス、つまりＳＳＤ４０に配置され、アクセス頻度の低いデータブロックは処理速度の遅い安価な記憶デバイス、つまりＨＤＤ５０に配置される。
【００９０】
〔４〕本実施形態のストレージシステムの動作
次に、図１３及び図１４を参照しながら関連技術の重複除去エンジンによる動作の流れについて概略的に説明するとともに、関連技術の重複除去エンジンによる動作の流れに対比させ、図１５〜図１８を参照しながら本実施形態の重複除去エンジンによる動作の流れについて概略的に説明する。
【００９１】
〔４−１〕関連技術における書込み動作の流れ
図１３に示すフローチャート（ステップＳ１１〜Ｓ１４）に従って、関連技術の重複除去エンジンにおける書込み動作の流れを説明する。
【００９２】
図１３及び図１４では、図１の（Ｂ）に示すごとく、ホストから指定される各アドレスと、当該アドレスに書き込まれるデータブロックから得られるハッシュ値とを対応付けるデータ構造を、データ構造Ｔ１とする。また、図１の（Ｃ）に示すごとく、ハッシュ値と当該ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付けるデータ構造を、データ構造Ｔ２とする。なお、重複除去用アドレスは、階層化ストレージのアドレス、即ち階層化ストレージが重複除去エンジンに見せるアドレスである。
【００９３】
重複除去エンジンは、ホストからデータブロックの書込み要求を受けると、書込み対象のデータブロックのハッシュ値を算出して取得する（ステップＳ１１）。そして、重複除去エンジンは、データ構造Ｔ２に、取得したハッシュ値が存在するか否かを判定する（ステップＳ１２）。
【００９４】
取得したハッシュ値がデータ構造Ｔ２に存在しない場合（ステップＳ１２のＮＯルート）、階層化ストレージから新たなアドレス（ＬＢＡ；重複除去用アドレス）が割り当てられる。そして、重複除去エンジンは、データ構造Ｔ２に、取得したハッシュ値と割り当てられた新たなアドレスとを対応付けて保存し、書込み対象のデータブロックを、階層化ストレージから割り当てられた新たなアドレスに書き込む（ステップＳ１３）。
【００９５】
ステップＳ１３の処理後、もしくは、取得したハッシュ値がデータ構造Ｔ２に存在する場合（ステップＳ１２のＹＥＳルート）、重複除去エンジンは、データ構造Ｔ１において、ホストから指定されたアドレス（ホストに見せるアドレス）と、取得したハッシュ値とを対応付けて保存し（ステップＳ１４）、処理を終了する。
【００９６】
〔４−２〕関連技術における読出し動作の流れ
図１４に示すフローチャート（ステップＳ２１〜Ｓ２３）に従って、関連技術における読出し動作の流れを説明する。
【００９７】
関連技術において、ホストからデータブロックの読出し要求を受けると、ホストから指定された、読出し対象のデータブロックのアドレスに対応するハッシュ値が、データ構造Ｔ１から検索される（ステップＳ２１）。この後、検索されたハッシュ値に対応する階層化ストレージのアドレスが、データ構造Ｔ２から検索される（ステップＳ２２）。そして、検索された階層化ストレージのアドレスから、読出し対象のデータブロックが読み出され（ステップＳ２３）、処理を終了する。
【００９８】
〔４−３〕本実施形態の重複除去エンジンにおける書込み動作の流れ
図１５に示すフローチャート（ステップＳ３１〜Ｓ３５）に従って、本実施形態の重複除去エンジンにおける書込み動作の流れを説明する。
【００９９】
図１５及び図１６では、図１３及び図１４と同様のデータ構造Ｔ１，Ｔ２が備えられる。また、図１５及び図１６では、図１１または図１２を参照しながら上述したデータ構造を、データ構造Ｔ３またはＴ３′とする。
【０１００】
本実施形態の重複除去エンジン２０は、ホスト１０からデータブロックの書込み要求を受けると、まず、算出部２１２により、ホスト１０から指定されたアドレスについての書込み回数指標値を算出し、データ構造Ｔ３またはＴ３′（各アドレスの書込み回数指標値）を更新する（ステップＳ３１）。データ構造Ｔ３及びＴ３′の更新動作については、それぞれ図１７及び図１８を参照しながら後述する。
【０１０１】
データ構造Ｔ３またはＴ３′の更新後、重複除去エンジン２０の制御部２１３は、更新後のデータ構造Ｔ３またはＴ３′を参照する。そして、制御部２１３は、ホスト１０から指定された書込みアドレスについて算出された指標値が、データ構造Ｔ３またはＴ３′における複数の指標値の中で上位に属するか否かを判定する（ステップＳ３２）。
【０１０２】
書込みアドレスについて算出された指標値が上位に属する場合（ステップＳ３２のＹＥＳルート）、階層化ストレージ２から新たなアドレスが割り当てられる。そして、制御部２１３は、書込み対象のデータブロックを、階層化ストレージ２から割り当てられた新たなアドレスに書き込む（ステップＳ３３）。
【０１０３】
さらに、制御部２１３は、データ構造Ｔ１において、書込みアドレスと、階層化ストレージ２から割り当てられた新たなアドレスとを対応付けて保存し（ステップＳ３４；図２３の網掛け部分参照）、処理を終了する。これにより、書込みアドレスに対して連続的（頻繁）に書き込まれるデータブロックが、階層化ストレージ２から割り当てられた新たなアドレスに上書きされ、当該データブロックについて重複除去処理が保留される。
【０１０４】
一方、書込みアドレスについて算出された指標値が上位に属していない場合（ステップＳ３２のＮＯルート）、重複除去部２１１によって、関連技術と同様の処理、つまり図１３に示す重複除去処理が実行され（ステップＳ３５）、処理を終了する。
【０１０５】
〔４−４〕本実施形態における読出し動作の流れ
図１６に示すフローチャート（ステップＳ４１〜Ｓ４４）に従って、本実施形態における読出し動作の流れを説明する。
【０１０６】
本実施形態において、ホスト１０からデータブロックの読出し要求を受けると、制御部２１３は、データ構造Ｔ３またはＴ３′を参照する。そして、制御部２１３は、ホスト１０から指定された読出しアドレスについての指標値が、データ構造Ｔ３またはＴ３′における複数の指標値の中で上位に属するか否かを判定する（ステップＳ４１）。
【０１０７】
読出しアドレスについての指標値が上位に属する場合（ステップＳ４１のＹＥＳルート）、制御部２１３は、データ構造Ｔ１から、読出しアドレスに対応する階層化ストレージ２のアドレスを検索する（ステップＳ４２；図２３の網掛け部分参照）。そして、制御部２１３は、検索された階層化ストレージ２のアドレスから、読出し対象のデータブロックを読み出し（ステップＳ４３）、処理を終了する。
【０１０８】
一方、読出しアドレスについての指標値が上位に属していない場合（ステップＳ４１のＮＯルート）、制御部２１３によって、関連技術と同様の処理、つまり図１４に示す読出し処理が実行され（ステップＳ４４）、処理を終了する。
【０１０９】
〔４−５〕本実施形態における書込み回数指標値の一例についての更新動作の流れ
図１７に示すフローチャート（ステップＳ５１〜Ｓ５４）に従って、本実施形態における書込み回数指標値の一例、つまり図１１に示すデータ構造Ｔ３についての、算出部２１２による更新動作（図１５のステップＳ３１）の流れを説明する。
【０１１０】
ホスト１０からデータブロックの書込み要求を受けると、まず、算出部２１２は、データ構造Ｔ３に記憶される複数の指標値のそれぞれに定数ｘ（０＜ｘ＜１；例えば０．９９）を乗算する。つまり、データ構造Ｔ３における全ての指標値が定数倍される（ステップＳ５１）。
【０１１１】
この後、算出部２１２は、ホスト１０によって指定される書込みアドレスがデータ構造Ｔ３に存在するか否かを判定する（ステップＳ５２）。
【０１１２】
書込みアドレスがデータ構造Ｔ３に存在する場合（ステップＳ５２のＹＥＳルート）、算出部２１２は、データ構造Ｔ３における当該書込みアドレスに対応する指標値に“１”を加算し（ステップＳ５３）、処理を終了する。
【０１１３】
一方、書込みアドレスがデータ構造Ｔ３に存在しない場合（ステップＳ５２のＮＯルート）、算出部２１２は、最小の指標値と当該最小の指標値に対応付けられたアドレスとをデータ構造Ｔ３から削除する。そして、算出部２１２は、値“１”を、指標値として、当該書込みアドレスに対応付けてデータ構造Ｔ３に追加し（ステップＳ５４）、処理を終了する。
【０１１４】
〔４−６〕本実施形態における書込み回数指標値の他例についての更新動作の流れ
図１８に示すフローチャート（ステップＳ６１〜Ｓ６３）に従って、本実施形態における書込み回数指標値の他例、つまり図１２に示すデータ構造Ｔ３′についての、算出部２１２による更新動作（図１５のステップＳ３１）の流れを説明する。
【０１１５】
ホスト１０からデータブロックの書込み要求を受けると、まず、算出部２１２は、ホスト１０によって指定される書込みアドレスがデータ構造Ｔ３′に存在するか否かを判定する（ステップＳ６１）。
【０１１６】
書込みアドレスがデータ構造Ｔ３′に存在する場合（ステップＳ６１のＹＥＳルート）、算出部２１２は、データ構造Ｔ３′における当該書込みアドレスに対応する指標値に“１”を加算し（ステップＳ６２）、処理を終了する。
【０１１７】
一方、書込みアドレスがデータ構造Ｔ３′に存在しない場合（ステップＳ６１のＮＯルート）、算出部２１２は、最小の指標値と当該最小の指標値に対応付けられたアドレスとをデータ構造Ｔ３′から削除する。そして、算出部２１２は、当該最小の指標値に“１”を加算した値を、指標値として、当該書込みアドレスに対応付けてデータ構造Ｔ３′に追加し（ステップＳ６３）、処理を終了する。
【０１１８】
〔５〕本実施形態のストレージシステムの具体的な動作
次に、図１９〜図２２を参照しながら関連技術による具体的な動作の流れについて説明するとともに、関連技術による具体的な動作の流れに対比させ、図２３〜図２６を参照しながら本実施形態による具体的な動作の流れについて説明する。
【０１１９】
〔５−１〕関連技術について
図１に示す関連技術において、上述した課題が生じた場合の状況について、具体的に説明する。例えば、図１に示す関連技術において、ホストから、図３に示すような書込み要求、つまりアドレス０に対するデータブロックａ〜ｆの書込みアクセスが連続的（頻繁）に発生したものとする。このときの、図１に示す関連技術での状況を図１９〜図２２に示す。
【０１２０】
図１９は、関連技術の重複除去エンジンにおけるアドレス（ホストに見せるアドレス）とハッシュ値との対応関係の一例、つまりデータ構造Ｔ１の内容を示す図である。図１９では、ホストからのアドレス０に対するデータブロックａ〜ｆの書込みアクセスの処理を完了した時点でのデータ構造Ｔ１の状態が示されている。アドレス０にはデータブロックｆが最終的に書き込まれるため、図１９に示すデータ構造Ｔ１では、アドレス０に対応付けられたハッシュ値は“Ｆ”になっている（網掛け部分参照）。
【０１２１】
また、図２０は、関連技術の重複除去エンジンにおけるハッシュ値と重複除去用アドレス（階層化ストレージのアドレス）との対応関係の一例、つまりデータ構造Ｔ２の内容を示す図である。図２０では、ホストからのアドレス０に対するデータブロックａ〜ｆの書込みアクセスを処理した時点でのデータ構造Ｔ２の状態が示されている。データブロックａ〜ｃに続きデータブロックｄ〜ｆが連続的に書き込まれる。このため、図２０に示すデータ構造Ｔ２では、データブロックｄ〜ｆのハッシュ値Ｄ〜Ｆが、それぞれ、階層化ストレージから割り当てられたアドレス（重複除去用アドレス）３〜５に対応付けられている（網掛け部分参照）。
【０１２２】
このとき、図２１に示すように、階層化ストレージのアドレス（階層化ストレージが重複除去エンジンに見せるアドレス）３〜５には、それぞれデータブロックｄ〜ｆが書き込まれている（網掛け部分参照）。なお、図２１は、関連技術における重複除去用アドレス（階層化ストレージのアドレス）とデータブロックとの対応関係の一例を示す図である。
【０１２３】
図２２は、関連技術の階層化ストレージにおけるデータ構造Ｔ４の一例を示す図で、図２２では、ホストからのアドレス０に対するデータブロックａ〜ｆの書込みアクセスを処理した時点でのデータ構造Ｔ４の状態が示されている。データブロックａ〜ｃに続きデータブロックｄ〜ｆが連続的に書き込まれる。このため、図２２に示すデータ構造Ｔ４では、データ構造Ｔ４のアドレス３〜５について、それぞれ、アクセス回数１，１，３と、デバイス種別ＨＤＤ，ＨＤＤ，ＨＤＤと、記憶デバイス（ここではＨＤＤ）上のアドレス（ＬＢＡ）２，３，４とが対応付けられている（網掛け部分参照）。
【０１２４】
なお、図２２に示すデータ構造Ｔ４では、アクセス回数が２０回のアドレス０のみが処理速度の速いＳＳＤ上のアドレスに対応付けられ、データブロックａはＳＳＤ上に配置されている。また、図２２に示すデータ構造Ｔ４では、アクセス回数の少ないアドレス１〜５が処理速度の遅いＨＤＤ上のアドレスに対応付けられ、データブロックｂ〜ｆはＨＤＤ上に配置されている。
【０１２５】
図１９〜図２２を参照しながら上述した状況において、課題となる点は二つある。
【０１２６】
一つ目は、図３や図１９に示すようにホストに見せるアドレス０は頻繁に書き換えられているにも関わらず、データブロック毎の出現頻度が低いため、階層化処理によって各データブロックは低速なＨＤＤに割り当てられ（図２２の網掛け部分参照）、性能の低下を招いている点である。
【０１２７】
二つ目は、ホストに見せるアドレス０には最終的にデータブロックｆが保存されていればよいにも関わらず（図２５参照）、各データブロックｄ〜ｆの内容が異なるため、図２１に示すように、重複除去処理によって、各データブロックに新たなアドレスが割り当てられる点である。このため、階層化ストレージにおける記憶領域が無駄に使用され（図２１の網掛け部分参照）、ガベージコレクションの処理量が増加して階層化ストレージの性能が低下する。
【０１２８】
〔５−２〕本実施形態について
そこで、上述した本実施形態の技術によって、上述した関連技術における二つの課題が解消される状況について、図２３〜図２６を参照しながら具体的に説明する。
【０１２９】
本実施形態においても、ホスト１０から、図３に示すような書込み要求、つまりアドレス０に対するデータブロックａ〜ｆの書込みアクセスが連続的（頻繁）に発生したものとする。このとき、本実施形態の技術を適用した場合の状況を図２３〜図２６に示す。そして、ここでは、図３の時刻ｔ＝ｔ３の時点で、アドレス０についての書込み回数指標値がデータ構造Ｔ３における複数の指標値の中の上位に属するようになったとする。
【０１３０】
このとき、時刻ｔ＝ｔ３の時点で、制御部２１３は、階層化ストレージ２から割り当てられた新たなアドレス（ＬＢＡ；階層化ストレージ２のアドレス）３に、書込み対象のデータブロックを書き込む。また、制御部２１３は、図２３に示すように、データ構造Ｔ１において、アドレス０に対応付けられたハッシュ値を、階層化ストレージ２から割り当てられた新たなアドレス３に書き換える（網掛け部分参照）。なお、図２３は、本実施形態の重複除去エンジン２０におけるアドレス（ホスト１０に見せるアドレス）とハッシュ値または階層化ストレージ２のアドレスとの対応関係の一例、つまりデータ構造Ｔ１の内容を示す図である。
【０１３１】
これにより、アドレス０に対して連続的（頻繁）に書き込まれるデータブロックは、階層化ストレージ２の新たなアドレス３に上書きされることで、当該書込み対象のデータブロックについて重複除去処理が保留される。つまり、アドレス０の書換え回数が多いためにアドレス０への書込み対象のデータブロックについての重複除去処理は実行されない。
【０１３２】
図２４は、本実施形態におけるアドレス（ホスト１０に見せるアドレス）と書込み回数指標値との対応関係の一例、つまりデータ構造Ｔ３の内容を示す図である。図２４では、ホスト１０からのアドレス０に対するデータブロックａ〜ｆの書込みアクセスを処理した時点でのデータ構造Ｔ３の状態が示されており、アドレス０についての書込み回数指標値として、上位に属する、例えば６が対応付けられている（網掛け部分参照）。
【０１３３】
このとき、関連技術では、図２１に示すように、階層化ストレージのアドレス３〜５にはそれぞれデータブロックｄ〜ｆが書き込まれている。これに対し、本実施形態の技術では、重複除去を行なわないように切り換えることで、図２５に示すように、階層化ストレージ２のアドレス３において、データブロックｄ，ｅが順次上書きされ、データブロックｆだけが残っている。なお、図２５は、本実施形態の階層化ストレージ２が重複除去エンジン２０に見せるアドレスとデータブロックとの対応関係の一例を示す図である。
【０１３４】
図２６は、本実施形態の階層化ストレージ２におけるデータ構造Ｔ４の一例を示す図であり、図２６では、ホスト１０からのアドレス０に対するデータブロックａ〜ｆの書込みアクセスを処理した時点でのデータ構造Ｔ４の状態が示されている。
【０１３５】
関連技術のデータ構造Ｔ４では、図２２に示すように、階層化ストレージのアドレス３，４，５の全てがＨＤＤ上に配置されている。これに対し、本実施形態の技術を適用した場合のデータ構造Ｔ４では、階層化ストレージ２のアドレス３に書込みが集中することで、図２６に示すように、アドレス３に対するアクセス回数が増加し例えば“６”になる。これにより、階層化部３１１の階層化処理によって、アドレス３はＳＳＤ４０上に移動配置される（網掛け部分参照）。
【０１３６】
上述のごとく、本実施形態の技術によれば、ホスト１０から、所定アドレスに対するデータブロックの書込みアクセスが連続的（頻繁）に発生した場合、当該データブロックについて重複除去処理が保留される。
【０１３７】
このため、階層化ストレージ２における記憶領域が無駄に使用されることを抑止でき（図２５の網掛け部分参照）、階層化ストレージ２を効率よく利用しながら重複除去を実現することができる。つまり、重複除去処理を先に行なってから階層化処理を行なう場合に生じる、上述した二つ目の課題を解消することができる。
【０１３８】
また、データブロックの書込みが、階層化ストレージ２から割り当てられた階層化ストレージ２のアドレス（上述の例では３）に集中することになり、当該アドレスに対するアクセス回数が増加する。したがって、当該アドレスは高速デバイス（ＳＳＤ４０）に配置され（図２６の網掛け部分参照）、性能低下を招くことがない。つまり、重複除去処理を先に行なってから階層化処理を行なう場合に生じる、上述した一つ目の課題を解消することができる。
【０１３９】
このように、本実施形態によれば、全てのデータブロックに対し重複除去処理を行なわず、データブロックを何度も書き換えられるアドレスについて、実デバイス上の領域が新たに確保され、当該領域に当該データブロックが上書き保存される。これにより、同一アドレスに連続的（頻繁）に書き込まれるデータブロックに対しては、重複除去処理が行なわれないようにする。したがって、同一アドレスにおけるデータブロックが何度も書き換えられる際に、階層ストレージ２上での記憶領域の使用量が増大するのを抑止しながら、重複除去処理を実現することができる。つまり、階層化ストレージ２を効率よく利用しながら重複除去を実現することができる。
【０１４０】
その際、直近の一定期間内にホスト１０から受けた書込みアクセスについてのみアドレス毎の書込み回数指標値を記憶すること、即ちデータ構造Ｔ３またはＴ３′を追加することは、全てのハッシュ値について被参照数を記憶する場合に比べ、メモリ使用量が少なくて済む。つまり、本実施形態によれば、メモリ使用量を増大させることなく、階層化ストレージ２を効率よく利用しながら重複除去を実現することができる。
【０１４１】
また、本実施形態によれば、ストレージが階層化ストレージ２である場合、書き換えられた古いデータブロックが、アクセス頻度が低いにも関わらず、高速デバイス（ＳＳＤ４０）に残存するのを抑止することができる。
【０１４２】
さらに、本実施形態によれば、データブロックの書込みが行なわれる都度、時間の経過とともにデータ構造Ｔ３またはＴ３′における複数の指標値相互間の差が相対的に小さくなるように、データ構造Ｔ３またはＴ３′に記憶される複数の指標値が更新される。これにより、ホスト１０からのアクセスの傾向が変わったときに過去の情報に引きずられることなく、直近の傾向を反映したデータ配置が可能になる。
【０１４３】
〔６〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
【０１４４】
例えば、上述した実施形態では、重複除去エンジン２０を適用されるストレージが階層化ストレージ２である場合について説明したが、本発明は、これに限定されるものでなく、階層化ストレージ以外の各種ストレージにも同様に適用され、上述と同様の作用効果を得ることができる。
【０１４５】
また、上述した実施形態では、各アドレスについての書込み回数指標値がデータ構造Ｔ３またはＴ３′の中の複数の指標値の上位に属するか否かを判定し、その判定結果に応じて重複除去処理の保留／実行の切換を行なっている。しかし、本発明は、これに限定されるものでなく、例えば、各アドレスについての書込み回数指標値が所定の閾値を超えたか否かを判定し、その判定結果に応じて重複除去処理の保留／実行の切換を行なってもよく、この場合も、上述した実施形態と同様の作用効果を得ることができる。
【０１４６】
〔７〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１４７】
（付記１）
ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なう重複除去部と、
前記所定アドレスへの書込み回数に相当する指標値を算出する算出部と、
前記算出部によって算出される前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定して切り換える制御部と、を有する、情報処理装置。
【０１４８】
（付記２）
前記所定アドレスを含む複数のアドレスについて前記算出部によって算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第１記憶領域を有し、
前記制御部は、
前記データブロックを前記所定アドレスに書き込む際に前記第１記憶領域を参照し、
前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留させる、付記１に記載の情報処理装置。
【０１４９】
（付記３）
前記制御部は、前記指標値が前記複数の指標値の中で上位に属していない場合、前記データブロックについて前記重複除去処理を実行させる、付記２に記載の情報処理装置。
【０１５０】
（付記４）
前記算出部は、時間の経過とともに前記複数の指標値相互間の差が相対的に小さくなるように、前記第１記憶領域に記憶される前記複数の指標値を更新する、付記２または付記３に記載の情報処理装置。
【０１５１】
（付記５）
前記算出部は、
前記第１記憶領域に記憶される前記複数の指標値のそれぞれに０よりも大きく且つ１未満の定数を乗算し、
前記所定アドレスが前記第１記憶領域に記憶されているか否かを判定し、
前記所定アドレスが前記第１記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“１”を加算する一方、
前記所定アドレスが前記第１記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第１記憶領域から削除し、値“１”を、前記指標値として、前記所定アドレスに対応付けて前記第１記憶領域に追加する、付記４に記載の情報処理装置。
【０１５２】
（付記６）
前記算出部は、
前記所定アドレスが前記第１記憶領域に記憶されているか否かを判定し、
前記所定アドレスが前記第１記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“１”を加算する一方、
前記所定アドレスが前記第１記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第１記憶領域から削除し、前記最小の指標値に“１”を加算した値を、前記指標値として、前記所定アドレスに対応付けて前記第１記憶領域に追加する、付記４に記載の情報処理装置。
【０１５３】
（付記７）
前記複数のアドレスと各アドレスに書き込まれる各データブロックから得られるハッシュ値とを対応付けて記憶する第２記憶領域と、
前記ハッシュ値と前記ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付けて記憶する第３記憶領域と、を有し、
前記重複除去部は、前記第２記憶領域及び前記第３記憶領域を用いて前記重複除去処理を実行し、
前記制御部は、前記指標値が前記複数の指標値の中で上位に属する場合、前記ストレージから割り当てられた新たなアドレスに前記データブロックを書き込むとともに、前記第２記憶領域において、前記所定アドレスに対応付けられたハッシュ値を、前記新たなアドレスに書き換え、前記所定アドレスに対して連続的に書き込まれるデータブロックを、前記新たなアドレスに上書きすることで、前記データブロックについて前記重複除去処理を保留させる、付記２〜付記６のいずれか一項に記載の情報処理装置。
【０１５４】
（付記８）
前記ストレージは、性能の異なる複数の記憶部を含む階層化ストレージであり、
前記複数の記憶部のうち、前記重複除去用アドレスまたは前記新たなアドレスに対するアクセス頻度に応じた性能の記憶部に、前記重複除去用アドレスまたは前記新たなアドレスに対応するデータブロックを配置する階層化処理を行なう階層化部を有する、付記７に記載の情報処理装置。
【０１５５】
（付記９）
前記重複除去用アドレスまたは前記新たなアドレスと、前記アクセス頻度と、前記重複除去用アドレスまたは前記新たなアドレスに対応するデータブロックを配置する前記記憶部を特定する情報とを対応付けて記憶する第４記憶領域を有し、
前記階層化部は、前記第４記憶領域を用いて前記階層化処理を実行する、付記８に記載の情報処理装置。
【０１５６】
（付記１０）
ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なうコンピュータに、
前記所定アドレスへの書込み回数に相当する指標値を算出し、
算出した前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定して切り換える、
処理を実行させる、重複除去プログラム。
【０１５７】
（付記１１）
前記所定アドレスを含む複数のアドレスについて算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第１記憶領域を、前記データブロックを前記所定アドレスに書き込む際に参照し、
前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留する、
処理を、前記コンピュータに実行させる、付記１０に記載の重複除去プログラム。
【０１５８】
（付記１２）
前記指標値が前記複数の指標値の中で上位に属していない場合、前記データブロックについて前記重複除去処理を実行する、
処理を、前記コンピュータに実行させる、付記１１に記載の重複除去プログラム。
【０１５９】
（付記１３）
時間の経過とともに前記複数の指標値相互間の差が相対的に小さくなるように、前記第１記憶領域に記憶される前記複数の指標値を更新する、
処理を、前記コンピュータに実行させる、付記１１または付記１２に記載の重複除去プログラム。
【０１６０】
（付記１４）
前記第１記憶領域に記憶される前記複数の指標値のそれぞれに０よりも大きく且つ１未満の定数を乗算し、
前記所定アドレスが前記第１記憶領域に記憶されているか否かを判定し、
前記所定アドレスが前記第１記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“１”を加算する一方、
前記所定アドレスが前記第１記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第１記憶領域から削除し、値“１”を、前記指標値として、前記所定アドレスに対応付けて前記第１記憶領域に追加する、
処理を、前記コンピュータに実行させる、付記１３に記載の重複除去プログラム。
【０１６１】
（付記１５）
前記所定アドレスが前記第１記憶領域に記憶されているか否かを判定し、
前記所定アドレスが前記第１記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“１”を加算する一方、
前記所定アドレスが前記第１記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第１記憶領域から削除し、前記最小の指標値に“１”を加算した値を、前記指標値として、前記所定アドレスに対応付けて前記第１記憶領域に追加する、
処理を、前記コンピュータに実行させる、付記１３に記載の重複除去プログラム。
【０１６２】
（付記１６）
ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なうコンピュータが、
前記所定アドレスへの書込み回数に相当する指標値を算出し、
算出した前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定して切り換える、重複除去方法。
【０１６３】
（付記１７）
前記コンピュータが、
前記所定アドレスを含む複数のアドレスについて算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第１記憶領域を、前記データブロックを前記所定アドレスに書き込む際に参照し、
前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留する、付記１６に記載の重複除去方法。
【０１６４】
（付記１８）
前記コンピュータが、時間の経過とともに前記複数の指標値相互間の差が相対的に小さくなるように、前記第１記憶領域に記憶される前記複数の指標値を更新する、付記１７に記載の重複除去方法。
【０１６５】
（付記１９）
前記コンピュータが、
前記第１記憶領域に記憶される前記複数の指標値のそれぞれに０よりも大きく且つ１未満の定数を乗算し、
前記所定アドレスが前記第１記憶領域に記憶されているか否かを判定し、
前記所定アドレスが前記第１記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“１”を加算する一方、
前記所定アドレスが前記第１記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第１記憶領域から削除し、値“１”を、前記指標値として、前記所定アドレスに対応付けて前記第１記憶領域に追加する、付記１８に記載の重複除去方法。
【０１６６】
（付記２０）
前記コンピュータが、
前記所定アドレスが前記第１記憶領域に記憶されているか否かを判定し、
前記所定アドレスが前記第１記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“１”を加算する一方、
前記所定アドレスが前記第１記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第１記憶領域から削除し、前記最小の指標値に“１”を加算した値を、前記指標値として、前記所定アドレスに対応付けて前記第１記憶領域に追加する、付記１８に記載の重複除去方法。
【符号の説明】
【０１６７】
１    ストレージシステム
２    階層化ストレージ（ストレージ）
１０    ホスト
２０    情報処理装置（重複除去エンジン，ＰＣ，コンピュータ）
２１    処理部
２１１    重複除去部
２１２    算出部
２１３    制御部
２２    記憶部
２２０    重複除去プログラム
２２１    第１記憶領域
２２２    第２記憶領域
２２３    第３記憶領域
３０    情報処理装置（階層化エンジン，ＰＣ，コンピュータ）
３１    処理部
３１１    階層化部
３２    記憶部
３２０    階層化プログラム
３２１    第４記憶領域
４０    ＳＳＤ（記憶部）
５０    ＨＤＤ（記憶部）
Ｔ１〜Ｔ４    データ構造
【図１】
0006724534.tif 000002
【図２】
0006724534.tif 000003
【図３】
0006724534.tif 000004
【図４】
0006724534.tif 000005
【図５】
0006724534.tif 000006
【図６】
0006724534.tif 000007
【図７】
0006724534.tif 000008
【図８】
0006724534.tif 000009
【図９】
0006724534.tif 000010
【図１０】
0006724534.tif 000011
【図１１】
0006724534.tif 000012
【図１２】
0006724534.tif 000013
【図１３】
0006724534.tif 000014
【図１４】
0006724534.tif 000015
【図１５】
0006724534.tif 000016
【図１６】
0006724534.tif 000017
【図１７】
0006724534.tif 000018
【図１８】
0006724534.tif 000019
【図１９】
0006724534.tif 000020
【図２０】
0006724534.tif 000021
【図２１】
0006724534.tif 000022
【図２２】
0006724534.tif 000023
【図２３】
0006724534.tif 000024
【図２４】
0006724534.tif 000025
【図２５】
0006724534.tif 000026
【図２６】
0006724534.tif 000027