説明

ディスクアレイ装置の制御方法及びディスクアレイ装置

【課題】キャッシュメモリについてのデータ退避の可否に基づいて、ディスクアレイ装置の装置状態を決定するディスクアレイ装置制御方法を提供する。
【解決手段】ディスクアレイ装置の制御方法において、第1の制御モジュールのCPUが、第2の制御モジュールのバッテリ及び不揮発性メモリによる、第2の制御モジュールのキャッシュメモリについてのデータ退避可否を示す他系状態情報を取得する。第1の制御モジュールのCPUが、第1の制御モジュールのバッテリ及び不揮発性メモリによる、第1の制御モジュールのキャッシュメモリについてのデータ退避可否を示す自系状態情報と、取得した他系状態情報とに基づいて、ディスクアレイ装置をライトバック状態とするか又はライトスルー状態とするかを決定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ディスクアレイ装置の制御方法及びディスクアレイ装置に関する。
【背景技術】
【0002】
ディスクアレイ装置は、データアクセス時間を短くするために、高速デバイスであるキャッシュ(ディスクキャッシュメモリ)を備える。更に、ディスクアレイ装置は、揮発性メモリであるキャッシュに記憶されているデータを退避するために、不揮発性メモリを備える。不揮発性メモリとしては、フラッシュメモリ(EEPROM)が用いられる。これにより、ディスクアレイ装置の主電源の停電時には、キャッシュに記憶されているデータが不揮発性メモリに退避される。
【0003】
なお、記憶装置システムにおいて、各ノードに、キャッシュメモリと、不揮発性メモリと、自ノードおよび他ノードのキャッシュメモリに格納されたライトデータを不揮発性メモリにコピーするコピー手段と、コピー手段間インタフェースの故障が検出された場合にコピー手段を処理から切り離しライトスルー動作に切り替える動作モード切替手段と、動作モードを切り替える際に、不揮発性メモリに格納されているライトデータをディスク装置に書き込むライトバック手段と、コピー手段を交換した後の立ち上げ時に当該コピー手段を診断する診断手段とを設けることが提案されている。
【0004】
また、ディスクキャッシュを行っているコンピュータシステムにおいて、残容量検出手段により検出した充電池の残容量と電圧値設定手段によって設定した電圧設定値の比較により、ディスクキャッシュ制御をコピーバック方式かライトスルー方式かのどちらかに選択するディスクキャッュの制御方式が提案されている。
【0005】
また、ディスク制御装置において、停電が発生すると、電源回路から停電検出信号をリード/ライト回路に供給し、リード/ライト回路は、停電検出信号に応じて自動的に起動され、所定のパラメタ値にしたがってディスクキャッシュメモリからEEPROMへのデータ転送を行ない、ライトキャッシュのデータをEEPROMにセーブする手段が提案されている。
【0006】
また、ストレージシステムにおいて、揮発性のキャッシュメモリの他に、給電の有無に関わらずデータを記憶し続けることが可能なタイプのメモリである不揮発性メモリを備え、上位装置からのアクセスコマンドに従うデータの一時格納先は揮発性キャッシュメモリとし、一次電源から揮発性キャッシュメモリへの給電が無くなった場合に、バッテリからの給電により、揮発性キャッシュメモリに記憶されているデータを不揮発性メモリにコピーすることが提案されている。
【0007】
また、バッテリ内蔵の不揮発性メモリを使用したバックアップ装置において、電源電圧がメモリの書込み保護のかかる電圧と正常の電源電圧との間の電圧になったことを検出して中央処理装置に割込みをかける手段と、この手段で割込みのかかる電圧とメモリの書込み保護のかかる電圧との間の電圧になったことを検出して中央処理装置にリセットをかける手段と、この手段でリセットをかけるときにメモリに割り当てされたアドレスを選択しないようにアドレスバスの最上位ビットを0にする手段とを具備して構成されることが提案されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2006−277205号公報
【特許文献2】特開平6−309232号公報
【特許文献3】特開平6−309234号公報
【特許文献4】特開2008−108026号公報
【特許文献5】特開平5−35614号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
ディスクアレイ装置の主電源の停電時には、バッテリから、CPU、キャッシュ、不揮発性メモリ、不揮発性メモリのコントローラに、データ退避のための電力が供給される。しかし、バッテリが供給できる電力、換言すれば、バッテリ容量は、周囲温度、充電回数に依存して徐々に劣化する。従って、ディスクアレイ装置の主電源の停電時において、データ退避のための電力を供給できる時間も徐々に短くなり、退避できるデータ量も徐々に小さくなる。
【0010】
一方、不揮発性メモリとして用いられるフラッシュメモリでは、書き込み回数の制限がある。換言すれば、書き込みを繰り返すうちに少しずつメモリセルが破壊されるので、書き込み可能領域、換言すれば、退避領域が徐々に減る。
【0011】
このため、バッテリ寿命の劣化及び不揮発性メモリの書込み可能領域の減少の双方又は一方に起因して、ディスクアレイ装置の主電源の停電時において、キャッシュに記憶されているデータの全体、換言すれば、キャッシュ容量の分のデータを不揮発性メモリに退避することができなくなる場合(退避不可能な状態になった場合)が生じるおそれがある。この場合、キャッシュに記憶されているデータの保証ができないので、ディスクアレイ装置は、それまでのライトバック状態をライトスルー状態に変更する必要がある。
【0012】
図9は、ディスクアレイ装置におけるキャッシュの退避処理フローである。
【0013】
ディスクアレイ装置が、バッテリ容量がキャッシュメモリの容量以上、換言すれば、キャッシュメモリのデータをフラッシュメモリに退避可能な容量以上か否か、及び、フラッシュメモリの退避領域がキャッシュメモリの容量以上か否かを判断する(ステップS101)。バッテリ容量がキャッシュ容量以上であり、かつ、フラッシュメモリの退避領域がキャッシュ容量以上である場合に、ディスクアレイ装置は、ライトバック状態を継続する(ステップS102)。ディスクアレイ装置は、バッテリ容量がキャッシュ容量未満であるか、又は、フラッシュメモリの退避領域がキャッシュ容量未満である場合に、ライトスルー状態に変更する(ステップS103)。
【0014】
ライトバック状態においては、ホストコンピュータからのデータをキャッシュに格納した時点で、ホストコンピュータに書き込み完了の通知を発行する。しかし、ライトスルー状態においては、ホストコンピュータからのデータをディスクに格納するまでは、ホストコンピュータに書き込み完了の通知を発行しない。このため、前記変更により、ホストコンピュータから見たディスクアレイ装置の性能が劣化してしまう。
【0015】
本発明は、キャッシュメモリについてのデータ退避の可否に基づいて、ディスクアレイ装置の装置状態を決定するディスクアレイ装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【0016】
開示されるディスクアレイ装置の制御方法は、各々が、キャッシュメモリと、キャッシュメモリにディスクアレイ装置の主電源の停電時に電力を供給するバッテリと、キャッシュメモリにデータを格納するCPUと、キャッシュメモリのデータを退避する不揮発性メモリとを含む第1及び第2の制御モジュールと、第1及び第2の制御モジュールによりデータが書込まれ又は読出されるディスクアレイとを含むディスクアレイ装置の制御方法である。ディスクアレイ装置の制御方法は、第1の制御モジュールのCPUが、第2の制御モジュールのバッテリ及び不揮発性メモリによる、第2の制御モジュールのキャッシュメモリについてのデータ退避可否を示す他系状態情報を取得するステップと、第1の制御モジュールのCPUが、第1の制御モジュールのバッテリ及び不揮発性メモリによる、第1の制御モジュールのキャッシュメモリについてのデータ退避可否を示す自系状態情報と、取得した他系状態情報とに基づいて、ディスクアレイ装置をライトバック状態とするか又はライトスルー状態とするかを決定するステップとを含む。
【発明の効果】
【0017】
開示されるディスクアレイ装置によれば、バッテリ寿命が劣化したり、不揮発性メモリの書込み可能領域が減少した場合であっても、ディスクアレイ装置がライトバック状態で動作することができ、書き込み速度性能が低下する期間を短縮することができる。
【図面の簡単な説明】
【0018】
【図1】ディスクアレイ装置の一例を示す図である。
【図2】キャッシュメモリの一例を示す図である。
【図3】診断タイミングテーブルの一例を示す図である。
【図4】データ退避方式テーブルの一例を示す図である。
【図5】データ退避方式テーブルの一例を示す図である。
【図6】データ退避方式の説明図である。
【図7】データ退避方式の説明図である。
【図8】データ退避の診断処理フローである。
【図9】本発明者が検討した背景となるデータ退避の診断処理フローである。
【発明を実施するための形態】
【0019】
図1は、ディスクアレイ装置の構成を示す図である。
【0020】
ディスクアレイ装置は、2個の制御モジュール1と1個のディスクアレイ3とを含む。2個の制御モジュールは、各々、同一の構成を有する。制御モジュール1は、ホスト制御部11、スイッチ12、バッテリ13、CPU14、キャッシュメモリ15、メモリ制御部16、フラッシュメモリ17、エキスパンダ18を含む。
【0021】
2個の制御モジュールを区別する場合には、制御モジュールCM#0又はCM#1という。例えば、制御モジュールCM#0に搭載されたホスト制御部を11Aと表し、制御モジュールCM#1に搭載されたホスト制御部を11Bと表す。スイッチ12等についても同様である。
【0022】
ディスクアレイ装置は、2個のサーバと接続される。換言すれば、各々の制御モジュール1は、対応するサーバに接続される。ディスクアレイ装置は、サーバからの書き込み要求に応じて、サーバからデータを受信して、ディスクアレイ3に書き込む。また、ディスクアレイ装置は、サーバからの読み出し要求に応じて、ディスクアレイ3からデータを読み出して、サーバへ送信する。
【0023】
このコンピュータシステム又はディスクアレイ装置は、データの信頼性の向上のために、データの二重化、換言すれば、ミラーリングを行う。換言すれば、このディスクアレイ装置はRAID装置である。2個の制御モジュール1を区別する場合に、例えば制御モジュールCM#0、CM#1と表す。
【0024】
ホスト制御部11は、サーバとCPU14とに接続され、サーバとディスクアレイ装置との間のデータ転送を制御する。例えば、ホスト制御部11は、サーバから書き込み要求とライトデータとを受信して、CPU14に転送する。「ライトデータ」は、ディスクアレイ3に書き込むべきデータである。また、ホスト制御部11は、サーバから読み出し要求を受信して、CPU14に転送する。この後、ホスト制御部11は、CPU14からリードデータを受信して、読み出し要求に対する応答として、サーバに転送する。「リードデータ」は、ディスクアレイ3から読み出されたデータである。
【0025】
CPU14は、サーバから受信した書き込み要求に従って、キャッシュメモリ15又はディスクアレイ3へのデータの書き込みを制御する。また、CPU14は、サーバから受信した読み出し要求に従って、キャッシュメモリ15又はディスクアレイ3からのデータの読み出しを制御する。
【0026】
キャッシュメモリ15は、ディスクアレイ3よりも十分に高速な揮発性メモリ、例えばDRAM(Dynamic Random Access Memory)のような半導体メモリである。キャッシュメモリ15は、CPU14に接続される。キャッシュメモリ15には、サーバから転送されたライトデータ、又は、ディスクアレイ3から読み出されたリードデータが、一時的に格納される。ここで、キャッシュメモリ15に書き込まれたライトデータであって、未だディスクアレイ3へ書き込まれていないライトデータを、「ダーティデータ」と言う。
【0027】
ディスクアレイ3は、複数の磁気ディスク装置31を含む。ディスクアレイ3は、エキスパンダ18を介して、CPU14に接続される。
【0028】
フラッシュメモリ17は、キャッシュメモリ15のデータの退避用の不揮発性メモリである。後述するように、ディスクアレイ装置の主電源の停電時に、キャッシュメモリ15に格納されたデータであって、退避すべき全データが、フラッシュメモリ17に退避される。これにより、キャッシュメモリ15のデータを保証することができる。フラッシュメモリ17は、不揮発性の記憶装置であれば良く、フラッシュメモリ17に代えて、例えば磁気ディスク装置や種々の不揮発性半導体メモリを用いるようにしても良い。
【0029】
フラッシュメモリ17は、ディスクアレイ3よりも十分に高速ではあるが、キャッシュメモリ15よりは低速な不揮発性メモリ、例えばEEPROM(Electrically Erasable and Programmable Read Only Memory)のような半導体メモリである。フラッシュメモリ17は、メモリ制御部16を介して、CPU14に接続される。フラッシュメモリ17には、サーバから転送されたライトデータ、又は、ディスクアレイ3から読み出されたリードデータが、一時的に格納される(換言すれば、退避される)。メモリ制御部16は、CPU14からの指示に従って、フラッシュメモリ17の書込み又は読出しを実行する。
【0030】
CPU14は、「ライトバック状態」で動作中に書き込み要求とライトデータとを受信した場合、ライトデータをキャッシュメモリ15に書き込み、その後、ホスト制御部11に書き込み完了を通知する。この通知を受信したホスト制御部11は、サーバに書き込みの完了を通知する。この後、キャッシュメモリ15に格納されたライトデータ、換言すれば、ダーティデータは、CPU14により、エキスパンダ18を介して、ディスクアレイ3に書き込まれる。
【0031】
CPU14は、「ライトスルー状態」で動作中に書き込み要求とライトデータとを受信した場合、ライトデータを一旦キャッシュメモリ15に書き込み、その後、キャッシュメモリ15に格納したライトデータを読み出してディスクアレイ3に書き込み、更にその後、ホスト制御部11に書き込み完了を通知する。この通知を受信したホスト制御部11は、サーバに書き込みの完了を通知する。
【0032】
CPU14は、サーバから読み出し要求を受信した場合、キャッシュメモリ15を検索する。要求されたデータ(リードデータ)がキャッシュメモリ15に存在する場合、CPU14は、要求されたリードデータをキャッシュメモリ15から読み出して、ホスト制御部11に送信する。ホスト制御部11は、受信したリードデータをサーバに送信する。
【0033】
要求されたデータがキャッシュメモリ15に存在しない場合、CPU14は、要求されたデータをディスクアレイ3から読み出してキャッシュメモリ15に一旦格納し、キャッシュメモリ15に格納したデータを読み出してホスト制御部11に送信する。ホスト制御部11は、受信したデータをサーバに送信する。
【0034】
エキスパンダ18は、CPU14とディスクアレイ3との間に設けられ、CPU14とディスクアレイ3との間のデータ転送を制御する。例えば、エキスパンダ18は、CPU14から書き込み命令とダーティデータ又はライトデータとを受信して、ディスクアレイ3に転送する。書き込み命令は、CPU14により書き込み要求に基づいて生成される。また、エキスパンダ18は、CPU14から読み出し命令を受信して、ディスクアレイ3に転送する。この後、エキスパンダ18は、ディスクアレイ3からリードデータを受信して、読み出し命令に対する応答として、リードデータを一旦キャッシュメモリ15に転送する。読み出し命令は、CPU14により読み出し要求に基づいて生成される。
【0035】
ディスクアレイ3は、書き込み命令を受信した場合、複数のディスク装置31の中の書き込み命令において指定されたアドレスに、受信したダーティデータ又はライトデータを書き込む。また、ディスクアレイ3は、読み出し命令を受信した場合、複数のディスク装置31の中の読み出し命令において指定されたアドレスから、要求されたデータ(リードデータ)を読み出し、エキスパンダ18を介して、CPU14に転送する。
【0036】
なお、制御モジュールCM#0のエキスパンダ18A及び制御モジュールCM#1のエキスパンダ18Bは、各々のディスク装置31について書込み及び読出し可能とされる。これにより、制御モジュールCM#0及び制御モジュールCM#1のいずれか一方が故障しても、ディスクアレイ3について書込み及び読出しを実行することができる。
【0037】
各制御モジュールCM#0及びCM#1に設けられたCPU14は、ミラーリング用パス19及びスイッチ12により、相互に接続される。スイッチ12は、例えばPCI Expressにおけるスイッチであり、ミラーリング用パス19は、PCI Expressに対応する通信路である。これにより、制御モジュールCM#0のCPU14Aと制御モジュールCM#1のCPU14Bとは相互に接続される。例えば、制御モジュールCM#0のキャッシュメモリ15Aに格納されたダーティデータ及びリードデータがミラーリングされる、換言すれば、制御モジュールCM#1のキャッシュメモリ15Bへコピーされる。これにより、ダーティデータ及びリードデータが二重化される。
【0038】
例えば、制御モジュールCM#0において、CPU14Aは、ダーティデータについてホスト制御部11に書き込み完了を通知した後、当該ダーティデータのコピーを、制御モジュールCM#1のCPU14Bに送信する。制御モジュールCM#1において、CPU14Bは、受信したダーティデータのコピーをキャッシュメモリ15Bに格納する。また、制御モジュールCM#0において、CPU14Aは、リードデータについてキャッシュメモリ15Aに格納した後、当該リードデータのコピーを、制御モジュールCM#1のCPU14Bに送信する。制御モジュールCM#1において、CPU14Bは、受信したリードのコピーをキャッシュメモリ15Bに格納する。制御モジュールCM#1のCPU14Bから制御モジュールCM#0のCPU14Aに対しても、同様にデータ転送が行われる。
【0039】
CPU14は、例えば診断処理部において、バッテリ13の電力供給能力を診断し、また、フラッシュメモリ17の書込み可能領域を診断する。バッテリ13の電力供給能力は、ディスクアレイ装置の周囲温度や充電回数により徐々に劣化する。フラッシュメモリ17の書込み可能領域は、データを書き込むことが可能な領域であり、従って、キャッシュメモリ15のデータの退避領域である。フラッシュメモリ17においては、書き込み回数制限に依存して、書き込みを繰り返すうちにメモリが破壊されることにより、書き込み可能領域が徐々に減る。フラッシュメモリ17のサイズは、書き込み可能領域の減少を考慮して、キャッシュメモリ15のサイズよりも大きくされる。
【0040】
バッテリ13は、例えば電気2重層コンデンサであり、制御モジュール1に設けられる。なお、バッテリ13は、例えばニッケル水素電池、リチウムイオン電池等であっても良い。バッテリ13は、通常時にはディスクアレイ装置の主電源により充電される。バッテリ13は、ディスクアレイ装置の主電源が停電した場合に、例えば、図1において点線で囲んで示すように、CPU14、キャッシュメモリ15、メモリ制御部16及びフラッシュメモリ17に電力を供給する。
【0041】
CPU14は、診断用パス20により、相互に接続される。診断用パス20は、2個のCPU14の間において、バッテリ13及びフラッシュメモリ17の診断結果を通信するための通信路であり、ミラーリング用パス19とは別に設けられる。これにより、制御モジュールCM#0のCPU14Aと制御モジュールCM#1のCPU14Bとは相互に接続される。例えば、制御モジュールCM#1のバッテリ13Bの診断結果及びフラッシュメモリ17の診断結果が、制御モジュールCM#0のCPU14Aに通知される。
【0042】
このディスクアレイ装置においては、バッテリ13及びフラッシュメモリ17の診断結果に基づいて、ディスクアレイ装置の装置状態、換言すれば、ライトスルー状態又はライトバック状態が以下のように制御される。
【0043】
このディスクアレイ装置においては、ディスクアレイ装置をライトバック状態又はライトスルー状態とするかは、制御モジュールCM#0のCPU14Aが決定する。従って、制御モジュールCM#0はマスタモジュールである。なお、制御モジュールCM#1がマスタモジュールであっても良い。
【0044】
以下の説明においては、制御モジュールCM#0から見て、制御モジュールCM#0を自系といい、制御モジュールCM#1を他系という。また、制御モジュールCM#1から見て、制御モジュールCM#0を他系といい、制御モジュールCM#1を自系という。
【0045】
制御モジュールCM#0のCPU14Aは、自系のバッテリ13Aのバッテリ容量と自系のフラッシュメモリ17Aの書込み可能領域(以下、フラッシュメモリ退避領域)とを診断し、診断結果に基づいて、自系のキャッシュメモリ15Aのデータ退避方式を決定する。制御モジュールCM#1のCPU14Bは、自系のバッテリ13Bのバッテリ容量と自系のフラッシュメモリ17Bの書込み可能領域(フラッシュメモリ退避領域)とを診断し、診断結果に基づいて、自系のキャッシュメモリ15Bのデータ退避方式を決定する。
【0046】
また、制御モジュールCM#1のCPU14Bは、自系の状態情報を、診断用パス20を介して、他系のCPU14Aに通知する。これにより、例えば、制御モジュールCM#0のCPU14Aは、制御モジュールCM#1のCPU14Bから、他系状態情報を取得する。制御モジュールCM#0から見た他系状態情報は、制御モジュールCM#1のバッテリ13B及びフラッシュメモリ17Bによる、制御モジュールCM#1のキャッシュメモリ15Bについてのデータ退避可否を示す情報である。
【0047】
具体的には、制御モジュールCM#0から見た他系状態情報は、制御モジュールCM#1のキャッシュメモリ15Bに書き込まれたデータの中で、ダーティデータとミラーリングデータの双方を、制御モジュールCM#1のフラッシュメモリ17Bに退避可能か否かを示す情報である。
【0048】
制御モジュールCM#0のCPU14Aは、自系状態情報と、制御モジュールCM#1のCPU14Bから取得した他系状態情報とに基づいて、ディスクアレイ装置をライトバック状態とするか又はライトスルー状態とするかを決定する。制御モジュールCM#0から見た自系状態情報は、制御モジュールCM#0のバッテリ13A及びフラッシュメモリ17による、制御モジュールCM#0のキャッシュメモリ15Aについてのデータ退避可否を示す情報である。
【0049】
具体的には、制御モジュールCM#0から見た自系状態情報は、制御モジュールCM#0のキャッシュメモリ15Aに書き込まれたデータの中で、ダーティデータとミラーリングデータの双方、又は、制御モジュールCM#0のキャッシュメモリ15Aに書き込まれたダーティデータのみを、制御モジュールCM#0のフラッシュメモリ17Aに退避可能か否かを示す情報である。
【0050】
制御モジュールCM#0のCPU14Aは、制御モジュールCM#1のキャッシュメモリ15Bに書き込まれたダーティデータ及びミラーリングデータの双方を制御モジュールCM#1のフラッシュメモリ17Bに退避可能であることを、他系状態情報が示す場合に、自系状態情報に拘わらず、ディスクアレイ装置をライトバック状態とする。
【0051】
制御モジュールCM#1のバッテリ13Bのバッテリ容量が制御モジュールCM#1のキャッシュメモリ15Bに書き込まれたダーティデータ及びミラーリングデータの双方を制御モジュールCM#1のフラッシュメモリ17Bに退避可能な容量以上であり、かつ、制御モジュールCM#1のフラッシュメモリ17Bのメモリ容量が制御モジュールCM#1のキャッシュメモリ15Bに書き込まれたダーティデータ及びミラーリングデータの双方を退避可能な容量以上である場合に、他系状態情報は、制御モジュールCM#1のキャッシュメモリ15Bに書き込まれたダーティデータ及びミラーリングデータの双方を、制御モジュールCM#1のフラッシュメモリ17Bに退避可能とされる。
【0052】
制御モジュールCM#0のCPU14Aは、自系状態情報に応じて、制御モジュールCM#0のキャッシュメモリ15Aのデータ退避範囲を決定する。
【0053】
例えば、自系状態情報が、制御モジュールCM#0のキャッシュメモリ15Aに書き込まれたダーティデータ及びミラーリングデータの双方を、制御モジュールCM#0のフラッシュメモリ17Aに退避可能であることを示す場合に、制御モジュールCM#0のCPU14Aは、ディスクアレイ装置の主電源の停電時に、バッテリ13Aに制御モジュールCM#0のキャッシュメモリ15A、CPU14A及びフラッシュメモリ17Aに電力を供給させ、制御モジュールCM#0のキャッシュメモリ15Aに書き込まれたダーティデータ及びミラーリングデータの双方を、制御モジュールCM#0のフラッシュメモリ17Aに退避する。
【0054】
また、自系状態情報が、制御モジュールCM#0のキャッシュメモリ15Aに書き込まれたダーティデータのみを、制御モジュールCM#0のフラッシュメモリ17Aに退避可能であることを示す場合に、制御モジュールCM#0のCPU14Aは、ディスクアレイ装置の主電源の停電時に、バッテリ13Aに制御モジュールCM#0のキャッシュメモリ15A、CPU14A及びフラッシュメモリ17Aに電力を供給させ、制御モジュールCM#0のキャッシュメモリ15Aに書き込まれたダーティデータのみを、制御モジュールCM#0のフラッシュメモリ17Aに退避する。
【0055】
また、自系状態情報が、制御モジュールCM#0のキャッシュメモリ15Aに書き込まれたダーティデータを、制御モジュールCM#0のフラッシュメモリ17Aに退避可能でないことを示す場合に、制御モジュールCM#0のCPU14Aは、ディスクアレイ装置の主電源の停電時に、バッテリ13Aに制御モジュールCM#0のキャッシュメモリ15Aのみに電力を供給させる。
【0056】
なお、制御モジュールCM#1のCPU14Bが、ディスクアレイ装置の装置状態を決定するようにしても良い。また、制御モジュールCM#0のCPU14A及び制御モジュールCM#1のCPU14Bのいずれか一方が、ディスクアレイ装置の装置状態を決定するようにしても良い。この場合、制御モジュールCM#0のCPU14A及び制御モジュールCM#1のCPU14Bが、相互に自系の診断結果を他方に通知する。また、制御モジュールCM#0のCPU14A及び制御モジュールCM#1のCPU14Bの各々に自系のキャッシュメモリ15のデータ退避方式を決定する処理部を設け、これらとは別に、ディスクアレイ装置の装置状態を決定する処理部を、制御モジュールCM#0のCPU14A及びCM#1のCPU14Bのいずれか一方に設けるようにしても良い。
【0057】
図2は、キャッシュメモリ15の構成を示す図である。なお、図2のキャッシュメモリ15は、制御モジュールCM#0のキャッシュメモリ15Aであるものとする。
【0058】
キャッシュメモリ15は、領域151〜155に分割される。領域151は、種々の管理テーブルを格納する領域である。領域152は、自系の制御モジュール1(CM#0)のライトデータであって、ディスクアレイ3に書き込まれていないライトデータ、換言すれば、ダーティデータを格納する領域である。領域153は、他系の制御モジュール1(CM#1)のダーティデータ、換言すれば、ミラーリングデータを格納する領域である。領域154は、自系の制御モジュール1(CM#0)のリードデータを格納する領域である。領域155は、その他のデータを格納する領域であり、例えばファームウェアを格納するファーム領域を含む。
【0059】
領域152に格納されているダーティデータを、Data#0という。領域153に格納されているミラーリングデータを、Data#1という。領域154に格納されているリードデータを、Data#2という。領域155に格納されているデータを、Data#3という。Data#0は、制御モジュールCM#0のキャッシュメモリ15Aにおけるダーティデータであり、Data#1は、制御モジュールCM#0のキャッシュメモリ15Aにおけるミラーリングデータである。
【0060】
例えば、制御モジュールCM#0のキャッシュメモリ15Aにおけるミラーリングデータ(Data#1)は、制御モジュールCM#1のダーティデータのコピーである。同様に、制御モジュールCM#1のキャッシュメモリ15Bにおけるミラーリングデータは、制御モジュールCM#0のダーティデータ(Data#0)のコピーである。そこで、制御モジュールCM#1のダーティデータを「ダーティデータ(Data#1)」ということがあり、制御モジュールCM#1のミラーリングデータを「ミラーリングデータ(Data#0)」ということがある。この例では、制御モジュールCM#0におけるダーティデータのサイズ及びCM#1におけるダーティデータのサイズは等しい。
【0061】
キャッシュメモリ15において、Data#0が、ディスクアレイ装置の主電源の停電時において、フラッシュメモリ17Aに退避することにより保証されるデータである。また、Data#1は、ミラーリングデータであるので、ディスクアレイ装置の主電源の停電時において、フラッシュメモリ17Aに退避することにより保証されることが望ましいデータである。
【0062】
領域151には、キャッシュメモリ管理テーブル1511、診断タイミングテーブル1512、データ退避方式テーブル1513、バッテリテーブル1514、フラッシュメモリテーブル1515が、格納される。なお、これらのテーブルを総称してテーブル1511〜1515ということがある。
【0063】
キャッシュメモリ管理テーブル1511は、制御モジュール1のCPU14上で動作するOS(オペレーティングシステム)に備えられる。ディスクアレイ装置の主電源の投入時にOSが起動されると、起動されたOS、換言すれば、OSを実行するCPU14により、キャッシュメモリ管理テーブル1511がキャッシュメモリ15に格納される。キャッシュメモリ管理テーブル1511は、キャッシュメモリ15における、領域151〜155のアドレス、特に、Data#0〜Data#3を格納する予定のアドレスを格納する。これにより、キャッシュメモリ15における領域151〜155が定められる。キャッシュメモリ管理テーブル1511は、キャッシュメモリ15に格納された時点で、キャッシュメモリ15に格納されたデータの種類とアドレスを格納していない。
【0064】
CPU14は、前述したように、図2に示すように、Data#0〜Data#3を、各々が格納される領域である領域152〜155に書き込む。CPU14は、キャッシュメモリ15にデータを格納する都度に、格納したデータの種類とアドレスとをキャッシュメモリ管理テーブル1511に書き込む。これにより、キャッシュメモリ管理テーブル1511は、キャッシュメモリ15に格納されたデータの種類とアドレスとを管理する。データの種類としては、ダーティデータ、ミラーリングデータ、リードデータ、その他のデータ、ファームウェアがある。
【0065】
例えば、領域152のData#0は、実際には、複数のダーティデータを含む。これらの複数のダーティデータを含む領域152の全体が、後述するように、フラッシュメモリ17に転送される。そこで、複数のダーティデータを含む領域152の全体のデータをData#0という。また、領域153のData#1は、実際には、複数のミラーリングデータを含む。これらの複数のミラーリングデータを含む領域153の全体が、後述するように、フラッシュメモリ17に転送される。そこで、複数のミラーリングデータを含む領域153の全体のデータをData#1という。
【0066】
ディスクアレイ装置の主電源の停電時に、CPU14は、バッテリ13を制御して、図5及び図6を参照して後述するように、キャッシュメモリ15を含む予め定められた範囲に対して、電力を供給させる。これに加えて、キャッシュメモリ15のデータをフラッシュメモリ17に退避する場合に、CPU14は、キャッシュメモリ管理テーブル1511を参照して、Data#0、又は、Data#0及びData#1を、キャッシュメモリ15からフラッシュメモリ17に転送する。
【0067】
診断タイミングテーブル1512は、制御モジュール1のCPU14上で動作するOSに備えられる。ディスクアレイ装置の主電源の投入時にOSが起動されると、OSを実行するCPU14により、診断タイミングテーブル1512がキャッシュメモリ15に格納される。診断タイミングテーブル1512は、診断項目について、その診断タイミングを定める。診断タイミングテーブル1512は、キャッシュメモリ15に格納された時点で、診断タイミングを格納するのみで、診断結果を格納していない。診断タイミングテーブル1512については、図3を参照して後述する。
【0068】
データ退避方式テーブル1513は、制御モジュール1のCPU14上で動作するOSに備えられる。ディスクアレイ装置の主電源の投入時にOSが起動されると、OSを実行するCPU14により、データ退避方式テーブル1513がキャッシュメモリ15に格納される。
【0069】
データ退避方式テーブル1513は、複数の診断結果の組合せに対応して、ディスクアレイ装置の装置状態を定める。ディスクアレイ装置の装置状態とは、ディスクアレイ装置をライトバック状態とするか、ライトスルー状態とするかの区別を示す。ディスクアレイ装置の装置状態は、自系の制御モジュール1におけるバッテリ13の診断結果及びフラッシュメモリ17の診断結果と、他系の制御モジュール1におけるバッテリ13の診断結果及びフラッシュメモリ17の診断結果との組合せに対応して定められる。データ退避方式テーブル1513については、図4及び図5を参照して後述する。
【0070】
バッテリテーブル1514は、制御モジュール1のCPU14上で動作するOSに備えられる。ディスクアレイ装置の主電源の投入時にOSが起動されると、OSを実行するCPU14により、バッテリテーブル1514がキャッシュメモリ15に格納される。バッテリテーブル1514は、キャッシュメモリ15から退避されるデータ量に対する、バッテリ容量を格納する。換言すれば、バッテリテーブル1514は、キャッシュメモリ15から退避されるデータを退避させる際に必要なバッテリ容量を格納する。これにより、バッテリ容量が求まれば、バッテリ13からの放電時間が定まり、放電時間内に退避可能なデータ量が求まる。
【0071】
CPU14は、ディスクアレイ装置の主電源の停電時において、バッテリ容量の診断結果を用いてバッテリテーブル1514を参照する。これにより、CPU14は、バッテリ13を用いて、キャッシュメモリ15のData#0及びData#1を、フラッシュメモリ17に退避させることができるか否かを判断する。具体的には、CPU14は、当該バッテリ容量の診断結果を用いてバッテリテーブル1514を参照して、当該バッテリ容量によりキャッシュメモリ15から退避可能なデータ量を求め、当該退避可能なデータ量がData#0又は(Data#0+Data#1)より大きいか否かを判断する。
【0072】
フラッシュメモリテーブル1515は、制御モジュール1のCPU14上で動作するOSに備えられる。ディスクアレイ装置の主電源の投入時にOSが起動されると、OSを実行するCPU14により、フラッシュメモリテーブル1515がキャッシュメモリ15に格納される。フラッシュメモリテーブル1515は、キャッシュメモリ15から退避されるデータ量を格納するために必要である、フラッシュメモリ17の退避領域のサイズを格納する。これにより、フラッシュメモリ退避領域が求まれば、キャッシュメモリ15から退避可能なデータ量が求まる。
【0073】
CPU14は、ディスクアレイ装置の主電源の停電時において、フラッシュメモリ退避領域の診断結果を用いてフラッシュメモリテーブル1515を参照する。これにより、CPU14は、キャッシュメモリ15のData#0及びData#1を、フラッシュメモリ17に退避させることができるか否かを判断する。具体的には、CPU14は、当該フラッシュメモリ退避領域の診断結果を用いてフラッシュメモリテーブル1515を参照して、フラッシュメモリ17に書き込み可能なデータ量、換言すれば、キャッシュメモリ15から退避可能なデータ量を求め、当該退避可能なデータ量がData#0又は(Data#0+Data#1)より大きいか否かを判断する。
【0074】
なお、テーブル1511〜1515は、制御モジュール1とは別に設けられる制御モジュール1の上位コンピュータにおいて、ファームウェアとして設けるようにしても良い。
【0075】
図3は、診断タイミングテーブル1512の一例を示す。
【0076】
ダーティデータ(Data#0)のサイズは、この例では、図3に示すように、固定である。また、図2に示すように、領域152のサイズがダーティデータ(Data#0)のサイズである。従って、ダーティデータのサイズは、前述したように、キャッシュメモリ管理テーブル1511が格納する領域152のアドレス及び領域153のアドレスに基づいて、ディスクアレイ装置の起動時に、又は、診断の都度に、CPU14により生成される。生成されたダーティデータのサイズは、例えば次回の診断まで、例えばキャッシュメモリ管理テーブル1511に保持される。
【0077】
バッテリ容量は、バッテリ13の電力供給能力であり、前述したように、徐々に劣化する。そこで、バッテリ容量は、例えば、図3に示すように、ディスクアレイ装置の起動時、ディスクアレイ装置の主電源の停電からの復旧時(以下、復電時という)、又は、1週間に1回、診断される。バッテリ容量の診断結果は、例えば、次回のバッテリ容量の診断まで、診断タイミングテーブル1512に保持される。
【0078】
フラッシュメモリ退避領域は、キャッシュメモリ15のデータを書き込み可能な領域であり、前述したように、徐々に減る。そこで、フラッシュメモリ退避領域は、図3に示すように、例えば、ディスクアレイ装置の起動時、又は、復電時に、診断される。これは、フラッシュメモリ17のメモリセルの破壊は、データの書込み時、換言すれば、キャッシュメモリ15からのデータの退避時にのみ発生するためである。フラッシュメモリ退避領域の診断結果は、例えば、次回のフラッシュメモリ退避領域の診断まで、診断タイミングテーブル1512に保持される。
【0079】
他系制御モジュール(CM)の診断結果は、一方の制御モジュール1(CM#0)に他方の制御モジュール1(CM#1)から通知された診断結果、換言すれば、他系状態情報である。他系制御モジュールの診断結果は、制御モジュール1が他系の制御モジュール1から診断結果を受信する都度に格納される。例えば、制御モジュールCM#0の診断タイミングテーブル1512においては、制御モジュールCM#1の状態情報、換言すれば、制御モジュールCM#1の状態が「全Writeデータ可」であるか否かを示す情報が格納される。
【0080】
図4は、データ退避方式テーブル1513の一例を示し、特に、制御モジュールCM#0におけるデータ退避方式テーブル1513を示す。なお、図4において、比較のために、図9の方式によるディスクアレイ装置の装置状態を示す。
【0081】
図4において、データ退避方式テーブル1513は、バッテリ容量、フラッシュメモリ退避領域、自系のデータ退避方式、他系状態、装置状態を格納する。バッテリ容量は、自系の制御モジュールCM#0におけるバッテリ13Aの容量が、キャッシュメモリ15Aに格納されたデータを退避させることができる範囲を示す情報である。フラッシュメモリ退避領域は、自系の制御モジュールCM#0におけるフラッシュメモリ17Aのフラッシュメモリ退避領域が、キャッシュメモリ15Aに格納されたデータを退避させることができる範囲を示す情報である。従って、キャッシュメモリ15Aに格納されたデータを退避させることができる範囲は、バッテリ容量とフラッシュメモリ退避領域とに基づいて定まる。自系のデータ退避方式は、自系の制御モジュールCM#0におけるデータ退避方式を示す情報である。他系状態は、他系の制御モジュールCM#1の状態を示す状態情報であり、具体的には、他系の制御モジュールCM#1において全Writeデータを退避可能であるか否かを示す情報である。装置状態は、ディスクアレイ装置の動作がライトバック状態であるかライトスルー状態であるかを示す情報である。
【0082】
制御モジュールCM#0のCPU14Aは、前述したように、自系の診断によりバッテリ容量とフラッシュメモリ退避領域とを求め、求めたバッテリ容量とフラッシュメモリ退避領域とに対応する自系のデータ退避方式を、データ退避方式テーブル1513から求める。更に、制御モジュールCM#0のCPU14Aは、前述したように、他系の制御モジュールCM#1の状態情報である他系状態を取得して、取得した他系状態と求めた自系のデータ退避方式とに対応する装置状態を、データ退避方式テーブル1513から求める。
【0083】
図4において、ケースNo.1は、自系の制御モジュールCM#0においてバッテリ容量が「全Writeデータ可」かつフラッシュメモリ退避領域が「全Writeデータ可」であり、他系の制御モジュールCM#1の状態が「全Writeデータ可」である場合である。
【0084】
制御モジュールCM#0において、バッテリ容量が「全Writeデータ可」であるとは、バッテリ13Aの容量が、キャッシュメモリ15Aの退避する必要のある全てのデータ(全Writeデータ)を退避可能な容量以上であることを示す。「全Writeデータ」は、図2に示すData#0とData#1との和であり、「Data#0+#1」と表すこととする。
【0085】
制御モジュールCM#0において、フラッシュメモリ退避領域が「全Writeデータ可」であるとは、フラッシュメモリ17Aにおけるデータの書込み可能領域が、全Writeデータを退避可能なメモリ容量以上であることを示す。
【0086】
他系の制御モジュールCM#1の状態が「全Writeデータ可」とは、制御モジュールCM#1において、バッテリ13Bの容量が全Writeデータを退避可能な容量以上であり、かつ、フラッシュメモリ17Bにおけるデータの書込み可能領域が全Writeデータを退避可能なメモリ容量以上であることを示す。従って、結果として、他系の制御モジュールCM#1の状態が「全Writeデータ可」とは、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)を、フラッシュメモリ17Bに退避できる場合である。
【0087】
このように、ケースNo.1は、制御モジュールCM#0において、キャッシュメモリ15Aの全Writeデータ(Data#0+#1)がフラッシュメモリ17Aに退避可能であり、かつ、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)がフラッシュメモリ17Bに退避可能である場合である。
【0088】
以上から、ケースNo.1において、制御モジュールCM#0におけるキャッシュメモリ15Aのデータ退避方式は、「全WriteデータDestage」とされる。このように、データ退避方式は、「バッテリ容量」と「フラッシュメモリ退避領域」とから決定される。「全WriteデータDestage」とは、全Writeデータ(Data#0+#1)を、フラッシュメモリ17へ退避(Destage)することである。これにより、全Writeデータ(Data#0+#1)が保証される。
【0089】
この結果、ケースNo.1においては、制御モジュールCM#0及び制御モジュールCM#1の双方において、ダーティデータ及びミラーリングデータの双方が保証される。これに応じて、ケースNo.1において、ディスクアレイ装置は、ライトバック状態とされる。このように、ディスクアレイ装置の「装置状態」は、「自系データ退避方式」と「他系状態」とから決定される。
【0090】
ケースNo.2は、自系の制御モジュールCM#0においてバッテリ容量が「全Writeデータ可」かつフラッシュメモリ退避領域が「全Writeデータ可」であるが、他系の制御モジュールCM#1の状態が「全Writeデータ不可」である場合である。
【0091】
他系の制御モジュールCM#1の状態が「全Writeデータ不可」とは、制御モジュールCM#1において、バッテリ13Bの容量が全Writeデータを退避可能な容量未満であるか、又は、フラッシュメモリ17Bにおけるデータの書込み可能領域が全Writeデータを退避可能なメモリ容量未満であるかのいずれか一方であることを示す。従って、結果として、他系の制御モジュールCM#1の状態が「全Writeデータ不可」とは、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)を、フラッシュメモリ17Bに退避できない場合である。
【0092】
このように、ケースNo.2は、制御モジュールCM#0において、キャッシュメモリ15Aの全Writeデータ(Data#0+#1)がフラッシュメモリ17Aに退避可能であり、かつ、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)がフラッシュメモリ17Bに退避可能でない場合である。
【0093】
以上から、ケースNo.2において、制御モジュールCM#0におけるキャッシュメモリ15Aのデータ退避方式は、「全WriteデータDestage」とされる。これにより、ケースNo.2においては、制御モジュールCM#0において、ダーティデータ(Data#0)及びミラーリングデータ(Data#1)が保証される。
【0094】
一方、制御モジュールCM#1において、ダーティデータ(Data#1)は、フラッシュメモリ17Bに退避できない。しかし、制御モジュールCM#0におけるミラーリングデータ(Data#1)は、制御モジュールCM#1のダーティデータ(Data#1)のコピーである。従って、制御モジュールCM#1のダーティデータ(Data#1)は、制御モジュールCM#0のフラッシュメモリ17Aに退避され、保証されると考えることができる。これに応じて、ケースNo.2において、ディスクアレイ装置は、ライトバック状態とされる。
【0095】
このように、図1のディスクアレイ装置においては、制御モジュールCM#0のダーティデータ及び制御モジュールCM#1のダーティデータの双方が退避できれば、ライトバック状態が維持される。ダーティデータの退避先は問われない。換言すれば、他系のミラーリングデータが退避された場合、自系のダーティデータが退避されたとして、ディスクアレイ装置の装置状態が決定される。
【0096】
ケースNo.3は、自系の制御モジュールCM#0においてバッテリ容量が「全Writeデータ可」であるが、フラッシュメモリ退避領域が「自系Writeデータ可」であり、他系の制御モジュールCM#1の状態が「全Writeデータ可」である場合である。
【0097】
制御モジュールCM#0において、フラッシュメモリ退避領域が「自系Writeデータ可」であるとは、フラッシュメモリ17Aにおけるデータの書込み可能領域が、自系Writeデータを退避可能なメモリ容量以上であることを示す。「自系Writeデータ」は、図2に示すData#0、換言すれば、ダーティデータである。
【0098】
このように、ケースNo.3は、制御モジュールCM#0において、キャッシュメモリ15Aの自系Writeデータ(Data#0)がフラッシュメモリ17Aに退避可能であり、かつ、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)がフラッシュメモリ17Bに退避可能である場合である。
【0099】
以上から、ケースNo.3において、制御モジュールCM#0におけるキャッシュメモリ15Aのデータ退避方式は、「自系WriteデータDestage」とされる。「自系WriteデータDestage」とは、自系Writeデータ(Data#0)を、フラッシュメモリ17へ退避(Destage)することである。これにより、ケースNo.3においては、制御モジュールCM#0において、ダーティデータ(Data#0)が保証される。
【0100】
なお、以上のように、キャッシュDestageには、「全WriteデータDestage」と「自系WriteデータDestage」との2個のモードが存在する。ディスクアレイ装置の主電源の停電時において、両者の電力の供給範囲は同一であるが、キャッシュメモリ15から退避されるデータの範囲が、相互に異なる。具体的には、「全WriteデータDestage」においては、全Writeデータ(Data#0+#1)がフラッシュメモリ17へ退避される。一方、「自系WriteデータDestage」においては、自系Writeデータ(Data#0)がフラッシュメモリ17へ退避される。
【0101】
一方、制御モジュールCM#1において、ダーティデータ(Data#1)は、フラッシュメモリ17Bに退避できる。これに応じて、ケースNo.3において、ディスクアレイ装置は、ライトバック状態とされる。
【0102】
ケースNo.4は、自系の制御モジュールCM#0においてバッテリ容量が「全Writeデータ可」であるが、フラッシュメモリ退避領域が「自系Writeデータ可」であり、他系の制御モジュールCM#1の状態が「全Writeデータ不可」である場合である。
【0103】
このように、ケースNo.4は、制御モジュールCM#0において、キャッシュメモリ15Aの自系Writeデータ(Data#0)がフラッシュメモリ17Aに退避可能であり、かつ、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)がフラッシュメモリ17Bに退避可能でない場合である。
【0104】
以上から、ケースNo.4において、制御モジュールCM#0におけるキャッシュメモリ15Aのデータ退避方式は、「自系WriteデータDestage」とされる。これにより、ケースNo.4においては、制御モジュールCM#0において、ダーティデータ(Data#0)のみが保証される。
【0105】
一方、制御モジュールCM#1において、ダーティデータ(Data#1)及びミラーリングデータ(Data#0)は、フラッシュメモリ17Bに退避できない。従って、制御モジュールCM#1のダーティデータ(Data#1)は、制御モジュールCM#0及びCM#1のいずれにおいても保証されない。これに応じて、ケースNo.4において、ディスクアレイ装置は、ライトスルー状態とされる。
【0106】
ケースNo.5は、自系の制御モジュールCM#0においてバッテリ容量が「全Writeデータ可」であるが、フラッシュメモリ退避領域が「BackUp不可」であり、他系の制御モジュールCM#1の状態が「全Writeデータ可」である場合である。
【0107】
制御モジュールCM#0において、フラッシュメモリ退避領域が「BackUp不可」であるとは、フラッシュメモリ17Aにおけるデータの書込み可能領域が、自系Writeデータ(Data#0)を退避可能なメモリ容量未満であることを示す。
【0108】
このように、ケースNo.5は、制御モジュールCM#0において、キャッシュメモリ15Aの自系Writeデータ(Data#0)がフラッシュメモリ17に退避可能でなく、かつ、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)がフラッシュメモリ17Bに退避可能である場合である。なお、キャッシュメモリ15Aのミラーリングデータ(Data#1)も、フラッシュメモリ17Aに退避可能ではない。
【0109】
以上から、ケースNo.5において、制御モジュールCM#0におけるキャッシュメモリ15Aのデータ退避方式は、「キャッシュBackUp」とされる。「キャッシュBackUp」とは、全Writeデータ(Data#0+#1)を、フラッシュメモリ17へ実際には退避(Destage)せずに、キャッシュメモリ15Aに格納したままの状態とすることである。これにより、ケースNo.5においては、制御モジュールCM#0において、ダーティデータ(Data#0)が保証されない。換言すれば、キャッシュメモリ15Aに格納されたデータは、ディスクアレイ装置の主電源の停電時にバッテリ13Aからキャッシュメモリ15Aに電力が供給されている期間においては保持されるが、電力が供給されなくなると消失してしまう。
【0110】
一方、制御モジュールCM#1において、ミラーリングデータ(Data#0)は、フラッシュメモリ17Bに退避できる。換言すれば、制御モジュールCM#0のダーティデータ(Data#0)は、制御モジュールCM#1のフラッシュメモリ17Bによって保証される。これに応じて、ケースNo.5において、ディスクアレイ装置は、ライトバック状態とされる。
【0111】
ケースNo.6は、自系の制御モジュールCM#0においてバッテリ容量が「全Writeデータ可」であるが、フラッシュメモリ退避領域が「BackUp不可」であり、他系の制御モジュールCM#1の状態が「全Writeデータ不可」である場合である。
【0112】
このように、ケースNo.6は、制御モジュールCM#0において、キャッシュメモリ15Aの自系Writeデータ(Data#0)がフラッシュメモリ17Aに退避可能でなく、かつ、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)がフラッシュメモリ17Bに退避可能でない場合である。なお、キャッシュメモリ15Aのミラーリングデータ(Data#1)も、フラッシュメモリ17Aに退避可能ではない。
【0113】
以上から、ケースNo.6において、制御モジュールCM#0におけるキャッシュメモリ15Aのデータ退避方式は、「キャッシュBackUp」とされる。これにより、ケースNo.6においては、制御モジュールCM#0において、ダーティデータ(Data#0)が保証されない。
【0114】
一方、制御モジュールCM#1において、ダーティデータ(Data#1)及びミラーリングデータ(Data#0)は、フラッシュメモリ17Bに退避できない。従って、制御モジュールCM#0のダーティデータ及びCM#1のダーティデータは、制御モジュールCM#0及びCM#1のいずれにおいても保証されない。これに応じて、ケースNo.6において、ディスクアレイ装置は、ライトスルー状態とされる。
【0115】
ケースNo.7は、自系の制御モジュールCM#0においてバッテリ容量が「自系Writeデータ可」かつフラッシュメモリ退避領域が「全Writeデータ可」であり、他系の制御モジュールCM#1の状態が「全Writeデータ可」である場合である。
【0116】
制御モジュールCM#0において、バッテリ容量が「自系Writeデータ可」であるとは、バッテリ13Aの容量が、自系Writeデータ(Data#0)を退避可能なメモリ容量以上であることを示す。
【0117】
このように、ケースNo.7は、制御モジュールCM#0において、キャッシュメモリ15Aの自系Writeデータ(Data#0)がフラッシュメモリ17Aに退避可能であり、かつ、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)がフラッシュメモリ17Bに退避可能である場合である。
【0118】
以上から、ケースNo.7において、制御モジュールCM#0におけるキャッシュメモリ15Aのデータ退避方式は、「自系WriteデータDestage」とされる。これにより、ケースNo.7においては、制御モジュールCM#0において、ダーティデータ(Data#0)のみが保証される。
【0119】
一方、制御モジュールCM#1において、ダーティデータ(Data#1)は、フラッシュメモリ17Bに退避できる。これに応じて、ケースNo.7において、ディスクアレイ装置は、ライトバック状態とされる。
【0120】
ケースNo.8は、自系の制御モジュールCM#0においてバッテリ容量が「自系Writeデータ可」かつフラッシュメモリ退避領域が「全Writeデータ可」であるが、他系の制御モジュールCM#1の状態が「全Writeデータ不可」である場合である。
【0121】
このように、ケースNo.8は、制御モジュールCM#0において、キャッシュメモリ15Aの自系Writeデータ(Data#0)がフラッシュメモリ17Aに退避可能であり、かつ、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)がフラッシュメモリ17Bに退避可能でない場合である。
【0122】
以上から、ケースNo.8において、制御モジュールCM#0におけるキャッシュメモリ15Aのデータ退避方式は、「自系WriteデータDestage」とされる。これにより、ケースNo.8においては、制御モジュールCM#0において、ダーティデータ(Data#0)が保証される。
【0123】
一方、制御モジュールCM#1において、ダーティデータ(Data#1)及びミラーリングデータ(Data#0)は、フラッシュメモリ17Bに退避できない。従って、制御モジュールCM#1のダーティデータ(Data#1)は、制御モジュールCM#0及びCM#1のいずれにおいても保証されない。これに応じて、ケースNo.8において、ディスクアレイ装置は、ライトスルー状態とされる。
【0124】
ケースNo.9は、自系の制御モジュールCM#0においてバッテリ容量が「自系Writeデータ可」であるが、フラッシュメモリ退避領域が「自系Writeデータ可」であり、他系の制御モジュールCM#1の状態が「全Writeデータ可」である場合である。
【0125】
このように、ケースNo.9は、制御モジュールCM#0において、キャッシュメモリ15Aの自系Writeデータ(Data#0)がフラッシュメモリ17Aに退避可能であり、かつ、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)がフラッシュメモリ17Bに退避可能である場合である。
【0126】
以上から、ケースNo.9において、制御モジュールCM#0におけるキャッシュメモリ15Aのデータ退避方式は、「自系WriteデータDestage」とされる。これにより、ケースNo.9においては、制御モジュールCM#0において、ダーティデータ(Data#0)のみが保証される。
【0127】
一方、制御モジュールCM#1において、ダーティデータ(Data#1)は、フラッシュメモリ17Bに退避できる。これに応じて、ケースNo.9において、ディスクアレイ装置は、ライトバック状態とされる。
【0128】
ケースNo.10は、自系の制御モジュールCM#0においてバッテリ容量が「自系Writeデータ可」であるが、フラッシュメモリ退避領域が「自系Writeデータ可」であり、他系の制御モジュールCM#1の状態が「全Writeデータ不可」である場合である。
【0129】
このように、ケースNo.10は、制御モジュールCM#0において、キャッシュメモリ15Aの自系Writeデータ(Data#0)がフラッシュメモリ17Aに退避可能であり、かつ、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)がフラッシュメモリ17Bに退避可能でない場合である。
【0130】
以上から、ケースNo.10において、制御モジュールCM#0におけるキャッシュメモリ15Aのデータ退避方式は、「自系WriteデータDestage」とされる。これにより、ケースNo.10においては、制御モジュールCM#0において、ダーティデータ(Data#0)のみが保証される。
【0131】
一方、制御モジュールCM#1において、ダーティデータ(Data#1)及びミラーリングデータ(Data#0)は、フラッシュメモリ17Bに退避できない。従って、制御モジュールCM#1のダーティデータ(Data#1)は、制御モジュールCM#0及びCM#1のいずれにおいても保証されない。これに応じて、ケースNo.10において、ディスクアレイ装置は、ライトスルー状態とされる。
【0132】
ケースNo.11は、自系の制御モジュールCM#0においてバッテリ容量が「自系Writeデータ可」であるが、フラッシュメモリ退避領域が「BackUp不可」であり、他系の制御モジュールCM#1の状態が「全Writeデータ可」である場合である。
【0133】
このように、ケースNo.11は、制御モジュールCM#0において、キャッシュメモリ15Aの自系Writeデータ(Data#0)がフラッシュメモリ17Aに退避可能でなく、かつ、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)がフラッシュメモリ17Bに退避可能である場合である。なお、キャッシュメモリ15Aのミラーリングデータ(Data#1)も、フラッシュメモリ17Aに退避可能ではない。
【0134】
以上から、ケースNo.11において、制御モジュールCM#0におけるキャッシュメモリ15Aのデータ退避方式は、「キャッシュBackUp」とされる。これにより、ケースNo.11においては、制御モジュールCM#0において、ダーティデータ(Data#0)が保証されない。
【0135】
一方、制御モジュールCM#1において、ミラーリングデータ(Data#0)は、フラッシュメモリ17Bに退避できる。換言すれば、制御モジュールCM#0のダーティデータ(Data#0)は、制御モジュールCM#1のフラッシュメモリ17Bによって保証される。これに応じて、ケースNo.11において、ディスクアレイ装置は、ライトバック状態とされる。
【0136】
ケースNo.12は、自系の制御モジュールCM#0においてバッテリ容量が「自系Writeデータ可」であるが、フラッシュメモリ退避領域が「BackUp不可」であり、他系の制御モジュールCM#1の状態が「全Writeデータ不可」である場合である。
【0137】
このように、ケースNo.12は、制御モジュールCM#0において、キャッシュメモリ15Aの自系Writeデータ(Data#0)がフラッシュメモリ17Aに退避可能でなく、かつ、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)がフラッシュメモリ17Bに退避可能でない場合である。なお、キャッシュメモリ15Aのミラーリングデータ(Data#1)も、フラッシュメモリ17Aに退避可能ではない。
【0138】
以上から、ケースNo.12において、制御モジュールCM#0におけるキャッシュメモリ15Aのデータ退避方式は、「キャッシュBackUp」とされる。これにより、ケースNo.12においては、制御モジュールCM#0において、ダーティデータ(Data#0)が保証されない。
【0139】
一方、制御モジュールCM#1において、ダーティデータ(Data#1)及びミラーリングデータ(Data#0)は、フラッシュメモリ17Bに退避できない。従って、制御モジュールCM#0のダーティデータ及びCM#1のダーティデータは、制御モジュールCM#0及びCM#1のいずれにおいても保証されない。これに応じて、ケースNo.12において、ディスクアレイ装置は、ライトスルー状態とされる。
【0140】
ケースNo.13は、自系の制御モジュールCM#0においてバッテリ容量が「BackUp不可」かつフラッシュメモリ退避領域が「全Writeデータ可」「自系Writeデータ可」又は「BackUp不可」のいずれかであり、他系の制御モジュールCM#1の状態が「全Writeデータ可」である場合である。
【0141】
制御モジュールCM#0において、バッテリ容量が「BackUp不可」であるとは、バッテリ13Aの容量が、自系Writeデータ(Data#0)を退避可能なメモリ容量未満であることを示す。
【0142】
このように、ケースNo.13は、制御モジュールCM#0において、キャッシュメモリ15Aの自系Writeデータ(Data#0)がフラッシュメモリ17Aに退避可能でなく、かつ、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)がフラッシュメモリ17Bに退避可能である場合である。
【0143】
以上から、ケースNo.13において、制御モジュールCM#0におけるキャッシュメモリ15Aのデータ退避方式は、「キャッシュBackUp」とされる。これにより、ケースNo.13においては、制御モジュールCM#0において、ダーティデータ(Data#0)が保証されない。
【0144】
一方、制御モジュールCM#1において、ミラーリングデータ(Data#0)は、フラッシュメモリ17Bに退避できる。換言すれば、制御モジュールCM#0のダーティデータ(Data#0)は、制御モジュールCM#1のフラッシュメモリ17Bによって保証される。これに応じて、ケースNo.13において、ディスクアレイ装置は、ライトバック状態とされる。
【0145】
ケースNo.14は、自系の制御モジュールCM#0においてバッテリ容量が「BackUp不可」かつフラッシュメモリ退避領域が「全Writeデータ可」「自系Writeデータ可」又は「BackUp不可」であり、他系の制御モジュールCM#1の状態が「全Writeデータ不可」である場合である。
【0146】
このように、ケースNo.14は、制御モジュールCM#0において、キャッシュメモリ15Aの自系Writeデータ(Data#0)がフラッシュメモリ17Aに退避可能でなく、かつ、制御モジュールCM#1において、キャッシュメモリ15Bの全Writeデータ(Data#0+#1)がフラッシュメモリ17Bに退避可能でない場合である。なお、キャッシュメモリ15Aのミラーリングデータ(Data#1)も、フラッシュメモリ17Aに退避可能ではない。
【0147】
以上から、ケースNo.14において、制御モジュールCM#0におけるキャッシュメモリ15Aのデータ退避方式は、「キャッシュBackUp」とされる。これにより、ケースNo.14においては、制御モジュールCM#0において、ダーティデータ(Data#0)が保証されない。
【0148】
一方、制御モジュールCM#1において、ダーティデータ(Data#1)及びミラーリングデータ(Data#0)は、フラッシュメモリ17Bに退避できない。従って、制御モジュールCM#0のダーティデータ及びCM#1のダーティデータは、制御モジュールCM#0及びCM#1のいずれにおいても保証されない。これに応じて、ケースNo.14において、ディスクアレイ装置は、ライトスルー状態とされる。
【0149】
図5は、データ退避方式テーブル1513の一例を示し、特に、制御モジュールCM#1におけるデータ退避方式テーブル1513を示す。
【0150】
図4及び図5の対比から判るように、制御モジュールCM#1におけるデータ退避方式テーブル1513は、基本的には、制御モジュールCM#0におけるデータ退避方式テーブル1513と同様の構成を有する。しかし、前述したように、制御モジュールCM#1のCPU14Bは、ディスクアレイ装置の装置状態を決定しない。従って、制御モジュールCM#1におけるデータ退避方式テーブル1513は、制御モジュールCM#0におけるデータ退避方式テーブル1513から、「他系の制御モジュールCM#1の状態」及び「装置状態」を除いた構成とされる。
【0151】
なお、制御モジュールCM#1のCPU14Bは、制御モジュールCM#0のCPU14Aから通知された「装置状態」を、データ退避方式テーブル1513とは別に保持する。
【0152】
図6及び図7は、データ退避方式の説明図である。特に、図6は、全WriteデータDestage(又は、自系WriteデータDestage)によるデータ退避方式について示し、図7は、特に、キャッシュBackUpによるデータ退避方式について示す。全WriteデータDestageによるデータ退避方式は、キャッシュBackUpによるデータ退避方式と択一的に選択される。
【0153】
なお、図6及び図7において、キャッシュメモリ15のデータ退避方式を示すために、ホスト制御部11、スイッチ12、エキスパンダ18の図示は省略する。メモリ制御部16は、フラッシュメモリ17に含まれるものとする。
【0154】
図6(A)は、全WriteデータDestageによるデータ退避方式において、ディスクアレイ装置の主電源から電力が供給されている場合の電力供給範囲を示す。この場合、DC/DCコンバータ23〜25をオンとすることにより、ディスクアレイ装置の主電源からは、電源供給部4を介して、制御モジュール1のキャッシュメモリ15、CPU14、フラッシュメモリ17に電力が供給される。
【0155】
なお、ディスクアレイ装置の主電源である交流電源ACは、電源供給部4に入力される。電源供給部4は、制御モジュール1とは別に、例えば、ディスクアレイ装置に1個設けられる。電源供給部4は、交流電源ACから直流電源を生成して、逆流防止用のダイオード20を介して、制御IC22に入力されると共に、DC/DCコンバータ23〜25に入力される。
【0156】
制御IC22は、電源供給部4におけるディスクアレイ装置の主電源の停電を検出して、CPU14に通知する。制御IC22は、各々の制御モジュール1に設けられる。
【0157】
DC/DCコンバータ23〜25は、電源供給部4から入力された直流電源から予め定められた直流電源を生成して、各々が対応するキャッシュメモリ15、CPU14、フラッシュメモリ17に供給する。DC/DCコンバータ23〜25のオン/オフは、CPU14により制御される。図示「On」は、CPU14からのDC/DCコンバータ23〜25のオンにする指示を示している。
【0158】
また、バッテリ13は、逆流防止用のダイオード21を介して、DC/DCコンバータ23〜25に接続される。バッテリ13は、例えば、電源供給部4が生成する直流電源により充電される。
【0159】
図6(B)は、全WriteデータDestageによるデータ退避方式において、ディスクアレイ装置の主電源が停電した場合の電力供給範囲を示す。この場合、DC/DCコンバータ23〜25をオンとすることにより、ディスクアレイ装置の主電源からは、電源供給部4を介して、キャッシュメモリ15、CPU14、フラッシュメモリ17に電力が供給される。従って、キャッシュメモリ15からのデータ退避の観点からは、ディスクアレイ装置の主電源が停電した場合でも、ディスクアレイ装置の主電源から電力が供給されている場合と同じ範囲に電力が供給される。
【0160】
全WriteデータDestageによるデータ退避の場合、キャッシュメモリ15のみならず、フラッシュメモリ17にも電力が供給されるので、キャッシュメモリ15のデータがフラッシュメモリ17に退避される。これにより、キャッシュメモリ15のデータが不揮発性のフラッシュメモリ17に退避されるので、ディスクアレイ装置の主電源が長時間停電しても、キャッシュメモリ15が保持していたデータが失われることはない。従って、ディスクアレイ装置はライトバック状態とされる。
【0161】
以上のように、全WriteデータDestageによるデータ退避方式においては、CPU14は、ディスクアレイ装置の主電源の停電と無関係に、DC/DCコンバータ23〜25をオンとする。また、CPU14は、制御IC22からのディスクアレイ装置の主電源の停電の検出した通知を受信した場合、キャッシュメモリ15のデータをフラッシュメモリ17に退避する。
【0162】
図7(A)は、キャッシュBackUpによるデータ退避方式において、ディスクアレイ装置の主電源から電力が供給されている場合の電力供給範囲を示す。この場合、DC/DCコンバータ23及び24をオンとすることにより、ディスクアレイ装置の主電源からは、電源供給部4を介して、キャッシュメモリ15、CPU14に電力が供給される。一方、図7(A)において点線で囲んで示すように、DC/DCコンバータ25をオフとすることにより、フラッシュメモリ17には、電力が供給されない。
【0163】
図7(B)は、キャッシュBackUpによるデータ退避方式において、ディスクアレイ装置の主電源が停電した場合の電力供給範囲を示す。この場合、DC/DCコンバータ23をオンとすることにより、ディスクアレイ装置の主電源からは、電源供給部4を介して、キャッシュメモリ15に電力が供給される。一方、図7(B)において点線で囲んで示すように、DC/DCコンバータ24及び25をオフとすることにより、CPU14及びフラッシュメモリ17には、電力が供給されない。従って、ディスクアレイ装置の主電源が停電した場合、キャッシュメモリ15からのデータ退避の観点から、ディスクアレイ装置の主電源から電力が供給されている場合よりも狭い範囲にのみ電力が供給される。
【0164】
キャッシュBackUpによるデータ退避の場合、キャッシュメモリ15のみに電力が供給され、フラッシュメモリ17には電力が供給されないので、キャッシュメモリ15のデータがフラッシュメモリ17に退避されない。これにより、キャッシュメモリ15のデータは、ディスクアレイ装置の主電源が長時間停電すると失われる。従って、ディスクアレイ装置はライトスルー状態とされる。
【0165】
以上のように、キャッシュBackUpによるデータ退避方式においては、CPU14は、制御IC22からのディスクアレイ装置の主電源の停電の検出した通知を受信しない場合、DC/DCコンバータ23及び24をオンとし、DC/DCコンバータ25をオフとする。また、CPU14は、制御IC22からのディスクアレイ装置の主電源の停電の検出した通知を受信した場合、DC/DCコンバータ23のみをオンとし、DC/DCコンバータ24及び25をオフとする。
【0166】
図8は、データ退避制御処理フローを示す図であり、図1に示すディスクアレイ装置の制御モジュールCM#0におけるデータ退避制御処理を示す。
【0167】
ディスクアレイ装置の主電源、例えばAC(交流)電源が投入されると、当該ディスクアレイ装置の主電源からディスクアレイ装置にAC電力が供給され、電源供給部4を介して、制御モジュール1に電力が供給されると共に、バッテリ13の充電が開始される。
【0168】
制御モジュール1に電力が供給されると、ディスクアレイ装置が起動され、制御モジュール1のCPU14は、キャッシュメモリ管理テーブル1511、診断タイミングテーブル1512、データ退避方式テーブル1513、バッテリテーブル1514、フラッシュメモリテーブル1515を生成する(ロードする)。
【0169】
この後、図8に示すデータ退避制御処理が実行される。また、図8に示すデータ退避制御処理は、例えばディスクアレイ装置の復電時に実行される。なお、図8に示すデータ退避制御処理は、例えばディスクアレイ装置の運用中に予め定められた周期で繰り返し実行するようにしても良い。
【0170】
制御モジュールCM#0のCPU14Aは、自系のキャッシュメモリ管理テーブル1511を参照して、自系のキャッシュメモリ15AのData#0のサイズ及びData#1のサイズを取得する(ステップS1)。
【0171】
制御モジュールCM#0のCPU14Aは、自系のバッテリ13Aのバッテリ容量を診断する(ステップS2)。前述したように、自系のバッテリ13Aのバッテリ容量は、自系状態情報の一部である。
【0172】
具体的には、自系のバッテリ13Aのバッテリ容量が、自系のキャッシュメモリ15Aの全Writeデータ(Data#0+#1)を自系のフラッシュメモリ17Aに退避可能な容量以上であるか、自系Writeデータ(Data#0)を退避可能な容量以上(かつ、全Writeデータ(Data#0+#1)を退避可能な容量未満)であるか、自系Writeデータ(Data#0)を退避可能な容量未満であるかが、判断される。換言すれば、全Writeデータ(Data#0+#1)がDestage可能であるか、自系Writeデータ(Data#0)がDestage可能であるか、自系Writeデータ(Data#0)がDestage不可であるかが、判断される。ここで、「Destage」とは、自系のキャッシュメモリ15のデータを自系のフラッシュメモリ17に退避することである。
【0173】
自系のバッテリ13Aのバッテリ容量がDate#0+#1をDestage可能である場合に、制御モジュールCM#0のCPU14Aは、更に、自系のフラッシュメモリ17Aのフラッシュメモリ退避領域のメモリ容量を診断する(ステップS3)。前述したように、自系のフラッシュメモリ17Aのフラッシュメモリ退避領域のメモリ容量は、自系状態情報の一部である。
【0174】
具体的には、自系のフラッシュメモリ17Aのフラッシュメモリ退避領域が、自系のキャッシュメモリ15Aの全Writeデータ(Data#0+#1)を退避可能な容量以上であるか、自系Writeデータ(Data#0)を退避可能な容量以上かつ全Writeデータ(Data#0+#1)を退避可能な容量未満であるか、自系Writeデータ(Data#0)を退避可能な容量未満であるかが、判断される。なお、図8において、フラッシュメモリ退避領域を、単にフラッシュ領域と表記している。
【0175】
自系のフラッシュメモリ退避領域が全Writeデータ(Date#0+#1)を退避可能な容量以上である場合に、制御モジュールCM#0のCPU14Aは、他系の制御モジュールCM#1のCPU14Bから、他系の診断データを取得し(ステップS4)、制御モジュールCM#1のCPU14Bから取得した診断データに基づいて、他系の制御モジュールCM#1において全Writeデータ(Data#0+#1)がDestage可能であるか否かを判断する(ステップS5)。
【0176】
診断データは、前述したように、他系の制御モジュールCM#1の状態が「全Writeデータ可」であるか否かを示すデータ、換言すれば、他系状態情報である。
【0177】
この後、制御モジュールCM#0のCPU14Aは、自系のキャッシュメモリ15Aのデータ退避方式を決定し、更に、他系の制御モジュールCM#1についての診断データに基づいて、ディスクアレイ装置の装置状態を決定する(ステップS6)。この後、制御モジュールCM#0のCPU14Aは、ディスクアレイ装置の装置状態を、制御モジュールCM#1のCPU14Bに通知する。
【0178】
具体的には、制御モジュールCM#0のCPU14Aは、ステップS6で、自系のキャッシュメモリ15Aのデータ退避方式を「全WriteデータDestage」とする。その上で、制御モジュールCM#0のCPU14Aは、他系の制御モジュールCM#1の状態が「全Writeデータ可」である場合、ディスクアレイ装置をライトバック状態とする。これは図4のデータ退避方式テーブル1513におけるケースNo.1に相当する。また、制御モジュールCM#0のCPU14Aは、ステップS6で、他系の制御モジュールCM#1の状態が「全Writeデータ可」でない場合、ディスクアレイ装置をライトバック状態とする。これは図4のデータ退避方式テーブル1513におけるケースNo.2に相当する。
【0179】
ステップS3において、自系のフラッシュメモリ退避領域が自系Writeデータ(Data#0)を退避可能な容量以上かつ全Writeデータ(Data#0+#1)を退避可能な容量未満である場合に、制御モジュールCM#0のCPU14Aは、他系の制御モジュールCM#1のCPU14Bから、他系の診断データを取得し(ステップS7)、制御モジュールCM#1のCPU14Bから取得した診断データに基づいて、他系の制御モジュールCM#1において全Writeデータ(Data#0+#1)がDestage可能であるか否かを判断する(ステップS8)。
【0180】
この後、制御モジュールCM#0のCPU14Aは、ステップS8の判断結果に基づいて、自系のキャッシュメモリ15Aのデータ退避方式を決定し、更に、他系の制御モジュールCM#1についての診断データに基づいて、ディスクアレイ装置の装置状態を決定する(ステップS9)。この後、制御モジュールCM#0のCPU14Aは、ディスクアレイ装置の装置状態を、制御モジュールCM#1のCPU14Bに通知する。
【0181】
具体的には、制御モジュールCM#0のCPU14Aは、ステップS9で、自系のキャッシュメモリ15Aのデータ退避方式を「自系WriteデータDestage」とする。その上で、制御モジュールCM#0のCPU14Aは、他系の制御モジュールCM#1の状態が「全Writeデータ可」である場合、ディスクアレイ装置をライトバック状態とする。これは図4のデータ退避方式テーブル1513におけるケースNo.3に相当する。また、制御モジュールCM#0のCPU14Aは、ステップS9で、他系の制御モジュールCM#1の状態が「全Writeデータ可」でない場合、ディスクアレイ装置をライトスルー状態とする。これは図4のデータ退避方式テーブル1513におけるケースNo.4に相当する。
【0182】
ステップS3において、フラッシュメモリ退避領域が自系Writeデータ(Data#0)を退避可能な容量未満である場合に、制御モジュールCM#0のCPU14Aは、他系の制御モジュールCM#1のCPU14Bから、他系の診断データを取得し(ステップS10)、制御モジュールCM#1のCPU14Bから取得した診断データに基づいて、他系の制御モジュールCM#1において全Writeデータ(Data#0+#1)がDestage可能であるか否かを判断する(ステップS11)。
【0183】
この後、制御モジュールCM#0のCPU14Aは、自系のキャッシュメモリ15Aのデータ退避方式を決定し、更に、他系の制御モジュールCM#1についての診断データに基づいて、ディスクアレイ装置の装置状態を決定する(ステップS12)。この後、制御モジュールCM#0のCPU14Aは、ディスクアレイ装置の装置状態を、制御モジュールCM#1のCPU14Bに通知する。
【0184】
具体的には、制御モジュールCM#0のCPU14Aは、ステップS12で、自系のキャッシュメモリ15Aのデータ退避方式を「キャッシュBackUp」とする。その上で、制御モジュールCM#0のCPU14Aは、他系の制御モジュールCM#1の状態が「全Writeデータ可」である場合、ディスクアレイ装置をライトバック状態とする。これは図4のデータ退避方式テーブル1513におけるケースNo.5に相当する。また、制御モジュールCM#0のCPU14Aは、ステップS12で、他系の制御モジュールCM#1の状態が「全Writeデータ可」でない場合、ディスクアレイ装置をライトスルー状態とする。これは図4のデータ退避方式テーブル1513におけるケースNo.6に相当する。
【0185】
一方、ステップS2において、自系のバッテリ13Aのバッテリ容量が自系Writeデータ(Data#0)を退避可能な容量以上(かつ、全Writeデータ(Data#0+#1)を退避可能な容量未満)である場合、制御モジュールCM#0のCPU14Aは、更に、自系のフラッシュメモリ17Aのフラッシュメモリ退避領域のメモリ容量を診断する(ステップS13)。具体的には、自系のフラッシュメモリ17Aのフラッシュメモリ退避領域が、自系Writeデータ(Data#0)を退避可能な容量以上であるか、自系Writeデータ(Data#0)を退避可能な容量未満であるかが、判断される。
【0186】
なお、ステップS13において、フラッシュメモリの退避領域の容量が、自系のキャッシュメモリ15Aの全Writeデータ(Data#0+#1)を退避可能な容量以上であるかは、判断されない。これは、自系のバッテリ13Aのバッテリ容量が、前述したように、全Writeデータ(Data#0+#1)を退避可能ではないからである。
【0187】
ステップS13での判断の結果、自系のフラッシュメモリ退避領域が自系Writeデータ(Data#0)を退避可能な容量以上である場合に、制御モジュールCM#0のCPU14Aは、ステップS7〜S9を実行する。
【0188】
これにより、制御モジュールCM#0のCPU14Aは、ステップS9で、自系のキャッシュメモリ15Aのデータ退避方式を「自系WriteデータDestage」とする。その上で、制御モジュールCM#0のCPU14Aは、他系の制御モジュールCM#1の状態が「全Writeデータ可」である場合、ディスクアレイ装置をライトバック状態とする。これは図4のデータ退避方式テーブル1513におけるケースNo.7及びNo.9に相当する。また、制御モジュールCM#0のCPU14Aは、ステップS9で、他系の制御モジュールCM#1の状態が「全Writeデータ可」でない場合、ディスクアレイ装置をライトスルー状態とする。これは図4のデータ退避方式テーブル1513におけるケースNo.8及びNo.10に相当する。
【0189】
前述したように、全Writeデータ(Data#0+#1)を退避可能な容量以上であるかは判断されないので、データ退避方式テーブル1513におけるケースNo.7及びNo.9は区別されず、ケースNo.8及びNo.10は区別されない。
【0190】
ステップS13において、自系のフラッシュメモリ退避領域が自系Writeデータ(Data#0)を退避可能な容量未満である場合に、制御モジュールCM#0のCPU14Aは、ステップS10〜S12を実行する。
【0191】
これにより、制御モジュールCM#0のCPU14Aは、ステップS12で、自系のキャッシュメモリ15Aのデータ退避方式を「キャッシュBackUp」とする。その上で、制御モジュールCM#0のCPU14Aは、他系の制御モジュールCM#1の状態が「全Writeデータ可」である場合、ディスクアレイ装置をライトバック状態とする。これは図4のデータ退避方式テーブル1513におけるケースNo.11に相当する。また、制御モジュールCM#0のCPU14Aは、ステップS12で、他系の制御モジュールCM#1の状態が「全Writeデータ可」でない場合、ディスクアレイ装置をライトスルー状態とする。これは図4のデータ退避方式テーブル1513におけるケースNo.12に相当する。
【0192】
一方、ステップS2において、自系Writeデータ(Data#0)を退避可能な容量未満である場合、制御モジュールCM#0のCPU14Aは、ステップS10〜S12を実行する。
【0193】
これにより、制御モジュールCM#0のCPU14Aは、自系のキャッシュメモリ15Aのデータ退避方式を「キャッシュBackUp」とする。その上で、制御モジュールCM#0のCPU14Aは、他系の制御モジュールCM#1の状態が「全Writeデータ可」である場合、ディスクアレイ装置をライトバック状態とする。これは図4のデータ退避方式テーブル1513におけるケースNo.13に相当する。また、制御モジュールCM#0のCPU14Aは、他系の制御モジュールCM#1の状態が「全Writeデータ可」でない場合、ディスクアレイ装置をライトスルー状態とする。これは図4のデータ退避方式テーブル1513におけるケースNo.14に相当する。
【0194】
ディスクアレイ装置の制御モジュールCM#1におけるデータ退避制御処理は、基本的には、図8に示す処理と同様である。
【0195】
しかし、制御モジュールCM#1のCPU14Bは、ディスクアレイ装置の装置状態を決定しないので、図8におけるステップS5、S8及びS11は省略される。また、図8におけるステップS6、S9及びS12において、制御モジュールCM#1のCPU14Bは、自系の制御モジュールCM#1におけるデータ退避方式を決定する処理を実行するのみで、ディスクアレイ装置の装置状態を決定する処理は実行しない。一方、図8におけるステップS6、S9及びS12において、制御モジュールCM#1のCPU14Bは、制御モジュールCM#0のCPU14Aからのディスクアレイ装置の装置状態の通知を受信して保持し、これに従って、ライトスルー状態又はライトバック状態でのキャッシュ制御を実行する。
【0196】
また、図8におけるステップS4、S7及びS10において、制御モジュールCM#1のCPU14Bは、制御モジュールCM#0のCPU14Aからの要求に応じて、制御モジュールCM#1の状態情報(他系状態情報)を応答として返信する。この時、制御モジュールCM#1の状態がケースNo.1及びNo.2である場合の応答は、「全Writeデータ可」とされる。制御モジュールCM#1の状態がケースNo.3〜No.14である場合の応答は、「全Writeデータ不可」とされる。
【符号の説明】
【0197】
1 制御モジュール
3 ディスクアレイ
11 ホスト制御部
12 スイッチ
13 バッテリ
14 CPU
15 キャッシュメモリ
16 メモリ制御部
17 フラッシュメモリ
18 エキスパンダ

【特許請求の範囲】
【請求項1】
各々が、キャッシュメモリと、前記キャッシュメモリにディスクアレイ装置の主電源の停電時に電力を供給するバッテリと、前記キャッシュメモリにデータを格納するCPUと、前記キャッシュメモリのデータを退避する不揮発性メモリとを含む第1及び第2の制御モジュールと、前記第1及び第2の制御モジュールによりデータが書込まれ又は読出されるディスクアレイとを含むディスクアレイ装置の制御方法であって、
前記第1の制御モジュールのCPUが、前記第2の制御モジュールのバッテリ及び不揮発性メモリによる、前記第2の制御モジュールのキャッシュメモリについてのデータ退避可否を示す他系状態情報を取得するステップと、
前記第1の制御モジュールのCPUが、前記第1の制御モジュールのバッテリ及び不揮発性メモリによる、前記第1の制御モジュールのキャッシュメモリについてのデータ退避可否を示す自系状態情報と、取得した前記他系状態情報とに基づいて、前記ディスクアレイ装置をライトバック状態とするか又はライトスルー状態とするかを決定するステップとを含む
ことを特徴とするディスクアレイ装置の制御方法。
【請求項2】
前記他系状態情報は、前記第2の制御モジュールのキャッシュメモリに書き込まれたデータの中で、前記ディスクアレイへ書き込まれていないライトデータであるダーティデータと、前記第1の制御モジュールのキャッシュメモリに書き込まれたダーティデータのコピーであるミラーリングデータの双方を、前記第2の制御モジュールの不揮発性メモリに退避可能か否かを示す情報であり、
前記第1の制御モジュールのCPUが、前記他系状態情報が前記第2の制御モジュールのキャッシュメモリに書き込まれた前記ダーティデータ及びミラーリングデータの双方を前記第2の制御モジュールの不揮発性メモリに退避可能であることを示す場合に、前記自系状態情報に拘わらず、前記ディスクアレイ装置をライトバック状態とする
ことを特徴とする請求項1記載のディスクアレイ装置の制御方法。
【請求項3】
前記第2の制御モジュールのバッテリのバッテリ容量が前記第2の制御モジュールのキャッシュメモリに書き込まれたダーティデータ及びミラーリングデータの双方を前記第2の制御モジュールの不揮発性メモリに退避可能な容量以上であり、かつ、前記第2の制御モジュールの不揮発性メモリのメモリ容量が前記第2の制御モジュールのキャッシュメモリに書き込まれたダーティデータ及びミラーリングデータの双方を退避可能な容量以上である場合に、前記他系状態情報は、前記第2の制御モジュールのキャッシュメモリに書き込まれたダーティデータ及びミラーリングデータの双方を、前記第2の制御モジュールの不揮発性メモリに退避可能とされる
ことを特徴とする請求項2記載のディスクアレイ装置の制御方法。
【請求項4】
前記自系状態情報は、前記第1の制御モジュールのキャッシュメモリに書き込まれたデータの中で、前記ディスクアレイへ書き込まれていないライトデータであるダーティデータと、前記第2の制御モジュールのキャッシュメモリに書き込まれたダーティデータのコピーであるミラーリングデータの双方、又は、前記第1の制御モジュールのキャッシュメモリに書き込まれたダーティデータのみを、前記第1の制御モジュールの不揮発性メモリに退避可能か否かを示す情報であり、
前記第1の制御モジュールのCPUが、前記自系状態情報に応じて、前記第1の制御モジュールのキャッシュメモリのデータ退避範囲を決定する
ことを特徴とする請求項2記載のディスクアレイ装置の制御方法。
【請求項5】
前記自系状態情報が、前記第1の制御モジュールのキャッシュメモリに書き込まれた前記ダーティデータ及びミラーリングデータの双方を、前記第1の制御モジュールの不揮発性メモリに退避可能であることを示す場合に、前記第1の制御モジュールのCPUが、前記ディスクアレイ装置の主電源の停電時に、前記第1の制御モジュールのキャッシュメモリ、CPU及び不揮発性メモリに電力を供給し、前記第1の制御モジュールのキャッシュメモリに書き込まれた前記ダーティデータ及びミラーリングデータの双方を、前記第1の制御モジュールの不揮発性メモリに退避する
ことを特徴とする請求項4記載のディスクアレイ装置の制御方法。
【請求項6】
前記自系状態情報が、前記第1の制御モジュールのキャッシュメモリに書き込まれた前記ダーティデータのみを、前記第1の制御モジュールの不揮発性メモリに退避可能であることを示す場合に、前記第1の制御モジュールのCPUが、前記ディスクアレイ装置の主電源の停電時に、前記第1の制御モジュールのキャッシュメモリ、CPU及び不揮発性メモリに電力を供給し、前記第1の制御モジュールのキャッシュメモリに書き込まれた前記ダーティデータのみを、前記第1の制御モジュールの不揮発性メモリに退避する
ことを特徴とする請求項4記載のディスクアレイ装置の制御方法。
【請求項7】
前記自系状態情報が、前記第1の制御モジュールのキャッシュメモリに書き込まれた前記ダーティデータを、前記第1の制御モジュールの不揮発性メモリに退避可能でないことを示す場合に、前記第1の制御モジュールのCPUが、前記ディスクアレイ装置の主電源の停電時に、前記第1の制御モジュールのキャッシュメモリ、CPU及び不揮発性メモリの中の前記キャッシュメモリのみに電力を供給する
ことを特徴とする請求項4記載のディスクアレイ装置の制御方法。
【請求項8】
キャッシュメモリと、前記キャッシュメモリにディスクアレイ装置の主電源の停電時に電力を供給するバッテリと、前記キャッシュメモリにデータを格納するCPUと、前記キャッシュメモリのデータを退避する不揮発性メモリとを含む第1の制御モジュールと、
キャッシュメモリと、前記キャッシュメモリに前記ディスクアレイ装置の主電源の停電時に電力を供給するバッテリと、前記キャッシュメモリにデータを格納するCPUと、前記キャッシュメモリのデータを退避する不揮発性メモリとを含む第2の制御モジュールと、
前記第1及び第2の制御モジュールによりデータが書込まれ又は読出されるディスクアレイとを含むディスクアレイ装置であって、
前記第1の制御モジュールのCPUが、前記第2の制御モジュールのバッテリ及び不揮発性メモリによる、前記第2の制御モジュールのキャッシュメモリについてのデータ退避可否を示す他系状態情報を取得し、
前記第1の制御モジュールのCPUが、前記第1の制御モジュールのバッテリ及び不揮発性メモリによる、前記第1の制御モジュールのキャッシュメモリについてのデータ退避可否を示す自系状態情報と、取得した前記他系状態情報とに基づいて、前記ディスクアレイ装置をライトバック状態とするか又はライトスルー状態とするかを決定する
ことを特徴とするディスクアレイ装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate