JP2016126632A - ストレージ装置、ストレージシステム、データ読み出し方法、及びストレージプログラム - Google Patents

ストレージ装置、ストレージシステム、データ読み出し方法、及びストレージプログラム Download PDF

Info

Publication number
JP2016126632A
JP2016126632A JP2015001262A JP2015001262A JP2016126632A JP 2016126632 A JP2016126632 A JP 2016126632A JP 2015001262 A JP2015001262 A JP 2015001262A JP 2015001262 A JP2015001262 A JP 2015001262A JP 2016126632 A JP2016126632 A JP 2016126632A
Authority
JP
Japan
Prior art keywords
data
storage
information
cache
control unit
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
JP2015001262A
Other languages
English (en)
Inventor
荻原 一隆
Kazutaka Ogiwara
一隆 荻原
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 JP2015001262A priority Critical patent/JP2016126632A/ja
Priority to US14/941,113 priority patent/US9842057B2/en
Priority to EP15195605.9A priority patent/EP3043267A1/en
Publication of JP2016126632A publication Critical patent/JP2016126632A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • 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
    • 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
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】読み出し要求に対する応答速度を向上すること。
【解決手段】データが格納される記憶装置30及び該データの一時記憶領域として利用されるキャッシュ装置40に接続されたストレージ装置20であって、記憶装置30に格納されたデータの記憶場所と該データの内容に関する内容情報とを対応付ける場所情報21bと、キャッシュ装置40に格納されたデータに対応する内容情報を含むキャッシュ情報21aと、を記憶する記憶部21と、記憶場所を指定してデータの読み出しを要求する読み出し要求RQを受け付けたとき、該読み出し要求RQで指定された記憶場所に対応する内容情報を特定し、該内容情報がキャッシュ情報21aに含まれる場合には該データをキャッシュ装置40から読み出して応答する制御部22とを有する、ストレージ装置20が提供される。
【選択図】図1

Description

