(57)【要約】【課題】  単位管理データ量当たりのデータの削減量を大きくすることが出来る技術を提供する。【解決手段】ストレージ制御装置１０は、格納対象データが、重複数がＮ（Ｎは自然数）未満のデータである場合、格納対象データをフィルタ情報に登録することなく記憶装置に格納し、重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報に登録されていないデータである場合、格納対象データを前記フィルタ情報に登録するとともに記憶装置内に格納し、重複数がＮ以上、且つ、フィルタ情報の管理対象のデータである場合、格納対象データのフィルタ情報への登録及び格納対象データの前記記憶装置内への格納のいずれも行わない。【選択図】図３
2014199573.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置を制御するストレージ制御装置において、
入力された第１のアドレスに対応するハッシュ値と、前記記憶装置のアドレスである第２のアドレスとの対応関係を管理する対応関係情報と、ブルームフィルタを含むフィルタ情報と、前記記憶装置に格納された各データの重複数を管理する重複数管理情報とを保持する保持部と、
前記記憶装置に格納が指示された格納対象データが、前記重複数管理情報が示す重複数がＮ（Ｎは自然数）未満のデータである第１のデータ種別である場合、前記重複数を１だけ増分し、前記格納対象データを前記フィルタ情報に登録することなく前記記憶装置に格納し、前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報に登録されていないデータである第２のデータ種別である場合、前記格納対象データを前記フィルタ情報に登録するとともに前記記憶装置内に格納し、前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報の管理対象のデータである第３のデータ種別である場合、前記格納対象データの前記フィルタ情報への登録及び前記格納対象データの前記記憶装置内への格納のいずれも行わない格納処理部と、
前記記憶装置に格納されたデータの中から特定した前記記憶装置から削除しても同内容のデータが前記記憶装置内に残る削除可能データを、前記記憶装置から削除する後処理部と、
を有することを特徴とするストレージ制御装置。
【請求項２】
前記格納処理部はさらに、
前記格納対象データを前記記憶装置内に格納する場合、格納した前記格納対象データを読み出せるように前記対応関係情報を更新する
ことを特徴とする請求項１記載のストレージ制御装置。
【請求項３】
Ｎが、２以上の値であり、
前記重複数管理情報は、
第１のブルームフィルタから第ＮのブルームフィルタまでのＮ個のブルームフィルタを含み、
前記格納処理部は、
前記格納対象データが前記第１のブルームフィルタに登録されていないデータであった場合に、前記格納対象データが、前記重複数が０の前記第１のデータ種別であると判別し、
前記格納対象データが前記第１のブルームフィルタから第Ｋ（１≦Ｋ＜Ｎ−１）のブルームフィルタまでのＫ個のブルームフィルタに登録されており、且つ、第Ｋ＋１のブルームフィルタに登録されていないデータであった場合に、前記格納対象データが、前記重複数がＫの前記第１のデータ種別であると判別し、
前記格納対象データが、前記第１のブルームフィルタから第Ｎ−１のブルームフィルタまでのＮ−１個のブルームフィルタに登録されており、且つ、前記第Ｎのブルームフィルタに登録されていないデータであった場合に、前記格納対象データが前記第２のデータ種別であると判別し、
前記格納対象データが、前記第１乃至第Ｎのブルームフィルタの全てに登録されており、且つ、前記フィルタ情報の管理対象となっているデータであった場合に、前記格納対象データが前記第３のデータ種別であると判別し、
重複数がＪ（１≦Ｊ＜Ｎ）の前記第１のデータ種別である前記格納対象データの重複数を１だけ増分する際、前記格納対象データを前記第Ｊ＋１のブルームフィルタに登録する
ことを特徴とする請求項１に記載のストレージ制御装置。
【請求項４】
Ｎが、１であり、
前記重複数管理情報が、１つのブルームフィルタであり、
前記格納処理部は、
前記格納対象データが前記重複数管理情報に登録されていないか登録されているかを判断することより、前記格納対象データが、重複数が０の前記第１のデータ種別であるか否かを判別し、
前記格納対象データが前記第１のデータ種別ではないと判別した場合には、さらに、前記格納対象データが前記フィルタ情報の管理対象となっているか否かを判断することにより、前記格納対象データが、重複数が１の前記第２のデータ種別であるか、前記第３のデータ種別であるかを判別し、
前記格納対象データの重複数を１だけ増分する際、前記格納対象データを前記重複数管理情報に登録する
ことを特徴とする請求項１に記載のストレージ制御装置。
【請求項５】
前記後処理部は、
前記格納処理部により前記格納対象データを前記フィルタ情報に登録することなく前記記憶装置に格納する処理が行われる度に、行われた当該処理で前記記憶装置内に書き込まれた前記格納対象データと同内容の、重複数がＮ未満ではないことを前記重複数管理情報が示しているデータを、前記削除可データとして取り扱う
ことを特徴とする請求項１から４のいずれか一項に記載のストレージ制御装置。
【請求項６】
前記対応関係情報は、
或るデータに関する前記第１のアドレスと、当該データに関する前記第２のアドレス、又は、当該データについての、当該データから所定アルゴリズムにて算出されたハッシュ値である検証用ハッシュ値とが設定されたレコードを複数個記憶できるマップテーブルと、
前記記憶装置内の互いに異なるデータ記憶領域に対応づけられたｍ（≧２）個のログテーブルであって、それぞれ、或るデータについての前記検証用ハッシュ値と当該データが書き込まれている前記記憶装置の単位記憶領域の前記第２のアドレスとが設定されたレコードを複数個記憶できるｍ個のログテーブルと、を含み、
前記フィルタ情報は、
前記ｍ個のログテーブルに対応づけられたｍ個の前記データ記憶領域の中の、互いに異なる前記データ記憶領域に対応づけられたｍ個のブルームフィルタを、含み
前記格納処理部は、
前記記憶装置に格納が指示された格納対象データが、前記重複数管理情報が示す重複数がＮ（Ｎは自然数）未満のデータである第１のデータ種別である場合、前記格納対象データに関する前記第１種アドレスと前記格納対象データが書き込まれた単位記憶領域の前記第２のアドレスとが設定されたレコードを前記マップテーブルに追加し、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報に登録されていないデータである第２のデータ種別である場合、前記格納対象データを、前記ｍ個のブルームフィルタの中の、前記格納対象データが書き込まれた単位記憶領域を含む前記データ記憶領域に対応づけられているブルームフィルタに登録し、前記格納対象データに関する前記第１種アドレスと前記格納対象データについての前記検証用ハッシュ値とを設定したレコードを前記マップテーブルに追加し、前記格納対象データが書き込まれた単位記憶領域を含む前記データ記憶領域に対応づけられている前記ログテーブルに前記格納対象データについての前記検証用ハッシュ値と前記格納対象データが書き込まれた当該単位記憶領域の前記第２のアドレスとが設定されたレコードを追加し、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報の管理対象のデータである第３のデータ種別である場合、前記格納対象データに関する第１種アドレスと前記格納対象データについての前記検証用ハッシュ値とを設定したレコードを前記マップテーブルに追加する
ことを特徴とする請求項１から５のいずれか一項に記載のストレージ制御装置。
【請求項７】
前記後処理部は、
前記マップテーブルに前記第２のアドレスが設定されたレコードが記憶されており、且つ、重複数がＮ未満ではないことを前記重複数管理情報が示しているデータを、前記削除可データとして特定する
ことを特徴とする請求項６に記載のストレージ制御装置。
【請求項８】
前記フィルタ情報が、
前記ｍ個のブルームフィルタを、最下段のブルームフィルタとして含む多段ブルームフィルタである
ことを特徴とする請求項６又は７に記載のストレージ制御装置。
【請求項９】
記憶装置を制御するストレージ制御装置の制御方法において、
前記ストレージ制御装置が、
入力された第１のアドレスに対応するハッシュ値と、前記記憶装置のアドレスである第２のアドレスとの対応関係を管理する対応関係情報と、ブルームフィルタを含むフィルタ情報と、前記記憶装置に格納された各データの重複数を管理する重複数管理情報とを、前記ストレージ制御装置が有する保持部に保持し、
前記記憶装置に格納が指示された格納対象データが、前記重複数管理情報が示す重複数がＮ（Ｎは自然数）未満のデータである第１のデータ種別である場合、前記重複数を１だけ増分し、前記格納対象データを前記フィルタ情報に登録することなく前記記憶装置に格納し、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報に登録されていないデータである第２のデータ種別である場合、前記格納対象データを前記フィルタ情報に登録するとともに前記記憶装置内に格納し、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報の管理対象のデータである第３のデータ種別である場合、前記格納対象データの前記フィルタ情報への登録及び前記格納対象データの前記記憶装置内への格納のいずれも行なわず、
前記記憶装置に格納されたデータの中から特定した前記記憶装置から削除しても同内容のデータが前記記憶装置内に残る削除可能データを、前記記憶装置から削除する
ことを特徴とするストレージ制御装置の制御方法。
【請求項１０】
記憶装置を制御するストレージ制御装置の制御プログラムにおいて、
前記ストレージ制御装置に、
入力された第１のアドレスに対応するハッシュ値と、前記記憶装置のアドレスである第２のアドレスとの対応関係を管理する対応関係情報と、ブルームフィルタを含むフィルタ情報と、前記記憶装置に格納された各データの重複数を管理する重複数管理情報とを、前記ストレージ制御装置が有する保持部に保持させ、
前記記憶装置に格納が指示された格納対象データが、前記重複数管理情報が示す重複数がＮ（Ｎは自然数）未満のデータである第１のデータ種別である場合、前記重複数を１だけ増分し、前記格納対象データを前記フィルタ情報に登録することなく前記記憶装置に格納させ、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報に登録されていないデータである第２のデータ種別である場合、前記格納対象データを前記フィルタ情報に登録するとともに前記記憶装置内に格納させ、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報の管理対象のデータである第３のデータ種別である場合、前記格納対象データの前記フィルタ情報への登録及び前記格納対象データの前記記憶装置内への格納のいずれも行なわさせず、
前記記憶装置に格納されたデータの中から特定した前記記憶装置から削除しても同内容
のデータが前記記憶装置内に残る削除可能データを、前記記憶装置から削除させる
ことを特徴とするストレージ制御装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、ストレージ制御装置の制御方法およびストレージ制御装置の制御プログラムに関する。
【背景技術】
【０００２】
記憶装置（ストレージ）の記憶容量の有効活用を図る技術として、データ重複除去、重複排除等と呼ばれている、重複したデータを記憶装置内に記憶しない技術が知られている。そして、データ重複除去を行う装置では、データが重複しているか否かの判定に、通常、ブルームフィルタや多段ブルームフィルタ（例えば、特許文献１、２参照）が用いられている。
【０００３】
ブルームフィルタや多段ブルームフィルタ（以下、単に、ブルームフィルタと表記する）は、そのサイズを、管理対象となるデータ数に応じたものとしておかないと、所望の擬陽性発生確率が得られないデータ構造である。そして、ブルームフィルタが、重複の有無を判定するために使用される管理データであることを考えると、重複除去を行う技術には、単位管理データ量当たりのデータの削減量（管理データを用いて重複除去されたデータの総サイズ）が大きいことが望まれることになる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１８６９５４号公報
【特許文献２】特開２０１０−１１４４８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
開示の技術の課題は、単位管理データ量当たりのデータの削減量を大きくすることが出来る技術を提供することにある。
【課題を解決するための手段】
【０００６】
開示の技術の一態様の、記憶装置を制御するストレージ制御装置は、
入力された第１のアドレスに対応するハッシュ値と、前記記憶装置のアドレスである第２のアドレスとの対応関係を管理する対応関係情報と、ブルームフィルタを含むフィルタ情報と、前記記憶装置に格納された各データの重複数を管理する重複数管理情報とを保持する保持部と、
前記記憶装置に格納が指示された格納対象データが、前記重複数管理情報が示す重複数がＮ（Ｎは自然数）未満のデータである第１のデータ種別である場合、前記重複数を１だけ増分し、前記格納対象データを前記フィルタ情報に登録することなく前記記憶装置に格納し、前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報に登録されていないデータである第２のデータ種別である場合、前記格納対象データを前記フィルタ情報に登録するとともに前記記憶装置内に格納し、前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報の管理対象のデータである第３のデータ種別である場合、前記格納対象データの前記フィルタ情報への登録及び前記格納対象データの前記記憶装置内への格納のいずれも行わない格納処理部と、
前記記憶装置に格納されたデータの中から特定した前記記憶装置から削除しても同内容のデータが前記記憶装置内に残る削除可能データを、前記記憶装置から削除する後処理部と、
を有する。
【０００７】
また、一態様の、記憶装置を制御するストレージ制御装置の制御方法は、
前記ストレージ制御装置が、
入力された第１のアドレスに対応するハッシュ値と、前記記憶装置のアドレスである第２のアドレスとの対応関係を管理する対応関係情報と、ブルームフィルタを含むフィルタ情報と、前記記憶装置に格納された各データの重複数を管理する重複数管理情報とを、前記ストレージ制御装置が有する保持部に保持し、
前記記憶装置に格納が指示された格納対象データが、前記重複数管理情報が示す重複数がＮ（Ｎは自然数）未満のデータである第１のデータ種別である場合、前記重複数を１だけ増分し、前記格納対象データを前記フィルタ情報に登録することなく前記記憶装置に格納し、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報に登録されていないデータである第２のデータ種別である場合、前記格納対象データを前記フィルタ情報に登録するとともに前記記憶装置内に格納し、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報の管理対象のデータである第３のデータ種別である場合、前記格納対象データの前記フィルタ情報への登録及び前記格納対象データの前記記憶装置内への格納のいずれも行なわず、
前記記憶装置に格納されたデータの中から特定した前記記憶装置から削除しても同内容のデータが前記記憶装置内に残る削除可能データを、前記記憶装置から削除する。
【０００８】
また、一態様の、記憶装置を制御するストレージ制御装置の制御プログラムは、
前記ストレージ制御装置に、
入力された第１のアドレスに対応するハッシュ値と、前記記憶装置のアドレスである第２のアドレスとの対応関係を管理する対応関係情報と、ブルームフィルタを含むフィルタ情報と、前記記憶装置に格納された各データの重複数を管理する重複数管理情報とを、前記ストレージ制御装置が有する保持部に保持させ、
前記記憶装置に格納が指示された格納対象データが、前記重複数管理情報が示す重複数がＮ（Ｎは自然数）未満のデータである第１のデータ種別である場合、前記重複数を１だけ増分し、前記格納対象データを前記フィルタ情報に登録することなく前記記憶装置に格納させ、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報に登録されていないデータである第２のデータ種別である場合、前記格納対象データを前記フィルタ情報に登録するとともに前記記憶装置内に格納させ、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報の管理対象のデータである第３のデータ種別である場合、前記格納対象データの前記フィルタ情報への登録及び前記格納対象データの前記記憶装置内への格納のいずれも行なわさせず、
前記記憶装置に格納されたデータの中から特定した前記記憶装置から削除しても同内容のデータが前記記憶装置内に残る削除可能データを、前記記憶装置から削除させる。
【発明の効果】
【０００９】
上記技術によれば、単位管理データ量当たりのデータの削減量を大きくすることが出来る。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施形態に係るストレージ制御装置の構成及び使用形態の説明図である。
【図２】図２は、ストレージ制御装置が記憶装置内に格納することを想定している情報の説明図である。
【図３】図３は、ストレージ制御装置の機能ブロック図である。
【図４】図４は、ストレージ制御装置（格納処理部）が実行する格納処理の流れ図である。
【図５】図５は、重複数カウンタの説明図である。
【図６】図６は、重複数計数処理の流れ図である。
【図７】図７は、ブロックマップの説明図である。
【図８】図８は、ハッシュログの説明図である。
【図９】図９は、多段ブルームフィルタの説明図である。
【図１０】図１０は、ストレージ制御装置（読込処理部）が実行する読込処理の流れ図である。
【図１１Ａ】図１１Ａは、従来装置による情報の格納・管理形態の説明図である。
【図１１Ｂ】図１１Ｂは、ストレージ制御装置による情報の格納・管理形態の説明図である。
【図１２】図１２は、ストレージ制御装置（後処理部）が実行する後処理の流れ図である。
【図１３】図１３は、ストレージ制御装置による情報の格納・管理形態及び後処理時における各部のデータの重複数の説明図である。
【図１４】図１４は、後処理の内容の説明図である。
【図１５】図１５は、通常の重複除去時と、ストレージ制御装置による重複除去時における管理データ量、削減量、削減量／管理データ量の関係の説明図である。
【発明を実施するための形態】
【００１１】
以下、開示の技術の一実施形態に係るストレージ制御装置１０について、図面を参照して詳細に説明する。
【００１２】
まず、図１を用いて、ストレージ制御装置１０の構成及び使用形態を説明する。
【００１３】
図１に示してあるように、本実施形態に係るストレージ制御装置１０は、コンピュータ５０のＨＤＤ（Hard Disk Drive）１３に、ＯＳ（Operating System）、ストレージ制御
プログラム１８等をインストールした装置である。換言すれば、ＣＰＵ１１が、ＯＳ、ストレージ制御プログラム１８等をＲＡＭ（Random Access Memory）１２上にロードして実行しているコンピュータ５０が、ストレージ制御装置１０である。
【００１４】
ストレージ制御プログラム１８がインストールされるコンピュータ５０は、通常のコンピュータである。そのため、各構成要素の詳細説明は省略するが、ストレージ制御装置１０（コンピュータ５０）は、ＩＰＬ（Initial Program Loader）等のファームウェアを記憶したフラッシュＲＯＭ（Read Only Memory；図１では、“ＲＯＭ”）を備える。また、ストレージ制御装置１０は、各構成要素間を接続するチップセット（つまり、１つの集積回路又はバスで接続された複数の集積回路）を備える。
【００１５】
さらに、ストレージ制御装置１０は、記憶装置３０との間で通信を行うための通信インタフェース（“Ｉ／Ｆ”）、及び、少なくとも１台のユーザ端末１００との間で通信を行うための通信インタフェース（“Ｉ／Ｆ”）を備える。
【００１６】
ストレージ制御装置１０に接続される記憶装置３０は、データを格納するための複数の物理ブロック（単位記憶領域）を有し、データをリード／ライトする物理ブロックを、物理ブロックアドレス（ＰＢＡ：Physical Block Address）で指定できる装置である。ストレージ制御装置１０には、この記憶装置３０として、ＨＤＤや、ＳＳＤ（Solid State Drive）や、ＨＤＤ及び／又はＳＳＤを複数台組み合わせた装置が接続される。
【００１７】
次に、ストレージ制御装置１０の、想定している使用環境と、ストレージ制御装置１０
の基本的な機能とを、説明する。尚、以下の説明において、データとは、原則として、記憶装置３０の１個の物理ブロックに記憶できるサイズのデータのことである。
【００１８】
ストレージ制御装置１０は、記憶装置３０内に、一部の内容しか異ならない多数の情報が格納される環境で使用されることを想定して開発した装置である。ここで、“一部の内容しか異ならない多数の情報”とは、図２に模式的に示したＬ個の情報、すなわち、割合Ｐの部分の内容が一致し、割合１−Ｐの部分の内容が異なるＬ個の情報のような情報のことである。
【００１９】
そして、ストレージ制御装置１０は、基本的には、多段ブルームフィルタ（ＭＢＦ；Multi Blume Filter）を利用して記憶装置３０内にどのようなデータが格納されているかを管理することにより、データの重複除去を行う装置となっている。
【００２０】
ただし、ストレージ制御装置１０は、データの記憶装置３０への格納時、Ｎ−１（Ｎ≧２）個目までの重複データは、重複除去を行うことなく記憶装置３０内に格納してしまい、Ｎ個目以降の重複データに対して、重複除去を行う装置として構成されている。
【００２１】
ここで、ｎ（ｎは自然数）個目の重複データとは、記憶装置３０内にｎ−１個の同内容のデータが格納されているデータのことである。すなわち、１個目の重複データとは、記憶装置３０内に初めて格納される新規な内容のデータのことである。
【００２２】
以上のことを前提に、以下、ストレージ制御装置１０の構成及び動作をさらに具体的に説明する。
【００２３】
図３に、ストレージ制御装置１０の機能ブロック図を示す。
この図３に示してあるように、ストレージ制御装置１０は、格納処理部４１、読込処理部４２及び後処理部４３を備える。またストレージ制御装置１０は、ＲＡＭ１２上に、重複数カウンタ２０、ブロックマップ２１、ＭＢＦ２２、第１〜第ｍハッシュログ２３が存在する状態で動作する。
【００２４】
格納処理部４１、読込処理部４２及び後処理部４３は、ストレージ制御プログラム１８をＣＰＵ１１が実行することにより実現されるユニット（機能ブロック）である。
【００２５】
ＲＡＭ１２上の各情報は、ユーザ（ストレージ制御装置１０の管理者等）の設定に従い、ＣＰＵ１１（ストレージ制御プログラム１８）が、ＲＡＭ１２上に用意し、適宜、記憶装置３０内に保存（バックアップ）する情報である。
【００２６】
具体的には、ストレージ制御装置１０のセットアップ時には、ｍ値、Ｎ（≧１）値、各データ記憶領域を記憶装置３０内のいずれの記憶領域とするか等を設定する作業がユーザにより行われる。ここで、データ記憶領域とは、各ハッシュログ２３に対応づけられる、ストレージ制御装置１０の記憶領域（ストレージ制御装置１０の全記憶領域の一部）のことである。以下、第ｉ（ｉ＝１〜ｍ）ハッシュログ２３に対応づけられるデータ記憶領域を、第ｉデータ記憶領域と表記する。
【００２７】
尚、上記作業時には、後処理部４３による後処理の開始条件も設定される。後処理の詳細については後述するが、後処理の開始条件としては、“毎日、Ｘ時に開始する”、“毎日曜のＸ時に開始する”、“ガベージコレクションの前に開始する”といったような条件が設定される。
【００２８】
ｍ値等が設定されると、ＣＰＵ１１は、設定に従い、ＲＡＭ１２上に、重複数カウンタ
２０、ブロックマップ２１、ＭＢＦ２２、第１〜第ｍハッシュログ２３を用意する。この際、ＣＰＵ１１が用意する各情報は、有意なデータを保持していない状態にあるものである。また、ＭＢＦ２２は、設定されたｍ値に応じた構成を有するものを、ＣＰＵ１１が生成する情報となっている。そして、ＣＰＵ１１（ストレージ制御プログラム１８）がＭＢＦ２２を生成できるｍ値は限られているため、ストレージ制御装置１０のセットアップ時には、ストレージ制御プログラム１８がＭＢＦ２２を生成できるｍ値の中から、ｍ値が選択される。
【００２９】
以下、ＲＡＭ１２上の重複数カウンタ２０、ブロックマップ２１、ＭＢＦ２２、各ハッシュログ２３の構成を、格納処理部４１、読込処理部４２及び後処理部４３が行う処理の内容と共に説明する。
【００３０】
格納処理部４１は、通常は、記憶装置３０に対するライト要求が、ユーザ端末１００用の通信インタフェースによって受信されるのを待機（監視）している。
【００３１】
ユーザ端末１００から或る情報のライト要求が送信されてきた場合、格納処理部４１は、当該情報（以下、格納対象情報と表記する）が、記憶装置３０の１個の物理ブロックに記憶できるサイズの情報であるか否かを判断する。そして、格納処理部４１は、格納対象情報が、１個の物理ブロックに記憶できるサイズの情報であった場合には、格納対象情報自体を格納対象データとして取り扱う形で、図４に示した手順の格納処理を実行する。
【００３２】
一方、格納対象情報が、１個の物理ブロックに記憶できるサイズの情報でなかった場合、格納処理部４１は、格納対象情報を、物理ブロックに記憶可能なサイズの複数のデータに分割する。そして、格納処理部４１は、分割により得られたデータ毎に、そのデータを格納対象データとした格納処理を実行する。
【００３３】
図４に示してあるように、或る格納対象データに対する格納処理時、格納処理部４１は、まず、重複数計数処理（ステップＳ１０１）を行う。
【００３４】
この重複数計数処理は、その時点（重複数計数処理の実行時点）において、記憶装置３０内に実際に／重複除去された形で格納されている、格納対象データの重複データの数を、“格納対象データの重複数”として算出する処理である。
【００３５】
重複数計数処理は、ＲＡＭ１２上の重複数カウンタ２０を利用する処理となっている。そのため、重複数計数処理の内容を説明する前に、重複数カウンタ２０の構成を説明する。
【００３６】
図５に、重複数カウンタ２０の概略構成を示す。
この図５に模式的に示してあるように、重複数カウンタ２０は、第１ブルームフィルタ（第１−ＢＦ）３１から第Ｎブルームフィルタ（第Ｎ−ＢＦ）３１までのＮ個のＢＦ３１を含む。尚、重複数カウンタ２０は、ユーザにより設定されたＮ値に基づきＲＡＭ１２上に用意されるものである。従って、Ｎ値として、“１”が設定された場合には、重複数カウンタ２０は、１つのブルームフィルタとなるのであるが、以下では、Ｎ≧２であるとして、重複数カウンタ２０の構成を説明する。
【００３７】
重複数カウンタ２０に含まれる第１−ＢＦ〜第Ｎ−ＢＦは、いずれも、通常のブルームフィルタである。ここで、通常のブルームフィルタとは、各ビットにハッシュ値が対応づけられており、或るデータの登録時に、当該データから算出されたｋ（≧２）個のハッシュ値に対応づけられているｋ個のビットに“１”がセットされるデータ構造（ビット列）のことである。
【００３８】
重複数カウンタ２０の各ＢＦ３１のビット数は、図５中に点線で模式的に示しあるように、第１−ＢＦ３１、第２−ＢＦ３１（図示略）、…、第Ｎ−ＢＦ３１の順に少なくなっている。各ＢＦ３１のビット数をそのように定めている理由については、後述する。
【００３９】
重複数計数処理は、図６に示した手順の処理である。尚、この図６に示した重複数計数処理は、Ｎ値が２以上の値である場合に行われるものであり、Ｎ値が１である場合には、ステップＳ２０７及びＳ２０８の処理がない重複数計数処理が行われる。
【００４０】
すなわち、この重複数計数処理を開始した格納処理部４１は、まず、変数ｉに“１”をセットする（ステップＳ２０１）。
【００４１】
次いで、格納処理部４１は、重複数カウンタ２０用のものとして用意されているｋ個のハッシュ関数を用いて格納対象データについてのｋ個のハッシュ値を算出する（ステップＳ２０２）。
【００４２】
格納対象データについてのｋ個のハッシュ値を算出した格納処理部４１は、各ハッシュ値（以下、算出ハッシュ値とも表記する）に対応づけらている，第ｉ−ＢＦ３１のビットの値に基づき、格納対象データが新規データであるか否かを判定する（ステップＳ２０３）。
【００４３】
具体的には、このステップＳ２０３にて、格納処理部４１は、まず、各算出ハッシュ値に対応づけらているビットの値を第ｉ−ＢＦ３１から読み出す。そして、格納処理部４１は、或る算出ハッシュ値に対応づけらているビットの値が“０”であった場合には、格納対象データが新規データであると判定してステップＳ２０３の処理を終了する。また、格納処理部４１は、ｋ個の算出ハッシュ値に対応づけらているｋ個のビットの値が全て“１”であった場合には、格納対象データが新規データではないと判定してステップＳ２０３の処理を終了する。
【００４４】
尚、ステップＳ２０３で行われる判定は、正確には、格納対象データが、ｉ個目の重複データであるか否かの判定である。換言すれば、重複数計数処理（図５）の説明において、新規データとは、ｉ個目の重複データのことである。
【００４５】
格納対象データが新規データであると判定した場合（ステップＳ２０４；ＹＥＳ）、格納処理部４１は、第ｉ−ＢＦの、各算出ハッシュ値に対応付けられている各ビットに、“１”を設定する（ステップＳ２０５）。そして、格納処理部４１は、格納対象データの重複数が、ｉ−１であることを記憶（ステップＳ２０６）してから、この重複数計数処理を終了する。
【００４６】
一方、格納対象データが新規データではないと判定した場合（ステップＳ２０４；ＮＯ）、格納処理部４１は、変数ｉに“１”を加算する（ステップＳ２０７）。そして、格納処理部４１は、“ｉ＞Ｎ”が成立しているか否かを判断（ステップＳ２０８）し、“ｉ＞Ｎ”が成立していなかった場合（ステップＳ２０８；ＮＯ）には、ステップＳ２０３以降の処理を再び実行する。
【００４７】
格納処理部４１は、このような処理を繰り返しているうちに、“ｉ＞Ｎ”が成立した場合（ステップＳ２０８；ＹＥＳ）には、格納対象データの重複数がＮであることを記憶（ステップＳ２０９）してから、重複数計数処理を終了する。
【００４８】
以上の説明した重複数計数処理の処理手順から明らかなように、重複数カウンタ２０の
第ｉ−ＢＦ３１（ｉ＝１〜Ｎ）には、格納対象データと同内容のデータが記憶装置３０内にｉ−１個格納されていた場合に、格納対象データが登録される。換言すれば、重複数カウンタ２０の第ｉ−ＢＦ３１には、ｉ個目の重複データが登録される。従って、第（ｊ＋１）−ＢＦ３１（ｊ＝１〜Ｎ−１）に登録されるデータ数は、第ｊ−ＢＦ３１に登録されるデータ数よりも確実に少ない。そして、ＢＦは、登録されるデータ数が少ない場合には、ビット数を少なくできるデータ構造であるし、重複数カウンタ２０の記憶／保持に要する記憶容量は少ない方が良い。そのため、上記したように、重複数カウンタ２０の各ＢＦ３１のビット数を、第１−ＢＦ３１、第２−ＢＦ３１、…、第Ｎ−ＢＦ３１の順に少なくなるようにしているのである。
【００４９】
図４に戻って、格納処理の説明を続ける。
重複数計数処理（ステップＳ１０１）を終えた格納処理部４１は、重複数計数処理で求めた格納対象データの重複数が、Ｎ未満であるか否かを判断する（ステップＳ１０２）。
【００５０】
重複数がＮ未満であった場合（ステップＳ１０２；ＹＥＳ）、格納処理部４１は、格納対象データを記憶装置３０内に書き込む（ステップＳ１１０）。
【００５１】
より具体的には、格納処理部４１は、このステップＳ１１０にて、まず、格納対象データの実際の書込先とする記憶装置３０の物理ブロックのＰＢＡを決定する。ＰＢＡは、格納対象データの書込先ＬＢＡ（Logical Block Address）を考慮して、ＬＢＡが近いデー
タが同じデータ記憶領域に書き込まれることになるように決定される。尚、格納対象データの書込先ＬＢＡとは、受信したライト要求に含まれるＬＢＡ、又は、当該ＬＢＡと格納対象データの格納対象情報（ライト要求で書き込みが指示されている情報）内での位置とから算出されるＬＢＡのことである。
【００５２】
次いで、格納処理部４１は、決定したＰＢＡ（以下、書込先ＰＢＡと表記する）が割り当てられている物理ブロックに格納対象データを書き込む。そして、格納処理部４１は、ステップＳ１１０の処理を終了する。
【００５３】
ステップＳ１１０の処理を終えた格納処理部４１は、書込先ＬＢＡと書込先ＰＢＡとを設定したレコードをブロックマップ２１に追加する（ステップＳ１１１）。
【００５４】
ブロックマップ２１は、図７に示したように、ＬＢＡフィールドと、格納位置情報フィールドとを有している。このブロックマップ２１の格納位置情報フィールドは、ＰＢＡ又はハッシュ値を格納位置情報として設定されるフィールドとなっている。ステップＳ１１１の処理時、格納処理部４１は、ＬＢＡフィールド、格納位置情報フィールドに、それぞれ、書込先ＬＢＡ、書込先ＰＢＡを設定したレコードをブロックマップ２１に追加する。
【００５５】
そして、ステップＳ１１１の処理を終えた格納処理部４１は、この格納処理（図４）を終了する。
【００５６】
一方、格納対象データの重複数がＮ未満ではなかった場合（ステップＳ１０２；ＮＯ）、格納処理部４１は、ＭＢＦ２２を用いて、更新対象データの重複データの有無をチェックする（ステップＳ１０３）。
【００５７】
このステップＳ１０３の処理の詳細についてはＭＢＦ２２の構成と共に後ほど説明するが、ステップＳ１０３の処理は、更新対象データと同内容のデータがＭＢＦ２２に登録されているか否かをチェックする処理である。そして、既に説明したように（ステップＳ１０２、Ｓ１１０及びＳ１１１参照）、重複数がＮ未満のデータはＭＢＦ２２に登録されない。従って、更新対象データと同内容のデータが記憶装置３０内に既に格納されていても
、格納処理部４１が、ステップＳ１０３の処理時に更新対象データの重複データが存在していないと判定する場合がある。
【００５８】
格納対象データの重複データが存在していなかった場合（ステップＳ１０４；ＮＯ）、格納処理部４１は、格納対象データを記憶装置３０内に書き込む（ステップＳ１０５）。このステップＳ１０５の処理は、上記したステップＳ１１０の処理と同じものである。すなわち、格納処理部４１は、書込先ＰＢＡを決定し、書込先ＰＢＡに格納対象データを書き込む処理を、ステップＳ１０５にて、行う。
【００５９】
次いで、格納処理部４１は、書込先ＰＢＡに応じたハッシュログ２３に、格納対象データの検証用ハッシュ値と書込先ＰＢＡとを設定したレコードを追加する（ステップＳ１０６）。
【００６０】
ハッシュログ２３は、図８に示したように、ハッシュ値フィールドとＰＢＡフィールドとを有するテーブルである。
【００６１】
既に説明したように、ＲＡＭ１２上の第ｉ（ｉ＝１〜ｍ）ハッシュログ２３は、第ｉデータ記憶領域と対応づけられている。上記した“書込先ＰＢＡに応じたハッシュログ２３”とは、書込先ＰＢＡが割り当てられている論理ブロックを含むデータ記憶領域に対応づけられているハッシュログ２３のことである。
【００６２】
また、検証用ハッシュ値とは、２データが同一であるか否かの判定に使用できるハッシュ値のことである。検証用ハッシュ値としては、通常、ＭＤ５（Message-Digest 5）、ＳＨＡ（Secure Hash Algorithm）−１、ＳＨＡ−２５６等のアルゴリズムにより算出され
るセキュアハッシュ値が使用される。
【００６３】
ステップＳ１０６（図４）の処理を終えた格納処理部４１は、格納対象データをＭＢＦ２２に登録する（ステップＳ１０７）。このステップの処理の詳細についても後述するが、ＭＢＦ２２に実際に登録されるデータ（ＭＢＦ２２に追加される要素）は、格納対象データ自体ではなく、格納対象データの検証用ハッシュ値である。
【００６４】
ステップＳ１０７の処理を終えた格納処理部４１は、ＬＢＡ、格納位置情報として、それぞれ、書込先ＬＢＡ、格納対象データの検証用ハッシュ値を設定したレコードをブロックマップ２１（図７）に追加する（ステップＳ１０８）。そして、格納処理部４１は、この格納処理を終了する。
【００６５】
以下、ＭＢＦ２２の構成と、ステップＳ１０２、Ｓ１０７の処理の詳細とを、説明する。
【００６６】
図９に、ＭＢＦ２２の構成例を示す。この図９に示したＭＢＦ２２が使用できるのは、ｍ＝１６である場合である。そのため、以下の説明では、記憶装置３０の記憶領域が第１〜第１６データ記憶領域に分割されており、ＲＡＭ１２上に第１〜第１６ハッシュログ２３が存在しているものとする。
【００６７】
図９に示したＭＢＦ２２に含まれる各ＢＦは、通常のブルームフィルタである。ただし、ＭＢＦ２２の最下段のＢＦ５−１〜ＢＦ５−１６は、それぞれ、記憶装置３０の第１〜第１６データ記憶領域に対応づけられている。
【００６８】
ＭＢＦ２２の１段目から４段目までの各ＢＦは、図９において各ＢＦの下方に位置している最下段の各ＢＦが対応づけられているデータ記憶領域と対応づけられている。すなわ
ち、ＢＦ４−１は、ＢＦ５−１、５−２がそれぞれ対応付けられている第１、第２データ記憶領域と対応づけられている。ＢＦ４−２は、ＢＦ５−３、５−４がそれぞれ対応付けられている第３、第４データ記憶領域と対応づけられている。ＢＦ３−１は、ＢＦ５−１〜５−４がそれぞれ対応づけられている第１〜第４データ記憶領域と対応づけられている。１段目から４段目までの他の各ＢＦも、同様に、各ＢＦの下方に位置している最下段のＢＦが対応づけられているデータ記憶領域と対応づけられている。
【００６９】
そして、或る格納対象データをＭＢＦ２２に登録する際には、その格納対象データを書き込んだ論理ブロックを含むデータ記憶領域に対応づけられている各ＢＦに、格納対象データが登録される。尚、既に説明したように、ＭＢＦ２２（ＭＢＦ２２の各ＢＦ）に実際に登録されるデータは、格納対象データ自体ではなく、格納対象データの検証用ハッシュ値である。ただし、説明の便宜上、ＭＢＦ２２に対する処理については、格納対象データの検証用ハッシュ値のことを、原則として、格納対象データと表記する。
【００７０】
すなわち、ステップＳ１０５にて、格納対象データが第１記憶領域に書き込まれていた場合には、ステップＳ１０７にて、ＢＦ５−１、ＢＦ４−１、ＢＦ３−１、ＢＦ２−１及びＢＦ１−１のそれぞれに格納対象データが登録される。また、ステップＳ１０５にて、格納対象データが第１１記憶領域に書き込まれていた場合には、ステップＳ１０７にて、ＢＦ５−１１、ＢＦ４−６、ＢＦ３−３、ＢＦ２−２及びＢＦ１−１のそれぞれに格納対象データが登録される。
【００７１】
また、ステップＳ１０３では、例えば、以下の手順の処理が行われる。尚、以下の説明において、或るＢＦの下位ＢＦとは、図９において、或るＢＦの真下に示されている各ＢＦのことである。すなわち、例えば、ＢＦ１−１の下位ＢＦとは、ＢＦ２−１とＢＦ２−２のことであり、ＢＦ２−２の下位ＢＦとは、ＢＦ３−３とＢＦ３−４のことである。
【００７２】
・ＢＦ１−１に格納対象データが登録されているか否かをチェック
・ＢＦ１−１に格納対象データが登録されていなかった場合には、格納対象データが存在しないことを記憶して処理を終了
・ＢＦ１−１に格納対象データが登録されていた場合には、ＢＦ１−１の各下位ＢＦに格納対象データが登録されているか否かを順々にチェック
・格納対象データが登録されている下位ＢＦが見出せなかった場合には、格納対象データが存在しないことを記憶して処理を終了
・格納対象データが登録されている下位ＢＦを見出せた場合には、当該下位ＢＦの各下位ＢＦに格納対象データが登録されているか否かを順々にチェック
・格納対象データが登録されている下位ＢＦが見出せなかった場合には、格納対象データが存在しないことを記憶して処理を終了
・同様の処理を繰り返すことによって格納対象データが登録されている再下段のＢＦを特定できた場合には、当該ＢＦに対応付けられているハッシュログ２３に、格納対象データの検証用ハッシュ値が記憶されているか否かをチェック
・ハッシュログ２３に格納対象データの検証用ハッシュ値が記憶されていた場合には、格納対象データの重複データが存在することを記憶して処理を終了
【００７３】
尚、周知のように、ＢＦによるデータの有無の判定時には、実際には存在していないデータが存在していると判定されてしまう場合がある。そのため、格納対象データが登録されている下位ＢＦが見出せなかった場合、１段上の未チェックのＢＦをチェックしなおすようにしておくことが好ましい。
【００７４】
次に、読込処理部４２（図３）の機能を説明する。
【００７５】
読込処理部４２は、記憶装置３０からのデータの読み込みを行うユニット（機能ブロック）である。
図１０に、読込処理部４２が、或るデータを記憶装置３０から読み込む際に行う読込処理の流れ図を示す。尚、この流れ図及び以下の説明において、読込対象データとは、記憶装置３０から読み込もうとしているデータのことであり、読込対象ＬＢＡとは、読込対象データのＬＢＡのことである。また、格納処理部４１は、記憶装置３０に対するリード要求が、ユーザ端末１００から送信されてきた場合、この読込処理を何回か実行することにより要求されたデータを用意して、ユーザ端末１００に返送する。
【００７６】
図１０に示してあるように、この読込処理を開始した読込処理部４２は、まず、読込対象ＬＢＡが設定されているレコードをブロックマップ２１から検索する（ステップＳ３０１）。
【００７７】
そして、読込処理部４２は、読込対象ＬＢＡが設定されているレコードを検索できなかった場合（ステップＳ３０２；ＮＯ）には、ブロックサイズのＡＬＬ０データを読込対象ＬＢＡのデータの読込結果として（ステップＳ３０７）、この読込処理を終了する。
【００７８】
一方、読込対象ＬＢＡが設定されているレコードを検索できた場合（ステップＳ３０２；ＹＥＳ）、読込処理部４２は、検索したレコード上の格納位置情報（格納位置情報フィールドの値）がハッシュ値であるか否かを判断する（ステップＳ３０３）。
【００７９】
検索したレコード上の格納位置情報がハッシュ値ではなかった場合、当該格納位置情報は、読込対象データが記憶されている物理ブロックのＰＢＡである（図４のステップＳ１１１、図７参照）。
【００８０】
そのため、この場合（ステップＳ３０３；ＮＯ）には、ブロックマップ２１から読み出したＰＢＡが示している物理ブロックのデータを、読込対象データとして記憶装置３０から読み込む処理（ステップＳ３０６）が行われる。
【００８１】
一方、検索したレコード上の格納位置情報がハッシュ値であった場合、当該格納位置情報は、読込対象データの検証用ハッシュ値である（図４のステップＳ１０８参照）。また、読込対象データ又は読込対象データと同内容のデータが記憶されている物理ブロックのＰＢＡ（以下、読込対象ＰＢＡと表記する）は、読込対象データの検証用ハッシュ値に対応づけられていずれかのハッシュログ２３（図８）に記憶されている。
【００８２】
そして、上記したように、ＭＢＦ２２は、或るデータが記憶されているデータ記憶領域を検索できるものとなっている。
【００８３】
そのため、検索したレコード上の格納位置情報がハッシュ値であった場合（ステップＳ３０３；ＹＥＳ）、ステップＳ３０４〜Ｓ３０６の処理が行われる。
【００８４】
すなわち、格納位置情報がハッシュ値であった場合、読込処理部４２は、まず、格納位置情報（読込対象データの検証用ハッシュ値）を用いて、ＭＢＦ２２から、読込対象データ等が記憶されているデータ記憶領域を検索する（ステップＳ３０４）。尚、読込対象データ等とは、読込対象データ又は読込対象データと同内容のデータのことである。
【００８５】
次いで、読込処理部４２は、検索したデータ記憶領域に対応づけられているハッシュログ２３から、読込対象データの検証用ハッシュ値を検索キーとして用いて読込対象ＰＢＡを検索する（ステップＳ３０５）。その後、読込処理部４２は、検索した読込対象ＰＢＡが示している物理ブロックのデータを、読込対象データとして記憶装置３０から読み込む
（ステップＳ３０６）。そして、読込処理部４２は、この読込処理を終了する。
【００８６】
以下、後処理部４３について説明する。
まず、Ｎ−１個目までの重複データをＭＢＦ２２に登録していない理由と、後処理部４３が行う後処理の目的とを、説明する。
【００８７】
既に説明したように、ストレージ制御装置１０は、“割合Ｐの部分の内容が一致し、割合１−Ｐの部分の内容が異なるＬ個の情報”（図２）のような多数の情報が記憶装置３０内に格納される環境で使用されることを想定して開発した装置である。
【００８８】
図２に示したＬ個の情報が、１個目のデータからＭＢＦに登録するストレージ制御装置（以下、従来装置と表記する。）により記憶装置３０に格納された場合と、ストレージ制御装置１０により記憶装置３０に格納された場合とを、考える。
【００８９】
上記Ｌ個の情報の従来装置による記憶装置３０への格納時には、新規データが全てＭＢＦに登録される。従って、最初に記憶装置３０への格納が指示された情報中の全データと、２〜Ｌ番目に記憶装置３０への格納が指示された各情報中の割合Ｐの部分のデータとが、ＭＢＦに登録されることになる。そして、２〜Ｌ番目に記憶装置３０への格納が指示された各情報中の割合Ｐの部分のデータは、記憶装置３０内に書き込まれないので、結局、上記Ｌ個の情報の従来装置による格納・管理形態は、図１１Ａのように表せることになる。尚、この図１１Ａにおいて、網掛けが付してある部分のデータが、ＭＢＦに登録され、記憶装置３０内に実際に書き込まれているデータである。また、網掛けが付してない部分のデータが、記憶装置３０内に書き込まれていないデータである。
【００９０】
一方、同じＬ個の情報のストレージ制御装置１０による記憶装置３０への格納時には、Ｎ−１個目までの重複データは、ＭＢＦ２２に登録されることなく、記憶装置３０内に書き込まれる。従って、例えば、Ｎ＝３であった場合、上記Ｌ個の情報のストレージ制御装置１０による格納・管理形態を、図１１Ｂのように表せることになる。尚、この図１１Ｂにおいて、濃い網掛けが付してある部分のデータが、Ｎ−１個目までの重複データであるが故に、ＭＢＦ２２に登録されることなく記憶装置３０内に書き込まれたデータである。また、薄い網掛けが付してある部分のデータは、図１１Ａにおける網掛けが付してある部分のデータと同様に、ＭＢＦに登録され、記憶装置３０内に実際に書き込まれているデータである。さらに、網掛けが付してない部分のデータは、図１１Ａにおける網掛けが付してない部分のデータと同様に、記憶装置３０内に書き込まれていないデータである。
【００９１】
図１１Ａと図１１Ｂとを比較すれば明らかなように、Ｎ−１個目までの重複データをＭＢＦ２２に登録せずに記憶装置３０内に書き込むようにしておけば、ＭＢＦの管理対象となるデータ量（薄い網掛けが付してある部分の総データ量）を少なくすることが出来る。そして、ＭＢＦの管理対象となるデータ量が少なければ、ＭＢＦのサイズを小さくすることが出来る。そのため、ストレージ制御装置１０を、Ｎ−１個目までの重複データをＭＢＦ２２に登録せずに記憶装置３０内に書き込む装置として構成（プログラミング）しているのである。
【００９２】
ただし、図１１Ａと図１１Ｂとから明らかなように、ストレージ制御装置１０による情報記憶容量の削減量（記憶装置３０への書き込みが省略される総データ量、網掛けが付してない部分の総データ量）は、従来装置のそれよりも少なくなっている。
【００９３】
ストレージ制御装置１０による情報記憶容量の削減量を、従来装置のそれと同様のものとするための処理が、後処理である。
【００９４】
以下、後処理の内容を具体的に説明する。
【００９５】
図１２に、後処理の流れ図を示す。尚、既に説明したように、後処理部４３は、この後処理を、設定されている開始条件（“毎日、Ｘ時に開始する”等）が満たされたときに、開始する。
【００９６】
図１２に示してあるように、後処理を開始した後処理部４３は、まず、ブロックマップ２１の最初のレコードに設定されている格納位置情報を取得する（ステップＳ４０１）。次いで、後処理部４３は、取得した格納位置情報がＰＢＡであるか否かを判断する（ステップＳ４０２）。
【００９７】
格納位置情報がＰＢＡではなかった場合（ステップＳ４０２；ＮＯ）、後処理部４３は、ブロックマップ２１の全てのレコードを処理したか否かを判断する（ステップＳ４０９）。そして、後処理部４３は、未処理のレコードが残っていた場合（ステップＳ４０９；ＮＯ）には、ステップＳ４０１に戻って、ブロックマップ２１の次のレコード上の格納位置情報を取得する。
【００９８】
一方、格納位置情報がＰＢＡであった場合（ステップＳ４０２；ＹＥＳ）、後処理部４３は、その格納位置情報（ＰＢＡ）のデータを処理対象データとして記憶装置３０から読み出す（ステップＳ４０３）。そして、後処理部４３は、処理対象データに対する重複数特定処理を実行する（ステップＳ４０４）。
【００９９】
ステップＳ４０４にて実行される重複数特定処理は、ステップＳ２０５の処理が行われない点を除けば重複数計数処理（図６）と同内容の処理である。そのため、重複数特定処理の詳細説明は省略する。
【０１００】
重複数計数処理を終えた後処理部４３は、重複数計数処理により得られた処理対象データの重複数がＮ未満であるか否かを判断する（ステップＳ４０５）。重複数がＮ未満ではなかった場合（ステップＳ４０５；ＮＯ）、後処理部４３は、処理対象データの重複データ（ＭＢＦ２２により管理されているもの）が実際に記憶装置３０内に格納されているか否かを判断する（ステップＳ４０６）。このステップで行われる処理は、上記したステップＳ１０３（図４）の処理と同じものである。
【０１０１】
処理対象データの重複データが実際に記憶装置３０内に格納されていた場合（ステップＳ４０６；ＹＥＳ）、後処理部４３は、ブロックマップ２１の処理中レコードの格納位置情報を、格納対象データの検証用ハッシュ値に変更する（ステップＳ４０７）。そして、後処理部４３は、記憶装置３０内の格納対象データを削除（ステップＳ４０８）してから、ステップＳ４０９の処理（判断）を行う。
【０１０２】
一方、重複数がＮ未満であった場合（ステップＳ４０５；ＹＥＳ）、後処理部４３は、ステップＳ４０７及びＳ４０８の処理を行うことなく、ステップＳ４０８の処理（判断）を行う。また、処理対象データの重複データが記憶装置３０内に格納されていなかった場合（ステップＳ４０６；ＮＯ）も、後処理部４３は、ステップＳ４０７及びＳ４０８の処理を行うことなく、ステップＳ４０８の処理を行う。
【０１０３】
そして、後処理部４３は、ブロックマップ２１の全てのレコードの処理が完了したとき（ステップＳ４０９；ＹＥＳ）に、後処理を終了する。
【０１０４】
以下、この後処理の内容をさらに具体的に説明する。
【０１０５】
ストレージ制御装置１０による記憶装置３０内への情報の格納・管理形態が、図１１Ｂに示したものとなっている状態で、後処理が行われた場合を考える。尚、ストレージ制御装置１０のＮ値は、３であるとする。
【０１０６】
この場合、図１３に模式的に示したように、各情報の共通部分（割合Ｐの部分）を構成している各データの重複数は、３となっている。また、各情報の共通部分の固有部分（割合１−Ｐの部分）を構成している各データの重複数は、１となっている。
【０１０７】
そして、濃い網掛けが付してある部分の各データは、Ｎ−１個目までの重複データであるが故に、ＭＢＦ２２に登録されることなく記憶装置３０内に書き込まれたデータである。すなわち、濃い網掛けが付してある部分の各データの格納位置情報は、ＰＢＡとなっている。
【０１０８】
従って、共通部分（割合Ｐの部分）を構成している各データについては、ステップＳ４０２で“ＹＥＳ”側への分岐が行われ、ステップＳ４０５で“ＮＯ”側への分岐が行われる結果として、ステップＳ４０７、Ｓ４０８の処理が行われないことになる。
【０１０９】
そして、濃い網掛けが付してある共通部分の各データは、Ｎ個目の重複データであるが故に（図４参照）、格納位置情報として検証用ハッシュ値を設定したレコードがブロックマップ２１に追加されて記憶装置３０内に書き込まれたデータである。従って、濃い網掛けが付してある共通部分の各データについては、ステップＳ４０２で“ＮＯ”側への分岐が行われる結果として、ステップＳ４０７、Ｓ４０８の処理が行われないことになる。
【０１１０】
網掛けが付していない各共通部分の各データも、その格納時に、格納位置情報として検証用ハッシュ値を設定したレコードがブロックマップ２１に追加されたデータである。従って、網掛けが付していない共通部分の各データについても、ステップＳ４０７、Ｓ４０８の処理が行われない。
【０１１１】
そして、ステップＳ４０７及び４０８では、ステップＳ４０６等の判断により処理対象とされたデータに関するレコードの格納位置情報を当該データの検証用ハッシュ値に変更する処理と、当該データを記憶装置３０から削除する処理とが行われる。
【０１１２】
従って、情報の格納・管理形態が図１３（図１１Ｂ）に示したものとなっている状態で、後処理が行われた場合、図１４に示したように、Ｎ（図１４では、“３”）個、書き込まれている重畳データ中の１〜Ｎー１個目の重畳データを、それらの読出が不可能にならない形で、記憶装置３０から削除できることになる。
【０１１３】
そして、図１４の右側に示してある形態でＬ個の情報が格納・管理されている場合における情報記憶容量の削減量は、従来装置により図１１Ａに示してある形態で同じＬ個の情報が格納・管理されている場合の削減量と等しい。また、既に説明したように、Ｎ−１個目までの重複データをＭＢＦ２２に登録せずに記憶装置３０内に書き込むようにしておけば、ＭＢＦ２２のサイズ、すなわち、管理データ量を、小さく（少なく）することが出来る。
【０１１４】
そのため、図１５に示してあるように、上記内容の重複除去（図１５では拡張重複除去）の、単位管理データ量当たりの情報記憶容量の削減量（“削減量／管理データ量”）は、従来装置による通常重複除去のそれよりも大きくなる。従って、ストレージ制御装置１０は、同じ管理データ量の従来装置よりも情報記憶容量の削減量が大きな装置や、従来装置と情報記憶容量の削減量が等しく、管理データ量が従来装置よりも少ない装置となっていると言うことが出来る。
【０１１５】
《変形形態》
上記したストレージ制御装置１０は、各種の変形が行えるものである。例えば、ストレージ制御装置１０を、ＭＢＦ２２の代わりに、通常のＢＦが用いられ、ブロックマップ２１及びｍ個のハッシュログ２３の代わりに、ＬＢＡ、ＰＢＡ、検証用ハッシュ値間の対応関係を管理するためのテーブルが用いられた装置に変形することが出来る。ただし、そのように変形した場合、格納対象データの重複データの有無の判定時に、ｍ個のハッシュログ２３に相当する当該テーブルから格納対象データの検証用ハッシュ値と同じ検証用ハッシュ値を検索することになる。そして、上記構成（ＭＢＦ２２、ブロックマップ２１及びｍ個のハッシュログ２３を使用する構成）を採用しておけば、より少ない量のデータ（１個のハッシュログ２３）からの検索で所望の情報を得ることが出来る。従って、ストレージ制御装置１０には、上記構成を採用しておくことが望ましい。
【０１１６】
後処理により削除されるデータは、記憶装置３０内から削除しても同内容のデータが記憶装置３０内に残るデータでありさえすれば良い。従って、後処理を、図１３における１番目の情報の共通部分を残し、２，３番目の共通部分を削除する処理とすることも出来る。ただし、後処理をそのような処理とする場合、処理内容が複雑にならざるを得ない。そのため、後処理は、上記したように、ＭＢＦ２２によって管理されているデータを残す処理としておくことが好ましい。
【０１１７】
また、後処理を、ブロックマップ２１の一部のレコードを処理対象とする処理に変形し、後処理部４３を、処理対象をレコードを変更しなから、適宜、後処理を行うユニットに変形することも出来る。
【０１１８】
また、格納処理（図４）のステップＳ１０５〜Ｓ１０８が行われる度に、後処理相当の処理（以下、格納毎後処理と表記する）が行われるようにしておくことも出来る。ここで、格納毎後処理とは、ステップＳ１０５の処理により書き込まれた格納対象データの重複データを検索して記憶装置３０内から削除し、削除データの読出時に格納対象データが読み出されるようにブロックマップ２１の内容を更新する処理のことである。ただし、上記したブロックマップ２１では、格納対象データの重複データを簡単に検索することが出来ない。そのため、格納処理のステップＳ１０５〜Ｓ１０８が行われる度に、格納毎後処理が行われるようにする場合には、ブロックマップ２１を、各レコードに検証用ハッシュ値が記憶されるものとしておくことが望ましい。
【０１１９】
そのようなブロックマップ２１としては、ＬＢＡフィールドと、検証用ハッシュ値フィールドと、Ｎ−１番目までの格納対象データである場合にＰＢＡが設定されるＰＢＡフィールドとを有するブロックマップを例示できる。ＰＢＡフィールドの代わりに、Ｎ−１番目までの格納対象データであるか否かを示すフラグを記憶するためのフラグフィールドを設けておくことも出来る。尚、ＬＢＡフィールドと、検証用ハッシュ値フィールドと、ＰＢＡ／フラグフィールドとを有するブロックマップ２１は、格納処理のステップＳ１０５〜Ｓ１０８が行われる度に格納毎後処理が行われるようにしない場合にも採用することも出来る。
【０１２０】
Ｎ−１番目までの格納対象データであるか否かを示すフラグを、記憶装置３０内に書き込む各データの先頭等に付加しておくことも出来る。具体的には、ブロックサイズを、Ｎ−１番目までの格納対象データであるか否かを示すフラグを、記憶できるよう大きくしておくと共に、ステップＳ１０５及びＳ１１０（図４）の処理を、格納対象データがフラグと共に書き込まれる処理としておく。さらに、ステップＳ３０６（図１０）の処理を、記憶装置３０（ストレージ）から読み出したデータのフラグを取り除いた部分を読込対象データとして取り扱う処理としておく。そのようにしておけば、後処理（図１２）を、ブロ
ックマップ２１から情報から読み出ことなくＮ−１番目までの格納対象データであるか否かを判定して重複除去を行う処理とすることができる。より具体的には、後処理を、記憶装置３０から順々にデータを読み出し、Ｎ−１番目までの格納対象データであるか否かを示すフラグが付けられているデータに対してステップＳ４０４以降の処理が行われる処理とすることができる。
【０１２１】
ストレージ制御装置１０を、専用の装置や、記憶装置３０と一体化された装置に変形することも出来る。ストレージ制御装置１０を、論理ブロックアドレスでアクセスすべき記憶装置３０（内部で論理ブロックアドレスが物理ブロックアドレスに変換される記憶装置３０）に接続して使用する装置に変形することも出来る。尚、この変形は、ＰＢＡの代わりに記憶装置３０のＬＢＡが使用されるようにするだけで実現できる。
【０１２２】
重複数カウンタ２０を、幾つかのＢＦ以外のもの、例えば、検証用ハッシュ値と重複数とを記憶するテーブル、に変形することも出来る。また、ストレージ制御プログラム１８を、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）等の可搬
型記録媒体に記録して配布することが出来る。
【０１２３】
以上、開示した技術に関し、更に以下の付記を開示する。
【０１２４】
（付記１）
記憶装置を制御するストレージ制御装置において、
入力された第１のアドレスに対応するハッシュ値と、前記記憶装置のアドレスである第２のアドレスとの対応関係を管理する対応関係情報と、ブルームフィルタを含むフィルタ情報と、前記記憶装置に格納された各データの重複数を管理する重複数管理情報とを保持する保持部と、
前記記憶装置に格納が指示された格納対象データが、前記重複数管理情報が示す重複数がＮ（Ｎは自然数）未満のデータである第１のデータ種別である場合、前記重複数を１だけ増分し、前記格納対象データを前記フィルタ情報に登録することなく前記記憶装置に格納し、前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報に登録されていないデータである第２のデータ種別である場合、前記格納対象データを前記フィルタ情報に登録するとともに前記記憶装置内に格納し、前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報の管理対象のデータである第３のデータ種別である場合、前記格納対象データの前記フィルタ情報への登録及び前記格納対象データの前記記憶装置内への格納のいずれも行わない格納処理部と、
前記記憶装置に格納されたデータの中から特定した前記記憶装置から削除しても同内容のデータが前記記憶装置内に残る削除可能データを、前記記憶装置から削除する後処理部と、
を有することを特徴とするストレージ制御装置。
【０１２５】
（付記２）
前記格納処理部はさらに、
前記格納対象データを前記記憶装置内に格納する場合、格納した前記格納対象データを読み出せるように前記対応関係情報を更新することを特徴とする付記１記載のストレージ制御装置。
【０１２６】
（付記３）
Ｎが、２以上の値であり、
前記重複数管理情報は、
第１のブルームフィルタから第ＮのブルームフィルタまでのＮ個のブルームフィルタを含み、
前記格納処理部は、
前記格納対象データが前記第１のブルームフィルタに登録されていないデータであった場合に、前記格納対象データが、前記重複数が０の前記第１のデータ種別であると判別し、
前記格納対象データが前記第１のブルームフィルタから第Ｋ（１≦Ｋ＜Ｎ−１）のブルームフィルタまでのＫ個のブルームフィルタに登録されており、且つ、第Ｋ＋１のブルームフィルタに登録されていないデータであった場合に、前記格納対象データが、前記重複数がＫの前記第１のデータ種別であると判別し、
前記格納対象データが、前記第１のブルームフィルタから第Ｎ−１のブルームフィルタまでのＮ−１個のブルームフィルタに登録されており、且つ、前記第Ｎのブルームフィルタに登録されていないデータであった場合に、前記格納対象データが前記第２のデータ種別であると判別し、
前記格納対象データが、前記第１乃至第Ｎのブルームフィルタの全てに登録されており、且つ、前記フィルタ情報の管理対象となっているデータであった場合に、前記格納対象データが前記第３のデータ種別であると判別し、
重複数がＪ（１≦Ｊ＜Ｎ）の前記第１のデータ種別である前記格納対象データの重複数を１だけ増分する際、前記格納対象データを前記第Ｊ＋１のブルームフィルタに登録する
ことを特徴とする付記１に記載のストレージ制御装置。
【０１２７】
（付記４）
Ｎが、１であり、
前記重複数管理情報が、１つのブルームフィルタであり、
前記格納処理部は、
前記格納対象データが前記重複数管理情報に登録されていないか登録されているかを判断することより、前記格納対象データが、重複数が０の前記第１のデータ種別であるか否かを判別し、
前記格納対象データが前記第１のデータ種別ではないと判別した場合には、さらに、前記格納対象データが前記フィルタ情報の管理対象となっているか否かを判断することにより、前記格納対象データが、重複数が１の前記第２のデータ種別であるか、前記第３のデータ種別であるかを判別し、
前記格納対象データの重複数を１だけ増分する際、前記格納対象データを前記重複数管理情報に登録する
ことを特徴とする付記１に記載のストレージ制御装置。
【０１２８】
（付記５）
前記後処理部は、
前記格納処理部により前記格納対象データを前記フィルタ情報に登録することなく前記記憶装置に格納する処理が行われる度に、行われた当該処理で前記記憶装置内に書き込まれた前記格納対象データと同内容の、重複数がＮ未満ではないことを前記重複数管理情報が示しているデータを、前記削除可データとして取り扱う
ことを特徴とする付記１から４のいずれか一項に記載のストレージ制御装置。
【０１２９】
（付記６）
前記対応関係情報は、
或るデータに関する前記第１のアドレスと、当該データに関する前記第２のアドレス、又は、当該データについての、当該データから所定アルゴリズムにて算出されたハッシュ値である検証用ハッシュ値とが設定されたレコードを複数個記憶できるマップテーブルと、
前記記憶装置内の互いに異なるデータ記憶領域に対応づけられたｍ（≧２）個のログテーブルであって、それぞれ、或るデータについての前記検証用ハッシュ値と当該データが
書き込まれている前記記憶装置の単位記憶領域の前記第２のアドレスとが設定されたレコードを複数個記憶できるｍ個のログテーブルと、を含み、
前記フィルタ情報は、
前記ｍ個のログテーブルに対応づけられたｍ個の前記データ記憶領域の中の、互いに異なる前記データ記憶領域に対応づけられたｍ個のブルームフィルタを、含み
前記格納処理部は、
前記記憶装置に格納が指示された格納対象データが、前記重複数管理情報が示す重複数がＮ（Ｎは自然数）未満のデータである第１のデータ種別である場合、前記格納対象データに関する前記第１種アドレスと前記格納対象データが書き込まれた単位記憶領域の前記第２のアドレスとが設定されたレコードを前記マップテーブルに追加し、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報に登録されていないデータである第２のデータ種別である場合、前記格納対象データを、前記ｍ個のブルームフィルタの中の、前記格納対象データが書き込まれた単位記憶領域を含む前記データ記憶領域に対応づけられているブルームフィルタに登録し、前記格納対象データに関する前記第１種アドレスと前記格納対象データについての前記検証用ハッシュ値とを設定したレコードを前記マップテーブルに追加し、前記格納対象データが書き込まれた単位記憶領域を含む前記データ記憶領域に対応づけられている前記ログテーブルに前記格納対象データについての前記検証用ハッシュ値と前記格納対象データが書き込まれた当該単位記憶領域の前記第２のアドレスとが設定されたレコードを追加し、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報の管理対象のデータである第３のデータ種別である場合、前記格納対象データに関する第１種アドレスと前記格納対象データについての前記検証用ハッシュ値とを設定したレコードを前記マップテーブルに追加する
ことを特徴とする付記１から５のいずれか一項に記載のストレージ制御装置。
【０１３０】
（付記７）
前記後処理部は、
前記マップテーブルに前記第２のアドレスが設定されたレコードが記憶されており、且つ、重複数がＮ未満ではないことを前記重複数管理情報が示しているデータを、前記削除可データとして特定する
ことを特徴とする付記６に記載のストレージ制御装置。
【０１３１】
（付記８）
前記フィルタ情報が、
前記ｍ個のブルームフィルタを、最下段のブルームフィルタとして含む多段ブルームフィルタである
ことを特徴とする付記６又は７に記載のストレージ制御装置。
【０１３２】
（付記９）
前記後処理部は、
設定されている条件が満たされたときに、前記削除可データが特定できなくなるまで、前記削除処理を繰り返す
ことを特徴とする付記１から４のいずれか一項に記載のストレージ制御装置。
【０１３３】
（付記１０）
記憶装置を制御するストレージ制御装置の制御方法において、
前記ストレージ制御装置が、
入力された第１のアドレスに対応するハッシュ値と、前記記憶装置のアドレスである第２のアドレスとの対応関係を管理する対応関係情報と、ブルームフィルタを含むフィルタ情報と、前記記憶装置に格納された各データの重複数を管理する重複数管理情報とを、前
記ストレージ制御装置が有する保持部に保持し、
前記記憶装置に格納が指示された格納対象データが、前記重複数管理情報が示す重複数がＮ（Ｎは自然数）未満のデータである第１のデータ種別である場合、前記重複数を１だけ増分し、前記格納対象データを前記フィルタ情報に登録することなく前記記憶装置に格納し、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報に登録されていないデータである第２のデータ種別である場合、前記格納対象データを前記フィルタ情報に登録するとともに前記記憶装置内に格納し、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報の管理対象のデータである第３のデータ種別である場合、前記格納対象データの前記フィルタ情報への登録及び前記格納対象データの前記記憶装置内への格納のいずれも行なわず、
前記記憶装置に格納されたデータの中から特定した前記記憶装置から削除しても同内容のデータが前記記憶装置内に残る削除可能データを、前記記憶装置から削除する
ことを特徴とするストレージ制御装置の制御方法。
【０１３４】
（付記１１）
記憶装置を制御するストレージ制御装置の制御プログラムにおいて、
前記ストレージ制御装置に、
入力された第１のアドレスに対応するハッシュ値と、前記記憶装置のアドレスである第２のアドレスとの対応関係を管理する対応関係情報と、ブルームフィルタを含むフィルタ情報と、前記記憶装置に格納された各データの重複数を管理する重複数管理情報とを、前記ストレージ制御装置が有する保持部に保持させ、
前記記憶装置に格納が指示された格納対象データが、前記重複数管理情報が示す重複数がＮ（Ｎは自然数）未満のデータである第１のデータ種別である場合、前記重複数を１だけ増分し、前記格納対象データを前記フィルタ情報に登録することなく前記記憶装置に格納させ、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報に登録されていないデータである第２のデータ種別である場合、前記格納対象データを前記フィルタ情報に登録するとともに前記記憶装置内に格納させ、
前記重複数管理情報が示している重複数がＮ以上、且つ、前記フィルタ情報の管理対象のデータである第３のデータ種別である場合、前記格納対象データの前記フィルタ情報への登録及び前記格納対象データの前記記憶装置内への格納のいずれも行なわさせず、
前記記憶装置に格納されたデータの中から特定した前記記憶装置から削除しても同内容のデータが前記記憶装置内に残る削除可能データを、前記記憶装置から削除させる
ことを特徴とするストレージ制御装置の制御プログラム。
【符号の説明】
【０１３５】
１０  ストレージ制御装置
１１  ＣＰＵ
１２  ＲＡＭ
１３  ＨＤＤ
１８  ストレージ制御プログラム
２０  重複数カウンタ
２１  ブロックマップ
２２  ＭＢＦ
２３  第１〜第ｍハッシュログ
３０  記憶装置
３１  ブルームフィルタ
４１  格納処理部
４２  読込処理部
４３  後処理部
５０  コンピュータ
１００  ユーザ端末
【図１】
2014199573.tif 000003
【図２】
2014199573.tif 000004
【図３】
2014199573.tif 000005
【図４】
2014199573.tif 000006
【図５】
2014199573.tif 000007
【図６】
2014199573.tif 000008
【図７】
2014199573.tif 000009
【図８】
2014199573.tif 000010
【図９】
2014199573.tif 000011
【図１０】
2014199573.tif 000012
【図１１Ａ】
2014199573.tif 000013
【図１１Ｂ】
2014199573.tif 000014
【図１２】
2014199573.tif 000015
【図１３】
2014199573.tif 000016
【図１４】
2014199573.tif 000017
【図１５】
2014199573.tif 000018