JP2019028954A - ストレージ制御装置、プログラム、及び重複排除方法 - Google Patents

ストレージ制御装置、プログラム、及び重複排除方法 Download PDF

Info

Publication number
JP2019028954A
JP2019028954A JP2017151180A JP2017151180A JP2019028954A JP 2019028954 A JP2019028954 A JP 2019028954A JP 2017151180 A JP2017151180 A JP 2017151180A JP 2017151180 A JP2017151180 A JP 2017151180A JP 2019028954 A JP2019028954 A JP 2019028954A
Authority
JP
Japan
Prior art keywords
hash value
data block
data
area
cache
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.)
Pending
Application number
JP2017151180A
Other languages
English (en)
Inventor
晋一 西園
Shinichi Nishizono
晋一 西園
明人 小林
Akito Kobayashi
明人 小林
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 JP2017151180A priority Critical patent/JP2019028954A/ja
Priority to US16/036,080 priority patent/US20190042134A1/en
Publication of JP2019028954A publication Critical patent/JP2019028954A/ja
Pending legal-status Critical Current

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data

Abstract

【課題】重複排除の効率を改善すること。【解決手段】物理記憶領域21cに書き込まれるデータブロックのハッシュ値が格納される第1のキャッシュ領域21aと、物理記憶領域21cから読み出されるデータブロックのハッシュ値が格納される第2のキャッシュ領域21bとを有するキャッシュメモリ21と、物理記憶領域21cに対するデータブロックの書き込み要求を受け付けたとき、第1のキャッシュ領域21a又は第2のキャッシュ領域21bに該データブロックのハッシュ値と同じハッシュ値があるかを判定し、同じハッシュ値がある場合には該データブロックの重複排除を実施する制御部22とを有する、ストレージ制御装置20が提供される。【選択図】図1

Description