本発明は、ストレージ装置、ストレージシステム、データ読み出し方法、及びストレージプログラムに関する。
HDD(Hard Disk Drive)などの記録媒体を複数接続し、RAID(Redundant Arrays of Inexpensive Disks)技術などを利用して冗長化したディスクアレイと、ディスクアレイを制御するストレージ装置とを含むストレージシステムが広く利用されている。ストレージ装置は、仮想的な記憶領域(仮想ボリューム)をディスクアレイ上の記憶領域(物理ボリューム)に割り当て、仮想ボリュームを介してデータの読み出し処理及び書き込み処理を制御する。
ストレージ装置は、1つの仮想ボリュームを複数の論理ボリュームに分割し、論理ボリュームを単位としてデータを管理することがある。また、ストレージ装置は、論理ボリュームとは異なる論理的なデータ格納領域(コンテナ)を設定し、コンテナを利用してデータを管理することがある。なお、コンテナは、チャンクと呼ばれることもある。
上記のようなストレージシステムにおいて、複数の記憶領域に同じデータが重複して格納されている場合に、一部の記憶領域に重複して格納されているデータを除去して記憶領域の空き容量を増加させる技術(重複除去)がある。重複除去を実施することで、ディスクアレイの記憶領域を効率良く利用することができる。
なお、オンラインストレージサービスにデータをアップロードするシステムにおいて、アップロードの対象を複数の構成ブロックで管理し、構成ブロックの重複を排除した上でアップロードを実施する技術が提案されている。このシステムは、構成ブロックの重複度を示す参照カウントを利用して重複排除を実現する。また、ハッシュコードを付したデータを論理ボリュームに記憶しておき、重複除去の際に、ハッシュコードを比較して重複データを検出する技術が提案されている。
特開2012−141738号公報 特開2009−251725号公報
ストレージシステムは、データの読み出し要求に応じてストレージ装置がディスクアレイから読み出したデータを一時的に記憶するキャッシュ装置を含むことがある。キャッシュ装置は、ディスクアレイに比べてデータの読み出し速度が速い。そのため、ストレージ装置は、データの読み出し要求に応じてキャッシュ装置に格納されているデータを応答できれば、応答時間を短縮することができる。
読み出し処理の対象となるデータは、読み出し要求の中で指定されているデータの記憶場所(論理ボリューム上のアドレスなど)に基づいてストレージ装置が特定する。つまり、ストレージ装置は、異なる論理ボリュームに格納されているが、内容は同じ複数のデータをそれぞれ区別する。そのため、これまでのストレージ装置は、読み出し処理の対象となるデータと同じ内容のデータがキャッシュ装置にあっても、両データの記憶場所が異なる場合にはディスクアレイからデータを読み出して応答していた。
これに対し、読み出し要求の中で指定されているデータとは記憶場所が異なるけれど同じ内容を有するデータがキャッシュ装置にある場合に、そのデータを読み出して応答することができれば、読み出し要求に対して高速に応答できる機会が増加する。その結果、ストレージシステムの性能向上が期待できる。
そこで、1つの側面によれば、本発明の目的は、読み出し要求に対する応答速度を向上することが可能なストレージ装置、ストレージシステム、データ読み出し方法、及びストレージプログラムを提供することにある。
本開示の1つの側面によれば、データが格納される記憶装置及び該データの一時記憶領域として利用されるキャッシュ装置に接続されたストレージ装置が提供される。このストレージ装置は、記憶装置に格納されたデータの記憶場所と該データの内容に関する内容情報とを対応付ける場所情報と、キャッシュ装置に格納されたデータに対応する内容情報を含むキャッシュ情報と、を記憶する記憶部と、記憶場所を指定してデータの読み出しを要求する読み出し要求を受け付けたとき、該読み出し要求で指定された記憶場所に対応する内容情報を特定し、該内容情報がキャッシュ情報に含まれる場合には該データをキャッシュ装置から読み出して応答する制御部とを有する。
本発明によれば、読み出し要求に対する応答速度が向上する。
第1実施形態に係るストレージシステムの一例を示した図である。 第2実施形態に係るストレージシステムの一例を示した図である。 第2実施形態に係るホスト装置の機能を実現可能なハードウェアの一例を示した図である。 第2実施形態に係る制御装置が有する機能の一例を示したブロック図である。 第2実施形態に係るコンテナ情報について説明するための第1の図である。 第2実施形態に係るコンテナ情報について説明するための第2の図である。 第2実施形態に係るコンテナ情報について説明するための第3の図である。 第2実施形態に係るブロックマップについて説明するための図である。 第2実施形態に係るハッシュテーブルについて説明するための図である。 第2実施形態に係るリード処理の流れを示した第1のフロー図である。 第2実施形態に係るリード処理の流れを示した第2のフロー図である。 第2実施形態に係る新規レコードの登録処理の流れを示したフロー図である。 第2実施形態に係るライト処理の流れを示した第1のフロー図である。 第2実施形態に係るライト処理の流れを示した第2のフロー図である。 第2実施形態に係るインクリメント処理の流れを示したフロー図である。 第2実施形態に係るデクリメント処理の流れを示したフロー図である。 第2実施形態に係るGC処理の流れを示したフロー図である。 第2実施形態の一変形例に係るキャッシュ情報について説明するための図である。 第2実施形態の一変形例に係るブロックマップについて説明するための図である。
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
<1.第1実施形態>
図1を参照しながら、第1実施形態について説明する。図1は、第1実施形態に係るストレージシステムの一例を示した図である。図1に示したストレージシステム5は、第1実施形態に係るストレージシステムの一例である。
図1に示すように、ストレージシステム5は、ホスト装置10、ストレージ装置20、記憶装置30、及びキャッシュ装置40を有する。
ホスト装置10は、記憶装置30に格納されたデータの読み出し処理や、記憶装置30に対するデータの書き込み処理をストレージ装置20に要求するコンピュータである。
ストレージ装置20は、ホスト装置10、記憶装置30、及びキャッシュ装置40に接続されている。ストレージ装置20は、ホスト装置10から受けたデータの読み出し要求に応じて、読み出し対象のデータをホスト装置10に応答する。また、ストレージ装置20は、ホスト装置10から受けたデータの書き込み要求に応じて、書き込み対象のデータを記憶装置30に格納する。
記憶装置30は、HDDやSSD(Solid State Drive)などの記録媒体を有する装置である。例えば、複数のHDDを接続し、RAID技術を利用して冗長化したディスクアレイは、記憶装置30の一例である。
キャッシュ装置40は、記録媒体として、HDDやSSDなどの不揮発性メモリや、DRAM(Dynamic Random Access Memory)などの揮発性メモリを有し、データの読み出し速度が記憶装置30より高速な装置である。キャッシュ装置40は、記憶装置30から読み出されたデータを一時的に格納する一時記憶領域としてストレージ装置20により利用される。なお、キャッシュ装置40は、ストレージ装置20と一体に形成されていてもよい。
ストレージ装置20は、記憶部21及び制御部22を有する。
記憶部21は、RAM(Random Access Memory)などの揮発性記憶装置、或いは、HDDやフラッシュメモリなどの不揮発性記憶装置である。制御部22は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサである。但し、制御部22は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路であってもよい。制御部22は、例えば、記憶部21又は他のメモリに記憶されたプログラムを実行する。
記憶部21は、キャッシュ装置40に格納されたデータに対応する内容情報を含むキャッシュ情報21aを記憶する。内容情報は、例えば、データのフィンガープリントである。フィンガープリントとしては、例えば、ハッシュ値が利用される。
ハッシュ値は、例えば、SHA(Secure Hash Algorithm)−1やMD5(Message Digest Algorithm 5)などのハッシュ関数を利用して計算できる。SHA−1は160ビットのハッシュ値を出力する。MD5は128ビットのハッシュ値を出力する。図1の例では、データdのハッシュ値がfp(d)と表現されている。
記憶部21は、記憶装置30に格納されたデータの記憶場所と該データの内容に関する内容情報とを対応付ける場所情報21bを記憶する。データの記憶場所は、例えば、記憶装置30を対象に設定された論理ボリュームのアドレスなどである。
制御部22は、記憶場所を指定してデータの読み出しを要求する読み出し要求RQをホスト装置10から受け付けたとき、場所情報21bを参照し、該読み出し要求RQで指定された記憶場所に対応する内容情報を特定する。そして、制御部22は、キャッシュ情報21aを参照し、特定した内容情報がキャッシュ情報21aに含まれる場合には該データをキャッシュ装置40から読み出して応答する。
図1の例は、記憶場所ADR1、ADR3にそれぞれデータD1が格納され、記憶場所ADR2にデータD2が格納された状況を示している。なお、図1(C)にある表記「D1@ADR1」は、記憶場所ADR1に格納されているデータD1を示す。「D2@ADR2」、「D1@ADR3」についても同様である。また、図1の例では、キャッシュ装置40にデータD1がキャッシュされている。このデータD1は、過去に記憶場所ADR1から読み出された際にキャッシュされたものである。
この場合、図1(A)に示すように、記憶部21は、データD1と、データD1の内容情報fp(D1)とを対応付けるキャッシュ情報21aを有する。また、記憶部21は、記憶場所ADR1と内容情報fp(D1)、記憶場所ADR2と内容情報fp(D2)、及び、記憶場所ADR3と内容情報fp(D1)をそれぞれ対応付ける場所情報21bを有する。
ケース(1):制御部22は、場所情報ADR1を指定する読み出し要求RQをホスト装置10から受け付けた場合(図1(B)(1))、場所情報21bから記憶場所ADR1に対応する内容情報fp(D1)を特定する。そして、制御部22は、キャッシュ情報21aに内容情報fp(D1)があるか判定する。この例ではキャッシュ情報21aに内容情報fp(D1)が含まれるため、制御部22は、内容情報fp(D1)に対応するデータD1をキャッシュ装置40から読み出し、データD1を含む応答RPをホスト装置10に返す。
ケース(2):制御部22は、場所情報ADR2を指定する読み出し要求RQをホスト装置10から受け付けた場合(図1(B)(2))、場所情報21bから記憶場所ADR2に対応する内容情報fp(D2)を特定する。そして、制御部22は、キャッシュ情報21aに内容情報fp(D2)があるか判定する。この例ではキャッシュ情報21aに内容情報fp(D2)が含まれないため、制御部22は、場所情報ADR2をもとに記憶装置30からデータD2を読み出し、データD2を含む応答RPをホスト装置10に返す。
ケース(3):制御部22は、場所情報ADR3を指定する読み出し要求RQをホスト装置10から受け付けた場合(図1(B)(3))、場所情報21bから記憶場所ADR3に対応する内容情報fp(D1)を特定する。そして、制御部22は、キャッシュ情報21aに内容情報fp(D1)があるか判定する。この例ではキャッシュ情報21aに内容情報fp(D1)が含まれるため、制御部22は、内容情報fp(D1)に対応するデータD1をキャッシュ装置40から読み出し、データD1を含む応答RPをホスト装置10に返す。
上記のキャッシュ情報21a及び場所情報21bを利用することで、制御部22は、上記ケース(3)のように、記憶場所は異なるが同じ内容のキャッシュ済みデータを用いてホスト装置10に応答することができる(図1の符号a)。そのため、記憶装置30からデータを読み出してホスト装置10に応答する場合(図1の符号b)に比べ、読み出し時間が短くなる分だけ読み出し要求RQから応答RPまでの時間が短縮される。つまり、ストレージシステム5の性能が向上する。
以上、第1実施形態について説明した。
<2.第2実施形態>
次に、第2実施形態について説明する。
[2−1.システム]
第2実施形態に係るストレージシステムについて説明する。図2は、第2実施形態に係るストレージシステムの一例を示した図である。
図2に示すように、第2実施形態に係るストレージシステムは、ホスト装置100、制御装置200、及び記憶装置300を有する。
ホスト装置100は、ネットワークを介して制御装置200に接続されている。ネットワークは、有線又は無線の通信回線を組み合わせた通信網である。ホスト装置100は、記憶装置300に格納されたデータの読み出し処理や、記憶装置300に対するデータの書き込み処理を制御装置200に要求するコンピュータである。
制御装置200は、キャッシュ装置210及び記憶装置300に接続されている。制御装置200は、ホスト装置100から受けたデータの読み出し要求に応じて、読み出し対象のデータをホスト装置100に応答する。また、制御装置200は、ホスト装置100から受けたデータの書き込み要求に応じて、書き込み対象のデータを記憶装置300に格納する。
キャッシュ装置210は、記録媒体として、HDDやSSDなどの不揮発性メモリや、DRAMなどの揮発性メモリを有し、データの読み出し速度が記憶装置300より高速な装置である。キャッシュ装置210は、記憶装置300から読み出されたデータを一時的に格納する一時記憶領域として制御装置200により利用される。なお、キャッシュ装置210は、制御装置200と一体に形成されていてもよい。
記憶装置300は、管理装置310、ディスク320a、320b、320c、320d、及びキャッシュディスク330を有する。ディスク320a、320b、320c、320dは、HDDやSSDなどの記録媒体である。また、ディスク320a、320b、320c、320dは相互に接続されている。キャッシュディスク330は、高速なアクセス性能を有する記録媒体(HDDやSSDなどの不揮発性メモリや、DRAMなどの揮発性メモリ)である。
管理装置310は、ディスク320a、320b、320c、320dの動作を制御し、ディスク320a、320b、320c、320dの組をディスクアレイとして動作させる。また、管理装置310は、ディスクアレイから読み出したデータをキャッシュディスク330にキャッシュし、制御装置200から同じデータに対する読み出し要求を受けた場合にキャッシュディスク330から読み出したデータを制御装置200に応答する。
以上、第2実施形態に係るストレージシステムについて説明した。説明の都合上、以下では図2に例示したストレージシステムを想定して説明を進めるが、第2実施形態に係る技術を適用可能なストレージシステムは図2の例に限定されない。例えば、ホスト装置100と制御装置200とが直接接続されていてもよいし、キャッシュディスク330が省略されていてもよい。このような変形例も第2実施形態の技術的範囲に属する。
[2−2.ハードウェア]
ここで、図3を参照しながら、ホスト装置100の機能を実現可能なハードウェアについて説明する。図3は、第2実施形態に係るホスト装置の機能を実現可能なハードウェアの一例を示した図である。
ホスト装置100が有する機能は、例えば、図3に示す情報処理装置のハードウェア資源を用いて実現することが可能である。つまり、ホスト装置100が有する機能は、コンピュータプログラムを用いて図3に示すハードウェアを制御することにより実現される。
図3に示すように、このハードウェアは、主に、CPU902と、ROM(Read Only Memory)904と、RAM906と、ホストバス908と、ブリッジ910とを有する。さらに、このハードウェアは、外部バス912と、インターフェース914と、入力部916と、出力部918と、記憶部920と、ドライブ922と、接続ポート924と、通信部926とを有する。
CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータなどを格納する記憶装置の一例である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に変化する各種パラメータなどが一時的又は永続的に格納される。
これらの要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。また、入力部916としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、ボタン、スイッチ、及びレバーなどが用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラが用いられることもある。
出力部918としては、例えば、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)、PDP(Plasma Display Panel)、又はELD(Electro-Luminescence Display)などのディスプレイ装置が用いられる。また、出力部918として、スピーカやヘッドホンなどのオーディオ出力装置、又はプリンタなどが用いられることもある。つまり、出力部918は、情報を視覚的又は聴覚的に出力することが可能な装置である。
記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、HDDなどの磁気記憶デバイスが用いられる。また、記憶部920として、SSDやRAMディスクなどの半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイスなどが用いられてもよい。
ドライブ922は、着脱可能な記録媒体であるリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどが用いられる。
接続ポート924は、例えば、USB(Universal Serial Bus)ポート、IEEE1394ポート、SCSI(Small Computer System Interface)、RS−232Cポート、又は光オーディオ端子など、外部接続機器930を接続するためのポートである。外部接続機器930としては、例えば、プリンタなどが用いられる。
通信部926は、ネットワーク932に接続するための通信デバイスである。通信部926としては、例えば、有線又は無線LAN(Local Area Network)用の通信回路、WUSB(Wireless USB)用の通信回路、光通信用の通信回路やルータ、ADSL(Asymmetric Digital Subscriber Line)用の通信回路やルータ、携帯電話ネットワーク用の通信回路などが用いられる。通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークであり、例えば、インターネット、LAN、放送網、衛星通信回線などを含む。
以上、ホスト装置100の機能を実現可能なハードウェアについて説明した。制御装置200及び管理装置310が有する機能も図3に例示したハードウェアを利用して実現することができる。そのため、制御装置200及び管理装置310のハードウェアについては説明を省略する。
[2−3.機能]
次に、図4〜図9を参照しながら、制御装置200の機能について説明する。
図4は、第2実施形態に係る制御装置が有する機能の一例を示したブロック図である。
図4に示すように、制御装置200は、記憶部201、I/O制御部202、FP算出部203、BM管理部204、RC制御部205、及びコンテナ制御部206を有する。
なお、記憶部201の機能は、上述したRAM906や記憶部920などを用いて実現できる。I/O制御部202、FP算出部203、BM管理部204、RC制御部205、及びコンテナ制御部206の機能は、上述したCPU902などを用いて実現できる。
記憶部201は、コンテナ情報201a、ブロックマップ201b、及びハッシュテーブル201cを有する。以下、これらの情報について説明する。
(コンテナ情報)
まず、図5〜図7を参照しながら、コンテナ情報201aについて説明する。
図5は、第2実施形態に係るコンテナ情報について説明するための第1の図である。図6は、第2実施形態に係るコンテナ情報について説明するための第2の図である。図7は、第2実施形態に係るコンテナ情報について説明するための第3の図である。
図5に示すように、制御装置200は、仮想的な記憶領域(仮想ボリューム)をディスクアレイ上の記憶領域(物理ボリューム)に割り当て、仮想ボリュームを介してデータの読み出し処理及び書き込み処理を制御する。また、制御装置200は、1つの仮想ボリュームを複数の論理ボリュームに分割し、論理ボリュームを単位としてデータを管理する。図5の例では、論理ボリューム#1、#2が設定されている。なお、第2実施形態では、重複除去の対象となる論理ボリュームを想定している。
また、制御装置200は、論理ボリュームとは異なる論理的なデータ格納領域(コンテナ)を設定し、コンテナを利用してデータを管理する。各コンテナは、コンテナID(CiD)を用いて識別される。図5の例では、CiDがCiD1、CiD2、CiD3のコンテナが設定されている。
各コンテナは、インデックス領域と、実データ格納領域とを有する。実データ格納領域は、データが格納される記憶領域である。実データ格納領域には、圧縮後のデータが格納されてもよい。インデックス領域は、実データ格納領域に格納されたデータに関する情報が格納される記憶領域である。インデックス領域は、図6に示すように、複数の小領域(スロット)に分割されている。各スロットは、スロットID(SiD)を用いて識別される。
各スロットは、実データ格納領域に格納される個々のデータに対応する。また、スロットは、オフセット、フィンガープリント、及びカウンタ値が格納される。オフセットは、実データ格納領域におけるデータの格納位置を示す。フィンガープリントは、実データ格納領域に格納されたデータの内容に関する情報である。例えば、フィンガープリントは、SHA−1やMD5などのハッシュ関数にデータを入力して計算したハッシュ値である。
カウンタ値は、ゼロ以上の整数値である。カウント値の増減に関する処理については後述する。図6の例では、SiDがSiDmのスロットとデータAとが対応付けられている。SiDmのスロットに格納されたオフセットは、実データ格納領域におけるデータAの位置を示している。このスロットに格納されたフィンガープリントfpAはデータAのハッシュ値である。また、このスロットに格納されたカウンタ値はデータAの書き込み頻度に関する情報である。
コンテナ情報201aは、上記のようなコンテナに関する情報を含む。また、コンテナ情報201aは、図7に示すようなFPテーブルを含む。FPテーブルは、フィンガープリント(fp)とCiDとを対応付ける情報である。例えば、図6に例示したCiD1のコンテナにデータAのフィンガープリントfpAが含まれている場合、FPテーブルは、図7に示すようにfpAとCiD1とを対応付ける情報を有する。
図7の例では、データBのフィンガープリントfpBとCiD2、及び、データCのフィンガープリントfpCとCiD3が対応付けられている。このFPテーブルを利用すれば、fpBに対応するデータBの格納先(CiD2のコンテナ)、及びfpCに対応するデータCの格納先(CiD3のコンテナ)を特定することができる。
以上、コンテナ情報201aについて説明した。
(ブロックマップ)
次に、図8を参照しながら、ブロックマップ201bについて説明する。図8は、第2実施形態に係るブロックマップについて説明するための図である。
図8に示すように、ブロックマップ201bは、論理ボリューム(LV:Logical Volume)と、論理ボリューム上のアドレス(LBA:Logical Block Addressing)と、フィンガープリント(fp)と、CiDとを対応付ける情報である。ブロックマップ201bは、LV毎にLBA、fp、CiDを対応付けるレコードを有する。fpとデータとが対応することから、事実上、ブロックマップ201bは、LV上のデータの格納位置と、データが格納されたコンテナとを対応付けている。
図8の例示したブロックマップ201bでは、LV#1のLBA1にfpA及びCiD1が対応付けられている。つまり、fpAに対応するデータAは、LV#1上ではLBA1を先頭とする記憶領域に格納され、さらにCiD1を有するコンテナの実データ格納領域に格納されている。また、この例では、LV#1のLBA4にもfpA及びCiD1が対応付けられている。このことは、データAがLV#1のLBA4を先頭とする記憶領域に重複して格納されていることを示す。
図8の下段に、コンテナ上のデータとブロックマップ201bの各レコードとの対応関係を模式的に示した。BM(A)は、LV#1に関するブロックマップ201bのレコードを示す。一方、BM(B)は、LV#2に関するブロックマップ201bのレコードを示す。CiD1のデータAは、BM(A)に含まれる2つのfpAに対応する。つまり、LV#1上でデータAの重複が生じている。
CiD2のデータBは、BM(A)に含まれる1つのfpBと、BM(B)に含まれる1つのfpBとに対応する。つまり、LV#1、LV#2にまたがってデータBの重複が生じている。同様に、CiD3のデータCは、BM(A)に含まれる1つのfpCと、BM(B)に含まれる1つのfpCとに対応する。つまり、LV#1、LV#2にまたがってデータCの重複が生じている。このように、ブロックマップ201bを参照することで、データの重複を認識することができる。
以上、ブロックマップ201bについて説明した。
(ハッシュテーブル)
次に、図9を参照しながら、ハッシュテーブル201cについて説明する。図9は、第2実施形態に係るハッシュテーブルについて説明するための図である。
ハッシュテーブル201cは、キャッシュ装置210に格納済みのデータ(キャッシュ済みデータ)を特定するための情報である。例えば、ハッシュテーブル201cは、ハッシュ値とポインタとを登録したテーブルである。
ハッシュ値は、データのフィンガープリントをハッシュ関数(SHA−1やMD5など)に入力して計算した値である。図9の例では、ハッシュテーブル201cにハッシュ値h0、h1、…、h5が登録されている。ポインタは、これらのハッシュ値と、キャッシュ済みデータとをリンクさせる情報である。ポインタの欄が「null」となっているレコードは、キャッシュ済みデータとリンクしていないことを示す。
ハッシュテーブル201cに登録されるハッシュ値は、関連付けられるキャッシュ済みデータのフィンガープリントをハッシュ関数(SHA−1やMD5など)に入力して計算されるハッシュ値である。例えば、データAに関連付けられるハッシュ値h0は、データAのフィンガープリントfpAをハッシュ関数hに入力して計算されるハッシュ値h(fpA)である。ハッシュ値h4についても同様である。
キャッシュ済みデータは、連結情報、時系列情報、フィンガープリント、CiD、及びデータを含む。連結情報は、ハッシュテーブル201cのポインタと、キャッシュ済みデータとを関連付け、さらに、同じハッシュ値に関連付けられる他のキャッシュ済みデータとを関連付ける情報である。例えば、データXのフィンガープリントがデータAのフィンガープリントと同じ場合、ハッシュ値h0に、データAに関するキャッシュ済みデータと、データXに関するキャッシュ済みデータとが関連付けられる。
時系列情報は、キャッシュ済みデータの新旧を判断するための情報である。例えば、新たなデータをキャッシュ装置210に格納する際に空き容量が十分でない場合、時系列情報をもとに古いキャッシュ済みデータが削除され、新たなデータがキャッシュされる。また、時系列情報は、アクセス頻度などに応じて更新される。以下、連結情報の集合を探索リスト、時系列情報の集合を時系列リストと呼ぶ場合がある。
ハッシュテーブル201c、探索リスト、及び時系列リストを参照することで、ハッシュ値を用いたキャッシュ済みデータの検索が可能になる。同じハッシュ値をとるフィンガープリントがある場合、ハッシュ値を第1の検索キーとし、CiDを第2の検索キーとして線形探索することで所望のキャッシュ済みデータを検出することができる。
ここでは一例としてチェイン法によるデータの検索を実現するためのハッシュテーブル201c及びキャッシュ済みデータの例を示したが、フィンガープリントを探索キーにキャッシュ済みデータを探索できる方法が実現できれば、これに限定されない。例えば、ハッシュテーブル201cは、フィンガープリントと、CiDと、キャッシュ装置210におけるキャッシュ済みデータのアドレスとを対応付けたテーブルであってもよい。
以上、ハッシュテーブル201cについて説明した。
再び図4を参照する。
I/O制御部202は、ホスト装置100との間の入出力を制御する。FP算出部203は、記憶装置300に書き込まれるデータのフィンガープリントを算出する。BM管理部204は、ブロックマップ201bを管理する。
RC制御部205は、キャッシュ装置210に格納されたキャッシュ済みデータのレコードやハッシュテーブル201cを管理する。RC制御部205は、記憶装置300からのデータ読み出し時にデータをキャッシュ装置210に登録する。また、RC制御部205は、データの読み出し時に、LRU(Least Recently Used)やLFU(Least Frequently Used)などの方式でキャッシュ済みデータのレコードを更新する。
コンテナ制御部206は、コンテナ情報201aを管理し、コンテナを利用したデータの読み書き処理などを制御する。コンテナ制御部206は、登録処理部206a、RW制御部206b、カウンタ管理部206c、及びGC制御部206dを有する。
登録処理部206aは、コンテナの実データ格納領域に格納したデータのfpを対応するスロットに登録する。RW制御部206bは、コンテナへデータを書き込む処理及びコンテナからデータを読み出す処理を実行する。また、RW制御部206bは、コンテナにデータを書き込む際、インデックス領域のスロットに情報を登録する。
カウンタ管理部206cは、コンテナに格納されたデータへのアクセス頻度に応じてスロットに登録されたカウンタ値を更新する。GC制御部206dは、ガベージコレクション(GC)と呼ばれる処理を実行する。GCは、対象のコンテナに格納されているデータのうちカウンタ値が条件を満たすデータを全て新たなコンテナに移動させ、移動後に対象のコンテナを削除する処理である。
以上、制御部202の機能について説明した。以下、フロー図を参照しながら、上述した機能に基づく制御部202の動作について、さらに説明する。
[2−4.制御装置の動作]
制御装置200の動作について説明する。
(リード処理)
まず、図10及び図11を参照しながら、制御装置200が実行するリード処理の流れについて説明する。図10は、第2実施形態に係るリード処理の流れを示した第1のフロー図である。図11は、第2実施形態に係るリード処理の流れを示した第2のフロー図である。
(S101)I/O制御部202は、ホスト装置100からデータの読み出しを要求するRead要求を受信する。Read要求は、論理ボリューム(LV)を特定するための識別情報LViD、そのLVにおけるデータの先頭アドレスLBA、データ長Lengthを含む。I/O制御部202は、受信したRead要求に応じて、データ格納用のバッファ(例えば、記憶部201の記憶領域)を確保する。
(S102)I/O制御部202は、予め設定した単位サイズ(例えば、4KB)毎にデータ位置を示すLBAを特定し、Read要求を分割する。
例えば、Read要求が含むLBAが0KB目であり、Lengthが20KBである場合、4KB単位でデータを分割した場合の各分割データの先頭位置を示すLBAは、0KB目、4KB目、8KB目、12KB目、16KB目となる。
この場合、I/O制御部202は、1つ目の分割データに対応するRead要求のLViDをホスト装置100から受信したRead要求のLViDに設定し、LBAを0KB目、Lengthを4KBに設定する。同様に、I/O制御部202は、他の4つの分割データに対応するRead要求を生成する。つまり、I/O制御部202は、ホスト装置100から受信したRead要求を5つの分割データに対応するRead要求に分割する。
(S103)I/O制御部202は、ブロックマップ201bを参照し、分割したRead要求に含まれるLViD及びLBAに対応するfp及びCiDを特定する。I/O制御部202は、分割したRead要求の全てについて同様にfp及びCiDを特定し、特定したfpとCiDの組を並べたリストを作成する。
(S104)I/O制御部202は、リストの全項目を処理し終えたか否かを判定する。つまり、I/O制御部202は、リストに含まれるfpとCiDの組の全てについて、図11に示すS106以降の処理が完了しているか否かを判定する。全項目を処理し終えている場合、処理はS105へと進む。一方、未処理の項目がある場合、処理は図11のS106へと進む。
(S105)I/O制御部202は、バッファ内のデータをホスト装置100に応答する。S105の処理が完了すると、図10及び図11に示した一連の処理は終了する。
(S106)RC制御部205は、I/O制御部202からリストの入力を受け付け、リストの先頭にあるfpとCiDを取得する。
(S107)RC制御部205は、取得したCiDがゼロか否かを判定する。CiDはゼロをとらないが、ブロックマップ201bが初期化された際に、ブロックマップ201bに含まれるCiDの欄がゼロに設定される。つまり、LVの該当部分にデータが書き込まれていない場合、ブロックマップ201bから読み出されたCiDがゼロとなる。CiDがゼロの場合、処理はS108へと進む。一方、CiDがゼロでない場合、処理はS109へと進む。
(S108)RC制御部205は、S106で取得したfpとCiDに対応するデータを書き込むために確保されたバッファの該当部分にゼロを格納する。そして、RC制御部205は、そのfpとCiDの組をリストから削除する(処理済み)。S108の処理が完了すると、処理は図10のS104へと進む。
(S109)RC制御部205は、S106で取得したfpのハッシュ値h(fp)を計算する。h(…)はハッシュ関数を示す。h(…)は、例えば、SHA−1やMD5などのハッシュ関数である。
(S110)RC制御部205は、ハッシュテーブル201c及び探索リストをもとにh(fp)とCiDが一致するデータを探索する。例えば、RC制御部205は、図9に示すように、ハッシュテーブル201cの中でh(fp)と一致するハッシュ値を特定し、対応するポインタをもとにCiDが一致するキャッシュ済みデータを特定する。同じハッシュ値に複数のキャッシュ済みデータが連結されている場合、RC制御部205は、探索リスト(連結情報の集合)を参照し、CiDを探索キーに線形探索を実施する。
(S111)RC制御部205は、キャッシュ装置210に該当データがあるかを判定する。つまり、RC制御部205は、S110の処理でh(fp)とCiDの組に対応するキャッシュ済みデータ(該当データ)が検出されたか否かを判定する。該当データがある場合、処理はS113へと進む。該当データがない場合、処理はS112へと進む。
(S112)コンテナ制御部206のRW制御部206bは、記憶装置300から該当データを読み出し、RC制御部205に入力する。RC制御部205は、RW制御部206bから入力された該当データの新規レコードをキャッシュ装置210へ登録する。S112の処理については後段においてさらに説明する。
(S113)RC制御部205は、該当データのレコードが最新となるように時系列リスト(時系列情報の集合)を更新する。
例えば、図9に示したデータA、データB、データXにそれぞれ対応する時系列情報t1、t2、t3が、t1、t2、t3の順で新しいレコードを示すものとする。該当データがデータXである場合、例えば、データXのレコードが最新となるようにデータXの時系列情報がt1に、データAの時系列情報がt2に、データBの時系列情報がt3に書き換えられる。なお、t1のレコードより新しいレコードを示すt0にデータXの時系列情報が書き換えられるようにしてもよい。
(S114)RC制御部205は、バッファの該当部分にデータを格納する。
キャッシュ装置210に該当データがある場合、RC制御部205は、キャッシュ装置210から読み出した該当データをバッファに格納する。一方、キャッシュ装置210に該当データがない場合、RC制御部205は、S112でコンテナ制御部206を介して記憶装置300から読み出した該当データをバッファに格納する。そして、RC制御部205は、該当データに対応するfpとCiDの組をリストから削除する(処理済み)。S114の処理が完了すると、処理は図10のS104へと進む。
ここで、図12を参照しながら、キャッシュ装置210に対する新規レコードの登録処理(S112)について、さらに説明する。図12は、第2実施形態に係る新規レコードの登録処理の流れを示したフロー図である。
(S131)RC制御部205は、記憶装置300から読み出した該当データを登録することが可能な空きレコード(新規レコード)がキャッシュ装置210にあるかを判定する。新規レコードがある場合、処理はS133へと進む。一方、新規レコードがない場合、処理はS132へと進む。
(S132)RC制御部205は、時系列リストをもとに最古のレコードを特定し、リセットして新規レコードに設定する。つまり、RC制御部205は、時系列情報が最も古いレコードに登録された内容を削除し、新たに情報を登録できるようにリセットする。
(S133)RC制御部205は、コンテナ制御部206に対して該当データのCiDとfpを通知する。この通知を受けたコンテナ制御部206のRW制御部206bは、コンテナ情報201aに基づいてCiDに対応するコンテナのインデックス領域に含まれるスロットのうち、通知されたfpを含むスロットを特定する。そして、RW制御部206bは、特定したスロットのオフセットに基づいて実データ格納領域から該当データを取得する。RW制御部206bは、取得した該当データをRC制御部205に入力する。
(S134)RC制御部205は、S133で取得した該当データをキャッシュ装置210の新規レコードに登録する。このとき、RC制御部205は、fp、CiD、該当データを対応付けて新規レコードに登録する。
(S135)RC制御部205は、ハッシュテーブル201cを更新する。このとき、RC制御部205は、ハッシュテーブル201cのポインタと新規レコードとが連結されるように連結リストを更新する。また、RC制御部205は、新規レコードの時系列情報が最新となるように時系列リストを更新する。S135の処理が完了すると、図12に示した一連の処理は終了する。
以上、制御装置200が実行するリード処理の流れについて説明した。
(ライト処理)
次に、図13及び図14を参照しながら、制御装置200が実行するライト処理の流れについて説明する。図13は、第2実施形態に係るライト処理の流れを示した第1のフロー図である。図14は、第2実施形態に係るライト処理の流れを示した第2のフロー図である。
(S201)I/O制御部202は、ホスト装置100からデータの書き込みを要求するWrite要求を受信する。Write要求は、論理ボリューム(LV)を特定するための識別情報LViD、そのLVにおけるデータの先頭アドレスLBA、データ長Length、及び書き込み対象のデータを含む。I/O制御部202は、Write要求に含まれるデータを予め設定した単位サイズ(例えば、4KB)に分割する。
(S202)I/O制御部202は、単位サイズ毎にデータ位置を示すLBAを特定し、Write要求を分割する。
例えば、Write要求が含むLBAが0KBであり、Lengthが20KBである場合、4KB単位でデータを分割した場合の各分割データの先頭位置を示すLBAは、0KB、4KB、8KB、12KB、16KBとなる。
この場合、I/O制御部202は、1つ目の分割データに対応するWrite要求のLViDをホスト装置100から受信したWrite要求のLViDに設定し、LBAを0KB、Lengthを4KBに設定する。そして、I/O制御部202は、分割データをWrite要求に含める。同様に、I/O制御部202は、他の4つの分割データに対応するWrite要求を生成する。つまり、I/O制御部202は、ホスト装置100から受信したWrite要求を5つの分割データに対応するWrite要求に分割する。
(S203)I/O制御部202は、ブロックマップ201bを参照し、分割したWrite要求に含まれるLViD及びLBAに対応するfp及びCiDを特定する。I/O制御部202は、分割したWrite要求の全てについて同様にfp及びCiDを特定し、特定したfpとCiDの組を並べたリストを作成する。
(S204)I/O制御部202は、リストの全項目を処理し終えたか否かを判定する。つまり、I/O制御部202は、リストに含まれるfpとCiDの組の全てについて、図14に示すS206以降の処理が完了しているか否かを判定する。全項目を処理し終えている場合、処理はS205へと進む。一方、未処理の項目がある場合、処理は図14のS206へと進む。
(S205)I/O制御部202は、バッファ内のデータをホスト装置100に応答する。S205の処理が完了すると、図13及び図14に示した一連の処理は終了する。
(S206)コンテナ制御部206は、I/O制御部202からリストの入力を受け付け、リストの先頭にあるfpとCiDを取得する。
(S207)コンテナ制御部206は、取得したCiDがゼロか否かを判定する。CiDはゼロをとらないが、ブロックマップ201bが初期化された際に、ブロックマップ201bに含まれるCiDの欄がゼロに設定される。つまり、LVの該当部分にデータが書き込まれていない場合、ブロックマップ201bから読み出されたCiDがゼロとなる。
CiDがゼロの場合(つまり、同じデータがコンテナに書き込まれていない場合)、処理はS209へと進む。一方、CiDがゼロでない場合(つまり、既に同じデータがコンテナに書き込まれている場合)、処理はS208へと進む。
(S208)コンテナ制御部206のカウンタ管理部206cは、S206で取得したCiDに対応するコンテナのインデックス領域にあるスロットのうち、S206で取得したfpを含むスロットを特定する。そして、カウンタ管理部206cは、特定したスロットに含まれるカウンタ値に対するデクリメント処理を実行する。このデクリメント処理については後段においてさらに説明する。
(S209)FP算出部203は、書き込み対象のデータ(Writeデータ)からフィンガープリントfpを計算する。例えば、FP算出部203は、SHA−1やMD5などのハッシュ関数にWriteデータを入力してハッシュ値を計算し、計算したハッシュ値をフィンガープリントfpとしてコンテナ制御部206に入力する。
(S210)コンテナ制御部206は、S209で計算されたfpがコンテナに登録されているか否かを判定する。
CiDがゼロの場合、コンテナ制御部206は、fpが未登録であると判定する。CiDがゼロでない場合、コンテナ制御部206は、そのCiDに対応するコンテナのスロットを参照し、計算されたfpが登録されているか否かを判定する。計算されたfpがコンテナに登録されている場合、処理はS211へと進む。一方、計算されたfpがコンテナに登録されていない場合、処理はS212へと進む。
(S211)コンテナ制御部206のカウンタ管理部206cは、S209で計算されたfpと同じfpが登録されているスロットのカウンタ値に対するインクリメント処理を実行する。このインクリメント処理については後段においてさらに説明する。S211の処理が完了すると、処理はS214へと進む。
(S212)コンテナ制御部206のRW制御部206bは、S206で取得したCiDを有するコンテナの実データ格納領域に新規データ(Writeデータ)を書き込む。
なお、S206で取得したCiDがゼロの場合、RW制御部206bは、実データ格納領域の容量に空きがあるコンテナのCiDを選択し、選択したCiDのコンテナに新規データを書き込む。また、RW制御部206bは、インデックス領域の空きスロットを1つ選択し、書き込んだデータの位置を示すオフセットを登録する。
(S213)RW制御部206bは、S212でオフセットを登録したスロットにfpを登録する。コンテナ制御部206のカウンタ管理部206cは、RW制御部206bがfpを登録したスロットのカウンタ値を1に設定する。
(S214)BM管理部204は、ブロックマップ201bの該当する部分を新規のfp(S209で計算したfp)とCiDに更新する。
S209で計算されたfpが未登録であり、コンテナに新規データが書き込まれた場合、BM管理部204は、Write要求のLViDとLBAの組に該当する部分に新規のfpとCiDを登録する。一方、同じfpがコンテナに登録済みの場合、BM管理部204は、Write要求のLViDとLBAの組に該当する部分に既に書き込まれているfpを新規のfpに書き換える。そして、BM管理部204は、fpとCiDのリストから、先頭の項目を削除する(処理済み)。S214の処理が完了すると、処理は図13のS204へと進む。
ここで、図15を参照しながら、カウンタのインクリメント処理(S211)について、さらに説明する。図15は、第2実施形態に係るインクリメント処理の流れを示したフロー図である。
(S231)カウンタ管理部206cは、登録済みfpのあるコンテナのカウンタ値をインクリメントする。つまり、カウンタ管理部206cは、S209で計算されたfpと同じfpが登録されているスロットを特定し、特定したスロットに含まれるカウンタ値を1増加させる。
(S232)カウンタ管理部206cは、S231でカウンタ値をインクリメントしたコンテナがGC処理中であるかを判定する。つまり、カウンタ管理部206cは、このコンテナのCiDをGC制御部206dに通知し、そのコンテナのデータを他のコンテナに移動中であるかを確認する。GC処理中でない場合、図15に示した一連の処理は終了する。GC処理中である場合、処理はS233へと進む。
(S233)カウンタ管理部206cは、カウンタ値をインクリメントしたスロットのfpに対応するデータがコピー済みかを判定する。つまり、カウンタ管理部206cは、そのスロットのSiDをGC制御部206dに通知し、そのSiDのスロットに含まれるオフセットが示すデータを移動先のコンテナにコピーしたかを確認する。コピー済みである場合、処理はS234へと進む。一方、コピー済みでない場合、図15に示した一連の処理は終了する。
(S234)カウンタ管理部206cは、GC処理によりデータが移動される移動先コンテナのカウンタ値をインクリメントする。つまり、カウンタ管理部206cは、移動先コンテナのインデックス領域に含まれる同じfpを有するスロットを特定し、特定したスロットのカウンタ値を1増加させる。S234の処理が完了すると、図15に示した一連の処理は終了する。
次に、図16を参照しながら、カウンタのデクリメント処理(S208)について、さらに説明する。図16は、第2実施形態に係るデクリメント処理の流れを示したフロー図である。
(S251)カウンタ管理部206cは、登録済みfpのあるコンテナのカウンタ値をデクリメントする。つまり、カウンタ管理部206cは、S209で計算されたfpと同じfpが登録されているスロットを特定し、特定したスロットに含まれるカウンタ値を1減少させる。
(S252)カウンタ管理部206cは、S251でカウンタ値をデクリメントしたコンテナがGC処理中であるかを判定する。つまり、カウンタ管理部206cは、このコンテナのCiDをGC制御部206dに通知し、そのコンテナのデータを他のコンテナに移動中であるかを確認する。GC処理中でない場合、図16に示した一連の処理は終了する。GC処理中である場合、処理はS253へと進む。
(S253)カウンタ管理部206cは、カウンタ値をデクリメントしたスロットのfpに対応するデータがコピー済みかを判定する。つまり、カウンタ管理部206cは、そのスロットのSiDをGC制御部206dに通知し、そのSiDのスロットに含まれるオフセットが示すデータを移動先のコンテナにコピーしたかを確認する。コピー済みである場合、処理はS254へと進む。一方、コピー済みでない場合、図16に示した一連の処理は終了する。
(S254)カウンタ管理部206cは、GC処理によりデータが移動される移動先コンテナのカウンタ値をデクリメントする。つまり、カウンタ管理部206cは、移動先コンテナのインデックス領域に含まれる同じfpを有するスロットを特定し、特定したスロットのカウンタ値を1減少させる。S254の処理が完了すると、図16に示した一連の処理は終了する。
以上、制御装置200が実行するライト処理の流れについて説明した。
(GC処理)
次に、図17を参照しながら、制御装置200が実行するGC処理の流れについて説明する。図17は、第2実施形態に係るGC処理の流れを示したフロー図である。なお、図17に示した処理は主にコンテナ制御部206のGC制御部206dが実行する。
(S301)GC制御部206dは、GC処理の実行条件を満たしているかを判定する。GC処理の実行条件は、例えば、前回GC処理を実行した後、所定時間が経過したことや、ユーザが指定したことなどである。GC処理の実行条件を満たしている場合、処理はS302へと進む。GC処理の実行条件を満たしていない場合、処理はS304へと進む。
(S302)GC制御部206dは、GCの対象コンテナを選択する。このとき、GC制御部206dは、各コンテナのインデックス領域にある各スロットのカウンタ値を参照し、カウンタ値が0のスロットを有するコンテナを対象コンテナとして選択する。なお、GC制御部206dは、カウンタ値が0のスロットが総スロット数の所定割合を上回ったコンテナを対象コンテナとして選択してもよい。
(S303)GC制御部206dは、対象コンテナがあるかを判定する。対象コンテナがある場合、処理はS305へと進む。一方、対象コンテナがない場合、処理はS304へと進む。
(S304)GC制御部206dは、予め設定された時間、GC処理を進めずに待機する。その時間が経過した後、処理はS301へと進む。
(S305)GC制御部206dは、新たに生成したコンテナを、対象コンテナに格納されたデータの移動先となるコンテナ(移動先コンテナ)に割り当てる。
(S306)GC制御部206dは、未チェックのデータがあるかを判定する。つまり、対象コンテナの実データ格納領域に格納された各データについて、S307以降の処理が全て完了したかを判定する。未チェックのデータがある場合、処理はS307へと進む。一方、未チェックのデータがない場合、処理はS311へと進む。
(S307)GC制御部206dは、対象コンテナから未チェックのデータを取得する。
(S308)GC制御部206dは、S307で取得したデータに対応するスロットのカウンタ値を参照し、そのカウンタ値が1以上であるかを判定する。カウンタ値が1以上である場合、処理はS309へと進む。一方、カウンタ値が1以上でない場合、S307で取得したデータはチェック済みとされ、処理はS306へと進む。
(S309)GC制御部206dは、S307で取得したデータを移動先コンテナにコピーする。
(S310)GC制御部206dは、移動先コンテナのカウンタ値を対象コンテナのカウンタ値と同じ値に設定する。つまり、GC制御部206dは、S309でコピーしたデータについて、移動先コンテナのカウンタ値と対象コンテナのカウンタ値とを同期させる。S310の処理が完了すると、S307で取得したデータはチェック済みとされ、処理はS306へと進む。
(S311)GC制御部206dは、移動先コンテナのCiDを対象コンテナのCiDに設定し、対象コンテナを回収する。つまり、GC制御部206dは、CiDを対象コンテナから移動先コンテナに付け替え、対象コンテナを削除する。S311の処理が完了すると、図17に示した一連の処理は終了する。
なお、GC処理の中で削除されたデータの情報は、RC制御部205に通知される。RC制御部205は、この情報が示すデータがキャッシュ装置210に格納されている場合に、そのデータのレコードをキャッシュ装置210から削除する。
以上、制御装置200が実行するGC処理の流れについて説明した。
[2−5.変形例]
これまで、キャッシュ済みデータを探索する際に、fpのハッシュ値h(fp)を第1の探索キーとし、CiDを第2の探索キーとする方法を前提に説明してきた。ここでは、この方法を拡張し、SiDを第3の探索キーとして利用する変形例を提案する。
図18は、第2実施形態の一変形例に係るキャッシュ情報について説明するための図である。図19は、第2実施形態の一変形例に係るブロックマップについて説明するための図である。
SiDを第3の探索キーとして利用する場合、キャッシュ済みデータのレコードは、図18に示すように、連結情報、時系列情報、fp、CiDの他にSiDを含む。また、ブロックマップ201bは、図19に示すように、LV毎に対応するLBA、fp、CiD、SiDを含む。このように、キャッシュ済みデータのレコードとブロックマップ201bの構造を変形することで、SiDを第3の探索キーとして利用することができる。
この変形例によれば、fpとCiDの組み合わせとデータとの対応関係が一意に決まらないような状況でも、SiDを利用してデータを一意に特定することが可能になる。つまり、fpのデータ長が短く、fpとCiDの組み合わせだけではデータが一意に特定できない場合でも、SiDを組み合わせることでデータを一意に特定できるようになる。このことは、fpのデータ長を短くし、保持すべきデータ量を減らすことなどに寄与する。
以上、第2実施形態について説明した。
第2実施形態によれば、fpを介してキャッシュ済みデータを読み出すため、読み出し対象のデータと同内容のデータがキャッシュされていれば、LViDやLBAが異なっても、キャッシュ済みデータを読み出してホスト装置100に応答することが可能になる。その結果、応答が高速化し、ストレージシステムの性能向上に寄与する。また、同一内容のデータをキャッシュせずに済むため、キャッシュ装置210の記憶容量を有効利用できる。さらに、記憶装置300へのアクセスを減らせることから、ストレージシステムの信頼性向上に寄与する。
5 ストレージシステム
10 ホスト装置
20 ストレージ装置
21 記憶部
21a キャッシュ情報
21b 場所情報
22 制御部
30 記憶装置
40 キャッシュ装置
RQ 読み出し要求
RP 応答
D1、D2 データ
fp(D1)、fp(D2) 内容情報
ADR1、ADR2、ADR3 記憶場所

