JP2020112972A - ストレージ制御装置およびストレージ制御プログラム - Google Patents

ストレージ制御装置およびストレージ制御プログラム Download PDF

Info

Publication number
JP2020112972A
JP2020112972A JP2019002552A JP2019002552A JP2020112972A JP 2020112972 A JP2020112972 A JP 2020112972A JP 2019002552 A JP2019002552 A JP 2019002552A JP 2019002552 A JP2019002552 A JP 2019002552A JP 2020112972 A JP2020112972 A JP 2020112972A
Authority
JP
Japan
Prior art keywords
data
storage
unit
read
metadata
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
JP2019002552A
Other languages
English (en)
Inventor
敏雄 伊賀
Toshio Iga
敏雄 伊賀
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 JP2019002552A priority Critical patent/JP2020112972A/ja
Publication of JP2020112972A publication Critical patent/JP2020112972A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】小容量のキャッシュ領域を用いて読み出し性能を向上させる。【解決手段】制御部1bは、データD1が格納されたデータ領域11aと、データ領域11aにおけるデータD1の位置情報H1が格納されたヘッダ領域11bとを有するデータブロック11が、ストレージ装置2に配置され、かつ、データD1の論理アドレスと、データブロック11を示す識別情報と、データD1の格納順を示すインデックスと、チェック符号とを含むメタデータ20が、ストレージ装置2に配置され、かつ、位置情報H1が記憶部1aにキャッシュされるように、データD1の格納処理を制御し、データD1の読み出しの際には、メタデータ20を読み出し、メタデータ20に基づいて記憶部1aから位置情報H1を読み出し、位置情報H1に基づいてデータD1を読み出し、メタデータ20に含まれるチェック符号を用いてデータD1の正当性をチェックする。【選択図】図1

Description

