(57)【特許請求の範囲】
【請求項１】
ホスト計算機とネットワークを介して情報の授受を行う第一インタフェース部と、
データを記憶する記憶装置と、
前記記憶装置に接続され、前記記憶装置との間でデータの入出力処理を行う第二インタフェース部と、
前記第一インタフェース部および前記第二インタフェース部と接続され、前記記憶装置の少なくとも一部の記憶領域に割り当てられた複数の仮想デバイスに対するデータの入出力処理を制御する複数の制御部と、
前記制御部の処理に伴うライトデータを一時的に記憶し、揮発性メモリであるキャッシュメモリと、
前記キャッシュメモリを管理するための情報を格納し、揮発性メモリである共有メモリと、
前記キャッシュメモリに格納されたデータと前記共有メモリに格納された情報とを退避させるための不揮発性メモリと、
前記制御部に電力を供給する電源から電力の供給を受けて充電され、充電された電力で前記共有メモリへ給電する第１のバッテリと、前記キャッシュメモリへ給電する第２のバッテリと、
前記電源の停電時に、前記共有メモリに格納された情報と前記キャッシュメモリに格納されたデータを前記不揮発性メモリに退避させるメモリコントローラとを備え、
前記制御部は、
前記電源が復電すると、前記第１のバッテリの充電容量が前記共有メモリに格納される情報を前記不揮発性メモリに退避させるのに必要な電力量に達したことを条件に、業務を再開する
ことを特徴とするディスクアレイ装置。
【請求項２】
請求項１に記載のディスクアレイ装置において、
前記メモリコントローラは、
前記電源が復電すると、前記第２のバッテリの充電容量に応じて、前記キャッシュメモリへのアクセスを可能にする
ディスクアレイ装置。
【請求項３】
請求項１又は２に記載のディスクアレイ装置において、
前記メモリコントローラは、
前記電源が復電すると、前記不揮発性メモリに退避されていた情報を前記共有メモリに戻し、業務を再開する
ディスクアレイ装置。
【請求項４】
請求項２又は３に記載のディスクアレイ装置において、
前記メモリコントローラは、
前記電源が復電すると、前記不揮発性メモリに退避されていたデータを前記キャッシュメモリに戻し、前記キャッシュメモリへのアクセスを可能にする
ディスクアレイ装置。
【請求項５】
ホスト計算機とネットワークを介して情報の授受を行う第一インタフェース部と、
データを記憶する記憶装置と、
前記記憶装置に接続され、前記記憶装置との間でデータの入出力処理を行う第二インタフェース部と、
前記第一インタフェース部および前記第二インタフェース部と接続され、前記記憶装置の少なくとも一部の記憶領域に割り当てられた複数の仮想デバイスに対するデータの入出力処理を制御する複数の制御部と、
前記制御部の処理に伴うライトデータを一時的に記憶し、揮発性メモリであるキャッシュメモリと、
前記キャッシュメモリを管理するための情報を格納し、揮発性メモリである共有メモリと、
前記キャッシュメモリに格納されたデータと前記共有メモリに格納された情報を退避させるための不揮発性メモリと、
前記制御部に電力を供給する電源から電力の供給を受けて充電され、充電された電力で前記共有メモリへ給電する第１のバッテリと、前記キャッシュメモリへ給電する第２のバッテリと、
前記電源の停電時に、前記共有メモリに格納された情報と前記キャッシュメモリに格納されたデータを前記不揮発性メモリに退避させるメモリコントローラとを備えたディスクアレイ装置の制御方法であって、
前記電源が復電すると、
前記第１のバッテリの充電容量が前記共有メモリに格納される情報を前記不揮発性メモリに退避させるのに必要な電力量に達したことを条件に、業務を再開するステップを備えることを特徴とするディスクアレイ装置の制御方法。
【請求項６】
請求項５に記載のディスクアレイ装置の制御方法において、
前記メモリコントローラは、
前記電源が復電すると、
前記第２のバッテリの充電容量に応じて、前記キャッシュメモリへのアクセスを可能にするステップを備えることを特徴とするディスクアレイ装置の制御方法。
【請求項７】
請求項５又は６に記載のディスクアレイ装置の制御方法において、
前記メモリコントローラは、
前記電源が復電すると、
前記不揮発性メモリに退避されていた情報を前記共有メモリに戻し、業務を再開するステップを備えることを特徴とするディスクアレイ装置の制御方法。
【請求項８】
請求項６又は７に記載のディスクアレイ装置の制御方法において、
前記メモリコントローラは、
前記電源が復電すると、
前記不揮発性メモリに退避されていたデータを前記キャッシュメモリに戻し、前記キャッシュメモリへのアクセスを可能にするステップを備えることを特徴とするディスクアレイ装置の制御方法。
【請求項９】
請求項１乃至４の何れか一項に記載のディスクアレイ装置において、
前記共有メモリ及び前記キャッシュメモリは、一つの揮発メモリに含まれる
ことを特徴とするディスクアレイ装置。
【請求項１０】
請求項１乃至４の何れか一項に記載のディスクアレイ装置において、
前記制御部は、
前記第２のバッテリの充電容量に応じて、前記キャッシュメモリにライトデータを書き込むことなく、前記記憶装置に前記ライトデータを書き込む
ことを特徴とするディスクアレイ装置。
【請求項１１】
請求項１乃至４の何れか一項に記載のディスクアレイ装置において、
前記メモリコントローラは、
前記電源の停電時に、前記共有メモリに格納されている情報を優先して前記不揮発性メモリに退避させる
ことを特徴とするディスクアレイ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、揮発性メモリに格納されたデータを、停電時に、不揮発性メモリに退避させ、復電時に、不揮発性メモリに格納されたデータを揮発性メモリに戻して、業務を再開する処理を行うディスクアレイ装置およびその制御方法に関する。
【背景技術】
【０００２】
ディスクアレイ装置は、データを一時的に記憶するためのキャッシュメモリを備え、ホスト計算機からディスクドライブへのライトアクセスに対しては、キャッシュメモリへのライトデータの書き込みをもってライト処理の完了をホスト計算機に通知し、ホスト計算機からディスクドライブへのリードアクセスに対しては、リードデータがキャッシュヒットしている場合は、キャッシュメモリからデータを読み出すことで、高速アクセスを実現している。
【０００３】
ところが、キャッシュメモリの多くは、揮発性メモリで構成されているため、電源障害などで、キャッシュメモリへの電力供給が停止すると、キャッシュデータが消失することがある。
【０００４】
このような背景から、ディスクアレイ装置として、大容量バッテリを搭載したものがある。この種のディスクアレイ装置では、大容量バッテリからキャッシュメモリなどに電力を供給できるため、停電時から復電時まで大容量バッテリからキャッシュメモリへ給電することで、停電時でも業務を停止させることなく、業務を継続することができる。
【０００５】
しかし、大容量バッテリを搭載した場合には、バッテリが大型になる分ディスクアレイ装置のコストが高くなる。また、大容量バッテリであっても、バッテリの容量は有限であるため、停電時間が長くなったときには、業務を停止させることが余儀なくされる。
【０００６】
一方、ディスクアレイ装置に、大容量バッテリの代わりに、小容量の小型バッテリを搭載すれば、バッテリの搭載に伴うコストアップを抑制することができる。この場合、停電時に、揮発性メモリに格納されたデータを不揮発性メモリに退避させ、復電時に、バッテリから揮発性メモリに給電するとともに、不揮発性メモリに格納されていたデータを揮発性メモリに戻し、揮発性メモリに戻されたデータを基に業務を再開する方式を採用することが考えられる。
【０００７】
この際、特許文献１に記載されているように、バッテリ残量が多いときにはメモリへの書き込みデータ量を多くするとともに、読み出すデータ量を多くして、光磁気ディスクでの記録動作１回当たりの記憶容量を多くし、バッテリ容量が少ないときには、メモリから読み出すデータ量を少なくして、光磁気ディスクへの記録動作１回当たりの記憶容量を少なくする方式を採用することもできる。また、特許文献２に記載されているように、電源障害時に、ストレージシステムの動作モードをバッテリ容量に応じて選択する方式を採用することもできる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１０−３２０８８９号公報
【特許文献２】特開２００７−１１５０５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
小型バッテリを搭載したディスクアレイ装置において、停電時に、揮発性メモリに格納されたデータを不揮発性メモリに退避させ、復電時に、バッテリから揮発性メモリに給電するとともに、不揮発性メモリに格納されていたデータを揮発性メモリに戻し、揮発性メモリに戻されたデータを基に業務を再開する場合、特許文献１、２に開示されている方式を単に採用しても、復電時に、直ちに業務を再開できないことがある。
【００１０】
すなわち、再度障害が発生する場合、例えば、復電した後、再度停電が発生することを考慮した場合、揮発性メモリに格納されているデータを不揮発性メモリに再度退避させるのに必要な電力量が、小型バッテリに再充電されるまでは、揮発性メモリに戻されたデータを基に業務を再開することができず、復電時から業務再開までの時間が長くなる。
【００１１】
本発明は、前記従来技術の課題に鑑みて為されたものであり、その目的は、復電時から業務再開までの時間を短縮することができるディスクアレイ装置とその制御方法を提供することにある。
【課題を解決するための手段】
【００１２】
前記目的を達成するために、本発明は、制御部の処理に伴うデータを一時的に記憶するキャッシュメモリと、キャッシュメモリを管理するための情報を格納する共有メモリと、キャッシュメモリに格納されたデータと共有メモリに格納されたデータを退避させるための不揮発性メモリをメモリコントローラで管理するに際して、電源の停電時に、共有メモリに格納された情報とキャッシュメモリに格納されたデータを不揮発性メモリに退避させ、電源の復電時には、第１のバッテリでキャッシュメモリへ給電し、共有メモリには、第１のバッテリよりも短い時間で充電される第２のバッテリで給電し、メモリコントローラは、第１のバッテリの充電容量に応じてキャッシュメモリの記憶領域をアクセス可能な記憶領域として段階的に開放する。これにより、制御部は、共有メモリをアクセスできるとともに、キャッシュメモリを段階的にアクセスすることができる。
【発明の効果】
【００１３】
本発明によれば、復電時から業務再開までの時間を短縮することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明が適用されたストレージシステムのブロック構成図である。
【図２】ディスクユニットモジュールとディスクコントロールモジュールの斜視図である。
【図３】ディスクコントロールモジュールの要部分解斜視図である。
【図４】ストレージシステムのリードアクセスとライトアクセスを説明するためのブロック図である。
【図５】ストレージシステムにおけるライトスルー処理を説明するためのブロック図である。
【図６】キャッシュメモリと共有メモリに給電するための第１の給電方式を説明するための構成図である。
【図７】キャッシュメモリと共有メモリに給電するための第２の給電方式を説明するための構成図である。
【図８】キャッシュメモリと共有メモリに給電するための第３の給電方式を説明するための構成図である。
【図９】メモリコントローラの処理を説明するためのブロック構成図である。
【図１０】停電時から復電時におけるシステム動作と、バックアップ動作と、バッテリ動作およびメモリ動作を説明するための図である。
【図１１】メモリコントローラの処理を説明するためのフローチャートである。
【図１２】マイクロプロセッサの処理を説明するためのフローチャートである。
【図１３】ホスト計算機からのアクセスに対するマイクロプロセッサの処理を説明するためのフローチャートである。
【図１４】メモリのLU割当処理を説明するためのフローチャートである。
【図１５】LUの稼働率情報取得処理を説明するためのフローチャートである。
【図１６】管理テーブルの構成図である。
【発明を実施するための形態】
【実施例】
【００１５】
本実施例は、電源の停電時に、共有メモリに格納された情報とキャッシュメモリに格納されたデータを不揮発性メモリに退避させ、電源の復電時には、第１のバッテリでキャッシュメモリへ給電し、共有メモリには、第１のバッテリよりも短い時間で充電される第２のバッテリで給電し、第１のバッテリの充電容量に応じてキャッシュメモリの記憶領域をアクセス可能な記憶領域として段階的に開放するものである。
【００１６】
以下、本発明の一実施形態を図面に基づいて説明する。図１は、本発明が適用されたストレージシステムのブロック構成図である。
【００１７】
図１において、ストレージシステム１０は、複数のホスト計算機１２と、ディスクコントロールモジュール（DKCモジュール）１４、１６と、ディスクユニットモジュール（DKUモジュール）１８、２０を備え、各ホスト計算機１２とディスクコントロールモジュール１４、１６がそれぞれネットワーク２２を介して接続されている。ディスクコントロールモジュール１４とディスクユニットモジュール１８で１台のディスクアレイ装置が構成され、ディスクコントロールモジュール１６とディスクユニットモジュール２０で１台のディスクアレイ装置が構成され、２台のディスクアレイ装置がそれぞれネットワーク２２を介して各ホスト計算機１２に接続されている。
【００１８】
各ホスト計算機１２は、マイクロプロセッサと、メモリと、入出力インタフェースと、表示装置など（いずれも図示せず）を備え、マイクロプロセッサが、メモリに格納されたプログラムやデータを基にコマンドを発行するとともに、ネットワーク２２を介してストレージシステム１０と情報の授受を行う。
【００１９】
ディスクコントロールモジュール１４、１６は、複数のホストインタフェース２４と、複数のHDD（Hard  Disk  Drive）インタフェース２６と、複数のスイッチ２８と、複数の揮発性メモリ３０と、複数の不揮発性メモリ３２と、特性の相異なる複数のバッテリ３４、３６と、複数のマイクロプロセッサ（MP：MicroProcessor）３８を備えている。
【００２０】
各ホストインタフェース２４と、各HDDインタフェース２６と、各揮発性メモリ３０および各マイクロプロセッサ３８は、自ディスクコントロールモジュール内のスイッチ２８を介して互いに接続されているとともに、他のディスクコントロールモジュール内のスイッチ２８を介して互いに接続されている。
【００２１】
ディスクユニットモジュール１８、２０は、それぞれ各ホスト計算機１２のアクセス対象となるデータを格納する記憶装置４０を備えている。各記憶装置４０は、記憶デバイスとして、例えば、複数のHDDを備えている。各HDDの少なくとも一部の記憶領域には、論理デバイス（LDEV）として、複数の仮想デバイスが割り当てられている。
【００２２】
各ホストインタフェース２４は、各ホスト計算機１２とネットワーク２２を介して情報の授受を行う第一インタフェース部として構成され、例えば、各ホスト計算機１２からのコマンドを解釈して、各ホスト計算機１２と各揮発性メモリ３０との間のデータ転送を制御する。各HDDインタフェース２６は、各内部ネットワーク４２を介して各記憶装置４０と接続され、各記憶装置４０に対して、データの入出力処理を行う第二インタフェース部として構成されている。
【００２３】
各マイクロプロセッサ３８は、スイッチ２８を介して各ホストインタフェース２４と各HDDインタフェース２６および各揮発性メモリ３０に接続され、複数の仮想デバイス、例えば、複数の論理ユニット（LU）に対するデータの入出力処理を制御する制御部として構成されている。
【００２４】
各揮発性メモリ３０は、各マイクロプロセッサ３８の処理に伴うデータを一時的に記憶するキャッシュメモリ（CM）４４と、キャッシュメモリ４４を管理するための管理情報としてのディレクトリ情報やシステム構成情報を格納する共有メモリ（SM）４６を備えている。すなわち、各揮発性メモリ３０は、一部の記憶領域がキャッシュメモリ４４として用いられ、残りの記憶領域が共有メモリ４６として用いられている。
【００２５】
各不揮発性メモリ３２は、キャッシュメモリ４４に格納されたデータや共有メモリ（SM）に格納された情報を退避させるための退避用不揮発性メモリとして、例えば、SSD（Solid  State  Drive）を用いて構成されている。
【００２６】
バッテリ３４は、共有メモリ４６へ給電するための給電源として、例えば、電気二重層キャパシタ、ハイブリッドキャパシタ、レドックスキャパシタを用いて構成されている。
【００２７】
バッテリ３６は、キャッシュメモリ４４へ給電するための給電源として、例えば、リチウムイオン二次電池、ニッケル・水素蓄電池、鉛蓄電池を用いて構成されている。
【００２８】
電気二重層キャパシタで構成されたバッテリ３４は、電源から電力の供給を受けて、二次電池（リチウムイオン二次電池）で構成されたバッテリ３６よりも、短い時間で充電される特性を有している。
【００２９】
すなわち、共有メモリ４６への給電には、バッテリ（第１のバッテリ）３６よりも充電時間の短いバッテリ（第２のバッテリ）３４が用いられ、キャッシュメモリ４４には、バッテリ容量が大きく、バッテリ３４よりも充電時間の長いバッテリ３６が用いられている。
【００３０】
次に、図２に、ディスクコントロールモジュール１４、１６およびディスクユニットモジュール１８、２０の構造を示し、図３に、ディスクコントロールモジュール１４、１６の構造を示す。
【００３１】
図２において、モジュール収納ケース５０は、複数のフレーム５２、５４で枠体が構成されており、モジュール収納ケース５０内は、複数の仕切板５６によって３つのブロックに分割されている。上部のブロックには、ディスクユニットモジュール２０が収納され、中間部のブロックには、ディスクユニットモジュール１８が収納され、下部のブロックには、ディスクコントロールモジュール１４、１６が８段に分かれて収納されている。
【００３２】
図３において、パッケージ６０はほぼ箱型形状に形成されており、このパッケージ６０内には、ディスクコントロールモジュール１４またはディスクコントロールモジュール１６を構成する要素として、揮発性メモリ３０や不揮発性メモリ３２が収納されているとともに、バッテリケース６２が収納されている。バッテリケース６２内には、バッテリ３４とバッテリ３６が収納される。また、揮発性メモリ３０はベース６４上に搭載されており、ベース６４上には、後述するメモリコントローラ７０が搭載されている。
【００３３】
次に、ストレージシステム１０の動作を図４のブロック図に基づいて説明する。まず、いずれかのホスト計算機１２からコマンドが発行されると、ホストインタフェース２４がコマンドを受信する。ホストインタフェース２４は、コマンドを解釈し、コマンドがライトアクセス要求であるときには、ライトアクセス要求を、スイッチ２８を介してマイクロプロセッサ（MP）３８に転送する。マイクロプロセッサ３８は、ライトアクセス要求に応答して、ライトデータをスイッチ２８を介してキャッシュメモリ４４に書き込み、ライトデータがキャッシュメモリ４４に書き込まれたことを条件に、ライトアクセスの完了をホストインタフェース２４を介してホスト計算機１２に通知する。
【００３４】
キャッシュメモリ４４に書き込まれたライトデータは、その後、マイクロプロセッサ３８の処理を基に、スイッチ２８、HDDインタフェース２６を介して記憶装置４０に書き込まれる。
【００３５】
次に、いずれかのホスト計算機１２から、コマンドとしてリードアクセス要求が発行され、リードアクセス要求がホストインタフェース２４によって受信されたときには、ホストインタフェース２４は、リードアクセス要求を、スイッチ２８を介してマイクロプロセッサ（MP）３８に転送する。マイクロプロセッサ３８は、リードアクセス要求に応答して、キャッシュメモリ４４上のデータを検索し、リードデータがキャッシュメモリ４４上に存在するときには、キャッシュメモリ４４上のデータを、リードデータとしてホストインタフェース２４を介してホスト計算機１２に送信する。
【００３６】
一方、キャッシュメモリ４４上にリードデータが存在しないときには、マイクロプロセッサ３８は、HDDインタフェース２６を介して、記憶装置４４のデータを検索し、この検索により得られたデータを、リードデータとしてホストインタフェース２４を介してホスト計算機１２に送信する。
【００３７】
次に、ストレージシステム１０におけるライトスルーの処理を図５のブロック図に基づいて説明する。いずれかのホスト計算機１２から、コマンドとしてライトアクセス要求が発行され、ホスト計算機１２からのライトアクセス要求に応答してマイクロプロセッサ３８が、キャッシュメモリ４４をアクセスする。このとき、ライトデータは、キャッシュメモリ４４には存在するデータであるが、記憶装置４０には、書き込まれていないデータであるとき、マイクロプロセッサ３８は、ライトデータをキャッシュメモリ４４に書き込むことなく、HDDインタフェース２６を介して記憶装置４０にライトデータを書き込むためのライトスルー処理を行う。
【００３８】
また、ホスト計算機１２からのライトアクセス要求に応答してマイクロプロセッサ３８が、キャッシュメモリ４４をアクセスしたときに、キャッシュメモリ４４には、ライトデータを格納する記憶領域が存在しないときには、マイクロプロセッサ３８は、HDDインタフェース２６を介して記憶装置４０にライトデータを書き込むためのライトスルー処理を行う。
【００３９】
次に、キャッシュメモリ４４と共有メモリ４６に対する給電方法を図６乃至図８に基づいて説明する。
【００４０】
図６は、キャッシュメモリ４４と共有メモリ４６に給電するための第１の給電方式を採用したときの実施例を示す。第１の給電方式では、電気二重層キャパシタで構成されたバッテリ３４から共有メモリ４６へ給電し、二次電池で構成されたバッテリ３６からキャッシュメモリ４４へ給電する。
【００４１】
キャッシュメモリ４４と共有メモリ４６に対する給電系統を、共有メモリ４６に対する給電系統とキャッシュメモリ４４に対する給電系統の２系統に分けることで、キャッシュメモリ４４に対しては大容量のバッテリ４６でバックアップすることができ、一方、電源が停電した後、復電したときには、共有メモリ４６に対しては、バッテリ３６よりも短い時間でバッテリ３４から共有メモリ４６に給電することができる。
【００４２】
すなわち、共有メモリ４６には、充電時間の短いバッテリ３４を用いることで、復電時、データ更新前にバッテリ容量を確保し、システム構成情報やディレクトリ情報を早期に更新可能としている。キャッシュメモリ４４には、バッテリ容量の大きいバッテリ３６を用いることで、復電時、バッテリ３６の充電容量に応じてキャッシュメモリ４４の記憶領域を段階的に開放する制御、すなわち、キャッシュメモリ４４の記憶領域を段階的に使用可能、例えば、書き込み可能にするためのメモリ制御を行うこととしている。
【００４３】
図７は、キャッシュメモリ４４と共有メモリ４６に給電するための第２の給電方式を採用したときの実施例を示す。第２の給電方式では、揮発性メモリ３０を揮発性メモリ３０Aと揮発性メモリ３０Bとに分け、揮発性メモリ３０Aで共有メモリ４６を構成し、揮発性メモリ３０Bでキャッシュメモリ４４を構成し、共有メモリ４６に対してバッテリ３４から給電し、キャッシュメモリ４４に対してバッテリ３６から給電する。
【００４４】
第２の給電方式においても、共有メモリ４６には、充電時間の短いバッテリ３４を用いることで、復電時、データ更新前にバッテリ容量を確保し、システム構成情報やディレクトリ情報を早期に更新可能としている。キャッシュメモリ４４には、バッテリ容量の大きいバッテリ３６を用いることで、復電時、バッテリ３６の充電容量に応じてキャッシュメモリ４４の記憶領域を段階的に開放するメモリ制御を行うこととしている。
【００４５】
第２の給電方式の場合、揮発性メモリ３０Aを収納するパッケージと揮発性メモリ３０Bを収納するパッケージを分離して配置することができる。
【００４６】
図８は、キャッシュメモリ４４と共有メモリ４６に給電するための第３の給電方式を採用したときの実施例を示す。第３の給電方式では、バッテリ３４とバッテリ３６を並列に接続し、バッテリ３４、３６からそれぞれ共有メモリ４６とキャッシュメモリ４４へ給電する。
【００４７】
第３の給電方式では、バッテリ３４は、バッテリ３６よりも出力電圧が高いものが用いられている。バッテリ３４の電圧をバッテリ３６の電圧よりも高くすることで、共有メモリ４６とキャッシュメモリ４４に対する給電において、バッテリ３６よりもバッテリ３４からの給電を早くすることができる。また、電源の停電時には、共有メモリ４６に格納されたデータを優先して不揮発性メモリ３２に退避させる制御を行うことができる。
【００４８】
図９に、メモリ制御系のブロック図を示す。キャッシュメモリ４４と共有メモリ４６および不揮発性メモリ３２のデータを制御するに際して、各マイクロプロセッサ３８に対応してメモリコントローラ７０を備えている。メモリコントローラ７０は、スイッチ７２を介してキャッシュメモリ４４、共有メモリ４６および不揮発性メモリ３２に接続されているとともに、スイッチ７２とスイッチ２８を介して、メモリ７４およびマイクロプロセッサ３８に接続されている。メモリ７４には、アドレス管理テーブル７６が格納されている。アドレス管理テーブル７６は、キャッシュメモリ４４の記憶領域とアドレス範囲との関係を管理するためのテーブルとして構成されている。
【００４９】
メモリコントローラ７０は、ディスクコントロールモジュール１４、１６にそれぞれ電力を供給するための電源７８に接続され、電源７８から電力の供給を受けて起動するようになっている。またバッテリ３４、３６はそれぞれ電源７８に接続されており、電源７８が停電したときには、バッテリ３６からの電力によってキャッシュメモリ４４が給電され、バッテリ３４からの電力によって共有メモリ４６が給電されるようになっている。一方、電源７８が停電から復電したときには、電源７８からの電力がバッテリ３４、３６にそれぞれ供給され、各バッテリ３４、３６が充電されるようになっている。
【００５０】
この際、メモリコントローラ７０は、電源７８の停電時には、キャッシュメモリ４４に格納されたデータを、スイッチ７２を介して不揮発性メモリ３２に退避させるとともに、共有メモリ４６に格納されたシステム構成情報やディレクトリ情報を、スイッチ７２を介して不揮発性メモリ３２に退避させることができる。
【００５１】
一方、電源７８が停電から復電したときには、メモリコントローラ７０は、不揮発性メモリ３２に格納されていたデータを、スイッチ７２を介してキャッシュメモリ４４に戻すための処理を行うとともに、不揮発性メモリ３２に格納されていたシステム構成情報やディレクトリ情報を、スイッチ７２を介して共有メモリ４６に戻すための処理を実行する。
【００５２】
具体的には、図１０に示すように、正常動作が実行されているときに、タイミングt１で電源７８が停電したときには、システムが停止するとともに、バッテリ３４は特性１００に従って放電し、バッテリ３６は特性１０２に従って放電する。このため、メモリコントローラ７０は、共有メモリ４６に格納されていたシステム構成情報やディレクトリ情報を、スイッチ７２を介して不揮発性メモリ３２にタイミングt２までの間に退避させるとともに、タイミングt３までの間に、キャッシュメモリ４４に格納されていたデータを、スイッチ７２を介して不揮発性メモリ３２に退避させる。
【００５３】
電源７８が停電した後、タイミングt４で復電したときには、バッテリ３４は特性１０４に従って充電され、バッテリ３６は特性１０６に従って充電される。すなわち、バッテリ３４は、メモリコントローラ７０とマイクロプロセッサ３８のイニシャライズ時間（データなどを初期化するための処理に要する時間）が経過するタイミングt５までの間に、バッテリ３４の充電容量が満充電状態となる。
【００５４】
このため、メモリコントローラ７０は、イニシャライズ時間が経過したことを条件に、不揮発性メモリ３２に格納されていたシステム構成情報やディレクトリ情報をタイミングt５で共有メモリ４６に戻し、これらの情報を早期に更新可能となり、マイクロプロセッサ３８は、タイミングt５から共有メモリ４６に格納された情報を基に正常動作、すなわちオンライン処理が可能となる。
【００５５】
一方、バッテリ３６は特性１０６に従って充電されるため、タイミングt５では、満充電状態の２５％の充電容量で、タイミングt６では、５０％の充電容量で、タイミングt７では、７５％の充電容量で、タイミングt８で、１００％の充電容量であって、満充電状態となる。
【００５６】
すなわち、バッテリ３６は、タイミングt５では、満充電状態の２５％の充電容量で、タイミングt８まで、１００％の充電容量とはならない。このため、タイミングt５では、バッテリ３６からキャッシュメモリ(CM)４４に給電していても、キャッシュメモリ(CM)４４の全ての記憶領域を使用するには、電流容量が不足するので、キャッシュメモリ(CM)４４の一部の記憶領域しか使用することはできない。
【００５７】
そこで、本実施例では、メモリコントローラ７０は、バッテリ３６の充電状態としてバッテリ３６の充電容量（バッテリ容量）を計測し、計測結果に従ってキャッシュメモリ４４の記憶領域を段階的に解放するための制御、すなわちキャッシュメモリ４４の記憶領域を段階的に使用可能、すなわちアクセス可能、例えば、書き込み可能にするためのメモリ制御をタイミングt５からタイミングt８まで実行することとしている。
【００５８】
次に、メモリコントローラ７０の処理を図１１のフローチャートに従って説明する。まず、メモリコントローラ７０は、起動時または停電からの復電時に処理を開始し（S１）、次に初期診断処理を実行する（S２）。このあとメモリコントローラ７０は、バッテリ３６のバッテリ容量を取得し（S３）、取得したバッテリ容量を基に使用可能な記憶領域（メモリ領域ともいう）を算出する（S４）。
【００５９】
例えば、バッテリ容量が２５％のときには、キャッシュメモリ４４の記憶領域のうち２５％の記憶領域が使用可能なメモリ領域として算出し、同様に、バッテリ容量が５０％のときには、使用可能なメモリ領域が５０％として算出し、バッテリ容量が７５％のときには、使用可能なメモリ領域が７５％として算出し、バッテリ容量が１００％のときには、使用可能なメモリ領域が１００％として算出する。
【００６０】
次に、メモリコントローラ７０は、算出した使用可能なメモリ領域を基にアドレス管理テーブル７６を検索し、使用可能なメモリ領域に対応したアドレス範囲をマイクロプロセッサ(MP)３８に通知し（S５）、バッテリ容量は１００％か否かを判定し（S６）、バッテリ容量が１００％でないときには、ステップS３の処理の戻り、ステップS３〜ステップS５までの処理を繰り返し、バッテリ容量が１００％のときには、このルーチンでの処理を終了する。
【００６１】
以上の処理を実行することで、メモリコントローラ７０は、バッテリ容量に応じて使用可能なメモリ領域、即ち、バッテリ容量に応じて書込み可能な記憶領域を算出し、算出結果を基に書込み可能なアドレス範囲をマイクロプロセッサ(MP)３８に通知することができる。これにより、マイクロプロセッサ(MP)３８は、キャッシュメモリ（CM）４４にデータを書き込むときに、バッテリ３６のバッテリ容量を基に書き込むべきデータのデータ容量を決定することができる。
【００６２】
次に、マイクロプロセッサ３８の処理を図１２のフローチャートに従って説明する。マイクロプロセッサ３８は、起動時または停電からの復電時に処理を開始し（S１１）、まず初期診断などの処理を行う（S１２）。このあとマイクロプロセッサ３８は、キャッシュメモリ４４の記憶領域のうち使用可能（書き込み可能）なメモリ領域（記憶領域）に関する情報をメモリコントローラ７０から入手するための処理を実行する（S１３）。
【００６３】
次に、マイクロプロセッサ３８は、入手した情報を基に、キャッシュメモリ４４のメモリ領域として、使用可能なメモリ領域は１００％か否かを判定し（S１４）、使用可能なメモリ領域が１００％でないときには、ステップS１３の処理に戻り、ステップS１３からステップS１４の処理を繰り返し、キャッシュメモリ４４のメモリ領域が１００％使用可能と判定したときには、このルーチンでの処理を終了する。
【００６４】
このように、マイクロプロセッサ３８は、起動時または復電時には、バッテリ３６のバッテリ容量が上昇する過程で、キャッシュメモリ４４のメモリ領域が順次使用可能になったときには、使用可能になったメモリ領域に順次データを書き込むことができ、バッテリ３６のバッテリ容量が満充電状態となって、使用可能なメモリ領域が１００％に達したときには、キャッシュメモリ４４の全てのメモリ領域にデータを書き込むことができる。
【００６５】
次に、使用可能なキャッシュメモリ上のアドレス範囲を通知されたマイクロプロセッサの処理として、ホスト計算機からのコマンドを処理するときの動作を図１３のフローチャートに従って説明する。
【００６６】
まず、いずれかのホスト計算機１２からコマンドを受けたマイクロプロセッサ３８は、例えば、コマンドとして、ライトアクセス要求を受けたときには、ライトアクセス要求に応答してアクセスを開始し（S２１）、メモリコントローラ７０からバッテリ容量を取得し（S２２）、バッテリ３６のバッテリ容量は１００％か否かを判定する（S２３）。
【００６７】
マイクロプロセッサ３８は、バッテリ３６のバッテリ容量が１００％未満のときには、取得したバッテリ容量を基にバックアップ可能なアドレス範囲、すなわち書き込み可能なアドレス範囲を算出する（S２４）。
【００６８】
ここで、バックアップ可能なアドレス範囲とは、バッテリ容量に対応したデータ容量であり、バックアップ可能なアドレス範囲＝バッテリ容量[Wh]≧バックアップ電力（揮発性メモリ３０の構成と揮発性メモリ３０の電力から一義的に決まる電力）/１アドレス当たりのバックアップ時間から定まるものである。
【００６９】
次に、マイクロプロセッサ３８は、バッテリ容量に応じて算出したアドレス範囲をライトペンディングの閾値に設定する（S２５）。このライトペンディングの閾値とは、記憶装置４０にはまだ書き込まれていないデータに関するデータ容量の閾値であって、キャッシュメモリ４４に残しておくべきデータに関するデータ容量の閾値である。
【００７０】
一方、ステップS２３において、バッテリ容量が１００％であると判定したときには、マイクロプロセッサ３８は、全てのアドレスを使用可能とし（S２６）、ライトペンディングの閾値を１００％に設定し（S２７）、ステップS２８の処理に移行する。
【００７１】
ステップS２８において、マイクロプロセッサ３８は、ホスト計算機１２からのライトデータのデータ容量がライトペンディングの閾値以上か否かを判定し、閾値以上と判定したときには、ライトスルーの処理として、キャッシュメモリ４４にライトデータを書き込むことなく、HDDで構成された記憶装置４０にライトデータを書き込むための処理を実施し（S２９）、ホスト計算機１２からのライトデータのデータ容量がライトペンディングの閾値未満と判定したときには、ホスト計算機１２からのライトデータをキャッシュメモリ４４に書き込み（S３０）、ステップS３１の処理に移行する。
【００７２】
ステップS３１において、マイクロプロセッサ３８は、メモリコントローラ７０からバッテリ３６のバッテリ容量を取得し、バッテリ容量は１００％か否かを判定し（S３２）、バッテリ容量が１００％未満のときにはステップS２２の処理に戻り、ステップS２２からステップS３２までの処理を繰り返し、バッテリ容量が１００％であると判定したときには、ライトペンディングの閾値を１００％に設定し（S３３）、このルーチンでの処理を終了する。
【００７３】
以上のように、使用可能なキャッシュメモリ上のアドレス範囲を通知されたマイクロプロセッサ３８は、ホスト計算機１２からのコマンドを処理するに際して、バッテリ容量が１００％に達するまでは、バッテリ容量に応じてライトペンディングの閾値を設定し、バッテリ容量が１００％に達したときには、ライトペンディングの閾値を１００％に設定し、ホスト計算機１２からのライトデータのデータ容量がライトペンディングの閾値以上か否かを判定し、閾値以上と判定したときには、ライトスルーの処理として、キャッシュメモリ４４にライトデータを書き込むことなく、記憶装置４０にライトデータを書き込むための処理を実施し、ホスト計算機１２からのライトデータのデータ容量がライトペンディングの閾値未満と判定したときには、ホスト計算機１２からのライトデータをキャッシュメモリ４４に書き込むことになる。
【００７４】
次に、メモリのLU割当処理を図１４のフローチャートに従って説明する。
【００７５】
まず、マイクロプロセッサ３８は、バッテリ３６のバッテリ容量を基に使用可能なアドレス範囲を決定し（S４１）、各LUに関するLU情報を読み込み（S４２）、読み込んだLU情報を基にアクセスを開始する（S４３）。
【００７６】
アクセスを開始したマイクロプロセッサ３８は、各LUの稼働率情報を取得し（S４４）、取得した各LUの稼働率情報を基に各LUに対するメモリの割り当て、すなわちキャッシュメモリ４４の割り当てを行い（S４５）、各LUに対するメモリの割り当て処理結果を基に図１６の管理テーブル１２０を更新し（S４６）、更新結果を基に、LU稼働率が変化したか否かを判定し、LU稼働率が変化したときにはステップS４４の処理に戻り、ステップS４４からステップS４７までの処理を繰り返し、LU稼働率が変化していないと判定したときには、このルーチンでの処理を終了する。
【００７７】
LUの稼働率情報取得処理を行うに際して、マイクロプロセッサ３８は、図１５に示すように、各LUに対する一定時間当たりのアクセス回数をカウントし（S５１）、当該LUの全体回数に対する割合を稼働率として、各LUの稼働率情報を取得し（S５２）、このルーチンでの処理を終了する。
【００７８】
次に、管理テーブル１２０の構成を図１６に示す。管理テーブル１２０はトータルキャッシュサイズ１２２、バッテリ容量１２４、使用可能なキャッシュサイズ１２６、使用可能なアドレス数１２８、LU番号１３０、稼働割合１３２、割当１３４を備えている。
【００７９】
トータルキャッシュサイズ１２２には、キャッシュメモリ４４の全体の容量が格納され、バッテリ容量１２４には、メモリコントローラ７０によって取得されたバッテリ容量が格納され、使用可能なキャッシュサイズ１２６には、バッテリ３６のバッテリ容量に応じた容量が格納される。使用可能なアドレス数１２８には、バッテリ容量に応じて決定される使用可能なアドレス数が格納される。LU番号１３０には、キャッシュメモリ４４の記憶領域に割り当てられたLUの番号が格納される。稼働割合１３２には、各LUに対応して稼働割合が％で格納される。割当１３４には、各LUに対応して、稼働割合に応じた使用可能なアドレス数が格納される。
【００８０】
以上のように、マイクロプロセッサ３８は、各LUの稼働率情報を取得し、取得した各LUの稼働率情報を基に各LUに対して、キャッシュメモリ４４の割り当てを行う。すなわち、マイクロプロセッサ３８は、キャッシュメモリ４４の記憶領域を各LUの稼働率情報を基に分割し、分割された記憶領域をそれぞれ各LUのアクセス先として、アクセスするとともに、各LUに対するキャッシュメモリ４４の割り当て結果を基に管理テーブル１２０を更新することとしている。
【００８１】
この際、例えば、使用可能アドレス数が、キャッシュメモリ４４全体で６５５３６であったときに、＃０のLUには、＃０のLUの稼働割合（稼働率情報）が３０％であるところから、使用可能アドレス数として、１９６６１が割り当てられる。
【００８２】
本実施例によれば、電源７８が停電したときには、共有メモリ４６に格納されていたシステム構成情報やディレクトリ情報を、スイッチ７２を介して不揮発性メモリ３２に退避させるとともに、キャッシュメモリ４４に格納されていたデータを、スイッチ７２を介して不揮発性メモリ３２に退避させ、電源７８が停電後、復電したときには、イニシャライズ時間が経過するまでの間に、バッテリ３４の充電容量が満充電状態となるので、メモリコントローラ７０は、不揮発性メモリ３２に格納されていたシステム構成情報やディレクトリ情報を共有メモリ４６に戻し、システム構成情報やディレクトリ情報を早期に更新でき、マイクロプロセッサ３８は、イニシャライズ時間が経過したことを条件に、共有メモリ４６に格納された情報をアクセスし、共有メモリ４６に格納された情報を基にオンライン処理を実行することができる。
【００８３】
一方、電源７８が停電後、復電したときに、イニシャライズ時間が経過しても、バッテリ３６のバッテリ容量が徐々に上昇している過程では、メモリコントローラ７０が、バッテリ３６のバッテリ容量に応じて、キャッシュメモリ４４の記憶領域を段階的に書き込み可能に制御することで、バッテリ３６が満充電状態でなくても、マイクロプロセッサ３８は、イニシャライズ時間が経過したことを条件に、キャッシュメモリ４４をアクセスして、キャッシュメモリ４４の記憶領域に段階的にデータを書き込むことができ、復電時から業務再開までの時間を短縮することができる。
【００８４】
また、メモリコントローラ７０は、電源７８の復電時に、イニシャライズ時間が経過し、バッテリ３４の充電容量が満充電容量になったことを条件に、不揮発性メモリ３２に退避されていた情報を共有メモリ４６に戻すとともに、不揮発性メモリ３２に退避されていたデータを、バッテリ３６の充電容量に応じて段階的にキャッシュメモリ４４に戻すことができる。
【００８５】
この際、メモリコントローラ７０は、電源７８の復電時に、キャッシュメモリ４４の記憶領域のうち使用可能な記憶領域を、バッテリ３６の充電容量に応じて算出し、この算出された使用可能な記憶領域を基にキャッシュメモリ４４に戻すためのデータのデータ容量を設定することができる。
【００８６】
なお、メモリコントローラ７０が、バッテリ３６のバッテリ容量を計測するものについて述べたが、メモリコントローラ７０の代わりに、バッテリ３６のバッテリ容量を計測するバッテリコントローラを設け、バッテリコントローラの計測結果をメモリコントローラ７０に転送し、メモリコントローラ７０が、バッテリコントローラの計測結果を基にバッテリ容量に応じて書込み可能な記憶領域を算出する構成を採用することもできる。
【符号の説明】
【００８７】
１０  ストレージシステム、１２  ホスト計算機、１４、１６  ディスクコントロールモジュール、１８、２０  ディスクユニットモジュール、２２  ネットワーク、２４  ホストインタフェース、２６  HDDインタフェース、２８  スイッチ、３０  揮発性メモリ、３２  不揮発性メモリ、３４、３６  バッテリ、３８  マイクロプロセッサ、４０  記憶装置、４４  キャッシュメモリ、４６  共有メモリ
【図１】
0005475123.tif 000002
【図２】
0005475123.tif 000003
【図３】
0005475123.tif 000004
【図４】
0005475123.tif 000005
【図５】
0005475123.tif 000006
【図６】
0005475123.tif 000007
【図７】
0005475123.tif 000008
【図８】
0005475123.tif 000009
【図９】
0005475123.tif 000010
【図１０】
0005475123.tif 000011
【図１１】
0005475123.tif 000012
【図１２】
0005475123.tif 000013
【図１３】
0005475123.tif 000014
【図１４】
0005475123.tif 000015
【図１５】
0005475123.tif 000016
【図１６】
0005475123.tif 000017