Claims (7)

  1. データが格納される記憶装置及び該データの一時記憶領域として利用されるキャッシュ装置に接続されたストレージ装置であって、
    前記記憶装置に格納されたデータの記憶場所と該データの内容に関する内容情報とを対応付ける場所情報と、前記キャッシュ装置に格納されたデータに対応する前記内容情報を含むキャッシュ情報と、を記憶する記憶部と、
    前記記憶場所を指定してデータの読み出しを要求する読み出し要求を受け付けたとき、該読み出し要求で指定された前記記憶場所に対応する前記内容情報を特定し、該内容情報が前記キャッシュ情報に含まれる場合には該データを前記キャッシュ装置から読み出して応答する制御部と
    を有する、ストレージ装置。
  2. 前記制御部は、同じ内容のデータが同じ位置に格納される論理的なデータ格納領域と、該データ格納領域におけるデータの格納位置を管理する情報が含まれる情報領域とを有する管理領域を用いて、前記記憶装置に格納されるデータを管理し、
    前記場所情報は、前記データの記憶場所と、該データに対応する前記内容情報及び前記管理領域と、を対応付け、
    前記キャッシュ情報は、前記データに対応する前記内容情報と、該データに対応する前記管理領域と、を対応付け、
    前記制御部は、前記内容情報と前記管理領域との組に基づいて、該組に対応するデータを前記キャッシュ装置から読み出して応答するかを判断する
    請求項1に記載のストレージ装置。
  3. 前記情報領域は、前記データの格納位置を管理する情報がデータ毎に格納される複数の小領域を含み、
    前記場所情報は、前記データの記憶場所と、該データに対応する前記内容情報、該データに対応する前記管理領域及び前記小領域と、を対応付け、
    前記キャッシュ情報は、前記データに対応する前記内容情報と、該データに対応する前記管理領域及び前記小領域と、を対応付け、
    前記制御部は、前記内容情報と前記管理領域と前記小領域の組に基づいて、該組に対応するデータを前記キャッシュ装置から読み出して応答するかを判断する
    請求項2に記載のストレージ装置。
  4. 前記記憶装置には複数の記憶領域が設定されており、
    前記制御部は、複数の前記管理領域のうち第1の管理領域に格納されたデータの中でアクセス頻度が基準値より大きいデータを前記第1の管理領域とは異なる第2の管理領域にコピーし、前記第1の管理領域を削除し、前記場所情報及び前記キャッシュ情報を更新する
    請求項2又は3に記載のストレージ装置。
  5. データが格納される記憶装置と、該データの一時記憶領域として利用されるキャッシュ装置と、前記記憶装置及び前記キャッシュ装置に接続されたストレージ装置と、前記ストレージ装置に接続されたホスト装置と、を含み、
    前記ホスト装置は、
    前記記憶装置に格納されたデータの記憶場所を指定して該データの読み出しを要求する読み出し要求を前記ストレージ装置に送信し、
    前記ストレージ装置は、
    前記ホスト装置からの前記読み出し要求を受け付け、記憶部から、前記記憶装置に格納されたデータの記憶場所と該データの内容に関する内容情報とを対応付ける場所情報と、前記キャッシュ装置に格納されたデータに対応する前記内容情報を含むキャッシュ情報と、を取得し、前記読み出し要求で指定された前記記憶場所に対応する前記内容情報を特定し、該内容情報が前記キャッシュ情報に含まれる場合には該データを前記キャッシュ装置から読み出して前記ホスト装置に応答する
    ストレージシステム。
  6. データが格納される記憶装置と、該データの一時記憶領域として利用されるキャッシュ装置と、前記記憶装置及び前記キャッシュ装置に接続されたストレージ装置と、前記ストレージ装置に接続されたホスト装置と、を含むストレージシステムにおけるデータ読み出し方法であって、
    前記ホスト装置が、
    前記記憶装置に格納されたデータの記憶場所を指定して該データの読み出しを要求する読み出し要求を前記ストレージ装置に送信し、
    前記ストレージ装置が、
    前記ホスト装置からの前記読み出し要求を受け付け、記憶部から、前記記憶装置に格納されたデータの記憶場所と該データの内容に関する内容情報とを対応付ける場所情報と、前記キャッシュ装置に格納されたデータに対応する前記内容情報を含むキャッシュ情報と、を取得し、前記読み出し要求で指定された前記記憶場所に対応する前記内容情報を特定し、該内容情報が前記キャッシュ情報に含まれる場合には該データを前記キャッシュ装置から読み出して前記ホスト装置に応答する
    データ読み出し方法。
  7. データが格納される記憶装置及び該データの一時記憶領域として利用されるキャッシュ装置に接続されたコンピュータに、
    記憶部から、前記記憶装置に格納されたデータの記憶場所と該データの内容に関する内容情報とを対応付ける場所情報と、前記キャッシュ装置に格納されたデータに対応する前記内容情報を含むキャッシュ情報と、を取得し、
    前記記憶場所を指定してデータの読み出しを要求する読み出し要求を受け付けたとき、該読み出し要求で指定された前記記憶場所に対応する前記内容情報を特定し、該内容情報が前記キャッシュ情報に含まれる場合には該データを前記キャッシュ装置から読み出して応答する
    処理を実行させる、ストレージプログラム。
