(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-25
(45)【発行日】2025-03-05
(54)【発明の名称】ストレージ装置
(51)【国際特許分類】
G06F 3/06 20060101AFI20250226BHJP
【FI】
G06F3/06 301S
G06F3/06 301Y
G06F3/06 301Z
G06F3/06 302J
G06F3/06 304Z
(21)【出願番号】P 2022168328
(22)【出願日】2022-10-20
【審査請求日】2024-02-29
(73)【特許権者】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】別納 健市
(72)【発明者】
【氏名】下薗 紀夫
(72)【発明者】
【氏名】吉原 朋宏
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2022-146519(JP,A)
【文献】特開2019-133577(JP,A)
【文献】国際公開第2018/138813(WO,A1)
【文献】国際公開第2018/016003(WO,A1)
【文献】特開2022-123696(JP,A)
【文献】特開2021-135538(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06 - 3/08
G06F 12/00
G06F 13/10 - 13/14
(57)【特許請求の範囲】
【請求項1】
複数論理階層において、記憶ドライブに格納されているデータを管理するストレージ装置であって、
ホストと通信を行うホストインタフェースと、
プロセッサと、を含み、
前記複数論理階層は、追記階層を含み、
前記プロセッサは、
前記追記階層において、前記ホストインタフェースを介して受信したユーザデータを、データ書き込み可能な空き領域に書き込み、
前記追記階層内の第1論理領域のガベージコレクション動作モードを、第1動作モード及び第2動作モードを含む複数の動作モードから選択し、
前記第1動作モードのガベージコレクションの実行条件は、前記追記階層の空き領域の容量が閾値未満であること
、前記第1論理領域の更新済み無効データであるガベージの量が閾値以上であること
、及び前記ガベージコレクションに割り当てる前記プロセッサの処理リソース量が閾値未満であることを含み、
前記第2動作モードのガベージコレクションの実行条件は
、前記第1論理領域のガベージの量が閾値以上であること
、及び前記ガベージコレクションに割り当てる前記プロセッサの処理リソース量が閾値未満であることを含み、
前記ガベージコレクションは、前記第1論理領域から更新前の有効データを選択して、前記追記階層内の他の論理領域にコピーして前記第1論理領域を解放する、ストレージ装置。
【請求項2】
請求項1に記載のストレージ装置であって、
前記プロセッサは、前記第1論理領域を提供する記憶ドライブの仕様に基づき判定される耐久性に応じて、前記ガベージコレクション動作モードを選択する、ストレージ装置。
【請求項3】
請求項2に記載のストレージ装置であって、
前記プロセッサは、前記第1論理領域を提供する前記記憶ドライブの耐久性を、前記記憶ドライブに対して書き込み可能な総データ量に基づいて判定する、ストレージ装置。
【請求項4】
請求項1に記載のストレージ装置であって、
前記プロセッサは、前記ガベージコレクションに割り当てる前記プロセッサの
前記処理リソース
量の前記閾値を、前記追記階層の空き領域の容量に基づいて調整する、ストレージ装置。
【請求項5】
請求項1に記載のストレージ装置であって、
前記プロセッサは、外部装置からの指定に応じて、前記ガベージコレクション動作モードを選択する、ストレージ装置。
【請求項6】
請求項5に記載のストレージ装置であって、
前記プロセッサは、前記複数論理階層に含まれる前記追記階層毎に、前記外部装置から前記指定を受け付ける、ストレージ装置。
【請求項7】
請求項5に記載のストレージ装置であって、
前記プロセッサは、前記記憶ドライブのRAIDグループ毎に、前記外部装置から前記指定を受け付ける、ストレージ装置。
【請求項8】
請求項1に記載のストレージ装置であって、
前記複数の動作モードは第3動作モードを含み、前記第3動作モードのガベージコレクションの実行条件は、前記第1論理領域のガベージの量が閾値以上であることを含み、
前記プロセッサは、前記第3動作モードにおいて、前記第1論理領域を提供する記憶ドライブの残寿命に基づいて、前記第1論理領域の前記ガベージの量の閾値を決定する、ストレージ装置。
【請求項9】
請求項8に記載のストレージ装置であって、
前記残寿命は、前記記憶ドライブに対する書き込み済のデータ量と書き込み可能な総データ量とに基づき決定される、ストレージ装置。
【請求項10】
ストレージ装置においてガベージコレクションを制御する方法であって、
前記ストレージ装置は、複数論理階層において、記憶ドライブに格納されているデータを管理し、
前記複数論理階層は、追記階層を含み、
前記方法は、
前記ストレージ装置が、前記追記階層において、受信したユーザデータを、データ書き込み可能な空き領域に書き込み、
前記ストレージ装置が、前記追記階層内の第1論理領域のガベージコレクション動作モードを、第1動作モード及び第2動作モードを含む複数の動作モードから選択し、
前記第1動作モードのガベージコレクションの実行条件は、前記追記階層の空き領域の容量が閾値未満であること
、前記第1論理領域の更新済み無効データであるガベージの量が閾値以上であること
、及び前記ガベージコレクションに割り当てるプロセッサの処理リソース量が閾値未満であることを含み、
前記第2動作モードのガベージコレクションの実行条件は
、前記第1論理領域のガベージの量が閾値以上であること
、及び前記ガベージコレクションに割り当てる前記プロセッサの処理リソース量が閾値未満であることを含み、
前記ガベージコレクションは、前記第1論理領域から更新前の有効データを選択して、前記追記階層内の他の論理領域にコピーして前記第1論理領域を解放する、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ装置におけるガベージコレクション処理に関する。
【背景技術】
【0002】
ストレージシステムの記憶媒体に掛かるコストを低減する手段として、データ圧縮技術や重複排除技術などのデータ削減技術が普及している。これらのデータ削減技術を適用する場合、ホストからストレージシステムに対して書き込まれるデータサイズと、実際に記憶媒体に書き込まれるデータサイズの間に差が生じる。そのため、記憶媒体の記憶領域を効果的に利用するために、データ削減適用後のデータを空き領域に前詰めで書き込んでいく追記型データ格納方式(例えば、Log-Structured Storage)が用いられている。
【0003】
追記型データ格納方式では、データが更新されると、更新前データ(有効データ)に対してアクセスしなくなる。このような状態のデータをガベージ(無効データ)と呼ぶ。ホストがデータ更新を繰り返し、ストレージシステムがデータの追記を続けることで、ガベージの量が増加し、空き領域が減少していく。空き領域は、更新前の有効データ及び更新済みの無効データであるガベージのいずれも格納していない領域である。
【0004】
それゆえ、追記型データ格納方式を用いる場合、生成されたガベージを削除するため、所定の記憶領域に含まれるガベージの割合を無効率として算出し、無効率が予め設定された無効率閾値を超えた場合に、ガベージコレクションを行う方式を採用している。ここで、ガベージコレクションは、有効データを別の空き領域にコピーした後、当該所定の記憶領域を解放して再利用可能にする処理である。例えば、その一例として、国際公開第2018/020593号がある。
【0005】
また、SSDの使用容量とガベージ量の合計が一定値以上となった場合や、空き容量が一定値以下となった場合にガベージコレクションを行う方式を採用する場合がある。例えば、その一例として、特開2020-035300号公報がある。
【先行技術文献】
【特許文献】
【0006】
【文献】国際公開第2018/020593号
【文献】特開2020-035300号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ガベージコレクション処理は、記憶媒体(以下、ドライブ)に記録された有効データを別の空き領域にコピーする処理を伴う。このコピー処理は、ドライブに対するデータの書込みを発生させ、ドライブ寿命を消耗する。例えば、フラッシュメモリ素子には書き換え寿命が存在する。同一の素子に対して書き換えを行うほど劣化が進む。書き換え回数の上限を超えると、読み書き不可となる確率が上昇する。
【0008】
一方、ガベージコレクション処理を実行する上では、ストレージシステムのリソース(例えばCPU帯域やドライブ帯域)を使用する必要があるため、ストレージシステムのリソースを消費する別の処理(例えば外部装置とのI/O処理)の性能を低下させる。よって、高いI/O性能を要求されるストレージシステムでは、ガベージコレクション処理がI/O性能に与える影響を低減する必要がある。
【課題を解決するための手段】
【0009】
本発明の一態様は、複数論理階層において、記憶ドライブに格納されているデータを管理するストレージ装置であって、ホストと通信を行うホストインタフェースと、プロセッサと、を含み、前記複数論理階層は、追記階層を含み、前記プロセッサは、前記追記階層において、前記ホストインタフェースを介して受信したユーザデータを、データ書き込み可能な空き領域に書き込み、前記追記階層内の第1論理領域のガベージコレクション動作モードを、第1動作モード及び第2動作モードを含む複数の動作モードから選択し、前記第1動作モードのガベージコレクションの実行条件は、前記追記階層の空き領域の容量が閾値未満であること、及び前記第1論理領域の更新済み無効データであるガベージの量が閾値以上であることを含み、前記第2動作モードのガベージコレクションの実行条件は、前記追記階層の空き領域の容量の条件を除外し、前記第1論理領域のガベージの量が閾値以上であることを含み、前記ガベージコレクションは、前記第1論理領域から更新前の有効データを選択して、前記追記階層内の他の論理領域にコピーして前記第1論理領域を解放する。
【発明の効果】
【0010】
本発明の一態様により、ストレージ装置において、ドライブ寿命の消耗を抑制しつつ、I/O性能を向上することができる。
【図面の簡単な説明】
【0011】
【
図1】一実施例におけるストレージシステムのハードウェア構成を示す図
【
図2】一実施例におけるドライブ種別に応じたガベージコレクション実行の概要を示す図
【
図4】一実施例におけるメタデータ管理テーブルを示す図
【
図5】一実施例におけるページ管理テーブルを示す図
【
図6】一実施例におけるRAID構成管理テーブルを示す図
【
図7】一実施例におけるプール管理テーブルを示す図
【
図9】一実施例におけるガベージコレクション処理を示す図
【
図10】一実施例におけるガベージコレクション実施判定処理を示す図
【
図11】一実施例における動作モード選択画面を示す図
【
図12】一実施例におけるドライブ状態判定処理を示す図
【発明を実施するための形態】
【0012】
以下、図面に基づいて、本発明の実施例を説明する。添付図面では、機能的に同じ要素を同じ番号で表示する場合がある。添付図面は、本発明の原理に則った具体的な実施形態と実施例とを示している。それらの実施形態及び実施例は、本発明の理解のためのものであり、本発明を限定的に解釈するために用いてはならない。
【0013】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号(又は要素のID(例えば識別番号))を使用することがある。例えば、複数のページを区別しない場合には、「ページ70」と記載し、各ページを区別する場合には、「ページ70A」、「ページ70B」のように記載することがある。他の要素も同様である。
【実施例1】
【0014】
実施例1では、ストレージ装置は追記型データ格納方式を採用する。
図1は、実施例1におけるストレージシステム100の概略を示す図である。ストレージシステム100は、ストレージ装置11と、ストレージ装置11に接続されたホスト計算機40と、ストレージ装置11に接続された管理計算機42を含む。
【0015】
第一の通信ネットワーク41(例えばSAN(Storage Area Network))を介して、ストレージ装置11が、1以上のホスト計算機40からI/Oコマンドを受け付ける。第二の通信ネットワーク43(例えばLAN(Local Area Network))を介して、管理計算機42とストレージ装置11が互いに通信できる。
【0016】
ホスト計算機40と管理計算機42は、物理的な計算機でもよいし、物理的な計算機上で実行される仮想的な計算機でもよい。ストレージ装置11は、1以上のストレージコントローラ22と、1以上のストレージコントローラ22に接続された複数の記憶ドライブ29(単にドライブとも呼ぶ)とを有する。
図1の構成例において、ストレージ装置11は、二つのストレージコントローラ22を含む。
【0017】
各ストレージコントローラ22は、ホスト計算機40との通信を行うホストインタフェース(I/F)23、装置全体の制御を行うCPU24、CPU24で使用されるプログラム及び情報を格納するメモリ25、及び、物理的なドライブ29との通信を行うドライブI/F26を備える。これら構成要素の数は任意である。
図1に示す構成例において、複数のドライブ29はドライブ筐体に収容されている。ドライブ29は、例えば不揮発性のデータ記憶媒体を有する装置であり、SSD(Solid State Drive)でもHDD(Hard Disk Drive)でもよい。
【0018】
図2は、本明細書の実施例における処理の概要を示す図である。複数のドライブが一つのRAID(Redundant Arrays of Inexpensive Disks)グループを構成している。
図2の構成例において、ドライブ29A~29DがRAIDグループ80Aを構成、ドライブ29E~29HがRAIDグループ80Bを構成している。
【0019】
図2の構成例において、ドライブ29A~29Dは、相対的に低耐久なドライブ(図中では例としてQLC SSD)であり、ドライブ29E~29Hは、相対的に高耐久なドライブ(図中では例としてTLC SSD)である。ここでの耐久は書き込み寿命を意味し、より高耐久であることは、より多数回の書き込みが可能であることを意味する。
【0020】
プール60は、データを格納するための論理的な記憶領域である。プール60の記憶領域は、論理的な記憶領域であるページ70単位で割り当てられる。ページ70は論理領域であって、一つのRAIDグループ80の記憶領域に一意に割り当てられている。以下の説明においてページサイズは一定であるが、一定でなくてもよい。
【0021】
図2の例において、ページ70A~70Dを含むページがプール60Aに割り当てられ、ページ70E~70Hを含むページがプール60Aに割り当てられている。また、各ページの有効データは対角線パターンで表され、無効データ(ガベージ)はドットパターンで表され、空き領域は白で表されている。例えば、ページ70Gには、有効データとガベージが格納されている。また、ページ70Gには、有効データとガベージのいずれも格納されていない領域(空き領域)が含まれている。
【0022】
図2を参照し、プール60Aおよびプール60Bに含まれるガベージを回収する処理の流れを説明する。CPU24は、プール60Aおよびプール60Bの記憶領域が割り当てられるドライブ(ドライブ29がRAIDグループ80を構成する場合、プール60に対応するRAIDグループ80を構成するドライブ29)の種別を参照し、当該ドライブ29の耐久性を判定する。この判定結果に基づき、後述するガベージコレクション処理の制御を行う。
【0023】
ここで、ドライブの種別毎の耐久性を判定する方法としては、例えばNAND型フラッシュメモリからなるSSDの場合、セルあたりのビット数から種別を判定することができる。NAND型フラッシュメモリは、セルあたりに記憶可能なビット数が多いほど大容量となるが耐久性が低い傾向がある。低耐久なドライブ種別の例として、例えばQLC SSDやPLC SSDなどが挙げられる。高耐久なドライブ種別の例として、MLC SSDやTLC SSDなどが挙げられる。
【0024】
ドライブの耐久性を判定する別の方法の例として、メーカが公表する耐久性指標を用いることもできる。例えば、ドライブ保証期間中において1日あたり書き込み可能なデータ量を表す指標であるDWPD(Drive Writes Per Day)を用いることもできる。CPU24は、各ドライブ29から、DWPDを取得することができる。
【0025】
上記二つの方法のように、ドライブの仕様(属性)に基づいて、ドライブの耐久性を判定することができる。ドライブ仕様が既定の低耐久条件に合致する場合に低耐久と判定される。ドライブ仕様が既定の高耐久条件に合致する場合に高耐久と判定される。低耐久条件から外れるドライブが、高耐久と判定されてもよい。CPU24は、ドライブの仕様に基づきドライブの種別を判定してもよい。ドライブ種別に対して予め耐久性(高耐久性または低耐久性)が関連付けられている。
【0026】
CPU24は、当該プール60に対応するドライブ29の耐久性が低いと判定した場合、ガベージをなるべく溜めてからガベージコレクションを行うことで、有効データのページ70間コピーの発生頻度を低減させ、ドライブ29の寿命の消耗を抑える動作をする。
【0027】
具体的には、
図2において、CPU24は、プール60Aを構成するドライブ29A~29Dの種別(QLC SSD)に基づき、当該ドライブ29A~29Dの耐久性が低いと判定すると、プール60Aの空き容量が所定の閾値を下回るまではガベージコレクションを実施しない(停止する)。空き容量が所定の閾値を下回ってから、プール60A内のページ70のうち、ガベージを所定量以上含んでいるページ70Bに対してガベージコレクションを行う。
【0028】
一方、CPU24は、プール60を構成するドライブ29の耐久性が高いと判定した場合、ガベージを溜めずに積極的にガベージコレクションを行い、あらかじめプール60内の空き容量を積極的に確保しておくことで、ホスト計算機からのI/Oに対する処理性能を高める動作をする。
【0029】
具体的には、
図2において、CPU24は、プール60Bを構成するドライブ29E~29Hの種別(TLC SSD)に基づき、当該ドライブ29E~29Hの耐久性が高いと判定すると、プール60Bの空き容量に関わらず、プール60B内のページ70のうちガベージを所定量以上含んでいるページ70Eに対してガベージコレクションを行う。
【0030】
ガベージコレクションの実行基準のプール空き容量の閾値は、例えば、空き容量そのもの値でもよく、プール容量に対する空き容量の割合で示されてもよい。ガベージコレクションの実行基準のガベージ量の所定量(閾値)も、ガベージ量そのもの値でもよく、ページ容量に対するガベージ量の割合で示されてもよい。
【0031】
<論理構成>
図3は、本実施例におけるストレージ論理構成を説明する図である。LUN50は、ホスト計算機40から認識される論理的なドライブであり、ホストI/OはLUN50上の論理的なアドレス空間に対して実行される。
【0032】
プール60は、1以上のLUN50及び1以上のRAIDグループ80に紐づけられる論理的な記憶領域(単に論理領域とも呼ぶ)である。本実施例において、LUN50に格納されているユーザデータは、圧縮及び/又は重複排除されて、プール60に格納される。例えば、LUN50内のデータA、データB及び、データCそれぞれが圧縮されて、データa、データb、及びデータcが生成され、プール60に格納される。データaはページ70Aに格納され、データb及びデータcはページ70Bに格納されている。なお、圧縮/重複排除処理のようなデータ削減処理が、省略されていてもよい。
【0033】
プール60は、ページ70により管理される。ページ70は、プール60を管理する単位領域であり、RAIDグループ80内の論理記憶領域に関連付けられる。各ページ70において圧縮後データは前詰めに配置される。これにより、効率的にデータを格納できる。
【0034】
ホスト計算機40による更新ライト及び新規ライトの双方において、受信されたユーザデータは、ページ70内の空き領域の先頭に格納される。ホスト計算機40によって既存ユーザデータが更新されると、新規ユーザデータがページ70内の空き領域の先頭に格納され、元々格納されていた旧ユーザデータはガベージとなる。
【0035】
ページ70は、データを格納するための論理的な記憶領域である。ページ70は、複数ドライブ29から構成されるRAIDグループ80内の論理的な記憶領域に紐づけられる。
図3の構成例において、プール60内のページ70Aは、RAIDグループ80Aに割り当てられ、ページ70Bは、RAIDグループ80Bに割り当てられている。
【0036】
RAIDグループ80は、複数のドライブ29によって構成される。複数のドライブ29を組み合わせて論理的な記憶媒体を構成することで、RAIDグループ80内のドライブが故障した場合に冗長性を担保する。RAIDグループ80の論理記憶領域は、ドライブ29の物理記憶領域に紐づけられる。
【0037】
図3に示すように、ストレージ論理構成は階層構造を有し、ストレージ装置11は、データを複数の論理階層において管理する。
図3は、LUN50の階層、RAIDグループ80の階層及びそれらの間のプール60の階層を示す。プール60の階層は、ホストインタフェース23を介して受信したユーザデータを、空き領域に書き込む追記階層である。
図3は、一つのLUN50及び一つのプール60を示すが、複数のLUN及び複数のプールがストレージ装置11において定義され得る。階層における記憶領域は、隣接する上及び/又は下の階層の記憶領域を関連付けられている。
図3は三つの論理階層を示すが、他の階層が定義されていてもよい。
【0038】
<メタデータ管理テーブル>
図4は、本実施例におけるメタデータ管理テーブル202を説明する図である。CPU24は、メタデータ管理テーブル202を形成する。メタデータ管理テーブル202は、CPU24により管理され、例えば、ドライブ29に格納され、メモリ25にロードされる。メタデータ管理テーブル202は、たとえばLDEV50単位に管理される。メタデータ管理テーブル202の各エントリは、各LDEV50に含まれるユーザデータの論理アドレスと、当該データが格納先である物理アドレスとの対応関係を管理するテーブルである。物理アドレスは、RAIDグループ80内のアドレスであってもよいし、プール60内のアドレスであってもよい。
【0039】
以下、メタデータ管理テーブル202の各カラムを説明する。
【0040】
カラム2021は、対応するLDEV50内のアドレス範囲の開始アドレスを記録する。
【0041】
カラム2022は、ユーザデータの格納先アドレスとして、RAIDグループ80内のアドレス範囲の開始アドレスを記録する。なお、説明の容易のため、RAIDグループ80内のアドレスを便宜上物理アドレスと呼ぶ。また、ユーザデータの格納先アドレスとして、RAIDグループ内のアドレスの代わりにプール60内のアドレスを用いてもよい。
【0042】
カラム2023は、対応するユーザデータの圧縮前のデータサイズを記録する。
【0043】
カラム2024は、対応するユーザデータの圧縮後のデータサイズを記録する。
【0044】
<ページ管理テーブル>
図5は、本実施例におけるページ管理テーブル203を説明する図である。CPU24は、ページ管理テーブル203を形成する。ページ管理テーブル203は、CPU24により管理され、例えば、ドライブ29に格納され、メモリ25にロードされる。ページ管理テーブル203の各エントリは、論理的な記録領域であるページ70と、前記ページ70に対応付けられるRAIDグループ80のIDと、上記RAIDグループ80内で前記ページ70に対応するアドレス範囲との対応関係を記録する。また、当該ページ70に含まれるガベージ量と、当該ページ内で最後に追書きを実施した末尾アドレス(前回追書きアドレス)を記録する。
【0045】
以下、ページ管理テーブル203の各カラムを説明する。カラム2031は、ページ70を示すIDを記録する。カラム2032は、上記ページ70が割り当てられるRAIDグループ80を示すIDを記録する。カラム2033は、上記ページ70に対応する前記RAIDグループ80内のアドレス範囲を記録する。カラム2034は、上記ページ70に含まれるガベージの量を記録する。
【0046】
カラム2035は、上記ページ70内において最後にデータを追書きした位置(末尾アドレス)を記録する。追書き処理はページ70の先頭アドレスから前詰めで実行していく。このため、この末尾アドレス以降の領域はデータが格納されていない(すなわちデータライト可能な)領域である。
【0047】
<RAID構成管理テーブル>
図6は、本実施例におけるRAID構成管理テーブル204を説明する図である。RAID構成管理テーブル204は、CPU24により管理され、例えば、ドライブ29に格納され、メモリ25にロードされる。RAID構成管理テーブル204は、ストレージシステム内の各RAIDグループ80について、当該RAIDグループ80のRAIDレベルと、当該RAIDグループ80に所属するドライブ29に対応するIDのリストと、当該RAIDグループ80を構成するドライブの種別と、当該RAIDグループ80の論理容量と、当該RAIDグループ80の使用容量を記録するデータ構造である。
【0048】
以下、RAID構成管理テーブル204の各カラムを説明する。カラム2041は、ストレージシステム100内に含まれるRAIDグループ80のIDを記録する。カラム2042は、対応するRAIDグループ80のRAIDレベル(例えば、RAID1やRAID5など)を記録する。カラム2043は、対応するRAIDグループ80に所属するドライブIDのリストを記録する。
【0049】
カラム2044は、対応するRAIDグループ80に所属するドライブの種別(例えば、HDD、QLC SSD、TLC SSDなど)を記録する。カラム2045は、対応するRAIDグループ80の論理容量を記録する。カラム2046は、対応するRAIDグループ80の使用容量を記録する。この使用容量は、当該のRAIDグループ80において、データ(例えば、ユーザデータやメタデータ)を格納するために使用されている領域のサイズの総和である。
【0050】
CPU24は、RAIDレベルをユーザから取得して、カラム2042に格納する。CPU24は、ドライブIDをユーザから取得して、CPU24が格納してもよいし、CPU24が生成及び格納してもよい。CPU24がドライブIDを生成する場合は、例えば、ドライブ29の物理的位置からドライブIDを一意に決定してもよい。他のカラムの情報は、CPU24が生成及び格納する。CPU24は、例えば、ドライブ29から取得した仕様情報に基づき、そのドライブ種別を決定して、カラム2044に格納する。
【0051】
<プール管理テーブル>
図7は、本実施例におけるプール管理テーブル205を説明する図である。プール管理テーブル205は、CPU24により作成及び管理され、例えば、ドライブ29に格納され、メモリ25にロードされる。プール管理テーブル205は、ストレージシステム100内の各プールについて、当該プール60のIDと、当該プール60に対応するRAIDグループ80のIDのリストと、当該プール60の論理容量と、当該プール60の使用容量と、当該プールにおけるガベージコレクション(GC)動作モードを記録するデータ構造である。
【0052】
以下、プール管理テーブル205の各カラムを説明する。カラム2051は、ストレージシステム100内に含まれるプール90のIDを記録する。カラム2052は、対応するプール60にページを与えるRAIDグループ80のIDのリストを記録する。一つのプールに対して1以上のRAIDグループが割り当てられる。例えば、一つのプールに割り当てられるRAIDグループのドライブ種別は共通であるとする。カラム2053は、対応するプール60の論理容量を記録する。
【0053】
カラム2054は、対応するプール60の使用容量を記録する。この使用容量は、当該プール60において、データ(例えば、ユーザデータ、メタデータ)を格納するために使用されている領域のサイズの総和である。
【0054】
カラム2055は、対応するプール60におけるGC動作モードを記録する。本実施例では、GC動作モードとして、I/O性能を優先するモード(第2動作モード)である「性能優先」と、ドライブの寿命を保護することを優先するモード(第1動作モード)である「寿命優先」の2タイプがある。CPU24は、プールを構成するドライブの耐久性の判定結果に応じて、GC動作モードを決定する。構成ドライブが低耐久と判定された場合、プールは寿命重視モードと決定される。構成ドライブが高耐久と判定された場合、プールは性能重視モードと決定される。
【0055】
本例において、CPU24は、構成ドライブの種別に応じて、GC動作モードを決定する。ドライブ種別は、RAID構成管理テーブル204のカラム2044に示されている。本例において、QLC SSDのプールは寿命重視モードと決定され、TLC SSDのプールは性能重視モードと決定される。このように、ストレージ装置11において、QLC SSDは低耐久SSDであり、TLC SSDは高耐久SSDであると定義されている。
【0056】
CPU24は、GC動作モードの設定に基づき、後述するガベージコレクション処理やガベージコレクション実施判定処理の内部処理を切り替える。
【0057】
<ライト処理>
図8は、本実施例におけるライト処理の処理フローを説明する図である。ライト処理は、ホスト計算機40からのライト要求を受領し、ストレージ装置11にデータを記録する処理である。ライト要求では、例えばライト先のLUN ID及び論理アドレスがホスト計算機40によって指定される。
【0058】
以下、
図8を用いて、本実施例におけるライト処理の処理フローを説明する。S801:CPU24は、ホスト計算機40からデータライト要求及びデータを受領する。S802:CPU24は、ホスト計算機40から受領したデータに対して圧縮処理を適用し、圧縮データを得る。なお、この圧縮処理はCPU24自体が実施してもよいし、ストレージ装置11内に圧縮処理を実行可能なハードウェアを有する場合は、当該ハードウェアに圧縮処理を実行させてもよい。
【0059】
S803:CPU24は、圧縮データを格納する先のページ70を選択する。CPU24は、ページ管理テーブル203、RAID構成管理テーブル204、及びプール管理テーブル205を参照する。当該ページの最終追書き位置からページ終端までのサイズをページ内空き領域とし、前記ページ内空き領域が前記圧縮データのサイズよりも大きいページ70をデータ格納先ページとして選択する。
【0060】
S804:CPU24は、ステップS803にて条件を満たすページを格納先ページとして選択できた場合、ステップS805に進む。条件を満たすページが存在しない場合、ステップS808に進む。S805:CPU24は、メモリ25に圧縮データを格納する。
【0061】
S806:CPU24は、メタデータ管理テーブル202内のページID2021及びページ内の論理アドレス2021に対応する物理アドレス2022、圧縮前サイズ情報2023、圧縮後サイズ情報2024の値をそれぞれ更新する。また、更新ライトの場合は、ページ管理テーブル203のうち、更新前データを格納していたページ70に対応するガベージ量2034の値を、更新前データのサイズ分だけ増加させる。これにより、ガベージ化したデータ量を管理する。また、前回追書き位置2035の値を、今回圧縮データを格納した追書き位置の値で更新する。
【0062】
S807:CPU24は、ホスト計算機40に対して、ライト処理完了の応答を返し、処理を終了する。S808:CPU24は、ホスト計算機40に対して、空き容量不足のためライト処理が失敗したことを示す応答を返し、処理を終了する。
【0063】
なお、
図8の説明において、ホスト計算機40に対するライト完了応答の前に圧縮処理を実施しているが、この圧縮処理をライト処理と非同期で実施してもよい。たとえば、ホスト計算機40から受領したデータをメモリ25に格納後、ホスト計算機40に対してライト完了応答を行ってから、メモリ25上のデータに対して非同期で圧縮処理を実施してもよい。
【0064】
<ガベージコレクション処理>
図9は、本実施例におけるガベージコレクション処理の処理フローを説明する図である。ガベージコレクション処理は、対象ページ70に含まれる有効データとガベージのうち、有効データのみを他のページに移行した後、対象ページ70を破棄することで、ガベージによって占められていた記憶領域を解放し、再利用可能とする処理である。
【0065】
CPU24は、後述するガベージコレクション実施判定処理において、ガベージコレクション実施対象と判定された記憶領域(例えばページ70)を対象として、ガベージコレクション処理を実施する。
【0066】
CPU24は、ガベージコレクション実施対象と判定したページ70に対して、CPU24によって定期的に実施してもよいし、ライト処理によってプール60やページ70に含まれるガベージの量が増加したことを契機として、ライト処理と同期的、または非同期的に実施してもよい。
【0067】
また、ガベージコレクション処理は、ストレージシステム100内の論理構成が変更されたことを契機として実施してもよい。例えば、LUN50、LDEV、プール60、またはRAIDグループ80のサイズが変更された場合に実施してもよい。
【0068】
または、ストレージシステム100内の物理構成が変更されたことを契機として実施してもよい。例えば、ドライブ29の増設や減設を契機として実施してもよい。
【0069】
以下、
図9を用いて、本実施例におけるガベージコレクション処理の処理フローを説明する。
【0070】
S901:CPU24は、ページ管理テーブル203を参照し、対象ページの先頭アドレスから、前回追書き位置までのアドレス範囲に含まれるデータを列挙する。
【0071】
S902:CPU24は、ステップS1101にて列挙したデータのうち、先頭のデータを処理対象として選択する。
【0072】
S903:CPU24は、ステップS901にて列挙したデータのうち、未処理のデータが残っているか否かを判定する。未処理のデータが残っている場合は(S903:YES)、ステップS904に進む。未処理のデータが残っていない場合(S903:NO)、当該ページ70に含まれるすべての有効データを別のページ70へ移行し終えたため、ガベージコレクション処理を完了する。
【0073】
S904:CPU24は、メタデータ管理テーブル202の物理アドレス情報2022及び論理アドレス情報を参照し、対象データが有効データであるか否かを判定する。対象データの位置する物理アドレスに対して、対応する論理アドレスが存在する場合、対象データは有効データと判定する。そうでない場合、対象データは有効データではないと判定する。有効データである場合(S904:YES)は、ステップS905に進む。有効データではない場合(S904:NO)は、ステップS906に進む。
【0074】
S905:CPU24は、対象データをプール60内の他のページ70にコピーする。
【0075】
S906:CPU24は、ステップS1201にて列挙したデータから、次のデータを選択し、ステップS1203に進む。
【0076】
S907:CPU24は、ページ管理テーブル203を参照し、対象ページ70に対応するエントリのうち、ガベージ量2034の値と前回追書き位置2035の値を初期値に書き換える。
【0077】
<ガベージコレクション実施判定処理>
図10は、本実施例におけるガベージコレクション実施判定処理の処理フローを説明する図である。ガベージコレクション実施判定処理は、ストレージシステム100内の各プール60に対して、ガベージコレクション処理を実施するか否かを判定する処理である。
【0078】
ガベージコレクション実施判定処理は、CPU24によって定期的に実施されてもよいし、ライト処理によってプール60やページ70に含まれるガベージ量が一定量増加したことを契機として、ライト処理と同期的、または非同期的に実施してもよい。
【0079】
また、ガベージコレクション実施判定処理は、ストレージシステム100内の論理構成が変更されたことを契機として実施してもよい。例えば、LUN50、LDEV、プール60、またはRAIDグループ80のサイズが変更された場合に実施してもよい。または、ストレージシステム100内の物理構成が変更されたことを契機として実施してもよい。例えば、ドライブ29の増設や減設を契機として実施してもよい。
【0080】
以下、
図10を用いて、本実施例におけるガベージコレクション実施判定処理の処理フローを説明する。
【0081】
S1001:CPU24は、プール管理テーブル205を参照し、対象プール60のGC動作モードを取得する。CPU24は、GC動作モードが「寿命重視」である場合は、S1002へ進む。GC動作モードが「性能重視」である場合は、S1003へ進む。
【0082】
本実施例は、GC動作モードが「性能重視」である場合は、対象プール60の空き容量に依らずGCを実行する場合を示すため、「性能重視」である場合は、直接S1003へ遷移している。
【0083】
同等の動作を実現するために、GC動作モードに依らずS1002に遷移し、S1002において、GC動作モードに応じてプール閾値を使い分けてもよい。例えば、GC動作モードが「性能重視」の場合は、対象プール60の容量以上の値(例えば無限大)をプール閾値として用いることにより、対象プール60の空き容量に依らずにS1002からS1003へ遷移するため、同等の動作が実現できる。
【0084】
S1002:CPU24は、プール管理テーブル205を参照し、対象プール60のプール容量およびプール使用容量を取得し、プール容量とプール使用容量の差から、プール空き容量を算出する。CPU24は、プール空き容量がプール閾値以上であれば、S1007へ進む。そうでない場合は、S1003へ進む。
【0085】
ここでプール閾値は、例えばガベージコレクション処理速度(ガベージコレクション処理によって単位時間あたりに生成できるプールの空き容量)とドライブ寿命に基づいて設計する。プール閾値が大きいほど、プール空き容量が増加し、プールが枯渇しづらくなる。プール内に維持される空き容量が多いほど、I/O処理に対して割くことのできる処理リソースを相対的に増やすことができるが、ガベージコレクション処理によって書き戻されるデータ量が増えるため、ドライブ寿命を消耗しやすくなる。
【0086】
S1003:CPU24は、ページ管理テーブル203を参照し、対象プール60に対応する全ページ70を対象として、以下の判定(X1)を行う。
(X1)対象ページ70に含まれるガベージ量は、ページ単位ガベージ量閾値以上である。
CPU24は、対象ページ70のうち、判定(X1)の結果が肯定的であるページ70が1以上あれば、S1004へ進む。そうでない場合は、S1006へ進む。なお、ガベージ量閾値は、異なる動作モードに対して異なる値が設定されてもよい。
【0087】
S1004:CPU24は、ガベージコレクション処理に割り当てるCPU24の計算リソース量を判定する。CPU24は、既にガベージコレクション処理に割り当てられているCPU24の計算リソース量が目標値に達していない場合は、S1005に進む。そうでない場合は、S1006に進む。
【0088】
「計算リソース量」は、例えば、CPU24の稼働率(CPU24の稼働時間が全体時間に対して占める比率)で表される。ガベージコレクション処理に割り当てる計算リソース量の目標値は、プール空き容量に応じて変動させる。これは、プール容量の枯渇を防ぐ上で、空き容量が少ないほどガベージコレクション処理速度を上げる必要があるためである。
【0089】
ガベージコレクション処理に割り当てる計算リソース量は、例えばガベージコレクション処理の多重度(並列実行数)を通じて制御してもよい。この場合、多重度に比例する形で計算リソース量が増える。
【0090】
「計算リソース量の目標値」は、例えばプール容量のある範囲Rに対して、範囲Rの下限において計算リソース量の目標値が最大値となり、範囲Rの上限において計算リソース量の目標値が最小値となるように定めたうえで、範囲Rの上限と下限の間における計算リソース量の目標値が線形的になるように算出してもよい。プール容量が範囲Rの外の場合は、範囲Rの中で最も近い値における計算リソース目標値を採用してよい。
【0091】
S1005:CPU24は、対象プール60をガベージコレクション実施対象と判定し、処理を終了する。
【0092】
S1006およびS1007:CPU24は、対象プール60をガベージコレクション実施対象外と判定し、処理を終了する。
【0093】
以上、本発明の実施例1によれば、ストレージシステムに所属するドライブ種別に応じて、ドライブ寿命を保護する動作とI/O性能を重視する動作を使い分けることができる。
【実施例2】
【0094】
以下、実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略あるいは簡略する(後述の実施例3についても同様である)。実施例1では、ストレージシステム内の各プールのGC動作モードは、プールを構成するドライブの種別に基づきCPU24が決定していた。実施例2では、各プールのGC動作モードについて、ストレージシステム100の管理者による設定を可能とする。
【0095】
<動作モード選択画面>
図11は、動作モード選択画面1101を説明する図である。この画面1101は、ガベージコレクションの動作モードを管理計算機42から入力するための画面である。この画面1101に、管理計算機42のユーザによって、対象プール60についてのプールID、GC動作モードが指定される。
【0096】
本実施例では、GC動作モードとして「性能優先」及び「寿命優先」の2タイプがある。CPU24は、管理計算機42によって画面1101を通じて指定されたプールIDに対するGC動作モードを、プール管理テーブル205内のエントリに記録する。
【0097】
以上が、実施例2の説明である。実施例2によれば、ストレージシステムの管理者が、ドライブ寿命の要件やI/O性能の要件に基づいて、ドライブ寿命を優先するストレージシステム動作と性能を優先するストレージシステム動作を使い分けることが可能になる。
【0098】
なお、本実施例の動作モード選択画面(
図11参照)では、GC動作モードをプール60単位で指定したが、RAIDグループ単位で指定してもよい。これにより、プールと異なる観点からモード設定が可能となる。この場合、CPU24は、ドライブ29単位に指定されたGC動作モードの情報を、プール管理テーブル205ではなく、RAID構成管理テーブル204に記録してもよい。
【0099】
例えば、CPU24は、ドライブIDが0~3であるドライブ29からなるRAIDグループに対してGC動作モードが指定された場合、そのRAIDグループ80(
図6の例では、RAIDグループIDが20のRAIDグループ)のエントリに対して、GC動作モードを保持する新規カラムに、GC動作モードを記録してもよい。この場合、ガベージコレクション実施判定処理(
図10参照)におけるGC動作モード確認(S1001)では、プール管理テーブル205の代わりに、RAID構成管理テーブル204を参照し、対応するRAIDグループのエントリからGC動作モードを取得する。
【実施例3】
【0100】
以下、実施例3を説明する。本発明の実施例3では、管理計算機42に動作モード選択画面(
図11参照)を表示し、プールIDに対するGC動作モードの入力を受ける。本実施例では、GC動作モードとして、「性能重視」「寿命重視」または「バランス」のいずれかが指定される(「バランス」は
図11中に明記されていない)。本実施例におけるGC動作モードの「バランス」は、プールを構成するドライブの寿命に応じて、動的にガベージコレクションの実行を制御する動作モードである。
【0101】
<動作モード選択画面>
図11は、動作モード選択画面1101を説明する図である。この画面1101は、ガベージコレクションの動作モードを管理計算機42から入力するための画面である。この画面1101に、管理計算機42のユーザによって、対象プール60についてのプールID、GC動作モードが指定される。
【0102】
本実施例では、GC動作モードとして「性能優先」「寿命優先」及び「バランス」の3タイプがある。CPU24は、管理計算機42によって画面1101を通じて指定されたプールIDに対するGC動作モードを、プール管理テーブル205内のエントリに記録する。
【0103】
<ドライブ状態判定処理>
図12は、本実施例におけるドライブ状態判定処理の処理フローを説明する図である。ドライブ状態判定処理は、CPU24により実行され、ストレージシステム内に定義されている各プールについて、当該プールを構成するドライブの状態に基づいて、当該プールに対するガベージコレクション処理の制御方式を決定する処理である。ドライブ状態判定処理は、定期的に実行してもよいし、ガベージコレクション処理に対して同期的に実行してもよい。
【0104】
以下、
図12を用いて、本実施例におけるドライブ状態判定処理の処理フローを説明する。ドライブ状態判定処理は、バランスモード(第3動作モード)のプールについて、
図10に示すガベージコレクション実施判定処理のS1003において実行される。
【0105】
S1201:CPU24は、プール管理テーブル205、およびRAID構成管理テーブル204を参照し、対象プール60に対応するドライブ29のリスト情報を得る。
【0106】
S1202:CPU24は、S1201において得たドライブ29のリスト情報に含まれる各ドライブ29について、ドライブ29内部のモニタデータを取得する。このモニタデータは、ドライブ29の寿命情報を示唆するデータであり、例えば、ドライブ29に対して書き込み可能な総データ量に関する情報、および、ドライブ29に対して書き込み済の総データ量に関する情報である。
【0107】
上記のモニタデータの例として、例えばSSDが提供するS.M.A.R.T.(Self-Monitoring Analysis and Reporting Technology)情報などが挙げられる。
【0108】
S1203:CPU24は、S1202にて取得した各ドライブ29のモニタデータをもとに、各ドライブ29の残り寿命(残り寿命時間)を予測する。ストレージシステムにおけるドライブの残り寿命を予測する方法は公知であるため、詳細を割愛する。
【0109】
S1204:CPU24は、ページ単位のガベージ量の閾値を決定する。ページ単位のガベージ量の閾値は、種々の要素を基に決定することができるが、本実施例では、下記の要素:
(E1)対象プールの基になっているドライブの残り寿命
(E2)対象プールの基になっているドライブへのライト速度
(E3)「ページ単位のガベージ量の閾値」に対するライト増幅率
を基に、決定される。これらドライブについての数値は、例えば、プールに割り当てられているドライブの平均値を使用することができる。
【0110】
例えば、ページ単位のガベージ量の閾値は、要素(E2)に対して要素(E3)を係数として掛けて得られた値(閾値によって補正した後のドライブライト速度)に基づき、対象ドライブの残り寿命に対して、予め指定されている寿命(例えば実装からの保証期間満了時)を満たす範囲で、できるだけ高いページ単位ガベージ量の閾値を設定する。ここで、ライト増幅率とは、ホスト計算機からストレージシステムに対するライトデータ量に対して、ドライブへのライトデータ量がどの程度増幅するかを示す指標である。ライト速度とライト増幅率から将来のライト量が予測され、それによりドライブの残り寿命が予測される。
【0111】
要素(E3)は、例えば次のように経験的に決定されてもよい。例えば、ストレージシステムの稼働時において、ホスト計算機から各プールに紐づくLDEVに対するライトデータ量と、それぞれのプールに紐づくドライブに対するライトデータ量を記録し、これらからライト増幅率を計算する。このとき得られたライト増幅率と、当該の運用期間において適用されていた「ページ単位のガベージ量の閾値」の組から、「ページ単位のガベージ量の閾値」に対するライト増幅率を算出することができる。これを周期的に算出し、結果をメモリ上に記録しておき、S1204において参照してもよい。
【0112】
「ページ単位のガベージ量の閾値」が低いほど、ガベージコレクション処理が頻繁に実施されるため、ドライブへのライトデータ量が増え、ライト増幅率が増加する。また、ページ単位のガベージ量の閾値の代わりに、ページ単位のガベージ率の閾値を用いてもよい。「ページ単位のガベージ率」とは、1ページ内の全領域に対して、ガベージが占める領域のサイズの割合である。
【0113】
以上が、本実施例におけるドライブ状態判定処理の処理フローである。CPU24は、GC動作モードが「バランス」のプールに対してガベージコレクション実施判定処理(
図10参照)を実行する際、S1003において、ドライブ状態判定処理で設定したガベージ量閾値を参照し、当該ガベージ量閾値以上のページが存在する場合に、ガベージコレクション実施対象とする。CPU24は、S1001において、例えば性能重視モードと同様に、バランスモードについての判定を行ってよい。
【0114】
これにより、ドライブの残り寿命が短い場合は、当該ドライブに対するガベージコレクション処理の実施頻度が減ることで、当該ドライブの寿命の消耗を抑えることができる。一方、ドライブの残り寿命が十分長い場合は、当該ドライブに対するガベージコレクション処理を積極的に実行し、空き領域を多く確保する。これにより、ストレージシステムに対するI/O要求の負荷が高い場合において、より多くのシステムリソースをI/O処理に割くことができるため、I/O性能を向上できる。
【0115】
以上、実施例3によれば、ストレージシステムがドライブ寿命に基づき自律的にガベージコレクションの動作を制御することが可能になる。これにより、ドライブ寿命の消耗の程度を一定に保つことのできる範囲内において、ガベージコレクションを積極的に実施することで、I/O性能の高いストレージシステムを実現することができる。
【0116】
上記例は、ユーザによるバランスモードの指定を受け付ける。他の例において、CPU24は、寿命重視モードのドライブの残寿命の予測値が指定されたドライブの寿命を超えており、かつその差が閾値を超える場合に、寿命重視モードからバランスモードにGC動作モードを変更してよい。
【0117】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0118】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
【0119】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0120】
100 ストレージシステム
11 ストレージ装置
22 ストレージコントローラ
24 CPU
29 ドライブ
60 プール
70 ページ
203 ページ管理テーブル
204 RAID構成管理テーブル
205 プール管理テーブル
1101 動作モード選択画面