図1は、本発明の実施形態の全体概要を示す構成説明図である。図1に示す構成は、本発明の理解及び実施に必要な程度で、本発明の概要を示しており、本発明の範囲を図1に示す構成に限定するものではない。
本実施形態では、後述のように、ホスト3内の管理部(外部マネージャ4)とストレージ1内の管理部(内部マネージャ6)とが連携して動作することにより、ホスト3から発行されるコマンドの実行頻度とストレージ1内で発行されるコマンドの実行頻度とを調節する。
図1に示すコンピュータシステムは、例えば、複数のストレージ1,2と、少なくとも一つのホスト3とを備える。なお、図示の構成に代えて、例えば、複数のホスト3と一つのストレージとからコンピュータシステムを構成してもよいし、あるいは、一つのホスト3と、一つのストレージ1と、複数のストレージ2とからコンピュータシステムを構成してもよい。
ストレージ1,2は「記憶制御装置」に該当する。また、ストレージ1は「所定の記憶制御装置」に該当する。さらに、後述の外部マネージャ4は「第1管理部」に、内部マネージャ6は「第2管理部」に、それぞれ該当する。
先にホスト3の構成から説明する。ホスト3は、例えば、サーバコンピュータのようなコンピュータ装置として構成されており、マイクロプロセッサやメモリ等のコンピュータ資源を備えている。ホスト3は、例えば、外部マネージャ4と、アプリケーションプログラム5とを備える。このほかに、ホスト3は、オペレーティングシステムや各種ドライバ等のコンピュータプログラムを備える。
本実施形態では、第1ストレージ1をコンピュータシステムの中心として考える。従って、第1ストレージ1の外部に設けられている管理機能を外部マネージャ4と呼び、第1ストレージ1内に設けられている管理機能を内部マネージャ6と呼ぶ。
アプリケーションプログラム5は、例えば、顧客管理プログラム、電子メール管理プログラム、売上げ管理プログラム、文書管理プログラム等のような各種アプリケーション用のプログラムである。ホスト3には複数のアプリケーションプログラム5を設けることができるが、説明の便宜上、一つだけ示す。なお、図1の例では、アプリケーションプログラム5は、ストレージ1内の論理ボリューム8Aを使用するものとする。
外部マネージャ4は、例えば、コマンド発行部4Aと、優先度設定部4Bと、管理テーブル4Cと、テーブル設定部4Dとを備える。コマンド発行部4Aは、アプリケーションプログラム5からの要求に対応する一つまたは複数のコマンドを発行する。
例えば、アプリケーションプログラム5が論理ボリューム8A内のデータの読み出しを要求する場合、コマンド発行部4Aは、ストレージ1内の論理ボリューム8Aに向けて、リードコマンドを発行する。例えば、アプリケーションプログラム5が論理ボリューム8Aへのデータの書込みを要求する場合、コマンド発行部4Aは、論理ボリューム8Aに向けてライトコマンドを発行する。
優先度設定部4Bは、コマンド発行部4Aから発行される各種コマンドについて、優先度をそれぞれ設定する。「第1管理テーブル」としての管理テーブル4Cは、例えば、複数のテーブルを含んで構成することができる。
例えば、管理テーブル4Cを構成する一つのテーブルには、各コマンドの種別毎に優先度が予め対応付けられている。管理テーブル4Cを構成する別の一つのテーブルには、各優先度毎の起動比率が予め対応付けられている。例えば、優先度が高くなるほど起動比率が大きくなるように設定される。つまり、優先されるべきコマンドの起動比率は高く設定される。
このように構成される管理テーブル4Cを参照することにより、各コマンドに設定されている優先度を検出することができ、その優先度に設定されている起動比率を得ることができる。つまり、管理テーブル4Cを用いることにより、各コマンド別の起動比率が求められる。
なお、第1ストレージ1の内部マネージャ6に設けられている管理テーブル6Dも、管理テーブル4Cと同様に、各コマンド別の優先度を管理するためのテーブルと、各優先度毎に起動比率を管理するためのテーブルとが設けられている。各管理テーブル4C,6Dには、コンピュータシステム内で使用される全てのコマンドについて、それぞれの優先度が設定されている。
テーブル設定部4Dは、ユーザからの指示に基づいて、各管理テーブル4C,6Dをそれぞれ設定する。ユーザは、例えば、各優先度毎の起動比率を外部マネージャ4に手動で入力することができる。テーブル設定部4Dは、ユーザの指示に応じて管理テーブル4Cを設定し、さらに、管理テーブル6Dも設定する。
また、テーブル設定部4Dは、内部マネージャ6からの要求に基づいて、管理テーブル4Cの内容を再設定する。つまり、後述のように、内部マネージャ6が所定のコマンドに設定されている優先度の変更を要求すると、テーブル設定部4Dは、管理テーブル4Cの内容を更新させる。
ストレージ1,2について説明する。ストレージ1,2とホスト3とは、例えば、FC_SAN(Fibre Channel_Storage Area Network)やIP_SAN(Internet Protocol_SAN)等の通信ネットワークを介して接続される。なお、IP_SANには、例えば、iSCSI(internet Small Computer System Interface)やFCoE(Fibre Channel over Ethernet(Ethernetは登録商標))が含まれる。
「記憶制御装置」としてのストレージ1,2は、例えば、コントローラと、コントローラによって制御される複数の記憶装置とを備えて構成される。コントローラの提供する機能には、例えば、内部マネージャ6及びバックアップ処理部7がある。
記憶装置としては、例えば、ハードディスク装置、半導体メモリ装置、光ディスク装置、光磁気ディスク装置、磁気テープ装置、フレキシブルディスク装置等の、データを読み書き可能な種々の装置を利用可能である。記憶装置としてハードディスク装置を用いる場合、例えば、FC(Fibre Channel)ディスク、SCSI(Small Computer System Interface)ディスク、SATAディスク、ATA(AT Attachment)ディスク、SAS(Serial Attached SCSI)ディスク等を用いることができる。
記憶装置として半導体メモリ装置を用いる場合、例えば、フラッシュメモリ、FeRAM(Ferroelectric Random Access Memory)、MRAM(MagnetoresistiveRandom Access Memory)、相変化メモリ(Ovonic Unified Memory)、RRAM(Resistance RAM)」等の種々のメモリ装置を利用可能である。
記憶装置の有する物理的記憶領域上に、論理ボリューム8A,8Bが形成される。論理ボリューム8A,8Bは、例えば、RAID5やRAID6のような冗長化された物理的記憶領域上に設けることができる。なお、以下の説明では、「論理ボリューム」を「ボリューム」と略記する場合がある。
内部マネージャ6は、例えば、起動順序制御部6Aと、コマンド実行部6Bと、優先度更新部6Cと、管理テーブル6Dと、優先度設定部6Eとを備えている。起動順序制御部6Aは、各コマンドに対応付けられる起動比率に基づいて、各コマンドの実行を制御するものである。例えば、起動比率が60%のコマンドC1と、起動比率がそれぞれ20%ずつのコマンドC2,C3とがある場合、起動順序制御部6Aは、コマンドC1が10回に6回の頻度で実行され、各コマンドC2,C3が10回に2回ずつの頻度で実行されるように、制御する。
コマンド実行部6Bは、起動順序制御部6Aによって選択されたコマンドを実行する機能である。説明の便宜上一つのみ示すが、コマンド実行部6Bは、各コマンド毎にそれぞれ用意することができる。
優先度設定部6Eは、ストレージ1の内部で発行されるコマンドに、優先度を設定するための機能である。優先度設定部6Eは、管理テーブル6Dに基づいて、ストレージ1内部で発行されるコマンドに所定の優先度を設定する。
上述の通り、本実施例では、ホスト3から発行されるコマンドと、ストレージ1内で発行されるコマンドとの2種類のコマンドが実行される。ホスト3から発行されるコマンドは「第1コマンド」に該当し、ストレージ1内で発行されるコマンドは「第2コマンド」に該当する。以下の説明では、理解を容易にするために、ホスト3から発行されるコマンドを「ホストコマンド」と、ストレージ1内部で発行されるコマンドを「内部コマンド」と、それぞれ呼ぶことにする。
内部コマンドとして、本実施例では、バックアップ処理部7で使用されるコマンドを例に挙げる。本実施例では、例えば、ストレージ1内の論理ボリューム8Bとストレージ2内の論理ボリューム8Cとの間でデータをコピーするためのコマンドが、コマンド発行部7Aから発行される。
上述の通り、管理テーブル6Dには、各コマンド毎に優先度が予めそれぞれ設定されている。そこで、優先度設定部6Eは、管理テーブル6Dを参照することにより、コマンド発行部7Aから発行される内部コマンドに優先度を設定する。
起動順序制御部6Aは、ホスト3から受信したホストコマンドとバックアップ処理部7から受領した内部コマンドとのそれぞれの実行頻度(起動順序)を、ホストコマンドの優先度(第1優先度)と内部コマンドの優先度(第2優先度)とに基づいて制御する。
優先度更新部6Cは、例えば、内部コマンドの実行頻度が予め設定される目標値に一致するように、ホストコマンドに設定される優先度または内部コマンドに設定される優先度のいずれか又は双方を調整する。
例えば、内部コマンドの実行頻度が目標値に達していない場合、優先度更新部6Cは、内部コマンドの優先度を上げるか、あるいは、ホストコマンドの優先度を下げることができる。例えば、内部コマンドの実行頻度が目標値を超えている場合、優先度更新部6Cは、内部コマンドの優先度を下げるか、あるいは、ホストコマンドの優先度を上げることができる。
なお、優先度更新部6Cは、ホストコマンドの実行頻度が目標値に一致するように、ホストコマンドの優先度または内部コマンドの優先度のいずれか又は両方を調整することも可能である。
後述の実施例で明らかとなるように、優先度更新部6Cは、制御対象のコマンドの実行頻度が急激に変化しないように、ホストコマンドの優先度または内部コマンドの優先度のいずれか又は両方を変化させることができる。
第1ストレージ1は、複数の論理ボリューム8A,8Bを備えている。一方の論理ボリューム8Aは、ホスト3に提供されている。アプリケーションプログラム5は、論理ボリューム8Aにアクセスして、データの読み書きを行う。
他方の論理ボリューム8Bは、第2ストレージ2内の論理ボリューム8Cとコピーペアを形成する。バックアップ処理部7は、定期的に又は不定期に、論理ボリューム8Bの記憶内容と論理ボリューム8Cの記憶内容との差分データを、論理ボリューム8Bから論理ボリューム8Cに転送させる。これにより、論理ボリューム8Bの記憶内容と論理ボリューム8Cの記憶内容は一致する。
ホスト3による論理ボリューム8Aへのアクセス処理と、各論理ボリューム8B,8C間のコピー処理とは、全く無関係とする構成でもよいし、両方の処理が関連を有する構成でもよい。
例えば、論理ボリューム8Aを正ボリューム、論理ボリューム8Bを副ボリューム、論理ボリューム8Cをバックアップボリュームとして使用することもできる。論理ボリューム8Aの記憶内容は、副ボリュームである論理ボリューム8Bにも記憶される。さらに、論理ボリューム8Bの記憶内容を、第2ストレージ2内の論理ボリューム8Cにコピーさせる。これにより、データのバックアップを複数設けることができ、耐障害性を向上させることができる。
本実施例によるコンピュータシステムは、以下のように動作する。アプリケーションプログラム5からの要求に応じてホストコマンドが発行される場合、優先度設定部4Bは、管理テーブル4Cを参照して、そのホストコマンドに優先度を設定する。管理テーブル4C,6Dには、各ホストコマンド及び各内部コマンドのそれぞれに関する優先度と、各優先度毎の起動比率とが管理されている。コマンド発行部4Aは、優先度の設定されたホストコマンドを第1ストレージ1に送信する。
第1ストレージ1の内部では、バックアップ処理部7が、バックアップスケジュールに基づいて、バックアップ用の内部コマンドを発行する。優先度設定部6Eは、管理テーブル6Dを参照することにより、その内部コマンドに優先度を設定する。コマンド発行部7Aは、優先度の設定された内部コマンドを内部マネージャ6に送信する。
起動順序制御部6Aは、ホストコマンド及び内部コマンドをそれぞれ受信し、待機キューに格納させる。起動順序制御部6Aは、ホストコマンドの優先度と内部コマンドの優先度とに基づいて、待機キューからホストコマンド又は内部コマンドを所定の頻度で取り出し、コマンド実行部6Bに引き渡す。コマンドの実行結果は、そのコマンドの発行元に送信される。
優先度更新部6Cは、ホストコマンドまたは内部コマンドのうち制御対象のコマンドの実行頻度が目標値に一致するか否かを監視している。優先度更新部6Cは、制御対象コマンドの実行頻度が目標値と一致しない場合、または、ユーザから指示があった場合、のいずれかの場合に、ホストコマンドの優先度または内部コマンドの優先度のいずれか一方又は両方を変更させる。優先度更新部6Cからの要求によって、各管理テーブル4C,6Dの内容はそれぞれ更新される。
このように構成される本実施形態では、外部マネージャ4と内部マネージャ6とが連携して動作することにより、ホストコマンドの実行頻度と内部コマンドの実行頻度とを自動的に調整することができる。従って、バックアップ処理のようなバックグラウンドで行われる処理によって、ホストコマンドに関する応答性能が低下するのを抑制でき、サービス品質の低下を防止して、使い勝手を改善することができる。以下、本実施形態を詳細に説明する。
図2は、本実施例によるコンピュータシステムの全体概要を示す説明図である。先に図1との対応関係について説明すると、第1ストレージ10は図1中の第1ストレージ1に、第2ストレージ20は図1中の第2ストレージ2に、ホスト30は図1中のホスト3に、それぞれ対応する。
このコンピュータシステムは、例えば、第1ストレージ10と、第2ストレージ20と、ホスト30と、管理サーバ40とを備えている。各ストレージ10,20とホスト30とは、第1通信ネットワークCN10を介して相互通信可能に接続されている。第1ストレージ10と第2ストレージ20とは、第2通信ネットワークCN20を介して相互通信可能に接続される。第1通信ネットワークCN1及び第2通信ネットワークCN20は、例えば、FC_SANやIP_SANのように構成される。管理サーバ40と、各ストレージ10,20及びホスト30とは、第3通信ネットワークCN30を介して相互通信可能に接続されている。第3通信ネットワークCN30は、例えば、LAN(Local Area Network)のように構成することができる。なお、第1通信ネットワークCN10のみで、各ストレージ10,20と、ホスト30と、管理サーバ40とを相互通信可能に接続する構成でもよい。
ホスト30は、例えば、マイクロプロセッサ31と、メモリ32と、I/O用通信インターフェース33と、管理用通信インターフェース34と、補助記憶装置35とを備えて構成される。
管理サーバ40は、コンピュータシステムの状態を管理する装置である。管理サーバ40は、例えば、マイクロプロセッサやメモリ及び通信インターフェース等を含んで構成されており、各ストレージ10,20やホスト30の状態を監視する。監視対象の情報としては、例えば、キャッシュメモリ使用量、ボリューム使用量、I/O量等を挙げることができる。
第1ストレージ10は、例えば、コントローラ100と記憶装置搭載部120(以下、HDU120)とを備えている。コントローラ100は、ストレージ装置10の動作を制御するものである。コントローラ100は、例えば、チャネルアダプタ110(以下、CHA110)と、ディスクアダプタ111(以下、DKA111)と、キャッシュメモリ112(図中、CM)と、共有メモリ(図中、SM)113と、接続制御部(図中、SW)114と、サービスプロセッサ115(以下、SVP115)とを備える。
CHA110は、ホスト30または第2ストレージ20との間でデータ通信を行う装置である。CHA110は、少なくとも一つ以上の通信ポートを備える。通信ポートには、例えば、IP(Internet Protocol)アドレスやWWN(World Wide Name)のようなネットワークアドレスが対応付けられている。
DKA111は、HDU120が有するディスクドライブ121との間でデータ授受を行う装置である。DKA111は、CHA110と同様に、CPUやメモリ等を備えたマイクロコンピュータシステムとして構成される。DKA111は、例えば、CHA110がホスト30から受信したデータを、所定のディスクドライブ121に書込む。また、DKA111は、所定のディスクドライブ121からデータを読み出し、ホスト30または第2ストレージ20に送信することもできる。DKA111は、ディスクドライブ121との間でデータ入出力を行う場合、論理的なアドレス(LBA:Logical Block Address))を物理的なアドレスに変換する。
DKA111は、ディスクドライブ121がRAIDに従って管理されている場合、RAID構成に応じたデータアクセスを行う。例えば、DKA111は、同一のデータを別々のディスクドライブ群(RAIDグループ)にそれぞれ書き込んだり(RAID1)、あるいは、パリティ計算を実行して、データ及びパリティをディスクドライブ群に書き込む(RAID5、RAID6等)。
キャッシュメモリ112は、ホスト30または第2ストレージ20から受信したデータを記憶する。また、キャッシュメモリ112は、ディスクドライブ121から読み出されたデータを記憶する。
共有メモリ113には、第1ストレージ10の作動に使用するための各種制御情報等が格納される。また、共有メモリ113には、ワーク領域が設定されるほか、後述する各種テーブル類も格納される。
なお、ディスクドライブ121のいずれか一つあるいは複数を、キャッシュ用のディスクとして使用してもよい。また、キャッシュメモリ112と共有メモリ113とは、それぞれ別々のメモリとして構成することもできるし、同一のメモリの一部の記憶領域をキャッシュ領域として使用し、他の記憶領域を制御領域として使用することもできる。
接続制御部114は、各CHA110,各DKA111,キャッシュメモリ112及び共有メモリ113を相互に接続させる。接続制御部114は、例えば、クロスバスイッチ等として構成される。
HDU120は、複数のディスクドライブ121を備える。ディスクドライブ121としては、例えば、ハードディスクドライブ、フラッシュメモリデバイス、フレキシブルディスクドライブ、磁気テープドライブ、半導体メモリドライブ、光ディスクドライブ等のような各種記憶装置及びこれらの均等物を用いることができる。
例えば、複数のディスクドライブ121の物理的記憶領域を一つにまとめてRAIDグループ122を構成することができる。このRAIDグループ122の物理的記憶領域に、固定サイズまたは可変サイズの論理ボリューム123を少なくとも一つ以上設けることができる。なお、一つのディスクドライブ121の物理的記憶領域に一つまたは複数の論理ボリューム123を設けることもできる。図中では、論理ボリュームを「LDEV(Logical DEVice)」と表示する場合がある。
SVP115は、LAN等の内部ネットワークを介して、各CHA110とそれぞれ接続されている。SVP115は、CHA110を介して、共有メモリ113やDKA111とデータ授受を行うことができる。SVP115は、第1ストレージ10内の各種情報を収集し、管理サーバ40に提供する。
第2ストレージ20も第1ストレージ10と同様に構成可能である。第2ストレージ20は、コントローラ200とHDU220とを備える。HDU220は、複数のディスクドライブ221を備えている。論理ボリューム223は、ディスクドライブ221の有する物理的記憶領域を利用して生成される。
第1ストレージ10と第2ストレージ20とは、同一構成としてもよいし、異なる構成であってもよい。例えば、第1ストレージ10と第2ストレージ20とが、ベンダ、機種、型式、キャッシュメモリサイズ等の点で異なっている場合でも、本発明を適用することができる。
図3は、外部マネージャ301と内部マネージャ101の構成をそれぞれ簡略化して示す説明図である。上述の通り、本実施例では、ストレージ装置をコンピュータシステムの中心に据えているため、ストレージ10,20の外部に位置する管理機能を外部マネージャと呼び、ストレージ内の管理機能を内部マネージャと呼ぶ。
「第1管理部」としての外部マネージャ301は、例えば、コマンド優先度管理テーブルT30と、起動比率管理テーブルT31と、コピー完了時間T32とを備える。これらの各テーブルT30〜T32は「第1管理テーブル」に該当する。各テーブルT30〜T31の詳細は、図5と共に後述する。
「第2管理部」としての内部マネージャ101は、コントローラ100内に設けられている。内部マネージャ101は、例えば、コマンド優先度管理テーブルT10と、起動比率管理テーブルT11と、目標値管理テーブルT12とを備える。コントローラ100は、コピー管理テーブルT13及びボリューム管理テーブルT14を備える。各テーブルT10〜T14の詳細は、図6,図7と共に後述する。
図4は、ホストコマンドの起動比率(実行頻度)と内部コマンドの起動比率(実行頻度)とが段階的に調整されていく様子を示す説明図である。ここで、ホストコマンドとは、ホスト30から発行されるコマンドを意味する。内部コマンドとは、ストレージ装置の内部で発行されるコマンドを意味する。内部コマンドは、例えば、第1ストレージ10内で発行される。
図4では、リモートコピーを例に挙げて説明する。リモートコピーとは、一方のストレージから他方のストレージにデータをコピーさせる処理である。これにより、物理的に離れた複数のストレージ内に同一のデータを保持させることができる。
リモートコピーは、初期コピー(形成コピー)と、更新コピーとに大別される。初期コピーは、リモートコピーのペアを形成する複数の論理ボリューム間において、記憶内容を同一にする処理である。つまり、初期コピーとは、コピー元ボリュームに記憶されている全ブロックデータを、コピー先ボリュームに転送して記憶させる処理である。更新コピーとは、初期コピー完了後に生じたライトデータをコピー元ボリューム及びコピー先ボリュームの両方に書き込む処理である。
図4(a)では、第1ストレージ10内の第1ボリューム123(PVOL1)から第2ストレージ20内の第2ボリューム223(SVOL2)に向けてデータがコピーされている。つまり、ボリューム123(PVOL1)がコピー元ボリューム、ボリューム223(SVOL2)がコピー先ボリュームであり、コピー元ボリューム(PVOL1)からコピー先ボリューム(SVOL2)に向けて初期コピーが実行されている。
図4(b)では、初期コピーの途中で、別のリモートコピーペア(PVOL2とSVOL1)について更新コピーが実行されている。ホスト30から送信された更新データは、第1ストレージ10内の第2ボリューム(PVOL2)と、第2ストレージ20内の第1ボリューム(SVOL1)とにそれぞれ書き込まれる。もしも、初期コピーに関するコマンドの優先度が高い場合、ストレージ10,20の各種資源(キャッシュメモリ量や通信帯域等)の多くが初期コピーのために使用される。この場合、更新コピーに割り当てられる資源の量は少なくなり、応答性能は低下する。
図4(c)では、初期コピーの優先度を低下させることにより、あるいは、更新コピーの優先度を上げることにより、初期コピーの起動比率と更新コピーの起動比率とを調節している。
なお、図4では、更新コピーがホストコマンドによって実行され、初期コピーが内部コマンドにより実行される場合を例に挙げたが、これとは逆に、更新コピーを内部コマンドにより実行し、初期コピーをホストコマンドにより実行することもできる。さらに、リモートコピーに限らず、例えば、データマイグレーション処理等にも適用できる。データマイグレーション処理とは、例えば、データの価値の変動に応じて、そのデータの記憶先を変更する処理である。
図5は、外部マネージャ301によって使用される各テーブルT30〜T31の構成例を示す説明図である。
コマンド優先度管理テーブルT30は、各コマンド別にそれぞれ対応付けられる優先度を管理するテーブルである。コマンド優先度管理テーブルT30は、例えば、各コマンドを識別するためのコマンド欄C300と、各コマンドに設定される優先度を示す優先度欄C301とを備える。
コマンド欄C300には、ホストコマンド及び内部コマンドがそれぞれ登録される。コマンド欄C300には、コンピュータシステム内で使用される全てのホストコマンド及び全ての内部コマンドを事前に登録することができる。つまり、コンピュータシステム内で使用される全てのコマンドについて、予め優先度を設定する構成でもよい。これに代えて、コマンド欄C300に一部のホストコマンド及び一部の内部コマンドのみを事前に登録する構成でもよい。この場合、コマンド欄C300に登録されていないコマンドには、初期値として予め用意されている優先度を用いる構成とすればよい。
優先度欄C301には、例えば、P0〜P15の16段階で優先度が設定される。本実施例では、優先度の値が小さくなるほど優先して実行される。なお、16段階に限らず、16未満または17以上の段階で優先度を設定する構成でもよい。
起動比率管理テーブルT31は、各優先度毎の起動比率を管理するテーブルである。この管理テーブルT31は、例えば、優先度が設定される優先度欄C310と、起動比率が設定される起動比率欄C311とを備えている。
コピー完了時間T32は、コピー処理に要する時間tcを管理する。コピー完了に要する時間であるから、コピー所要時間とも呼ぶ。コピー処理としては、例えば、初期コピー、バックアップコピー等を挙げることができる。コピー所要時間tcは、例えば、ユーザによって設定される。例えば、コピー処理の開始から8時間以内にコピー処理の終了を希望するユーザは、コピーtcとして8時間を設定する。
図6は、内部マネージャ101により使用される各テーブルT10〜T12の構成例を示す説明図である。コマンド優先度管理テーブルT10は、コマンド優先度管理テーブルT30と同様に、各コマンドを識別するためのコマンド欄C100と、各コマンド毎の優先度を示す優先度欄C101とを備える。この管理テーブルT10は、外部マネージャ301により使用される管理テーブルT30と同一構成である。つまり、本実施例では、先に管理テーブルT30が作成され、管理テーブルT30の内容が外部マネージャ301から内部マネージャ101に送信される。これにより、内部マネージャ101は、管理テーブルT30と同一内容の管理テーブルT10を作成する。
起動比率管理テーブルT11は、各優先度毎の起動比率をそれぞれ管理するテーブルである。この管理テーブルT11は、各優先度を示す優先度欄C110と、各優先度毎の起動比率を示す起動比率欄C111とを備える。図6に示す起動比率管理テーブルT11は、図5に示す管理テーブルT31と同一である。
目標値管理テーブルT12は、制御対象の処理(制御対象のコマンド)についての目標値を管理するテーブルである。本実施例では、コピーコマンドを制御対象にする場合を説明する。目標値管理テーブルT12は、例えば、コピー対象のトラック数LTを示す欄C120と、目標コピー速度VCSを示す欄C121と、実測されたコピー速度VCAを示す欄C122とを備えている。目標コピー速度VCSは、コピー対象の全トラック数をコピー完了時間tcで除算することにより、求めることができる。後述のように、内部マネージャ101は、目標値管理テーブルT12を用いることにより、コマンドの優先度を変更させる。
図7は、第1ストレージ10内の第1コントローラ100に記憶されている、他の管理テーブルT13,T14の構成例を示す。コピー管理テーブルT13は、論理ボリューム間のコピーを管理するためのテーブルである。
コピー管理テーブルT13は、例えば、各コピーペアを識別するための番号欄C130と、コピー元ボリュームを識別するためのコピー元ボリューム欄C131と、コピー先ボリュームを識別するためのコピー先ボリューム欄C132と、差分を管理するための情報を識別するための差分管理欄C133と、コピーペアの状態を示すための状態欄C134と、その他の欄C135とを備えて構成することができる。
差分管理欄C133は、コピー元ボリュームとコピー先ボリュームとの間の差分データを管理するための情報を特定する。差分データを管理するための情報としては、例えば、差分ビットマップ等を挙げることができる。
その他の欄C135では、例えば、コピーの進捗状況やコピー開始時刻、終了予定時刻等を管理することができる。
ボリューム管理テーブルT14は、第1ストレージ10及び第2ストレージ20の有する論理ボリュームを管理するためのテーブルである。本実施例では、第1ストレージ10が代表ストレージとして、第2ストレージ20内の論理ボリューム223も一緒に管理する場合を説明する。
ボリューム管理テーブルT14は、例えば、番号欄C140と、LUN欄C141と、サイズ欄C142と、VDEV番号欄C143と、PDEV番号欄C144と、アクセス経路情報欄C145と、その他の欄C146とを備える。
LUN欄C141は、各論理ボリュームに対応付けられるLUN(Logical Unit Number)を管理する。サイズ欄C142は、各論理ボリュームの記憶容量を管理する。VDEV欄C143は、各論理ボリュームが対応付けられている中間記憶デバイス(VDEV:Virtual DEVice)を管理する。PDEV欄C144は、各論理ボリュームが対応付けられている物理的記憶デバイス(PDEV:Physical DEVice)を管理する。アクセス経路情報欄C145は、論理ボリュームにアクセスするための経路を管理する。
中間記憶デバイスとは、図2に示すRAIDグループ122が該当する。物理的記憶デバイスとは、図2に示すディスクドライブ121が該当する。中間記憶デバイス122は、物理的記憶デバイス121の有する物理的記憶領域を仮想化したものである。この仮想化された物理的記憶領域の一部を利用して、論理ボリューム123が形成される。
ここで、後述のように、第1ストレージ10内には、2種類の中間記憶デバイス122を設けることができる。一つの種類の中間記憶デバイス122は、第1ストレージ10内のディスクドライブ121に直接対応付けられている。ディスクドライブ121に直接対応付けられている中間記憶デバイス122を用いて生成される論理ボリューム123を、内部ボリュームと呼ぶことができる。
他の一つの種類の中間記憶デバイス122は、図16に示すように、第2ストレージ20内の論理ボリューム223に対応付けられており、第1ストレージ10内のディスクドライブ121とは無関係である。第1ストレージ10の外部に存在する論理ボリューム223に対応付けられる中間記憶デバイス122を用いて生成される論理ボリューム123Vを、外部ボリュームと呼ぶことができる。
外部ボリューム123Vは、中間記憶デバイス122を介して、第2ストレージ20内の論理ボリューム223に対応付けられる。外部ボリューム123V内のデータは、実際には、その外部ボリューム123Vに対応する論理ボリューム223を構成するディスクドライブ221に記憶されている。
第1ストレージ10の第1コントローラ100が、外部ボリューム123Vを書込先とするライトコマンドをホスト30から受信した場合を説明する。第1コントローラ100は、ボリューム管理テーブルT14を参照して、書込先を第2ストレージ20内の論理ボリューム223に変更する。そして、第1コントローラ100は、その論理ボリューム223にアクセスするための経路を特定し、その論理ボリューム223に向けてライトコマンド及びライトデータを送信する。第2ストレージ20の第2コントローラ200は、第1コントローラ100から受信したライトデータをキャッシュメモリに記憶し、そのライトデータを論理ボリューム223に書き込む。
第1コントローラ100が、外部ボリューム123Vを読出し先とするリードコマンドをホスト30から受信した場合、第1コントローラ100は、外部ボリューム123Vに対応する論理ボリューム223からデータを読み出して、ホスト30に送信する。
このように、第1ストレージ10は、第2ストレージ20の有する記憶資源(論理ボリューム223)を、それがあたかも第1ストレージ10の内部ボリュームであるかのようにホスト30に見せかけることができ、実際、内部ボリュームであるかのように使用することができる。第1ストレージ10が内部ボリューム123に提供する各種の機能は、外部ボリューム123Vにも同様にして提供される。
図8は、リモートコピー処理の動作を示すフローチャートである。第1ストレージ10をコピー元ストレージ、第2ストレージ20をコピー先ストレージとする。第1ストレージ10内の論理ボリューム123が正ボリューム(コピー元ボリューム)であり、第2ストレージ20内の論理ボリューム223が副ボリューム(コピー先ボリューム)であるとする。なお、説明の便宜上、コピー元ボリュームは、第1ストレージ10の内部ボリューム123であるとする。
以下に示す各フローチャートは、本発明の理解及び実施に必要な範囲で各処理の概要をそれぞれ示しており、実際のコンピュータプログラムと相違する可能性がある。また、いわゆる当業者であれば、図示されたステップの変更や削除、順番の入れ替え、新たなステップの追加を容易に行うことができるであろう。
まず最初に、初期コピーが実行される(S10,S11,S20)。第1ストレージ10の第1コントローラ100は、正ボリューム123の記憶内容を第2ストレージ20に転送する(S10)。第2ストレージ20の第2コントローラ200は、第1ストレージ10から受信したデータを副ボリューム223に記憶させる(S20)。正ボリューム123に記憶されている全データを副ボリューム223に書き込むまで、S10,S20が繰り返し実行される(S11)。
初期コピーが完了すると(S11:YES)、ホスト30からの更新に応じて(S12:YES)、更新コピーが実行される。第1コントローラ100は、ホスト30から受信したデータをキャッシュメモリ112に記憶させた後で(S13)、ホスト30に更新完了を報告する(S14)。即ち、正ボリューム123に対応するディスクドライブ121にデータを記憶させる前に、ホスト30に処理完了を報告する。ディスクドライブ121へのデータの書込みは、別のタイミングで行われる。このような非同期式の処理に代えて、ホスト30から受信したデータをディスクドライブ121に書き込んだ後で、ホスト30に処理完了を報告する構成でもよい。
第1コントローラ100は、正ボリューム123に書き込まれたデータについて、差分管理を行う(S15)。差分管理とは、初期コピーの完了後に生じた差分データの位置等を管理する処理である。
第1コントローラ100は、所定のタイミングで、更新データを副ボリューム223に送信する(S16)。第2コントローラ200は、更新データを受信すると(S21:YES)、受信した更新データを副ボリュームに記憶させる(S23)。
所定のタイミングとしては、例えば、更新データが所定量以上蓄積された場合等を挙げることができる。なお、正ボリューム12への更新データ書込みと同時に、副ボリューム223に更新データを書き込むようにしてもよい。
第1コントローラ100は、デステージ処理を行う(S17)。デステージ処理とは、キャッシュメモリ112に記憶された更新データを、正ボリューム123に対応するディスクドライブ121に書き込む処理である。図示は省略するが、第2コントローラ200も、適当なタイミングでデステージ処理を行う。
このように、リモートコピー処理は、初期コピー処理と更新コピー処理とを含んで構成される。コンピュータシステムには、リモートコピーのペアを複数設けることができ、各コピーペア毎にそれぞれ並列的に動作可能である。従って、あるコピーペアが初期コピーを実施している最中に、別のコピーペアが更新コピーを行う場合がある。あるコピーペア間の初期コピーがストレージの資源の多くを使用している場合、他のコピーペアに関する更新コピーの処理が遅れる可能性がある。
そこで、本実施例では、図9以下に示すように、ホストコマンド(例えば、更新コピーの契機となる更新要求等)と内部コマンド(例えば、初期コピー等)の起動比率を調整し、ホスト30への応答性能を改善する。
図9は、本実施例による動作の全体概要を示すフローチャートである。図8に示す処理は、各設定値等を設定するための準備段階(S30〜S33)と、設定された値に基づいて制御を行う実行段階(S34)と、制御の実行結果に応じて設定値を見直す修正段階(S35〜S38)とに分けることができる。
ユーザは、キーボードスイッチ等のユーザインターフェースを介して、外部マネージャ301に目標値及び起動比率をそれぞれ設定する(S30)。本実施例では、目標値を算出するための基礎データとして、図5に示すコピー完了時間tcの値が、ユーザにより設定される。続けてユーザは、各優先度別の起動比率を設定する(S30)。ユーザは、各優先度毎に、起動比率をそれぞれ設定することができる。ユーザから入力された時間tcは、テーブルT32に登録される(S30)。同様に、ユーザから入力された起動比率は、起動比率テーブルT31に登録される(S30)。
S30で設定された目標値(コピー完了時間tc)及び起動比率は、外部マネージャ301から内部マネージャ101に送信される。内部マネージャ101は、受信した起動比率を起動比率管理テーブルT11に登録する(S31)。さらに、内部マネージャ101は、図11で述べるように、コピー完了時間tc等に基づいて、目標値管理テーブルT12を作成する(S31)。
なお、ユーザが各コマンド毎に優先度を設定できる構成としてもよい。さらに、ユーザによる起動比率の設定を廃止してもよい。例えば、各優先度別の起動比率は、固定値としてもよいし、起動比率設定プログラム等によって自動的に設定及び変更する構成としてもよい。
ホスト30がホストコマンドを発行する場合、外部マネージャ301は、コマンド優先度管理テーブルT30を用いることにより、そのホストコマンドに対応する優先度を該ホストコマンドに設定する(S32)。
第1ストレージ10の第1コントローラ100が内部コマンドを発行する場合、内部マネージャ101は、コマンド優先度管理テーブルT10を用いることにより、その内部コマンドに対応する優先度を該内部コマンドに設定する(S33)。
内部マネージャ101は、ホストコマンド及び内部コマンドをそれぞれ受領し、ホストコマンドの優先度及び内部コマンドの優先度に応じて、各コマンドの起動比率を制御する(S34)。
図10を参照する。図10は、起動比率に応じて、コマンドの実行順序をスケジューリングする様子を示す説明図である。内部マネージャ101は、各優先度P0〜Pn毎のキューQ0〜Qnを備えている。内部マネージャ101に受信されたコマンドCMDは、設定されている優先度に応じたキューに格納される。図10中、ホストコマンドをCMD(H)と、内部コマンドをCMD(S)と表示している。
内部マネージャ101は、各キューQ0〜Qnを順番に検索し、キューにコマンドCMDが格納されている場合は、そのコマンドをキューから取り出して起動させる。この際、内部マネージャ101は、各キューQ0〜Qnから起動されるコマンドの数が、各優先度P0〜Pnの起動比率R0〜Rnとなるように、調節する。
図9に戻る。内部マネージャ101は、目標値である目標コピー速度VCSと実測値である実測コピー速度VCAとを比較し、両者が一致するか否かを判定する。目標値と実測値が一致しない場合(S35:NO)、優先度更新処理が実行される(S36)。優先度更新処理では、図13で後述するように、目標値と実測値とが一致するようにして、かつ、起動比率の変化ができるだけ少なくなるようにして、コマンドに対応付けられる優先度を変更する(S36)。
目標値と実測値とが一致する場合(S35:YES)、外部マネージャ301は、ユーザの希望に応じて、モニタ情報をユーザに提供する(S37)。ここで、モニタ情報とは、コマンドの起動比率制御に関する情報であり、例えば、目標値VCS及び実測値VCA等が含まれている。
ユーザは、モニタ情報に基づいて目標値を再設定するか否かを判断する(S38)。ユーザが現在の目標値に満足せず、再設定を希望する場合(S38:NO)、S30に戻る。ユーザが現在の目標値に満足している場合(S38:YES)、S32に戻る。なお、ユーザが目標値の再設定について判断する構成に代えて、予め用意された閾値等に基づいて、目標値を自動的に制御する構成としてもよい。
図11は、目標値管理テーブルT12を作成するための処理を示す。この処理は、図9中のS30内で実行される。ユーザは、コピー完了時間tcを外部マネージャ301に設定する(S50)。外部マネージャ301は、コピー完了時間tcを内部マネージャ101に送信する(S51)。
内部マネージャ101は、コピー完了時間tcを受信すると(S52)、例えば、コピー管理テーブルT13等を参照することにより、コピー対象トラック数LTを検出する(S53)。内部マネージャ101は、コピー対象トラック数をコピー完了時間tcで除算することにより、目標コピー速度VCSを算出する(S54)。内部マネージャ101は、S54で算出された目標コピー速度VCSとS53で検出したコピー対象トラック数LTとを、目標値管理テーブルT12にそれぞれ登録する(S55)。
図12は、各優先度別に起動比率をそれぞれ設定するための処理を示すフローチャートである。この処理は、図9中のS30内で実行される。まず最初に、ユーザは、各優先度毎の起動比率を外部マネージャ301に設定する(S60)。
外部マネージャ301は、ユーザにより設定された起動比率を起動比率管理テーブルT31に登録し(S61)、さらに、その起動比率を内部マネージャ101に送信する(S62)。内部マネージャ101は、外部マネージャ301から受信した起動比率を、起動比率管理テーブルT11に登録する(S63)。
図13及び図14は、図9中にS36で示される、優先度更新処理のフローチャートである。優先度更新処理では、以下に述べるように、目標値と実測値との差に基づいて、ホストコマンドまたは内部コマンドのいずれかの優先度を低下または増加させる。
内部マネージャ101は、目標値管理テーブルT12から目標コピー速度VCS及び実測コピー速度VCAをそれぞれ取得する(S70,S71)。以下、説明の便宜上、目標コピー速度VCSを目標値VCSと、実測コピー速度VCAを実測値VCAと、それぞれ呼ぶ。
次に、内部マネージャ101は、目標値VCSと実測値VCAの大小関係を判定する(S72)。目標値VCSと実測値VCAとが一致する場合(VCS=VCA)、本処理は終了する。目標値VCSが実測値VCAを超えている場合(VCS>VCA)、つまり、ストレージ内部のコピー処理(初期コピーまたはバックアップコピー等)の速度VCAが目標値VCSよりも低い場合は、図14で後述する。
目標値VCSが実測値VCA未満の場合(VCS<VCA)、つまり、実際のコピー速度VCAの方が目標値VCSを超えている場合、内部コマンドの優先度を下げるか、または、ホストコマンドの優先度を上げることが考えられる。
そこで、内部マネージャ101は、ホストコマンドの優先度を上げた場合における、内部コマンドの起動比率RIに対するホストコマンドの起動比率RHuの比Ra(Ra=RHu/RI)を算出する(S73)。
さらに、内部マネージャ101は、内部コマンドの優先度を下げた場合における、内部コマンドの起動比率RIdに対するホストコマンドの起動比率RHの比Rb(Rb=RH/RId)を算出する(S74)。
内部マネージャ101は、S73で求めたRaとS74で求めたRbとを比較し、RaがRbよりも大きいか否かを判定する(S75)。RaがRbよりも大きい場合(S75:YES)、内部マネージャ101は、内部コマンドの優先度を低下させる(S76)。
Ra>Rbが成立する場合とは、ホストコマンドの優先度を上げた場合の変化Raの方が、内部コマンドの優先度を下げる場合の変化Rbよりも大きい場合である。従って、内部マネージャ101は、変動をできるだけ低減すべく、内部コマンドの優先度を低下させる(S76)。これにより、内部コマンドの起動比率RIが低下し、ストレージ10,20間で実行されるコピー処理の速度を相対的に低下させることができる。
RaがRbよりも小さい場合(S75:NO)、内部マネージャ101は、ホストコマンドの優先度を増加させる(S77)。これにより、ホスト30から発行されるホストコマンドの起動比率RHが上昇し、ストレージ10,20間で実行されるコピー処理の速度を相対的に低下させることができる。
図14は、目標値VCSが実測値VCAを超えている場合(VCS>VCA)のフローチャートを示す。ストレージ10,20間のコピー処理の実測値VCAが目標値VCSよりも低い場合、ホストコマンドの優先度を低下させるか、または、内部コマンドの優先度を増加させることにより、対応する。
そこで、内部マネージャ101は、ホストコマンドの優先度を下げた場合における、内部コマンドの起動比率RIに対するホストコマンドの起動比率RHdの比Ra(Ra=RHd/RI)を算出する(S80)。
さらに、内部マネージャ101は、内部コマンドの優先度を上げた場合における、内部コマンドの起動比率RIuに対するホストコマンドの起動比率RHの比Rb(Rb=RH/RIu)を算出する(S81)。
図13で述べたと同様に、内部マネージャ101は、S80で求めたRaとS81で求めたRbとを比較し、RaがRbよりも大きいか否かを判定する(S82)。RaがRbよりも大きい場合(S82:YES)、内部マネージャ101は、ホストコマンドの優先度を低下させる(S83)。
ホストコマンドの優先度を下げる場合の変化Raの方が、内部コマンドの優先度を上げる場合の変化Rbよりも大きい場合であるため、内部マネージャ101は、変動をできるだけ低減すべく、ホストコマンドの優先度を低下させる(S83)。これにより、ホストコマンドの起動比率RHが低下し、ストレージ10,20間で実行されるコピー処理の速度を相対的に高めることができる。
RaがRbよりも小さい場合(S82:NO)、内部マネージャ101は、内部コマンドの優先度を増加させる(S84)。これにより、ストレージ10,20間で実行されるコピー処理の速度を相対的に上昇させることができる。
図15は、ホストコマンドの優先度を変更させる処理のフローチャートである。この処理は、例えば、図13中のS77及び図14中のS83において、ホストコマンドの優先度を変更する場合に実行される。
内部マネージャ101は、優先度の変更対象であるホストコマンドの番号と、優先度を増加または減少させる要求とをそれぞれ取得する(S90)。つまり、内部マネージャ101は、優先度の変更対象となっているホストコマンドを特定するための情報と、そのホストコマンドの優先度を増加させるのか、それとも減少させるのかを特定するための情報とを、それぞれ取得する(S90)。
内部マネージャ101は、S90で取得した情報に基づいて、コマンド優先度管理テーブルT10を更新させる(S91)。内部マネージャ101は、外部マネージャ301にコマンド優先度管理テーブルT30の更新を要求する(S92)。外部マネージャ301は、内部マネージャ101からの要求を受信すると(S93)、コマンド優先度管理テーブルT30を更新する(S94)。
本実施例では、ユーザから入力される設定値は、外部マネージャ301に設定された後で、内部マネージャ101に伝達される。コマンド起動比率の制御が開始された後では、内部マネージャ101がストレージ側の管理テーブルT10を更新した後で、外部マネージャ301に伝達する。
本実施例は、上述のように構成されるため、外部マネージャ301と内部マネージャ101とが連携して動作し、ホストコマンドの起動比率(実行頻度)と内部コマンドの起動比率(実行頻度)とを自動的に調整できる。
この結果、例えば、初期コピー処理やバックアップ処理、あるいはデータマイグレーション処理等のような、バックグラウンドで行われる処理によって、ホストコマンドに関する応答性能が低下するのを抑制することができ、サービス品質の低下を防止して、使い勝手を改善することができる。
本実施例では、ホストコマンドまたは内部コマンドの優先度を増減する場合に、いずれか変化量の少ない方のコマンドの優先度を変更する。つまり、本実施例では、優先度の変更による影響の少ない方のコマンドについて、その優先度を変化させる。従って、起動比率を段階的に変化させることができ、ストレージ10,20の動作の安定を保ちながら、より適切にコマンドの起動比率を調節することができる。
1:第1ストレージ、2:第2ストレージ、3:ホストコンピュータ、4:外部マネージャ、4A:コマンド発行部、4B:優先度設定部、4C:管理テーブル、4D:テーブル設定部、5:アプリケーションプログラム、6:内部マネージャ、6A:起動順序制御部、6B:コマンド実行部、6C:優先度更新部、6D:管理テーブル、6E:優先度設定部、7:バックアップ処理部、7A:コマンド発行部、8A,8B,8C:論理ボリューム、10:第1ストレージ、20:第2ストレージ、30:ホストコンピュータ、31:マイクロプロセッサ、32:メモリ、33:I/O用通信インターフェース、34:管理用通信インターフェース、35:補助記憶装置、40:管理サーバ、100:第1コントローラ、101,101A:内部マネージャ、110:チャネルアダプタ、111:ディスクアダプタ、112:キャッシュメモリ、113:共有メモリ、114:接続制御部、115:サービスプロセッサ、120:記憶装置搭載部、121:ディスクドライブ(PDEV)、122:RAIDグループ(VDEV)、123:論理ボリューム(LDEV)、123V:外部ボリューム、200:第2コントローラ、201,201A:内部マネージャ、221:ディスクドライブ、223:論理ボリューム、301:外部マネージャ。