JP2015001262A 2015-01-07 2015-01-07 ストレージ装置、ストレージシステム、データ読み出し方法、及びストレージプログラム Pending JP2016126632A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015001262A JP2016126632A (ja) 2015-01-07 2015-01-07 ストレージ装置、ストレージシステム、データ読み出し方法、及びストレージプログラム
US14/941,113 US9842057B2 (en) 2015-01-07 2015-11-13 Storage apparatus, storage system, and data read method
EP15195605.9A EP3043267A1 (en) 2015-01-07 2015-11-20 Storage apparatus, storage system, data readout method, and storage program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015001262A JP2016126632A (ja) 2015-01-07 2015-01-07 ストレージ装置、ストレージシステム、データ読み出し方法、及びストレージプログラム

Publications (1)

Publication Number Publication Date
JP2016126632A true JP2016126632A (ja) 2016-07-11

Family

ID=54608445

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015001262A Pending JP2016126632A (ja) 2015-01-07 2015-01-07 ストレージ装置、ストレージシステム、データ読み出し方法、及びストレージプログラム

Country Status (3)

Country Link
US (1) US9842057B2 (ja)
EP (1) EP3043267A1 (ja)
JP (1) JP2016126632A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10545864B2 (en) 2017-09-21 2020-01-28 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US10545863B2 (en) 2017-09-21 2020-01-28 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10430385B1 (en) 2014-12-05 2019-10-01 EMC IP Holding Company LLC Limited deduplication scope for distributed file systems
US10951705B1 (en) 2014-12-05 2021-03-16 EMC IP Holding Company LLC Write leases for distributed file systems
US10936494B1 (en) * 2014-12-05 2021-03-02 EMC IP Holding Company LLC Site cache manager for a distributed file system
US10540212B2 (en) * 2016-08-09 2020-01-21 International Business Machines Corporation Data-locality-aware task scheduling on hyper-converged computing infrastructures
US10331385B2 (en) * 2016-09-29 2019-06-25 Intel Corporation Cooperative write-back cache flushing for storage devices
CN108021513B (zh) * 2016-11-02 2021-09-10 杭州海康威视数字技术股份有限公司 一种数据存储方法及装置
CN107992271B (zh) * 2017-12-21 2021-04-23 郑州云海信息技术有限公司 数据预读方法、装置、设备及计算机可读存储介质
CN108965987A (zh) * 2018-06-27 2018-12-07 广州视源电子科技股份有限公司 电视节目存储方法、电视机、移动终端及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6928526B1 (en) 2002-12-20 2005-08-09 Datadomain, Inc. Efficient data storage system
JP2009251725A (ja) 2008-04-02 2009-10-29 Hitachi Ltd 記憶制御装置及び記憶制御装置を用いた重複データ検出方法。
US9110936B2 (en) 2010-12-28 2015-08-18 Microsoft Technology Licensing, Llc Using index partitioning and reconciliation for data deduplication
JP5485866B2 (ja) 2010-12-28 2014-05-07 株式会社日立ソリューションズ 情報管理方法、及び情報提供用計算機
US9842046B2 (en) * 2012-09-28 2017-12-12 Intel Corporation Processing memory access instructions that have duplicate memory indices
JP2014211800A (ja) * 2013-04-19 2014-11-13 株式会社東芝 データ記憶装置、ストレージコントローラおよびデータ記憶制御方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10545864B2 (en) 2017-09-21 2020-01-28 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US10545863B2 (en) 2017-09-21 2020-01-28 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US11132295B2 (en) 2017-09-21 2021-09-28 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US11693770B2 (en) 2017-09-21 2023-07-04 Kioxia Corporation Memory system and method for controlling nonvolatile memory

