(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023136808
(43)【公開日】2023-09-29
(54)【発明の名称】ストレージ装置及びそのデータ回復方法
(51)【国際特許分類】
G06F 3/06 20060101AFI20230922BHJP
G06F 16/11 20190101ALI20230922BHJP
【FI】
G06F3/06 540
G06F3/06 301Y
G06F16/11
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022042708
(22)【出願日】2022-03-17
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】別納 健市
(72)【発明者】
【氏名】山本 彰
(72)【発明者】
【氏名】長尾 尚
(72)【発明者】
【氏名】松上 一樹
(57)【要約】
【課題】ドライブ故障に伴う冗長性低下期間を短縮する。
【解決手段】ストレージ装置は、複数論理階層において、記憶ドライブに格納されているデータを管理する。複数論理階層は、複数記憶ドライブからなるパリティグループの階層より上の追記階層を含む。ストレージ装置は、追記階層において、受信したホストデータを、空き領域に書き込む。ストレージ装置は、障害記憶ドライブの新規記憶ドライブへの交換のためのデータ回復処理において、障害記憶ドライブを含む第1パリティグループに関連づけられている追記階層内の第1論理領域に対するガベージコレクション処理を実行する。ガベージコレクション処理は、第1論理領域から有効データを選択して、第1パリティグループと異なる第2パリティグループに関連づけられている第2論理領域にコピーする。
【選択図】
図2
【特許請求の範囲】
【請求項1】
複数論理階層において、記憶ドライブに格納されているデータを管理するストレージ装置であって、
ホストと通信を行うホストインタフェースと、
プロセッサと、を含み、
前記複数論理階層は、複数記憶ドライブからなるパリティグループの階層より上の追記階層を含み、
前記プロセッサは、
前記追記階層において、前記ホストインタフェースを介して受信したホストデータを、空き領域に書き込み、
障害記憶ドライブの新規記憶ドライブへの交換のためのデータ回復処理において、前記障害記憶ドライブを含む第1パリティグループに関連づけられている前記追記階層内の第1論理領域に対するガベージコレクション処理を実行し、
前記ガベージコレクション処理は、前記第1論理領域から有効データを選択して、前記第1パリティグループと異なる第2パリティグループに関連づけられている第2論理領域にコピーする、ストレージ装置。
【請求項2】
請求項1に記載のストレージ装置であって、
前記プロセッサは、正常記憶ドライブで構成されたパリティグループを前記第2パリティグループとして選択する、ストレージ装置。
【請求項3】
請求項1に記載のストレージ装置であって、
前記プロセッサは、ガベージ量が第1閾値以上の、前記第1パリティグループに関連付けられている前記追記階層内の論理領域に対して、前記ガベージコレクション処理を実行すると判定する、ストレージ装置。
【請求項4】
請求項3に記載のストレージ装置であって、
前記プロセッサは、データ回復処理外において、正常記憶ドライブからなるパリティグループに割り当てられている前記追記階層内の論理領域のうち、ガベージ量が第2閾値以上の論理領域に対してガベージコレクション処理を実行し、
前記第1閾値は前記第2閾値以下である、ストレージ装置。
【請求項5】
請求項3に記載のストレージ装置であって、
前記プロセッサは、前記第1パリティグループに関連付けられている前記ガベージコレクション処理の対象外の前記論理領域それぞれに対して、コレクションコピー処理を実行し、
前記コレクションコピー処理は、前記第1パリティグループ内の正常記憶ドライブのデータ及びパリティから復元されたデータ及びパリティを、前記新規記憶ドライブに格納する、ストレージ装置。
【請求項6】
ストレージ装置によるデータ回復方法であって、
前記ストレージ装置は、複数論理階層において、記憶ドライブに格納されているデータを管理し、前記複数論理階層は、複数記憶ドライブからなるパリティグループの階層より上の追記階層を含み、
前記ストレージ装置は、前記追記階層において、受信したホストデータを空き領域に書き込み、
前記ストレージ装置は、障害記憶ドライブの新規記憶ドライブへの交換のためのデータ回復処理において、前記障害記憶ドライブを含む第1パリティグループに関連づけられている前記追記階層内の第1論理領域に対するガベージコレクション処理を実行し、
前記ガベージコレクション処理は、前記第1論理領域から有効データを選択して、前記第1パリティグループと異なる第2パリティグループに関連づけられている第2論理領域にコピーする、データ回復方法。
【請求項7】
請求項6に記載のデータ回復方法であって、
前記ストレージ装置は、正常記憶ドライブで構成されたパリティグループを前記第2パリティグループとして選択する、データ回復方法。
【請求項8】
請求項6に記載のデータ回復方法であって、
前記ストレージ装置は、ガベージ量が第1閾値以上の、前記第1パリティグループに関連付けられている前記追記階層内の論理領域に対して、前記ガベージコレクション処理を実行すると判定する、データ回復方法。
【請求項9】
請求項8に記載のデータ回復方法であって、
前記ストレージ装置は、データ回復処理外において、正常記憶ドライブからなるパリティグループに割り当てられている前記追記階層内の論理領域のうち、ガベージ量が第2閾値以上の論理領域に対してガベージコレクション処理を実行し、
前記第1閾値は前記第2閾値以下である、データ回復方法。
【請求項10】
請求項8に記載のデータ回復方法であって、
前記ストレージ装置は、前記第1パリティグループに関連付けられている前記ガベージコレクション処理の対象外の前記論理領域それぞれに対して、コレクションコピー処理を実行し、
前記コレクションコピー処理は、前記第1パリティグループ内の正常記憶ドライブのデータ及びパリティから復元されたデータ及びパリティを、前記新規記憶ドライブに格納する、データ回復方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はストレージ装置におけるデータ回復に関する。
【背景技術】
【0002】
ストレージシステムにおいては、一部の物理ドライブが故障した際であっても、データの冗長性を維持し、運用を継続することが求められている。これを実現する技術として、例えば、非特許文献1では、ストレージシステム内でドライブ故障が発生した場合であっても、パリティと呼ばれる冗長コードをもちいることで、故障したドライブと組になるドライブに記録されたデータから、故障ドライブに記録されていたデータを交換後のドライブに復元することで、データの復元を可能にする技術が開示されている。
【0003】
また、ストレージシステムの記憶媒体に掛かるコストを低減する手段として、データ圧縮技術や重複排除技術などのデータ削減技術が普及している。これらのデータ削減技術を適用する場合、ホストからストレージシステムに対して書き込まれるデータサイズと、実際に記憶媒体に書き込まれるデータサイズの間に差が生じる。そのため、記憶媒体の記憶領域を効果的に利用するために、データ削減適用後のデータを空き領域に前詰めで書き込んでいく追記型データ格納方式(例えば、Log-Structured Storage)が用いられている。
【0004】
追記型データ格納方式では、データが更新されると、更新前データに対してアクセスしなくなる。このような状態のデータをガベージと呼ぶ。ホストがデータ更新を繰り返し、ストレージシステムがデータの追記を続けることで、ストレージシステム内の空き領域が減少していく。このため、ガベージを含んだ領域を選択し、有効データを別の空き領域にコピーした後、当該領域を解放して再利用可能にする処理(ガベージコレクション)を定期的に行い、空き領域を確保する必要がある。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】David A. Patterson, Garth A. Gibson, and Randy H.Katz, “A case for redundant arrays of inexpensive disks (RAID)”, In Proceedings of the 1988 ACM SIGMOD International Conference on Management of Data, Chicago, Illinois, September 1988, P.109-116.
【発明の概要】
【発明が解決しようとする課題】
【0006】
ストレージシステム内のドライブに障害が発生した場合、同一パリティグループ内の正常ドライブ内のデータをもとに、故障したドライブに記録されていたデータの再生成(コレクションコピー)を行い、交換後のドライブに記録しなおす必要がある。ところで、追記型データ格納方式では、物理ドライブ内に含まれるガベージが多いほど、ドライブ故障時のデータ再生成処理において、本来不要であるデータに対するコレクションコピー処理の割合が増える。これにより、コレクションコピー処理に要する時間が延伸する。
【0007】
ドライブ故障からの復旧中に別のドライブが故障すると、データロストが発生する可能性がある。したがって、システムの堅牢性を保つためには、ドライブ復旧に要する時間を短縮することが求められる。
【課題を解決するための手段】
【0008】
本発明の一態様は、複数論理階層において、記憶ドライブに格納されているデータを管理するストレージ装置であって、ホストと通信を行うホストインタフェースと、プロセッサと、を含み、前記複数論理階層は、複数記憶ドライブからなるパリティグループの階層より上の追記階層を含み、前記プロセッサは、前記追記階層において、前記ホストインタフェースを介して受信したホストデータを、空き領域に書き込み、障害記憶ドライブの新規記憶ドライブへの交換のためのデータ回復処理において、前記障害記憶ドライブを含む第1パリティグループに関連づけられている前記追記階層内の第1論理領域に対するガベージコレクション処理を実行し、前記ガベージコレクション処理は、前記第1論理領域から有効データを選択して、前記第1パリティグループと異なる第2パリティグループに関連づけられている第2論理領域にコピーする。
【発明の効果】
【0009】
本発明の一態様により、追記型データ格納方式を採用するストレージシステムにおいて、ドライブ故障に伴う冗長性低下期間を短縮し、データロストの可能性を減少させることができる。
【図面の簡単な説明】
【0010】
【
図1】一実施例におけるストレージシステムのハードウェア構成を示す図
【
図2】一実施例におけるデータ回復処理の概要を説明する図
【
図4】一実施例におけるホストアドレス管理テーブルを示す図
【
図5】一実施例におけるメタデータ管理テーブルを示す図
【
図6】一実施例におけるページ管理テーブルを示す図
【
図7】一実施例におけるパリティグループ管理テーブルを示す図
【
図8】一実施例におけるドライブ管理テーブルを示す図
【
図11】一実施例におけるコレクションコピー処理を示す図
【
図12】一実施例におけるガベージコレクション処理を示す図
【発明を実施するための形態】
【0011】
以下、図面に基づいて、本発明の実施例を説明する。添付図面では、機能的に同じ要素を同じ番号で表示する場合がある。添付図面は、本発明の原理に則った具体的な実施形態と実施例とを示している。それらの実施形態及び実施例は、本発明の理解のためのものであり、本発明を限定的に解釈するために用いてはならない。
【0012】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号(又は要素のID(例えば識別番号))を使用することがある。例えば、複数のページを区別しない場合には、「ページ70」と記載し、各ページを区別する場合には、「ページ70A」、「ページ70B」のように記載する。他の要素も同様である。
【0013】
本本実施例では、ストレージ装置は追記型データ格納方式を採用する。本実施例では、ドライブ障害発生時にガベージコレクションによってドライブ復旧時間を短縮する方法を述べる。
【0014】
図1は、本明細書の一実施例におけるストレージシステム100の概略を示す図である。ストレージシステム100は、ストレージ装置11と、ストレージ装置11に接続されたホスト計算機40を含む。ホスト計算機40は、ネットワーク41を介してストレージ装置11に接続される。ホスト計算機40は、物理的な計算機でもよいし、物理的な計算機上で実行される仮想的な計算機でもよい。また、ホスト計算機40は、ストレージシステムにおいて実行される仮想的な計算機でもよい。
【0015】
ストレージ装置11は、1以上のストレージコントローラ22と、1以上のストレージコントローラ22に接続された複数のドライブ29とを有する。
図1の構成例において、ストレージ装置11は、二つのストレージコントローラ22を含む。
【0016】
ストレージコントローラ22は、ホスト計算機40との通信を行うホストインタフェース(I/F)23、装置全体の制御を行うCPU24、CPU24で使用されるプログラム及び情報を格納するメモリ25、及び、物理的な記憶ドライブ29(単にドライブとも呼ぶ)との通信を行うドライブI/F26を備える。これら構成要素の数は任意である。
図1に示す構成例において、複数のドライブ29はドライブ筐体に収容されている。ドライブ29は、例えば不揮発性のデータ記憶媒体を有する装置であり、SSD(Solid State Drive)でもHDD(Hard Disk Drive)でもよい。
【0017】
図2は、本明細書の一実施例における処理の概要を示す図である。複数のドライブが一つのパリティグループを構成している。パリティグループは、RAID(Redundant Arrays of Inexpensive Disks)グループとも呼ばれる。
図2の構成例において、ドライブ29A~29Dがパリティグループ80Aを構成、ドライブ29E~29Hがパリティグループ80Bを構成している。
【0018】
パリティグループにおいて、ホスト計算機40から受信したホストデータ(ユーザデータ)と、ホストデータから生成された冗長コード(パリティと呼ぶ)とが、ドライブに分散して格納されている。パリティグループ内でドライブ故障が発生した場合であっても、パリティをもちいることで、パリティ―グループ内の他のドライブに記録されたデータから、故障ドライブに記録されていたデータを復元することができる。パリティを生成するホストデータブロックの数や、生成されるパリティの数は、設計により決められ得る。
【0019】
図2を参照し、パリティグループ80Aのドライブ29Aが回復対象のドライブであり、ドライブ29Aを別のドライブに交換し、データの回復を行う処理を説明する。CPU24は、ドライブ29Aを含むパリティグループ80Aに割り当てられている各ページに対して、当該ページに含まれるガベージの量をチェックし、ガベージ量が所定の閾値以上のとき、当該ページを後述するガベージコレクション対象とする。
【0020】
後述するようにページは、プールにおいて管理するための論理記憶領域の単位である。プール内のページは、ホストデータを格納し、パリティは格納されていない。ページは、一つのパリティグループの記憶領域に一意に割り当てられている。以下の説明においてページサイズは一定であるが、一定でなくてもよい。
【0021】
例えば、ページ70Aは、ホストデータa~ホストデータxを格納している。ページ70A、には、閾値以上のガベージ量を含まれ、ガベージコレクション処理が実行される。なお、ガベージ量によらずガベージコレクション処理の対象ページを決定してよく、パリティグループ80Aの全てのページをガベージコレクション処理としてもよい。
【0022】
CPU24は、当該ページ70Aに含まれるホストデータのうち、有効データ(
図2では、データb及びデータx)を正常ページに移行する。ここで正常ページとは、ストレージ装置11内のパリティグループ80のうち、故障ドライブ29を含まないパリティグループ80に割り当てられているページ70である。
図2の例では、例えばパリティグループ80Bに割り当てられているページ70Bが、正常ページに該当する。ページ70Aに含まれるすべての有効データの移行が完了したら、CPU24は、ページ70Aを未使用ページに遷移させる。
【0023】
CPU24は、パリティグループ80Aに割り当てられているページ70のうち、ガベージ量が閾値未満のページ70に対しては、ガベージコレクション処理を実施せず、コレクションコピーによりデータ復元を行う。
図2では、ページ70Cは、ガベージ量が閾値未満のページである。ここでは、CPU24は、パリティグループ80A内の正常ドライブ29B、29C、29Dに記録されたデータ及びパリティを読み出し、これらのデータ及びパリティから、ドライブ29A用のデータ及びパリティを復元し、交換後のドライブ29Aに格納する。
【0024】
これらの処理が完了した時点で、パリティグループ80Aに割り当てられている各ページ70に含まれるデータは、正常ページ70に移行済であるか、コレクションコピー処理によって復元済となっているため、回復処理を完了とする。
【0025】
<論理構成>
図3は、本実施形態におけるストレージ論理構成を説明する図である。LUN50は、ホスト計算機40から認識される論理的なドライブであり、ホストI/OはLUN50上の論理的なアドレス空間に対して実行される。
【0026】
プール60は、1以上のLUN50及び1以上のパリティグループに紐づけられる論理的な記憶領域(単に論理領域とも呼ぶ)である。本実施例において、LUN50に格納されているホストデータは、圧縮及び/又は重複排除されて、プール60に格納される。例えば、LUN50内のデータA、データB及び、データCそれぞれが圧縮されて、データa、データb、及びデータcが生成され、プール60に格納される。データaはページ70Aに格納され、データb及びデータcはページ70Bに格納されている。なお、圧縮/重複排除処理のようなデータ削減処理が、省略されていてもよい。
【0027】
プール60は、ページ70により管理される。ページ70は、プール60を管理する単位領域であり、パリティグループ80内の論理記憶領域に関連付けられる。プール60は、追書き空間と呼ぶ階層であり、各ページ70において圧縮後データは前詰めに配置される。これにより、効率的にデータを格納できる。
【0028】
ホスト計算機40による更新ライト及び新規ライトの双方において、受信されたホストデータ(ライトデータ)は、ページ70内の空き領域の先頭に格納される。ホスト計算機40によって既存ホストデータ(既存)が更新されると、新規ホストデータがページ70内の空き領域の先頭に格納され、元々格納されていた旧ホストデータは無効データ(ガベージ)となる。
【0029】
ページ70は、データを格納するための論理的な記憶領域である。ページ70は、複数ドライブ29から構成されるパリティグループ80内の論理的な記憶領域に紐づけられる。
図3の構成例において、プール60内のページ70Aは、パリティグループ80Aに割り当てられ、ページ70Bは、パリティグループ80B割り当てられている。
【0030】
パリティグループ80は、複数のドライブ29によって構成される。複数のドライブ29を組み合わせて論理的な記憶媒体を構成することで、パリティグループ80内のドライブが故障した場合に冗長性を担保する。パリティグループ80の論理記憶領域は、ドライブ29の物理記憶領域に紐づけられる。
【0031】
図3に示すように、ストレージ論理構成は階層構造を有し、ストレージ装置11は、データを複数の論理階層において管理する。
図3は、LUN50の階層、パリティグループ80の階層及びそれらの間のプール60の階層を示す。上述のように、プール60の階層は、追書き階層である。
図3は、一つのLUN50及び一つのプール60を示すが、複数のLUN及び複数のプールがストレージ装置11において定義され得る。階層における記憶領域は、隣接する上及び/又は下の階層の記憶領域を関連付けられている。
図3は三つの論理階層を示すが、他の階層が定義されていてもよい。
【0032】
<ホストアドレス管理テーブル>
図4は、本実施例におけるホストアドレス管理テーブル201を説明する図である。ホストアドレス管理テーブル201は、CPU24により管理され、例えば、ドライブ29に格納され、メモリ25にロードされる。ホストアドレス管理テーブル201の各エントリは、LUN上のホストLBA(論理ブロックアドレス)の範囲に対応するページ番号及び当該ページ内のアドレス範囲を記録する。以下、ホストアドレス管理テーブル201の各カラムを説明する。
【0033】
カラム2011は、LUN上のホストLBA範囲を記録する。カラム2012は、当該ホストLBA範囲にマッピングされるページの識別子(ページ番号)を記録する。カラム2013は、当該ホストLBA範囲にマッピングされるページ内のアドレス範囲を記録する。
【0034】
<メタデータ管理テーブル>
図5は、本実施例におけるメタデータ管理テーブル202を説明する図である。メタデータ管理テーブル202は、CPU24により管理され、例えば、ドライブ29に格納され、メモリ25にロードされる。メタデータ管理テーブル202の各エントリは、各ページ70に含まれるデータの論理アドレスと、当該データが格納先である物理アドレス(パリティグループ80内アドレス)との対応関係を管理するテーブルである。
【0035】
具体的には、カラム2021は、ページの識別子(ページ番号)を記録する。カラム2022は、ページ内のアドレス範囲の開始アドレスを記録する。カラム2023は、パリティグループ80内のアドレス範囲の開始アドレスを記録する。なお、説明の容易のため、パリティグループ80内のアドレスを便宜上物理アドレスと呼ぶ。カラム2024は、圧縮前のホストデータのデータサイズを記録する。カラム2025は、圧縮後のホストデータのデータサイズを記録する。
【0036】
<ページ管理テーブル>
図6は、本実施例におけるページ管理テーブル203を説明する図である。ページ管理テーブル203は、CPU24により管理され、例えば、ドライブ29に格納され、メモリ25にロードされる。ページ管理テーブル203の各エントリは、論理的な記録領域であるページ70と、前記ページ70に対応付けられるパリティグループ80の番号と、上記パリティグループ80内で前記ページ70に対応するアドレス範囲との対応関係を記録する。また、当該ページ70に含まれるガベージ量と、当該ページ内で最後に追書きを実施した末尾アドレス(前回追書き位置)を記録する。以下、ページ管理テーブル203の各カラムを説明する。
【0037】
カラム2031は、ページ70を示す番号を記録する。カラム2032は、上記ページ70が割り当てられるパリティグループ80を示す番号を記録する。カラム2033は、上記ページ70に対応する前記パリティグループ80内のアドレス範囲を記録する。
【0038】
カラム2034は、上記ページ70に含まれるガベージ(無効データ)の量を記録する。カラム2035は、上記ページ70内において最後に追書きした位置(末尾アドレス)を記録する。追書き処理はページ70の先頭アドレスから前詰めで実行していく。このため、この末尾アドレス以降の領域はデータが格納されていない(すなわちデータライト可能な)領域である。
【0039】
<パリティグループ管理テーブル>
図7は、本実施例におけるパリティグループ管理テーブル204を説明する図である。パリティグループ管理テーブル204は、CPU24により管理され、例えば、ドライブ29に格納され、メモリ25にロードされる。パリティグループ管理テーブル204は、ストレージシステム内の各パリティグループについて、当該パリティグループのパリティ種別と、当該パリティグループ80に所属するドライブ番号リストを記録するデータ構造である。
【0040】
以下、パリティグループ管理テーブル204の各カラムを説明する。カラム2041は、ストレージシステム100内に含まれるパリティグループ80の番号を記録する。カラム2042は、対応するパリティグループ80のパリティ種別を記録する。カラム2043は、対応するパリティグループ80に所属するドライブ番号リストを記録する。
【0041】
<ドライブ管理テーブル>
図8は、本実施形態におけるドライブ管理テーブル205を説明する図である。ドライブ管理テーブル205は、CPU24により管理され、例えば、ドライブ29に格納され、メモリ25にロードされる。ストレージシステム内に含まれる各ドライブ29を管理するため、各ドライブ29に対して識別子を付与する。ドライブ管理テーブル205は、ストレージシステムに含まれる各ドライブ29について、当該ドライブ番号と、当該ドライブ29の状態を記録するデータ構造である。
【0042】
以下、ドライブ管理テーブル205の各カラムを説明する。カラム2051は、ストレージシステム100内に含まれる各ドライブ29に付与される識別子であるドライブ番号を記録する。
【0043】
カラム2052は、対応するドライブ29の状態を記録する。状態が「正常」とは、当該ドライブ29がパリティグループ80に紐づけられており、かつ障害が発生していないことを意味する。状態が「障害」とは、当該ドライブがパリティグループ80に紐づけられており、かつ障害が発生していることを意味する。状態が「空き」とは、当該ドライブ29がパリティグループ80に紐づけられていないことを意味する。
【0044】
<ライト処理>
図9は、本実施例におけるライト処理の処理フローを説明する図である。ライト処理は、ホスト計算機40からのライト要求を受領し、ストレージ装置11にデータを記録する処理である。ライト要求では、例えばライト先のLUN ID及び論理アドレスがホスト計算機40によって指定される。
【0045】
以下、
図9を用いて、ライト処理の処理フローを説明する。
S901:CPU24は、ホスト計算機40からホストデータのライト要求及びホストデータを受領する。
【0046】
S902:CPU24は、ホスト計算機40から受領したホストデータに対して圧縮処理を適用し、圧縮データを得る。なお、この圧縮処理はCPU24自体が実施してもよいし、ストレージ装置11内に圧縮処理を実行可能なハードウェアを有する場合は、当該ハードウェアに圧縮処理を実行させてもよい。
【0047】
S903:CPU24は、圧縮データを書き込む(追書きする)先のページ70を選択する。CPU24は、ページ管理テーブル203、パリティグループ管理テーブル204、及びドライブ管理テーブル205を参照し、パリティグループ80内に障害ドライブを含まないページ70を、追書き先ページ候補とする。
【0048】
CPU24は、この追書き先ページの候補のうち、圧縮データを格納可能なページを追書き先として選択する。具体的には、当該ページの最終追書き位置からページ終端までのサイズをページ内空き領域とし、前記ページ内空き領域が前記圧縮データのサイズよりも大きいページ70を追書き先として選択する。
【0049】
S904:CPU24は、ステップS903にて条件を満たすページを追書き先として選択できた場合、ステップS905に進む。条件を満たすページが存在しない場合、ステップS908に進む。
S905:CPU24は、メモリ25に圧縮データを格納する。
【0050】
S906:CPU24は、ページ管理テーブル203のうち、ガベージ量2034の値を、ライトしたホストデータサイズ分だけ増加させる。また、前回追書き位置2035の値を、今回圧縮データを格納した追書き位置の値で更新する。また、メタデータ管理テーブル202内のページ番号2021及びページ内の論理アドレス2022に対応する物理アドレス2023、圧縮前サイズ情報2024、圧縮後サイズ情報2025の値をそれぞれ更新する。
【0051】
S907:CPU24は、ホスト計算機40に対して、データライト処理完了の応答を返し、処理を終了する。
S908:CPU24は、ホスト計算機40に対して、空き容量不足のためデータライト処理が失敗したことを示す応答を返し、処理を終了する。
【0052】
<データ回復処理>
図10は、本実施例におけるデータ回復処理の処理フローを説明する図である。データ回復処理は、障害ドライブ29を新規ドライブ29に交換した契機に開始する。以下、
図10を用いて、データ回復処理の処理フローを説明する。
【0053】
S1001:CPU24は、パリティグループ管理テーブル204を参照し、回復対象ドライブ29が属するパリティグループ番号を得る。その後、ページ管理テーブル203を参照し、上記パリティグループ番号を持つページ70を列挙する。
S1002:CPU24は、ステップS1001にて列挙したページ70(エントリ)の先頭エントリを処理対象エントリ70として選択する。
【0054】
S1003:CPU24は、ステップS1001にて列挙したエントリ70のうち、未処理のエントリ70が残っているか否かを判定する。未処理のエントリが残っている場合は、ステップS1004に進む。未処理のエントリ70が残っていない場合、回復対象ドライブ29が属するパリティグループ80に割り当てられているすべてのページ70の復元が完了したため、データ回復処理を完了する。
【0055】
S1004:CPU24は、ページ管理テーブル203を参照し、対象ページ70に含まれるガベージ量を取得する。その後、上記ガベージ量と、後述するガベージコレクション実行閾値とを比較する。ガベージ量は、例えば、ページサイズに対するガベージの比率で表され得る。上記ガベージ量がガベージコレクション実行閾値以上の場合は、当該ページ70をガベージコレクション対象とし、ステップS1005に進む。そうでない場合、当該ページ70をコレクションコピー対象とし、ステップS1006に進む。
【0056】
ここで、ガベージコレクション閾値は、データ回復処理において、ページ70に対してガベージコレクションを実行するか否かを決定する際に利用する値であり、その値は、例えば、データ回復処理外の通常運用におけるガベージコレクション閾値と同一又はそれより小さい値に設定される。例えば、正常ドライブからなるパリティグループに割り当てらえているページの、通常運用時のガベージコレクション閾値は、主に以下の要件を基に決定され得る。
(X1)ストレージシステムに搭載するドライブ数に関する要件
(X2)ガベージコレクション効率に関する要件
(X3)ドライブ寿命に関する要件
【0057】
ガベージコレクション処理では、ページ70内に含まれるガベージ量が多いほど、回収できるガベージ量が多くなる。したがって、ガベージコレクション閾値を高い値に設定すると、空き容量の回復速度が向上する。
【0058】
一方で、ページ70内にガベージを多く溜めると、ページ70あたりの有効データの比率が減少するため、同一量の有効データを保持するために、より多くの記憶領域が必要となる。
【0059】
ガベージコレクション閾値を低い値に設定すると、記憶領域の利用効率は向上するため、ストレージ装置11に搭載が必要なドライブ数を抑えられる。一方で、頻繁にガベージコレクション処理が動作することで、有効データのコピー処理が多く行われるため、ドライブ寿命の消耗が早くなり、長期間での運用コストが増える。
【0060】
通常運用時におけるガベージコレクション閾値は(X1)~(X3)に示した要件を考慮し、各要件をそれぞれ満たすように設定される。
【0061】
例えば、データ回復処理におけるガベージコレクション対象ページを選択する際のガベージコレクション閾値として、通常運用におけるガベージコレクション処理が利用する閾値を用いることができる。これにより、通常運用におけるガベージコレクション処理と比較した際のガベージ回収効率を維持できる。
【0062】
データ回復処理におけるガベージコレクション閾値は、0より大きく、通常運用におけるガベージコレクション閾値より小さくてもよい。これにより、データ回復処理におけるコレクションコピー処理の対象データを低減し、データ回復処理の時間をより短縮し得る。ガベージコレクションは、有効データの選択のための処理が必要となり、あまりに少ないガベージ量に対しては非効率となり得る。データ回復処理におけるガベージコレクション閾値の決定は、この観点を考慮してもよい。
【0063】
S1005:CPU24は、対象のエントリに対して、後述するコレクションコピー処理を実行する。
S1006:CPU24は、対象のエントリに対して、後述するガベージコレクション処理を実行する。
S1007:CPU24は、コレクション処理、またはガベージコレクション処理が完了したら、ステップS1001で列挙したエントリ一覧から次のエントリを選択する。
【0064】
なお、各ページ70に対するコレクションコピー処理及びガベージコレクション処理は、データ回復処理に対して同期的に実行してもよいし、非同期的に実行してもよい。非同期的に実行する場合は、データ回復処理の対象となる全ページ70に対するコレクションコピー処理またはガベージコレクション処理の完了をもって、データ回復処理を完了する。
【0065】
<コレクションコピー処理>
図11は、本実施例におけるコレクションコピー処理S1005の処理フローを説明する図である。コレクションコピー処理は、ドライブ回復の際に、対象ページ70に含まれるデータ及びパリティを復元し、回復対象ドライブに格納する処理である。復元されるデータは、有効データに加えて無効データを含む。
【0066】
以下、
図11を用いて、コレクションコピー処理の処理フローを説明する。
S1101:CPU24は、対象ページ70の先頭アドレスから、前回追書き位置までのアドレス範囲について、回復対象外のドライブからデータとパリティを読み出す。
S1102:CPU24は、ステップS1101にて読み出したデータ及びパリティから、回復対象ドライブ用のデータまたはパリティを生成する。
S1103:CPU24は、生成したデータまたはパリティをドライブ29に格納する。
【0067】
<ガベージコレクション処理>
図12は、本実施例におけるガベージコレクション処理1005の処理フローを説明する図である。ガベージコレクション処理は、対象ページ70に含まれる有効データと無効データ(ガベージ)のうち、有効データのみを他のページに移行した後、対象ページ70を破棄することで、ガベージによって占められていた記憶領域を解放し、再利用可能とする処理である。なお、ガベージコレクション処理は、データ回復処理外の通常運用時にも実行される。
【0068】
以下、
図12を用いて、ガベージコレクション処理1005の処理フローを説明する。
S1201:CPU24は、ページ管理テーブル203を参照し、対象ページの先頭アドレスから、前回追書き位置までのアドレス範囲に含まれるデータを列挙する。
S1202:CPU24は、ステップX1101にて列挙したデータのうち、先頭のデータを処理対象として選択する。
【0069】
S1203:CPU24は、ステップS1201にて列挙したデータのうち、未処理のデータが残っているか否かを判定する。未処理のデータが残っている場合は、ステップS1004に進む。未処理のデータが残っていない場合、当該ページ70に含まれるすべての有効データを別のページ70へ移行し終えたため、ガベージコレクション処理を完了する。
【0070】
S1204:CPU24は、メタデータ管理テーブル202の物理アドレス情報2023及び論理アドレス情報を参照し、対象データが有効データであるか否かを判定する。対象データの位置する物理アドレスに対して、対応する論理アドレスが存在する場合、対象データは有効データと判断する。そうでない場合、対象データは有効データではないと判断する。有効データである場合は、ステップS1205に進む。有効データではない場合は、ステップS1206に進む。
【0071】
S1205:CPU24は、対象データをプール60内の他のページ70にコピーする。このとき、コピー先のページ70としては、データ回復処理対象のパリティグループ80に属さないページ70を選択する。例えば、障害ドライブを含まない正常ドライブからなるパリティグループ80のページが選択される。これにより、データが、コピー先でさらにデータ回復の対象となることを避けることができる。
S1206:CPU24は、ステップS1201にて列挙したデータから、次のデータを選択し、ステップX1203に進む。
S1207:CPU24は、ページ管理テーブル203を参照し、対象ページ70に対応するエントリのうち、ガベージ量2034の値と前回追書き位置2035の値を初期値に書き換える。
【0072】
ステップS1205にて、有効データのコピー先ページ70として、データ回復処理対象のパリティグループ80に属さないページ70を選択することで、データ回復処理において、当該データが、再度コレクションコピー処理やガベージコレクション処理の対象とならないようにしている。
【0073】
以上の処理により、対象ページ70内の有効データがすべてコピー先ページ70に移行された状態となるため、対象ページに関するコレクションコピー処理の実施は不要となる。
【0074】
以上、データ回復処理において、復元対象の各ページ70に対して、ガベージ量に応じてガベージコレクション処理またはコレクションコピー処理を使い分けることで、処理効率を高めることができる。
【0075】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0076】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
【0077】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0078】
100…ストレージシステム
11…ストレージ装置
22…ストレージコントローラ
24…CPU
25…メモリ
29…ドライブ
30…ネットワーク
40…ホスト計算機