本発明は、ストレージ制御装置、プログラム、及び重複排除方法に関する。
ストレージシステムでは、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの記憶装置に格納されるデータの量を削減するために重複排除と呼ばれる技術が採用されることがある。重複排除は、記憶装置に書き込むデータ(ライトデータ)と、既に記憶装置に格納済みのデータ(既存データ)との重複を検出し、重複するデータの書き込みを回避する技術である。
重複を検出する方法としては、例えば、ライトデータのハッシュ値と既存データのハッシュ値とを比較し、ハッシュ値が同じ既存データの有無を検出する方法がある。なお、ハッシュ値が一致するデータ同士をさらに比較する方法が提案されている。
特開2009-251725号公報 特開2014-137814号公報
上記のようにハッシュ値を利用することで高速に重複を検出することができる。既存データのハッシュ値は、例えば、ストレージシステムで重複排除などの処理を制御するストレージ制御装置のキャッシュメモリに格納される。キャッシュメモリの容量は有限であり、全ての既存データのハッシュ値を格納しきれないことがある。キャッシュメモリの空きが不足する場合、キャッシュメモリの空きを確保するために、例えば、キャッシュメモリ内のハッシュ値の中で一番古いハッシュ値が削除される。
キャッシュメモリからハッシュ値が削除されると、削除されたハッシュ値と同じハッシュ値に対応するライトデータには重複排除が実施されず、既存データと重複するライトデータが記憶装置に書き込まれる。
一例として、記憶装置内の一の領域にある既存データを大量に他の領域へとコピーする場合、ストレージ制御装置は、一の領域から読み出した既存データを他の領域に書き込む。重複排除の対象から外れたライトデータのハッシュ値は、キャッシュメモリに順次格納される。キャッシュメモリの空き不足が生じると、キャッシュメモリからハッシュ値が削除される。削除されたハッシュ値と重複するはずだったライトデータは、ハッシュ値の不一致が生じ、重複排除されない。
コピーの場合にはライトデータは既存データと重複する。しかし、上記のようにキャッシュメモリの空き不足によりハッシュ値の不一致が生じ、既存データと重複するライトデータが記憶装置に書き込まれる。つまり、キャッシュメモリの空き不足により重複排除の対象から漏れるライトデータが生じて重複排除の効率が低下する。
コピーのように、読み出しと書き込みとが続けて実施される状況ではライトデータと既存データとが重複する可能性が高くなる。このような場合、キャッシュメモリに対するハッシュ値の格納制御を工夫することで上記の効率低下を低減できる余地がある。
1つの側面によれば、本発明の目的は、重複排除の効率を改善できるストレージ制御装置、プログラム、及び重複排除方法を提供することにある。
一態様によれば、物理記憶領域に書き込まれるデータブロックのハッシュ値が格納される第1のキャッシュ領域と、物理記憶領域から読み出されるデータブロックのハッシュ値が格納される第2のキャッシュ領域とを有するキャッシュメモリと、物理記憶領域に対するデータブロックの書き込み要求を受け付けたとき、第1のキャッシュ領域又は第2のキャッシュ領域に該データブロックのハッシュ値と同じハッシュ値があるかを判定し、同じハッシュ値がある場合には該データブロックの重複排除を実施する制御部とを有する、ストレージ制御装置が提供される。
重複排除の効率を改善できる。
第1実施形態に係るストレージシステムの一例を示した図である。 第2実施形態に係るストレージシステムの一例を示した図である。 書き込み制御と重複排除について説明するための第1の図である。 書き込み制御と重複排除について説明するための第2の図である。 WHCの構造について説明するための図である。 読み出し制御について説明するための図である。 データコピー時の重複排除について説明するための第1の図である。 データコピー時の重複排除について説明するための第2の図である。 制御情報の一例を示した図である。 WRITE時の処理の流れを示したフロー図である。 READ時の処理の流れを示したフロー図である。
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
<1.第1実施形態>
図1を参照しながら、第1実施形態について説明する。第1実施形態は、重複排除(Deduplication)を実施するストレージシステムに適用可能なキャッシュ制御に関する。図1は、第1実施形態に係るストレージシステムの一例を示した図である。
図1に示すように、第1実施形態に係るストレージシステムは、ホスト装置10、ストレージ制御装置20、及び記憶装置30を含む。
ホスト装置10は、例えば、PC(Personal Computer)やサーバ装置などのコンピュータである。また、ホスト装置10は、FC(Fibre Channel)やLAN(Local Area Network)などの通信回線を介してストレージ制御装置20と接続される。また、ホスト装置10は、ストレージ制御装置20を介して記憶装置30にアクセスする。
ストレージ制御装置20及び記憶装置30は、データを格納するためのストレージ装置として機能する。ストレージ制御装置20と記憶装置30とは、例えば、SAS(Serial Attached Small Computer System Interface)やSATA(Serial Advanced Technology Attachment)などのインターフェースを介して接続される。
ストレージ制御装置20は、記憶装置30に対するデータの読み書きを制御する。ストレージ装置の動作を制御するCM(Controller Module)は、ストレージ制御装置20の一例である。ストレージ制御装置20は、キャッシュメモリ21、制御部22、記憶部23を有する。
キャッシュメモリ21は、例えば、RAM(Random Access Memory)などのメモリである。キャッシュメモリ21は、第1のキャッシュ領域21a、第2のキャッシュ領域21b、及び物理記憶領域21cを有する。第1のキャッシュ領域21a及び第2のキャッシュ領域21bは、後述するハッシュ値の格納に利用される。物理記憶領域21cは、書き込み対象のデータ(WRITEデータ)を一時的に格納するためのデータキャッシュとして利用される。
なお、第1のキャッシュ領域21a、第2のキャッシュ領域21b、物理記憶領域21cはそれぞれ別のメモリに確保されてもよい。第2のキャッシュ領域21bのサイズは、第1のキャッシュ領域21aのサイズより小さく設定されてもよい。
制御部22は、例えば、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などのプロセッサである。
記憶部23は、例えば、RAM、HDD、SSDなどのメモリである。記憶部23には、制御部22が実行するプログラムなどが格納される。記憶装置30は、データが格納される記録媒体32、33、34を有する。RAID(Redundant Arrays of Inexpensive Disks)装置は、記憶装置30の一例である。記録媒体32、33、34は、例えば、HDDやSSDなどである。
記録媒体32、33、34は物理記憶領域31を形成する。複数の記録媒体の記憶領域を仮想的に1つの記憶領域として運用するストレージプールや物理ボリュームなどは、物理記憶領域31の一例である。
ストレージ制御装置20は、制御部22にてプログラムの実行により重複排除を実施する。重複排除は、WRITEデータと同じ内容のデータが物理記憶領域21c、31の少なくとも一方にある場合に、WRITEデータの書き込み先アドレスと既に格納済みのデータ(既存データ)とを対応付け、書き込み処理を回避する処理である。この処理により重複するデータの書き込みが抑制されるため、記憶容量の節約に寄与する。
上記の重複排除は、重複排除率を高めるために所定サイズ(例えば、4KB)のデータブロックを単位として実施される。制御部22は、WRITEデータを複数のデータブロックに分割し、WRITEデータの各データブロックと既存データのデータブロックとを比較する。このとき、制御部22は、各データブロックのハッシュ値を利用してデータブロックの内容を比較する。
一例としてデータブロックdBLK#1、…、dBLK#5を物理記憶領域21cに書き込む場合、制御部22は、所定のハッシュ関数を用いてデータブロックdBLK#1、…、dBLK#5のハッシュ値H#1、…、H#5を計算する。例えば、制御部22は、4KBのデータ入力に対し、そのデータ内容に応じた20Byteのハッシュ値を出力するハッシュ関数を利用してハッシュ値H#1、…、H#5を計算する。
データブロックdBLK#1を書き込むとき、制御部22は、データブロックdBLK#1から計算されたハッシュ値H#1と、第1のキャッシュ領域21aに格納されている各ハッシュ値とを比較する。この例では第1のキャッシュ領域21aにハッシュ値H#1がないため、制御部22は、図1のAに示すように、データブロックdBLK#1にハッシュ値H#1を付加したデータを物理記憶領域21cに格納する。
なお、データブロックdBLK#2、…、dBLK#5についても制御部22はデータブロックdBLK#1と同様に上記の処理を実行する。また、データブロックdBLK#1、…、dBLK#5は圧縮後に物理記憶領域21cに格納される。
制御部22は、データブロックdBLK#1、…、dBLK#5の書き込み処理とは非同期に物理記憶領域21cにあるデータの少なくとも一部を記憶装置30の物理記憶領域31に移動し、物理記憶領域31に格納済みのデータを物理記憶領域21cから削除する処理(書き出し処理)を実行する。書き出し処理は、例えば、物理記憶領域21cが溢れる場合など、空き容量や使用率に応じたタイミングで実行される。
他方、制御部22は、ホスト装置10からデータブロックdBLK#1、…、dBLK#5に対応するREADデータの読み出し要求を受け付けると、物理記憶領域21c、31のいずれかからデータブロックdBLK#1、…、dBLK#5を読み出す。
例えば、データブロックdBLK#1、…、dBLK#5が物理記憶領域31にある場合、制御部22は、物理記憶領域31から読み出したデータブロックdBLK#1、…、dBLK#5を物理記憶領域21cに一時的に格納する。そして、制御部22は、データブロックdBLK#1、…、dBLK#5を結合してREADデータを生成し、読み出し要求に対する応答としてREADデータをホスト装置10に送信する。
データブロックdBLK#1を読み出すとき、制御部22は、データブロックdBLK#1に付加されているハッシュ値H#1を分離し、ハッシュ値H#1を第2のキャッシュ領域21bに格納する。データブロックdBLK#2、…、dBLK#5を読み出すときも同様に、ハッシュ値H#2、…、H#5が第2のキャッシュ領域21bに格納される。
上記のように、第1のキャッシュ領域21a、第2のキャッシュ領域21bは、ハッシュ値を格納するために利用される。データブロックdBLK#1、…、dBLK#5のハッシュ値と同じハッシュ値が第1のキャッシュ領域21aにない場合、上記の流れに沿って物理記憶領域21cへの書き込み処理が実行される。一方、データブロックdBLK#k(k=1,…,5)のハッシュ値と同じハッシュ値が第1のキャッシュ領域21aにある場合、データブロックdBLK#kについて重複排除が実施される。
まず、4つのデータブロックを格納可能なサイズの第1のキャッシュ領域21aが空の状態でデータブロックdBLK#1、…、dBLK#5が論理記憶領域41に書き込まれる状況について説明する。論理記憶領域41は、例えば、物理記憶領域21cの一部領域に対応付けられている。この場合、上記と同様に、制御部22は、データブロックdBLK#1、…、dBLK#5のハッシュ値H#1、…、H#5を計算し、ハッシュ値H#1、…、H#5を順次第1のキャッシュ領域21aに格納する。
この例ではハッシュ値H#1、…、H#4を第1のキャッシュ領域21aに格納した時点で第1のキャッシュ領域21aは一杯になる。そのため、制御部22は、図1のBに示すように、第1のキャッシュ領域21aにあるハッシュ値の中で最も古いハッシュ値H#1を削除して空き領域を確保し、ハッシュ値H#5を第1のキャッシュ領域21aに格納する。また、制御部22は、データブロックdBLK#1、…、dBLK#5にハッシュ値H#1、…、H#5を付加し、論理記憶領域41に対応する物理記憶領域21cの範囲にデータブロックdBLK#1、…、dBLK#5のデータを格納する。
上記の状態で、図1のCに示すように、論理記憶領域41にあるデータブロックdBLK#1、dBLK#2を論理記憶領域42にコピーする場合、制御部22は、物理記憶領域21cからデータブロックdBLK#1、dBLK#2を順次読み出す。また、制御部22は、データブロックdBLK#1、dBLK#2に付加されているハッシュ値H#1、H#2を順次第2のキャッシュ領域21bに格納する。
また、制御部22は、読み出したデータブロックdBLK#1を論理記憶領域42に対応する物理記憶領域21cの範囲に格納する前にデータブロックdBLK#1の重複排除が可能か否かを判定する。このとき、制御部22は、第1のキャッシュ領域21a及び第2のキャッシュ領域21b内でハッシュ値H#1を検索する。
図1のBに示したように、ハッシュ値H#1は第1のキャッシュ領域21aから削除されている。そのため、第1のキャッシュ領域21aからハッシュ値H#1は検出されない(キャッシュMISS)。一方、第2のキャッシュ領域21bには、データブロックdBLK#1の読み出し時に格納されたハッシュ値H#1が格納されている。そのため、第2のキャッシュ領域21bからハッシュ値H#1が検出される(キャッシュHIT)。
第2のキャッシュ領域21bからハッシュ値H#1が検出されたため、制御部22は、データブロックdBLK#1の重複排除が可能であると判定する。この場合、制御部22は、論理記憶領域41に対応する物理記憶領域21cの範囲と論理記憶領域42とを対応付け、物理記憶領域21cに対するデータブロックdBLK#1の格納を回避する(重複排除の実施)。同様にデータブロックdBLK#2についても重複排除が実施される。
上記のように、制御部22は、物理記憶領域21cに対するデータブロックの書き込み要求を受け付けたとき、第1のキャッシュ領域21a又は第2のキャッシュ領域21bに該データブロックのハッシュ値と同じハッシュ値があるかを判定する。そして、制御部22は、同じハッシュ値がある場合には該データブロックの重複排除を実施する。
コピーを実施する場合、前提として物理記憶領域21c、31にコピー対象のデータがある。そのため、データの読み出し時に第2のキャッシュ領域21bでハッシュ値を保存し、書き込み時に第2のキャッシュ領域21bを参照することで、第1のキャッシュ領域21aでキャッシュMISSになっても重複排除が実施される。
なお、説明の都合上、コピーを実施する場合について説明したが、第2のキャッシュ領域21bを設けることでコピー以外の処理を実施する場合においても重複排除率の向上に寄与しうる。例えば、データの一部を書き換えるとき、物理記憶領域21c、31からデータを読み出し、読み出したデータを更新して更新前後のデータを異なる領域に書き込む場合がある。更新部分が少ない場合、多くのデータブロックが同じ内容になる。このような場合もキャッシュMISSの低減効果が得られうる。
以上、第1実施形態について説明した。上記のように、読み出し時にハッシュ値を保存しておき、書き込み時に保存したハッシュ値と読み出し時に保存したハッシュ値とを参照して重複排除を実施することで重複排除の効率を改善することができる。
<2.第2実施形態>
次に、第2実施形態について説明する。第2実施形態は、重複排除を実施するストレージシステムに適用可能なキャッシュ制御に関する。
[2−1.ストレージシステム]
図2を参照しながら、ストレージシステム100について説明する。図2は、第2実施形態に係るストレージシステムの一例を示した図である。図2に示したストレージシステム100は、第2実施形態に係るストレージシステムの一例である。
図2に示すように、ストレージシステム100は、ホスト装置101、及びストレージ装置102を有する。ストレージ装置102は、CM121、122、及び記憶装置123を有する。
なお、図2にはストレージ装置102に2つのCMが搭載される例を示しているが、第2実施形態に係る技術は1つ又は3つ以上のCMがストレージ装置102に搭載される場合にも適用可能である。また、CM121、122は実質的に同じハードウェア及び機能を有するものとし、CM122については詳細な説明を省略する場合がある。
CM121は、複数のCA(Channel Adapter)、複数のI/F(Interface)、プロセッサ121a、及びメモリ121bを有する。
CAは、ホスト装置101との間の接続制御を実施するアダプタ回路である。例えば、CAは、FCなどの通信回線を介して、ホスト装置101に搭載されるHBA(Host Bus Adapter)や、CAとホスト装置101との間に設置されるスイッチに接続される。I/Fは、SASやSATAなどの回線を介して記憶装置123と接続するためのインターフェースである。
プロセッサ121aは、例えば、CPU、DSP、ASIC、FPGAなどである。メモリ121bは、例えば、RAMやフラッシュメモリなどである。なお、図2の例ではCM121の内部にメモリ121bが搭載されているが、CM121の外部に接続されたメモリを利用してもよい。
メモリ121bには、後述する制御情報が格納される制御情報領域(Ctrl)201、及びユーザデータが一時的に格納されるユーザデータキャッシュ領域(UDC)202が設定される。また、メモリ121bには、書き込みデータのハッシュ値が格納される書き込みハッシュキャッシュ領域(WHC)203、及び読み出しデータのハッシュ値が格納される読み出しハッシュキャッシュ領域(RHC)204が設定される。
なお、UDC202は物理記憶領域の一例である。また、UDC202、WHC203、RHC204の少なくとも一部は、CM121の外部に接続されたメモリに設定されてもよい。また、UDC202、WHC203、RHC204はそれぞれ別のメモリに設定されてもよい。
記憶装置123は、記録媒体D1、…、Dnを有する。記録媒体D1、…、Dnは、例えば、SSDやHDDなどである。記録媒体D1、…、Dnには、異なる種類の記録媒体(HDD、SSDなど)が混在していてもよい。記憶装置123に搭載される記録媒体の数nは1以上の任意数である。ディスクアレイ(ストレージアレイ)やRAID装置などは記憶装置123の一例である。記憶装置123は物理記憶領域の一例である。
CM122は、上述したCM121と同じ要素を有する。また、CM121、122はストレージ装置102の内部で接続されており、相互に通信可能である。また、CM122は、CM121と同様に記憶装置123へのアクセスが可能である。
以上、ストレージシステム100について説明した。以下では、図2に示したストレージシステム100を例に第2実施形態に係るキャッシュ制御について説明する。
[2−2.キャッシュ制御と重複排除]
第2実施形態に係るキャッシュ制御及び重複排除は主にプロセッサ121aにより実施される。
プロセッサ121aは、ユーザデータをUDC202に書き込む際にユーザデータのハッシュ値をWHC203に格納する。また、プロセッサ121aは、UDC202からユーザデータを読み出す際にユーザデータのハッシュ値をRHC204に格納する。そして、プロセッサ121aは、重複排除を実施する際、WHC203及びRHC204に格納されているハッシュ値を参照して重複排除の要否を判定する。
WHC203だけを利用する場合、WHC203が溢れるとUDC202に同じユーザデータがあっても重複排除が実施されず、内容が重複するユーザデータ(重複データ)がUDC202に書き込まれるリスクが生じうる。その結果、重複データが占める割合(重複率)が増加しうる。言い換えると、重複排除率が低下しうる。一方、WHC203とRHC204とを併用することで、WHC203の溢れにより重複排除率が低下するリスクを低減することができる。
なお、WHC203のサイズを拡大すればキャッシュMISSの発生を低減できる。また、書き込まれるユーザデータ(WRITEデータ)に占める重複データの割合(重複率)が大きければ、WHC203が溢れるリスクが低くなる。しかし、大容量のWHC203を確保するには非現実的なコストがかかる。また、WRITEデータの重複率をストレージ装置102側で制御することは困難である。そのため、RHC204を設けて重複排除率が低下するリスクを抑制することは有益である。
以下、上記のキャッシュ制御と重複排除について、さらに説明する。
(書き込み制御と重複排除)
プロセッサ121aは、ホスト装置101からWRITEデータの書き込み要求を受け付けたとき、例えば、図3に示すような方法で書き込み制御と重複排除を実施する。図3は、書き込み制御と重複排除について説明するための第1の図である。
書き込み要求を受け付けたプロセッサ121aは、WRITEデータを所定サイズ(例えば、4KB)のデータブロックに分割する。図3の例では、WRITEデータが5つのデータブロックB#1、…、B#5に分割されている。プロセッサ121aは、データブロックB#1、…、B#5のハッシュ値H#1、…、H#5を計算し、ハッシュ値H#1、…、H#5を順次WHC203のハッシュ値と比較する。
図3の例において、WHC203には、古い順にハッシュ値H#7、H#8、H#3、H#4が格納されている。例えば、プロセッサ121aは、ハッシュ値H#1と、WHC203のハッシュ値H#7、H#8、H#3、H#4とをそれぞれ比較する(Search)。この例では、ハッシュ値H#1がWHC203に格納されていない。この場合、プロセッサ121aは、ハッシュ値H#1とRHC204のハッシュ値とをそれぞれ比較する。
図3の例では、RHC204にハッシュ値が格納されていない。そのため、プロセッサ121aは、ハッシュ値H#1がWHC203及びRHC204のいずれにも格納されていない(キャッシュMISS)と判定する。この場合、プロセッサ121aは、データブロックB#1を重複排除の対象外にし、ハッシュ値H#1をWHC203に格納する。
但し、WHC203にはハッシュ値H#7、H#8、H#3、H#4が格納されており、ハッシュ値H#1を格納する空き領域が不足している。この場合、プロセッサ121aは、WHC203の中で最も古いハッシュ値H#7を削除し、WHC203に空き領域を確保する。そして、プロセッサ121aは、WHC203の空き領域にハッシュ値H#1を格納する。このように、WHC203が溢れる場合には古い順にハッシュ値の削除が実施され、WHC203の内容が更新される(Update)。
また、プロセッサ121aは、重複排除の対象外であるデータブロックB#1を圧縮し、圧縮後のデータブロックB#1にハッシュ値H#1を付加した圧縮データBH#1を生成する。そして、プロセッサ121aは、圧縮データBH#1をUDC202に格納する。なお、プロセッサ121aは、UDC202が溢れうる場合(例えば、空き容量が基準値以下の場合や、使用率が閾値以上の場合など)、WRITEデータの書き込みとは非同期に、UDC202に格納されている圧縮データを記憶装置123に書き出す。
上記のように、キャッシュMISSが生じた場合には図3のような処理が実行される。一方、WHC203又はRHC204に比較対象のハッシュ値がある場合(キャッシュHIT)、図4のような処理が実行される。図4は、書き込み制御と重複排除について説明するための第2の図である。
図4の例において、WHC203には、古い順にハッシュ値H#3、H#4、H#1、H#2が格納されている。例えば、プロセッサ121aは、ハッシュ値H#4と、WHC203のハッシュ値H#3、H#4、H#1、H#2とをそれぞれ比較する(Search)。この例では、ハッシュ値H#4がWHC203に格納されている。この場合、プロセッサ121aは、データブロックB#4を重複排除の対象とする。
また、プロセッサ121aは、WHC203の中でハッシュ値H#4を最新の位置に移動する。このように、WHC203が溢れない場合にはハッシュ値の移動が実施され、WHC203の内容が更新される(Update)。なお、データブロックB#4は重複排除の対象であるため、データブロックB#4及びハッシュ値H#4のUDC202への書き込みは回避される。また、プロセッサ121aは、UDC202又は記憶装置123におけるデータブロックB#4の位置(圧縮データBH#4のアドレス)と書き込み先とを対応付け、書き込み完了の応答をホスト装置101に返す。
プロセッサ121aは、プログラムの実行により上記のような方法で書き込み制御及び重複排除を実施する。
(WHCの構造)
ここで、図5を参照しながら、WHC203の構造について説明する。図5は、WHCの構造について説明するための図である。なお、図5に示す構造は一例であり、WHC203の構造は変形してもよい。RHC204もWHC203と同じ構造に設定しうる。
図5に示すように、WHC203では、1つのデータブロックに対応するハッシュ値をエントリと呼ばれる単位で管理する。また、M個(例えば、M=128)のエントリを纏めた単位をバンドルと呼ぶ場合がある。バンドルには、バンドルの識別情報などが含まれるヘッダと、M個のエントリが登録されうるエントリ領域とが含まれる。エントリには、ハッシュ値やスロット番号(後述)と共にエントリの位置を示すポインタが含まれる。
プロセッサ121aは、個々のバンドル内でエントリの新旧を管理し、エントリ領域が溢れると最も古いエントリを削除して新たなエントリを格納する。なお、ハッシュ値の格納先となるバンドルの決め方としては、例えば、ハッシュ値をバンドルの総数で割った値に基づいて格納先を決める方法などがある。この方法によれば、検索の際には、既知であるバンドルの総数を用いてハッシュ値から格納先を特定することができる。
(読み出し制御)
次に、図6を参照しながら、読み出し制御について説明する。図6は、読み出し制御について説明するための図である。
例えば、UDC202からデータブロックB#1を読み出す場合、プロセッサ121aは、図6に示すような処理を実行する。なお、データブロックB#1に対応する圧縮データBH#1が記憶装置123だけに格納されている場合、プロセッサ121aは、記憶装置123から圧縮データBH#1を読み出してUDC202に格納する。
プロセッサ121aは、UDC202から圧縮データBH#1を読み出し、圧縮後のデータブロックB#1を伸長して圧縮前のデータブロックB#1を復元する。また、プロセッサ121aは、圧縮データBH#1に含まれるハッシュ値H#1を取得し、ハッシュ値H#1をRHC204に格納する。また、プロセッサ121aは、読み出し要求に対する応答としてデータブロックB#1をホスト装置101に送信する。
図6の例では、RHC204に空き領域があり、そのままハッシュ値H#1をRHC204に格納できる。仮にRHC204が溢れる場合には、WHC203と同様、古いハッシュ値を削除して得られる空き領域にハッシュ値H#1が格納される。読み出し時の処理は上記のようになる。
(データコピー時の重複排除)
次に、図7及び図8を参照しながら、データコピー時の重複排除について説明する。図7は、データコピー時の重複排除について説明するための第1の図である。図8は、データコピー時の重複排除について説明するための第2の図である。
図7のAに示すように、WRITE命令により、ホスト装置101からストレージ装置102にデータブロックB#1、…、B#5を含むWRITEデータが書き込まれていると仮定する。WHC203が空の状態でデータブロックB#1、…、B#5がUDC202に書き込まれる場合、図7のBに示すように、WHC203には、古い順にハッシュ値H#2、…、H#5が格納される。他方、図7のCに示すように、RHC204は空であると仮定する。
既に説明したように、データブロックB#1、…、B#5をUDC202に書き込むとき、プロセッサ121aは、データブロックB#1、…、B#5を圧縮し、ハッシュ値H#1、…、H#5を付加した圧縮データBH#1、…、BH#5を生成する。そして、圧縮データBH#1、…、BH#5がUDC202に格納される。
UDC202の空き容量や使用率に基づく所定の条件を満たした場合、WRITE命令に応じた処理とは非同期に、UDC202に格納されている圧縮データBH#1、…、BH#5は、図7のDに示すように、記憶装置123に書き出される。書き出しの後、UDC202に格納されていた圧縮データBH#1、…、BH#5はUDC202に空きがあればそのまま保持し、空きがなければ削除される。
上記の処理が完了した状態で、図7のEに示すように、ホスト装置101からストレージ装置102が上記WRITEデータのコピー命令を受けると、プロセッサ121aは、圧縮データBH#1、…、BH#5のコピーを実施する。このとき、プロセッサ121aは、図8のような方法でキャッシュ制御及び重複排除を実施する。
プロセッサ121aは、コピー対象のデータブロックB#1を含む圧縮データBH#1を記憶装置123から読み出してUDC202に格納する。また、プロセッサ121aは、図8に示すように、圧縮データBH#1からハッシュ値H#1を取得し、取得したハッシュ値H#1をRHC204に格納する。
次に、プロセッサ121aは、WHC203内でハッシュ値H#1を検索する(Write時のSearch)。図7のBに示したようにWHC203にはハッシュ値H#1が格納されていない。そのため、WHC203についてはキャッシュMISSになる。この場合、プロセッサ121aは、RHC204内でハッシュ値H#1を検索する(Write時のSearch)。上記のように、圧縮データBH#1から取得されたハッシュ値H#1がRHC204に格納されている(キャッシュHIT)。
RHC204でキャッシュHITしたため、プロセッサ121aは、データブロックB#1の重複排除を実施する。例えば、プロセッサ121aは、データブロックB#1のコピー先となる論理アドレス(LBA:Logical Block Addressing)と、圧縮データBH#1の物理アドレスとを対応付ける。この場合、プロセッサ121aは、新たに圧縮データBH#1をUDC202に格納する処理を回避する。また、プロセッサ121aは、データブロックB#1のコピーが完了した旨の応答をホスト装置101に返す。
データコピーのように、既存のデータブロックを読み出して別の論理アドレスに書き込む場合、重複するデータブロックが確実に存在する。そのため、読み出し時にRHC204でハッシュ値を捕捉し、そのハッシュ値を書き込み時に参照することで重複排除の漏れを防止することができる。
ここで、図9を参照しながら、制御情報領域201に格納される制御情報201aについて説明する。図9は、制御情報の一例を示した図である。
図9に示すように、制御情報201aは、ハッシュ情報211、ブロックマップ212、及びコンテナメタ情報213を有する。
既に述べたように、ストレージ装置102において、ユーザデータは、所定サイズを有するデータブロックに分割され、データブロックの単位で管理される。データブロックの格納先はスロット番号により管理される。例えば、データブロックB#1、B#2、B#3、…の格納先は、それぞれスロット番号1、2、3、…に対応付けられる。
ハッシュ情報211は、ハッシュ値とスロット番号とを対応付ける情報である。例えば、ハッシュ情報211は、スロット番号1、2、3、…にハッシュ値H#1、H#2、H#3、…を対応付ける。データブロックとハッシュ値とは1対1に対応するため、ハッシュ情報211は、スロット番号とデータブロックとを対応付けている。
ブロックマップ212は、データブロックの格納位置を示す論理アドレスと、そのデータブロックに対応するスロット番号とを対応付ける情報である。論理アドレスは、例えば、論理ボリューム、仮想ディスク、LUN(Logical Unit Number)などで表現される論理記憶領域内の位置を示すアドレスである。重複排除の対象となるデータブロックの場合、複数の論理アドレスに同じスロット番号が対応付けられる。
上記のように、スロット番号とデータブロックとが対応するため、ブロックマップ212を介してデータブロックと論理アドレスとが対応付けられる。重複排除を実施した場合、同じデータブロックが複数の論理アドレスから参照されるため、上記のように、複数の論理アドレスに同じスロット番号が対応付けられる。図9の例では、論理アドレスx2、x10にスロット番号2が対応付けられている。
コンテナメタ情報213は、スロット番号と、そのスロット番号に対応するデータブロックの格納位置を示す物理アドレスとを対応付ける情報である。なお、コンテナメタ情報213には、データブロックの圧縮サイズが含まれていてもよい。物理アドレスは、UDC202又は記憶装置123により提供される物理記憶領域内の位置を示すアドレスである。ブロックマップ212及びコンテナメタ情報213から、各データブロックの論理アドレスと物理アドレスとの対応関係を特定することができる。
なお、制御情報201aはメタデータと呼ばれる場合がある。また、制御情報201aの少なくとも一部は記憶装置123に格納されてもよい。
以上、第2実施形態に係るキャッシュ制御及び重複排除について説明した。
[2−3.処理の流れ]
次に、ストレージ装置102による処理の流れについて説明する。
(WRITE時の処理)
まず、図10を参照しながら、WRITE時の処理の流れについて説明する。図10は、WRITE時の処理の流れを示したフロー図である。
(S101)ホスト装置101からWRITEデータの書き込み要求を受けると、プロセッサ121aは、WRITEデータを複数のデータブロックに分割する。また、プロセッサ121aは、各データブロックのハッシュ値を計算する。
(S102)プロセッサ121aは、S101で計算した複数のハッシュ値から未選択のハッシュ値を1つ選択する。なお、S102で選択されたハッシュ値を選択ハッシュ値と表記する場合がある。
(S103)プロセッサ121aは、選択ハッシュ値がWHC203にあるか否かを判定する。選択ハッシュ値がWHC203にある場合、処理はS104へと進む。一方、選択ハッシュ値がWHC203にない場合、処理はS105へと進む。
(S104)プロセッサ121aは、選択ハッシュ値が最新になるように、WHC203内で選択ハッシュ値の位置を移動する(図4を参照)。S104の処理が完了すると、処理はS108へと進む。
(S105)プロセッサ121aは、WHC203に選択ハッシュ値を格納する。WHC203に空きがない場合、プロセッサ121aは、WHC203内で最も古いハッシュ値を削除して空き領域を確保する。そして、プロセッサ121aは、WHC203に選択ハッシュ値を格納する(図3を参照)。
(S106)プロセッサ121aは、選択ハッシュ値がRHC204にあるか否かを判定する。選択ハッシュ値がRHC204にある場合、処理はS108へと進む。一方、選択ハッシュ値がRHC204にない場合、処理はS107へと進む。
(S107)プロセッサ121aは、選択ハッシュ値に対応するデータブロックを圧縮する。また、プロセッサ121aは、圧縮後のデータブロックに選択ハッシュ値を付加して圧縮データを生成し、圧縮データをUDC202に格納する。
(S108)プロセッサ121aは、制御情報201aを更新する。
(更新内容#1)選択ハッシュ値がWHC203にあった場合(S103:YES)、プロセッサ121aは、ハッシュ情報211を参照して選択ハッシュ値に対応するスロット番号を特定する。また、プロセッサ121aは、選択ハッシュ値の書き込み先である論理アドレスをブロックマップ212に登録し、登録した論理アドレスと、特定したスロット番号とを対応付ける。これにより選択ハッシュ値に対応するデータブロックの重複が排除される。
(更新内容#2)選択ハッシュ値がRHC204にあった場合(S106:YES)、プロセッサ121aは、ハッシュ情報211を参照して選択ハッシュ値に対応するスロット番号を特定する。また、プロセッサ121aは、選択ハッシュ値の書き込み先である論理アドレスをブロックマップ212に登録し、登録した論理アドレスと、特定したスロット番号とを対応付ける。これにより選択ハッシュ値に対応するデータブロックの重複が排除される。
(更新内容#3)選択ハッシュ値がWHC203及びRHC204のいずれにもない場合(S103:NO、S106:NO)、プロセッサ121aは、選択ハッシュ値の書き込み先である論理アドレスをブロックマップ212に登録し、登録した論理アドレスと新たに確保したスロット番号とを対応付ける。また、プロセッサ121aは、ハッシュ情報211に新たなスロット番号を登録し、登録したスロット番号と選択ハッシュ値とを対応付ける。
また、プロセッサ121aは、コンテナメタ情報213に新たなスロット番号を登録し、登録したスロット番号と、選択ハッシュ値に対応するデータブロックの格納先となる物理アドレス(この場合はUDC202内の位置を示すアドレス)とを対応付ける。また、プロセッサ121aは、コンテナメタ情報213に登録したスロット番号と、データブロックの圧縮サイズとを対応付ける。
(S109)プロセッサ121aは、ハッシュ値を選択し終えたか否かを判定する。未選択のハッシュ値がある場合、処理はS102へと進む。一方、ハッシュ値を選択し終えた場合、処理はS110へと進む。
(S110)プロセッサ121aは、書き込み要求に対する応答として、WRITEデータの書き込みが完了した旨の通知をホスト装置101に送信する。S110の処理が完了すると、図10に示した一連の処理は終了する。
(READ時の処理)
次に、図11を参照しながら、READ時の処理の流れについて説明する。図11は、READ時の処理の流れを示したフロー図である。
(S111)ホスト装置101からREADデータの読み出し要求を受けたとき、プロセッサ121aは、READデータがUDC202にあるか否かを判定する。
例えば、プロセッサ121aは、ブロックマップ212及びコンテナメタ情報213を参照し、読み出し元の論理アドレスに対応する物理アドレスがUDC202に対応するか、記憶装置123に対応するかを判定する。
読み出し元の論理アドレスがUDC202の物理アドレスに対応する場合、プロセッサ121aは、READデータがUDC202にあると判定する。一方、読み出し元の論理アドレスが記憶装置123の物理アドレスに対応する場合、プロセッサ121aは、READデータが記憶装置123にあると判定する。
READデータがUDC202にある場合、処理はS113へと進む。一方、READデータがUDC202にない場合(記憶装置123にある場合)、処理はS112へと進む。
(S112)プロセッサ121aは、READデータを記憶装置123から読み出してUDC202に格納する。例えば、プロセッサ121aは、ブロックマップ212及びコンテナメタ情報213を参照し、読み出し元の論理アドレスに対応する物理アドレスを特定する。そして、プロセッサ121aは、特定した物理アドレスにある圧縮データを読み出してUDC202に格納する。
(S113)プロセッサ121aは、UDC202に格納した圧縮データに含まれる圧縮後のデータブロックを伸長して圧縮前のデータブロックを復元する。また、プロセッサ121aは、復元した複数のデータブロックを結合してREADデータを復元する。そして、プロセッサ121aは、読み出し要求に対する応答として、復元したREADデータをホスト装置101に送信する。
(S114)プロセッサ121aは、圧縮データに含まれるハッシュ値を取得し、取得したハッシュ値をRHC204に格納する(図8を参照)。S114の処理が完了すると、図11に示した一連の処理は終了する。
以上、ストレージ装置102による処理の流れについて説明した。上記のように、読み出し時にハッシュ値を保存しておき、書き込み時に保存したハッシュ値と読み出し時に保存したハッシュ値とを参照して重複排除を実施することで重複排除の効率を改善することができる。
以上、第2実施形態について説明した。
なお、上述したホスト装置10、101、ストレージ制御装置20、ストレージ装置102(CM121、CM122)の機能は、これらの装置に搭載されるプロセッサにプログラムを実行させることで実現できる。
上記プログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc-Read Only Memory)、CD−R(Recordable)/RW(Re-Writable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラム又はサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される度に、逐次、サーバコンピュータから受け取ったプログラムに従った処理を実行することもできる。
<3.付記>
以上説明した実施形態に関し、さらに以下の付記を開示する。
(付記1) 物理記憶領域に書き込まれるデータブロックのハッシュ値が格納される第1のキャッシュ領域と、前記物理記憶領域から読み出されるデータブロックのハッシュ値が格納される第2のキャッシュ領域とを有するキャッシュメモリと、
前記物理記憶領域に対するデータブロックの書き込み要求を受け付けたとき、前記第1のキャッシュ領域又は前記第2のキャッシュ領域に該データブロックのハッシュ値と同じハッシュ値があるかを判定し、前記同じハッシュ値がある場合には該データブロックの重複排除を実施する制御部と
を有する、ストレージ制御装置。
(付記2) 前記制御部は、前記書き込み要求を受け付けたとき、前記第1のキャッシュ領域を対象に該データブロックのハッシュ値と同じハッシュ値の検索を実施し、前記同じハッシュ値がない場合には前記第2のキャッシュ領域を対象に前記同じハッシュ値の検索を実施する
付記1に記載のストレージ制御装置。
(付記3) 前記制御部は、新たなハッシュ値の格納により前記第1のキャッシュ領域が溢れる場合に前記第1のキャッシュ領域のハッシュ値を古い順に削除する
付記2に記載のストレージ制御装置。
(付記4) 前記物理記憶領域に書き込まれるデータブロックには該データブロックのハッシュ値が付加されており、
前記制御部は、前記物理記憶領域から読み出したデータブロックに付加されているハッシュ値を取得し、取得した該ハッシュ値を前記第2のキャッシュ領域に格納する
付記3に記載のストレージ制御装置。
(付記5) 物理記憶領域に書き込まれるデータブロックのハッシュ値を第1のキャッシュ領域に格納し、前記物理記憶領域から読み出されるデータブロックのハッシュ値を第2のキャッシュ領域に格納し、
前記物理記憶領域に対するデータブロックの書き込み要求を受け付けたとき、前記第1のキャッシュ領域又は前記第2のキャッシュ領域に該データブロックのハッシュ値と同じハッシュ値があるかを判定し、前記同じハッシュ値がある場合には該データブロックの重複排除を実施する
処理をコンピュータに実行させる、プログラム。
(付記6) コンピュータが、
物理記憶領域に書き込まれるデータブロックのハッシュ値を第1のキャッシュ領域に格納し、前記物理記憶領域から読み出されるデータブロックのハッシュ値を第2のキャッシュ領域に格納し、
前記物理記憶領域に対するデータブロックの書き込み要求を受け付けたとき、前記第1のキャッシュ領域又は前記第2のキャッシュ領域に該データブロックのハッシュ値と同じハッシュ値があるかを判定し、前記同じハッシュ値がある場合には該データブロックの重複排除を実施する
重複排除方法。
(付記7) 前記書き込み要求を受け付けたとき、前記第1のキャッシュ領域を対象に該データブロックのハッシュ値と同じハッシュ値の検索を実施し、前記同じハッシュ値がない場合には前記第2のキャッシュ領域を対象に前記同じハッシュ値の検索を実施する
処理をコンピュータに実行させる、付記5に記載のプログラム。
(付記8) 新たなハッシュ値の格納により前記第1のキャッシュ領域が溢れる場合に前記第1のキャッシュ領域のハッシュ値を古い順に削除する
処理をコンピュータに実行させる、付記7に記載のプログラム。
(付記9) 前記物理記憶領域に書き込まれるデータブロックには該データブロックのハッシュ値が付加されており、
前記物理記憶領域から読み出したデータブロックに付加されているハッシュ値を取得し、取得した該ハッシュ値を前記第2のキャッシュ領域に格納する
処理をコンピュータに実行させる、付記8に記載のプログラム。
10 ホスト装置
20 ストレージ制御装置
21 キャッシュメモリ
21a 第1のキャッシュ領域
21b 第2のキャッシュ領域
21c、31 物理記憶領域
22 制御部
23 記憶部
30 記憶装置
32、33、34 記録媒体
41、42 論理記憶領域
dBLK#1、…、dBLK#5 データブロック
H#1、…、H#5 ハッシュ値

Claims (6)

  1. 物理記憶領域に書き込まれるデータブロックのハッシュ値が格納される第1のキャッシュ領域と、前記物理記憶領域から読み出されるデータブロックのハッシュ値が格納される第2のキャッシュ領域とを有するキャッシュメモリと、
    前記物理記憶領域に対するデータブロックの書き込み要求を受け付けたとき、前記第1のキャッシュ領域又は前記第2のキャッシュ領域に該データブロックのハッシュ値と同じハッシュ値があるかを判定し、前記同じハッシュ値がある場合には該データブロックの重複排除を実施する制御部と
    を有する、ストレージ制御装置。
  2. 前記制御部は、前記書き込み要求を受け付けたとき、前記第1のキャッシュ領域を対象に該データブロックのハッシュ値と同じハッシュ値の検索を実施し、前記同じハッシュ値がない場合には前記第2のキャッシュ領域を対象に前記同じハッシュ値の検索を実施する
    請求項1に記載のストレージ制御装置。
  3. 前記制御部は、新たなハッシュ値の格納により前記第1のキャッシュ領域が溢れる場合に前記第1のキャッシュ領域のハッシュ値を古い順に削除する
    請求項2に記載のストレージ制御装置。
  4. 前記物理記憶領域に書き込まれるデータブロックには該データブロックのハッシュ値が付加されており、
    前記制御部は、前記物理記憶領域から読み出したデータブロックに付加されているハッシュ値を取得し、取得した該ハッシュ値を前記第2のキャッシュ領域に格納する
    請求項3に記載のストレージ制御装置。
  5. 物理記憶領域に書き込まれるデータブロックのハッシュ値を第1のキャッシュ領域に格納し、前記物理記憶領域から読み出されるデータブロックのハッシュ値を第2のキャッシュ領域に格納し、
    前記物理記憶領域に対するデータブロックの書き込み要求を受け付けたとき、前記第1のキャッシュ領域又は前記第2のキャッシュ領域に該データブロックのハッシュ値と同じハッシュ値があるかを判定し、前記同じハッシュ値がある場合には該データブロックの重複排除を実施する
    処理をコンピュータに実行させる、プログラム。
  6. コンピュータが、
    物理記憶領域に書き込まれるデータブロックのハッシュ値を第1のキャッシュ領域に格納し、前記物理記憶領域から読み出されるデータブロックのハッシュ値を第2のキャッシュ領域に格納し、
    前記物理記憶領域に対するデータブロックの書き込み要求を受け付けたとき、前記第1のキャッシュ領域又は前記第2のキャッシュ領域に該データブロックのハッシュ値と同じハッシュ値があるかを判定し、前記同じハッシュ値がある場合には該データブロックの重複排除を実施する
    重複排除方法。
JP2017151180A 2017-08-04 2017-08-04 ストレージ制御装置、プログラム、及び重複排除方法 Pending JP2019028954A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017151180A JP2019028954A (ja) 2017-08-04 2017-08-04 ストレージ制御装置、プログラム、及び重複排除方法
US16/036,080 US20190042134A1 (en) 2017-08-04 2018-07-16 Storage control apparatus and deduplication method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017151180A JP2019028954A (ja) 2017-08-04 2017-08-04 ストレージ制御装置、プログラム、及び重複排除方法

Publications (1)

Publication Number Publication Date
JP2019028954A true JP2019028954A (ja) 2019-02-21

Family

ID=65229931

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017151180A Pending JP2019028954A (ja) 2017-08-04 2017-08-04 ストレージ制御装置、プログラム、及び重複排除方法

Country Status (2)

Country Link
US (1) US20190042134A1 (ja)
JP (1) JP2019028954A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11210230B2 (en) * 2020-04-30 2021-12-28 EMC IP Holding Company LLC Cache retention for inline deduplication based on number of physical blocks with common fingerprints among multiple cache entries
US11256577B2 (en) 2020-05-30 2022-02-22 EMC IP Holding Company LLC Selective snapshot creation using source tagging of input-output operations
US11436123B2 (en) 2020-06-30 2022-09-06 EMC IP Holding Company LLC Application execution path tracing for inline performance analysis
US11487664B1 (en) 2021-04-21 2022-11-01 EMC IP Holding Company LLC Performing data reduction during host data ingest

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110276744A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US20120272008A1 (en) * 2011-04-22 2012-10-25 Hitachi Computer Peripherals Co., Ltd. Storage system and its data processing method
US20130124794A1 (en) * 2010-07-27 2013-05-16 International Business Machines Corporation Logical to physical address mapping in storage systems comprising solid state memory devices
US20130151759A1 (en) * 2011-12-08 2013-06-13 Samsung Electronics Co., Ltd. Storage device and operating method eliminating duplicate data storage
WO2013084571A1 (ja) * 2011-12-08 2013-06-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報機器間のデータ転送のデータ欠落を検出する方法
US20130318050A1 (en) * 2012-05-24 2013-11-28 International Business Machines Corporation Data depulication using short term history
JP2014178734A (ja) * 2013-03-13 2014-09-25 Nippon Telegr & Teleph Corp <Ntt> キャッシュ装置、データ書込方法及びプログラム
JP2014203362A (ja) * 2013-04-08 2014-10-27 富士通株式会社 ストレージ装置及びストレージ制御方法
US20140324793A1 (en) * 2013-04-30 2014-10-30 Cloudfounders Nv Method for Layered Storage of Enterprise Data
WO2014188515A1 (ja) * 2013-05-21 2014-11-27 株式会社日立製作所 ストレージシステムおよびストレージシステムの制御方法
JP2015528928A (ja) * 2012-10-31 2015-10-01 株式会社日立製作所 ストレージ装置及びストレージ装置の制御方法
JP2017049806A (ja) * 2015-09-02 2017-03-09 富士通株式会社 ストレージ制御装置およびストレージ制御プログラム

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110276744A1 (en) * 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US20130124794A1 (en) * 2010-07-27 2013-05-16 International Business Machines Corporation Logical to physical address mapping in storage systems comprising solid state memory devices
US20120272008A1 (en) * 2011-04-22 2012-10-25 Hitachi Computer Peripherals Co., Ltd. Storage system and its data processing method
US20130151759A1 (en) * 2011-12-08 2013-06-13 Samsung Electronics Co., Ltd. Storage device and operating method eliminating duplicate data storage
WO2013084571A1 (ja) * 2011-12-08 2013-06-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報機器間のデータ転送のデータ欠落を検出する方法
US20130318050A1 (en) * 2012-05-24 2013-11-28 International Business Machines Corporation Data depulication using short term history
JP2015528928A (ja) * 2012-10-31 2015-10-01 株式会社日立製作所 ストレージ装置及びストレージ装置の制御方法
JP2014178734A (ja) * 2013-03-13 2014-09-25 Nippon Telegr & Teleph Corp <Ntt> キャッシュ装置、データ書込方法及びプログラム
JP2014203362A (ja) * 2013-04-08 2014-10-27 富士通株式会社 ストレージ装置及びストレージ制御方法
US20140324793A1 (en) * 2013-04-30 2014-10-30 Cloudfounders Nv Method for Layered Storage of Enterprise Data
WO2014188515A1 (ja) * 2013-05-21 2014-11-27 株式会社日立製作所 ストレージシステムおよびストレージシステムの制御方法
JP2017049806A (ja) * 2015-09-02 2017-03-09 富士通株式会社 ストレージ制御装置およびストレージ制御プログラム

Also Published As

Publication number Publication date
US20190042134A1 (en) 2019-02-07

Similar Documents

Publication Publication Date Title
US10430286B2 (en) Storage control device and storage system
US10521131B2 (en) Storage apparatus and storage control apparatus
US7716183B2 (en) Snapshot preserved data cloning
US10031703B1 (en) Extent-based tiering for virtual storage using full LUNs
US8145843B2 (en) Deduplication of data on disk devices using low-latency random read memory
US9146877B2 (en) Storage system capable of managing a plurality of snapshot families and method of snapshot family based read
US10176212B1 (en) Top level tier management
EP3399444A1 (en) Optimized record lookups
US20200159419A1 (en) System and method for optimization of global data placement to mitigate wear-out of write cache and nand flash
US9842057B2 (en) Storage apparatus, storage system, and data read method
US11392614B2 (en) Techniques for performing offload copy operations
KR101369813B1 (ko) 광 디스크 저장 시스템에 저장된 미디어에의 액세스, 압축 및 추적
US8862819B2 (en) Log structure array
JP2019028954A (ja) ストレージ制御装置、プログラム、及び重複排除方法
US11169968B2 (en) Region-integrated data deduplication implementing a multi-lifetime duplicate finder
US10078467B2 (en) Storage device, computer readable recording medium, and storage device control method
CN101477447A (zh) 磁盘快照方法与装置
US10621059B2 (en) Site recovery solution in a multi-tier storage environment
US10365846B2 (en) Storage controller, system and method using management information indicating data writing to logical blocks for deduplication and shortened logical volume deletion processing
JP2019036130A (ja) ストレージ制御装置、及びプログラム
US11474750B2 (en) Storage control apparatus and storage medium
US8688916B2 (en) Storage system and data processing method using cache memory
US20230176743A1 (en) Handling data with different lifetime characteristics in stream-aware data storage equipment
US20230418798A1 (en) Information processing apparatus and information processing method
US11307774B2 (en) Storage control device, non-transitory computer-readable storage medium, and storage control method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200514

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20200529

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20200529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210202

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210810