本発明は、ストレージ制御装置およびストレージ制御プログラムに関する。
業務サーバなどのサーバ装置が扱う大量のデータは、例えば、記憶容量の大きなストレージ装置を有するストレージシステムにより管理される。ストレージシステムでは、論理的な記憶領域(論理領域)と、ストレージ装置に搭載される記録媒体の記憶領域(物理領域)とを利用してデータのI/O(Input/Output)が処理される。
また、論理領域上の同一データが重複しないようにデータを物理領域に格納する重複排除技術が知られている。重複排除により、物理領域の使用容量を削減できるだけでなく、物理領域に対する書き込み回数を削減する効果も得られる。特に近年、物理領域を実現する記録媒体として、フラッシュメモリを用いたSSD(Solid State Drive)が使用されることが多くなっている。フラッシュメモリは一般的に書き込み回数の制限があることから、重複排除によってフラッシュメモリに対する書き込み回数を削減することで、フラッシュメモリの寿命を延ばすことができる。
また、重複排除に関して次のような技術が提案されている。例えば、ユーザデータと保証コードとを分け、ユーザデータを重複排除しながら物理ページに格納し、複数のユーザデータに対応する保証コードを連結して物理ページに格納するストレージ装置が提案されている。また、例えば、重複排除を行ってデータを論理ボリュームに格納する際に、保証コードチェック用のアドレス読み替え情報を生成し、データを読み出す際にはアドレス読み替え情報を用いて読み替えを行うことで保証コードを生成するストレージサブシステムが提案されている。
国際公開第2012/056491号 特開2009−080696号公報
ところで、ストレージ装置の制御では、例えば論理アドレスと物理アドレスとを変換するための情報など、データにアクセスするための各種の管理情報が使用される。このような管理情報については、書き込み対象のデータとともにストレージ装置に格納される場合があるが、その場合、データの読み出しの際に管理情報もストレージ装置から読み出さなくてはならない。そのため、ストレージ装置へのアクセス回数が多くなり、データの読み出し性能が低下する。また、この問題を解決する方法として、管理情報をストレージ制御装置側にキャッシュしておく方法が考えられるが、この場合にはキャッシュされた管理情報がストレージ制御装置のメモリ容量を圧迫することが問題となる。
1つの側面では、本発明は、小容量のキャッシュ領域を用いて読み出し性能を向上させることが可能なストレージ制御装置およびストレージ制御プログラムを提供することを目的とする。
1つの案では、ストレージ装置を制御する次のようなストレージ制御装置が提供される。このストレージ制御装置は、記憶部と、制御部とを有する。制御部は、データが格納されたデータ領域と、データ領域におけるデータの位置情報が格納されたヘッダ領域とを有するデータブロックが、ストレージ装置に配置され、かつ、データに対応する論理アドレスと、データが格納されたデータブロックを示す識別情報と、データブロックにおけるデータの格納順を示すインデックスと、データについてのチェック符号とを含むメタデータが、ストレージ装置に配置され、かつ、位置情報が記憶部にキャッシュされるように、データの格納処理を制御する。また、制御部は、論理アドレスを用いてデータの読み出しが要求された場合、ストレージ装置からメタデータを読み出し、読み出したメタデータに含まれる識別情報およびインデックスに基づいて記憶部から位置情報を読み出し、読み出した位置情報に基づいてストレージ装置内のデータブロックからデータを読み出し、読み出したメタデータに含まれるチェック符号を用いて、読み出したデータの正当性をチェックする。
また、1つの案では、ストレージ装置を制御する次のようなストレージ制御装置が提供される。このストレージ制御装置は、記憶部と、制御部とを有する。制御部は、データとデータについてのチェック符号とが隣接して格納されたデータ領域と、データ領域におけるデータの位置情報が格納されたヘッダ領域とを有するデータブロックが、ストレージ装置に配置され、かつ、データに対応する論理アドレスと、データが格納されたデータブロックを示す識別情報と、データブロックにおけるデータの格納順を示すインデックスとを含むメタデータが、ストレージ装置に配置され、かつ、位置情報が記憶部にキャッシュされるように、データの格納処理を制御する。また、制御部は、論理アドレスを用いてデータの読み出しが要求された場合、ストレージ装置からメタデータを読み出し、読み出したメタデータに含まれる識別情報およびインデックスに基づいて記憶部から位置情報を読み出し、読み出した位置情報に基づいてストレージ装置内のデータブロックからデータとチェック符号とを読み出し、読み出したチェック符号を用いて、読み出したデータの正当性をチェックする。
さらに、1つの案では、上記各ストレージ制御装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
1つの側面では、小容量のキャッシュ領域を用いて読み出し性能を向上させることができる。
第1の実施の形態に係るストレージシステムの構成例を示す図である。 第2の実施の形態に係るストレージシステムの構成例を示す図である。 ノードのハードウェア構成例を示す図である。 ノードが備える処理機能の構成例を示す図である。 ストレージの記憶領域についての管理形態の例を示す図である。 RAIDユニットについて説明するための図である。 データブロックに対するデータの格納について説明するための図である。 論物メタデータとデータブロックとの関係を示す図である。 論物メタデータの構成例を示す図である。 重複排除に用いられるメタデータについて説明するための図である。 論物メタデータおよびデータブロックの格納状態について説明するための図である。 データの追記書きについて説明するための図である。 データユニットヘッダのキャッシュについて説明するための図である。 データユニットヘッダキャッシュのサイズの例を示す図である。 重複がない場合の書き込み処理例を示すシーケンス図(その1)である。 重複がない場合の書き込み処理例を示すシーケンス図(その2)である。 重複がある場合の書き込み処理例を示すシーケンス図である。 読み出し処理例を示すシーケンス図である。 読み出し処理例を示すフローチャートである。 第3の実施の形態におけるデータブロックの構成例を示す図である。 第3の実施の形態における論物メタデータの構成例を示す図である。 第3の実施の形態における読み出し処理例を示すシーケンス図である。
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージシステムの構成例を示す図である。図1に示すストレージシステムは、ストレージ制御装置1と、ストレージ装置2とを有する。ストレージ制御装置1は、ストレージ装置2を制御する。ストレージ装置2は、例えば、1台以上の不揮発性の記録媒体を備える。記録媒体としては、例えば、SSDが用いられる。
ストレージ制御装置1は、記憶部1aと制御部1bとを有する。記憶部1aは、例えば、RAM(Random Access Memory)などの記憶装置によって実現される。制御部1bは、例えばプロセッサであり、その場合、制御部1bの処理は、プロセッサがプログラムを実行することで実現される。
制御部1bは、論理アドレスを有するデータの書き込み要求に応じて、このデータをストレージ装置2に格納する処理を実行する。データは、データブロックというデータ構造を用いてストレージ装置2に格納される。データブロックは、データが格納されるデータ領域と、データ領域におけるデータの位置情報が格納されるヘッダ領域とを含む。
図1の例では、2つのデータブロック11,12がストレージ装置2に配置されている。データブロック11,12には、それぞれ識別情報「DB1」,「DB2」が付与されている。データブロック11は、データ領域11aとヘッダ領域11bとを含む。一例として、データ領域11aにはデータD1が格納され、データ領域11aにおけるデータD1の位置を示す位置情報H1がヘッダ領域11bに格納されている。また、データブロック12は、データ領域12aとヘッダ領域12bとを含む。一例として、データ領域12aにはデータD2が格納され、データ領域12aにおけるデータD2の位置を示す位置情報H2がヘッダ領域12bに格納されている。
なお、このようなデータ構造は、複数のデータをストレージ装置2にまとめ書きすることに適している。例えば、データブロック11,12の領域は、当初はストレージ制御装置1の記憶部1aに、バッファリング領域として確保される。データの書き込み要求の発生に伴って、データブロック11のデータ領域11aの先頭からデータが順に追記されていき、データ領域11aにデータが追記できなくなると、データブロック12のデータ領域12aの先頭からデータが順に追記されていく。また、データ領域11a,12aへのデータの格納に伴って、格納されたデータに対応する位置情報がヘッダ領域11b,12bに格納される。そして、データ領域12aにデータが追記できなくなると、データブロック11,12の内容がバッファリング領域からストレージ装置2に書き出される。
例えば、SSDに含まれるフラッシュメモリは、一般的にランダムライトが発生すると書き込み性能が大きく悪化するという特性がある。ストレージ装置2の記録媒体としてSSDが用いられた場合、上記のようなまとめ書きを行うことで、ストレージ装置2に対するランダムライトが発生しにくくなり、その結果として、ストレージ装置2に対する書き込み性能を向上させることができる。
次に、制御部1bはさらに、ストレージ装置2の制御のために、図1に示すメタデータ20を使用する。メタデータ20は、ストレージ装置2に配置される。メタデータ20は、ストレージ装置2に格納されたデータに対応する論理アドレスと、このデータの物理領域上の位置を示す情報を対応付けて記憶する。物理領域上の位置を示す情報として、データが格納されたデータブロックを示す識別情報と、データブロックにおけるデータの格納順を示すインデックスとが、メタデータ20に保持される。さらに、メタデータ20には、データについてのチェック符号が保持される。チェック符号は、データの正当性を確認するための符号であり、例えば、データについての誤り検出符号である。
図1の例では、論理アドレスL1に対応するデータが、データD1としてデータブロック11に格納されている。メタデータ20においては、論理アドレス「L1」に対して、データD1の位置を示す識別情報「DB1」およびインデックス「IN1」が対応付けられているとともに、データD1についてのチェック符号「C1」が対応付けられている。
また、図1の例では、論理アドレスL2に対応するデータが、データD2としてデータブロック12に格納されている。メタデータ20においては、論理アドレス「L2」に対して、データD2の位置を示す識別情報「DB2」およびインデックス「IN2」が対応付けられているとともに、データD2についてのチェック符号「C2」が対応付けられている。
さらに、図1の例では、メタデータ20において、論理アドレス「L3」に対しても、論理アドレス「L1」と同様に、識別情報「DB1」、インデックス「IN1」、チェック符号「C1」が対応付けられている。これは、論理アドレス「L3」のデータが論理アドレス「L1」のデータと同一であり、論理アドレス「L3」のデータがデータD1としてデータブロック11に格納されていることを示す。すなわち、データD1について重複排除が行われている。
以上のデータブロック11,12およびメタデータ20を用いることで、制御部1bによるデータの読み出しが可能になる。例えば、読み出しアドレスとして論理アドレス「L1」が指定された場合、まず、メタデータ20から識別情報「DB1」、インデックス「IN1」、チェック符号「C1」が読み出される。識別情報「DB1」およびインデックス「IN1」に基づき、データブロック11のヘッダ領域11bからデータD1に対応する位置情報H1が特定され、この位置情報H1が読み出される。そして、位置情報H1に基づいてデータ領域11aからデータD1が読み出される。この後、チェック符号「C1」を用いてデータD1の正当性がチェックされる。
このように、データの読み出し処理では、メタデータ20、ヘッダ領域内の位置情報、データ領域内のデータが読み出される。これらがすべてストレージ装置2に配置されている場合、読み出し処理のたびに3回ずつのストレージ装置2へのアクセスが必要になるため、データの読み出し処理に要する時間が長くなり、読み出し性能が低くなる。
そこで、本実施の形態では、データブロックのヘッダ領域に格納された位置情報が、ストレージ制御装置1の記憶部1aにキャッシュされる。図1の例では、ヘッダ領域11b,12bの内容が記憶部1aにキャッシュされている。これにより、本実施の形態では、読み出し処理は次のように実行される。
例えば、読み出しアドレスとして論理アドレス「L1」が指定された場合、制御部1bは、ストレージ装置2内のメタデータ20から識別情報「DB1」、インデックス「IN1」、チェック符号「C1」を読み出す。次に、制御部1bは、記憶部1aにキャッシュされたヘッダ領域11b,12bを参照し、識別情報「DB1」およびインデックス「IN1」に基づき、データブロック11に対応するヘッダ領域11bからデータD1に対応する位置情報H1を特定する。制御部1bは、特定された位置情報H1を記憶部1aから読み出す。そして、制御部1bは、位置情報H1に基づいて、ストレージ装置2に配置されたデータブロック11のデータ領域11aからデータD1を読み出す。この後、制御部1bは、チェック符号「C1」を用いてデータD1の正当性をチェックする。
このように、本実施の形態では、ヘッダ領域の位置情報が記憶部1aから読み出されることで、読み出し処理におけるストレージ装置2へのアクセス回数を2回に削減できる。これにより、データの読み出し処理に要する時間を短縮でき、読み出し性能を向上させることができる。
また、記憶部1aにキャッシュされるデータは、データ領域におけるデータの位置を示す位置情報だけに限定される。これにより、記憶部1aにキャッシュされるデータ容量を抑制できる。
ここで、他の方法の例として、データのチェック符号を、メタデータ20ではなく、データブロックのヘッダ領域に格納し、チェック符号を位置情報とともに記憶部1aにキャッシュする方法も考えられる。しかし、この方法では、記憶部1aにキャッシュされるデータ量が増大する。これに対して、本実施の形態では、チェック符号をメタデータ20に格納して、ヘッダ領域に格納するデータ量を削減したことで、記憶部1aにキャッシュされるデータ量を削減できる。
すなわち、本実施の形態のストレージ制御装置1によれば、小容量のキャッシュ領域を用いてストレージ装置2の読み出し性能を向上させることができる。
〔第2の実施の形態〕
図2は、第2の実施の形態に係るストレージシステムの構成例を示す図である。図2に示すように、第2の実施の形態に係るストレージシステムは、ホストサーバ50と、ノードブロック101,102とを有する。ホストサーバ50は、例えば、業務処理などの各種の処理を実行するサーバコンピュータである。ノードブロック101,102は、例えば、それぞれ1つの筐体に収容されるストレージ装置である。
ノードブロック101は、ノード111,112およびストレージ113,114を有する。ノード111,112は、ホストサーバ50から受け付けたI/O要求を処理するストレージ制御装置であり、例えば、サーバコンピュータとして実現される。ストレージ113はノード111に接続され、ストレージ114はノード112に接続されている。ストレージ113,114は、それぞれ複数台の不揮発性記憶装置の集合である。
ノードブロック102は、ノード121,122およびストレージ123,124を有する。ノード121,122は、ホストサーバ50から受け付けたI/O要求を処理するストレージ制御装置であり、例えば、サーバコンピュータとして実現される。ストレージ123はノード121に接続され、ストレージ124はノード122に接続されている。ストレージ123,124は、それぞれ複数台の不揮発性記憶装置の集合である。
なお、ホストサーバ50とノード111,112,121,122とは、例えば、FC(Fibre Channel)やiSCSI(Internet Small Computer System Interface)などを利用して接続される。ノード111,112,121,122は、例えば、FC、iSCSI、LAN(Local Area Network)などを利用して接続される。ノード111,112,121,122とストレージ113,114,123,124とは、例えば、FC、iSCSI、SATA(Serial Advanced Technology Attachment)などを利用してそれぞれ接続される。
また、本実施の形態では、ストレージ113,114,123,124にそれぞれ含まれる不揮発性記憶装置は、SSDであるものとする。
また、ノード111,112,121,122は、図1に示したストレージ制御装置1の一例であり、ストレージ113,114,123,124は、図1に示したストレージ装置2の一例である。
ところで、図2に示すストレージシステムでは、例えば、ノード間の負荷分散を図るために、ホストサーバ50から書き込みが要求されたデータが複数のデータ(実データ)に分割され、ノード111,112,121,122に分散配置される。ノード111,112,121,122に分散配置された実データは、それぞれストレージ113,114,123,124に書き込まれる。
例えば、ホストサーバ50からのアクセス対象となる1以上の論理ボリュームが、ストレージ113,114,123,124の記憶領域を用いて作成される。そして、論理ボリュームを識別するLUN(Logical Unit Number)と、論理ボリューム内のアクセス単位である論理ブロックを識別するLBA(Logical Block Address)とをキーとして、8キロバイトのデータごとにノード111,112,121,122に分散配置される。
また、このストレージシステムでは、データが書き込まれる物理領域として、ストレージ113,114,123,124を束ねたストレージプールが利用される。ストレージプールに書き込まれるデータの位置は、ストレージプールにおけるアドレス(物理アドレス)により管理される。
図3は、ノードのハードウェア構成例を示す図である。なお、図3ではノード111のハードウェア構成について例示するが、ノード112,121,122についてもノード111と同様のハードウェア構成によって実現される。
ノード111は、プロセッサ131、メモリ132、ホストインタフェース(I/F)133、通信インタフェース(I/F)134およびドライブインタフェース(I/F)135を備える。なお、プロセッサ131は、図1に示した制御部1bの一例であり、メモリ132は、図1に示した記憶部1aの一例である。
プロセッサ131は、メモリ132からプログラムを読み出して処理する処理装置である。プロセッサ131は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。また、プロセッサ131は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
メモリ132は、DRAM(Dynamic RAM)などの揮発性記憶装置であり、ノード111の主記憶装置として使用される。メモリ132には、プロセッサ131に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ132には、プロセッサ131による処理に必要な各種データが格納される。
ホストインタフェース133は、ホストサーバ50と通信するためのインタフェース装置である。通信インタフェース134は、他のノード112,121,122と通信するためのインタフェース装置である。ドライブインタフェース135は、ストレージ113に含まれるSSDと通信するためのインタフェース装置である。
なお、プロセッサ131に実行されるプログラムは、例えば、可搬型記録媒体136に記憶され、メモリ132に読み込まれる。あるいは、プログラムは、ネットワークを介して接続されたコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてメモリ132に読み込まれる。
次に、ノード111,112,121,122の処理について詳しく説明する。以下の記載では、例としてノード111の処理について説明するが、他のノード112,121,122でも同様の処理が実行される。
図4は、ノードが備える処理機能の構成例を示す図である。ノード111は、上位接続部141、キャッシュ管理部142、重複排除部143、メタデータ管理部144、追記部145およびI/O部146を備える。これらの各部の処理は、例えば、プロセッサ131が所定のプログラムを実行することで実現される。また、ノード111は、ライトバッファ151、論物メタキャッシュ152、データユニット(DU)ヘッダキャッシュ153およびメタデータ記憶部154を備える。これらは、メモリ132の記憶領域によって実現される。
上位接続部141は、ホストサーバ50からI/O要求(書き込み要求、読み出し要求)を受け付ける。キャッシュ管理部142は、上位接続部141が受け付けたI/O要求に応じたI/O処理を、メモリ132に確保された図示しないキャッシュメモリの領域(ボリュームキャッシュ)を用いて制御する。重複排除部143は、I/O要求に応じてストレージ113に格納されるデータの重複を排除するための制御を行う。
メタデータ管理部144は、重複排除のために参照されるメタデータを管理する。追記部145は、データを連続的なデータユニットで管理し、RAID(Redundant Arrays of Inexpensive Disks)ユニットの単位でストレージ113に追記およびまとめ書きを行う。また、追記部145は、データの圧縮伸長を行う。I/O部146は、ストレージ113に対するRAIDユニットのデータの書き込みを行う。
ライトバッファ151には、追記部145によるまとめ書き対象のデータが一時的に格納される。論物メタキャッシュ152には、一部の論物メタデータをキャッシュされる。後述するように、論物メタデータとは、論理ボリュームの論理アドレスと物理アドレスとの変換に用いられるメタデータである。
データユニットヘッダキャッシュ153には、データブロックのヘッダ領域に含まれるデータユニットヘッダのデータがキャッシュされる。メタデータ記憶部154には、論物メタデータ以外のメタデータが格納される。例えば、メタデータ記憶部154には、データブロックマップ、リファレンスカウンタなどが格納される。
次に、ストレージシステムにおけるデータの管理方法について説明する。
まず、図5は、ストレージの記憶領域についての管理形態の例を示す図である。図5に示すように、ノード111は、ストレージ113に含まれる複数台のSSDを使用したストレージプール200を管理する。ストレージプール200は、RAIDによって管理される。本実施の形態では、RAID−6が用いられるものとする。なお、ノード111は、複数のストレージプール200を管理してもよい。
ストレージプール200は、1つ以上のティアを含み、ティアは、1つ以上のドライブグループを含む。ドライブグループは、RAIDによって管理されるSSDのグループであり、いわゆる「RAIDグループ」の一種である。ドライブグループは、例えば、それぞれ6台〜24台のSSDを含む。例えば、6台のSSDを含むドライブグループにおいては、1つのストライプについて、3台のSSDにユーザデータが記憶され、2台のSSDにパリティが記憶され、残りのSSDはホットスペア用に用いられる。
図5の例では、ストレージプール200は、ティア201を含む。また、ティア201は、SSD202a,202b,202c,・・・を含むドライブグループ202と、SSD203a,203b,203c,・・・を含むドライブグループ203とを含む。
図6は、RAIDユニットについて説明するための図である。ドライブグループに対しては、RAIDユニットを単位として書き込みが行われる。RAIDユニットは、ドライブグループに対してデータが書き込まれる際にライトバッファ151でバッファリングされるまとめ書き単位の領域である。換言すると、データはRAIDユニット単位でまとめてドライブグループに対して追記書きされる。RAIDユニットのサイズは、例として24メガバイトであるとする。
RAIDユニットには、複数のデータブロックが配置される。各データブロックは、スロットを用いて管理される。各データブロックは一定のサイズを有し、そのサイズは例として384キロバイトであるとする。この場合、RAIDユニットには64個のスロットが含まれる。
ストレージプール200での物理位置を示す物理番号は、ドライブグループ(DG)を識別するDG番号(DG#)と、RAIDユニット(RU)を識別するRU番号(RU#)と、スロットを識別するスロット番号(スロット#)との組み合わせによって示される。また、データブロックを識別するデータブロック番号(DB#)と物理番号との対応関係は、データブロックマップ161によって管理される。データブロックマップ161は、メタデータ記憶部154に記憶されるメタデータの1つである。
図6に示すデータブロックマップ161は、例として、DG番号が「1」(DG#1)であり、RU番号が「1」(RU#1)であるRAIDユニットについての情報を保持している。また、この例では、データブロック(DB)#101,#102,・・・,#164がそれぞれスロット#1,#2,・・・,#64に記憶されるように設定されている。
図7は、データブロックに対するデータの格納について説明するための図である。
論理ブロックは、ホストサーバ50からの論理ボリュームに対するアクセスの最小単位であり、そのサイズは例として512バイトであるとする。各論理ブロックは、論理ボリュームを示すLUNと、論理ブロックアドレス(LBA)とによって指定される。
上位接続部141は、書き込みが要求されたデータを512バイトの論理ブロックに分割する。また、上位接続部141は、論理ブロックのデータに基づくBCC(Block Check Code)を生成し、BCCを論理ブロックに付加する。BCCは、論理ブロックごとにデータの誤りをチェックするためのデータであり、「保証コード」と呼ばれる場合もある。BCCを付加することで、ノード111内で実施されるコピー処理や、ストレージプール200に対する書き込み処理、ストレージプール200からの読み出し処理の際に生じうるデータの誤りをチェックできるようになる。BCCのサイズは、例えば8キロバイトである。
BCCは、CRC(Cyclic Redundancy Check)とBID(Block Identifier)とを含む。CRCは、論理ブロックのデータに基づいて算出されるチェック符号であり、例として2バイトのサイズを有するものとする。BIDは、論理領域内のデータ位置をチェックするための情報である。例えば、BIDは、LBAに対応するカウント値である。このカウント値は、例えば、LBAをBig Endianで表現した場合の下位32ビットの値に相当する。BIDのサイズは、例として6バイトであるものとする。
一方、データの重複排除は、例として8キロバイト単位で行われる。重複排除部143は、書き込みが要求された16個の論理ブロックのデータを8キロバイトのデータにまとめて、重複の有無を判定する。以下の説明では、重複排除の対象となる、論理ブロック16個分のデータの集合を、「8KBデータ」と記載する。また、このとき、重複排除部143は、8KBデータに含まれる16個の論理ブロックに対応するBCCを、実データから切り離す。
重複排除部143は、8KBデータが重複していない(すなわち、同一のデータがストレージプール200に格納されていない)と判定した場合、8KBデータを追記部145に受け渡して、ストレージプール200への書き込みを要求する。追記部145は、重複排除部143からの8KBデータを圧縮し、圧縮後のデータをデータブロックに書き込む。以下、データブロックに書き込まれる、8KBデータに対応するデータを、「データユニット」と記載する。データユニットは重複が排除されたデータであるので、ストレージプール200内では同一内容のデータユニットは存在しない。
なお、8KBデータを圧縮することは必須ではない。そのため、データユニットとして8KBデータが非圧縮の状態のままデータブロックに書き込まれてもよい。
データブロックに対しては、データユニットが追記書きされる。追記部145は、データブロック内のペイロード領域の先頭側から順に、データユニットを書き込んでいく。換言すると、データユニットは、データブロック内のペイロード領域のうち、空き領域の先頭側に書き込まれる。ここでは、このような書き込み方法を「追記書き」と記載する。なお、データブロックに対するデータユニットの追記書きについては、後にあらためて説明する。
このようにしてデータユニットが格納されたデータブロックが、ストレージプール200に書き込まれる。上記のように論理ブロック間でのデータの重複が排除されることで、ユニークなデータユニットだけがストレージプール200に書き込まれる。これにより、ストレージプール200の使用容量を削減できるとともに、ストレージプール200に対するデータの書き込み回数を削減できる。書き込み先となるSSDのフラッシュメモリは、書き込み回数に制限があるが、上記の重複排除によって書き込み回数が削減されることで、フラッシュメモリの寿命を延ばすことができる。
ところで、論理ブロックに対応するBCCに含まれるデータのうち、CRCは、論理ブロックのデータに基づいて算出されるデータである。このため、複数の論理ブロック間で、実データ(論理ブロックのデータ)が同一であればCRCも同一になる。一方、BIDは、論理ブロックごとに異なる値になり得る。このため、論理ブロックの実データと対応するBCCとを一体化して重複排除の対象とすることは、重複排除の効率が著しく悪化するため、現実的に不可能である。このような理由から、BCCのデータ、特にBIDは、論理ブロックの実データとは別に、論物メタデータ162aを用いて管理される。
論物メタデータ162aは、8KBデータのそれぞれに対応付けて生成されるメタデータである。論物メタデータ162aの基本的な役割は、後述するように、論理アドレスと物理アドレスとの対応関係を保持することである。本実施の形態では、このような論物メタデータ162aに対して、8KBデータに含まれる各論理ブロックの実データに対応するCRCおよびBIDが格納される。
ここで、詳しくは後述するが、CRCを論物メタデータ162aに格納することの目的は、データの読み出しの際にストレージプール100のSSDにアクセスする回数を減らすとともに、ノード111にキャッシュしておく管理データの容量を減らす点にある。本実施の形態では、データ読み出しの際に、論物メタデータ162aと、データブロックのヘッダ領域内の管理データと、データブロックのペイロード領域内の実データとが、個別に読み出される。これらのうち、データブロックのヘッダ領域内の管理データのみノード111内にキャッシュし、残りをストレージプール200に配置しておくことで、データ読み出しの際にストレージプール200のSSDにアクセスする回数が削減される。その際に、CRCを、キャッシュ対象とするデータブロックのヘッダ領域でなく、論物メタデータ162aに格納しておくことで、キャッシュされるデータ容量が削減される。
一方、BIDについては、先頭の論理ブロックに対応するBIDのみが論物メタデータ162aに記録される。これは、8KBデータ内の先頭論理ブロックのBIDがわかれば、残りの論理ブロックのBIDは、先頭論理ブロックのBIDをカウントアップすることで復元できるからである。このように、論物メタデータ162aに対して8KBデータ内の先頭論理ブロックのBIDだけが記録されることで、論物メタデータ162aの記憶領域の容量を削減できる。
図8は、論物メタデータとデータブロックとの関係を示す図である。図8に示す論物メタデータ群162は、8KBデータごとの論物メタデータ162aの集合である。なお、論物メタデータ162aは、図1に示したメタデータ20の一例である。
論物メタデータ群162には、各論理ボリュームにおける8KBデータの領域ごとにエントリが存在し、各エントリの内容が論物メタデータ162aを示す。図8では、論物メタデータ162aとして、論物メタデータ162a1,162a2,162a3が例示されている。論物メタデータ162a1は、LUN#0で示される論理ボリューム内のある8KBデータに対応する。論物メタデータ162a2は、LUN#1で示される論理ボリューム内のある8KBデータに対応する。論物メタデータ162a3は、LUN#2で示される論理ボリューム内のある8KBデータに対応する。
前述のように、論物メタデータ162aは、論理アドレスと物理アドレスとの対応関係を保持するためのメタデータである。論物メタデータ162aには、物理アドレスを示すデータとして、データブロック番号(DB#)とインデックスが格納される。データブロック番号は、8KBデータに対応するデータユニットが格納されたデータブロックを識別する番号である。インデックスは、データブロック内でのデータユニットの番号を示す。
また、図8では、データブロック番号「101」のデータブロック(DB#101)が例示されている。図8に示すように、データブロック全体のサイズは384キロバイトである。データブロックは、1キロバイトのヘッダ領域と383キロバイトのペイロード領域とを含む。ペイロード領域には、データユニットが格納される。データユニットは、ペイロード領域に対して追記書きされる。
ヘッダ領域は、224バイトのデータブロックヘッダと、最大200個のデータユニットヘッダが格納されるデータユニットヘッダ領域とを含む。データユニットヘッダのサイズは4バイトである。ヘッダ領域の合計サイズが、SSDに対するアクセス単位である512バイトの整数倍(ここでは1キロバイト)となって、ペイロード領域の開始位置がアクセス単位の境界となるように、データブロックヘッダのサイズが調整されている。
データブロックヘッダは、データブロックに関する情報を記憶する領域である。データブロックヘッダには、例えば、データユニットが追記書き可能か否か、追記書きされているデータユニットの数、データユニットが次に追記書きされる位置に関する情報などが含まれる。
データユニットヘッダは、ペイロード領域に含まれるデータユニットにそれぞれ対応する。データユニットヘッダは、対応するデータユニットのインデックスに対応する位置にある。すなわち、データユニットヘッダ領域におけるデータユニットヘッダの順番は、ペイロード領域における対応するデータユニットの順番と一致する。データユニットヘッダには、オフセットとサイズとが格納される。オフセットは、対応するデータユニットのペイロード領域における書き込み開始位置(先頭位置)を示す。サイズは、対応するデータユニットのサイズ(データ長)を示す。
図8の例では、ペイロード領域の先頭から順にデータユニット#1,#2,#3が格納されている。また、図8の例では、「オフセット=0」を含むデータユニットヘッダは、データユニット#1の位置を指し示す。「オフセット=6」を含むデータユニットヘッダは、データユニット#2の位置を指し示す。「オフセット=14」を含むデータユニットヘッダは、データユニット#3の位置を指し示す。
一方、論物メタデータ162a1は、インデックス「1」により、「オフセット=0」を含むデータユニットヘッダを指し示している。したがって、追記部145は、論物メタデータ162a1に基づいて「オフセット=0」を含むデータユニットヘッダを参照し、このデータユニットヘッダに基づいてデータユニット#1を読み出すことができる。
同様に、追記部145は、「インデックス=1」を含む論物メタデータ162a2に基づいて「オフセット=6」を含むデータユニットヘッダを参照し、このデータユニットヘッダに基づいてデータユニット#2を読み出すことができる。また、追記部145は、「インデックス=2」を含む論物メタデータ162a3に基づいて「オフセット=6」を含むデータユニットヘッダを参照し、このデータユニットヘッダに基づいてデータユニット#2を読み出すことができる。なお、この例では、論物メタデータ162a2,162a3に対応する論理ブロックの実データが重複しており、この実データがデータユニット#2として格納されている。
図9は、論物メタデータの構成例を示す図である。図9に示すように、1つの8KBデータに対応する論物メタデータ162aには、インデックス(Data Unit Index)、BID、データブロック番号(Data Block No.)、CRC領域(CRC[0]〜CRC[15])が含まれる。論物メタデータ162aのサイズは、例えば64バイトである。インデックス、BID、データブロック番号、CRC領域は、例えばそれぞれ1バイト、6バイト、8バイト、32バイトのサイズを有する。
インデックスは、データブロック内でのデータユニットの番号を示す。データブロック番号は、データブロックの番号を示す。BIDは、データブロック内の先頭データユニットについての、論理領域におけるデータ位置を示す。このデータ位置は、LBAに対応するカウント値である。CRC領域には、データブロックに含まれる16個のデータユニットに対応する圧縮前のデータに対応するCRCが格納される。
図10は、重複排除に用いられるメタデータについて説明するための図である。図10に示すように、重複排除に用いられるメタデータとしては、前述のデータブロック(DB)マップ161、論物メタデータ群162に加え、リファレンスカウンタ(RC)テーブル163がある。リファレンスカウンタテーブル163は、物理番号とインデックスとによって識別されるデータと、リファレンスカウンタとを対応付ける情報である。リファレンスカウンタは、対応するデータの重複数(同一内容の8KBデータの数)を示す。
図10の論物メタデータ群162において、例えば、論理番号「1−1」で示される8KBデータは、データブロック(DB)番号「B1」のデータブロックの1番目に記憶される。ここで、論理番号「1−1」は、LUNが「1」でありLBAが「1」であることを示す。また、同じ内容の8KBデータは、重複排除により、データブロック番号とインデックスが同じになる。図10では、論理番号「1−2」,「2−1」,「2−4」で示される8KBデータの内容が同じであるため、論理番号「1−2」,「2−1」,「2−4」は、データブロック番号「B2」とインデックス「2」に対応付けられる。
また、論物メタデータ群162に記録されたデータブロックの物理位置(スロットの位置)は、データブロックマップ161によって示される。図10のデータブロックマップ161においては、例えば、データブロック番号「B1」が物理番号「1−1−1」に対応付けられている。ここで、物理番号「1−1−1」は、ドライブグループ番号が「1」でRAIDユニット番号が「1」であるRAIDユニットにおけるスロットのうち、スロット番号が「1」であるスロットを示す。
さらに、図10のリファレンスカウンタテーブル163においては、例えば、物理番号「2−1−5」およびインデックス「2」に対応するリファレンスカウンタが「3」となっている。これは、物理番号「2−1−5」で示されるスロット、すなわちデータブロック「B2」に含まれる、インデックス「2」で示されるデータユニットについての重複数が「3」であることを示す。図10の例では、論理番号「1−2」,「2−1」,「2−4」で示される3つの8KBデータを圧縮した圧縮データが、物理番号「2−1−5」およびインデックス「2」で示される同一のデータユニットとしてストレージプール200に格納されている。
なお、図示しないが、重複排除に用いられる他のメタデータとしては、例えば、各データユニットに基づいて算出されたハッシュ値を保持するメタデータがある。このメタデータは、書き込みが要求された8KBデータが重複しているか否かを判定するために参照される。
ところで、図10に示すメタデータのうち、データブロックマップ161とリファレンスカウンタテーブル163は、ノード111内のメタデータ記憶部154に保持される。一方、論物メタデータ群162に含まれる論物メタデータ162aについては、次の図11に示すように、すべてがストレージプール200に保持されるとともに、それらの一部がノード111内の論物メタキャッシュ152にキャッシュされる。
図11は、論物メタデータおよびデータブロックの格納状態について説明するための図である。なお、図11においてストレージプール200の内部に示される四角形は、それぞれ24メガバイトのRAIDユニットを示している。
ストレージプール200では、例えば4テラバイトの論理ボリュームごとに32ギガバイトの論物メタ領域が確保される。図11では、LUN#0で示される論理ボリュームに対応する論物メタ領域211aと、LUN#1で示される論理ボリュームに対応する論物メタ領域211bとが例示されている。論物メタデータ群162に含まれる論物メタデータ162aのうち、LUN#0で示される論理ボリュームに対応するすべての論物メタデータ162aが、論物メタ領域211aに格納される。また、LUN#1で示される論理ボリュームに対応するすべての論物メタデータ162aが、論物メタ領域211bに格納される。
一方、ノード111のメモリ132に確保された論物メタキャッシュ152には、論物メタデータ群162に含まれる論物メタデータ162aの一部だけがキャッシュされる。論物メタデータ162aは、論物メタキャッシュ152においては論理ボリュームごとに1ページ(例えば4キロバイト)分だけ記憶される。あるLUN(「第1のLUN」とする)に対応する論物メタデータ162aが探索される際に、第1のLUNに対応するページが論物メタキャッシュ152上にない場合には、他の第2のLUNに対応するページがページアウトされる。そして、第1のLUNに対応するページがストレージプール200から論物メタキャッシュ152に読み込まれる。
また、ストレージプール200には、データブロックが格納されるデータブロック領域212が確保される。ここで、上記の論物メタ領域は、論理ボリュームの作成時に動的領域から割り当てられ、固定領域化される。ここで、動的領域とは、ストレージプール200のRAIDユニットの中から動的に割り当てられる領域である。一方、次の図12に示すように、データユニットの書き込みの際に、データブロック領域212からRAIDユニットが割り当てられて、そのRAIDユニットに対応する書き込み領域がライトバッファ151に確保される。
図12は、データの追記書きについて説明するための図である。新たなRAIDユニットの分のデータユニットが書き込まれる際に、ストレージプール200のデータブロック領域212から書き込み先となるRAIDユニットが割り当てられる。また、そのRAIDユニットに対応するライトバッファ151がメモリ132に確保される。例えば図12では、DG#1およびRU#15で示されるRAIDユニットが割り当てられ、そのRAIDユニットに対応するライトバッファ151がメモリ132に確保されている。
そして、例えばLUN#1において8KBデータD11の書き込み要求が発生したとする。8KBデータD11が重複していなかったとすると、ライトバッファ151上のデータブロック#1のヘッダ領域にデータユニットヘッダが書き込まれ、8KBデータD11が圧縮されてデータブロック#1のペイロードに書き込まれ、データブロックヘッダが更新される。その後、LUN#2において8KBデータD12の書き込み要求が発生したとする。8KBデータD12が重複していなかったとすると、ライトバッファ151上のデータブロック#1のヘッダ領域にデータユニットヘッダが追記され、8KBデータD12が圧縮されてデータブロック#1のペイロードに追記され、データブロックヘッダが更新される。
このようにして、ライトバッファ151上のデータブロック#1において、ヘッダ領域またはペイロード領域が一杯になる(使用可能な空き領域がなくなる)と、データブロック#1にはそれ以上追記されなくなり、書き込み先が次のデータブロック#2に移行する。その後、ライトバッファ151上のすべてのデータブロックについてヘッダ領域またはペイロード領域が一杯になると、ライトバッファ151の内容が、データブロック領域212から割り当てられていたRAIDユニットに書き出される。すなわち、RAIDユニットの分だけデータがまとめ書きされる。そして、ライトバッファ151が解放される。さらにその後、次の8KBデータの書き込みが行われる際には、データブロック領域212からRAIDユニットが割り当てられ、そのRAIDユニットに対応するライトバッファ151がメモリ132に確保される。
以上のように、書き込みが要求された8KBデータは、RAIDユニット単位でまとめられた状態でストレージプール200に一度に書き込まれる。これにより、ストレージプール200に対するランダムライトが発生しにくくなる。アクセス先となるSSDのフラッシュメモリは、ランダムライトが発生すると書き込み性能が大きく悪化するという特性がある。上記のまとめ書きによってランダムライトが発生しにくくすることで、ストレージプール200に対する書き込み性能を向上させることができる。
図13は、データユニットヘッダのキャッシュについて説明するための図である。上記のように、ストレージプール200のデータブロック領域212には、それぞれヘッダ領域とペイロード領域とを含むデータブロックが格納される。また、各データブロックのヘッダ領域のデータのうち、データユニットヘッダのデータは、ノード111のメモリ132に確保されたデータユニットヘッダキャッシュ153にキャッシュされる。
データユニットヘッダは、ストレージプール200からのデータ読み出しの際に、読み出し対象のデータが格納されたデータユニットのデータブロックにおける位置を取得するために読み出される。このようなデータユニットヘッダをノード111のメモリ132に確保されたデータユニットヘッダキャッシュ153に保持しておくことで、データ読み出し時におけるストレージプール200に対するアクセス回数を削減できる。その結果、データ読み出しに要する時間を短縮でき、データ読み出し速度を向上させることができる。
また、前述のように、データユニットヘッダに格納されるデータは、オフセットとサイズとに限定されている。これにより、各データユニットヘッダのサイズを小さくすることができ、その結果として、データユニットヘッダが保持されるデータユニットヘッダキャッシュ153全体のサイズを抑制できる。例えば、本実施の形態では、各データユニットに対応するデータユニットヘッダのサイズは4バイトであり、各データブロックのデータユニットヘッダ領域はデータユニット200個分のデータユニットヘッダを格納できるように確保される。これに対して、例えば各データユニットに対応するCRCをデータユニットヘッダに格納した場合、データユニットヘッダのサイズは32バイト分増加するので、データユニットヘッダキャッシュ153全体のサイズは増大する。
本実施の形態では、このように各データユニットヘッダのサイズを小さくしたことから、データブロック領域222内のすべてのデータユニットヘッダ(すべてのデータブロック内のデータユニットヘッダ領域のデータ)が、データユニットヘッダキャッシュ153に保持されるものとする。この場合、データユニットヘッダキャッシュ153のサイズを次の図14に示すように設定することで、すべてのデータユニットヘッダを保持できるようになる。
図14は、データユニットヘッダキャッシュのサイズの例を示す図である。図14では、ドライブ数、スロット数およびRAIDユニット(RU)数の設定値ごとに、データユニット(DU)ヘッダキャッシュ153のサイズを示している。ドライブ数は、ドライブグループ(DG)に含まれるドライブ(SSD)の数を示す。スロット数は、RAIDユニットに含まれるスロットの数を示す。RAIDユニット数は、ドライブグループに含まれるRAIDユニットの数を示す。データブロック数は、ドライブ数、スロット数およびRAIDユニット数の設定値におけるデータブロックの総数を示す。
データユニットヘッダキャッシュ153のサイズは、ここでは例として、データユニットの圧縮率の関係からデータブロック当たり平均10個のデータユニットが格納されたものとして計算されている。例えば、ドライブ数が「6」、スロット数が「64」、RAIDユニット数が「262144」であるとする。この場合、データユニットヘッダキャッシュ153として6144メガバイトの領域をメモリ132上に確保することで、ドライブグループ内のすべてのデータユニットヘッダをデータユニットヘッダキャッシュ153に保持しておくことができる。
なお、データユニットヘッダキャッシュ153には、データブロック領域222内の一部のデータユニットヘッダのみがキャッシュされてもよい。この場合、データユニットヘッダキャッシュ153には、各データブロックのデータユニットヘッダ領域単位で、例えばLRU(Least Recently Used)方式により、データユニットヘッダがキャッシュされる。例えば、メモリ132上にデータユニットヘッダキャッシュ153を一定サイズ分確保する場合、上記のように各データユニットヘッダのサイズが小さくなっていることから、一定サイズの領域にキャッシュできるデータユニットヘッダの数を増やすことができる。これにより、キャッシュヒット率が向上して、データ読み出し時におけるストレージプール200へのアクセス回数を削減できる。その結果、全体としてデータ読み出し速度を向上させることができる。
次に、データ書き込み時およびデータ読み出し時におけるノード111の処理について、シーケンス図を用いて説明する。
まず、図15、図16は、重複がない場合の書き込み処理例を示すシーケンス図である。
[ステップS11]キャッシュ管理部142(図示せず)は、重複排除部143に書き込み対象のデータを出力し、このデータのライトバックを要求する。ライトバックの対象は、メモリ132上のボリュームキャッシュに格納された論理ボリュームのデータのうち、ダーティデータである。また、書き込み対象のデータには、ホストサーバ50からの書き込み時における上位接続部141の処理により、512バイトの論理ブロックごとにBCCが付加されている。
[ステップS12]重複排除部143は、書き込み対象のデータおよびBCCを、論理ブロック16個ずつ、すなわち8KBデータごとにまとめる。これ以後、8KBデータごとに処理が実行される。重複排除部143は、書き込み対象の8KBデータのハッシュ値を算出し、データユニットごとのハッシュ値を保持するメタデータ(図示せず)を参照して、書き込み対象の8KBデータが重複しているかを判定する。算出されたハッシュ値がメタデータ内に存在していた場合、データが重複していると判定される。ここでは、データが重複していないと判定されたとする。
[ステップS13]重複排除部143は、新規のデータユニットの書き込みを追記部145に要求する。
[ステップS14]追記部145は、データユニットの追記のためのRAIDユニット(RU)が割り当てられていない場合、I/O部146に対してRAIDユニットの割り当てを要求する。
[ステップS15]I/O部146は、ストレージプール200のデータブロック領域212から空きのRAIDユニットを選択し、選択したRAIDユニットのRAIDユニット番号を追記部145に通知する。これにより、RAIDユニットが割り当てられる。追記部145は、割り当てられたRAIDユニットに対応するライトバッファ151をメモリ132に設定する。
なお、RAIDユニットが割り当て済みの場合、ステップS14,S15の実行は省略される。
[ステップS16]追記部145は、データユニットヘッダの内容に基づいて、データブロックにおける新規データユニットの追記位置を決定する。
[ステップS17]追記部145は、書き込み対象の8KBデータを圧縮し、圧縮後のデータ、すなわち新規データユニットを、決定された追記位置に追記書きする。
[ステップS18]追記部145は、新規データユニットを追記したことが反映されるように、その追記先のデータブロックにおけるデータブロックヘッダおよびデータユニットヘッダ領域を更新する。データユニットヘッダ領域には、追記されたデータユニットに対応するデータユニットヘッダが追記される。また、追記部145は、追記されたデータユニットヘッダをデータユニットヘッダキャッシュ153にキャッシュする。
[ステップS19]追記部145は、追記されたデータをまとめ書きするかを判定する。RAIDユニット内のすべてのデータブロックのヘッダ領域またはペイロード領域が一杯の場合に、まとめ書きすると判定される。この場合、追記部145は、I/O部146にまとめ書きを要求する。I/O部146は、ライトバッファ151に格納されたデータを、ストレージプール200のデータブロック領域212のうち、割り当てられていたRAIDユニットの領域に書き込む。書き込みが完了すると、追記部145はライトバッファ151を解放する。
[ステップS20]追記部145は、新規データユニットの書き込み完了を示す応答を重複排除部143に出力する。
[ステップS21]重複排除部143は、メタデータ管理部144にリファレンスカウンタの更新を要求する。
[ステップS22]メタデータ管理部144は、書き込まれたデータユニットに対応するリファレンスカウンタをインクリメントする。この段階では、リファレンスカウンタは「0」から「1」にインクリメントされる。また、データが上書きされた場合、メタデータ管理部144は、上書き前のデータユニットに対応するリファレンスカウンタをデクリメントする。
[ステップS23]メタデータ管理部144は、リファレンスカウンタの更新完了を示す応答を重複排除部143に出力する。
[ステップS24]重複排除部143は、メタデータ管理部144に論物メタデータ162aの更新を要求する。このとき、重複排除部143は、書き込み対象の8KBデータを示すLUNおよびLBAと、BIDと、書き込まれたデータユニットの位置を示すデータブロック番号およびインデックスとを、メタデータ管理部144に通知する。これらに加えて、重複排除部143は、書き込み対象の8KBデータ内の各論理ブロックのデータに対応するCRCをメタデータ管理部144に通知する。
[ステップS25]メタデータ管理部144は、書き込み対象の8KBデータに対応する論物メタデータ162aを更新する。このとき、論物メタデータ162aには、BID、データブロック番号、インデックスとともに、CRCが書き込まれる。
この段階では、更新された論物メタデータ162aは、メモリ132上の論物メタキャッシュ152にキャッシュされる。そして、この後の所定のタイミングで、キャッシュされた論物メタデータ162aの内容が、ストレージプール200の論物メタ領域に反映される。なお、更新対象の論物メタデータ162aが論物メタキャッシュ152にキャッシュされていなかった場合、図16に破線の矢印で示すように、この論物メタデータ162aはI/O部146を介してストレージプール200の論物メタ領域から読み出される。
[ステップS26]メタデータ管理部144は、論物メタデータ162aの更新完了を示す応答を重複排除部143に出力する。
[ステップS27]重複排除部143は、ライトバックの完了を示す応答をキャッシュ管理部142に出力する。
以上の処理により、書き込み対象のデータに対応するCRCは、論物メタデータ162aに格納される。また、書き込まれたデータブロックの位置を示すオフセットおよびサイズを含むデータユニットヘッダは、データユニットヘッダキャッシュ153にキャッシュされる。
図17は、重複がある場合の書き込み処理例を示すシーケンス図である。
[ステップS31]キャッシュ管理部142は、図15のステップS11と同様に、重複排除部143に書き込み対象のデータを出力し、このデータのライトバックを要求する。
[ステップS32]重複排除部143は、図15のステップS12と同様に、書き込み対象のデータおよびBCCを、論理ブロック16個ずつ、すなわち8KBデータごとにまとめる。これ以後、8KBデータごとに処理が実行される。重複排除部143は、書き込み対象の8KBデータのハッシュ値を算出し、データユニットごとのハッシュ値を保持するメタデータを参照して、書き込み対象の8KBデータが重複しているかを判定する。ここでは、図15のステップS12とは異なり、データが重複していると判定されたとする。
[ステップS33]重複排除部143は、対応するデータユニットの位置を示すデータブロック番号およびインデックスを特定し、特定されたデータブロック番号をメタデータ管理部144に出力して、DB−RU変換を要求する。DB−RU変換とは、データブロック番号を物理番号に変換する処理である。
[ステップS34]メタデータ管理部144は、データブロックマップ161に基づいて、データブロック番号に対応する物理番号(DG番号、RU番号、スロット番号)を特定する。
[ステップS35]メタデータ管理部144は、特定された物理番号を重複排除部143に出力する。
[ステップS36]重複排除部143は、物理番号およびインデックスに対応するリファレンスカウンタの更新をメタデータ管理部144に要求する。
[ステップS37]メタデータ管理部144は、該当するリファレンスカウンタをインクリメントする。
[ステップS38]メタデータ管理部144は、リファレンスカウンタの更新完了を示す応答を重複排除部143に出力する。
以後のステップS39〜S42では、図16のステップS24〜S27と同様の処理が実行される。すなわち、重複排除部143は、メタデータ管理部144に論物メタデータ162aの更新を要求し(ステップS39)、メタデータ管理部144は、論物メタデータ162aを更新する(ステップS40)。このとき、論物メタデータ162aには、書き込み対象の8KBデータ内の各論理ブロックのデータに対応するCRCが書き込まれる。メタデータ管理部144が重複排除部143に応答すると(ステップS41)、重複排除部143は、ライトバックの完了を示す応答をキャッシュ管理部142に出力する(ステップS42)。
以上のように、データの重複がある場合には、ストレージプール200に対するデータユニットの書き込みは行われず、メタデータの更新のみが行われる。また、データの重複がない場合と同様に、書き込み対象のデータに対応するCRCは、論物メタデータ162aに格納される。一方、書き込み対象の8KBデータに対応するデータユニットの位置を示すデータユニットヘッダは、図17の処理の実行開始時点ですでにデータユニットヘッダキャッシュ153にキャッシュされた状態になっている。
図18は、読み出し処理例を示すシーケンス図である。
[ステップS51]キャッシュ管理部142(図示せず)は、論理アドレスを用いてデータのステージングを重複排除部143に要求する。例えば、ホストサーバ50から読み出しが要求されたデータが、メモリ132のボリュームキャッシュにキャッシュされていない場合に、このデータのステージングが要求される。
[ステップS52]重複排除部143は、読み出しが要求された論理アドレスの範囲を、論理ブロック16個ずつ、すなわち8KBデータごとに分割する。これ以後、8KBデータごとに処理が実行される。重複排除部143は、読み出し対象の8KBデータを示す論理アドレスに対応する論物メタデータ162aの取得を、メタデータ管理部144に要求する。
[ステップS53]メタデータ管理部144は、要求された論物メタデータ162aが論物メタキャッシュ152にキャッシュされていない場合、論物メタデータ162aの読み出しをI/O部146に要求する。
[ステップS54]I/O部146は、要求された論物メタデータ162aをストレージプール200の論物メタ領域から読み出し、メタデータ管理部144に出力する。このとき、読み出された論物メタデータ162aには、読み出し対象の8KBデータに対応するCRCが含まれている。
なお、要求された論物メタデータ162aが論物メタキャッシュ152にキャッシュされていた場合、ステップS53,S54の処理は実行されず、メタデータ管理部144は、論物メタデータ162aを論物メタキャッシュ152から読み出す。
[ステップS55]メタデータ管理部144は、論物メタデータ162aを重複排除部143に出力する。重複排除部143は、論物メタデータ162aをメモリ132に一時的に格納する。
[ステップS56]重複排除部143は、論物メタデータ162aから取得したデータブロック番号をメタデータ管理部144に出力して、DB−RU変換を要求する。
[ステップS57]メタデータ管理部144は、データブロックマップ161に基づいて、データブロック番号に対応する物理番号(DG番号、RU番号、スロット番号)を特定する。
[ステップS58]メタデータ管理部144は、特定された物理番号を重複排除部143に出力する。
[ステップS59]重複排除部143は、特定された物理番号と、論物メタデータ162aから取得したインデックスとを追記部145に出力して、データユニット(DU)の読み出しを要求する。
[ステップS60]追記部145は、読み出しが要求されたデータユニットに対応するデータユニットヘッダを、データユニットヘッダキャッシュ153から取得する。
[ステップS61]追記部145は、取得したデータユニットヘッダから、対応するデータブロックにおけるデータユニットのオフセット位置を取得する。
[ステップS62]追記部145は、取得したオフセット位置をI/O部146に出力して、データユニットの読み出しを要求する。
[ステップS63]I/O部146は、オフセット位置に基づき、ストレージプール200のデータブロック領域212からデータユニットを読み出して、追記部145に出力する。
[ステップS64]追記部145は、読み出されたデータユニット(圧縮データ)を伸張する。これにより、8KBデータが復元される。
[ステップS65]追記部145は、復元された8KBデータを重複排除部143に出力する。
[ステップS66]ステップS52〜S65の処理が読み出し対象の8KBデータごとに実行されることで、読み出しが要求されたデータが得られる。重複排除部143は、読み出しが要求されたデータを512バイトごとの論理ブロックに分割し、ステップS55で取得した論物メタデータ162aから取得したCRCおよびBIDを用いて、各論理ブロックのデータにBCCを付加する。重複排除部143は、各論理ブロックのデータをBCCとともにキャッシュ管理部142に出力する。図示しないが、BCC付きの論理ブロックのデータは上位接続部141に出力され、論理ブロックごとにBCCチェックが行われる。各論理ブロックのデータに異常がない場合、これらのデータからBCCが切り離されてホストサーバ50に出力される。また、出力されたデータは、キャッシュ管理部142によりボリュームキャッシュにキャッシュされる。
以上の図18の処理では、論物メタデータ162aの読み出し(ステップS54)と、データユニットの読み出し(ステップS63)という2回だけ、ストレージプール200に対するアクセスが行われる。一方、データユニットヘッダはデータユニットヘッダキャッシュ153に保持されているので、データユニットヘッダの取得時(ステップS60)にはストレージプール200に対するアクセスは行われない。
ここで、例えば、CRCがデータユニットヘッダに格納され、かつ、データユニットヘッダがメモリ132に保持されていない場合を考える。この場合、データユニットヘッダの取得時(ステップS60)において、CRCを含むデータユニットヘッダがストレージプール200から読み出される。このため、データの読み出しの際に3回、ストレージプール200に対するアクセスが行われる。
これに対して、図18に示した本実施の形態の読み出し処理では、ストレージプール200に対するアクセス回数が2回に減少する。これはすなわち、データ読み出し処理の間にストレージ113内のSSDにアクセスする回数が減少することを意味する。これにより、データ読み出しに要する時間を短縮でき、データ読み出し速度を向上させることができる。
例えば、ノード111からストレージ113に対するデータアクセスのコマンドは多数、同時並行的に発行されている。コマンド発行の多重度(仕掛かり中のコマンド数)が上がってアクセス負荷が高くなるほど、ストレージ113のレイテンシ(応答時間)が長くなる。例えば、CRCがデータユニットヘッダに格納され、かつ、データユニットヘッダがメモリ132に保持されていない場合、読み出しコマンドの多重度が「256」のとき、4キロバイト当たりのデータについて930マイクロ秒といったレイテンシが検出されている。また、読み出しコマンドの多重度が「16」の場合でも、4キロバイト当たりのデータについて100マイクロ秒を超えるレイテンシが検出されている。これに対して、図18に示した本実施の形態の読み出し処理を用いた場合、読み出しコマンドの多重度が「256」のとき、レイテンシを635マイクロ秒まで改善された例が確認されている。
また、本実施の形態では、前述のように、CRCをデータユニットヘッダでなく論物メタデータ162aに格納したことで、データユニットヘッダに格納されるデータがオフセットとサイズとに限定されている。このため、データユニットヘッダが保持されるデータユニットヘッダキャッシュ153全体のサイズを抑制することが可能となっている。すなわち、本実施の形態によれば、ノード111は、メモリ132を効率的に利用しつつ、読み出し処理を高速化できる。
なお、データユニットヘッダの一部のみをデータユニットヘッダキャッシュ153にキャッシュした場合には、ステップS60でキャッシュミスした場合、データユニットヘッダはストレージプール200のデータブロック領域212から読み出される。しかし、この場合でも、データユニットヘッダをキャッシュしない場合と比較して、データ読み出し処理におけるストレージプール200に対するアクセス回数を、2回に抑制できる可能性が生じる。このため、データ読み出し処理の時間短縮効果が得られる。
図19は、読み出し処理例を示すフローチャートである。
[ステップS71]キャッシュ管理部142は、論理アドレスを用いてデータのステージングを重複排除部143に要求する。
[ステップS72]重複排除部143は、読み出しが要求された論理アドレスの範囲を、論理ブロック16個ずつ、すなわち8KBデータごとに分割する。これ以後、8KBデータごとに処理が実行される。
重複排除部143は、読み出し対象の8KBデータを示す論理アドレスに対応する論物メタデータ162aの取得を、メタデータ管理部144に要求する。メタデータ管理部144は、要求された論物メタデータ162aを重複排除部143に出力する。このとき、要求された論物メタデータ162aが論物メタキャッシュ152にキャッシュされている場合、論物メタデータ162aは論物メタキャッシュ152から読み出される。一方、要求された論物メタデータ162aが論物メタキャッシュ152にキャッシュされていない場合、論物メタデータ162aはストレージプール200の論物メタ領域から読み出される。
[ステップS73]重複排除部143は、読み出し対象の8KBデータに含まれる、先頭以外の論理ブロックのBIDを、論物メタデータ162aに含まれるBIDをインクリメントすることで復元する。
[ステップS74]重複排除部143は、論物メタデータ162aから取得したデータブロック番号をメタデータ管理部144に出力して、DB−RU変換を要求する。メタデータ管理部144は、データブロックマップ161に基づいて、データブロック番号に対応する物理番号(DG番号、RU番号、スロット番号)を特定し、重複排除部143に出力する。
[ステップS75]重複排除部143は、特定された物理番号と、論物メタデータ162aから取得したインデックスとを追記部145に出力して、データユニット(DU)の読み出しを要求する。追記部145は、読み出しが要求されたデータユニットに対応するデータユニットヘッダを、データユニットヘッダキャッシュ153から取得する。
[ステップS76]追記部145は、取得したデータユニットヘッダから、対応するデータブロックにおけるデータユニットのオフセット位置を取得し、取得したオフセット位置をI/O部146に出力して、データユニットの読み出しを要求する。I/O部146は、オフセット位置に基づき、ストレージプール200のデータブロック領域212からデータブロックを読み出して、追記部145に出力する。追記部145は、読み出されたデータブロック(圧縮データ)を伸張する。これにより、8KBデータが復元される。追記部145は、復元された8KBデータを重複排除部143に出力する。
[ステップS77]重複排除部143は、復元された8KBデータを512バイトごとの論理ブロックに分割し、ステップS72で取得した論物メタデータ162aから取得したCRCおよびBIDを用いて、各論理ブロックのデータにBCCを付加する。重複排除部143は、各論理ブロックのデータをBCCとともにキャッシュ管理部142に出力する。各論理ブロックのデータはBCCとともに上位接続部141に出力される。上位接続部141は、論理ブロックごとにBCCチェックを実行する。CRCによりデータの誤りの有無がチェックされ、BIDによりデータ位置の誤りの有無(アドレスの整合性)がチェックされる。後者のチェックでは、例えば、論理ブロックのLBAと、取得されたBIDとが一致しない場合、エラーと判定される。
[ステップS78]BCCチェックによりエラーが検出されなかった場合、処理はステップS79に進められる。一方、BCCチェックによりエラーが検出された場合、上位接続部141は、読み出しエラーの発生を示す応答をホストサーバ50に送信する。
[ステップS79]キャッシュ管理部142は、読み出されたデータをメモリ132のボリュームキャッシュにステージングする。また、上位接続部141は、BCCを分離したデータをホストサーバ50に送信する。
〔第3の実施の形態〕
次に、第2の実施の形態におけるノードの処理の一部が変更された第3の実施の形態について説明する。第3の実施の形態に係るストレージシステムの構成や、ノードが備える基本的な処理機能の構成は第2の実施の形態と同様であるので、第3の実施の形態における構成要素には、基本的に第2の実施の形態と同じ符号を付して説明する。
図20は、第3の実施の形態におけるデータブロックの構成例を示す図である。図20に示すように、第3の実施の形態では、各論理ブロックのデータに対応するCRCを、論物メタデータ212aではなく、データブロックのペイロード領域にデータユニットとともに格納する点で、第2の実施の形態とは異なる。
CRCは、対応するデータユニットと連続的に読み出し可能なように、ペイロード領域のうち、対応するデータユニットに隣接する領域に配置される。図20では例として、データユニットの後ろ側に対応するCRCが配置されているが、データユニットの前側に対応するCRCが配置されてもよい。一方、データユニットヘッダに格納されるデータをオフセットとサイズとに限定し、データユニットヘッダをデータユニットヘッダキャッシュ153にキャッシュする点については、第2の実施の形態と共通する。
図21は、第3の実施の形態における論物メタデータの構成例を示す図である。第3の実施の形態では、図9に示した論物メタデータ162aの代わりに、図21に示す論物メタデータ162bが利用される。論物メタデータ162bは、論理ブロックごとのCRCを含まない点で論物メタデータ162aとは異なる。論物メタデータ162bのサイズは、CRCが除去されたことにより、32バイトに縮小されている。
第3の実施の形態における書き込み処理は、次のように行われる。ここでは図15〜図17を参照しながら、第2の実施の形態と異なる処理について説明する。
重複がある場合の書き込み処理では、図15のステップS17において、圧縮された8KBデータ(新規データユニット)とともにCRCが、データブロックのペイロードに追記書きされる。また、図16のステップS25では、論物メタデータ162aに対してBID、データブロック番号およびインデックスが書き込まれるが、CRCは書き込まれない。重複がない場合の書き込み処理では、図17のステップS40において、論物メタデータ162aに対してBID、データブロック番号およびインデックスが書き込まれるが、CRCは書き込まれない。
図22は、第3の実施の形態における読み出し処理例を示すシーケンス図である。図22では、図18と同じ内容の処理には同じステップ番号を付して示しており、それらの説明は省略する。図22の処理では、図18のステップS54,S55,S63,S65の代わりに、それぞれステップS54a,S55a,S63a,S65aが実行される。
ステップS54aでは、I/O部146は、重複排除部143から要求された論物メタデータ162aをストレージプール200の論物メタ領域から読み出し、メタデータ管理部144に出力する。このとき、図18のステップS54とは異なり、読み出された論物メタデータ162aにはCRCは含まれていない。したがって、ステップS55aでは、論物メタデータ162aが重複排除部143に出力されるものの、CRCは出力されない。なお、要求された論物メタデータ162aが論物メタキャッシュ152にキャッシュされていた場合には、ステップS53,S54aの処理は実行されず、論物メタデータ162aは論物メタキャッシュ152から読み出され、重複排除部143に出力される。
一方、ステップS63aでは、I/O部146は、追記部145からのオフセット位置に基づき、ストレージプール200のデータブロック領域212から、データユニットと、これに対応するCRCとを読み出す。データユニットと対応するCRCとは連続した領域に格納されているので、これらはストレージプール200に対する1回のアクセス要求に応じて読み出される。この後、読み出されたデータユニットが伸張されて8KBデータが復元され、ステップS65aでは、8KBデータとともにCRCが重複排除部143に出力される。
このようにして、重複排除部143は、読み出し対象の8KBブロックと、これに対応するBCC、すなわちBIDおよびCRCを取得する。そして、重複排除部143は、ステップS66においてこれらに基づき、読み出し対象の各論理ブロックのデータとBCCとをキャッシュ管理部142に出力する。
以上の図22の処理では、図18の処理と同様に、論物メタデータ162aの読み出し(ステップS54a)と、データユニットおよびCRCの読み出し(ステップS63a)という2回だけ、ストレージプール200に対するアクセスが行われる。一方、データユニットヘッダはデータユニットヘッダキャッシュ153に保持されているので、データユニットヘッダの取得時(ステップS60)にはストレージプール200に対するアクセスは行われない。
これにより、CRCがデータユニットヘッダに格納され、かつ、データユニットヘッダがメモリ132に保持されていない場合と比較して、データ読み出し処理の間にストレージ113内のSSDにアクセスする回数が削減される。したがって、データ読み出しに要する時間を短縮でき、データ読み出し速度を向上させることができる。
また、第2の実施の形態と同様に、第3の実施の形態でも、CRCをデータユニットヘッダでなく論物メタデータ162aに格納したことで、データユニットヘッダに格納されるデータがオフセットとサイズとに限定されている。このため、データユニットヘッダが保持されるデータユニットヘッダキャッシュ153全体のサイズを抑制することが可能となっている。すなわち、第3の実施の形態によれば、ノード111は、メモリ132を効率的に利用しつつ、読み出し処理を高速化できる。
なお、上記の各実施の形態に示した装置(例えば、ストレージ制御装置1、ノード111,112,121,122)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(Hard Disk Drive:HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) ストレージ装置を制御するストレージ制御装置において、
記憶部と、
データが格納されたデータ領域と、前記データ領域における前記データの位置情報が格納されたヘッダ領域とを有するデータブロックが、前記ストレージ装置に配置され、かつ、前記データに対応する論理アドレスと、前記データが格納された前記データブロックを示す識別情報と、前記データブロックにおける前記データの格納順を示すインデックスと、前記データについてのチェック符号とを含むメタデータが、前記ストレージ装置に配置され、かつ、前記位置情報が前記記憶部にキャッシュされるように、前記データの格納処理を制御し、
前記論理アドレスを用いて前記データの読み出しが要求された場合、前記ストレージ装置から前記メタデータを読み出し、読み出した前記メタデータに含まれる前記識別情報および前記インデックスに基づいて前記記憶部から前記位置情報を読み出し、読み出した前記位置情報に基づいて前記ストレージ装置内の前記データブロックから前記データを読み出し、読み出した前記メタデータに含まれる前記チェック符号を用いて、読み出した前記データの正当性をチェックする、制御部と、
を有するストレージ制御装置。
(付記2) 前記制御部は、前記論理アドレスとは異なる他の論理アドレスを有する、前記データと同一内容の他のデータの書き込みが要求された場合、前記他の論理アドレスと、前記識別情報と同一内容の他の識別情報と、前記インデックスと同一内容の他のインデックスと、前記チェック符号と同一内容の他のチェック符号とを含む他のメタデータを、前記ストレージ装置に格納するとともに、前記他のデータの前記ストレージ装置への書き込みを省略する、
付記1記載のストレージ制御装置。
(付記3) 前記制御部は、前記データブロックに対応するバッファ領域を前記記憶部に確保し、前記バッファ領域における前記データブロックの前記データ領域に対して、前記データを含む複数のデータを書き込みが要求された順に追記し、前記データ領域に対する追記が不可能な状態になった場合、前記データブロックを前記バッファ領域から前記ストレージ装置に書き出す、
付記1記載のストレージ制御装置。
(付記4) 前記チェック符号は、前記データについての誤り検出符号である、
付記1乃至3のいずれか1つに記載のストレージ制御装置。
(付記5) ストレージ装置を制御するストレージ制御装置において、
記憶部と、
データと前記データについてのチェック符号とが隣接して格納されたデータ領域と、前記データ領域における前記データの位置情報が格納されたヘッダ領域とを有するデータブロックが、前記ストレージ装置に配置され、かつ、前記データに対応する論理アドレスと、前記データが格納された前記データブロックを示す識別情報と、前記データブロックにおける前記データの格納順を示すインデックスとを含むメタデータが、前記ストレージ装置に配置され、かつ、前記位置情報が前記記憶部にキャッシュされるように、前記データの格納処理を制御し、
前記論理アドレスを用いて前記データの読み出しが要求された場合、前記ストレージ装置から前記メタデータを読み出し、読み出した前記メタデータに含まれる前記識別情報および前記インデックスに基づいて前記記憶部から前記位置情報を読み出し、読み出した前記位置情報に基づいて前記ストレージ装置内の前記データブロックから前記データと前記チェック符号とを読み出し、読み出した前記チェック符号を用いて、読み出した前記データの正当性をチェックする、制御部と、
を有するストレージ制御装置。
(付記6) 前記制御部は、前記論理アドレスとは異なる他の論理アドレスを有する、前記データと同一内容の他のデータの書き込みが要求された場合、前記他の論理アドレスと、前記識別情報と同一内容の他の識別情報と、前記インデックスと同一内容の他のインデックスとを含む他のメタデータを、前記ストレージ装置に格納するとともに、前記他のデータの前記ストレージ装置への書き込みを省略する、
付記5記載のストレージ制御装置。
(付記7) 前記制御部は、前記データブロックに対応するバッファ領域を前記記憶部に確保し、前記バッファ領域における前記データブロックの前記データ領域に対して、前記データを含む複数のデータを書き込みが要求された順に追記し、前記データ領域に対する追記が不可能な状態になった場合、前記データブロックを前記バッファ領域から前記ストレージ装置に書き出す、
付記5記載のストレージ制御装置。
(付記8) 前記チェック符号は、前記データについての誤り検出符号である、
付記5乃至7のいずれか1つに記載のストレージ制御装置。
(付記9) ストレージ装置を制御するためのストレージ制御プログラムにおいて、
コンピュータに、
データが格納されたデータ領域と、前記データ領域における前記データの位置情報が格納されたヘッダ領域とを有するデータブロックが、前記ストレージ装置に配置され、かつ、前記データに対応する論理アドレスと、前記データが格納された前記データブロックを示す識別情報と、前記データブロックにおける前記データの格納順を示すインデックスと、前記データについてのチェック符号とを含むメタデータが、前記ストレージ装置に配置され、かつ、前記位置情報が前記コンピュータが備える記憶部にキャッシュされるように、前記データの格納処理を制御し、
前記論理アドレスを用いて前記データの読み出しが要求された場合、前記ストレージ装置から前記メタデータを読み出し、読み出した前記メタデータに含まれる前記識別情報および前記インデックスに基づいて前記記憶部から前記位置情報を読み出し、読み出した前記位置情報に基づいて前記ストレージ装置内の前記データブロックから前記データを読み出し、読み出した前記メタデータに含まれる前記チェック符号を用いて、読み出した前記データの正当性をチェックする、
処理を実行させるストレージ制御プログラム。
(付記10) 前記コンピュータに、
前記論理アドレスとは異なる他の論理アドレスを有する、前記データと同一内容の他のデータの書き込みが要求された場合、前記他の論理アドレスと、前記識別情報と同一内容の他の識別情報と、前記インデックスと同一内容の他のインデックスと、前記チェック符号と同一内容の他のチェック符号とを含む他のメタデータを、前記ストレージ装置に格納するとともに、前記他のデータの前記ストレージ装置への書き込みを省略する、
処理をさらに実行させる付記9記載のストレージ制御プログラム。
(付記11) 前記コンピュータに、
前記データブロックに対応するバッファ領域を前記記憶部に確保し、前記バッファ領域における前記データブロックの前記データ領域に対して、前記データを含む複数のデータを書き込みが要求された順に追記し、前記データ領域に対する追記が不可能な状態になった場合、前記データブロックを前記バッファ領域から前記ストレージ装置に書き出す、
処理を実行させる付記9記載のストレージ制御プログラム。
(付記12) ストレージ装置を制御するためのストレージ制御プログラムにおいて、
コンピュータに、
データと前記データについてのチェック符号とが隣接して格納されたデータ領域と、前記データ領域における前記データの位置情報が格納されたヘッダ領域とを有するデータブロックが、前記ストレージ装置に配置され、かつ、前記データに対応する論理アドレスと、前記データが格納された前記データブロックを示す識別情報と、前記データブロックにおける前記データの格納順を示すインデックスとを含むメタデータが、前記ストレージ装置に配置され、かつ、前記位置情報が前記コンピュータが備える記憶部にキャッシュされるように、前記データの格納処理を制御し、
前記論理アドレスを用いて前記データの読み出しが要求された場合、前記ストレージ装置から前記メタデータを読み出し、読み出した前記メタデータに含まれる前記識別情報および前記インデックスに基づいて前記記憶部から前記位置情報を読み出し、読み出した前記位置情報に基づいて前記ストレージ装置内の前記データブロックから前記データと前記チェック符号とを読み出し、読み出した前記チェック符号を用いて、読み出した前記データの正当性をチェックする、
処理を実行させるストレージ制御プログラム。
(付記13) 前記コンピュータに、
前記論理アドレスとは異なる他の論理アドレスを有する、前記データと同一内容の他のデータの書き込みが要求された場合、前記他の論理アドレスと、前記識別情報と同一内容の他の識別情報と、前記インデックスと同一内容の他のインデックスとを含む他のメタデータを、前記ストレージ装置に格納するとともに、前記他のデータの前記ストレージ装置への書き込みを省略する、
処理をさらに実行させる付記12記載のストレージ制御プログラム。
(付記14) 前記コンピュータに、
前記データブロックに対応するバッファ領域を前記記憶部に確保し、前記バッファ領域における前記データブロックの前記データ領域に対して、前記データを含む複数のデータを書き込みが要求された順に追記し、前記データ領域に対する追記が不可能な状態になった場合、前記データブロックを前記バッファ領域から前記ストレージ装置に書き出す、
処理を実行させる付記12記載のストレージ制御プログラム。
1 ストレージ制御装置
1a 記憶部
1b 制御部
2 ストレージ装置
11,12 データブロック
11a,12a データ領域
11b,12b ヘッダ領域
20 メタデータ
D1,D2 データ
H1,H2 位置情報

Claims (8)

  1. ストレージ装置を制御するストレージ制御装置において、
    記憶部と、
    データが格納されたデータ領域と、前記データ領域における前記データの位置情報が格納されたヘッダ領域とを有するデータブロックが、前記ストレージ装置に配置され、かつ、前記データに対応する論理アドレスと、前記データが格納された前記データブロックを示す識別情報と、前記データブロックにおける前記データの格納順を示すインデックスと、前記データについてのチェック符号とを含むメタデータが、前記ストレージ装置に配置され、かつ、前記位置情報が前記記憶部にキャッシュされるように、前記データの格納処理を制御し、
    前記論理アドレスを用いて前記データの読み出しが要求された場合、前記ストレージ装置から前記メタデータを読み出し、読み出した前記メタデータに含まれる前記識別情報および前記インデックスに基づいて前記記憶部から前記位置情報を読み出し、読み出した前記位置情報に基づいて前記ストレージ装置内の前記データブロックから前記データを読み出し、読み出した前記メタデータに含まれる前記チェック符号を用いて、読み出した前記データの正当性をチェックする、制御部と、
    を有するストレージ制御装置。
  2. 前記制御部は、前記論理アドレスとは異なる他の論理アドレスを有する、前記データと同一内容の他のデータの書き込みが要求された場合、前記他の論理アドレスと、前記識別情報と同一内容の他の識別情報と、前記インデックスと同一内容の他のインデックスと、前記チェック符号と同一内容の他のチェック符号とを含む他のメタデータを、前記ストレージ装置に格納するとともに、前記他のデータの前記ストレージ装置への書き込みを省略する、
    請求項1記載のストレージ制御装置。
  3. 前記制御部は、前記データブロックに対応するバッファ領域を前記記憶部に確保し、前記バッファ領域における前記データブロックの前記データ領域に対して、前記データを含む複数のデータを書き込みが要求された順に追記し、前記データ領域に対する追記が不可能な状態になった場合、前記データブロックを前記バッファ領域から前記ストレージ装置に書き出す、
    請求項1記載のストレージ制御装置。
  4. ストレージ装置を制御するストレージ制御装置において、
    記憶部と、
    データと前記データについてのチェック符号とが隣接して格納されたデータ領域と、前記データ領域における前記データの位置情報が格納されたヘッダ領域とを有するデータブロックが、前記ストレージ装置に配置され、かつ、前記データに対応する論理アドレスと、前記データが格納された前記データブロックを示す識別情報と、前記データブロックにおける前記データの格納順を示すインデックスとを含むメタデータが、前記ストレージ装置に配置され、かつ、前記位置情報が前記記憶部にキャッシュされるように、前記データの格納処理を制御し、
    前記論理アドレスを用いて前記データの読み出しが要求された場合、前記ストレージ装置から前記メタデータを読み出し、読み出した前記メタデータに含まれる前記識別情報および前記インデックスに基づいて前記記憶部から前記位置情報を読み出し、読み出した前記位置情報に基づいて前記ストレージ装置内の前記データブロックから前記データと前記チェック符号とを読み出し、読み出した前記チェック符号を用いて、読み出した前記データの正当性をチェックする、制御部と、
    を有するストレージ制御装置。
  5. 前記制御部は、前記論理アドレスとは異なる他の論理アドレスを有する、前記データと同一内容の他のデータの書き込みが要求された場合、前記他の論理アドレスと、前記識別情報と同一内容の他の識別情報と、前記インデックスと同一内容の他のインデックスとを含む他のメタデータを、前記ストレージ装置に格納するとともに、前記他のデータの前記ストレージ装置への書き込みを省略する、
    請求項4記載のストレージ制御装置。
  6. 前記制御部は、前記データブロックに対応するバッファ領域を前記記憶部に確保し、前記バッファ領域における前記データブロックの前記データ領域に対して、前記データを含む複数のデータを書き込みが要求された順に追記し、前記データ領域に対する追記が不可能な状態になった場合、前記データブロックを前記バッファ領域から前記ストレージ装置に書き出す、
    請求項4記載のストレージ制御装置。
  7. ストレージ装置を制御するためのストレージ制御プログラムにおいて、
    コンピュータに、
    データが格納されたデータ領域と、前記データ領域における前記データの位置情報が格納されたヘッダ領域とを有するデータブロックが、前記ストレージ装置に配置され、かつ、前記データに対応する論理アドレスと、前記データが格納された前記データブロックを示す識別情報と、前記データブロックにおける前記データの格納順を示すインデックスと、前記データについてのチェック符号とを含むメタデータが、前記ストレージ装置に配置され、かつ、前記位置情報が前記コンピュータが備える記憶部にキャッシュされるように、前記データの格納処理を制御し、
    前記論理アドレスを用いて前記データの読み出しが要求された場合、前記ストレージ装置から前記メタデータを読み出し、読み出した前記メタデータに含まれる前記識別情報および前記インデックスに基づいて前記記憶部から前記位置情報を読み出し、読み出した前記位置情報に基づいて前記ストレージ装置内の前記データブロックから前記データを読み出し、読み出した前記メタデータに含まれる前記チェック符号を用いて、読み出した前記データの正当性をチェックする、
    処理を実行させるストレージ制御プログラム。
  8. ストレージ装置を制御するためのストレージ制御プログラムにおいて、
    コンピュータに、
    データと前記データについてのチェック符号とが隣接して格納されたデータ領域と、前記データ領域における前記データの位置情報が格納されたヘッダ領域とを有するデータブロックが、前記ストレージ装置に配置され、かつ、前記データに対応する論理アドレスと、前記データが格納された前記データブロックを示す識別情報と、前記データブロックにおける前記データの格納順を示すインデックスとを含むメタデータが、前記ストレージ装置に配置され、かつ、前記位置情報が前記コンピュータが備える記憶部にキャッシュされるように、前記データの格納処理を制御し、
    前記論理アドレスを用いて前記データの読み出しが要求された場合、前記ストレージ装置から前記メタデータを読み出し、読み出した前記メタデータに含まれる前記識別情報および前記インデックスに基づいて前記記憶部から前記位置情報を読み出し、読み出した前記位置情報に基づいて前記ストレージ装置内の前記データブロックから前記データと前記チェック符号とを読み出し、読み出した前記チェック符号を用いて、読み出した前記データの正当性をチェックする、
    処理を実行させるストレージ制御プログラム。
JP2019002552A 2019-01-10 2019-01-10 ストレージ制御装置およびストレージ制御プログラム Pending JP2020112972A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019002552A JP2020112972A (ja) 2019-01-10 2019-01-10 ストレージ制御装置およびストレージ制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019002552A JP2020112972A (ja) 2019-01-10 2019-01-10 ストレージ制御装置およびストレージ制御プログラム

Publications (1)

Publication Number Publication Date
JP2020112972A true JP2020112972A (ja) 2020-07-27

Family

ID=71667741

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019002552A Pending JP2020112972A (ja) 2019-01-10 2019-01-10 ストレージ制御装置およびストレージ制御プログラム

Country Status (1)

Country Link
JP (1) JP2020112972A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113010114A (zh) * 2021-03-19 2021-06-22 昆山迈致治具科技有限公司 一种数据处理方法、装置、计算机设备及存储介质
JP2023011448A (ja) * 2021-07-12 2023-01-24 株式会社日立製作所 バックアップシステム及び方法
JP2023055998A (ja) * 2021-03-29 2023-04-18 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113010114A (zh) * 2021-03-19 2021-06-22 昆山迈致治具科技有限公司 一种数据处理方法、装置、计算机设备及存储介质
JP2023055998A (ja) * 2021-03-29 2023-04-18 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
US11880566B2 (en) 2021-03-29 2024-01-23 Hitachi, Ltd. Storage system and control method of storage system including a storage control unit that performs a data amount reduction processing and an accelerator
JP7472341B2 (ja) 2021-03-29 2024-04-22 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
JP2023011448A (ja) * 2021-07-12 2023-01-24 株式会社日立製作所 バックアップシステム及び方法
US11762574B2 (en) 2021-07-12 2023-09-19 Hitachi, Ltd. Backup system and method
JP7387679B2 (ja) 2021-07-12 2023-11-28 株式会社日立製作所 バックアップシステム及び方法

Similar Documents

Publication Publication Date Title
CN107787489B (zh) 包括层级的文件存储系统
CN106716334B (zh) 文件系统卷内的高效数据移动
JP5603997B2 (ja) ストレージ装置及びデータ制御方法
US7584229B2 (en) Method and system for priority-based allocation in a storage pool
US7346732B2 (en) Storage system
US10866743B2 (en) Storage control device using index indicating order of additional writing of data, storage control method using index indicating order of additional writing of data, and recording medium recording program using index indicating order of additional writing of data
CN111475427A (zh) 使用低延迟非易失性存储器进行逻辑至物理映射管理
US10203876B2 (en) Storage medium apparatus, method, and program for storing non-contiguous regions
US7716445B2 (en) Method and system for storing a sparse file using fill counts
JP6677740B2 (ja) ストレージシステム
US20180307440A1 (en) Storage control apparatus and storage control method
US20120278560A1 (en) Pre-fetching in a storage system that maintains a mapping tree
US8495010B2 (en) Method and system for adaptive metadata replication
JP2020112972A (ja) ストレージ制御装置およびストレージ制御プログラム
JP6820060B2 (ja) ストレージ装置、ストレージ装置の制御方法及びプログラム
JP6011153B2 (ja) ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US20190243758A1 (en) Storage control device and storage control method
US7865673B2 (en) Multiple replication levels with pooled devices
US7480684B2 (en) Method and system for object allocation using fill counts
US7873799B2 (en) Method and system supporting per-file and per-block replication
US10990535B2 (en) Storage control apparatus and storage control method for deduplication
US20180307419A1 (en) Storage control apparatus and storage control method
JP2018181207A (ja) ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
JP6760916B2 (ja) ストレージコントローラ、ストレージアレイ装置、データ格納方法、およびプログラム
US11954079B2 (en) Inline deduplication for CKD using hash table for CKD track meta data