(57)【要約】【課題】  複数のアプリケーションプログラムに共用されるストレージシステムにおいて、個々のアプリケーションプログラムのそれぞれに対して、最適なキャッシュメモリの性能チューニングを行えるストレージシステムを提供する。【解決手段】  本発明のストレージシステムは、複数のアプリケーションプログラムからアクセス可能な複数の論理ボリュームを提供する記憶デバイスと、複数のアプリケーションプログラムからの入出力要求に応答して、論理ボリュームへのデータの入出力を制御するコントローラと、論理ボリュームに入出力されるデータを一時的に格納するキャッシュメモリと、を備え、キャッシュメモリは、複数の論理ボリュームのそれぞれに対して排他的に割り当てられた複数のパーティションに論理分割されている。【選択図】        図３
2006227688.tif 000002
【特許請求の範囲】
【請求項１】
複数のアプリケーションプログラムからアクセス可能な複数の論理ボリュームを提供する記憶デバイスと、
前記複数のアプリケーションプログラムからの入出力要求に応答して、前記論理ボリュームへのデータの入出力を制御するコントローラと、
前記論理ボリュームに入出力されるデータを一時的に格納するキャッシュメモリと、
を備え、
前記キャッシュメモリは、前記複数の論理ボリュームのそれぞれに対して排他的に割り当てられた複数のパーティションに論理分割されている、ストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記複数の論理ボリュームのそれぞれには、前記複数のアプリケーションプログラムのそれぞれが排他的に割り当てられている、ストレージシステム。
【請求項３】
請求項１に記載のストレージシステムであって、
前記複数のパーティションは、それぞれ独立してセグメントサイズの調整が可能に構成されている、ストレージシステム。
【請求項４】
請求項３に記載のストレージシステムであって、
前記コントローラは、前記キャッシュメモリのセグメントの構成単位であるサブセグメント同士を論理的に関連付けることにより前記セグメントを構成し、前記セグメントを構成するサブセグメントの個数を調整することにより、前記セグメントサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項５】
請求項３に記載のストレージシステムであって、
前記コントローラは、前記セグメントサイズの調整が行われるパーティションに対応付けられた論理ボリュームへのデータ入出力を抑止し、前記パーティションに格納されているダーティデータを前記記憶デバイスにデステージした後で、前記セグメントサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項６】
請求項３に記載のストレージシステムであって、
前記コントローラは、前記セグメントサイズの調整が行われるパーティションに格納されているダーティデータを前記記憶デバイスにデステージしている最中はライトスルー方式で前記アプリケーションプログラムからの入出力要求に応答し、前記デステージが完了した後に、前記セグメントサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項７】
請求項３に記載のストレージシステムであって、
前記ストレージシステムを管理する管理端末を更に備え、
前記コントローラは、前記管理端末からの指示に応答して、前記セグメントサイズをそれぞれのパーティション毎に独立して調整する、ストレージシステム。
【請求項８】
請求項１に記載のストレージシステムであって、
前記複数のパーティションは、それぞれ独立してパーティションサイズの調整が可能に構成されている、ストレージシステム。
【請求項９】
請求項８に記載のストレージシステムであって、
前記コントローラは、前記キャッシュメモリのブロック同士を論理的に関連付けることにより、前記パーティションサイズを調整する、ストレージシステム。
【請求項１０】
請求項８に記載のストレージシステムであって、
前記コントローラは、前記パーティションサイズの調整が行われるパーティションに対応付けられた論理ボリュームへのデータ入出力を抑止し、前記パーティションサイズの調整が行われるパーティションにおいて、パーティションサイズの変更に使用されるブロック内に格納されているダーティデータを前記記憶デバイスにデステージした後で、パーティションサイズを調整する複数のパーティション間で前記ブロックを移動させることで、前記パーティションサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項１１】
請求項８に記載のストレージシステムであって、
前記コントローラは、前記パーティションサイズの調整が行われるパーティションにおいて、パーティションサイズの変更に使用されるブロック内に格納されているダーティデータを前記記憶デバイスにデステージしている最中はライトスルー方式で前記アプリケーションプログラムからの入出力要求に応答し、前記ブロック内に格納されているダーティデータのデステージが完了した後に、パーティションサイズを調整する複数のパーティション間で前記ブロックを移動させることで、前記パーティションサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項１２】
請求項８に記載のストレージシステムであって、
前記ストレージシステムを管理する管理端末を更に備え、
前記コントローラは、前記管理端末からの指示に応答して、前記パーティションサイズをそれぞれのパーティション毎に独立して調整する、ストレージシステム。
【請求項１３】
請求項８に記載のストレージシステムであって、
現在時刻を計測するタイマを更に備え、
前記コントローラは、予めタイマ設定された時刻になると、予め設定されたパーティションサイズになるように、前記パーティションサイズをそれぞれのパーティション毎に独立して調整する、ストレージシステム。
【請求項１４】
請求項１に記載のストレージシステムであって、
前記キャッシュメモリを複数備え、
前記複数のパーティションは、それぞれ独立して、前記複数のキャッシュメモリへの二重書き要否が設定自在に構成されている、ストレージシステム。
【請求項１５】
請求項１４に記載のストレージシステムであって、
前記ストレージシステムを管理する管理端末を更に備え、
前記コントローラは、前記管理端末からの指示に応答して、前記二重書き要否を前記パーティション毎に独立して調整する、ストレージシステム。
【請求項１６】
複数のアプリケーションプログラムからアクセス可能な複数の論理ボリュームを提供する記憶デバイスと、
前記複数のアプリケーションプログラムからの入出力要求に応答して、前記論理ボリュームへのデータの入出力を制御するＣＰＵと、
前記論理ボリュームに入出力されるデータを一時的に格納するキャッシュメモリと、
前記キャッシュメモリよりも高速アクセス可能に構成され、キャッシュデータの管理情報を格納するローカルメモリと、
を備え、
前記キャッシュメモリは、前記複数の論理ボリュームのそれぞれに対して排他的に割り当てられた複数のパーティションに論理分割されており、
前記ＣＰＵは、前記ローカルメモリに格納された管理情報を参照することにより、キャッシュデータの管理を行う、ストレージシステム。
【請求項１７】
請求項１６に記載のストレージシステムであって、
前記キャッシュメモリには、前記ローカルメモリに格納されている管理情報と同一の管理情報が格納されており、
前記ＣＰＵは、前記キャッシュメモリと前記ローカルメモリの両方に格納されている管理情報の更新を行う、ストレージシステム。
【請求項１８】
請求項１７に記載のストレージシステムであって、
前記キャッシュメモリは、不揮発性メモリである、ストレージシステム。
【請求項１９】
請求項１８に記載のストレージシステムであって、
電源障害により前記ローカルメモリの管理情報が消失した場合には、前記ＣＰＵは、前記キャッシュメモリに格納されている管理情報を前記ローカルメモリに複写することにより、消失した管理情報の復元を行う、ストレージシステム。
【請求項２０】
請求項１６に記載のストレージシステムであって、
前記キャッシュデータの管理情報は、前記キャッシュメモリのセグメントの構成単位である親サブセグメントと子サブセグメントのそれぞれを管理する親サブセグメント管理ブロックと、子サブセグメント管理ブロックをキュー管理するための情報であり、
前記親サブセグメント管理ブロックは、前記親サブセグメントの前記キャッシュメモリにおける位置を指し示す親サブセグメントアドレスと、最も古くアクセスされた順番に親サブセグメント管理ブロックを指し示す順方向ポインタと、最も新しくアクセスされた順番に親サブセグメント管理ブロックを指し示す逆方向ポインタと、子サブセグメント管理ブロックを指し示す子サブセグメントポインタとを含み、
前記子サブセグメント管理ブロックは、前記子サブセグメントの前記キャッシュメモリにおける位置を指し示す子サブセグメントアドレスと、最も古くアクセスされた順番に子サブセグメント管理ブロックを指し示す順方向ポインタとを含む、ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数のアプリケーションプログラムのそれぞれに対して、最適なキャッシュメモリの性能チューニングを行えるストレージシステムに関する。
【背景技術】
【０００２】
近年、サーバ毎に分散配置されていたストレージを一箇所に集約し、ＳＡＮ（Storage Area Network）等のストレージ専用ネットワークを介してサーバ群に接続するストレージコンソリデーションが普及している。ストレージコンソリデーションの運用形態として、複数のアプリケーションプログラム又はコンテンツによるストレージシステムの共用が増えてきている。ストレージシステムは、例えば、ディスクアレイ装置等から構成される。ディスクアレイ装置は、多数のディスクドライブをアレイ状に配設して構成されるもので、例えば、ＲＡＩＤ（Redundant Array of Independent Inexpensive Disks）に基づいて構築されている。ディスクドライブ群が提供する物理的な記憶領域上には、少なくとも１つ以上の論理ボリュームが形成され、この論理ボリュームがホスト装置に提供される。ホスト装置は、ストレージシステムに対してライトコマンド又はリードコマンドを発行することにより、論理ボリュームに対するデータの読み書きを行うことができる。
【０００３】
この種のストレージシステムにおいては、ディスクドライブに書き込むためのライトデータ、又はディスクドライブから読み出したリードデータを一時的に記憶するためのキャッシュメモリが実装されており、ホスト装置に対するＩ／Ｏ処理の高速化を実現している（例えば、特許文献１）。例えば、ホスト装置からディスクドライブへのライトアクセスに対しては、キャッシュメモリへのライトデータの書き込みを以ってライト処理の完了をホスト装置に通知し、キャッシュデータが一定量蓄積した段階でデステージを行う。ホスト装置からのディスクドライブへのリードアクセスに対しては、リードデータがキャッシュメモリにヒットしている場合は、キャッシュメモリから読み出すことにより、高速アクセスを実現する。
【特許文献１】特開２００１−１６６９９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、各アプリケーションプログラムのＩ／Ｏ特性はそれぞれ異なるため、そのＩ／Ｏ特性に合わせて、キャッシュメモリの性能チューニング（例えば、セグメントサイズの設定、二重書きの要否等）を最適化する必要がある。
【０００５】
例えば、動画又は静止画等のコンテンツをストリーミング配信するアプリケーションプログラムのように、大量のデータを連続的に処理するアプリケーションプログラムに対しては、キャッシュメモリのセグメントサイズを大きく設定して、オーバーヘッドを低減するのが望ましい。これに対し、データベース等のように細かいアクセスがランダムに発行されるアプリケーションプログラムに対しては、セグメントサイズを小さく設定して、オーバーヘッドを低減するのが望ましい。
【０００６】
また、例えば、銀行のオンラインサービスのように、高信頼性が要求されるアプリケーションプログラムに対しては、キャッシュデータの二重化を実施して障害発生時にもデータを確実に保存する必要がある。これに対し、天気予報等の一時的なシミュレーションや科学技術計算のように、別の手段で保存されたソースデータを元に演算を行う場合には、途中の演算結果（テンポラリなデータ）を保存するのに、キャッシュメモリへの二重書きによる高信頼性を確保するよりも、性能が重視される場合もある。
【０００７】
従来のストレージシステムでは、個々のアプリケーションプログラム毎に、そのＩ／Ｏ特性に応じて、セグメントサイズの設定や二重書きの要否等の性能チューニングを行うことはできなかったため、複数のアプリケーションプログラムに共用されるストレージシステムにおいて、あるアプリケーションプログラムに最適なキャッシュメモリのチューニングを行うと、他のアプリケーションプログラムの性能が低下してしまうという不都合が生じていた。例えば、ストリーミングサービスを提供するアプリケーションプログラム用にセグメントサイズを大きく設定すると、データベースのようなアプリケーションプログラムでは、キャッシュメモリのヒット率が低下してしまう。
【０００８】
更に、複数のアプリケーションプログラムによって共用されるストレージシステムにおいては、アプリケーションプログラム間のリソース競合が生じ得るので、各アプリケーションプログラムの性能を適正に発揮させるためにも、リソース競合を抑制する必要がある。例えば、負荷の異なる複数のアプリケーションプログラムにより共有されるストレージシステムでは、高負荷のアプリケーションプログラムから、より多くの書き込みを受けるため、キャッシュメモリが高負荷のアプリケーションプログラムのデータで埋め尽くされてしまい、他のアプリケーションプログラムとの間にリソース競合が生じる場合がある。
【０００９】
このようなリソース競合は、Ｉ／Ｏ特性の異なる複数のアプリケーションプログラム間だけでなく、性能特性の異なる複数のディスクドライブ間にも生じ得る。例えば、ファイバチャネル・ディスクドライブとＡＴＡ（Advanced Technology Attachment）ディスクドライブとを混載したストレージシステムにおいては、ＡＴＡディスクドライブの方がファイバチャネル・ディスクドライブよりもアクセスに時間がかかるので、キャッシュメモリからファイバチャネル・ディスクドライブへのデステージングに要する時間よりも、キャッシュメモリからＡＴＡディスクドライブへのデステージングに要する時間の方が長い。すると、ＡＴＡディスクドライブを利用するアプリケーションプログラムのデータがキャッシュメモリに留まる時間がその分長くなるので、キャッシュメモリ上にＡＴＡディスクドライブのデータが溜まり、リソース競合が生じることとなる。
【００１０】
本発明は、上記の問題点に鑑みてなされたもので、本発明の目的の一つは、複数のアプリケーションプログラムに共用されるストレージシステムにおいて、個々のアプリケーションプログラムのそれぞれに対して、最適なキャッシュメモリの性能チューニングを行えるストレージシステムを提供することにある。
【００１１】
本発明の目的の一つは、複数のアプリケーションプログラムに共用されるストレージシステムにおいて、Ｉ／Ｏ特性の異なる複数のアプリケーションプログラム間、又は性能特性の異なる複数の記憶デバイス間におけるキャッシュメモリのリソース競合による性能低下を抑制するストレージシステムを提供することである。
【課題を解決するための手段】
【００１２】
上記の課題を解決するため、本発明のストレージシステムは、複数のアプリケーションプログラムからアクセス可能な複数の論理ボリュームを提供する記憶デバイスと、複数のアプリケーションプログラムからの入出力要求に応答して、論理ボリュームへのデータの入出力を制御するコントローラと、論理ボリュームに入出力されるデータを一時的に格納するキャッシュメモリと、を備え、キャッシュメモリは、複数の論理ボリュームのそれぞれに対して排他的に割り当てられた複数のパーティションに論理分割されている。
【００１３】
複数の論理ボリュームのそれぞれに対して、複数のパーティションのそれぞれを排他的に割り当てることにより、各アプリケーションプログラムに対して排他的に割り当てられた論理ボリューム間のリソース競合を抑制し、最適なキャッシュメモリの性能チューニングを行うことができる。
【００１４】
また、記憶デバイスの性能特性が異なる場合であっても、複数の論理ボリュームのそれぞれに対して、複数のパーティションをそれぞれ排他的に割り当てることにより、記憶デバイスの性能特性の相違によるキャッシュメモリのリソース競合を抑制し、最適なキャッシュメモリの性能チューニングを行うことができる。
【発明を実施するための最良の形態】
【００１５】
以下、各図を参照して、本発明の実施形態について説明する。各実施例は特許請求の範囲を限定するものではなく、また実施例で説明されている特徴の全てが発明の解決手段に必須であるとは限らない。
【実施例１】
【００１６】
図１は本実施例に係るストレージシステムの主要構成を示している。
ストレージシステム１０は、通信ネットワーク５０を介して一台又は複数台のホスト装置（上位装置）６０に接続している。ホスト装置６０は、ストレージシステム１０の上位装置として機能するサーバ装置、パーソナルコンピュータ、ワークステーション、メインフレーム等である。ホスト装置６０には、ＯＳ（Operating System）６１上で動作する複数のアプリケーションプログラムＡＰ♯０，ＡＰ♯１，…，ＡＰ♯Ｎが実装されている。ストレージシステム１０が提供する記憶資源は、複数のアプリケーションプログラムＡＰ♯０，ＡＰ♯１，…，ＡＰ♯Ｎによって共用されている。
【００１７】
通信ネットワーク５０としては、例えば、ＳＡＮ（Storage Area Network）、ＬＡＮ(Local Area Network)、インターネット、専用回線、公衆回線等を挙げることができる。ホスト装置６０がＳＡＮを介してストレージシステム１０に接続する場合、ホスト装置６０は、ファイバチャネルプロトコルに従って、ストレージシステム１０の記憶資源のデータ管理単位であるブロックを単位としてデータ入出力を要求する。ホスト装置６０がＬＡＮを介してストレージシステム１０に接続する場合、ホスト装置６０は、ＮＦＳ（Network File System）やiSCSI（internet Small Computer System Interface）等のプロトコルにより、ファイル名を指定してファイル単位でのデータ入出力を要求する。ストレージシステム１０がホスト装置６０からのファイルアクセス要求を受け付けるためには、ＮＡＳ（Network Attached Storage）機能を搭載する必要がある。
【００１８】
ストレージシステム１０は、二重化されたコントローラ２０，３０を備えるデュアルコントローラ構成を採用しており、複数のアプリケーションプログラムＡＰ♯０，ＡＰ♯１，…，ＡＰ♯Ｎに提供される記憶デバイスとして、複数のディスクドライブ４０を備える。ディスクドライブ４０として、例えば、ファイバチャネル・ディスクドライブ、シリアルＡＴＡディスクドライブ、パラレルＡＴＡディスクドライブ、ＳＣＳＩディスクドライブ等の性能特性の異なる複数のディスクドライブを使用してもよく、或いは、これらのディスクドライブの中から何れか一種類のディスクドライブを使用してもよい。ここで、性能特性とは、例えば、ディスクドライブに対するアクセス速度等をいう。
【００１９】
尚、記憶デバイスとして、これらのディスクドライブに限らず、例えば、光ディスク、半導体メモリ、磁気テープ、フレキシブルディスク等を採用してもよい。
【００２０】
コントローラ２０，３０は、複数のディスクドライブ４０をいわゆるＲＡＩＤ方式に規定されるＲＡＩＤレベル（例えば、０，１，５）で制御することができる。ＲＡＩＤ方式においては、複数のディスクドライブ４０が一つのＲＡＩＤグループとして管理される。ＲＡＩＤグループ上には、ホスト装置６０からのアクセス単位である複数の論理ボリュームが定義されている。各論理ボリュームには、ＬＵＮ（Logical Unit Number）と呼ばれる識別子ＬＵ♯０，ＬＵ♯１，…，ＬＵ♯Ｍが付与されている。
【００２１】
コントローラ２０は、主に、ＣＰＵ２１、ＣＰＵ／ＰＣＩブリッジ２２、ローカルメモリ（ＬＭ）２３、データ転送制御部（Ｄ−ＣＴＬ）２４、キャッシュメモリ（ＣＭ）２５、ホストＩ／Ｆ制御部２６、及びドライブＩ／Ｆ制御部２７を備える。
【００２２】
ＣＰＵ２１は、ホスト装置６０からのデータ入出力要求に応答して複数のディスクドライブ４０へのＩ／Ｏ処理（ライトアクセス、又はリードアクセス）を制御するプロセッサである。コントローラ２０は、タイマ２９を備えており、予め設定された時刻になると、キャッシュメモリ２５のセグメントサイズを自動調整するように構成されている（詳細については後述する。）。ローカルメモリ２３には、ＣＰＵ２１のマイクロプログラムが格納されている。ＣＰＵ／ＰＣＩブリッジ２２は、ＣＰＵ２１、ローカルメモリ２２、及びデータ転送制御部２４を相互に接続する。キャッシュメモリ２５は、ディスクドライブ４０に書き込むためのライトデータ、又はディスクドライブ４０から読み出したリードデータを一時的に格納するバッファメモリである。キャッシュメモリ２５は、電源バックアップされており、ストレージシステム１０に電源障害が発生した場合でも、キャッシュデータのロストを防ぐ不揮発性メモリとして構成されている。
【００２３】
データ転送制御部２４は、ＣＰＵ／ＰＣＩブリッジ２２、キャッシュメモリ２５、ホストＩ／Ｆ制御部２６、ドライブＩ／Ｆ制御部２７を相互に接続し、ホスト装置６０とディスクドライブ４０との間のデータ転送を制御する。具体的には、ホスト装置６０からのライトアクセスが行われると、データ転送制御部２４は、ホストＩ／Ｆ制御部２６を介してホスト装置６０から受け取ったライトデータをキャッシュメモリ２５に書き込み、その後、そのライトデータをディスクドライブ４０へ非同期書き込みするために、ドライブＩ／Ｆ制御部２７へ転送する。また、ホスト装置６０からのリードアクセスが行われると、ドライブＩ／Ｆ制御部２７を介してディスクドライブ４０から読みとったリードデータをキャッシュメモリ２５に書き込むとともに、ホストＩ／Ｆ制御部２６に転送する。データ転送制御部２４とＣＰＵ／ＰＣＩブリッジ２２との間にはＰＣＩバス２８が配線されている。
【００２４】
ホストＩ／Ｆ制御部２６は、ホスト装置６０とのインターフェースを制御するコントローラであり、例えば、ファイバチャネルプロトコルによるホスト装置６０からのブロックアクセス要求を受信する機能を有する。ドライブＩ／Ｆ制御部２７は、ディスクドライブ４０とのインターフェースを制御するコントローラであり、例えば、ディスクドライブ４０を制御するプロトコルに従って、ディスクドライブ４０へのデータ入出力要求を制御する機能を有する。
【００２５】
コントローラ３０は、ＣＰＵ３１、ＣＰＵ／ＰＣＩブリッジ３２、ローカルメモリ（ＬＭ）３３、データ転送制御部（Ｄ−ＣＴＬ）３４、キャッシュメモリ（ＣＭ）３５、ホストＩ／Ｆ制御部３６、及びドライブＩ／Ｆ制御部３７を備えており、コントローラ２０と同様の構成となっている。コントローラ３０は、タイマ３９を備えており、予め設定された時刻になると、キャッシュメモリ３５のセグメントサイズを自動調整するように構成されている（詳細については後述する。）。
【００２６】
各コントローラ２０，３０のデータ転送制御部２４，３４は、データバス５１を通じて接続されており、一方のキャッシュメモリ２５（又は３５）に書き込まれるデータは、他方のキャッシュメモリ３５（又は２５）にも二重書きされるようにデータ転送制御部２４，３４間でデータ転送を行っている。また、ディスクドライブ４０がＲＡＩＤレベル５で管理される場合には、データ転送制御部２４，３４がパリティデータを演算する。
【００２７】
ストレージシステム１０には、システムを保守又は管理するための管理端末７０が接続されており、両者間では、ファイバチャネルプロトコル又はＴＣＰ／ＩＰ等の所定の通信プロトコルに基づいてデータ通信が行われる。オペレータは、管理端末７０を操作することにより、例えば、ディスクドライブ７０上に定義される論理ボリュームの設定、ディスクドライブ４０の増設又は減設、ＲＡＩＤ構成の設定変更（例えば、ＲＡＩＤレベル５からＲＡＩＤレベル１への変更）等を行うことができる。また、後述するように、個々のアプリケーションプログラムＡＰ♯０，ＡＰ♯１，…，ＡＰ♯Ｎのそれぞれに対して、キャッシュメモリ２５，３５の最適な性能チューニング（パーティション分割、パーティションサイズ設定、セグメントサイズ設定、二重化要否設定、パーティションへの論理ボリュームの割り当て設定又は割当変更等）を行うこともできる。
【００２８】
尚、管理端末７０は、ストレージシステム１０内に内蔵してもよく、或いは外付けの構成としてもよい。
【００２９】
図２はデュアルコントローラによるキャッシュデータの二重書きの概要を示している。説明の便宜上、以降の説明においては、コントローラ２０をＣＴＬ♯０と称し、コントローラ３０をＣＴＬ♯１と別称する場合がある。各々のＣＴＬ♯０，ＣＴＬ♯１には、排他的にアクセスする権限を有する論理ボリュームが割り当てられている。例えば、ＣＴＬ♯０は論理ボリュームＬＵ♯０に対して排他的にアクセスする権限を有し、ＣＴＬ♯１は論理ボリュームＬＵ♯１に対して排他的にアクセスする権限を有するものとする。どのＣＴＬ♯０，ＣＴＬ♯１にどの論理ボリュームＬＵ♯０，ＬＵ♯１が排他的に割り当てられているかは、例えば、キャッシュメモリ２５，３５上の管理情報領域（図８参照）等にその設定情報を書き込むことで、各々のＣＴＬ♯０，ＣＴＬ♯１が自身のアクセス権限を把握することができる。
【００３０】
キャッシュメモリ２５は、複数の記憶領域Ｐ０１，Ｐ０２，Ｐ０３に分割され、キャッシュメモリ３５は、複数の記憶領域Ｐ１１，Ｐ１２，Ｐ１３に分割されている。記憶領域Ｐ０１は、ＣＴＬ♯０に対して排他的に割り当てられた論理ボリューム（例えば、ＬＵ♯０）に読み書きされるキャッシュデータＤＡＴＡ０を一時的に格納するための記憶領域であり、当該記憶領域Ｐ０１には、二重書きの設定がなされている（ミラーオン設定）。つまり、記憶領域Ｐ０１に書き込まれるキャッシュデータＤＡＴＡ０はＣＴＬ♯０の制御によって、記憶領域Ｐ１１にも書き込まれる。記憶領域Ｐ１１は、ＣＴＬ♯０によるミラーリング用の記憶領域である。
【００３１】
同様に、記憶領域Ｐ１２は、ＣＴＬ♯１に対して排他的に割り当てられた論理ボリューム（例えば、ＬＵ♯１）に読み書きされるキャッシュデータＤＡＴＡ１を一時的に格納するための記憶領域であり、当該記憶領域Ｐ１２には、二重書きの設定がなされている。つまり、記憶領域Ｐ１２に書き込まれるキャッシュデータＤＡＴＡ１は、ＣＴＬ♯１の制御によって、記憶領域Ｐ０２にも書き込まれる。記憶領域Ｐ０２は、ＣＴＬ♯１によるミラーリング用の記憶領域である。
【００３２】
記憶領域Ｐ０３，Ｐ１３は、二重書きの設定がなされていない記憶領域である（ミラーオフ設定）。
【００３３】
尚、二重書き設定がなされている記憶領域Ｐ０１，Ｐ０２，Ｐ１１，Ｐ１２をミラーオン領域と称し、二重書き設定がなされていない記憶領域Ｐ０３，Ｐ１３をミラーオフ領域と称する。
【００３４】
図３はキャッシュメモリの各パーティションと、アプリケーションプログラム及び論理ボリュームとの対応関係を示している。上述した各記憶領域（例えば、Ｐ０１）は、複数のパーティション（例えば、Ｐ０１♯０，Ｐ０１♯２，Ｐ０１♯３）に論理分割される。パーティションとは、ユーザデータを格納するための、キャッシュメモリ上に論理分割された記憶領域であって、個々の論理ボリュームに対して排他的に割り当てられた個々の記憶領域をいう。パーティションの用語は、その趣旨を逸脱しない範囲内で、例えば、エリア、分割記憶領域、分割エリア、分割キャッシュ等と別称することもできる。各々のパーティションには、それぞれ異なる論理ボリューム（例えば、リソース競合を防ぎたい論理ボリューム）ＬＵ♯０，ＬＵ♯１，…，ＬＵ♯Ｍを排他的に割り当てることにより、論理ボリューム単位でのキャッシュメモリ２５，３５の独立したリソース管理が可能になる。つまり、各論理ボリュームが使用するキャッシュメモリ２５，３５の記憶資源がパーティション単位で割り当てられているため、論理ボリュームが性能特性の異なるディスクドライブ４０によって構成されている場合であっても、論理ボリュームの性能特性の相違によるリソース競合を抑制できる。
【００３５】
また、各々の論理ボリュームＬＵ♯０，ＬＵ♯１，…，ＬＵ♯Ｍに対して、Ｉ／Ｏ特性の異なる複数のアプリケーションプログラムＡＰ♯０，ＡＰ♯１，…，ＡＰ♯Ｎを排他的に割り当てることにより、アプリケーションプログラムＡＰ♯０，ＡＰ♯１，…，ＡＰ♯ＮのＩ／Ｏ特性の相違によるキャッシュメモリ２５，３５のリソース競合を抑制できる。例えば、パーティションＰ０１♯０に対しては、多目的用途のアプリケーションプログラムが使用する論理ボリュームＬＵ♯０を割り当て、パーティションＰ０１♯１に対しては、データベースが使用する論理ボリュームＬＵ♯２を割り当て、パーティションＰ０１♯２に対しては、ストリーミング用のアプリケーションプログラムが使用する論理ボリュームＬＵ♯３を割り当てる例が示されている。
【００３６】
また、ミラーオフ領域としての記憶領域Ｐ０３は、パーティションＰ０３♯０，Ｐ０３♯１に論理分割され、それぞれのパーティションＰ０３♯０，Ｐ０３♯１には、科学技術計算を行うアプリケーションプログラム（ＨＰＣ）が使用する論理ボリュームＬＵ♯５，ＬＵ♯６が割り当てられている。ミラーオフ領域は、科学技術計算の途中演算結果のように、テンポラリなデータを格納する場合など、二重書きを要しない場合に用いられる。
【００３７】
記憶領域Ｐ０２，Ｐ１１，Ｐ１２，Ｐ１３についても、同様に、複数のパーティションに論理分割されている。
【００３８】
尚、記憶領域Ｐ０１（コピー元領域）のミラーリング領域（コピー先領域）としての記憶領域Ｐ１１のパーティション分割の態様（パーティション数、パーティションサイズ、及びセグメントサイズ）は、記憶領域Ｐ０１のパーティション分割の態様と同一である。同様に、記憶領域Ｐ１２（コピー元領域）のミラーリング領域（コピー先領域）としての記憶領域Ｐ０２のパーティション分割の態様は、記憶領域Ｐ１２のパーティション分割の態様と同一である。一方、ミラーオフ領域としての記憶領域Ｐ０３，Ｐ１３のパーティション分割の態様は必ずしも同一である必要はなく、また、記憶領域Ｐ０３，Ｐ１３のサイズについても、必ずしも同一である必要はない。但し、記憶領域Ｐ０３，Ｐ１３のサイズを同一に設定すれば、ミラーオン領域を効率よく使用できる。
【００３９】
また、各々のパーティション毎に二重書き要否の設定（ミラーオン／ミラーオフ）を行うことも可能である。ミラーオフ設定をすると、データ転送制御部２４，３４相互間におけるキャッシュデータの転送が不要となるので、データ転送に伴うコントローラ２０，３０のオーバーヘッドを低減できる。
【００４０】
図４はＬＵＮとパーティション番号との対応関係を示している。この対応関係は、オペレータが管理端末７０を操作し、論理ボリュームとパーティションの割付変更をストレージシステム１０に指示することによって、適宜変更することが可能である（詳細については後述する。）。
【００４１】
図５は各パーティションに論理ボリュームを割り当てることで、リソース競合を抑制する概要を示している。パーティションＰ０１♯１には、アプリケーションプログラムＡＰ♯１が論理ボリュームＬＵ♯２に読み書きするキャッシュデータＤＡＴＡ２が格納され、パーティションＰ０１♯２には、アプリケーションプログラムＡＰ♯２が論理ボリュームＬＵ♯３に読み書きするキャッシュデータＤＡＴＡ３が格納される。アプリケーションプログラムＡＰ♯１は、データベース等の細かいランダムなアクセスを発行するプログラムであるのに対し、アプリケーションプログラムＡＰ♯２は、連続的な大量データを扱うストリーミング等のプログラムであるから、両者のＩ／Ｏ特性は大きく異なる。つまり、各パーティションＰ０１♯１，Ｐ０１♯２に格納されるキャッシュデータＤＡＴＡ２，ＤＡＴＡ３がキャッシュメモリ上に滞留する時間は異なるので、パーティション毎に独立したソース管理がなされていない場合には、リソース競合が生じる場合がある。
【００４２】
ところが、キャッシュメモリをパーティション分割し、各アプリケーションプログラムＡＰ♯１，ＡＰ♯２が使用できるキャッシュメモリのリソース資源を排他的に割り当てることにより、アプリケーションプログラムＡＰ♯１のキャッシュデータＤＡＴＡ２は、パーティションＰ０１♯２のリソース資源を消費することがない。同様に、アプリケーションプログラムＡＰ♯２のキャッシュデータＤＡＴＡ３は、パーティションＰ０１♯１のリソース資源を消費することがない。これにより、ある一つのアプリケーションプログラムの負荷がキャッシュメモリ全体に波及し、リソース競合が生じる事態を抑制できる。
【００４３】
尚、論理ボリュームＬＵ♯２，ＬＵ♯３を構成するディスクドライブの性能特性が異なる場合であっても、同様の理由により、リソース競合を抑制できる。
【００４４】
図６は各パーティションの論理構成を示している。ここでは、各記憶領域を４つのパーティションに分割する例を示す。各パーティションのパーティションサイズ、及びセグメントサイズは、アプリケーションプログラムのＩ／Ｏ特性に応じて最適な値に設定されている。一般的に、セグメントサイズを大きく設定すると、キャッシュデータをデステージングする際に、ダーティデータからクリーンデータへの状態遷移を管理する管理情報が少なくなるので、処理速度が向上し、オーバーヘッドを低減できる。セグメントサイズを小さく設定すると、キャッシュメモリのヒット率が向上する。例えば、動画配信等の大量のデータを連続的に扱うアプリケーションプログラムが使用するパーティションに対しては、セグメントサイズを大きく設定し、データベース等の細かいアクセスがランダムに発行されるアプリケーションプログラムが使用するパーティションに対しては、セグメントサイズを小さく設定するのが好ましい。
【００４５】
同図に示す例では、パーティションＰ０１♯０のセグメントサイズは１６ＫＢ（デフォルトサイズ）、パーティションＰ０１♯１のセグメントサイズは４ＫＢ、パーティションＰ０２♯０のセグメントサイズは６４ＫＢ、パーティションＰ０３♯０のセグメントサイズは５１２ＫＢに設定されている。
【００４６】
ミラーオン領域（記憶領域Ｐ０１，Ｐ０２，Ｐ１１，Ｐ１２）に限らず、ミラーオフ領域（記憶領域Ｐ０３，Ｐ１３）においても、各パーティションのパーティションサイズ、及びセグメントサイズは、アプリケーションプログラムのＩ／Ｏ特性に応じて最適な値に設定されている。
【００４７】
ストレージシステム１０の運用形態として、例えば、個々のアプリケーションプログラム毎に、パーティションサイズ、セグメントサイズ、二重書き要否等を予めデフォルト設定しておき、アプリケーションプログラムの種別をストレージシステム１０が判断すると、そのアプリケーションプログラムに対してデフォルト設定された設定値を基に、キャッシュメモリの最適な性能チューニングを行えるように、パーティションサイズ、セグメントサイズ、二重書き要否等を設定するように構成してもよい。
【００４８】
また、各パーティションのセグメントサイズは、アプリケーションプログラムのＩ／Ｏ特性の変化に応じて、自動的に、或いはオペレータの入力操作によって、電源を落とさずに、動的に設定変更可能である。例えば、パーティションＰ０１♯０のセグメントサイズは、デフォルトの１６ＫＢに設定されているが、Ｉ／Ｏ特性の変化に応じて、これを動的に拡大（例えば、６４ＫＢに設定変更）し、或いは縮小（例えば、４ＫＢに設定変更）することもできる。また、各パーティションのパーティションサイズを自動的に、或いはオペレータの入力操作によって、電源を落とさずに、動的に設定変更することもできる。大量のデータを扱うアプリケーションプログラムが使用するパーティションに対しては、パーティションサイズを大きく設定し、少量のデータを扱うアプリケーションプログラムが使用するパーティションに対しては、パーティションサイズを小さく設定することもできる。
【００４９】
セグメントサイズ、又はパーティションサイズをストレージシステム１０が自動的に設定変更する例として、例えば、キャッシュメモリ２５，３５のリソース競合状態をＣＰＵ２１，３１が監視し、各アプリケーションに最適となるように、セグメントサイズ、又はパーティションサイズを変更するように構成してもよい。
【００５０】
図７は各パーティションの物理構成と論理構成の対応関係を示している。キャッシュメモリは、複数のブロック（例えば、ＢＬＫ♯０，ＢＬＫ♯９，ＢＬＫ♯２５，ＢＬＫ♯２７）を個々のパーティション（例えば、Ｐ０１♯０）にマッピングすることにより、複数のパーティションに論理分割されている。各ブロックは、複数のセグメントＳＥＧによって構成されている。このように、パーティションの論理分割を、ブロックのマッピングによって実現することにより、パーティションサイズの変更は、ブロックのマッピング変更によって対応できるので、セグメントの移動量を最小限に抑えることができる。仮に、物理構成と論理構成を同一にすると、パーティションサイズを変更した場合に、パーティション境界を順番にずらしながら移動しなければならず、大量のセグメントを移動させなければならない場合も生じ得る。
【００５１】
図８はコントローラの主要構成を示している。図１に示した符号と同一符号のハードウエアは同一のハードウエアを示すものとして、その詳細な説明は省略する。キャッシュメモリ２５が提供する記憶領域は、主に、管理情報領域２５ａと、ユーザデータ領域２５ｂに分けられる。ユーザデータ領域２５ｂは、ユーザデータ（キャッシュデータ）を一時的に格納するための記憶領域であり、上述の如く複数のアプリケーションプログラムに対応して、複数のパーティションに分割される。管理情報領域２５ａは、ユーザデータを管理する上で必要な管理情報、例えば、データ属性（リードデータ／ライトデータ）、ホスト装置６０が指定するユーザデータの論理アドレス、キャッシュメモリ上の空きエリア情報、キャッシュデータの置き換えに関する優先順位の情報等が格納されている。
【００５２】
図９はセグメントと親サブセグメント管理ブロック及び子サブセグメント管理ブロックとの対応関係を示している。本実施例において、セグメントは、単一又は複数のサブセグメントから構成されており、セグメントを構成するサブセグメントの個数を調整することで、セグメントサイズを調整している。サブセグメントのサイズは予め固定サイズに設定されている。複数のサブセグメントからセグメントを構成する場合、当該セグメントにおいて、最初にアクセスされたサブセグメントを親サブセグメントと称し、２番目以降にアクセスされたサブセグメントを子サブセグメントと称する。親サブセグメントと子サブセグメントを区別しない場合には、単に、サブセグメントと称する。
【００５３】
同図において、ＳＳＥＧ１〜ＳＳＥＧ８は、アクセスされたサブセグメントを、そのアクセス順番とともに示している。サブセグメントのサイズが１６ＫＢにデフォルト設定されている場合、セグメントサイズを６４ＫＢにするには、サブセグメントを４つ集めてセグメントを構成する必要がある。例えば、ＳＳＥＧ１を親サブセグメントとし、その後に続く３つのサブセグメントＳＳＥＧ２〜ＳＳＥＧ４を子サブセグメントとして、互いに論理的に関連付けることにより、一つのセグメントを構成することができる。同様に、ＳＳＥＧ５を親サブセグメントとし、その後に続く３つのサブセグメントＳＳＥＧ６〜ＳＳＥＧ８を子サブセグメントとして、互いに論理的に関連付けることにより、一つのセグメントを構成することができる。
【００５４】
尚、親サブセグメントと子サブセグメントは、必ずしも連続した記憶領域上に配置されている必要はなく、キャッシュメモリ上の各所に離散的に点在していてもよい。
【００５５】
親サブセグメント管理ブロック８０は、親サブセグメントアドレス８１、順方向ポインタ８２、逆方向ポインタ８３、子サブセグメントポインタ８４、及び親サブセグメント管理情報８５を含む。親サブサブセグメントアドレス８１は、親サブセグメント管理ブロック８０が管理する親サブセグメントの位置を示す。順方向ポインタ８２は、最も古くアクセスされた順番に親サブセグメント管理ブロック８０を指し示す。逆方向ポインタ８３は、最も新しくアクセスされた順番に親サブセグメント管理ブロック８０を指し示す。子サブセグメントポインタ８４は、子サブセグメント管理ブロック９０を指し示す。親サブセグメント管理情報８５には、親サブセグメントのステータス（ダーティ／クリーン／フリー）等が格納される。親サブセグメント内にダーティデータとクリーンデータが混在する場合には、ビットマップ情報によって、そのステータスが管理される。
【００５６】
子サブセグメント管理ブロック９０は、子サブセグメントアドレス９１、順方向ポインタ９２、及び子サブセグメント管理情報９３を含む。子サブサブセグメントアドレス９１は、子サブセグメント管理ブロック９０が管理する子サブセグメントの位置を示す。順方向ポインタ９２は、最も古くアクセスされた順番に子サブセグメント管理ブロック９０を指し示す。子サブセグメント管理情報９３には、子サブセグメントのステータス等が格納される。子サブセグメント内にダーティデータとクリーンデータが混在する場合には、ビットマップ情報によって、そのステータスが管理される。
【００５７】
先頭ポインタ１０１は、順方向ポインタ８１の最後尾を指し示し、後方ポインタ１０２は、先頭の逆方向ポインタ８２によって指し示される。
【００５８】
このようにして、キュー管理される親サブセグメント管理ブロック８０と、子サブセグメント管理ブロック９０は、ステータスがダーティデータの場合には、ダーティーキューとして管理され、ステータスがクリーンデータの場合には、クリーンキューとして管理される。親サブセグメントと複数の子サブセグメントを論理的に関連付けてセグメントを構成することにより、親サブセグメントが状態遷移すると、子サブセグメントも状態遷移するので、デステージング処理を高速化できる。
【００５９】
図１０はパーティションサイズ自動変更処理ルーチンのフローチャートを示している。アプリケーションプログラムＡＰ♯０，ＡＰ♯１，…，ＡＰ♯Ｎはその用途に応じて、２４時間常時稼働することが要求されるものや、ある特定の時間帯に稼働率が高くなるもの等、様々な種類が存在し、その負荷は時間帯毎に異なる場合がある。アプリケーションプログラムの性能を適正に発揮させるために、時間帯毎の負荷変動に応じてパーティションサイズを変更するのが好ましい。例えば、あるアプリケーションプログラムが稼働しない夜間において、他のアプリケーションプログラムが使用するパーティションサイズを大きくする場合等である。
【００６０】
パーティションサイズ自動変更処理ルーチンが呼び出されると、ＣＰＵ２１は、タイマ２９が刻む現在時刻がタイマ設定時刻に一致するか否かをチェックする（Ｓ１０１）。現在時刻がタイマ設定時刻になると（Ｓ１０１；ＹＥＳ）、ＣＰＵ２１は、オペレータが予め指定したパーティションサイズより大きいパーティションサイズを有するパーティションを変更元パーティションとし、オペレータが予め指定したパーティションサイズより小さいパーティションサイズを有するパーティションを変更先パーティションとして選択する（Ｓ１０２）。
【００６１】
例えば、パーティションＰ０１＃０のサイズがユーザデータ領域２５ｂの１０％、パーティションＰ０１＃１のサイズがユーザデータ領域２５ｂの５％に設定されていると仮定し、パーティションＰ０１＃１のサイズを７％に変更するには、２％分のブロックをパーティションＰ０１＃０からパーティションＰ０１＃１へ移動させればよい。このとき、パーティションＰ０１＃０が変更元パーティションとなり、パーティションＰ０１＃１が変更先パーティションとなる。但し、変更元パーティションが複数存在する場合は、その時間帯において、最も稼働率が低いアプリケーションプログラムが使用するパーティションを優先的に変更元パーティションとして選択してもよい。
【００６２】
次に、ＣＰＵ２１は、変更元パーティションから変更先パーティションへ移動するブロックを確保して、そのブロック内のダーティデータをデステージし（Ｓ１０３）、そのブロック内のサブセグメントを管理する親サブセグメント管理ブロックと子サブセグメント管理ブロックをデキューする（Ｓ１０４）。
【００６３】
次に、ＣＰＵ２１は、変更先パーティションのセグメントサイズが最小サイズ（サブセグメントサイズ）であるか否かをチェックする（Ｓ１０５）。変更先パーティションのセグメントサイズが最小サイズでない場合には（Ｓ１０５；ＮＯ）、ＣＰＵ２１は、親サブセグメントに子サブセグメントが接続されるように、親サブセグメント管理ブロック８０と子サブセグメント管理ブロック９０のキュー管理を再編成し（Ｓ１０６）、この再編成処理を子サブセグメント数分繰り返すことで（Ｓ１０７）、変更元パーティションから変更先パーティションに移動するブロックのセグメントサイズを変更先パーティションのセグメントサイズに一致させる。
【００６４】
セグメントサイズが最小サイズでない場合（Ｓ１０５；ＮＯ）、又はＳ１０６の処理が子サブセグメント数分終了した場合（Ｓ１０７；ＹＥＳ）には、ＣＰＵ２１は、親サブセグメント同士が接続されるように、親サブセグメント管理ブロック８０のキュー管理を再編成し（Ｓ１０８）、全てのパーティションが指定のサイズとなるまで、この再編成処理を繰り返す（Ｓ１０９）。
【００６５】
次に、ＣＰＵ２１は、キャッシュメモリ２５がミラーオフ設定されているか否かをチェックし（Ｓ１１０）、ミラーオフ設定されていない場合には（Ｓ１１０；ＮＯ）、キャッシュメモリ３５のミラーオン領域についても、同様に、パーティションサイズの変更を行うように、ＣＰＵ３１に指示を送る（Ｓ１１１）。これにより、キャッシュメモリ２５，３５のミラーオン領域のパーティションサイズとセグメントサイズは同一となる。一方、キャッシュメモリ２５にミラーオフ設定されている場合には（Ｓ１１０；ＹＥＳ）、キャッシュメモリ３５のパーティションサイズ等を変更する必要がないので、ＣＰＵ２１は、オペレータに完了報告をし（Ｓ１１２）、本ルーチンを抜ける。
【００６６】
図１１はパーティションサイズ手動変更処理ルーチンのフローチャートを示している。オペレータは管理端末７０を操作することによって、ストレージシステム１０にパーティションサイズの変更を指示することができる。例えば、オペレータは、管理端末７０のディスプレイに表示される各アプリケーションプログラムの負荷変動を監視し、個々のアプリケーションに最適なパーティションサイズを割り当てることができる。
【００６７】
パーティションサイズ手動変更処理ルーチンが呼び出されると、ＣＰＵ２１は、オペレータからパーティションサイズの変更指示を受け付ける（Ｓ２０１）。すると、ＣＰＵ２１は、オペレータが指定したパーティションサイズより大きいパーティションサイズを有するパーティションを変更元パーティションとし、オペレータが指定したパーティションサイズより小さいパーティションサイズを有するパーティションを変更先パーティションとして選択する（Ｓ２０２）。
【００６８】
次に、ＣＰＵ２１は、変更元パーティションから変更先パーティションへ移動するブロックを確保し、そのブロック内のダーティデータをデステージし（Ｓ２０３）、そのブロック内のサブセグメントを管理する親サブセグメント管理ブロックと子サブセグメント管理ブロックをデキューする（Ｓ２０４）。
【００６９】
次に、ＣＰＵ２１は、変更先パーティションのセグメントサイズが最小サイズ（サブセグメントサイズ）であるか否かをチェックする（Ｓ２０５）。変更先パーティションのセグメントサイズが最小サイズでない場合には（Ｓ２０５；ＮＯ）、ＣＰＵ２１は、親サブセグメントに子サブセグメントが接続されるように、親サブセグメント管理ブロック８０と子サブセグメント管理ブロック９０のキュー管理を再編成し（Ｓ１２６）、この再編成処理を子サブセグメント数分繰り返すことで（Ｓ２０７）、変更元パーティションから変更先パーティションに移動するブロックのセグメントサイズを変更先パーティションのセグメントサイズに一致させる。
【００７０】
セグメントサイズが最小サイズでない場合（Ｓ２０５；ＮＯ）、又はＳ２０６の処理が子サブセグメント数分終了した場合（Ｓ２０７；ＹＥＳ）には、ＣＰＵ２１は、親サブセグメント同士が接続されるように、親サブセグメント管理ブロック８０のキュー管理を再編成し（Ｓ２０８）、全てのパーティションが指定のサイズとなるまで、この再編成処理を繰り返す（Ｓ２０９）。
【００７１】
次に、ＣＰＵ２１は、キャッシュメモリ２５がミラーオフ設定されているか否かをチェックし（Ｓ２１０）、ミラーオフ設定されていない場合には（Ｓ２１０；ＮＯ）、キャッシュメモリ３５のミラーオン領域についても、同様に、パーティションサイズの変更を行うように、ＣＰＵ３１に指示を送る（Ｓ２１１）。一方、キャッシュメモリ２５にミラーオフ設定されている場合には（Ｓ２１０；ＹＥＳ）、キャッシュメモリ３５のパーティションサイズ等を変更する必要がないので、ＣＰＵ２１は、オペレータに完了報告をし（Ｓ２１２）、本ルーチンを抜ける。
【００７２】
図１２はセグメントサイズ変更処理ルーチンのフローチャートを示している。上述の如くセグメントサイズはアプリケーションプログラムのＩ／Ｏ特性に応じて定められ、個々のアプリケーションプログラム毎にデフォルト設定されたセグメントサイズで運用するのが便宜であるが、アプリケーションプログラムのＩ／Ｏ特性の変動等に対応できるようにセグメントサイズを適宜変更できるように構成するのが望ましい。オペレータは管理端末７０を操作することによって、ストレージシステム１０にセグメントサイズの変更を指示することができる。
【００７３】
セグメントサイズ変更処理ルーチンが呼び出されると、ＣＰＵ２１は、オペレータからセグメントサイズの変更指示を受け付ける（Ｓ３０１）。セグメントサイズの変更指示には、変更対象のパーティションと、変更後のセグメントサイズが含まれる。ＣＰＵ２１は、パーティションサイズの変更作業に備えて、変更対象パーティションに対応付けられた論理ボリュームへのＩ／Ｏを抑止し（Ｓ３０２）、変更対象パーティション内のダーティデータをデステージする（Ｓ３０３）。デステージ完了後、ＣＰＵ２１は、変更後のセグメントサイズ分だけ、親サブセグメント管理ブロックと子サブセグメント管理ブロックをデキューする（Ｓ３０４）。
【００７４】
次に、ＣＰＵ２１は、セグメントサイズ変更後のセグメントサイズが最小サイズ（サブセグメントサイズ）であるか否かをチェックする（Ｓ３０５）。変更後のセグメントサイズが最小サイズでない場合には（Ｓ３０５；ＮＯ）、ＣＰＵ２１は、変更後のセグメントサイズ分だけ複数のサブセグメントを確保する（Ｓ３０６）。そして、ＣＰＵ２１は、親サブセグメントに子サブセグメントが接続されるように、親サブセグメント管理ブロック８０と子サブセグメント管理ブロック９０のキュー管理を再編成し（Ｓ３０７）、この再編成処理を子サブセグメント数分繰り返すことで（Ｓ３０８）、指定されたセグメントサイズに調整する。
【００７５】
セグメントサイズが最小サイズでない場合（Ｓ３０５；ＮＯ）、又はＳ３０７の処理が子サブセグメント数分終了した場合（Ｓ３０８；ＹＥＳ）には、ＣＰＵ２１は、親サブセグメント同士が接続されるように、親サブセグメント管理ブロック８０のキュー管理を再編成し（Ｓ３０９）、変更対象パーティション全体が指定セグメントサイズとなるまで、この再編成処理を繰り返す（Ｓ３１０）。次に、ＣＰＵ２１は、変更対象パーティションに対応付けられた論理ボリュームへのＩ／Ｏ抑止を解除し（Ｓ３１１）、オペレータに完了報告をして（Ｓ３１２）、本ルーチンを抜ける。
【００７６】
尚、セグメントサイズを変更する場合に、必ずしも、変更対象パーティションのダーティデータを全てデステージしてからセグメントサイズを変更する必要はなく、例えば、変更対象パーティション内の一部のダーティデータをデステージし、ある程度のサブセグメントを確保できた段階で、論理ボリュームへのＩ／Ｏ抑止を解除し、論理ボリュームへのＩ／Ｏ処理と並行して、セグメントサイズの変更処理をバックグランドで行うようにしてもよい。
【００７７】
また、他の手法として、変更対象パーティションのデステージ完了まで、論理ボリュームへのＩ／Ｏ抑止をせずに、例えば、ライトスルー方式を採用することで、Ｉ／Ｏ停止時間を削減してもよい。ここで、ライトスルー方式とは、キャッシュメモリ２５，３５にライトデータを書かずに、ディスク装置４０に直接書き込む方式をいう。
【００７８】
図１３はパーティション／ＬＵ割付変更処理ルーチンのフローチャートである。オペレータは管理端末７０を操作することによって、パーティションへの論理ボリュームの割付変更をストレージシステム１０に指示することができる。
【００７９】
パーティション／ＬＵ割付変更処理ルーチンが呼び出されると、ＣＰＵ２１は、オペレータからパーティションへの論理ボリュームの割付変更指示を受け付ける（Ｓ４０１）。そして、ＣＰＵ２１は、パーティション／ＬＵ割付変更作業に備えて、変更対象論理ボリュームへのＩ／Ｏを抑止し（Ｓ４０２）、変更対象論理ボリュームに割り当てられたキャッシュメモリ２５，３５上のダーティデータをデステージする（Ｓ４０３）。
【００８０】
次に、ＣＰＵ２１は、変更対象論理ボリュームに割り当てるパーティションをオペレータ指定のパーティションに変更する（Ｓ４０４）。そして、変更対象論理ボリュームへのＩ／Ｏ抑制を解除し（Ｓ４０５）、オペレータに完了報告をして（Ｓ４０６）、本ルーチンを抜ける。
【００８１】
図１４乃至図１９はパーティションサイズの参照又は変更、セグメントサイズの参照又は変更、パーティションへの論理ボリュームの割り当ての参照又は変更等を行うときに管理端末７０に表示される画面イメージである。以下、これらの表示画面について、説明を加える。
【００８２】
図１４はユニット画面の表示例を示している。オペレータは、このユニット画面にて、各種設定値の参照又は変更等を行うことができる。ユニット画面の左側のツリーには、「Cache Partition」オブジェクトの下位に「パーティション」オブジェクトと「ロジカルユニット」オブジェクトが表示される。オペレータは、パーティションサイズの参照又は変更、或いはセグメントサイズの参照又は変更を行うときは、「パーティション」オブジェクトを選択する。すると、画面イメージは、図１４から図１５に遷移する。一方、オペレータは、パーティションへの論理ボリュームの割り当てを参照し、又は変更するときは、「ロジカルユニット」オブジェクトを選択する。すると、画面イメージは、図１４から図１７に遷移する。
【００８３】
図１５はパーティションの参照・変更画面を示している。同画面の右上には、「現在値」が表示され、同画面の右下には、「設定値」が表示される。オペレータは、「変更」ボタンをクリックすることにより、キャッシュ総容量、キャッシュ空き容量、各パーティションのコントローラ番号、パーティションサイズ、セグメントサイズ等の設定値を変更することができる。オペレータが「変更」ボタンをクリックすると、画面イメージは、図１５から図１６に遷移する。
【００８４】
図１６はパーティション変更画面を示している。オペレータは、この画面を通じて、各パーティションの名称、コントローラ番号、パーティションサイズ、セグメントサイズを変更することが可能である。更に、「追加」ボタンをクリックすることにより、パーティションを新たに追加することも可能である。「削除」ボタンをクリックすることにより、パーティションを削除することも可能である。オペレータは、パーティションサイズ又はセグメントサイズ等について、新たな「設定値」を入力し、「ＯＫ」ボタンをクリックすると（この操作は、上述したパーティションサイズ変更指示（Ｓ２０１）、又はセグメントサイズ変更指示（Ｓ３０１）に相当する。）、新たな「設定値」が装置に反映される。
【００８５】
図１７は論理ボリュームへのパーティション割り当て設定画面を示している。この画面には、現時点における、論理ボリュームへのパーティション割り当て状態が表示される。同図に示す例では、ＬＵＮ００００には、Mastor0と称されるパーティションが割り当てられ、ＬＵＮ０００１には、Sampleと称されるパーティションが割り当てられている。オペレータが「変更」ボタンをクリックすると、画面イメージは、図１７から図１８に遷移する。
【００８６】
図１８はパーティション割り当て変更画面を示している。オペレータが「割り当ての変更」ボタンをクリックすると、画面イメージは、図１８から図１９に遷移する。
【００８７】
図１９はパーティション指定画面を示している。この画面の「ロジカルユニット番号」には、設定対象の論理ボリュームが表示される。オペレータは、「キャッシュパーティション」のプルダウンメニューから、当該論理ボリュームに割り当てたいパーティションを選択し、「ＯＫ」ボタンをクリックすると（この操作は、上述したパーティション割付変更指示（Ｓ４０１）に相当する。）、新たな「設定値」が装置に反映される。
【００８８】
尚、上述の説明においては、オペレータが管理端末７０を操作することにより、キャッシュメモリ２５，３５の性能チューニング（パーティション分割、パーティションサイズ設定、セグメントサイズ設定、二重化要否設定、パーティションへの論理ボリュームの割り当て設定又は割当変更等）を行う構成を例示したが、例えば、図２０に示すように、ホスト装置６０に実装されたミドルウエア６２がアプリケーションプログラムＡＰ♯０，ＡＰ♯１，…，ＡＰ♯ＮのＩ／Ｏ特性を監視し、そのＩ／Ｏ特性の変動等に応じて、ストレージシステム１０に対して、パーティション分割、パーティションサイズ設定、セグメントサイズ設定、二重化要否設定、パーティションへの論理ボリュームの割り当て設定又は割当変更等を指示し、個々のアプリケーションプログラムＡＰ♯０，ＡＰ♯１，…，ＡＰ♯Ｎに最適なキャッシュメモリ２５，３５の性能チューニングを行うように構成してもよい。
【００８９】
本実施例によれば、複数の論理ボリュームのそれぞれに対して、複数のパーティションのそれぞれを排他的に割り当てることにより、各プリケーションプログラムに対して排他的に割り当てられた論理ボリューム間のリソース競合を抑制し、最適なキャッシュメモリの性能チューニングを行うことができる。
【００９０】
また、ディスクドライブ４０の性能特性が異なる場合であっても、複数の論理ボリュームのそれぞれに対して複数のパーティションをそれぞれ排他的に割り当てることにより、ディスクドライブ４０の性能特性の相違によるキャッシュメモリ２５，３５のリソース競合を抑制し、最適なキャッシュメモリの性能チューニングを行うことができる。
【実施例２】
【００９１】
図２１は本実施例に係るストレージシステムの主要構成を示している。図１に示した符号と同一符号のハードウエアは同一のハードウエアを示すものとして、その詳細な説明は省略する。
【００９２】
ローカルメモリ２３には、ＣＰＵ２１のマイクロプログラムを格納するプログラム領域２３ｂに加えて、ユーザデータを管理する上で必要な管理情報、例えば、データ属性（リードデータ／ライトデータ）、ホスト装置６０が指定するユーザデータの論理アドレス、キャッシュメモリ上の空きエリア情報、キャッシュデータの置き換えに関する優先順位の情報等を格納するための管理情報領域２３ａが設けられている。一方、キャッシュメモリ２５には、ユーザデータ（キャッシュデータ）を一時的に格納するためのユーザデータ格納領域２５ｂは設けられているものの、ユーザデータを管理するための管理情報領域は設けられていない。
【００９３】
ホスト装置６０からストレージシステム１０に対してライトアクセスがなされると、ＣＰＵ２１は、ローカルメモリ２３の管理情報領域２３ａを参照して、キャッシュメモリ２５のユーザデータ領域２５ｂ上における空きエリアを検索し、ライトデータをその空き領域に書き込む。また、ホスト装置６０からストレージシステム１０に対してリードアクセスがなされると、ＣＰＵ２１は、ローカルメモリ２３の管理情報領域２３ａを参照して、キャッシュヒット判定を行う。実施例１のように管理情報領域２５ａがキャッシュメモリ２５にある場合には、ＰＣＩバス２８を経由してメモリアクセスしなければならず、高速アクセスが困難であったが、本実施例のように、管理情報領域２３ａがローカルメモリ２３にある場合には、高速アクセスが可能であり、メモリアクセスにかかるオーバーヘッドを低減することが可能である。
【００９４】
尚、ＣＰＵ２１内部にローカルメモリ２３を実装し、そのローカルメモリ２３内に管理情報領域２３ａを設ける構成としてもよい。
【実施例３】
【００９５】
図２２は本実施例に係るストレージシステムの主要構成を示している。図１又は図２１に示した符号と同一符号のハードウエアは同一のハードウエアを示すものとして、その詳細な説明は省略する。
【００９６】
ローカルメモリ２３とキャッシュメモリ２５のそれぞれには、キャッシュデータの管理情報を格納する管理情報領域２３ａ，２５ａが設けられており、管理情報が２元管理されている。ＣＰＵ２１は、ホスト装置６０からライトアクセス、又はリードアクセスに対しては、ローカルメモリ２３の管理情報領域２３ａを参照することにより、ユーザデータ領域２５ｂにおける空きエリアの検索、又はキャッシュヒット判定を行う。ＣＰＵ２１は、ホスト装置６０からのライトアクセスに対して、ユーザデータ領域２５ｂの空きエリアにライトデータを書き込むと、管理情報領域２３ａ，２５ａに格納されている両方の管理情報をアップデートする。管理情報のアップデートは、ＣＰＵ２１が行ってもよく、或いはＣＰＵ２１の指示に従って、データ転送制御部２４が行ってもよい。
【００９７】
図２３は電源障害時の復旧処理ルーチンのフローチャートを示している。ストレージシステム１０に突発的な電源障害が生じた場合、揮発性のローカルメモリ２３に格納されている管理情報は消失してしまうが、電源バックされているキャッシュメモリ２５の管理情報は消失することなく、保持される。そこで、障害回復時には、電源再投入を契機に、キャッシュメモリ２５上の管理情報をローカルメモリ２３に複写することで、消失した管理情報の復元を行うのが望ましい。この復元処理をしている間は、ストレージシステム１０は、ホスト装置６０からのＩ／Ｏ処理を一時的に停止するか、或いはＩ／Ｏ受付キューイングのみ行って、Ｉ／Ｏ実行を停止するか、又は管理情報領域２５ａを参照することにより、ホスト装置６０からのＩ／Ｏ処理を行ってもよい。
【００９８】
電源障害時の復旧処理ルーチンにおいて、電源投入が行われると（Ｓ５０１）、ＣＰＵ２１は、前回のシステム停止が電源障害によるものであったか否かをチェックする（Ｓ５０２）。電源障害で停止していた場合には（Ｓ５０２；ＹＥＳ）、ＣＰＵ２１は、キャッシュメモリ２５が不揮発性か否かをチェックする（Ｓ５０３）。キャッシュメモリ２５が電源バックアップされている等の理由により、不揮発性である場合には（Ｓ５０３；ＹＥＳ）、キャッシュメモリ２５上の管理情報をローカルメモリ２３に複写する（Ｓ５０４）。
【００９９】
一方、前回のシステム停止が電源障害によるものではなく、管理情報が消失してない場合には（Ｓ５０２；ＮＯ）、システム運用上問題がないため、通常通り、キャッシュメモリ２５の初期化を行う（Ｓ５０５）。キャッシュメモリ２５が揮発性であり、管理情報が消失してしまった場合には（Ｓ５０３；ＮＯ）、管理情報の復元は無理なので、この場合においても、通常通り、キャッシュメモリ２５の初期化を行う（Ｓ５０５）。そして、ＣＰＵ２１は、ホスト装置６０からＩ／Ｏ処理準備を行い（Ｓ５０６）、Ｉ／Ｏ処理を開始する（Ｓ５０７）。
【０１００】
本実施例によれば、高速アクセス可能なローカルメモリ２３からキャッシュデータの管理情報を取得して、メモリアクセスのオーバーヘッドを低減しつつ、電源障害時の管理情報の消失に対しては、不揮発性のキャッシュメモリ２５に保持されている管理情報を元にローカルメモリ２３の管理情報を復元するため、システムの耐障害性を高めることができる。
【図面の簡単な説明】
【０１０１】
【図１】ストレージシステムの主要構成を示すブロック図である。
【図２】キャッシュデータの二重書きを示す説明図である。
【図３】各パーティションと論理ボリュームとの対応関係を示す図である。
【図４】ＬＵＮとパーティション番号との対応関係を示す図である。
【図５】キャッシュ分割によりリソース競合を抑制する概要を示す図である。
【図６】各パーティションの論理構成を示している。
【図７】各パーティションの物理構成と論理構成の対応関係を示している。
【図８】コントローラの主要構成図である。
【図９】セグメントとその管理情報との対応関係を示す図である。
【図１０】パーティションサイズ自動変更処理ルーチンのフローチャートである。
【図１１】パーティションサイズ手動変更処理ルーチンのフローチャートである。
【図１２】セグメントサイズ変更処理ルーチンのフローチャートである。
【図１３】パーティション／ＬＵ割付変更処理ルーチンのフローチャートである。
【図１４】ユニット画面の表示例である。
【図１５】パーティションの参照・変更画面の表示例である。
【図１６】パーティション変更画面の表示例である。
【図１７】論理ボリュームへのパーティション割り当て設定画面の表示例である。
【図１８】パーティション割り当て変更画面の表示例である。
【図１９】パーティション指定画面の表示例である。
【図２０】ストレージシステムの主要構成を示すブロック図である。
【図２１】ストレージシステムの主要構成を示すブロック図である。
【図２２】ストレージシステムの主要構成を示すブロック図である。
【図２３】電源障害時の復旧処理ルーチンのフローチャートである。
【符号の説明】
【０１０２】
１０…ストレージシステム
２０，３０…コントローラ
２１，３１…ＣＰＵ
２２，３２…ＣＰＵ／ＰＣＩブリッジ
２３，３３…ローカルメモリ
２４，３４…データ転送制御部
２５，３５…キャッシュメモリ
２６，３６…ホストＩ／Ｆ制御部
２７，３７…ドライブＩ／Ｆ制御部
２８，３８…ＰＣＩバス
２９，３９…タイマ
４０…ディスクドライブ
７０…管理端末
【図１】
2006227688.tif 000003
【図２】
2006227688.tif 000004
【図３】
2006227688.tif 000005
【図４】
2006227688.tif 000006
【図５】
2006227688.tif 000007
【図６】
2006227688.tif 000008
【図７】
2006227688.tif 000009
【図８】
2006227688.tif 000010
【図９】
2006227688.tif 000011
【図１０】
2006227688.tif 000012
【図１１】
2006227688.tif 000013
【図１２】
2006227688.tif 000014
【図１３】
2006227688.tif 000015
【図１４】
2006227688.tif 000016
【図１５】
2006227688.tif 000017
【図１６】
2006227688.tif 000018
【図１７】
2006227688.tif 000019
【図１８】
2006227688.tif 000020
【図１９】
2006227688.tif 000021
【図２０】
2006227688.tif 000022
【図２１】
2006227688.tif 000023
【図２２】
2006227688.tif 000024
【図２３】
2006227688.tif 000025