ストレージシステム
【課題】 複数のアプリケーションプログラムに共用されるストレージシステムにおいて、個々のアプリケーションプログラムのそれぞれに対して、最適なキャッシュメモリの性能チューニングを行えるストレージシステムを提供する。
【解決手段】 本発明のストレージシステムは、複数のアプリケーションプログラムからアクセス可能な複数の論理ボリュームを提供する記憶デバイスと、複数のアプリケーションプログラムからの入出力要求に応答して、論理ボリュームへのデータの入出力を制御するコントローラと、論理ボリュームに入出力されるデータを一時的に格納するキャッシュメモリと、を備え、キャッシュメモリは、複数の論理ボリュームのそれぞれに対して排他的に割り当てられた複数のパーティションに論理分割されている。
【解決手段】 本発明のストレージシステムは、複数のアプリケーションプログラムからアクセス可能な複数の論理ボリュームを提供する記憶デバイスと、複数のアプリケーションプログラムからの入出力要求に応答して、論理ボリュームへのデータの入出力を制御するコントローラと、論理ボリュームに入出力されるデータを一時的に格納するキャッシュメモリと、を備え、キャッシュメモリは、複数の論理ボリュームのそれぞれに対して排他的に割り当てられた複数のパーティションに論理分割されている。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は複数のアプリケーションプログラムのそれぞれに対して、最適なキャッシュメモリの性能チューニングを行えるストレージシステムに関する。
【背景技術】
【0002】
近年、サーバ毎に分散配置されていたストレージを一箇所に集約し、SAN(Storage Area Network)等のストレージ専用ネットワークを介してサーバ群に接続するストレージコンソリデーションが普及している。ストレージコンソリデーションの運用形態として、複数のアプリケーションプログラム又はコンテンツによるストレージシステムの共用が増えてきている。ストレージシステムは、例えば、ディスクアレイ装置等から構成される。ディスクアレイ装置は、多数のディスクドライブをアレイ状に配設して構成されるもので、例えば、RAID(Redundant Array of Independent Inexpensive Disks)に基づいて構築されている。ディスクドライブ群が提供する物理的な記憶領域上には、少なくとも1つ以上の論理ボリュームが形成され、この論理ボリュームがホスト装置に提供される。ホスト装置は、ストレージシステムに対してライトコマンド又はリードコマンドを発行することにより、論理ボリュームに対するデータの読み書きを行うことができる。
【0003】
この種のストレージシステムにおいては、ディスクドライブに書き込むためのライトデータ、又はディスクドライブから読み出したリードデータを一時的に記憶するためのキャッシュメモリが実装されており、ホスト装置に対するI/O処理の高速化を実現している(例えば、特許文献1)。例えば、ホスト装置からディスクドライブへのライトアクセスに対しては、キャッシュメモリへのライトデータの書き込みを以ってライト処理の完了をホスト装置に通知し、キャッシュデータが一定量蓄積した段階でデステージを行う。ホスト装置からのディスクドライブへのリードアクセスに対しては、リードデータがキャッシュメモリにヒットしている場合は、キャッシュメモリから読み出すことにより、高速アクセスを実現する。
【特許文献1】特開2001−166993号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、各アプリケーションプログラムのI/O特性はそれぞれ異なるため、そのI/O特性に合わせて、キャッシュメモリの性能チューニング(例えば、セグメントサイズの設定、二重書きの要否等)を最適化する必要がある。
【0005】
例えば、動画又は静止画等のコンテンツをストリーミング配信するアプリケーションプログラムのように、大量のデータを連続的に処理するアプリケーションプログラムに対しては、キャッシュメモリのセグメントサイズを大きく設定して、オーバーヘッドを低減するのが望ましい。これに対し、データベース等のように細かいアクセスがランダムに発行されるアプリケーションプログラムに対しては、セグメントサイズを小さく設定して、オーバーヘッドを低減するのが望ましい。
【0006】
また、例えば、銀行のオンラインサービスのように、高信頼性が要求されるアプリケーションプログラムに対しては、キャッシュデータの二重化を実施して障害発生時にもデータを確実に保存する必要がある。これに対し、天気予報等の一時的なシミュレーションや科学技術計算のように、別の手段で保存されたソースデータを元に演算を行う場合には、途中の演算結果(テンポラリなデータ)を保存するのに、キャッシュメモリへの二重書きによる高信頼性を確保するよりも、性能が重視される場合もある。
【0007】
従来のストレージシステムでは、個々のアプリケーションプログラム毎に、そのI/O特性に応じて、セグメントサイズの設定や二重書きの要否等の性能チューニングを行うことはできなかったため、複数のアプリケーションプログラムに共用されるストレージシステムにおいて、あるアプリケーションプログラムに最適なキャッシュメモリのチューニングを行うと、他のアプリケーションプログラムの性能が低下してしまうという不都合が生じていた。例えば、ストリーミングサービスを提供するアプリケーションプログラム用にセグメントサイズを大きく設定すると、データベースのようなアプリケーションプログラムでは、キャッシュメモリのヒット率が低下してしまう。
【0008】
更に、複数のアプリケーションプログラムによって共用されるストレージシステムにおいては、アプリケーションプログラム間のリソース競合が生じ得るので、各アプリケーションプログラムの性能を適正に発揮させるためにも、リソース競合を抑制する必要がある。例えば、負荷の異なる複数のアプリケーションプログラムにより共有されるストレージシステムでは、高負荷のアプリケーションプログラムから、より多くの書き込みを受けるため、キャッシュメモリが高負荷のアプリケーションプログラムのデータで埋め尽くされてしまい、他のアプリケーションプログラムとの間にリソース競合が生じる場合がある。
【0009】
このようなリソース競合は、I/O特性の異なる複数のアプリケーションプログラム間だけでなく、性能特性の異なる複数のディスクドライブ間にも生じ得る。例えば、ファイバチャネル・ディスクドライブとATA(Advanced Technology Attachment)ディスクドライブとを混載したストレージシステムにおいては、ATAディスクドライブの方がファイバチャネル・ディスクドライブよりもアクセスに時間がかかるので、キャッシュメモリからファイバチャネル・ディスクドライブへのデステージングに要する時間よりも、キャッシュメモリからATAディスクドライブへのデステージングに要する時間の方が長い。すると、ATAディスクドライブを利用するアプリケーションプログラムのデータがキャッシュメモリに留まる時間がその分長くなるので、キャッシュメモリ上にATAディスクドライブのデータが溜まり、リソース競合が生じることとなる。
【0010】
本発明は、上記の問題点に鑑みてなされたもので、本発明の目的の一つは、複数のアプリケーションプログラムに共用されるストレージシステムにおいて、個々のアプリケーションプログラムのそれぞれに対して、最適なキャッシュメモリの性能チューニングを行えるストレージシステムを提供することにある。
【0011】
本発明の目的の一つは、複数のアプリケーションプログラムに共用されるストレージシステムにおいて、I/O特性の異なる複数のアプリケーションプログラム間、又は性能特性の異なる複数の記憶デバイス間におけるキャッシュメモリのリソース競合による性能低下を抑制するストレージシステムを提供することである。
【課題を解決するための手段】
【0012】
上記の課題を解決するため、本発明のストレージシステムは、複数のアプリケーションプログラムからアクセス可能な複数の論理ボリュームを提供する記憶デバイスと、複数のアプリケーションプログラムからの入出力要求に応答して、論理ボリュームへのデータの入出力を制御するコントローラと、論理ボリュームに入出力されるデータを一時的に格納するキャッシュメモリと、を備え、キャッシュメモリは、複数の論理ボリュームのそれぞれに対して排他的に割り当てられた複数のパーティションに論理分割されている。
【0013】
複数の論理ボリュームのそれぞれに対して、複数のパーティションのそれぞれを排他的に割り当てることにより、各アプリケーションプログラムに対して排他的に割り当てられた論理ボリューム間のリソース競合を抑制し、最適なキャッシュメモリの性能チューニングを行うことができる。
【0014】
また、記憶デバイスの性能特性が異なる場合であっても、複数の論理ボリュームのそれぞれに対して、複数のパーティションをそれぞれ排他的に割り当てることにより、記憶デバイスの性能特性の相違によるキャッシュメモリのリソース競合を抑制し、最適なキャッシュメモリの性能チューニングを行うことができる。
【発明を実施するための最良の形態】
【0015】
以下、各図を参照して、本発明の実施形態について説明する。各実施例は特許請求の範囲を限定するものではなく、また実施例で説明されている特徴の全てが発明の解決手段に必須であるとは限らない。
【実施例1】
【0016】
図1は本実施例に係るストレージシステムの主要構成を示している。
ストレージシステム10は、通信ネットワーク50を介して一台又は複数台のホスト装置(上位装置)60に接続している。ホスト装置60は、ストレージシステム10の上位装置として機能するサーバ装置、パーソナルコンピュータ、ワークステーション、メインフレーム等である。ホスト装置60には、OS(Operating System)61上で動作する複数のアプリケーションプログラムAP♯0,AP♯1,…,AP♯Nが実装されている。ストレージシステム10が提供する記憶資源は、複数のアプリケーションプログラムAP♯0,AP♯1,…,AP♯Nによって共用されている。
【0017】
通信ネットワーク50としては、例えば、SAN(Storage Area Network)、LAN(Local Area Network)、インターネット、専用回線、公衆回線等を挙げることができる。ホスト装置60がSANを介してストレージシステム10に接続する場合、ホスト装置60は、ファイバチャネルプロトコルに従って、ストレージシステム10の記憶資源のデータ管理単位であるブロックを単位としてデータ入出力を要求する。ホスト装置60がLANを介してストレージシステム10に接続する場合、ホスト装置60は、NFS(Network File System)やiSCSI(internet Small Computer System Interface)等のプロトコルにより、ファイル名を指定してファイル単位でのデータ入出力を要求する。ストレージシステム10がホスト装置60からのファイルアクセス要求を受け付けるためには、NAS(Network Attached Storage)機能を搭載する必要がある。
【0018】
ストレージシステム10は、二重化されたコントローラ20,30を備えるデュアルコントローラ構成を採用しており、複数のアプリケーションプログラムAP♯0,AP♯1,…,AP♯Nに提供される記憶デバイスとして、複数のディスクドライブ40を備える。ディスクドライブ40として、例えば、ファイバチャネル・ディスクドライブ、シリアルATAディスクドライブ、パラレルATAディスクドライブ、SCSIディスクドライブ等の性能特性の異なる複数のディスクドライブを使用してもよく、或いは、これらのディスクドライブの中から何れか一種類のディスクドライブを使用してもよい。ここで、性能特性とは、例えば、ディスクドライブに対するアクセス速度等をいう。
【0019】
尚、記憶デバイスとして、これらのディスクドライブに限らず、例えば、光ディスク、半導体メモリ、磁気テープ、フレキシブルディスク等を採用してもよい。
【0020】
コントローラ20,30は、複数のディスクドライブ40をいわゆるRAID方式に規定されるRAIDレベル(例えば、0,1,5)で制御することができる。RAID方式においては、複数のディスクドライブ40が一つのRAIDグループとして管理される。RAIDグループ上には、ホスト装置60からのアクセス単位である複数の論理ボリュームが定義されている。各論理ボリュームには、LUN(Logical Unit Number)と呼ばれる識別子LU♯0,LU♯1,…,LU♯Mが付与されている。
【0021】
コントローラ20は、主に、CPU21、CPU/PCIブリッジ22、ローカルメモリ(LM)23、データ転送制御部(D−CTL)24、キャッシュメモリ(CM)25、ホストI/F制御部26、及びドライブI/F制御部27を備える。
【0022】
CPU21は、ホスト装置60からのデータ入出力要求に応答して複数のディスクドライブ40へのI/O処理(ライトアクセス、又はリードアクセス)を制御するプロセッサである。コントローラ20は、タイマ29を備えており、予め設定された時刻になると、キャッシュメモリ25のセグメントサイズを自動調整するように構成されている(詳細については後述する。)。ローカルメモリ23には、CPU21のマイクロプログラムが格納されている。CPU/PCIブリッジ22は、CPU21、ローカルメモリ22、及びデータ転送制御部24を相互に接続する。キャッシュメモリ25は、ディスクドライブ40に書き込むためのライトデータ、又はディスクドライブ40から読み出したリードデータを一時的に格納するバッファメモリである。キャッシュメモリ25は、電源バックアップされており、ストレージシステム10に電源障害が発生した場合でも、キャッシュデータのロストを防ぐ不揮発性メモリとして構成されている。
【0023】
データ転送制御部24は、CPU/PCIブリッジ22、キャッシュメモリ25、ホストI/F制御部26、ドライブI/F制御部27を相互に接続し、ホスト装置60とディスクドライブ40との間のデータ転送を制御する。具体的には、ホスト装置60からのライトアクセスが行われると、データ転送制御部24は、ホストI/F制御部26を介してホスト装置60から受け取ったライトデータをキャッシュメモリ25に書き込み、その後、そのライトデータをディスクドライブ40へ非同期書き込みするために、ドライブI/F制御部27へ転送する。また、ホスト装置60からのリードアクセスが行われると、ドライブI/F制御部27を介してディスクドライブ40から読みとったリードデータをキャッシュメモリ25に書き込むとともに、ホストI/F制御部26に転送する。データ転送制御部24とCPU/PCIブリッジ22との間にはPCIバス28が配線されている。
【0024】
ホストI/F制御部26は、ホスト装置60とのインターフェースを制御するコントローラであり、例えば、ファイバチャネルプロトコルによるホスト装置60からのブロックアクセス要求を受信する機能を有する。ドライブI/F制御部27は、ディスクドライブ40とのインターフェースを制御するコントローラであり、例えば、ディスクドライブ40を制御するプロトコルに従って、ディスクドライブ40へのデータ入出力要求を制御する機能を有する。
【0025】
コントローラ30は、CPU31、CPU/PCIブリッジ32、ローカルメモリ(LM)33、データ転送制御部(D−CTL)34、キャッシュメモリ(CM)35、ホストI/F制御部36、及びドライブI/F制御部37を備えており、コントローラ20と同様の構成となっている。コントローラ30は、タイマ39を備えており、予め設定された時刻になると、キャッシュメモリ35のセグメントサイズを自動調整するように構成されている(詳細については後述する。)。
【0026】
各コントローラ20,30のデータ転送制御部24,34は、データバス51を通じて接続されており、一方のキャッシュメモリ25(又は35)に書き込まれるデータは、他方のキャッシュメモリ35(又は25)にも二重書きされるようにデータ転送制御部24,34間でデータ転送を行っている。また、ディスクドライブ40がRAIDレベル5で管理される場合には、データ転送制御部24,34がパリティデータを演算する。
【0027】
ストレージシステム10には、システムを保守又は管理するための管理端末70が接続されており、両者間では、ファイバチャネルプロトコル又はTCP/IP等の所定の通信プロトコルに基づいてデータ通信が行われる。オペレータは、管理端末70を操作することにより、例えば、ディスクドライブ70上に定義される論理ボリュームの設定、ディスクドライブ40の増設又は減設、RAID構成の設定変更(例えば、RAIDレベル5からRAIDレベル1への変更)等を行うことができる。また、後述するように、個々のアプリケーションプログラムAP♯0,AP♯1,…,AP♯Nのそれぞれに対して、キャッシュメモリ25,35の最適な性能チューニング(パーティション分割、パーティションサイズ設定、セグメントサイズ設定、二重化要否設定、パーティションへの論理ボリュームの割り当て設定又は割当変更等)を行うこともできる。
【0028】
尚、管理端末70は、ストレージシステム10内に内蔵してもよく、或いは外付けの構成としてもよい。
【0029】
図2はデュアルコントローラによるキャッシュデータの二重書きの概要を示している。説明の便宜上、以降の説明においては、コントローラ20をCTL♯0と称し、コントローラ30をCTL♯1と別称する場合がある。各々のCTL♯0,CTL♯1には、排他的にアクセスする権限を有する論理ボリュームが割り当てられている。例えば、CTL♯0は論理ボリュームLU♯0に対して排他的にアクセスする権限を有し、CTL♯1は論理ボリュームLU♯1に対して排他的にアクセスする権限を有するものとする。どのCTL♯0,CTL♯1にどの論理ボリュームLU♯0,LU♯1が排他的に割り当てられているかは、例えば、キャッシュメモリ25,35上の管理情報領域(図8参照)等にその設定情報を書き込むことで、各々のCTL♯0,CTL♯1が自身のアクセス権限を把握することができる。
【0030】
キャッシュメモリ25は、複数の記憶領域P01,P02,P03に分割され、キャッシュメモリ35は、複数の記憶領域P11,P12,P13に分割されている。記憶領域P01は、CTL♯0に対して排他的に割り当てられた論理ボリューム(例えば、LU♯0)に読み書きされるキャッシュデータDATA0を一時的に格納するための記憶領域であり、当該記憶領域P01には、二重書きの設定がなされている(ミラーオン設定)。つまり、記憶領域P01に書き込まれるキャッシュデータDATA0はCTL♯0の制御によって、記憶領域P11にも書き込まれる。記憶領域P11は、CTL♯0によるミラーリング用の記憶領域である。
【0031】
同様に、記憶領域P12は、CTL♯1に対して排他的に割り当てられた論理ボリューム(例えば、LU♯1)に読み書きされるキャッシュデータDATA1を一時的に格納するための記憶領域であり、当該記憶領域P12には、二重書きの設定がなされている。つまり、記憶領域P12に書き込まれるキャッシュデータDATA1は、CTL♯1の制御によって、記憶領域P02にも書き込まれる。記憶領域P02は、CTL♯1によるミラーリング用の記憶領域である。
【0032】
記憶領域P03,P13は、二重書きの設定がなされていない記憶領域である(ミラーオフ設定)。
【0033】
尚、二重書き設定がなされている記憶領域P01,P02,P11,P12をミラーオン領域と称し、二重書き設定がなされていない記憶領域P03,P13をミラーオフ領域と称する。
【0034】
図3はキャッシュメモリの各パーティションと、アプリケーションプログラム及び論理ボリュームとの対応関係を示している。上述した各記憶領域(例えば、P01)は、複数のパーティション(例えば、P01♯0,P01♯2,P01♯3)に論理分割される。パーティションとは、ユーザデータを格納するための、キャッシュメモリ上に論理分割された記憶領域であって、個々の論理ボリュームに対して排他的に割り当てられた個々の記憶領域をいう。パーティションの用語は、その趣旨を逸脱しない範囲内で、例えば、エリア、分割記憶領域、分割エリア、分割キャッシュ等と別称することもできる。各々のパーティションには、それぞれ異なる論理ボリューム(例えば、リソース競合を防ぎたい論理ボリューム)LU♯0,LU♯1,…,LU♯Mを排他的に割り当てることにより、論理ボリューム単位でのキャッシュメモリ25,35の独立したリソース管理が可能になる。つまり、各論理ボリュームが使用するキャッシュメモリ25,35の記憶資源がパーティション単位で割り当てられているため、論理ボリュームが性能特性の異なるディスクドライブ40によって構成されている場合であっても、論理ボリュームの性能特性の相違によるリソース競合を抑制できる。
【0035】
また、各々の論理ボリュームLU♯0,LU♯1,…,LU♯Mに対して、I/O特性の異なる複数のアプリケーションプログラムAP♯0,AP♯1,…,AP♯Nを排他的に割り当てることにより、アプリケーションプログラムAP♯0,AP♯1,…,AP♯NのI/O特性の相違によるキャッシュメモリ25,35のリソース競合を抑制できる。例えば、パーティションP01♯0に対しては、多目的用途のアプリケーションプログラムが使用する論理ボリュームLU♯0を割り当て、パーティションP01♯1に対しては、データベースが使用する論理ボリュームLU♯2を割り当て、パーティションP01♯2に対しては、ストリーミング用のアプリケーションプログラムが使用する論理ボリュームLU♯3を割り当てる例が示されている。
【0036】
また、ミラーオフ領域としての記憶領域P03は、パーティションP03♯0,P03♯1に論理分割され、それぞれのパーティションP03♯0,P03♯1には、科学技術計算を行うアプリケーションプログラム(HPC)が使用する論理ボリュームLU♯5,LU♯6が割り当てられている。ミラーオフ領域は、科学技術計算の途中演算結果のように、テンポラリなデータを格納する場合など、二重書きを要しない場合に用いられる。
【0037】
記憶領域P02,P11,P12,P13についても、同様に、複数のパーティションに論理分割されている。
【0038】
尚、記憶領域P01(コピー元領域)のミラーリング領域(コピー先領域)としての記憶領域P11のパーティション分割の態様(パーティション数、パーティションサイズ、及びセグメントサイズ)は、記憶領域P01のパーティション分割の態様と同一である。同様に、記憶領域P12(コピー元領域)のミラーリング領域(コピー先領域)としての記憶領域P02のパーティション分割の態様は、記憶領域P12のパーティション分割の態様と同一である。一方、ミラーオフ領域としての記憶領域P03,P13のパーティション分割の態様は必ずしも同一である必要はなく、また、記憶領域P03,P13のサイズについても、必ずしも同一である必要はない。但し、記憶領域P03,P13のサイズを同一に設定すれば、ミラーオン領域を効率よく使用できる。
【0039】
また、各々のパーティション毎に二重書き要否の設定(ミラーオン/ミラーオフ)を行うことも可能である。ミラーオフ設定をすると、データ転送制御部24,34相互間におけるキャッシュデータの転送が不要となるので、データ転送に伴うコントローラ20,30のオーバーヘッドを低減できる。
【0040】
図4はLUNとパーティション番号との対応関係を示している。この対応関係は、オペレータが管理端末70を操作し、論理ボリュームとパーティションの割付変更をストレージシステム10に指示することによって、適宜変更することが可能である(詳細については後述する。)。
【0041】
図5は各パーティションに論理ボリュームを割り当てることで、リソース競合を抑制する概要を示している。パーティションP01♯1には、アプリケーションプログラムAP♯1が論理ボリュームLU♯2に読み書きするキャッシュデータDATA2が格納され、パーティションP01♯2には、アプリケーションプログラムAP♯2が論理ボリュームLU♯3に読み書きするキャッシュデータDATA3が格納される。アプリケーションプログラムAP♯1は、データベース等の細かいランダムなアクセスを発行するプログラムであるのに対し、アプリケーションプログラムAP♯2は、連続的な大量データを扱うストリーミング等のプログラムであるから、両者のI/O特性は大きく異なる。つまり、各パーティションP01♯1,P01♯2に格納されるキャッシュデータDATA2,DATA3がキャッシュメモリ上に滞留する時間は異なるので、パーティション毎に独立したソース管理がなされていない場合には、リソース競合が生じる場合がある。
【0042】
ところが、キャッシュメモリをパーティション分割し、各アプリケーションプログラムAP♯1,AP♯2が使用できるキャッシュメモリのリソース資源を排他的に割り当てることにより、アプリケーションプログラムAP♯1のキャッシュデータDATA2は、パーティションP01♯2のリソース資源を消費することがない。同様に、アプリケーションプログラムAP♯2のキャッシュデータDATA3は、パーティションP01♯1のリソース資源を消費することがない。これにより、ある一つのアプリケーションプログラムの負荷がキャッシュメモリ全体に波及し、リソース競合が生じる事態を抑制できる。
【0043】
尚、論理ボリュームLU♯2,LU♯3を構成するディスクドライブの性能特性が異なる場合であっても、同様の理由により、リソース競合を抑制できる。
【0044】
図6は各パーティションの論理構成を示している。ここでは、各記憶領域を4つのパーティションに分割する例を示す。各パーティションのパーティションサイズ、及びセグメントサイズは、アプリケーションプログラムのI/O特性に応じて最適な値に設定されている。一般的に、セグメントサイズを大きく設定すると、キャッシュデータをデステージングする際に、ダーティデータからクリーンデータへの状態遷移を管理する管理情報が少なくなるので、処理速度が向上し、オーバーヘッドを低減できる。セグメントサイズを小さく設定すると、キャッシュメモリのヒット率が向上する。例えば、動画配信等の大量のデータを連続的に扱うアプリケーションプログラムが使用するパーティションに対しては、セグメントサイズを大きく設定し、データベース等の細かいアクセスがランダムに発行されるアプリケーションプログラムが使用するパーティションに対しては、セグメントサイズを小さく設定するのが好ましい。
【0045】
同図に示す例では、パーティションP01♯0のセグメントサイズは16KB(デフォルトサイズ)、パーティションP01♯1のセグメントサイズは4KB、パーティションP02♯0のセグメントサイズは64KB、パーティションP03♯0のセグメントサイズは512KBに設定されている。
【0046】
ミラーオン領域(記憶領域P01,P02,P11,P12)に限らず、ミラーオフ領域(記憶領域P03,P13)においても、各パーティションのパーティションサイズ、及びセグメントサイズは、アプリケーションプログラムのI/O特性に応じて最適な値に設定されている。
【0047】
ストレージシステム10の運用形態として、例えば、個々のアプリケーションプログラム毎に、パーティションサイズ、セグメントサイズ、二重書き要否等を予めデフォルト設定しておき、アプリケーションプログラムの種別をストレージシステム10が判断すると、そのアプリケーションプログラムに対してデフォルト設定された設定値を基に、キャッシュメモリの最適な性能チューニングを行えるように、パーティションサイズ、セグメントサイズ、二重書き要否等を設定するように構成してもよい。
【0048】
また、各パーティションのセグメントサイズは、アプリケーションプログラムのI/O特性の変化に応じて、自動的に、或いはオペレータの入力操作によって、電源を落とさずに、動的に設定変更可能である。例えば、パーティションP01♯0のセグメントサイズは、デフォルトの16KBに設定されているが、I/O特性の変化に応じて、これを動的に拡大(例えば、64KBに設定変更)し、或いは縮小(例えば、4KBに設定変更)することもできる。また、各パーティションのパーティションサイズを自動的に、或いはオペレータの入力操作によって、電源を落とさずに、動的に設定変更することもできる。大量のデータを扱うアプリケーションプログラムが使用するパーティションに対しては、パーティションサイズを大きく設定し、少量のデータを扱うアプリケーションプログラムが使用するパーティションに対しては、パーティションサイズを小さく設定することもできる。
【0049】
セグメントサイズ、又はパーティションサイズをストレージシステム10が自動的に設定変更する例として、例えば、キャッシュメモリ25,35のリソース競合状態をCPU21,31が監視し、各アプリケーションに最適となるように、セグメントサイズ、又はパーティションサイズを変更するように構成してもよい。
【0050】
図7は各パーティションの物理構成と論理構成の対応関係を示している。キャッシュメモリは、複数のブロック(例えば、BLK♯0,BLK♯9,BLK♯25,BLK♯27)を個々のパーティション(例えば、P01♯0)にマッピングすることにより、複数のパーティションに論理分割されている。各ブロックは、複数のセグメントSEGによって構成されている。このように、パーティションの論理分割を、ブロックのマッピングによって実現することにより、パーティションサイズの変更は、ブロックのマッピング変更によって対応できるので、セグメントの移動量を最小限に抑えることができる。仮に、物理構成と論理構成を同一にすると、パーティションサイズを変更した場合に、パーティション境界を順番にずらしながら移動しなければならず、大量のセグメントを移動させなければならない場合も生じ得る。
【0051】
図8はコントローラの主要構成を示している。図1に示した符号と同一符号のハードウエアは同一のハードウエアを示すものとして、その詳細な説明は省略する。キャッシュメモリ25が提供する記憶領域は、主に、管理情報領域25aと、ユーザデータ領域25bに分けられる。ユーザデータ領域25bは、ユーザデータ(キャッシュデータ)を一時的に格納するための記憶領域であり、上述の如く複数のアプリケーションプログラムに対応して、複数のパーティションに分割される。管理情報領域25aは、ユーザデータを管理する上で必要な管理情報、例えば、データ属性(リードデータ/ライトデータ)、ホスト装置60が指定するユーザデータの論理アドレス、キャッシュメモリ上の空きエリア情報、キャッシュデータの置き換えに関する優先順位の情報等が格納されている。
【0052】
図9はセグメントと親サブセグメント管理ブロック及び子サブセグメント管理ブロックとの対応関係を示している。本実施例において、セグメントは、単一又は複数のサブセグメントから構成されており、セグメントを構成するサブセグメントの個数を調整することで、セグメントサイズを調整している。サブセグメントのサイズは予め固定サイズに設定されている。複数のサブセグメントからセグメントを構成する場合、当該セグメントにおいて、最初にアクセスされたサブセグメントを親サブセグメントと称し、2番目以降にアクセスされたサブセグメントを子サブセグメントと称する。親サブセグメントと子サブセグメントを区別しない場合には、単に、サブセグメントと称する。
【0053】
同図において、SSEG1〜SSEG8は、アクセスされたサブセグメントを、そのアクセス順番とともに示している。サブセグメントのサイズが16KBにデフォルト設定されている場合、セグメントサイズを64KBにするには、サブセグメントを4つ集めてセグメントを構成する必要がある。例えば、SSEG1を親サブセグメントとし、その後に続く3つのサブセグメントSSEG2〜SSEG4を子サブセグメントとして、互いに論理的に関連付けることにより、一つのセグメントを構成することができる。同様に、SSEG5を親サブセグメントとし、その後に続く3つのサブセグメントSSEG6〜SSEG8を子サブセグメントとして、互いに論理的に関連付けることにより、一つのセグメントを構成することができる。
【0054】
尚、親サブセグメントと子サブセグメントは、必ずしも連続した記憶領域上に配置されている必要はなく、キャッシュメモリ上の各所に離散的に点在していてもよい。
【0055】
親サブセグメント管理ブロック80は、親サブセグメントアドレス81、順方向ポインタ82、逆方向ポインタ83、子サブセグメントポインタ84、及び親サブセグメント管理情報85を含む。親サブサブセグメントアドレス81は、親サブセグメント管理ブロック80が管理する親サブセグメントの位置を示す。順方向ポインタ82は、最も古くアクセスされた順番に親サブセグメント管理ブロック80を指し示す。逆方向ポインタ83は、最も新しくアクセスされた順番に親サブセグメント管理ブロック80を指し示す。子サブセグメントポインタ84は、子サブセグメント管理ブロック90を指し示す。親サブセグメント管理情報85には、親サブセグメントのステータス(ダーティ/クリーン/フリー)等が格納される。親サブセグメント内にダーティデータとクリーンデータが混在する場合には、ビットマップ情報によって、そのステータスが管理される。
【0056】
子サブセグメント管理ブロック90は、子サブセグメントアドレス91、順方向ポインタ92、及び子サブセグメント管理情報93を含む。子サブサブセグメントアドレス91は、子サブセグメント管理ブロック90が管理する子サブセグメントの位置を示す。順方向ポインタ92は、最も古くアクセスされた順番に子サブセグメント管理ブロック90を指し示す。子サブセグメント管理情報93には、子サブセグメントのステータス等が格納される。子サブセグメント内にダーティデータとクリーンデータが混在する場合には、ビットマップ情報によって、そのステータスが管理される。
【0057】
先頭ポインタ101は、順方向ポインタ81の最後尾を指し示し、後方ポインタ102は、先頭の逆方向ポインタ82によって指し示される。
【0058】
このようにして、キュー管理される親サブセグメント管理ブロック80と、子サブセグメント管理ブロック90は、ステータスがダーティデータの場合には、ダーティーキューとして管理され、ステータスがクリーンデータの場合には、クリーンキューとして管理される。親サブセグメントと複数の子サブセグメントを論理的に関連付けてセグメントを構成することにより、親サブセグメントが状態遷移すると、子サブセグメントも状態遷移するので、デステージング処理を高速化できる。
【0059】
図10はパーティションサイズ自動変更処理ルーチンのフローチャートを示している。アプリケーションプログラムAP♯0,AP♯1,…,AP♯Nはその用途に応じて、24時間常時稼働することが要求されるものや、ある特定の時間帯に稼働率が高くなるもの等、様々な種類が存在し、その負荷は時間帯毎に異なる場合がある。アプリケーションプログラムの性能を適正に発揮させるために、時間帯毎の負荷変動に応じてパーティションサイズを変更するのが好ましい。例えば、あるアプリケーションプログラムが稼働しない夜間において、他のアプリケーションプログラムが使用するパーティションサイズを大きくする場合等である。
【0060】
パーティションサイズ自動変更処理ルーチンが呼び出されると、CPU21は、タイマ29が刻む現在時刻がタイマ設定時刻に一致するか否かをチェックする(S101)。現在時刻がタイマ設定時刻になると(S101;YES)、CPU21は、オペレータが予め指定したパーティションサイズより大きいパーティションサイズを有するパーティションを変更元パーティションとし、オペレータが予め指定したパーティションサイズより小さいパーティションサイズを有するパーティションを変更先パーティションとして選択する(S102)。
【0061】
例えば、パーティションP01#0のサイズがユーザデータ領域25bの10%、パーティションP01#1のサイズがユーザデータ領域25bの5%に設定されていると仮定し、パーティションP01#1のサイズを7%に変更するには、2%分のブロックをパーティションP01#0からパーティションP01#1へ移動させればよい。このとき、パーティションP01#0が変更元パーティションとなり、パーティションP01#1が変更先パーティションとなる。但し、変更元パーティションが複数存在する場合は、その時間帯において、最も稼働率が低いアプリケーションプログラムが使用するパーティションを優先的に変更元パーティションとして選択してもよい。
【0062】
次に、CPU21は、変更元パーティションから変更先パーティションへ移動するブロックを確保して、そのブロック内のダーティデータをデステージし(S103)、そのブロック内のサブセグメントを管理する親サブセグメント管理ブロックと子サブセグメント管理ブロックをデキューする(S104)。
【0063】
次に、CPU21は、変更先パーティションのセグメントサイズが最小サイズ(サブセグメントサイズ)であるか否かをチェックする(S105)。変更先パーティションのセグメントサイズが最小サイズでない場合には(S105;NO)、CPU21は、親サブセグメントに子サブセグメントが接続されるように、親サブセグメント管理ブロック80と子サブセグメント管理ブロック90のキュー管理を再編成し(S106)、この再編成処理を子サブセグメント数分繰り返すことで(S107)、変更元パーティションから変更先パーティションに移動するブロックのセグメントサイズを変更先パーティションのセグメントサイズに一致させる。
【0064】
セグメントサイズが最小サイズでない場合(S105;NO)、又はS106の処理が子サブセグメント数分終了した場合(S107;YES)には、CPU21は、親サブセグメント同士が接続されるように、親サブセグメント管理ブロック80のキュー管理を再編成し(S108)、全てのパーティションが指定のサイズとなるまで、この再編成処理を繰り返す(S109)。
【0065】
次に、CPU21は、キャッシュメモリ25がミラーオフ設定されているか否かをチェックし(S110)、ミラーオフ設定されていない場合には(S110;NO)、キャッシュメモリ35のミラーオン領域についても、同様に、パーティションサイズの変更を行うように、CPU31に指示を送る(S111)。これにより、キャッシュメモリ25,35のミラーオン領域のパーティションサイズとセグメントサイズは同一となる。一方、キャッシュメモリ25にミラーオフ設定されている場合には(S110;YES)、キャッシュメモリ35のパーティションサイズ等を変更する必要がないので、CPU21は、オペレータに完了報告をし(S112)、本ルーチンを抜ける。
【0066】
図11はパーティションサイズ手動変更処理ルーチンのフローチャートを示している。オペレータは管理端末70を操作することによって、ストレージシステム10にパーティションサイズの変更を指示することができる。例えば、オペレータは、管理端末70のディスプレイに表示される各アプリケーションプログラムの負荷変動を監視し、個々のアプリケーションに最適なパーティションサイズを割り当てることができる。
【0067】
パーティションサイズ手動変更処理ルーチンが呼び出されると、CPU21は、オペレータからパーティションサイズの変更指示を受け付ける(S201)。すると、CPU21は、オペレータが指定したパーティションサイズより大きいパーティションサイズを有するパーティションを変更元パーティションとし、オペレータが指定したパーティションサイズより小さいパーティションサイズを有するパーティションを変更先パーティションとして選択する(S202)。
【0068】
次に、CPU21は、変更元パーティションから変更先パーティションへ移動するブロックを確保し、そのブロック内のダーティデータをデステージし(S203)、そのブロック内のサブセグメントを管理する親サブセグメント管理ブロックと子サブセグメント管理ブロックをデキューする(S204)。
【0069】
次に、CPU21は、変更先パーティションのセグメントサイズが最小サイズ(サブセグメントサイズ)であるか否かをチェックする(S205)。変更先パーティションのセグメントサイズが最小サイズでない場合には(S205;NO)、CPU21は、親サブセグメントに子サブセグメントが接続されるように、親サブセグメント管理ブロック80と子サブセグメント管理ブロック90のキュー管理を再編成し(S126)、この再編成処理を子サブセグメント数分繰り返すことで(S207)、変更元パーティションから変更先パーティションに移動するブロックのセグメントサイズを変更先パーティションのセグメントサイズに一致させる。
【0070】
セグメントサイズが最小サイズでない場合(S205;NO)、又はS206の処理が子サブセグメント数分終了した場合(S207;YES)には、CPU21は、親サブセグメント同士が接続されるように、親サブセグメント管理ブロック80のキュー管理を再編成し(S208)、全てのパーティションが指定のサイズとなるまで、この再編成処理を繰り返す(S209)。
【0071】
次に、CPU21は、キャッシュメモリ25がミラーオフ設定されているか否かをチェックし(S210)、ミラーオフ設定されていない場合には(S210;NO)、キャッシュメモリ35のミラーオン領域についても、同様に、パーティションサイズの変更を行うように、CPU31に指示を送る(S211)。一方、キャッシュメモリ25にミラーオフ設定されている場合には(S210;YES)、キャッシュメモリ35のパーティションサイズ等を変更する必要がないので、CPU21は、オペレータに完了報告をし(S212)、本ルーチンを抜ける。
【0072】
図12はセグメントサイズ変更処理ルーチンのフローチャートを示している。上述の如くセグメントサイズはアプリケーションプログラムのI/O特性に応じて定められ、個々のアプリケーションプログラム毎にデフォルト設定されたセグメントサイズで運用するのが便宜であるが、アプリケーションプログラムのI/O特性の変動等に対応できるようにセグメントサイズを適宜変更できるように構成するのが望ましい。オペレータは管理端末70を操作することによって、ストレージシステム10にセグメントサイズの変更を指示することができる。
【0073】
セグメントサイズ変更処理ルーチンが呼び出されると、CPU21は、オペレータからセグメントサイズの変更指示を受け付ける(S301)。セグメントサイズの変更指示には、変更対象のパーティションと、変更後のセグメントサイズが含まれる。CPU21は、パーティションサイズの変更作業に備えて、変更対象パーティションに対応付けられた論理ボリュームへのI/Oを抑止し(S302)、変更対象パーティション内のダーティデータをデステージする(S303)。デステージ完了後、CPU21は、変更後のセグメントサイズ分だけ、親サブセグメント管理ブロックと子サブセグメント管理ブロックをデキューする(S304)。
【0074】
次に、CPU21は、セグメントサイズ変更後のセグメントサイズが最小サイズ(サブセグメントサイズ)であるか否かをチェックする(S305)。変更後のセグメントサイズが最小サイズでない場合には(S305;NO)、CPU21は、変更後のセグメントサイズ分だけ複数のサブセグメントを確保する(S306)。そして、CPU21は、親サブセグメントに子サブセグメントが接続されるように、親サブセグメント管理ブロック80と子サブセグメント管理ブロック90のキュー管理を再編成し(S307)、この再編成処理を子サブセグメント数分繰り返すことで(S308)、指定されたセグメントサイズに調整する。
【0075】
セグメントサイズが最小サイズでない場合(S305;NO)、又はS307の処理が子サブセグメント数分終了した場合(S308;YES)には、CPU21は、親サブセグメント同士が接続されるように、親サブセグメント管理ブロック80のキュー管理を再編成し(S309)、変更対象パーティション全体が指定セグメントサイズとなるまで、この再編成処理を繰り返す(S310)。次に、CPU21は、変更対象パーティションに対応付けられた論理ボリュームへのI/O抑止を解除し(S311)、オペレータに完了報告をして(S312)、本ルーチンを抜ける。
【0076】
尚、セグメントサイズを変更する場合に、必ずしも、変更対象パーティションのダーティデータを全てデステージしてからセグメントサイズを変更する必要はなく、例えば、変更対象パーティション内の一部のダーティデータをデステージし、ある程度のサブセグメントを確保できた段階で、論理ボリュームへのI/O抑止を解除し、論理ボリュームへのI/O処理と並行して、セグメントサイズの変更処理をバックグランドで行うようにしてもよい。
【0077】
また、他の手法として、変更対象パーティションのデステージ完了まで、論理ボリュームへのI/O抑止をせずに、例えば、ライトスルー方式を採用することで、I/O停止時間を削減してもよい。ここで、ライトスルー方式とは、キャッシュメモリ25,35にライトデータを書かずに、ディスク装置40に直接書き込む方式をいう。
【0078】
図13はパーティション/LU割付変更処理ルーチンのフローチャートである。オペレータは管理端末70を操作することによって、パーティションへの論理ボリュームの割付変更をストレージシステム10に指示することができる。
【0079】
パーティション/LU割付変更処理ルーチンが呼び出されると、CPU21は、オペレータからパーティションへの論理ボリュームの割付変更指示を受け付ける(S401)。そして、CPU21は、パーティション/LU割付変更作業に備えて、変更対象論理ボリュームへのI/Oを抑止し(S402)、変更対象論理ボリュームに割り当てられたキャッシュメモリ25,35上のダーティデータをデステージする(S403)。
【0080】
次に、CPU21は、変更対象論理ボリュームに割り当てるパーティションをオペレータ指定のパーティションに変更する(S404)。そして、変更対象論理ボリュームへのI/O抑制を解除し(S405)、オペレータに完了報告をして(S406)、本ルーチンを抜ける。
【0081】
図14乃至図19はパーティションサイズの参照又は変更、セグメントサイズの参照又は変更、パーティションへの論理ボリュームの割り当ての参照又は変更等を行うときに管理端末70に表示される画面イメージである。以下、これらの表示画面について、説明を加える。
【0082】
図14はユニット画面の表示例を示している。オペレータは、このユニット画面にて、各種設定値の参照又は変更等を行うことができる。ユニット画面の左側のツリーには、「Cache Partition」オブジェクトの下位に「パーティション」オブジェクトと「ロジカルユニット」オブジェクトが表示される。オペレータは、パーティションサイズの参照又は変更、或いはセグメントサイズの参照又は変更を行うときは、「パーティション」オブジェクトを選択する。すると、画面イメージは、図14から図15に遷移する。一方、オペレータは、パーティションへの論理ボリュームの割り当てを参照し、又は変更するときは、「ロジカルユニット」オブジェクトを選択する。すると、画面イメージは、図14から図17に遷移する。
【0083】
図15はパーティションの参照・変更画面を示している。同画面の右上には、「現在値」が表示され、同画面の右下には、「設定値」が表示される。オペレータは、「変更」ボタンをクリックすることにより、キャッシュ総容量、キャッシュ空き容量、各パーティションのコントローラ番号、パーティションサイズ、セグメントサイズ等の設定値を変更することができる。オペレータが「変更」ボタンをクリックすると、画面イメージは、図15から図16に遷移する。
【0084】
図16はパーティション変更画面を示している。オペレータは、この画面を通じて、各パーティションの名称、コントローラ番号、パーティションサイズ、セグメントサイズを変更することが可能である。更に、「追加」ボタンをクリックすることにより、パーティションを新たに追加することも可能である。「削除」ボタンをクリックすることにより、パーティションを削除することも可能である。オペレータは、パーティションサイズ又はセグメントサイズ等について、新たな「設定値」を入力し、「OK」ボタンをクリックすると(この操作は、上述したパーティションサイズ変更指示(S201)、又はセグメントサイズ変更指示(S301)に相当する。)、新たな「設定値」が装置に反映される。
【0085】
図17は論理ボリュームへのパーティション割り当て設定画面を示している。この画面には、現時点における、論理ボリュームへのパーティション割り当て状態が表示される。同図に示す例では、LUN0000には、Mastor0と称されるパーティションが割り当てられ、LUN0001には、Sampleと称されるパーティションが割り当てられている。オペレータが「変更」ボタンをクリックすると、画面イメージは、図17から図18に遷移する。
【0086】
図18はパーティション割り当て変更画面を示している。オペレータが「割り当ての変更」ボタンをクリックすると、画面イメージは、図18から図19に遷移する。
【0087】
図19はパーティション指定画面を示している。この画面の「ロジカルユニット番号」には、設定対象の論理ボリュームが表示される。オペレータは、「キャッシュパーティション」のプルダウンメニューから、当該論理ボリュームに割り当てたいパーティションを選択し、「OK」ボタンをクリックすると(この操作は、上述したパーティション割付変更指示(S401)に相当する。)、新たな「設定値」が装置に反映される。
【0088】
尚、上述の説明においては、オペレータが管理端末70を操作することにより、キャッシュメモリ25,35の性能チューニング(パーティション分割、パーティションサイズ設定、セグメントサイズ設定、二重化要否設定、パーティションへの論理ボリュームの割り当て設定又は割当変更等)を行う構成を例示したが、例えば、図20に示すように、ホスト装置60に実装されたミドルウエア62がアプリケーションプログラムAP♯0,AP♯1,…,AP♯NのI/O特性を監視し、そのI/O特性の変動等に応じて、ストレージシステム10に対して、パーティション分割、パーティションサイズ設定、セグメントサイズ設定、二重化要否設定、パーティションへの論理ボリュームの割り当て設定又は割当変更等を指示し、個々のアプリケーションプログラムAP♯0,AP♯1,…,AP♯Nに最適なキャッシュメモリ25,35の性能チューニングを行うように構成してもよい。
【0089】
本実施例によれば、複数の論理ボリュームのそれぞれに対して、複数のパーティションのそれぞれを排他的に割り当てることにより、各プリケーションプログラムに対して排他的に割り当てられた論理ボリューム間のリソース競合を抑制し、最適なキャッシュメモリの性能チューニングを行うことができる。
【0090】
また、ディスクドライブ40の性能特性が異なる場合であっても、複数の論理ボリュームのそれぞれに対して複数のパーティションをそれぞれ排他的に割り当てることにより、ディスクドライブ40の性能特性の相違によるキャッシュメモリ25,35のリソース競合を抑制し、最適なキャッシュメモリの性能チューニングを行うことができる。
【実施例2】
【0091】
図21は本実施例に係るストレージシステムの主要構成を示している。図1に示した符号と同一符号のハードウエアは同一のハードウエアを示すものとして、その詳細な説明は省略する。
【0092】
ローカルメモリ23には、CPU21のマイクロプログラムを格納するプログラム領域23bに加えて、ユーザデータを管理する上で必要な管理情報、例えば、データ属性(リードデータ/ライトデータ)、ホスト装置60が指定するユーザデータの論理アドレス、キャッシュメモリ上の空きエリア情報、キャッシュデータの置き換えに関する優先順位の情報等を格納するための管理情報領域23aが設けられている。一方、キャッシュメモリ25には、ユーザデータ(キャッシュデータ)を一時的に格納するためのユーザデータ格納領域25bは設けられているものの、ユーザデータを管理するための管理情報領域は設けられていない。
【0093】
ホスト装置60からストレージシステム10に対してライトアクセスがなされると、CPU21は、ローカルメモリ23の管理情報領域23aを参照して、キャッシュメモリ25のユーザデータ領域25b上における空きエリアを検索し、ライトデータをその空き領域に書き込む。また、ホスト装置60からストレージシステム10に対してリードアクセスがなされると、CPU21は、ローカルメモリ23の管理情報領域23aを参照して、キャッシュヒット判定を行う。実施例1のように管理情報領域25aがキャッシュメモリ25にある場合には、PCIバス28を経由してメモリアクセスしなければならず、高速アクセスが困難であったが、本実施例のように、管理情報領域23aがローカルメモリ23にある場合には、高速アクセスが可能であり、メモリアクセスにかかるオーバーヘッドを低減することが可能である。
【0094】
尚、CPU21内部にローカルメモリ23を実装し、そのローカルメモリ23内に管理情報領域23aを設ける構成としてもよい。
【実施例3】
【0095】
図22は本実施例に係るストレージシステムの主要構成を示している。図1又は図21に示した符号と同一符号のハードウエアは同一のハードウエアを示すものとして、その詳細な説明は省略する。
【0096】
ローカルメモリ23とキャッシュメモリ25のそれぞれには、キャッシュデータの管理情報を格納する管理情報領域23a,25aが設けられており、管理情報が2元管理されている。CPU21は、ホスト装置60からライトアクセス、又はリードアクセスに対しては、ローカルメモリ23の管理情報領域23aを参照することにより、ユーザデータ領域25bにおける空きエリアの検索、又はキャッシュヒット判定を行う。CPU21は、ホスト装置60からのライトアクセスに対して、ユーザデータ領域25bの空きエリアにライトデータを書き込むと、管理情報領域23a,25aに格納されている両方の管理情報をアップデートする。管理情報のアップデートは、CPU21が行ってもよく、或いはCPU21の指示に従って、データ転送制御部24が行ってもよい。
【0097】
図23は電源障害時の復旧処理ルーチンのフローチャートを示している。ストレージシステム10に突発的な電源障害が生じた場合、揮発性のローカルメモリ23に格納されている管理情報は消失してしまうが、電源バックされているキャッシュメモリ25の管理情報は消失することなく、保持される。そこで、障害回復時には、電源再投入を契機に、キャッシュメモリ25上の管理情報をローカルメモリ23に複写することで、消失した管理情報の復元を行うのが望ましい。この復元処理をしている間は、ストレージシステム10は、ホスト装置60からのI/O処理を一時的に停止するか、或いはI/O受付キューイングのみ行って、I/O実行を停止するか、又は管理情報領域25aを参照することにより、ホスト装置60からのI/O処理を行ってもよい。
【0098】
電源障害時の復旧処理ルーチンにおいて、電源投入が行われると(S501)、CPU21は、前回のシステム停止が電源障害によるものであったか否かをチェックする(S502)。電源障害で停止していた場合には(S502;YES)、CPU21は、キャッシュメモリ25が不揮発性か否かをチェックする(S503)。キャッシュメモリ25が電源バックアップされている等の理由により、不揮発性である場合には(S503;YES)、キャッシュメモリ25上の管理情報をローカルメモリ23に複写する(S504)。
【0099】
一方、前回のシステム停止が電源障害によるものではなく、管理情報が消失してない場合には(S502;NO)、システム運用上問題がないため、通常通り、キャッシュメモリ25の初期化を行う(S505)。キャッシュメモリ25が揮発性であり、管理情報が消失してしまった場合には(S503;NO)、管理情報の復元は無理なので、この場合においても、通常通り、キャッシュメモリ25の初期化を行う(S505)。そして、CPU21は、ホスト装置60からI/O処理準備を行い(S506)、I/O処理を開始する(S507)。
【0100】
本実施例によれば、高速アクセス可能なローカルメモリ23からキャッシュデータの管理情報を取得して、メモリアクセスのオーバーヘッドを低減しつつ、電源障害時の管理情報の消失に対しては、不揮発性のキャッシュメモリ25に保持されている管理情報を元にローカルメモリ23の管理情報を復元するため、システムの耐障害性を高めることができる。
【図面の簡単な説明】
【0101】
【図1】ストレージシステムの主要構成を示すブロック図である。
【図2】キャッシュデータの二重書きを示す説明図である。
【図3】各パーティションと論理ボリュームとの対応関係を示す図である。
【図4】LUNとパーティション番号との対応関係を示す図である。
【図5】キャッシュ分割によりリソース競合を抑制する概要を示す図である。
【図6】各パーティションの論理構成を示している。
【図7】各パーティションの物理構成と論理構成の対応関係を示している。
【図8】コントローラの主要構成図である。
【図9】セグメントとその管理情報との対応関係を示す図である。
【図10】パーティションサイズ自動変更処理ルーチンのフローチャートである。
【図11】パーティションサイズ手動変更処理ルーチンのフローチャートである。
【図12】セグメントサイズ変更処理ルーチンのフローチャートである。
【図13】パーティション/LU割付変更処理ルーチンのフローチャートである。
【図14】ユニット画面の表示例である。
【図15】パーティションの参照・変更画面の表示例である。
【図16】パーティション変更画面の表示例である。
【図17】論理ボリュームへのパーティション割り当て設定画面の表示例である。
【図18】パーティション割り当て変更画面の表示例である。
【図19】パーティション指定画面の表示例である。
【図20】ストレージシステムの主要構成を示すブロック図である。
【図21】ストレージシステムの主要構成を示すブロック図である。
【図22】ストレージシステムの主要構成を示すブロック図である。
【図23】電源障害時の復旧処理ルーチンのフローチャートである。
【符号の説明】
【0102】
10…ストレージシステム
20,30…コントローラ
21,31…CPU
22,32…CPU/PCIブリッジ
23,33…ローカルメモリ
24,34…データ転送制御部
25,35…キャッシュメモリ
26,36…ホストI/F制御部
27,37…ドライブI/F制御部
28,38…PCIバス
29,39…タイマ
40…ディスクドライブ
70…管理端末
【技術分野】
【0001】
本発明は複数のアプリケーションプログラムのそれぞれに対して、最適なキャッシュメモリの性能チューニングを行えるストレージシステムに関する。
【背景技術】
【0002】
近年、サーバ毎に分散配置されていたストレージを一箇所に集約し、SAN(Storage Area Network)等のストレージ専用ネットワークを介してサーバ群に接続するストレージコンソリデーションが普及している。ストレージコンソリデーションの運用形態として、複数のアプリケーションプログラム又はコンテンツによるストレージシステムの共用が増えてきている。ストレージシステムは、例えば、ディスクアレイ装置等から構成される。ディスクアレイ装置は、多数のディスクドライブをアレイ状に配設して構成されるもので、例えば、RAID(Redundant Array of Independent Inexpensive Disks)に基づいて構築されている。ディスクドライブ群が提供する物理的な記憶領域上には、少なくとも1つ以上の論理ボリュームが形成され、この論理ボリュームがホスト装置に提供される。ホスト装置は、ストレージシステムに対してライトコマンド又はリードコマンドを発行することにより、論理ボリュームに対するデータの読み書きを行うことができる。
【0003】
この種のストレージシステムにおいては、ディスクドライブに書き込むためのライトデータ、又はディスクドライブから読み出したリードデータを一時的に記憶するためのキャッシュメモリが実装されており、ホスト装置に対するI/O処理の高速化を実現している(例えば、特許文献1)。例えば、ホスト装置からディスクドライブへのライトアクセスに対しては、キャッシュメモリへのライトデータの書き込みを以ってライト処理の完了をホスト装置に通知し、キャッシュデータが一定量蓄積した段階でデステージを行う。ホスト装置からのディスクドライブへのリードアクセスに対しては、リードデータがキャッシュメモリにヒットしている場合は、キャッシュメモリから読み出すことにより、高速アクセスを実現する。
【特許文献1】特開2001−166993号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかし、各アプリケーションプログラムのI/O特性はそれぞれ異なるため、そのI/O特性に合わせて、キャッシュメモリの性能チューニング(例えば、セグメントサイズの設定、二重書きの要否等)を最適化する必要がある。
【0005】
例えば、動画又は静止画等のコンテンツをストリーミング配信するアプリケーションプログラムのように、大量のデータを連続的に処理するアプリケーションプログラムに対しては、キャッシュメモリのセグメントサイズを大きく設定して、オーバーヘッドを低減するのが望ましい。これに対し、データベース等のように細かいアクセスがランダムに発行されるアプリケーションプログラムに対しては、セグメントサイズを小さく設定して、オーバーヘッドを低減するのが望ましい。
【0006】
また、例えば、銀行のオンラインサービスのように、高信頼性が要求されるアプリケーションプログラムに対しては、キャッシュデータの二重化を実施して障害発生時にもデータを確実に保存する必要がある。これに対し、天気予報等の一時的なシミュレーションや科学技術計算のように、別の手段で保存されたソースデータを元に演算を行う場合には、途中の演算結果(テンポラリなデータ)を保存するのに、キャッシュメモリへの二重書きによる高信頼性を確保するよりも、性能が重視される場合もある。
【0007】
従来のストレージシステムでは、個々のアプリケーションプログラム毎に、そのI/O特性に応じて、セグメントサイズの設定や二重書きの要否等の性能チューニングを行うことはできなかったため、複数のアプリケーションプログラムに共用されるストレージシステムにおいて、あるアプリケーションプログラムに最適なキャッシュメモリのチューニングを行うと、他のアプリケーションプログラムの性能が低下してしまうという不都合が生じていた。例えば、ストリーミングサービスを提供するアプリケーションプログラム用にセグメントサイズを大きく設定すると、データベースのようなアプリケーションプログラムでは、キャッシュメモリのヒット率が低下してしまう。
【0008】
更に、複数のアプリケーションプログラムによって共用されるストレージシステムにおいては、アプリケーションプログラム間のリソース競合が生じ得るので、各アプリケーションプログラムの性能を適正に発揮させるためにも、リソース競合を抑制する必要がある。例えば、負荷の異なる複数のアプリケーションプログラムにより共有されるストレージシステムでは、高負荷のアプリケーションプログラムから、より多くの書き込みを受けるため、キャッシュメモリが高負荷のアプリケーションプログラムのデータで埋め尽くされてしまい、他のアプリケーションプログラムとの間にリソース競合が生じる場合がある。
【0009】
このようなリソース競合は、I/O特性の異なる複数のアプリケーションプログラム間だけでなく、性能特性の異なる複数のディスクドライブ間にも生じ得る。例えば、ファイバチャネル・ディスクドライブとATA(Advanced Technology Attachment)ディスクドライブとを混載したストレージシステムにおいては、ATAディスクドライブの方がファイバチャネル・ディスクドライブよりもアクセスに時間がかかるので、キャッシュメモリからファイバチャネル・ディスクドライブへのデステージングに要する時間よりも、キャッシュメモリからATAディスクドライブへのデステージングに要する時間の方が長い。すると、ATAディスクドライブを利用するアプリケーションプログラムのデータがキャッシュメモリに留まる時間がその分長くなるので、キャッシュメモリ上にATAディスクドライブのデータが溜まり、リソース競合が生じることとなる。
【0010】
本発明は、上記の問題点に鑑みてなされたもので、本発明の目的の一つは、複数のアプリケーションプログラムに共用されるストレージシステムにおいて、個々のアプリケーションプログラムのそれぞれに対して、最適なキャッシュメモリの性能チューニングを行えるストレージシステムを提供することにある。
【0011】
本発明の目的の一つは、複数のアプリケーションプログラムに共用されるストレージシステムにおいて、I/O特性の異なる複数のアプリケーションプログラム間、又は性能特性の異なる複数の記憶デバイス間におけるキャッシュメモリのリソース競合による性能低下を抑制するストレージシステムを提供することである。
【課題を解決するための手段】
【0012】
上記の課題を解決するため、本発明のストレージシステムは、複数のアプリケーションプログラムからアクセス可能な複数の論理ボリュームを提供する記憶デバイスと、複数のアプリケーションプログラムからの入出力要求に応答して、論理ボリュームへのデータの入出力を制御するコントローラと、論理ボリュームに入出力されるデータを一時的に格納するキャッシュメモリと、を備え、キャッシュメモリは、複数の論理ボリュームのそれぞれに対して排他的に割り当てられた複数のパーティションに論理分割されている。
【0013】
複数の論理ボリュームのそれぞれに対して、複数のパーティションのそれぞれを排他的に割り当てることにより、各アプリケーションプログラムに対して排他的に割り当てられた論理ボリューム間のリソース競合を抑制し、最適なキャッシュメモリの性能チューニングを行うことができる。
【0014】
また、記憶デバイスの性能特性が異なる場合であっても、複数の論理ボリュームのそれぞれに対して、複数のパーティションをそれぞれ排他的に割り当てることにより、記憶デバイスの性能特性の相違によるキャッシュメモリのリソース競合を抑制し、最適なキャッシュメモリの性能チューニングを行うことができる。
【発明を実施するための最良の形態】
【0015】
以下、各図を参照して、本発明の実施形態について説明する。各実施例は特許請求の範囲を限定するものではなく、また実施例で説明されている特徴の全てが発明の解決手段に必須であるとは限らない。
【実施例1】
【0016】
図1は本実施例に係るストレージシステムの主要構成を示している。
ストレージシステム10は、通信ネットワーク50を介して一台又は複数台のホスト装置(上位装置)60に接続している。ホスト装置60は、ストレージシステム10の上位装置として機能するサーバ装置、パーソナルコンピュータ、ワークステーション、メインフレーム等である。ホスト装置60には、OS(Operating System)61上で動作する複数のアプリケーションプログラムAP♯0,AP♯1,…,AP♯Nが実装されている。ストレージシステム10が提供する記憶資源は、複数のアプリケーションプログラムAP♯0,AP♯1,…,AP♯Nによって共用されている。
【0017】
通信ネットワーク50としては、例えば、SAN(Storage Area Network)、LAN(Local Area Network)、インターネット、専用回線、公衆回線等を挙げることができる。ホスト装置60がSANを介してストレージシステム10に接続する場合、ホスト装置60は、ファイバチャネルプロトコルに従って、ストレージシステム10の記憶資源のデータ管理単位であるブロックを単位としてデータ入出力を要求する。ホスト装置60がLANを介してストレージシステム10に接続する場合、ホスト装置60は、NFS(Network File System)やiSCSI(internet Small Computer System Interface)等のプロトコルにより、ファイル名を指定してファイル単位でのデータ入出力を要求する。ストレージシステム10がホスト装置60からのファイルアクセス要求を受け付けるためには、NAS(Network Attached Storage)機能を搭載する必要がある。
【0018】
ストレージシステム10は、二重化されたコントローラ20,30を備えるデュアルコントローラ構成を採用しており、複数のアプリケーションプログラムAP♯0,AP♯1,…,AP♯Nに提供される記憶デバイスとして、複数のディスクドライブ40を備える。ディスクドライブ40として、例えば、ファイバチャネル・ディスクドライブ、シリアルATAディスクドライブ、パラレルATAディスクドライブ、SCSIディスクドライブ等の性能特性の異なる複数のディスクドライブを使用してもよく、或いは、これらのディスクドライブの中から何れか一種類のディスクドライブを使用してもよい。ここで、性能特性とは、例えば、ディスクドライブに対するアクセス速度等をいう。
【0019】
尚、記憶デバイスとして、これらのディスクドライブに限らず、例えば、光ディスク、半導体メモリ、磁気テープ、フレキシブルディスク等を採用してもよい。
【0020】
コントローラ20,30は、複数のディスクドライブ40をいわゆるRAID方式に規定されるRAIDレベル(例えば、0,1,5)で制御することができる。RAID方式においては、複数のディスクドライブ40が一つのRAIDグループとして管理される。RAIDグループ上には、ホスト装置60からのアクセス単位である複数の論理ボリュームが定義されている。各論理ボリュームには、LUN(Logical Unit Number)と呼ばれる識別子LU♯0,LU♯1,…,LU♯Mが付与されている。
【0021】
コントローラ20は、主に、CPU21、CPU/PCIブリッジ22、ローカルメモリ(LM)23、データ転送制御部(D−CTL)24、キャッシュメモリ(CM)25、ホストI/F制御部26、及びドライブI/F制御部27を備える。
【0022】
CPU21は、ホスト装置60からのデータ入出力要求に応答して複数のディスクドライブ40へのI/O処理(ライトアクセス、又はリードアクセス)を制御するプロセッサである。コントローラ20は、タイマ29を備えており、予め設定された時刻になると、キャッシュメモリ25のセグメントサイズを自動調整するように構成されている(詳細については後述する。)。ローカルメモリ23には、CPU21のマイクロプログラムが格納されている。CPU/PCIブリッジ22は、CPU21、ローカルメモリ22、及びデータ転送制御部24を相互に接続する。キャッシュメモリ25は、ディスクドライブ40に書き込むためのライトデータ、又はディスクドライブ40から読み出したリードデータを一時的に格納するバッファメモリである。キャッシュメモリ25は、電源バックアップされており、ストレージシステム10に電源障害が発生した場合でも、キャッシュデータのロストを防ぐ不揮発性メモリとして構成されている。
【0023】
データ転送制御部24は、CPU/PCIブリッジ22、キャッシュメモリ25、ホストI/F制御部26、ドライブI/F制御部27を相互に接続し、ホスト装置60とディスクドライブ40との間のデータ転送を制御する。具体的には、ホスト装置60からのライトアクセスが行われると、データ転送制御部24は、ホストI/F制御部26を介してホスト装置60から受け取ったライトデータをキャッシュメモリ25に書き込み、その後、そのライトデータをディスクドライブ40へ非同期書き込みするために、ドライブI/F制御部27へ転送する。また、ホスト装置60からのリードアクセスが行われると、ドライブI/F制御部27を介してディスクドライブ40から読みとったリードデータをキャッシュメモリ25に書き込むとともに、ホストI/F制御部26に転送する。データ転送制御部24とCPU/PCIブリッジ22との間にはPCIバス28が配線されている。
【0024】
ホストI/F制御部26は、ホスト装置60とのインターフェースを制御するコントローラであり、例えば、ファイバチャネルプロトコルによるホスト装置60からのブロックアクセス要求を受信する機能を有する。ドライブI/F制御部27は、ディスクドライブ40とのインターフェースを制御するコントローラであり、例えば、ディスクドライブ40を制御するプロトコルに従って、ディスクドライブ40へのデータ入出力要求を制御する機能を有する。
【0025】
コントローラ30は、CPU31、CPU/PCIブリッジ32、ローカルメモリ(LM)33、データ転送制御部(D−CTL)34、キャッシュメモリ(CM)35、ホストI/F制御部36、及びドライブI/F制御部37を備えており、コントローラ20と同様の構成となっている。コントローラ30は、タイマ39を備えており、予め設定された時刻になると、キャッシュメモリ35のセグメントサイズを自動調整するように構成されている(詳細については後述する。)。
【0026】
各コントローラ20,30のデータ転送制御部24,34は、データバス51を通じて接続されており、一方のキャッシュメモリ25(又は35)に書き込まれるデータは、他方のキャッシュメモリ35(又は25)にも二重書きされるようにデータ転送制御部24,34間でデータ転送を行っている。また、ディスクドライブ40がRAIDレベル5で管理される場合には、データ転送制御部24,34がパリティデータを演算する。
【0027】
ストレージシステム10には、システムを保守又は管理するための管理端末70が接続されており、両者間では、ファイバチャネルプロトコル又はTCP/IP等の所定の通信プロトコルに基づいてデータ通信が行われる。オペレータは、管理端末70を操作することにより、例えば、ディスクドライブ70上に定義される論理ボリュームの設定、ディスクドライブ40の増設又は減設、RAID構成の設定変更(例えば、RAIDレベル5からRAIDレベル1への変更)等を行うことができる。また、後述するように、個々のアプリケーションプログラムAP♯0,AP♯1,…,AP♯Nのそれぞれに対して、キャッシュメモリ25,35の最適な性能チューニング(パーティション分割、パーティションサイズ設定、セグメントサイズ設定、二重化要否設定、パーティションへの論理ボリュームの割り当て設定又は割当変更等)を行うこともできる。
【0028】
尚、管理端末70は、ストレージシステム10内に内蔵してもよく、或いは外付けの構成としてもよい。
【0029】
図2はデュアルコントローラによるキャッシュデータの二重書きの概要を示している。説明の便宜上、以降の説明においては、コントローラ20をCTL♯0と称し、コントローラ30をCTL♯1と別称する場合がある。各々のCTL♯0,CTL♯1には、排他的にアクセスする権限を有する論理ボリュームが割り当てられている。例えば、CTL♯0は論理ボリュームLU♯0に対して排他的にアクセスする権限を有し、CTL♯1は論理ボリュームLU♯1に対して排他的にアクセスする権限を有するものとする。どのCTL♯0,CTL♯1にどの論理ボリュームLU♯0,LU♯1が排他的に割り当てられているかは、例えば、キャッシュメモリ25,35上の管理情報領域(図8参照)等にその設定情報を書き込むことで、各々のCTL♯0,CTL♯1が自身のアクセス権限を把握することができる。
【0030】
キャッシュメモリ25は、複数の記憶領域P01,P02,P03に分割され、キャッシュメモリ35は、複数の記憶領域P11,P12,P13に分割されている。記憶領域P01は、CTL♯0に対して排他的に割り当てられた論理ボリューム(例えば、LU♯0)に読み書きされるキャッシュデータDATA0を一時的に格納するための記憶領域であり、当該記憶領域P01には、二重書きの設定がなされている(ミラーオン設定)。つまり、記憶領域P01に書き込まれるキャッシュデータDATA0はCTL♯0の制御によって、記憶領域P11にも書き込まれる。記憶領域P11は、CTL♯0によるミラーリング用の記憶領域である。
【0031】
同様に、記憶領域P12は、CTL♯1に対して排他的に割り当てられた論理ボリューム(例えば、LU♯1)に読み書きされるキャッシュデータDATA1を一時的に格納するための記憶領域であり、当該記憶領域P12には、二重書きの設定がなされている。つまり、記憶領域P12に書き込まれるキャッシュデータDATA1は、CTL♯1の制御によって、記憶領域P02にも書き込まれる。記憶領域P02は、CTL♯1によるミラーリング用の記憶領域である。
【0032】
記憶領域P03,P13は、二重書きの設定がなされていない記憶領域である(ミラーオフ設定)。
【0033】
尚、二重書き設定がなされている記憶領域P01,P02,P11,P12をミラーオン領域と称し、二重書き設定がなされていない記憶領域P03,P13をミラーオフ領域と称する。
【0034】
図3はキャッシュメモリの各パーティションと、アプリケーションプログラム及び論理ボリュームとの対応関係を示している。上述した各記憶領域(例えば、P01)は、複数のパーティション(例えば、P01♯0,P01♯2,P01♯3)に論理分割される。パーティションとは、ユーザデータを格納するための、キャッシュメモリ上に論理分割された記憶領域であって、個々の論理ボリュームに対して排他的に割り当てられた個々の記憶領域をいう。パーティションの用語は、その趣旨を逸脱しない範囲内で、例えば、エリア、分割記憶領域、分割エリア、分割キャッシュ等と別称することもできる。各々のパーティションには、それぞれ異なる論理ボリューム(例えば、リソース競合を防ぎたい論理ボリューム)LU♯0,LU♯1,…,LU♯Mを排他的に割り当てることにより、論理ボリューム単位でのキャッシュメモリ25,35の独立したリソース管理が可能になる。つまり、各論理ボリュームが使用するキャッシュメモリ25,35の記憶資源がパーティション単位で割り当てられているため、論理ボリュームが性能特性の異なるディスクドライブ40によって構成されている場合であっても、論理ボリュームの性能特性の相違によるリソース競合を抑制できる。
【0035】
また、各々の論理ボリュームLU♯0,LU♯1,…,LU♯Mに対して、I/O特性の異なる複数のアプリケーションプログラムAP♯0,AP♯1,…,AP♯Nを排他的に割り当てることにより、アプリケーションプログラムAP♯0,AP♯1,…,AP♯NのI/O特性の相違によるキャッシュメモリ25,35のリソース競合を抑制できる。例えば、パーティションP01♯0に対しては、多目的用途のアプリケーションプログラムが使用する論理ボリュームLU♯0を割り当て、パーティションP01♯1に対しては、データベースが使用する論理ボリュームLU♯2を割り当て、パーティションP01♯2に対しては、ストリーミング用のアプリケーションプログラムが使用する論理ボリュームLU♯3を割り当てる例が示されている。
【0036】
また、ミラーオフ領域としての記憶領域P03は、パーティションP03♯0,P03♯1に論理分割され、それぞれのパーティションP03♯0,P03♯1には、科学技術計算を行うアプリケーションプログラム(HPC)が使用する論理ボリュームLU♯5,LU♯6が割り当てられている。ミラーオフ領域は、科学技術計算の途中演算結果のように、テンポラリなデータを格納する場合など、二重書きを要しない場合に用いられる。
【0037】
記憶領域P02,P11,P12,P13についても、同様に、複数のパーティションに論理分割されている。
【0038】
尚、記憶領域P01(コピー元領域)のミラーリング領域(コピー先領域)としての記憶領域P11のパーティション分割の態様(パーティション数、パーティションサイズ、及びセグメントサイズ)は、記憶領域P01のパーティション分割の態様と同一である。同様に、記憶領域P12(コピー元領域)のミラーリング領域(コピー先領域)としての記憶領域P02のパーティション分割の態様は、記憶領域P12のパーティション分割の態様と同一である。一方、ミラーオフ領域としての記憶領域P03,P13のパーティション分割の態様は必ずしも同一である必要はなく、また、記憶領域P03,P13のサイズについても、必ずしも同一である必要はない。但し、記憶領域P03,P13のサイズを同一に設定すれば、ミラーオン領域を効率よく使用できる。
【0039】
また、各々のパーティション毎に二重書き要否の設定(ミラーオン/ミラーオフ)を行うことも可能である。ミラーオフ設定をすると、データ転送制御部24,34相互間におけるキャッシュデータの転送が不要となるので、データ転送に伴うコントローラ20,30のオーバーヘッドを低減できる。
【0040】
図4はLUNとパーティション番号との対応関係を示している。この対応関係は、オペレータが管理端末70を操作し、論理ボリュームとパーティションの割付変更をストレージシステム10に指示することによって、適宜変更することが可能である(詳細については後述する。)。
【0041】
図5は各パーティションに論理ボリュームを割り当てることで、リソース競合を抑制する概要を示している。パーティションP01♯1には、アプリケーションプログラムAP♯1が論理ボリュームLU♯2に読み書きするキャッシュデータDATA2が格納され、パーティションP01♯2には、アプリケーションプログラムAP♯2が論理ボリュームLU♯3に読み書きするキャッシュデータDATA3が格納される。アプリケーションプログラムAP♯1は、データベース等の細かいランダムなアクセスを発行するプログラムであるのに対し、アプリケーションプログラムAP♯2は、連続的な大量データを扱うストリーミング等のプログラムであるから、両者のI/O特性は大きく異なる。つまり、各パーティションP01♯1,P01♯2に格納されるキャッシュデータDATA2,DATA3がキャッシュメモリ上に滞留する時間は異なるので、パーティション毎に独立したソース管理がなされていない場合には、リソース競合が生じる場合がある。
【0042】
ところが、キャッシュメモリをパーティション分割し、各アプリケーションプログラムAP♯1,AP♯2が使用できるキャッシュメモリのリソース資源を排他的に割り当てることにより、アプリケーションプログラムAP♯1のキャッシュデータDATA2は、パーティションP01♯2のリソース資源を消費することがない。同様に、アプリケーションプログラムAP♯2のキャッシュデータDATA3は、パーティションP01♯1のリソース資源を消費することがない。これにより、ある一つのアプリケーションプログラムの負荷がキャッシュメモリ全体に波及し、リソース競合が生じる事態を抑制できる。
【0043】
尚、論理ボリュームLU♯2,LU♯3を構成するディスクドライブの性能特性が異なる場合であっても、同様の理由により、リソース競合を抑制できる。
【0044】
図6は各パーティションの論理構成を示している。ここでは、各記憶領域を4つのパーティションに分割する例を示す。各パーティションのパーティションサイズ、及びセグメントサイズは、アプリケーションプログラムのI/O特性に応じて最適な値に設定されている。一般的に、セグメントサイズを大きく設定すると、キャッシュデータをデステージングする際に、ダーティデータからクリーンデータへの状態遷移を管理する管理情報が少なくなるので、処理速度が向上し、オーバーヘッドを低減できる。セグメントサイズを小さく設定すると、キャッシュメモリのヒット率が向上する。例えば、動画配信等の大量のデータを連続的に扱うアプリケーションプログラムが使用するパーティションに対しては、セグメントサイズを大きく設定し、データベース等の細かいアクセスがランダムに発行されるアプリケーションプログラムが使用するパーティションに対しては、セグメントサイズを小さく設定するのが好ましい。
【0045】
同図に示す例では、パーティションP01♯0のセグメントサイズは16KB(デフォルトサイズ)、パーティションP01♯1のセグメントサイズは4KB、パーティションP02♯0のセグメントサイズは64KB、パーティションP03♯0のセグメントサイズは512KBに設定されている。
【0046】
ミラーオン領域(記憶領域P01,P02,P11,P12)に限らず、ミラーオフ領域(記憶領域P03,P13)においても、各パーティションのパーティションサイズ、及びセグメントサイズは、アプリケーションプログラムのI/O特性に応じて最適な値に設定されている。
【0047】
ストレージシステム10の運用形態として、例えば、個々のアプリケーションプログラム毎に、パーティションサイズ、セグメントサイズ、二重書き要否等を予めデフォルト設定しておき、アプリケーションプログラムの種別をストレージシステム10が判断すると、そのアプリケーションプログラムに対してデフォルト設定された設定値を基に、キャッシュメモリの最適な性能チューニングを行えるように、パーティションサイズ、セグメントサイズ、二重書き要否等を設定するように構成してもよい。
【0048】
また、各パーティションのセグメントサイズは、アプリケーションプログラムのI/O特性の変化に応じて、自動的に、或いはオペレータの入力操作によって、電源を落とさずに、動的に設定変更可能である。例えば、パーティションP01♯0のセグメントサイズは、デフォルトの16KBに設定されているが、I/O特性の変化に応じて、これを動的に拡大(例えば、64KBに設定変更)し、或いは縮小(例えば、4KBに設定変更)することもできる。また、各パーティションのパーティションサイズを自動的に、或いはオペレータの入力操作によって、電源を落とさずに、動的に設定変更することもできる。大量のデータを扱うアプリケーションプログラムが使用するパーティションに対しては、パーティションサイズを大きく設定し、少量のデータを扱うアプリケーションプログラムが使用するパーティションに対しては、パーティションサイズを小さく設定することもできる。
【0049】
セグメントサイズ、又はパーティションサイズをストレージシステム10が自動的に設定変更する例として、例えば、キャッシュメモリ25,35のリソース競合状態をCPU21,31が監視し、各アプリケーションに最適となるように、セグメントサイズ、又はパーティションサイズを変更するように構成してもよい。
【0050】
図7は各パーティションの物理構成と論理構成の対応関係を示している。キャッシュメモリは、複数のブロック(例えば、BLK♯0,BLK♯9,BLK♯25,BLK♯27)を個々のパーティション(例えば、P01♯0)にマッピングすることにより、複数のパーティションに論理分割されている。各ブロックは、複数のセグメントSEGによって構成されている。このように、パーティションの論理分割を、ブロックのマッピングによって実現することにより、パーティションサイズの変更は、ブロックのマッピング変更によって対応できるので、セグメントの移動量を最小限に抑えることができる。仮に、物理構成と論理構成を同一にすると、パーティションサイズを変更した場合に、パーティション境界を順番にずらしながら移動しなければならず、大量のセグメントを移動させなければならない場合も生じ得る。
【0051】
図8はコントローラの主要構成を示している。図1に示した符号と同一符号のハードウエアは同一のハードウエアを示すものとして、その詳細な説明は省略する。キャッシュメモリ25が提供する記憶領域は、主に、管理情報領域25aと、ユーザデータ領域25bに分けられる。ユーザデータ領域25bは、ユーザデータ(キャッシュデータ)を一時的に格納するための記憶領域であり、上述の如く複数のアプリケーションプログラムに対応して、複数のパーティションに分割される。管理情報領域25aは、ユーザデータを管理する上で必要な管理情報、例えば、データ属性(リードデータ/ライトデータ)、ホスト装置60が指定するユーザデータの論理アドレス、キャッシュメモリ上の空きエリア情報、キャッシュデータの置き換えに関する優先順位の情報等が格納されている。
【0052】
図9はセグメントと親サブセグメント管理ブロック及び子サブセグメント管理ブロックとの対応関係を示している。本実施例において、セグメントは、単一又は複数のサブセグメントから構成されており、セグメントを構成するサブセグメントの個数を調整することで、セグメントサイズを調整している。サブセグメントのサイズは予め固定サイズに設定されている。複数のサブセグメントからセグメントを構成する場合、当該セグメントにおいて、最初にアクセスされたサブセグメントを親サブセグメントと称し、2番目以降にアクセスされたサブセグメントを子サブセグメントと称する。親サブセグメントと子サブセグメントを区別しない場合には、単に、サブセグメントと称する。
【0053】
同図において、SSEG1〜SSEG8は、アクセスされたサブセグメントを、そのアクセス順番とともに示している。サブセグメントのサイズが16KBにデフォルト設定されている場合、セグメントサイズを64KBにするには、サブセグメントを4つ集めてセグメントを構成する必要がある。例えば、SSEG1を親サブセグメントとし、その後に続く3つのサブセグメントSSEG2〜SSEG4を子サブセグメントとして、互いに論理的に関連付けることにより、一つのセグメントを構成することができる。同様に、SSEG5を親サブセグメントとし、その後に続く3つのサブセグメントSSEG6〜SSEG8を子サブセグメントとして、互いに論理的に関連付けることにより、一つのセグメントを構成することができる。
【0054】
尚、親サブセグメントと子サブセグメントは、必ずしも連続した記憶領域上に配置されている必要はなく、キャッシュメモリ上の各所に離散的に点在していてもよい。
【0055】
親サブセグメント管理ブロック80は、親サブセグメントアドレス81、順方向ポインタ82、逆方向ポインタ83、子サブセグメントポインタ84、及び親サブセグメント管理情報85を含む。親サブサブセグメントアドレス81は、親サブセグメント管理ブロック80が管理する親サブセグメントの位置を示す。順方向ポインタ82は、最も古くアクセスされた順番に親サブセグメント管理ブロック80を指し示す。逆方向ポインタ83は、最も新しくアクセスされた順番に親サブセグメント管理ブロック80を指し示す。子サブセグメントポインタ84は、子サブセグメント管理ブロック90を指し示す。親サブセグメント管理情報85には、親サブセグメントのステータス(ダーティ/クリーン/フリー)等が格納される。親サブセグメント内にダーティデータとクリーンデータが混在する場合には、ビットマップ情報によって、そのステータスが管理される。
【0056】
子サブセグメント管理ブロック90は、子サブセグメントアドレス91、順方向ポインタ92、及び子サブセグメント管理情報93を含む。子サブサブセグメントアドレス91は、子サブセグメント管理ブロック90が管理する子サブセグメントの位置を示す。順方向ポインタ92は、最も古くアクセスされた順番に子サブセグメント管理ブロック90を指し示す。子サブセグメント管理情報93には、子サブセグメントのステータス等が格納される。子サブセグメント内にダーティデータとクリーンデータが混在する場合には、ビットマップ情報によって、そのステータスが管理される。
【0057】
先頭ポインタ101は、順方向ポインタ81の最後尾を指し示し、後方ポインタ102は、先頭の逆方向ポインタ82によって指し示される。
【0058】
このようにして、キュー管理される親サブセグメント管理ブロック80と、子サブセグメント管理ブロック90は、ステータスがダーティデータの場合には、ダーティーキューとして管理され、ステータスがクリーンデータの場合には、クリーンキューとして管理される。親サブセグメントと複数の子サブセグメントを論理的に関連付けてセグメントを構成することにより、親サブセグメントが状態遷移すると、子サブセグメントも状態遷移するので、デステージング処理を高速化できる。
【0059】
図10はパーティションサイズ自動変更処理ルーチンのフローチャートを示している。アプリケーションプログラムAP♯0,AP♯1,…,AP♯Nはその用途に応じて、24時間常時稼働することが要求されるものや、ある特定の時間帯に稼働率が高くなるもの等、様々な種類が存在し、その負荷は時間帯毎に異なる場合がある。アプリケーションプログラムの性能を適正に発揮させるために、時間帯毎の負荷変動に応じてパーティションサイズを変更するのが好ましい。例えば、あるアプリケーションプログラムが稼働しない夜間において、他のアプリケーションプログラムが使用するパーティションサイズを大きくする場合等である。
【0060】
パーティションサイズ自動変更処理ルーチンが呼び出されると、CPU21は、タイマ29が刻む現在時刻がタイマ設定時刻に一致するか否かをチェックする(S101)。現在時刻がタイマ設定時刻になると(S101;YES)、CPU21は、オペレータが予め指定したパーティションサイズより大きいパーティションサイズを有するパーティションを変更元パーティションとし、オペレータが予め指定したパーティションサイズより小さいパーティションサイズを有するパーティションを変更先パーティションとして選択する(S102)。
【0061】
例えば、パーティションP01#0のサイズがユーザデータ領域25bの10%、パーティションP01#1のサイズがユーザデータ領域25bの5%に設定されていると仮定し、パーティションP01#1のサイズを7%に変更するには、2%分のブロックをパーティションP01#0からパーティションP01#1へ移動させればよい。このとき、パーティションP01#0が変更元パーティションとなり、パーティションP01#1が変更先パーティションとなる。但し、変更元パーティションが複数存在する場合は、その時間帯において、最も稼働率が低いアプリケーションプログラムが使用するパーティションを優先的に変更元パーティションとして選択してもよい。
【0062】
次に、CPU21は、変更元パーティションから変更先パーティションへ移動するブロックを確保して、そのブロック内のダーティデータをデステージし(S103)、そのブロック内のサブセグメントを管理する親サブセグメント管理ブロックと子サブセグメント管理ブロックをデキューする(S104)。
【0063】
次に、CPU21は、変更先パーティションのセグメントサイズが最小サイズ(サブセグメントサイズ)であるか否かをチェックする(S105)。変更先パーティションのセグメントサイズが最小サイズでない場合には(S105;NO)、CPU21は、親サブセグメントに子サブセグメントが接続されるように、親サブセグメント管理ブロック80と子サブセグメント管理ブロック90のキュー管理を再編成し(S106)、この再編成処理を子サブセグメント数分繰り返すことで(S107)、変更元パーティションから変更先パーティションに移動するブロックのセグメントサイズを変更先パーティションのセグメントサイズに一致させる。
【0064】
セグメントサイズが最小サイズでない場合(S105;NO)、又はS106の処理が子サブセグメント数分終了した場合(S107;YES)には、CPU21は、親サブセグメント同士が接続されるように、親サブセグメント管理ブロック80のキュー管理を再編成し(S108)、全てのパーティションが指定のサイズとなるまで、この再編成処理を繰り返す(S109)。
【0065】
次に、CPU21は、キャッシュメモリ25がミラーオフ設定されているか否かをチェックし(S110)、ミラーオフ設定されていない場合には(S110;NO)、キャッシュメモリ35のミラーオン領域についても、同様に、パーティションサイズの変更を行うように、CPU31に指示を送る(S111)。これにより、キャッシュメモリ25,35のミラーオン領域のパーティションサイズとセグメントサイズは同一となる。一方、キャッシュメモリ25にミラーオフ設定されている場合には(S110;YES)、キャッシュメモリ35のパーティションサイズ等を変更する必要がないので、CPU21は、オペレータに完了報告をし(S112)、本ルーチンを抜ける。
【0066】
図11はパーティションサイズ手動変更処理ルーチンのフローチャートを示している。オペレータは管理端末70を操作することによって、ストレージシステム10にパーティションサイズの変更を指示することができる。例えば、オペレータは、管理端末70のディスプレイに表示される各アプリケーションプログラムの負荷変動を監視し、個々のアプリケーションに最適なパーティションサイズを割り当てることができる。
【0067】
パーティションサイズ手動変更処理ルーチンが呼び出されると、CPU21は、オペレータからパーティションサイズの変更指示を受け付ける(S201)。すると、CPU21は、オペレータが指定したパーティションサイズより大きいパーティションサイズを有するパーティションを変更元パーティションとし、オペレータが指定したパーティションサイズより小さいパーティションサイズを有するパーティションを変更先パーティションとして選択する(S202)。
【0068】
次に、CPU21は、変更元パーティションから変更先パーティションへ移動するブロックを確保し、そのブロック内のダーティデータをデステージし(S203)、そのブロック内のサブセグメントを管理する親サブセグメント管理ブロックと子サブセグメント管理ブロックをデキューする(S204)。
【0069】
次に、CPU21は、変更先パーティションのセグメントサイズが最小サイズ(サブセグメントサイズ)であるか否かをチェックする(S205)。変更先パーティションのセグメントサイズが最小サイズでない場合には(S205;NO)、CPU21は、親サブセグメントに子サブセグメントが接続されるように、親サブセグメント管理ブロック80と子サブセグメント管理ブロック90のキュー管理を再編成し(S126)、この再編成処理を子サブセグメント数分繰り返すことで(S207)、変更元パーティションから変更先パーティションに移動するブロックのセグメントサイズを変更先パーティションのセグメントサイズに一致させる。
【0070】
セグメントサイズが最小サイズでない場合(S205;NO)、又はS206の処理が子サブセグメント数分終了した場合(S207;YES)には、CPU21は、親サブセグメント同士が接続されるように、親サブセグメント管理ブロック80のキュー管理を再編成し(S208)、全てのパーティションが指定のサイズとなるまで、この再編成処理を繰り返す(S209)。
【0071】
次に、CPU21は、キャッシュメモリ25がミラーオフ設定されているか否かをチェックし(S210)、ミラーオフ設定されていない場合には(S210;NO)、キャッシュメモリ35のミラーオン領域についても、同様に、パーティションサイズの変更を行うように、CPU31に指示を送る(S211)。一方、キャッシュメモリ25にミラーオフ設定されている場合には(S210;YES)、キャッシュメモリ35のパーティションサイズ等を変更する必要がないので、CPU21は、オペレータに完了報告をし(S212)、本ルーチンを抜ける。
【0072】
図12はセグメントサイズ変更処理ルーチンのフローチャートを示している。上述の如くセグメントサイズはアプリケーションプログラムのI/O特性に応じて定められ、個々のアプリケーションプログラム毎にデフォルト設定されたセグメントサイズで運用するのが便宜であるが、アプリケーションプログラムのI/O特性の変動等に対応できるようにセグメントサイズを適宜変更できるように構成するのが望ましい。オペレータは管理端末70を操作することによって、ストレージシステム10にセグメントサイズの変更を指示することができる。
【0073】
セグメントサイズ変更処理ルーチンが呼び出されると、CPU21は、オペレータからセグメントサイズの変更指示を受け付ける(S301)。セグメントサイズの変更指示には、変更対象のパーティションと、変更後のセグメントサイズが含まれる。CPU21は、パーティションサイズの変更作業に備えて、変更対象パーティションに対応付けられた論理ボリュームへのI/Oを抑止し(S302)、変更対象パーティション内のダーティデータをデステージする(S303)。デステージ完了後、CPU21は、変更後のセグメントサイズ分だけ、親サブセグメント管理ブロックと子サブセグメント管理ブロックをデキューする(S304)。
【0074】
次に、CPU21は、セグメントサイズ変更後のセグメントサイズが最小サイズ(サブセグメントサイズ)であるか否かをチェックする(S305)。変更後のセグメントサイズが最小サイズでない場合には(S305;NO)、CPU21は、変更後のセグメントサイズ分だけ複数のサブセグメントを確保する(S306)。そして、CPU21は、親サブセグメントに子サブセグメントが接続されるように、親サブセグメント管理ブロック80と子サブセグメント管理ブロック90のキュー管理を再編成し(S307)、この再編成処理を子サブセグメント数分繰り返すことで(S308)、指定されたセグメントサイズに調整する。
【0075】
セグメントサイズが最小サイズでない場合(S305;NO)、又はS307の処理が子サブセグメント数分終了した場合(S308;YES)には、CPU21は、親サブセグメント同士が接続されるように、親サブセグメント管理ブロック80のキュー管理を再編成し(S309)、変更対象パーティション全体が指定セグメントサイズとなるまで、この再編成処理を繰り返す(S310)。次に、CPU21は、変更対象パーティションに対応付けられた論理ボリュームへのI/O抑止を解除し(S311)、オペレータに完了報告をして(S312)、本ルーチンを抜ける。
【0076】
尚、セグメントサイズを変更する場合に、必ずしも、変更対象パーティションのダーティデータを全てデステージしてからセグメントサイズを変更する必要はなく、例えば、変更対象パーティション内の一部のダーティデータをデステージし、ある程度のサブセグメントを確保できた段階で、論理ボリュームへのI/O抑止を解除し、論理ボリュームへのI/O処理と並行して、セグメントサイズの変更処理をバックグランドで行うようにしてもよい。
【0077】
また、他の手法として、変更対象パーティションのデステージ完了まで、論理ボリュームへのI/O抑止をせずに、例えば、ライトスルー方式を採用することで、I/O停止時間を削減してもよい。ここで、ライトスルー方式とは、キャッシュメモリ25,35にライトデータを書かずに、ディスク装置40に直接書き込む方式をいう。
【0078】
図13はパーティション/LU割付変更処理ルーチンのフローチャートである。オペレータは管理端末70を操作することによって、パーティションへの論理ボリュームの割付変更をストレージシステム10に指示することができる。
【0079】
パーティション/LU割付変更処理ルーチンが呼び出されると、CPU21は、オペレータからパーティションへの論理ボリュームの割付変更指示を受け付ける(S401)。そして、CPU21は、パーティション/LU割付変更作業に備えて、変更対象論理ボリュームへのI/Oを抑止し(S402)、変更対象論理ボリュームに割り当てられたキャッシュメモリ25,35上のダーティデータをデステージする(S403)。
【0080】
次に、CPU21は、変更対象論理ボリュームに割り当てるパーティションをオペレータ指定のパーティションに変更する(S404)。そして、変更対象論理ボリュームへのI/O抑制を解除し(S405)、オペレータに完了報告をして(S406)、本ルーチンを抜ける。
【0081】
図14乃至図19はパーティションサイズの参照又は変更、セグメントサイズの参照又は変更、パーティションへの論理ボリュームの割り当ての参照又は変更等を行うときに管理端末70に表示される画面イメージである。以下、これらの表示画面について、説明を加える。
【0082】
図14はユニット画面の表示例を示している。オペレータは、このユニット画面にて、各種設定値の参照又は変更等を行うことができる。ユニット画面の左側のツリーには、「Cache Partition」オブジェクトの下位に「パーティション」オブジェクトと「ロジカルユニット」オブジェクトが表示される。オペレータは、パーティションサイズの参照又は変更、或いはセグメントサイズの参照又は変更を行うときは、「パーティション」オブジェクトを選択する。すると、画面イメージは、図14から図15に遷移する。一方、オペレータは、パーティションへの論理ボリュームの割り当てを参照し、又は変更するときは、「ロジカルユニット」オブジェクトを選択する。すると、画面イメージは、図14から図17に遷移する。
【0083】
図15はパーティションの参照・変更画面を示している。同画面の右上には、「現在値」が表示され、同画面の右下には、「設定値」が表示される。オペレータは、「変更」ボタンをクリックすることにより、キャッシュ総容量、キャッシュ空き容量、各パーティションのコントローラ番号、パーティションサイズ、セグメントサイズ等の設定値を変更することができる。オペレータが「変更」ボタンをクリックすると、画面イメージは、図15から図16に遷移する。
【0084】
図16はパーティション変更画面を示している。オペレータは、この画面を通じて、各パーティションの名称、コントローラ番号、パーティションサイズ、セグメントサイズを変更することが可能である。更に、「追加」ボタンをクリックすることにより、パーティションを新たに追加することも可能である。「削除」ボタンをクリックすることにより、パーティションを削除することも可能である。オペレータは、パーティションサイズ又はセグメントサイズ等について、新たな「設定値」を入力し、「OK」ボタンをクリックすると(この操作は、上述したパーティションサイズ変更指示(S201)、又はセグメントサイズ変更指示(S301)に相当する。)、新たな「設定値」が装置に反映される。
【0085】
図17は論理ボリュームへのパーティション割り当て設定画面を示している。この画面には、現時点における、論理ボリュームへのパーティション割り当て状態が表示される。同図に示す例では、LUN0000には、Mastor0と称されるパーティションが割り当てられ、LUN0001には、Sampleと称されるパーティションが割り当てられている。オペレータが「変更」ボタンをクリックすると、画面イメージは、図17から図18に遷移する。
【0086】
図18はパーティション割り当て変更画面を示している。オペレータが「割り当ての変更」ボタンをクリックすると、画面イメージは、図18から図19に遷移する。
【0087】
図19はパーティション指定画面を示している。この画面の「ロジカルユニット番号」には、設定対象の論理ボリュームが表示される。オペレータは、「キャッシュパーティション」のプルダウンメニューから、当該論理ボリュームに割り当てたいパーティションを選択し、「OK」ボタンをクリックすると(この操作は、上述したパーティション割付変更指示(S401)に相当する。)、新たな「設定値」が装置に反映される。
【0088】
尚、上述の説明においては、オペレータが管理端末70を操作することにより、キャッシュメモリ25,35の性能チューニング(パーティション分割、パーティションサイズ設定、セグメントサイズ設定、二重化要否設定、パーティションへの論理ボリュームの割り当て設定又は割当変更等)を行う構成を例示したが、例えば、図20に示すように、ホスト装置60に実装されたミドルウエア62がアプリケーションプログラムAP♯0,AP♯1,…,AP♯NのI/O特性を監視し、そのI/O特性の変動等に応じて、ストレージシステム10に対して、パーティション分割、パーティションサイズ設定、セグメントサイズ設定、二重化要否設定、パーティションへの論理ボリュームの割り当て設定又は割当変更等を指示し、個々のアプリケーションプログラムAP♯0,AP♯1,…,AP♯Nに最適なキャッシュメモリ25,35の性能チューニングを行うように構成してもよい。
【0089】
本実施例によれば、複数の論理ボリュームのそれぞれに対して、複数のパーティションのそれぞれを排他的に割り当てることにより、各プリケーションプログラムに対して排他的に割り当てられた論理ボリューム間のリソース競合を抑制し、最適なキャッシュメモリの性能チューニングを行うことができる。
【0090】
また、ディスクドライブ40の性能特性が異なる場合であっても、複数の論理ボリュームのそれぞれに対して複数のパーティションをそれぞれ排他的に割り当てることにより、ディスクドライブ40の性能特性の相違によるキャッシュメモリ25,35のリソース競合を抑制し、最適なキャッシュメモリの性能チューニングを行うことができる。
【実施例2】
【0091】
図21は本実施例に係るストレージシステムの主要構成を示している。図1に示した符号と同一符号のハードウエアは同一のハードウエアを示すものとして、その詳細な説明は省略する。
【0092】
ローカルメモリ23には、CPU21のマイクロプログラムを格納するプログラム領域23bに加えて、ユーザデータを管理する上で必要な管理情報、例えば、データ属性(リードデータ/ライトデータ)、ホスト装置60が指定するユーザデータの論理アドレス、キャッシュメモリ上の空きエリア情報、キャッシュデータの置き換えに関する優先順位の情報等を格納するための管理情報領域23aが設けられている。一方、キャッシュメモリ25には、ユーザデータ(キャッシュデータ)を一時的に格納するためのユーザデータ格納領域25bは設けられているものの、ユーザデータを管理するための管理情報領域は設けられていない。
【0093】
ホスト装置60からストレージシステム10に対してライトアクセスがなされると、CPU21は、ローカルメモリ23の管理情報領域23aを参照して、キャッシュメモリ25のユーザデータ領域25b上における空きエリアを検索し、ライトデータをその空き領域に書き込む。また、ホスト装置60からストレージシステム10に対してリードアクセスがなされると、CPU21は、ローカルメモリ23の管理情報領域23aを参照して、キャッシュヒット判定を行う。実施例1のように管理情報領域25aがキャッシュメモリ25にある場合には、PCIバス28を経由してメモリアクセスしなければならず、高速アクセスが困難であったが、本実施例のように、管理情報領域23aがローカルメモリ23にある場合には、高速アクセスが可能であり、メモリアクセスにかかるオーバーヘッドを低減することが可能である。
【0094】
尚、CPU21内部にローカルメモリ23を実装し、そのローカルメモリ23内に管理情報領域23aを設ける構成としてもよい。
【実施例3】
【0095】
図22は本実施例に係るストレージシステムの主要構成を示している。図1又は図21に示した符号と同一符号のハードウエアは同一のハードウエアを示すものとして、その詳細な説明は省略する。
【0096】
ローカルメモリ23とキャッシュメモリ25のそれぞれには、キャッシュデータの管理情報を格納する管理情報領域23a,25aが設けられており、管理情報が2元管理されている。CPU21は、ホスト装置60からライトアクセス、又はリードアクセスに対しては、ローカルメモリ23の管理情報領域23aを参照することにより、ユーザデータ領域25bにおける空きエリアの検索、又はキャッシュヒット判定を行う。CPU21は、ホスト装置60からのライトアクセスに対して、ユーザデータ領域25bの空きエリアにライトデータを書き込むと、管理情報領域23a,25aに格納されている両方の管理情報をアップデートする。管理情報のアップデートは、CPU21が行ってもよく、或いはCPU21の指示に従って、データ転送制御部24が行ってもよい。
【0097】
図23は電源障害時の復旧処理ルーチンのフローチャートを示している。ストレージシステム10に突発的な電源障害が生じた場合、揮発性のローカルメモリ23に格納されている管理情報は消失してしまうが、電源バックされているキャッシュメモリ25の管理情報は消失することなく、保持される。そこで、障害回復時には、電源再投入を契機に、キャッシュメモリ25上の管理情報をローカルメモリ23に複写することで、消失した管理情報の復元を行うのが望ましい。この復元処理をしている間は、ストレージシステム10は、ホスト装置60からのI/O処理を一時的に停止するか、或いはI/O受付キューイングのみ行って、I/O実行を停止するか、又は管理情報領域25aを参照することにより、ホスト装置60からのI/O処理を行ってもよい。
【0098】
電源障害時の復旧処理ルーチンにおいて、電源投入が行われると(S501)、CPU21は、前回のシステム停止が電源障害によるものであったか否かをチェックする(S502)。電源障害で停止していた場合には(S502;YES)、CPU21は、キャッシュメモリ25が不揮発性か否かをチェックする(S503)。キャッシュメモリ25が電源バックアップされている等の理由により、不揮発性である場合には(S503;YES)、キャッシュメモリ25上の管理情報をローカルメモリ23に複写する(S504)。
【0099】
一方、前回のシステム停止が電源障害によるものではなく、管理情報が消失してない場合には(S502;NO)、システム運用上問題がないため、通常通り、キャッシュメモリ25の初期化を行う(S505)。キャッシュメモリ25が揮発性であり、管理情報が消失してしまった場合には(S503;NO)、管理情報の復元は無理なので、この場合においても、通常通り、キャッシュメモリ25の初期化を行う(S505)。そして、CPU21は、ホスト装置60からI/O処理準備を行い(S506)、I/O処理を開始する(S507)。
【0100】
本実施例によれば、高速アクセス可能なローカルメモリ23からキャッシュデータの管理情報を取得して、メモリアクセスのオーバーヘッドを低減しつつ、電源障害時の管理情報の消失に対しては、不揮発性のキャッシュメモリ25に保持されている管理情報を元にローカルメモリ23の管理情報を復元するため、システムの耐障害性を高めることができる。
【図面の簡単な説明】
【0101】
【図1】ストレージシステムの主要構成を示すブロック図である。
【図2】キャッシュデータの二重書きを示す説明図である。
【図3】各パーティションと論理ボリュームとの対応関係を示す図である。
【図4】LUNとパーティション番号との対応関係を示す図である。
【図5】キャッシュ分割によりリソース競合を抑制する概要を示す図である。
【図6】各パーティションの論理構成を示している。
【図7】各パーティションの物理構成と論理構成の対応関係を示している。
【図8】コントローラの主要構成図である。
【図9】セグメントとその管理情報との対応関係を示す図である。
【図10】パーティションサイズ自動変更処理ルーチンのフローチャートである。
【図11】パーティションサイズ手動変更処理ルーチンのフローチャートである。
【図12】セグメントサイズ変更処理ルーチンのフローチャートである。
【図13】パーティション/LU割付変更処理ルーチンのフローチャートである。
【図14】ユニット画面の表示例である。
【図15】パーティションの参照・変更画面の表示例である。
【図16】パーティション変更画面の表示例である。
【図17】論理ボリュームへのパーティション割り当て設定画面の表示例である。
【図18】パーティション割り当て変更画面の表示例である。
【図19】パーティション指定画面の表示例である。
【図20】ストレージシステムの主要構成を示すブロック図である。
【図21】ストレージシステムの主要構成を示すブロック図である。
【図22】ストレージシステムの主要構成を示すブロック図である。
【図23】電源障害時の復旧処理ルーチンのフローチャートである。
【符号の説明】
【0102】
10…ストレージシステム
20,30…コントローラ
21,31…CPU
22,32…CPU/PCIブリッジ
23,33…ローカルメモリ
24,34…データ転送制御部
25,35…キャッシュメモリ
26,36…ホストI/F制御部
27,37…ドライブI/F制御部
28,38…PCIバス
29,39…タイマ
40…ディスクドライブ
70…管理端末
【特許請求の範囲】
【請求項1】
複数のアプリケーションプログラムからアクセス可能な複数の論理ボリュームを提供する記憶デバイスと、
前記複数のアプリケーションプログラムからの入出力要求に応答して、前記論理ボリュームへのデータの入出力を制御するコントローラと、
前記論理ボリュームに入出力されるデータを一時的に格納するキャッシュメモリと、
を備え、
前記キャッシュメモリは、前記複数の論理ボリュームのそれぞれに対して排他的に割り当てられた複数のパーティションに論理分割されている、ストレージシステム。
【請求項2】
請求項1に記載のストレージシステムであって、
前記複数の論理ボリュームのそれぞれには、前記複数のアプリケーションプログラムのそれぞれが排他的に割り当てられている、ストレージシステム。
【請求項3】
請求項1に記載のストレージシステムであって、
前記複数のパーティションは、それぞれ独立してセグメントサイズの調整が可能に構成されている、ストレージシステム。
【請求項4】
請求項3に記載のストレージシステムであって、
前記コントローラは、前記キャッシュメモリのセグメントの構成単位であるサブセグメント同士を論理的に関連付けることにより前記セグメントを構成し、前記セグメントを構成するサブセグメントの個数を調整することにより、前記セグメントサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項5】
請求項3に記載のストレージシステムであって、
前記コントローラは、前記セグメントサイズの調整が行われるパーティションに対応付けられた論理ボリュームへのデータ入出力を抑止し、前記パーティションに格納されているダーティデータを前記記憶デバイスにデステージした後で、前記セグメントサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項6】
請求項3に記載のストレージシステムであって、
前記コントローラは、前記セグメントサイズの調整が行われるパーティションに格納されているダーティデータを前記記憶デバイスにデステージしている最中はライトスルー方式で前記アプリケーションプログラムからの入出力要求に応答し、前記デステージが完了した後に、前記セグメントサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項7】
請求項3に記載のストレージシステムであって、
前記ストレージシステムを管理する管理端末を更に備え、
前記コントローラは、前記管理端末からの指示に応答して、前記セグメントサイズをそれぞれのパーティション毎に独立して調整する、ストレージシステム。
【請求項8】
請求項1に記載のストレージシステムであって、
前記複数のパーティションは、それぞれ独立してパーティションサイズの調整が可能に構成されている、ストレージシステム。
【請求項9】
請求項8に記載のストレージシステムであって、
前記コントローラは、前記キャッシュメモリのブロック同士を論理的に関連付けることにより、前記パーティションサイズを調整する、ストレージシステム。
【請求項10】
請求項8に記載のストレージシステムであって、
前記コントローラは、前記パーティションサイズの調整が行われるパーティションに対応付けられた論理ボリュームへのデータ入出力を抑止し、前記パーティションサイズの調整が行われるパーティションにおいて、パーティションサイズの変更に使用されるブロック内に格納されているダーティデータを前記記憶デバイスにデステージした後で、パーティションサイズを調整する複数のパーティション間で前記ブロックを移動させることで、前記パーティションサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項11】
請求項8に記載のストレージシステムであって、
前記コントローラは、前記パーティションサイズの調整が行われるパーティションにおいて、パーティションサイズの変更に使用されるブロック内に格納されているダーティデータを前記記憶デバイスにデステージしている最中はライトスルー方式で前記アプリケーションプログラムからの入出力要求に応答し、前記ブロック内に格納されているダーティデータのデステージが完了した後に、パーティションサイズを調整する複数のパーティション間で前記ブロックを移動させることで、前記パーティションサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項12】
請求項8に記載のストレージシステムであって、
前記ストレージシステムを管理する管理端末を更に備え、
前記コントローラは、前記管理端末からの指示に応答して、前記パーティションサイズをそれぞれのパーティション毎に独立して調整する、ストレージシステム。
【請求項13】
請求項8に記載のストレージシステムであって、
現在時刻を計測するタイマを更に備え、
前記コントローラは、予めタイマ設定された時刻になると、予め設定されたパーティションサイズになるように、前記パーティションサイズをそれぞれのパーティション毎に独立して調整する、ストレージシステム。
【請求項14】
請求項1に記載のストレージシステムであって、
前記キャッシュメモリを複数備え、
前記複数のパーティションは、それぞれ独立して、前記複数のキャッシュメモリへの二重書き要否が設定自在に構成されている、ストレージシステム。
【請求項15】
請求項14に記載のストレージシステムであって、
前記ストレージシステムを管理する管理端末を更に備え、
前記コントローラは、前記管理端末からの指示に応答して、前記二重書き要否を前記パーティション毎に独立して調整する、ストレージシステム。
【請求項16】
複数のアプリケーションプログラムからアクセス可能な複数の論理ボリュームを提供する記憶デバイスと、
前記複数のアプリケーションプログラムからの入出力要求に応答して、前記論理ボリュームへのデータの入出力を制御するCPUと、
前記論理ボリュームに入出力されるデータを一時的に格納するキャッシュメモリと、
前記キャッシュメモリよりも高速アクセス可能に構成され、キャッシュデータの管理情報を格納するローカルメモリと、
を備え、
前記キャッシュメモリは、前記複数の論理ボリュームのそれぞれに対して排他的に割り当てられた複数のパーティションに論理分割されており、
前記CPUは、前記ローカルメモリに格納された管理情報を参照することにより、キャッシュデータの管理を行う、ストレージシステム。
【請求項17】
請求項16に記載のストレージシステムであって、
前記キャッシュメモリには、前記ローカルメモリに格納されている管理情報と同一の管理情報が格納されており、
前記CPUは、前記キャッシュメモリと前記ローカルメモリの両方に格納されている管理情報の更新を行う、ストレージシステム。
【請求項18】
請求項17に記載のストレージシステムであって、
前記キャッシュメモリは、不揮発性メモリである、ストレージシステム。
【請求項19】
請求項18に記載のストレージシステムであって、
電源障害により前記ローカルメモリの管理情報が消失した場合には、前記CPUは、前記キャッシュメモリに格納されている管理情報を前記ローカルメモリに複写することにより、消失した管理情報の復元を行う、ストレージシステム。
【請求項20】
請求項16に記載のストレージシステムであって、
前記キャッシュデータの管理情報は、前記キャッシュメモリのセグメントの構成単位である親サブセグメントと子サブセグメントのそれぞれを管理する親サブセグメント管理ブロックと、子サブセグメント管理ブロックをキュー管理するための情報であり、
前記親サブセグメント管理ブロックは、前記親サブセグメントの前記キャッシュメモリにおける位置を指し示す親サブセグメントアドレスと、最も古くアクセスされた順番に親サブセグメント管理ブロックを指し示す順方向ポインタと、最も新しくアクセスされた順番に親サブセグメント管理ブロックを指し示す逆方向ポインタと、子サブセグメント管理ブロックを指し示す子サブセグメントポインタとを含み、
前記子サブセグメント管理ブロックは、前記子サブセグメントの前記キャッシュメモリにおける位置を指し示す子サブセグメントアドレスと、最も古くアクセスされた順番に子サブセグメント管理ブロックを指し示す順方向ポインタとを含む、ストレージシステム。
【請求項1】
複数のアプリケーションプログラムからアクセス可能な複数の論理ボリュームを提供する記憶デバイスと、
前記複数のアプリケーションプログラムからの入出力要求に応答して、前記論理ボリュームへのデータの入出力を制御するコントローラと、
前記論理ボリュームに入出力されるデータを一時的に格納するキャッシュメモリと、
を備え、
前記キャッシュメモリは、前記複数の論理ボリュームのそれぞれに対して排他的に割り当てられた複数のパーティションに論理分割されている、ストレージシステム。
【請求項2】
請求項1に記載のストレージシステムであって、
前記複数の論理ボリュームのそれぞれには、前記複数のアプリケーションプログラムのそれぞれが排他的に割り当てられている、ストレージシステム。
【請求項3】
請求項1に記載のストレージシステムであって、
前記複数のパーティションは、それぞれ独立してセグメントサイズの調整が可能に構成されている、ストレージシステム。
【請求項4】
請求項3に記載のストレージシステムであって、
前記コントローラは、前記キャッシュメモリのセグメントの構成単位であるサブセグメント同士を論理的に関連付けることにより前記セグメントを構成し、前記セグメントを構成するサブセグメントの個数を調整することにより、前記セグメントサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項5】
請求項3に記載のストレージシステムであって、
前記コントローラは、前記セグメントサイズの調整が行われるパーティションに対応付けられた論理ボリュームへのデータ入出力を抑止し、前記パーティションに格納されているダーティデータを前記記憶デバイスにデステージした後で、前記セグメントサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項6】
請求項3に記載のストレージシステムであって、
前記コントローラは、前記セグメントサイズの調整が行われるパーティションに格納されているダーティデータを前記記憶デバイスにデステージしている最中はライトスルー方式で前記アプリケーションプログラムからの入出力要求に応答し、前記デステージが完了した後に、前記セグメントサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項7】
請求項3に記載のストレージシステムであって、
前記ストレージシステムを管理する管理端末を更に備え、
前記コントローラは、前記管理端末からの指示に応答して、前記セグメントサイズをそれぞれのパーティション毎に独立して調整する、ストレージシステム。
【請求項8】
請求項1に記載のストレージシステムであって、
前記複数のパーティションは、それぞれ独立してパーティションサイズの調整が可能に構成されている、ストレージシステム。
【請求項9】
請求項8に記載のストレージシステムであって、
前記コントローラは、前記キャッシュメモリのブロック同士を論理的に関連付けることにより、前記パーティションサイズを調整する、ストレージシステム。
【請求項10】
請求項8に記載のストレージシステムであって、
前記コントローラは、前記パーティションサイズの調整が行われるパーティションに対応付けられた論理ボリュームへのデータ入出力を抑止し、前記パーティションサイズの調整が行われるパーティションにおいて、パーティションサイズの変更に使用されるブロック内に格納されているダーティデータを前記記憶デバイスにデステージした後で、パーティションサイズを調整する複数のパーティション間で前記ブロックを移動させることで、前記パーティションサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項11】
請求項8に記載のストレージシステムであって、
前記コントローラは、前記パーティションサイズの調整が行われるパーティションにおいて、パーティションサイズの変更に使用されるブロック内に格納されているダーティデータを前記記憶デバイスにデステージしている最中はライトスルー方式で前記アプリケーションプログラムからの入出力要求に応答し、前記ブロック内に格納されているダーティデータのデステージが完了した後に、パーティションサイズを調整する複数のパーティション間で前記ブロックを移動させることで、前記パーティションサイズを前記パーティション毎に独立して調整する、ストレージシステム。
【請求項12】
請求項8に記載のストレージシステムであって、
前記ストレージシステムを管理する管理端末を更に備え、
前記コントローラは、前記管理端末からの指示に応答して、前記パーティションサイズをそれぞれのパーティション毎に独立して調整する、ストレージシステム。
【請求項13】
請求項8に記載のストレージシステムであって、
現在時刻を計測するタイマを更に備え、
前記コントローラは、予めタイマ設定された時刻になると、予め設定されたパーティションサイズになるように、前記パーティションサイズをそれぞれのパーティション毎に独立して調整する、ストレージシステム。
【請求項14】
請求項1に記載のストレージシステムであって、
前記キャッシュメモリを複数備え、
前記複数のパーティションは、それぞれ独立して、前記複数のキャッシュメモリへの二重書き要否が設定自在に構成されている、ストレージシステム。
【請求項15】
請求項14に記載のストレージシステムであって、
前記ストレージシステムを管理する管理端末を更に備え、
前記コントローラは、前記管理端末からの指示に応答して、前記二重書き要否を前記パーティション毎に独立して調整する、ストレージシステム。
【請求項16】
複数のアプリケーションプログラムからアクセス可能な複数の論理ボリュームを提供する記憶デバイスと、
前記複数のアプリケーションプログラムからの入出力要求に応答して、前記論理ボリュームへのデータの入出力を制御するCPUと、
前記論理ボリュームに入出力されるデータを一時的に格納するキャッシュメモリと、
前記キャッシュメモリよりも高速アクセス可能に構成され、キャッシュデータの管理情報を格納するローカルメモリと、
を備え、
前記キャッシュメモリは、前記複数の論理ボリュームのそれぞれに対して排他的に割り当てられた複数のパーティションに論理分割されており、
前記CPUは、前記ローカルメモリに格納された管理情報を参照することにより、キャッシュデータの管理を行う、ストレージシステム。
【請求項17】
請求項16に記載のストレージシステムであって、
前記キャッシュメモリには、前記ローカルメモリに格納されている管理情報と同一の管理情報が格納されており、
前記CPUは、前記キャッシュメモリと前記ローカルメモリの両方に格納されている管理情報の更新を行う、ストレージシステム。
【請求項18】
請求項17に記載のストレージシステムであって、
前記キャッシュメモリは、不揮発性メモリである、ストレージシステム。
【請求項19】
請求項18に記載のストレージシステムであって、
電源障害により前記ローカルメモリの管理情報が消失した場合には、前記CPUは、前記キャッシュメモリに格納されている管理情報を前記ローカルメモリに複写することにより、消失した管理情報の復元を行う、ストレージシステム。
【請求項20】
請求項16に記載のストレージシステムであって、
前記キャッシュデータの管理情報は、前記キャッシュメモリのセグメントの構成単位である親サブセグメントと子サブセグメントのそれぞれを管理する親サブセグメント管理ブロックと、子サブセグメント管理ブロックをキュー管理するための情報であり、
前記親サブセグメント管理ブロックは、前記親サブセグメントの前記キャッシュメモリにおける位置を指し示す親サブセグメントアドレスと、最も古くアクセスされた順番に親サブセグメント管理ブロックを指し示す順方向ポインタと、最も新しくアクセスされた順番に親サブセグメント管理ブロックを指し示す逆方向ポインタと、子サブセグメント管理ブロックを指し示す子サブセグメントポインタとを含み、
前記子サブセグメント管理ブロックは、前記子サブセグメントの前記キャッシュメモリにおける位置を指し示す子サブセグメントアドレスと、最も古くアクセスされた順番に子サブセグメント管理ブロックを指し示す順方向ポインタとを含む、ストレージシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【公開番号】特開2006−227688(P2006−227688A)
【公開日】平成18年8月31日(2006.8.31)
【国際特許分類】
【出願番号】特願2005−37347(P2005−37347)
【出願日】平成17年2月15日(2005.2.15)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成18年8月31日(2006.8.31)
【国際特許分類】
【出願日】平成17年2月15日(2005.2.15)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]