特許第6805816号(P6805816)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許6805816情報処理装置、情報処理システム、情報処理方法及びプログラム
<>
  • 特許6805816-情報処理装置、情報処理システム、情報処理方法及びプログラム 図000002
  • 特許6805816-情報処理装置、情報処理システム、情報処理方法及びプログラム 図000003
  • 特許6805816-情報処理装置、情報処理システム、情報処理方法及びプログラム 図000004
  • 特許6805816-情報処理装置、情報処理システム、情報処理方法及びプログラム 図000005
  • 特許6805816-情報処理装置、情報処理システム、情報処理方法及びプログラム 図000006
  • 特許6805816-情報処理装置、情報処理システム、情報処理方法及びプログラム 図000007
  • 特許6805816-情報処理装置、情報処理システム、情報処理方法及びプログラム 図000008
  • 特許6805816-情報処理装置、情報処理システム、情報処理方法及びプログラム 図000009
  • 特許6805816-情報処理装置、情報処理システム、情報処理方法及びプログラム 図000010
  • 特許6805816-情報処理装置、情報処理システム、情報処理方法及びプログラム 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6805816
(24)【登録日】2020年12月8日
(45)【発行日】2020年12月23日
(54)【発明の名称】情報処理装置、情報処理システム、情報処理方法及びプログラム
(51)【国際特許分類】
   G06F 16/174 20190101AFI20201214BHJP
   G06F 3/06 20060101ALI20201214BHJP
【FI】
   G06F16/174
   G06F3/06 301K
   G06F3/06 301W
