(57)【要約】【課題】ストレージシステムにおいて、大容量の制御データを低価格かつ高性能で扱うことを目的とする。【解決手段】計算機１からディスクアレイ２に対して読み書きされるデータを一時的に格納するキャッシュメモリ１０１と、データ転送に関する制御を行うＣＰＵ１０４と、ＣＰＵ１０４が利用する制御データを格納するローカルメモリ１００と、を有し、ディスクアレイ２は、ユーザデータを格納する第１のユーザデータ格納部６１と、全ての制御データを格納する制御データ格納部６２を備え、制御部は、制御データ格納部６２の記憶領域を、ＣＰＵ１０４からアクセス可能な仮想アドレスに割り当て、前記仮想アドレスで指定された制御データをローカルメモリ１００の物理アドレスに読み込んでからＣＰＵ１０４に制御データを受け渡す仮想化部と、を備える。【選択図】図１
2008090657.tif 000002
【特許請求の範囲】
【請求項１】
計算機に接続される第１のインターフェースと、
データを格納するディスクドライブに接続される第２のインターフェースと、
前記ディスクドライブに対して読み書きされるデータを格納するキャッシュメモリと、
前記第１のインターフェースと第２のインターフェース及び前記キャッシュメモリの間のデータ転送に関する制御を行うプロセッサを備えた制御部と、
前記プロセッサが制御のために用いる制御データを格納するローカルメモリと、を有するストレージシステムであって、
前記ディスクドライブは、
前記ユーザデータを格納する第１のユーザデータ格納部と、
前記プロセッサが利用する制御データを格納する第１の制御データ格納部と、を備え、
前記制御部は、
前記第１の制御データ格納部の記憶領域を、前記プロセッサからアクセス可能な仮想アドレスに割り当て、前記仮想アドレスで指定された制御データを前記ローカルメモリの物理アドレスに読み込んでから前記プロセッサに前記制御データを受け渡す仮想化部と、
を備えたことを特徴とするストレージシステム。
【請求項２】
前記仮想化部は、
前記第１の制御データ格納部の記憶領域を、前記プロセッサからアクセス可能な仮想アドレスに割り当てる仮想アドレス設定部と、
前記仮想アドレスと前記ローカルメモリの物理アドレスを変換する仮想アドレス変換部と、
前記プロセッサが前記制御データの読み込みまたは書き込みを要求したときに、前記第１の制御データ格納部に格納された制御データを前記ローカルメモリへ転送する制御データ転送部と、
前記ローカルメモリに転送された制御データを、前記仮想アドレス変換部でローカルメモリの物理アドレス空間を仮想アドレスに変換して前記プロセッサに受け渡す制御データアクセス部と、
を有することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記キャッシュメモリは、
前記ユーザデータを格納する第２のユーザデータ格納部と、
前記制御データを格納する第２の制御データ格納部と、を備え、
前記仮想化部は、
前記第２の制御データ格納部の制御データの格納位置と前記仮想アドレスとの間で変換を行って、前記仮想アドレスで指定された制御データを前記第２の制御データ格納部から前記ローカルメモリの物理アドレスに読み込んだ後に前記プロセッサへ前記制御データを受け渡すことを特徴とする請求項１に記載のストレージシステム。
【請求項４】
前記仮想化部は、
前記仮想アドレスと前記キャッシュメモリの格納位置とを変換する第２の仮想アドレス変換部と、
前記プロセッサが前記制御データの読み込みまたは書き込みを要求したときに、前記第２の制御データ格納部に格納された制御データを前記ローカルメモリへ転送する第２の制御データ転送部と、
を有することを特徴とする請求項３に記載のストレージシステム。
【請求項５】
前記制御部は、
前記キャッシュメモリ上で第２のユーザデータ格納部と第２の制御データ格納部の比率を設定する資源分割管理部を含むことを特徴とする請求項３に記載のストレージシステム。
【請求項６】
前記制御データ転送部は、
前記ローカルメモリの制御データ格納部に格納された制御データが更新されたときには、当該ローカルメモリの制御データを前記第１の制御データ格納部へ書き戻すことを特徴とする請求項１に記載のストレージシステム。
【請求項７】
前記制御データ転送部は、
前記ローカルメモリの制御データ格納部に格納された制御データが更新されたときには、当該ローカルメモリの制御データを前記第２の制御データ格納部へ書き戻すことを特徴とする請求項３に記載のストレージシステム。
【請求項８】
前記第２の仮想アドレス変換部は、
前記仮想アドレスと前記キャッシュメモリの格納位置との対応関係を設定するキャッシュメモリ管理情報を含み、
前記制御部は、前記キャッシュメモリ管理情報を前記キャッシュメモリへ複写する第１のバックアップ部を有することを特徴とする請求項３に記載のストレージシステム。
【請求項９】
前記資源分割管理部は、
前記キャッシュメモリ上の第２のユーザデータ格納部と第２の制御データ格納部の比率を格納する資源分割管理情報を含み、
前記制御部は、前記資源分割管理情報を前記キャッシュメモリへ複写する第２のバックアップ部を有することを特徴とする請求項５に記載のストレージシステム。
【請求項１０】
前記制御部は、複数のプロセッサと、複数のローカルメモリとを備え、第１のローカルメモリの内容を、第２のローカルメモリに退避する第３のバックアップ部を有することを特徴とする請求項１に記載のストレージシステム。
【請求項１１】
計算機からの要求に応じてデータの読み書きを行うディスクドライブと、前記ディスクドライブに対して読み書きされるデータを格納するキャッシュメモリと、前記キャッシュメモリとディスクドライブのアクセスを行うプロセッサを備えて、前記プロセッサが制御のために用いる制御データをローカルメモリに格納するストレージシステムの制御方法であって、
前記ディスクドライブは、前記ユーザデータを格納する第１のユーザデータ格納部と、前記プロセッサが利用する制御データを格納する第１の制御データ格納部と、を備え、
前記第１の制御データ格納部の記憶領域を、前記プロセッサからアクセス可能な仮想アドレスに割り当てる処理と、
前記仮想アドレスで指定された制御データを物理アドレスで指定される前記ローカルメモリの領域に読み込む処理と、
前記ローカルメモリに読み込まれた制御データを前記プロセッサに受け渡す処理と、
を含むことを特徴とするストレージシステムの制御方法。
【請求項１２】
前記第１の制御データ格納部の記憶領域を、前記プロセッサからアクセス可能な仮想アドレスに割り当てる処理は、
前記仮想アドレスと前記ローカルメモリの物理アドレスとの対応関係を設定する処理を含み、
前記仮想アドレスで指定された制御データを物理アドレスで指定される前記ローカルメモリの領域に読み込む処理は、
前記プロセッサが前記制御データの読み込みまたは書き込みを要求したときに、前記仮想アドレスと物理アドレスの対応関係に基づいて、前記第１の制御データ格納部に格納された制御データを前記ローカルメモリへ転送する処理を含むことを特徴とする請求項１１に記載のストレージシステムの制御方法。
【請求項１３】
前記キャッシュメモリは、前記ユーザデータを格納する第２のユーザデータ格納部と、前記制御データを格納する第２の制御データ格納部と、を備え、
前記仮想アドレスで指定された制御データを物理アドレスで指定される前記ローカルメモリの領域に読み込む処理は、
前記第２の制御データ格納部の制御データの格納位置と前記仮想アドレスとの間で変換を行って、前記仮想アドレスで指定された制御データを前記第２の制御データ格納部から前記ローカルメモリの領域に読み込む処理を含むことを特徴とする請求項１１に記載のストレージシステムの制御方法。
【請求項１４】
前記仮想アドレスと前記キャッシュメモリの格納位置との対応関係を設定する処理をさらに含み、
前記仮想アドレスで指定された制御データを物理アドレスで指定される前記ローカルメモリの領域に読み込む処理は、
前記プロセッサが前記制御データの読み込みまたは書き込みを要求したときに、前記第２の制御データ格納部に格納された制御データを前記ローカルメモリへ転送することを特徴とする請求項１３に記載のストレージシステムの制御方法。
【請求項１５】
前記キャッシュメモリ上で第２のユーザデータ格納部と第２の制御データ格納部の比率を設定する処理をさらに含むことを特徴とする請求項１３に記載のストレージシステムの制御方法。
【請求項１６】
前記ローカルメモリの制御データ格納部に格納された制御データが更新されたときには、当該ローカルメモリの制御データを前記第１の制御データ格納部へ書き戻す処理をさらに含むことを特徴とする請求項１１に記載のストレージシステムの制御方法。
【請求項１７】
前記ローカルメモリの制御データ格納部に格納された制御データが更新されたときには、当該ローカルメモリの制御データを前記第２の制御データ格納部へ書き戻す処理をさらに含むことを特徴とする請求項１３に記載のストレージシステムの制御方法。
【請求項１８】
前記仮想アドレスと前記キャッシュメモリの格納位置との対応関係を設定する処理は、前記仮想アドレスと前記キャッシュメモリの格納位置との対応関係をキャッシュメモリ管理情報に設定する処理を含み、
前記キャッシュメモリ管理情報を前記キャッシュメモリへ複写する処理をさらに含むことを特徴とする請求項１３に記載のストレージシステムの制御方法。
【請求項１９】
前記キャッシュメモリ上で第２のユーザデータ格納部と第２の制御データ格納部の比率を設定する処理は、
前記キャッシュメモリ上の第２のユーザデータ格納部と第２の制御データ格納部の比率を資源分割管理情報に格納する処理を含み、
前記資源分割管理情報を前記キャッシュメモリへ複写する処理をさらに含むことを特徴とする請求項１５に記載のストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを複数の磁気ディスク装置に格納するストレージシステムに関する。
【背景技術】
【０００２】
複数の磁気ディスク装置から構成されるディスクアレイでサブシステムを構成し、データを前記ディスクアレイに格納する、いわゆるストレージシステムが知られている。
【０００３】
ストレージシステムは、ホストインターフェースとディスクインターフェースと、キャッシュメモリと、制御部と、これらの間を接続するスイッチ部で構成される。制御部は、例えばプロセッサと前記プロセッサの制御データを格納するための制御メモリで構成される。ストレージシステムは、ホストインターフェースを介してホストコンピュータと、ディスクインターフェースを介してディスクアレイと接続される。ストレージシステム内は、ホストコンピュータとの接続を行う前記ホストインターフェース、ディスクアレイとの接続を行う前記ディスクインターフェース、ディスクアレイのデータアクセスを高速に行うためのキャッシュメモリ、ストレージステムの制御を行うＣＰＵ、ストレージシステム内部の各部を接続するためのスイッチ、ＣＰＵが前記制御に必要とするデータを格納するための制御メモリ、ＣＰＵが制御メモリにアクセスする際に用いる信号線で構成される。
【０００４】
銀行、証券、電話会社等に代表される大企業では、従来各所に分散していたコンピュータ及びストレージシステムを、データセンターの中に集中化したコンピュータシステム及びストレージシステム構成とすることにより、コンピュータシステム及びストレージシステムの運用、保守、管理に要する費用を削減する傾向にある。そのため一台のストレージシステムで、より大規模のデータを管理する必要が生じている。
【０００５】
また、ストレージシステムの多機能化により、実際にホストコンピュータから送られてくるユーザーデータに比べ、制御データの割合が大きくなる傾向にある。
【０００６】
従来のストレージシステムでは、制御データを全て、キャッシュメモリと独立した制御部の制御メモリに格納するものが知られている（例えば、特許文献１）。
【０００７】
一方、汎用サーバ機を用いたストレージシステムでは、制御データの退避先として、専用のインターフェース及びハードディスクを備え、制御メモリの容量よりも大きな制御データを扱うことができるストレージシステムも知られいる（非特許文献１）。
【特許文献１】特開２００４−２４０９４９
【非特許文献１】「The IBM TotalStorage DS8000 Series Concepts and Architecture」、第６４頁６行目、[online]、「平成１８年８月３１日検索」、インターネット＜http://www.redbooks.ibm.com/redbooks/pdfs/sg246452.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記のように制御データの量が増大していくと、上記特許文献１のようにキャッシュメモリから独立した制御メモリを設けるストレージシステムでは、制御メモリの容量不足でストレージシステムの管理規模を大きくできないという問題があった。
【０００９】
一方、制御メモリを大容量化して、必要な制御データを全て制御メモリに置くことは可能である。しかしながら、制御メモリの容量あたりの価格は高価であり、制御メモリを大容量化するとストレージシステムを低価格で提供することが困難になるという問題があった。
【００１０】
また、非特許文献１に見られる汎用サーバ機を用いた構成では、制御メモリの容量よりも大きな制御データを扱うことができるが、制御データの退避先として、専用のインターフェース及びハードディスクを用意する必要があり、ストレージシステムを低価格で提供することが困難になるという問題があった。
【００１１】
そこで、本発明が解決しようとする課題は、ストレージシステムにおいて、大容量の制御データを低価格かつ高性能で扱うことを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、計算機に接続される第１のインターフェースと、データを格納するディスクドライブに接続される第２のインターフェースと、前記ディスクドライブに対して読み書きされるデータを格納するキャッシュメモリと、前記第１のインターフェースと第２のインターフェース及び前記キャッシュメモリの間のデータ転送に関する制御を行うプロセッサを備えた制御部と、前記プロセッサが制御のために用いる制御データを格納するローカルメモリと、を有するストレージシステムであって、
前記ディスクドライブは、前記ユーザデータを格納する第１のユーザデータ格納部と、前記プロセッサが利用する制御データを格納する第１の制御データ格納部と、を備え、前記制御部は、前記第１の制御データ格納部の記憶領域を、前記プロセッサからアクセス可能な仮想アドレスに割り当て、前記仮想アドレスで指定された制御データを物理アドレスで指定される前記ローカルメモリの領域に読み込んでから前記プロセッサに前記制御データを受け渡す仮想化部と、を備える。
【発明の効果】
【００１３】
したがって、本発明は、ストレージシステムに搭載されている制御データを格納するローカルメモリの容量が少ない場合においても、大量の制御データを扱うことが可能となる。一方、制御部からは、大きなローカルメモリが存在するかのように仮想化を行うことが可能となる。制御部で実行するプログラムが、多くの機能を持つ制御プログラムであっても、容易に本発明の制御メモリ仮想化機能を用いることができる。その結果、ローカルメモリの容量を増大する必要がないので、低コストかつ、高機能なストレージシステムを提供することが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１５】
＜第１実施形態＞
第一の実施形態は、キャッシュメモリを内部に持ち、ＣＰＵ（プロセッサ）がデータ転送の制御を行うストレージシステムにおいて、前記データ転送を行うための管理情報である制御データを２台以上のディスクドライブで構成されるディスクアレイ上に格納し、制御プログラムからの要求に応じてファームウェアが適宜ディスクアレイ-ローカルメモリ間でデータ転送を行う例である。
【００１６】
図１に本実施形態の全体構成を示す。ストレージシステム１は、ホストアダプタ１０２を介してホストコンピュータ３と接続され、また、ディスクアダプタ１０３を介してディスクアレイ２と接続されている。なお、ホストアダプタ１０２はチャネルインターフェースであり、ディスクアダプタ１０３は、ディスクインターフェースである。
【００１７】
ストレージシステム１内は、ホストコンピュータ３との接続を行うホストアダプタ１０２と、ディスクアレイ２との接続を行うディスクアダプタ１０３と、ディスクアレイ２のデータアクセスを高速に行うためのキャッシュメモリ１０１と、ストレージステム１の制御を行うＣＰＵ１０４と、ストレージシステム１内部の各部を相互に接続するためのスイッチ１０５と、ＣＰＵ１０４が動作に用いるローカルメモリ１００と、ＣＰＵ１０４がローカルメモリ１００へアクセスする際にアドレスを指定する仮想アドレス信号線１０６と、ＣＰＵ１０４から渡された仮想アドレス（または論理アドレス）を物理アドレスに変換するＭＭＵ（Memory Management Unit）１０７と、ＭＭＵ１０７がローカルメモリ１００に対してアクセスするアドレスを指定する物理アドレス信号線１０８と、ＣＰＵ１０４とローカルメモリ１００の間でデータを受け渡しするためのデータ信号線１０９と、ＣＰＵ１０４が要求したデータ（ユーザデータまたは制御データ）がローカルメモリ１００上に存在しない時には、データが存在しないことを割り込み信号によりＣＰＵ１０４に通知するための割り込み信号線１１０で構成される。
【００１８】
以下では本実施形態に含まれる記憶媒体であるディスクアレイ２、キャッシュメモリ１０１、ローカルメモリ１００について、それぞれの内容について説明する。
【００１９】
ディスクアレイ２は、ホストコンピュータ３から送信されたユーザデータを格納するユーザーデータ格納部６１と、ストレージシステム１が扱う制御データを格納するための制御データ格納部６２を持つ。
【００２０】
ここで、制御データとは、例えば、ストレージシステム１がディスクアレイ２のユーザデータ格納部６１の領域についてスナップショットを作成する際に使用するビットマップや、リモートコピーを行うストレージシステム１が差分データのみ送信するときに演算する差分データなど、所定の処理を実行する際に、後述のストレージ制御プログラム４２が生成または利用するデータを示す。
【００２１】
なお、ユーザデータは、ホストコンピュータ３等から送られてきたデータで、ホストコンピュータ３のアプリケーションなどから読み書きされるデータである。
【００２２】
キャッシュメモリ１０１は、ホストコンピュータ３からのユーザデータを格納するユーザーデータ格納部５１を持つ。
【００２３】
ローカルメモリ１００は、ファームウェアプログラム４１と、ストレージ制御プログラム４２と、制御データ格納部４３と、ページテーブル４４と、ローカルメモリ未使用ページリスト４５を格納する。以下で、それぞれの概要について説明する。
【００２４】
ファームウェアプログラム４１は、ＣＰＵ１０４で実行されて、本発明で行う制御メモリ空間の仮想化を行う。
【００２５】
ストレージ制御プログラム４２は、ＣＰＵ１０４で実行され、ホストコンピュータ３からの要求に応じて、ストレージシステム１及びディスクアレイ２の制御を行うためのプログラムである。
【００２６】
制御データ格納部４３は、ストレージ制御プログラム４２が扱う制御データの一部を格納する物理的な記憶領域である。この制御データ格納部４３の領域に格納された制御データは、ストレージ制御プログラム４２からファームウェアプログラム４１が管理するＭＭＵ１０７を介してアクセスされる。
【００２７】
ページテーブル４４は、制御プログラム４２が扱う論理アドレス（仮想アドレス）とローカルメモリ１００に割り当てられた物理アドレスの変換を行うと共に、仮想化された制御データ空間の該当するデータが制御データ格納部４３に存在するかどうかの情報を格納する。このテーブル４４はＭＭＵ１０７及びファームウェアプログラム４１によって参照される。
【００２８】
ローカルメモリ未使用ページリスト４５は、制御データ格納部４３について、現在使われていない領域を管理するための情報を持つ。
【００２９】
本発明によって実現される制御情報仮想化の対応関係を図２に示す。ディスクアレイ２上の制御データ格納部６２の容量が、ローカルメモリ１００内の制御データ格納部４３より大きい構成において、ファームウェアプログラム４１が適宜前述の制御データ格納部４３、６２間でデータの転送を行うことにより、ディスクアレイ２上の制御データ格納部６２と同じ容量の仮想制御メモリ空間を、ストレージ制御プログラム４２に対して提供する。これによって、ストレージ制御プログラム４２は、ローカルメモリ１００の容量に制約されることなく、大量の制御データを扱うことができる。すなわち、ファームウェアプログラム４１は、ディスクアレイ２上の制御データ格納部６２の記憶空間（または記憶領域）を、ＣＰＵ１０４がアクセス可能な仮想アドレス空間（または論理アドレス空間）に割り当てる。そして、ファームウェアプログラム４１は、仮想アドレス空間のうち必要な制御データのみを物理的なメモリ空間であるローカルメモリ１００の制御データ格納部４３に読み込んでおき、ストレージ制御プログラム４２からの読み書きを実行させる。
【００３０】
ストレージ制御制御プログラム４２は、制御データ格納部４３に対してアクセスを行うために、ディスクアレイ２上の制御データ格納部６２と同じ大きさの仮想制御メモリ空間の仮想アドレスを用いてローカルメモリ１００へのアクセスを行い、ストレージシステム１の制御を行う。ローカルメモリ１００の制御データ格納部４３にはディスクアレイ２の制御データ格納部６２の制御データの一部のみが格納されており、ストレージ制御プログラム４２がアクセスを試みた目的のデータがローカルメモリ１００に存在するならば、そのままローカルメモリ１００の該当部分へのアクセスを行い、ストレージ制御プログラム４２の処理を継続する。もし目的のデータがローカルメモリ１００に存在しない場合には、割り込み信号線１１０を用いてファームウェアプログラム４１の仮想記憶処理機能４１０１を呼び出し、ストレージ制御プログラム４２が要求するデータを、ディスクアレイ２上の制御データ格納部６２からローカルメモリ１００上の制御データ格納部４３に取り出す。
【００３１】
その後、ファームウェアプログラム４１からストレージ制御プログラム４２へ処理を戻し、ストレージ制御プログラム４２に対してはあたかも初めから求めた情報がローカルメモリ１００上の制御データ格納部４３に存在したかのように見せかける。ファームウェアプログラム４１はこれらの制御データがどのメモリまたはディスクアレイのどの場所に格納されているかを管理する。
【００３２】
これらの資源間での転送は一定長の仮想アドレス空間である仮想ページ単位で行われる。仮想ページ０〜Ｎ（仮想ページ番号）はディスクアレイ２上の制御データ格納部６２内で対応するブロック０〜Ｎ（ブロック番号）上に加え、必要に応じてローカルメモリ１００上の制御データ格納部４３の物理ページに格納される。
【００３３】
ファームウェアプログラム４１は、ディスクアレイ２に設定した制御データ格納部６２の記憶容量に等しい仮想アドレス空間で、ストレージ制御プログラム４２からメモリアクセスを受け付けて、要求された制御データがローカルメモリ１００上に存在しないときにはディスクアレイ２の制御データ格納部６２から読み込んでローカルメモリ１００上の制御データ格納部４３に書き込んでからストレージ制御プログラム４２へ該当制御データを受け渡す。これにより、小容量のローカルメモリ１００上に確保した制御データ格納部４３で、ディスクアレイ２の制御データ格納部６２の大容量の記憶領域を扱うことを実現するのである。
【００３４】
ファームウェアプログラム４１が持つ機能を図３に示す。ファームウェアプログラム４１は、ストレージ制御プログラム４２からの要求に応じてローカルメモリ１００−ディスクアレイ２間でのデータ転送を行う仮想記憶処理機能４１０１と、ローカルメモリ１００へ目的とする制御データをディスクアレイ２の制御データ格納部６２から取り出すローカルメモリへのデータ転送機能４１０２と、ローカルメモリ１００に制御データの格納場所を確保するローカルメモリ空き物理ページ確保機能４１０３、ローカルメモリ１００上の制御データ格納部４３の一部を未使用領域にするローカルメモリ物理ページ解放機能４１０４を持つ。
【００３５】
ディスクアレイ２内の制御データ格納部６２は図４に示すように構成される。制御データ格納部６２２は一定の大きさであるブロックに区切られており、所定の順序でブロック番号６２１が付けられている。制御データ格納部６２に対するデータの読み出し及び書き込みは、このブロック番号６２１を用いてブロック単位で行う。
【００３６】
ローカルメモリ１００上の制御データ格納部４３は、図５に示すように構成される。ローカルメモリ１００上の制御データ格納部４３は一定の大きさの物理ページに区切られており、所定の順序で物理ページ番号４３１が付けられている。
【００３７】
ページテーブル４４は、図６に示すように構成される。ページテーブル４４は、仮想ページ番号４４１毎にテーブルエントリが存在し、該当ページがローカルメモリ１００上に存在するかどうかを示すローカルメモリ存在フラグ４４２と、ローカルメモリ１００に存在する場合にはその場所を示す物理ページ番号４４３と、該当ページがディスクアレイ２の制御データ格納部６２から読み出された後に更新されているかどうかを示す更新フラグ４４４を持つ。
【００３８】
ローカルメモリ未使用ページリスト４５は、図７に示すように構成される。ローカルメモリ１００上の制御データ格納部４３の各物理ページのうち、有効なデータが格納されていない物理ページのページ番号を記録する。
【００３９】
以下では本発明の特徴である制御メモリの仮想化を行うファームウェアプログラム４１について、フローチャートを参照しながら説明する。
【００４０】
図８は、ストレージ制御プログラム４２が制御データ格納部４３を参照する場合のフローチャートである。ストレージ制御プログラム４２のローカルメモリ１００の制御データ格納部４３への参照は、ストレージ制御プログラム４２が仮想アドレス（仮想ページ番号４４１）を指定して、ＣＰＵ１０４がメモリアクセス命令を実行する（ステップ４２０１１）。この時に指定した仮想アドレスは、図１に示したアドレス信号線１０６を通じてＭＭＵ１０７に渡される。ＭＭＵ１０７は、ストレージ制御プログラム４２から渡された仮想アドレスから該当する仮想ページ番号を計算し、ページテーブル４４から、仮想ページ番号４４１に対応するエントリを検索する（ステップ１０７１）。
【００４１】
その後、ＭＭＵ１０７は、該当エントリの存在フラグ４４２を参照する（ステップ１０７２）。もしフラグがＹで該当するエントリがローカルメモリ１００の制御データ格納部４３上にある場合には、次にストレージ制御プログラム４２が発行したアクセスがリードかライトかを調べる（ステップ１０７３）。このアクセスがリードであれば、前記ページテーブル４４の該当エントリの物理ページ番号４４３から対応するローカルメモリ１００の物理アドレスを計算し、ＭＭＵ１０７は物理アドレス信号線１０８を用いて該当するローカルメモリ１００の物理アドレスへのアクセスを発行する（ステップ１０７５）。
【００４２】
一方、ステップ１０７３においてアクセス種別がライトだった場合、次に前記ページテーブル４４の該当エントリの更新フラグ４４４を参照する（ステップ１０７４）。参照の結果、更新フラグ４４４がＹだった場合、前記リードアクセスの時と同様、ＭＭＵ１０７は対応する物理アドレスへアクセスを発行する（ステップ１０７５）。ステップ１０７４での参照の結果、更新フラグがNであった場合には、ページテーブル４４の更新フラグ４４４を変更する必要があるので、ＭＭＵ１０７は割り込み信号線１１０を用いてファームウェアプログラム４１の仮想記憶処理機能４１０１を呼び出す（ステップＳ４１０１）。その後、再度ステップ１０７１から、ＭＭＵ１０７の処理を行う。
【００４３】
一方、ステップ１０７２において、該当エントリの存在フラグ４４２がＮだった場合には、アクセスを試みた制御データはそもそもローカルメモリ１００上の制御データ格納部４３に存在しないので、ＭＭＵ１０７はファームウェアプログラム４１の仮想記憶処理機能を呼び出す（ステップＳ４１０１）。その後、ＭＭＵ１０７は再度ページテーブルの検索（ステップ１０７１）から処理を行う。
【００４４】
ここで、本実施形態ではＭＭＵ１０７がページテーブル４４を参照して制御データの有無及び更新の有無を判定しているが、ＭＭＵ１０７の代わりにＣＰＵ１０４上で動作するプログラムが同様の判定を行っても本発明の効果が得られることは言うまでもない。
【００４５】
図９は、ファームウェアプログラム４１が持つ仮想記憶処理機能４１０１の内容を示すフローチャートである。この機能はストレージ制御プログラム４２が制御メモリを参照した際にＭＭＵ１０７によって呼び出される。まず、ＭＭＵ１０７からこの仮想記憶処理機能４１０１が呼び出された要因を調べる（ステップ４１０１１）。もし呼び出し要因がストレージ制御プログラム４２による未更新領域への書き込みであった場合には、ページテーブル４４の該当エントリの更新フラグ４４４をＹに変更し（ステップ４１０１２）、呼び出し元へ処理を戻す。
【００４６】
一方、ステップ４１０１１で調べた呼び出し要因が、ローカルメモリ１００上の制御データ格納部４３に存在しない仮想ページへのアクセスだった場合には、ディスクアレイ２上の制御データ格納部６２からローカルメモリ１００上の制御データ格納部４３へのデータ転送機能４１０２を呼び出した後（ステップＳ４１０２）に、呼び出し元へ処理を戻す。
【００４７】
図１０は、ローカルメモリ１００上の制御データ格納部４３に存在しない仮想ページを、ディスクアレイ２上の制御データ格納部６２からローカルメモリ１００上の制御データ格納部４３へと転送するデータ転送機能４１０２で行われる処理の一例を示すフローチャートである。
【００４８】
まず、ローカルメモリ１００上の制御データ格納部４３の未使用物理ページを転送先として確保する空き物理ページ確保機能４１０３を呼び出す（ステップＳ４１０３）。確保機能の詳細については後で述べる。その後、ディスクアレイ２上の制御データ格納部６２の仮想ページ番号４４１に対応するブロックから、ローカルメモリ１００の前記物理ページへの転送を行う（ステップ４１０２１）。その後、ページテーブル４４の該当エントリの更新を行う。具体的には、まずページテーブル４４から、転送を行った仮想ページ番号４４１に対応するエントリを検索する（ステップ４１０２２）。その後、検索したエントリの物理ページ番号４４３に、転送先の物理ページ番号４４３を書きこむ（ステップ４１０２３）。その後、前記エントリの更新フラグ４４４をＮに設定し（ステップ４１０２４）、最後に存在フラグ４４２をＹに設定する（ステップ４１０２５）。
【００４９】
以上の処理で目的とする制御データのローカルメモリ１００上の制御データ格納部４３への転送と、及び、ページテーブル４４の更新が終わったので、呼び出し元に制御を戻す。
【００５０】
図１１は、ローカルメモリ１００上の制御データ格納部４３の未使用物理ページを確保する空き物理ページ確保機能４１０３のフローチャートである。まず、ローカルメモリ未使用ページリスト４５が空かどうか判定（ステップ４１０３１）し、もし空の場合には未使用物理ページが存在しないのでローカルメモリ物理ページ解放機能４１０４を呼び出す（ステップＳ４１０４）。このステップＳ４１０４で行われる処理の詳細については後述する。その後、ステップ４１０３１に戻る。もし、ステップ４１０３１においてローカルメモリ未使用ページリスト４５が空でなかった場合には、その中からローカルメモリ１００の未使用ページ（物理ページ）を一つ選び（ステップ４１０３２）、ローカルメモリ未使用ページリスト４５から、選んだページを削除する（ステップ４１０３３）。そして、選んだページ番号（物理ページ番号）を呼び出し元に返す。
【００５１】
以上の処理により、ローカルメモリ１００に未使用の物理ページがあれば、この物理ページを制御データ格納部４３に割り当てるために確保する。
【００５２】
図１２は、上記図１１のステップＳ４１０４で実行されるローカルメモリ物理ページ解放機能４１０４のフローチャートである。この機能は、ローカルメモリ１００の制御データ格納部４３へ割り当てられている領域のうち使われている物理ページを解放し、別の制御データを格納できるようにするものである。
【００５３】
まず、物理ページを一つ選ぶ（ステップ４１０４１）。そして、ページテーブル４４を検索し前記物理ページを使用している仮想ページ、即ち物理ページ番号４４３が前記物理ページに一致するエントリを検索する（ステップ４１０４２）。次に、前記エントリの更新フラグ４４４を調べ（ステップ４１０４３）、もし更新フラグがＮであれば、同じデータは必ずディスクアレイ２の制御データ格納部６２に存在することになるので、該当データは破棄して差し支えない。そこで、前記エントリの存在フラグ４４２をＮに設定（ステップ４１０４５）し、ローカルメモリ未使用ページリスト４５に、前記物理ページの番号を追加する（ステップ４１０４６）。その後、処理を呼び出し元に戻す。
【００５４】
一方、ステップ４１０４３において更新フラグ４４４がＹであった場合は、ローカルメモリ１００上で制御データが更新されているので、ディスクアレイ２上の制御データ格納部６２の仮想ページ番号に対応するブロックへ該当物理ページを書き戻す（ステップ４１０４４）。その後、上述したステップ４１０４５以降を処理する。
【００５５】
以上によって、ストレージ制御プログラム４２が参照するデータをローカルメモリ１００に取り出すと共に、参照されなくなったデータをディスクアレイ２上の制御データ格納部６２へ書き戻し、制御メモリの仮想化が実現できる。
【００５６】
仮想制御メモリ空間へのアクセスは、次のようになる。全ての制御データをディスクアレイ２の制御データ格納部６２へ格納しておく。ストレージ制御プログラム４２が制御データ格納部４３をアクセスすると、ファームウェアプログラム４１は、ディスクアレイ２の制御データ格納部６２からローカルメモリ１００の制御データ格納部４３へ目的の制御データを読み込む。そして、ファームウェアプログラム４１は、仮想アドレスによって指示された制御データをストレージ制御プログラム４２に与える。
【００５７】
ファームウェアプログラム４１は、仮想アドレスで指定された制御データを、仮想ページ番号に変換してページテーブル４４を参照して物理ページ番号４４３に対応するローカルメモリ１００の制御データ格納部４３またはディスクアレイ２の制御データ格納部６２からローカルメモリ１００から読み込んで、ストレージ制御プログラム４２に受け渡す。
【００５８】
このように、容量の少ないローカルメモリ１００であっても、本発明のような仮想制御メモリ空間を採用することにより、大量の制御データを扱うことが可能となる。一方、ストレージ制御プログラム４２からは、アクセスする仮想アドレスが大きな制御用メモリが存在するかのように見えるため、多くの機能を持つ制御プログラムであっても、容易に本発明の制御メモリ仮想化機能を用いることができる。その結果、低コストかつ、高機能なストレージシステム１を実現することが可能となる。
【００５９】
＜第２実施形態＞
図１３は、第２の実施形態を示し、前記第１実施形態のファームウェアプログラム４１に、ローカルメモリ１００上の制御データ格納部４３で更新された制御データを、全てディスクアレイ２上の制御データ格納部６２に書き戻す制御データコミット機能４１０５を設けたもので、その他の構成は前記第１実施形態と同様である。
【００６０】
図１３は、本第２実施形態におけるファームウェアプログラム４１が持つ機能を示し、前記第１実施形態の図３に示したファームウェアプログラム４１に、ローカルメモリ１００上の制御データを全てディスクアレイ２上の制御データ格納部６２へ書き戻す制御データコミット機能４１０５を加えた点が本実施形態の特徴である。
【００６１】
ローカルメモリ１００の制御データ格納部４３に読み出された制御データについて、全てをディスクアレイ２の制御データ格納部６２へ書き戻すことにより、ローカルメモリ１００及びＣＰＵ１０４に障害が発生した場合でも制御データの消失を防ぐことができ、ストレージシステム１の信頼性を向上させることが可能となる。
【００６２】
図１４はファームウェアプログラム４１で実行される制御データコミット機能４１０５のフローチャートである。なお、このフローチャートは所定の周期で実行することができる。
【００６３】
まず、ページテーブル４４の最初のエントリを選び（ステップ４１０５１）、前記エントリの更新フラグ４４４を調べる（ステップ４１０５２）。もし更新フラグがＹであれば、該当エントリに対応する仮想ページはローカルメモリ１００上で更新されているので、物理ページ番号４４３に対応する物理ページから、ディスクアレイ２上の制御データ格納部６２の前記仮想ページに対応するブロックへとデータの転送を行う（ステップ４１０５３）。そして、前記エントリの更新フラグ４４４をＮに変更する(ステップ４１０５４)。
【００６４】
一方、ステップ４１０５２で更新フラグ４４４がＮだった場合と、上記ステップ４１０５３、４１０５４で書き戻しを行った後は、前記エントリがページテーブル４４の最後のエントリであるかどうかを判定し（ステップ４１０５５）、もし最後のエントリで無い場合には次のエントリを対象として（ステップ４１０５６）、ステップ４１０５２以降を繰り返す。
【００６５】
以上の処理により、ローカルメモリ１００上の制御データ格納部４３で更新された制御データを全てディスクアレイ２上の制御データ格納部６２に書き戻すことができる。
【００６６】
＜第３実施形態＞
図１５は、第３の実施形態を示し、前記第１実施形態の図１に示したキャッシュメモリ１０１にも制御データ格納部５２を設け、さらにローカルメモリ１００上にキャッシュ管理テーブル４６と、キャッシュメモリ未使用スロットリスト４７を加えたものである。その他の構成は、前記第１実施形態と同様である。
【００６７】
制御データを格納する領域をキャッシュメモリ１０１上にも設けることにより、ストレージ制御プログラム４２は、ローカルメモリ１００に加えてキャッシュメモリ１０１より高速に制御データを参照できるようになる。以下では、制御データをキャッシュメモリ１０１上にも格納する場合について、前記第１実施形態との差分を説明する。
【００６８】
本第３実施形態の構成を図１５に示す。キャッシュメモリ１０１上に制御データを格納する制御データ格納部５２を設定し、ローカルメモリ１００上にキャッシュ管理テーブル４６、キャッシュメモリ未使用スロットリスト４７を持つのが本第３実施形態の特徴である。以下で、それぞれの概要について説明する。
【００６９】
キャッシュメモリ１０１上の制御データ格納部５２は、制御データの一部を格納するための物理的な記憶領域である。
【００７０】
キャッシュ管理テーブル４６は、キャッシュメモリ１０１上の制御データ格納部５２について、仮想制御メモリ空間とキャッシュメモリ１０１上の制御データの対応関係を管理するために用いられる。
【００７１】
キャッシュメモリ未使用スロットリスト４７は、キャッシュメモリ１０１上の制御データ格納部５２について、制御データが置かれていない領域を管理するために用いられる。なお、キャッシュメモリ１０１の記憶領域は所定のデータ長のスロットにより管理される例を示す。
【００７２】
本発明によって実現される制御データ仮想化の対応関係を図１６に示す。前記第１実施形態の図２の構成に加え、キャッシュメモリ１０１上の制御データ格納部５２を、ローカルメモリ１００上の制御データ格納部４３とディスクアレイ２の制御データ格納部６２の間に設け、ディスクアレイ２上の制御データ格納部６２とローカルメモリ１００の中間のデータ格納場所として用いる。ファームウェアプログラム４１が適宜前記３種類の制御データ格納部間で制御データの転送を行う。
【００７３】
本第３実施形態のファームウェアプログラム４１が持つ機能を図１７に示す。ファームウェアプログラム４１は、前記第１実施形態の機能に加えて、キャッシュメモリ１０１からローカルメモリ１００へ制御データを転送するキャッシュメモリへのデータ転送機能４１０６と、ローカルメモリ１００からキャッシュメモリ１０１へ制御データを転送するローカルメモリ→キャッシュメモリデータ転送機能４１０７と、キャッシュメモリ１０１上で空きスロットを確保するキャッシュメモリ空きスロット確保機能４１０８と、確保したスロットを解放するキャッシュメモリスロット解放機能４１０９を持つのが本第３実施形態の特徴である。
【００７４】
キャッシュメモリ１０１上の制御データ格納部５２は、図１８に示すように構成される。制御データ格納部５２のデータ５２２は、前記ディスクアレイ２内の制御データ格納部６２と同様、一定の大きさであるスロットに区切られており、順にスロット番号５２１が付けられている。各スロット番号５２１に対応するデータ５２２には、ディスクアレイ２上の制御データ格納部６２の任意のブロックが格納される。
【００７５】
キャッシュ管理テーブル４６は、図１９に示すように構成される。キャッシュ管理テーブル４６は、仮想ページ番号４６１毎にテーブルエントリが存在し、該当ページがキャッシュメモリ１０１上に存在するかどうかを示す存在フラグ４６２と、存在する場合にキャッシュスロットのどこに存在するかを示すスロット番号４６３と、該当制御データがディスクアレイ２の制御データ格納部６２から読み出された後に更新されているかどうかを示す更新フラグ４６４を持つ。
【００７６】
キャッシュメモリ未使用スロットリスト４７は、図２０に示すように構成される。キャッシュメモリ未使用スロットリスト４７は、キャッシュメモリ１０１上の制御データ格納部５２の各スロットのうち、有効なデータが格納されていないスロット番号を記録する。
【００７７】
以下では本第３実施形態における制御メモリ仮想化機能について、前記第１実施形態１との差分をフローチャートを用いて説明する。
【００７８】
図２１は、本実施形態におけるローカルメモリへのデータ転送機能４１０２のフローチャートである。このフローチャートは、前記第１実施形態に示した図１０におけるステップ４０１２１の代わりに、ステップ４１０２６からステップ４１０２８を実行するのが本実施形態の特徴である。
【００７９】
具体的には、まずキャッシュ管理テーブル４６から、該当仮想ページに対応するエントリを検索する（ステップ４１０２６）。該当エントリの存在フラグ４６２を判定し（ステップ４１０２７）、存在フラグ４６２の値がＮであれば、該当制御データはキャッシュメモリ１０１の制御データ格納部５２に存在しないので、まずキャッシュメモリへの転送機能４１０６を呼び出し（ステップＳ４１０６）、再度ステップ４１０２６に戻る。キャッシュメモリへの転送機能４１０６については、後で詳しく述べる。
【００８０】
一方、ステップ４１０２７において、存在フラグ４６２がＹであった場合は、キャッシュメモリ１０１の制御データ格納部５２に目的とする制御データが存在するので、該当エントリのスロット番号４６３に記載されたスロットから、空き物理ページ確保機能４１０３で確保した物理ページ（ローカルメモリ１００）へデータを転送する（ステップ４１０２８）。以降のステップ４１０２２〜４１０２５は、前記第１実施形態の図１０と同様にしてページテーブル４４の更新を行う。
【００８１】
図２２は本第３実施形態におけるローカルメモリ物理ページ解放処理機能４１０４のフローチャートである。前記第１実施形態の図１２に示したステップ４１０４４の代わりにローカルメモリ→キャッシュデータ転送機能４１０７を呼び出すのが本第３実施形態の特徴である。その他の処理は、前記第１実施形態の図１２と同様である。ローカルメモリ→キャッシュデータ転送機能４１０７については、後で詳しく述べる。
【００８２】
図２３は、本第３実施形態におけるキャッシュメモリへのデータ転送機能４１０６のフローチャートである。この機能は、ある制御データについて、ディスクアレイ２上の制御データ格納部６２からキャッシュメモリ１０１上の制御データ格納部５２へと転送を行う機能である。
【００８３】
図２３において、まず、空きキャッシュスロット確保機能４１０８を呼び出す（ステップＳ４１０８）。その後、仮想ページに対応するディスクアレイ２上のブロックから、前記空きキャッシュスロットへと制御データを転送する（ステップ４１０６１）。その後、キャッシュ管理テーブル４６から、転送した仮想ページに対応するエントリを求める（ステップ４１０６２）。次に、前記エントリのスロット番号４６３に前記スロットの番号を書き込む（ステップ４１０６３）。次に前記エントリの更新フラグ４６４をＮにする（ステップ４１０６４）。最後に、前記エントリの存在フラグ４６２をＹに設定し（ステップ４１０６５）、呼び出し元に制御を戻す。キャッシュメモリ空きスロット確保機能４１０８の詳細については、後に詳しく述べる。
【００８４】
以上の処理により、キャッシュメモリ１０１の制御データ格納部５２へ、ディスクアレイ２の制御データ格納部６２の制御データが転送され、キャッシュ管理テーブル４６が更新される。
【００８５】
図２４は、本第３実施形態におけるローカルメモリ→キャッシュデータ転送機能４１０７のフローチャートである。この機能は、ローカルメモリ１００上の制御データ格納部４３で更新された制御データをキャッシュメモリ１０１上の制御データ格納部５２に書き戻す機能である。図２４において、まず、キャッシュ管理テーブル４６から、該当仮想ページに対応するエントリを検索する（ステップ４１０７１）。次に前記エントリの存在フラグ４６２を調べ（ステップ４１０７２）、存在フラグ４６２の値がＮであれば、該当データを格納するためのキャッシュスロットが存在しないので、まずキャッシュメモリ空きスロット確保機能４１０８を呼び出す（ステップＳ４１０８）。なお、キャッシュメモリ空きスロット確保機能４１０８の詳細については後で詳しく述べる。次に、キャッシュ管理テーブル前記エントリのスロット番号４６３に、確保したスロット番号を書き込む（スロット４１０７３）。次に、前記エントリの存在フラグ４６２をＹに変更する（ステップ４１０７４）。
【００８６】
以上の処理により、該当制御データの転送先がキャッシュメモリ１０１上に確保される。一方、ステップ４１０７２において前記エントリの存在フラグ４６２がＹであれば、既に該当データを格納するためのキャッシュスロットが存在するので、ステップ４１０７４までを省略する。以降、まずページテーブル４４から、該当ページに対応するエントリを検索する（ステップ４１０７５）。次に、前記エントリの物理ページ番号４４３に書かれたページから、キャッシュ管理テーブル４６の前記エントリのスロット番号４６３に書かれたスロットへ、制御データを転送する（ステップ４１０７６）。
【００８７】
次に、キャッシュ管理テーブル４６で前記エントリの更新フラグ４６４をＹに設定する（ステップ４１０７７）。最後に、ページテーブル４４の前記エントリの更新フラグ４４４をＮに設定する（ステップ４１０７８）。
【００８８】
図２５は、本実施形態におけるキャッシュメモリ空きスロット確保機能４１０８のフローチャートである。この処理は、キャッシュメモリ１０１上の空きスロットを検索し、もし空きが無い場合には制御データの一部をディスクアレイ２の制御データ格納部６２へ追い出すことにより、キャッシュメモリ１０１上に空きスロットを作る機能である。
【００８９】
図２５において、まず、未使用スロットリスト４７を検索する（ステップ４１０８１）。次に未使用スロットリスト４７が空かどうかを判定し（ステップ４１０８２）、もし空であれば、全てのキャッシュスロットが使用中であるので、キャッシュスロット解放処理機能４１０９を呼び出し、未使用キャッシュスロットを生成する。その後、ステップ４１０８１に戻る。
【００９０】
一方、上記ステップ４１０８２において未使用スロットリスト４７が空でなかった場合は、その中から未使用スロットを１つ選び（ステップ４１０８３）、選んだスロットを未使用スロットリスト４７から削除する（ステップ４１０８４）。その後、呼び出し元に制御を戻す。キャッシュスロット解放処理機能４１０９については、後で詳しく述べる。
【００９１】
以上の処理により、キャッシュメモリ１０１上の制御データ格納部５２へ割り当てるための未使用スロットが確保される。
【００９２】
図２６は、本第３実施形態におけるキャッシュメモリスロット解放処理機能４１０９のフローチャートである。本第３実施形態では、キャッシュメモリ１０１上の制御データ格納部５２に格納された制御データを、必要に応じてディスクアレイ２上の制御データ格納部６２に書き戻し、キャッシュメモリ１０１上で制御データを格納する未使用キャッシュスロットを生成する機能である。
【００９３】
図２６において、まずキャッシュスロットを一つ選ぶ（ステップ４１０９１）。次にキャッシュ管理テーブル４６を検索し、該当スロットに対応するエントリ、即ちスロット番号４６３に前記スロット番号が書かれたエントリを検索する（ステップ２１０９２）。次に、前記エントリの更新フラグ４６４を調べる（ステップ４１０９３）。もしＹであれば、該当エントリに対応する制御データはディスクアレイ２から取り出されて、ローカルメモリ１００上へた後に更新されているので、前記スロットから該当スロットを利用している仮想ページに対応するディスクアレイ２上の制御データ格納部６２のスロットへ、制御データを転送する（ステップ４１０９４）。
【００９４】
その後、前記エントリの存在フラグ４６２をＮに設定する（ステップ４１０９５）。最後に、未使用スロットリスト４７に、前記スロットを追加し（ステップ４１０９６）、呼び出し元へ制御を戻す。
【００９５】
一方、上記ステップ４１０９３で更新フラグ４６４がＮだった場合は、該当制御データはディスクアレイ２から取り出された後更新されていないので、ディスクアレイ２への書き戻しは行わず、ステップ４１０９５以降を実行する。
【００９６】
以上により、キャッシュメモリ１０１に制御データ格納部５２を設けた場合の制御メモリの仮想化を実現できる。つまり、ディスクアレイ２よりもアクセス速度及びデータ転送レートが高速なキャッシュメモリ１０１上に制御データを格納し、ストレージ制御プログラム４２からアクセス要求があり、かつ、ローカルメモリ１００の制御データ格納部４３に対象の制御データがない場合には、キャッシュメモリ１０１上の制御データ格納部５２から高速に読み込むことが可能となって、ストレージ制御プログラム４２の処理速度を向上させることができる。特に、ローカルメモリ１００よりも遙かに容量の大きいキャッシュメモリ１０１上に制御データ格納部５２を設定することで、ストレージ制御プログラム４２ｋら高速にアクセス可能な制御データの比率を増大させることができる。
【００９７】
＜第４実施形態＞
図２７は、第４の実施形態を示し、前記第３実施形態の図１５の構成に示したキャッシュメモリ１０１のうちユーザーデータ格納部５１と制御データ格納部５２の大きさを可変にするために、キャッシュメモリ割り当て機能４１１０と、キャッシュメモリ解放受付機能４１１１と、ユーザーデータ格納部５１と制御データ格納部の比率を設定する５２資源分割管理領域４８と、を設けて、限られた容量のキャッシュメモリ１０１をより効率的に利用するようにしたものである。その他の構成は、前記第３実施形態と同様である。
【００９８】
本第４実施形態におけるファームウェアプログラム４１が持つ機能は図２８の通りである。前記第３実施形態に示した図１７に加え、ストレージ制御プログラム４２へのキャッシュメモリ割り当て機能４１１０、ストレージ制御プログラム４２からのキャッシュメモリ解放受付機能４１１１を持つのが本第４実施形態の特徴である。
【００９９】
本第４実施形態における資源分割管理領域４８は図２９に示すように構成される。資源分割管理領域４８は、ファームウェアプログラム４１が利用するキャッシュメモリ１０１のスロットの範囲を決定するスロット範囲４８１と、ストレージ制御プログラム４２が利用するキャッシュメモリ１０１のスロットの範囲を決定するスロット範囲４８２を持つ。
【０１００】
ここで、ファームウェアプログラム４１が利用するスロットの範囲は、制御データ格納部５２で使用するスロットの範囲を示し、ストレージ制御プログラム４２が利用するスロットの範囲は、ユーザデータ格納部５１で使用するスロットの範囲を示す。
【０１０１】
図３０は、本第４実施形態におけるストレージ制御プログラム４２へのキャッシュメモリ割り当て機能４１１０を、ストレージ制御プログラム４２が呼び出す場合のフローチャートである。まず、ストレージ制御プログラム４２がユーザデータ格納部５１と制御データ格納部５２で使用するキャッシュメモリ１０１の全領域の大きさを指定して、ファームウェアプログラム４１へキャッシュメモリ１０１の割り当てを要求する（ステップ４２１０１）。
【０１０２】
要求を受けたファームウェアプログラム４１のキャッシュメモリ割り当て機能４１１０は、まず、ストレージ制御プログラム４２が要求した領域の大きさから、キャッシュメモリ１０１上のスロットの割り当て範囲を決定する（ステップ４１１０１）。次に、ファームウェアプログラム４１は、キャッシュ管理テーブル４６を検索し、割り当て範囲で未解放のスロットを一つ選び（ステップ４１１０２）、キャッシュスロット解放処理４１０９を呼び出す（ステップＳ４１０９）。以上を、割り当て範囲の全ての範囲について繰り返す（ステップ４１１０３）。
【０１０３】
割り当て範囲のキャッシュスロットが全て解放されたら、次に、スロットの割り当て範囲を未使用スロットリスト４７から削除する（ステップ４１１０４）。そして、資源分割管理領域４８を参照し、ファームウェアプログラム４１が利用するキャッシュメモリのスロット範囲４８１から、前記割り当て範囲を削除する（ステップ４１１０５）。そして、資源分割管理領域４８のストレージ制御プログラム４２が利用するキャッシュメモリのスロット範囲４８２に前記割り当て範囲を追加し（ステップ４１１０６）、最後にストレージ制御プログラム４２に対して実際の割り当て範囲を通知する（ステップ４１１０７）。
【０１０４】
図３１は、本第４実施形態におけるストレージ制御プログラム４２からのキャッシュメモリ解放受付機能４１１１を、ストレージ制御プログラム４２が呼び出す場合のフローチャートである。まず、ストレージ制御プログラム４２がキャッシュメモリの解放範囲を決定(ステップ４２１１１)し、解放する領域を未使用状態にする(ステップ４２１１２)。すなわち、キャッシュ管理テーブル４６のスロット番号４６３のうち解放するスロット番号について、例えば「ＮＵＬＬ」に設定して未使用とする。
【０１０５】
その後、解放処理をファームウェアプログラム４１に対して要求する(ステップ４２１１３)。要求を受けたファームウェアプログラム４１のキャッシュメモリ解放受付機能４１１１は、まず、資源分割管理領域４８のストレージ制御プログラム４２が利用するスロット範囲４８２から、前記解放範囲を削除する(ステップ４１１１１)。次に、資源分割管理領域４８のファームウェアプログラム４１が利用するスロット範囲４８１に、前記解放範囲を追加する(ステップ４２１１２)。次に前記範囲を未使用スロットリスト４７に追加する(ステップ４１１１３)。最後に、ストレージ制御プログラム４２に対して、処理完了を通知する(ステップ４１１１４)。
【０１０６】
以上の処理により、ストレージ制御プログラム４２がキャッシュメモリ１０１の割り当てを要求すると、ファームウェアプログラム４１が資源分割管理領域４８を参照して、ファームウェアプログラム４１が利用するスロットの範囲を確保した後、ストレージ制御プログラム４２で利用するスロットの範囲を確保する。したがって、資源分割管理領域４８のファームウェアプログラム４１が利用するキャッシュメモリ１０１のスロットの範囲４８１を適宜変更することによって、キャッシュメモリ１０１上のユーザデータ格納部５１の容量と、制御データ格納部５２の容量を任意に変更することができる。なお、資源分割管理領域４８の各スロットの範囲の設定は、ファームウェアプログラム４１から行うようにしても良い。
【０１０７】
＜第５実施形態＞
図３２は、第５の実施形態を示し、前記第３実施形態の図１５で示した構成に、キャッシュメモリ１０１上にキャッシュ管理テーブルバックアップ部５３を設け、ローカルメモリ１００上で更新された制御データを全てキャッシュメモリ１０１上に書き戻す機能をファームウェアプログラム４１に設けたもので、ローカルメモリ１００及びＣＰＵ１０４に障害が発生した場合でも制御データの消失を防ぐことができ、ストレージシステム１の信頼性を向上させることが可能となる。なお、その他の構成は前記第３実施形態と同様である。
【０１０８】
図３３は、本第５実施形態におけるファームウェアプログラム４１が持つ機能である。ローカルメモリ１００の制御データを全てキャッシュメモリ１０１に書き戻す制御データコミット機能４１０５と、障害からの復旧時に状態を回復するファームウェア情報復帰機能４１１２を持つのが本実施形態の特徴である。
【０１０９】
図３４は制御データコミット機能４１０５の処理の一例を示すフローチャートである。まず、ページテーブル４４の最初のエントリを選び（ステップ４１０５１）、前記エントリの更新フラグ４４４を調べる（ステップ４１０５２）。更新フラグ４４４がＹであれば、該当エントリに対応する仮想ページはローカルメモリ１００上で更新されているので、物理ページ番号４４３に対応する物理ページから、ディスクアレイ２上の制御データ格納部６２の前記仮想ページに対応するブロックへとデータの転送を行う。そして、前記エントリの更新フラグ４４４をＮにする(ステップ４１０５３)。
【０１１０】
次に、上記ステップ４１０５３でディスクアレイ２の制御データ格納部６２へ書き戻しを行った仮想ページについて、キャッシュメモリ１０１の制御データ格納部５２にも書き戻しを行う（ステップＳ４１０７）。この処理は、前記第３実施形態の図２４と同様に行われ、現在対象としている仮想ページについてキャッシュ管理テーブル４６を参照し、該当するステップ番号４６３へ書き戻す。
【０１１１】
次に、ステップ４１０５２で更新フラグ４４４がＮだった場合、またはステップＳ４１０５３，Ｓ４１０７で書き戻しを行った後は、前記エントリがページテーブル４４４の最後のエントリであるかどうかを判定し（ステップ４１０５５）、最後のエントリでない場合には次のエントリを対象として（ステップ４１０５６）、ステップ４１０５２以降を繰り返す。一方、最後のエントリの場合には、ローカルメモリ１００のキャッシュ管理テーブル４６を、キャッシュメモリ１０１のキャッシュ管理テーブルバックアップ部５３へコピーし(ステップ４１０５７)、処理を終了する。
【０１１２】
以上の処理により、ローカルメモリ１００の制御データ格納部４３で更新された制御データは、ディスクアレイ２の制御データ格納部６２とキャッシュメモリ１０１の制御データ格納部５２へ書き戻され、さらに、キャッシュ管理テーブル４６がキャッシュメモリ１０１のキャッシュ管理テーブルバックアップ部５３に保持されることになる。
【０１１３】
図３５は、ファームウェア情報復帰機能４１１２のフローチャートである。この処理は、ローカルメモリ１００やＣＰＵ１０４が障害から回復した後に実行されるもので、ストレージ制御プログラム４２から起動される。
【０１１４】
図３５において、まず、キャッシュ管理テーブルバックアップ部５３に書かれたデータをキャッシュ管理テーブル４６へ転送する（ステップ４１１２１）。次に、キャッシュメモリ未使用スロットリスト４７に、キャッシュメモリ１０１上の制御データ格納部５２の全スロットを追加する（ステップ４１１２２）。最後に、キャッシュ管理テーブル４６を検索し、存在フラグ４６２がＹのエントリについて、スロット番号４６３に書かれたスロットを、キャッシュメモリ未使用スロットリスト４７から削除する（ステップ４１１２３）。
【０１１５】
以上により、キャッシュ管理テーブル４６及びキャッシュメモリ未使用スロットリスト４７が、障害発生前の状態に復旧される。これにより、ローカルメモリ１００上のデータが消失しても、キャッシュメモリ１０１から制御データを復元することが可能となる。
【０１１６】
＜第６実施形態＞
図３６は第６の実施形態を示し、前記第５実施形態の構成に、前記第４実施形態の図２７に示した資源分割管理領域４８を加え、さらにキャッシュメモリ１０１に資源分割管理領域４８の内容を保持する資源分割管理領域バックアップ部５４を備えたものである。その他の構成は前記第４，第５実施形態と同様である。
【０１１７】
第６実施形態では、ローカルメモリ１００上で更新されたデータを全てキャッシュメモリ１０１上に書き戻すのに加え、キャッシュメモリ１０１の割り当て状態を設定する資源分割管理領域４８をキャッシュメモリ１０１へバックアップすることで、ローカルメモリ１００またはＣＰＵ１０４に障害が発生した場合でも制御データの消失を防ぎ、ユーザデータ格納部５１と制御データ格納部５２の領域を復元することが可能となって、ストレージシステム１の信頼性を向上させることが可能となる。
【０１１８】
図３６は、本第６実施形態におけるシステムの構成である。前記第５実施形態の図３２に示した構成に、キャッシュメモリ１０１上に資源分割管理領域バックアップ部５４を持つのが本発明の特徴である。
【０１１９】
図３７は、本実施形態におけるファームウェアプログラム４１が持つ機能である。制御データを全てキャッシュメモリ１０１に書き戻し、また、資源分割管理領域４８をキャッシュメモリ１０１へバックアップする制御データコミット機能４１０５と、障害からの復旧時に状態を回復するファームウェア情報復帰機能４１１２を持つのが本第６実施形態の特徴である。
【０１２０】
図３８は制御データコミット機能４１０５のフローチャートで、前記第５実施形態の図３４に示したフローチャートに、ステップ４１０５８を加えたもので、その他の構成は、前記第５実施形態の図３４と同様である。
【０１２１】
ステップ４１０５１〜４１０５７では、前記第５実施形態の図３４と同様に、更新された全ての仮想ページの内容を、ディスクアレイ２の制御データ格納部６２へ書き戻すのに加え、キャッシュメモリ１０１の制御データ格納部５２にも書き戻しておく。そして、キャッシュ管理テーブル４６を、キャッシュメモリ１０１のキャッシュ管理テーブルバックアップ部５３へコピーし(ステップ４１０５７)、最後に資源分割管理領域４８を資源分割管理領域バックアップ部５４にコピーする(ステップ４１０５８)。
【０１２２】
以上の処理によって、キャッシュメモリ１０１には、更新された全ての仮想ページの内容と、キャッシュ管理テーブル４６に加えて、キャッシュメモリ１０１の割り当て状態を管理する資源分割管理領域４８が保持される。
【０１２３】
図３９は、ファームウェア情報復帰機能４１１２のフローチャートである。まず、資源分割情報バックアップ部５４の情報を、キャッシュメモリ１０１の資源分割管理領域バックアップ部５４から資源分割情報格納部４８にコピーする（ステップ４１１２４）。次に、キャッシュ管理テーブルバックアップ部５３に書かれたデータをキャッシュ管理テーブル４６へ転送する（ステップ４１１２１）。次に、キャッシュメモリ未使用スロットリスト４７に、ファームウェアプログラム４１が利用するキャッシュメモリのスロット範囲４８１の全スロットを追加する（ステップ４１１２５）。最後に、キャッシュ管理テーブル４６を検索し、存在フラグ４６２がＹのエントリについて、スロット番号４６３に書かれたスロットを、キャッシュメモリ未使用スロットリスト４７から削除する（ステップ４１１２３）。
【０１２４】
以上により、キャッシュ管理テーブル４６と資源分割管理領域４８及びキャッシュメモリ未使用スロットリスト４７が、障害発生前の状態に復旧される。
【０１２５】
＜第７実施形態＞
図４０は、第７の実施形態を示し、前記第５実施形態の図３４のストレージシステム１内に複数のＣＰＵ１０４，１０４’、ＭＭＵ１０７，１０７’、ローカルメモリ１００，１００’を備え、さらに前記第３実施形態におけるキャッシュ管理テーブル４６を他のローカルメモリにコピーすることによって、一つのローカルメモリ１００，１００’及びＣＰＵ１０４，１０４’のいずれかに障害が発生した場合でも制御データの消失を防ぐことができ、ストレージシステム１の信頼性を向上させることが可能となる。以下では本実施形態について、前記第５実施形態との差分を説明する。
【０１２６】
図４０は、本第７実施形態におけるシステムの構成である。前記第５実施形態の図３４の構成に加え、複数のＣＰＵ及びメモリ１００、１００’と、ローカルメモリ１００、１００’上にキャッシュ管理テーブルバックアップ部４９を持つのが本発明の特徴である。
【０１２７】
図４１は、本第７実施形態におけるファームウェアプログラム４１が持つ機能である。      
【０１２８】
制御データを全てキャッシュメモリ１０１に書き戻す制御データコミット機能４１０５と、障害からの復旧時に状態を回復するファームウェア情報復帰機能４１１２を持つのが本第７実施形態の特徴である。
【０１２９】
図４２は制御データコミット機能４１０５のフローチャートで、前記第５実施形態の図３４に示したフローチャートに、ステップ４１０５８を加えたもので、その他の構成は、前記第５実施形態の図３４と同様である。
【０１３０】
ステップ４１０５１〜４１０５７では、前記第５実施形態の図３４と同様に、更新された全ての仮想ページの内容を、ディスクアレイ２の制御データ格納部６２へ書き戻すのに加え、キャッシュメモリ１０１の制御データ格納部５２にも書き戻しておく。そして、最後に、キャッシュ管理テーブル４６を、他のメモリ１００’のキャッシュ管理テーブルバックアップ部４９へコピーする(ステップ４１０５８)。
【０１３１】
図４３は、ファームウェア情報復帰機能４１１２のフローチャートである。まず、他のローカルメモリ上に格納されたキャッシュ管理テーブルバックアップ部４９に書かれたデータをキャッシュ管理テーブル４６へ転送する（ステップ４１１２６）。次に、キャッシュメモリ未使用スロットリスト４７に、ファームウェアプログラム４１が利用するキャッシュメモリのスロット範囲４８１の全スロットを追加する（ステップ４１１２５）。最後に、キャッシュ管理テーブル４６を検索し、存在フラグ４６２がＹのエントリについて、スロット番号４６３に書かれたスロットを、キャッシュメモリ未使用スロットリスト４７から削除する（ステップ４１１２３）。以上により、キャッシュ管理テーブル４６及びキャッシュメモリ未使用スロットリスト４７が、障害発生前の状態に復旧される。
以上により、ローカルメモリ１００上のデータが消失しても、他のローカルメモリに格納された情報から制御データを復元することが可能となる。
【０１３２】
＜第８実施形態＞
図４４は、第８の実施形態を示し、前記第５実施形態の図３４のストレージシステム１内に複数のＣＰＵ１０４，１０４’、ＭＭＵ１０７，１０７’、ローカルメモリ１００，１００’を備え、さらに前記第３実施形態におけるキャッシュ管理テーブル４６を他のローカルメモリにコピーすることによって、一つのローカルメモリ１００，１００’及びＣＰＵ１０４，１０４’のいずれかに障害が発生した場合でも制御データの消失を防ぐことができ、ストレージシステム１の信頼性を向上させることが可能となる。以下では本実施形態について、前記第５実施形態との差分を説明する。
【０１３３】
図４４は、本実施形態におけるシステムの構成である。前記第５実施形態の図３４の構成に加え、ローカルメモリ１００上にキャッシュ管理テーブルバックアップ部４９を持つのが本発明の特徴である。
【０１３４】
図４５は、本実施形態におけるファームウェアプログラム４１が持つ機能である。制御データを全てキャッシュメモリ１０１に書き戻す制御データコミット機能４１０５と、障害からの復旧時に状態を回復するファームウェア情報復帰機能４１１２と、他のＣＰＵに障害が発生した場合に前記ＣＰＵが利用していた制御データを代わりにディスクアレイに書き戻す制御データ代理書き戻し機能４１１３を持つのが本第８実施形態の特徴である。
【０１３５】
制御データコミット機能４１０５の処理は、前記第７実施形態に示した図４２のフローチャートと同様である。すなわち、前記第５実施形態の図３４と同様に、更新された全ての仮想ページの内容を、ディスクアレイ２の制御データ格納部６２へ書き戻すのに加え、キャッシュメモリ１０１の制御データ格納部５２にも書き戻しておく。そして、最後に、キャッシュ管理テーブル４６を、他のメモリ１００’のキャッシュ管理テーブルバックアップ部４９へコピーする。
【０１３６】
図４６は、ファームウェア情報復帰機能４１１２のフローチャートである。本実施形態では復旧時には全制御データがディスクアレイ２上に書き込まれているので、単にキャッシュ管理テーブル４６を初期化すれば良い。まず、キャッシュ管理テーブル４６の全円鳥について、存在フラグ４６２をＮにする（ステップ４１１２７）。次に、キャッシュメモリ未使用スロットリスト４７に、キャッシュメモリ１０１上の制御データ格納部５２の全スロットを追加する（ステップ４１１２２）。以上により、障害復旧後のＣＰＵは、正しく制御データを参照できるようになる。
【０１３７】
図４７は、制御データ代理書き戻し機能４１１３のフローチャートである。この機能は、第一のＣＰＵ１０４に障害が発生して動作不能となった場合に、第二のＣＰＵ１０４’が第一のＣＰＵ１０４に代わって、第一のＣＰＵ１０４が扱っていたキャッシュメモリ１０１上の制御データをディスクアレイ２に退避する機能である。まず、キャッシュ管理テーブルバックアップ部４９の最初のエントリを選び（ステップ４１１３１）、前記エントリの更新フラグ４６４を調べる（ステップ４１１３２）。更新フラグがＹであれば、該当エントリに対応する仮想ページはキャッシュメモリ１０１上で更新されているので、キャッシュスロット番号４６３に対応するスロットから、ディスクアレイ２上の制御データ格納部６２の前記仮想ページに対応するブロックへとデータの転送を行う（ステップ４１１３３）。
【０１３８】
そして、前記エントリがキャッシュ管理テーブルバックアップ部４９の最後のエントリであるかどうかを判定し（ステップ４１１３４）、最後でない場合には次のエントリを対象として（ステップ４１１３５）、ステップ４１１３２以降を繰り返す。
【０１３９】
以上により、第一のＣＰＵが扱っていた最新の制御データが全て、ディスクアレイ上に書き込まれる。これにより、ローカルメモリ１００上のデータが消失しても、他のローカルメモリに格納された情報から制御データを復元することが可能となる。
【０１４０】
＜変形例＞
なお、上記各実施形態において、キャッシュメモリ１０１及びディスクアレイ２の記憶領域のうち、制御データ格納部６２、５２としてファームウェアプログラム４１が利用する一部領域を予約領域として、ストレージ制御プログラム４２からのアクセスを禁止するようにしてもよい。この場合、ストレージ制御プログラム４２からは予約領域が利用不可になり、ファームウェアプログラム４１のみがアクセスすることになる。
【０１４１】
例えば、ストレージ制御プログラム４２がディスクアレイ２の領域を新規に確保する際には、上記予約領域を除く領域を確保することになる。ストレージ制御プログラム４２内で、利用不可の予約領域を記述しておき、例えば新規論理ボリューム作成時に、予約領域を除いた領域を用いるようにする。
【０１４２】
あるいは、ストレージ制御プログラム４２がキャッシュメモリ１０１の領域を新規に確保する際には、ファームウェアプログラム４１が設定した上記予約領域を用いないようにする。ファームウェアプログラム４１のキャッシュメモリ未使用スロットリスト４７と同様の仕組みで、ストレージ制御プログラム４２が使用可能な領域に上記予約領域を含めないようにすることができる。
【０１４３】
＜補足＞
なお、請求項８に記載のストレージシステムにおいて、前記制御部は、前記キャッシュメモリに複写されたキャッシュメモリ管理情報に基づいて、前記仮想アドレスと前記キャッシュメモリの格納位置との対応関係を復旧するリカバリ部を有する。
【０１４４】
＜１＞
ホストコンピュータとのインターフェースを有するチャネルインターフェース部と、
ホストコンピュータから送られたデータを記憶する2個以上のディスクドライブからなるディスクアレイとのインターフェースを有するディスクインターフェース部と、
前記ディスクアレイに対してリード／ライトされるデータを一時的に格納するキャッシュメモリ部と、
前記チャネルインターフェース部及び前記ディスクインターフェース部と前記キャッシュメモリ部の間のデータ転送に関する制御を行うＣＰＵと、
ＣＰＵが制御のために用いる制御データを格納するローカルメモリ部を有するストレージシステムであって、
さらに前記ディスクアレイ上にＣＰＵが前記制御データを格納するための領域を有することを特徴とするストレージシステム。
【０１４５】
＜２＞
上記＜１＞に記載のストレージシステムにおいて、
前記ＣＰＵが前記ローカルメモリに格納された制御データを更新した場合に、当該更新された制御データを前記ディスクアレイの前記制御データを格納する領域に書き戻すことを特徴としたストレージシステム。
【０１４６】
＜３＞
上記＜１＞に記載のストレージシステムにおいて、
前記キャッシュメモリ部に制御データを格納するための領域を有する
ことを特徴とするストレージシステム。
【０１４７】
＜４＞
上記＜３＞に記載のストレージシステムにおいて、
前記キャッシュメモリの前記制御データを格納する領域の大きさが可変である
ことを特徴とした、ストレージシステム。
【０１４８】
＜５＞
上記＜３＞に記載のストレージシステムにおいて、
前記ＣＰＵが前記ローカルメモリに格納された制御データを更新した場合に、当該更新された制御データを前記キャッシュメモリの前記制御データを格納する領域に書き戻すことを特徴としたストレージシステム。
【０１４９】
＜６＞
上記＜４＞に記載のストレージシステムにおいて、
前記ＣＰＵが前記ローカルメモリに格納された制御データを更新した場合に、当該更新された制御データを前記キャッシュメモリの前記制御データを格納する領域に書き戻すことを特徴としたストレージシステム。
【０１５０】
＜７＞
上記＜３＞に記載のストレージシステムにおいて、
前記ローカルメモリ部にディスクアレイ上の制御データとキャッシュメモリ上の制御データの対応関係を記録するキャッシュメモリ管理部を有することを特徴とした、ストレージシステム。
【０１５１】
＜８＞
上記＜７＞に記載のストレージシステムにおいて、
前記ローカルメモリ部に前記キャッシュメモリの前記制御データを格納する領域の範囲を記録するキャッシュメモリ分割管理情報部を有することを特徴とした、ストレージシステム。
【０１５２】
＜９＞
上記＜７＞に記載のストレージシステムにおいて、
前記ＣＰＵが前記ローカルメモリに格納された制御データを更新した場合に、当該更新された制御データを前記キャッシュメモリの前記制御データを格納する領域に書き戻すことを特徴としたストレージシステム。
【０１５３】
＜１０＞
上記＜９＞に記載のストレージシステムにおいて、
キャッシュメモリ上にキャッシュメモリ管理部をバックアップするための領域を有し、
前記ＣＰＵが前記キャッシュメモリ管理部を更新した場合に、当該更新されたキャッシュメモリ管理部を、前記キャッシュメモリ管理部をバックアップするための領域に書き戻すことを特徴とした、ストレージシステム。
【０１５４】
＜１１＞
上記＜１０＞に記載のストレージシステムにおいて、
前記キャッシュメモリ管理部の情報が消失した際に、前記ＣＰＵが前記キャッシュメモリ管理部の情報を、前記キャッシュメモリ管理部をバックアップするための領域から読み出す
ことを特徴とした、ストレージシステム。
【０１５５】
＜１２＞
上記＜８＞に記載のストレージシステムにおいて、
前記ＣＰＵが前記ローカルメモリに格納された制御データを更新した場合に、当該更新された制御データを前記キャッシュメモリの前記制御データを格納する領域に書き戻すことを特徴としたストレージシステム。
【０１５６】
＜１３＞
上記＜１２＞に記載のストレージシステムにおいて、
前記キャッシュメモリ上にキャッシュメモリ管理部をバックアップするための領域を有し、
前記キャッシュメモリ上に前記キャッシュメモリ分割管理情報部をバックアップするための領域を有し、
前記ＣＰＵが前記キャッシュメモリ管理部を更新した場合に、当該更新されたキャッシュメモリ管理部を、前記キャッシュメモリ管理部をバックアップするための領域に書き戻す
ことを特徴とした、ストレージシステム。
【０１５７】
＜１４＞
上記＜１３＞に記載のストレージシステムにおいて、
前記キャッシュメモリ管理部の情報が消失した際に、前記ＣＰＵが前記キャッシュメモリ管理部の情報を、前記キャッシュメモリ管理部をバックアップするための領域から読み出し、
前記キャッシュメモリ管理部の情報が消失した際に、前記ＣＰＵが前記キャッシュメモリ分割管理情報部の情報を、前記キャッシュメモリ分割管理情報部をバックアップするための領域から読み出す
ことを特徴とした、ストレージシステム。
【０１５８】
＜１５＞
上記＜１＞に記載のストレージシステムにおいて、
ＣＰＵとローカルメモリ部の間に論理アドレスと物理アドレスの変換を行うＭＭＵを有するストレージシステムであって、
前記ＣＰＵからの制御データ参照要求に応じて、前記ＭＭＵが前記ローカルメモリに当該制御データが存在するかどうかを判定し、
もし当該制御データが存在しない場合にＭＭＵからの要求に応じて前記ＣＰＵが前記ディスクアレイから当該制御データを取り出して前記ローカルメモリに格納するよう制御を行うことを特徴とする、ストレージシステム。
【０１５９】
＜１６＞
上記＜１５＞に記載のストレージシステムにおいて、
前記ＣＰＵが前記ローカルメモリに格納された制御データを更新した場合に、当該更新された制御データを前記ディスクアレイの前記制御データを格納する領域に書き戻すことを特徴としたストレージシステム。
【０１６０】
＜１７＞
上記＜１５＞に記載のストレージシステムにおいて、
前記キャッシュメモリ部に制御データを格納するための領域を有する
ことを特徴とするストレージシステム。
【０１６１】
＜１８＞
上記＜１７＞に記載のストレージシステムにおいて、
前記キャッシュメモリの前記制御データを格納する領域の大きさが可変である
ことを特徴とした、ストレージシステム。
【０１６２】
＜１９＞
上記＜１７＞に記載のストレージシステムにおいて、
前記ＣＰＵが前記ローカルメモリに格納された制御データを更新した場合に、当該更新された制御データを前記キャッシュメモリの前記制御データを格納する領域に書き戻すことを特徴としたストレージシステム。
【０１６３】
＜２０＞
上記＜１８＞に記載のストレージシステムにおいて、
前記ＣＰＵが前記ローカルメモリに格納された制御データを更新した場合に、当該更新された制御データを前記キャッシュメモリの前記制御データを格納する領域に書き戻すことを特徴としたストレージシステム。
【０１６４】
＜２１＞
上記＜１７＞に記載のストレージシステムにおいて、
前記ローカルメモリ部にディスクアレイ上の制御データとキャッシュメモリ上の制御データの対応関係を記録するキャッシュメモリ管理部を有する
ことを特徴とした、ストレージシステム。
【０１６５】
＜２２＞
上記＜２１＞に記載のストレージシステムにおいて、
前記ローカルメモリ部に前記キャッシュメモリの前記制御データを格納する領域の範囲を記録するキャッシュメモリ分割管理情報部を有する
ことを特徴とした、ストレージシステム。
【０１６６】
＜２３＞
上記＜２１＞に記載のストレージシステムにおいて、
前記ＣＰＵが前記ローカルメモリに格納された制御データを更新した場合に、当該更新された制御データを前記キャッシュメモリの前記制御データを格納する領域に書き戻すことを特徴としたストレージシステム。
【０１６７】
＜２４＞
上記＜２３＞に記載のストレージシステムにおいて、
キャッシュメモリ上にキャッシュメモリ管理部をバックアップするための領域を有し、
前記ＣＰＵが前記キャッシュメモリ管理部を更新した場合に、当該更新されたキャッシュメモリ管理部を、前記キャッシュメモリ管理部をバックアップするための領域に書き戻す
ことを特徴とした、ストレージシステム。
【０１６８】
＜２５＞
上記＜２４＞に記載のストレージシステムにおいて、
前記キャッシュメモリ管理部の情報が消失した際に、前記ＣＰＵが前記キャッシュメモリ管理部の情報を、前記キャッシュメモリ管理部をバックアップするための領域から読み出す
ことを特徴とした、ストレージシステム。
【０１６９】
＜２６＞
上記＜２２＞に記載のストレージシステムにおいて、
前記ＣＰＵが前記ローカルメモリに格納された制御データを更新した場合に、当該更新された制御データを前記キャッシュメモリの前記制御データを格納する領域に書き戻すことを特徴としたストレージシステム。
【０１７０】
＜２７＞
上記＜２６＞に記載のストレージシステムにおいて、
前記キャッシュメモリ上にキャッシュメモリ管理部をバックアップするための領域を有し、
前記キャッシュメモリ上に前記キャッシュメモリ分割管理情報部をバックアップするための領域を有し、
前記ＣＰＵが前記キャッシュメモリ管理部を更新した場合に、当該更新されたキャッシュメモリ管理部を、前記キャッシュメモリ管理部をバックアップするための領域に書き戻す
ことを特徴とした、ストレージシステム。
【０１７１】
＜２８＞
上記＜２７＞に記載のストレージシステムにおいて、
前記キャッシュメモリ管理部の情報が消失した際に、前記ＣＰＵが前記キャッシュメモリ管理部の情報を、前記キャッシュメモリ管理部をバックアップするための領域から読み出し、
前記キャッシュメモリ管理部の情報が消失した際に、前記ＣＰＵが前記キャッシュメモリ分割管理情報部の情報を、前記キャッシュメモリ分割管理情報部をバックアップするための領域から読み出す
ことを特徴とした、ストレージシステム。
【０１７２】
＜２９＞
ホストコンピュータとのインターフェースを有するチャネルインターフェース部と、ホストコンピュータから送られたデータを記憶する２個以上のディスクドライブからなるディスクアレイとのインターフェースを有するディスクインターフェース部と、前記ディスクアレイに対してリード／ライトされるデータを一時的に格納するキャッシュメモリ部と、前記チャネルインターフェース部及び前記ディスクインターフェース部と前記キャッシュメモリ部の間のデータ転送に関する制御を行う複数のＣＰＵと、ＣＰＵが制御のために用いる制御データを格納する複数のローカルメモリ部を有し、ＣＰＵとローカルメモリが一対一に接続されているストレージシステムであって、
前記キャッシュメモリ部に制御データを格納するための領域を有し、
ローカルメモリ部に、前記制御データを格納するための領域を管理するためのキャッシュメモリ管理部を有し、
第一のＣＰＵに接続された第一のローカルメモリ部に、第二ＣＰＵに接続された第二のローカルメモリ部のキャッシュメモリ管理部をバックアップするための領域を有する
ことを特徴とするストレージシステム。
【０１７３】
＜３０＞
上記＜２９＞に記載のストレージシステムにおいて、
前記第一のローカルメモリ部の情報が消失した際に、前記第一のＣＰＵが前記第二のローカルメモリ部に格納されたキャッシュメモリ管理部をバックアップするための領域を読み出す
ことを特徴とした、ストレージシステム。
【０１７４】
＜３１＞
上記＜２９＞に記載のストレージシステムにおいて、
前記第二のＣＰＵが前記第二のローカルメモリ部に格納されたキャッシュメモリ管理部をバックアップするための領域を読み出し、
前記第二のＣＰＵが前記キャッシュメモリ上の制御データを前記ディスクアレイに書き戻す
ことを特徴とした、ストレージシステム。
【産業上の利用可能性】
【０１７５】
以上のように、本発明は、ディスクキャッシュとローカルメモリを備えたストレージシステムに適用することができ、特に、ＳＡＮ（Storage Area Network）に接続されるストレージシステムやＮＡＳ（Network Attached Storage）などに適用することができる。
【図面の簡単な説明】
【０１７６】
【図１】本発明の第一の実施形態におけるストレージシステムの構成を示すブロック図。
【図２】本発明の第一の実施形態における制御データのアドレス空間を示すマップ。
【図３】本発明の第一の実施形態におけるファームウェアプログラムの機能を示すブロック図。
【図４】本発明の第一の実施形態におけるディスクアレイ上の制御データ格納部の構成を示す説明図。
【図５】本発明の第一の実施形態におけるローカルメモリ上の制御データ格納部の構成を示す説明図。
【図６】本発明の第一の実施形態におけるページテーブルの構成を示す説明図。
【図７】本発明の第一の実施形態におけるローカルメモリ未使用ページリストの構成を示す説明図。
【図８】本発明の第一の実施形態におけるストレージ制御プログラムによる制御データ参照時の処理の一例を示すフローチャート。
【図９】本発明の第一の実施形態におけるファームウェアプログラムの仮想記憶処理機能で行われる処理の一例を示すフローチャート。
【図１０】本発明の第一の実施形態におけるファームウェアプログラムのローカルメモリへのデータ転送機能で行われる処理の一例を示すフローチャート。
【図１１】本発明の第一の実施形態におけるファームウェアプログラムのローカルメモリ空き物理ページ確保機能で行われる処理の一例を示すフローチャート。
【図１２】本発明の第一の実施形態におけるファームウェアプログラムのローカルメモリ物理ページ解放処理機能で行われる処理の一例を示すフローチャート。
【図１３】本発明の第二の実施形態におけるファームウェアプログラムの機能を示すブロック図。
【図１４】本発明の第二の実施形態におけるファームウェアプログラムの制御データコミット機能で行われる処理の一例を示すフローチャート。
【図１５】本発明の第三の実施形態におけるストレージシステムの構成を示すブロック図。
【図１６】本発明の第三の実施形態における制御データのアドレス空間を示すマップ。
【図１７】本発明の第三の実施形態におけるファームウェアの機能を示すブロック図。
【図１８】本発明の第三の実施形態におけるキャッシュメモリ上の制御データ格納部の構成を示す説明図。
【図１９】本発明の第三の実施形態におけるキャッシュ管理テーブルの構成を示す説明図。
【図２０】本発明の第三の実施形態におけるキャッシュメモリ未使用スロットリストの構成を示す説明図。
【図２１】本発明の第三の実施形態におけるファームウェアプログラムのローカルメモリへのデータ転送機能で行われる処理の一例を示すフローチャート。
【図２２】本発明の第三の実施形態におけるファームウェアプログラムのローカルメモリ物理ページ解放機能で行われる処理の一例を示すフローチャート。
【図２３】本発明の第三の実施形態におけるファームウェアプログラムのキャッシュメモリへのデータ転送機能で行われる処理の一例を示すフローチャート。
【図２４】本発明の第三の実施形態におけるファームウェアプログラムが持つローカルメモリ→キャッシュメモリデータ転送機能で行われる処理の一例を示すフローチャート。
【図２５】本発明の第三の実施形態におけるファームウェアプログラムのキャッシュメモリ空きスロット確保機能で行われる処理の一例を示すフローチャート。
【図２６】本発明の第三の実施形態におけるファームウェアプログラムのキャッシュメモリスロット解放機能で行われる処理の一例を示すフローチャート。
【図２７】本発明の第四の実施形態におけるストレージシステムの構成を示すブロック図。
【図２８】本発明の第四の実施形態におけるファームウェアプログラムの機能を示すブロック図。
【図２９】本発明の第四の実施形態におけるキャッシュメモリ資源分割領域の構成を示す説明図。
【図３０】本発明の第四の実施形態におけるファームウェアプログラムのストレージ制御プログラムへのキャッシュメモリ割り当て機能をストレージ制御プログラムが呼び出す際の処理の一例を示すフローチャート。
【図３１】本発明の第四の実施形態におけるファームウェアプログラムのキャッシュメモリ解放機能をストレージ制御プログラムが呼び出す際の処理の一例を示すフローチャート。
【図３２】本発明の第五の実施形態におけるストレージシステムの構成を示すブロック図。
【図３３】本発明の第五の実施形態におけるファームウェアプログラムの機能を示すブロック図。
【図３４】本発明の第五の実施形態におけるファームウェアプログラムの制御データコミット機能で行われる処理の一例を示すフローチャート。
【図３５】本発明の第五の実施形態におけるファームウェアプログラムのファームウェア情報復帰機能で行われる処理の一例を示すフローチャート。
【図３６】本発明の第六の実施形態におけるストレージシステムの構成を示すブロック図。
【図３７】本発明の第六の実施形態におけるファームウェアプログラムが持つ機能を示すブロック図。
【図３８】本発明の第六の実施形態におけるファームウェアプログラムの制御データコミット機能で行われる処理の一例を示すフローチャート。
【図３９】本発明の第六の実施形態におけるファームウェアプログラムのファームウェア情報復帰機能で行われる処理の一例を示すフローチャート。
【図４０】本発明の第七の実施形態におけるストレージシステムの構成を示すブロック図。
【図４１】本発明の第七の実施形態におけるファームウェアプログラムが持つ機能を示すブロック図。
【図４２】本発明の第七の実施形態におけるファームウェアプログラムの制御データコミット機能で行われる処理の一例を示すフローチャート。
【図４３】本発明の第七の実施形態におけるファームウェアプログラムが持つファームウェア情報復帰機能で行われる処理の一例を示すフローチャート。
【図４４】本発明の第八の実施形態におけるストレージシステムの構成を示すブロック図。
【図４５】本発明の第八の実施形態におけるファームウェアプログラムが持つ機能を示すブロック図。
【図４６】本発明の第八の実施形態におけるファームウェアプログラムのファームウェア情報復帰機能で行われる処理の一例を示すフローチャート。
【図４７】本発明の第八の実施形態におけるファームウェアプログラムの制御データ代理書き戻し機能で行われる処理の一例を示すフローチャート。
【符号の説明】
【０１７７】
１  ストレージシステム
２  ディスクアレイ
３  ホストコンピュータ
４１  ファームウェアプログラム
４２  ストレージ制御プログラム
４３  ローカルメモリ上制御データ格納部
４４  ページテーブル
４５  ローカルメモリ未使用物理ページリスト
４６  キャッシュ管理テーブル
４７  キャッシュメモリ未使用スロットリスト
４８  キャッシュメモリ資源分割管理領域
４９  キャッシュ管理テーブルバックアップ部
５１  キャッシュメモリ上ユーザーデータ格納部
５２  キャッシュメモリ上制御データ格納部
５３  キャッシュメモリ上キャッシュ管理テーブルバックアップ部
５４  資源分割管理部バックアップ領域
６１  ディスクアレイ上ユーザーデータ格納部
６２  ディスクアレイ上制御データ格納部
１００  ローカルメモリ
１０１  キャッシュメモリ
１０２  ホストアダプタ
１０３  ディスクアダプタ
１０４  ＣＰＵ
１０５  スイッチ
１０６  仮想アドレス信号線
１０７  ＭＭＵ
１０８  アドレス信号線
１０９  データ信号線
１１０  割り込み信号線
４１０１  仮想記憶処理機能
４１０２  ローカルメモリへのデータ転送機能
４１０３  ローカルメモリ空き物理ページ確保機能
４１０４  ローカルメモリ物理ページ解放機能
４１０５  制御データコミット機能
４１０６  キャッシュメモリへのデータ転送機能
４１０７  ローカルメモリ→キャッシュメモリデータ転送機能
４１０８  キャッシュメモリ空きスロット確保機能
４１０９  キャッシュメモリスロット解放機能
４１１０  制御プログラムへのキャッシュメモリ割り当て機能
４１１１  制御プログラムからのキャッシュメモリ解放受け付け機能
【図１】
2008090657.tif 000003
【図３】
2008090657.tif 000004
【図４】
2008090657.tif 000005
【図５】
2008090657.tif 000006
【図６】
2008090657.tif 000007
【図７】
2008090657.tif 000008
【図８】
2008090657.tif 000009
【図９】
2008090657.tif 000010
【図１０】
2008090657.tif 000011
【図１１】
2008090657.tif 000012
【図１２】
2008090657.tif 000013
【図１３】
2008090657.tif 000014
【図１４】
2008090657.tif 000015
【図１５】
2008090657.tif 000016
【図１７】
2008090657.tif 000017
【図１８】
2008090657.tif 000018
【図１９】
2008090657.tif 000019
【図２０】
2008090657.tif 000020
【図２１】
2008090657.tif 000021
【図２２】
2008090657.tif 000022
【図２３】
2008090657.tif 000023
【図２４】
2008090657.tif 000024
【図２５】
2008090657.tif 000025
【図２６】
2008090657.tif 000026
【図２７】
2008090657.tif 000027
【図２８】
2008090657.tif 000028
【図２９】
2008090657.tif 000029
【図３０】
2008090657.tif 000030
【図３１】
2008090657.tif 000031
【図３２】
2008090657.tif 000032
【図３３】
2008090657.tif 000033
【図３４】
2008090657.tif 000034
【図３５】
2008090657.tif 000035
【図３６】
2008090657.tif 000036
【図３７】
2008090657.tif 000037
【図３８】
2008090657.tif 000038
【図３９】
2008090657.tif 000039
【図４０】
2008090657.tif 000040
【図４１】
2008090657.tif 000041
【図４２】
2008090657.tif 000042
【図４３】
2008090657.tif 000043
【図４４】
2008090657.tif 000044
【図４５】
2008090657.tif 000045
【図４６】
2008090657.tif 000046
【図４７】
2008090657.tif 000047
【図２】
2008090657.tif 000048
【図１６】
2008090657.tif 000049