(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023100301
(43)【公開日】2023-07-19
(54)【発明の名称】ストレージ装置及びその制御方法
(51)【国際特許分類】
G06F 3/06 20060101AFI20230711BHJP
G06F 13/10 20060101ALI20230711BHJP
【FI】
G06F3/06 301Z
G06F3/06 305C
G06F3/06 540
G06F13/10 340A
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022000846
(22)【出願日】2022-01-06
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】長尾 尚
(72)【発明者】
【氏名】吉原 朋宏
(72)【発明者】
【氏名】藤井 裕大
(57)【要約】
【課題】ストレージ装置の処理量を低減する。
【解決手段】ストレージコントローラは、ホストからアクセスされる論理ボリュームと、論理ボリュームとマッピングされ前記ホストから受信したホストデータが追記される追記アドレス空間と、追記アドレス空間とマッピングされる物理アドレス空間と、を管理する。追記アドレス空間において、複数のパリティグループ毎に異なるアドレス領域が割り当てられる。ストレージコントローラは、追記アドレス空間において、空きアドレス領域をホストから受信したホストデータの追記先として選択し、追記先として、データ回復が不要な通常状態パリティグループにマッピングされている領域を、データ回復が必要な非通常状態パリティグループに割り当てられている領域より優先する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ホストからのアクセスを受け付ける、ストレージコントローラと、
ホストデータを格納する複数の記憶ドライブと、を含み、
前記複数の記憶ドライブは、複数のパリティグループを含み、
前記ストレージコントローラは、
前記ホストからアクセスされる論理ボリュームと、
前記論理ボリュームとマッピングされ、前記ホストから受信したホストデータが追記される追記アドレス空間と、
前記追記アドレス空間とマッピングされる、前記複数の記憶ドライブの物理アドレス空間と、を管理し、
前記追記アドレス空間において、前記複数のパリティグループ毎に異なるアドレス領域を割り当て、
前記追記アドレス空間において、空きアドレス領域を、前記ホストから受信したホストデータの追記先として選択し、
前記追記先として、データ回復が不要な通常状態パリティグループにマッピングされている領域を、データ回復が必要な非通常状態パリティグループに割り当てられている領域より優先する、ストレージ装置。
【請求項2】
請求項1に記載のストレージ装置であって、
前記非通常状態パリティグループは、障害記憶ドライブを含むパリティグループであり、
前記通常状態パリティグループは、正常記憶ドライブのみからなるパリティグループである、ストレージ装置。
【請求項3】
請求項1に記載のストレージ装置であって、
前記非通常状態パリティグループは、データ移行中のパリティグループであり、
前記通常状態パリティグループは、データ移行前又はデータ移行後のパリティグループである、ストレージ装置。
【請求項4】
請求項2に記載のストレージ装置であって、
前記ストレージコントローラは、前記追記先として、
データ移行前及びデータ移行後のパリティグループを、データ移行中のパリティグループより優先し、
前記データ移行中のパリティグループを、前記障害記憶ドライブを含むパリティグループより優先する、ストレージ装置。
【請求項5】
請求項3に記載のストレージ装置であって、
前記ストレージコントローラは、前記追記先として、前記データ移行前のパリティグループにおいて、移行順が先のパリティグループを移行順が後のパリティグループより優先する、ストレージ装置。
【請求項6】
請求項1に記載のストレージ装置であって、
前記追記アドレス空間は、規定サイズのページに分割して管理され、
前記ストレージコントローラは、前記追記先として、前記ホストから受信したホストデータを格納する空きアドレス領域を有する一つのページを選択する、ストレージ装置。
【請求項7】
請求項6に記載のストレージ装置であって、
前記ストレージコントローラは、複数の追記先候補のページにおいて、前回選択時刻が最も古いページを前記追記先として選択する、ストレージ装置。
【請求項8】
請求項1に記載のストレージ装置であって、
前記ストレージコントローラは、前記ホストデータのデータサイズを縮小するデータ変換を行って、前記追記アドレス空間に追記する、ストレージ装置。
【請求項9】
ストレージ装置の制御方法であって、
ホストからアクセスされる論理ボリュームと、
前記論理ボリュームとマッピングされ、前記ホストから受信したホストデータが追記される追記アドレス空間と、
前記追記アドレス空間とマッピングされる、前記複数の記憶ドライブの物理アドレス空間と、を管理し、
前記追記アドレス空間において、前記複数のパリティグループ毎に異なるアドレス領域を割り当て、
前記追記アドレス空間において、空きアドレス領域を、前記ホストから受信したホストデータの追記先として選択し、
前記追記先として、データ回復が不要な通常状態パリティグループにマッピングされている領域を、データ回復が必要な非通常状態パリティグループに割り当てられている領域より優先する、制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はストレージ装置及びその制御方法に関する。
【背景技術】
【0002】
例えばドライブ故障時やデータ移行時においても、業務を止めないストレージ装置が求められている。ドライブ故障時にストレージ装置への入出力(I/O)を継続するそのための技術として、RAID(Redundant Array of Independent Disk)技術が広く普及している。
【0003】
RAID技術は、データと当該データから生成した冗長コード(パリティ)を複数のドライブに格納する。パリティを用いることで、グループ内のドライブが故障しても、他ドライブの情報を使ってデータを復元して、ストレージ装置への入出力を継続することができる。
【0004】
故障した記憶ドライブは正常なものと交換して、正常な記憶ドライブに他の記憶ドライブのデータから復元したデータを格納することで、故障前の状態を復旧できる。しかし、復旧中に別のドライブが故障すると、データを復元できなくなる(データロスト)場合がある。したがって、復旧に要する時間を短くして、冗長度をできるだけ早く回復することが重要であり、継続しているI/Oによる回復時間の延長を抑制すべきである。
【0005】
そのほか、データ削減機能を有するストレージ装置が知られている(例えば特許文献1を参照)。データ削減機能は、データ圧縮や重複排除を使用する。データ削減機能が有効な場合、ホストがライトしたデータよりも実際にドライブに格納するデータは少なくなる。ドライブに効率的にデータを格納するために、追記空間と呼ぶ階層に、重複排除や圧縮後のデータを前詰めに配置してから、ドライブにデータを格納する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許出願公開第2019/0243582号
【発明の概要】
【発明が解決しようとする課題】
【0007】
例えばドライブ故障時やデータ移行時のような、非通常状態においても業務継続のためにホストからのデータライトを受け付けることが要求される。故障ドライブを含むパリティグループにデータライトすると、当該データもドライブ交換後の生成し直しの対象となり、生成し直しに要する時間(回復時間)が延びてしまう。移行中のパリティグループにデータライトすると、移行後の差分データの回復が必要となり、処理時間が増加する。したがって、継続的にデータライトを受けつつ、付加的な処理を低減できる技術が望まれる。
【課題を解決するための手段】
【0008】
本開示の一態様のストレージ装置は、ホストからのアクセスを受け付ける、ストレージコントローラと、ホストデータを格納する複数の記憶ドライブと、を含み、前記複数の記憶ドライブは、複数のパリティグループを含み、前記ストレージコントローラは、前記ホストからアクセスされる論理ボリュームと、前記論理ボリュームとマッピングされ、前記ホストから受信したホストデータが追記される追記アドレス空間と、前記追記アドレス空間とマッピングされる、前記複数の記憶ドライブの物理アドレス空間と、を管理し、前記追記アドレス空間において前記複数のパリティグループ毎に異なるアドレス領域を割り当て、前記追記アドレス空間において、空きアドレス領域を前記ホストから受信したホストデータの追記先として選択し、前記追記先として、データ回復が不要な通常状態パリティグループにマッピングされている領域を、データ回復が必要な非通常状態パリティグループに割り当てられている領域より優先する。
【発明の効果】
【0009】
継続的にデータライトを受けつつ、付加的な処理を低減できる。
【図面の簡単な説明】
【0010】
【
図1】実施例1におけるホストデータの追記先の選択方法の概要を示す。
【
図3】ストレージ装置における、LUN、プール、記憶ドライブのアドレス空間、プール内ページ、及び記憶ドライブアドレス空間内ページの対応関係を示す図である。
【
図4】ホストアドレス管理テーブルの構成例を示す。
【
図7】パリティグループ管理テーブルの構成例を示す。
【
図8】記憶ドライブを管理する。ドライブ管理テーブルの構成例を示す。
【
図9】ホスト計算機から受信したホストデータのライト処理例のフローチャートを示す。
【
図10】
図9のフローチャートにおける、追記先選択処理の例のフローチャートである。
【
図11】
図10のフローチャートにおける、追記可能ページ取得処理の例のフローチャートである。
【
図12】データ回復処理の例のフローチャートである。
【
図13】実施例2におけるホストデータの追記先の選択方法の概要を示す。
【
図14】本明細書の一実施例のハードウェア構成例を示す。
【
図15】ストレージ装置の管理情報の含まれる、移行状態管理テーブルの構成例を示す。
【
図16】本明細書の一実施例に係る、ホスト計算機から受信したホストデータのライト処理例のフローチャートを示す。
【
図17】
図16のフローチャートにおける、追記先選択処理の例のフローチャートである。
【
図18】差分リビルド処理例のフローチャートを示す。
【
図19】実施例3における、追記先選択処理例のフローチャートを示す。
【
図20】追記先選択処理の他例のフローチャートを示す。
【発明を実施するための形態】
【0011】
以下、図面を用いて実施例を説明する。なお、実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではなく、また実施例の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0012】
以下の説明では、「xxxテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「xxxテーブル」を「xxx情報」と呼ぶことができる。また、以下の説明では、要素の識別情報として番号が使用されるが、他種の識別情報(例えば名前、識別子)が使用されてよい。
【0013】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号における共通符号(又は参照符号)を使用し、同種の要素を区別して説明する場合は、参照符号(又は要素のID)を使用することがある。
【0014】
また、以下の説明では、「主記憶」は、メモリを含んだ1以上の記憶デバイスでよい。例えば、主記憶は、主記憶デバイス(典型的に揮発性の記憶デバイス)及び補助記憶デバイス(典型的には不揮発性の記憶デバイス)のうちの少なくとも主記憶デバイスでよい。また、記憶部は、キャッシュ領域(例えばキャッシュメモリ又はその一部領域)とバッファ領域(例えばバッファメモリ又はその一部領域)とのうちの少なくとも1つを含んでいてもよい。
【0015】
また、以下の説明では、「RAID」は、Redundant Array of Independent (or Inexpensive) Disksの略である。RAIDグループは、複数の記憶ドライブで構成され、そのRAIDグループに関連付けられたRAIDレベルに従いデータを記憶する。RAIDグループはパリティグループとも呼ばれる。以下の説明では、「プール」の記憶領域は、複数の記憶ドライブの記憶領域とマッピングされる。つまり、プール記憶領域は、複数の記憶ドライブの記憶領域で構成される。これら記憶ドライブはRAIDグループを構成していてもよい。
【0016】
以下の説明では、「LUN」は、論理的な記憶デバイス又はボリュームを意味し、プールの一部の記憶領域、又は全ての記憶領域とマッピングされる。つまり、LUNは、プールの一部の記憶領域、又は全ての記憶領域で構成される。ホストは「LUN」に対してI/O(Input/Output)要求を実行する。LUNは、論理ボリュームである。LUNと記憶ドライブの記憶領域との間において、記憶領域の割り当ては、プールを介して管理される。
【0017】
プログラムは、ストレージコントローラに含まれるプロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えば主記憶)及び/又は通信インタフェース装置(例えばHCA)を用いながら行うため、処理の主語がストレージコントローラ或いはプロセッサとされてもよい。また、ストレージコントローラは、処理の一部又は全部を行うハードウェア回路を含んでもよい。コンピュータプログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ、又は、コンピュータ読取可能な記憶メディアであってもよい。
【0018】
以下の説明では、「ホスト」は、ストレージ装置にI/O要求を送信するシステムであり、インタフェースデバイスと、記憶部(例えばメモリ)と、それらに接続されたプロセッサとを有してよい。ホストシステムは、1以上のホスト計算機で構成されてよい。少なくとも1つのホスト計算機は、物理的な計算機でよく、ホストシステムは、物理的なホスト計算機に加えて仮想的なホスト計算機を含んでよい。
【実施例0019】
図1は、実施例1におけるホストデータの追記先の選択方法の概要を示す。ストレージ装置は、外部のホスト計算機から受信した平文データに対して圧縮処理S10を実行して、圧縮データを生成する。圧縮データは、記憶ドライブ110に格納される。
【0020】
以下の説明において、データ圧縮が例として説明されるが、データ圧縮と共に又は代えて重複排除が実行されてもよい。重複排除が適用された場合、重複する複数のデータのうちの少なくとも1つの重複データが削除され、削除された重複データの論理アドレスに、残ったデータの物理アドレスが関連付けられる。データサイズの変更を伴う任意の処理が実行されてもよく、又は、これらのようなデータ変換処理が省略されてもよい。
【0021】
ストレージ装置は、ホストデータのI/Oを行うために、複数のアドレス空間を関連付けて管理する。具体的には、ホスト計算機がデータの書き込み及び読み出しを行うためのボリュームであるLUN151、圧縮データを格納するアドレス空間であるプール161、そして記憶ドライブのアドレス空間を管理する。
【0022】
図1の例において、複数の記憶ドライブがパリティグループ(RAIDグループ)を構成している。具体的には、パリティグループ115A、115Bは、それぞれ、4つの記憶ドライブで構成されている。パリティグループの構成記憶ドライブ数は、任意である。
図1において、一つの障害ドライブ110Bが例として示されている。他の記憶ドライブは正常記憶ドライブであって、例として一つの正常記憶ドライブが符号110Aで指示されている。
【0023】
LUN151の平文データのアドレス領域と、プール161における圧縮データのアドレス領域とマッピングされる。また、プール161における圧縮データのアドレス領域と記憶ドライブのアドレス空間における圧縮データのアドレス領域とがマッピングされる。例えば、LUN151とプール161との間のマッピングは可変であり、プール161と記憶ドライブのアドレス空間との間のマッピングは固定である。プール161の異なるアドレス領域が、パリティグループ毎に割り当てられる。
【0024】
図1に示す構成例において、プール161及び記憶ドライブのアドレス空間は、ページ単位で管理されている。ページは、規定サイズのアドレス領域である。
図1は、プール161内のページ163A、163Bを例として示し、記憶ドライブのアドレス空間のページ173A、173Bを例として示す。記憶ドライブのアドレス空間において、ページは、一つのパリティグループのアドレス領域に含まれる。なお、プール161及び記憶ドライブのアドレス空間は、ページを使用することなく管理されてもよい。
【0025】
図1において、ホストからの平文データA153A、平文データB153B、及び平文データC153Cが、LUN151に格納されている。平文データは、圧縮処理S10によって、圧縮データに変換される。
図1において、圧縮データa165A、圧縮データb165B、圧縮データc165Cは、それぞれ、平文データA153A、平文データB153B、平文データC153Cから生成される。
【0026】
圧縮データa165Aは、プール161において、ページ163Aに格納されている。圧縮データb165B及び圧縮データc165Cは、プール161において、ページ163Bに格納されている。ページ163Aは、パリティグループ115Aのページ173Aに割り当てられ、ページ163Bは、パリティグループ115Bのページ173Bに割り当てられている。従って、ページ173Aは圧縮データa165Aを格納し、ページ163Bは、圧縮データb165B及び圧縮データc165Cを格納している。
【0027】
本明細書の一実施例において、ストレージ装置内の複数のアドレス空間は、「追記型データ構造」を有する。追記型データ構造は、更新前のデータと異なる物理位置に更新後のデータを格納し、格納されているデータの参照先を変更することでデータを更新する構造である。圧縮後のデータサイズは、圧縮前データの内容によって異なるため、データ削減の効率を高めるには、圧縮後のデータを隙間なく記憶ドライブに格納する。追記型データ構造の詳細は後述する。
【0028】
ストレージ装置は、プール161において、受信したホストデータを格納するページを、複数のページから選択することができる。本明細書の一実施例において、ストレージ装置は、正常状態の記憶ドライブの記憶領域のみから成るページを、ホストデータを追記するページとして選択する。これにより、パリティグループのデータ回復処理において回復すべきデータ量の増加を避けることができる。
【0029】
図2は、情報システムの構成の一例を示す図である。情報システムは、1つ以上のストレージ装置102、及び1つ以上のホスト計算機103を含む。ホスト計算機103とストレージ装置102とは、ネットワーク112を介して通信する。ストレージ装置102は、1つ以上のストレージコントローラ104、及び1つ以上のドライブ筐体105を不含む。
図2の例において、二つのストレージコントローラが示されており、一つのストレージコントローラに対してのみ、例として、符号が付与されている。また、
図2の例においては、一つのドライブ筐体が示されている。
【0030】
ドライブ筐体105は、複数の記憶ドライブ110を含む。本明細書の一実施例において、ドライブ筐体105は、複数のパリティグループを含み、各パリティグループは複数の記憶ドライブ110を含む。一つの記憶ドライブ110は、1又は複数のパリティグループに属し得る。
図2では、ストレージコントローラ104とドライブ筐体105は、直接接続されているが、ネットワークスイッチを介して接続されていてもよく、各ストレージコントローラ104が複数のドライブ筐体と通信可能でよい。
【0031】
記憶ドライブ110は、不揮発性半導体メモリを搭載したAFA(All Flash Array)で構成してもよく、それらの全部又は一部がハードディスクドライブ(HDD)と置き換えられていてもよい。また、追記型のデータ構造としては、例えば、ログストラクチャード方式など周知又は公知の技術を適用すればよい。
【0032】
ストレージコントローラ104は、プロセッサ106、メモリ(主記憶)107、ホストインタフェース(I/F)108、及びドライブインタフェース109を含む。ストレージコントローラ104を構成する各種要素の数は、1以上でよい。
【0033】
プロセッサ106は、ストレージコントローラ104全体を制御するものであり、メモリ107に格納されたプログラムに基づき稼働する。ホストインタフェース108は、プロセッサ106により制御され、ホスト計算機103とI/O要求やI/Oデータの送受信などを実施する。ドライブインタフェース109は、プロセッサ106により制御され、ドライブ筐体105を介し、記憶ドライブ110とI/Oデータの送受信などを実施する。
【0034】
図3は、ストレージ装置102における、LUN151、プール161、記憶ドライブ110のアドレス空間、プール内ページ、及び記憶ドライブアドレス空間内ページの対応関係を示す図である。
【0035】
LUN151は、ストレージ装置102に1つ以上存在し、ホスト計算機103から直接アクセスされる。LUN151は、ホスト計算機103からの平文データを格納する。LUN151に対して、LBAで示されるアドレス空間が定義される。LBAは、Logical Block Adressを表す。
【0036】
ホスト計算機103は、LUN151におけるアドレスを指定して、ストレージ装置102へのホストデータの書き込み及び読み出しを行う。ホスト計算機103から受信されるホストデータ及びホスト計算機103に返すホストデータは、非圧縮の平文データである。平文データは、LUN151に格納され、ホスト計算機103に指定されたアドレスが割り当てられる。
図3は、平文データA153A、平文データB153B、平文データC153Cを例として示す。
【0037】
平文データは、ストレージコントローラ104により圧縮されて、圧縮データに変換される。なお、圧縮に加えて又は代えて重複排除が実行されてもよく、他のデータ変換が実行されてもよい。以下において、データ圧縮の例を説明する。
【0038】
圧縮データは、記憶ドライブ110の媒体に格納される。
図3は、平文データA153A、平文データB153B、平文データC153Cそれぞれの圧縮データa165A、圧縮データb165B、圧縮データc165Cを示す。
【0039】
プール161は、記憶ドライブ110に格納される圧縮データを管理するために使用される。プール161に対して、アドレス空間が定義される。圧縮データは、プール161に格納され、アドレス空間のアドレスが割り当てられる。プール161のアドレスと、LUN151のアドレスとの間のマッピングは、後述する管理情報によって管理される。
【0040】
図3に示す構成例において、プール161のアドレス空間は、ページ単位で管理される。ページは予め設定された既定サイズのアドレス領域であり、互いに分離して重複しないように作成される。
図3は、例として、二つのページ163A、163Bを示す。圧縮データは、いずれかのページに格納される、つまり、いずれかのページのアドレス領域が割り当てられる。
図3の例において、圧縮データa165Aに対してページ163Aのアドレス領域が割り当てられ、圧縮データb165B、圧縮データc165Cそれぞれに対して、ページ163Aのアドレス領域が割り当てられている。なお、管理単位としてのページは利用されなくてもよい。
【0041】
図3の構成例において、複数の記憶ドライブ110がパリティグループを構成し、パリティグループのアドレスとプール161のアドレスとは、後述する管理情報により管理される。
図3は、例として、二つのパリティグループ115A、115Bを示す。パリティグループは、ホストデータに加えて、ホストデータから生成された冗長データを格納する。ホストデータ及び冗長データは複数の記憶ドライブ110に分散して格納することで、ホストデータを格納するいずれかの記憶ドライブ110が故障しても、ホストデータを復元することができる。
【0042】
パリティグループの記憶領域は、プール161と同様に、ページ単位で管理される。パリティグループのページサイズは、プール161のページサイズと一致する。
図3は、例として、ページ173A、173Bを示す。ページ173A、173Bは、それぞれ、プール内ページ163A、163Bに割り当てられる。
【0043】
記憶ドライブ110のアドレス空間における圧縮データの開始アドレス及び終了アドレスが、プール161のアドレス空間における圧縮データの開始アドレス及び終了アドレスに、それぞれ対応付けられる。記憶ドライブ110のアドレス空間とプール161との間のマッピングは、固定である。プール161のアドレス空間における圧縮データの開始アドレス及び終了アドレスは、LUN151のアドレス空間の非圧縮データの開始アドレス及び終了アドレスに、それぞれ対応付けられる。これらのマッピングは、更新データの書き込み毎に変更される。
【0044】
圧縮後のデータサイズは、圧縮前のデータパタンに依存して、様々である。圧縮後のデータを無駄なく記憶ドライブ110の記憶領域に格納するために、記憶領域において前詰めにデータが配置される。更新ライトを受けた場合、新旧データ間で圧縮後データサイズが一致する保証がない。そのため、ストレージコントローラ104は、旧データをガベージ化した上で、新データの配置先(追記先)を選択する。LUN151に格納されたホストデータを更新する更新データ及びLUN151に新たに追加されるデータの双方が、連続する有空き領域の先頭アドレスから格納される。
【0045】
追記先は、記憶ドライブ110のアドレスを仮想化した、プール161内のページの中から選択される。プール161は、追記アドレス空間である。ストレージコントローラ104は、追記先としてのページを任意に選択することができる。本明細書の一実施例において、ストレージコントローラ104は、障害記憶ドライブやデータ移行中記憶ドライブ等、正常記憶ドライブと異なる状態であって、予め設定された状態の記憶ドライブよりも、正常記憶ドライブを優先して、追記先を選択する。これにより、パリティグループにおけるデータ回復処理において、回復すべきデータ量の増加を抑制する。
【0046】
追記方式は、ホスト計算機がアクセスする論理アドレスとは異なる物理アドレスにホストデータを追記的に書込む。なお、追記方式は、データ圧縮及び重複排除のいずれも採用しないストレージ装置において採用されてもよい。
【0047】
追記方式は、新前のデータと異なる物理位置に更新後のデータを格納し、LUN151に格納されているデータのプール161における参照先を変更することでデータを更新する。圧縮後のデータサイズは、圧縮前データの内容によって異なるため、データ削減の効率を高めるには、圧縮後のデータを隙間なく記憶ドライブ(パリティグループ)に格納する。
【0048】
追記方式は、圧縮後のデータを記憶ドライブのアドレス空間の任意の位置から前詰めで格納することができるため、圧縮等のデータ削減機能を有するストレージ装置に好適である。本明細書の一実施例において、ストレージ装置102は、追記方式を採用する。ストレージコントローラ104は、ホストライトでLUN151のデータが更新された又は新たにデータがライトされた際、そのデータをプール161の空き領域に格納し、LUN151のデータの参照先を切り替えることでデータを更新する。
【0049】
追記方式においては、新たなデータの追記により、旧データの格納領域無効となる。無効化された領域は、空き領域となるため、空き領域の断片化の原因となる。そこで、追記方式を採用するストレージ装置は、断片化空き領域の回収を行うガベージコレクションを実行する。なお、追記方式におけるガベージコレクションは広く知られた技術であり詳細を省略する。
【0050】
ホスト計算機103が、パリティグループに格納されている圧縮データを読み出す処理の流れの例を説明する。ホスト計算機103は、LUN151のアドレスを指定して、平文データのリード要求をストレージ装置102に送信する。ストレージコントローラ104は、管理情報を参照して、指定されたアドレスに対応するプール161内のアドレスを特定する。
【0051】
ストレージコントローラ104は、プール161内の特定されたアドレスの圧縮データをパリティグループから読み出し、メモリ107に格納する。ストレージコントローラ104は、圧縮データを伸長し、平文データに変換する。平文データは、メモリ107に格納される。ストレージコントローラ104は、読み出された平文データを、ホスト計算機103に返す。
【0052】
図4から
図8は、ストレージコントローラ104が保持する管理情報のいくつかの例を示す。管理情報は、例えば、記憶ドライブ110に格納され、メモリ107にロードされる。
図4は、ホストアドレス管理テーブル210の構成例を示す。ホストアドレス管理テーブル210は、LUNのアドレスとプールのアドレスと間のマッピングを管理する。ホストアドレス管理テーブル210は、ホストLBA欄213、ページ番号欄215、及びページ内アドレス範囲欄217を含む。
【0053】
ホストLBA欄213は、LUNにおけるホストデータ(ユーザデータ)の格納アドレス範囲を示す。アドレスは、LBAで表されている。ホストLBA欄213は、圧縮前のホストデータを格納する(圧縮前のホストデータに割り当てられている)アドレス範囲を示す。
【0054】
ページ番号欄215は、圧縮されたホストデータが格納されている(圧縮されたホストデータに割り当てられている)、プール内のページの番号を示す。ページ番号は、プール161内でページを識別する。ページ内アドレス範囲欄217は、圧縮されたホストデータが格納されている(圧縮されたホストデータに割り当てられている)、ページ内のアドレス範囲を示す。圧縮後のアドレス範囲は、圧縮前のアドレス範囲より小さい。
【0055】
図5は、追記アドレス管理テーブル220の構成例を示す。追記アドレス管理テーブル220は、プール内のページそれぞれの空き領域を管理する。上述のように、ストレージコントローラ104は、前回の書き込み位置に連続する空き領域に新たな圧縮データを格納する。
【0056】
追記アドレス管理テーブル220は、ページ番号欄223、前回追記位置欄225、及び前回選択時刻欄227を含む。ページ番号欄223は、プール内ページの番号を示す。前回追記位置欄225は、各ページにおいて、前回書き込まれた(追記された)データのエンドアドレスを示す。前回追記位置欄225は、各ページにおいて、データが前回追記された時刻を示す。
【0057】
本明細書の一実施例において、ストレージコントローラ104は、前回選択時刻欄227が示す時刻に基づいて、受信したライトデータを追記するページを選択する。例えば、前回追記時刻が最も古いページが選択される。特定の記憶ドライブが性能のボトルネックとなることを避けるために、ストレージコントローラ104は、実装された記憶ドライブを均等に使用する。追記先のページを均等に選択する一方法として、時刻が参照される。他の例において、ラウンドロビンにより新たなホストデータを格納するページが選択されてもよく、空き容量が最も大きいページが選択されてもよい。
【0058】
図6は、ページ管理テーブル230の構成例を示す。ページ管理テーブル230は、プール161のアドレス空間とパリティグループ(記憶ドライブ)の物理アドレス空間と間のマッピングを管理する。ページ管理テーブル230は、ページ番号欄233、パリティグループ番号欄235、及びパリティグループ内アドレス範囲欄237を含む。
【0059】
ページ番号欄233は、プール161内のページの番号を示す。パリティグループ番号欄235は、ページと関連付けられるパリティグループの番号を示す、ページとマッピングされる記憶領域を含むパリティグループの番号を示す。パリティグループ内アドレス範囲欄237は、パリティグループ内において、ページとマッピングされる記憶領域を示す。
【0060】
図7は、パリティグループ管理テーブル240の構成例を示す。パリティグループ管理テーブル240は、パリティグループ番号欄243、パリティ種別欄245、及び所属ドライブ番号欄247を含む。パリティグループ番号欄243は、パリティグループを識別する番号を示す。
【0061】
パリティ種別欄245は、パリティグループのパリティ種別を示す。パリティ種別は、RAID5やRAID6のような一般的なRAIDのみならず、分散型RAIDのような、専門的なパリティ種別を示し得る。後述するように、本明細書の一実施例は、パリティ種別によらず、所属ドライブと関連付けた仮想的なアドレス(ページ)を適切に選択することで、回復時間を抑制する。
【0062】
所属ドライブ番号欄247は、各パリティグループに所属する記憶ドライブの番号を示す。ドライブ番号は、記憶ドライブを識別する。各パリティグループは、複数の記憶ドライブ110で構成される。一つの記憶ドライブは、複数のパリティグループに属することができる。
【0063】
図8は、記憶ドライブ110を管理する。ドライブ管理テーブル250の構成例を示す。ドライブ管理テーブル250は、ドライブ番号欄253及び状態欄255を含む。ドライブ番号欄253は、記憶ドライブ110の番号を示し、状態欄255は記憶ドライブ110それぞれの状態を示す。「障害」は、記憶ドライブに障害が発生していることを示し、「正常」は、記憶ドライブが正常に動作し、通常にIO可能であることを示す。「空き」は、当該記憶ドライブ番号の記憶ドライブが、実装されていないことを示す。
【0064】
以下において、ストレージコントローラ104による処理のいくつかの例を説明する。
図9は、ホスト計算機から受信したホストデータのライト処理例のフローチャートを示す。ホストデータは、LUNにおいてライトデータを格納していないアドレスへの新規データを書き込む新規ライト又は格納済みデータの更新を行う更新ライトのいずかである。
【0065】
ストレージコントローラ104は、ホスト計算機103からデータの書き込み要求及びホストデータ(ライトデータ)を受信する(S101)。具体的には、プロセッサ106は、ホストインタフェース108を介して受信したホストデータを、メモリ107のバッファ領域に格納する。
【0066】
次に、プロセッサ106は、ホストデータを圧縮して、メモリ107のバッファ領域に格納する(S102)。さらに、プロセッサ106は、プール161内における圧縮データの追記先、を選択する処理を実行する(S103)。追記先選択処理S103の詳細は後述する。
【0067】
プール161内において追記先が選択できなかった場合(S104:NO)、プロセッサ106は、ホスト計算機103に対して、ホストデータを格納するための空き領域が存在しない旨の応答を返す(S105)。
【0068】
ステップS104において、プール161内において追記先が選択できた場合(S104:YES)、プロセッサ106は、メモリ107のキャッシュ領域に圧縮データを格納する(S106)。さらに、プロセッサ106は、追記アドレス管理テーブル220を更新する。具体的には、プロセッサ106は、今回追記したページ及びページ内アドレスに並びに時刻に応じて、当該ページのエントリの情報を更新する。次に、プロセッサ106は、ホスト計算機103に対して、ホストデータのライト処理が完了したことを示す応答を返す(S108)。
【0069】
図10は、
図9のフローチャートにおける、追記先選択処理S103の例のフローチャートである。プロセッサ106は、追記アドレス管理テーブル220に登録済みのページの内、記憶ドライブの状態が「正常」であるページのみを列挙する(S121)。「正常」の記憶ドライブ110は、ドライブ筐体105に実装されて、正常動作している記憶ドライブ110である。「正常」の記憶ドライブのみから構成されるパリティグループは、通常状態パリティグループであり、ホストデータ及び冗長コードを正常に格納することができ、その後のデータ回復処理が不要である。
【0070】
例えば、プロセッサ106は、ドライブ管理テーブル250を参照して、状態欄255の値が「正常」のドライブ番号を選択する。プロセッサ106は、パリティグループ管理テーブル240を参照して、所属ドライブ番号欄247が選択したドライブ番号のみからなるパリティグループ番号を、パリティグループ番号欄243から選択して、列挙する。
【0071】
次に、プロセッサ106は、追記可能ページ取得処理(S122)を実行する。追記可能ページ取得処理S122の詳細は後述する。追記可能ページが取得できた場合(S123:YES)、プロセッサ106は、取得した追記可能ページを、ホストデータの追記先として選択して、それを返す(S127)。
【0072】
ステップS123において追記可能ページが取得できなかった場合(S123:NO)、プロセッサ106は、追記アドレス管理テーブル220に登録済みのページの内、ドライブ状態が「障害」の記憶ドライブ110を含むページを列挙する(S124)。「障害」記憶ドライブを含むパリティグループは、非通常状態パリティグループであって、データ回復処理を必要とする。例えば、プロセッサ106は、パリティグループ管理テーブル240を参照して、ステップS121の選択から除外されたパリティグループ番号を、パリティグループ番号欄243から選択して、列挙する。
【0073】
次に、プロセッサ106は、追記可能ページ取得処理(S125)を実行する。追記可能ページ取得処理S125の詳細は後述する。追記可能ページが取得できた場合(S126:YES)、プロセッサ106は、取得した追記可能ページを、ホストデータの追記先として選択して、それを返す(S127)。
【0074】
ステップS126において追記可能ページが取得できなかった場合(S126:NO)、プロセッサ106は、追記先選択処理に失敗したと判定し、それを示す応答を返す(S128)。
【0075】
上述のように、正常記憶ドライブの記憶領域のみからなるページを優先して選択することによって、データ回復処理の負担を低減できる。また、正常記憶ドライブのみからなるページに必要な空き領域が存在しない場合、非正常記憶ドライブを含むページから追記先候補を選択することで、ホストライトに対するエラー頻度を低減できる。
【0076】
図11は、
図10のフローチャートにおける、追記可能ページ取得処理S122、S125の例のフローチャートである。プロセッサ106は、入力されたページ(の番号)を前回選択時刻の古い順に整列する(S141)。例えば、プロセッサ106は、追記アドレス管理テーブル220の前回選択時刻欄227から、入力されたページそれぞれの時刻の情報を取得し、示される時刻の古い順にページを整列する。
【0077】
次に、プロセッサ106は、未検査の先頭ページを選択し、ページの空きサイズと圧縮されたホストデータのサイズを比較する(S142)。ページの空きサイズは、ページの前回追記位置からページ終端までのサイズである。ページの前回追記位置は、追記アドレス管理テーブル220の前回追記位置欄225から取得できる。ページのサイズは予め設定された規定値であり、その終端も規定値である。
【0078】
ページの前回追記位置からページ終端までのサイズが、圧縮データサイズ以上である場合(S142:YES)、プロセッサ106は、当該ページを返す(S143)。ページの前回追記位置からページ終端までのサイズが、圧縮データサイズ未満である場合(S142:YES)、プロセッサ106は、未検査のページの有無を判定する(S144)。
【0079】
未検査のページが残っていない場合(S144:NO)、プロセッサ106は、追記可能ページが存在しないことを示す応答を返す(S146)。未検査のページが残ってる場合(S144:YES)、プロセッサ106は、次のページ、つまり、未検査のページにおいて前回選択時刻が最も古いページを検査対象として選択し(S145)、ステップS142に戻る。
【0080】
上記処理により、空きサイズがホストデータを格納するための条件を満たすページを選択することができる。前回開始時刻の古い順で追記先候補ページを選択することで、アクセス先記憶ドライブを均等化することができる。
【0081】
図12は、データ回復処理の例のフローチャートである。データ回復処理は、パリティグループ内の記憶ドライブのデータを、他の記憶ドライブのデータから復元する。プロセッサ106は、ページ管理テーブル230から、回復対象の記憶ドライブが所属するパリティグループ番号を持つエントリ(ページ)を列挙する(S161)。
【0082】
次に、プロセッサ106は、列挙したエントリ(ページ)における先頭エントリ(ページ)を選択する(S162)。プロセッサ106は、未処理のエントリがあるか判定する(S163)。未処理エントリがない場合(S163:NO)、本フローは終了する。
【0083】
未処理エントリが存在する場合(S163:YES)、プロセッサ106は、選択したページの、先頭アドレスから、追記アドレス管理テーブル220の前回追記位置欄225が示す位置までのアドレス範囲について、回復対象外の記憶ドライブからデータとパリティを読み出す(S164)。
【0084】
次に、プロセッサ106は、読み出したデータとパリティから回復対象記憶ドライブ向けのデータ又はパリティを生成する(S165)。プロセッサ106は、生成したデータ又はパリティを回復対象記憶ドライブに格納する(S166)。その後、プロセッサ106は、次のエントリ(ページ)を選択し(S167)、ステップS163に戻る。
以下において、本明細書の他の実施例を説明する。本明細書の一実施例は、ストレージ装置の全部又は一部の更新において、記憶ドライブを再利用する。例えば、ドライブ筐体を含むストレージ装置又はドライブ筐体単体の更新において、記憶ドライブが再利用される。以下においては、ストレージ装置の更新に伴うデータ移行を説明する。移行元の記憶ドライブを再利用することで、ストレージ装置の更新におけるハードウェアコストを抑えることができる。以下において、実施例1との差を主に説明する。
データ移行は、移行元のストレージ装置の記憶ドライブを1台ずつ、移行先のストレージ装置に移設する。移設中にパリティグループに対するデータ書き込みがあった場合、ストレージコントローラは、そのデータを、差分リビルド対象として登録する。差分リビルド対象のデータは、移行後に回復すべきデータである。つまり、パリティグループに書き込むべきデータであって、まだ、書き込まれていないデータである。
記憶ドライブの移設後に、差分リビルド対象のデータを生成して記憶ドライブに書き込むことで、移行先での業務継続を可能とする。移設が終わったパリティグループには、移設先のストレージ装置のストレージコントローラを介してデータライト可能である。本明細書の一実施例は、移設中のパリティグループに対する追記の優先度を低くする。これにより、差分リビルド対象となるデータの増加を抑制できる。
ストレージコントローラ104は、移行前又は移行後パリティグループと移行中パリティグループが存在する場合、移行前又は移行後パリティグループのページを追記先候補として優先して選択する。これにより、移行中パリティグループへのデータ書き込みを低減し、移行後の差分リビルドの対象の増加を抑制する。移行前又は移行後パリティグループは差分リビルトが不要な通常状態パリティグループであり、移行中パリティグループは、差分リビルトが必要な非通常状態パリティグループである。
データ移行が完了する前、移行元ストレージ装置102Aがホスト計算機103からのI/O要求を受信し、対処する。移行後、移行先ストレージ装置102Bがホスト計算機103からのI/O要求を受信し、対処する。上述のように、移行先ストレージ装置102Bは、移行後に、差分リビルド処理を実行する。
移行前後のパリティグループに対しては、通常のデータライトが可能である。移行元ストレージコントローラ104Aは、ホスト計算機103からライト要求を受信する。ストレージコントローラ104Aは、通常の方法により、移行前のパリティグループにデータを書き込むことができる。
移行後のパリティグループへのデータ書き込みは、ストレージコントローラ104Aからストレージコントローラ104Bに依頼される。つまり、ホストデータは、ストレージコントローラ104Aからストレージコントローラ104Bに、ライト要求と共に転送される。ストレージコントローラ104Bは、ホストデータの圧縮及び圧縮データのパリティグループへの追記を行う。
差分リビルド対象ドライブ番号欄317は、ストレージコントローラ104Bが、差分リビルド処理を実行する対象の記憶ドライブの番号を示す。差分リビルド対象アドレス欄319は、ストレージコントローラ104Bが、差分リビルド処理を実行する対象のアドレスを示す。
次に、ストレージコントローラ104Aのプロセッサ106は、ホストデータを圧縮して、メモリ107のバッファ領域に格納する(S202)。さらに、プロセッサ106は、圧縮データの追記先を選択する処理を実行する(S203)。追記先選択処理S203の詳細は後述する。
追記先が選択できなかった場合(S204:NO)、ストレージコントローラ104Aのプロセッサ106は、ホスト計算機103に対して、ホストデータを格納するための空き領域が存在しない旨の応答を返す(S205)。
ステップ204において、追記先が選択できた場合(S104:YES)、ストレージコントローラ104Aのプロセッサ106は、メモリ107のキャッシュ領域に圧縮データを格納する(S206)。さらに、プロセッサ106は、追記アドレス管理テーブル220を更新する。
次に、ストレージコントローラ104Aのプロセッサ106は、追記先が移行中のパリティグループであるか判定する(S208)。追記先が移行前又は移行後のパリティグループである場合(S208:NO)、ストレージコントローラ104Aのプロセッサ106は、ホスト計算機103に対して、ホストデータのライト処理が完了したことを示す応答を返す(S210)。
追記先が移行中のパリティグループである場合(S208:YES)、ストレージコントローラ104Aのプロセッサ106は、移行状態管理テーブル310において、差分リビルド対象を追加する(S209)。その後、ストレージコントローラ104Aのプロセッサ106はホスト計算機103に対して、ホストデータのライト処理が完了したことを示す応答を返す(S210)。
移行元のストレージコントローラ104Aは、移行中パリティグループにおける移行前記憶ドライブ110にデータを書き込む。移行先のストレージコントローラ104Bは、移行元のストレージコントローラ104Aから書き込むべきデータ及びアドレスを受信して、移行後記憶ドライブ110にデータを書き込む。
移行元ストレージコントローラ104Aのプロセッサ106は、追記アドレス管理テーブル220に登録済みのページの内、パリティグループの状態が「移行中」以外のページを列挙する(S221)。具体的には、プロセッサ106は、移行状態管理テーブル310を参照して、状態欄315の値が「移行後」又は「移行前」のパリティグループ番号を選択する。プロセッサ106は、ページ管理テーブル230を参照して、選択したパリティグループに属するページ番号を知ることができる。
次に、プロセッサ106は、追記可能ページ取得処理(S222)を実行する。追記可能ページ取得処理S222は、実施例1において説明した追記可能ページ取得処理と同様である。追記可能ページが取得できた場合(S223:YES)、プロセッサ106は、取得した追記可能ページを、ホストデータの追記先として選択して、それを返す(S227)。
ステップS223において追記可能ページが取得できなかった場合(S223:NO)、プロセッサ106は、追記アドレス管理テーブル220に登録済みのページの内、パリティグループ状態が「移行中」のページを列挙する(S224)。
次に、プロセッサ106は、追記可能ページ取得処理(S225)を実行する。追記可能ページが取得できた場合(S226:YES)、プロセッサ106は、取得した追記可能ページを、ホストデータの追記先として選択して、それを返す(S227)。
ステップS226において追記可能ページが取得できなかった場合(S226:NO)、プロセッサ106は、追記先選択処理に失敗したと判定し、それを示す応答を返す(S228)。
上述のように、移行中パリティグループのページよりも、移行前及び移行後のパリティグループのページを優先して選択することによって、差分リビルド処理の負担を低減できる。また、移行前及び移行度のパリティグループのページに必要な空き領域が存在しない場合、移行中パリティグループのページから追記先候補を選択することで、ホストライトに対するエラー頻度を低減できる。
次に、プロセッサ106は、列挙したエントリにおける先頭エントリを選択する(S242)。プロセッサ106は、未処理のエントリがあるか判定する(S243)。未処理エントリがない場合(S243:NO)、本フローは終了する。
未処理エントリが存在する場合(S243:YES)、プロセッサ106は、差分リビルド対象の記憶ドライブ以外の記憶ドライブからデータ及びパリティを読み出す(S244)。次に、プロセッサ106は、読み出したデータとパリティから差分リビルド対象の記憶ドライブ向けのデータ又はパリティを生成する(S245)。プロセッサ106は、生成したデータ又はパリティを差分リビルド対象の記憶ドライブに格納する(S246)。その後、プロセッサ106は、次のエントリを選択し(S247)、ステップS243に戻る。