JP6524889B2 - ストレージシステムおよび監視装置 - Google Patents

ストレージシステムおよび監視装置 Download PDF

Info

Publication number
JP6524889B2
JP6524889B2 JP2015217192A JP2015217192A JP6524889B2 JP 6524889 B2 JP6524889 B2 JP 6524889B2 JP 2015217192 A JP2015217192 A JP 2015217192A JP 2015217192 A JP2015217192 A JP 2015217192A JP 6524889 B2 JP6524889 B2 JP 6524889B2
Authority
JP
Japan
Prior art keywords
cache
control unit
memory
mirror
control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015217192A
Other languages
English (en)
Other versions
JP2017091025A (ja
Inventor
康寛 小笠原
康寛 小笠原
英俊 西
英俊 西
秋山 茂
茂 秋山
松田 司
司 松田
達也 柳澤
達也 柳澤
秀史 小林
秀史 小林
悟史 矢澤
悟史 矢澤
惇 猪頭
惇 猪頭
渉 飯塚
渉 飯塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015217192A priority Critical patent/JP6524889B2/ja
Priority to US15/335,740 priority patent/US9916242B2/en
Publication of JP2017091025A publication Critical patent/JP2017091025A/ja
Application granted granted Critical
Publication of JP6524889B2 publication Critical patent/JP6524889B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/263Arrangements for using multiple switchable power supplies, e.g. battery and AC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3212Monitoring battery levels, e.g. power saving mode being initiated when battery voltage goes below a certain level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/285Redundant cache memory
    • G06F2212/286Mirrored cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Power Engineering (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明はストレージシステムおよび監視装置に関する。
キャッシュを用いたデータの書き込み方式として、ライトバック方式が知られている。例えば、制御装置は、記憶装置に対する書き込みをライトバック方式で制御する際、ホストから送信されたライトデータをキャッシュに書き込んだ時点でホストに応答する。そして、制御装置は、その後の処理の空き時間など、キャッシュへの書き込みとは非同期のタイミングでキャッシュのライトデータを記憶装置に書き込む。
また、キャッシュを用いたデータの他の書き込み方式として、ライトスルー方式が知られている。例えば、制御装置は、記憶装置に対する書き込みをライトスルー方式で制御する際、ホストから送信されたライトデータをキャッシュと記憶装置とに書き込んだ後、ホストに応答する。このように、ライトスルー方式では、ホストに対する応答までに記憶装置に対する書き込みが発生するため、ライトバック方式と比べるとアクセス処理の性能が悪くなる。
ここで、キャッシュに関する技術の一例として、次のような技術が提案されている。この技術では、第1のキャッシュメモリに格納されているデータがミラーリングされている第2のキャッシュメモリに障害が発生した場合、当該データは、障害が発生していない第3のキャッシュメモリにミラーリングされる。
また、キャッシュに関する他の技術の一例として、複数の制御装置それぞれがローカルキャッシュとミラーキャッシュを有し、ある制御装置のローカルキャッシュが隣接する制御装置のミラーキャッシュと二重化されて、キャッシュがサイクリックに二重化されたストレージシステムが提案されている。
特開2005−43930号公報 国際公開第2004/114115号
上記のようにキャッシュがサイクリックに二重化されたストレージシステムには、停電時に各制御装置のキャッシュに電力を供給する複数のバッテリが備えられている場合がある。このようなストレージシステムでは、バッテリに異常が発生すると、停電時にキャッシュのデータを消失する危険度が高くなる。そこで、例えば、ローカルキャッシュのデータを保護するための次のような動作を行うことが考えられる。異常が発生したバッテリから電力の供給を受ける対象であった制御装置は、データ書き込みをライトバック方式からライトスルー方式に切り替える。また、キャッシュの二重化が維持できなくなる可能性が高くなるため、当該制御装置のミラーキャッシュにキャッシュのデータをミラーリングしている制御装置も、データ書き込みをライトバック方式からライトスルー方式に切り替える。
しかし、この方法では、複数の制御装置がデータ書き込みをライトスルー方式で制御するため、ストレージシステムにおけるアクセス処理の性能が低下するという問題がある。
1つの側面では、本発明は、アクセス処理の性能の低下を防ぐことができるストレージシステムおよび監視装置を提供することを目的とする。
1つの態様では、ストレージシステムが提供される。このストレージシステムは、第1の制御装置、第2の制御装置、第3の制御装置、電源、第1のバッテリ、第2のバッテリ、第3のバッテリ、監視装置を有する。第1の制御装置は、第1のキャッシュが割り当てられた第1のメモリと、第1の記憶装置への書き込みを第1のキャッシュを用いてライトバック方式で制御する第1の制御部と、を有する。第2の制御装置は、第2のキャッシュと、第1のキャッシュのミラーデータが格納される第1のミラーキャッシュとが割り当てられた第2のメモリと、第2の記憶装置への書き込みを第2のキャッシュを用いてライトバック方式で制御する第2の制御部と、を有する。第3の制御装置は、第2のキャッシュのミラーデータが格納される第2のミラーキャッシュが割り当てられた第3のメモリを有する。電源は、第1のメモリ、第2のメモリおよび第3のメモリに電力を供給する。第1のバッテリは、電源が停電した場合に第1のメモリに電力を供給する。第2のバッテリは、電源が停電した場合に第2のメモリに電力を供給する。第3のバッテリは、電源が停電した場合に第3のメモリに電力を供給する。監視装置は、第2のバッテリの異常が発生した場合に、第2のキャッシュの割り当て先を第1のメモリに変更し、第1のミラーキャッシュの割り当て先を第3のメモリに変更し、第1の制御装置に対して、第1の記憶装置への書き込みを第1のキャッシュを用いてライトバック方式で制御するとともに、第2の記憶装置への書き込みを、第2のキャッシュを用いてライトバック方式で制御するように指示する。
また、1つの態様では、ストレージシステムが提供される。このストレージシステムは、複数の記憶装置、複数の制御装置、電源、複数のバッテリを有する。複数の制御装置は、複数の制御装置のそれぞれは、キャッシュおよびミラーキャッシュが割り当てられたメモリと、複数の記憶装置のうちキャッシュに対応づけられた所定の記憶装置に対する書き込みを、キャッシュを用いてライトバック方式で制御し、複数の制御装置が循環的に配置されるように定義された複数の制御装置の配列において第1方向側に隣接する他の制御装置のメモリに割り当てられたミラーキャッシュに、キャッシュのデータをミラーリングする制御部と、を有する。電源は、複数の制御装置がそれぞれ有するメモリに電力を供給する。複数のバッテリは、複数の制御装置のうち、配列において少なくとも隣接する2つの制御装置に対して異なるバッテリが対応づけられるように設けられた複数のバッテリであって、複数のバッテリのそれぞれは、電源が停電したとき、対応するメモリに電力を供給する。複数の制御装置のうち第1の制御装置の制御部は、複数のバッテリのうち一のバッテリの異常が発生したとき、複数のバッテリのうち異常が発生したバッテリの台数を判定し、台数が所定の閾値より小さい場合には、複数の制御装置のうち、一のバッテリに対応づけられた第2の制御装置のメモリに割り当てられている第1のキャッシュの割り当て先を、複数の制御装置のうち、配列において第2の制御装置の第2方向側に隣接する第3の制御装置のメモリに変更し、第2の制御装置のメモリに割り当てられている第1のミラーキャッシュの割り当て先を、複数の制御装置のうち、配列において第2の制御装置の第1方向側に隣接する第4の制御装置のメモリに変更し、第3の制御装置に対して、第1のミラーキャッシュにミラーデータが格納される第2のキャッシュに対応づけられた第1の記憶装置への書き込みを、第2のキャッシュを用いてライトバック方式で制御するとともに、第1のキャッシュに対応づけられた第2の記憶装置への書き込みを、第1のキャッシュを用いてライトバック方式で制御するように指示する。
監視装置は、上記の監視装置と同様の処理をする。
1つの側面では、アクセス処理の性能の低下を防ぐことができる。
第1の実施の形態のストレージシステムを示す図である。 第2の実施の形態のストレージシステムを示す図である。 CMのハードウェア例を示す図である。 キャッシュ領域とそのミラーリング先との関係を示す図である。 CMの機能例を示す図である。 ボリューム管理テーブルの例を示す図である。 構成管理テーブルの例を示す図である。 状態2におけるローカルキャッシュおよびミラーキャッシュの割り当て状態を示す図である。 状態1から状態2に遷移する際のテーブルの変化を示す図である。 状態1から状態2に遷移する際の処理例(その1)を示すシーケンス図である。 状態1から状態2に遷移する際の処理例(その2)を示すシーケンス図である。 状態3におけるローカルキャッシュおよびミラーキャッシュの割り当て状態を示す図である。 状態2から状態3に遷移する際の処理例(その1)を示すシーケンス図である。 状態2から状態3に遷移する際の処理例(その2)を示すシーケンス図である。 状態2から状態3に遷移する際の処理例(その3)を示すシーケンス図である。 状態2から状態3に遷移する際のテーブルの変化を示す図である。 CE内マスタによるバッテリ状態の監視処理例を示すフローチャートである。 バッテリ異常通知を受信する場合のマスタCMの処理例を示すフローチャートである。 運用切り替え処理の例を示すフローチャートである。 割り当て変更処理時における各CMの処理の例を示すフローチャートである。 運用切り替え処理時における各CMの処理例(その1)を示すフローチャートである。 運用切り替え処理時における各CMの処理例(その2)を示すフローチャートである。 異常バッテリの数が閾値未満になった場合のマスタCMの処理例を示すフローチャートである。 正常なバッテリがさらに増えた場合のマスタCMの処理例を示すフローチャートである。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージシステムを示す図である。図1に示すストレージシステムは、制御装置10,20,30、監視装置40、電源50および記憶装置61,62を有する。制御装置10,20,30および監視装置40は、例えばネットワークやバスなどを介して互いに接続されている。
制御装置10は、メモリ11、制御部12およびバッテリ13を有する。メモリ11は、例えば、RAM(Random Access Memory)などの揮発性の記憶装置である。制御部12は、例えば、プロセッサである。メモリ11には、キャッシュ11aが割り当てられている。制御部12は、記憶装置61への書き込みを、キャッシュ11aを用いてライトバック方式で制御する。なお、記憶装置61は、例えば、HDD(Hard Disk Drive)などの不揮発性の記憶装置である。バッテリ13は、電源50からメモリ11への電力供給が停止した場合に、メモリ11に電力を供給する。
制御装置20は、メモリ21、制御部22およびバッテリ23を有する。メモリ21は、例えば、RAMなどの揮発性の記憶装置である。制御部22は、例えば、プロセッサである。メモリ21には、キャッシュ21aと、キャッシュ11aのミラーデータが格納されるミラーキャッシュ21bとが割り当てられている。制御部22は、記憶装置62への書き込みを、キャッシュ21aを用いてライトバック方式で制御する。バッテリ23は、電源50からメモリ21への電力供給が停止した場合に、メモリ21に電力を供給する。
制御装置30は、メモリ31およびバッテリ33を有する。メモリ31は、例えば、RAMなどの揮発性の記憶装置である。メモリ31には、キャッシュ21aのミラーデータが格納されるミラーキャッシュ31bが割り当てられている。バッテリ33は、電源50からメモリ31への電力供給が停止した場合に、メモリ31に電力を供給する。
電源50は、メモリ11,21,31に対して電力を供給する。例えば、電源50は、外部から商用電源の供給を受けて、メモリ11,21,31に電力を供給する。
なお、図1の例では、バッテリ13は制御装置10内に搭載されているが、バッテリ13は制御装置10の外部に配置されてもよい。同様に、バッテリ23は、制御装置20の外部に配置されてもよく、バッテリ33は、制御装置30の外部に配置されてもよい。また、電源50は、メモリ11,21,31に対してそれぞれ個別に設けられていてもよい。
監視装置40は、制御装置10,20,30の動作を監視し、その動作状態に応じた処理を実行する装置である。監視装置40は、例えば、バッテリ23の異常が発生したか否かを監視する。
監視装置40は、バッテリ23の異常が発生した場合(ステップS1)、キャッシュ21aの割り当て先を、メモリ21からメモリ11に変更し、ミラーキャッシュ21bの割り当て先を、メモリ21からメモリ31に変更する(ステップS2)。監視装置40は、制御装置10に対して、記憶装置61への書き込みを、キャッシュ11aを用いてライトバック方式で制御するように指示する。これとともに、監視装置40は、記憶装置62への書き込みを、メモリ11に割り当てられたキャッシュ21aを用いてライトバック方式で制御するように指示する(ステップS3)。
ここで、バッテリ23の異常が発生した状態の制御装置20では、もしその後に電源50が停電すると、メモリ21内のデータが失われる。このため、メモリ21にキャッシュ21aを割り当てたままにしておくと、キャッシュ21aのデータが失われる危険性が高くなる。
このようにデータが失われる事態を回避する他の方法として、キャッシュ21aの割り当て先を変更せずに、制御部22によるキャッシュ21aを用いた記憶装置62への書き込みをライトスルー方式で制御するという方法が考えられる。この方法では、電源50が停電した場合でもキャッシュ21aのデータが失われないが、その反面、キャッシュ21aを用いた記憶装置62へのアクセス性能が低下する。さらに、ミラーキャッシュ21bも電源50の停電時に失われる状態になるので、制御部12によるキャッシュ11aを用いた記憶装置61への書き込みも、ライトスルー方式で制御する方が望ましい。しかし、この場合には、制御部12によるキャッシュ11aを用いた記憶装置61へのアクセス性能も低下してしまう。すなわち、この方法では、複数の制御装置でライトスルー方式の書き込み制御が行われ、複数の制御装置でのアクセス性能が低下してしまう。
これに対して、制御装置10においては、バッテリ13の異常が発生していないので、電源50が停電した場合でもメモリ11内のデータは維持される。したがって、上記のようにキャッシュ21aの割り当て先がメモリ11に変更されることで、キャッシュ21aのデータが失われる可能性を低減できる。また、ミラーキャッシュ21bについても同様に、割り当て先がメモリ31に変更されることで、ミラーキャッシュ21bのデータが失われる可能性を低減できる。
このため、上記の割り当て変更が行われることにより、その後に電源50の停電が発生した場合でも、キャッシュ11aとミラーキャッシュ21bの両方のデータは失われずに維持され、キャッシュ21aとミラーキャッシュ31bの両方のデータも失われずに維持される。したがって、制御部12は、キャッシュ11aを用いた記憶装置61への書き込みと、キャッシュ21aを用いた記憶装置62への書き込みの両方を、ライトスルー方式でなく、ライトバック方式で制御することが可能となる。これにより、これら両方の書き込み性能の低下を抑制でき、その結果、ストレージシステム全体としてのアクセス性能の低下を抑制できる。
[第2の実施の形態]
図2は、第2の実施の形態のストレージシステムを示す図である。図2に示すストレージシステムは、CE(Controller Enclosure)100,200,300,400、DE(Device Enclosure)500,600,700,800、ホスト装置900およびスイッチ1000を含む。
CE100は、CM(Controller Module)110,120を有する。CE200は、CM210,220を有する。CE300は、CM310,320を有する。CE400は、CM410,420を有する。CM110,120,210,220,310,320,410,420は、スイッチ1000を介して互いに接続されている。例えば、CM110,120,210,220,310,320,410,420とスイッチ1000とは、シリアルケーブルを介して接続される。
また、CM110,120,210,220,310,320,410,420には、ホスト装置900が接続されている。CM110,120,210,220,310,320,410,420とホスト装置900とは、例えば、ファイバチャネル(FC:Fibre Channel)やiSCSI(Internet Small Computer System Interface)などを用いたSAN(Storage Area Network)を介して接続される。なお、図2では例として1台のホスト装置900がCM110,120,210,220,310,320,410,420に接続されているが、例えば、複数台のホスト装置のそれぞれが1台以上のCMに接続されてもよい。
DE500,600,700,800には、それぞれ複数台の記憶装置が搭載されている。本実施の形態では、DE500,600,700,800は、記憶装置としてHDDを備えたディスクアレイ装置である。なお、DE500,600,700,800に搭載される記憶装置は、SSD(Solid State Drive)などの他の種類の記憶装置であってもよい。
CM110,120には、DE500が接続されている。CM110,120は、ホスト装置900または他のCMからの要求に応じて、DE500に搭載されたHDDに対するアクセスを制御する。CM210,220には、DE600が接続されている。CM210,220は、ホスト装置900または他のCMからの要求に応じて、DE600に搭載されたHDDに対するアクセスを制御する。CM310,320には、DE700が接続されている。CM310,320は、ホスト装置900または他のCMからの要求に応じて、DE700に搭載されたHDDに対するアクセスを制御する。CM410,420は、ホスト装置900または他のCMからの要求に応じて、DE800に搭載されたHDDに対するアクセスを制御する。
なお、CE100とDE500とは、例えば、1つの筐体に搭載されるストレージ装置として実現される。CE200とDE600、CE300とDE700、CE400とDE800についても同様である。図2のストレージシステムは、このようなストレージ装置をスケールアウトした構成となっている。
また、ストレージシステムに含まれるCEの数は4台に限定されるものではなく、各CEに含まれるCMの数も2台に限定されるものではない。例えば、ストレージシステムには、それぞれ2台のCMを備えるCEが12台含まれてもよい。
図3は、CMのハードウェア例を示す図である。CM110は、プロセッサ110a、RAM110b、SSD110c、CA(Channel Adapter)110d、CMインタフェース110eおよびDI(Device Interface)110fを有する。
プロセッサ110aは、CM110の情報処理を制御する。プロセッサ110aは、複数のプロセッシング要素を含むマルチプロセッサであってもよい。
RAM110bは、CM110の主記憶装置である。RAM110bは、プロセッサ110aに実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM110bは、プロセッサ110aによる処理に用いる各種データを記憶する。
SSD110cは、CM110の補助記憶装置である。SSD110cは、不揮発性の半導体メモリである。SSD110cには、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、CM110は、補助記憶装置として、SSD110cの代わりにHDDを備えていてもよい。
CA110dは、ホスト装置900と通信するためのインタフェースである。CMインタフェース110eは、スイッチ1000を介して、他のCMと通信するためのインタフェースである。DI110fは、DE500と通信するためのインタフェースである。
なお、CM120,210,220,310,320,410,420もCM110と同様のハードウェアにより実現できる。
また、CE100は、PSU(Power Supply Unit)130およびバッテリ140を有する。PSU130は、外部から電力の供給を受けて、CE100全体に電力を供給する。バッテリ140は、PSU130の停電時にRAM110bおよびCM120が有するRAMに電力を供給する。なお、PSUおよびバッテリは、各CEに個別に設けられている。
図4は、キャッシュ領域とそのミラーリング先との関係を示す図である。本実施の形態のストレージシステムでは、CMとホスト装置900との間のデータの読み書きはLU(Logical Unit)と呼ばれる論理記憶領域を単位として行われる。ストレージシステム内には複数のLUが設定され、各LUにはそのLUに対するホスト装置900からのアクセスを制御するCMが割り当てられる。
あるLUのアクセス制御担当として割り当てられたCMは、そのLUに対するアクセスを、自装置内のRAMに確保したキャッシュ領域を用いて制御する。以下、LUに対するアクセス制御の際に用いられるキャッシュ領域を、ローカルキャッシュと呼ぶ。RAMには、ローカルキャッシュがLU毎に確保される。例えば、CMが2つのLUに対するアクセス制御を担当する場合、そのCMのRAMには2つのローカルキャッシュが確保される。
以下の説明では、CMのRAMにローカルキャッシュの領域が確保されることを、「CM(またはそのRAM)にローカルキャッシュが割り当てられる」と記載する場合がある。
図4では、説明を簡単にするために、CM110,120,210,220,310,320,410,420はそれぞれ、ホスト装置900からのアクセス要求に応じて、1つのLUに対するアクセスを制御するものとする。この場合、CM110,120,210,220,310,320,410,420には、それぞれ1つのローカルキャッシュが割り当てられる。
本実施の形態のストレージシステムでは、LUはLUN(Logical Unit Number)によって識別される。以下、識別番号が“x”のLUを、“LUN#x”と記載する。本実施の形態では例として、CM110,210,310,410,120,220,320,420は、それぞれLUN#1,LUN#2,LUN#3,LUN#4,LUN#5,LUN#6,LUN#7,LUN#8に対するアクセスを制御する。
この場合、図4に示すように、CM110のRAM110bには、LUN#1に対応するローカルキャッシュLC1が割り当てられる。CM210が有するRAMには、LUN#2に対応するローカルキャッシュLC2が割り当てられる。CM310が有するRAMには、LUN#3に対応するローカルキャッシュLC3が割り当てられる。CM410が有するRAMには、LUN#4に対応するローカルキャッシュLC4が割り当てられる。CM120が有するRAMには、LUN#5に対応するローカルキャッシュLC5が割り当てられる。CM220が有するRAMには、LUN#6に対応するローカルキャッシュLC6が割り当てられる。CM320が有するRAMには、LUN#7に対応するローカルキャッシュLC7が割り当てられる。CM420が有するRAMには、LUN#8に対応するローカルキャッシュLC8が割り当てられる。
また、各CMのRAMには、ミラーキャッシュが割り当てられる。ミラーキャッシュは、ローカルキャッシュに格納されたデータのミラーデータが格納される領域である。以下で説明するように、あるCMのRAMに割り当てられたローカルキャッシュに対応するミラーデータは、必ず他のCMのRAMに割り当てられる。これにより、CMの故障時にキャッシュされていたデータを消失する危険性が低減される。
ここで、ストレージシステムには、CM110,120,210,220,310,320,410,420がサイクリックに配列されるように、CM110,120,210,220,310,320,410,420の相互関係が設定されている。図4では、CM110からCM210、CM210からCM310、CM310からCM410、CM410からCM120、CM120からCM220、CM220からCM320、CM320からCM420、CM420からCM110の順に配列されるように設定されている。
そして、あるCMは、ローカルキャッシュに格納されたデータを、上記の配列において次に位置するCMのミラーキャッシュにミラーリングする。換言すると、あるCMのRAMに割り当てられたローカルキャッシュのデータは、次に位置するCMのRAMに割り当てられる。
具体的には、図4に示すように、CM210が有するRAMには、LUN#1に対応するミラーキャッシュMC1が割り当てられる。そして、CM110は、LUN#1に対応するローカルキャッシュLC1のデータを、ミラーキャッシュMC1にミラーリングする。CM310が有するRAMには、LUN#2に対応するミラーキャッシュMC2が割り当てられる。そして、CM210は、LUN#2に対応するローカルキャッシュLC2のデータを、ミラーキャッシュMC2にミラーリングする。
CM410が有するRAMには、LUN#3に対応するミラーキャッシュMC3が割り当てられる。そして、CM310は、LUN#3に対応するローカルキャッシュLC3のデータを、ミラーキャッシュMC3にミラーリングする。CM120が有するRAMには、LUN#4に対応するミラーキャッシュMC4が割り当てられる。そして、CM410は、LUN#4に対応するローカルキャッシュLC4のデータを、ミラーキャッシュMC4にミラーリングする。
CM220が有するRAMには、LUN#5に対応するミラーキャッシュMC5が割り当てられる。そして、CM120は、LUN#5に対応するローカルキャッシュLC5のデータを、ミラーキャッシュMC5にミラーリングする。CM320が有するRAMには、LUN#6に対応するミラーキャッシュMC6が割り当てられる。そして、CM220は、LUN#6に対応するローカルキャッシュLC6のデータを、ミラーキャッシュMC6にミラーリングする。
CM420が有するRAMには、LUN#7に対応するミラーキャッシュMC7が割り当てられる。そして、CM320は、LUN#7に対応するローカルキャッシュLC7のデータを、ミラーキャッシュMC7にミラーリングする。CM110が有するRAM110bには、LUN#8に対応するミラーキャッシュMC8が割り当てられる。そして、CM420は、LUN#8に対応するローカルキャッシュLC8のデータを、ミラーキャッシュMC8にミラーリングする。
このように、あるCMのローカルキャッシュのデータは、隣接するCMにサイクリックにミラーリングされる。なお、あるCMのローカルキャッシュデータは、必ず、そのCMが搭載されたCEとは異なるCE内のCMにミラーリングされる。このような構成により、CE単位で動作が停止した場合でも、どのローカルキャッシュについても元データとミラーデータの少なくとも一方が消失せずに維持される。
例えば、仮に、CM110のローカルキャッシュLC1のデータがCM120のRAM上のミラーキャッシュにミラーリングされたとする。この構成で、CE100の動作が停止した場合、ローカルキャッシュに格納されたデータと、ミラーキャッシュに格納されたそのミラーデータの両方が消失してしまう。これに対して、図4の例では、CM110のローカルキャッシュLC1がCM210のミラーキャッシュMC1にミラーリングされている。このため、CE100の動作が停止したとしても、ミラーキャッシュMC1のミラーデータが確実に残り、逆にCE200の動作が停止したとしても、ローカルキャッシュLC1の元データが確実に残る。
なお、本実施の形態では、図4に示すようなローカルキャッシュおよびミラーキャッシュの割り当て状態を、ストレージシステムの運用開始時における状態(初期状態)とする。また、初期状態では、各CMは、ローカルキャッシュに対応するLUに対するデータの書き込みを、ライトバック方式で制御する。
例えば、CM110は次のようなアクセス制御を実行する。CM110は、LUN#1に対する書き込み要求およびライトデータをホスト装置900から受信する。すると、CM110は、ライトデータをローカルキャッシュLC1に格納するとともに、ライトデータをCM210に転送して、ミラーキャッシュMC1への格納をCM210に要求する。ローカルキャッシュLC1およびミラーキャッシュMC1へのライトデータの格納が完了すると、CM110は、ホスト装置900に対して書き込みの完了応答を送信する。そして、CM110は、その後の所定のタイミングで、ローカルキャッシュLC1に格納されたライトデータを、LUN#1に対応する物理記憶領域(HDD)に格納する。
LUに対応する物理記憶領域としては、DE500,600,700,800内の1台以上の任意のHDDの記憶領域を割り当てることができる。例えば、LUN#1に対応する物理記憶領域としてDE500内のHDDが割り当てられている場合、CM110は、そのHDDに直接的にライトデータの格納を要求する。また、LUN#1に対応する物理記憶領域としてDE600内のHDDが割り当てられている場合、CM110は、そのHDDへのライトデータの格納をスイッチ1000およびCM210を介して要求する。
なお、後述するように、CMは、LUに対する書き込み制御をライトスルー方式に変更することもできる。
ところで、CE100は、バッテリ140を有する。バッテリ140は、CE100に設けられたPSU130の停電時に、CM110内のRAM110bとCM120内のRAMに電力を供給する。これにより、初期状態においてPSU130が停電になった場合でも、ローカルキャッシュLC1,LC5およびミラーキャッシュMC8,MC4のデータが消去されずに維持され、これらのデータを不揮発性記憶装置に退避するなどの措置を施すことができるようになる。
CE200も同様に、バッテリ240を有する。バッテリ240は、CE200に設けられたPSUの停電時に、CM210内のRAMとCM220内のRAMに電力を供給する。CE300も同様に、バッテリ340を有する。バッテリ340は、CE300に設けられたPSUの停電時に、CM310内のRAMとCM320内のRAMに電力を供給する。CE400も同様に、バッテリ440を有する。バッテリ440は、CE400に設けられたPSUの停電時に、CM410内のRAMとCM420内のRAMに電力を供給する。
このような初期状態において、例えば、CE200のバッテリ240が故障した場合を考える。なお、以下の説明では、CMがライトバック方式でLUの書き込み制御を行っている状態を「ライトバック運用」、CMがライトスルー方式でLUの書き込み制御を行っている状態を「ライトスルー運用」と記載する場合がある。
バッテリ240が故障した場合に、CE200内のCM210,220をライトバック運用からライトスルー運用に切り替える方法が考えられる。それは、その後にCM200内のPSUが停電すると、CM210内のローカルキャッシュLC2およびミラーキャッシュMC1に格納されているデータと、CM220のローカルキャッシュLC6およびミラーキャッシュMC5に格納されているデータが消失するからである。CM210,220がライトスルー運用に切り替えることで、ローカルキャッシュLC2,LC6のデータが対応する物理記憶領域(HDD)に格納されるので、PSUの停電が発生してもデータの消失を防ぐことができる。
しかしながら、CM210,220だけをライトスルー運用に切り替えた後にCE200のPSUが停電すると、ミラーキャッシュMC1,MC5に格納されているデータは消失する。このとき、ローカルキャッシュLC1,LC5のデータの二重化が実現されなくなり、ローカルキャッシュLC1,LC5のデータの安全性も低下する。例えば、その後にローカルキャッシュLC1,LC5に格納されているデータが消失した場合に、当該データを復元できなくなるという問題がある。
そこで、バッテリ240が故障した場合に、CM110,120もライトバック運用からライトスルー運用に切り替える方法も考えられる。この方法によれば、ローカルキャッシュLC1,LC5のデータ消失の可能性も低減できる。しかし、この方法では、CM110,120,210,220でのLUに対するアクセスの応答速度が低下し、ストレージシステム全体のアクセス性能が極端に悪化するという問題がある。
そこで、第2の実施の形態では、バッテリ240が故障した場合、ローカルキャッシュLC2,LC6の割り当て先のCMが、他のCE内のCMに切り替えられる。また、ミラーキャッシュMC1,MC5の割り当て先のCMも、さらに別のCE内のCMに切り替えられる。そして、ローカルキャッシュLC2,LC6が新たに割り当てられたCMにおいて、ライトバック運用が継続される。これにより、ローカルキャッシュおよびミラーキャッシュの割り当て先を変更せずにその割り当て先のCMをライトスルー運用に切り替える方法よりも、アクセス性能を向上させることができる。
図5は、CMの機能例を示す図である。CM110は、ローカルキャッシュ領域111、ミラーキャッシュ領域112、テーブル記憶部113、アクセス制御部114、監視部115、指示制御部116および変更制御部117を有する。テーブル記憶部113は、例えば、RAM110bまたはSSD110cに確保した記憶領域として実装される。アクセス制御部114、監視部115、指示制御部116および変更制御部117は、例えば、プロセッサ110aが実行するプログラムのモジュールとして実装される。
ローカルキャッシュ領域111およびミラーキャッシュ領域112は、RAM110bに確保される記憶領域である。ローカルキャッシュ領域111には、それぞれLUに対応する1以上のローカルキャッシュを割り当て可能であり、ミラーキャッシュ領域112には、それぞれLUに対応する1以上のミラーキャッシュを割り当て可能である。
テーブル記憶部113は、ボリューム管理テーブルを有する。ボリューム管理テーブルには、初期状態および現状のそれぞれについてのLUに対するローカルキャッシュおよびミラーキャッシュの割り当て先CMを示す情報が登録される。
また、CM110が後述するマスタCMに設定されている場合、テーブル記憶部113は、構成管理テーブルを有する。構成管理テーブルには、CM110,120,210,220,310,320,410,420の相互関係を示す情報が登録される。構成管理テーブルにより、CM110,120,210,220,310,320,410,420がサイクリックに配列されることが定義される。また、後述するように、マスタCMは、構成管理テーブルを用いて、LUに対応するローカルキャッシュおよびミラーキャッシュの割り当て変更先CMを特定できる。
さらに、テーブル記憶部113は、各バッテリと各CEとの対応関係を示す情報を記憶する。例えば、テーブル記憶部113は、バッテリ240とCE200との対応関係を示す情報を記憶する。マスタCMは、この情報からCE200がバッテリ240を有することを特定できる。
アクセス制御部114は、ホスト装置900からのアクセス要求に応じてLUに対するアクセス制御を行う。このアクセス制御の際、アクセス制御部114は、ローカルキャッシュ領域111のうち、アクセスが要求されたLUに対応するローカルキャッシュとして割り当てられた領域をキャッシュ領域として使用する。また、アクセス制御部114は、LUに対する書き込み制御の方式として、ライトバック方式とライトスルー方式とを切り替えることができる。
例えば、ローカルキャッシュ領域111にLUN#1に対応するローカルキャッシュLC1が割り当てられ、LUN#1に対する書き込みをライトバック方式で制御する場合、次のような処理が実行される。アクセス制御部114は、ホスト装置900からLUN#1へのデータの書き込み要求を受けると、受信したライトデータをローカルキャッシュ領域111内のローカルキャッシュLC1に格納する。また、アクセス制御部114は、ローカルキャッシュLC1に格納されたライトデータを複製してCM210に転送するとともに、複製されたデータをCM210のミラーキャッシュMC1に書き込むようにCM210に要求する。なお、CM210へのデータ転送はスイッチ1000を介して行われる。複製されたデータがミラーキャッシュMC1に書き込まれることで、ホスト装置900から受信したライトデータは、ローカルキャッシュLC1とミラーキャッシュMC1で二重化される。アクセス制御部114は、二重化が完了すると、ホスト装置900にライトデータの書き込みを完了した旨を通知する。その後、所定のタイミングで、アクセス制御部114は、ローカルキャッシュ領域111に格納されたライトデータを、LUN#1に対応するHDDに格納する。
一方、ローカルキャッシュ領域111にLUN#1に対応するローカルキャッシュLC1が割り当てられ、LUN#1に対する書き込みをライトスルー方式で制御する場合、次のような処理が実行される。アクセス制御部114は、ホスト装置900からLUN#1へのデータの書き込み要求を受けると、受信したライトデータをローカルキャッシュ領域111内のローカルキャッシュLC1に書き込むとともに、ライトデータをLUN#1に対応するHDDにも書き込む。アクセス制御部114は、ローカルキャッシュLC1とHDDにライトデータを格納した後に、ライトデータの書き込みを完了した旨をホスト装置900に通知する。なお、ライトスルー方式が用いられる場合、アクセス制御部114がホスト装置900に応答した時点でライトデータは不揮発性記憶装置に格納されることから、ライトデータの複製データは、ミラーキャッシュMC1に書き込まれなくてよい。
また、アクセス制御部114は、CM420からの要求に応じて、CM420から転送された、CM420内のローカルキャッシュに対応するミラーデータを、ミラーキャッシュ領域112に格納する。
監視部115は、バッテリ140の状態を監視する。ただし、監視部115は、CM110が後述するCE内マスタに設定されている場合のみ動作する。
指示制御部116は、変更制御部117および他のCMに動作の指示を行う。ただし、指示制御部116は、CM110がマスタCMに設定されている場合のみ動作する。
変更制御部117は、マスタCMの指示制御部の指示に応じた制御を行う。なお、CM110がマスタCMに設定されている場合、変更制御部117は、CM110の指示制御部116からの指示に応じた制御を行う。
例えば、マスタCMの指示制御部の指示に従って、ローカルキャッシュ領域111またはミラーキャッシュ領域112に格納しているデータを他のCMに転送する。また、変更制御部117は、マスタCMの指示制御部の指示に従って、LUの書き込み制御をライトバック方式、または、ライトスルー方式に切り替えるようにアクセス制御部114に指示する。
CM120,210,220,310,320,410,420も、CM110と同様にローカルキャッシュ領域、ミラーキャッシュ領域、テーブル記憶部、アクセス制御部、監視部、指示制御部および変更制御部を有する。各機能はCM110と同様なので説明を省略する。
ここで、CE内マスタおよびマスタCMについて説明する。各CEが有するCMのうち、1つのCMがCE内マスタに設定される。CE内マスタは、CE内のCMの動作状態を監視し、監視結果をマスタCMに通知する。また、CM110,120,210,220,310,320,410,420のうち、1つのCMがマスタCMに設定される。マスタCMは、CE内マスタから通知される監視結果に基づいてストレージシステム内のCMの動作を制御する。なお、1つのCMにCE内マスタとマスタCMの両方が設定されてもよい。
CE内マスタの機能を説明する。CE内マスタの機能は、CE内マスタに設定されたCMの監視部で実現される。ここでは、CM110がCE内マスタに設定されているものとして説明する。監視部115は、バッテリ140の状態を監視する。例えば、監視部115は、バッテリ140に対して定期的にポーリングを実行して、バッテリ140の状態を監視する。監視部115は、バッテリ140が異常であることを検出した場合、マスタCMにバッテリ140が異常である旨を示すバッテリ異常通知を送信する。ここで、バッテリ140の異常とは、例えば、バッテリ140が故障した場合やバッテリ140の充電率が閾値未満になった場合をいう。また、CE内マスタに設定されているCMのテーブル記憶部には、どのCMがマスタCMであるかを示す情報が記憶される。監視部115は、バッテリ140が正常になったことを検出した場合、マスタCMにバッテリ140が正常になった旨を示すバッテリ正常通知を送信する。
次に、マスタCMの機能を説明する。マスタCMの機能は、マスタCMに設定されたCMの指示制御部で実現される。ここでは、CM110がマスタCMに設定されているものとして説明する。
指示制御部116は、CE内マスタからバッテリ異常通知またはバッテリ正常通知を受信した場合、ストレージシステムに存在するバッテリのうち、異常が発生したバッテリの数が閾値以上であるか否かを判定する。例えば、ストレージシステムに存在するバッテリのうち、正常なバッテリが残り1つになる数が閾値に設定される。なお、閾値を示す情報は、テーブル記憶部113に記憶される。指示制御部116は、異常が発生したバッテリの数が閾値未満の場合、割り当て変更処理を実行する。一方、指示制御部116は、異常が発生したバッテリの数が閾値以上の場合、運用切り替え処理を実行する。
割り当て変更処理において、指示制御部116は、構成管理テーブルを参照し、バッテリの異常が発生したCE内のCMに割り当てられているローカルキャッシュを他のCMに割り当てるための割り当て変更指示を、割り当て変更前および変更後の各CMへ出力する。この割り当て変更指示には、割り当て変更前のCMから割り当て変更後のCMへのローカルキャッシュのデータ転送指示も含まれる。
また、指示制御部116は、構成管理テーブルを参照し、バッテリの異常が発生したCE内のCMに割り当てられているミラーキャッシュを他のCMに割り当てるための割り当て変更指示を、割り当て変更前および変更後の各CMへ出力する。
一方、運用切り替え処理において、指示制御部116は、割り当て先が変更されたローカルキャッシュについて、割り当て先CMを初期状態に戻す。指示制御部116は、バッテリの異常が発生したCE内のCMに、アクセス制御を担当するLUの書き込み制御(すなわち、アクセス制御に用いるローカルキャッシュを用いた書き込み制御)をライトスルー方式へ切り替えるように指示する。指示制御部116は、ローカルキャッシュのミラーリング先のCMを有するCEのバッテリが異常な場合、当該ローカルキャッシュを有するCMに、LUの書き込み制御をライトスルー方式へ切り替えるように指示する。
図6は、ボリューム管理テーブルの例を示す図である。ボリューム管理テーブル113aは、テーブル記憶部113に格納される。また、他のCM120,210,220,310,320,410,420の全てのテーブル記憶部には、ボリューム管理テーブル113aと同じ内容のボリューム管理テーブルが記憶される。すなわち、CM110,120,210,220,310,320,410,420の全てにおいてボリューム管理テーブルの内容が同期される。
ボリューム管理テーブル113aは、LUN、RAIDレベル、物理記憶領域、ローカルキャッシュおよびミラーキャッシュの項目を含む。また、ローカルキャッシュおよびミラーキャッシュの項目は、初期状態と現状のそれぞれについて設けられる。
LUNの項目には、LUを識別する情報が登録される。RAIDレベルの項目には、LUのアクセス制御で用いられるRAIDレベルが登録される。物理記憶領域の項目には、LUに割り当てられた物理記憶領域を示す情報が登録される。例えば、物理記憶領域の項目には、LUに割り当てられたHDDの識別情報が登録される。また、物理記憶領域の項目には、割り当てられたHDD内の領域を示すアドレス範囲が登録されてもよい。
初期状態に対応するローカルキャッシュおよびミラーキャッシュの項目には、初期状態において、LUに対応するローカルキャッシュおよびミラーキャッシュがそれぞれ割り当てられたCMの識別情報が登録される。現状に対応するローカルキャッシュおよびミラーキャッシュの項目には、現時点で、LUに対応するローカルキャッシュおよびミラーキャッシュがそれぞれ割り当てられているCMの識別情報が登録される。現状に対応するローカルキャッシュおよびミラーキャッシュの項目は、割り当て先のCMが変更される度に更新される。
ここで、以下の説明では、CM110,210,310,410,120,220,320,420を識別する情報を、それぞれ“CM#1”,“CM#2”,“CM#3”,“CM#4”,“CM#5”,“CM#6”,“CM#7”,“CM#8”とする。なお、図6において初期状態に対応するローカルキャッシュおよびミラーキャッシュの項目に登録された情報は、図4に示した状態を表している。
図7は、構成管理テーブルの例を示す図である。構成管理テーブル113bは、マスタCMのテーブル記憶部に格納される。例えば、構成管理テーブル113bは、マスタCMが設定されているCM110のテーブル記憶部113に格納される。また、構成管理テーブル113bが、マスタCM以外のテーブル記憶部に、同期した状態で格納されていてもよい。マスタCMが故障したときに、構成管理テーブル113bを記憶しているCMがマスタCMとして動作することができるからである。
構成管理テーブル113bは、CE ID(identifier)、CM ID、Backward CMおよびForward CMの項目を含む。CE IDの項目には、CEを識別する情報が登録される。CM IDの項目には、CMを識別する情報が登録される。Backward CMの項目には、CM IDの項目に登録されているCMのミラーキャッシュに、ローカルキャッシュのデータをミラーリングしているCMの識別情報が登録される。Forward CMの項目には、CM IDの項目に登録されているCMのローカルキャッシュに格納されているデータのミラーリング先のCMが登録される。
例えば、図7に示す構成管理テーブル113bには、CE IDの項目に“CE#2”が、CM IDの項目に“CM#2”が、Backward CMの項目に“CM#1”が、Forward CMの項目に“CM#3”が、それぞれ登録されている。これは、CM110(CM#1)のローカルキャッシュのミラーリング先がCE200(CE#2)のCM210(CM#2)であることを示している。また、CM310(CM#3)のミラーキャッシュのミラーリング元がCE200(CE#2)のCM210(CM#2)であることを示している。
構成管理テーブル113bのCM ID、Backward CMおよびForward CMの項目に登録された情報によって、CM110,120,210,220,310,320,410,420がサイクリックに配列されることが定義される。図7に示す構成管理テーブル113bは、図4に示した初期状態におけるCMの相互関係を示している。すなわち、CM110からCM210、CM210からCM310、CM310からCM410、CM410からCM120、CM120からCM220、CM220からCM320、CM320からCM420、CM420からCM110の順に配列されるように設定されている。Backward CMは、配列方向に対して後ろ側のCMを示し、Forward CMは、配列方向に対して前側の(すなわち、次の)CMを示す。
指示制御部116は、あるCMをサイクリックな配列から除外する場合、構成管理テーブル113bを更新する。また、指示制御部116は、あるCMに割り当てられていたローカルキャッシュおよびミラーキャッシュの割り当て先を変更する際、構成管理テーブル113bに基づいて割り当て先を決定することができる。
次に、バッテリの異常が発生した場合の処理について、具体例を挙げて説明する。
まず、図4に示す初期状態から、CE200のバッテリ240に異常が発生した場合の処理例について、図8〜図11を用いて説明する。以下の説明では、初期状態を「状態1」と記載し、バッテリ240の異常発生に応じた処理が完了した後の状態を「状態2」と記載する。なお、CM110,210,310,410がCE内マスタに設定され、CM110がマスタCMに設定されているものとする。
図8は、状態2におけるローカルキャッシュおよびミラーキャッシュの割り当て状態を示す図である。CE200におけるCE内マスタであるCM210は、状態1においてバッテリ240の異常が発生したことを検知すると、その旨をマスタCMであるCM110に通知する。CM110は、バッテリに異常が発生したCEの数が閾値以上であるかを判定する。ここでは、閾値を2とする。この場合、CM110は、CE200内のCM210,220に割り当てられていたローカルキャッシュおよびミラーキャッシュを、他のCMに割り当てるための割り当て変更処理を実行する。
図4に示したように、バッテリ240の異常発生が検知された時点では、ローカルキャッシュLC2とミラーキャッシュMC1がCM210に割り当てられ、ローカルキャッシュLC6とミラーキャッシュMC5がCM220に割り当てられている。CM110による割り当て変更処理により、これらの割り当て先CMは次のように変更される。
ローカルキャッシュLC2,LC6の割り当て先は、現在のCMから、サイクリックな配列における後ろ側のCMに変更される。具体的には、図8に示すように、ローカルキャッシュLC2の割り当て先はCM210からCM110に変更され、ローカルキャッシュLC6の割り当て先はCM220からCM120に変更される。
一方、ミラーキャッシュMC1,MC5の割り当て先は、現在のCMから、サイクリックな配列における前側のCMに変更される。具体的には、図8に示すように、ミラーキャッシュMC1の割り当て先はCM210からCM310に変更され、ミラーキャッシュMC5の割り当て先はCM220からCM320に変更される。
以上のように割り当てが変更された後、ストレージシステムの運用が再開される。このとき、CM110は、ローカルキャッシュLC1を用いたLUN#1へのアクセス制御に加えて、ローカルキャッシュLC2を用いたLUN#2へのアクセス制御を実行する。LUN#1およびLUN#2への書き込み制御は、ライトバック方式で行われる。また、CM110は、ローカルキャッシュLC2のデータを、CM310に割り当てられたミラーキャッシュMC2にミラーリングする。
CM110に接続されたバッテリ140も、CM310に接続されたバッテリ340も、異常が発生していない。このため、CM110がローカルキャッシュLC2を用いたLUN#2への書き込みをライトバック方式で制御しても、LUN#2のデータが消失する可能性は、バッテリ240の故障が検知される前の状態1から変化しない。したがって、図8のような割り当て変更が行われることで、CM210にローカルキャッシュLC2とミラーキャッシュMC1を割り当てたままCM210をライトスルー運用に切り替える方法と比較して、LUN#1,LUN#2へのアクセス速度を向上させることができる。
また、図8のように割り当てが変更されてストレージシステムの運用が再開されたとき、CM120は、ローカルキャッシュLC5を用いたLUN#5へのアクセス制御に加えて、ローカルキャッシュLC6を用いたLUN#6へのアクセス制御を実行する。LUN#5およびLUN#6への書き込み制御は、ライトバック方式で行われる。また、CM120は、ローカルキャッシュLC6のデータを、CM320に割り当てられたミラーキャッシュMC6にミラーリングする。これにより、CM220にローカルキャッシュLC6とミラーキャッシュMC5を割り当てたままCM220をライトスルー運用に切り替える方法と比較して、LUN#5,LUN#6へのアクセス速度を向上させることができる。
なお、状態2においては、ホスト装置900からのLUN#2へのアクセス要求は、状態1と同様にCM210が受信する。CM210は、ホスト装置900からLUN#2へのアクセス要求を受信すると、アクセス要求をCM110に転送する。CM110は、転送されたアクセス要求に応じてLUN#2へのアクセス制御を実行する。アクセス制御の完了応答は、CM110からCM210を介してホスト装置900に送信される。同様に、ホスト装置900からのLUN#5へのアクセス要求は、CM220が受信してCM120に転送する。
また、ローカルキャッシュおよびミラーキャッシュの割り当てが解除されたCM210,220は、CM210,220に接続されたDE600に対するアクセスパスとして引き続き機能する。例えば、LUN#2の物理記憶領域としてDE600内のHDDが割り当てられているとする。状態2において、CM110は、ローカルキャッシュLC2のデータをDE600内のHDDに格納する際、DE600内のHDDへのデータ書き込み要求と書き込みデータとをCM210に対して送信する。CM210は、受信した書き込みデータをDE600内のHDDに書き込む。
また、本実施の形態では、各CMのRAMにおいてローカルキャッシュおよびミラーキャッシュとしてそれぞれ使用可能な領域のサイズは、一定であるものとする。このため、図8のような割り当て変更が行われたとき、ローカルキャッシュLC1,LC2,LC5,LC6の容量は1/2に変更される。ローカルキャッシュLC1,LC2,LC5,LC6のそれぞれにおいては、例えば、最終アクセス時刻が遅い順に1/2の容量分のデータが残され、それ以外のデータは対応する物理記憶領域に退避される。
図9は、状態1から状態2に遷移する際のテーブルの変化を示す図である。なお、図9における状態2でのボリューム管理テーブル113aおよび構成管理テーブル113bでは、変更されたCMの識別番号に下線を付して示している。
マスタCMであるCM110の指示制御部116は、ローカルキャッシュおよびミラーキャッシュの割り当てをどのように変更するかを、以下のような処理によって判定する。
指示制御部116は、図9に示す状態1での構成管理テーブル113bに基づいて、CE200内のCM210(CM#2),CM220(CM#6)にそれぞれ割り当てられているローカルキャッシュおよびミラーキャッシュの割り当て変更先を特定する。具体的には、指示制御部116は、CM#2に割り当てられていたLUN#2のローカルキャッシュLC2の割り当て変更先を、CM#2のレコードにおいてBackward CMの項目に登録されているCM#1と特定する。また、指示制御部116は、CM#2に割り当てられていたLUN#1のミラーキャッシュMC1の割り当て変更先を、CM#2のレコードにおいてForward CMの項目に登録されているCM#3と特定する。また、指示制御部116は、CM#6に割り当てられていたLUN#6のローカルキャッシュLC6の割り当て変更先を、CM#6のレコードにおいてBackward CMの項目に登録されているCM#5と特定する。また、指示制御部116は、CM#6に割り当てられていたLUN#5のミラーキャッシュMC5の割り当て変更先を、CM#6のレコードにおいてForward CMの項目に登録されているCM#7と特定する。
指示制御部116は、ローカルキャッシュおよびミラーキャッシュの割り当て先を上記のように変更するための後述する制御を実行した後、割り当て先の変更が反映されるようにボリューム管理テーブル113aを更新する。
さらに、指示制御部116は、構成管理テーブル113bを更新して、CM210(CM#2),220(CM#6)をサイクリックな配列から除外する。具体的には、指示制御部116は、状態1での構成管理テーブル113bに基づいて、CM#2の後ろ側のCM#1に対応するForward CMを、CM#2からその前側のCM#3に変更する。また、指示制御部116は、状態1での構成管理テーブル113bに基づいて、CM#2の前側のCM#3に対応するBackward CMを、CM#2からその後ろ側のCM#1に変更する。また、指示制御部116は、CM#2に対応するBackward CMおよびForward CMの各項目から情報を削除する。
図10は、状態1から状態2に遷移する際の処理例(その1)を示すシーケンス図である。
(ST101)状態1において、CM210の監視部は、バッテリ240が異常であることを検出する。例えば、CM210の監視部は、バッテリ240が故障であることを検出する。
(ST102)CM210の監視部は、バッテリ240が異常である旨を示すバッテリ異常通知をCM110に送信する。
(ST103)CM110の監視部115は、バッテリ異常通知を受信する。CM110の監視部115は、ストレージシステムに存在するバッテリのうち、異常が発生したバッテリの数が閾値以上であるか否かを判定する。ここで、閾値には、2が設定されているものとする。CM110の監視部115は、異常が発生したバッテリの数が閾値未満であると判定する。
次に、CM110の指示制御部116は、構成管理テーブル113bを参照し、ローカルキャッシュと物理記憶領域とを同期させるCMを特定する。具体的には、CM110の指示制御部116は、バッテリの異常が検出されたCE200内のCM210,220と、CM210,220にローカルキャッシュのデータをミラーリングしているCM110,120とを、ローカルキャッシュと物理記憶領域とを同期させるCMとして特定する。CM210,220にローカルキャッシュのデータをミラーリングしているCM110,120は、サイクリックな配列においてCM210,220の後ろ側に位置するCMとして特定される。
(ST104)CM110の指示制御部116は、CM120に、ローカルキャッシュLC5に格納されているデータを同期させるように指示をする。
(ST105)CM110の指示制御部116は、CM210に、ローカルキャッシュLC2に格納されているデータを同期させるように指示をする。
(ST106)CM110の指示制御部116は、CM220に、ローカルキャッシュLC6に格納されているデータを同期させるように指示をする。
(ST107)CM110の指示制御部116は、CM110の変更制御部117に、ローカルキャッシュLC1に格納されているデータを同期させるように指示する。CM110の変更制御部117は、ローカルキャッシュLC1に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュLC1と物理記憶領域とを同期させる。
(ST108)CM120の変更制御部は、ローカルキャッシュLC5に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュLC5と物理記憶領域とを同期させる。
(ST109)CM210の変更制御部は、ローカルキャッシュLC2に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュLC2と物理記憶領域とを同期させる。
(ST110)CM220の変更制御部は、ローカルキャッシュLC6に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュLC2と物理記憶領域とを同期させる。
ステップST107〜ST110の処理が完了すると、次の処理が実行される。
CM110の指示制御部116は、構成管理テーブル113bを参照し、ローカルキャッシュおよびミラーキャッシュの割り当てをどのように変更するかを判定する。この判定処理手順は、図9で説明した通りである。CM110の指示制御部116は、CM210に割り当てられていたLUN#2のローカルキャッシュLC2の割り当て変更先を、CM110と特定する。また、CM110の指示制御部116は、CM210に割り当てられていたLUN#1のミラーキャッシュMC1の割り当て変更先を、CM310と特定する。また、CM110の指示制御部116は、CM220に割り当てられていたLUN#6のローカルキャッシュLC6の割り当て変更先を、CM120と特定する。また、指示制御部116は、CM220に割り当てられていたLUN#5のミラーキャッシュMC5の割り当て変更先を、CM320と特定する。なお、上記の判定処理手順は、ステップST103の実行後から、ステップST111の実行前までのどのタイミングが実行されてもよい。
(ST111)CM110の指示制御部116は、LUN#6のローカルキャッシュLC6を新たに割り当てることを示す割り当て変更指示を、CM120に送信する。
(ST112)CM110の指示制御部116は、LUN#1のミラーキャッシュMC1を新たに割り当てることを示す割り当て変更指示を、CM310に送信する。
(ST113)CM110の指示制御部116は、LUN#5のミラーキャッシュMC5を新たに割り当てることを示す割り当て変更指示を、CM320に送信する。
図11は、状態1から状態2に遷移する際の処理例(その2)を示すシーケンス図である。以下、図11に示す処理をステップ番号に沿って説明する。
(ST121)CM110の指示制御部116は、LUN#2のローカルキャッシュLC2を新たに割り当てることを示す割り当て変更指示を、CM110の変更制御部117に通知する。CM110の変更制御部117は、割り当て変更指示に応じて、ローカルキャッシュの割り当て変更を行う。
具体的には、CM110の変更制御部117は、RAM110bのローカルキャッシュ領域111に、LUN#1のローカルキャッシュLC1とLUN#2のローカルキャッシュLC2の各領域を確保する。このとき、CM110の変更制御部117は、RAM110bに格納されていたローカルキャッシュLC1のデータのうち、最終アクセス時刻が遅い順に1/2の容量分のデータを、新たに確保されたローカルキャッシュLC1の領域に格納する。
(ST122)CM120の変更制御部は、ローカルキャッシュの割り当て変更を行う。具体的には、CM120の変更制御部は、CM120のRAMのローカルキャッシュ領域に、LUN#5のローカルキャッシュLC5とLUN#6のローカルキャッシュLC6の各領域を確保する。このとき、CM120の変更制御部は、CM120のRAMに格納されていたローカルキャッシュLC5のデータのうち、最終アクセス時刻が遅い順に1/2の容量分のデータを、新たに確保されたローカルキャッシュLC5の領域に格納する。
なお、本実施の形態では、各CMのRAMにおいては、ローカルキャッシュおよびミラーキャッシュとしてそれぞれ使用可能な領域のサイズは、一定とされる。しかし、他の例として、各CMのRAMにおいては、ローカルキャッシュとミラーキャッシュのどちらとしても使用可能な領域のサイズが、一定とされていてもよい。そして、1つのCMに割り当てられるローカルキャッシュとミラーキャッシュに対して、RAMの記憶領域が均等に割り当てられてもよい。この場合、ステップST125,ST126では、CM110,120のそれぞれに割り当てられるローカルキャッシュおよびミラーキャッシュの総数に基づいて、ステップST127,ST128で転送すべきデータ量が決定される。
(ST123)CM310の変更制御部は、ミラーキャッシュの割り当て変更を行う。具体的には、CM310の変更制御部は、CM310のRAMのミラーキャッシュ領域に、LUN#2のミラーキャッシュMC2とLUN#1のミラーキャッシュMC1の各領域を確保する。
(ST124)CM320の変更制御部は、ミラーキャッシュの割り当て変更を行う。具体的には、CM320の変更制御部は、CM320のRAMのミラーキャッシュ領域に、LUN#6のミラーキャッシュMC6とLUN#5のミラーキャッシュMC5の各領域を確保する。
ステップST121〜ST124の処理が完了すると、次の処理が実行される。
(ST125)CM110の指示制御部116は、CM210に、CM210のRAMに割り当てられているLUN#2のローカルキャッシュLC2のデータをCM110に転送するように指示する。このとき、現状のローカルキャッシュLC2のうち1/2の容量のデータを転送するように指示される。
(ST126)CM110の指示制御部116は、CM220に、CM220のRAMに割り当てられているLUN#6のローカルキャッシュLC6のデータをCM120に転送するように指示する。このとき、現状のローカルキャッシュLC6のうち1/2の容量のデータを転送するように指示される。
(ST127)CM210の変更制御部は、LUN#2のローカルキャッシュLC2に格納されているデータのうち、最終アクセス時刻が遅い順に1/2の容量のデータをCM110に転送する。これにより、転送されたデータが、CM110に確保されたローカルキャッシュLC2の領域に格納される。
(ST128)CM210の変更制御部は、LUN#6のローカルキャッシュLC6に格納されているデータのうち、最終アクセス時刻が遅い順に1/2の容量のデータをCM120に転送する。これにより、転送されたデータが、CM120に確保されたローカルキャッシュLC6の領域に格納される。
ステップST127,ST128の処理が完了すると、次の処理が実行される。
(ST129)CM110の指示制御部116は、ライトバック運用を開始するようにCM120に指示する。
(ST130)CM110の指示制御部116は、ライトバック運用を開始するようにCM310に指示する。
(ST131)CM110の指示制御部116は、ライトバック運用を開始するようにCM320に指示する。
(ST132)CM110の指示制御部116は、ライトバック運用を開始するようにCM110のアクセス制御部114に指示する。CM110のアクセス制御部114は、ライトバック運用を開始する。このとき、CM110のアクセス制御部114は、ローカルキャッシュLC1,LC2のデータを、CM310のミラーキャッシュMC1,MC2にそれぞれコピーする。コピーが完了すると、CM110のアクセス制御部114は、ローカルキャッシュLC1を用いたLUN#1へのアクセス制御と、ローカルキャッシュLC2を用いたLUN#2へのアクセス制御を開始する。これらのアクセス制御では、ローカルキャッシュLC1,LC2のデータが、CM310のミラーキャッシュMC1,MC2にそれぞれミラーリングされる。また、LUN#1,LUN#2への書き込み制御は、ライトバック方式で行われる。
(ST133)CM120のアクセス制御部は、ライトバック運用を開始する。このとき、CM210のアクセス制御部は、ローカルキャッシュLC5,LC6のデータを、CM320のミラーキャッシュMC5,MC6にそれぞれコピーする。コピーが完了すると、CM120のアクセス制御部は、ローカルキャッシュLC5を用いたLUN#5へのアクセス制御と、ローカルキャッシュLC6を用いたLUN#6へのアクセス制御を開始する。これらのアクセス制御では、ローカルキャッシュLC5,LC6のデータが、CM320のミラーキャッシュMC5,MC6にそれぞれミラーリングされる。また、LUN#5,LUN#6への書き込み制御は、ライトバック方式で行われる。
(ST134)CM310のアクセス制御部は、ライトバック運用を開始する。すなわち、CM310のアクセス制御部は、ローカルキャッシュLC3を用いたLUN#3へのアクセス制御を再開する。LUN#3への書き込み制御は、ライトバック方式で行われる。
(ST135)CM320のアクセス制御部は、ライトバック運用を開始する。すなわち、CM320のアクセス制御部は、ローカルキャッシュLC7を用いたLUN#7へのアクセス制御を再開する。LUN#7への書き込み制御は、ライトバック方式で行われる。
次に、状態2からさらにCE300のバッテリ340に異常が発生した場合の処理例について、図12〜図16を用いて説明する。以下の説明では、バッテリ340の異常発生に応じた処理が完了した後の状態を「状態3」と記載する。
図12は、状態3におけるローカルキャッシュおよびミラーキャッシュの割り当て状態を示す図である。CE300におけるCE内マスタであるCM310は、バッテリ340の異常が発生したことを検知すると、その旨をマスタCMであるCM110に通知する。CM110は、バッテリに異常が発生したCEの数が閾値以上であるかを判定する。ここでは、バッテリに異常が発生したCEの数が閾値“2”以上であると判定される。この場合、次のような運用切り替え処理を実行する。運用切り替え処理では、CM110は、初期状態からローカルキャッシュまたはミラーキャッシュの割り当てが変更されたCM110,120,210,220,310,320について、それらの割り当てを初期状態に戻す。そして、CM110は、CM110,120,210,220,310,320の運用方式をライトバック運用からライトスルー運用に切り替える。
ローカルキャッシュの割り当て先CMは、図12に示すように変更される。すなわち、LUN#2のローカルキャッシュLC2の割り当て先は、CM110からCM210に変更される。LUN#6のローカルキャッシュLC6の割り当て先は、CM120からCM220に変更される。
そして、CM110,120,210,220,310,320の運用方式が、ライトバック運用からライトスルー運用に変更される。すなわち、CM110は、ローカルキャッシュLC1を用いたLUN#1への書き込みを、ライトスルー方式で制御する。CM120は、ローカルキャッシュLC5を用いたLUN#5への書き込みを、ライトスルー方式で制御する。CM210は、ローカルキャッシュLC2を用いたLUN#2への書き込みを、ライトスルー方式で制御する。CM220は、ローカルキャッシュLC6を用いたLUN#6への書き込みを、ライトスルー方式で制御する。CM310は、ローカルキャッシュLC3を用いたLUN#3への書き込みを、ライトスルー方式で制御する。CM320は、ローカルキャッシュLC7を用いたLUN#7への書き込みを、ライトスルー方式で制御する。
このような割り当て変更処理により、LUN#1,LUN#2,LUN#3,LUN#5,LUN#6,LUN#7のそれぞれのデータが消失する可能性を低減することができる。
なお、書き込みがライトスルー方式で制御されることから、LUN#1,LUN#2,LUN#3,LUN#5,LUN#6,LUN#7にそれぞれ対応するローカルキャッシュのデータを、ミラーキャッシュにミラーリングする必要性は低い。このため、図12に示すように、LUN#1,LUN#2,LUN#3,LUN#5,LUN#6,LUN#7にそれぞれ対応するミラーキャッシュMC1,MC2,MC3,MC5,MC6,MC7は、CMに割り当てられない。
図13は、状態2から状態3に遷移する際の処理例(その1)を示すシーケンス図である。以下、図13に示す処理をステップ番号に沿って説明する。
(ST141)状態2において、CM310の監視部は、バッテリ340が異常であることを検出する。例えば、CM310の監視部は、バッテリ340が故障であることを検出する。
(ST142)CM310の監視部は、バッテリ340が異常である旨を示すバッテリ異常通知をCM110に送信する。
(ST143)CM110の監視部115は、バッテリ異常通知を受信する。CM110の監視部115は、ストレージシステムに存在するバッテリのうち、異常が発生したバッテリの数が閾値“2”以上であるか否かを判定する。CM110の監視部115は、異常が発生したバッテリの数が閾値“2”以上であると判定する。
(ST144)CM110の指示制御部116は、ローカルキャッシュと物理記憶領域とを同期させるCMを特定する。CM110の指示制御部116は、まず、ステップST141でバッテリ340の異常が検出されたCE300に含まれるCM310(CM#3),CM320(CM#7)を、同期させるCMとして特定する。
CM110の指示制御部116はさらに、ボリューム管理テーブル113aに基づいて、特定されたCM310(CM#3),CM320(CM#7)にローカルキャッシュのデータをミラーリングしているCMを特定する。具体的には、CM110の指示制御部116は、ボリューム管理テーブル113aから、現状に対応するミラーキャッシュの項目に、特定されたCM310(CM#3),CM320(CM#7)が登録されているレコードを特定する。ここではLUN#2とLUN#6の各レコードが特定される。CM110の指示制御部116は、特定されたレコードの項目のうち、現状に対応するローカルキャッシュの項目に登録されているCMを、同期させるCMとして特定する。ここでは、CM#1とCM#5が特定される。
(ST145)CM110の指示制御部116は、CM120(CM#5)に、ローカルキャッシュLC5,LC6に格納されているデータを同期させるように指示する。
(ST146)CM110の指示制御部116は、CM310(CM#3)に、ローカルキャッシュLC3に格納されているデータを同期させるように指示する。
(ST147)CM110の指示制御部116は、CM320(CM#7)に、ローカルキャッシュLC7に格納されているデータを同期させるように指示する。
(ST148)CM110の指示制御部116は、CM110の変更制御部117に、ローカルキャッシュLC1,LC2に格納されているデータを同期させるように指示する。CM110の変更制御部117は、ローカルキャッシュLC1,LC2に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュLC1,LC2と物理記憶領域とを同期させる。
(ST149)CM120の変更制御部は、ローカルキャッシュLC5,LC6に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュLC5,LC6と物理記憶領域とを同期させる。
(ST150)CM310の変更制御部は、ローカルキャッシュLC3に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュLC3と物理記憶領域とを同期させる。
(ST151)CM320の変更制御部は、ローカルキャッシュLC7に格納されているデータのうち、物理記憶領域に未格納のデータを物理記憶領域に書き込み、ローカルキャッシュLC7と物理記憶領域とを同期させる。
ステップST148〜ST151の処理が完了すると、次の処理が実行される。
(ST152)CM110の指示制御部116は、ローカルキャッシュの割り当てをどのように変更するかを判定する。具体的には、CM110の指示制御部116は、ボリューム管理テーブル113aを参照し、初期状態に対応するローカルキャッシュの項目と現状に対応するローカルキャッシュの項目とを比較する。CM110の指示制御部116は、登録されている内容が異なるLUのレコードを特定する。図12の例では、LUN#2,LUN#6の各レコードが特定される。CM110の指示制御部116は、特定されたレコードにおいて、現状および初期状態のそれぞれに対応するローカルキャッシュの項目に基づいて、ローカルキャッシュの割り当てを変更するCMを特定する。図12の例では、LUN#2のローカルキャッシュLC2の割り当て先をCM110(CM#1)からCM210(CM#2)に変更し、LUN#6のローカルキャッシュLC6の割り当て先をCM120(CM#5)からCM220(CM#6)に変更することが判定される。
また、CM110の指示制御部116は、ミラーキャッシュの割り当てを変更するCMを特定する。ここで特定されるCMとは、ミラーキャッシュが割り当てられなくなるCMであり、具体的には、バッテリの異常が発生したCE内のCMと、サイクリックな配列においてこのCMの前側に位置するCMである。図12の例では、前者としてはCM210、220,310,320が特定され、後者としてはCM310,320,410,420が特定される。
図14は、状態2から状態3に遷移する際の処理例(その2)を示すシーケンス図である。以下、図14に示す処理をステップ番号に沿って説明する。
まず、図13のステップST152での処理に基づき、まず、ローカルキャッシュが新たに割り当てられるCMと、ミラーキャッシュが割り当てられなくなるCMに対して、割り当て変更指示が送信される。
(ST161)CM110の指示制御部116は、LUN#2のローカルキャッシュLC2を新たに割り当てることを示す割り当て変更指示を、CM210に送信する。
(ST162)CM110の指示制御部116は、LUN#6のローカルキャッシュLC6を新たに割り当てることを示す割り当て変更指示を、CM220に送信する。
(ST163)CM110の指示制御部116は、ミラーキャッシュの割り当てがなくなることを示す割り当て変更指示を、CM310に送信する。
(ST164)CM110の指示制御部116は、ミラーキャッシュの割り当てがなくなることを示す割り当て変更指示を、CM320に送信する。
(ST165)CM110の指示制御部116は、ミラーキャッシュの割り当てがなくなることを示す割り当て変更指示を、CM410に送信する。
(ST166)CM110の指示制御部116は、ミラーキャッシュの割り当てがなくなることを示す割り当て変更指示を、CM420に送信する。
ステップST161〜ST166で送信された割り当て変更指示に応じて、ステップST167〜ST172のような割り当て変更が行われる。
(ST167)CM210の変更制御部は、CM210のRAMのローカルキャッシュ領域に、LUN#2のローカルキャッシュLC2の領域を確保する。
(ST168)CM220の変更制御部は、CM220のRAMのローカルキャッシュ領域に、LUN#6のローカルキャッシュLC6の領域を確保する。
(ST169)CM310の変更制御部は、ミラーキャッシュMC1,MC2のデータを消去し、ミラーキャッシュMC1,MC2の割り当てを解除する。
(ST170)CM320の変更制御部は、ミラーキャッシュMC5,MC6のデータを消去し、ミラーキャッシュMC5,MC6の割り当てを解除する。
(ST171)CM410の変更制御部は、ミラーキャッシュMC3のデータを消去し、ミラーキャッシュMC3の割り当てを解除する。
(ST172)CM420の変更制御部は、ミラーキャッシュMC8のデータを消去し、ミラーキャッシュMC8の割り当てを解除する。
少なくともステップST167,ST168の処理が完了すると、次の処理が実行される。
(ST173)CM110の指示制御部116は、CM120に、LUN#6のローカルキャッシュLC6のデータをCM220に転送するように指示する。
(ST174)CM110の指示制御部116は、CM110の変更制御部117に、LUN#2のローカルキャッシュLC2のデータをCM210に転送するように指示する。CM110の変更制御部117は、ローカルキャッシュLC2のデータをCM210に転送する。
(ST175)CM120の変更制御部は、LUN#6のローカルキャッシュLC6のデータをCM220に転送する。
ステップST174,ST175の処理が完了すると、次の処理が実行される。
(ST176)CM110の指示制御部116は、ローカルキャッシュLC6の割り当てを解除することを示す割り当て変更指示を、CM120に送信する。
(ST177)CM110の指示制御部116は、CM110の変更制御部117に対して、ローカルキャッシュLC2の割り当てを解除するように指示する。CM116の変更制御部117は、ローカルキャッシュLC2のデータを消去してローカルキャッシュLC2の割り当てを解除する。CM110の変更制御部117は、ローカルキャッシュLC1の領域をRAM上のローカルキャッシュ領域全体に拡大する。
(ST178)CM120の変更制御部は、ローカルキャッシュLC6のデータを消去してローカルキャッシュLC6の割り当てを解除する。CM120の変更制御部は、ローカルキャッシュLC5の領域をRAM上のローカルキャッシュ領域全体に拡大する。
図15は、状態2から状態3に遷移する際の処理例(その3)を示すシーケンス図である。以下、図15に示す処理をステップ番号に沿って説明する。
(ST181)CM110の指示制御部116は、運用方式をライトスルー運用に切り替えるCMを特定する。このCMは、バッテリの異常が発生したCE内のCMと、サイクリックな配列においてこれらのCMの前側に位置するCMである。図14の例では、前者としてはCM210,220,310,320が特定され、後者としてはCM310,320,410,420が特定される。
(ST182)CM110の指示制御部116は、CM120に、ライトスルー運用の開始指示を行う。
(ST183)CM110の指示制御部116は、CM210に、ライトスルー運用の開始指示を行う。
(ST184)CM110の指示制御部116は、CM220に、ライトスルー運用の開始指示を行う。
(ST185)CM110の指示制御部116は、CM310に、ライトスルー運用の開始指示を行う。
(ST186)CM110の指示制御部116は、CM320に、ライトスルー運用の開始指示を行う。
(ST187)CM110の指示制御部116は、CM110のアクセス制御部114に、ライトスルー運用の開始を指示する。CM110のアクセス制御部114は、ライトスルー運用によるローカルキャッシュLC1へのアクセス制御を開始する。このとき、CM110のアクセス制御部114は、ローカルキャッシュLC1への書き込みをライトスルー方式で制御する。
(ST188)CM120のアクセス制御部は、ライトスルー運用によるローカルキャッシュLC5へのアクセス制御を開始する。このとき、CM120のアクセス制御部は、ローカルキャッシュLC5への書き込みをライトスルー方式で制御する。
(ST189)CM210のアクセス制御部は、ライトスルー運用によるローカルキャッシュLC2へのアクセス制御を開始する。このとき、CM210のアクセス制御部は、ローカルキャッシュLC2への書き込みをライトスルー方式で制御する。
(ST190)CM220のアクセス制御部は、ライトスルー運用によるローカルキャッシュLC6へのアクセス制御を開始する。このとき、CM220のアクセス制御部は、ローカルキャッシュLC6への書き込みをライトスルー方式で制御する。
(ST191)CM310のアクセス制御部は、ライトスルー運用によるローカルキャッシュLC3へのアクセス制御を開始する。このとき、CM310のアクセス制御部は、ローカルキャッシュLC3への書き込みをライトスルー方式で制御する。
(ST192)CM320のアクセス制御部は、ライトスルー運用によるローカルキャッシュLC7へのアクセス制御を開始する。このとき、CM320のアクセス制御部は、ローカルキャッシュLC7への書き込みをライトスルー方式で制御する。
図16は、状態2から状態3に遷移する際のテーブルの変化を示す図である。図15の処理が終了した後、以下のようにしてボリューム管理テーブル113aと構成管理テーブル113bとが更新される。なお、図16における状態3でのボリューム管理テーブル113aおよび構成管理テーブル113bでは、変更されたCMの識別番号に下線を付して示している。
CM110の指示制御部116は、ボリューム管理テーブル113aにおける初期状態に対応するローカルキャッシュおよびミラーキャッシュの項目(図6参照)に基づいて、ボリューム管理テーブル113aにおける現状に対応するローカルキャッシュおよびミラーキャッシュの割り当て先CMを、初期状態に戻す。これにより、ボリューム管理テーブル113aは図16の右上に示すように更新される。
なお、図16の右上に示したボリューム管理テーブル113aでは、実際には使用されないミラーキャッシュの割り当て先CMを、括弧を付けて示している。実際の処理では、例えば、状態3では、ボリューム管理テーブル113aにおける現状に対応する項目の登録内容は、初期状態に対応する項目の登録内容と同一とされる。これにより、異常が発生したバッテリのいずれかが正常なバッテリに交換された際に、ボリューム管理テーブル113aをそのまま参照してローカルキャッシュやミラーキャッシュの割り当て変更先CMを特定することができる。また、状態13では、実際には使用されないミラーキャッシュの割り当て先CMについては、ボリューム管理テーブル113aとは別に管理されればよい。
また、指示制御部116は、構成管理テーブル113bを更新する。この更新では、構成管理テーブル113bにおいてBackward CM,Forward CMの欄が空欄のCMが、サイクリックな配列に再度挿入されるように行われる。これにより、構成管理テーブル113bは、図16の右下に示すように、初期状態と同様の状態に更新される。
次に、CMの処理についてフローチャートで説明する。
図17は、CE内マスタによるバッテリ状態の監視処理例を示すフローチャートである。図17では、CM110がCE内マスタに設定されているものとする。以下、図17に示す処理をステップ番号に沿って説明する。図17の処理は、一定時間ごとに実行される。
(S11)監視部115は、バッテリ140に対してポーリングを実行する。
(S12)監視部115は、バッテリ140の状態が正常状態から異常状態へ、または異常状態から正常状態へ変化したかを判定する。なお、監視部115は、例えば、バッテリ140が故障しているとき、または、バッテリ140の充電率が閾値未満であるとき、バッテリ140が異常状態であると判定する。バッテリ140の状態が変化した場合、処理をステップS13に進める。バッテリ140の状態が変化していない場合、処理を終了する。
(S13)監視部115は、マスタCMにバッテリ140の状態を示す通知を送信する。ステップS12でバッテリ140が異常状態に変化したと判定した場合、監視部115は、バッテリ140が異常である旨を示すバッテリ異常通知を送信する。また、ステップS12でバッテリ140が正常状態に変化したと判定した場合、監視部115は、バッテリ140が正常である旨を示すバッテリ正常通知を送信する。そして、処理を終了する。
なお、CM110がマスタCMである場合には、ステップS13では、バッテリ異常通知またはバッテリ正常通知がCM110の指示制御部116に対して通知される。
図18は、バッテリ異常通知を受信する場合のマスタCMの処理例を示すフローチャートである。図18では、マスタCMが、CM110に設定されているものとする。以下、図18に示す処理をステップ番号に沿って説明する。
(S21)指示制御部116は、CE内マスタからバッテリ異常通知を受信する。バッテリ異常通知には、どのバッテリが異常であるかを示す情報が含まれている。なお、指示制御部116は、CM110の監視部115からバッテリ異常通知を受信する場合もある。
(S22)指示制御部116は、ストレージシステムに存在するバッテリのうち、異常が発生したバッテリの数が閾値以上であるか否かを判定する。閾値以上の場合、処理をステップS28に進める。閾値未満の場合、処理をステップS23に進める。ステップS23に進むことで、割り当て変更処理が実行される。
なお、ストレージシステムに含まれるバッテリの個数(すなわち、CEの台数)をNとすると、閾値は(N−1)以上の値に設定される。それは、バッテリが正常なCEの残り台数が1台になると、バッテリが正常な複数のCE間でローカルキャッシュのデータを二重化しながらライトバック運用を行うことができなくなるからである。
(S23)指示制御部116は、構成管理テーブル113bを参照し、ローカルキャッシュと物理記憶領域とを同期させるCMを特定する。具体的には、指示制御部116は、バッテリの異常が検出されたCE内のCMと、このCMにローカルキャッシュのデータをミラーリングしているCMとを、ローカルキャッシュと物理記憶領域とを同期させるCMとして特定する。
指示制御部116は、特定されたCMに対して、ローカルキャッシュに格納されているデータを同期させるように指示する同期指示を送信する。指示制御部116は、同期指示を送信したCMから完了通知を受信すると、処理をステップS24に進める。なお、特定されたCMがマスタCMである場合、指示制御部116は、同期指示をCM110内の変更制御部117に通知する。
(S24)指示制御部116は、構成管理テーブル113bを参照し、ローカルキャッシュおよびミラーキャッシュの割り当てをどのように変更するかを判定する。
(S25)指示制御部116は、ローカルキャッシュおよびミラーキャッシュが新たに割り当てられるCMに対して、割り当て変更指示を出力する。指示制御部116は、割り当て変更指示を送信したCMから完了通知を受信すると、処理をステップS26に進める。なお、ローカルキャッシュおよびミラーキャッシュが新たに割り当てられるCMがマスタCMである場合、指示制御部116は、割り当て変更指示をCM110内の変更制御部117に通知する。
(S26)指示制御部116は、割り当てられているローカルキャッシュの割り当て先が他のCMに変更されるCMに対して、そのローカルキャッシュのデータの転送指示を送信する。このとき、指示制御部116は、ローカルキャッシュの割り当て変更先CMにおいて、このローカルキャッシュのために確保されるRAMの容量を計算し、算出された容量分だけローカルキャッシュのデータを転送するように指示する。
転送指示を送信したCMから完了通知を受信すると、処理をステップS27に進める。なお、割り当てられているローカルキャッシュの割り当て先が他のCMに変更されるCMが、マスタCMである場合、指示制御部116は、転送指示をCM110内の変更制御部117に通知する。
(S27)変更制御部117は、ボリューム管理テーブル113aの現状に対応する項目を更新する。また、変更制御部117は、バッテリの異常が検出されたCE内のCMがサイクリックな配列から除外されるように、構成管理テーブル113bを更新する。そして、処理をステップS29に進める。
(S28)指示制御部116は、運用切り替え処理を実行する。
(S29)変更制御部117は、更新したボリューム管理テーブル113aを全てのCMに送信する。そして、処理を終了する。
なお、ステップS22の判定では、ローカルキャッシュの容量と閾値とが比較されてもよい。この容量とは、ステップS24で判定されるようにローカルキャッシュの割り当て先CMを変更したと仮定した場合に、割り当て変更先のCMにおいて1つのローカルキャッシュに割り当てられるRAMの最少容量である。例えば、前述の状態1においてCE200のバッテリ240が故障した場合を考える。ここで、ローカルキャッシュLC2の割り当て先をCM210からCM110に変更した場合、CM110においてローカルキャッシュLC2に割り当てられるRAMの容量は、割り当て変更前よりも小さくなる。ステップS22では、このようにCM110においてローカルキャッシュLC2に割り当てられるRAMの容量と、閾値とが比較される。
容量が閾値以下の場合、LUのアクセスのために使用可能なローカルキャッシュの容量が小さく、効率的なアクセス制御を行うことができないと推定される。また、容量が閾値以下の場合には、CMがアクセス制御を担当するLUの数が多すぎるため、LU当たりのアクセス速度が著しく低いとも推定される。そこで、ステップS22の判定では、容量が閾値以下の場合、ステップS28の処理が実行され、容量が閾値より大きい場合、ステップS23の処理が実行されてもよい。
また、他の例として、ステップS22の判定では、1つのCMがアクセス制御を担当するLUの数と閾値とが比較されてもよい。このLUの数とは、ステップS24で判定されるようにローカルキャッシュの割り当て先CMを変更したと仮定した場合に、割り当て変更先のCMがそのCM内のローカルキャッシュを用いてアクセス制御を実行するLUの最大数である。この例でも、LUの数が閾値以上の場合、LU当たりのアクセス速度が著しく低いと推定される。そこで、ステップS22の判定では、LUの数が閾値以上の場合、ステップS28の処理が実行され、LUの数が閾値より少ない場合、ステップS23の処理が実行されてもよい。
ローカルキャッシュの数と閾値とを比較する場合、あるいはLUの数と閾値とを比較する場合には、ステップS22でこのような判定を行う前に、ステップS24の処理を実行して、割り当てが変更された後の状態を指示制御部116が認識できるように、図18の処理が変形される。
図19は、運用切り替え処理の例を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。図19に示す処理はステップS28の処理に対応する。
(S31)指示制御部116は、ローカルキャッシュと物理記憶領域とを同期させるCMを特定する。指示制御部116は、まず、バッテリの異常が検出されたCEに含まれるCMを、同期させるCMとして特定する。CM110の指示制御部116はさらに、ボリューム管理テーブル113aに基づいて、特定されたCMにローカルキャッシュのデータをミラーリングしているCMを、同期させるCMとして特定する。
指示制御部116は、特定されたCMに対して、ローカルキャッシュに格納されているデータを同期させるように指示する同期指示を送信する。指示制御部116は、同期指示を送信したCMから完了通知を受信すると、処理をステップS32に進める。なお、特定されたCMがマスタCMである場合、指示制御部116は、同期指示をCM110内の変更制御部117に通知する。
(S32)指示制御部116は、ボリューム管理テーブル113aに基づいて、ローカルキャッシュの割り当てをどのように変更するかを判定する。また、指示制御部116は、ミラーキャッシュの割り当てを変更するCM(ミラーキャッシュが割り当てられなくなるCM)を特定する。
(S33)指示制御部116は、ローカルキャッシュが新たに割り当てられるCMと、ミラーキャッシュが割り当てられなくなるCMに対して、割り当て変更指示を送信する。また、指示制御部116は、割り当てられているローカルキャッシュの割り当て先が他のCMに変更されるCMに対して、そのローカルキャッシュのデータを割り当て変更先のCMに転送する転送指示を送信する。また、指示制御部116は、転送指示を送信したCMに対して、転送指示対象のローカルキャッシュのデータを消去して、その割り当てを解除するように指示する。
(S34)指示制御部116は、運用方式をライトスルー運用に切り替えるCMを特定する。指示制御部116は、特定されたCMに対して、ライトスルー運用の開始指示を送信する。
(S35)変更制御部117は、ボリューム管理テーブル113aの現状に対応する項目を更新する。
ここで、1つのCMに多くのローカルキャッシュを割り当ててしまうことで、そのCMにアクセスが集中して負荷が大きくなることが考えられる。第2の実施の形態によれば、閾値を設け、1つのCMに多くのローカルキャッシュが割り当てられることを回避させている(ステップS22のYes)。そして、閾値以上になった場合、指示制御部116は、LUの書き込み制御をライトスルー方式に切り替えさせる。これにより、1つのCMにアクセスが集中して負荷が大きくなることを回避することができる。
図20は、割り当て変更処理時における各CMの処理の例を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。図20では、例としてCM110が行う処理として説明する。
(S41)変更制御部117は、マスタCMから同期指示を受信したか否かを判定する。受信した場合、処理をステップS42に進める。受信していない場合、処理をステップS43に進める。
また、自CMがマスタCMに設定されている場合、変更制御部117は、指示制御部116から同期指示の通知を受ける。指示制御部116から同期指示の通知を受けた場合には、処理をステップS42に進める。
(S42)変更制御部117は、ローカルキャッシュに格納されているデータのうち、ローカルキャッシュに割り当てられた物理記憶領域(HDD)に未格納のデータを、物理記憶領域に書き込む。書き込みが完了すると、変更制御部117は、マスタCMに同期完了通知を送信する。
(S43)変更制御部117は、マスタCMから割り当て変更指示を受信したか否かを判定する。受信した場合、処理をステップS44に進める。受信していない場合、処理をステップS45に進める。
また、自CMがマスタCMに設定されている場合、変更制御部117は、指示制御部116から割り当て変更指示の通知を受ける。指示制御部116から割り当て変更指示を受けた場合には、処理をステップS44に進める。
(S44)変更制御部117は、割り当て変更指示によって新たに割り当てが指示されたローカルキャッシュまたはミラーキャッシュの領域を、RAM上に確保する。これにより、新たなローカルキャッシュまたはミラーキャッシュが割り当てられる。変更制御部117は、割り当て処理を完了すると、完了通知をマスタCMに送信する。
(S45)変更制御部117は、マスタCMから転送指示を受信したか否かを判定する。受信した場合、処理をステップS46に進める。受信していない場合、処理をステップS47に進める。
また、自CMがマスタCMに設定されている場合、変更制御部117は、指示制御部116から転送指示の通知を受ける。指示制御部116から転送指示の通知を受けた場合には、処理をステップS46に進める。
(S46)変更制御部117は、ローカルキャッシュに格納されているデータを転送指示が指定するCMに転送する。変更制御部117は、転送が正常に完了すると、完了通知をマスタCMに送信して、処理をステップS47に進める。
(S47)変更制御部117は、他のCMから転送されたローカルキャッシュのデータを受信したか否かを判定する。受信した場合、処理をステップS48に進める。受信していない場合、処理をステップS49に進める。
(S48)変更制御部117は、ステップS44で確保したローカルキャッシュ領域に、転送されたデータを格納する。
(S49)変更制御部117は、マスタCMから、更新されたボリューム管理テーブル113aの内容を受信する。変更制御部117は、受信した内容によって、自装置が保持するボリューム管理テーブル113aの内容を更新する。そして、処理を終了する。
図21は、運用切り替え処理時における各CMの処理例(その1)を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。図21では、CM110が行う処理として説明する。
(S51)変更制御部117は、マスタCMから同期指示を受信したか否かを判定する。受信した場合、処理をステップS52に進める。受信していない場合、処理をステップS53に進める。
また、自CMがマスタCMに設定されている場合、変更制御部117は、指示制御部116から同期指示の通知を受ける。指示制御部116から同期指示の通知を受けた場合には、処理をステップS52に進める。
(S52)変更制御部117は、ローカルキャッシュ領域111に格納されているデータのうち、ローカルキャッシュ領域111に割り当てられた物理記憶領域(HDD)に未格納のデータを、物理記憶領域に書き込む。書き込みが完了すると、変更制御部117は、マスタCMに同期完了通知を送信する。
(S53)変更制御部117は、マスタCMから割り当て変更指示を受信したか否かを判定する。受信した場合、処理をステップS54に進める。受信していない場合、処理をステップS58に進める。
また、自CMがマスタCMに設定されている場合、変更制御部117は、指示制御部116から割り当て変更指示の通知を受ける。指示制御部116から割り当て変更指示を受けた場合には、ステップS58に進める。
(S54)変更制御部117は、割り当て変更指示によりローカルキャッシュの新規割り当てが指示されたか否かを判定する。ローカルキャッシュの新規割り当てが指示された場合、処理をステップS55に進める。ローカルキャッシュの新規割り当てが指示されていない場合、処理をステップS56に進める。
(S55)変更制御部117は、割り当て変更指示によって新たに割り当てが指示されたローカルキャッシュの領域を、RAM上に確保する。これにより、新たなローカルキャッシュが割り当てられる。変更制御部117は、割り当て処理を完了すると、完了通知をマスタCMに送信する。
(S56)変更制御部117は、割り当て変更指示によってミラーキャッシュの解除が指示されたか否かを判定する。ミラーキャッシュの解除が指示された場合、処理をステップS57に進める。ミラーキャッシュの解除が指示されていない場合、処理をステップS58に進める。
(S57)変更制御部117は、ミラーキャッシュに格納されているデータを消去し、ミラーキャッシュの割り当てを解除する。
(S58)変更制御部117は、マスタCMから転送指示を受信したか否かを判定する。受信した場合、処理をステップS59に進める。受信していない場合、処理をステップS63に進める。
また、自CMがマスタCMに設定されている場合、変更制御部117は、指示制御部116から転送指示の通知を受ける。指示制御部116から転送指示の通知を受けた場合には、処理をステップS59に進める。
(S59)変更制御部117は、ローカルキャッシュに格納されているデータを転送指示が指定するCMに転送する。変更制御部117は、転送が正常に完了すると、完了通知をマスタCMに送信して、処理をステップS61に進める。
図22は、運用切り替え処理時における各CMの処理例(その2)を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。
(S61)変更制御部117は、ローカルキャッシュの割り当てを解除するように指示する割り当て変更指示を、マスタCMから受信したか否かを判定する。受信した場合、処理をステップS62に進める。受信していない場合、処理をステップS63に進める。
また、自CMがマスタCMに設定されている場合、変更制御部117は、指示制御部116から割り当て変更指示の通知を受ける。指示制御部116から割り当て変更指示を受けた場合には、処理をステップS62に進める。
(S62)変更制御部117は、ローカルキャッシュに格納されているデータを消去し、ローカルキャッシュの割り当てを解除する。
(S63)変更制御部117は、他のCMから転送されたデータを受信したか否かを判定する。受信した場合、処理をステップS64に進める。受信していない場合、処理をステップS65に進める。
(S64)変更制御部117は、ステップS55でRAMに確保したローカルキャッシュの領域に、転送されたデータを格納する。
(S65)変更制御部117は、ライトスルー運用の開始指示を受信したか否かを判定する。受信した場合、処理をステップS66に進める。受信していない場合、処理をステップS67に進める。
また、自CMがマスタCMに設定されている場合、変更制御部117は、指示制御部116からライトスルー運用の開始指示の通知を受ける。変更制御部117は、指示制御部116から開始指示を受けた場合には、処理をステップS66に進める。
(S66)アクセス制御部114は、運用方式をライトバック運用からライトスルー運用に切り替え、LUへのアクセス制御を開始する。このとき、アクセス制御部114は、LUの書き込みをライトスルー方式で制御する。
(S67)変更制御部117は、マスタCMから、更新されたボリューム管理テーブル113aの内容を受信する。変更制御部117は、受信した内容によって、自装置が保持するボリューム管理テーブル113aの内容を更新する。そして、処理を終了する。
次に、異常が発生したバッテリが正常なバッテリに交換され、異常が発生しているバッテリの数が閾値未満になった場合を説明する。
図23は、異常バッテリの数が閾値未満になった場合のマスタCMの処理例を示すフローチャートである。図23では、マスタCMがCM110に設定されているものとする。以下、図23に示す処理をステップ番号に沿って説明する。
(S71)指示制御部116は、CE内マスタからバッテリ正常通知を受信する。バッテリ正常通知には、どのバッテリが正常であるかを示す情報が含まれている。
(S72)指示制御部116は、バッテリが異常であるCEを1つ選択する。
(S73)指示制御部116は、ステップS72で選択したCEのバッテリに新たに異常が発生したものとみなして、ステップS24〜S26,S29の処理を実行する。
(S74)指示制御部116は、バッテリが異常であるすべてのCEを選択したか否かを判定する。未選択のCEがある場合、処理をステップS72に進め、次のCEを選択する。すべてのCEを選択済みの場合、処理を終了する。
以上の処理により、バッテリが異常であるCE内のCMには、ローカルキャッシュおよびミラーキャッシュが割り当てられない状態となる。
(S75)指示制御部116は、ローカルキャッシュが割り当てられているCMに対して、ライトバック運用を開始するように指示する。
次に、異常が発生しているバッテリの数が閾値未満の状態で、異常が発生しているいずれかのバッテリが正常なバッテリ交換された場合について説明する。
図24は、正常なバッテリがさらに増えた場合のマスタCMの処理例を示すフローチャートである。図24では、マスタCMがCM110に設定されているものとする。以下、図24に示す処理をステップ番号に沿って説明する。
(S81)指示制御部116は、CE内マスタからバッテリ正常通知を受信する。バッテリ正常通知には、どのバッテリが正常であるかを示す情報が含まれている。
(S82)指示制御部116は、バッテリが交換されたCE内のCMがサイクリックな配列に挿入されるように、構成管理テーブル113bを更新する。
(S83)指示制御部116は、ローカルキャッシュまたはミラーキャッシュの割り当てを変更するLUを特定する。具体的には、指示制御部116は、ステップS82で更新された構成管理テーブル113bに基づいて、サイクリックな配列において、バッテリが交換されたCE内のCMの後ろ側のCMと前側のCMとを特定する。指示制御部116は、ボリューム管理テーブル113aにおいて、特定された後ろ側のCMおよび前側のCMが、それぞれローカルキャッシュおよびミラーキャッシュの割り当て先として登録されているLUを特定する。
(S84)指示制御部116は、ステップS83で特定されたLUについて、ローカルキャッシュとミラーキャッシュのいずれかの割り当て先を変更する。例えば、指示制御部116は、ボリューム管理テーブル113aに基づき、ローカルキャッシュの割り当て先CMが初期状態と同じであるLUについては、ミラーキャッシュの割り当て先CMを、ステップS83で特定した前側のCMに変更する。また、指示制御部116は、ボリューム管理テーブル113aに基づき、ミラーキャッシュの割り当て先CMが初期状態と同じであるLUについては、ローカルキャッシュの割り当て先CMを、ステップS83で特定した後ろ側のCMに変更する。また、指示制御部116は、ボリューム管理テーブル113aに基づき、ローカルキャッシュとミラーキャッシュのどちらの割り当て先CMも初期状態と異なるLUについては、ローカルキャッシュの割り当て先CMをステップS83で特定した後ろ側のCMに変更するか、または、ミラーキャッシュの割り当て先CMをステップS83で特定した前側のCMに変更する。
10,20,30 制御装置
11,21,31 メモリ
11a,21a キャッシュ
21b,31b ミラーキャッシュ
12,22 制御部
13,23,33 バッテリ
40 監視装置
50 電源
61,62 記憶装置
S1,S2,S3 ステップ

Claims (6)

  1. 第1のキャッシュが割り当てられた第1のメモリと、第1の記憶装置への書き込みを前記第1のキャッシュを用いてライトバック方式で制御する第1の制御部と、を有する第1の制御装置と、
    第2のキャッシュと、前記第1のキャッシュのミラーデータが格納される第1のミラーキャッシュとが割り当てられた第2のメモリと、第2の記憶装置への書き込みを前記第2のキャッシュを用いてライトバック方式で制御する第2の制御部と、を有する第2の制御装置と、
    前記第2のキャッシュのミラーデータが格納される第2のミラーキャッシュが割り当てられた第3のメモリを有する第3の制御装置と、
    前記第1のメモリ、前記第2のメモリおよび前記第3のメモリに電力を供給する電源と、
    前記電源が停電した場合に前記第1のメモリに電力を供給する第1のバッテリと、
    前記電源が停電した場合に前記第2のメモリに電力を供給する第2のバッテリと、
    前記電源が停電した場合に前記第3のメモリに電力を供給する第3のバッテリと、
    前記第2のバッテリの異常が発生した場合に、前記第2のキャッシュの割り当て先を前記第1のメモリに変更し、前記第1のミラーキャッシュの割り当て先を前記第3のメモリに変更し、前記第1の制御装置に対して、前記第1の記憶装置への書き込みを前記第1のキャッシュを用いてライトバック方式で制御するとともに、前記第2の記憶装置への書き込みを、前記第2のキャッシュを用いてライトバック方式で制御するように指示する監視装置と、
    を有するストレージシステム。
  2. 前記第2の記憶装置が前記第2の制御装置に接続されている場合、前記第1の制御装置は、前記第1のメモリに割り当てられた前記第2のキャッシュに格納したデータを、前記第2の制御装置を通じて前記第2の記憶装置に書き込む、
    請求項1記載のストレージシステム。
  3. 複数の記憶装置と、
    複数の制御装置であって、前記複数の制御装置のそれぞれは、キャッシュおよびミラーキャッシュが割り当てられたメモリと、前記複数の記憶装置のうち前記キャッシュに対応づけられた所定の記憶装置に対する書き込みを、前記キャッシュを用いてライトバック方式で制御し、前記複数の制御装置が循環的に配置されるように定義された前記複数の制御装置の配列において第1方向側に隣接する他の制御装置のメモリに割り当てられたミラーキャッシュに、前記キャッシュのデータをミラーリングする制御部と、を有する前記複数の制御装置と、
    前記複数の制御装置がそれぞれ有するメモリに電力を供給する電源と、
    前記複数の制御装置のうち、前記配列において少なくとも隣接する2つの制御装置に対して異なるバッテリが対応づけられるように設けられた複数のバッテリであって、前記複数のバッテリのそれぞれは、前記電源が停電したとき、対応するメモリに電力を供給する、前記複数のバッテリと、
    を有し、
    前記複数の制御装置のうち第1の制御装置の制御部は、
    前記複数のバッテリのうち一のバッテリの異常が発生したとき、前記複数のバッテリのうち異常が発生したバッテリの台数を判定し、
    前記台数が所定の閾値より小さい場合には、前記複数の制御装置のうち、前記一のバッテリに対応づけられた第2の制御装置のメモリに割り当てられている第1のキャッシュの割り当て先を、前記複数の制御装置のうち、前記配列において前記第2の制御装置の第2方向側に隣接する第3の制御装置のメモリに変更し、前記第2の制御装置のメモリに割り当てられている第1のミラーキャッシュの割り当て先を、前記複数の制御装置のうち、前記配列において前記第2の制御装置の前記第1方向側に隣接する第4の制御装置のメモリに変更し、前記第3の制御装置に対して、前記第1のミラーキャッシュにミラーデータが格納される第2のキャッシュに対応づけられた第1の記憶装置への書き込みを、前記第2のキャッシュを用いてライトバック方式で制御するとともに、前記第1のキャッシュに対応づけられた第2の記憶装置への書き込みを、前記第1のキャッシュを用いてライトバック方式で制御するように指示する、
    ストレージシステム。
  4. 前記第1の制御装置の制御部は、前記一のバッテリの異常が発生した後、前記複数のバッテリのうち前記一のバッテリとは異なる他のバッテリの異常が発生したとき、前記台数が前記閾値以上である場合には、前記第1のキャッシュの割り当て先を前記第2の制御装置のメモリに戻し、前記第2の制御装置に対して、前記第2の記憶装置への書き込みを前記第1のキャッシュを用いてライトスルー方式で制御するように指示する、
    請求項3記載のストレージシステム。
  5. 前記第1の制御装置の制御部は、前記一のバッテリの異常が発生したとき、前記台数が前記閾値以上である場合には、前記第2の制御装置に対して、前記第2の記憶装置への書き込みを、前記第1のキャッシュを用いてライトスルー方式で制御するように指示する、
    請求項4記載のストレージシステム。
  6. 複数の記憶装置と、複数の制御装置と、電源とを有するストレージシステムに接続する監視装置であって、前記複数の制御装置のそれぞれは、キャッシュおよびミラーキャッシュが割り当てられたメモリと、前記複数の記憶装置のうち前記キャッシュに対応づけられた所定の記憶装置に対する書き込みを、前記キャッシュを用いてライトバック方式で制御し、前記複数の制御装置が循環的に配置されるように定義された前記複数の制御装置の配列において第1方向側に隣接する他の制御装置のメモリに割り当てられたミラーキャッシュに、前記キャッシュのデータをミラーリングする制御部とを有し、前記電源は、前記複数の制御装置がそれぞれ有するメモリに電力を供給する、前記監視装置において、
    前記配列を定義した定義情報を記憶する記憶部と、
    複数のバッテリのそれぞれにおける異常の発生を監視する第1の処理であって、前記複数のバッテリは、前記配列において少なくとも隣接する2つの制御装置に対して異なるバッテリが対応づけられるように設けられ、前記複数のバッテリのそれぞれは、前記電源が停電したときに対応するメモリに電力を供給する、前記第1の処理と、
    前記複数のバッテリのうち一のバッテリの異常が発生した場合に、前記定義情報に基づいて、前記複数の制御装置のうち、前記一のバッテリに対応づけられた第1の制御装置のメモリに割り当てられている第1のキャッシュの割り当て先を、前記複数の制御装置のうち、前記配列において前記第1の制御装置の第2方向側に隣接する第2の制御装置のメモリに変更し、前記第1の制御装置のメモリに割り当てられている第1のミラーキャッシュの割り当て先を、前記複数の制御装置のうち、前記配列において前記第1の制御装置の前記第1方向側に隣接する第3の制御装置のメモリに変更し、前記第2の制御装置に対して、前記第1のミラーキャッシュにミラーデータが格納される第2のキャッシュに対応づけられた第1の記憶装置への書き込みを、前記第2のキャッシュを用いてライトバック方式で制御するとともに、前記第1のキャッシュに対応づけられた第2の記憶装置への書き込みを、前記第1のキャッシュを用いてライトバック方式で制御するように指示する第2の処理と、
    を実行する制御部と、
    を有する監視装置。
JP2015217192A 2015-11-05 2015-11-05 ストレージシステムおよび監視装置 Active JP6524889B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015217192A JP6524889B2 (ja) 2015-11-05 2015-11-05 ストレージシステムおよび監視装置
US15/335,740 US9916242B2 (en) 2015-11-05 2016-10-27 Storage system and monitor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015217192A JP6524889B2 (ja) 2015-11-05 2015-11-05 ストレージシステムおよび監視装置

Publications (2)

Publication Number Publication Date
JP2017091025A JP2017091025A (ja) 2017-05-25
JP6524889B2 true JP6524889B2 (ja) 2019-06-05

Family

ID=58667657

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015217192A Active JP6524889B2 (ja) 2015-11-05 2015-11-05 ストレージシステムおよび監視装置

Country Status (2)

Country Link
US (1) US9916242B2 (ja)
JP (1) JP6524889B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10482016B2 (en) * 2017-08-23 2019-11-19 Qualcomm Incorporated Providing private cache allocation for power-collapsed processor cores in processor-based systems
JP7131324B2 (ja) * 2018-11-16 2022-09-06 日本電気株式会社 ストレージアクセス制御装置、ストレージアクセス制御方法、及び、ストレージアクセス制御プログラム
BR112022001182A2 (pt) 2019-07-22 2022-03-29 Huawei Tech Co Ltd Método para melhorar a confiabilidade do sistema de armazenamento, e aparelho relacionado
CN110941397B (zh) * 2019-11-22 2022-03-08 苏州浪潮智能科技有限公司 存储集群bbu故障时的节点模式调整方法及相关组件

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3772369B2 (ja) * 1995-11-20 2006-05-10 株式会社日立製作所 記憶サブシステム
JP3204143B2 (ja) * 1997-01-06 2001-09-04 日本電気株式会社 ディスクキャッシュの制御方法
WO2004114116A1 (ja) 2003-06-19 2004-12-29 Fujitsu Limited キャッシュ二重化方式におけるミラーキャッシュからの書き戻し方法
JP4338075B2 (ja) * 2003-07-22 2009-09-30 株式会社日立製作所 記憶装置システム
JP5454177B2 (ja) * 2010-02-01 2014-03-26 富士通株式会社 ディスクアレイ装置及びディスクアレイ装置制御方法
JP5514364B2 (ja) * 2010-08-27 2014-06-04 株式会社日立製作所 記憶制御装置及び記憶制御装置の動作モード制御方法

Also Published As

Publication number Publication date
JP2017091025A (ja) 2017-05-25
US9916242B2 (en) 2018-03-13
US20170132129A1 (en) 2017-05-11

Similar Documents

Publication Publication Date Title
JP6791834B2 (ja) 記憶システム及び制御ソフトウェア配置方法
JP6524889B2 (ja) ストレージシステムおよび監視装置
US7613877B2 (en) Storage system comprising volatile cache memory and nonvolatile memory
US8024516B2 (en) Storage apparatus and data management method in the storage apparatus
JP3772369B2 (ja) 記憶サブシステム
JP4808275B2 (ja) ネットワークブートシステム
US7996611B2 (en) Backup data management system and backup data management method
US8412892B2 (en) Storage system and ownership control method for storage system
JP4842334B2 (ja) ディスクアレイ制御装置
JP6536160B2 (ja) ストレージシステム、制御装置および制御プログラム
JPH10333838A (ja) データ多重化記憶サブシステム
JP4908481B2 (ja) データ記憶装置及び筐体内レプリケーション方法
JP3667084B2 (ja) データ多重化制御方法
US9298397B2 (en) Nonvolatile storage thresholding for ultra-SSD, SSD, and HDD drive intermix
US20160259571A1 (en) Storage subsystem
JP2015191414A (ja) 制御装置、ディスクアレイ装置、及び制御方法、並びにコンピュータ・プログラム
JP2006114064A (ja) 記憶サブシステム
JP2006260141A (ja) 記憶システムの制御方法、記憶システム、記憶制御装置、記憶システムの制御プログラム、情報処理システム
JP2009265973A (ja) データ同期システム、障害復旧方法、及び、プログラム
JP2012064112A (ja) ストレージ装置、制御部およびストレージ装置制御方法
CN112230859B (zh) 一种不中断业务的读写迁移方法及装置
JP2016071768A (ja) ストレージ制御装置およびストレージシステム
JP5012599B2 (ja) メモリ内容復元装置、メモリ内容復元方法及びメモリ内容復元プログラム
JP3614328B2 (ja) ミラーディスク制御装置
WO2016006108A1 (ja) ストレージおよびその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180706

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190328

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190409

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190422

R150 Certificate of patent or registration of utility model

Ref document number: 6524889

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150