【請求項の数】8
【全頁数】14
(21)【出願番号】特願2016-254035(P2016-254035)
(22)【出願日】2016年12月27日
(65)【公開番号】特開2018-106545(P2018-106545A)
(43)【公開日】2018年7月5日
【審査請求日】2019年9月10日
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】田村 雅寿
【審査官】 早川 学
(56)【参考文献】
【文献】 特開2014−170304(JP,A)
【文献】 特開2009−087021(JP,A)
【文献】 特開2014−225297(JP,A)
【文献】 特開2014−199573(JP,A)
【文献】 特表2013−514560(JP,A)
【文献】 米国特許出願公開第2011/0219106(US,A1)
【文献】 米国特許出願公開第2013/0159261(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00−16/958
G06F 3/06
(57)【特許請求の範囲】
【請求項1】
過去にデータの重複除去が行われた単位領域のアドレスに関するアドレス情報と前記単位領域のデータに関するデータ情報とを記憶する過去情報記憶部と、
前記アドレス情報を用いて現時点でデータの重複除去が行われた状態にある単位領域のデータ情報を生成する生成部と、
前記過去情報記憶部が記憶するデータ情報と前記生成部が生成したデータ情報とに基づいてガベージコレクションの対象とするデータ領域を特定する特定部と、
前記データ領域を有するデータ記憶部と
を有することを特徴とする情報処理装置。
【請求項2】
前記過去情報記憶部は、前記アドレス情報をブルームフィルタを用いて記憶し、
前記生成部は、前記ブルームフィルタを用いて現時点でデータの重複除去が行われた状態にある単位領域のデータに関するデータ情報を生成することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記生成部は、前記ブルームフィルタを用いて現時点でデータの重複除去が行われた可能性がある単位領域のアドレスを特定し、特定したアドレスの単位領域が現時点でデータの重複除去が行われた状態にある単位領域であるか否かを前記データ記憶部を参照して判定し、現時点でデータの重複除去が行われた状態にあると判定した単位領域のデータ情報を生成することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
データの重複除去が行われている単位領域のアドレスに関するアドレス情報をブルームフィルタを用いて記憶するとともに、前記単位領域のデータに関するデータ情報と該データの前記データ記憶部への書き込み回数を示すカウント値とを対応付けた情報を前記カウント値が大きい順に所定の数だけカウントテーブルとして記憶する現在情報記憶部と、
前記現在情報記憶部が記憶する情報を用いて前記過去情報記憶部を更新し、前記カウントテーブルのカウント値を調整し、かつ、前記現在情報記憶部が記憶するブルームフィルタをクリアする世代交代部とをさらに有することを特徴とする請求項2又は3に記載の情報処理装置。
【請求項5】
前記単位領域はブロックであり、前記データ情報はハッシュ値であることを特徴とする請求項1〜4のいずれか1つに記載の情報処理装置。
【請求項6】
データを記憶する情報処理装置と前記情報処理装置にデータを格納するクライアント装置とを有する情報処理システムにおいて、
前記情報処理装置は、
過去にデータの重複除去が行われた単位領域のアドレスに関するアドレス情報と前記単位領域のデータに関するデータ情報とを記憶する過去情報記憶部と、
前記アドレス情報を用いて現時点でデータの重複除去が行われた状態にある単位領域のデータ情報を生成する生成部と、
前記過去情報記憶部が記憶するデータ情報と前記生成部が生成したデータ情報とに基づいてガベージコレクションの対象とするデータ領域を特定する特定部と、
前記データ領域を有するデータ記憶部と
を有することを特徴とする情報処理システム。
【請求項7】
コンピュータが、
過去にデータの重複除去が行われた単位領域のアドレスに関するアドレス情報と前記単位領域のデータに関するデータ情報とを過去情報記憶部に記憶し、
前記アドレス情報を用いて現時点でデータの重複除去が行われた状態にある単位領域のデータ情報を生成し、
前記過去情報記憶部が記憶するデータ情報と生成したデータ情報とに基づいてガベージコレクションの対象とするデータ領域を特定
する処理を実行することを特徴とする情報処理方法。
【請求項8】
コンピュータに、
過去にデータの重複除去が行われた単位領域のアドレスに関するアドレス情報と前記単位領域のデータに関するデータ情報とを過去情報記憶部に記憶し、
前記アドレス情報を用いて現時点でデータの重複除去が行われた状態にある単位領域のデータ情報を生成し、
前記過去情報記憶部が記憶するデータ情報と生成したデータ情報とに基づいてガベージコレクションの対象とするデータ領域を特定
する処理を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理システム、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
ストレージ装置は、データを蓄積するにあたって、必要となるデータ容量を減らすために、重複するデータを除去する。ただし、データの重複数を正確に管理するためには、データの更新時に、既存データの読み出し、読み出したデータの重複数の1減少、新規データの書き込み、新規データの重複数の1増加といった処理が必要になり、データの更新処理が著しく遅くなる。
【0003】
そこで、ストレージ装置は、データの重複数を管理する代わりに、重複処理したデータが消されて不要になったかを調べ、不要になったデータ領域を回収するガベージコレクション(GC:Garbage Collection)の機能を備える。
【0004】
なお、重複数がN未満の場合には重複除去を行わず、重複数がN以上になると重複除去を行うことによって、単位管理データ量当たりのデータの削減量を大きくする技術がある。また、ブロックの特徴データと格納位置情報を関連付けた格納位置特定テーブルと、記憶装置識別情報と特徴データとを関連付けた記憶装置特定テーブルとを用いることで、重複排除機能を有するストレージシステムの性能向上を図る技術がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2014−199573号公報
【特許文献2】特表2013−514560号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、GCはストレージ装置の全領域の読み出しとハッシュ値演算を必要とする重い処理であり、GCはストレージ装置のレスポンス低下を発生させるという問題がある。特に、全データの重複除去を行うのではなく重複率の高い一部のデータ(トップからk個:kは正の整数)のみを重複除去するtop−k重複除去においては、GC時に全領域をチェックすることは非効率的である。
【0007】
本発明は、1つの側面では、重複除去におけるGCの効率を向上することを目的とする。
【課題を解決するための手段】
【0008】
1つの態様では、情報処理装置は、過去情報記憶部と、生成部と、特定部と、データ記憶部とを有する。過去情報記憶部は、過去にデータの重複除去が行われた単位領域のアドレスに関するアドレス情報と過去にデータの重複除去が行われた単位領域のデータに関するデータ情報とを記憶する。生成部は、アドレス情報を用いて現時点でデータの重複除去が行われた状態にある単位領域のデータ情報を生成する。特定部は、過去情報記憶部が記憶するデータ情報と生成部が生成したデータ情報とに基づいてガベージコレクションの対象とするデータ領域を特定する。データ記憶部は、データ領域を有する。
【発明の効果】
【0009】
1つの側面では、本発明は、重複除去におけるGCの効率を向上することができる。
【図面の簡単な説明】
【0010】
図1図1は、重複除去を説明するための図である。
図2図2は、実施例に係る情報処理システムの構成を示す図である。
図3図3は、書込部による書き込み処理を説明するための図である。
図4図4は、ブルームフィルタを説明するための図である。
図5図5は、世代交代を説明するための図である。
図6図6は、GC部によるGCを説明するための図である。
図7図7は、書込部による書き込み処理のフローを示すフローチャートである。
図8図8は、世代交代部による世代交代処理のフローを示すフローチャートである。
図9図9は、GC部によるGC処理のフローを示すフローチャートである。
図10図10は、実施例に係るストレージ制御プログラムを実行するコンピュータのハードウェア構成を示す図である。
【発明を実施するための形態】
【0011】
以下に、本願の開示する情報処理装置、情報処理システム、情報処理方法及びプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【0012】
まず、重複除去について説明する。図1は、重複除去を説明するための図である。図1は、サーバX〜サーバZが記憶するデータをストレージ装置にバックアップする場合を示す。各サーバが記憶するデータは、ブロックに分割され、内容の同じブロックがあれば、ストレージ装置は1個所にのみデータを記憶する。
【0013】
図1では、サーバXが記憶するデータは、A〜Eのブロックに分割され、サーバYが記憶するデータは、A、B、D、E、Fに分割され、サーバZが記憶するデータは、A〜D、Gのブロックに分割される。A、B、Dは各サーバに記憶され重複するため、ストレージ装置はA、B、Dを1個所にだけ記憶する。C、Eは2つのサーバZに記憶され重複するため、ストレージ装置はC、Eを1個所にだけ記憶する。
【0014】
このように、重複除去を行うことによって、ストレージ装置のデータ容量を削減することができる。なお、図1では、複数のサーバのデータをバックアップする場合について説明したが、ストレージ装置は、1台のサーバのデータを重複除去してもよい。また、ストレージ装置は、サーバ以外の装置のデータを重複除去してもよい。
【0015】
次に、実施例に係る情報処理システムの構成について説明する。図2は、実施例に係る情報処理システムの構成を示す図である。図2に示すように、情報処理システム1は、ストレージ装置2とクライアント3を有する。
【0016】
ストレージ装置2は、データを記憶する装置であり、磁気ディスクにデータを記憶する。なお、ストレージ装置2は、NANDフラッシュメモリ等の他の不揮発性記憶媒体にデータを記憶してもよい。
【0017】
クライアント3は、ストレージ装置2にデータを格納する装置であり、例えばサーバである。なお、図2では、説明の便宜上、1台のクライアント3のみを示したが、ストレージ装置2は、複数のクライアント3のデータを格納してもよい。
【0018】
ストレージ装置2は、データ記憶部10とストレージ制御部20とを有する。データ記憶部10は、クライアント3が利用するデータを記憶するとともに、データの管理に用いられる情報を記憶する。
【0019】
ストレージ制御部20は、ストレージ装置2の制御を行う。ストレージ制御部20は、書込部21と、世代交代部22と、現在情報記憶部23と、過去情報記憶部24と、GC部25とを有する。
【0020】
書込部21は、クライアント3からの指示に基づいてデータ記憶部10にデータを書き込む。図3は、書込部21による書き込み処理を説明するための図である。書込部21は、データを所定の大きさの書込ブロックに分割してデータ記憶部10に書き込む。
【0021】
書込部21は、書込ブロックのデータからハッシュ値を計算し、計算したハッシュ値がtop−kカウンタ31に登録されていれば、top−kカウンタ31のカウンタを1増加させる。
【0022】
top−kカウンタ31は、ハッシュ値とカウンタを対応付けるテーブルである。ハッシュ値は、ブロックのデータにハッシュ関数を適用して計算される値である。カウンタは、対応するハッシュ値がハッシュ関数を適用して計算されるデータがデータ記憶部10に書き込まれた数である。書き込まれたデータは使用されなくなる場合がある。したがって、カウンタは、ハッシュ値がハッシュ関数を適用して計算されるデータがデータ記憶部10にある数を示すものではない。top−kカウンタ31は、カウンタの値が大きい方からk個のエントリを有する。
【0023】
書込部21は、カウンタの値が閾値を超えると重複除去処理を行う。すなわち、データ記憶部10には、データが同じブロックが閾値の数まで記憶される。なお、以下では、top−kカウンタ31に登録され、カウンタの値が閾値を超えているハッシュ値を、重複除去中のハッシュ値と呼ぶ。
【0024】
重複処理が行われたブロックは、ディスク領域の重複データ領域43に記憶され、重複処理が行われていないブロックは、ディスク領域の通常データ領域42に記憶される。ブロックのアドレスに重複データ領域43へのポインタ又は通常データ領域42へのポインタを対応付けるポインタ領域41を介してブロックはアクセスされる。ポインタの値は、ブロックのデータのハッシュ値に基づく値である。ポインタ領域41はディスク領域に含まれる。ディスク領域は磁気ディスクの領域である。
【0025】
書込部21は、ブルームフィルタ(BF:Bloom Filter)32に重複除去したブロックのアドレスを登録する。図4は、ブルームフィルタ32を説明するための図である。ブルームフィルタ32は、空間効率の良い確率的データ構造であり、要素が集合のメンバーであるかどうかのテストに使われる。
【0026】
ブルームフィルタ32は、偽陽性による誤検出の可能性があるが偽陰性はない、要素を集合に追加することができるが削除することはできない、集合に要素が追加されればされるほど偽陽性の可能性が高くなるという特性を有する。ここで、偽陽性とは、要素が集合のメンバーでないのにメンバーであると判定することであり、偽陰性とは、要素が集合のメンバーであるのにメンバーでないと判定することである。
【0027】
ブルームフィルタ32はm(mは正の整数)ビットの配列であり、全ビットの初期値は0である。ブルームフィルタ32は、i(iは正の整数)個のハッシュ関数とともに用いられる。各ハッシュ関数は、キー値をm個の配列位置にマッピングする。
【0028】
重複除去したブロックのアドレスをブルームフィルタ32に登録する場合には、書込部21は、アドレスをi個のハッシュ関数に入力して、i個の配列位置を得て、ブルームフィルタ32のi個の配列位置のビットを1にする。図4では、アドレスx、y、zに対してそれぞれ3つのハッシュ関数を用いて計算された配列位置のビットが1にセットされている。
【0029】
ブロックのアドレスがブルームフィルタ32に登録されているかを調べるために、後述するGC部25は、アドレスをi個のハッシュ関数に入力して、i個の配列位置を得る。そして、GC部25は、i個の配列位置のビット群の1つでも0である場合、アドレスがブルームフィルタ32に登録されていない、すなわち、ブロックに重複除去処理が行われていないと判定する。
【0030】
一方、i個の配列位置の全ビットが1である場合、GC部25は、アドレスがブルームフィルタ32に登録されているか、i個のビットは他のアドレスを登録した時に偶然全部1になった(偽陽性)と判定する。すなわち、i個の配列位置の全ビットが1である場合、GC部25は、ブロックに重複除去処理が行われている可能性が高いと判定する。図4では、wは偽陽性の場合を示す。
【0031】
なお、top−kカウンタ31及びブルームフィルタ32はメインメモリに記憶される。したがって、top−kカウンタ31及びブルームフィルタ32の参照は、ディスク領域の参照に較べて高速に行うことができる。
【0032】
図2に戻って、世代交代部22は、定期的もしくはtop−kカウンタ31の状況に応じて世代交代を行う。ここで、世代交代とは、top−kカウンタ31の更新を行うことである。データが重複するブロックは時間とともに変化するが、top−kカウンタ31は上位k個のエントリしかなく、過去のデータの重複の影響を受け易い。このため、定期的もしくはtop−kカウンタ31の状況に応じて、世代交代部22は、top−kカウンタ31を更新する。
【0033】
図5は、世代交代を説明するための図である。図5では、世代交代前の旧世代のtop−kカウンタ31はtop−kカウンタ31aで表され、旧世代のブルームフィルタ32はブルームフィルタ32aで表される。また、世代交代後の新世代のtop−kカウンタ31はtop−kカウンタ31bで表され、新世代のブルームフィルタ32はブルームフィルタ32bで表される。
【0034】
図5に示すように、世代交代部22は、旧世代のtop−kカウンタ31a及びブルームフィルタ32aと過去領域33のマージと、新世代のデータ準備を行う。過去領域33は、過去に重複除去が行われたブロックのハッシュ値を記憶するハッシュ値領域31cと、過去に重複除去が行われたブロックのアドレスが登録されたブルームフィルタ32cを有する。
【0035】
旧世代のtop−kカウンタ31a及びブルームフィルタ32aと過去領域33のマージでは、世代交代部22は、top−kカウンタ31aに含まれるハッシュ値のうちハッシュ値領域31cに含まれないハッシュ値をハッシュ値領域31cに追加する。また、世代交代部22は、ブルームフィルタ32aとブルームフィルタ32cの論理和(OR)をとってブルームフィルタ32cの値とする。
【0036】
新世代のデータ準備では、世代交代部22は、top−kカウンタ31aの状態を基にtop−kカウンタ31bを準備する。例えば、世代交代部22は、top−kカウンタ31aのカウンタの値を1/2にしてtop−kカウンタ31bを準備する。また、世代交代部22は、全ビットが0であるブルームフィルタ32bを準備する。
【0037】
現在情報記憶部23は、現在の世代のtop−kカウンタ31及びブルームフィルタ32を記憶する。過去情報記憶部24は、過去領域33を記憶する。すなわち、過去情報記憶部24は、ハッシュ値領域31cとブルームフィルタ32cを記憶する。
【0038】
GC部25は、重複処理が行われたブロックのデータ領域のうち、データの書き換え等により使用されなくなったデータ領域を特定して回収する。図6は、GC部25によるGCを説明するための図である。図6に示すように、GC部25は、過去領域33を一時領域34にコピーして、過去領域33をクリアする。
【0039】
そして、GC部25は、ディスク領域の各ブロックのアドレスが一時領域34のブルームフィルタ32dに登録されているか否かを判定する。そして、登録されている場合には、ブロックが重複除去されている可能性があるので、GC部25は、磁気ディスクにアクセスして、ブロックが重複除去されているか否かをチェックする。
【0040】
具体的には、GC部25は、磁気ディスクからポインタ領域41を読み出し、ブロックのアドレスに対応するポインタが通常データ領域42を指すか重複データ領域43を指すかに基づいて、ブロックが重複除去されているか否かをチェックする。なお、ブロックのデータを記憶するデータ領域が、通常データ領域42と重複データ領域43に分けられない場合には、GC部25は、ポインタ領域41に重複除去されているか否かを示すフラグを設けることで、ブロックが重複除去されているか否かをチェックする。
【0041】
そして、ブロックが重複除去されている場合には、GC部25は、ブロックのアドレスを過去領域33のブルームフィルタ32cにセットするとともに、ブロックのデータのハッシュ値が過去領域33のハッシュ値領域31cにあるか否かを判定する。そして、ブロックのデータのハッシュ値が過去領域33のハッシュ値領域31cにない場合には、GC部25は、ブロックのデータのハッシュ値をハッシュ値領域31cに追加する。
【0042】
すなわち、GC部25は、現時点で重複除去されているブロックのアドレスを過去領域33のブルームフィルタ32cに登録するとともに、現時点で重複除去されているブロックのハッシュ値を過去領域33のハッシュ値領域31cに追加する。
【0043】
そして、全ディスク領域について処理が終了すると、GC部25は、一時領域34にはあるが過去領域33にはないハッシュ値すなわち使用されていない可能性があるデータ領域を特定する。そして、GC部25は、ハッシュ値がtop−kカウンタ31に含まれているか否かすなわち重複除去中のハッシュ値であるか否かを判定し、top−kカウンタ31に含まれていない場合には、使用されていないデータ領域として特定し、回収する。
【0044】
GC部25は、現時点情報生成部25aと特定部25bを有する。現時点情報生成部25aは、現時点で重複除去されているブロックのアドレスを過去領域33のブルームフィルタ32cに登録するとともに、現時点で重複除去されているブロックのハッシュ値を過去領域33のハッシュ値領域31cに登録する。特定部25bは、使用されていないデータ領域を特定して、回収する。
【0045】
次に、書込部21による書き込み処理のフローについて説明する。図7は、書込部21による書き込み処理のフローを示すフローチャートである。なお、図7は、1つのブロックをデータ記憶部10に書き込む場合の処理を示す。
【0046】
図7に示すように、書込部21は、書込ブロックのデータのハッシュ値を計算し(ステップS1)、計算したハッシュ値がtop−kカウンタ31に存在するか否かを判定する(ステップS2)。そして、計算したハッシュ値がtop−kカウンタ31に存在する場合には、書込部21は、当該ハッシュ値に対応するカウンタをカウントアップする(ステップS3)。
【0047】
そして、書込部21は、カウンタの値が閾値を超えているか否かを判定する(ステップS4)。そして、カウンタの値が閾値を超えている場合には、書込部21は、書込ブロックのアドレスのハッシュ値を計算してブルームフィルタ32に登録し(ステップS5)、重複データとして書き込む(ステップS6)。
【0048】
一方、カウンタの値が閾値を超えていない場合、あるいは、計算したハッシュ値がtop−kカウンタ31に存在しない場合は、書込部21は、非重複データとして書き込む(ステップS7)。
【0049】
このように、書込部21が重複除去されるブロックのアドレスをブルームフィルタ32に登録することで、GC部25は使用されていない可能性が高いデータ領域を磁気ディスクにアクセスすることなくブルームフィルタ32を用いて効率良く見つけることができる。
【0050】
次に、世代交代部22による世代交代処理のフローについて説明する。図8は、世代交代部22による世代交代処理のフローを示すフローチャートである。図8に示すように、世代交代部22は、過去領域33のハッシュ値に重複除去対象のハッシュ値をマージする(ステップS11)。
【0051】
ここで、重複除去対象のハッシュ値とは、図5に示した旧世代のtop−kカウンタ31aに含まれるハッシュ値である。また、マージするとは、top−kカウンタ31aに含まれるハッシュ値のうち、過去領域33に存在しないハッシュ値を過去領域33に追加することである。
【0052】
そして、世代交代部22は、過去領域33のブルームフィルタ32cに重複除去対象のブルームフィルタ32aをマージする(ステップS12)。すなわち、世代交代部22は、ブルームフィルタ32cとブルームフィルタ32aのビット毎のORをとり、ブルームフィルタ32cに格納する。
【0053】
そして、世代交代部22は、重複除去対象のtop−kカウンタ31aを調整し(ステップS13)、新世代のtop−kカウンタ31bとする。ここで、調整するとは、例えばカウンタの値を1/2にすることである。そして、世代交代部22は、重複除去対象のブルームフィルタ32aをクリアし(ステップS14)、新世代のブルームフィルタ32bとする。
【0054】
このように、世代交代部22がtop−kカウンタ31aを調整することによって、ストレージ装置2は重複するデータの時間変化に対応することができる。
【0055】
次に、GC部25によるGC処理のフローについて説明する。図9は、GC部25によるGC処理のフローを示すフローチャートである。図9に示すように、GC部25は、過去領域33を一時領域34にコピーして過去領域33をクリアする(ステップS21)。
【0056】
そして、GC部25は、ディスク領域の全ブロックに対してステップS21〜ステップS28の処理を行う。すなわち、GC部25は、ブロックのアドレスのハッシュ値を計算し(ステップS22)、ブルームフィルタ32にヒットするか否かを判定する(ステップS23)。そして、ブルームフィルタ32にヒットしない場合には、GC部25は、次のブロックを処理する。
【0057】
一方、ブルームフィルタ32にヒットした場合には、GC部25は、該当アドレスが重複除去されているか否かを判定し(ステップS24)、該当アドレスが重複除去されていない場合には、次のブロックを処理する。
【0058】
一方、該当アドレスが重複除去されている場合には、GC部25は、アドレスを過去領域33のブルームフィルタ32cに登録し(ステップS25)、データのハッシュ値を計算する(ステップS26)。そして、GC部25は、ハッシュ値が過去領域33に存在するか否かを判定し(ステップS27)、存在する場合には、次のブロックを処理する。一方、データのハッシュ値が過去領域33に存在しない場合には、GC部25は、ハッシュ値を過去領域33に追加し(ステップS28)、次のブロックを処理する。
【0059】
そして、GC部25は、ディスク領域の全ブロックに対して処理を完了すると、一時領域34にはあるが過去領域33にないハッシュ値に対して、ステップS29〜ステップS30の処理を行う。すなわち、GC部25は、一時領域34にはあるが過去領域33にないハッシュ値が重複除去中のハッシュ値に含まれるか否かを判定し(ステップS29)、含まれる場合には、次のハッシュ値を処理する。一方、重複除去中のハッシュ値に含まない場合には、GC部25は、該当領域を回収する(ステップS30)。ここで、該当領域とは、ハッシュ値に対応付けられたデータ領域である。
【0060】
そして、GC部25は、一時領域34にはあるが過去領域33にないハッシュ値の全てに対して処理を終了すると、GC処理を終了する。
【0061】
このように、GC部25は、過去領域33のブルームフィルタ32を用いて過去に重複除去の対象となった可能性の高いブロックを特定することで、ディスク領域へのアクセスを減らし、GC処理の効率を向上することができる。
【0062】
上述してきたように、実施例では、過去領域33のブルームフィルタ32cに、過去に重複除去が行われたブロックのアドレスを登録し、過去領域33のハッシュ値領域31cに、過去に重複除去が行われたブロックのデータのハッシュ値を記憶する。そして、GC部25が、ブルームフィルタ32cを用いて、現時点でデータの重複除去が行われた可能性があるブロックを特定し、特定したブロックについてデータ記憶部10を参照して、現時点でデータの重複除去が行われた状態にあるブロックを特定する。そして、GC部25は、特定したブロックのデータのハッシュ値とハッシュ値領域31cに含まれるハッシュ値とに基づいて、使用されなくなったデータ領域を特定し、GCの対象として回収する。したがって、ストレージ装置2は、GCを効率よく行うことができる。
【0063】
また、実施例では、世代交代部22が、旧世代のtop−kカウンタ31a及びブルームフィルタ32aを用いて過去領域33を更新する。また、世代交代部22は、top−kカウンタ31aを調整して新世代のtop−kカウンタ31bとするとともに、ブルームフィルタ32aをクリアして新世代のブルームフィルタ32bとする。したがって、ストレージ装置2は、重複するデータの時間変化に対応することができる。
【0064】
なお、実施例では、ストレージ制御部20について説明したが、ストレージ制御部20が有する構成をソフトウェアによって実現することで、同様の機能を有するストレージ制御プログラムを得ることができる。そこで、ストレージ制御プログラムを実行するコンピュータについて説明する。
【0065】
図10は、実施例に係るストレージ制御プログラムを実行するコンピュータのハードウェア構成を示す図である。図10に示すように、コンピュータ50は、メインメモリ51と、CPU(Central Processing Unit)52と、LAN(Local Area Network)インタフェース53と、HDD(Hard Disk Drive)54とを有する。また、コンピュータ50は、スーパーIO(Input Output)55と、DVI(Digital Visual Interface)56と、ODD(Optical Disk Drive)57とを有する。
【0066】
メインメモリ51は、プログラムやプログラムの実行途中結果などを記憶するメモリである。図2に示した現在情報記憶部23及び過去情報記憶部24は、メインメモリ51上の領域である。CPU52は、メインメモリ51からプログラムを読み出して実行する中央処理装置である。CPU52は、メモリコントローラを有するチップセットを含む。
【0067】
LANインタフェース53は、コンピュータ50をLAN経由で他のコンピュータに接続するためのインタフェースである。HDD54は、プログラムやデータを格納するディスク装置である。図2に示したデータ記憶部10は、HDD54により実現される。スーパーIO55は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。DVI56は、液晶表示装置を接続するインタフェースであり、ODD57は、DVDの読み書きを行う装置である。
【0068】
LANインタフェース53は、PCIエクスプレス(PCIe)によりCPU52に接続され、HDD54及びODD57は、SATA(Serial Advanced Technology Attachment)によりCPU52に接続される。スーパーIO55は、LPC(Low Pin Count)によりCPU52に接続される。
【0069】
そして、コンピュータ50において実行されるストレージ制御プログラムは、DVDに記憶され、ODD57によってDVDから読み出されてコンピュータ50にインストールされる。あるいは、ストレージ制御プログラムは、LANインタフェース53を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ50にインストールされる。そして、インストールされたストレージ制御プログラムは、HDD54に記憶され、メインメモリ51に読み出されてCPU52によって実行される。
【0070】
また、実施例では、top−k重複除去の場合について説明したが、本発明はこれに限定されるものではなく、全データについて重複除去を行う場合にも同様に適用することができる。
【符号の説明】
【0071】
1 情報処理システム
2 ストレージ装置
3 クライアント
10 データ記憶部
20 ストレージ制御部
21 書込部
22 世代交代部
23 現在情報記憶部
24 過去情報記憶部
25 GC部
25a 現時点情報生成部
25b 特定部
31,31a,31b top−kカウンタ
31c ハッシュ値領域
32,32a,32b,32c,32d ブルームフィルタ
33 過去領域
34 一時領域
41 ポインタ領域
42 通常データ領域
43 重複データ領域
50 コンピュータ
51 メインメモリ
52 CPU
53 LANインタフェース
54 HDD
55 スーパーIO
56 DVI
57 ODD
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10