(57)【要約】【課題】  Ｎ（≧３）個目の重複データからの重複除去が効率的に行える技術を提供する。【解決手段】重複除去装置は、第１乃至第Ｎ（≧３）のブルームフィルタ（ＢＦ）と、格納対象データと同内容のデータが記憶装置内に存在することを示す情報が各ＢＦに登録されているか否かを判断する処理を、当該情報が登録されていない未登録ＢＦを見出すか、当該情報が第ＮのＢＦに登録されていることを見出すまで、第１乃至第ＮのＢＦについて順次行い、未登録ＢＦを見出した場合には、格納対象データが記憶装置内に存在することを示す情報を未登録ＢＦに登録する計数部と、計数部により未登録ＢＦが見出された場合には、格納対象データを記憶装置に格納し、計数部によりに情報が第ＮのＢＦに登録されていることが見出された場合には、格納対象データを記憶装置内の同内容のデータに対応づけるインデックス情報を記憶装置に格納する重複除去部とを備える。【選択図】図３
2014041452.tif 000002
【特許請求の範囲】
【請求項１】
第１乃至第Ｎ（≧３）のブルームフィルタと、
格納対象データと同内容のデータが記憶装置内に存在することを示す情報が各ブルームフィルタに登録されているか否かを判断する処理を、当該情報が登録されていない未登録ブルームフィルタを見出すか、当該情報が前記第Ｎのブルームフィルタに登録されていることを見出すまで、前記第１乃至第Ｎのブルームフィルタについて順次行い、前記未登録ブルームフィルタを見出した場合には、前記格納対象データが前記記憶装置内に存在することを示す情報を前記未登録ブルームフィルタに登録する計数部と、
前記計数部により前記未登録ブルームフィルタが見出された場合には、前記格納対象データを前記記憶装置に格納し、前記計数部によりに前記情報が前記第Ｎのブルームフィルタに登録されていることが見出された場合には、前記格納対象データを前記記憶装置内の同内容のデータに対応づけるインデックス情報を前記記憶装置に格納する重複除去部と、
を備えることを特徴とする重複除去装置。
【請求項２】
第１のブルームフィルタのビット長が、第Ｎのブルームフィルタのビット長よりも長い
ことを特徴とする請求項１に記載の重複除去装置。
【請求項３】
各ブルームフィルタのビット数が、第１乃至第Ｎのブルームフィルタの順に小さくなる
ことを特徴とする請求項１に記載の重複除去装置。
【請求項４】
コンピュータが、
格納対象データと同内容のデータが記憶装置内に存在することを示す情報が各ブルームフィルタに登録されているか否かを判断する処理を、当該情報が登録されていない未登録ブルームフィルタを見出すか、当該情報が第Ｎのブルームフィルタに登録されていることを見出すまで、第１乃至第Ｎのブルームフィルタについて順次行い、
前記未登録ブルームフィルタを見出した場合には、前記格納対象データが前記記憶装置内に存在することを示す情報を前記未登録ブルームフィルタに登録すると共に、前記格納対象データを前記記憶装置に格納し、
前記情報が前記第Ｎのブルームフィルタに登録されていることを見出した場合には、前記格納対象データを前記記憶装置内の同内容のデータに対応づけるインデックス情報を前記記憶装置に格納する
ことを特徴とする重複除去方法。
【請求項５】
コンピュータを、
第１乃至第Ｎ（≧３）のブルームフィルタと、
格納対象データと同内容のデータが記憶装置内に存在することを示す情報が各ブルームフィルタに登録されているか否かを判断する処理を、当該情報が登録されていない未登録ブルームフィルタを見出すか、当該情報が前記第Ｎのブルームフィルタに登録されていることを見出すまで、前記第１乃至第Ｎのブルームフィルタについて順次行い、前記未登録ブルームフィルタを見出した場合には、前記格納対象データが前記記憶装置内に存在することを示す情報を前記未登録ブルームフィルタに登録する計数部と、
前記計数部により前記未登録ブルームフィルタが見出された場合には、前記格納対象データを前記記憶装置に格納し、前記計数部によりに前記情報が前記第Ｎのブルームフィルタに登録されていることが見出された場合には、前記格納対象データを前記記憶装置内の同内容のデータに対応づけるインデックス情報を前記記憶装置に格納する重複除去部と、
を備える装置として動作させることを特徴とする重複除去プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、重複除去装置、重複除去方法及び重複除去プログラムに関する。
【背景技術】
【０００２】
ストレージシステムとして、格納が指示されたデータを比較的小サイズのデータに分割し、分割したデータの中の、同一内容のデータが既に格納されているデータについては、その格納を行わないものが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１０−５３１０８６号公報
【特許文献２】特開平９−１６６０７号公報
【特許文献３】特開２０１１−１７１９９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のような機能を有する既存のストレージシステムは、２個目の重複データから重複除去を行う（データを格納しない）ものとなっているのであるが、記憶装置に格納されるデータの種類によっては、Ｎ（≧３）個目の重複データから重複除去を行った方が良い場合もある。ただし、Ｎ（≧３）個目の重複データから重複除去を行うために、各データの重複数をカウンタによって管理するのは、あまり効率的なことではない。
【０００５】
そこで、本発明の課題は、Ｎ（≧３）個目の重複データからの重複除去が効率的に行える技術を提供することにある。
【課題を解決するための手段】
【０００６】
一態様の重複除去装置は、
第１乃至第Ｎ（≧３）のブルームフィルタと、
格納対象データと同内容のデータが記憶装置内に存在することを示す情報が各ブルームフィルタに登録されているか否かを判断する処理を、当該情報が登録されていない未登録ブルームフィルタを見出すか、当該情報が前記第Ｎのブルームフィルタに登録されていることを見出すまで、前記第１乃至第Ｎのブルームフィルタについて順次行い、前記未登録ブルームフィルタを見出した場合には、前記格納対象データが前記記憶装置内に存在することを示す情報を前記未登録ブルームフィルタに登録する計数部と、
前記計数部により前記未登録ブルームフィルタが見出された場合には、前記格納対象データを前記記憶装置に格納し、前記計数部によりに前記情報が前記第Ｎのブルームフィルタに登録されていることが見出された場合には、前記格納対象データを前記記憶装置内の同内容のデータに対応づけるインデックス情報を前記記憶装置に格納する重複除去部と、
を備える。
【０００７】
また、一態様の重複除去方法は、
コンピュータを、
格納対象データと同内容のデータが記憶装置内に存在することを示す情報が各ブルームフィルタに登録されているか否かを判断する処理を、当該情報が登録されていない未登録ブルームフィルタを見出すか、当該情報が第Ｎのブルームフィルタに登録されていることを見出すまで、第１乃至第Ｎのブルームフィルタについて順次行い、
前記未登録ブルームフィルタを見出した場合には、前記格納対象データが前記記憶装置
内に存在することを示す情報を前記未登録ブルームフィルタに登録すると共に、前記格納対象データを前記記憶装置に格納し、
前記情報が前記第Ｎのブルームフィルタに登録されていることを見出した場合には、前記格納対象データを前記記憶装置内の同内容のデータに対応づけるインデックス情報を前記記憶装置に格納する。
【０００８】
一態様の重複除去プログラムは、
コンピュータを、
第１乃至第Ｎ（≧３）のブルームフィルタと、
格納対象データと同内容のデータが記憶装置内に存在することを示す情報が各ブルームフィルタに登録されているか否かを判断する処理を、当該情報が登録されていない未登録ブルームフィルタを見出すか、当該情報が前記第Ｎのブルームフィルタに登録されていることを見出すまで、前記第１乃至第Ｎのブルームフィルタについて順次行い、前記未登録ブルームフィルタを見出した場合には、前記格納対象データが前記記憶装置内に存在することを示す情報を前記未登録ブルームフィルタに登録する計数部と、
前記計数部により前記未登録ブルームフィルタが見出された場合には、前記格納対象データを前記記憶装置に格納し、前記計数部によりに前記情報が前記第Ｎのブルームフィルタに登録されていることが見出された場合には、前記格納対象データを前記記憶装置内の同内容のデータに対応づけるインデックス情報を前記記憶装置に格納する重複除去部と、
を備える装置として動作させる。
【発明の効果】
【０００９】
Ｎ（≧３）個目の重複データからの重複除去が効率的に行える技術を提供できる。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係る重複除去装置のハードウェア構成図である。
【図２】実施形態に係る重複除去装置の機能ブロック図である。
【図３】実施形態に係る重複除去装置が備える計数部が実行する計数処理の流れ図である。
【図４Ａ】実施形態に係る重複除去装置の動作内容の説明図（その１）である。
【図４Ｂ】実施形態に係る重複除去装置の動作内容の説明図（その２）である。
【図４Ｃ】実施形態に係る重複除去装置の動作内容の説明図（その３）である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について、図面を参照して詳細に説明する。尚、以下で説明する実施形態は、本発明の一例に過ぎず、本発明は、実施形態とは具体的な構成／手順が異なる形でも実現することができるものである。
【００１２】
図１に、実施形態に係る重複除去装置１０のハードウェア構成図を示す。また、図２に、実施形態に係る重複除去装置１０の機能ブロック図を示す。
【００１３】
図１に示してあるように、本実施形態に係る重複除去装置１０は、記憶装置３０及びホスト１００と接続されるコンピュータ５０のＨＤＤ（Hard Disk Drive）１３に、ＯＳ(Operating System)、重複除去プログラム１８等をインストールした装置である。
【００１４】
重複除去プログラム１８は、コンピュータ５０を、図２に示したような重複除去装置１
０、すなわち、計数部２０と重複除去部２５とを備えた重複除去装置１０として動作させるプログラムである。
【００１５】
重複除去部２５は、計数部２０から通常格納指示情報と共に格納対象データ及びその論
理ブロックアドレスが送信されてきた場合に、当該格納対象データを記憶装置３０内に格納するユニット（機能ブロック）である。また、重複除去部２５は、計数部２０からインデックス情報格納指示情報と共に格納対象データ及びその論理ブロックアドレスが送信されてきた場合に、当該格納対象データを記憶装置３０内の同内容のデータに対応づけるためのインデックス情報を記憶装置３０内に格納するユニットともなっている。
【００１６】
この重複除去部２５が行う処理は、一般的な重複除去装置／重複除去ストレージシステム内の重複除去エンジンと本質的には同内容のものである。そのため、当該処理の詳細説明は省略する。
【００１７】
計数部２０は、ホスト１００から受信した格納対象データ（及びその論理ブロックアドレス）毎に、格納対象データ自体、格納対象データのインデックス情報のいずれを記憶装置３０内に格納するかを決定し、重複除去部２５に対して、決定した情報の格納を指示するユニットである。
【００１８】
計数部２０は、ｋ（≧２）個のハッシュ関数と、第１のブルームフィルタ２２から第Ｎ（≧３）のブルームフィルタ２２までのＮ個のブルームフィルタ２２とを有している。尚、Ｎ値としては、通常、記憶装置３０の利用パターンとメモリサイズとを考慮して定めた値が使用される。以下、第ｉ（１≦ｉ≦Ｎ）のブルームフィルタ２２のことを、第ｉ−ＢＦ２２又は第ｉのＢＦ２２とも表記する。
【００１９】
各ハッシュ関数により得られることがある各ハッシュ値は、個々のブルームフィルタ２２のいずれかのビットに対応付けられている。
【００２０】
また、図２中に点線で模式的に示しあるように、各ブルームフィルタ２２のビット数は、第１のブルームフィルタ２２、第２のブルームフィルタ２２、…、第Ｎのブルームフィルタ２２の順に少なくなっている。尚、各ブルームフィルタ２２のビット数をそのように定めている理由については後述するが、ｋ値、各ブルームフィルタ２２のビット数は、擬陽性による誤判定の確率が十分に小さくなるようにも定められている。
【００２１】
そして、計数部２０は、ホスト１００から格納対象データを受信した場合、図３に示した手順の計数処理を実行するように構成（プログラミング）されている。
【００２２】
すなわち、ホスト１００から格納対象データを受信した計数部２０は、まず、変数ｉに“１”をセットする（ステップＳ１０１）。次いで、計数部２０は、ｋ個のハッシュ関数を用いて格納対象データについてのｋ個のハッシュ値を算出する（ステップＳ１０２）。
【００２３】
その後、計数部２０は、各算出ハッシュ値に対応づけられている、第ｉ−ＢＦ２２のビット値に基づき、格納対象データが新規データであるか否かを判定する処理（ステップＳ１０３）を行う。すなわち、このステップＳ１０３にて、計数部２０は、第ｉ−ＢＦ２２から、各算出ハッシュ値に対応づけられているビット値を読み出す。そして、計数部２０は、或る算出ハッシュ値に対応づけられているビット値が“０”であった場合には、格納対象データが新規データであると判定してステップＳ１０３の処理を終了する。また、計数部２０は、全ての算出ハッシュ値に対応づけられているビットの値が“１”であった場合には、格納対象データが新規データではない（格納対象データと同内容のデータが記憶装置３０内に格納されている）と判定してステップＳ１０３の処理を終了する。
【００２４】
格納対象データが新規データであると判定した場合（ステップＳ１０４；ＹＥＳ）、計数部２０は、各算出ハッシュ値に対応付けられている第ｉ−ＢＦの各ビットに“１”を設定する（ステップＳ１０５）。そして、計数部２０は、重複除去部２５に対して、通常格
納指示情報、格納対象データ及びその論理ブロックアドレスを送信（ステップＳ１０６）してから、この計数処理を終了する。
【００２５】
一方、格納対象データが新規データではないと判定した場合（ステップＳ１０４；ＮＯ）、計数部２０は、変数ｉに“１”を加算する（ステップＳ１０７）。次いで、計数部２０は、ｉ＞Ｎが成立しているか否かを判断（ステップＳ１０８）し、ｉ＞Ｎが成立していなかった場合（ステップＳ１０８；ＮＯ）には、ステップＳ１０３以降の処理を開始する。
【００２６】
計数部２０は、このような処理を繰り返しているうちに、ｉ＞Ｎが成立した場合（ステップＳ１０８；ＹＥＳ）には、重複除去部２５に対して、インデックス情報格納指示情報、格納対象データ及びその論理ブロックアドレスを送信（ステップＳ１０９）してから、この計数処理を終了する。
【００２７】
以下、Ｎ＝３である場合を例に、図４Ａ〜図４Ｃを用いて、重複除去装置１０の動作をさらに具体的に説明する。
【００２８】
各ＢＦ２２の全ビットが“０”となっている状況下、同一内容の更新対象データ（以下、単に、データと表記する）Ｘ１〜Ｘ４がこの順にホスト１００から送信されてきた場合を考える。
【００２９】
この場合、データＸ１は、ｉ＝１の状態で実行されるステップＳ１０３の処理で、新規データであると判定される。そのため、ステップＳ１０５の処理により、図４Ａに模式的に示したように、データＸ１が記憶装置３０内に存在していることを示す情報（“データＸ１”）が第１−ＢＦ２２に登録される。そして、ステップＳ１０６の処理が行われるため、データＸ１が記憶装置３０内に格納されることになる。
【００３０】
また、更新対象データＸ２は、ｉ＝１の状態で実行されるステップＳ１０３の処理では、新規データではないと判定され、ｉ＝２の状態で実行されるステップＳ１０３の処理で、新規データであると判定される。そのため、ステップＳ１０５の処理により、図４Ｂに模式的に示したように、データＸ２が記憶装置３０内に存在していることを示す情報（“データＸ２”）が第２−ＢＦ２２に登録される。また、ステップＳ１０６の処理が行われるため、データＸ２が記憶装置３０内に格納されることになる。
【００３１】
データＸ３については、ｉ＝１、２の状態で実行されるステップＳ１０３の処理では、新規データではないと判定され、ｉ＝３の状態で実行されるステップＳ１０３の処理で、新規データであると判定される。そのため、ステップＳ１０５の処理により、図４Ｃに模式的に示したように、更新対象データＸ３が記憶装置３０内に存在していることを示す情報（“データＸ３”）が第３−ＢＦ２２に登録される。また、ステップＳ１０６の処理が行われるため、データＸ３が記憶装置３０内に格納されることになる。
【００３２】
データＸ４については、ｉ＝１〜３の状態で実行されるステップＳ１０３の処理では、新規データではないと判定される。そして、ｉ＝３の状態でステップＳ１０７の処理が行われると、ｉ＞Ｎが成立することになる。そのため、データＸ４、すなわち、Ｎ個目の重複データについては、ステップＳ１０９の処理が行われて、記憶装置３０内にデータＸ４自体ではなくインデックス情報が記憶されることになる。
【００３３】
以上説明したように、本実施形態に係る重複除去装置１０は、データ数によらず高速に実行可能なＢＦ２２によるデータの有無の判定をＮ回繰り返すことによりＮ個目の重複データからの重複除去を行う構成を有している。そして、重複数のカウンタによる管理は、
データ数によっては、カウントアップするデータの検索に時間が掛かるものなのであるから、本実施形態に係る重複除去装置１０は、Ｎ（≧３）個目の重複データからの重複除去が、効率的に（メモリサイズに合わせた、重複除去の管理データの格納が可能な形で）行える装置となっていると言うことが出来る。
【００３４】
《変形形態》
上記した重複除去装置１０は、各種の変形を行えるものである。例えば、重複除去装置１０を、ビット数が同一のＮ個のＢＦ２２を備えた装置に変形することが出来る。ただし、上記手順の処理により、第ｊ（≧２）のＢＦ２２にて管理されることになるデータの個数は、第ｉ-１のＢＦ２２で管理されることになるデータの個数より常に小さくなる。従
って、メモリの記憶容量が無駄に使用されないようにするために、ＢＦ２２のビット数は、後段側のＢＦ２２のビット数の方が小さくなるようにしておくことが好ましいのであるが、例えば、第ＮのＢＦ２２のみのビット数を少なくしておくことも出来る。
以上、開示した技術に関し、更に以下の付記を開示する。
【００３５】
（付記１）  第１乃至第Ｎ（≧３）のブルームフィルタと、
格納対象データと同内容のデータが記憶装置内に存在することを示す情報が各ブルームフィルタに登録されているか否かを判断する処理を、当該情報が登録されていない未登録ブルームフィルタを見出すか、当該情報が前記第Ｎのブルームフィルタに登録されていることを見出すまで、前記第１乃至第Ｎのブルームフィルタについて順次行い、前記未登録ブルームフィルタを見出した場合には、前記格納対象データが前記記憶装置内に存在することを示す情報を前記未登録ブルームフィルタに登録する計数部と、
前記計数部により前記未登録ブルームフィルタが見出された場合には、前記格納対象データを前記記憶装置に格納し、前記計数部によりに前記情報が前記第Ｎのブルームフィルタに登録されていることが見出された場合には、前記格納対象データを前記記憶装置内の同内容のデータに対応づけるインデックス情報を前記記憶装置に格納する重複除去部（２５）と、
を備えることを特徴とする重複除去装置。
【００３６】
（付記２）  第１のブルームフィルタのビット長が、第Ｎのブルームフィルタのビット長よりも長い
ことを特徴とする付記１に記載の重複除去装置。
【００３７】
（付記３）  各ブルームフィルタのビット数が、第１乃至第Ｎのブルームフィルタの順に小さくなる
ことを特徴とする付記１に記載の重複除去装置。
【００３８】
（付記４）  コンピュータが、
格納対象データと同内容のデータが記憶装置内に存在することを示す情報が各ブルームフィルタに登録されているか否かを判断する処理を、当該情報が登録されていない未登録ブルームフィルタを見出すか、当該情報が第Ｎのブルームフィルタに登録されていることを見出すまで、第１乃至第Ｎのブルームフィルタについて順次行い、
前記未登録ブルームフィルタを見出した場合には、前記格納対象データが前記記憶装置内に存在することを示す情報を前記未登録ブルームフィルタに登録すると共に、前記格納対象データを前記記憶装置に格納し、
前記情報が前記第Ｎのブルームフィルタに登録されていることを見出した場合には、前記格納対象データを前記記憶装置内の同内容のデータに対応づけるインデックス情報を前記記憶装置に格納する
ことを特徴とする重複除去方法。
【００３９】
（付記５）  コンピュータを、
第１乃至第Ｎ（≧３）のブルームフィルタと、
格納対象データと同内容のデータが記憶装置内に存在することを示す情報が各ブルームフィルタに登録されているか否かを判断する処理を、当該情報が登録されていない未登録ブルームフィルタを見出すか、当該情報が前記第Ｎのブルームフィルタに登録されていることを見出すまで、前記第１乃至第Ｎのブルームフィルタについて順次行い、前記未登録ブルームフィルタを見出した場合には、前記格納対象データが前記記憶装置内に存在することを示す情報を前記未登録ブルームフィルタに登録する計数部と、
前記計数部により前記未登録ブルームフィルタが見出された場合には、前記格納対象データを前記記憶装置に格納し、前記計数部によりに前記情報が前記第Ｎのブルームフィルタに登録されていることが見出された場合には、前記格納対象データを前記記憶装置内の同内容のデータに対応づけるインデックス情報を前記記憶装置に格納する重複除去部と、
を備える装置として動作させることを特徴とする重複除去プログラム。
【００４０】
（付記６）  コンピュータを、
第１乃至第Ｎ（≧３）のブルームフィルタと、
格納対象データと同内容のデータが記憶装置内に存在することを示す情報が各ブルームフィルタに登録されているか否かを判断する処理を、当該情報が登録されていない未登録ブルームフィルタを見出すか、当該情報が前記第Ｎのブルームフィルタに登録されていることを見出すまで、前記第１乃至第Ｎのブルームフィルタについて順次行い、前記未登録ブルームフィルタを見出した場合には、前記格納対象データが前記記憶装置内に存在することを示す情報を前記未登録ブルームフィルタに登録する計数部と、
前記計数部により前記未登録ブルームフィルタが見出された場合には、前記格納対象データを前記記憶装置に格納し、前記計数部によりに前記情報が前記第Ｎのブルームフィルタに登録されていることが見出された場合には、前記格納対象データを前記記憶装置内の同内容のデータに対応づけるインデックス情報を前記記憶装置に格納する重複除去部と、
を備える装置として動作させる重複除去プログラムを記録したコンピュータ可読媒体。
【符号の説明】
【００４１】
１０    重複除去装置
１１    ＣＰＵ
１２    メモリ
１３    ＨＤＤ
１８    重複除去スプログラム
２０    計数部
２２    ブルームフィルタ
２５    重複除去部
３０    記憶装置
５０    コンピュータ
１００    ホスト
【図１】
2014041452.tif 000003
【図２】
2014041452.tif 000004
【図３】
2014041452.tif 000005
【図４Ａ】
2014041452.tif 000006
【図４Ｂ】
2014041452.tif 000007
【図４Ｃ】
2014041452.tif 000008