Also Published As

Publication number Publication date
US9842057B2 (en) 2017-12-12
EP3043267A1 (en) 2016-07-13
US20160196215A1 (en) 2016-07-07

Similar Documents

Publication Publication Date Title
JP2016126632A (ja) ストレージ装置、ストレージシステム、データ読み出し方法、及びストレージプログラム
US10248623B1 (en) Data deduplication techniques
US8423733B1 (en) Single-copy implicit sharing among clones
US10402339B2 (en) Metadata management in a scale out storage system
US8539148B1 (en) Deduplication efficiency
US9659047B2 (en) Data deduplication utilizing extent ID database
US9720928B2 (en) Removing overlapping ranges from a flat sorted data structure
US8805796B1 (en) Deduplicating sets of data blocks
US10037161B2 (en) Tiered storage system, storage controller, and method for deduplication and storage tiering
US8538933B1 (en) Deduplicating range of data blocks
US9842114B2 (en) Peer to peer network write deduplication
WO2018058382A1 (zh) 一种存储***中重复数据删除方法、存储***及控制器
JP6807395B2 (ja) プロセッサ・グリッド内の分散データ重複排除
US9696936B2 (en) Applying a maximum size bound on content defined segmentation of data
JP6094267B2 (ja) ストレージシステム
CN115004147A (zh) 利用去重的主存储
US20180107404A1 (en) Garbage collection system and process
JP2019028954A (ja) ストレージ制御装置、プログラム、及び重複排除方法
US10963177B2 (en) Deduplication using fingerprint tries
US11281390B2 (en) Techniques for data migration
US8909886B1 (en) System and method for improving cache performance upon detecting a migration event
US11016884B2 (en) Virtual block redirection clean-up
US9483483B2 (en) Applying a minimum size bound on content defined segmentation of data
CN116954484A (zh) 指定数据的仅属性读取
JP6559752B2 (ja) ストレージシステムおよび制御方法