JP6724534B2 - 情報処理装置、重複除去プログラム、及び重複除去方法 - Google Patents

情報処理装置、重複除去プログラム、及び重複除去方法 Download PDF

Info

Publication number
JP6724534B2
JP6724534B2 JP2016094025A JP2016094025A JP6724534B2 JP 6724534 B2 JP6724534 B2 JP 6724534B2 JP 2016094025 A JP2016094025 A JP 2016094025A JP 2016094025 A JP2016094025 A JP 2016094025A JP 6724534 B2 JP6724534 B2 JP 6724534B2
Authority
JP
Japan
Prior art keywords
data block
address
storage area
predetermined address
index value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016094025A
Other languages
English (en)
Other versions
JP2017204037A (ja
Inventor
達夫 熊野
達夫 熊野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016094025A priority Critical patent/JP6724534B2/ja
Priority to US15/489,264 priority patent/US10282126B2/en
Publication of JP2017204037A publication Critical patent/JP2017204037A/ja
Application granted granted Critical
Publication of JP6724534B2 publication Critical patent/JP6724534B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、情報処理装置、重複除去プログラム、及び重複除去方法に関する。
近年、処理対象データの増加に伴い、当該処理対象データやそのバックアップデータを保存するストレージに要するコストも増加している。このとき、ストレージに保存されるデータには、同一のデータブロックが何度も繰り返し含まれる場合がある。
そこで、重複除去技術によってストレージに同一のデータブロックが保存されるのを抑止し、ストレージに要するコストを抑えることが提案されている。
上述した重複除去技術では、データブロックをストレージに書き込む際、例えばハッシュ値を用いて書込み対象のデータブロックと同一のデータブロックがストレージに存在するか否かが検出される。同一のデータブロックが存在しない場合、当該書込み対象のデータブロックはストレージに書き込まれる。これに対し、同一のデータブロックが存在する場合、当該書込み対象のデータブロックをストレージに書き込まないようにして、同一のデータブロックの重複が除去される。
一方、一般に、データブロック等の情報は、生成されてから一定時間が経過すると、その参照頻度が低下する傾向にある。このような傾向のもと、近年、ビッグデータの活用機会の増加等に伴い、高性能なストレージにデータが参照されることなく長期保存されて滞留するケースが多発し、ストレージの性能低下を招いている。
そこで、性能の異なる複数の記憶デバイスを含む階層化ストレージを用いる階層化技術によって、ストレージの性能を改善することが提案されている。性能の異なる複数の記憶デバイスとしては、例えば、SCM(Storage Class Memory),SSD(Solid State Drive),HDD(Hard Disk Drive)が用いられる。
上述した階層化技術では、ストレージへのデータアクセスがアドレス(即ち当該アドレスに保存されるデータブロック)毎に監視され、アドレスに対するアクセス頻度が検出される。そして、検出されたアクセス頻度と予め設定したポリシとに応じて、各種記憶デバイス間でデータブロックの再配置が行なわれる。例えば、アクセス頻度の高いデータブロックは処理速度の速い記憶デバイスに配置され、アクセス頻度の低いデータブロックは処理速度の遅い安価な記憶デバイスに配置される。
特開2014−41452号公報 特開2009−205201号公報 特開2009−129076号公報
ところで、ストレージに対し上述した重複除去技術と階層化技術との両方を適用する場合、例えば、重複除去技術を適用した後に階層化技術が適用される。
このとき、特定のアドレスにおけるデータブロックが何度も書き換えられる場合、各データブロック自体の出現頻度(アクセス頻度)は低いため、階層化技術によって、各データブロックは処理速度の遅い記憶デバイス上に配置される。また、本来であれば実際の記憶デバイス上においてもデータブロックが上書きされて書き換えられるべきところが、各データブロックの内容が異なるため、重複除去技術によって、各データブロックに新たなアドレスが割り当てられ各データブロックが書き込まれる。このため、ストレージにおける記憶領域が無駄に使用されてしまい、ガベージコレクションの処理量が増加してストレージの性能が低下する。
なお、ガベージコレクションは、例えば、上述のごとく新たなアドレスに無駄に書き込まれた各データブロックを、不要なデータブロックとして破棄することで、当該不要なデータブロックを格納していた領域を解放する機能である。
一つの側面では、本件明細書に開示の発明は、ストレージを効率よく利用しながら重複除去を実現することを目的とする。
本件の情報処理装置は、重複除去部、算出部、制御部、及び第1記憶領域を有する。前記重複除去部は、ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なう。前記算出部は、前記所定アドレスへの書込み回数に相当する指標値を算出する。前記制御部は、前記算出部によって算出される前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定る。前記第1記憶領域は、前記所定アドレスを含む複数のアドレスについて前記算出部によって算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する。前記制御部は、前記データブロックを前記所定アドレスに書き込む際に前記第1記憶領域を参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留させる。前記算出部は、時間の経過とともに前記複数の指標値相互間の差が相対的に小さくなるように、前記第1記憶領域に記憶される前記複数の指標値を更新する。
また、本件の情報処理装置は、上述と同様の重複除去部、算出部、制御部、及び第1記憶領域のほかに、第2記憶領域および第3記憶領域を有する。前記第2記憶領域は、前記複数のアドレスと各アドレスに書き込まれる各データブロックから得られるハッシュ値とを対応付けて記憶する。前記第3記憶領域は、前記ハッシュ値と前記ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付けて記憶する。ここで、前記重複除去部は、前記第2記憶領域および前記第3記憶領域を用いて前記重複除去処理を実行する。前記制御部は、前記データブロックを前記所定アドレスに書き込む際に前記第1記憶領域を参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留させ、前記指標値が前記複数の指標値の中で上位に属する場合、前記ストレージから割り当てられた新たなアドレスに前記データブロックを書き込むとともに、前記第2記憶領域において、前記所定アドレスに対応付けられたハッシュ値を、前記新たなアドレスに書き換え、前記所定アドレスに対して書き込まれるデータブロックを、前記新たなアドレスに上書きすることで、前記データブロックについて前記重複除去処理を保留させる。
ストレージを効率よく利用しながら重複除去を実現することができる。
関連技術によって重複除去処理後に階層化処理を行なう場合の処理を説明する図である。 関連技術によって階層化処理後に重複除去処理を行なう場合の処理を説明する図である。 図2に示す処理を説明すべく同じアドレスにデータブロックを連続的に書き込む例を示す図である。 図2に示す処理を説明すべく高速デバイスに配置されるデータブロックの例を示す図である。 図2に示す処理を説明すべく同じデータブロックが複数のアドレスに書き込まれた例を示す図である。 図2に示す処理を説明すべく同じデータブロックが複数のアドレスに書き込まれていて各アドレスのアクセス回数が少ない例を示す図である。 図2に示す処理を説明すべく図6に示す例に対してデバイスの割当てを行なった例を示す図である。 図2に示す処理を説明すべく高速デバイスにおけるデータブロック配置例とアクセス回数との関係を示す図である。 図2に示す処理を説明すべく低速デバイスにおけるデータブロック配置例とアクセス回数との関係を示す図である。 本実施形態のストレージシステムのハードウエア構成例及び機能構成例を示すブロック図である。 本実施形態におけるアドレスと書込み回数指標値との対応関係の一例を示す図である。 本実施形態におけるアドレスと書込み回数指標値との対応関係の他例を示す図である。 関連技術の重複除去エンジンにおける書込み動作の流れを説明するフローチャートである。 関連技術における読出し動作の流れを説明するフローチャートである。 本実施形態の重複除去エンジンにおける書込み動作の流れを説明するフローチャートである。 本実施形態における読出し動作の流れを説明するフローチャートである。 本実施形態における書込み回数指標値の一例についての更新動作の流れを説明するフローチャートである。 本実施形態における書込み回数指標値の他例についての更新動作の流れを説明するフローチャートである。 関連技術の重複除去エンジンにおけるアドレスとハッシュ値との対応関係の一例を示す図である。 関連技術の重複除去エンジンにおけるハッシュ値と重複除去用アドレスとの対応関係の一例を示す図である。 関連技術における重複除去用アドレスとデータブロックとの対応関係の一例を示す図である。 関連技術の階層化ストレージにおけるデータ構造の一例を示す図である。 本実施形態の重複除去エンジンにおけるアドレスとハッシュ値または階層化ストレージのアドレスとの対応関係の一例を示す図である。 本実施形態におけるアドレスと書込み回数指標値との対応関係の一例を示す図である。 本実施形態の階層化ストレージが重複除去エンジンに見せるアドレスとデータブロックとの対応関係の一例を示す図である。 本実施形態の階層化ストレージにおけるデータ構造の一例を示す図である。
以下に、図面を参照し、本願の開示する情報処理装置、重複除去プログラム、及び重複除去方法の実施形態について、詳細に説明する。ただし、以下に示す実施形態は、あくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能を含むことができる。そして、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
〔1〕関連技術
図1は、関連技術によって重複除去処理後に階層化処理を行なう場合の処理を説明する図である。図1の(A)に示すように、ここでは、ホストからの書込み要求に応じて重複除去エンジンが重複除去処理を行なった後、階層化ストレージによって階層化処理が行なわれる場合の処理について説明する。なお、階層化ストレージにおいては、例えば、性能の異なる記憶デバイスとしてSSD及びHDDの二種類が備えられ、階層化エンジンが階層化処理を行なう。
ホストには、ホストから見えるアドレス空間として、例えば図1の(B)に示すような表形式のデータ構造T1が提供される。データ構造T1は、ホストから指定される各アドレスと、当該アドレスに書き込まれるデータブロックから得られるハッシュ値とを対応付ける。以下では、各アドレスをLBA(Logical Block Address)という場合がある。また、ハッシュ値を算出するアルゴリズムとしては、MD(Message-Digest)5や、SHA(Secure Hash Algorithm)−1や、SHA−256などが挙げられる。
図1の(B)では、ホストが、アドレス0,1,7,8に内容aのデータブロックを書き込み、アドレス3に内容bのデータブロックを書き込み、アドレス4,9に内容cのデータブロックを書き込んだ状態が示されている。以下、内容a,b,c,…のデータブロックをそれぞれデータブロックa,b,c,…と表記する。また、データブロックa,b,c,…から得られるハッシュ値を、それぞれハッシュ値A,B,C,…と表記する。
重複除去エンジンのメモリには、例えば、図1の(C)に示すような表形式のデータ構造T2と、ホストに見せるアドレスと、当該データ構造T2のインデックスとが記憶される。データ構造T2は、ハッシュ値と当該ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付ける。重複除去用アドレスは、階層化ストレージのアドレス、即ち階層化ストレージが重複除去エンジンに見せるアドレスである。図1の(C)に示すデータ構造T2では、ハッシュ値A,B,Cがそれぞれ階層化ストレージのLBA0,1,2に対応付けられる。つまり、図1の(D)に示すように、階層化ストレージのLBA0,1,2には、それぞれデータブロックa,b,cが対応付けられる。
一方、階層化ストレージのメモリには、例えば、図1の(E)に示すような表形式のデータ構造T4が記憶される。データ構造T4は、階層化ストレージのLBA毎に、アクセス回数(アクセス頻度)と、当該LBAに対応するデータブロックを実際に配置する記憶デバイスを特定する情報とを対応付ける。図1の(E)において、記憶デバイスを特定する情報には、例えば、デバイス種別(HDDかSSDか)と、当該種別のデバイス上のアドレス(LBA)とが含まれる。
そして、図1の(F)には、図1の(E)に示すデータ構造T4に従って実際のデバイス(HDD,SSD)上に書き込まれるデータブロックの内容(アドレス空間)が示されている。階層化ストレージにおいて、LBA0に対するアクセス回数は20回でありアクセス頻度が高いと判断され、LBA0に対応するデータブロックaは、処理速度の速いSSD上のLBA0に配置される。また、階層化ストレージにおいて、LBA1,2に対するアクセス回数はそれぞれ5回,2回でありアクセス頻度が低いと判断され、LBA1,2に対応するデータブロックb,cは、それぞれ、処理速度の遅い安価なHDD上のLBA0,1に配置される。
このように重複除去処理後に階層化処理を行なう場合、上述のごとく、特定のアドレスにおけるデータブロックが何度も書き換えられると、各データブロックに対するアクセス頻度は低いため、階層化処理によって、各データブロックはHDD上に配置される。また、本来であれば実際の記憶デバイス上においてもデータブロックが上書きされて書き換えられるべきところが、各データブロックの内容が異なるため、重複除去処理によって、各データブロックに新たなアドレスが割り当てられ各データブロックが書き込まれる。このため、ストレージにおける記憶領域が無駄に使用され、ガベージコレクションの処理量が増加してストレージの性能が低下する。
これに対処すべく、例えば図1の(G)に示すようにデータ構造T2においてハッシュ値毎に被参照数を管理し、被参照数が0になった実データブロックを上書きすることで、記憶領域が無駄に使用されるのを抑止することが可能である。しかし、ハッシュ値毎に被参照数を記憶することで、使用するメモリ量が多くなってしまうという課題がある。
ついで、図2〜図9を参照しながら、関連技術によって階層化処理後に重複除去処理を行なう場合の処理について説明する。ここで、図2は、関連技術によって階層化処理後に重複除去処理を行なう場合の処理を説明する図である。
図2の(A)に示すように、ここでは、ホストからの書込み要求に応じて階層化エンジンが階層化処理を行なった後、重複除去ストレージ(SSD)または重複除去ストレージ(HDD)によって重複除去処理が行なわれる場合の処理について説明する。なお、各重複除去ストレージにおいては、例えば、性能の異なる記憶デバイスとしてSSDまたはHDDが備えられ、重複除去エンジンが重複除去処理を行なう。
ホストには、ホストから見えるアドレス空間として、例えば図2の(B)に示すような表形式のデータ構造T1が提供される。データ構造T1は、ホストから指定される各アドレスと、当該アドレスに書き込まれるデータブロックから得られるハッシュ値とを対応付ける。
図2の(B)では、時刻t=t0,t1,t2(t0<t1<t2)でのデータブロックの書込み状態が示される。つまり、時刻t=t0では、ホストが、アドレス0,1,7,8にデータブロックaを書き込み、アドレス3にデータブロックbを書き込み、アドレス4,9にデータブロックcを書き込んだ状態が示されている。そして、ホストが、時刻t=t1にアドレス4のデータブロックをcからdに書き換えた後、時刻t=t2にアドレス4のデータブロックをdからeに書き換えた状態が示されている。
時刻t=t0〜t2においてSSDとHDDとの間のデータ移動が起こらず、時刻t=t2において、例えば、図2の(C)に示すような表形式のデータ構造T4が記憶されているものとする。このとき、各デバイス(SSD,HDD)に書き込まれるデータブロックは、図2の(D1)〜(D3)及び(E1)〜(E3)に示すようになる。
図2の(C)に示すデータ構造T4では、ホストから指定されるLBA毎に、アクセス回数と、当該LBAに対応するデータブロックを配置する記憶デバイスを特定する情報とが対応付けられている。
当該データ構造T4において、ホストから指定されるLBA1,8に対するアクセス回数は2回でありアクセス頻度が高いと判断される。これに伴って、LBA1,8に対応するデータブロックaは、図2の(D1)に示すように、時刻t=t0〜t2の間、SSD上のLBA0,2に配置される。また、ホストから指定されるLBA4に対するアクセス回数は3回でありアクセス頻度がいと判断され、LBA4に対応するデータブロックは、図2の(D1)に示すように、時刻t=t0,t1,t2にSSD上のLBA1においてc,d,eに書き換えられる。
一方、当該データ構造T4において、ホストから指定されるLBA0,3,7,9に対するアクセス回数は1回でありアクセス頻度が低いと判断される。これに伴って、LBA0,3,7,9に対応するデータブロックa,b,a,cは、図2の(E1)に示すように、時刻t=t0〜t2の間、HDD上のLBA0,1,2,3に配置される。
つまり、階層化エンジンによって、重複除去ストレージ(SSD)に対して図2の(D1)に示すような書込みが行なわれるとともに、重複除去ストレージ(HDD)に対して図2の(E1)に示すような書込みが行なわれる。
そして、重複除去ストレージ(SSD)では、重複除去エンジンによって、図2の(D1)に示す書込みに応じて、図2の(D2)に示すような表形式のデータ構造T2が作成され記憶される。図2の(D2)に示すデータ構造T2では、ハッシュ値A,C,D,Eが、それぞれ当該ハッシュ値A,C,D,Eに対応するデータブロックa,c,d,eを記憶する、SSD上のLBA0,1,2,3に対応付けられる。
同様に、重複除去ストレージ(HDD)では、重複除去エンジンによって、図2の(E1)に示す書込みに応じて、図2の(E2)に示すような表形式のデータ構造T2が作成され記憶される。図2の(E2)に示すデータ構造T2では、ハッシュ値A,B,Cが、それぞれ当該ハッシュ値A,B,Cに対応するデータブロックa,b,cを記憶する、HDD上のLBA0,1,2に対応付けられる。
図2の(D3)及び(E3)には、上述のような処理によって実際のデバイス(HDD,SSD)上に書き込まれるデータブロックの内容(アドレス空間)が示されている。つまり、SSDにおいては、時刻t=t0でデータブロックa,cがLBA0,1に書き込まれ、時刻t=t1でデータブロックdがLBA2に書き込まれ、時刻t=t2でデータブロックeがLBA3に書き込まれる。一方、HDDには、時刻t=t0〜t2の間、データブロックa,b,cがLBA0,1,2に保存される。
ここで、図2に示すごとく階層化処理後に重複除去処理を行なう場合に生じる二つの課題について、図3〜図9を参照しながら説明する。
図2に示すごとく階層化処理後に重複除去処理を行なう場合の、一つ目の課題は、ホストが同じアドレスにおけるデータブロックを何度も書き換えるときに生じる。このとき、一般的には容量の少ない高速な記憶デバイス(例えばSSD)における新たなアドレスへの書込みが多発し、記憶デバイスの容量が足りなくなって、ガベージコレクションを行なわないと新たな書込みを行なえないという課題が生じる。
例えば図3に示すように、ホストが特定のアドレス(ここではLBA0)に対しデータブロックa,b,c,d,e,fを時刻t=t0〜t5に順に書き込んだとする。このとき、アドレス0へのアクセス回数が増加するので、階層化エンジンは、アドレス0に書き込むべきデータブロックを高速デバイス(SSD)に配置するように判断する。高速デバイスでは、重複除去ストレージ(SSD)が動作するため、図4に示すように、連続的に書き込まれるデータブロックの内容が少しでも異なれば別のアドレスに書き込まれる。つまり、ホストは、同じアドレスにおけるデータブロックを書き換えているのにも関わらず、高速デバイス上では、異なる複数のアドレスが使用される(図2の(D3)参照)。
二つ目の課題は、同じデータブロックが異なる複数のアドレスから読み出されるときに生じる。このとき、実際には同じデバイスの同じアドレスから読み出されているにも関わらず、ホストに見えるアドレス毎のアクセス回数が少ないために当該データブロックが低速デバイス(HDD)に配置され続けるという課題が生じる。
ここで、例えば、図5に示すように、ホストに見えるアドレス0〜5に、それぞれデータブロックa,b,c,a,a,aの書込みが行なわれた状態で、各アドレスに対するアクセス回数(読出し回数)が図6に示す値であったとする。このとき、高速デバイスの容量によっては、図7に示すように、アドレス1,2に書き込まれるデータブロックb,cを高速デバイス(SSD)に配置し、アドレス0,3,4,5に書き込まれるデータブロックaを低速デバイス(HDD)に配置する。それぞれのデバイス上では、図2を参照しながら上述したように重複除去処理が行なわれるため、高速デバイス(SSD)では、図8に示すようなデータブロック配置となる一方、低速デバイス(HDD)では、図9に示すようなデータブロック配置となる。結果的には、図8及び図9に示すように、アクセス回数の最も多いデータブロックaが低速デバイス(HDD)に配置される。
〔2〕本実施形態の概要
本実施形態では、重複除去処理後に階層化処理を行なう場合を対象として改良を行なって、先に重複除去処理を行なう場合に生じる課題を解消することで、ストレージを効率よく利用しながら重複除去が実現される。
上述したように、全てのハッシュ値について被参照数を記憶することは、メモリを大量に使用するため、好ましくない。これに対し、直近の一定期間内にホストから受けた書込みアクセスについてのみアドレス毎の書込み回数(書込み回数に相当する指標値)を記憶することは、全てのハッシュ値について被参照数を記憶する場合に比べ、メモリ使用量が少なくて済む。なお、書込み回数に相当する指標値は、書込み回数指標値、もしくは、指標値という場合がある。
そこで、本実施形態では、全てのデータブロックに対し重複除去処理を行なわず、データブロックを何度も書き換えられるアドレスについて、実デバイス上の領域が新たに確保され、当該領域に当該データブロックが上書き保存される。これにより、同一アドレスに連続的(頻繁)に書き込まれるデータブロックに対しては、重複除去処理が行なわれないようにする。したがって、同一アドレスにおけるデータブロックが何度も書き換えられる際に、ストレージ上での記憶領域の使用量が増大するのを抑止しながら、重複除去処理を実現することができる。
つまり、本実施形態で開示される情報処理装置は、重複除去エンジンを含むコンピュータであり、重複除去エンジンによって、ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なう。このとき、重複除去エンジンは、前記所定アドレスへの書込み回数に相当する指標値を算出し、算出した指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定して切り換える。
また、前記情報処理装置の第1記憶領域には固定サイズのデータ構造T3またはT3′(図10〜図12参照)が新たに用意される。重複除去エンジンは、前記データブロックを前記所定アドレスに書き込む際に、第1記憶領域のデータ構造T3またはT3′を参照する。第1記憶領域のデータ構造T3またはT3′は、前記所定アドレスを含む複数のアドレスについて算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する。
そして、重複除去エンジンは、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留する。一方、重複除去エンジンは、前記指標値が前記複数の指標値の中で上位に属していない場合、前記データブロックについて前記重複除去処理を実行する。
〔3〕本実施形態のストレージシステムのハードウエア構成及び機能構成
まず、図10を参照しながら、本実施形態のストレージシステム1の構成及び機能構成について説明する。図10は、本実施形態のストレージシステム1のハードウエア構成例及び機能構成例を示すブロック図であり、図10に示すように、本実施形態のストレージシステム1は、ホスト10、情報処理装置20及び階層化ストレージ2を含む。また、階層化ストレージ2は、情報処理装置30及びストレージ40,50を含む。
ホスト(ホスト装置)10は、本実施形態の階層化ストレージ2を利用する、PC(Personal Computer),サーバ等の情報処理装置(コンピュータ)である。ホスト10は、情報処理装置20を介して、階層化ストレージ2におけるデータブロックに対する書込みアクセス/読出しアクセスを行なう。なお、データブロックは、例えば、ストレージ技術における「チャンク(Chunk)」(ビット列)である。
情報処理装置20は、重複除去エンジンとしての機能を含むPC,サーバ等のコンピュータである。情報処理装置20は、階層化ストレージ2におけるストレージ40,50の所定アドレスにデータブロックを書き込む際に、当該データブロックについての重複除去処理を行なう。所定アドレスは、ホスト10によって指定される、ホスト10から見える階層ストレージ2におけるアドレスである。情報処理装置20は、少なくとも処理部21及び記憶部22を含む。なお、情報処理装置20は、重複除去エンジン20と称されてもよい。
情報処理装置30は、階層化処理エンジンとしての機能を含むPC,サーバ等のコンピュータである。情報処理装置30は、情報処理装置20による重複除去処理後のデータブロックについて階層化処理を行なう。情報処理装置30は、少なくとも処理部31及び記憶部32を含む。なお、情報処理装置30は、階層化エンジン30と称されもよい。
なお、処理部21,31は、それぞれ情報処理装置20,30全体を制御する。処理部21,31は、単一のプロセッサであってもよいし、マルチプロセッサであってもよい。処理部21,31は、例えば、CPU(Central Processing Unit),MPU(Micro Processing Unit),DSP(Digital Signal Processor),ASIC(Application Specific Integrated Circuit),PLD(Programmable Logic Device),FPGA(Field Programmable Gate Array)のいずれか一つであってもよい。また、処理部21,31は、CPU,MPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
記憶部22は、処理部21による重複除去処理に必要な各種データを格納する。当該各種データとしては、例えば、表形式のデータ構造T1,T2,T3(またはT3′)が含まれるほか、プログラムなどが含まれる。データ構造T1,T2,T3(またはT3′)は、それぞれ記憶部22の第1〜第3記憶領域221,222,223に記憶される。プログラムとしては、処理部21に実行させるOS(Operating System)プログラムやアプリケーションプログラムが含まれてもよい。アプリケーションプログラムには、重複除去プログラム220が含まれてもよい。記憶部22としては、RAM(Random Access Memory)やHDDが用いられてもよいし、フラッシュメモリ等の半導体記憶装置(SSD)が用いられてもよい。
同様に、記憶部32は、処理部31による階層化処理に必要な各種データを格納する。当該各種データとしては、例えば、表形式のデータ構造T4が含まれるほか、プログラムなどが含まれる。データ構造T4は、記憶部32の第4記憶領域321に記憶される。プログラムとしては、処理部31に実行させるOSプログラムやアプリケーションプログラムが含まれてもよい。アプリケーションプログラムには、階層化プログラム320が含まれてもよい。記憶部32としては、RAMやHDDが用いられてもよいし、フラッシュメモリ等の半導体記憶装置(SSD)が用いられてもよい。
処理部21,31に実行させるプログラムは、光ディスク,メモリ装置,メモリカード等の非一時的な可搬型記録媒体に記録されてもよい。可搬型記録媒体に格納されたプログラムは、例えば処理部21,31からの制御により、記憶部22,32にインストールされた後、実行可能になる。また、処理部21,31が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
なお、光ディスクは、光の反射によって読み取り可能にデータを記録された可搬型の非一時的な記録媒体である。光ディスクとしては、Blu−ray,DVD(Digital Versatile Disc),DVD−RAM,CD−ROM(Compact Disc Read Only Memory),CD−R(Recordable)/RW(ReWritable)等が挙げられる。メモリ装置は、機器接続インタフェース(図示略)との通信機能を搭載した非一時的な記録媒体、例えばUSB(Universal Serial Bus)メモリである。メモリカードは、メモリリーダライタ(図示略)を介し処理部10に接続されてデータの書込/読出対象になる、カード型の非一時的な記録媒体である。
情報処理装置20の処理部21は、重複除去プログラム220を実行することにより、以下に説明する、重複除去部211、算出部212、及び制御部213としての機能を果たす。
重複除去部211は、ストレージ40,50の所定アドレス(ホスト10から見えるアドレス)にデータブロックを書き込む際に前記データブロックについての重複除去処理を行なう。
算出部212は、所定アドレスへの書込み回数に相当する指標値を算出する。所定アドレスへの書込み回数に相当する指標値としては、所定アドレスへの書込み回数そのものが用いられてもよいが、本実施形態では、図11または図12を参照しながら後述するような値が用いられる。
算出部212によってアドレス毎に算出される指標値は、情報処理装置20の記憶部22における第1記憶領域221に記憶されるデータ構造T3またはT3′において、例えば図11や図12に示すように、各アドレスに対応付けられて記憶される。つまり、本実施形態の重複除去エンジン20では、図1の(G)に示すごとき被参照数を用いる代わりに、固定サイズのデータ構造T3またはT3′が新たに用意される。
ここで、算出部212は、データブロックの書込みが行なわれる都度、時間の経過とともにデータ構造T3またはT3′における複数の指標値相互間の差が相対的に小さくなるように、データ構造T3またはT3′に記憶される複数の指標値を更新する。
このとき、算出部212による指標値の算出・更新手法としては、例えば、以下のような二つの手法が考えられる。
まず、一つ目の手法について、図11を参照しながら説明する。図11は、本実施形態におけるアドレス(ホスト10に見せるアドレス)と書込み回数指標値との対応関係(データ構造T3)の一例を示す図である。なお、一つ目の手法による更新処理手順については、図17を参照しながら後述する。
一つ目の手法において、算出部212は、データ構造T3に記憶される複数の指標値のそれぞれに0よりも大きく且つ1未満の定数xを乗算する。つまり、データ構造T3における全ての指標値が定数倍される。図11に示す例では、定数xとして0.99が用いられている。
算出部212は、ホスト10によって指定される書込みアドレス(所定アドレス)がデータ構造T3に記憶されているか否かを判定する。
書込みアドレスがデータ構造T3に記憶されている場合、算出部212は、当該書込みアドレスに対応する指標値に“1”を加算する。
一方、書込みアドレスがデータ構造T3に記憶されていない場合、算出部212は、データ構造T3における複数の指標値のうちの最小の指標値と当該最小の指標値に対応付けられたアドレスとをデータ構造T3から削除する。そして、算出部212は、値“1”を、指標値として、当該書込みアドレスに対応付けてデータ構造T3に追加する。
例えば、図11の左側に示すデータ構造T3のごとく、アドレス4の指標値が10.7であり、アドレス2の指標値が2.2であり、アドレス9の指標値が1.4である時に、ホスト10からアドレス10を指定する書込みアクセスが行なわれたとする。この場合、全ての指標値に0.99が乗算された後、最小の指標値1.4×0.99=1.386と当該最小の指標値に対応付けられたアドレス9とが削除され、新たな指標値“1”が新たな指定アドレス10に対応付けられてデータ構造T3に追加される。このようにデータ構造T3における指標値は、0以上の小数を含む値になる。
上述した一つ目の手法によれば、ホスト10からのアクセスの傾向が変わったときに過去の情報に引きずられることなく、直近の傾向を反映したデータ配置が可能になる。
ついで、二つ目の手法について、図12を参照しながら説明する。図12は、本実施形態におけるアドレス(ホスト10に見せるアドレス)と書込み回数指標値との対応関係(データ構造T3′)の他例を示す図である。なお、二つ目の手法による更新処理手順については、図18を参照しながら後述する。
二つ目の手法において、算出部212は、ホスト10によって指定される書込みアドレス(所定アドレス)がデータ構造T3′に記憶されているか否かを判定する。
書込みアドレスがデータ構造T3′に記憶されている場合、算出部212は、当該書込みアドレスに対応する指標値に“1”を加算する。
一方、書込みアドレスがデータ構造T3′に記憶されていない場合、算出部212は、データ構造T3′における複数の指標値のうちの最小の指標値と当該最小の指標値に対応付けられたアドレスとをデータ構造T3′から削除する。そして、算出部212は、当該最小の指標値に“1”を加算した値を、指標値として、当該書込みアドレスに対応付けてデータ構造T3′に追加する。
例えば、図12の左側に示すデータ構造T3のごとく、アドレス4の指標値が14であり、アドレス2の指標値が4であり、アドレス9の指標値が2である時に、ホスト10からアドレス10を指定する書込みアクセスが行なわれたとする。この場合、最小の指標値2と当該最小の指標値に対応付けられたアドレス9とが削除され、最小の指標値2に“1”を加算した値“3”が、新たな指定アドレス10に対応付けられてデータ構造T3′に追加される。このようにデータ構造T3′における指標値は、1以上の整数値になる。
制御部213は、算出部212によって上述のごとく算出される指標値に応じ、データブロックについて重複除去処理を実行するか保留するかを決定して切り換える。
特に、制御部213は、ホスト10からの書込みアクセスに応じてデータブロックを所定アドレス(指定された書込みアドレス)に書き込む際に第1記憶領域221のデータ構造T3またはT3′を参照する。そして、制御部213は、所定アドレスについて算出された指標値が、データ構造T3またはT3′における複数の指標値の中で上位に属する場合、当該データブロックについて重複除去部211による重複除去処理を保留させる。
一方、制御部213は、所定アドレスについて算出された指標値が、データ構造T3またはT3′における複数の指標値の中で上位に属していない場合、当該データブロックについて重複除去部211による重複除去処理を実行させる。
なお、「指標値が複数の指標値の中で上位に属する」か否かを判断する基準は、例えばユーザが上位を規定する割合を指定することで設定される。例えば、ユーザが上位を規定する割合として20%を指定した場合、データ構造T3またはT3′における指標値の数が100であれば、指標値が1〜20位の範囲内であれば「上位に属する」と判断される一方、指標値が21位以下であれば「上位に属していない」と判断される。
また、本実施形態において、記憶部22の第2記憶領域222及び第3記憶領域223には、それぞれ、データ構造T1(図19,図23参照)及びデータ構造T2(図20参照)が保存される。
データ構造T1は、ホスト10から指定される各アドレスと、当該アドレスに書き込まれるデータブロックから得られるハッシュ値とを対応付ける。図19,図23に示すデータ構造T1では、各アドレスとハッシュ値とが対応づけられている。
データ構造T2は、各データブロックから得られるハッシュ値と当該ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付ける。重複除去用アドレスは、階層化ストレージ2のアドレス、即ち階層化ストレージ2が重複除去エンジン20に見せるアドレスである。
本実施形態の重複除去部211は、上述したデータ構造T1,T2を用いて重複除去処理を実行する。
そして、制御部213は、所定アドレスについて算出された指標値が、データ構造T3またはT3′における複数の指標値の中で上位に属する場合、階層化ストレージ2から割り当てられた新たなアドレスに、書込み対象のデータブロックを書き込む。さらに、制御部213は、データ構造T1において、所定アドレスに対応付けられたハッシュ値を、階層化ストレージ2から割り当てられた新たなアドレスに書き換える(図23参照)。これにより、所定アドレスに対して連続的(頻繁)に書き込まれるデータブロックを、前記新たなアドレスに上書きすることで、当該書込み対象のデータブロックについて重複除去処理が保留される。
このように、重複除去エンジン20は、書込みアドレスに対応する指標値がデータ構造T3またはT3′における書込み回数指標値の上位に属する場合、重複除去処理を行なわず、ホスト10に見せるアドレスに対応する領域を階層化ストレージ2から確保し、当該領域にデータブロックを上書き保存する。
ところで、情報処理装置30の処理部31は、階層化プログラム320を実行することにより、以下に説明する、階層化部311としての機能を果たす。
本実施形態のストレージシステム1には、階層化ストレージ2が含まれている。本実施形態の階層化ストレージ2は、性能の異なる複数の記憶デバイス(記憶部)として、SSD40及びHDD50を含む。なお、記憶デバイスは、SSD,HDDに限定されるものでなく、性能の異なる他の記憶デバイス、例えばSCMなどが含まれていてもよい。
階層化部311は、重複除去用アドレス、または階層化ストレージ2から割当てられた新たなアドレスに対するアクセス頻度(アクセス回数)に応じた性能の記憶デバイスに、重複除去用アドレスまたは新たなアドレスに対応するデータブロックを配置する階層化処理を行なう。
このとき、階層化部311は、記憶部32の第4記憶領域321におけるデータ構造T4(図26参照)を用いて階層化処理を行なう。データ構造T4は、重複除去用アドレスまたは新たなアドレスと、当該アドレスに対するアクセス回数と、当該アドレスに対応するデータブロックを配置する記憶デバイスを特定する情報とを対応付ける。記憶デバイスを特定する情報には、例えば、デバイス種別(HDDかSSDか)と、当該種別のデバイス上のアドレス(LBA)とが含まれる。
階層化部311による階層化処理では、データ構造T4を用いて、階層化ストレージ2のアドレス(階層化ストレージ2が重複除去エンジン20に見せるアドレス)毎に、各アドレスにおけるデータブロックへのデータアクセスが監視される。そして、階層化部311は、アドレスに対するアクセス回数を検出し、検出したアクセス頻度と予め設定したポリシとに応じて、各種記憶デバイス間でデータブロックの再配置を行なう。例えば、アクセス頻度の高いデータブロックは処理速度の速い記憶デバイス、つまりSSD40に配置され、アクセス頻度の低いデータブロックは処理速度の遅い安価な記憶デバイス、つまりHDD50に配置される。
〔4〕本実施形態のストレージシステムの動作
次に、図13及び図14を参照しながら関連技術の重複除去エンジンによる動作の流れについて概略的に説明するとともに、関連技術の重複除去エンジンによる動作の流れに対比させ、図15〜図18を参照しながら本実施形態の重複除去エンジンによる動作の流れについて概略的に説明する。
〔4−1〕関連技術における書込み動作の流れ
図13に示すフローチャート(ステップS11〜S14)に従って、関連技術の重複除去エンジンにおける書込み動作の流れを説明する。
図13及び図14では、図1の(B)に示すごとく、ホストから指定される各アドレスと、当該アドレスに書き込まれるデータブロックから得られるハッシュ値とを対応付けるデータ構造を、データ構造T1とする。また、図1の(C)に示すごとく、ハッシュ値と当該ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付けるデータ構造を、データ構造T2とする。なお、重複除去用アドレスは、階層化ストレージのアドレス、即ち階層化ストレージが重複除去エンジンに見せるアドレスである。
重複除去エンジンは、ホストからデータブロックの書込み要求を受けると、書込み対象のデータブロックのハッシュ値を算出して取得する(ステップS11)。そして、重複除去エンジンは、データ構造T2に、取得したハッシュ値が存在するか否かを判定する(ステップS12)。
取得したハッシュ値がデータ構造T2に存在しない場合(ステップS12のNOルート)、階層化ストレージから新たなアドレス(LBA;重複除去用アドレス)が割り当てられる。そして、重複除去エンジンは、データ構造T2に、取得したハッシュ値と割り当てられた新たなアドレスとを対応付けて保存し、書込み対象のデータブロックを、階層化ストレージから割り当てられた新たなアドレスに書き込む(ステップS13)。
ステップS13の処理後、もしくは、取得したハッシュ値がデータ構造T2に存在する場合(ステップS12のYESルート)、重複除去エンジンは、データ構造T1において、ホストから指定されたアドレス(ホストに見せるアドレス)と、取得したハッシュ値とを対応付けて保存し(ステップS14)、処理を終了する。
〔4−2〕関連技術における読出し動作の流れ
図14に示すフローチャート(ステップS21〜S23)に従って、関連技術における読出し動作の流れを説明する。
関連技術において、ホストからデータブロックの読出し要求を受けると、ホストから指定された、読出し対象のデータブロックのアドレスに対応するハッシュ値が、データ構造T1から検索される(ステップS21)。この後、検索されたハッシュ値に対応する階層化ストレージのアドレスが、データ構造T2から検索される(ステップS22)。そして、検索された階層化ストレージのアドレスから、読出し対象のデータブロックが読み出され(ステップS23)、処理を終了する。
〔4−3〕本実施形態の重複除去エンジンにおける書込み動作の流れ
図15に示すフローチャート(ステップS31〜S35)に従って、本実施形態の重複除去エンジンにおける書込み動作の流れを説明する。
図15及び図16では、図13及び図14と同様のデータ構造T1,T2が備えられる。また、図15及び図16では、図11または図12を参照しながら上述したデータ構造を、データ構造T3またはT3′とする。
本実施形態の重複除去エンジン20は、ホスト10からデータブロックの書込み要求を受けると、まず、算出部212により、ホスト10から指定されたアドレスについての書込み回数指標値を算出し、データ構造T3またはT3′(各アドレスの書込み回数指標値)を更新する(ステップS31)。データ構造T3及びT3′の更新動作については、それぞれ図17及び図18を参照しながら後述する。
データ構造T3またはT3′の更新後、重複除去エンジン20の制御部213は、更新後のデータ構造T3またはT3′を参照する。そして、制御部213は、ホスト10から指定された書込みアドレスについて算出された指標値が、データ構造T3またはT3′における複数の指標値の中で上位に属するか否かを判定する(ステップS32)。
書込みアドレスについて算出された指標値が上位に属する場合(ステップS32のYESルート)、階層化ストレージ2から新たなアドレスが割り当てられる。そして、制御部213は、書込み対象のデータブロックを、階層化ストレージ2から割り当てられた新たなアドレスに書き込む(ステップS33)。
さらに、制御部213は、データ構造T1において、書込みアドレスと、階層化ストレージ2から割り当てられた新たなアドレスとを対応付けて保存し(ステップS34;図23の網掛け部分参照)、処理を終了する。これにより、書込みアドレスに対して連続的(頻繁)に書き込まれるデータブロックが、階層化ストレージ2から割り当てられた新たなアドレスに上書きされ、当該データブロックについて重複除去処理が保留される。
一方、書込みアドレスについて算出された指標値が上位に属していない場合(ステップS32のNOルート)、重複除去部211によって、関連技術と同様の処理、つまり図13に示す重複除去処理が実行され(ステップS35)、処理を終了する。
〔4−4〕本実施形態における読出し動作の流れ
図16に示すフローチャート(ステップS41〜S44)に従って、本実施形態における読出し動作の流れを説明する。
本実施形態において、ホスト10からデータブロックの読出し要求を受けると、制御部213は、データ構造T3またはT3′を参照する。そして、制御部213は、ホスト10から指定された読出しアドレスについての指標値が、データ構造T3またはT3′における複数の指標値の中で上位に属するか否かを判定する(ステップS41)。
読出しアドレスについての指標値が上位に属する場合(ステップS41のYESルート)、制御部213は、データ構造T1から、読出しアドレスに対応する階層化ストレージ2のアドレスを検索する(ステップS42;図23の網掛け部分参照)。そして、制御部213は、検索された階層化ストレージ2のアドレスから、読出し対象のデータブロックを読み出し(ステップS43)、処理を終了する。
一方、読出しアドレスについての指標値が上位に属していない場合(ステップS41のNOルート)、制御部213によって、関連技術と同様の処理、つまり図14に示す読出し処理が実行され(ステップS44)、処理を終了する。
〔4−5〕本実施形態における書込み回数指標値の一例についての更新動作の流れ
図17に示すフローチャート(ステップS51〜S54)に従って、本実施形態における書込み回数指標値の一例、つまり図11に示すデータ構造T3についての、算出部212による更新動作(図15のステップS31)の流れを説明する。
ホスト10からデータブロックの書込み要求を受けると、まず、算出部212は、データ構造T3に記憶される複数の指標値のそれぞれに定数x(0<x<1;例えば0.99)を乗算する。つまり、データ構造T3における全ての指標値が定数倍される(ステップS51)。
この後、算出部212は、ホスト10によって指定される書込みアドレスがデータ構造T3に存在するか否かを判定する(ステップS52)。
書込みアドレスがデータ構造T3に存在する場合(ステップS52のYESルート)、算出部212は、データ構造T3における当該書込みアドレスに対応する指標値に“1”を加算し(ステップS53)、処理を終了する。
一方、書込みアドレスがデータ構造T3に存在しない場合(ステップS52のNOルート)、算出部212は、最小の指標値と当該最小の指標値に対応付けられたアドレスとをデータ構造T3から削除する。そして、算出部212は、値“1”を、指標値として、当該書込みアドレスに対応付けてデータ構造T3に追加し(ステップS54)、処理を終了する。
〔4−6〕本実施形態における書込み回数指標値の他例についての更新動作の流れ
図18に示すフローチャート(ステップS61〜S63)に従って、本実施形態における書込み回数指標値の他例、つまり図12に示すデータ構造T3′についての、算出部212による更新動作(図15のステップS31)の流れを説明する。
ホスト10からデータブロックの書込み要求を受けると、まず、算出部212は、ホスト10によって指定される書込みアドレスがデータ構造T3′に存在するか否かを判定する(ステップS61)。
書込みアドレスがデータ構造T3′に存在する場合(ステップS61のYESルート)、算出部212は、データ構造T3′における当該書込みアドレスに対応する指標値に“1”を加算し(ステップS62)、処理を終了する。
一方、書込みアドレスがデータ構造T3′に存在しない場合(ステップS61のNOルート)、算出部212は、最小の指標値と当該最小の指標値に対応付けられたアドレスとをデータ構造T3′から削除する。そして、算出部212は、当該最小の指標値に“1”を加算した値を、指標値として、当該書込みアドレスに対応付けてデータ構造T3′に追加し(ステップS63)、処理を終了する。
〔5〕本実施形態のストレージシステムの具体的な動作
次に、図19〜図22を参照しながら関連技術による具体的な動作の流れについて説明するとともに、関連技術による具体的な動作の流れに対比させ、図23〜図26を参照しながら本実施形態による具体的な動作の流れについて説明する。
〔5−1〕関連技術について
図1に示す関連技術において、上述した課題が生じた場合の状況について、具体的に説明する。例えば、図1に示す関連技術において、ホストから、図3に示すような書込み要求、つまりアドレス0に対するデータブロックa〜fの書込みアクセスが連続的(頻繁)に発生したものとする。このときの、図1に示す関連技術での状況を図19〜図22に示す。
図19は、関連技術の重複除去エンジンにおけるアドレス(ホストに見せるアドレス)とハッシュ値との対応関係の一例、つまりデータ構造T1の内容を示す図である。図19では、ホストからのアドレス0に対するデータブロックa〜fの書込みアクセスの処理を完了した時点でのデータ構造T1の状態が示されている。アドレス0にはデータブロックfが最終的に書き込まれるため、図19に示すデータ構造T1では、アドレス0に対応付けられたハッシュ値は“F”になっている(網掛け部分参照)。
また、図20は、関連技術の重複除去エンジンにおけるハッシュ値と重複除去用アドレス(階層化ストレージのアドレス)との対応関係の一例、つまりデータ構造T2の内容を示す図である。図20では、ホストからのアドレス0に対するデータブロックa〜fの書込みアクセスを処理した時点でのデータ構造T2の状態が示されている。データブロックa〜cに続きデータブロックd〜fが連続的に書き込まれる。このため、図20に示すデータ構造T2では、データブロックd〜fのハッシュ値D〜Fが、それぞれ、階層化ストレージから割り当てられたアドレス(重複除去用アドレス)3〜5に対応付けられている(網掛け部分参照)。
このとき、図21に示すように、階層化ストレージのアドレス(階層化ストレージが重複除去エンジンに見せるアドレス)3〜5には、それぞれデータブロックd〜fが書き込まれている(網掛け部分参照)。なお、図21は、関連技術における重複除去用アドレス(階層化ストレージのアドレス)とデータブロックとの対応関係の一例を示す図である。
図22は、関連技術の階層化ストレージにおけるデータ構造T4の一例を示す図で、図22では、ホストからのアドレス0に対するデータブロックa〜fの書込みアクセスを処理した時点でのデータ構造T4の状態が示されている。データブロックa〜cに続きデータブロックd〜fが連続的に書き込まれる。このため、図22に示すデータ構造T4では、データ構造T4のアドレス3〜5について、それぞれ、アクセス回数1,1,3と、デバイス種別HDD,HDD,HDDと、記憶デバイス(ここではHDD)上のアドレス(LBA)2,3,4とが対応付けられている(網掛け部分参照)。
なお、図22に示すデータ構造T4では、アクセス回数が20回のアドレス0のみが処理速度の速いSSD上のアドレスに対応付けられ、データブロックaはSSD上に配置されている。また、図22に示すデータ構造T4では、アクセス回数の少ないアドレス1〜5が処理速度の遅いHDD上のアドレスに対応付けられ、データブロックb〜fはHDD上に配置されている。
図19〜図22を参照しながら上述した状況において、課題となる点は二つある。
一つ目は、図3や図19に示すようにホストに見せるアドレス0は頻繁に書き換えられているにも関わらず、データブロック毎の出現頻度が低いため、階層化処理によって各データブロックは低速なHDDに割り当てられ(図22の網掛け部分参照)、性能の低下を招いている点である。
二つ目は、ホストに見せるアドレス0には最終的にデータブロックfが保存されていればよいにも関わらず(図25参照)、各データブロックd〜fの内容が異なるため、図21に示すように、重複除去処理によって、各データブロックに新たなアドレスが割り当てられる点である。このため、階層化ストレージにおける記憶領域が無駄に使用され(図21の網掛け部分参照)、ガベージコレクションの処理量が増加して階層化ストレージの性能が低下する。
〔5−2〕本実施形態について
そこで、上述した本実施形態の技術によって、上述した関連技術における二つの課題が解消される状況について、図23〜図26を参照しながら具体的に説明する。
本実施形態においても、ホスト10から、図3に示すような書込み要求、つまりアドレス0に対するデータブロックa〜fの書込みアクセスが連続的(頻繁)に発生したものとする。このとき、本実施形態の技術を適用した場合の状況を図23〜図26に示す。そして、ここでは、図3の時刻t=t3の時点で、アドレス0についての書込み回数指標値がデータ構造T3における複数の指標値の中の上位に属するようになったとする。
このとき、時刻t=t3の時点で、制御部213は、階層化ストレージ2から割り当てられた新たなアドレス(LBA;階層化ストレージ2のアドレス)3に、書込み対象のデータブロックを書き込む。また、制御部213は、図23に示すように、データ構造T1において、アドレス0に対応付けられたハッシュ値を、階層化ストレージ2から割り当てられた新たなアドレス3に書き換える(網掛け部分参照)。なお、図23は、本実施形態の重複除去エンジン20におけるアドレス(ホスト10に見せるアドレス)とハッシュ値または階層化ストレージ2のアドレスとの対応関係の一例、つまりデータ構造T1の内容を示す図である。
これにより、アドレス0に対して連続的(頻繁)に書き込まれるデータブロックは、階層化ストレージ2の新たなアドレス3に上書きされることで、当該書込み対象のデータブロックについて重複除去処理が保留される。つまり、アドレス0の書換え回数が多いためにアドレス0への書込み対象のデータブロックについての重複除去処理は実行されない。
図24は、本実施形態におけるアドレス(ホスト10に見せるアドレス)と書込み回数指標値との対応関係の一例、つまりデータ構造T3の内容を示す図である。図24では、ホスト10からのアドレス0に対するデータブロックa〜fの書込みアクセスを処理した時点でのデータ構造T3の状態が示されており、アドレス0についての書込み回数指標値として、上位に属する、例えば6が対応付けられている(網掛け部分参照)。
このとき、関連技術では、図21に示すように、階層化ストレージのアドレス3〜5にはそれぞれデータブロックd〜fが書き込まれている。これに対し、本実施形態の技術では、重複除去を行なわないように切り換えることで、図25に示すように、階層化ストレージ2のアドレス3において、データブロックd,eが順次上書きされ、データブロックfだけが残っている。なお、図25は、本実施形態の階層化ストレージ2が重複除去エンジン20に見せるアドレスとデータブロックとの対応関係の一例を示す図である。
図26は、本実施形態の階層化ストレージ2におけるデータ構造T4の一例を示す図であり、図26では、ホスト10からのアドレス0に対するデータブロックa〜fの書込みアクセスを処理した時点でのデータ構造T4の状態が示されている。
関連技術のデータ構造T4では、図22に示すように、階層化ストレージのアドレス3,4,5の全てがHDD上に配置されている。これに対し、本実施形態の技術を適用した場合のデータ構造T4では、階層化ストレージ2のアドレス3に書込みが集中することで、図26に示すように、アドレス3に対するアクセス回数が増加し例えば“6”になる。これにより、階層化部311の階層化処理によって、アドレス3はSSD40上に移動配置される(網掛け部分参照)。
上述のごとく、本実施形態の技術によれば、ホスト10から、所定アドレスに対するデータブロックの書込みアクセスが連続的(頻繁)に発生した場合、当該データブロックについて重複除去処理が保留される。
このため、階層化ストレージ2における記憶領域が無駄に使用されることを抑止でき(図25の網掛け部分参照)、階層化ストレージ2を効率よく利用しながら重複除去を実現することができる。つまり、重複除去処理を先に行なってから階層化処理を行なう場合に生じる、上述した二つ目の課題を解消することができる。
また、データブロックの書込みが、階層化ストレージ2から割り当てられた階層化ストレージ2のアドレス(上述の例では3)に集中することになり、当該アドレスに対するアクセス回数が増加する。したがって、当該アドレスは高速デバイス(SSD40)に配置され(図26の網掛け部分参照)、性能低下を招くことがない。つまり、重複除去処理を先に行なってから階層化処理を行なう場合に生じる、上述した一つ目の課題を解消することができる。
このように、本実施形態によれば、全てのデータブロックに対し重複除去処理を行なわず、データブロックを何度も書き換えられるアドレスについて、実デバイス上の領域が新たに確保され、当該領域に当該データブロックが上書き保存される。これにより、同一アドレスに連続的(頻繁)に書き込まれるデータブロックに対しては、重複除去処理が行なわれないようにする。したがって、同一アドレスにおけるデータブロックが何度も書き換えられる際に、階層ストレージ2上での記憶領域の使用量が増大するのを抑止しながら、重複除去処理を実現することができる。つまり、階層化ストレージ2を効率よく利用しながら重複除去を実現することができる。
その際、直近の一定期間内にホスト10から受けた書込みアクセスについてのみアドレス毎の書込み回数指標値を記憶すること、即ちデータ構造T3またはT3′を追加することは、全てのハッシュ値について被参照数を記憶する場合に比べ、メモリ使用量が少なくて済む。つまり、本実施形態によれば、メモリ使用量を増大させることなく、階層化ストレージ2を効率よく利用しながら重複除去を実現することができる。
また、本実施形態によれば、ストレージが階層化ストレージ2である場合、書き換えられた古いデータブロックが、アクセス頻度が低いにも関わらず、高速デバイス(SSD40)に残存するのを抑止することができる。
さらに、本実施形態によれば、データブロックの書込みが行なわれる都度、時間の経過とともにデータ構造T3またはT3′における複数の指標値相互間の差が相対的に小さくなるように、データ構造T3またはT3′に記憶される複数の指標値が更新される。これにより、ホスト10からのアクセスの傾向が変わったときに過去の情報に引きずられることなく、直近の傾向を反映したデータ配置が可能になる。
〔6〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、上述した実施形態では、重複除去エンジン20を適用されるストレージが階層化ストレージ2である場合について説明したが、本発明は、これに限定されるものでなく、階層化ストレージ以外の各種ストレージにも同様に適用され、上述と同様の作用効果を得ることができる。
また、上述した実施形態では、各アドレスについての書込み回数指標値がデータ構造T3またはT3′の中の複数の指標値の上位に属するか否かを判定し、その判定結果に応じて重複除去処理の保留/実行の切換を行なっている。しかし、本発明は、これに限定されるものでなく、例えば、各アドレスについての書込み回数指標値が所定の閾値を超えたか否かを判定し、その判定結果に応じて重複除去処理の保留/実行の切換を行なってもよく、この場合も、上述した実施形態と同様の作用効果を得ることができる。
〔7〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なう重複除去部と、
前記所定アドレスへの書込み回数に相当する指標値を算出する算出部と、
前記算出部によって算出される前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定して切り換える制御部と、を有する、情報処理装置。
(付記2)
前記所定アドレスを含む複数のアドレスについて前記算出部によって算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第1記憶領域を有し、
前記制御部は、
前記データブロックを前記所定アドレスに書き込む際に前記第1記憶領域を参照し、
前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留させる、付記1に記載の情報処理装置。
(付記3)
前記制御部は、前記指標値が前記複数の指標値の中で上位に属していない場合、前記データブロックについて前記重複除去処理を実行させる、付記2に記載の情報処理装置。
(付記4)
前記算出部は、時間の経過とともに前記複数の指標値相互間の差が相対的に小さくなるように、前記第1記憶領域に記憶される前記複数の指標値を更新する、付記2または付記3に記載の情報処理装置。
(付記5)
前記算出部は、
前記第1記憶領域に記憶される前記複数の指標値のそれぞれに0よりも大きく且つ1未満の定数を乗算し、
前記所定アドレスが前記第1記憶領域に記憶されているか否かを判定し、
前記所定アドレスが前記第1記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“1”を加算する一方、
前記所定アドレスが前記第1記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第1記憶領域から削除し、値“1”を、前記指標値として、前記所定アドレスに対応付けて前記第1記憶領域に追加する、付記4に記載の情報処理装置。
(付記6)
前記算出部は、
前記所定アドレスが前記第1記憶領域に記憶されているか否かを判定し、
前記所定アドレスが前記第1記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“1”を加算する一方、
前記所定アドレスが前記第1記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第1記憶領域から削除し、前記最小の指標値に“1”を加算した値を、前記指標値として、前記所定アドレスに対応付けて前記第1記憶領域に追加する、付記4に記載の情報処理装置。
(付記7)
前記複数のアドレスと各アドレスに書き込まれる各データブロックから得られるハッシュ値とを対応付けて記憶する第2記憶領域と、
前記ハッシュ値と前記ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付けて記憶する第3記憶領域と、を有し、
前記重複除去部は、前記第2記憶領域及び前記第3記憶領域を用いて前記重複除去処理を実行し、
前記制御部は、前記指標値が前記複数の指標値の中で上位に属する場合、前記ストレージから割り当てられた新たなアドレスに前記データブロックを書き込むとともに、前記第2記憶領域において、前記所定アドレスに対応付けられたハッシュ値を、前記新たなアドレスに書き換え、前記所定アドレスに対して連続的に書き込まれるデータブロックを、前記新たなアドレスに上書きすることで、前記データブロックについて前記重複除去処理を保留させる、付記2〜付記6のいずれか一項に記載の情報処理装置。
(付記8)
前記ストレージは、性能の異なる複数の記憶部を含む階層化ストレージであり、
前記複数の記憶部のうち、前記重複除去用アドレスまたは前記新たなアドレスに対するアクセス頻度に応じた性能の記憶部に、前記重複除去用アドレスまたは前記新たなアドレスに対応するデータブロックを配置する階層化処理を行なう階層化部を有する、付記7に記載の情報処理装置。
(付記9)
前記重複除去用アドレスまたは前記新たなアドレスと、前記アクセス頻度と、前記重複除去用アドレスまたは前記新たなアドレスに対応するデータブロックを配置する前記記憶部を特定する情報とを対応付けて記憶する第4記憶領域を有し、
前記階層化部は、前記第4記憶領域を用いて前記階層化処理を実行する、付記8に記載の情報処理装置。
(付記10)
ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なうコンピュータに、
前記所定アドレスへの書込み回数に相当する指標値を算出し、
算出した前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定して切り換える、
処理を実行させる、重複除去プログラム。
(付記11)
前記所定アドレスを含む複数のアドレスについて算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第1記憶領域を、前記データブロックを前記所定アドレスに書き込む際に参照し、
前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留する、
処理を、前記コンピュータに実行させる、付記10に記載の重複除去プログラム。
(付記12)
前記指標値が前記複数の指標値の中で上位に属していない場合、前記データブロックについて前記重複除去処理を実行する、
処理を、前記コンピュータに実行させる、付記11に記載の重複除去プログラム。
(付記13)
時間の経過とともに前記複数の指標値相互間の差が相対的に小さくなるように、前記第1記憶領域に記憶される前記複数の指標値を更新する、
処理を、前記コンピュータに実行させる、付記11または付記12に記載の重複除去プログラム。
(付記14)
前記第1記憶領域に記憶される前記複数の指標値のそれぞれに0よりも大きく且つ1未満の定数を乗算し、
前記所定アドレスが前記第1記憶領域に記憶されているか否かを判定し、
前記所定アドレスが前記第1記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“1”を加算する一方、
前記所定アドレスが前記第1記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第1記憶領域から削除し、値“1”を、前記指標値として、前記所定アドレスに対応付けて前記第1記憶領域に追加する、
処理を、前記コンピュータに実行させる、付記13に記載の重複除去プログラム。
(付記15)
前記所定アドレスが前記第1記憶領域に記憶されているか否かを判定し、
前記所定アドレスが前記第1記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“1”を加算する一方、
前記所定アドレスが前記第1記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第1記憶領域から削除し、前記最小の指標値に“1”を加算した値を、前記指標値として、前記所定アドレスに対応付けて前記第1記憶領域に追加する、
処理を、前記コンピュータに実行させる、付記13に記載の重複除去プログラム。
(付記16)
ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なうコンピュータが、
前記所定アドレスへの書込み回数に相当する指標値を算出し、
算出した前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定して切り換える、重複除去方法。
(付記17)
前記コンピュータが、
前記所定アドレスを含む複数のアドレスについて算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第1記憶領域を、前記データブロックを前記所定アドレスに書き込む際に参照し、
前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留する、付記16に記載の重複除去方法。
(付記18)
前記コンピュータが、時間の経過とともに前記複数の指標値相互間の差が相対的に小さくなるように、前記第1記憶領域に記憶される前記複数の指標値を更新する、付記17に記載の重複除去方法。
(付記19)
前記コンピュータが、
前記第1記憶領域に記憶される前記複数の指標値のそれぞれに0よりも大きく且つ1未満の定数を乗算し、
前記所定アドレスが前記第1記憶領域に記憶されているか否かを判定し、
前記所定アドレスが前記第1記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“1”を加算する一方、
前記所定アドレスが前記第1記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第1記憶領域から削除し、値“1”を、前記指標値として、前記所定アドレスに対応付けて前記第1記憶領域に追加する、付記18に記載の重複除去方法。
(付記20)
前記コンピュータが、
前記所定アドレスが前記第1記憶領域に記憶されているか否かを判定し、
前記所定アドレスが前記第1記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“1”を加算する一方、
前記所定アドレスが前記第1記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第1記憶領域から削除し、前記最小の指標値に“1”を加算した値を、前記指標値として、前記所定アドレスに対応付けて前記第1記憶領域に追加する、付記18に記載の重複除去方法。
1 ストレージシステム
2 階層化ストレージ(ストレージ)
10 ホスト
20 情報処理装置(重複除去エンジン,PC,コンピュータ)
21 処理部
211 重複除去部
212 算出部
213 制御部
22 記憶部
220 重複除去プログラム
221 第1記憶領域
222 第2記憶領域
223 第3記憶領域
30 情報処理装置(階層化エンジン,PC,コンピュータ)
31 処理部
311 階層化部
32 記憶部
320 階層化プログラム
321 第4記憶領域
40 SSD(記憶部)
50 HDD(記憶部)
T1〜T4 データ構造

Claims (11)

  1. ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なう重複除去部と、
    前記所定アドレスへの書込み回数に相当する指標値を算出する算出部と、
    前記算出部によって算出される前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定る制御部と、
    前記所定アドレスを含む複数のアドレスについて前記算出部によって算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第1記憶領域と、を有し、
    前記制御部は、前記データブロックを前記所定アドレスに書き込む際に前記第1記憶領域を参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留させ、
    前記算出部は、時間の経過とともに前記複数の指標値相互間の差が相対的に小さくなるように、前記第1記憶領域に記憶される前記複数の指標値を更新する、情報処理装置。
  2. 前記制御部は、前記指標値が前記複数の指標値の中で上位に属していない場合、前記データブロックについて前記重複除去処理を実行させる、請求項に記載の情報処理装置。
  3. 前記算出部は、
    前記第1記憶領域に記憶される前記複数の指標値のそれぞれに0よりも大きく且つ1未満の定数を乗算し、
    前記所定アドレスが前記第1記憶領域に記憶されているか否かを判定し、
    前記所定アドレスが前記第1記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“1”を加算する一方、
    前記所定アドレスが前記第1記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第1記憶領域から削除し、値“1”を、前記指標値として、前記所定アドレスに対応付けて前記第1記憶領域に追加する、請求項1または請求項2に記載の情報処理装置。
  4. 前記算出部は、
    前記所定アドレスが前記第1記憶領域に記憶されているか否かを判定し、
    前記所定アドレスが前記第1記憶領域に記憶されている場合、前記所定アドレスに対応する前記指標値に“1”を加算する一方、
    前記所定アドレスが前記第1記憶領域に記憶されていない場合、前記複数の指標値のうちの最小の指標値と前記最小の指標値に対応付けられたアドレスとを前記第1記憶領域から削除し、前記最小の指標値に“1”を加算した値を、前記指標値として、前記所定アドレスに対応付けて前記第1記憶領域に追加する、請求項1または請求項2に記載の情報処理装置。
  5. 前記複数のアドレスと各アドレスに書き込まれる各データブロックから得られるハッシュ値とを対応付けて記憶する第2記憶領域と、
    前記ハッシュ値と前記ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付けて記憶する第3記憶領域と、を有し、
    前記重複除去部は、前記第2記憶領域および前記第3記憶領域を用いて前記重複除去処
    理を実行し、
    前記制御部は、前記指標値が前記複数の指標値の中で上位に属する場合、前記ストレージから割り当てられた新たなアドレスに前記データブロックを書き込むとともに、前記第2記憶領域において、前記所定アドレスに対応付けられたハッシュ値を、前記新たなアドレスに書き換え、前記所定アドレスに対して書き込まれるデータブロックを、前記新たなアドレスに上書きすることで、前記データブロックについて前記重複除去処理を保留させる、請求項〜請求項のいずれか一項に記載の情報処理装置。
  6. ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なう重複除去部と、
    前記所定アドレスへの書込み回数に相当する指標値を算出する算出部と、
    前記算出部によって算出される前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定する制御部と、
    前記所定アドレスを含む複数のアドレスについて前記算出部によって算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第1記憶領域と、
    前記複数のアドレスと各アドレスに書き込まれる各データブロックから得られるハッシュ値とを対応付けて記憶する第2記憶領域と、
    前記ハッシュ値と前記ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付けて記憶する第3記憶領域と、を有し、
    前記重複除去部は、前記第2記憶領域および前記第3記憶領域を用いて前記重複除去処理を実行し、
    前記制御部は、
    前記データブロックを前記所定アドレスに書き込む際に前記第1記憶領域を参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留させ、
    前記指標値が前記複数の指標値の中で上位に属する場合、前記ストレージから割り当てられた新たなアドレスに前記データブロックを書き込むとともに、前記第2記憶領域において、前記所定アドレスに対応付けられたハッシュ値を、前記新たなアドレスに書き換え、前記所定アドレスに対して書き込まれるデータブロックを、前記新たなアドレスに上書きすることで、前記データブロックについて前記重複除去処理を保留させる、情報処理装置。
  7. 前記ストレージは、性能の異なる複数の記憶部を含む階層化ストレージであり、
    前記複数の記憶部のうち、前記重複除去用アドレスまたは前記新たなアドレスに対するアクセス頻度に応じた性能の記憶部に、前記重複除去用アドレスまたは前記新たなアドレスに対応するデータブロックを配置する階層化処理を行なう階層化部を有する、請求項5または請求項6に記載の情報処理装置。
  8. コンピュータに、
    ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を実行させるとともに、
    前記所定アドレスへの書込み回数に相当する指標値を算出する算出処理と
    算出した前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定決定処理と、を実行させ
    前記決定処理に際して、前記所定アドレスを含む複数のアドレスについて算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第1記憶領域を、前記データブロックを前記所定アドレスに書き込む際に参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留し、
    前記算出処理に際して、時間の経過とともに前記複数の指標値相互間の差が相対的に小さくなるように、前記第1記憶領域に記憶される前記複数の指標値を更新する、
    処理を実行させる、重複除去プログラム。
  9. コンピュータに、
    ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を実行させるとともに、
    前記所定アドレスへの書込み回数に相当する指標値を算出する算出処理と、
    算出した前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定する決定処理と、を実行させ、
    前記決定処理に際して、前記所定アドレスを含む複数のアドレスについて算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第1記憶領域を、前記データブロックを前記所定アドレスに書き込む際に参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留し、
    前記重複除去処理に際して、前記複数のアドレスと各アドレスに書き込まれる各データブロックから得られるハッシュ値とを対応付けて記憶する第2記憶領域と、前記ハッシュ値と前記ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付けて記憶する第3記憶領域と、を用い、
    前記決定処理に際して、前記指標値が前記複数の指標値の中で上位に属する場合、前記ストレージから割り当てられた新たなアドレスに前記データブロックを書き込むとともに、前記第2記憶領域において、前記所定アドレスに対応付けられたハッシュ値を、前記新たなアドレスに書き換え、前記所定アドレスに対して書き込まれるデータブロックを、前記新たなアドレスに上書きすることで、前記データブロックについて前記重複除去処理を保留する、
    処理を実行させる、重複除去プログラム。
  10. コンピュータによって、
    ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なうとともに
    前記所定アドレスへの書込み回数に相当する指標値を算出する算出処理と
    算出した前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定決定処理と、を行ない
    前記決定処理に際して、前記所定アドレスを含む複数のアドレスについて算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第1記憶領域を、前記データブロックを前記所定アドレスに書き込む際に参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留し、
    前記算出処理に際して、時間の経過とともに前記複数の指標値相互間の差が相対的に小さくなるように、前記第1記憶領域に記憶される前記複数の指標値を更新する、
    重複除去方法。
  11. コンピュータによって、
    ストレージの所定アドレスにデータブロックを書き込む際に前記データブロックについての重複除去処理を行なうとともに、
    前記所定アドレスへの書込み回数に相当する指標値を算出する算出処理と、
    算出した前記指標値に応じ、前記データブロックについて前記重複除去処理を実行するか保留するかを決定する決定処理と、を行ない、
    前記決定処理に際して、前記所定アドレスを含む複数のアドレスについて算出される、前記複数のアドレスへの書込み回数に相当する複数の指標値を、それぞれ前記複数のアドレスに対応付けて記憶する第1記憶領域を、前記データブロックを前記所定アドレスに書き込む際に参照し、前記所定アドレスについて算出された前記指標値が前記複数の指標値の中で上位に属する場合、前記データブロックについて前記重複除去処理を保留し、
    前記重複除去処理に際して、前記複数のアドレスと各アドレスに書き込まれる各データブロックから得られるハッシュ値とを対応付けて記憶する第2記憶領域と、前記ハッシュ値と前記ハッシュ値に対応するデータブロックを記憶する重複除去用アドレスとを対応付けて記憶する第3記憶領域と、を用い、
    前記決定処理に際して、前記指標値が前記複数の指標値の中で上位に属する場合、前記ストレージから割り当てられた新たなアドレスに前記データブロックを書き込むとともに、前記第2記憶領域において、前記所定アドレスに対応付けられたハッシュ値を、前記新たなアドレスに書き換え、前記所定アドレスに対して書き込まれるデータブロックを、前記新たなアドレスに上書きすることで、前記データブロックについて前記重複除去処理を保留する、
    重複除去方法。
JP2016094025A 2016-05-09 2016-05-09 情報処理装置、重複除去プログラム、及び重複除去方法 Active JP6724534B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016094025A JP6724534B2 (ja) 2016-05-09 2016-05-09 情報処理装置、重複除去プログラム、及び重複除去方法
US15/489,264 US10282126B2 (en) 2016-05-09 2017-04-17 Information processing apparatus and method for deduplication

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016094025A JP6724534B2 (ja) 2016-05-09 2016-05-09 情報処理装置、重複除去プログラム、及び重複除去方法

Publications (2)

Publication Number Publication Date
JP2017204037A JP2017204037A (ja) 2017-11-16
JP6724534B2 true JP6724534B2 (ja) 2020-07-15

Family

ID=60243455

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016094025A Active JP6724534B2 (ja) 2016-05-09 2016-05-09 情報処理装置、重複除去プログラム、及び重複除去方法

Country Status (2)

Country Link
US (1) US10282126B2 (ja)
JP (1) JP6724534B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10318415B2 (en) * 2017-05-31 2019-06-11 International Business Machines Corporation Garbage collection facility grouping infrequently accessed data units in designated transient memory area
US11537514B2 (en) * 2018-02-27 2022-12-27 SK Hynix Inc. Data storage device and operating method thereof
KR102631380B1 (ko) * 2018-05-17 2024-02-01 에스케이하이닉스 주식회사 데이터 연산을 수행할 수 있는 다양한 메모리 장치를 포함하는 반도체 시스템
CN112597746B (zh) * 2020-12-29 2024-05-28 维沃移动通信有限公司 数据显示方法、装置及电子设备
CN116010397A (zh) * 2021-10-22 2023-04-25 伊姆西Ip控股有限责任公司 数据读取方法、存储方法、电子设备和计算机程序产品
US11922019B2 (en) * 2022-01-20 2024-03-05 Dell Products L.P. Storage device read-disturb-based block read temperature utilization system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5109618B2 (ja) 2007-11-21 2012-12-26 富士通株式会社 情報処理装置、情報処理装置の制御方法およびプログラム
JP5084551B2 (ja) 2008-02-26 2012-11-28 Kddi株式会社 重複排除技術を用いたデータバックアップ方法、記憶制御通信装置及びプログラム
US8799601B1 (en) * 2012-06-28 2014-08-05 Emc Corporation Techniques for managing deduplication based on recently written extents
JP5842768B2 (ja) * 2012-08-22 2016-01-13 富士通株式会社 重複除去装置、重複除去方法及び重複除去プログラム
US10572171B2 (en) * 2016-02-29 2020-02-25 Hitachi, Ltd. Storage system

Also Published As

Publication number Publication date
JP2017204037A (ja) 2017-11-16
US20170322747A1 (en) 2017-11-09
US10282126B2 (en) 2019-05-07

Similar Documents

Publication Publication Date Title
JP6724534B2 (ja) 情報処理装置、重複除去プログラム、及び重複除去方法
JP6304406B2 (ja) ストレージ装置、プログラム、情報処理方法
Pitchumani et al. SMRDB: Key-value data store for shingled magnetic recording disks
JP6794782B2 (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
JP6298932B2 (ja) ストレージ装置
KR20090046567A (ko) 반도체 디스크 및 그것의 동작 방법
JP2010535379A (ja) フラッシュメモリに最適化された入出力制御方法および装置
JP6867578B2 (ja) ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
JP2019128906A (ja) ストレージ装置及びその制御方法
JP6098301B2 (ja) ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
US9471253B2 (en) Use of flash cache to improve tiered migration performance
JP6089890B2 (ja) ストレージ制御装置、ストレージ制御装置の制御方法およびストレージ制御装置の制御プログラム
JP5729479B2 (ja) 仮想テープ装置及び仮想テープ装置の制御方法
US10754824B2 (en) Data restructuring of deduplicated data
US20110264848A1 (en) Data recording device
US20130246842A1 (en) Information processing apparatus, program, and data allocation method
JP2021076969A (ja) 情報処理装置および情報処理プログラム
US20230418798A1 (en) Information processing apparatus and information processing method
US10740015B2 (en) Optimized management of file system metadata within solid state storage devices (SSDs)
JP2017146722A (ja) ストレージ装置
JP6032091B2 (ja) データ消去プログラム、情報処理装置、およびデータ消去方法
KR20120110670A (ko) 바이너리 트리 구조의 캐시 컨트롤 레코드 관리 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190212

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190607

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191217

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200212

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200526

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200608

R150 Certificate of patent or registration of utility model

Ref document number: 6724534

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150