(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-30
(45)【発行日】2023-06-07
(54)【発明の名称】ストレージ制御装置およびストレージ制御プログラム
(51)【国際特許分類】
G06F 3/06 20060101AFI20230531BHJP
G06F 11/10 20060101ALI20230531BHJP
G06F 12/0868 20160101ALI20230531BHJP
【FI】
G06F3/06 306Z
G06F3/06 302A
G06F3/06 304B
G06F11/10 676
G06F12/0868 100
(21)【出願番号】P 2019124305
(22)【出願日】2019-07-03
【審査請求日】2022-04-07
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】土山 由嘉莉
(72)【発明者】
【氏名】周 广宇
【審査官】松平 英
(56)【参考文献】
【文献】特表2016-530637(JP,A)
【文献】特開平07-234763(JP,A)
【文献】特開平08-137629(JP,A)
【文献】特開2010-026812(JP,A)
【文献】特開2009-238094(JP,A)
【文献】特開2001-022534(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
11/08-11/10
11/16-11/20
12/00-12/128
13/16-13/18
(57)【特許請求の範囲】
【請求項1】
キャッシュの領域を含む記憶部と、
ホスト装置からのアクセス要求に応じて、複数の記憶装置によって実現される論理記憶領域に対するアクセス処理を、前記キャッシュを用いて制御し、
前記複数の記憶装置のうち第1の記憶装置が故障したとき、前記第1の記憶装置に記憶されていたデータの中からリビルド対象とする第1のデータを選択し、前記第1のデータが前記キャッシュに格納されている場合、前記キャッシュから前記第1のデータを読み出して、前記第1の記憶装置を代替する第2の記憶装置に格納する、処理部と、
を備え、
前記処理部はさらに、
前記第1のデータが前記キャッシュに格納されていない場合、前記複数の記憶装置のうち前記第1の記憶装置以外の記憶装置に記憶されている、前記第1のデータを再構築するための第2のデータが、前記キャッシュに格納されているかを判定し、
前記第2のデータが前記キャッシュに格納されている場合、前記キャッシュから前記第2のデータを読み出し、読み出した前記第2のデータを基に前記第1のデータを再構築し、再構築された前記第1のデータを前記第2の記憶装置に格納し、
前記記憶部はバッファの領域を含み、
再構築された前記第1のデータの前記第2の記憶装置に対する格納では、前記第1のデータを前記バッファに格納した後、前記バッファから読み出して前記第2の記憶装置に格納し、
前記処理部はさらに、再構築された前記第1のデータが前記第2の記憶装置に格納された後、前記キャッシュのアクセス負荷を示す指標が所定の閾値未満の場合には、再構築された前記第1のデータを前記バッファから読み出して前記キャッシュに格納する、
ストレージ制御装置。
【請求項2】
前記処理部はさらに、
前記第1の記憶装置に記憶されていたすべてのデータを前記第2の記憶装置に格納する処理が完了してから一定時間以上経過した後、前記バッファから前記キャッシュに格納した前記第1のデータのアクセス頻度が所定の判定閾値以下である場合には、前記第1のデータを前記キャッシュから削除する、
請求項1記載のストレージ制御装置。
【請求項3】
キャッシュの領域を含む記憶部と、
ホスト装置からのアクセス要求に応じて、複数の記憶装置によって実現される論理記憶領域に対するアクセス処理を、前記キャッシュを用いて制御し、
前記複数の記憶装置のうち第1の記憶装置が故障したとき、前記第1の記憶装置に記憶されていたデータの中からリビルド対象とする第1のデータを選択し、前記第1のデータが前記キャッシュに格納されている場合、前記キャッシュから前記第1のデータを読み出して、前記第1の記憶装置を代替する第2の記憶装置に格納する、処理部と、
を備え、
前記処理部はさらに、
前記第1のデータが前記キャッシュに格納されていない場合、前記複数の記憶装置のうち前記第1の記憶装置以外の記憶装置に記憶されている、前記第1のデータを再構築するための第2のデータが、前記キャッシュに格納されているかを判定し、
前記第2のデータが前記キャッシュに格納されている場合、前記キャッシュから前記第2のデータを読み出し、読み出した前記第2のデータを基に前記第1のデータを再構築し、再構築された前記第1のデータを前記第2の記憶装置に格納し、
前記記憶部はバッファの領域を含み、
前記処理部はさらに、
前記第2のデータが前記キャッシュに格納されていない場合、前記複数の記憶装置のうち前記第1の記憶装置以外の記憶装置から前記第2のデータを読み出して前記バッファに格納し、
前記バッファから読み出した前記第2のデータを基に前記第1のデータを再構築して前記バッファに格納し、
前記第1のデータを前記バッファから読み出して前記第2の記憶装置に格納し、
前記キャッシュのアクセス負荷を示す指標が所定の閾値未満の場合には、前記第1のデータと前記第2のデータとを前記バッファから読み出して前記キャッシュに格納する、
ストレージ制御装置。
【請求項4】
前記処理部はさらに、
前記第1の記憶装置に記憶されていたすべてのデータを前記第2の記憶装置に格納する処理が完了してから一定時間以上経過した後、前記バッファから前記キャッシュに格納した前記第1のデータおよび前記第2のデータのうち、アクセス頻度が所定の判定閾値以下であるデータを前記キャッシュから削除する、
請求項3記載のストレージ制御装置。
【請求項5】
コンピュータに、
ホスト装置からのアクセス要求に応じて、複数の記憶装置によって実現される論理記憶領域に対するアクセス処理を、前記コンピュータ上のキャッシュを用いて制御し、
前記複数の記憶装置のうち第1の記憶装置が故障したとき、前記第1の記憶装置に記憶されていたデータの中からリビルド対象とする第1のデータを選択し、前記第1のデータが前記キャッシュに格納されている場合、前記キャッシュから前記第1のデータを読み出して、前記第1の記憶装置を代替する第2の記憶装置に格納
し、
前記第1のデータが前記キャッシュに格納されていない場合、前記複数の記憶装置のうち前記第1の記憶装置以外の記憶装置に記憶されている、前記第1のデータを再構築するための第2のデータが、前記キャッシュに格納されているかを判定し、
前記第2のデータが前記キャッシュに格納されている場合、前記キャッシュから前記第2のデータを読み出し、読み出した前記第2のデータを基に前記第1のデータを再構築し、再構築された前記第1のデータを前記第2の記憶装置に格納し、
前記キャッシュの領域を含む記憶部がバッファの領域を含む場合、
再構築された前記第1のデータの前記第2の記憶装置に対する格納では、前記第1のデータを前記バッファに格納した後、前記バッファから読み出して前記第2の記憶装置に格納し、
再構築された前記第1のデータが前記第2の記憶装置に格納された後、前記キャッシュのアクセス負荷を示す指標が所定の閾値未満の場合には、再構築された前記第1のデータを前記バッファから読み出して前記キャッシュに格納する、
処理を実行させるストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ制御装置およびストレージ制御プログラムに関する。
【背景技術】
【0002】
ストレージシステムは、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の複数の記憶装置と、記憶装置の制御を行う制御モジュールとを有して、情報処理で扱う大量のデータを記録管理する。記憶装置は、例えば、RAID(Redundant Array of Inexpensive Disks)によってアレイ化されて耐障害性および可用性の確保が図られる。
【0003】
また、ストレージシステムでは、RAIDグループ内の記憶装置が故障によって使用が中止されると、その記憶装置に記憶されていたデータがRAIDグループ内の他の記憶装置内のデータを基に取得されて代替用の記憶装置に格納されるリビルド(Rebuild)処理が行われる。データの冗長化のためにパリティが使用されていた場合、故障した記憶装置に記憶されていたデータは、RAIDグループ内の他の記憶装置内のデータを基に再構築される。
【0004】
リビルドの関連技術として、例えば、通常運用と障害復旧とでバッファを切替え、障害復旧時にバッファデータを活用して復旧処理を行う技術が提案されている。また、ディスク装置へのエラー検出時のデータをバッファに格納し、エラー復旧処理中のアクセスはバッファに格納されたデータを使用する技術が提案されている。さらに、リビルド中にホストからの書き込み要求のあった領域を補助ディスクに書き込んで同領域をリビルド済として管理する技術が提案されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開平9-274542号公報
【文献】特開平10-289065号公報
【文献】特開2014-96072号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ホストからのI/O(Input/Output)要求に対する応答性能は、リビルド処理中のRAIDグループに対するI/O要求時の方が、正常なRAIDグループに対するI/O要求時より低下する。リビルド処理にかかる時間が長いほど、応答性能が低くなっている期間が長くなってしまう。
【0007】
1つの側面では、本発明は、リビルド処理時間の短縮化を図ったストレージ制御装置およびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
1つの案では、記憶部と処理部とを有する次のようなストレージ制御装置が提供される。このストレージ制御装置において、記憶部は、キャッシュの領域を含む。処理部は、ホスト装置からのアクセス要求に応じて、複数の記憶装置によって実現される論理記憶領域に対するアクセス処理を、キャッシュを用いて制御する。また、処理部は、複数の記憶装置のうち第1の記憶装置が故障したとき、第1の記憶装置に記憶されていたデータの中からリビルド対象とする第1のデータを選択し、第1のデータがキャッシュに格納されている場合、キャッシュから第1のデータを読み出して、第1の記憶装置を代替する第2の記憶装置に格納する。また、処理部はさらに、第1のデータがキャッシュに格納されていない場合、複数の記憶装置のうち第1の記憶装置以外の記憶装置に記憶されている、第1のデータを再構築するための第2のデータが、キャッシュに格納されているかを判定し、第2のデータがキャッシュに格納されている場合、キャッシュから第2のデータを読み出し、読み出した第2のデータを基に第1のデータを再構築し、再構築された第1のデータを第2の記憶装置に格納し、記憶部はバッファの領域を含み、再構築された第1のデータの第2の記憶装置に対する格納では、第1のデータをバッファに格納した後、バッファから読み出して第2の記憶装置に格納し、処理部はさらに、再構築された第1のデータが第2の記憶装置に格納された後、キャッシュのアクセス負荷を示す指標が所定の閾値未満の場合には、再構築された第1のデータをバッファから読み出してキャッシュに格納する。
【0009】
また、1つの案では、コンピュータに上記ストレージ制御装置と同様の処理を実行させるストレージ制御プログラムが提供される。
【発明の効果】
【0010】
1側面によれば、リビルド処理時間を短縮できる。
【図面の簡単な説明】
【0011】
【
図1】第1の実施の形態に係るストレージ制御装置の一例を説明するための図である。
【
図2】第2の実施の形態に係るストレージシステムの構成例を示す図である。
【
図4】2次キャッシュ管理テーブルの構成の一例を示す図である。
【
図5】論理ボリュームに対して読み出しが要求された場合の制御手順の例を示す第1の図である。
【
図6】論理ボリュームに対して読み出しが要求された場合の制御手順の例を示す第2の図である。
【
図10】リビルド処理の一例を示すフローチャートである。
【
図11】リビルド処理の一例を示すフローチャートである。
【
図12】2次キャッシュへのデータ格納処理の一例を示すフローチャートである。
【
図13】2次キャッシュデータの削除処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態に係るストレージ制御装置の一例を説明するための図である。
図1に示すストレージ制御装置1は、記憶部1aおよび処理部1bを備える。記憶部1aは、例えば、RAM(Random Access Memory)などのストレージ制御装置1が備える記憶装置として実現される。処理部1bは、例えば、ストレージ制御装置1が備えるプロセッサとして実現される。
【0013】
また、ストレージ制御装置1には、記憶装置2a~2dが接続されている。記憶装置2a~2dは、少なくとも記憶部1aを実現する記憶装置よりアクセス性能の低い記憶装置である。例えば、記憶部1aがRAMである場合、記憶装置2a~2dは、SSDやHDDである。さらに、ストレージ制御装置1には、ホスト装置3が接続されている。
【0014】
記憶部1aは、キャッシュ1cの領域を含んでいる。処理部1bは、ホスト装置3からのアクセス要求に応じて、複数の記憶装置によって実現される論理記憶領域2eに対するアクセス処理を、キャッシュ1cを用いて制御する。例えば、処理部1bは、1度読み出しが要求されたデータを所定の条件の下でキャッシュ1cに保持しておく。処理部1bは、ホスト装置3からデータの読み出し要求を受けたとき、そのデータがキャッシュ1cに保持されていれば、そのデータをストレージ部2から読み出すことなく、キャッシュ1cから読み出してホスト装置3に送信する。
【0015】
また、
図1の例では、論理記憶領域2eは記憶装置2a~2cによって実現される。論理記憶領域2eでは、データが冗長化されるように制御される。すなわち、1つの記憶装置が故障した場合、故障した記憶装置のデータを、他の記憶装置から取得すること、あるいは他の記憶装置のデータを基に再構築することが可能になっている。
【0016】
図1では例として、論理記憶領域2eはRAID5によって制御される。記憶装置2aにはデータDT1、DT3が記憶され、記憶装置2bにはパリティPR1とデータDT4が記憶され、記憶装置2cにはデータDT2とパリティPR2が記憶されている。そして、パリティPR1はデータDT1、DT2を冗長化するための冗長データであり、パリティPR2はデータDT3、DT4を冗長化するための冗長データである。
【0017】
処理部1bは、論理記憶領域2eに含まれる記憶装置が故障すると、故障した記憶装置に記憶されていたデータを、その記憶装置を代替する他の記憶装置(
図1の例では記憶装置2d)に格納するリビルド処理を実行する。リビルド処理は、次のように実行される。なお、ここでは例として記憶装置2cが故障したとする。
【0018】
処理部1bは、故障した記憶装置2cに記憶されていたデータの中からリビルド対象とするデータを選択し、まず、故障したデータがキャッシュ1cに格納されているかを判定する。
図1の例では、リビルド対象としてデータDT2が選択されたとき、データDT2がキャッシュ1cに格納されていたとする。この場合、処理部1bは、キャッシュ1cからデータDT2を読み出して、代替用の記憶装置2dに格納する(ステップS1)。
【0019】
これにより、処理部1bは、データDT1とパリティPR1をそれぞれ記憶装置2a、2bから読み出し、データDT1とパリティPR1を基にデータDT2を再構築する必要がなくなる。このように、処理部1bは、ストレージ部2の記憶装置にアクセスしなくてよくなるので、リビルド対象のデータDT2を記憶装置2dに格納するのにかかる時間を短縮できる。
【0020】
また、処理部1bは、リビルド対象として選択したデータがキャッシュ1cに格納されていなかった場合、そのデータを再構築するためのデータがキャッシュ1cに格納されているかを判定してもよい。
図1の例では、リビルド対象としてパリティPR2が選択されたとき、パリティPR2はキャッシュ1cに格納されていないが、パリティPR2を再構築するためのデータDT3、DT4がキャッシュ1cに格納されていたとする。この場合、処理部1bは、データDT3、DT4をキャッシュ1cから読み出し、読み出したデータDT3、DT4を基にパリティPR2を再構築して、代替用の記憶装置2dに格納する(ステップS2)。
【0021】
これにより、処理部1bは、リビルド対象のパリティPR2を再構築するために必要なデータDT3、DT4をそれぞれ記憶装置2a、2bから読み出す必要がなくなる。このように、処理部1bは、ストレージ部2の記憶装置にアクセスしなくてよくなるので、リビルド対象データであるパリティPR2を記憶装置2dに格納するのにかかる時間を短縮できる。
【0022】
以上のように、処理部1bは、リビルド対象のデータ、またはそのデータを再構築するためのデータがキャッシュ1cに存在している場合には、キャッシュ1cからデータを読み出して利用する。このようなケースでは、ストレージ部2の記憶装置にアクセスしなくてよくなる分だけ、リビルド対象のデータを代替用の記憶装置2dに格納するのにかかる時間を短縮できる。その結果、リビルド処理時間を短縮できる。
【0023】
[第2の実施の形態]
図2は、第2の実施の形態に係るストレージシステムの構成例を示す図である。
図2に示すストレージシステムは、ストレージ装置50を含む。ストレージ装置50は、CM(Controller Module)100とドライブ部200を有する。また、CM100には、ホスト装置300が接続されている。CM100とホスト装置300とは、例えば、ファイバチャネル(FC:Fibre Channel)やiSCSI(Internet Small Computer System Interface)などを用いたSAN(Storage Area Network)を介して接続される。
【0024】
CM100は、ホスト装置300からの要求に応じて、ドライブ部200に搭載された記憶装置へのアクセスを制御するストレージ制御装置である。ドライブ部200には、ホスト装置300からのアクセス対象となる記憶装置が複数台搭載されている。本実施の形態では例として、ドライブ部200は、記憶装置として複数台のHDDが搭載されたディスクアレイ装置である。
【0025】
CM100は、ホスト装置300からの要求に応じたドライブ部200に対する読み書きを、RAIDによって制御する。CM100は、ドライブ部200内の複数台のHDDを含むRAIDグループを作成する。RAIDグループは、所定のRAIDレベルによって複数台のHDDによる物理記憶領域の読み書きが制御される論理記憶領域である。
図3の例では、ドライブ部200内のHDD201、202、203、・・・を含むRAIDグループRG1と、ドライブ部200内のHDD211、212、213、・・・を含むRAIDグループRG2とが設定されている。
【0026】
CM100はさらに、1つのRAIDグループに対して1つ以上の論理ボリュームを割り当てる。論理ボリュームは、ホスト装置300からのアクセス対象となる論理記憶領域である。論理ボリュームの実体的な記憶領域は、対応するRAIDグループに含まれるHDDによって実現される。CM100は、ホスト装置300から論理ボリュームに対するアクセス要求を受けることによって、対応するRAIDグループに含まれるHDDにアクセスする。
【0027】
また、ドライブ部200は、ホットスペア(Hot Spare)221、222を備えている。ホットスペア221、222は、予備用のHDDであり、RAIDグループRG1、RG2に含まれるいずれかのHDDが故障したとき、そのHDDの代わりに使用される。
【0028】
次に、
図2を用いてCM100のハードウェア構成例について説明する。
図2に示すように、CM100は、プロセッサ101、RAM102、SSD103、CA(Channel Adapter)104およびDI(Drive Interface)105を有する。これらの構成要素は、バス106を介して接続されている。
【0029】
プロセッサ101は、CM100全体を統括的に制御する。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。また、プロセッサ101は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
【0030】
RAM102は、CM100の主記憶装置として使用される。RAM102には、プロセッサ101に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、プロセッサ101による処理に必要な各種データが格納される。例えば、RAM102には、ホスト装置300からの要求に応じたドライブ部200へのアクセス制御の際に用いられる1次キャッシュの領域が確保される。また、RAM102には、バッファの領域が確保され、さらに各種の管理テーブルが格納される。
【0031】
SSD103は、CM100の補助記憶装置として使用される。SSD103には、OSプログラム、アプリケーションプログラム、および各種データが格納される。また、SSD103には、ホスト装置300からの要求に応じてドライブ部200へのアクセス制御の際に用いられる2次キャッシュの領域が確保される。
【0032】
CA104は、ホスト装置300と通信するためのインタフェースである。DI105は、ドライブ部200と通信するためのインタフェースである。DI105は、例えば、SAS(Serial Attached SCSI)インタフェースである。
【0033】
以上のハードウェア構成によってCM100の処理機能が実現される。
図3は、CMの機能ブロックの一例を示す図である。CM100は、制御部10、1次キャッシュ21、2次キャッシュ22、バッファ23および管理情報記憶部30を備える。
【0034】
制御部10の処理は、例えば、プロセッサが所定のプログラムを実行することで実現される。1次キャッシュ21およびバッファ23は、RAM102に確保される記憶領域である。2次キャッシュ22は、SSD103に確保される記憶領域である。管理情報記憶部30は、例えば、RAM102の記憶領域によって実現される。
【0035】
制御部10は、I/O制御部11、リビルド制御部12および2次キャッシュデータ管理部13を含む。
I/O制御部11は、ホスト装置300からのデータ読み出し(Read I/O)およびデータ書き込み(Write I/O)の要求に応じて、ドライブ部200内のHDDに対するI/O制御を行う。I/O制御部11は、このようなI/O制御を1次キャッシュ21と2次キャッシュ22を用いて行う。
【0036】
リビルド制御部12は、ドライブ部200においてHDDの故障が発生した場合、故障したHDD(以下、「故障HDD」と記載する場合がある)に記憶されていたデータをホットスペアに格納するリビルド処理を行う。このリビルド処理において、リビルド制御部12は、リビルド処理の対象データが2次キャッシュ22に格納されている場合、そのデータを2次キャッシュ22からバッファ23に読み出して、バッファ23からホットスペアにデータを格納する。
【0037】
また、リビルド制御部12は、対象データが2次キャッシュ22に格納されていないが、対象データに対応する冗長データが2次キャッシュ22に格納されている場合、冗長データを2次キャッシュ22からバッファ23へ読み出す。そして、リビルド制御部12は、冗長データを基にバッファ23上でデータの再構築を行い、再構築したデータをバッファ23からホットスペアに格納する。
【0038】
このように、リビルド制御部12は、2次キャッシュ22上のデータを活用することで、リビルド処理中におけるドライブ部200内のHDDからの読み出し回数を抑制し、リビルド処理にかかる時間を短縮する。
【0039】
また、リビルド制御部12は、対象データおよび冗長データが2次キャッシュ22に格納されていない場合、対象データが属するRAIDグループ内の正常なHDDからバッファ23へ冗長データを読み出す。そして、リビルド制御部12は、冗長データを基にバッファ23上でデータの再構築を行い、再構築したデータをホットスペアに格納する。
【0040】
2次キャッシュデータ管理部13は、2次キャッシュ22上のデータのうち、リビルド処理に伴って書き込まれたデータを管理するための処理を行う。2次キャッシュデータ管理部13は、書き込み処理部13aと削除処理部13bを含む。
【0041】
書き込み処理部13aは、リビルド処理によってドライブ部200内のHDDから読み出されたデータや、読み出されたデータを基に再構築されたデータを、2次キャッシュ22に格納する。書き込み処理部13aは、2次キャッシュ22の使用率や2次キャッシュ22上のデータのアクセス頻度を用いた所定の条件が満たされる場合に、これらのデータを2次キャッシュ22に格納する。
【0042】
削除処理部13bは、次のような条件にしたがって、書き込み処理部13aによって2次キャッシュ22に格納されたデータを削除して、2次キャッシュ22の領域を解放する。削除処理部13bは、書き込み処理部13aによって2次キャッシュ22に格納されたデータのうち、対応するRAIDグループのリビルド処理の完了から一定時間が経過したデータについて、アクセス頻度が規定値を下回るか否かを判定する。そして、削除処理部13bは、アクセス頻度が規定値を下回る場合には当該データを2次キャッシュ22から削除する。
【0043】
管理情報記憶部30には、2次キャッシュ管理テーブル31とボリューム管理テーブル32が記憶される。
2次キャッシュ管理テーブル31は、2次キャッシュ22に格納されているデータを管理するための管理情報を保持する。2次キャッシュ管理テーブル31には、各データについて、2次キャッシュ22における格納位置情報、論理ボリュームにおける論理位置情報、アクセス頻度情報、リビルド処理に伴って格納されたデータか否かを識別する情報が登録される。
【0044】
ボリューム管理テーブル32は、論理ボリュームおよびRAIDグループを管理するための管理情報を保持する。ボリューム管理テーブル32には、RAIDグループごとに、RAIDグループに含まれるHDDの識別情報、RAIDレベル、ストリップの設定情報などのRAIDグループの構成情報や、リビルド処理が実行された実行時刻情報が登録される。また、ボリューム管理テーブル32には、論理ボリュームごとに、容量、RAIDグループの割り当て先、論理ボリューム上の論理アドレスとRAIDグループ上の論理アドレスとの対応関係などの、論理ボリュームの構成情報が登録される。
【0045】
次に、2次キャッシュ管理テーブル31について説明する。
図4は、2次キャッシュ管理テーブルの構成の一例を示す図である。2次キャッシュ22の領域は、所定サイズ(例えば1MB)を有するページごとに管理される。2次キャッシュ管理テーブル31は、2次キャッシュ22の全ページにそれぞれ対応するレコードを有する。各レコードには、「物理位置」、「論理位置」、「アクセス頻度」および「格納契機フラグ」の各情報が含まれる。
【0046】
「物理位置」は、2次キャッシュ22におけるページのアドレス情報である。各レコードの「物理位置」の項目には、あらかじめ対応するページのアドレス情報が登録されている。一方、「論理位置」、「アクセス頻度」および「格納契機フラグ」には、ページにデータが格納されていない場合、無効値(NULL)が登録される。
【0047】
「論理位置」は、ページに格納されたデータの論理アドレス情報である。この論理アドレス情報とは、論理ボリュームの識別情報と、論理ボリュームにおけるアドレス情報を含む。「論理位置」には、ページにデータが格納されると論理アドレス情報が登録される。
【0048】
「アクセス頻度」は、ページに格納されたデータのアクセス頻度情報である。「アクセス頻度」には、ページにデータが格納されている場合にのみ情報が登録される。そして、「アクセス頻度」には、ページにデータが格納されたときに初期値「0」が登録され、ホスト装置300からのアクセスがあった場合にその値がインクリメントされて更新される。
【0049】
「格納契機フラグ」は、ページに格納されたデータがリビルド処理に伴って格納されたデータか否かを示すフラグ情報である。ここでは例として、「1」のときリビルド処理に伴って格納されたデータを示し、「0」のときそれ以外のデータ(I/O制御に伴って格納されたデータ)を示す。「格納契機フラグ」には、ページにデータが格納されたときに「0」または「1」が登録される。
【0050】
なお、図示しないが、2次キャッシュ管理テーブル31の各レコードには、上記情報の他、例えば、最終アクセス時刻やダーティフラグが登録されていてもよい。最終アクセス時刻は、ページに格納されたデータに対してホスト装置300からの要求に応じてアクセスされた最終時刻である。ダーティフラグは、ページに格納されたデータがライトバック済みでないダーティデータであるか否かを示すフラグ情報である。
【0051】
次に、
図5、
図6を用いて、1次キャッシュ21と2次キャッシュ22を用いた論理ボリュームに対するアクセス制御処理の基本的な手順について説明する。
図5、
図6では例として、RAIDグループRG1に割り当てられた論理ボリュームに対して読み出しが要求された場合について説明する。
【0052】
図5は、論理ボリュームに対して読み出しが要求された場合の制御手順の例を示す第1の図である。
図5において、ホスト装置300は、論理ボリューム上のデータD1の読み出しをCM100に要求する(ステップS11)。CM100のI/O制御部11は、まず、データD1が1次キャッシュ21に存在するかを判定する。
【0053】
ここで、図示しないが、データD1が1次キャッシュ21に存在する、すなわち、1次キャッシュヒットの場合、I/O制御部11は、データD1を1次キャッシュ21から読み出して、ホスト装置300に送信する。これにより、読み出し要求に対する応答時間が短縮される。
【0054】
一方、
図5では、データD1が1次キャッシュ21に存在していなかった、すなわち、1次キャッシュミスであったとする(ステップS12)。すると、I/O制御部11は次に、データD1が2次キャッシュ22に存在するかを判定する。この判定は、2次キャッシュ管理テーブル31に、「論理位置」に読み出し対象の論理アドレスが含まれるレコードが存在するか否かによって行われる。
【0055】
図5では、データD1が2次キャッシュ22に存在していた、すなわち、2次キャッシュヒットであったとする(ステップS13)。この場合、I/O制御部11は、2次キャッシュ22からデータD1を読み出して1次キャッシュ21にコピー(ステージング)し(ステップS14)、さらに1次キャッシュ21からデータD1を読み出してホスト装置300に送信する(ステップS15)。
【0056】
2次キャッシュ22が実装されるSSDは、論理ボリュームが割り当てられたRAIDグループRG1に含まれるHDDよりアクセス性能が高い。そのため、
図5のように、1次キャッシュミスの場合でも2次キャッシュヒットとなれば2次キャッシュ22からデータD1を読み出すことで、データD1をRAIDグループRG1内のHDDから読み出す場合よりもホスト装置300に対する読み出し応答時間を短縮できる。
【0057】
なお、ステップS14の実行直前において1次キャッシュ21の空き領域がない場合、I/O制御部11は、例えば、1次キャッシュ21のデータのうち最終アクセス時刻が最も早いデータを1次キャッシュ21から削除する。そして、I/O制御部11は、1次キャッシュ21に生じた空き領域にデータD1をコピーする。
【0058】
図6は、論理ボリュームに対して読み出しが要求された場合の制御手順の例を示す第2の図である。
図6において、ホスト装置300は、論理ボリューム上のデータD2の読み出しをCM100に要求する(ステップS21)。CM100のI/O制御部11は、
図5の場合と同様に、データD2が1次キャッシュ21および2次キャッシュ22に存在するかを判定する。
【0059】
図6では、1次キャッシュミス(ステップS22)、かつ2次キャッシュミス(ステップS23)であったとする。この場合、I/O制御部11は、RAIDグループRG1に含まれるHDDからデータD2を読み出し、1次キャッシュ21にコピー(ステージング)する(ステップS24)。そして、I/O制御部11は、1次キャッシュ21からデータD2を読み出してホスト装置300に送信する(ステップS25)。
【0060】
このとき、I/O制御部11は、データD2のブロックが2次キャッシュミスしたことを所定の管理テーブル(図示せず)に記録しておく。そして、I/O制御部11は、例えば、その後の非同期のタイミングで、管理テーブルに基づいてデータD2をRAIDグループRG1に含まれるHDDから読み出し、2次キャッシュ22にコピー(ステージング)する(ステップS26)。これにより、HDDから2次キャッシュ22へのデータD2のコピー(ステージング)は、ホスト装置300からのI/O要求の受信処理およびその応答処理の実行中に、バックグラウンドで実行されることになる。
【0061】
以上のように、1次キャッシュミスかつ2次キャッシュミスの場合には、読み出しが要求されたデータD2は1次キャッシュ21に配置される。これにより、その後に同じデータD2の読み出しが要求された場合にも、I/O制御部11は、データD2を1次キャッシュ21から短時間に読み出し、ホスト装置300に送信できる。
【0062】
なお、ステップS26での2次キャッシュ22へのステージングは、次のように行われる。I/O制御部11は、2次キャッシュ管理テーブル31を参照して空きページを探索する。空きページが存在する場合、I/O制御部11は、2次キャッシュ22上の空きページにデータD2を格納するとともに、2次キャッシュ管理テーブル31における当該空きページに対応するレコードの「論理位置」の項目に、データD2に関する論理アドレス情報を登録する。また、I/O制御部11は、当該レコードの「アクセス頻度」の項目に「0」を登録し、「格納契機フラグ」の項目に「0」を登録する。
【0063】
一方、空きページが存在しない場合、I/O制御部11は、2次キャッシュ管理テーブル31から「最終アクセス時刻」の時刻が最も早いレコードを特定する。I/O制御部11は、特定したレコードに対応するページからデータを削除し、そのページに対して上記の手順でデータD2を格納するとともに当該レコードの内容を更新する。
【0064】
ところで、HDDの故障に伴うリビルド処理中においては、ホスト装置300からのI/O要求に対する応答性能が低下する。これは、リビルド処理と、ホスト装置300からの要求に応じたI/O制御とが並列に実行されるからである。特に、リビルド処理ではドライブ部200内のHDDからのデータ読み出しが発生する。そのため、リビルド処理によるドライブ部200からのデータ読み出しと、I/O制御でのキャッシュミス発生に伴うドライブ部200からのデータ読み出しとが並列に実行されることで、I/O要求に対する応答時間が長くなってしまう。また、リビルド処理中のRAIDグループに含まれる論理ボリュームからの読み出し要求が発生した場合には、要求されたデータの再構築が必要になる場合があり、その場合にはさらに応答時間が長くなる。
【0065】
このように、リビルド処理中においてはI/O要求に対する応答性能が低下する。リビルド処理にかかる時間が長いほど、応答性能が低くなっている期間が長くなる。このため、リビルド処理にかかる時間が長いほど、ホスト装置300からはCM100全体のI/O処理性能が低いように見えてしまう。
【0066】
そこで、本実施の形態のCM100は、リビルド処理時に2次キャッシュ22に格納されているデータを利用することで、ドライブ部200内のHDDへのアクセス回数を減少させる。これにより、リビルド処理にかかる時間を短縮する。さらに、CM100は、リビルド処理に伴ってドライブ部200内のHDDから読み出されたデータや、そのデータを基に再構築されたデータを、可能な限りバッファ23から2次キャッシュ22に格納する。これにより、これらのデータに対してその後にホスト装置300からアクセスが要求された際に、アクセスにかかる時間を短縮する。その結果として、ホスト装置300からの要求に応じたアクセス性能を向上させる。
【0067】
以下、
図7~
図9を用いてリビルド処理について説明する。なお、
図7~
図9では例として、RAIDグループRG1にHDD201~204が含まれ、これらのうちHDD204が故障したものとする。また、RAIDグループRG1のRAIDレベルはRAID5であるものとする。
【0068】
図7は、リビルド処理の例を示す第1の図である。
図7では、HDD204に格納されたデータD3をホットスペア221にリビルドする場合を示している。CM100のリビルド制御部12は、2次キャッシュ管理テーブル31を参照して、リビルド対象のデータD3が2次キャッシュ22に存在するかを判定する。
図7では、データD3が2次キャッシュ22に存在したとする。この場合、リビルド制御部12は、データD3を2次キャッシュ22から読み出してバッファ23に格納し(ステップS31)、データD3をバッファ23から読み出してホットスペア221に格納する(ステップS32)。
【0069】
図8は、リビルド処理の例を示す第2の図である。
図8では、HDD204に格納されたパリティP1をホットスペア221にリビルドする場合を示している。CM100のリビルド制御部12は、リビルド対象のパリティP1が2次キャッシュ22に存在するかを判定するが、2次キャッシュ22にはパリティは格納されない。そのため、リビルド制御部12は次に、2次キャッシュ管理テーブル31とボリューム管理テーブル32を参照して、パリティP1を再構築するのに必要なデータ(再構築用データ)が2次キャッシュ22に存在するかを判定する。
【0070】
図8では、パリティP1に対応する再構築用データであるデータD4、D5、D6が2次キャッシュ22に存在したとする。この場合、リビルド制御部12は、データD4、D5、D6を2次キャッシュ22から読み出してバッファ23に格納する(ステップS41)。リビルド制御部12は、バッファ23内のデータD4、D5、D6を用いてパリティP1を再構築し、バッファ23に格納する(ステップS42)。そして、リビルド制御部12は、再構築したパリティP1をバッファ23から読み出してホットスペア221に格納する(ステップS43)。
【0071】
以上の
図7、
図8のいずれの場合も、リビルド制御部12は、リビルド対象データを再構築するためのデータをドライブ部200のHDD201~203から読み出すことなく、リビルド対象データをホットスペア221に格納することができる。このため、リビルド対象データのリビルド処理にかかる時間を短縮できる。
【0072】
なお、
図8では故障HDD内のパリティがリビルド対象となった場合を示したが、故障HDD内の実データがリビルド対象となった場合には、再構築用データには2つの実データと1つのパリティとが含まれる。リビルド制御部12は、これらのうち実データが2次キャッシュ22に存在した場合には、実データを2次キャッシュ22からバッファ23に読み出すことができる。ただし、パリティは2次キャッシュ22に格納されていないので、リビルド制御部12は、パリティをHDD201~203のいずれかからバッファ23に読み出す。リビルド制御部12は、バッファ23に読み出した実データとパリティを用いてリビルド対象データを再構築し、
図8と同様に再構築したデータをバッファ23に書き込んだ後、ホットスペア221に格納することができる。
【0073】
このようなケースでは、パリティのみドライブ部200から読み出されるが、再構築用データのすべてをドライブ部200から読み出す場合と比較して、ドライブ部200からの読み出し回数が抑制される。このため、リビルド処理に伴うドライブ部200からの読み出しが、ホスト装置300からのI/O要求に伴うドライブ部200からの読み出し性能に与える影響を低減できる。その結果として、ホスト装置300からのI/O要求に対する応答性能を向上させることができる。
【0074】
図9は、リビルド処理の例を示す第3の図である。
図9では、リビルド対象データであるデータD9も、これに対応する再構築用データであるデータD7、D8およびパリティP2も、2次キャッシュ22に存在しなかったとする。この場合、リビルド制御部12は、データD7、D8およびパリティP2をそれぞれHDD201、202、203から読み出してバッファ23に格納する(ステップS51)。リビルド制御部12は、バッファ23内のデータD7、D8およびパリティP2を用いてデータD9を再構築し、バッファ23に格納する(ステップS52)。そして、リビルド制御部12は、再構築したデータD9をバッファ23から読み出してホットスペア221に格納する(ステップS53)。
【0075】
ここで、2次キャッシュデータ管理部13の書き込み処理部13aは、バッファ23内のデータD7~D9を2次キャッシュ22に格納することができるかを判定する。書き込み処理部13aは少なくとも、2次キャッシュ22の使用率に基づいてこの判定を行う。使用率とは、直近の単位時間において2次キャッシュ22がアクセスを受け付けている時間の割合を示す。これは、2次キャッシュ22全体に対するアクセス負荷を示す指標であり、「ビジー率」とも呼ばれる。使用率が高い場合、ホスト装置300からの要求に応じたI/O制御において2次キャッシュ22が頻繁に使用されていることを示し、I/O制御での2次キャッシュ22へのアクセスを優先すべき状況と考えられる。このため、書き込み処理部13aは、使用率が所定の規定値(第1の規定値とする)以上の場合には、I/O制御の性能低下を防止するために、2次キャッシュ22への格納を行わず、データD7~D9をバッファ23から削除する。このとき、パリティP2もバッファ23から削除される。
【0076】
一方、書き込み処理部13aは、使用率が第1の規定値未満の場合には、データD7~D9をバッファ23から読み出して2次キャッシュ22に格納する(ステップS54)。ただし、2次キャッシュ22に空き領域がない場合には、書き込み処理部13aは、2次キャッシュ22からアクセス頻度が低いデータを追い出して空き領域を確保し、その空き領域にバッファ23から読み出したデータD7~D9を格納する。本実施の形態では例として、書き込み処理部13aは、2次キャッシュ22にアクセス頻度が所定の規定値(第2の規定値とする)以下のデータがある場合、それらのデータを2次キャッシュ22から追い出して空き領域を確保する。
【0077】
このように、書き込み処理部13aは、リビルド処理に伴ってバッファ23に格納されたデータを、可能な限り2次キャッシュ22に格納しておく。これにより、その後にホスト装置300からこれらのデータに対するアクセスが要求されたとき、データを2次キャッシュ22から1次キャッシュ21にステージングしてホスト装置300に送信できる。このため、ホスト装置300からの要求に応じたI/O処理性能を向上させることができる。
【0078】
次に、CM100の処理について、
図10~
図13のフローチャートを用いて説明する。
図10、
図11は、リビルド処理の一例を示すフローチャートである。なお、ここでは例として、RAID3~6など、パリティが用いられるRAIDレベルが設定されたRAIDグループについてのリビルド処理を示す。
【0079】
〔ステップS61〕リビルド制御部12は、ドライブ部200内のHDDの故障が発生すると、故障HDDを特定する。
〔ステップS62〕リビルド制御部12は、ボリューム管理テーブル32に基づいて、故障HDDを含むRAIDグループを特定する。
【0080】
〔ステップS63〕リビルド制御部12は、ボリューム管理テーブル32に基づいて、故障HDDに格納されていた、リビルド処理の対象データを選択する。リビルド制御部12は、例えば、ボリューム管理テーブル32から、ステップS62で特定されたRAIDグループに割り当てられた論理ボリュームにおける対象データの論理アドレス、RAIDグループに含まれるHDDの構成、RAIDレベル、ストリップサイズなどを読み出す。リビルド制御部12は、読み出したこれらの情報から対象データを選択できる。
【0081】
〔ステップS64〕リビルド制御部12は、2次キャッシュ管理テーブル31に基づいて、対象データが2次キャッシュ22に存在するか否かを判定する。この判定は、2次キャッシュ管理テーブル31に、「論理位置」に対象データの論理アドレスが含まれるレコードが存在するか否かによって行われる。2次キャッシュ22に対象データが存在する場合(キャッシュヒットの場合)はステップS65へ処理が進み、存在しない場合(キャッシュミスの場合)は
図11のステップS71へ処理が進む。
【0082】
〔ステップS65〕リビルド制御部12は、対象データのデータ容量分の領域をバッファ23上に確保する。
〔ステップS66〕リビルド制御部12は、対象データを2次キャッシュ22から読み出してバッファ23に格納する。
【0083】
〔ステップS67〕リビルド制御部12は、バッファ23から対象データを読み出してホットスペアに格納する。リビルド制御部12は、格納が完了すると、バッファ23における対象データの記憶領域を解放する。
【0084】
〔ステップS68〕リビルド制御部12は、リビルド処理が完了か否か、すなわち故障HDD内の対象データすべてについてホットスペアへの格納処理が完了か否かを判定する。リビルド処理が未完了の場合はステップS63へ処理が戻り、リビルド処理が完了の場合はステップS69へ処理が進む。
【0085】
〔ステップS69〕リビルド制御部12は、現時刻をリビルド完了時刻として、ステップS62で特定したRAIDグループに対応付けてボリューム管理テーブル32に記録する。
【0086】
以下、
図11を用いて説明を続ける。
〔ステップS71〕リビルド制御部12は、対象データに対応する再構築用データを1つ特定して選択する。リビルド制御部12は、例えば、ボリューム管理テーブル32から、ステップS62で特定されたRAIDグループに割り当てられた論理ボリュームにおける対象データの論理アドレス、RAIDグループに含まれるHDDの構成、RAIDレベル、ストリップサイズなどを読み出す。リビルド制御部12は、読み出したこれらの情報から再構築用データを特定できる。
【0087】
〔ステップS72〕リビルド制御部12は、2次キャッシュ管理テーブル31に基づいて、選択した再構築用データが2次キャッシュ22に存在するか否かを判定する。この判定は、2次キャッシュ管理テーブル31に、「論理位置」に再構築用データの論理アドレスが含まれるレコードが存在するか否かによって行われる。2次キャッシュ22に再構築用データが存在する場合(キャッシュヒットの場合)はステップS73へ処理が進み、存在しない場合(キャッシュミスの場合)はステップS74へ処理が進む。なお、再構築用データがパリティの場合、無条件でステップS74へ処理が進められる。
【0088】
〔ステップS73〕リビルド制御部12は、再構築用データを2次キャッシュ22から読み出すことを決定する。
〔ステップS74〕リビルド制御部12は、再構築用データを、ステップS62で特定されたRAIDグループに含まれるいずれかの正常HDDから読み出すことを決定する。このとき、リビルド制御部12は、例えば、ボリューム管理テーブル32から、ステップS62で特定されたRAIDグループに割り当てられた論理ボリュームにおける対象データの論理アドレス、RAIDグループに含まれるHDDの構成、RAIDレベル、ストリップサイズなどを読み出す。リビルド制御部12は、読み出したこれらの情報から、再構築用データが格納されているHDDや、そのHDDにおける再構築用データの物理位置を特定する。
【0089】
〔ステップS75〕リビルド制御部12は、対象データに対応する再構築用データをすべて選択したか否かを判定する。すべて選択済みの場合はステップS76へ処理が進み、未選択の再構築データがある場合はステップS71へ処理が戻る。
【0090】
〔ステップS76〕リビルド制御部12は、ステップS71~S75のループ処理において読み出し元が決定されたすべての再構築用データと、再構築されるすべての対象データとを含む容量分の領域をバッファ23上に確保する。
【0091】
〔ステップS77〕リビルド制御部12は、すべての再構築データを、ステップS71~S75のループ処理において決定された読み出し元から読み出し、ステップS76で確保されたバッファ23上の領域に格納する。ステップS73で決定された再構築用データは2次キャッシュ22から読み出され、ステップS74で決定された再構築用データは正常HDDから読み出される。このとき、2次キャッシュ22からの読み出しや1以上のHDDのそれぞれからの読み出しは並列に実行される。
【0092】
〔ステップS78〕リビルド制御部12は、バッファ23に格納された再構築用データを用いて排他的論理和の計算を行うことで、対象データを再構築し、バッファ23に格納する。
【0093】
〔ステップS79〕リビルド制御部12は、再構築したデータをバッファ23から読み出してホットスペアに格納する。
〔ステップS80〕リビルド制御部12は、2次キャッシュへのデータ格納処理を2次キャッシュデータ管理部13の書き込み処理部13aに実行させる(2次キャッシュへのデータ格納処理については
図12で後述)。
【0094】
なお、例えば、RAIDレベルがRAID1であるRAIDグループについてのリビルド処理では、ステップS64で「NO」と判定された場合、次のような処理が実行される。リビルド制御部12は、ステップS76のようにバッファ23の領域を確保し、RAIDグループ内の正常HDDから対象データのミラーデータを読み出してバッファ23に格納する。そして、リビルド制御部12は、ミラーデータをバッファ23からホットスペアに格納し、処理をステップS80に進める。
【0095】
以上の
図10、
図11の処理によれば、リビルド処理の対象データ、または対象データを再構築するためのデータが2次キャッシュ22に格納されている場合には、そのデータが2次キャッシュ22から読み出されたリビルド処理に利用される。リビルド処理の1つの対象データに対応するすべての再構築用データを2次キャッシュ22から読み出すことができた場合、リビルド処理におけるドライブ部200内のHDDからの読み出し回数を抑制でき、その結果、リビルド処理にかかる時間を短縮できる。
【0096】
図12は、2次キャッシュへのデータ格納処理の一例を示すフローチャートである。以下の
図12の説明において、バッファ23から読み出して2次キャッシュ22に格納する対象のデータを「格納対象データ」と記載する。
図11の処理ですべての再構築用データがステップS74で2次キャッシュ22から読み出された場合、格納対象データには、ステップS78で再構築された対象データのみが含まれる。また、
図11でステップS76の処理が実行された場合、格納対象データには、ステップS76でHDDから読み出されたデータ(ただし、パリティを除く)と、ステップS78で再構築された対象データとが含まれる。
【0097】
〔ステップS81〕2次キャッシュデータ管理部13の書き込み処理部13aは、2次キャッシュ22の使用率と第1規定値とを比較する。使用率が第1規定値以上の場合はステップS88へ処理が進み、使用率が第1規定値未満の場合はステップS82へ処理が進む。なお、前述のように、使用率とは単位時間内で2次キャッシュ22がアクセスを受け付けている時間の割合を示す。また、このステップS81では、2次キャッシュ22のアクセス負荷を示す他の指標と、第1の規定値とが比較されてもよい。
【0098】
ここで、使用率が第1規定値以上の場合とは、ホスト装置300のI/O要求時に2次キャッシュ22に頻繁にアクセスが生じて使用率が高い状態を意味する。また、使用率が第1規定値未満の場合とは、2次キャッシュ22へのアクセス頻度が少なく使用率が低い状態を意味する。前者の場合、2次キャッシュ22の負荷を抑えてI/O処理性能の低下を防止するため、リビルド処理の対象データを2次キャッシュ22に格納しないように制御される。
【0099】
〔ステップS82〕書き込み処理部13aは、2次キャッシュ22に格納対象データの容量分の空き領域があるか否かを判定する。空き領域がない場合はステップS83へ処理が進み、空き領域がある場合はステップS85へ処理が進む。
【0100】
〔ステップS83〕書き込み処理部13aは、2次キャッシュ管理テーブル31に基づき、2次キャッシュ22に格納されているデータの中にアクセス頻度が第2規定値以下のデータがあるか否かを判定する。アクセス頻度が第2規定値以下のデータがある場合はステップS84へ処理が進み、アクセス頻度が第2規定値以下のデータがない場合はステップS88へ処理が進む。
【0101】
なお、この第2規定値は、ホスト装置300からの読み出しアクセス頻度が少ないデータを2次キャッシュ22から優先的に追い出すために使用される値である。例えば、第2規定値を「0」とした場合、一定時間においてホスト装置300からまったくアクセスの無かったデータを追い出すことになる。
【0102】
〔ステップS84〕書き込み処理部13aは、2次キャッシュ22のデータの中からアクセス頻度が第2規定値以下のデータを1つ選択し、選択したデータを2次キャッシュ22から追い出して該データが格納されていた領域を解放する。なお、2次キャッシュ22から追い出されるデータがダーティデータの場合、そのデータはドライブ部200内の対応するRAIDグループ内のHDDにライトバックされる。また、リビルド処理にかかる時間を短縮するために、ステップS84ではダーティデータを選択しないようにしてもよい。
【0103】
ステップS84の実行後、ステップS82が再度実行される。
〔ステップS85〕書き込み処理部13aは、格納対象データの容量分の領域を2次キャッシュ22上に確保する。なお、ステップS83、S84の実行によりアクセス頻度が第2規定値以下であるすべてのデータが2次キャッシュ22から削除されても、2次キャッシュ22上に格納対象データの容量分の空き領域を確保できない場合がある。この場合、書き込み処理部13aは、ステップS85での領域確保をスキップしてステップS88へ処理を進める。
【0104】
〔ステップS86〕書き込み処理部13aは、バッファ23から格納対象データを読み出して2次キャッシュ22に格納する。
〔ステップS87〕書き込み処理部13aは、2次キャッシュ管理テーブル24のレコードのうち、ステップS86でデータを書き込んだページに対応するレコードを更新する。この更新処理では、「論理位置」にデータの論理アドレス情報が登録され、「アクセス頻度」に初期値「0」が登録され、「格納契機フラグ」にリビルド処理に伴う格納であることを示す「1」が登録される。
【0105】
〔ステップS88〕書き込み処理部13aは、バッファ23における格納対象データの記憶領域を解放する。また、
図11のステップS76でHDDから読み出されたパリティがバッファ23に格納されていた場合、書き込み処理部13aはこのパリティの領域も解放する。
【0106】
以上の
図12の処理により、I/O制御における2次キャッシュ22へのアクセス負荷が大きくないと推定される状況では、リビルド処理に伴ってバッファ23に格納されたデータが2次キャッシュ22に格納される。これにより、その後にホスト装置300からこれらのデータに対するアクセスが要求されたとき、データを2次キャッシュ22から1次キャッシュ21にステージングしてホスト装置300に送信できる。このため、ホスト装置300からの要求に応じたI/O処理性能を向上させることができる。
【0107】
図13は、2次キャッシュデータの削除処理の一例を示すフローチャートである。
〔ステップS91〕2次キャッシュデータ管理部13の削除処理部13bは、ボリューム管理テーブル32に基づいて、リビルド完了時刻から一定時間経過したRAIDグループがあるかを判定する。この判定は、
図10のステップS69でボリューム管理テーブル32に記録したリビルド完了時刻に基づいて行われる。該当するRAIDグループが存在する場合、このRAIDグループが処理対象として選択されてステップS92に処理が進む。また、該当するRAIDグループが存在しない場合、ステップS91の処理は一定時間間隔で繰り返し実行される。
【0108】
〔ステップS92〕削除処理部13bは、ボリューム管理テーブル32に基づいて、処理対象のRAIDグループに割り当てられた論理ボリュームを1つ選択する。
〔ステップS93〕削除処理部13bは、ステップS92で選択した論理ボリューム上のデータのうち、2次キャッシュ22に記憶されており、なおかつリビルド処理に伴って2次キャッシュ22に格納されたデータを選択する。この処理では、2次キャッシュ管理テーブル31に基づき、「論理位置」に選択した論理ボリュームの識別情報が登録され、なおかつ「格納契機フラグ」が「1」であるレコードに対応するデータが1つ選択される。なお、図示しないが、ステップS93で該当するデータが存在しないと判定された場合、処理はステップS97に進められる。
【0109】
〔ステップS94〕削除処理部13bは、2次キャッシュ管理テーブル31のレコードのうちステップS93で選択したデータに対応するレコードから、当該データのアクセス頻度を取得する。削除処理部13bは、取得したアクセス頻度が第2規定値以下かを判定する。アクセス頻度が第2規定値以下の場合はステップS95へ処理が進み、アクセス頻度が第2規定値より大きい場合はステップS96へ処理が進む。
【0110】
〔ステップS95〕削除処理部13bは、ステップS93で選択したデータを2次キャッシュ22から削除して、当該データが格納されていた領域を解放する。このとき、削除処理部13bは、2次キャッシュ管理テーブル31における当該データに対応するレコードにおいて、「物理位置」以外の登録値を無効値に更新する。
【0111】
〔ステップS96〕削除処理部13bは、ステップS92で選択した論理ボリューム上のデータのうち、2次キャッシュ22に記憶されており、なおかつリビルド処理に伴って2次キャッシュ22に格納されたすべてのデータを選択済みかを判定する。未選択のデータがある場合はステップS93に処理が戻り、次の該当データが選択される。すべてのデータを選択済みの場合はステップS97へ処理が進む。
【0112】
〔ステップS97〕削除処理部13bは、ステップS91で選択したRAIDグループに含まれるすべての論理ボリュームを選択済みかを判定する。未選択の論理ボリュームがある場合はステップS92に処理が戻り、次の論理ボリュームが選択される。すべての論理ボリュームを選択済みの場合、処理が終了する。
【0113】
以上の
図13の処理によれば、リビルド処理が完了してから一定時間後に、そのリビルド処理に伴って2次キャッシュ22に格納されたデータのうち、アクセス頻度が低いと判断されるデータが2次キャッシュ22から削除される。リビルド処理に伴って2次キャッシュ22に格納されたデータは、I/O要求の状況に伴って2次キャッシュ22に格納された訳ではない。このため、アクセス頻度が第2規定値以下であれば、たとえ同じアクセス頻度であったとしても、I/O要求に伴って2次キャッシュ22に格納されたデータよりも、リビルド処理に伴って2次キャッシュ22に格納されたデータの方が必要性が低いと推定される。
図13の処理では、このような判断に基づいて、リビルド処理に伴って2次キャッシュ22に格納されたもののアクセス頻度が第2規定値以下であるデータを、2次キャッシュ22から削除する。これにより、2次キャッシュ22の領域を有効活用できるようになり、ホスト装置300からの要求に応じたI/O処理性能を向上させることができる。
【0114】
なお、以上の第2の実施の形態では、リビルド処理の際に2次キャッシュ22を利用することを示したが、例えば2次キャッシュ22だけでなく1次キャッシュ21を利用することも可能である。ただし、1次キャッシュ21は2次キャッシュ22より容量が小さいので、リビルド処理の対象データや再構築用データが1次キャッシュ21に格納されている確率は、2次キャッシュ22より低い。また、1次キャッシュ21にはアクセス頻度の高いデータが格納されるので、I/O処理における1次キャッシュ21に対するアクセス負荷は2次キャッシュ22に対するアクセス負荷より高い。このため、リビルド処理の際に1次キャッシュ21にアクセスした場合には、2次キャッシュ22にアクセスした場合よりもI/O処理性能に与える影響が大きい。このような理由から、リビルド処理では1次キャッシュ21ではなく2次キャッシュ22が利用されることが適していると考えられる。換言すると、本実施の形態の処理手順によって得られる、リビルド処理時間の短縮によるI/O処理性能の向上効果は、2次キャッシュ22を備えるストレージ制御装置においてより大きくなる。
【0115】
なお、上記の各実施の形態に示した装置(ストレージ制御装置1およびCM100)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc-Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
【0116】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD-ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0117】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【0118】
1 ストレージ制御装置
1a 記憶部
1b 処理部
1c キャッシュ
2 ストレージ部
2a~2d 記憶装置
2e 論理記憶領域
3 ホスト装置
DT1~DT4 データ
PR1、PR2 パリティ