(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024090959
(43)【公開日】2024-07-04
(54)【発明の名称】ストレージ装置,ストレージ制御プログラム及びストレージ制御方法
(51)【国際特許分類】
G06F 3/06 20060101AFI20240627BHJP
G06F 11/20 20060101ALI20240627BHJP
【FI】
G06F3/06 305D
G06F3/06 305C
G06F11/20 646
G06F11/20 602
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022207180
(22)【出願日】2022-12-23
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】土山 由嘉莉
【テーマコード(参考)】
5B034
【Fターム(参考)】
5B034CC02
(57)【要約】
【課題】ストレージ装置において、データロストを防止し、復旧データを保存する。
【解決手段】複数のコントローラモジュール2と記憶装置3とを有するストレージ装置100であって、複数のコントローラモジュール2のうちの一のコントローラモジュール2が備えるプロセッサは、上位装置1からの書き込み要求に係るデータにチェックコードを付加し、複数のコントローラモジュール2から記憶装置3へのデータの書き込みでチェックコードの異常を検出した場合に、データの書き込み動作を、後続データの書き込みの前に記憶装置3から後続データの書き込み範囲のデータを読み込む動作に設定し、後続データの書き込み範囲のデータを読み込み、複数のコントローラモジュール2から記憶装置3への書き込みでチェックコードの異常を更に検出した場合に、読み込んだデータを記憶装置3に書き戻す。
【選択図】
図8
【特許請求の範囲】
【請求項1】
複数のコントローラモジュールと記憶装置とを有するストレージ装置であって、
前記複数のコントローラモジュールのうちの一のコントローラモジュールが備えるプロセッサは、
上位装置からの書き込み要求に係るデータにチェックコードを付加し、
前記複数のコントローラモジュールから前記記憶装置へのデータの書き込みで前記チェックコードの異常を検出した場合に、データの書き込み動作を、後続データの書き込みの前に前記記憶装置から前記後続データの書き込み範囲のデータを読み込む動作に設定し、
前記後続データの書き込み範囲のデータを読み込み、
前記複数のコントローラモジュールから前記記憶装置への書き込みで前記チェックコードの異常を更に検出した場合に、前記読み込んだデータを前記記憶装置に書き戻す、
ストレージ装置。
【請求項2】
前記複数のコントローラモジュールは、前記上位装置からの書き込み要求を受け付ける第1のコントローラモジュールと他の第2のコントローラモジュールとを含み、
前記プロセッサは、前記第1及び第2のコントローラモジュールにおいて前記記憶装置から前記第1及び第2のコントローラモジュールへのデータの読み込みで前記チェックコードの異常を検出した場合に、前記第2のコントローラモジュールによって前記読み込みの範囲へのデータの書き込みを行う、
請求項1に記載のストレージ装置。
【請求項3】
前記複数のコントローラモジュールは、前記上位装置からの書き込み要求を受け付ける第1のコントローラモジュールと他の第2のコントローラモジュールとを含み、
前記プロセッサは、前記第1のコントローラモジュールにおいて前記記憶装置から前記第1のコントローラモジュールへのデータの読み込みで前記チェックコードの異常を検出し、且つ、前記第2のコントローラモジュールにおいて前記第2のコントローラモジュールから前記記憶装置へのデータの書き込みで前記チェックコードの異常を検出した場合に、前記第2のコントローラモジュールによって前記書き込みの範囲へのデータの書き戻しを行う、
請求項1又は2に記載のストレージ装置。
【請求項4】
前記プロセッサは、
前記複数のコントローラモジュールから前記記憶装置へのデータの書き込みで前記チェックコードの異常を検出しない場合には、データの書き込み動作を、ライトバック動作に設定すると共に、後続データの書き込みの前に前記記憶装置から前記後続データの書き込み範囲のデータを読み込まない動作に設定する、
請求項1又は2に記載のストレージ装置。
【請求項5】
前記プロセッサは、
前記チェックコードの異常を検出した場合に、前記データの書き込み動作をライトスルー動作に設定する、
請求項1又は2に記載のストレージ装置。
【請求項6】
複数のコントローラモジュールのうちの一のコントローラモジュールが備えるコンピュータに、
上位装置からの書き込み要求に係るデータにチェックコードを付加し、
前記複数のコントローラモジュールから記憶装置へのデータの書き込みで前記チェックコードの異常を検出した場合に、データの書き込み動作を、後続データの書き込みの前に前記記憶装置から前記後続データの書き込み範囲のデータを読み込む動作に設定し、
前記後続データの書き込み範囲のデータを読み込み、
前記複数のコントローラモジュールから前記記憶装置への書き込みで前記チェックコードの異常を更に検出した場合に、前記読み込んだデータを前記記憶装置に書き戻す、
処理を実行させる、ストレージ制御プログラム。
【請求項7】
複数のコントローラモジュールのうちの一のコントローラモジュールが備えるコンピュータが、
上位装置からの書き込み要求に係るデータにチェックコードを付加し、
前記複数のコントローラモジュールから記憶装置へのデータの書き込みで前記チェックコードの異常を検出した場合に、データの書き込み動作を、後続データの書き込みの前に前記記憶装置から前記後続データの書き込み範囲のデータを読み込む動作に設定し、
前記後続データの書き込み範囲のデータを読み込み、
前記複数のコントローラモジュールから前記記憶装置への書き込みで前記チェックコードの異常を更に検出した場合に、前記読み込んだデータを前記記憶装置に書き戻す、
処理を実行する、ストレージ制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ装置,ストレージ制御プログラム及びストレージ制御方法に関する。
【背景技術】
【0002】
ストレージ内で扱うデータを保証するために、サーバからWrite要求を受け付けたデータに対して、各ブロックにチェックコード(CC)を付与し、データの伝送路の複数のチェックポイントでデータの整合性を確認することが行われている。CC異常が検出された場合に、Write要求を受け付けたが異常データであると判断される。
【0003】
コントローラモジュール(CM)のメモリからディスクへの伝送経路もチェックポイントの1つである。
【0004】
CMのメモリからディスクへの伝送路におけるCCのチェックは、高速化のためIO制御チップ(IOC)のチェック回路により、ハードウェアでのチェックが行われる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006-252414号公報
【特許文献2】特開2016-212522号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、CCのチェックとディスクへの書き込みとは同時に行われることもあるため、CC異常を検出後にデータ転送を止めるまでに一部の異常データがドライブに書き込まれてしまう。
【0007】
RAID(Redundant Arrays of Inexpensive Disks)グループ内の複数ドライブの冗長セットを構成している領域で同時に異常データが書き込まれた場合には、サーバから読み込みも書き込みもできない領域が発生し、データロストが発生するおそれがある。
【0008】
復旧のために、ボリューム全体のフォーマット及びバックアップデータのリストアの作業が行われることとなる。
【0009】
1つの側面では、ストレージ装置において、データロストを防止し、復旧データを保存することを目的とする。
【課題を解決するための手段】
【0010】
1つの側面では、ストレージ装置は、複数のコントローラモジュールと記憶装置とを有するストレージ装置であって、前記複数のコントローラモジュールのうちの一のコントローラモジュールが備えるプロセッサは、上位装置からの書き込み要求に係るデータにチェックコードを付加し、前記複数のコントローラモジュールから前記記憶装置へのデータの書き込みで前記チェックコードの異常を検出した場合に、データの書き込み動作を、後続データの書き込みの前に前記記憶装置から前記後続データの書き込み範囲のデータを読み込む動作に設定し、前記後続データの書き込み範囲のデータを読み込み、前記複数のコントローラモジュールから前記記憶装置への書き込みで前記チェックコードの異常を更に検出した場合に、前記読み込んだデータを前記記憶装置に書き戻す。
【発明の効果】
【0011】
1つの側面では、ストレージ装置において、データロストを防止し、復旧データを保存することができる。
【図面の簡単な説明】
【0012】
【
図1】関連例としてのストレージ装置におけるCCのチェック処理を説明するブロック図である。
【
図2】
図1に示したストレージ装置におけるCC異常検出処理を説明するブロック図である。
【
図3】
図1に示したストレージ装置におけるCC異常の検出時の処理を説明するブロック図である。
【
図4】
図1に示したストレージ装置におけるCCのチェックの正常終了時の処理を説明するブロック図である。
【
図5】
図1に示したストレージ装置においてCC異常が発生したが復旧可能な場合を説明するブロック図である。
【
図6】
図1に示したストレージ装置においてCC異常が発生して復旧不可能な場合を説明するブロック図である。
【
図7】実施形態としてのストレージ装置におけるCC異常の検出時の制御を説明するブロック図である。
【
図8】
図7に示したストレージ装置において、主担当CMのReadで成功し、WriteでCC異常を検出する場合の制御を説明するブロック図である。
【
図9】
図7に示したストレージ装置においてReadでCC異常を検出する場合の制御を説明するブロック図である。
【
図10】
図7に示したストレージ装置において、副担当CMのReadで成功し、WriteでCC異常を検出する場合の制御を説明するブロック図である。
【
図11】
図7に示したストレージ装置においてRead及びWriteに成功する場合の制御を説明するブロック図である。
【
図12】
図7に示したストレージ装置のハードウェア構成例を模式的に示すブロック図である。
【
図13】
図12に示したCPUのソフトウェア構成例を模式的に示すブロック図である。
【
図14】
図12に示したIOCのソフトウェア構成例を模式的に示すブロック図である。
【
図15】実施形態におけるライトバック動作を説明するフローチャートである。
【
図16】実施形態における書き込み前にRAIDグループからのデータ読み込みを実施しない制御を説明するフローチャートである。
【
図17】実施形態におけるライトスルー動作、且つ、書き込み前にRAIDグループからのデータ読み込みを実施する制御を説明するフローチャートである。
【
図18】
図16及び
図17に示したWriteの動作モード判定処理を説明するフローチャートである。
【発明を実施するための形態】
【0013】
〔A〕関連例
図1は、関連例としてのストレージ装置600におけるCCのチェック処理を説明するブロック図である。
【0014】
図1に示すように、関連例におけるストレージ装置600は、サーバ6,主担当CM7a,副担当7b及び複数(
図1に示す例では5つ)のドライブ8を備える。
【0015】
ドライブ8は、RAIDグループを構成し、データ(
図1に示す例ではデータD0~D2)及びチェックコード(CC)を記憶する。
図1に示す例では、RAIDグループ#1には3つのドライブ8が含まれ、RAIDグループ#2には2つのドライブ8が含まれる。
【0016】
サーバ6は、サーバ機能を備えたコンピュータ(別言すれば、情報処理装置)である。
図1に示す例においてはストレージ装置600が1つのサーバ6を備えることとしているが、ストレージ装置600が備えるサーバ6の数は種々変更することができる。
【0017】
主担当CM7a及び副担当CM7bは、それぞれ、Central Processing Unit(CPU)71,メモリ72及びIOC73を備える。以下、主担当CM7a及び副担当CM7bをあわせてCM7と称する場合がある。CM7は、サーバ6からのデータアクセス要求を受付け、ドライブ8へのアクセスを制御する。
【0018】
CPU71は、例示的に、種々の制御や演算を行う処理装置であり、メモリ72に格納されたOperating System(OS)やプログラムを実行することにより、種々の機能を実現する。
【0019】
メモリ72は、例示的に、Read Only Memory(ROM)及びRandom Access Memory(RAM)を含む記憶装置である。RAMは、例えばDynamic RAM(DRAM)であってよい。メモリ72のROMには、Basic Input/Output System(BIOS)等のプログラムが書き込まれてよい。メモリ72のソフトウェアプログラムは、CPU71に適宜に読み込まれて実行されてよい。また、メモリ72のRAMは、一次記録メモリあるいはワーキングメモリとして利用されてよい。
【0020】
IOC73は、CM7のメモリ72からドライブ8へのデータ読み書きの制御及びCCチェックを行う。
【0021】
主担当CM7aのCPU71は、ストレージ内で扱うデータを保証するために、サーバ6からWrite要求(符号A1参照)を受け付けたデータに対して、各ブロックにチェックコード(CC)を付与する(符号A2参照)。
【0022】
CCは、ストレージ内部のデータ転送時にデータの整合性を確認する目的で、サーバ6からWrite要求を受け付けたデータに対して、各ブロック(例えば512バイト)に対して例えば8バイトが付与される。
【0023】
CCが付与されたデータは、冗長化のために、主担当CM7aのメモリ72を介して、副担当CM7bのメモリ72へ転送される(符号A3参照)。
【0024】
主担当CM7aのCPU71は、サーバ6に対して、Write要求の完了応答を発行する(符号A4参照)。
【0025】
主担当CM7aのIOC73は、メモリ72に格納されたCC付きのデータをRAIDグループ#1のドライブ8に対して、非同期でWriteする(符号A5参照)。
【0026】
主担当CM7aのIOC73は、メモリ72からドライブ8に転送するデータのCCチェックを行う(符号A6参照)。なお、符号A5に示す処理と符号A6に示す処理とは非同期に実行されるため、符号A5に示す処理と符号A6に示す処理とが同時に実行される場合や、符号A6に示す処理の後に符号A5に示す処理が実行される場合もある。
【0027】
図2は、
図1に示したストレージ装置600におけるCC異常検出処理を説明するブロック図である。
【0028】
主担当CM7aのメモリ72からドライブ8への伝送路のCCチェックは、高速化のためIOC73のチェック回路による、ハードウェアでのチェックとなる。
【0029】
図2に示すように、CCチェックとドライブへの書き込みとは同時に行われるため、CC異常(符号A7参照)を検出後にデータ転送を止めるまでに一部の異常データがドライブ8に書き込まれてしまう。
【0030】
図3は、
図1に示したストレージ装置600におけるCC異常の検出時の処理を説明するブロック図である。
【0031】
RAIDグループ内の複数のドライブ8の冗長セットを構成している領域で同時に異常データが書き込まれた場合について、
図3を用いて説明する。
【0032】
主担当CM7aのメモリ72は、IOC73を介して、RAIDグループ#1のドライブ8にCC付きのデータをWriteする(符号B1参照)。
【0033】
主担当CM7aのIOC73は、CCチェックを行い、異常検出によりデータのWriteを停止させる(符号B2参照)。
【0034】
主担当CM7aのCPU71は、副担当CM7bのCPU71に対して、データの冗長化のためのWrite要求を発行する(符号B3参照)。
【0035】
副担当CM7bのメモリ72は、IOC73を介して、RAIDグループ#1のドライブ8にCC付きのデータをWriteする(符号B4参照)。
【0036】
副担当CM7bのIOC73は、CCチェックを行い、異常検出によりデータのWriteを停止させる(符号B5参照)。
【0037】
これにより、CM7のメモリ72上にCC異常のデータが保持されると共に、ドライブ8にCC異常のデータが書き込まれる(符号B6参照)。後続の動作についても同様にCC異常のデータの書き込みになる可能性が高く、データ破壊が発生し、CC異常のデータの書き込み領域へのアクセスは不可となる。
【0038】
図4は、
図1に示したストレージ装置600におけるCCのチェックの正常終了時の処理を説明するブロック図である。
【0039】
サーバ6からWrite要求を受けた主担当のCM7aは、受け付けたデータにCCを付与しメモリ72に格納する。
【0040】
主担当のCM7aは、メモリ72に格納したデータを副担当のCM7bにデータコピー要求し、データコピー完了後にサーバ6に完了応答を返す。
【0041】
サーバ6とCM7aとのやり取りとは非同期に、CM7a内のIOC73は、メモリ72に格納されたデータのCCを確認し(符号C2参照)、並行してRAIDグループ#1へWrite処理を行う(符号C1参照)。
【0042】
そして、主担当のCM7aから正常なデータがドライブ8に書き込まれる(符号C3参照)。
【0043】
図5は、
図1に示したストレージ装置600においてCC異常が発生したが復旧可能な場合を説明するブロック図である。
【0044】
サーバ6からWrite要求を受けた主担当のCM7aは、受け付けたデータにCCを付与しメモリ72に格納する。
【0045】
主担当のCM7aは、メモリ72に格納したデータを副担当のCM7bにデータコピー要求し、データコピー完了後にサーバ6に完了応答を返す。
【0046】
CM7aのIOC73は、サーバ6とCM7aとのやり取りとは非同期に、メモリ72に格納されたデータのCCを確認し、並行してRAIDグループ#1へWrite処理を行う(符号C11参照)。ここで、IOC73は、CCの異常を検出した場合は、Write処理を中止する(符号C12参照)。
【0047】
主担当のCM7aは、副担当のCM7bに対し、メモリ72内に格納されたデータ(別言すれば、冗長化データ)のRAIDグループ#1へのWrite処理を要求する(符号C13参照)。
【0048】
副担当のCM7bのIOC73は、メモリ72に格納された冗長化データのCCを確認し(符号C15参照)、並行してRAIDグループ#1へWrite処理を行う(符号C14参照)。ここで、RAIDグループ#1へは正常なデータが上書きされるためデータが復旧される(符号C16参照)。
【0049】
図6は、
図1に示したストレージ装置600においてCC異常が発生して復旧不可能な場合を説明するブロック図である。
【0050】
サーバ6からWrite要求を受けた主担当のCM7aは、受け付けたデータにCCを付与しメモリ72に格納する。
【0051】
主担当のCM7aは、メモリ72に格納した上記データを副担当のCM7bにデータコピー要求し、データコピー完了後にサーバ6に完了応答を返す。
【0052】
CM7a内のIOC73は、サーバ6とCM7aとのやり取りとは非同期に、メモリ72に格納されたデータのCCを確認し、並行してRAIDグループへWrite処理を行うが(符号E1参照)、CCの異常を検出した場合はWrite処理を中止する(符号E2参照)。
【0053】
主担当のCM7aは、副担当のCM7bに対し、メモリ72内に格納されたデータ(別言すれば、冗長化データ)のRAIDグループ#1へWrite処理を要求する(符号E3参照)。
【0054】
副担当のCM7bのIOC73は、メモリ72に格納された冗長化データのCCを確認し、並行してRAIDグループ#1へWrite処理を行うが(符号E4参照)、CCの異常を検出した場合はWrite処理を中止する(符号E5参照)。
【0055】
これにより、RAIDグループ#1へは異常データが書き込まれたままとなり、更新前後のデータも異常であるため、データロストとなってしまう(符号E6参照)。
【0056】
図6に示すCC異常が発生して復旧不可能な場合は、主担当のCM7a及び副担当のCM7bのメモリ72上には異常データしかない。そして、ドライブに元々書き込まれていた正常なデータ(別言すれば、更新前のデータ)も異常データで上書きされている状態となり、データ破壊となる。
【0057】
また、CC異常の原因となるCM7の故障やファームウェア制御の異常が解消されるまで、CM7のメモリ72上に保持されたデータの書き込みや、サーバ6からの後続のデータ書き込み要求について、同様のデータ破壊が継続する可能性が高い。
【0058】
〔B〕実施形態
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0059】
実施形態においては、
図6に示したように複数のCMからの書き込みでCC異常を検出した場合、ストレージ装置のすべてのRAIDグループで書き込み前に書き込み領域と同じ領域を読み込む制御に切り替える。
【0060】
以降の書き込み処理でCC異常を検出した場合には、読み込んでいたデータを書き戻すことにより、初回の異常検出以降の書き込み処理で異常データがドライブに書き込まれた状態となることを防ぐ。
【0061】
書き込み前にドライブの内容を読み込んでおくことで、ドライブアクセスの制御をチェックすることができ、書き込みで変更しようとするデータの一時的なバックアップができる。
【0062】
また、サーバからの書き込み要求に対して、関連例の制御方式では、複数のCMのメモリでデータ複製が完了した後、RAIDグループに書き込みが行われる前に完了応答をサーバ1(
図8等を用いて後述)に返す「ライトバック動作」であった。
【0063】
一方、実施形態では、RAIDグループに書き込みが正常に行われた後にサーバ1に完了応答する「ライトスルー動作」とすることにより、異常検出時にサーバに通知するように動作してサーバ内に更新データが保存される。これにより、ストレージ装置のメモリに保持されているデータ異常によるデータロスト拡大のリスクを低減する。
【0064】
図7は、実施形態としてのストレージ装置100におけるCC異常の検出時の制御を説明するブロック図である。
【0065】
図7に示すように、実施形態におけるストレージ装置100は、サーバ1(
図8~
図11を用いて後述),主担当CM2a,副担当2b及び複数(
図7に示す例では5つ)のドライブ3を備える。
【0066】
ドライブ3は、RAIDグループを構成し、データ(
図7に示す例ではデータD0~D2)及びチェックコード(CC)を記憶する。
図7に示す例では、RAIDグループ#1には3つのドライブ3が含まれ、RAIDグループ#2には2つのドライブ3が含まれる。
【0067】
主担当CM2a及び副担当CM2bは、それぞれ、CPU21,メモリ22及びIOC23を備える。以下、主担当CM2a及び副担当CM2bをあわせてCM2と称する場合がある。CM2は、サーバ1からのデータアクセス要求を受付け、ドライブ3へのアクセスを制御する。
【0068】
CPU21は、例示的に、種々の制御や演算を行う処理装置であり、メモリ22に格納されたOSやプログラムを実行することにより、種々の機能を実現する。
【0069】
なお、種々の機能を実現するためのプログラムは、例えばフレキシブルディスク、CD(CD-ROM、CD-R、CD-RW等)、DVD(DVD-ROM、DVD-RAM、DVD-R、DVD+R、DVD-RW、DVD+RW、HD DVD等)、ブルーレイディスク、磁気ディスク、光ディスク、光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供されてよい。そして、コンピュータ(本実施形態ではCPU21)は上述した記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いてよい。また、プログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、記憶装置から通信経路を介してコンピュータに提供してもよい。
【0070】
種々の機能を実現する際には、内部記憶装置(本実施形態ではメモリ22)に格納されたプログラムがコンピュータ(本実施形態ではCPU21)によって実行されてよい。また、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
【0071】
CPU21は、例示的に、CM2全体の動作を制御する。CM2全体の動作を制御するための装置は、CPU21に限定されず、例えば、MPUやDSP,ASIC,PLD,FPGAのいずれか1つであってもよい。また、CM2全体の動作を制御するための装置は、CPU,MPU,DSP,ASIC,PLD及びFPGAのうちの2種類以上の組み合わせであってもよい。なお、MPUはMicro Processing Unitの略称であり、DSPはDigital Signal Processorの略称であり、ASICはApplication Specific Integrated Circuitの略称である。また、PLDはProgrammable Logic Deviceの略称であり、FPGAはField Programmable Gate Arrayの略称である。
【0072】
メモリ22は、例示的に、ROM及びRAMを含む記憶装置である。RAMは、例えばDRAMであってよい。メモリ22のROMには、BIOS等のプログラムが書き込まれてよい。メモリ22のソフトウェアプログラムは、CPU21に適宜に読み込まれて実行されてよい。また、メモリ22のRAMは、一次記録メモリあるいはワーキングメモリとして利用されてよい。
【0073】
IOC23は、CM2のメモリ22からドライブ3へのデータ転送の制御及びCCチェックを行う。
【0074】
図7に示すCC異常検出時の制御においては、主担当のCM2a及び副担当のCM2bからの書き込みでCC異常を検出した場合に、ライトスルー動作、且つ、書き込み前にRAIDグループからのデータ読み込み動作をするように、動作モードが切り替えられる。
【0075】
サーバ1からWrite要求を受けた主担当のCM2aは、受け付けたデータにCCを付与しメモリ22に格納する。
【0076】
主担当のCM2aは、メモリ22に格納した上記データを副担当のCM2bにデータコピー要求し、データコピー完了後にサーバ1に完了応答を返す。
【0077】
CM2a内のIOC23は、サーバ1とCM2aとのやり取りとは非同期に、メモリ22に格納されたデータのCCを確認し、並行してRAIDグループ#1へWrite処理を行うが(符号F1参照)、CCの異常を検出した場合はWrite処理を中止する(符号F2参照)。
【0078】
主担当のCM2aは、副担当のCM2bに対し、メモリ22内に格納されたデータ(別言すれば、冗長化データ)のRAIDグループ#1へのWrite処理を要求する(符号F3参照)。
【0079】
副担当のCM2bのIOC23は、メモリ22に格納された冗長化データのCCを確認し、並行してRAIDグループ#1へWrite処理を行うが(符号F4参照)、CCの異常を検出した場合はWrite処理を中止する(符号F5参照)。
【0080】
符号F6に示すように、
図7に示す例では、CC異常データが書き込まれ、データ破壊が発生するが、装置状態がライトスルー動作およびRead&Write動作するように登録されることで、後続の書き込みについては新方式により保護可能となる。
【0081】
図8は、
図7に示したストレージ装置100において(つまり
図7で受け付けたデータ1に後続するデータ2に対して)、主担当CM2aのReadで成功し、WriteでCC異常を検出する場合の制御を説明するブロック図である。
【0082】
主担当のCM2aで読み込みに成功し、書き込みでCC異常を検出する場合は、副担当のCM2bからの書き込みを実施し、成功する場合は、書き込み成功がサーバ1に応答(完了応答)される。一方、副担当のCM2bからの書き込みに失敗する場合は、主担当のCM2aで読み込んでいたデータが書き戻され、書き込み失敗がサーバ1に応答(未完了応答)される。
【0083】
主担当CM2aは、サーバ1からWrite要求を受け付ける(符号G1参照)。
【0084】
主担当CM2aは、データにCCを付与する(符号G2参照)。
【0085】
主担当CM2aのメモリ22は、IOC23を介して、RAIDグループ#1のドライブ3に対してRead及びWriteを行う(符号G3参照)。
【0086】
主担当CM2aのIOC23は、CCチェックを行い、Writeで異常を検出し、Writeを停止させる(符号G4参照)。
【0087】
主担当CM2aは、副担当CM2bに対して、データの冗長化のために、Write要求を発行する(符号G5参照)。
【0088】
副担当CM2bのメモリ22は、IOC23を介して、RAIDグループ#1のドライブ3に対してWriteを行う(符号G6参照)。
【0089】
副担当CM2bのIOC23は、CCチェックを行い、Writeで異常を検出し、Writeを停止させる(符号G7参照)。
【0090】
書き込みは失敗しているが、書き込み前のデータはReadによって保持されているため、主担当CM2aは、RAIDグループ#1のドライブ3に対して、Readデータの書き戻しができる(符号G8参照)。
【0091】
主担当CM2aは、書き込み失敗をサーバ1に応答(未完了応答)する(符号G9参照)。
【0092】
図9は、
図7に示したストレージ装置100においてReadでCC異常を検出する場合の制御を説明するブロック図である。
【0093】
主担当のCM2aで読み込みがCC異常で失敗する場合には、副担当のCM2bからの読み込みが実施される。副担当のCM2bでの読み込みもCC異常で失敗する場合は、ドライブ3に格納されているデータが異常であり、Write要求データでの上書きが優先されるため、Write要求データの書き込みが実施される。書き込みが成功する場合は、書き込み成功がサーバ1に応答(完了応答)され、失敗する場合は、失敗がサーバ1に応答(未完了応答)される。
【0094】
主担当のCM2aで読み込みに成功し、書き込みでCC異常を検出する場合は、副担当のCM2bからの書き込みを実施し、成功する場合は、書き込み成功がサーバ1に応答(完了応答)される。一方、副担当のCM2bからの書き込みに失敗する場合は、主担当のCM2aで読み込んでいたデータが書き戻され、書き込み失敗がサーバ1に応答(未完了応答)される。
【0095】
主担当CM2aは、サーバ1からWrite要求を受け付ける(符号H1参照)。
【0096】
主担当CM2aは、データにCCを付与する(符号H2参照)。
【0097】
主担当CM2aのメモリ22は、IOC23を介して、RAIDグループ#1のドライブ3に対してReadを行う(符号H3参照)。
【0098】
主担当CM2aのIOC23は、CCチェックを行い、Readで異常を検出する(符号H4参照)。
【0099】
主担当CM2aは、副担当CM2bに対して、Read要求及びWrite要求を発行する(符号H5参照)。
【0100】
副担当CM2bのメモリ22は、IOC23を介して、RAIDグループ#1のドライブ3に対してReadを行う(符号H6参照)。
【0101】
副担当CM2bのIOC23は、CCチェックを行い、Readで異常を検出する(符号H7参照)。
【0102】
副担当CM2bのIOC23は、Write要求に係るデータをRAIDグループ#1のドライブ3に書き込む(符号H8参照)。
【0103】
主担当CM2aは、サーバ1に対して、未完了応答又は完了応答を発行する(符号H9)。
【0104】
図10は、
図7に示したストレージ装置100において、副担当CM2bのReadで成功し、WriteでCC異常を検出する場合の制御を説明するブロック図である。
【0105】
主担当のCM2aで読み込みがCC異常で失敗する場合は、副担当のCM2bからの読み込みが実施され、副担当のCM2bでの読み込みで成功する場合は、Write要求データの書き込みが実施される。書き込みが成功する場合は、書き込み成功がサーバ1に応答(完了応答)され、失敗する場合は、副担当のCM2bで読み込んでいたデータが書き戻され、書き込み失敗がサーバ1に応答(未完了応答)される。
【0106】
主担当CM2aは、サーバ1からWrite要求を受け付ける(符号I1参照)。
【0107】
主担当CM2aは、データにCCを付与する(符号I2参照)。
【0108】
主担当CM2aのメモリ22は、IOC23を介して、RAIDグループ#1のドライブ3に対してReadを行う(符号I3参照)。
【0109】
主担当CM2aのIOC23は、CCチェックを行い、Readで異常を検出する(符号I4参照)。
【0110】
主担当CM2aは、副担当CM2bに対して、Read要求及びWrite要求を発行する(符号I5参照)。
【0111】
副担当CM2bのメモリ22は、IOC23を介して、RAIDグループ#1のドライブ3に対してRead及びWriteを行う(符号I6参照)。
【0112】
副担当CM2bのIOC23は、CCチェックを行い、Writeで異常を検出する(符号I7参照)。
【0113】
副担当CM2bのIOC23は、符号I6におけるReadデータをRAIDグループ#1のドライブ3に書き戻す(符号I8参照)。
【0114】
主担当CM2aは、サーバ1に対して、未完了応答を発行する(符号I9)。
【0115】
図11は、
図7に示したストレージ装置100においてRead及びWriteに成功する場合の制御を説明するブロック図である。
【0116】
CC異常の原因となるCM2の故障やファームウェア制御の異常が解消され、書き込みでCC異常を検出しない場合には、ライトバックモード、且つ、書き込み時に読み込みを実施しない動作モードが実行される。
【0117】
主担当CM2aは、サーバ1からWrite要求を受け付ける(符号J1参照)。
【0118】
主担当CM2aは、データにCCを付与する(符号J2参照)。
【0119】
主担当CM2aのメモリ22は、IOC23を介して、RAIDグループ#1のドライブ3に対してReadを行う(符号J3参照)。
【0120】
主担当CM2aのIOC23は、CCチェックを行う(符号J4参照)。
【0121】
Writeまで成功する場合は、装置状態が、ライトバックモード、且つ、書き込み時に読み込みを実施しない動作モードに設定される(符号J5参照)。
【0122】
そして、主担当CM2aのIOC23は、サーバ1に対して応答完了を発行する(符号J6参照)。
【0123】
図12は、
図7に示したストレージ装置100のハードウェア構成例を模式的に示すブロック図である。
【0124】
ストレージ装置100は、CPU21,メモリ22,IOC23及び複数のドライブ3を備える。
【0125】
CPU21,メモリ22及びIOC23は、
図7等に示したCM2に搭載されてよく、CM2は冗長構成を有してよい。
【0126】
複数のドライブ3は、二以上のRAIDグループを構成する。
【0127】
図13は、
図12に示したCPU21のソフトウェア構成例を模式的に示すブロック図である。
【0128】
CM2のCPU21は、第一IO制御部211,第二IO制御部212及びWrite動作モード判定部213として機能してよい。
【0129】
第一IO制御部211は、書き込みでCC異常を検出しない場合に、サーバ1からWrite要求を受け付けると、ライトバックモード、且つ、書き込み時に読み込みを実施しない制御により、Write処理を行う。
【0130】
第二IO制御部212は、書き込みでCC異常を検出した場合に、サーバ1からWrite要求を受け付けると、ライトスルー動作、且つ、書き込み前にRAIDグループからのデータ読み込みを実施する制御により、Write処理を行う。
【0131】
Write動作モード判定部213は、書き込みでCC異常を検出するか否かを判定する。Write動作モード判定部213は、書き込みでCC異常を検出しない場合には、第一IO制御部211に対して、ライトバックモード、且つ、書き込み時に読み込みを実施しない制御により、Write処理を行わせる。一方、Write動作モード判定部213は、書き込みでCC異常を検出する場合には、第二IO制御部212に対して、ライトスルー動作、且つ、書き込み前にRAIDグループからのデータ読み込みを実施する制御により、Write処理を行わせる。
【0132】
図14は、
図12に示したIOC23のソフトウェア構成例を模式的に示すブロック図である。
【0133】
IOC23は、CC異常チェック機構231として機能してよい。
【0134】
CC異常チェック機構231は、Writeデータ又はReadデータのCCをチェックする。
【0135】
実施形態におけるライトバック動作を、
図15に示すフローチャート(ステップS1~S3)に従って説明する。
【0136】
第一IO制御部211は、サーバ1からWrite要求を受領する(ステップS1)。
【0137】
第一IO制御部211は、Writeデータを512バイトごとに8バイトのCCを付与して、主担当CM2a及び副担当CM2bのメモリ22に配置する(ステップS2)。
第一IO制御部211は、サーバ1に応答完了を通知する(ステップS3)。そして、ライトバック動作は終了する。
【0138】
次に、実施形態における書き込み前にRAIDグループからのデータ読み込みを実施しない制御を、
図16に示すフローチャート(ステップS4~S9)に従って説明する。
【0139】
第一IO制御部211は、CM2のメモリ22にドライブ3に書き込んでいないデータがあるかを判定する(ステップS4)。
【0140】
ドライブ3に書き込んでいないデータがない場合には(ステップS4のNoルート参照)、ステップS4における処理が繰り返し実行される。
【0141】
一方、ドライブ3に書き込んでいないデータがある場合には(ステップS4のYesルート参照)、第一IO制御部211は、ドライブ3にWrite要求データをWriteする(ステップS5)。
【0142】
第一IO制御部211は、CC異常が検出されたかを判定する(ステップS6)。
【0143】
CC異常が検出されていない場合には(ステップS6のNoルート参照)、ライトバック動作、且つ、書き込み前にRAIDグループからのデータ読み込みを実施しない制御は終了する。
【0144】
一方、CC異常が検出された場合には(ステップS6のYesルート参照)、第一IO制御部211は、CC異常検出が副担当CM2bで実施されたかを判定する(ステップS7)。
【0145】
CC異常検出が副担当CM2bで実施されていない場合には(ステップS7のNoルート参照)、第一IO制御部211は、副担当CM2bにWrite要求を発行する(ステップS8)。そして、処理はステップS5へ戻る。
【0146】
一方、CC異常検出が副担当CM2bで実施されている場合には(ステップS7のYesルート参照)、Write動作モード判定部213は、Writeの動作モード判定を実行する(ステップS9)。そして、ライトバック動作、且つ、書き込み前にRAIDグループからのデータ読み込みを実施しない制御は終了する。なお、ステップS9における処理の詳細は、
図18を用いて後述する。
【0147】
次に、実施形態におけるライトスルー動作、且つ、書き込み前にRAIDグループからのデータ読み込みを実施する制御を、
図17に示すフローチャート(ステップS11~S27)を用いて説明する。
【0148】
第二IO制御部212は、サーバ1からWrite要求を受領する(ステップS11)。
【0149】
第二IO制御部212は、Writeデータを512バイトごとに8バイトのCCを付与して、主担当CM2a及び副担当CM2bのメモリ22に配置する(ステップS12)。
【0150】
第二IO制御部212は、ドライブ3にWrite要求データをWriteする(ステップS13)。
【0151】
第二IO制御部212は、CC異常が検出されたかを判定する(ステップS14)。
【0152】
CC異常が検出されていない場合には(ステップS14のNoルート参照)、処理はステップS17へ進む。
【0153】
一方、CC異常が検出された場合には(ステップS14のYesルート参照)、第二IO制御部212は、副担当CM2bにRead及びWrite要求を発行する(ステップS15)。
【0154】
第二IO制御部212は、副担当CM2bによってドライブ3からWrite要求範囲のデータをReadする(ステップS16)。
【0155】
第二IO制御部212は、ドライブ3にWrite要求データをライトする(ステップS17)。
【0156】
第二IO制御部212は、CC異常が検出されたかを判定する(ステップS18)。
【0157】
CC異常が検出されていない場合には(ステップS18のNoルート参照)、処理はステップS25へ進む。
【0158】
一方、CC異常が検出された場合には(ステップS18のYesルート参照)、第二IO制御部212は、CC異常検出が副担当CM2bで実施されたかを判定する(ステップS19)。
【0159】
CC異常検出が副担当CM2bで実施されていない場合には(ステップS19のNoルート参照)、第二IO制御部212は、副担当CM2bにWrite要求を発行する(ステップS20)。そして、処理はステップS17へ戻る。
【0160】
一方、CC異常検出が副担当CM2bで実施されている場合には(ステップS19のYesルート参照)、第二IO制御部212は、Readデータが有るかを判定する(ステップS21)。
【0161】
Readデータが無い場合には(ステップS21のNoルート参照)、処理はステップS24へ進む。
【0162】
一方、Readデータが有る場合には(ステップS21のYesルート参照)、第二IO制御部212は、Readデータをドライブ3に書き戻す(ステップS22)。
【0163】
第二IO制御部212は、Readデータを破棄する(ステップS23)。
【0164】
第二IO制御部212は、サーバ1に未完了応答を発行する(ステップS24)。そして、データ復旧処理は終了する。
【0165】
ステップS18において、CC異常が検出されていない場合には(ステップS18のNoルート参照)、第二IO制御部212は、Readデータを破棄する(ステップS25)。
【0166】
第二IO制御部212は、サーバ1に未完了応答を発行する(ステップS26)。
【0167】
Write動作モード判定部213は、は、Write動作モード判定を行う(ステップS27)。そして、データ復旧処理は終了する。なお、ステップS27における処理の詳細は、
図18を用いて後述する。
【0168】
次に、
図16及び
図17に示したWriteの動作モード判定処理を、
図18に示すフローチャート(ステップS71~S77)を用いて説明する。
【0169】
Write動作モード判定部213は、主担当CM2a且つ副担当CM2bにおいて、ドライブ3へのWriteでCC異常検出があるかを判定する(ステップS71)。
【0170】
ドライブ3へのWriteでCC異常検出がある場合には(ステップS71のYesルート参照)、Write動作モード判定部213は、Writeをライトバック動作で実行中であるかを判定する(ステップS72)。
【0171】
Writeをライトバック動作で実行中でない場合には(ステップS72のNoルート参照)、Writeの動作モード判定処理は終了する。
【0172】
一方、Writeをライトバック動作で実行中である場合には(ステップS72のYesルート参照)、Write動作モード判定部213は、以降に受け付けるWrite要求をライトスルー動作にする(ステップS73)。
【0173】
Write動作モード判定部213は、ドライブ3へのWrite前に、Writeと同じ領域のReadを実施する動作にする(ステップS74)。そして、Writeの動作モード判定処理は終了する。
【0174】
ステップS71において、ドライブ3へのWriteでCC異常検出がない場合には(ステップS71のNoルート参照)、Write動作モード判定部213は、Writeをライトスルー動作で実行中であるかを判定する(ステップS75)。
【0175】
Writeをライトスルー動作で実行中でない場合には(ステップS75のNoルート参照)、Writeの動作モード判定処理は終了する。
【0176】
一方、Writeをライトスルー動作で実行中である場合には(ステップS75のYesルート参照)、Write動作モード判定部213は、以降に受け付けるWrite要求をライトバック動作にする(ステップS76)。
【0177】
Write動作モード判定部213は、ドライブ3へのWrite前に、Write
と同じ領域のReadを実施する動作をWriteのみの通常動作に戻す(ステップS77)。そして、Writeの動作モード判定処理は終了する。
【0178】
〔C〕効果
上述した実施形態におけるストレージ装置100,ストレージ制御プログラム及びストレージ制御方法によれば、例えば以下の作用効果を奏することができる。
【0179】
第二IO制御部212は、サーバ1からの書き込み要求に係るデータにチェックコードを付加する。第二IO制御部212は、複数のCM2a,2bからドライブ3へのデータの書き込みでチェックコードの異常を検出した場合に、データの書き込み動作を、後続データの書き込みの前にドライブ3から後続データの書き込み範囲のデータを読み込む動作に設定する。第二IO制御部212は、複数のCM2a,2bからドライブ3への書き込みでチェックコードの異常を更に検出した場合に、読み込んだデータをドライブ3に書き戻す。
【0180】
これにより、ストレージ装置100において、データロストを防止し、復旧データを保存することができる。具体的には、複数のCM2で、CC異常が発生した場合でもデータロストの拡大を防止するとともに、該当データを更新前状態に復旧することが可能となる。
【0181】
第二IO制御部212は、CM2a,2bにおいてドライブ3からCM2a,2bへのデータの読み込みでチェックコードの異常を検出した場合に、副担当CM2bによって読み込みの範囲へのデータの書き込みを行う。
【0182】
これにより、主担当CM2a及び副担当CM2bにおいてReadのCC異常が検出された場合においても、ドライブ3へのデータの書き込みを正常に行うことができる。
【0183】
第二IO制御部212は、主担当CM2aにおいてドライブ3から主担当CM2aへのデータの読み込みでチェックコードの異常を検出し、且つ、副担当CM2bにおいて副担当CM2bからドライブ3へのデータの書き込みでチェックコードの異常を検出した場合に、副担当CM2bによって書き込みの範囲へのデータの書き戻しを行う。
【0184】
これにより、主担当CM2aにおいてReadのCC異常が検出され、且つ、副担当CM2bにおいてWriteのCC異常が検出された場合に、ドライブ3へのデータの書き戻しを正常に行うことができる。
【0185】
Write動作モード判定部213は、CM2a,2bからドライブ3へのデータの書き込みでチェックコードの異常を検出しない場合には、データの書き込み動作を、ライトバック動作に設定すると共に、後続データの書き込みの前にドライブ3から後続データの書き込み範囲のデータを読み込まない動作に設定する。
【0186】
これにより、CC異常が検出されない場合に、効率的なWrite処理を実行できる。
【0187】
〔D〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0188】
〔E〕付記
以上の実施形態に関し、更に以下の付記を開示する。
【0189】
(付記1)
複数のコントローラモジュールと記憶装置とを有するストレージ装置であって、
前記複数のコントローラモジュールのうちの一のコントローラモジュールが備えるプロセッサは、
上位装置からの書き込み要求に係るデータにチェックコードを付加し、
前記複数のコントローラモジュールから前記記憶装置へのデータの書き込みで前記チェックコードの異常を検出した場合に、データの書き込み動作を、後続データの書き込みの前に前記記憶装置から前記後続データの書き込み範囲のデータを読み込む動作に設定し、
前記後続データの書き込み範囲のデータを読み込み、
前記複数のコントローラモジュールから前記記憶装置への書き込みで前記チェックコードの異常を更に検出した場合に、前記読み込んだデータを前記記憶装置に書き戻す、
ストレージ装置。
【0190】
(付記2)
前記複数のコントローラモジュールは、前記上位装置からの書き込み要求を受け付ける第1のコントローラモジュールと他の第2のコントローラモジュールとを含み、
前記プロセッサは、前記第1及び第2のコントローラモジュールにおいて前記記憶装置から前記第1及び第2のコントローラモジュールへのデータの読み込みで前記チェックコードの異常を検出した場合に、前記第2のコントローラモジュールによって前記読み込みの範囲へのデータの書き込みを行う、
付記1に記載のストレージ装置。
【0191】
(付記3)
前記複数のコントローラモジュールは、前記上位装置からの書き込み要求を受け付ける第1のコントローラモジュールと他の第2のコントローラモジュールとを含み、
前記プロセッサは、前記第1のコントローラモジュールにおいて前記記憶装置から前記第1のコントローラモジュールへのデータの読み込みで前記チェックコードの異常を検出し、且つ、前記第2のコントローラモジュールにおいて前記第2のコントローラモジュールから前記記憶装置へのデータの書き込みで前記チェックコードの異常を検出した場合に、前記第2のコントローラモジュールによって前記書き込みの範囲へのデータの書き戻しを行う、
付記1又は2に記載のストレージ装置。
【0192】
(付記4)
前記プロセッサは、
前記複数のコントローラモジュールから前記記憶装置へのデータの書き込みで前記チェックコードの異常を検出しない場合には、データの書き込み動作を、ライトバック動作に設定すると共に、後続データの書き込みの前に前記記憶装置から前記後続データの書き込み範囲のデータを読み込まない動作に設定する、
付記1又は2に記載のストレージ装置。
【0193】
(付記5)
前記プロセッサは、
前記チェックコードの異常を検出した場合に、前記データの書き込み動作をライトスルー動作に設定する、
付記1又は2に記載のストレージ装置。
【0194】
(付記6)
複数のコントローラモジュールのうちの一のコントローラモジュールが備えるコンピュータに、
上位装置からの書き込み要求に係るデータにチェックコードを付加し、
前記複数のコントローラモジュールから記憶装置へのデータの書き込みで前記チェックコードの異常を検出した場合に、データの書き込み動作を、後続データの書き込みの前に前記記憶装置から前記後続データの書き込み範囲のデータを読み込む動作に設定し、
前記後続データの書き込み範囲のデータを読み込み、
前記複数のコントローラモジュールから前記記憶装置への書き込みで前記チェックコードの異常を更に検出した場合に、前記読み込んだデータを前記記憶装置に書き戻す、
処理を実行させる、ストレージ制御プログラム。
【0195】
(付記7)
前記複数のコントローラモジュールは、前記上位装置からの書き込み要求を受け付ける第1のコントローラモジュールと他の第2のコントローラモジュールとを含み、
前記第1及び第2のコントローラモジュールにおいて前記記憶装置から前記第1及び第2のコントローラモジュールへのデータの読み込みで前記チェックコードの異常を検出した場合に、前記第2のコントローラモジュールによって前記読み込みの範囲へのデータの書き込みを行う、
処理を前記コンピュータに実行させる、付記6に記載のストレージ制御プログラム。
【0196】
(付記8)
前記複数のコントローラモジュールは、前記上位装置からの書き込み要求を受け付ける第1のコントローラモジュールと他の第2のコントローラモジュールとを含み、
前記第1のコントローラモジュールにおいて前記記憶装置から前記第1のコントローラモジュールへのデータの読み込みで前記チェックコードの異常を検出し、且つ、前記第2のコントローラモジュールにおいて前記第2のコントローラモジュールから記憶装置へのデータの書き込みで前記チェックコードの異常を検出した場合に、前記第2のコントローラモジュールによって前記書き込みの範囲へのデータの書き戻しを行う、
処理を前記コンピュータに実行させる、付記6又は7に記載のストレージ制御プログラム。
【0197】
(付記9)
前記複数のコントローラモジュールから記憶装置へのデータの書き込みで前記チェックコードの異常を検出しない場合には、データの書き込み動作を、ライトバック動作に設定すると共に、後続データの書き込みの前に前記記憶装置から前記後続データの書き込み範囲のデータを読み込まない動作に設定する、
処理を前記コンピュータに実行させる、付記6又は7に記載のストレージ制御プログラム。
【0198】
(付記10)
前記チェックコードの異常を検出した場合に、前記データの書き込み動作をライトスルー動作に設定する、
処理を前記コンピュータに実行させる、付記6又は7に記載のストレージ制御プログラム。
【0199】
(付記11)
複数のコントローラモジュールのうちの一のコントローラモジュールが備えるコンピュータが、
上位装置からの書き込み要求に係るデータにチェックコードを付加し、
前記複数のコントローラモジュールから記憶装置へのデータの書き込みで前記チェックコードの異常を検出した場合に、データの書き込み動作を、後続データの書き込みの前に前記記憶装置から前記後続データの書き込み範囲のデータを読み込む動作に設定し、
前記後続データの書き込み範囲のデータを読み込み、
前記複数のコントローラモジュールから前記記憶装置への書き込みで前記チェックコードの異常を更に検出した場合に、前記読み込んだデータを前記記憶装置に書き戻す、
処理をコンピュータが実行する、ストレージ制御方法。
【0200】
(付記12)
前記複数のコントローラモジュールは、前記上位装置からの書き込み要求を受け付ける第1のコントローラモジュールと他の第2のコントローラモジュールとを含み、
前記第1及び第2のコントローラモジュールにおいて前記記憶装置から前記第1及び第2のコントローラモジュールへのデータの読み込みで前記チェックコードの異常を検出した場合に、前記第2のコントローラモジュールによって前記読み込みの範囲へのデータの書き込みを行う、
処理を前記コンピュータが実行する、付記11に記載のストレージ制御方法。
【0201】
(付記13)
前記複数のコントローラモジュールは、前記上位装置からの書き込み要求を受け付ける第1のコントローラモジュールと他の第2のコントローラモジュールとを含み、
前記第1のコントローラモジュールにおいて前記記憶装置から前記第1のコントローラモジュールへのデータの読み込みで前記チェックコードの異常を検出し、且つ、前記第2のコントローラモジュールにおいて前記第2のコントローラモジュールから記憶装置へのデータの書き込みで前記チェックコードの異常を検出した場合に、前記第2のコントローラモジュールによって前記書き込みの範囲へのデータの書き戻しを行う、
処理を前記コンピュータが実行する、付記11又は12に記載のストレージ制御方法。
【0202】
(付記14)
前記複数のコントローラモジュールから記憶装置へのデータの書き込みで前記チェックコードの異常を検出しない場合には、データの書き込み動作を、ライトバック動作に設定すると共に、後続データの書き込みの前に前記記憶装置から前記後続データの書き込み範囲のデータを読み込まない動作に設定する、
処理を前記コンピュータが実行する、付記11又は12に記載のストレージ制御方法。
【0203】
(付記15)
前記チェックコードの異常を検出した場合に、前記データの書き込み動作をライトスルー動作に設定する、
処理を前記コンピュータが実行する、付記11又は12に記載のストレージ制御方法。
【符号の説明】
【0204】
1,6 :サーバ
2,7 :CM
3,8 :ドライブ
21,71:CPU
22,72:メモリ
100,600:ストレージ装置
211 :第一IO制御部
212 :第二IO制御部
213 :Write動作モード判定部
231 :CC異常チェック機構