本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
<第1実施形態>
図1は、本発明の第1実施形態に係るストレージシステムの構成図である。
ストレージシステム10は、ストレージ制御装置100と、HDD部200と、バッテリ400とを有する。ストレージシステム10は、データのリード(読み出し)やライト(書込み)を行う1以上の外部装置の一例であるホスト装置とケーブルやネットワークを介して接続される。ホスト装置と接続するためのネットワークとしては、SAN(Storage Area
Network)、LAN(Local
Area Network)、インターネット、専用回線、公衆回線等であってもよく、データ通信を行うことのできるネットワークであればよい。また、ネットワークやケーブルにおけるプロトコルとしては、ファイバチャネルプロトコルや、TCP/IPプロトコルであってもよく、ホスト装置とストレージシステム10との間でデータのやりとりが可能なプロトコルであれば、任意のプロトコルであってよい。
HDD部200は、複数のHDD(ハードディスクドライブ)を有している。ストレージシステム10においては、HDD部200の複数のHDDの記憶空間を利用して、1又は複数の論理ボリュームを提供することができる。また、ストレージシステム10においては、複数のHDDの内の2以上のHDDでRAID(Redundant Array of Independent Disks)グループを構成して、RAIDグループの記憶空間を論理ボリュームとして提供することもできる。
バッテリ400は、図示しない主電源に異常が発生した場合に、所定の処理を実行可能にするための電力を蓄積しており、ストレージ制御装置100の所定の部位に電力を供給できるようになっている。本実施形態では、バッテリ400は、第1クラスタ101a及び第2クラスタ101bの第1キャッシュ部120及び第2キャッシュ部130の各部に電力を供給できるようになっている。なお、第1クラスタ101a側と、第2クラスタ101b側とに、異なるバッテリ400により電力を供給するようにしてもよい。
ストレージ制御装置100は、第1クラスタ101aと第2クラスタ101bとを有する多重化構成となっている。ストレージ制御装置100においては、電源境界(図1に一点鎖線で示す)が設けられている。すなわち、ストレージ制御装置100においては、第1クラスタ101aへの電力供給系統と、第2クラスタ101bへの電力供給系統とは異なっている。
第1クラスタ101a及び第2クラスタ101bは、それぞれ第1インタフェース部の一例であるチャネルアダプタ(CHA)110と、1次キャッシュ部120と、2次キャッシュ部130と、第2インタフェース部の一例であるディスクアダプタ(DKA)140とを有する。
CHA110は、チャネルプロセッサ(CHP)111と、信号変換/データ処理部112と、ローカルメモリ(LM)113と、データコントローラ(DTC)114とを有する。
信号変換/データ処理部112は、ネットワークやケーブルを介してホスト装置に接続可能であり、ホスト装置とストレージシステム10との間でのデータの読み出し(リード)及びデータの書込み(ライト)における各種情報の送受信に関する処理を実行する。ここで、ホスト装置から送信されるリード要求には、例えば、リード対象のブロックが管理されているLUN(Logical Unit Number)及びLBA(Logical Block Address)が含まれる。また、ホスト装置から送信されるライト要求には、例えば、ライト対象のブロックを書き込むLUN及びLBAと、ライト対象のデータとが含まれる。
本実施形態では、信号変換/データ処理部112は、ホスト装置側の信号をストレージシステム10側の信号に変換し、また、ストレージシステム10側の信号をホスト装置側の信号に変換する。また、信号変換/データ処理部112は、受信したデータをチェックし、訂正や再送等の処理を行う。また、信号変換/データ処理部112は、ホスト装置から受信したデータをストレージシステム10内で用いるデータ形式に変換し、また、ストレージシステム10内でのデータをホスト装置側のデータ形式に変換する。ストレージシステム10内でのデータ形式としては、例えば、実データに対してチェックコードを付加したデータ形式となっている。本実施形態では、チェックコードに、例えば、データの識別情報として実データの格納場所を示すLUN及びLBAが含まれている。
LM113は、CHP111により実行される処理のプログラムやデータを記憶する領域として、或いは、CHP111による処理に使用されているデータを格納する作業領域として利用される。
CHP111は、CHA110の各部を統括制御する。また、CHP111は、LM113に格納されたプログラムを実行することにより各種処理を実行する。なお、各処理については、後述する。ここで、本実施形態では、第1データ格納部、完了通知送信部、及び障害検出部は、主にCHP111によって構成される。
DTC114は、複数のクラスタ(101a、101b)の1次キャッシュ部120とバス115を介して接続されており、CHP111の制御に従って、接続された1以上の1次キャッシュ部120へ各種データを送信する。また、DTC114は、接続された各1次キャッシュ部120から送信されるデータを受信し、例えば、CHP111に渡す。
1次キャッシュ部120は、キャッシュ制御プロセッサ(CCP)121と、データセレクタ(SEL)122と、キャッシュメモリコントローラ(CMC)123と、1次キャッシュメモリ124と、データコントローラ(DTC)125と、ローカルメモリ(LM)126とを有する。
SEL122は、第1クラスタ101a及び第2クラスタ101bのCHA110のDTC114にバス115を介して接続されている。SEL122は、DTC114から送信される各種データを受信し、また、各種データを第1クラスタ101a又は第2クラスタ101bのDTC114に送信する。LM126は、CCP121により実行される処理のプログラムやデータを記憶する領域として、或いは、CCP121による処理に使用されているデータを格納する作業領域として利用される。LM126は、例えば、1次キャッシュメモリ124に格納されているデータ(キャッシュデータ)を管理するための制御情報、例えば、データを識別する情報(例えば、LUN及びLBA)と、当該データを格納している1次キャッシュメモリのアドレスとを記憶する。
CMC123は、CCP121と、SEL122と、1次キャッシュメモリ124と、DTC125とに接続されている。CMC123は、CCP121の制御に従って、接続された各部間でのデータの受け渡しを行う。例えば、CMC123は、SEL122やDTC125からデータを受け取って1次キャッシュメモリ124に格納する処理や、1次キャッシュメモリ124から読み出されたデータをSEL122やDTC125に渡す処理等を行う。1次キャッシュメモリ124は、揮発メモリ、例えば、DRAM(Dynamic Random Access Memory)である。1次キャッシュメモリ124は、CHA110によって受信されたデータや、2次キャッシュ部130から渡されたデータを一時的に記憶する。1次キャッシュメモリ124の記憶容量としては、例えば、数百ギガバイトとしてもよい。
CCP121は、1次キャッシュ部120の各部を統括制御する。また、CCP121は、LM126に格納されたプログラムを実行することにより各種処理を実行する。なお、各処理については、後述する。ここで、本実施形態では、第2データ格納制御部、1次キャッシュデータ消去部、1次キャッシュ調整部は、主に、CCP121によって構成される。DTC125は、複数のクラスタ(101a、101b)の2次キャッシュ部130とバス128を介して接続されており、CCP121の制御に従って、接続された1以上の2次キャッシュ部130へ各種データを送信する。また、DTC125は、接続された各2次キャッシュ部130から送信されるデータを受信し、例えば、CCP121に渡す。
2次キャッシュ部130は、キャッシュ制御プロセッサ(CCP)131と、データセレクタ(SEL)132と、キャッシュメモリコントローラ(CMC)133と、2次キャッシュメモリ134と、データコセレクタ(SEL)135と、ローカルメモリ(LM)136とを有する。
SEL132は、第1クラスタ101a及び第2クラスタ101bの第1キャッシュ部130のDTC125にバス128を介して接続されている。SEL132は、DTC125から送信される各種データを受信し、また、各種データを第1クラスタ101a又は第2クラスタ101bのDTC125に送信する。LM136は、CCP131により実行される処理のプログラムやデータを記憶する領域として、或いは、CCP131による処理に使用されているデータを格納する作業領域として利用される。LM136は、例えば、2次キャッシュメモリ134に格納されているデータ(キャッシュデータ)を管理するための制御情報、例えば、データを識別する情報(例えば、LUN及びLBA)と、当該データを格納している2次キャッシュメモリのアドレスとを記憶する。
CMC133は、CCP131と、SEL132と、2次キャッシュメモリ134と、SEL135とに接続されている。CMC133は、CCP131の制御に従って、接続された各部間でのデータの受け渡しを行う。例えば、CMC133は、SEL132やSEL135からデータを受け取って2次キャッシュメモリ134に格納する処理や、2次キャッシュメモリ134から読み出されたデータをSEL132やSEL135に渡す処理等を行う。
2次キャッシュメモリ134は、例えば、フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change RAM)等の電源を供給せずともデータを記憶しておくことのできる不揮発メモリである。2次キャッシュメモリ134は揮発メモリであるので、バッテリ400によるバックアップをせずともデータの記憶を維持できるという効果がある。このため、バッテリ400に要求される電力容量を抑えることができる。本実施形態では、2次キャッシュメモリ134の記憶容量は、1次キャッシュメモリ124の記憶容量よりも大きくなっている。2次キャッシュメモリ134の記憶容量としては、例えば、数テラバイト以上としてもよい。なお、ストレージシステム10に要するコストを考慮すると、2次キャッシュメモリ134は、1次キャッシュメモリ124よりも所定の記憶容量あたりの単価が安いメモリを使用することが好ましい。2次キャッシュメモリ134は、1次キャッシュ部120から渡されたデータや、DKA140から渡されたデータを一時的に記憶する。なお、2次キャッシュメモリ134をDRAM等の揮発メモリとしてもよい。2次キャッシュメモリ134を揮発メモリとすると、不揮発メモリとした場合に比して、データの入出力の速度が高速となる。また、フラッシュメモリに比べて、メモリの書き換え回数の制限がないという効果もある。
CCP131は、2次キャッシュ部120の各部を統括制御する。また、CCP131は、LM136に格納されたプログラムを実行することにより各種処理を実行する。なお、各処理については、後述する。ここで、本実施形態では、第3データ格納制御部、超過データ検出部、2次キャッシュデータ消去部、2次キャッシュ調整部、及びアクセス管理部は、主にCCP131によって構成される。SEL135は、複数のクラスタ(101a、101b)のDKA140とバス138を介して接続されている。SEL135は、第1クラスタ101a又は第2クラスタ101bのDKA140から送信される各種データを受信し、また、各種データを第1クラスタ101a又は第2クラスタ101bのDKA140に送信する。
DKA140は、(データセレクタ)SEL141と、ディスクアダプタプロセッサ(DKP)142と、冗長データ生成/信号変換部143とを有する。SEL141は、第1クラスタ101a及び第2クラスタ101bの第2キャッシュ部140のSEL135にバス138を介して接続されている。SEL141は、SEL135から送信される各種データを受信し、また、各種データを第1クラスタ101a又は第2クラスタ101bのSEL135に送信する。DKP142は、DKA140の各部を統括制御する。また、DKP142は、図示しないローカルメモリに格納されたプログラムを実行することにより各種処理を実行する。
冗長データ生成/信号変換部143は、例えば、ケーブルを介してHDD部200と接続されており、HDD部200とリード又はライト対象のデータの受け渡し処理を実行する。冗長データ生成/信号変換部143は、ストレージ制御装置100側の信号をHDD部200側の信号に変換し、また、HDD部200側の信号をストレージ制御装置100側の信号に変換する。また、例えば、HDD部200をRAIDとして管理している場合には、冗長データ生成/信号変換部143は、ストレージ制御装置100から取得したデータに基づいて、RAIDに適応するための冗長データ(例えば、パリティデータ)を生成し、データ及び冗長データを複数のHDDに格納させる。
図2は、本発明の第1実施形態に係る1次キャッシュメモリ及び2次キャッシュメモリに格納されるデータの構造を示す図である。
1次キャッシュメモリ124及び2次キャッシュメモリ134に格納されるデータ300は、データアンドチェックコードフィールド301と、付加情報フィールド302とを含む。データアンドチェックコードフィールド301には、データ及びそのチェックコードが格納される。付加情報フィールド302は、書込み日時フィールド303と、参照履歴フィールド304と、読出フラグフィールド307と、HDD書込みフラグフィールド308とを含む。
書込み日時フィールド303には、対応するデータが書込まれた日時(書込み日時)が格納される。本実施形態では、書込み日時フィールド303には、当初は、1次キャッシュメモリ124、2次キャッシュメモリ134に書き込まれた日時が格納されるが、当該データがHDD部200に書き込まれた場合には、HDD部200に書き込まれた日時が格納される。
参照履歴フィールド304には、対応するデータの参照履歴情報が格納される。本実施形態では、参照履歴フィールド304は、参照回数フィールド305と、最新参照日時フィールド306とを有する。参照回数フィールド305には、対応するデータが参照された回数(参照回数)が格納される。最新参照日時フィールド306には、対応するデータが最後に参照された日時(最新参照日時)が格納される。
読出フラグフィールド307には、対応するデータが下位側(例えば、2次キャッシュメモリ134に格納されているデータであれば、HDD部200)から読み出されて格納されたデータであるのか、或いは、上位側(例えば、2次キャッシュメモリ134に格納されているデータであれば、1次キャッシュ部120側)から格納されたデータであるのかを示す読出フラグが格納される。本実施形態では、例えば、読出フラグが“1”であれば、対応するデータが下位側から格納されていることを示し、読出フラグが“0”であれば、対応するデータが上位側から格納されていることを示す。
HDD書込みフラグフィールド308には、対応するデータがHDD部200に書き込まれたデータであるか否かを示すHDD書込みフラグが格納される。本実施形態では、例えば、HDD書込みフラグが“1”であれば、対応するデータがHDD部200に格納されていることを示し、HDD書込みフラグが“0”であれば、対応するデータがHDD部200に格納されていないことを示す。
次に、第1キャッシュ部120及び第2キャッシュ部130の具体的な構成例について図面を参照して説明する。
図3Aは、本発明の第1実施形態に係る1次キャッシュボードの構成の一例を示す図である。図3Bは、本発明の第1実施形態に係るコントローラボードの構成の一例を示す図である。図4Aは、本発明の第1実施形態に係るメモリボードの構成の一例を示す図である。図4Bは、本発明の第1実施形態に係るメモリ拡張ボードの構成の一例を示す図である。
1次キャッシュ部120は、図3Aに示すように、一枚の1次キャッシュボード1200により構成されている。1次キャッシュボード1200には、複数のメモリモジュール124aで構成される1次キャッシュメモリ124、複数のモジュールで構成されるCMC123、CCP121、コネクタ1201等が設けられている。
2次キャッシュ部130は、図3Bに示すコントローラボード1300と、図4Aに示すメモリボード1310と、メモリ拡張ボード1320とにより構成されている。なお、2次キャッシュ部130における2次キャッシュメモリの記憶容量を所定量以下とする場合には、メモリ拡張ボード1320を備えなくてもよい。
コントローラボート1300には、複数のモジュールにより構成されるCMC133、CCP131、コネクタ1301等が設けられている。
メモリボード1310には、複数のメモリモジュール134a及びスペアメモリモジュール134saにより構成される2次キャッシュメモリ134が設けられている。なお、本実施形態では、メモリボード1310を複数備えるようにし、これら複数のメモリボード1310のメモリモジュール134aによって2次キャッシュメモリ134が構成されている。このように、メモリモジュール134aが設けられるメモリボード1310と、2次キャッシュメモリ134にアクセスするための制御を行うCMC133及びCCP131とを設けるコントローラボード1300とを異なるボードとしているので、後述するようにメモリモジュール134aを交換する必要がある場合においては、1枚のメモリボード1310を取り外すだけで対応することができる。すなわち、メモリモジュール134aを交換する必要がある場合において、1枚のメモリボード1310のみを閉塞するだけでよく、2次キャッシュ部130において、他のメモリボード1310のメモリデバイス134aにキャッシュされたデータを利用可能な状態としておくことができる。
メモリ拡張ボード1320は、2次キャッシュメモリ134の記憶容量を所定容量以上にするために、所定数以上のメモリボード1310により2次キャッシュメモリ134を構成する際に必要となるボードであり、コントローラボード1300によるデータの読み書き等の制御を、所定数を超えるメモリボード1310に対して行うことができるようにするためのボードである。
メモリ拡張ボード1320には、拡張用インタフェース部1322と、コネクタ1321と、コネクタ1323とが設けられる。
図5Aは、本発明の第1実施形態に係るストレージシステムの筐体の前面側の外観図である。図5Bは、本発明の第1実施形態に係るストレージシステムの筐体の背面側の外観図である。
ストレージシステム10の筐体11の前面側には、図5Aに示すように、下から順に、給電部13、基本部ボックス14、2次キャッシュメモリ拡張ボックス15、HDD実装部16が配置される。給電部13には、外部からの電源を各部に供給する図示しない電源回路や、バッテリ400が配置される。基本部ボックス14には、CHA110、1次キャッシュ部120、2次キャッシュ部130、DKA140を構成するボードが格納される。2次キャッシュメモリ拡張ボックス15には、2次キャッシュ部130の2次キャッシュメモリ134の記憶容量を所定容量以上とする場合に、2次キャッシュメモリ134を構成するメモリボード1310等が格納される。HDD実装部16には、HDD部200の複数のHDDが実装される。
ストレージシステム10の筐体11の後面側にも、図5Bに示すように、前面側と同様に、下から順に、給電部13、基本部ボックス14、2次キャッシュメモリ拡張ボックス15、HDD実装部16が配置される。本実施形態では、筐体11の前面側には、第1クラスタ101aを構成する各部が配置され、筐体11の後面側には、第2クラスタ101bを構成する各部が配置されている。
次に、ストレージシステムの筐体11内の状態を説明する。
図6は、本発明の第1実施形態に係るストレージシステムの筐体内のボードの状態を示す図である。
基本部ボックス14は、中心に基本部ボックス14用のバックボード14aを備えている。基本部ボックス14においては、バックボード14aを境にして、手前側に第1クラスタ101aが構成され、奥側に第2クラスタ101bが構成されている。
具体的には、第1クラスタ101aのCHA110と、DKA140と、1次キャッシュ部120とのそれぞれを構成するボードが手前側からバックボード14aへ差し込まれている。さらに、第1クラスタ101aの2次キャッシュ部130を構成するコントローラボード1300と、複数のメモリボード1310と、メモリ拡張ボード1320と、が手前側からバックボード14aに差し込まれている。一方、第2クラスタ101bの各部を構成するボードは、図面奥側からバックボード14aに差し込まれている。なお、バックボード14aには、各部を図1に示す接続状態とするための配線や、コントローラボード1300と、メモリボード1310と、メモリ拡張ボード1320とを接続するための配線が備えられている。
2次キャッシュメモリ拡張ボックス15においては、拡張ボックス用のバックボード15aを備えている。2次キャッシュメモリ拡張ボックス15においては、バックボード15aを境にして、手前側に第1クラスタ101aが構成され、奥側に第2クラスタ101bが構成されている。バックボード15aには、手前側から第1クラスタ101aのメモリ拡張ボード1320と、複数のメモリボード1310とが差し込まれ、奥側から第2クラスタ101bのメモリ拡張ボード1320と、複数のメモリボード1310とが差し込まれている。バックボード15aには、メモリ拡張ボード1320とメモリボード1310とを接続するための配線が備えられている。
基本部ボックス14に設けられたメモリ拡張ボード1320のコネクタ1323と、2次キャッシュメモリ拡張ボックス15に設けられたメモリ拡張ボード1320のコネクタ1323とは、ケーブル14bによって接続され、メモリ拡張ボード1320間での通信が可能になっている。これによって、基本部ボックス14に設けられているメモリコントローラボード1300のCMC133が、メモリ拡張ボード1320を介して、2次キャッシュメモリ拡張ボックス15内のメモリボード1310に対してアクセスできるようになっている。このため、2次キャッシュメモリ134を構成するメモリボード1310を、基本部ボックス14だけでなく、2次キャッシュメモリ拡張ボックス15にも設けることができ、2次キャッシュメモリ134の記憶容量を容易に拡張することができる。
次に、ストレージシステム10によるWrite要求(ライト要求)を受信した際の動作に関わるライト要求受信時処理を説明する。
図7は、本発明の第1実施形態に係るチャネルアダプタにおけるライト要求受信時処理のフローチャートである。
CHA110において、CHP111が信号変換/データ処理部112を介してホスト装置からWrite要求(ライト要求)を受信したか否かを判定し(ステップS11)、受信していない場合には、ステップS11を繰り返し実行する。一方、ライト要求を受信した場合には、CHP111は、1次キャッシュ部120に障害が発生しているか否かを検出し(ステップS12)、障害が発生していない場合には、ライト要求を第1クラスタ101a及び第2クラスタ101bのそれぞれの1次キャッシュ部120に送信する(ステップS13)。ここで、CHP111は、ライト対象のデータのデータ容量や、格納先の識別情報(書込み先ブロック)を含む情報を1次キャッシュ部120に送信する。
そして、CHP111が、各クラスタの1次キャッシュ部120の双方からWrite完了(ライト完了)を受信したか否かを判定し(ステップS14)、双方からライト完了を受信するまでステップS14を繰り返し実行する。そして、CHP111は、1次キャッシュ部120の双方からライト完了を受信した場合には、信号変換/データ処理部112を介してライト要求元のホスト装置へWrite処理完了通知(ライト処理完了通知)を送信する(ステップS17)。このライト処理完了通知を受信したホスト装置では、データのライト処理を終了することができる。
一方、1次キャッシュ部120に障害が発生していることを検出した場合(ステップS12のYes)には、CHP111は、障害時Write要求を障害が発生していない1次キャッシュ部120に送信し(ステップS15)、ライト要求に対するライト完了を受信したか否かを判定し(ステップS16)、ライト完了を受信した場合に、信号変換/データ処理部112を介してライト要求元のホスト装置へライト処理完了通知を送信する(ステップS17)。
図8は、本発明の第1実施形態に係る1次キャッシュ部におけるライト要求受信時処理のフローチャートである。
1次キャッシュ部120において、CCP121がSEL122を介してCHA110からライト要求を受信したか否かを判定し(ステップS21)、受信していない場合には、ステップS21を繰り返し実行する。一方、ライト要求を受信した場合には、CCP121は、ライト要求が通常のライト要求か、障害時ライト要求かを判定し(ステップS22)、通常のライト要求である場合には、ライト対象のデータを1次キャッシュメモリ124に格納する(ステップS23)。この場合、CCP121は、ライト対象のデータを図2に示す構造として格納し、書込み日時フィールド303には、1次キャッシュメモリ124に書き込んだ日時を書き込む。さらに、CCP121は、ライト要求に含まれているデータの識別情報と、当該データを書き込んだ1次キャッシュメモリ124の格納先(アドレス)とを対応付けてLM126に格納する。
その後、CCP121は、ライト要求を送信したCHA110にSEL122を介してライト完了を送信する(ステップS24)。
次いで、CCP121は、2次キャッシュ部130の制御指示をする必要があるか否かを判定する(ステップS25)。ここで、2次キャッシュ部130の制御指示をする必要があるか否かは、CHA110から制御指示する要求があったか否かにより判定できる。本実施形態では、一方の2次キャッシュ部130に制御指示が要求されている。この結果、制御指示をする必要がある場合(ステップS25のYes)には、ライト対象のデータがシーケンシャル処理データであるか否かを更に判定する(ステップS26)。ここで、CCP121は、CHA110から送信されるライト対象のデータの書込みブロック数が所定数(例えば、10)以上連続する場合には、ライト対象のデータがシーケンシャル処理データであると判定している。
シーケンシャル処理データでない場合(ステップS26のNo)には、CCP121は、2次キャッシュ部130に障害が発生しているか否かを判定し(ステップS27)、障害が発生していない場合には、ライト要求を第1クラスタ101a及び第2クラスタ101bのそれぞれの2次キャッシュ部130に送信する(ステップS28)。
そして、CCP121が、各クラスタの2次キャッシュ部130の双方からライト完了を受信したか否かを判定し(ステップS29)、双方からライト完了を受信するまでステップS29を繰り返し実行する。そして、CCP121は、2次キャッシュ部130の双方からライト完了を受信した場合(ステップS29のYes)には、2つの2次キャッシュ部130に同じデータを格納したことを示しているので、1次キャッシュ部120に格納されている同じデータについて、一方の1次キャッシュ部120の1次キャッシュメモリ124から削除する処理を実行し(ステップS30)、処理を終了する。本実施形態では、CCP121は、他方のクラスタの1次キャッシュ部120のCCP121との間で、1次キャッシュメモリ124の使用量に関する情報を逐次交換しているので、使用量の多いほうの1次キャッシュメモリ124からライト対象のデータを削除する。これによって、1次キャッシュメモリ124における記憶容量を適切に増加させることができる。また、一方の1次キャッシュメモリ124には、ライト対象のデータが格納されているので、当該データに対するリード要求があった場合には、当該1次キャッシュメモリ124に格納されたデータがリード要求元に送信されるので、リード要求に対する応答を迅速に行うことができる。
一方、ステップS22で、通常のライト要求ではない、すなわち、1次キャッシュ部120の障害時のライト要求であると判定した場合(ステップS22のNo)には、CCP121は、ライト要求を第1クラスタ101a及び第2クラスタ101bのそれぞれの2次キャッシュ部130に送信する(ステップS31)。
そして、CCP121が、各クラスタの2次キャッシュ部130の双方からライト完了を受信したか否かを判定し(ステップS32)、双方からライト完了を受信するまでステップS32を繰り返し実行する。そして、2次キャッシュ部130の双方からライト完了を受信した場合には、2つの2次キャッシュ部130に同じデータが格納されたことを示しているので、CCP121は、ライト完了をライト要求元のCHA110に送信し(ステップS33)、処理を終了する。これにより、1次キャッシュ部120の一方に障害がある場合には、2つの2次キャッシュ部130の2次キャッシュメモリ134に同じデータが格納された時点で、ライト完了がCHA110に送信され、ライト要求元のホスト装置へライト処理完了通知が送信されることとなる。このため、1次キャッシュ部120に障害があっても、アクセス時の応答が遅いHDD部200に格納することなく、迅速にホスト装置へライト処理完了通知を送信することができる。
また、ステップS26において、シーケンシャル処理データであると判定した場合には、当該データを2次キャッシュメモリ134に書き込むようにすると書込み回数が多くなり、2次キャッシュメモリ134の消耗を早めてしまうと考えられるので、CCP121は、2次キャッシュメモリ134への格納をさせないようにするために、HDD部200のHDDへのライト要求を2次キャッシュ部130へ送信する(ステップS34)。次いで、CCP121が、2次キャッシュ部130からライト完了を受信したか否かを判定し(ステップS35)、ライト完了を受信するまでステップS35を繰り返し実行する。そして、CCP121は、2次キャッシュ部130からライト完了を受信した場合(ステップS35のYes)には、処理を終了する。
また、ステップS27において、2次キャッシュ部130に障害が発生していることを検出した場合(ステップS27のYes)には、CCP121は、障害が発生していない2次キャッシュ部130に送信し(ステップS36)、ライト要求に対するライト完了を受信したか否かを判定し(ステップS37)、ライト完了を受信するまでステップS37を繰り返し実行する。そして、CCP121は、2次キャッシュ部130からライト完了を受信した場合(ステップS37のYes)には、処理を終了する。
図9は、本発明の第1実施形態に係る2次キャッシュ部におけるライト要求受信時処理のフローチャートである。
2次キャッシュ部130において、CCP131がSEL132を介して1次キャッシュ部120からライト要求を受信したか否かを判定し(ステップS41)、受信していない場合には、ステップS41を繰り返し実行する。一方、ライト要求を受信した場合には、CCP131は、ライト要求が2次キャッシュメモリ134へのライト要求か、又はHDD部200へのライト要求かを判定する(ステップS42)。
この結果、2次キャッシュメモリ134へのライト要求である場合(ステップS42のYes)には、CCP131は、ライト対象のデータを格納する2次キャッシュメモリ134のメモリモジュール134aを決定する(ステップS43)。なお、CCP131による2次キャッシュメモリ134への格納処理については、後述する。
次いで、CCP131は、決定した2次キャッシュメモリ134のメモリモジュール134aにライト対象のデータを格納する(ステップS44)。この場合、CCP131は、ライト対象のデータを図2に示す構造として格納し、書込み日時フィールド303には、2次キャッシュメモリ134に書き込んだ日時を書き込む。さらに、CCP131は、ライト要求に含まれているデータの識別情報と、当該データを書き込んだ2次キャッシュメモリ134の格納先(アドレス)とを対応付けてLM136に格納する。その後、CCP131は、ライト完了を要求元の1次キャッシュ部120に送信する(ステップS45)。
一方、2次キャッシュメモリ134へのライト要求でない場合(ステップS42のNo)には、CCP131は、HDD部200のHDDへのライト要求をDKA140へ送信する(ステップS46)。これにより、DKA140により、ライト対象のデータがHDD部200に書き込まれることとなる。次いで、CCP131が、DKA140からライト完了を受信したか否かを判定し(ステップS47)、ライト完了を受信するまでステップS47を繰り返し実行する。そして、CCP131は、DKA140からライト完了を受信した場合(ステップS47のYes)には、CCP131は、ライト完了を要求元の1次キャッシュ部120に送信し(ステップS48)、処理を終了する。
図10Aは、本発明の第1実施形態に係る2次キャッシュメモリへのデータ格納処理を説明する図であり、図10Bは、本発明の第1実施形態に係る2次キャッシュメモリのメモリデバイスへのデータ格納処理を説明する図である。
LM136には、2次キャッシュメモリ134の各メモリモジュール134aへの書込み回数が記憶されている。CCP131は、2次キャッシュメモリ134へのライト要求を受信した場合には、LM136に格納されている書込み回数に基づいて、メモリモジュール134aへの書込み回数が均等になるようにデータの格納を制御する。CCP131は、例えば、データを書き込むメモリボード1310を順番(1、2、3・・・n)に決定し、図10Bに示すようにメモリボード1310内においても、データを書き込む各メモリモジュール134aを順番(1、2、3・・・、n)に決定し、決定したメモリモジュール134aにデータを格納するとともに、LM136に格納されている当該メモリモジュール134aへの書込み回数を加算する。これによって、各メモリモジュール134aへの書込み回数をほぼ均等にすることができる。
次に、図7乃至図9の処理によって実現されるデータの管理処理を具体的に説明する。まず、ライト対象のデータが一般的なデータである場合のデータの管理処理を説明する。
図11は、本発明の第1実施形態に係るライト対象データの管理処理を説明する図である。ここで、図7乃至図9のステップ番号を適宜用いて説明する。
まず、ストレージシステム10は、(1)に示すように、ライト対象のデータ(同図では、データAという)を1次キャッシュメモリ124に2重書き、すなわち、2つの1次キャッシュメモリ124にそれぞれ同じデータを書き込む。具体的には、ストレージシステム10のCHA110がライト要求を受信すると(ステップS11)、通常のライト要求を2つの1次キャッシュ部120に送信する(ステップS13)。各1次キャッシュ部120のCCP121は、通常のライト要求を受信したので(ステップS21、S22のYes)、1次キャッシュメモリ124にライト対象のデータAを格納する(ステップS23)。これによって、2つの1次キャッシュメモリ124に同一のデータAが格納されることとなる。次に、(2)に示すように、1次キャッシュメモリ124に格納したことを示すライト完了を要求元のCHA110に送信する(ステップS24)。次に、(3)に示すように、CHA110は、双方の1次キャッシュ部120からライト完了を受信すると(ステップS14)、ライト要求元のホスト装置へライト処理完了通知を送信する(ステップS17)。このように、1次キャッシュメモリ124にデータAが2重書きされた時点でホスト装置へライト処理完了通知を行うので、ホスト装置の要求に対して迅速に応答することができる。
次に、(4)に示すように、2次キャッシュメモリ134に2重書き、すなわち、2つの2次キャッシュメモリ134にライト対象のデータAをそれぞれ書き込む。具体的には、1次キャッシュ部120のCCP121が2次キャッシュ部130にライト要求を送信し(ステップS28)、2次キャッシュ部130のCCP131が、ライト要求を受信し(ステップS41)、データAを2次キャッシュメモリ134に格納する(ステップS43、44)。
次に、(5)に示すように、CCP131がライト完了を1次キャッシュ部120に送信する(ステップS45)。次に、(6)に示すように、CCP121が、一方の1次キャッシュ部120の1次キャッシュメモリ124からライト対象のデータAを削除する処理を実行する(ステップS30)。
これによって、一方の1次キャッシュメモリ124からライト対象のデータAが削除されることとなり、1次キャッシュメモリ124のメモリ効率を向上することができる。この場合には、データAについては、一方の1次キャッシュメモリ124と、2つの2次キャッシュメモリ134に格納されており、データ保持に関する信頼性を確保している。また、一方の1次キャッシュメモリ124にデータAを格納しているので、当該データAに対するリード要求に対しても迅速に応答することができる。
次に、一方の1次キャッシュ部120の1次キャッシュメモリ124からライト対象のデータを削除する処理(ステップS30)を詳細に説明する。
図12は、本発明の第1実施形態に係る1次キャッシュ部からのデータの削除を説明する図である。
CCP121は、他のクラスタの1次キャッシュ部120のCCP121との間でそれぞれの1次キャッシュメモリ124のメモリ使用量の情報を相互に交換している。そして、CCP121は、相互に交換しているメモリ使用量の情報に基づいて、メモリ使用量の多いほうから、ライト対象のデータを消去するようにしている。例えば、図12に示すように、第1クラスタ101aの1次キャッシュメモリ124の使用量が65パーセントで、第2クラスタ101bの1次キャッシュメモリ124の使用量が70パーセントである場合には、メモリ使用量の多い第2クラスタ101の1次キャッシュメモリ124からライト対象のデータが消去される。
次に、ライト対象のデータがシーケンシャル処理データである場合のデータの管理処理を説明する。
図13は、本発明の第1実施形態に係るシーケンシャル処理データの管理処理を説明する図である。ここで、図7乃至図9のステップ番号を適宜用いて説明する。
まず、ストレージシステム10は、(1)に示すように、ライト対象のデータ(同図では、データBという)を1次キャッシュメモリ124に2重書き、すなわち、2つの1次キャッシュメモリ124にそれぞれ書き込む。具体的には、ストレージシステム10のCHA110がライト要求を受信すると(ステップS11)、通常のライト要求を2つの1次キャッシュ部120に送信する(ステップS13)。各1次キャッシュ部120のCCP121は、通常のライト要求を受信したので(ステップS21、S22のYes)、1次キャッシュメモリ124にライト対象のデータBを格納する(ステップS23)。これによって、2つの1次キャッシュメモリ124に同一のデータBが格納されることとなる。次に、(2)に示すように、1次キャッシュメモリ124に格納したことを示すライト完了を要求元のCHA110に送信する(ステップS24)。次に、(3)に示すように、CHA110は、双方の1次キャッシュ部120からライト完了を受信すると(ステップS14)、ライト要求元のホスト装置へライト処理完了通知を送信する(ステップS17)。このように、1次キャッシュメモリ124にデータAが2重書きされた時点でホスト装置へライト処理完了通知を行うので、ホスト装置の要求に対して迅速に応答することができる。
CHP111は、(4)に示すように、ライト対象のデータのデータ容量や、書き込むブロック(トラックともいう)の情報を送信する。
次に、(5)に示すように、CCP121は、書込みブロックの情報に基づいて、ライト対象のデータBがシーケンシャル処理データであるか否かを判定し(ステップS26)、シーケンシャル処理データであると判定した場合(ステップS26のYes)には、(6)に示すように、CCP131に、2次キャッシュメモリ134へは書込み不要であることを示すHDD部200への書込み要求を送信する(ステップS34)。
次に、(7)に示すように、CCP131は、2次キャッシュメモリ124にデータBの書込みは行わず、当該データBをHDD部200に書き込ませるライト要求をDKA140に送信する(ステップS46)。次に、(8)に示すように、DKA140がライト要求を受けて、HDD部200にデータBを格納する。
このように、データがシーケンシャル処理データであると判断される場合には、2次キャッシュメモリ134へのデータの書込みが行われないので、2次キャッシュメモリ134の消耗を抑え、寿命を効果的に延長することができる。
次に、1つの1次キャッシュ部120へ障害が発生した際の1次キャッシュ部障害時処理を説明する。
図14Aは、本発明の第1実施形態に係る1次キャッシュ部障害時の処理を説明する図である。ここで、図7乃至図9のステップ番号を適宜用いて説明する。
CHA110のCHP111は、2つのクラスタの1次キャッシュ部120と通信可能であり、それぞれの1次キャッシュ部120のいずれかに障害が発生したことを検出することができる。そして、障害が発生したことを検出した以降においては、ストレージシステム10は、次のように動作する。
すなわち、CHP111は、ライト要求を受信した場合(ステップS11のYes)には、1次キャッシュ部120に障害が発生しているので(ステップS12のNo)、障害時Write要求を障害が発生していない1次キャッシュ部120に送信する(ステップS15)。そして、ライト要求を受信した1次キャッシュ部120は、障害時のライト要求であると判定し(ステップS22のNo)、ライト要求を第1クラスタ101a及び第2クラスタ101bのそれぞれの2次キャッシュ部130に送信する(ステップS31)。これにより、それぞれの2次キャッシュ部130のCCP131は、2次キャッシュメモリ134へのライト要求であるので(ステップS42のYes)、データを格納する2次キャッシュメモリ134のメモリモジュール134aを決定し(ステップS43)、決定した2次キャッシュメモリ134のメモリモジュール134aにライト対象のデータを格納する(ステップS44)。
その後、CCP131が、ライト完了を要求元の1次キャッシュ部120のCCP121に送信し(ステップS45)、CCP121が、2つの2次キャッシュ部130からライト完了を受信すると(ステップS32のYes)、2つの2次キャッシュ部130に同じデータが格納されたことを示しているので、CCP121は、ライト完了をライト要求元のCHA110のCHP111に送信し(ステップS33)、CHP111は、ライト処理完了通知をホスト装置に送信する(ステップS17)。
このように、1次キャッシュ部120の1つに障害が発生した場合には、1つの1次キャッシュメモリ124と、2つの2次キャッシュメモリ134にライト対象のデータを書き込んだ後に、ホスト装置へライト処理完了通知を行う。このため、1次キャッシュ部120に障害が発生しても、2次キャッシュ部130に格納させた後にライト処理完了通知をホスト装置に送信できるので、HDD部200への格納を待つ必要がなく、迅速にホスト装置からのライト要求に対応することができる。
次に、1つの2次キャッシュ部130へ障害が発生した際の2次キャッシュ部障害時処理を説明する。
図14Bは、本発明の第1実施形態に係る2次キャッシュ部障害時の処理を説明する図である。ここで、図7乃至図9のステップ番号を適宜用いて説明する。
2次キャッシュ部130の1つに障害が発生した場合には、CHP111は、通常と変わりなく、各クラスタ101a、101bのCCP121にライト要求を送信する(ステップS13)。各クラスタ101a、101bのCCP121は、ライト要求を受信すると(ステップS21)、それぞれの1次キャッシュメモリ124にライト対象のデータを格納し(ステップS23)、ライト完了をCHP111に送信する(ステップS24)。
CHP111は、双方の1次キャッシュ部120からライト完了を受信した場合(ステップS14のYes)に、ホスト装置へライト処理完了通知を送信する(ステップS17)。
したがって、2次キャッシュ部130に障害が発生しても、ライト要求に対する応答には、影響が発生しない。
次に、2次キャッシュメモリ124のメモリモジュール134aに書き換え回数の制約がある場合における、メモリモジュール134aのチェック処理を説明する。
図15は、本発明の第1実施形態に係るメモリモジュールチェック処理のフローチャートである。
このメモリモジュールチェック処理は、例えば、所定の時間毎に実行される。2次キャッシュ部130のCCP131は、複数のメモリボード1310の内の1つのメモリボード1310を処理対象として決定し(ステップS51)、次いで、そのメモリボード1310のメモリモジュール134aの1つを処理対象として決定する(ステップS52)。次いで、CCP131は、処理対象のメモリモジュール134aの書き換え回数をLM136から取得し(ステップS53)、所定のしきい値を超過しているか否かを判定する(ステップS54)
この結果、しきい値を超過している場合には、当該メモリモジュール134aの寿命が尽きる可能性が高いことを意味しているので、当該メモリモジュール134aに格納されているデータを未使用のスペアメモリモジュール134saに移行させ(ステップS55)、交換前のメモリモジュール134aを閉塞し、当該メモリモジュール134aに代えてスペアメモリモジュール134saが動作するように、LM136の制御情報に反映させる(ステップS56)。これによって、寿命の尽きる可能性が高いメモリモジュール134aのデータをスペアメモリモジュール134saに引き継いで処理に利用することができる。
一方、しきい値を超過していない場合(ステップS54のNo)、又は、スペアメモリモジュール134saと交換させた場合(ステップS56)には、メモリボード1310の全てのメモリモジュール134aに対して処理を行ったか否かを判定し(ステップS57)、処理を行っていない場合には、上記ステップS52〜S57を再度実行する。
一方、メモリボード1310の全てのメモリモジュール134aに対して処理を行った場合には(ステップS57のYes)、メモリボード1310上の全てのメモリモジュール134aに対して処理を行ったか否かを判定し(ステップS58)、処理を行っていない場合には、上記ステップS51〜S58を再度実行する。
そして、全てのメモリボード1310に対して処理を行った場合(ステップS58のYes)には、CCP131は、例えば、図示しない管理装置等に対してモジュールチェックの情報を出力する。モジュールチェックの情報には、例えば、交換したメモリモジュール134aを搭載したメモリボード1310の識別情報や、交換したメモリモジュール134aの識別情報が含まれている。このモジュールチェックの情報に基づいて、ストレージシステム10の管理者は、該当するメモリボード1310をストレージシステム10から抜去して、該当するメモリモジュール134aを新たなメモリモジュール134aに交換し、交換後に、再度ストレージシステム10に装填することにより、再度メモリボード1310を利用することができるようになる。なお、ストレージシステム10が電源オン時にメモリボード1310を交換できる構成であれば、交換しているメモリボード1310以外のメモリボード1310によって2次キャッシュ部130の動作を継続させておくことができる。
図16は、本発明の第1実施形態に係るスペアメモリモジュールへのデータ移行を説明する図である。
図16に示すように、図15に示す処理を実行すると、いずれかのメモリモジュール134aの書き換え回数がしきい値を超えた場合には、そのメモリモジュール134aのデータが同一のメモリボード1310上のスペアメモリモジュール134saに移行される。したがって、メモリモジュール134aが使用できなくなる前に、適切にデータを移行することができる。
次に、ストレージシステム10内に記憶されているデータを管理する処理を説明する。
図17Aは、本発明の第1実施形態に係る1次キャッシュ部における1次キャッシュ整理処理のフローチャートである。
この1次キャッシュ整理処理は、例えば、所定の時間毎に実行される。1次キャッシュ部120のCCP121は、1次キャッシュメモリ124からデータを取得し、当該データの付加情報フィールド302から参照履歴フィールド304を検出する(ステップS71)。次いで、CCP121は、参照履歴フィールド304の最新参照日時フィールド306から最新参照日時を取得し、最新参照日時から所定期間超過したか否かを判定し(ステップS72)、所定期間超過した場合には、当該データが長期に亘ってアクセスされておらず、キャッシュしておくことによる効果が少ないと考えられるので、当該データを1次キャッシュメモリ124から削除する(ステップS73)とともに、当該データを消去した旨の通知(データ消去通知)を2次キャッシュ部130に送信する(ステップS74)。ここで、データ消去通知には、消去されたデータを示す識別情報と、当該データの参照履歴フィールド304の情報が含まれている。
データ消去通知を送信した後、又はデータが所定期間超過していない場合(ステップS72のNo)には、次の処理対象のデータがあるか否かを判定し(ステップS75)、次の処理対象のデータがある場合(ステップS75のYes)には、上記ステップS71〜S75の処理を引き続き行う一方、他のデータがない場合(ステップS75のNo)には、処理を終了する。この処理によって、1次キャッシュメモリ124からデータが削除され、2つの2次キャッシュメモリ134上に同一のデータが格納されている状態となる。
この1次キャッシュ整理処理によると、キャッシュの効果があまりないと考えられるデータを削除でき、1次キャッシュメモリ124の空き容量を増加させることができる。
図17Bは、本発明の第1実施形態に係る2次キャッシュ部における1次キャッシュ整理処理のフローチャートである。
2次キャッシュ部130において、CCP131は、SEL132を介して1次キャッシュ部120からデータ消去通知を受信したか否かを判定し(ステップS81)、受信していない場合には、ステップS81を繰り返し実行する。一方、データ消去通知を受信した場合(ステップS81のYes)には、CCP131は、2次キャッシュメモリ134に格納されている同一のデータの付加情報フィールド302の参照履歴フィールド304をデータ消去通知に含まれている参照履歴フィールド304の情報に更新し(ステップS82)、処理を終了する。これにより、2次キャッシュメモリ134のデータに対して、1次キャッシュメモリ124での当該データの参照履歴を適切に引き継ぐことができる。すなわち、1次キャッシュメモリ124における参照履歴を考慮したデータの管理を行うことができる。
図18は、本発明の第1実施形態に係る1次キャッシュ使用量調整処理のフローチャートである。
この1次キャッシュ使用量調整処理は、例えば、所定の時間毎に実行される。1次キャッシュ部120のCCP121は、他のクラスタの1次キャッシュ部120のCCP121との間で通信を行うことにより、他の1次キャッシュ部120の1次キャッシュメモリ124の使用量情報を取得する(ステップS91)。次いで、1次キャッシュ部120は、自己又は他のクラスタの第1キャッシュ部120の1次キャッシュメモリ124の使用量が所定の制限量(例えば、全容量のうちの80パーセント)を超過しているか否かを判定する(ステップS92)。制限量を超過していると判定した場合には、CCP121は、データ削除を行う対象のクラスタを決定し(ステップS93)、当該クラスタの1次キャッシュメモリ124に格納されているデータから消去するデータを決定する(ステップS94)。消去するデータとしては、例えば、所定の期間以上経過しているデータ、あるいは所定期間で参照回数の少ないデータとしてもよい。次いで、CCP121は、決定したデータを1次キャッシュメモリ124から削除する(ステップS95)とともに、当該データを消去した旨の通知(データ消去通知)を2次キャッシュ部130に送信する(ステップS96)。ここで、データ消去通知には、消去されたデータを示す識別情報と、当該データの参照履歴フィールド304の情報が含まれている。
次いで、対象のクラスタの1次キャッシュメモリ124の使用量が所定の下限値以下になったか否かを判定し(ステップS97)、下限値以下でない場合には、上記ステップS94〜S97の処理を引き続き行ってデータを更に消去する一方、下限値以下である場合には、該当するクラスタの1次キャッシュメモリ124に十分な空き容量を確保したことを意味しているので、他の処理すべきクラスタについての処理が終了したかを判定し(ステップS98)、処理すべき全てのクラスタの処理が終了していない場合(ステップS98のNo)には、ステップS93〜S98の処理を引き続き実行する一方、処理すべき全てのクラスタの処理が終了した場合(ステップS98のNo)には、処理対象の全てのクラスタの1次キャッシュメモリ124に十分な空き容量を確保したことを意味するので処理を終了する。このようにして、1次キャッシュメモリ124の空き容量を適切に増やすことができる。
図19は、本発明の第1実施形態に係る1次キャッシュ使用量調整処理を説明する図である。
図19においては、例えば、第1クラスタ101aの1次キャッシュメモリ124のメモリ使用量が70パーセントで、第2クラスタ101bの1次キャッシュメモリ124のメモリ使用量が81パーセントとなっている。そして、各クラスタにおける1次キャッシュメモリ124の使用量制限量は、例えば、全容量の80パーセントとなっており、データ残量下限値は、例えば、全容量の50パーセントとなっている。
このようなストレージシステム10において、図18に示す処理が実行されると、第2クラスタ101bの1次キャッシュメモリ124の使用量が81パーセントであり、使用量制限量の80パーセントを超えているために、各クラスタの1次キャッシュメモリ124のデータが削除される。そして、両クラスタの1次キャッシュメモリ124の使用量がともにデータ残量下限値の50パーセント以下となるまでデータの削除が行われる。これによって、各クラスタの1次キャッシュメモリ124のメモリ使用量をともに50パーセント以下に抑えることができる。
次に、1次キャッシュメモリ124には格納されておらず、2つの2次キャッシュメモリ134に格納されているデータについての第1の2次キャッシュ整理処理を説明する。このようなデータは、図17A又は図18の処理によって、1次キャッシュメモリ124から削除されたデータに相当する。
図20Aは、本発明の第1実施形態に係る第1の2次キャッシュ整理処理のフローチャートである。
この第1の2次キャッシュ整理処理は、例えば、所定の時間毎に実行される。2次キャッシュ部130のCCP131は、2次キャッシュメモリ134からデータの付加情報フィールド302のHDD書込みフラグ308に“0”が設定されているデータ、すなわち、HDD書込みが行われていないデータを処理対象として検出し、更に、当該データの参照履歴フィールド304を検出する(ステップS101)。次いで、CCP131は、参照履歴フィールド304の最新参照日時フィールド306から最新参照日時を取得し、最新参照日時から所定期間超過したか否かを判定する(ステップS102)。ここで、所定の期間は、例えば、1次キャッシュ部120での1次キャッシュメモリ124の整理処理における所定の期間よりは長い期間となっている。所定の期間は、例えば、数時間、数日、数週間等のいずれであってもよい。所定期間超過した場合には、当該データをHDD部200に格納させる要求を行う(ステップS103)。なお、HDD部200には、付加情報フィールド302は格納されず、データアンドチェックコードフィールド301内のデータ及びチェックコードが格納される。そして、HDD部200への格納が終了した後に、CCP131は、一方の2次キャッシュメモリ134から当該データを削除し(ステップS104)、別のクラスタの2次キャッシュメモリ134に格納されている同一のデータの付加情報フィールド302の書込み日時フィールド303に、HDD部200に書き込んだ日時を格納し、参照履歴304フィールドをクリアし、HDD書込みフラグフィールド308にHDDに格納したことを示す“1”を設定することにより、付加情報の更新を行う(ステップS105)。
付加情報を更新した後、又はデータが所定期間超過していない場合(ステップS102のNo)には、次の処理対象データがあるか否かを判定し(ステップS106)、次の処理対象のデータがある場合(ステップS106のYes)には、上記ステップS101〜S106の処理を引き続き行う一方、他の処理対象のデータがない場合(ステップS106のNo)には、処理を終了する。この処理によって、最新の参照日から所定期間を超過すると、2次キャッシュメモリ134の1つからデータが削除され、1つの2次キャッシュメモリ124上と、HDD部200に同一のデータが格納されている状態となる。これによって、2次キャッシュメモリ134の空き容量を適切に増加させることができる。
次に、1つの2次キャッシュメモリ134に格納されているとともに、HDD部200にも格納されているデータについての第2の2次キャッシュ整理処理を説明する。このようなデータは、例えば、図20Aの処理によって、2次キャッシュメモリ134の一方から削除されたデータに相当する。
図20Bは、HDD部に格納されたデータに対する第2の2次キャッシュ整理処理のフローチャートである。
この第2の2次キャッシュ整理処理は、例えば、所定の時間毎に実行される。2次キャッシュ部130のCCP131は、2次キャッシュメモリ134からデータの付加情報フィールド302のHDD書込みフラグ308に“1”が設定されているデータ、すなわち、HDD部200への書込みが行われているデータを処理対象として検出し、更に、当該データの参照履歴フィールド304を検出する(ステップS111)。次いで、CCP131は、参照履歴フィールド304の最新参照日時フィールド306から最新参照日時を取得し、最新参照日時から所定期間超過したか否かを判定する(ステップS112)。所定期間超過した場合には、HDD部200に格納してから所定期間以内参照されなかったことを意味しているので、CCP131は、当該データを2次キャッシュメモリ134から削除させる(ステップS113)。
データを削除した後、又はデータが所定期間超過していない場合(ステップS112のNo)には、次の処理対象データがあるか否かを判定し(ステップS114)、次の処理対象のデータがある場合(ステップS114のYes)には、上記ステップS111〜S114の処理を引き続き行う一方、他のデータがない場合(ステップS114のNo)には、処理を終了する。この処理によって、HDD部200に格納された後、所定期間を超過しても参照されていないデータは、2次キャッシュメモリ124から削除されて、HDD部200のみに格納されている状態となる。これにより、2次キャッシュメモリ124の空き領域を増加させることができる。
図21は、本発明の第1実施形態に係る第2の2次キャッシュ整理処理を説明する図である。
図21に示すように、第1クラスタ101aに格納されるとともに、HDD部200に格納されているデータCが存在する場合において、データCがHDD部200に格納された後、所定の期間に参照されなければ、図20Bに示す処理によって、2次キャッシュメモリ134から消去されることとなる。これにより、2次キャッシュメモリ124の空き領域を適切に増加させることができる。
図22は、本発明の第1実施形態に係るデータの管理処理を説明する図である。ここで、図17A、図17B、図18、図20A及び図20Bのステップ番号を適宜用いて説明する。
まず、ストレージシステム10においては、(1)に示すように、CCP121が各クラスタ間で1次キャッシュメモリ124の使用量を管理している。そして、(2)に示すように、いずれかの1次キャッシュメモリ124の使用量が所定の制限値を超過した場合や、或いは、所定期間を超過しても参照されないデータがある場合には、CCP121は、所定期間を超過しても参照されないデータ(同図では、データBという)を消去する(ステップS73、ステップS95)。そして、(3)に示すように、CCP121は、データ消去通知をCCP131に送信し(ステップS74、ステップS96)、CCP131は、データ消去通知に含まれている1次キャッシュメモリ124での参照履歴によって、2次キャッシュメモリ134の同一のデータの参照履歴を更新する(ステップS82)。この状態では、2つの2次キャッシュメモリ134に、データBが格納されることとなる。
更に期間が経過しても、データBが参照されない場合には、(4)に示すように、CCP131は、データBを2次キャッシュメモリ134から消去する(ステップS104)とともに、(5)に示すように、データBをHDD部200に格納する(ステップS103)。
一方、(6)に示すように、HDD部200に既に格納されているとともに、1つの2次キャッシュメモリ134に格納されているデータCについては、HDD部200に格納された後、所定の期間が経過しても参照されていない場合には、CCP131が2次キャッシュメモリ134から削除する(ステップS113)。
図23は、本発明の第1実施形態に係る2次キャッシュ使用量調整処理のフローチャートである。
この2次キャッシュ使用量調整処理は、例えば、所定の時間毎に実行される。2次キャッシュ部130のCCP131は、他のクラスタの2次キャッシュ部130のCCP131との間で通信を行うことにより、他の2次キャッシュ部130の2次キャッシュメモリ134の使用量情報を取得する(ステップS121)。次いで、2次キャッシュ部130のCCP131は、自己又は他のクラスタの第2キャッシュ部130の2次キャッシュメモリ134の使用量が所定の制限量(例えば、全容量の80パーセント)を超過しているか否かを判定する(ステップS122)。制限量を超過していると判定した場合には、CCP131は、データ削除を行う対象のクラスタを決定し(ステップS123)、当該クラスタの2次キャッシュメモリ134に格納されているデータから消去するデータを決定する(ステップS124)。消去するデータとしては、例えば、所定の期間以上経過しているデータ、あるいは所定期間で参照回数の少ないデータとしてもよい。次いで、決定したデータをHDD部200に格納させる要求を行う(ステップS125)。なお、HDD部200には、付加情報フィールド302は格納されず、データアンドチェックコードフィールド301のデータ及びチェックコードが格納される。そして、HDD部200への格納が終了した後に、CCP131は、一方の2次キャッシュメモリ134から決定したデータを削除し(ステップS126)、別のクラスタの2次キャッシュメモリ134に格納されている同一のデータの付加情報フィールド302の書込み日時フィールド303に、HDD部200に書き込んだ日時を格納し、参照履歴304フィールドをクリアし、HDD書込みフラグフィールド308に“1”を設定することにより、付加情報の更新する(ステップS127)。
次いで、対象のクラスタの2次キャッシュメモリ134の使用量が所定の下限値以下になったか否かを判定し(ステップS128)、下限値以下でない場合には、上記ステップS124〜S128の処理を引き続き行ってデータを更に消去する一方、下限値以下である場合には、該当するクラスタの2次キャッシュメモリ134に十分な空き容量を確保したことを意味しているので、他の処理すべきクラスタについての処理が終了したかを判定し(ステップS129)、処理すべき全てのクラスタの処理が終了していない場合(ステップS129のNo)には、ステップS123〜S129の処理を引き続き実行する一方、処理すべき全てのクラスタの処理が終了した場合(ステップS129のNo)には、処理対象の全てのクラスタの2次キャッシュメモリ134に十分な空き容量を確保したことを意味するので処理を終了する。
図24は、本発明の第1実施形態に係る2次キャッシュ使用量調整処理を説明する図である。
図24においては、例えば、第1クラスタ101aの2次キャッシュメモリ134のメモリ使用量が81パーセントで、第2クラスタ101bの2次キャッシュメモリ134のメモリ使用量が65パーセントとなっている。そして、使用量制限量は、例えば、全容量の80パーセントとなっており、データ残量下限値は、例えば、全容量の40パーセントとなっている。
このようなストレージシステム10において、図23に示す処理が実行されると、第1クラスタ101aの2次キャッシュメモリ134の使用量が81パーセントであり、使用量制限量の80パーセントを超えているために、各クラスタの2次キャッシュメモリ134のデータが削除される。そして、両クラスタの2次キャッシュメモリ134の使用量がともにデータ残量下限値の40パーセント以下となるまでデータの削除が行われる。これによって、各クラスタの2次キャッシュメモリ134のメモリ使用量をともに40パーセント以下に抑えることができる。
次に、本発明の第1実施形態に係るストレージシステム10におけるリード要求受信時の処理を説明する。
図25は、本発明の第1実施形態に係るチャネルアダプタにおけるリード要求受信時処理のフローチャートである。
CHA110において、CHP111が信号変換/データ処理部112を介してホスト装置からRead要求(リード要求)を受信したか否かを判定し(ステップS131)、受信していない場合には、ステップS131を繰り返し実行する。一方、リード要求を受信した場合には、リード要求を第1クラスタ101a及び/又は第2クラスタ101bの1次キャッシュ部120に送信する(ステップS132)。
そして、CHP111が、1次キャッシュ部120からリード対象のデータ(リードデータ)を受信したか否かを判定し(ステップS133)、リードデータを受信するまでステップS133を繰り返し実行する。そして、CHP111は、1次キャッシュ部120からリードデータを受信した場合には、信号変換/データ処理部112を介してリードデータをリード要求元のホスト装置へ送信する(ステップS134)。これによって、ホスト装置では、リードデータを用いて各種処理を行うことができる。
図26Aは、本発明の第1実施形態に係る1次キャッシュ部におけるリード要求受信時処理のフローチャートである。
1次キャッシュ部120において、CCP121がSEL122を介してCHA110からリード要求を受信したか否かを判定し(ステップS141)、受信していない場合には、ステップS141を繰り返し実行する。一方、リード要求を受信した場合には、CCP121は、リード要求に含まれているデータの識別情報に基づいて、1次キャッシュメモリ124にリードデータが格納されているか否か、すなわちキャッシュされているか否かを判定する(ステップS142)。1次キャッシュメモリ124にリードデータが格納されているか否かは、LM126において、リード要求に含まれているデータ識別情報に1次キャッシュメモリ124のアドレスが対応付けられて格納されているかによって判定できる。なお、1次キャッシュメモリ124に格納されているデータのデータアンドチェックコードフィールド301内のデータ識別情報を参照して、リードデータが格納されているか否かを判定してもよい。
この結果、リードデータがキャッシュされている場合には、CCP121は、1次キャッシュメモリ124からリードデータを取得し(ステップS143)、1次キャッシュメモリ124に格納されているリードデータの参照履歴を更新する(ステップS144)。具体的には、CCP121は、1次キャッシュメモリ124に格納されているリードデータの付加情報フィールド302の参照回数フィールド305の参照回数に1を加算するとともに、最新参照日時フィールド306に現在の日時を格納する。
次いで、CCP121は、リードデータを要求元のCHA110に送信し(ステップS145)、処理を終了する。
一方、1次キャッシュメモリ124にリードデータがキャッシュされていない場合(ステップS142のNo)には、リード要求を第1クラスタ101a及び/又は第2クラスタ101bの2次キャッシュ部130に送信する(ステップS146)。そして、CCP121が、2次キャッシュ部130からリードデータを受信したか否かを判定し(ステップS147)、リードデータを受信するまでステップS147を繰り返し実行する。そして、CCP121は、2次キャッシュ部130からリードデータを受信した場合には、リードデータをCHA110に送信し(ステップS145)、処理を終了する。
図26Bは、本発明の第1実施形態に係る2次キャッシュ部におけるリード要求受信時処理のフローチャートである。
2次キャッシュ部130において、CCP131がSEL132を介して1次キャッシュ部120からリード要求を受信したか否かを判定し(ステップS151)、受信していない場合には、ステップS151を繰り返し実行する。一方、リード要求を受信した場合には、CCP131は、リード要求に含まれているデータの識別情報に基づいて、2次キャッシュメモリ134にリードデータが格納されているか否か、すなわちキャッシュされているか否かを判定する(ステップS152)。2次キャッシュメモリ134にリードデータが格納されているか否かは、リード要求に含まれているデータ識別情報に2次キャッシュメモリ134のアドレスが対応付けられてLM136に格納されているかによって判定できる。なお、2次キャッシュメモリ134に格納されているデータのデータアンドチェックコードフィールド301内のデータ識別情報を参照して、リードデータが格納されているか否かを判定してもよい。
この結果、リードデータがキャッシュされている場合には、CCP131は、2次キャッシュメモリ134からリードデータを取得し(ステップS153)、2次キャッシュメモリ124に格納されているリードデータの参照履歴を更新する(ステップS154)。具体的には、CCP131は、2次キャッシュメモリ134に格納されているリードデータの付加情報フィールド302の参照回数フィールド305の参照回数に1を加算するとともに、最新参照日時フィールド306に現在の日時を格納する。
次いで、CCP131は、リードデータを1次キャッシュ部120に送信し(ステップS158)、処理を終了する。
一方、2次キャッシュメモリ134にリードデータがキャッシュされていない場合(ステップS152のNo)には、第1クラスタ101a及び/又は第2クラスタ101bのDKA140にリード要求を送信する(ステップS155)。これにより、DKA140は、HDD部200からリードデータを読み出して、2次キャッシュ部130へ送信することとなる。
ここで、CCP131が、DKA140からリードデータを受信したか否かを判定し(ステップS156)、リードデータを受信するまでステップS156を繰り返し実行する。そして、CCP131は、DKA140からリードデータを受信した場合(ステップS156のYes)には、リードデータを2次キャッシュメモリ134に格納する(ステップS157)。本実施形態では、CCP131は、2次キャッシュメモリ134のメモリ使用量の少ないクラスタ側の2次キャッシュメモリ134にリードデータを格納する。リードデータは、図2に示すデータ形式により格納される。具体的には、書込み日時フィールド303には、格納した日時が格納され、参照回数フィールド305には、“1”が格納され、最新参照日時フィールド306には、キャッシュされた日時が格納され、読出フラグ307には、下位側から格納されたことを示す“1”が格納される。このように、2次キャッシュメモリ134にキャッシュするので、データがキャッシュされている確率、すなわち、キャッシュヒット率を向上することができる。
次いで、CCP131は、DKA140から受信したリードデータを1次キャッシュ部120に送信し(ステップS158)、処理を終了する。
図27は、本発明の第1実施形態に係るリード要求受信時処理を説明する図である。ここで、図25、図26A及び図26Bにおけるステップ番号を適宜用いることとする。
図27は、1次キャッシュメモリ124及び2次キャッシュメモリ134に格納されておらず、HDD部200に格納されているデータ(図中データC)に対するリード要求があった場合のリード要求受信時処理を説明する図である。
HDD部200のみに格納されているデータに対するリード要求を受信すると、CHP111から1次キャッシュ部120にリード要求が送信される(ステップS132)。そして、第1キャッシュメモリ124には、リードデータがキャッシュされていないので(ステップS142のNo)、CCP121がリード要求を2次キャッシュ部130に送信する(ステップS146)。
2次キャッシュ部130の2次キャッシュメモリ134にも、リードデータがキャッシュされていないので(ステップS152のNo)、DKA140にリード要求が送信され(ステップS155)、DKA140がHDD部200からリードデータを読み出して、第2キャッシュ部130に送信する。リードデータを受信した2次キャッシュ部130のCCP131は、2次キャッシュメモリ134のメモリ使用量の少ないクラスタ、図27では、第2クラスタ101bの2次キャッシュメモリ134にリードデータを格納し(ステップS157)、1次キャッシュ部120に送信する(ステップS158)。1次キャッシュ部120のCCP121は、受信したリードデータをCHA110に送信し(ステップS147、S145)、CHA110のCHP111は、受信したリードデータを要求元のホスト装置へ送信する(ステップS133、S134)。
次に、HDD部200から読み出されて2次キャッシュメモリ134に格納されたデータの管理に関する上位格納処理を説明する。この上位格納処理は、2次キャッシュメモリ134に格納されたデータを参照頻度に応じて、1次キャッシュメモリ124に格納させる処理である。
図28は、本発明の第1実施形態に係る上位格納処理のフローチャートである。
この上位格納処理は、例えば、所定の時間毎に実行される。2次キャッシュ部130のCCP131は、2次キャッシュメモリ134からデータの付加情報フィールド302の読出フラグ307に“1”が設定されているデータ、すなわち、HDD部200から読み出されて2次キャッシュメモリ134に格納されたデータを処理対象として検出し、更に、当該データの参照履歴フィールド304を検出する(ステップS161)。次いで、CCP131は、参照履歴フィールド304の参照回数フィールド305から参照回数を取得し、所定数以上であるかを判定する(ステップS162)。この結果、参照回数が所定数以上である場合には、当該データを1次キャッシュメモリ124にキャッシュする要求を第1キャッシュ部120に送信する(ステップS163)。これにより、キャッシュ要求を受信した第1キャッシュ部120のCCP121は、当該データを1次キャッシュメモリ124に格納することとなる。
キャッシュ要求を送信した後、又はデータの参照回数が所定数以上ではない場合(ステップS162のNo)には、他のデータがあるか否かを判定し(ステップS164)、他のデータがある場合(ステップS164のYes)には、上記ステップS161〜S164の処理を引き続き行う一方、他のデータがない場合(ステップS164のNo)には、処理を終了する。この処理によって、2次キャッシュメモリ134に格納され、所定数以上参照されたデータは、1次キャッシュメモリ124にも格納されることとなる。これによって、当該データに対するホスト装置からのリード要求時に応答を迅速に行うことができる。
次に、停電時や、計画停止時におけるストレージシステム10のデータ退避処理について説明する。
図29Aは、本発明の第1実施形態に係るデータ退避処理のフローチャートである。
1次キャッシュ部120のCCP121が、データ退避が必要か否かを判定する(ステップS171)。データ退避は、例えば、停電時や、計画停止時に行う必要がある。例えば、計画停止であれば、現在の時刻が計画停止を行う時間であるか否かによって判定できる。また、停電時であれば、外部の電源から供給される電力が停止したか否かによって判定できる。
この結果、データ退避が必要でない場合(ステップS171のNo)には、ステップS171を繰り返し実行する一方、データ退避が必要である場合(ステップS171のYes)には、CCP121が1次キャッシュメモリ124上の2次キャッシュメモリ134に反映させていないデータを検出し、2次キャッシュ部130に当該データについての2次キャッシュメモリ134へのライト要求を送信する(ステップS172)。これによって、当該データが2次キャッシュ部130のCCP131により2次キャッシュメモリ134に格納される。更に、CCP121は、1次キャッシュメモリ124に格納しているデータについてのデータ構成情報をLM126から取得して、データ構成情報を2次キャッシュメモリ134に格納させるためのライト要求を送信する(ステップS173)。これによって、当該データ構成情報が2次キャッシュ部130のCCP131により2次キャッシュメモリ134に格納される。
その後、CCP121は、データ退避が終了したことを、バッテリ400に通知し、バッテリ400によるバックアップを終了させる(ステップS174)。
このように、1次キャッシュメモリ124のデータを2次キャッシュメモリ134に退避させることにより、データの消失を防げるので、1次キャッシュメモリ124のデータをHDD部200に退避させる場合に比して、短時間でデータの退避を行うことができる。また、データを退避させた後には、1次キャッシュ部120及び2次キャッシュ部130にバッテリ400により電力を供給しなくてもよい。このため、バッテリ400の電力容量を抑えることができ、コストを低減することができる。
図30A及び図30Bは、本発明の第1実施形態に係るデータ退避処理を説明する図である。
図30Aに示すように、ストレージシステム10には、ライト要求に応じて、ライトデータ(図中データB)が2つの1次キャッシュ部120に格納されている。このような状態において、データ退避が必要であるとCCP121が判定すると(ステップS171のYes)、1次キャッシュ部120のデータの退避が開始される。例えば、停電等が発生した場合には、図30Bに示すように、バッテリ400によって1次キャッシュ部120への電力が維持され、1次キャッシュメモリ124のデータが消失しないようになる。なお、2次キャッシュ部130の各機能部に対しても同様にバッテリ400によって電力が維持されている。
このような状態において、CCP121は、1次キャッシュメモリ124上の2次キャッシュメモリ134に反映させていないデータBを検出し、2次キャッシュ部130に2次キャッシュメモリ134へのデータBについてのライト要求を送信する(ステップS173)。これによって、データBが2次キャッシュ部130のCCP131により2次キャッシュメモリ134に格納される。なお、LM126に格納されたデータ構成情報も同様に2次キャッシュメモリ134に格納される。
次に、電源を復旧させた際のストレージシステム10における電源復旧時処理を説明する。
図29Bは、本発明の第1実施形態に係る電源復旧時処理のフローチャートである。
本実施形態では、電源復旧時においては、1次キャッシュ修復モードと2次キャッシュ開始モードとの2つのいずれで行うかを、設定できるようになっている。
1次キャッシュ修復モードは、データ退避時に1次キャッシュメモリ124に格納されていたデータを修復させた後にホスト装置等からの要求を受け付けるモードであり、2次キャッシュ開始モードは、1次キャッシュメモリ124にデータを修復させずにホスト装置等からの要求の受け付けるモードである。
1次キャッシュ部120のCCP121は、1次キャッシュ修復モードの設定がされているか、それとも2次キャッシュ開始モードの設定がされているかを判定する(ステップS181)。その結果、1次キャッシュ修復モードの設定がされている場合には、CCP121がCCP131へデータ退避時にLM126から2次キャッシュメモリ134に格納したデータ構成情報と、当該データ構成情報で管理されているデータ、すなわち、1次キャッシュメモリ124に格納されていたデータとを要求し(ステップS182)、CCP131からデータ構成情報とデータとを受信し(ステップS183)、CCP121が各データを1次キャッシュメモリ124に格納し(ステップS184)、処理を終了する。これによって、1次キャッシュメモリ124には、データ退避時に存在していたデータが存在することとなる。このため、ホスト装置からのリード要求に対応するデータが1次キャッシュメモリ124にキャッシュされている確率を退避時と同じ状態に復旧することができる。
一方、2次キャッシュ開始モードが設定されている場合(ステップS181のNo)には、そのまま処理を終了する。これにより、ホスト装置等からの要求の受け付けを迅速に開始することができる。
図30Cは、本発明の第1実施形態に係る1次キャッシュ修復(レジューム)モードを説明する図である。
1次キャッシュ修復モードでは、図30Cに示すように、データ退避時に1次キャッシュ部120に存在していたデータBを1次キャッシュ部120に格納させ(ステップS184)、その後、ホスト装置等からの要求を受け付ける処理を開始する。
図30Dは、本発明の第1実施形態に係る2次キャッシュ開始モードを説明する図である。
2次キャッシュ開始モードでは、図30Dに示すように、データ退避時に1次キャッシュ部120に存在していたデータBを1次キャッシュ部120に格納させずに、そのまま、ホスト装置等からの要求を受け付ける処理を開始する。これにより、ホスト装置等からの要求の受け付けを迅速に開始することができる。
次に、本発明の第1実施形態に係るストレージシステム10における遠隔地にデータをバックアップするいわゆるリモートコピーについて説明する。
リモートコピーにおいては、まず、コピー元と、コピー先とでデータを一致させておき、コピー元のデータを記憶するストレージシステム10において、当該データに対する更新が発生する度に、更新データ及び更新順序をジャーナルデータとして記憶するとともに、通信回線を介して記憶したジャーナルデータをコピー先に送信するようにしている。
このようなリモートコピーにおいては、通信回線での障害が発生することが考えられるため、ストレージシステム10においては、通信回線の障害が発生したとしても、ジャーナルデータを蓄えておくための記憶領域を用意する必要がある。従来のストレージシステムにおいては、ジャーナルデータを、1次キャッシュメモリ上の記憶領域又はHDD部の記憶領域に格納するようにしていた。例えば、1次キャッシュメモリ上の記憶領域にジャーナルデータを格納するようにした場合にあっては、1次キャッシュメモリの記憶容量が比較的小さいので、ジャーナルデータが大量となった場合には、ホスト装置からの要求を制限する等しなければならなかった。一方、HDD部にジャーナルデータを格納するようにした場合にあっては、HDD部の入出力処理速度の影響を受けてジャーナルデータの転送処理が遅くなるという問題があった。
本実施形態によると、1次キャッシュメモリ124の容量不足による影響が発生せず、また、HDD部の入出力速度の影響を適切に防止することができる。以下、この点について詳細に説明する。
図31Aは、本発明の第1実施形態に係るチャネルアダプタにおけるジャーナル書込処理のフローチャートである。
CHA110において、CHP111が信号変換/データ処理部112を介してホスト装置からリモートコピー対象のデータのライト要求を受信したか否かを判定し(ステップS191)、受信していない場合には、ステップS191を繰り返し実行する。一方、リモートコピー対象のデータのライト要求を受信した場合には、ジャーナルデータ書込要求を第1クラスタ101a及び第2クラスタ101bの1次キャッシュ部120に送信し(ステップS192)、処理を終了する。ジャーナルデータ書込要求には、データと当該データの更新順序が含まれている。
図31Bは、本発明の第1実施形態に係る1次キャッシュ部におけるジャーナル書込処理のフローチャートである。
1次キャッシュ部120において、CCP121がSEL122を介してCHA110からジャーナルデータ書込要求を受信したか否かを判定し(ステップS201)、受信していない場合には、ステップS201を繰り返し実行する。一方、ジャーナルデータ書込要求を受信した場合には、CCP121は、1次キャッシュメモリ124のジャーナルデータを書き込むための記憶領域(ジャーナルボリューム)に空きがあるか否かを判定し(ステップS202)、空きがある場合には、ジャーナルデータを書込み(ステップS203)、処理を終了する。一方、空きがない場合には、CCP121は、ジャーナルデータ書込要求を2次キャッシュ部130に送信し(ステップS204)、処理を終了する。
図31Cは、本発明の第1実施形態に係る2次キャッシュ部におけるジャーナル書込処理のフローチャートである。
2次キャッシュ部130において、CCP131がSEL132を介して1次キャッシュ部120からジャーナルデータ書込要求を受信したか否かを判定し(ステップS211)、受信していない場合には、ステップS211を繰り返し実行する。一方、ジャーナルデータ書込要求を受信した場合には、CCP131は、2次キャッシュメモリ134のジャーナルデータを書き込むための記憶領域(ジャーナルボリューム)に空きがあるか否かを判定し(ステップS212)、空きがある場合には、ジャーナルデータを書込み(ステップS213)、処理を終了する。一方、空きがない場合には、CCP131は、ジャーナルデータ書込要求をDKA140に送信し(ステップS214)、処理を終了する。これにより、DKA140のDKP141が、ジャーナルデータをHDD部200のジャーナルデータを書き込むための記憶領域(拡張ジャーナルボリューム)に格納する。
このように、本実施形態のストレージシステム10によると、ジャーナルデータを1次キャッシュメモリ124に格納できない場合には、2次キャッシュメモリ134に格納し、2次キャッシュメモリ134にも格納できない場合には、HDD部200に格納することができる。
図32は、本発明の第1実施形態に係るチャネルアダプタにおけるリモートコピー処理のフローチャートである。
CHA110において、CHP111が次にリモートコピー先に送信すべきジャーナルデータを読み出す要求を送信する(ステップS221)。なお、次に送信すべきジャーナルデータは、ジャーナルデータに含まれる更新順序に基づいて特定することができる。次いで、CHP111は、1次キャッシュ部120からジャーナルデータを受信したか否かを判定し(ステップS222)、受信していない場合には、ステップS222を繰り返し実行する。一方、ジャーナルデータを受信した場合には、ジャーナルデータをコピー先に送信する(ステップS223)。
次いで、CHP111が、コピー先からジャーナルデータの受領完了を受信したか否かを判定し(ステップS224)、ジャーナルデータの受領完了を受信するまでステップS224を繰り返し実行する。そして、CHP111は、コピー先から受領完了を受信した場合には、1次キャッシュ部120にジャーナルデータの消去要求を送信する(ステップS225)。
図33は、本発明の第1実施形態に係る1次キャッシュ部におけるリモートコピー処理のフローチャートである。
1次キャッシュ部120において、CCP121がSEL122を介してCHA110からジャーナルデータ要求を受信したか否かを判定し(ステップS231)、受信していない場合には、ステップS231を繰り返し実行する。一方、ジャーナルデータ要求を受信した場合には、CCP121は、ジャーナルデータ要求に含まれているジャーナルデータの更新順序に基づいて、1次キャッシュメモリ124に対象のジャーナルデータが格納されているか否かを判定する(ステップS232)。
この結果、ジャーナルデータが格納されている場合(ステップS232のYes)には、CCP121は、1次キャッシュメモリ124からジャーナルデータを取得し(ステップS233)、ジャーナルデータをCHA110に送信する(ステップS234)。そして、CCP121は、CHA110からジャーナルデータ消去要求を受信したか否かを判定し(ステップS235)、ジャーナルデータ消去要求を受信するまでステップS234を繰り返し実行する。そして、CCP121は、CHA110からジャーナルデータ消去要求を受信した場合には、当該消去要求に対応するジャーナルデータを1次キャッシュメモリ124から消去し(ステップS236)、処理を終了する。
一方、対象のジャーナルデータが格納されていない場合(ステップS232のNo)には、CCP121がジャーナルデータ要求を2次キャッシュ部130に送信する(ステップS237)。次いで、CCP121は、2次キャッシュ部130からジャーナルデータを受信したか否かを判定し(ステップS238)、受信していない場合には、ステップS238を繰り返し実行する。一方、ジャーナルデータを受信した場合には、ジャーナルデータをCHA110に送信する(ステップS239)。
次いで、CCP121が、CHA110からジャーナルデータ消去要求を受信したか否かを判定し(ステップS240)、ジャーナルデータの消去要求を受信するまでステップS240を繰り返し実行する。そして、CCP121は、CHA110からジャーナルデータ消去要求を受信した場合には、2次キャッシュ部130にジャーナルデータの消去要求を送信する(ステップS241)。
図34Aは、本発明の第1実施形態に係る2次キャッシュ部におけるリモートコピー処理のフローチャートである。
2次キャッシュ部130において、CCP131がSEL132を介して1次キャッシュ部120からジャーナルデータ要求を受信したか否かを判定し(ステップS251)、受信していない場合には、ステップS251を繰り返し実行する。一方、ジャーナルデータ要求を受信した場合には、CCP131は、ジャーナルデータ要求に含まれているジャーナルデータの更新順序に基づいて、2次キャッシュメモリ134からジャーナルデータを取得し(ステップS252)、ジャーナルデータを1次キャッシュ部120に送信する(ステップS253)。そして、CCP131は、1次キャッシュ部120からジャーナルデータ消去要求を受信したか否かを判定し(ステップS254)、ジャーナルデータ消去要求を受信するまでステップS254を繰り返し実行する。そして、CCP131は、1次キャッシュ部120からジャーナルデータ消去要求を受信した場合には、当該消去要求に対応するジャーナルデータを2次キャッシュメモリ134から消去し(ステップS255)、処理を終了する。
図34Bは、本発明の第1実施形態に係るジャーナル移動処理のフローチャートである。
このジャーナル移動処理は、例えば、所定の時間毎に実行される。2次キャッシュ部130において、CCP131が2次キャッシュメモリ134にジャーナルデータを書き込むための記憶領域(ジャーナルボリューム)に空きがあるか否かを判定し(ステップS261)、空きがない場合には、ステップS261を繰り返し実行する。一方、空きがある場合には、CCP131は、HDD部200にジャーナルデータがあるか否かを判定する(ステップS262)。HDD部200にジャーナルデータがあるか否かについては、例えば、HDD部200へジャーナルデータの書込要求を行った数と、HDD部200から読み出したジャーナルデータの数との差があるか否かによって把握できる。
HDD部200にジャーナルデータがあると判定した場合(ステップS262のYes)には、CCP131は、ジャーナルデータ要求をDKA140に送信する(ステップS263)。これにより、DKA140は、HDD部200から該当するジャーナルデータを読み出して、2次キャッシュ部130に送信することとなる。
CCP131は、DKA140からジャーナルデータを受信し(ステップS264)、受信したジャーナルデータを2次キャッシュメモリ134に格納し(ステップS265)、処理を終了する。なお、HDD部200にジャーナルデータがないと判定した場合(ステップS262のNo)には、処理を終了する。
このジャーナル移動処理によって、HDD部200に格納されたジャーナルを適宜2次キャッシュメモリ134に格納することができる。このため、ジャーナルデータを送信する際には、HDD部200によるアクセス速度の影響を受けることない。このため、コピー先にジャーナルデータを迅速に送信することができる。
図35Aは、本発明の第1実施形態に係るジャーナル書込処理及びリモートコピー処理を説明する図である。ここで、図31A乃至図34Bのステップ番号を適宜用いて説明する。
まず、ストレージシステム10は、(1)に示すように、リモートコピー対象のデータが更新される場合(ステップS191)には、(2)に示すように更新データと更新順序とを含むジャーナルデータが、1次キャッシュメモリ124に2重書きされる(ステップS203)。一方、1次キャッシュメモリ124に書き込まれたジャーナルデータは、(3)に示すように、1次キャッシュメモリ124から取り出され(ステップS233)、リモートコピー先に転送される(ステップS223)。
図35Bは、本発明の第1実施形態に係るジャーナル書込処理及びリモートコピー処理を説明する他の図であり、図35Aに示す状態から更にデータが更新される場合の状態の一例を説明する図である。
図35Bの(4)に示すように、図35Aに示す状態において、リモートコピー対象のデータが更新される場合(ステップS191)には、(5)に示すように更新データと更新順序とを含むジャーナルデータが、1次キャッシュメモリ124に2重書きされる(ステップS203)。
そして、ジャーナルデータを1次キャッシュメモリ124のジャーナルボリューム120jに格納しきれなくなった場合には、(6)に示すように、2次キャッシュメモリ134のジャーナルボリューム130jにジャーナルデータが格納される(ステップS213)。
一方、(7)に示すように、1次キャッシュメモリ124及び2次キャッシュメモリ134に格納されているジャーナルデータは、更新順序に従ってリモートコピー先に送信される(ステップS233、ステップS252、ステップS223)。
そして、リモートコピー対象のデータがさらに更新される場合(ステップS191)において、ジャーナルデータを1次キャッシュメモリ124及び2次キャッシュメモリ134に格納しきれない場合には、(8)に示すように、HDD部200の拡張ジャーナルボリューム200jにジャーナルデータが格納される(ステップS214)。
HDD部200の拡張ジャーナルボリューム200jに格納されたジャーナルデータは、(9)に示すように、2次キャッシュ部130のジャーナルボリューム130jに逐次移動され(ステップS265)、リモートコピー先に送信される(ステップS253、ステップS223)。
図35Cは、本発明の第1実施形態に係るジャーナルデータの格納状態の一例を示す図である。
図35Cに示すように、1次キャッシュメモリ124及び2次キャッシュメモリ134のジャーナルボリューム120j,130jにジャーナルデータを格納できない場合には、それ以降の更新順序(例えば、n+1番目以降)のジャーナルデータは、ジャーナルボリューム120j、130jに空きができない限り、HDD部200の拡張ジャーナルボリューム200jに格納されることとなる。このため、ジャーナルボリューム120j、130jに格納しきれない場合であっても支障なく、ジャーナルデータを蓄積することができる。
<第1実施形態:第1変形例>
次に、本発明の第1実施形態の第1変形例に係るストレージシステムを説明する。
図36は、本発明の第1実施形態の第1変形例に係るストレージシステムを説明する図である。なお、第1実施形態のストレージシステムと同様な部分には同一の番号を付して重複する説明を省略する。
本変形例に係るストレージシステム10は、第1実施形態に係るストレージシステム10において、1次キャッシュ部120からCCP121を取り除き、2次キャッシュ部130からCCP131を取り除き、CCP121及びCCP131が制御していた処理をCHP111がすべてを行うように置き換えたものである。このようにすると、ストレージシステム10にCCP121及びCCP131を備えずとも、第1実施形態と同様な処理を実行することができ、コストを低減することができる。
例えば、(1)に示すように、CHP111がライト対象のデータ(同図では、データAという)を1次キャッシュメモリ124に2重書き、すなわち、2つの1次キャッシュメモリ124にそれぞれ書き込む。次に、(2)に示すように、CHP111が双方の1次キャッシュ部120の1次キャッシュメモリ124にデータを格納するとホスト装置へライト処理完了通知を送信する(ステップS17)。このように、1次キャッシュメモリ124にデータAが2重書きされた時点でホスト装置へライト処理完了通知を行うので、ホスト装置に対して迅速に応答することができる。次に、(3)に示すように、CHP111が2つの2次キャッシュメモリ134にライト対象のデータAをそれぞれ書き込む。次に、(4)に示すように、CHP111が一方の1次キャッシュ部120の1次キャッシュメモリ124からライト対象のデータAを削除する。
これによって、一方の1次キャッシュメモリ124からライト対象のデータAが削除されることとなり、1次キャッシュメモリ124のメモリ効率を向上することができる。この場合には、データAについては、一方の1次キャッシュメモリ124と、2つの2次キャッシュメモリ134に格納されており、データ保持に関する信頼性を確保している。また、一方の1次キャッシュメモリ124にデータAを格納しているので、当該データAに対するリード要求に対しても迅速に応答することができる。
<第1実施形態:第2変形例>
図37は、本発明の第1実施形態の第2変形例に係るストレージシステムを説明する図である。なお、第1実施形態のストレージシステムと同様な部分には同一の番号を付して重複する説明を省略する。
第2変形例に係るストレージシステムは、第1実施形態のストレージシステムと同様な構成を有しており、CHP111及びCCP121の処理が多少異なっている。簡単に説明すると、第1実施形態では、1次キャッシュメモリ124に2重書きした時点で、ホスト装置にライト処理完了通知を送信するようにしていたものを、第2変形例においては、1つの1次キャッシュメモリ124に格納し、2次キャッシュメモリ134に2重書きした時点で、ホスト装置にライト処理完了通知を送信するようにしたものである。
図38は、本発明の第1実施形態の第2変形例に係るチャネルアダプタにおけるライト要求受信時処理のフローチャートである。なお、図7に示す処理と同様な部分には同一の番号を付している。ここでは、図7のフローチャートと異なる部分について説明することとする。
ステップS11において、ライト要求を受信した場合には、CHP111は、1つの1次キャッシュ部120に対してライト要求を送信し(ステップS271)、1つの1次キャッシュ部120からライト完了を受信したか否かを判定し(ステップS272)、ライト完了を受信するまでステップS272を繰り返し実行する。そして、CHP111は、1次キャッシュ部120からライト完了を受信した場合には、信号変換/データ処理部112を介してライト要求元のホスト装置へライト処理完了通知を送信する(ステップS17)。
図39は、本発明の第1実施形態の第2変形例に係る1次キャッシュ部におけるライト要求受信時処理のフローチャートである。図8に示す処理と同様な部分には同一の番号を付している。ここでは、図8のフローチャートの異なる部分について説明することとする。
2次キャッシュ部130の双方からライト完了を受信した場合(ステップS29のYes)には、CCP121は、CHP111にライト完了を送信する(ステップS273)。これによって、2つの2次キャッシュ部130に2重書きが行われた時点で、CHP111にライト完了が送信されることとなる。
図37に戻り、図37を図38及び図39のステップ番号を適宜用いて説明する。
まず、ストレージシステム10において、(1)に示すように、CHA110が、ライト要求を受信する(ステップS11)。ここで、CHP111は、(2)に示すように、各クラスタの1次キャッシュメモリ124の使用量を逐次チェックしている。そして、(3)に示すように、一つの1次キャッシュ部120がCHP111からライト要求を受信し、CCP121がライト対象のデータ(同図では、データAという)を1つの1次キャッシュメモリ124に書き込む(ステップS23)とともに、2次キャッシュ部130にライト要求を送信する(ステップS28)ことにより、2つの2次キャッシュメモリ134にライト対象のデータAをそれぞれ書き込ませる。
次に、(4)に示すように、CCP121が2次キャッシュメモリ134に格納したことを示すライト完了をCCP131から受信すると(ステップS29のYes)。次に、(5)に示すように、CCP121は、CHP111にライト完了を送信する(ステップS273)。
CCP121からライト完了を受信した場合(ステップS272のYes)には、(6)に示すように、CHP111は、ライト処理完了通知をホスト装置に送信する(ステップS17)。
この処理により、ライトデータを1つの1次キャッシュメモリ124に格納させ、2つの2次キャッシュメモリ134に格納させた後に、ホスト装置へライト処理完了通知が送信されることとなる。
本変形例においては、ライトデータを1つの1次キャッシュメモリ124にのみ格納するので、1次キャッシュメモリ124の記憶資源を有効に利用することができるとともに、1次キャッシュメモリ124及び2つの2次キャッシュメモリ134にデータを格納するので、データの高信頼性を確保することができる。
<第2実施形態>
図40は、本発明の第2実施形態に係るストレージシステムを説明する図である。なお、第1実施形態のストレージシステムと同様な部分には同一の番号を付して重複する説明を省略する。第2実施形態に係るストレージシステムのライト要求受信時処理は、第1実施形態のストレージシステムの図9、図38及び図39に示す処理とわずかな差異があるだけであるので、図9、図38及び図39のステップ番号を適宜用いて、差異点を含めて以下説明する。
第2実施形態に係るストレージシステムは、第1実施形態に係るストレージシステムにおいて、1次キャッシュ部120を1つ備えるようにしたものである。
第2実施形態に係るストレージシステムにおいて、(1)に示すように、CHA110が、ライト要求を受信する(ステップS11)と、CHP111は、1次キャッシュ部120にライト要求を送信する(ステップS271)。ライト要求を受信したCCP121が1次キャッシュメモリ124にライトデータを書き込む(ステップS23)。
次いで、CCP121は、いずれか一方の2次キャッシュ部130にライト要求を送信し(ステップS28)、ライト要求を受けた2次キャッシュ部130のCCP131が、2次キャッシュメモリ134にライトデータを書込み(ステップS44)。次いで、CCP131がライト完了をCCP121に送信し(ステップS45)、CCP121がライト完了をCHP111に送信する(ステップS273)。
CHP111は、CCP121からライト完了を受信した場合(ステップS272のYes)には、(2)に示すように、ライト処理完了通知をホスト装置に送信する(ステップS17)。
この処理により、ライトデータを1つの1次キャッシュメモリ124と、いずれか一方の2次キャッシュメモリ134に格納させた後に、ホスト装置へライト処理完了通知が送信されることとなる。
第2実施形態によると、1次キャッシュメモリ124を複数備えずともよく、ストレージシステムのコストを低減することができる。また、1次キャッシュメモリ124及び2次キャッシュメモリ134にデータを格納するので、データの高信頼性を確保することができる。また、1次キャッシュメモリ124にデータが存在するので、リード要求に対する応答を迅速に行うことができる。
第2実施形態においては、1次キャッシュメモリ124上のデータの整理処理や、2次キャッシュメモリ134上のデータの整理処理としては、第1実施形態における図17A、図17B、図18、図20A、図20B、及び図23と同様な処理を実行するようにしてもよい。
<第2実施形態:変形例>
図41は、本発明の第2実施形態に係るストレージシステムの変形例を説明する図である。なお、第2実施形態のストレージシステムと同様な部分には同一の番号を付して重複する説明を省略する。第2実施形態の変形例に係るストレージシステムのライト要求受信時処理は、第1実施形態のストレージシステムの図9、図38及び図39に示す処理とわずかな差異があるだけであるので、図9、図38及び図39のステップ番号を適宜用いて、差異点を含めて以下説明する。
本変形例に係るストレージシステムは、第2実施形態に係るストレージシステムにおいて、複数の2次キャッシュ部130のSEL132と、複数のCHA110のDTC114とをバス115によって接続するようにしたものである。
本変形例に係るストレージシステムでは、(1)に示すように、CHA110が、ライト要求を受信する(ステップS11)と、CHP111は、1次キャッシュ部120及び一方の2次キャッシュ部130にライト要求を送信する(ステップS271)。ライト要求を受信した1次キャッシュ部120のCCP121が1次キャッシュメモリ124にライトデータを書き込む(ステップS23)。また、ライト要求を受信した2次キャッシュ部130のCCP131が2次キャッシュメモリ134にライトデータを書き込む(ステップS44)。
次いで、CCP121及びCCP131は、それぞれライト完了をCHP111に送信する(ステップS273、ステップS45)。
CHP111は、CCP121及びCCP131からライト完了を受信した場合(ステップS272のYes)には、(2)に示すように、ライト処理完了通知をホスト装置に送信する(ステップS17)。
この処理により、ライトデータを1つの1次キャッシュメモリ124と、いずれか一方の2次キャッシュメモリ134に格納させた後に、ホスト装置へライト処理完了通知が送信されることとなる。本変形例によると、1次キャッシュ部120の障害が発生した場合にあっても、2つの2次キャッシュ部130にライトデータを格納することもできる。
本変形例においても、1次キャッシュメモリ124上のデータの整理処理や、2次キャッシュメモリ134上のデータの整理処理としては、第1実施形態における図17A、図17B、図18、図20A、図20B、及び図23と同様な処理を実行するようにしてもよい。
以上、本発明を一実施形態に基づいて説明したが、本発明は上述した実施形態に限られず、他の様々な態様に適用可能である。
例えば、上記各実施形態おいて、記憶装置の一例としてHDD部200を用いていたが、本発明はこれに限られず、例えば、ハードディスクドライブの少なくとも一部、又は全部を、DVDドライブ、磁気テープドライブ、フラッシュメモリデバイス等のデータを記憶可能な他の記憶デバイスに置き換えた記憶装置を用いるようにしてもよい。
上記実施形態では、1次キャッシュメモリ124又は2次キャッシュメモリ134からデータを削除する際に、参照日時が古いデータを削除するようにしていたが、参照回数が少ないデータを削除するようにしてもよく、また、参照日時及び参照回数を組み合わせた条件に基づいてデータを削除するようにしてもよい。
また、上記実施形態では、2次キャッシュメモリ134のデータを整理する際において、2次キャッシュメモリ134からデータを削除するようにしていたが、例えば、2次キャッシュメモリ134からデータを削除せずに、当該データが記憶された記憶領域を新たなデータを書き込む際に利用できる記憶領域として管理するようにしてもよい。例えば、2次キャッシュメモリ134の記憶領域が利用可能か否かを示す情報をLM136に格納し、CCP131がこの情報に基づいて管理することにより実現できる。このようにすると、2次キャッシュメモリ134が不揮発メモリである場合において、データを削除するためのデータを書込む動作を行わずに済むので、2次キャッシュメモリ134の寿命を長くすることができる。
10 ストレージシステム、100 ストレージ制御装置、101a 第1クラスタ、101b 第2クラスタ、110 チャネルアダプタ、111 CHP、112 信号変換/データ処理部、114 DTC、115 バス、120 1次キャッシュ部、121 CCP、122 SEL、123 CMC、124 1次キャッシュメモリ、124a 1次キャッシュメモリモジュール、125 DTC、126 LM、127 バス、128 バス、130 2次キャッシュ部、131 CCP、132 SEL、133 CMC、134 2次キャッシュメモリ、134a 2次キャッシュメモリモジュール、134as スペア2次キャッシュメモリモジュール、135 SEL、136 LM、137 バス、138 バス、140 ディスクアダプタ、141 SEL、142 DKP、143 冗長データ生成部/信号変換部、200 HDD部、400 バッテリ。