以下、本発明の実施の形態を図面に基づいて説明する。最初に、本発明の第1の実施の形態について説明する。
図1は、本発明の第1の実施の形態の計算機システムの構成を示すブロック図である。
本実施の形態の計算機システムは、四つの記憶サブシステム、ホスト計算機130及び管理計算機140からなる。
四つの記憶サブシステムは、リンク160を介して直列に連結される。四つの記憶サブシステムの一つである直結記憶サブシステム100は、ホスト計算機130にストレージネットワーク150を介して接続される。他の三つは、リモート記憶サブシステム110又は120である。以下の説明において、直結記憶サブシステム100、リモート記憶サブシステム110及び120を特に区別する必要がない場合、「記憶サブシステム」と記載する。
各記憶サブシステム内のキャッシュメモリ303、論理ボリューム(LU)331及びその他の構成については、後で詳細に説明する。さらに、LU331によって構成されるコピーペア601及びコンシステンシグループ(CG)602についても、後で詳細に説明する。
リンク160は、記憶サブシステム間の通信路である。各記憶サブシステム間は、一つ以上のリンク160によって連結される。リンク160は、例えばファイバーチャネル(FC)であってもよいが、接続される記憶サブシステムが遠距離にある場合は、公衆回線等を含んでもよい。後述するリモートコピーは、リンク160を介して実行される。
以下の説明において、直列に連結された記憶サブシステムのうち、ホスト計算機130に近い側を「上位」、遠い側を「下位」と記載する。本実施の形態では、直結記憶サブシステム100が最も上位であり、その下位に二つのリモート記憶サブシステム110が接続され、さらにその下位に、リモート記憶サブシステム120が接続される。
言い換えると、直結記憶サブシステム100は、直列に連結された記憶サブシステムの上位側の端に位置する。
ホスト計算機130から直結記憶サブシステム100の論理ボリューム(後述)に書き込まれたデータは、順次、下位のリモート記憶サブシステム110等の論理ボリュームにコピー(リモートコピー)される。このように、複数の記憶サブシステムが直列に連結され、データが上位から下位へ順次コピーされる構成は、カスケード構成とも呼ばれる。
なお、以下の説明において、一つの直結記憶サブシステム100と、その下位のリモート記憶サブシステム110等の集合を「系列」と記載する。
また、コピー元の論理ボリュームとコピー先の論理ボリュームとの組を「コピーペア」と記載する。
リモートコピーには、同期リモートコピーと非同期リモートコピーの二つの種類がある。
本実施の形態において実行されるリモートコピーは、非同期リモートコピーを例として説明する。また、同期リモートコピーと非同期リモートコピーとが混在する計算機システムでもよい。
本実施の形態では、一つの系列が四つの記憶サブシステムからなるが、さらに多くの記憶サブシステムを含む計算機システムにも本発明を適用することができる。
また、図1には一つの系列のみを示すが、複数の系列が一つのホスト計算機130に接続される計算機システムにも本発明を適用することができる。
各記憶サブシステムには、数字又は文字列からなる一意の記憶サブシステム識別子(ID)が付与される。本実施の形態では、四つの記憶サブシステムに、上位から順に、「筐体1」、「筐体2」、「筐体3」及び「筐体4」が付与される。すなわち、直結サブシステム100の記憶サブシステムIDが「筐体1」、リモート記憶サブシステム110の記憶サブシステムIDが「筐体2」、その下位のリモート記憶サブシステム110の記憶サブシステムIDが「筐体3」、そのさらに下位のリモート記憶サブシステム120の記憶サブシステムIDが「筐体4」である。以下、記憶サブシステムIDが「筐体1」である記憶サブシステム(本実施の形態の場合、直結記憶サブシステム100)を、単に筐体1と記載する。他の記憶サブシステムについても同様である。
ホスト計算機130は、ストレージネットワーク150を介して直結記憶サブシステム100と接続され、直結記憶サブシステム100にデータの書き込み・読み出しを実行する計算機である。ホスト計算機130の構成については詳細な説明を省略するが、CPU、メモリ等を備える(図示省略)。
ストレージネットワーク150は、ホスト計算機130と直結記憶サブシステム100とが通信するためのネットワークである。ストレージネットワーク150上では、例えば、FC、SCSI等のプロトコルによって通信が行われる。ストレージネットワーク150は、例えば、ストレージエリアネットワーク(SAN)であってもよい。
管理計算機140は、管理ネットワーク170を介して各記憶サブシステムと接続され、これらの記憶サブシステムを管理する。管理計算機140の構成については、後で詳細に説明する(図2参照)。
管理ネットワーク170は、管理計算機140と各記憶サブシステムとが通信するためのネットワークである。本実施の形態では、管理ネットワーク170は、IPネットワークである。したがって、管理計算機140は、各記憶サブシステムをIPアドレスによって識別する。しかし、本実施の形態には、他の形態のネットワークを適用することもできる。
図2は、本発明の第1の実施の形態の管理計算機140の構成を示すブロック図である。
本実施の形態の管理計算機140は、少なくとも、入力装置201、CPU202、表示装置203、メモリ204及びストレージ管理インターフェース(I/F)205からなる。
入力装置201は、システム管理者が計算機システムの各種パラメータ等を設定するために使用される装置であり、例えば、キーボード及びポインティングデバイス等である。
CPU202は、メモリ204に格納された各種プログラムを実行するプロセッサである。
表示装置203は、計算機システムの状態や各種メッセージ等を表示する装置であり、例えば、CRT等の画像表示装置である。また、表示装置203は、システム管理者が計算機システムの各種パラメータを設定する際に、グラフィカルユーザインターフェース(GUI)を提供してもよい。
メモリ204は、例えば、半導体メモリである。メモリ204には、CPU202によって実行される各種プログラム及びそれらのプログラムの実行の際に参照される各種の情報が格納される。本実施の形態のメモリ204には、少なくとも、監視情報設定プログラム211、構成情報収集プログラム212、閾値設定プログラム213、障害定義情報設定プログラム214、情報収集プログラム215、I/O制限実行判定プログラム216、監視設定情報221、コピーペア管理情報222、全体キャッシュ使用量閾値情報223、個別キャッシュ使用量閾値情報224、障害定義情報225及びI/O制限装置情報226が格納される。これらのプログラム及び情報については、後で詳細に説明する。
ストレージ管理I/F205は、管理ネットワーク170を介して各記憶サブシステムと接続され、これらと通信をするインターフェースである。
図3は、本発明の第1の実施の形態の直結記憶サブシステム100の構成を示すブロック図である。
本実施の形態の直結記憶サブシステム100は、コントローラ300及びディスクアレイ330からなる。
コントローラ300は、直結記憶サブシステム100の制御装置であり、少なくとも、ホストI/F301、管理用I/F302、キャッシュメモリ303、プロセッサ304、記憶装置I/F305及びメモリ306からなる。
ホストI/F301は、ストレージネットワーク150を介してホスト計算機130と接続され、通信をするインターフェースである。
管理用I/F302は、管理ネットワーク170を介して管理計算機140と接続され、通信をするインターフェースである。
キャッシュメモリ303は、データを一時的に格納するメモリである。例えば、キャッシュメモリ303には、非同期リモートコピーを実行する際に、コピーされるデータが一時的に格納されてもよい。このようなキャッシュメモリ303の使用方法については、後で詳細に説明する。また、キャッシュメモリ303には、ディスクアレイ330に書き込まれるデータ又はディスクアレイ330から読み出されたデータが一時的に格納されてもよい。
プロセッサ304は、メモリ306に格納された各種プログラムを実行する。
記憶装置I/F305は、リンク160を介してリモート記憶サブシステム110等と接続される。リモートコピーによってコピーされるデータは、記憶装置I/F305によって送受信される。
メモリ306は、例えば、半導体メモリである。メモリ306には、プロセッサ304によって実行される各種プログラム及びそれらのプログラムの実行の際に参照される各種の情報が格納される。本実施の形態のメモリ306には、少なくとも、I/O制限命令受付プログラム311、I/O制限処理プログラム312、筐体情報管理プログラム313、I/O制限情報321、コピーペア構成情報322、キャッシュ管理テーブル323及びリンク稼動状況テーブル324が格納される。これらのプログラム及び情報については、後で詳細に説明する。
なお、図3のメモリ306には、自連結位置判断プログラム314が格納されているが、本実施の形態の直結記憶サブシステム100は、このプログラムを必要としない。後述する第2の実施の形態においては、自連結位置判断プログラム314が必要となる。図4及び図5に示すリモート記憶サブシステム110等についても同様である。
ディスクアレイ330は、複数のディスクドライブ(図示省略)からなる記憶装置である。ディスクアレイ330は、例えば、Redundant Arrays of Inexpensive Disks(RAID)を構成してもよい。
ディスクアレイ330には、ホスト計算機130からの書き込み要求に応じて、データが格納される。また、ホスト計算機130からの読み出し要求に応じて、ディスクアレイ330に格納されたデータが読み出される。
ディスクアレイ330上の記憶領域(データが格納される領域)は、一つ以上の論理ボリューム(LU)331として管理される。LU331は、ホスト計算機によって論理的なディスクドライブとして認識される領域である。
図4は、本発明の第1の実施の形態のリモート記憶サブシステム110の構成を示すブロック図である。
リモート記憶サブシステム110において、直結記憶サブシステム100と共通する構成については、説明を省略する。
本実施の形態のリモート記憶サブシステム110は、コントローラ400及びディスクアレイ330からなる。
コントローラ400は、リモート記憶サブシステム110の制御装置であり、少なくとも、管理用I/F302、キャッシュメモリ303、プロセッサ304、二つの記憶装置I/F305及びメモリ306からなる。
二つの記憶装置I/F305のうち、一方は、上位の記憶サブシステムと接続され、もう一方は、下位の記憶サブシステムと接続される。
図5は、本発明の第1の実施の形態のリモート記憶サブシステム120の構成を示すブロック図である。
本実施の形態のリモート記憶サブシステム120の構成は、リモート記憶サブシステム110と同じである。ただし、リモート記憶サブシステム120のメモリ306には、筐体情報管理プログラム313、コピーペア構成情報322、キャッシュ管理テーブル323及びリンク稼動状況テーブル324が格納され、I/O制限命令受付プログラム311、I/O制限処理プログラム312及びI/O制限情報321は格納されない。
次に、本実施の形態の計算機システムに形成されるコンシステンシグループ及びコピーペアについて、図1を参照して説明する。
コピーペア601とは、リモートコピーが実行されるLU331の組であり、具体的には、データのコピー元のLU331と、データのコピー先のLU331との組である。なお、図1では、コピーペア601を矢印で示す。
本実施の形態において、各LU331は、LU識別子(LUID)によって識別される。以下の説明において、LU識別子が「LU10」であるLU331を、単にLU10と記載する。他のLU識別子についても同様である。
図1に示すように、本実施の形態の筐体1には、少なくともLU10及びLU20の二つのLU331が格納される。筐体2には、少なくともLU11及びLU21の二つのLU331が格納される。筐体3には、少なくともLU12及びLU22の二つのLU331が格納される。筐体4には、少なくともLU13及びLU23の二つのLU331が格納される。
図1に示すように、LU10とLU11は、コピーペア601を形成する。そのコピーペア601のペア識別子(ペアID)は、「Pair11」である。以下の説明において、ペアIDが「Pair11」であるコピーペア601を、単に「Pair11」と記載する。他のコピーペア601についても同様である。
図1に示すように、LU11とLU12は、Pair12を形成する。LU12とLU13は、Pair13を形成する。LU20とLU21は、Pair21を形成する。LU21とLU22は、Pair22を形成する。LU22とLU23は、Pair23を形成する。
一つのコピーペア601において、データのコピー元のLU331を「正LU」、コピー先のLU331を「副LU」と記載する。図1に示す矢印の元が正LU、矢印の先が副LUである。例えば、Pair11において、LU10が正LU、LU11が副LUである。また、LU11は、Pair11の副LUであると同時に、Pair12の正LUでもある。
コピーペア601によって連結されたLU10、LU11、LU12及びLU13が一つの系列をなす。同様に、コピーペア601によって連結されたLU20、LU21、LU22及びLU23が別の系列をなす。
図1のようなコピーペア601の系列が形成された場合、ホスト計算機130から筐体1のLU10に書き込まれたデータは、LU10からLU11にコピー(リモートコピー)され、LU11からLU12にコピーされ、さらに、LU12からLU13にコピーされ、各LU331に格納される。同様にして、ホスト計算機130から筐体1のLU20に書き込まれたデータは、順次、LU21、LU22及びLU23にコピーされて格納される。
リモートコピーには、同期リモートコピーと非同期リモートコピーの二つの方法がある。
例えば、筐体1がホスト計算機130からLU10へのデータ書き込み要求を受けた場合、筐体1は、LU10にデータを格納した後、そのデータを筐体2のLU11にコピー(リモートコピー)する。具体的には、筐体1は、リンク160を介してそのデータを筐体2に転送する。筐体2は、筐体1から受けたデータをLU11に格納して、筐体1に応答を返す。
同期リモートコピーによれば、筐体1は、LU10にデータを格納し、さらに、筐体2から応答を受けた後で、そのデータの書き込みが終了したことを示す応答をホスト計算機130に返す。
一方、非同期リモートコピーによれば、筐体1は、LU10にデータを格納すると、そのデータを筐体1のキャッシュメモリ303に格納し、その格納が終了した時点でホスト計算機130に応答を返す。キャッシュメモリ303に格納されたデータは、その後、リンク160を介して筐体2に転送される。例えば、筐体1は、リンク160の通信量(トラフィック量)が少ない時間帯に、キャッシュメモリ303のデータを転送してもよい。
筐体1のキャッシュメモリ303に格納されたデータは、キャッシュメモリ303に格納された順に(すなわちLU10に格納された順に)筐体2に転送される。しかし、筐体1から送信された順で筐体2がデータを受信するとは限らない。筐体1と筐体2との間に複数のリンク160が設けられ、それらの複数のリンク160にデータ送信が分散されると、後から送信されたデータが先に送信されたデータより早く到達する場合があるためである。
例えば、ホスト計算機130からデータ「A」、「B」及び「C」(図示省略)が、その順でLU10に書き込まれる。そして、それらのデータが筐体1から筐体2に転送される。筐体2が「A」、「C」の順で受信してLU11に格納する。このとき、筐体2が「B」を受信する前に、筐体1又はリンク160に障害が発生すると、リモートコピーが停止して、LU11にはデータ「A」、「C」が格納され、データ「B」が格納されていないこととなる。
このように、本来後で格納されるデータが、先に格納されるべきデータより早く格納されると、LU11においてデータの整合性(コンシステンシ)が失われる。コンシステンシが失われたデータは、利用することができない。このため、上位のLU331に格納されるデータの順序は、その下位のLU331においても維持される必要がある。
このため、筐体2は、筐体1から受信したデータを一旦キャッシュメモリ303に格納する。そして、筐体2は、データ「B」を受信してLU11に格納するまで、データ「C」をLU11に格納せず、キャッシュメモリ303に格納しておく。このように、リモートコピーによってこれから送信されるデータ又は受信したデータが一旦格納されるキャッシュメモリ303上の領域は、サイドファイルとも呼ばれる。以下、これから送信されるデータが格納される領域を正側キャッシュ、受信したデータが格納される領域を副側キャッシュと記載する。
これらの正側キャッシュ及び副側キャッシュは、それぞれ、これから送信されるデータ及び受信したデータのバッファとして使用される資源であり、上記のサイドファイルと呼ばれるものの他、いわゆるジャーナルであってもよい。
具体的には、例えば、筐体2がデータ「A」を受信したとき、データ「A」は、筐体2のキャッシュメモリ303に格納される。このとき、データ「A」が格納された領域(ここでは、領域「a」とする。図示省略)は、「副側キャッシュ」と識別される。データ「A」は、例えば、LU11に格納される。この格納が終了しても、データ「A」がリモートコピーによって筐体3に転送され、筐体3のキャッシュメモリ303に格納されるまで、データ「A」は領域「a」から削除されない。データ「A」がリモートコピーによって筐体3に転送されるとき、領域「a」は、「正側キャッシュ」と識別される。
なお、複数のLU331においてコンシステンシが求められる場合もある。例えば、一つのデータベースに関するデータが複数のLU331に格納される場合、それらの複数のLU331のコンシステンシが求められる。このように、コンシステンシが求められるLU331からなるコピーペア601は、コンシステンシグループ(CG)602を形成する。図1において、Pair11とPair21が一つのCG602を形成する(図1の破線で囲まれた部分)。
CG602は、CG識別子(CGID)によって識別される。Pair11とPair21によって形成されるCG602のCGIDは、「CG1」である。以下、CGIDが「CG1」であるCG602を、単にCG1と記載する。他のCG602についても同様である。
同様に、Pair12とPair22がCG2を形成し、Pair13とPair23がCG3を形成する。
各キャッシュメモリ303は、各CG602に対応する正側キャッシュ又は副側キャッシュを含む。具体的には、筐体1のキャッシュメモリ303は、CG1の正側キャッシュを含む。筐体2のキャッシュメモリ303は、CG1の副側キャッシュ及びCG2の正側キャッシュを含む。筐体3のキャッシュメモリ303は、CG2の副側キャッシュ及びCG2の正側キャッシュを含む。筐体4のキャッシュメモリ303は、CG3の副側キャッシュを含む。
一般に、同期リモートコピーが実行されるコピーペアと非同期リモートコピーが実行されるコピーペアとが一つの計算機システムに混在する場合がある。しかし、一つのCG602内には、異なる種類のリモートコピーが混在してはならない。例えば、図1のCG2に属するPair12及びPair22において同期リモートコピーが実行され、CG3に属するPair13及びPair23において非同期リモートコピーが実行されてもよい。しかし、Pair12において同期リモートコピーが実行され、Pair22において非同期リモートコピーが実行されてはならない。
本実施の形態では、全てのコピーペア601において非同期リモートコピーが実行される場合について説明する。しかし、本発明は、同期リモートコピーが実行されるコピーペア601と非同期リモートコピーが実行されるコピーペア601とが混在する計算機システムにも適用することができる。
次に、本実施の形態の概要について、図1を参照して説明する。
例えば、筐体3と筐体4との間のリンク160の通信が混雑した場合、筐体3から筐体4へのリモートコピーにおけるデータ転送速度が低下する。筐体2から筐体3へのデータ転送速度が筐体3から筐体4へのデータ転送速度を上回る場合、筐体3のキャッシュメモリ303に占める送信側キャッシュのデータ量が増加する。キャッシュメモリ303の容量は有限であるため、やがてキャッシュメモリ303からデータが溢れる。その結果、筐体3は筐体2から転送されるデータを受け付けることができなくなり、筐体2及び筐体3の間のリモートコピーが停止(サスペンド)する。
本実施の形態の管理計算機140は、このようなリモートコピーの停止を防ぐため、各筐体のキャッシュメモリの使用状況を観測する。そして、いずれかのキャッシュメモリのデータ量が所定の閾値を超えた場合、いずれかの筐体のリモートコピーによるデータI/O又はホスト計算機130からのデータI/Oを制限することによって、キャッシュメモリのデータ溢れを防止する。
このとき、管理計算機140は、発生した障害の状況を観測し、データI/Oの制限によってデータ溢れを防止することができるか否かを判定する。例えば、筐体3と筐体4の間の全てのリンク160に障害が発生した場合、データI/Oを制限しても筐体3のキャッシュメモリ303のデータ溢れを防止することができない。
また、管理計算機140は、各筐体のキャッシュメモリ303の使用状況を観測し、余裕のあるキャッシュメモリ303を探す。例えば、筐体3のキャッシュメモリ303にデータ溢れが発生しそうであり、筐体2のキャッシュメモリ303の容量にも余裕がなく、筐体1のキャッシュメモリ303には余裕がある場合、管理計算機140は、筐体1と筐体2との間、及び、筐体2と筐体3との間のI/Oを制限することによって、筐体3のキャッシュメモリ303のデータ溢れを防止する。
筐体2が筐体1から受けるI/Oが制限されたとしても、筐体3が筐体2から受けるI/Oを制限しない限り、筐体2のキャッシュメモリ303に既に格納されているデータが筐体3に流れ込むことによって、筐体3のキャッシュメモリ303にデータ溢れが発生することがある。このため、筐体1と筐体2との間だけでなく、筐体2と筐体3との間においてもI/O制限を実行する必要がある。
以下、本実施の形態について詳細に説明する。なお、以下の説明は、特に記載がない限り、図1から図5に示す計算機システムに関する。
最初に、本実施の形態の管理計算機140に格納されるプログラム及び情報について説明する。
図6は、本発明の第1の実施の形態の管理計算機140に格納される監視設定情報の説明図である。
図6(A)は、監視設定情報221を設定するために管理計算機140に表示される監視設定画面の説明図である。
図6(A)の監視設定画面800は、監視情報設定プログラム211によって管理計算機140の表示装置203に表示される。監視設定画面800は、システム管理者が監視設定情報221を設定するためのGUIを提供する。
監視設定画面800は、コメント表示部810、監視インターバル入力部820、監視対象入力部830、決定ボタン840及び取り消しボタン850からなる。
コメント表示部810は、システム管理者に、監視対象記憶サブシステム及び監視インターバルを設定するよう促すコメントを表示する部分である。
監視インターバル入力部820は、システム管理者が監視インターバルを設定する部分である。システム管理者が監視インターバル入力部820に入力した値が、監視インターバルとして設定される。監視インターバルとは、キャッシュメモリ303の使用状況を監視する間隔である。図6(A)の例において、システム管理者は、監視インターバルを「3分」と設定している。
監視対象入力部830は、管理計算機140が監視する対象の記憶サブシステムをシステム管理者が設定する部分である。ここで監視対象として設定された記憶サブシステムのキャッシュメモリの使用状況が監視インターバルごとに監視される。
監視対象入力部830は、監視対象IPアドレス入力部831、記憶サブシステムID入力部832及び追加・削除ボタン833からなる。
監視対象IPアドレス入力部831は、システム管理者が、監視対象として設定しようとする記憶サブシステムの管理ネットワーク170におけるIPアドレスを設定する部分である。図6(A)の例では、筐体1、筐体2、筐体3及び筐体4に対して、それぞれ、「192.168.0.3」、「192.168.0.4」、「192.168.0.5」及び「192.168.0.6」が設定される。
記憶サブシステムID入力部832は、システム管理者が、監視対象として設定しようとする記憶サブシステムの記憶サブシステムIDを設定する部分である。図6(A)の例では、筐体1、筐体2、筐体3及び筐体4が設定される。
追加・削除ボタン833は、監視対象の記憶サブシステムを追加又は削除するときにシステム管理者が使用する部分である。
システム管理者が監視対象の記憶サブシステムを新たに追加しようとする場合、追加ボタンを操作すると(例えば、画面上で「追加」表示にカーソルを合わせてマウスクリックすると)、監視対象入力部830に新たな空の行が出現する。システム管理者は、その空の行に、新たな監視対象として追加される記憶サブシステムのIPアドレス及び記憶サブシステムIDを入力する。
システム管理者が監視対象の記憶サブシステムを削除しようとする場合、削除しようとする記憶サブシステムが表示された行の削除ボタンを操作すると(例えば、画面上で「削除」表示にカーソルを合わせてマウスクリックすると)、その行が削除され、その行に表示されていた記憶サブシステムは監視対象でなくなる。
システム管理者が決定ボタン840を操作すると、そのとき監視設定画面800上に表示されている内容が監視設定情報221に登録される。
システム管理者が取り消しボタン850を操作すると、そのとき監視設定画面800上に表示されている内容が取り消される。その結果、システム管理者は、設定をやり直すことができる。
図6(B)は、図6(A)の監視設定画面によって設定される監視設定情報221の説明図である。
監視設定情報221は、図2に示すように、管理計算機140のメモリ204に格納される。以下の説明において、図6(A)で既に説明された内容は、省略する。
監視設定情報221は、監視インターバル910及び監視対象テーブル920からなる。
監視インターバル910は、図6(A)の監視インターバル入力部820に設定された値である。
監視対象テーブル920には、管理計算機による監視対象の記憶サブシステムに関する情報が格納される。
監視対象IPアドレス921及び記憶サブシステムID922は、それぞれ、監視対象IPアドレス入力部831及び記憶サブシステムID入力部832に設定された値である。
I/O制限可否923は、各記憶サブシステムがI/O制限を実行することができるか否かを示す。
本実施の形態において、I/O制限とは、記憶サブシステムの入出力(I/O)を制限することである。具体的には、図21において詳細に説明するように、記憶サブシステムがデータの書き込み応答を意図的に遅らせる処理である。I/O制限は、記憶サブシステムのI/O制限処理プログラム312によって実行される。したがって、I/O制限を実行することができるか否かは、記憶サブシステムがI/O制限処理プログラム312を備えるか否かによって決まる。
図1から図5に示す計算機システムにおいては、I/O制限処理プログラム312を備える直結記憶サブシステム100(筐体1)及びリモート記憶サブシステム110(筐体2及び筐体3)は、I/O制限を実行することができる。このため、筐体1、筐体2及び筐体3に対応するI/O制限可否923の値は「可」となる。
一方、I/O制限処理プログラム312を備えないリモート記憶サブシステム120(筐体4)は、I/O制限を実行することができない。このため、筐体4に対応するI/O制限可否923の値は「否」となる。
なお、I/O制限可否923の値は、構成情報収集プログラム212によって、各記憶サブシステムから取得され、設定される(図7参照)。
ここで、監視設定情報221を設定する手順を説明する。この手順は、監視情報設定プログラム211によって実行される。
監視情報設定プログラム211は、図2に示すように、管理計算機140のメモリ204に格納され、CPU202によって実行される。監視情報設定プログラム211は、システム管理者から入力を受け付けて、監視設定情報221を設定するプログラムである。
監視情報設定プログラム211は、実行が開始されると、表示装置203に監視設定画面800を表示する。
次に、監視情報設定プログラム211は、入力装置201からシステム管理者による入力を受け付ける。
次に、監視情報設定プログラム211は、システム管理者から入力された情報を監視設定情報221に登録する。
以上で、監視情報設定プログラム211の実行が終了する。
図7は、本発明の第1の実施の形態の管理計算機140の構成情報収集プログラム212のフローチャートである。
構成情報収集プログラム212は、図2に示すように、管理計算機140のメモリ204に格納され、CPU202によって実行される。構成情報収集プログラム212は、監視対象の記憶サブシステムから情報を取得して、監視設定情報221のI/O制限可否923及びコピーペア管理情報222を設定するプログラムである。
監視情報設定プログラム211は、実行が開始されると、監視設定情報221に設定された監視対象の記憶サブシステムから、コピーペアの構成情報及びI/O制限可否の情報を取得する(1001)。コピーペアの構成情報は、各記憶サブシステムのコピーペア構成情報322に格納されている(後述)。また、I/O制限処理プログラム312を備える直結記憶サブシステム100及びリモート記憶サブシステム110は、I/O制限可であり、I/O制限処理プログラム312を備えないリモート記憶サブシステム120は、I/O制限不可(否)である。
次に、監視情報設定プログラム211は、ステップ1001で取得したコピーペアの構成情報を、コピーペア管理情報222に設定する(1002)。このようにして設定されたコピーペア管理情報222については、図8で詳細に説明する。
次に、監視情報設定プログラム211は、ステップ1001で取得したI/O制限可否の情報を、監視設定情報221のI/O制限可否923に設定する(1003)。このようにして設定されたI/O制限可否923は、図6(B)に示す通りである。
以上で、構成情報収集プログラム212の実行が終了する。
なお、本実施の形態では、構成情報収集プログラム212は、必要な情報を各記憶サブシステムから取得するが、これらの情報は、システム管理者が入力装置201を使用して入力してもよい。
図8は、本発明の第1の実施の形態の管理計算機140に格納されるコピーペア管理情報222の説明図である。
コピーペア管理情報222は、構成情報収集プログラム212によって設定され、管理計算機140のメモリ204に格納される(図2及び図7参照)。図8は、図1のようなコピーペアが形成されている場合のコピーペア管理情報222を示す。
コピーペア管理情報222は、一つの行が一つのコピーペア601に対応するテーブルである。
コピーペア管理情報222において、CGID1101は、各コピーペア601が属するコンシステンシグループ(CG)602の識別子である。本実施の形態では、図1に示すように三つのCG602が形成されているため、CGID1101は、「CG1」、「CG2」及び「CG3」となる。
ペアID1102は、各コピーペア601の識別子である。本実施の形態では、図1に示すように六つのコピーペア601が形成されている。CG1に属する二つのコピーペア601のペアID1102は、「Pair11」及び「Pair21」である。CG2に属する二つのコピーペア601のペアID1102は、「Pair12」及び「Pair22」である。CG3に属する二つのコピーペア601のペアID1102は、「Pair13」及び「Pair23」である。
正LUID1103は、各コピーペア601の正側のLU331の識別子である。本実施の形態では、図1に示すように八つのLU331がコピーペア601を形成している。これらのうち、六つのLU331が正側である。Pair11、Pair21、Pair12、Pair22、Pair13及びPair23に対応する正LUID1103は、それぞれ、「LU10」、「LU20」、「LU11」、「LU21」、「LU12」及び「LU22」である。
正記憶サブシステムID1104は、各コピーペア601の正側のLU331を格納する記憶サブシステムの識別子である。本実施の形態では、図1に示すように四つの記憶サブシステムがLU331を格納している。これらのうち、三つの記憶サブシステムが、正側のLU331を格納する。LU10及びLU20を格納する記憶サブシステムの正記憶サブシステムID1104は、「筐体1」である。LU11及びLU21を格納する記憶サブシステムの正記憶サブシステムID1104は、「筐体2」である。LU12及びLU22を格納する記憶サブシステムの正記憶サブシステムID1104は、「筐体3」である。
副LUID1105は、各コピーペア601の副側のLU331の識別子である。本実施の形態では、六つのLU331が副側である。Pair11、Pair21、Pair12、Pair22、Pair13及びPair23に対応する副LUID1105は、それぞれ、「LU11」、「LU21」、「LU12」、「LU22」、「LU13」及び「LU23」である。
副記憶サブシステムID1106は、各コピーペア601の副側のLU331を格納する記憶サブシステムの識別子である。本実施の形態では、三つの記憶サブシステムが、副側のLU331を格納する。LU11及びLU21を格納する記憶サブシステムの副記憶サブシステムID1106は、「筐体2」である。LU12及びLU22を格納する記憶サブシステムの副記憶サブシステムID1106は、「筐体3」である。LU13及びLU23を格納する記憶サブシステムの副記憶サブシステムID1106は、「筐体4」である。
図9は、本発明の第1の実施の形態の管理計算機140の閾値設定プログラム213のフローチャートである。
閾値設定プログラム213は、図2に示すように、管理計算機140のメモリ204に格納され、CPU202によって実行される。閾値設定プログラム213は、監視対象の記憶サブシステムのキャッシュメモリの使用量の閾値を設定するプログラムである。具体的には、閾値設定プログラム213は、システム管理者からの入力を受け付けて、全体キャッシュ使用量閾値情報223及び個別キャッシュ使用量閾値情報224を設定する。これらの閾値情報については、後で詳細に説明する(図11参照)。
閾値設定プログラム213は、実行が開始されると、表示装置203に閾値設定画面を表示する(1201)。
次に、閾値設定プログラム213は、入力装置201からシステム管理者による入力を受け付ける(1202)。
なお、ステップ1201において表示される閾値設定画面及びステップ1202において入力される値の例については、図10において説明する。
次に、閾値設定プログラム213は、ステップ1202においてシステム管理者から入力された情報に基づいて、記憶サブシステムごとに、全体キャッシュ使用量閾値情報223を設定する(1203)。
次に、閾値設定プログラム213は、ステップ1202においてシステム管理者から入力された情報に基づいて、CG602ごとに、個別キャッシュ使用量閾値情報224を設定する(1204)。
以上で、監視情報設定プログラム211の実行が終了する。
図10は、本発明の第1の実施の形態の管理計算機140に表示される閾値設定画面の説明図である。
図10の監視設定画面1300は、閾値設定プログラム213によって管理計算機140の表示装置203に表示される(図9のステップ1201)。監視設定画面1300は、システム管理者が全体キャッシュ使用量閾値情報223及び個別キャッシュ使用量閾値情報224を設定するためのGUIを提供する。
監視設定画面1300は、コメント表示部1310、全体キャッシュ使用量閾値入力部1320、個別キャッシュ使用量閾値入力部1330、決定ボタン1340及び取り消しボタン1350からなる。
コメント表示部1310は、システム管理者に、監視対象記憶サブシステム及びCG602のキャッシュメモリ303の使用量の閾値を設定するよう促すコメントを表示する部分である。
全体キャッシュ使用量閾値入力部1320は、システム管理者が全体キャッシュ使用量閾値を設定する部分である。全体キャッシュ使用量閾値とは、記憶サブシステムごとに設定される値であり、I/O制限を実行するか否かを判定するために、情報収集プログラム215によって参照される(図16及び22参照)。
全体キャッシュ使用量閾値入力部1320は、記憶サブシステム選択部1321及び閾値入力部1322からなる。
システム管理者は、記憶サブシステム選択部1321を操作して、閾値1322を設定しようとする記憶サブシステムを選択する。具体的には、記憶サブシステム選択部1321の逆三角形を操作する(例えば、マウスクリックする)ことによって、監視対象の記憶サブシステムIDの一覧がプルダウンメニュー(図示省略)として表示される。システム管理者は、これらの記憶サブシステムIDから、閾値を設定しようとする記憶サブシステムを選択する。
そして、システム管理者は、選択した記憶サブシステムについて、閾値1322を入力する。ここに入力された値は、選択された記憶サブシステムの全体キャッシュ使用量閾値として設定される。図10の例では、筐体2のキャッシュメモリ303の全体キャッシュ使用量閾値が「70%」と設定される。ここで設定された全体キャッシュ使用量閾値は、全体キャッシュ使用量閾値情報223に登録される(図11(A)参照)。
個別キャッシュ使用量閾値入力部1330は、システム管理者が個別キャッシュ使用量閾値を設定する部分である。個別キャッシュ使用量閾値とは、各CG602の正側キャッシュ及び副側キャッシュに設定される値である。個別キャッシュ使用量閾値は、どのCG602についてI/O制限を実行するかを判定するために、情報収集プログラム215によって参照される(図16及び22参照)。
個別キャッシュ使用量閾値入力部1330は、CG選択部1331、正・副表示部1332及び閾値入力部1333からなる。
システム管理者は、CG選択部1331を操作して、閾値1322を設定しようとするCG602を選択する。具体的には、CG選択部1331の逆三角形を操作することによって、監視対象の記憶サブシステムに格納されたLU331が属するCG602のCGIDの一覧がプルダウンメニュー(図示省略)として表示される。
ただし、図10の例では、全体キャッシュ使用量閾値入力部1320と個別キャッシュ使用量閾値入力部1330とが連動しており、記憶サブシステム選択部1321において選択された記憶サブシステムに関係するCG602(すなわち、選択された記憶サブシステムに格納されたLU331が属するCG602)のペアIDのみが、上記のプルダウンメニューに表示される。図10の例では、筐体2が選択されているため、CG選択部1331のプルダウンメニューには、筐体2に関係するCGID「CG1」及び「CG2」が表示される(図示省略)。システム管理者は、これらのCGIDから、閾値を設定しようとするCG602を選択する。
正・副表示部1332には、閾値1322を設定しようとするキャッシュメモリ303が、CG選択部1331で選択されたCG602の正側キャッシュ又は副側キャッシュのいずれであるかが表示される。
そして、システム管理者は、選択したCG602について、閾値1333を入力する。ここに入力された値は、選択されたCG602の個別キャッシュ使用量閾値として設定される。図10の例では、筐体2のキャッシュメモリ303に含まれるCG2の正側キャッシュの個別キャッシュ使用量閾値が「30%」と設定される。ここで設定された個別キャッシュ使用量閾値は、個別キャッシュ使用量閾値情報224に登録される(図11(B)参照)。
システム管理者が決定ボタン1340を操作すると、そのときまでに閾値設定画面1300上で設定された内容が全体キャッシュ使用量閾値情報223及び個別キャッシュ使用量閾値情報224に登録される。
システム管理者が取り消しボタン1350を操作すると、そのときまでに閾値設定画面1300上で設定された内容が取り消される。その結果、システム管理者は、設定をやり直すことができる。
図11は、本発明の第1の実施の形態の管理計算機140に格納されるキャッシュ使用量閾値情報の説明図である。
図11(A)は、全体キャッシュ使用量閾値情報223の説明図である。
全体キャッシュ使用量閾値情報223は、閾値設定プログラム213によって設定され(図9及び13参照)、管理計算機140のメモリ204に格納される(図2参照)。
全体キャッシュ使用量閾値情報223は、記憶サブシステムID1401及び閾値1402からなる。
記憶サブシステムID1401は、監視対象の記憶サブシステムの識別子である。本実施の形態では、図1に示すように、筐体1、筐体2、筐体3及び筐体4が監視対象である。
閾値1402は、全体キャッシュ使用量閾値(すなわち、各記憶サブシステムごとに設定されたキャッシュメモリ303の使用量の閾値)である。具体的には、閾値1402は、各記憶サブシステムのキャッシュメモリ303の容量に対して、正側キャッシュ及び副側キャッシュとして使用されている領域のデータ量の合計値の割合の閾値である。図11(A)の例では、筐体1、筐体2、筐体3及び筐体4の閾値1402の値は、それぞれ、「40%」、「70%」、「70%」及び「70%」である。
例えば、筐体4のキャッシュメモリ303の容量に対して、正側キャッシュとして使用されている領域のデータ量及び副側キャッシュとして使用されているデータ量の合計値が閾値1402の70%を超えた場合、いずれかの記憶サブシステムにおいて、I/O制限が実行される。詳細には、図16及び22において説明する。
図11(B)は、個別キャッシュ使用量閾値情報224の説明図である。
個別キャッシュ使用量閾値情報224は、閾値設定プログラム213によって設定され(図9及び13参照)、管理計算機140のメモリ204に格納される(図2参照)。
個別キャッシュ使用量閾値情報224は、CGID1501、正・副1502及び閾値1503からなる。
CGID1501は、監視対象の記憶サブシステムに関係するCG602の識別子である。本実施の形態では、図1に示す三つのCG602のCGID1501として、CG1、CG2及びCG3が設定される。
正・副1502は、正側キャッシュと副側キャッシュの区別を示す。
閾値1503は、個別キャッシュ使用量閾値(すなわち、各CG601ごとに設定されたキャッシュメモリ303の使用量の閾値)である。具体的には、閾値1503は、各記憶サブシステムのキャッシュメモリ303の容量に対して、各CG602の正側キャッシュ又は副側キャッシュとして使用されている領域のデータ量の割合の閾値である。図11(B)の例では、全てのCG602の閾値1503が、正側、副側共、「30%」に設定されている。
例えば、筐体3のキャッシュメモリ303には、CG2の副側キャッシュ及びCG3の正側キャッシュの領域が存在し得る。図11(B)の例では、CG2の副側キャッシュの閾値1503が30%である。この場合、筐体3のキャッシュメモリ303の容量に対して、CG2の副側キャッシュのデータ量が30%を超えた場合、CG2又はその上位のCG602がI/O制限の対象となる。他のCG602の正側キャッシュ及び副側キャッシュについても同様である。詳細には、図16及び22において説明する。
図12は、本発明の第1の実施の形態の管理計算機140に表示される障害定義情報設定画面の説明図である。
図12の障害定義情報設定画面1700は、障害定義情報設定プログラム214によって管理計算機140の表示装置203に表示される。障害定義情報設定画面1700は、システム管理者が障害定義情報225を設定するためのGUIを提供する。
障害定義情報225は、各CG602の正側キャッシュ及び副側キャッシュについて、I/O制限が有効であるか否か(すなわち、I/O制限をすることによってキャッシュメモリ303のデータ溢れを防ぎ、その結果、コピーペア601の停止を回避することができるか否か)を判定するための規則(ルール)が設定される。ここで、コピーペア601の停止とは、そのコピーペア601におけるリモートコピーの停止を意味する。
障害定義情報設定画面1700は、コメント表示部1710、設定対象入力部1720、ルール設定部1730、決定ボタン1740及び取り消しボタン1750からなる。
コメント表示部1710は、システム管理者に、障害定義情報225(すなわち、I/O制限によってコピーペア601の停止を回避することができるか否かを判定するルール)を設定するよう促すコメントを表示する部分である。
設定対象入力部1720は、システム管理者が、ルールを設定しようとする対象のCG602の正側又は副側キャッシュを入力する部分である。
設定対象入力部1720は、CG選択部1721及び正・副選択部1722からなる。
システム管理者は、CG選択部1721を操作して、ルールを設定しようとするCG602を選択する。具体的には、CG選択部1721の逆三角形を操作することによって、監視対象の記憶サブシステムに格納されたLU331が属するCG602のCGIDの一覧がプルダウンメニュー(図示省略)として表示される。システム管理者は、これらのCGIDから、ルールを設定しようとするCG602を選択する。
さらに、システム管理者は、正・副選択部1722に、ルールを設定しようとする対象が、CG選択部1721で選択されたCG602の正側キャッシュであるか副側キャッシュであるかを入力する。正・副選択部1722には、CG選択部1721と同様に、正側又は副側のいずれかを選択するためのプルダウンメニューが表示されてもよい。
ルール設定部1730は、システム管理者が、設定対象入力部1720において選択された設定対象に適用されるルールを設定する部分である。
ルール設定部1730は、ルール入力部1731及び追加・削除ボタン1732からなる。
ルール入力部1731は、システム管理者が定義されたルールを入力する部分である。図12の例では、「rule1」及び「rule2」が入力されている。定義されたルールの例は、後で詳細に説明する(図14参照)。
追加・削除ボタン1732は、ルールを追加又は削除するときにシステム管理者が使用する部分である。
システム管理者は、追加・削除ボタン1732のルール追加ボタンを操作することによって、ルール設定部1730に新たな行を表示させることができる。システム管理者は、新たな行のルール入力部1731に、任意のルールを入力することによって、当該任意のルールを追加することができる。また、システム管理者は、追加・削除ボタン1732のうち、表示されているルールに対応する削除ボタンを操作することによって、当該ルールを削除することができる。
一つの設定対象に複数のルールが設定されている場合、例えば、それらのルールの論理積が、その設定対象に最終的に適用されるルールとなる。
システム管理者が決定ボタン1740を操作すると、そのときまでに障害定義情報設定画面1700上で設定された内容が障害定義情報225に登録される。
システム管理者が取り消しボタン1750を操作すると、そのときまでに障害定義情報設定画面1700上で設定された内容が取り消される。その結果、システム管理者は、設定をやり直すことができる。
図13は、本発明の第1の実施の形態の管理計算機140に格納される障害定義情報225の説明図である。
障害定義情報225は、障害定義情報設定プログラム214によって設定され(17参照)、管理計算機140のメモリ204に格納される(図2参照)。
障害定義情報225は、CGID1801、正・副1802及びルール1803からなる。
CGID1801は、監視対象の記憶サブシステムに関係するCG602の識別子である。本実施の形態では、図1に示す三つのCG602のCGID1801が設定される。図13には、CG1及びCG2のみ示し、他は省略する。
正・副1802は、正側キャッシュと副側キャッシュの区別を示す。
ルール1803は、各CG602に対して適用されるルールである。図13の例では、各CG602の正側にrule1が適用され、副側にrule2が適用される。
ここで、障害定義情報225を設定する手順を説明する。この手順は、障害定義情報設定プログラム214によって実行される。
障害定義情報設定プログラム214は、図2に示すように、管理計算機140のメモリ204に格納され、CPU202によって実行される。障害定義情報設定プログラム214は、システム管理者からの入力を受け付けて、障害定義情報225を設定する。
障害定義情報設定プログラム214は、実行が開始されると、表示装置203に障害定義情報設定画面1700を表示する。
次に、障害定義情報設定プログラム214は、入力装置201からシステム管理者による入力を受け付ける。
次に、障害定義情報設定プログラム214は、システム管理者から入力された情報を、障害定義情報225に登録する。
以上で、障害定義情報設定プログラム214の実行が終了する。
図14は、本発明の第1の実施の形態において適用されるルールの例の説明図である。
図14は、図12及び図13に示す「rule1」の例である。
ルール1によれば、最初に、有効リンク数(すなわち、使用可能なリンク160の数)が「2」より大きいか否かが判定される(1901)。ここで、判定の対象となるリンク160は、判定の対象の正側キャッシュの下位のリンク160である。例えば、rule1がCG1(図1)の正側キャッシュに適用される場合、筐体1と筐体2との間の使用可能なリンク160の数が判定される。このとき、リンク稼動状況テーブル324の稼動状況情報2904が参照されてもよい。
ステップ1901において、有効リンク数が「2」より大きいと判定された場合、I/O制限を実行することによってキャッシュメモリ303のデータ溢れ及びコピーペア601の停止を回避することができる(すなわち、I/O制限が有効である)と判定される(1902)。
一方、ステップ1901において、有効リンク数が「2」より大きくないと判定された場合、I/O制限を実行することによってキャッシュメモリ303のデータ溢れ及びコピーペア601の停止を回避することができない(すなわち、I/O制限が有効でない)と判定される(1903)。
なお、ステップ1903の判定の閾値は、「2」以外の値であっても、計算機システムの規模や性能等に応じて、十分な転送性能を確保できる有効リンク数を設定することができる。有効リンク数が、十分な転送性能を確保できる値であれば、I/O制限が有効であると判定される。
図14は、ルールの一例である。システム管理者は、任意のルールを設定することができる。
図15は、本発明の第1の実施の形態の管理計算機140に格納されるI/O制限装置情報226の説明図である。
I/O制限装置情報226は、管理計算機140のメモリ204に格納される(図2参照)。I/O制限装置情報226は、I/O制限命令を受けた記憶サブシステムに関する情報が格納される。図16において説明するように、I/O制限装置情報226に格納される情報は、情報収集プログラム215によって新たに登録され、又は、削除される。
I/O制限装置情報226は、CGID2001、正・副2002及びI/O制限装置2003からなる。これらのうち、CGID2001及び正・副2002は、個別キャッシュ使用量が所定の閾値を超えたCG602に関する情報であり、I/O制限装置2003は、そのCG602に入力されるデータ量を制限するためにI/O制限が実行される記憶サブシステムに関する情報である。
例えば、図1において、筐体1のキャッシュメモリ303の使用量が所定の閾値を超え、さらに、CG1の正側キャッシュの使用量が所定の閾値を超える場合であって、かつ、管理計算機140が筐体1にI/O制限命令を発行する場合、I/O制限装置情報226のCGID2001は「CG1」、正・副2002は「正」、I/O制限装置2003は「192.168.0.3」となる。
なお、I/O制限装置2003は、管理計算機140がI/O制限命令の発行対象の記憶サブシステムにアクセスするためのIPアドレス(図6(B)の監視対象IP921)である。I/O制限命令を受けた記憶サブシステムは、I/O制限を実行する。
また、図1において、筐体3のキャッシュメモリ303の使用量が所定の閾値を超え、さらに、CG3の正側キャッシュの使用量が所定の閾値を超える場合であって、かつ、管理計算機140が筐体1にI/O制限命令を発行する場合、I/O制限装置情報226のCGID2001は「CG3」、正・副2002は「正」、I/O制限装置2003は「192.168.0.3」となる。
管理計算機140がI/O制限命令を発行するか否かの判定、及び、管理計算機140がI/O制限命令を発行する対象の選択については、図16及び図17において詳細に説明する。
図16は、本発明の第1の実施の形態の管理計算機140の情報収集プログラム215のフローチャートである。
情報収集プログラム215は、図2に示すように、管理計算機140のメモリ204に格納され、CPU202によって実行される。情報収集プログラム215は、所定の間隔(監視インターバル)で、記憶サブシステムのキャッシュメモリ303の使用状況を監視し、キャッシュメモリ303の使用量が所定の閾値を超えている場合は、記憶サブシステムにI/O制限を命令する。このとき、情報収集プログラム215は、I/O制限を命令する対象の記憶サブシステムを選択する。
情報収集プログラム215は、実行が開始されると、監視インターバル910だけ待つ(2101)。例えば、監視インターバル910が3分(図6(B)参照)と設定されている場合、3分待つ。
次に、情報収集プログラム215は、監視設定情報221に監視対象として登録された記憶サブシステム(以下、登録監視対象サブシステムと記載する)から、情報を収集する(2102)。このとき、情報収集プログラム215は、情報を要求するコマンド(図示省略)を各登録監視対象サブシステムに発行する。ここで収集する情報は、具体的には、各登録監視対象サブシステムのキャッシュ管理テーブル323及びリンク稼動状況テーブル324の内容である。これらのテーブル及びこのコマンドを受信した記憶サブシステムの動作については、後で詳細に説明する(図22及び図23参照)。
次に、情報収集プログラム215は、最初の登録監視対象サブシステムを、検査対象とする(2103)。以下、検査対象とされた登録監視対象サブシステムを、検査対象サブシステムと記載する。例えば、監視設定情報221が図6(B)に示す通りである場合、筐体1が最初に検査対象サブシステムとなる。
次に、情報収集プログラム215は、全体キャッシュ使用量が全体キャッシュ使用量閾値を超えるか否かを判定する(2104)。全体キャッシュ使用量は、キャッシュ管理テーブル323の内容から算出される。算出方法は、後で説明する(図23参照)。全体キャッシュ使用量閾値は、全体キャッシュ使用量閾値情報223の閾値1402である。例えば、検査対象サブシステムが筐体1である場合、全体キャッシュ使用量閾値は40%となる。このため、全体キャッシュ使用量が40%を超える場合、全体キャッシュ使用量が全体キャッシュ使用量閾値を超えると判定される。
ステップ2104において、全体キャッシュ使用量が全体キャッシュ使用量閾値を超えないと判定された場合、当該検査対象サブシステムに関してはI/O制限をする必要がない。さらに、当該検査対象サブシステムのキャッシュメモリ303のデータ溢れを防止するためにいずれかの記憶サブシステムで既にI/O制限が実行されている場合、そのI/O制限を解除することができる。
このため、情報収集プログラム215は、I/O制限を実行している格納ペアボリュームがあるか否かを判定する(2105)。
ここで、ペアボリュームとは、CGID、ペアID及び正側か副側かによって識別されるLU331である。例えば、図1のLU11は、CG1のPair11の副側のペアボリュームに対応し、かつ、CG2のPair12の正側のペアボリュームに対応する。
格納ペアボリュームとは、検査対象サブシステムに格納されているペアボリュームである。
ステップ2105の判定は、I/O制限装置情報226を参照して行われる。例えば、I/O制限装置情報226が図15に示す通りであり、検査対象サブシステムが筐体3であるとする。この場合、I/O制限装置情報226を参照すると、CG3の正側のペアボリュームについて、I/O制限が実行されていると判定される。また、CG3の正側のペアボリュームは筐体3に格納されている。このため、ステップ2105において、I/O制限を実行している格納ペアボリュームがあると判定される。
ステップ2105において、I/O制限を実行している格納ペアボリュームがあると判定された場合、その格納ペアボリュームについては、I/O制限を解除することができる。このため、情報収集プログラム215は、I/O制限が実行されている格納ペアボリュームに対応するI/O制限装置2003に、I/O制御を解除するI/O制限命令を発行する(2106)。例えば、I/O制限が実行されている格納ペアボリュームがCG3の正側のペアボリュームである場合、IPアドレス「192.168.0.3」(図15のI/O制限装置2003参照)にI/O制御を解除するI/O制限命令が発行される。
次に、情報収集プログラム215は、ステップ2106においてI/O制限を解除された格納ペアボリュームを、I/O制限装置情報226から削除する(2107)。例えば、CG3の正側のペアボリューム及びそれに対応するIPアドレス「192.168.0.3」が削除される。
一方、ステップ2105において、I/O制限を実行している格納ペアボリュームがないと判定された場合、I/O制限を解除することができる格納ペアボリュームがない。このため、I/O制限を解除せずに、ステップ2108に進む。
次に、全ての登録監視対象サブシステムについて、検査が終了したか否かを判定する(2108)。ここで、検査とは、ステップ2104の処理である。
ステップ2108において、全ての登録監視対象サブシステムについて検査が終了していないと判定された場合、次の登録監視対象サブシステムを検査対象サブシステムとして(2109)、ステップ2104に戻る。
一方、ステップ2108において、全ての登録監視対象サブシステムについて検査が終了したと判定された場合、ステップ2101に戻る。
ステップ2104において、全体キャッシュ使用量が全体キャッシュ使用量閾値を超えると判定された場合、検査対象サブシステムのキャッシュメモリ303がデータ溢れを起こすおそれがある。しかし、I/O制限を実行することによって、データ溢れを防止できる場合がある。このため、情報収集プログラム215は、最初の格納ペアボリュームを、検査対象とする(2110)。以下、検査対象とされた格納ペアボリュームを、検査対象ペアボリュームと記載する。例えば、コピーペア管理情報222が図8に示す通りである場合、CG1のPair11の正側のLU331であるLU10が、最初に検査対象ペアボリュームとされる。
次に、情報収集プログラム215は、検査対象ペアボリュームについて、個別キャッシュ使用量が個別キャッシュ使用量閾値を超えるか否かを判定する(2111)。個別キャッシュ使用量は、キャッシュ管理テーブル323の内容から算出される。算出方法は、後で説明する(図23参照)。個別キャッシュ使用量閾値は、個別キャッシュ使用量閾値情報224の閾値1503である。例えば、検査対象ペアボリュームがCG1の正側である場合、個別キャッシュ使用量閾値は30%となる。このため、個別キャッシュ使用量が30%を超える場合、個別キャッシュ使用量が個別キャッシュ使用量閾値を超えると判定される。
ステップ2111において、個別キャッシュ使用量が個別キャッシュ使用量閾値を超えないと判定された場合、当該検査対象ペアボリュームについては、I/O制限を実行しない。このため、情報収集プログラム215は、全ての格納ペアボリュームについて検査が終了したか否かを判定する(2112)。ここで、検査とは、ステップ2111の処理である。
ステップ2112において、全ての格納ペアボリュームについて検査が終了したと判定された場合、当該検査対象ペアボリュームを格納する検査対象サブシステムについて、検査が終了した。このため、次の登録監視対象サブシステムについて検査するために、ステップ2108に進む。
一方、ステップ2112において、全ての格納ペアボリュームについて検査が終了していないと判定された場合、当該検査対象ペアボリュームを格納する検査対象サブシステムに、まだ検査されていない格納ペアボリュームがある。このため、次の格納ペアボリュームを検査対象ペアボリュームとして(2113)、ステップ2111に戻る。
ステップ2111において、個別キャッシュ使用量が個別キャッシュ使用量閾値を超えると判定された場合、当該検査対象ペアボリュームについてI/O制限を実行することによって、キャッシュメモリ303のデータ溢れを防止できる場合がある。
このため、次に、情報収集プログラム215は、I/O制限が有効であるか否かを判定する(2114)。具体的には、情報収集プログラム215は、I/O制限実行判定プログラム216を呼び出し、I/O制限が有効であるか否かを判定させる。
I/O制限実行判定プログラム216は、障害定義情報225を参照して、検査対象ペアボリュームに対応するルール1803を取得する。例えば、検査対象ペアボリュームがCG1の正側である場合、ルール1803は、rule1である。そこで、I/O制限実行判定プログラム216は、rule1(図14参照)に従って、I/O制限が有効であるか否かを判定する。
ステップ2114において、I/O制限が有効でないと判定された場合、当該検査対象ペアボリュームについてI/O制限を実行しても、キャッシュメモリ303のデータ溢れを防止することができない。このため、次の格納ペアボリュームについて検査するために、ステップ2112に進む。
一方、ステップ2114において、I/O制限が有効であると判定された場合、当該検査対象ペアボリュームについてI/O制限を実行することによって、キャッシュメモリ303のデータ溢れを防止することができる。このため、情報収集プログラム215は、次に、I/O制限装置選択処理を実行する(2115)。I/O制限装置選択処理は、I/O制限を実行する記憶サブシステムを選択する処理である。この処理については、図17で詳細に説明する。
次に、情報収集プログラム215は、ステップ2115で選択された記憶サブシステム(以下、I/O制限装置と記載する)に、I/O制限を実行するI/O制限命令を発行する(2116)。I/O制限装置のI/O制限命令受付プログラム311がこの命令を受け付け、I/O制限処理プログラム312がI/O制限を実行する。これらのプログラムの処理については、図19及び21において詳細に説明する。また、ステップ2116で発行されるI/O制限命令の形式については、図18において詳細に説明する。
次に、情報収集プログラム215は、I/O制限装置をI/O制限装置情報226に登録する(2117)。具体的には、情報収集プログラム215は、検査対象ペアボリュームを識別するCGID、ペアID及び正側か副側かを示す情報と、I/O制限装置のIPアドレス(当該記憶サブシステムの監視対象IP921)とを、I/O制限装置情報226に登録する。そして、情報収集プログラム215は、次の格納ペアボリュームについて検査するために、ステップ2112に進む。
図17は、本発明の第1の実施の形態の管理計算機140の情報収集プログラム215が実行するI/O制限装置選択処理のフローチャートである。
I/O制限装置選択処理は、図16のステップ2115において、情報収集プログラム215によって実行される。
I/O制限装置選択処理が開始されると、情報収集プログラム215は、最初に、超過個別キャッシュを保持する記憶サブシステムを「I/O制限装置候補」と定義する(2201)。
ここで、超過個別キャッシュとは、図16のステップ2111において個別キャッシュ使用量が個別キャッシュ使用量閾値を超えていると判定された検査対象CGのキャッシュである。例えば、図1に示すCG3の正側について個別キャッシュ使用量が個別キャッシュ使用量閾値を超えていると判定された場合、CG3の正側キャッシュが超過個別キャッシュである。この場合、CG3の正側の筐体3がI/O制限装置候補である。
次に、情報収集プログラム215は、超過個別キャッシュが正側キャッシュであるか否かを判定する(2202)。
ステップ2202において、超過個別キャッシュが正側キャッシュであると判定された場合、情報収集プログラム215は、その超過個別キャッシュに対応するCG602の一段上位のCG602をI/O制限対象CGとする(2203)。例えば、超過個別キャッシュがCG3の正側キャッシュである場合、CG2がI/O制限対象CGとなる。
一方、ステップ2202において、超過個別キャッシュが正側キャッシュでないと判定された場合、超過個別キャッシュは副側キャッシュである。この場合、情報収集プログラム215は、その超過個別キャッシュに対応するCG602をI/O制限対象CGとする(2204)。ここで、I/O制限対象CGとは、I/O(データ転送)の制限の対象となるCG602である。
ステップ2203又は2204が終了すると、次に、情報収集プログラム215は、I/O制限装置候補をI/O制限装置リスト(図示省略)に追加する(2205)。I/O制限装置リストとは、I/O制限装置選択処理によって選択される記憶サブシステム(すなわち、I/O制限を実行する記憶サブシステム)の一覧を示す情報である。I/O制限装置リストは、例えば、管理計算機140のメモリ204に格納される。
次に、情報収集プログラム215は、I/O制限対象CGが複数の記憶サブシステムに跨っているか否かを判定する(2206)。ここで、CG602が複数の記憶サブシステムに跨る状態とは、一つのCG602に複数のコピーペア601が属し、これらのコピーペア601の系列のうち、少なくとも二つが、異なる記憶サブシステムに属している状態である。具体的には、I/O制限対象CGに含まれるペアの正側又は副側の少なくとも一方のLU331が複数の記憶サブシステムに格納されている場合、I/O制限対象CGが複数の記憶サブシステムに跨っていると判定される。
例えば、図1においてCG2がI/O制限対象CGである場合、CG2を構成するPair12の正側のLU11及びPair22の正側のLU21は、同じ筐体2に格納されている。さらに、Pair12の副側のLU12及びPair22の副側のLU22も、同じ筐体3に格納されている。このため、CG2は、複数の記憶サブシステムに跨っていないと判定される。
図1に示す構成では、各CG602に二つのコピーペア601の系列が属するが、これらの二つのコピーペア601の系列が異なる記憶サブシステムに属する場合がない。例えば、CG1にはPair11及びPair21の二つのコピーペア601が属するが、これらは、いずれも、筐体1を正側、筐体2を副側としている。このため、I/O制限対象CGが複数の記憶サブシステムに跨っていると判定される場合はない。I/O制限対象CGが複数の記憶サブシステムに跨る構成の例については、後で詳細に説明する(図26参照)。
ステップ2206において、I/O制限対象CGが複数の記憶サブシステムに跨っていると判定された場合、情報収集プログラム215は、I/O制限装置候補の上位にI/O制限を実行できない記憶サブシステム(すなわち、I/O制限処理プログラム312を保持しないリモート記憶サブシステム120)が存在するか否かを判定する(2212)。
ステップ2212において、I/O制限装置候補の上位にI/O制限を実行できない記憶サブシステムが存在しないと判定された場合、I/O制限を実行することができる。このため、情報収集プログラム215は、I/O制限装置候補より上位の全ての記憶サブシステムをI/O制限装置リストに追加して(2214)、処理を終了する。
一方、ステップ2212において、I/O制限装置候補の上位にI/O制限を実行できない記憶サブシステムが存在すると判定された場合、I/O制限を実行することができない。このため、情報収集プログラム215は、I/O制限装置リストをクリアして(すなわち、I/O制限装置リストに登録された全ての内容を削除して)(2213)、処理を終了する。
ステップ2206において、I/O制限対象CGが複数の記憶サブシステムに跨っていないと判定された場合、情報収集プログラム215は、I/O制限装置候補がI/O制限可能か否かを判定する(2207)。具体的には、I/O制限装置候補がI/O制限処理プログラム312を含むリモート記憶サブシステム110である場合、I/O制限可能であると判定される。一方、I/O制限装置候補がI/O制限処理プログラム312を含まないリモート記憶サブシステム120である場合、I/O制限可能でないと判定される。
ステップ2207において、I/O制限装置候補がI/O制限可能でないと判定された場合、I/O制限を実行することができない。このため、処理はステップ2213に進む。
一方、ステップ2207において、I/O制限装置候補がI/O制限可能でないと判定された場合、情報収集プログラム215は、そのI/O制限装置候補の上位に記憶サブシステムが存在するか否かを判定する(2208)。
ステップ2208において、I/O制限装置候補の上位に記憶サブシステムが存在しないと判定された場合、I/O制限装置候補が直結記憶サブシステム100であり、その上位に記憶サブシステムが存在しない。この場合、I/O制限を実行する全ての記憶サブシステムの選択が終了したため、I/O制限装置選択処理を終了する。
一方、ステップ2208において、I/O制限装置候補の上位に記憶サブシステムが存在すると判定された場合、情報収集プログラム215は、I/O制限装置候補の一段上位の記憶サブシステムの全体キャッシュ使用量が全体キャッシュ使用量閾値を超えるか否かを判定する(2209)。
当該一段上位の記憶サブシステムのキャッシュメモリ303の空き容量に余裕がない場合、さらに上位の記憶サブシステム(又はホスト計算機)から転送されるデータの量を制限しない限り、当該一段上位の記憶サブシステムにおいてデータ溢れが発生しやすくなる。このため、ステップ2209において、キャッシュメモリ303に十分な空き容量があるか否かが判定される。
ステップ2209において、I/O制限装置候補の一段上位の記憶サブシステムの全体キャッシュ使用量が全体キャッシュ使用量閾値を超えると判定された場合、当該一段上位の記憶サブシステムのキャッシュメモリ303に十分な空き容量がない。この場合、データ溢れを防ぐために、当該一段上位の記憶サブシステムのさらに上位の記憶サブシステムにおいてもI/O制限を実行する必要がある。このため、情報収集プログラム215は、さらに上位の記憶サブシステムについて、上記ステップ2205以降の処理を行う。具体的には、情報収集プログラム215は、ステップ2209の時点のI/O制限装置候補の一段上位の記憶サブシステムを新たにI/O制限装置候補とし、ステップ2209の時点のI/O制限対象CGの一段上位のCG602を新たにI/O制限対象CGとする(2211)。そして、ステップ2205に戻る。
一方、ステップ2209において、I/O制限装置候補の一段上位の記憶サブシステムの全体キャッシュ使用量が全体キャッシュ使用量閾値を超えないと判定された場合、当該一段上位の記憶サブシステムのキャッシュメモリ303に十分な空き容量がある。この場合、情報収集プログラム215は、I/O制限対象CGの正側キャッシュの個別キャッシュ使用量が個別キャッシュ使用量閾値を超えるか否かを判定する(2210)。
ステップ2209において、キャッシュメモリ303に十分な空き容量があると判定された場合でも、I/O制限対象CGの正側キャッシュの個別キャッシュ使用量が個別キャッシュ使用量閾値を超える場合は、I/O制限対象CG以外のCG602に対してキャッシュメモリ303の容量を十分に確保することができないことがある。このため、ステップ2210において、I/O制限対象CGの正側キャッシュの個別キャッシュ使用量が個別キャッシュ使用量閾値を超えると判定された場合、情報収集プログラム215は、ステップ2211に進む。
一方、ステップ2210において、I/O制限対象CGの正側キャッシュの個別キャッシュ使用量が個別キャッシュ使用量閾値を超えないと判定された場合、情報収集プログラム215は、I/O制限装置選択処理を終了する。
図18は、本発明の第1の実施の形態の管理計算機140が記憶サブシステムに発行するI/O制限命令の説明図である。
管理計算機140が図16のステップ2116又は2106においてI/O制限命令を発行するとき、図18に示すI/O制限命令データ2300が管理計算機140から当該命令の発行先の記憶サブシステムに、管理ネットワーク170を経由して転送される。なお、図18(A)は、I/O制限命令データ2300の形式を示す図であり、図18(B)は、I/O制限命令データ2300の一例を示す図である。
I/O制限命令データ2300は、少なくとも、LUID2301、コマンド種別2302及び制御内容2303を含む(図18(A))。
LUID2301は、I/O制限命令の対象のLU331の識別子である。例えば、I/O制限装置選択処理(図17)において、図1のPair12がI/O制限対象ペア、筐体2がI/O制限装置として選択された場合、筐体2においてPair12に属するLU11がI/O制限命令の対象となる。この場合、LUID2301は「LU11」となる(図18(B))。
コマンド種別2302は、管理計算機140から発行される命令の種類を示す情報である。図18の場合、命令はI/O制限命令であるため、コマンド種別2302は「I/O制限」となる(図18(B))。
制御内容2303は、管理計算機140から命令される制御の内容を示す情報である。図18の場合、命令の内容がI/O制限の実行である場合(図16のステップ2116参照)、制御内容2303は「ON」となる。一方、命令の内容がI/O制限の解除である場合(図16のステップ2106参照)、制御内容2303は「OFF」となる(図18(B))。
図19は、本発明の第1の実施の形態の記憶サブシステムのI/O制限命令受付プログラム311のフローチャートである。
I/O制限命令受付プログラム311は、図3及び図4に示すように、直結記憶サブシステム100及びリモート記憶サブシステム110のメモリ306に格納され、プロセッサ304によって実行される。I/O制限命令受付プログラム311は、管理計算機140から発行されたI/O制限命令(図16のステップ2116又は2106参照)を受けて、I/O制限の実行又は解除を設定する。
I/O制限命令受付プログラム311は、I/O制限命令を受け付けることによって実行が開始されると、受け付けたI/O制限命令が「ON」(すなわち、I/O制限を実行する命令)であるか否かを判定する(2401)。具体的には、I/O制限命令データ2300のコマンド種別2302が「I/O制限」、制御内容2303が「ON」であるか否かを判定する。
ステップ2401において、受け付けたI/O制限命令が「ON」であると判定された場合、I/O制限の実行が命令されている。このため、I/O制限命令受付プログラム311は、当該I/O制限命令によって指定されたLUID2301について、I/O制限の実行をI/O制限情報321に登録する(2402)。I/O制限情報321については、後で詳細に説明する(図20参照)。
一方、ステップ2401において、受け付けたI/O制限命令が「OFF」であると判定された場合、I/O制限の解除が命令されている。このため、I/O制限命令受付プログラム311は、当該I/O制限命令によって指定されたLUID2301について、I/O制限の実行をI/O制限情報321に登録する(2403)。
以上で、処理を終了する。
図20は、本発明の第1の実施の形態の記憶サブシステムに格納されるI/O制限情報321の説明図である。
I/O制限情報321は、図3及び図4に示すように、直結記憶サブシステム100及びリモート記憶サブシステム110のメモリ306に格納される。図20は、例として、リモート記憶サブシステム110(筐体2)に格納されるI/O制限情報321を示す。
I/O制限情報321は、LUID2501及び制限2502を含む。
LUID2501は、当該I/O制限情報321を格納する記憶サブシステムに格納されるLU331の識別子である。図20は、筐体2のI/O制限情報321であるため、筐体2に格納されるLU11及びLU21がLUID2501として登録される。
制限2502は、各LU331について、I/O制限が実行されているか否かを示す。制限2502が「ON」のとき、I/O制限が実行されており、「OFF」のとき、I/O制限が実行されていない。
各LUID2501に対応する制限2502は、管理計算機140からのI/O制限命令によって設定される。例えば、図18(B)のように、LU11についてI/O制限を実行する命令が発行されると、I/O制限情報321において、LU11に対応する制限2502が「ON」となる。図20は、LU11が「ON」、LU21が「OFF」となっている状態を示す。
図21は、本発明の第1の実施の形態の記憶サブシステムのI/O制限処理プログラム312のフローチャートである。
I/O制限処理プログラム312は、図3及び図4に示すように、直結記憶サブシステム100及びリモート記憶サブシステム110のメモリ306に格納され、プロセッサ304によって実行される。I/O制限処理プログラム312は、ホスト計算機130からデータを書き込むI/O要求を受けたとき、又は、上位の記憶サブシステムからデータを書き込むリモートI/O要求を受けたときに、I/O制限を実行する。
I/O制限処理プログラム312は、書き込みデータを受け付けることによって実行が開始されると、当該データの書き込み対象のLU331について、I/O制限情報321を参照して、書き込み対象のLUID2501に対応する制限2502が「ON」であるか否かを判定する(2601)。
例えば、I/O制限情報321が図20に示す通りである場合、データの書き込み対象がLU11であれば、対応する制限2502は「ON」である。すなわち、LU11へのデータの書き込みについては、I/O制限が実行される。一方、データの書き込み対象がLU21であれば、対応する制限2502は「OFF」である。すなわち、LU21へのデータの書き込みについては、I/O制限が実行されない。
ステップ2601において、書き込み対象のLUID2501に対応する制限2502が「ON」であると判定された場合、I/O制限処理プログラム312は、I/O制限を実行するため、所定の時間スリープする(2602)。すなわち、I/O制限処理プログラム312は、所定の時間、書き込みを実行せずに待つ。その後、I/O制限処理プログラム312は、書き込み処理を実行する(2603)。
一方、ステップ2601において、書き込み対象のLUID2501に対応する制限2502が「ON」でないと判定された場合、I/O制限処理プログラム312は、I/O制限を実行しないため、スリープせずに、書き込み処理を実行する(2603)。
このように、I/O制限が実行されるLU331への書き込みは、スリープ処理(2602)の時間だけ遅れる。書き込み処理(2603)の結果、キャッシュメモリ303にもデータが書き込まれるため、スリープ処理によって書き込みを遅らせることによって、キャッシュメモリ303のデータ溢れを防ぐことができる。
図22は、本発明の第1の実施の形態の記憶サブシステムに格納される各種の情報の説明図である。
図22(A)は、コピーペア構成情報322の説明図である。
コピーペア構成情報322は、図3から図5に示すように、直結記憶サブシステム100、リモート記憶サブシステム110及びリモート記憶サブシステム120のメモリ306に格納される。図22(A)は、例として、リモート記憶サブシステム110(筐体2)に格納されるコピーペア構成情報322を示す。
コピーペア構成情報322は、各記憶サブシステムに構成されるコピーペア601に関する情報である。図22(A)は、筐体2のコピーペア構成情報322であるため、筐体2に含まれるLU11及びLU21が属するPair11、Pair21、Pair12及びPair22に関する情報を含む(図1参照)。
管理計算機140に格納されるコピーペア管理情報222は、管理計算機140の構成情報収集プログラム212が各記憶サブシステムのコピーペア構成情報322の内容を取得して作成したものである。コピーペア構成情報322のCGID2701、ペアID2702、正LUID2703、正記憶サブシステムID2704、副LUID2705及び副記憶サブシステムID2706は、それぞれ、コピーペア管理情報222のCGID1101、ペアID1102、正LUID1103、正記憶サブシステムID1104、副LUID1105及び副記憶サブシステムID1106に対応する。以下において、コピーペア管理情報222と同様の説明は省略する。
コピーペア構成情報322において、CGID2701は、各コピーペア601が属するCG602の識別子である。図22(A)は、筐体2のコピーペア構成情報322であるため、CGID2701は、「CG1」及び「CG2」となる。
ペアID2702は、各コピーペア601の識別子である。CG1に属する二つのコピーペア601のペアID2702は、「Pair11」及び「Pair21」である。また、CG2に属する二つのコピーペア601のペアID2702は、「Pair12」及び「Pair22」である。
正LUID2703は、各コピーペア601の正側のLU331の識別子である。Pair11、Pair21、Pair12及びPair22に対応する正LUID2703は、それぞれ、「LU10」、「LU20」、「LU11」及び「LU21」である。
正記憶サブシステムID2704は、各コピーペア601の正側のLU331を格納する記憶サブシステムの識別子である。LU10及びLU20を格納する記憶サブシステムの正記憶サブシステムID2704は、「筐体1」である。LU11及びLU21を格納する記憶サブシステムの正記憶サブシステムID2704は、「筐体2」である。
副LUID2705は、各コピーペア601の副側のLU331の識別子である。Pair11、Pair21、Pair12及びPair22に対応する副LUID2705は、それぞれ、「LU11」、「LU21」、「LU12」及び「LU22」である。
副記憶サブシステムID2706は、各コピーペア601の副側のLU331を格納する記憶サブシステムの識別子である。LU11及びLU21を格納する記憶サブシステムの副記憶サブシステムID2706は、「筐体2」である。LU12及びLU22を格納する記憶サブシステムの副記憶サブシステムID2706は、「筐体3」である。
図22(B)は、キャッシュ管理テーブル323の説明図である。
キャッシュ管理テーブル323は、図3から図5に示すように、直結記憶サブシステム100、リモート記憶サブシステム110及びリモート記憶サブシステム120のメモリ306に格納される。図22(B)は、例として、リモート記憶サブシステム110(筐体2)に格納されるキャッシュ管理テーブル323を示す。
キャッシュ管理テーブル323は、記憶サブシステムのキャッシュメモリ303の使用状況を示すテーブルである。具体的には、キャッシュ管理テーブル323は、キャッシュメモリ303の全アドレスについて、そのアドレスに対応する領域が使用されている(すなわち、その領域にデータが格納されている)か否か、また、使用されている場合、どのCG602のどのコピーペア601のキャッシュとして使用されているか、さらに、正側キャッシュ又は副側キャッシュのいずれであるかを示す情報を含む。
キャッシュ管理テーブル323は、アドレス2801、利用CGID2802、利用ペアID2803及び正・副2804からなる。
アドレス2801は、キャッシュメモリ303上のデータが格納されている領域のアドレスである。本実施の形態では、キャッシュメモリ303には、データが論理ブロック単位で格納されるため、アドレス2801は、論理ブロックアドレス(LBA)に相当する。図22(B)の例では、「1」から「5」までのアドレス2801を示し、他は省略するが、アドレス2801には、キャッシュメモリ303上の全てのLBAが登録される。
利用CGID2802、利用ペアID2803及び正・副2804は、アドレス2801が示す領域が、どのように使用されているかを示す。例えば、図22(B)において、アドレス2801が「1」である場合、対応する利用CGID2802、利用ペアID2803及び正・副2804は、それぞれ、「CG1」、「Pair11」及び「副」である。これは、キャッシュメモリ303のLBAが「1」の論理ブロックが、CG1に属するPair11の副側キャッシュとして使用されていることを示す。同様にして、図22(B)の例では、LBAが「2」、「3」及び「5」の論理ブロックが、CG2に属するPair12の正側キャッシュとして使用されている。一方、図22(B)の例では、LBAが「2」の領域が使用されていない。このため、アドレス2801が「4」である利用CGID2802、利用ペアID2803及び正・副2804は、「−」となる。
図22(C)は、リンク稼動状況テーブル324の説明図である。
リンク稼動状況テーブル324は、図3から図5に示すように、直結記憶サブシステム100、リモート記憶サブシステム110及びリモート記憶サブシステム120のメモリ306に格納される。図22(C)は、例として、リモート記憶サブシステム110(筐体2)に格納されるリンク稼動状況テーブル324を示す。
リンク稼動状況テーブル324は、記憶サブシステム間を結合するリンク160の稼動状況を示すテーブルである。具体的には、リンク稼動状況テーブル324は、記憶サブシステムに接続されるリンク160ごとに、そのリンク160が稼動しているか否かを示す情報を含む。ここで、リンク160が稼動しているとは、正常にデータ転送をすることができることを意味する。また、リンク160が稼動していないとは、障害等によってデータ転送をすることができないことを意味する。
リンク稼動状況テーブル324は、リンクID2901、正記憶サブシステムID2902、副記憶サブシステムID2903及び稼動状況情報2904からなる。
リンクID2901は、各リンク160の識別子である。
正記憶サブシステムID2902は、各リンク160の正側(すなわち、ホスト計算機に近い側)に接続された記憶サブシステムの識別子である。
副記憶サブシステムID2903は、各リンク160の副側(すなわち、ホスト計算機から遠い側)に接続された記憶サブシステムの識別子である。
稼動状況情報2904は、各リンク160が稼動しているか否かを示す。「OK」は、リンク160が稼動していることを、「NG」は、リンク160が稼動していないことを示す。
図22(C)の例では、筐体1と筐体2との間に二つのリンク160があり、それぞれのリンクID2901は「Link1」及び「Link2」である。これらの二つのリンクは、稼動している。一方、筐体2と筐体3との間にも二つのリンク160がある。それぞれのリンクID2901は「Link3」及び「Link4」である。「Link3」は稼動しているが、「Link4」は稼動していない。
例えば、図16のステップ2114において使用されるルール(図14参照)が、記憶サブシステム間のリンク数に基づいている場合、このステップ2114において、リンク稼動状況テーブル324の稼動状況情報2904が参照されてもよい。
図23は、本発明の第1の実施の形態の記憶サブシステムの筐体情報管理プログラム313が実行する筐体情報提供処理のフローチャートである。
筐体情報管理プログラム313は、図3から図5に示すように、直結記憶サブシステム100、リモート記憶サブシステム110及びリモート記憶サブシステム120のメモリ306に格納され、プロセッサ304によって実行される。筐体情報提供処理は、筐体情報管理プログラム313によって実行される処理の一つである。筐体情報提供処理は、管理計算機140からの要求を受けて、記憶サブシステムに関する情報を管理計算機に応答する処理である。
管理計算機140の情報収集プログラム215は、各登録監視対象サブシステムに対して、その記憶サブシステムの情報を要求するコマンドを発行する(図16のステップ2102参照)。
このコマンドを受けた筐体情報管理プログラム313は、筐体情報提供処理を開始する。最初に、筐体情報管理プログラム313は、記憶サブシステムのキャッシュメモリ303の使用量(すなわち、全体キャッシュ使用量)を算出して取得する(3001)。具体的には、筐体情報管理プログラム313は、キャッシュ管理テーブル323を参照して、使用されているアドレス2801の数と論理ブロックサイズとの積を算出し、その積をキャッシュメモリ303の全体の容量で除算した値を、全体キャッシュ使用量とする。
次に、筐体情報管理プログラム313は、各CG602ごとのキャッシュメモリ303の使用量(すなわち、個別キャッシュ使用量)を算出して取得する(3002)。具体的には、筐体情報管理プログラム313は、キャッシュ管理テーブル323を参照して、利用CGID2802及び正・副2804ごとに、使用されているアドレス2801の数と論理ブロックサイズとの積を算出する。そして、その積をキャッシュメモリ303の全体の容量で除算した値を、個別キャッシュ使用量とする。
例えば、図22(B)に示すキャッシュ管理テーブル323の場合、CG1の副側キャッシュとして一つのアドレス2801(アドレス「1」)が使用されている。このため、CG1の副側キャッシュの個別キャッシュ使用量は、「1」と論理ブロックサイズとの積をキャッシュメモリ303の全体の容量で除算した値となる。また、CG2の正側キャッシュとして三つのアドレス2801(アドレス「2」、「3」及び「5」)が使用されている。このため、CG2の正側キャッシュの個別キャッシュ使用量は、「3」と論理ブロックサイズとの積をキャッシュメモリ303の全体の容量で除算した値となる。
次に、筐体情報管理プログラム313は、リンク160の稼動状況に関する情報を取得する(3003)。具体的には、筐体情報管理プログラム313は、リンク稼動状況テーブル324を参照して、使用可能なリンク160の数を取得する。
次に、筐体情報管理プログラム313は、ステップ3001、3002及び3003で取得した情報を、管理計算機140に応答する(3004)。
以上の本発明の第1の実施の形態において実行されるI/O制限について、図1を参照して説明する。
例えば、筐体3のキャッシュメモリ303の全体キャッシュ使用量が閾値を超え、さらに、CG2の副側キャッシュの個別キャッシュ使用量が閾値を超えた場合について説明する。
この場合、筐体3のLU12への書き込みを制限するI/O制限を実行することによって、筐体3のキャッシュメモリ303のデータ溢れを防ぐことができる。
しかし、筐体3がI/O制限を実行することができない場合がある。また、筐体3がI/O制限処理プログラム312を備えたとしても、筐体2のキャッシュメモリ303の容量に余裕がない場合、筐体3においてI/O制限を実行することができない。筐体2のキャッシュメモリ303のデータは、筐体3への転送が終了しなければ削除することができないが、I/O制限が実行されると、筐体2から筐体3への転送速度が低下する。その結果、筐体2のキャッシュメモリ303からデータが削除される速さも低下し、筐体2のキャッシュメモリ303においてデータ溢れが発生しやすくなるためである。
筐体3がI/O制限処理プログラム312を備え、かつ、筐体2のキャッシュメモリ303の容量に余裕があったとしても、I/O制限を実行することによってキャッシュメモリ303のデータ溢れを防ぐことができない場合がある。例えば、筐体3と筐体4の間のリンク160が全て使用できない状態である場合、I/O制限によってデータ転送速度を低下させても、いずれキャッシュメモリ303にデータ溢れが発生する。
さらに、図1には示さないが、筐体2にCG1及びCG2とは異なる系統のCG602が存在する場合、筐体2のキャッシュメモリ303においてデータ溢れが発生すると、そのCG602においてコピーペア601が停止する。このように、一つのCG602において発生したデータ溢れの影響が、別の系統のCG602に波及する場合がある。
管理計算機140は、図16及び図17に示すように、筐体2のキャッシュメモリ303の使用量が閾値を超えるか否かを判定する。そして、使用量が閾値を超えない場合には、キャッシュメモリ303の容量に余裕があるため、筐体2に対して、LU11への書き込みを制限するI/O制御命令を発行する。一方、使用量が閾値を超える場合には、キャッシュメモリ303の容量に余裕がないため、筐体1のキャッシュメモリ303の使用量が閾値を超えるか否かを判定する。筐体1のキャッシュメモリ303の使用量が閾値を超えない場合、管理計算機140は、筐体1に対して、LU10への書き込みを制限するI/O制御命令を発行する。さらに、管理計算機140は、I/O制限をすることによってキャッシュメモリ303のデータ溢れを防ぐことができない場合、I/O制限命令を発行しない。
以上のように、本実施の形態の管理計算機140は、各記憶サブシステムがI/O制限処理プログラム312を備え、I/O制限を実行することができるか否かを示す情報を保持する(図2及び図6(B)参照)。さらに、管理計算機140は、いずれかのキャッシュメモリ303の使用量が閾値を超えたとき、各記憶サブシステムのキャッシュメモリ303の使用状況を取得する。そして、管理計算機140は、I/O制限を実行することができ、かつ、キャッシュメモリ303の容量に余裕がある記憶サブシステムに、I/O制限の実行を命令する。
以上の本実施の形態では、記憶サブシステムがI/O制限を実行するが、ホスト計算機がI/O制限を実行してもよい。
図24は、本発明の第1の実施の形態のI/O制限を実行するホスト計算機3100の構成を示すブロック図である。
ホスト計算機3100は、図1においてホスト計算機130と置き換えられる。ただし、ホスト計算機3100は、ストレージネットワーク150だけでなく、管理ネットワーク170にも接続される。
ホスト計算機3100は、入力装置3110、CPU3120、表示装置3130、メモリ3140、ストレージI/F3150及び管理用I/F3160を備える。
入力装置3110は、ユーザがホスト計算機3110を制御するために使用する装置であり、例えば、キーボード及びポインティングデバイス等である。
CPU3120は、メモリ3140に格納された各種プログラムを実行するプロセッサである。
表示装置3130は、ユーザに提供する情報を表示する装置であり、例えば、CRT等の画像表示装置である。
メモリ3140は、例えば、半導体メモリである。メモリ3140には、CPU3120によって実行される各種プログラム及びそれらのプログラムの実行の際に参照される各種の情報が格納される。本実施の形態のメモリ3140には、少なくとも、I/O制限命令受付プログラム3141、I/O制限処理プログラム3142及びI/O制限情報3143が格納される。さらに、メモリ3140には、CPU3120によって実行されてユーザに提供される各種のアプリケーションプログラム(図示省略)を含む。
ストレージI/F3150は、ストレージネットワーク150を介して直結記憶サブシステム100と接続され、通信をするインターフェースである。
管理用I/F3160は、管理ネットワーク170を介して管理計算機140と接続され、通信をするインターフェースである。管理用I/F3160は、記憶サブシステムの管理用I/F302と同等のものである。
I/O制限命令受付プログラム3141は、記憶サブシステムのI/O制限命令受付プログラム311と同等である(図19参照)。また、I/O制限情報3143には、記憶サブシステムのI/O制限情報321と同様の情報が格納される(図20参照)。このため、これらについては説明を省略する。I/O制限処理プログラム3142については、後で詳細に説明する(図25参照)。
図25は、本発明の第1の実施の形態のホスト計算機3100のI/O制限処理プログラム3142のフローチャートである。
図25において、図21と同様の部分については、詳細な説明を省略する。
I/O制限処理プログラム3142は、図24に示すように、ホスト計算機3100のメモリ3140に格納され、プロセッサ3120によって実行される。I/O制限処理プログラム3142は、ホスト計算機3100のアプリケーションプログラムからデータを書き込むI/O要求を受けたとき、I/O制限を実行する。
I/O制限処理プログラム3142は、書き込みデータをアプリケーションプログラムから受け付けることによって実行が開始されると、当該データの書き込み対象のLU331について、I/O制限情報3143を参照して、書き込み対象のLUID2501に対応する制限2502が「ON」であるか否かを判定する(3201)。
ステップ3201において、書き込み対象のLUID2501に対応する制限2502が「ON」であると判定された場合、I/O制限処理プログラム3142は、I/O制限を実行するため、所定の時間スリープする(3202)。その後、I/O制限処理プログラム3142は、書き込み処理を実行する(3203)。
一方、ステップ3201において、書き込み対象のLUID2501に対応する制限2502が「ON」でないと判定された場合、I/O制限処理プログラム3142は、I/O制限を実行しないため、スリープせずに、書き込み処理を実行する(3203)。
このように、ホスト計算機3100側でI/O制限を実行しても、記憶サブシステムへのデータ転送速度が低下するため、キャッシュメモリ303のデータ溢れを防ぐことができる。
上記の本実施の形態は、一つのCG602が複数の記憶サブシステムに跨る場合にも適用することができる。
図26は、本発明の第1の実施の形態の計算機システムに形成される複数の記憶サブシステムの系列に跨るコンシステンシグループ及びコピーペアの説明図である。
図17においても説明した通り、一つのCG602が複数の記憶サブシステムに跨る場合とは、一つのCG602が複数のコピーペア601によって構成され、それらのコピーペアがそれぞれ異なる記憶サブシステムの系列に属する場合である。具体的には、図26のCG1、CG2及びCG3が、複数の記憶サブシステムに跨るCG602である。
図26において、図1と同様の部分については、詳細な説明を省略する。
図26において、筐体1、筐体2、筐体3及び筐体4は、図1の筐体1、筐体2、筐体3及び筐体4と同様の記憶サブシステムである。ただし、図26の筐体1、筐体2、筐体3及び筐体4は、それぞれ、LU10、LU11、LU12及びLU13を格納する。
筐体5、筐体6、筐体7及び筐体8は、筐体1、筐体2、筐体3及び筐体4と同様の記憶サブシステムである。筐体5は、LU20及びLU30を格納する。筐体6は、LU21及びLU31を格納する。筐体7は、LU22及びLU32を格納する。筐体8は、LU22及びLU32を格納する。
LU10及びLU11は、Pair11を形成する。LU11及びLU12は、Pair12を形成する。LU12及びLU13は、Pair13を形成する。
LU20及びLU21は、Pair21を形成する。LU21及びLU22は、Pair22を形成する。LU22及びLU23は、Pair23を形成する。
LU30及びLU31は、Pair31を形成する。LU31及びLU32は、Pair32を形成する。LU32及びLU33は、Pair33を形成する。
Pair11及びPair21は、CG1を形成する。Pair12及びPair22は、CG2を形成する。Pair13及びPair23は、CG3を形成する。
筐体1のLU10及び筐体5のLU20は、ホスト計算機A130によって使用される。すなわち、これらのLU10及びLU20には、ホスト計算機A130からデータを書き込まれる。
筐体5のLU30は、ホスト計算機B130によって使用される。すなわち、LU30には、ホスト計算機B130からデータを書き込まれる。
図26の構成の計算機システムにも、上記の本実施の形態を適用することができる。
図26の例では、筐体3に書き込まれるデータは、ホスト計算機A130から筐体1に書き込まれたデータのコピーである。筐体3のキャッシュメモリ303の使用量が閾値を超え、筐体2においてI/O制限が実行されると、Pair11におけるデータ転送速度が低下する。このとき、Pair11とPair21は、同一のCG1に属するため、コンシステンシを維持するために、Pair21におけるデータ転送速度も低下する。その結果、筐体1のキャッシュメモリ303だけでなく、筐体5のキャッシュメモリ303においても、データ溢れが発生しやすくなる。特に、筐体2においてI/O制限が実行される前から筐体6においてI/O制限が実行されていた場合、筐体5のキャッシュメモリ303においてデータ溢れが発生しやすい。
筐体5のキャッシュメモリ303においてデータ溢れが発生すると、Pair21だけでなく、Pair31においてもリモートコピーが停止する。すなわち、筐体3のキャッシュメモリ303の使用量が閾値を超えたことが原因で、筐体3とは本来無関係のPair31のリモートコピーが停止する。
このようなリモートコピーの停止を防ぐため、本実施の形態では、図26のように一つのCG602が複数の記憶サブシステムの系列に跨る場合、どのキャッシュメモリ303において使用量が閾値を超えたかに関らず、使用量が閾値を超えたキャッシュメモリ303を備える記憶サブシステム110等より上位の全ての記憶サブシステムにおいてI/O制限を実行してもよい(図17のステップ2206及びステップ2214参照)。
あるいは、図26のように上位の記憶サブシステムが複数のCG602を含み、少なくとも一つのCG602が複数の記憶サブシステムに跨る場合、それらの複数の記憶サブシステムのキャッシュメモリ303の使用量を参照し、その容量に余裕がある場合にI/O制限を実行してもよい。さらに、その判断をルール(図12から図14参照)として定義してもよい。
図27は、本発明の第1の実施の形態において、コンシステンシグループ602が複数の記憶サブシステムの系列に跨る場合に、管理計算機140に格納されるコピーペア管理情報222の説明図である。
図27において、Pair31、Pair32及びPair33については、図示を省略する。
ここでは、図8との相違点のみについて説明する。
Pair21については、正記憶サブシステムID1104が「筐体5」、副記憶サブシステムID1106が「筐体6」である。Pair22については、正記憶サブシステムID1104が「筐体6」、副記憶サブシステムID1106が「筐体7」である。Pair23については、正記憶サブシステムID1104が「筐体7」、副記憶サブシステムID1106が「筐体8」である。
本実施の形態によれば、キャッシュメモリ303の使用量が閾値を超えた場合、そのキャッシュメモリ303が属する記憶サブシステム以外の記憶サブシステムにおいてI/O制限を実行することができる。管理計算機140は、容量に余裕のあるキャッシュメモリ303が使用されるように、I/O制限を実行する記憶サブシステムを選択する。その結果、I/O制限を実行している記憶サブシステムの上位の記憶サブシステムにおいてデータ溢れが発生することを防ぐことによって、他のCGの処理に影響を与えずにI/O制限を実現することができる。
また、本発明によれば、各記憶サブシステム間のリンク160の稼動状況が観測される。そして、I/O制限によってデータ溢れを防ぐことができる場合にのみ、I/O制限が実行される。すなわち、無意味なI/O制限を実行しないため、資源の浪費及びホストからのI/Oの性能低下を防ぐことができる。
次に、本発明の第2の実施の形態について説明する。
最初に、本発明の第2の実施の形態の計算機システムの構成について、図26を参照して説明する。
本実施の形態の計算機システムは、第1の実施の形態の図26に示すものと同様、八つの記憶サブシステム、ホスト計算機130及び管理計算機140からなる。
ただし、図26と異なり、本実施の形態の管理計算機140は、直結記憶サブシステム100のみに接続され、リモート記憶サブシステム110及び120とは接続されない。このため、本実施の形態の管理計算機140は、直結記憶サブシステム100を介して、リモート記憶サブシステム110及び120から情報を取得する。また、本実施の形態の管理計算機140は、直結記憶サブシステム100を介して、リモート記憶サブシステム110及び120にI/O制限命令を発行する。その他の点については、本実施の形態は第1の実施の形態と同様である。
以下、本実施の形態については、第1の実施の形態との相違点についてのみ説明する。
管理計算機140の構成について、図2を参照して説明する。
本実施の形態の管理計算機140の構成は、第1の実施の形態の管理計算機140の構成と同様である(図2参照)。ただし、監視設定情報221の内容は、第1の実施の形態と異なる。これについては、後で詳細に説明する。
なお、管理計算機140の情報収集プログラム215のフローチャートは、図16及び図17に示す通りであるが、ステップ2102及びステップ2116において発行される情報及びその送信先は、第1の実施の形態と異なる。これらについては、後で詳細に説明する。
直結記憶サブシステム100の構成について、図3を参照して説明する。
本実施の形態の直結記憶サブシステム100の構成は、第1の実施の形態の直結記憶サブシステム100の構成と同様である(図3参照)。ただし、I/O制限命令受付プログラム311、筐体情報管理プログラム313及びI/O制限情報321の内容が第1の実施の形態と異なり、さらに、自連結位置判断プログラム314が追加されている。I/O制限命令受付プログラム311、筐体情報管理プログラム313、I/O制限情報321及び自連結位置判断プログラム314については、後で詳細に説明する。
リモート記憶サブシステム110の構成について、図4を参照して説明する。
本実施の形態のリモート記憶サブシステム110の構成は、第1の実施の形態のリモート記憶サブシステム110の構成と同様である(図4参照)。ただし、本実施の形態のリモート記憶サブシステム110は、管理計算機140と接続されないため、管理用I/F302を備えなくてもよい。さらに、I/O制限命令受付プログラム311、筐体情報管理プログラム313及びI/O制限情報321の内容が第1の実施の形態と異なり、自連結位置判断プログラム314が追加されている。
リモート記憶サブシステム120の構成について、図5を参照して説明する。
本実施の形態のリモート記憶サブシステム120の構成は、第1の実施の形態のリモート記憶サブシステム110からI/O制限命令受付プログラム311、I/O制限処理プログラム312及びI/O制限情報321を削除したものである。
図28は、本発明の第2の実施の形態の管理計算機140に格納される監視設定情報221の説明図である。
監視設定情報221は、監視インターバル910、直結記憶サブシステム情報4010及び記憶サブシステム連結情報4020からなる。
監視インターバル910は、第1の実施の形態の監視設定情報221(図9参照)に含まれるものと同様である。
直結記憶サブシステム情報4010は、計算機システムに存在する直結記憶サブシステム100に関する情報を含む。具体的には、直結記憶サブシステム情報4010は、直結記憶サブシステム数4011、接続順序情報4012及び記憶サブシステムID4013を含む。
直結記憶サブシステム数4011は、計算機システムに存在する直結記憶サブシステム100の数である。本実施の形態の計算機システムは、図26に示す構成であるため、直結記憶サブシステム数4011は「2」となる。
記憶サブシステムID4013は、計算機システムに存在する直結記憶サブシステム100の識別子である。図26に示す構成の場合、記憶サブシステムID4013は、「筐体1」及び「筐体5」となる。
接続順序情報4012は、直結記憶サブシステム100が接続される順序である。図28の例では、筐体1の接続順序情報4012が「1」、筐体5の接続順序情報4012が「2」となる。
記憶サブシステム連結情報4020は、計算機システムに存在する記憶サブシステムの系列に関する情報を含む。具体的には、記憶サブシステム連結情報4020は、記憶サブシステム連結数4021、連結順序情報4022及び記憶サブシステムID4023を含む。
記憶サブシステム連結数4021は、一つの記憶サブシステムの系列を構成する記憶サブシステムの数である。図26の筐体1から筐体4までの系列及び筐体5から筐体8までの系列については、記憶サブシステム連結数4021は「4」となる。
記憶サブシステムID4023は、各系列を構成する記憶サブシステムの識別子である。図26の筐体1から筐体4までの系列の場合、記憶サブシステムID4023は、「筐体1」、「筐体2」、「筐体3」及び「筐体4」となる。図26の筐体5から筐体8までの系列の場合、記憶サブシステムID4023は、「筐体5」、「筐体6」、「筐体7」及び「筐体8」となる(図示省略)。
連結順序情報4022は、各記憶サブシステムに付与される順序情報であり、最上位の記憶サブシステム(直結記憶サブシステム100)の連結順序情報4022が「1」となり、以下、下位に向かって「1」ずつ大きくなる値が付与される。例えば、「筐体1」、「筐体2」、「筐体3」及び「筐体4」の連結順序情報4022は、それぞれ、「1」、「2」、「3」及び「4」である。
図29は、本発明の第2の実施の形態の管理計算機140が直結記憶サブシステム100に発行する状態情報取得命令の説明図である。
管理計算機140が図16のステップ2102において記憶サブシステムから情報を取得するとき、図29に示す状態情報取得命令データ4100が管理計算機140から直結記憶サブシステム100に発行される。各記憶サブシステムは、下位に記憶サブシステムが連結されている場合、受け付けた状態情報取得命令データ4100を下位の記憶サブシステムに転送する(図30参照)。
なお、図29(A)は、状態情報取得命令データ4100の形式を示す図であり、図29(B)は、状態情報取得命令データ4100の一例を示す図である。
状態情報取得命令データ4100は、少なくとも、状態取得コマンド種類4101、記憶サブシステムID4102、CGID4103及び取得情報種類4104を含む(図29(A))。
状態取得コマンド種類4101は、発行される命令の種類を示す情報である。図29の場合、最新のペア状態等を取得するため、状態取得コマンド種類4101は、「最新」となる(図29(B))。
記憶サブシステムID4102は、情報を取得する対象の記憶サブシステムの識別子である。例えば、筐体2から情報を取得しようとする場合、記憶サブシステムID4102は「筐体2」となる(図29(B))。
CGID4103は、情報を取得する対象のCG602の識別子である。例えば、CG1から情報を取得しようとする場合、CGID4103は「CG1」となる(図29(B))。
取得情報種類4104は、取得しようとする情報の種類を示す情報である。本実施の形態では、取得しようとする情報は、全体キャッシュ使用量、個別キャッシュ使用量及びリンク稼動状況である。(図18(B))。
図30は、本発明の第2の実施の形態の記憶サブシステムの筐体情報管理プログラム313が実行する系列状態取得処理のフローチャートである。
記憶サブシステムの筐体情報管理プログラム313は、系列状態取得処理を開始すると、最初に、状態情報取得命令データ4100(図29参照)を受信する(4201)。
次に、筐体情報管理プログラム313は、自連結位置判断プログラム314に、当該筐体情報管理プログラム313を格納する記憶サブシステム(以下、当該記憶サブシステムと記載する)が末端記憶サブシステムであるか否かを判定させる(4202)。ここで、末端記憶サブシステムとは、下位に他の記憶サブシステムが連結されていない記憶サブシステムである。図26の例では、筐体4及び筐体8が末端記憶サブシステムである。
ステップ4202において、当該記憶サブシステムが末端記憶サブシステムであると判定された場合、受信した状態情報取得命令データ4100の取得情報種類4104に従って、状態情報を生成する(4203)。本実施の形態では、筐体情報管理プログラム313は、コピーペア構成情報322、キャッシュ管理テーブル323及びリンク稼動状況テーブル324を参照して、全体キャッシュ使用量、個別キャッシュ使用量及びリンク稼動状況を状態情報として生成する。
一方、ステップ4202において、当該記憶サブシステムが末端記憶サブシステムでないと判定された場合、下位の記憶サブシステムから情報を取得する必要がある。このため、筐体情報管理プログラム313は、状態情報取得命令データ4100を下位の記憶サブシステムに転送し、下位の記憶サブシステムからの応答を待つ(4204)。
筐体情報管理プログラム313は、下位の記憶サブシステムから状態情報の応答を受けると、受けた状態情報をコピーペア構成情報322等に格納するとともに(4205)、当該記憶サブシステムの状態情報を追加して、状態情報を生成する(4206)。
筐体情報管理プログラム313は、状態情報を生成すると(4203又は4204)、自連結位置判断プログラム314に、当該記憶サブシステムがホスト計算機130に直結されているか否か(すなわち、当該記憶サブシステムが直結記憶サブシステム100であるか否か)を判定させる(4207)。
ステップ4207において、当該記憶サブシステムがホスト計算機130に直結されていると判定された場合、筐体情報管理プログラム313は、状態情報をホスト計算機130に送信する(4208)。
一方、ステップ4207において、当該記憶サブシステムがホスト計算機130に直結されていないと判定された場合、筐体情報管理プログラム313は、状態情報を上位の記憶サブシステムに送信する(4209)。
以上で、系列状態取得処理を終了する。
図31は、本発明の第2の実施の形態の管理計算機140が記憶サブシステムに発行するI/O制限命令の説明図である。
管理計算機140が図16のステップ2116又は2106においてI/O制限命令を発行するとき、図31に示すI/O制限命令データ4300が管理計算機140から直結記憶サブシステム100に転送される。図31(A)は、I/O制限命令データ4300の形式を示す図であり、図31(B)は、I/O制限命令データ4300の一例を示す図である。
I/O制限命令データ4300は、第1の実施の形態のI/O制限命令データ2300に、サブシステムID4301を追加したものである(図31(A))。LUID2301、コマンド種別2302及び制御内容2303については、図18において説明したため、ここでは説明を省略する。
本実施の形態では、第1の実施の形態と異なり、全てのI/O制限命令が管理計算機140から直結記憶サブシステム100に転送される。すなわち、各記憶サブシステムは、自分以外の記憶サブシステムを対象として発行されたI/O制限命令を受信する場合がある。このため、I/O制限命令データ4300は、I/O制限命令の対象の記憶サブシステムを識別するサブシステムID4301を含む。例えば、I/O制限命令の対象の記憶サブシステムが筐体1である場合、サブシステムID4301は、「筐体1」となる(図31(B))。
図32は、本発明の第2の実施の形態の記憶サブシステムのI/O制限命令受付プログラム311のフローチャートである。
I/O制限命令受付プログラム311は、直結記憶サブシステム100及びリモート記憶サブシステム110のメモリ306に格納され、プロセッサ304によって実行される。I/O制限命令受付プログラム311は、管理計算機140から発行されたI/O制限命令(図16のステップ2116又は2106参照)を受けて、I/O制限の実行又は解除を設定する。
I/O制限命令受付プログラム311は、I/O制限命令を受け付けると(4401)、当該I/O制限命令を受けた記憶サブシステム(以下、当該記憶サブシステムとする)が、当該I/O制限命令の対象の記憶サブシステムであるか否かを判定する(4402)。具体的には、受け付けたI/O制限命令データ4300のサブシステムID4301を参照し、これが当該記憶サブシステムの識別子と一致する場合、当該記憶サブシステムが当該I/O制限命令の対象であると判定される。
ステップ4402において、当該記憶サブシステムが当該I/O制限命令の対象でないと判定された場合、当該I/O制限命令は、他の記憶サブシステムに対して発行されたものである。このため、I/O制限命令受付プログラム311は、当該I/O制限命令を下位の記憶サブシステムに転送して(4403)、処理を終了する。
一方、ステップ4402において、当該記憶サブシステムが当該I/O制限命令の対象であると判定された場合、I/O制限命令受付プログラム311は、受け付けたI/O制限命令が「ON」(すなわち、I/O制限を実行する命令)であるか否かを判定する(4404)。具体的には、I/O制限命令データ4300のコマンド種別2302が「I/O制限」、制御内容2303が「ON」であるか否かを判定する。
ステップ4404において、受け付けたI/O制限命令が「ON」であると判定された場合、I/O制限の実行が命令されている。このため、I/O制限命令受付プログラム311は、当該I/O制限命令によって指定されたLUID2301について、I/O制限の実行をI/O制限情報313に登録する(4405)。
一方、ステップ4404において、受け付けたI/O制限命令が「OFF」であると判定された場合、I/O制限の解除が命令されている。このため、I/O制限命令受付プログラム311は、当該I/O制限命令によって指定されたLUID2301について、I/O制限の実行をI/O制限情報313に登録する(4406)。
以上で、処理を終了する。
以上の本実施の形態によれば、管理計算機140は、直結記憶サブシステム100を経由して当該直結記憶サブシステム100の下位のリモート記憶サブシステム110等にI/O制限命令を発行することができる。その結果、管理計算機は、リモート記憶サブシステム110等と直接接続されていなくても、それらを制御することができる。