以下、本発明の実施の形態を、図面を参照して説明する。
図1は、本発明の実施の形態の計算機システムの構成を示すブロック図である。
本実施の形態の計算機システムは、複数のホスト100、一つの管理サーバ110及び一つ以上のストレージシステム130を備える。図1には、二つのホスト100及び二つのストレージシステム130を示すが、本実施の形態の計算機システムは、三つ以上のホスト100及び三つ以上のストレージシステム130を備えてもよい。
各ホスト100及び各ストレージシステム130は、ファイバチャネルスイッチ(FC−SW)120によって接続される。さらに、各ホスト100、管理サーバ110及び各ストレージシステム130は、インターネットプロトコル(IP)ネットワーク150によって接続される。
ホスト100は、相互に接続されたCPU101、メモリ102、アダプタ104及びネットワークインターフェース(I/F)105を備える計算機である。
CPU101は、メモリ102に格納されたソフトウエアを実行するプロセッサである。
メモリ102は、CPU101によって実行されるソフトウエアを格納する。本実施の形態のメモリ102は、少なくとも、オペレーティングシステム(OS)(図示省略)、アプリケーションプログラム(図示省略)及びデバイスリンクマネージャ103を格納する。
アプリケーションプログラムは、所定の機能を実現するために実行されるプログラムであり、必要に応じて、ストレージシステム130に格納されたデータに対するアクセス要求(I/O要求)を発行する。I/O要求とは、具体的には、書き込み要求又は読み出し要求である。
デバイスリンクマネージャ103は、アプリケーションプログラムが発行したアクセス要求を、使用可能なパスに割り当てる処理を実行するソフトウエア(いわゆる交代パス管理ソフトウエア)である。本実施の形態において、「パス」とは、ホスト100から、アクセス要求の対象の論理ボリューム135(後述)に至る、データのアクセス経路である。複数の使用可能なパスがある場合、デバイスリンクマネージャ103は、アクセス負荷が分散するようにパスを選択し、そのパスにI/Oを割り当てる。使用していたパスが、障害の発生等によって使用できなくなった場合、デバイスリンクマネージャ103は、他の使用可能なパスにI/Oを割り当てる。デバイスリンクマネージャ103は、上記のようなパスの選択及び割り当てを実行するプログラム(図示省略)及びそのプログラムが参照する情報(図示省略)等を含む。
アダプタ104は、FC−SW120に接続され、FC−SW120を介してストレージ130と通信するインターフェース(いわゆるホストバスアダプタ(HBA))である。ホスト100は、複数のアダプタ104を備えてもよい。
ネットワークI/F105は、IPネットワーク150に接続され、IPネットワーク150を介して管理サーバ110及びストレージシステム130と通信する。
本実施の形態において、各ホスト100は、ホスト識別子によって識別される。図1に示す「ホスト1」及び「ホスト2」は、それぞれ、ホスト識別子が「1」及び「2」であるホスト100を示す。以下の説明において、ホスト識別子が「1」であるホスト100を単にホスト1、ホスト識別子が「2」であるホスト100を単にホスト2と記載する。
管理サーバ110は、相互に接続されたCPU111、メモリ112及びネットワークI/F114を備える計算機である。
CPU111は、メモリ112に格納されたソフトウエアを実行するプロセッサである。
メモリ112は、CPU111によって実行されるソフトウエアを格納する。本実施の形態のメモリ112は、少なくとも、ストレージマネージャ113を格納する。ストレージマネージャ113は、アクセス負荷を分散するために、アクセス負荷を監視し、パスの追加又は切り替え等を実行するソフトウエアである。ストレージマネージャ113については、後で詳細に説明する(図2等参照)。
ネットワークI/F114は、IPネットワーク150に接続され、IPネットワーク150を介してホスト100及びストレージシステム130と通信する。
ストレージシステム130は、ホスト100が使用するデータを格納する。具体的には、ストレージシステム130は、ホスト100のアプリケーションプログラムによって書き込まれたデータを格納する。ストレージシステム130は、一つ以上のディスクコントローラ131、一つ以上のポート136、ストレージコントローラ137、ネットワークI/F142及びディスクドライブ(図示省略)を備える。
ストレージシステム130は、複数のディスクドライブ(例えば、ハードディスクドライブ)を備えてもよい。これらの複数のディスクドライブがRAID(Redundant Arrays of Inexpensive Disks)を構成してもよい。
ディスクドライブの記憶領域は、論理ボリューム135としてホスト100のOSに認識される。言い換えると、ホスト100のOSは、一つの論理ボリューム135を一つの論理的なディスクドライブとして認識する。このため、ホスト100のアプリケーションプログラムは、いずれかの論理ボリューム135を対象として、アクセス要求を発行する。
ストレージシステム130は、ディスクドライブ上に、任意の数の、任意の容量の論理ボリューム135を設定することができる。一つの論理ボリューム135は、複数のディスクドライブの記憶領域によって構成されてもよい。各論理ボリューム135は、少なくとも一つのディスクコントローラ131に割り当てられる。論理ボリューム135がディスクコントローラ131に割り当てられていることは、そのディスクコントローラ131を経由してその論理ボリューム135に至るパスが設定されていることを意味する。すなわち、そのディスクコントローラ131に接続されているホスト100は、そのディスクコントローラ131を経由して、その論理ボリューム135にアクセスすることができる。
論理ボリューム135をディスクコントローラ131に割り当てる処理とは、ホスト100がそのディスクコントローラ131を経由してその論理ボリューム135にアクセスできることをそのホスト100及びそのホスト100のデバイスリンクマネージャ103に認識させることを意味する。より具体的には、割り当て処理によって、そのディスクコントローラ131とその論理ボリューム135とを対応付ける割り当て情報、すなわち、ホスト100がそのディスクコントローラ131を経由してその論理ボリューム135にアクセスできることを示す情報が、そのディスクコントローラ131のメモリ133に格納される(図示省略)。
これらの割り当て情報が変更された場合、管理サーバ110のホスト・ストレージ接続情報管理テーブル204が更新される。ホスト・ストレージ接続情報管理テーブル204の更新は、管理サーバ110が定期的にストレージシステム130の割り当て情報を参照すること、又は、ストレージシステム130が割り当て情報の変更を管理サーバ110に連絡することによって実現されてもよい。
デバイスリンクマネージャ103は、ホスト100に接続されている全てのディスクコントローラ131に対して、アクセス可能な論理ボリューム135を示す情報を問い合わせることによって、ホスト100が論理ボリューム135にアクセスするために使用することができるディスクコントローラ131(それが複数ある場合は、複数のディスクコントローラ131)を認識する。そして、デバイスリンクマネージャ103は、使用できるディスクコントローラ131を経由するいずれかのパス(すなわち、いずれかの使用可能なパス)にI/Oを割り当てる。
ディスクコントローラ131は、ストレージシステム130をSAN(後述)に接続するための制御装置である。具体的には、ディスクコントローラ131は、ポート136及びFC−SW120を介してホスト100からのアクセス要求を受信する。そして、ディスクコントローラ131は、受信したアクセス要求に従って、そのディスクコントローラ131に割り当てられている論理ボリューム135にデータを書き込み、又は、その論理ボリューム135からデータを読み出す。
図1には三つのディスクコントローラ131を図示するが、これらの構成は同様であるため、二つのディスクコントローラ131の構成については図示を省略する。
本実施の形態のディスクコントローラ131は、相互に接続されたCPU132、メモリ133及びキャッシュメモリ134を備える。
CPU132は、メモリ133に格納されたソフトウエアを実行するプロセッサである。CPU132は、ポート136にも接続される。
メモリ133は、CPU132によって実行されるソフトウエアを格納する。本実施の形態のメモリ133は、少なくとも、受信したアクセス要求に従ってデータの書き込み又は読み出しを実行するプログラム(図示省略)を格納する。
キャッシュメモリ134は、アクセス速度向上のため、論理ボリューム135に書き込まれるデータ又は論理ボリューム135から読み出されたデータを一時的に格納する。ディスクコントローラ131は、高速なアクセスを要求されない場合、キャッシュメモリ134を備えなくてもよい。
ホスト100が論理ボリューム135の特定の領域に対する読み出し要求を発行したとき、キャッシュメモリ134は、その領域から読み出されたデータに加えて、その領域の後に続く領域から読み出されたデータ(すなわち、先読みデータ)を格納してもよい。先読みデータは、まだ読み出し要求の対象になっていないが、これから読み出される可能性がある。特に、論理ボリューム135のデータをバックアップする場合等、データが順次読み出される場合には、先読みデータが読み出される可能性が高い。先読みデータが読み出されるとき、ディスクコントローラ131は、ディスクドライブにアクセスせずに、キャッシュメモリ134に格納された先読みデータをホスト100に応答することによって高速なアクセスを実現する。
ポート136は、FC−SW120に接続されるインターフェースである。ディスクコントローラ131のCPU132は、ポート136及びFC−SW120を介してホスト100と通信することができる。
ストレージコントローラ137は、ストレージシステム130の構成情報を管理する制御装置である。図1には二つのストレージコントローラ137を図示するが、これらの構成は同様であるため、一方のストレージコントローラ137の構成については図示を省略する。
本実施の形態のストレージコントローラ137は、相互に接続されたCPU138及びメモリ139を備える。
CPU138は、メモリ139に格納されたソフトウエアを実行するプロセッサである。CPU138は、ネットワークI/F142にも接続される。
メモリ139は、CPU138によって実行されるソフトウエアを格納する。本実施の形態のメモリ139は、少なくとも、ディスクコントローラ131の性能情報を収集するプログラム(図示省略)、コントローラ性能情報140及びボリューム管理情報141を格納する。
コントローラ性能情報140は、収集されたディスクコントローラ131の性能情報を含む。ディスクコントローラ131の性能情報とは、後述するように、例えばCPU使用率である。
ボリューム管理情報141は、ストレージシステム130内のディスクコントローラ131と論理ボリューム135の構成情報を含む。例えば、ボリューム管理情報141は、ストレージシステム130が備える論理ボリューム135がどのディスクコントローラ131に割り当てられているかを示す割り当て情報を含んでもよい。
ネットワークI/F142は、IPネットワーク150に接続される。ストレージコントローラ137のCPU138は、ネットワークI/F142及びIPネットワーク150を介して管理サーバ110と通信することができる。
本実施の形態において、各ストレージシステム130は、ストレージシステム識別子によって識別される。図1に示す「ストレージシステム1」及び「ストレージシステム2」は、それぞれ、ストレージシステム識別子が「1」及び「2」であるストレージシステム130を示す。以下の説明において、ストレージシステム識別子が「1」及び「2」であるストレージシステム130を、それぞれ、ストレージシステム1及びストレージシステム2と記載する。
本実施の形態において、各ディスクコントローラ131は、ディスクコントローラ識別子によって識別される。図1に示す「ディスクコントローラ1」、「ディスクコントローラ2」及び「ディスクコントローラ3」は、それぞれ、ディスクコントローラ識別子が「1」、「2」及び「3」であるディスクコントローラ131を示す。以下の説明において、ディスクコントローラ識別子が「1」、「2」及び「3」であるディスクコントローラ131を、それぞれ、ディスクコントローラ1、ディスクコントローラ2、及び、ディスクコントローラ3と記載する。
本実施の形態において、各論理ボリューム135は、各ストレージシステム130内で一意の論理ボリューム識別子によって識別される。図1のストレージシステム1は、三つの論理ボリューム135を備える。これらの論理ボリューム135の論理ボリューム識別子は、それぞれ、「1」、「2」及び「3」である。以下の説明において、論理ボリューム識別子が「1」、「2」及び「3」である論理ボリューム135を、それぞれ、VOL1、VOL2及びVOL3と記載する。図1のストレージシステム2は、VOL1及びVOL2なる二つの論理ボリューム135を備える。
FC−SW120は、複数のポート121を備える。各ポートは、ホスト100のアダプタ104又はストレージシステム130のポート136と接続される。FC−SW120は、ホスト100及びストレージシステム130を相互に接続するストレージエリアネットワーク(SAN)を構成する。本実施の形態のSANにおいては、ファイバーチャネルプロトコル(FCプロトコル)が使用されるが、他のプロトコルが使用されてもよい。
図2は、本発明の実施の形態のストレージマネージャ113の説明図である。
本実施の形態のストレージマネージャ113は、切り替えコントローラ201、性能情報管理テーブル202、ボリューム情報管理テーブル203、ホスト・ストレージ接続状態管理テーブル204及びボリュームペア状態管理テーブル205を含む。切り替えコントローラ201は、CPU111によって実行されるプログラムである。一方、ストレージマネージャ113に含まれる各テーブルは、切り替えコントローラ201によって参照される情報を含む。
切り替えコントローラ201は、パスの切り替え及び追加等を実行するプログラムである。切り替えコントローラ201が実行する処理については、後でフローチャートを参照して説明する。
性能情報管理テーブル202は、ストレージシステム130のディスクコントローラ131の性能情報を管理するテーブルである。具体的には、性能情報管理テーブル202には、各ディスクコントローラ131のアクセス負荷に関する情報が登録される。性能情報管理テーブル202については、後で詳細に説明する(図3参照)。
ボリューム情報管理テーブル203は、ストレージシステム130の論理ボリューム135ごとの性能情報を管理するテーブルである。具体的には、ボリューム情報管理テーブル203には、各論理ボリューム135のアクセス量に関する情報が登録される。ボリューム情報管理テーブル203については、後で詳細に説明する(図4参照)。
ホスト・ストレージ接続状態管理テーブル204は、ホスト100及びストレージシステム130の物理的な構成を管理するテーブルである。具体的には、ホスト・ストレージ接続状態管理テーブル204には、ホスト100とストレージシステム130との物理的な接続に関する情報が登録される。ホスト・ストレージ接続状態管理テーブル204については、後で詳細に説明する(図5参照)。
ボリュームペア状態管理テーブル205は、ストレージ130間に構成されるリモートコピーのペア(後述)を管理するテーブルである。具体的には、ボリュームペア状態管理テーブル205には、ペアを構成する論理ボリューム135に関する情報が登録される。ボリュームペア状態管理テーブル205については、後で詳細に説明する(図6参照)。
図3は、本発明の実施の形態の性能情報管理テーブル202の説明図である。
性能情報管理テーブル202において、一つの行が一つのディスクコントローラ131に対応する。
性能情報管理テーブル202は、ストレージ301、ディスクコントローラ302及びCPU使用率303を含む。
ストレージ301には、各ディスクコントローラ131を備えるストレージシステム130を示す情報が登録される。
ディスクコントローラ302には、各ディスクコントローラ131を示す情報が登録される。
CPU使用率303には、各ディスクコントローラ131のCPU132のCPU使用率を示す情報が登録される。
図3の例では、ストレージ301、ディスクコントローラ302及びCPU使用率303として、ストレージシステム1、ディスクコントローラ1及び80%が登録されている(行311)。これは、ストレージシステム1のディスクコントローラ1のCPU132のCPU使用率が80%であることを示す。
同様にして、図3の例では、ストレージシステム1、ディスクコントローラ2及び10%が登録され(行312)、さらに、ストレージシステム2、ディスクコントローラ3及び20%が登録されている(行313)。これらは、それぞれ、ストレージシステム1のディスクコントローラ2のCPU132のCPU使用率が10%であり、ストレージシステム2のディスクコントローラ3のCPU132のCPU使用率が20%であることを示す。
なお、CPU使用率は、各ストレージシステム130のストレージコントローラ137によって測定され、コントローラ性能情報140としてメモリ139に格納される。ストレージマネージャ113は、定期的にコントローラ性能情報140を参照してCPU使用率303を更新してもよい。
本実施の形態では、ディスクコントローラ131の性能情報として、CPU132のCPU使用率を使用する。しかし、ディスクコントローラ131の性能情報として他の指標を使用しても、本発明を実施することができる。使用することができる指標は、例えば、アクセスデータ量(MB/秒)又はアクセス回数(回/秒)である。
図4は、本発明の実施の形態のボリューム情報管理テーブル203の説明図である。
ボリューム情報管理テーブル203において、一つの行が一つのパスに対応する。
ボリューム情報管理テーブル203は、ストレージ401、ディスクコントローラ402、論理ボリューム403及びデータI/O量404を含む。
ストレージ401には、各パスが経由するディスクコントローラ131を備えるストレージシステム130を示す情報が登録される。
ディスクコントローラ402には、各パスが経由するディスクコントローラ131を示す情報が登録される。
論理ボリューム403には、各パスの接続先の論理ボリューム135を示す情報が登録される。
データI/O量404には、各パスにおける単位時間当たりのデータI/O量、すなわち、単位時間当たりに書き込み又は読み出しをされたデータの量を示す情報が登録される。データI/O量404は、CPU使用率303と同様、ストレージコントローラ137によって測定され、ストレージマネージャ113によって更新されてもよい。
図4の例では、ストレージ401、ディスクコントローラ402、論理ボリューム403及びデータI/O量404として、それぞれ、ストレージシステム1、ディスクコントローラ1、VOL1及び500KB(キロバイト)/秒が登録される(行411)。これは、ストレージシステム1のディスクコントローラ1を経由してVOL1に至るパスが設定され、そのパスにおいて1秒間に500KBのデータI/O(すなわち、書き込み又は読み出し)が実行されていることを示す。
同様にして、ストレージシステム1のディスクコントローラ1を経由してVOL2に至るパスが設定され、そのパスにおいて1秒間に300KBのデータI/Oが実行されている(行412)。ストレージシステム1のディスクコントローラ2を経由してVOL3に至るパスが設定され、そのパスにおいて1秒間に100KBのデータI/Oが実行されている(行413)。ストレージシステム2のディスクコントローラ3を経由してVOL1に至るパスが設定され、そのパスにおいて1秒間に100KBのデータI/Oが実行されている(行414)。ストレージシステム2のディスクコントローラ3を経由してVOL2に至るパスが設定され、そのパスにおいて1秒間に100KBのデータI/Oが実行されている(行415)。
図5は、本発明の実施の形態のホスト・ストレージ接続情報管理テーブル204の説明図である。
ホスト・ストレージ接続情報管理テーブル204は、ホスト501、ストレージ502、ディスクコントローラ503及び割り当てボリューム504を含む。
ホスト501には、各ディスクコントローラ131と物理的に接続されているホスト100を示す情報が登録される。
ストレージ502には、各ホスト100と物理的に接続されているディスクコントローラ131を備えるストレージシステム130を示す情報が格納される。
ディスクコントローラ503には、各ホスト100と物理的に接続されているディスクコントローラ131を示す情報が登録される。
割り当てボリューム504には、各ディスクコントローラ131に割り当てられている論理ボリューム135、言い換えると、各ディスクコントローラ131を経由するパスの接続先の論理ボリューム135を示す情報が登録される。
図5の例では、ホスト501、ストレージ502及びディスクコントローラ503として、それぞれ、ホスト1、ストレージシステム1及びディスクコントローラ1が登録される。さらに、これらに対応する割り当てボリューム504として、VOL1及びVOL2が登録される(行511)。これは、ホスト1とストレージシステム1のディスクコントローラ1とが物理的に接続されており、ディスクコントローラ1にVOL1及びVOL2が割り当てられていることを示す。言い換えると、ホスト1は、ディスクコントローラ1を経由して、ストレージシステム1のVOL1及びVOL2にアクセスすることができる。
なお、仮にディスクコントローラ1にいずれの論理ボリューム135も割り当てられていない場合(言い換えると、ディスクコントローラ1を経由するパスが存在しない場合)、割り当てボリューム504は、何も登録されないため、空欄となる。
同様にして、図5の例では、ホスト1とストレージシステム1のディスクコントローラ2とが物理的に接続されており、ディスクコントローラ2にVOL3が割り当てられている(行512)。ホスト1とストレージシステム2のディスクコントローラ3とが物理的に接続されており、ディスクコントローラ3にVOL1及びVOL2が割り当てられている(行513)。
図6は、本発明の実施の形態のボリュームペア状態管理テーブル205の説明図である。
ボリュームペア状態管理テーブル205において、一つの行は、リモートコピーのペアに属する一つの論理ボリューム135に対応する。
リモートコピーとは、論理ボリューム135に格納されたデータを、別のストレージシステム130内の論理ボリューム135にコピーすることによって、これらの二つの論理ボリューム135に同一のデータを格納する技術である。これらの論理ボリューム135を格納する二つのストレージシステム130が地理的に隔離していれば、一方の論理ボリューム135のデータが災害等によって消失した場合にも、計算機システムは、もう一方の論理ボリューム135のデータを使用して業務を継続することができる。
リモートコピーのペアとは、コピー元の論理ボリューム135とコピー先の論理ボリューム135との組を意味する。以下、コピー元の論理ボリューム135を正論理ボリューム、コピー先の論理ボリューム135を副論理ボリュームと記載する。
通常、ホスト100は正論理ボリュームにアクセス要求を発行する。また、データの一貫性を維持するため、ホスト100から副論理ボリュームへのデータの書き込みは禁止される。
ボリュームペア状態管理テーブル205は、ID601、ストレージ602、論理ボリューム603、正/副604及びペアボリュームID605を含む。
ID601には、ペアに属する論理ボリューム135を識別するために与えられた識別子が登録される。
ストレージ602には、ペアに属する論理ボリューム135を格納するストレージシステム130を示す情報が登録される。
論理ボリューム603には、ペアに属する論理ボリューム135を示す情報が登録される。
正/副604には、ペアに属する論理ボリューム135が正論理ボリューム又は副論理ボリュームのいずれであるかを示す情報が登録される。
ペアボリュームID605には、論理ボリューム135が属するペアのもう一方の論理ボリューム135を示す情報が登録される。具体的には、そのもう一方の論理ボリューム135に対応するID601の値が登録される。以下、論理ボリューム135がペアに属する場合、そのペアに属するもう一方の論理ボリューム135をペアボリュームと記載する。言い換えると、正論理ボリュームのペアボリュームは、その正論理ボリュームが属するペアの副論理ボリュームであり、副論理ボリュームのペアボリュームは、その副論理ボリュームが属するペアの正論理ボリュームである。
図6の例では、ID601、ストレージ602、論理ボリューム603、正/副604及びペアボリュームID605として、それぞれ、1、ストレージシステム1、VOL1、正、及び、2が登録される(行611)。これは、ストレージシステム1のVOL1が一つのペアに属し、そのペアにおいてそのVOL1が正論理ボリュームであり、そのVOL1にID601として「1」が与えられており、そのVOL1が属するペアのもう一方の論理ボリューム135に与えられたID601が「2」であることを意味する。
さらに、図6の例では、ID601、ストレージ602、論理ボリューム603、正/副604及びペアボリュームID605として、それぞれ、2、ストレージシステム2、VOL2、副、及び、1が登録される(行612)。これは、ストレージシステム2のVOL2が一つのペアに属し、そのペアにおいてそのVOL2が副論理ボリュームであり、そのVOL2にID601として「2」が与えられており、そのVOL2が属するペアのもう一方の論理ボリューム135に与えられたID601が「1」であることを意味する。
行611及び行612は、結局、ストレージシステム1のVOL1とストレージシステム2のVOL2がペアを形成し、そのペアにおいて、VOL1が正論理ボリューム、VOL2が副論理ボリュームであることを意味する。この場合、ホスト100はVOL1のみにアクセス要求を発行し、VOL1のデータがVOL2にコピーされる。ホスト100からVOL2に対するデータの書き込みは禁止される。
次に、本実施の形態の切り替えコントローラ201が実行する処理について説明する。
なお、既に説明したように、切り替えコントローラ201は、CPU111によって実行されるプログラムである。したがって、以下の説明において切り替えコントローラ201が実行する処理は、実際には、CPU111によって実行される。
最初に、各処理の前提となるディスクコントローラ131への論理ボリューム135の割り当てについて説明する。
図7は、本発明の実施の形態のディスクコントローラ131への論理ボリューム135の割り当て処理の説明図である。
なお、図7は、図1の計算機システムの構成のうち、一つのホスト100及び一つのストレージシステム130のみを示す。図1の構成のうち、割り当て処理の説明に必要ない部分については、図7において図示を省略する。
図7Aは、ディスクコントローラ131に論理ボリューム135が割り当てられる前のストレージシステム130を示す。この場合、ホスト100からVOL1に至るパスが設定されていないため、ホスト100は、ディスクコントローラ1及びディスクコントローラ2のいずれを経由してもVOL1にアクセスすることができない。
図7Bは、ディスクコントローラ131に論理ボリューム135が割り当てられた後のストレージシステム130を示す。図7Bの例では、ディスクコントローラ1及びディスクコントローラ2の両方にVOL1が割り当てられる。この場合、ホスト100からディスクコントローラ1を経由してVOL1に至るパス、及び、ホスト100からディスクコントローラ2を経由してVOL1に至るパスが設定されている。このため、ホスト1は、ディスクコントローラ1及びディスクコントローラ2のいずれを経由してもVOL1にアクセスすることができる。
図7は、VOL1をディスクコントローラ1及びディスクコントローラ2の両方に割り当てる例を示すが、VOL1は、ディスクコントローラ1又はディスクコントローラ2の一方のみに割り当てられてもよい。
図8は、本発明の実施の形態の切り替えコントローラ201が実行する割り当て見直し実行判定処理のフローチャートである。
割り当て見直し実行判定処理は、発生したイベントをチェックして、ディスクコントローラ131への論理ボリューム135の割り当てを見直すか否か(具体的には、後述する割り当て見直し処理を実行するか否か)を判定する処理である。本実施の形態において、割り当てを見直す契機となるイベントは、ストレージシステム130からアラートを受信したこと、又は、前回の見直しから所定の時間が経過したことである。
例えば、ストレージシステム130のストレージコントローラ137が各ディスクコントローラ131におけるCPU使用率を測定し、いずれかのディスクコントローラ131においてCPU使用率が所定の閾値を超えた場合、IPネットワーク150を介して管理サーバ110にアラートを送信してもよい。一方、管理サーバ110は、タイマ(図示省略)を備えてもよい。そのタイマは、割り当てを見直した後の経過時間を測定し、経過時間が所定の閾値を超えたときに、所定の時間が経過したことを切り替えコントローラ201に通知してもよい。
なお、以下の説明において、管理サーバ110がホスト100又はストレージ130に対して指示又はデータ等を送受信する場合、その送受信はネットワークI/F114及びIPネットワーク150を介して実行される。図9以降の処理についても同様である。
切り替えコントローラ201は、最初に、イベントをチェックする(801)。
次に、切り替えコントローラ201は、イベントの種類を判定する(802)。具体的には、切り替えコントローラ201は、イベントがストレージシステム130から送信されたアラートであるか、又は、前回の見直しからの所定の時間の経過であるかを判定する。
ステップ802において、イベントがストレージシステム130からのアラートであると判定された場合、いずれかのディスクコントローラ131においてCPU使用率が所定の閾値を超えている。この場合、そのディスクコントローラ131にアクセス負荷が集中していると考えられる。この場合、アクセス負荷を分散することによって、性能(例えば、書き込み/読み出し要求に対する応答時間)が改善される可能性がある。この場合、切り替えコントローラ201は、全てのストレージシステム130から、性能情報を取得する(803)。具体的には、切り替えコントローラ201は、各ストレージコントローラ137のメモリ139に格納されたコントローラ性能情報140を参照して、少なくとも、各CPU132のCPU使用率を取得する。そして、切り替えコントローラ201は、取得したCPU使用率をCPU使用率303として性能情報管理テーブル202に登録する。
次に、切り替えコントローラ201は、割り当て見直し処理を実行する(806)。割り当て見直し処理については、後で詳細に説明する(図9参照)。
切り替えコントローラ201は、ステップ806において割り当て見直し処理を実行した後、次回のイベントをチェックするため、ステップ801に戻る。
一方、ステップ802において、イベントが所定の時間の経過であると判定された場合、前回割り当て見直し処理が実行された時点でアクセス負荷が適切に分散されていたとしても、その後所定の時間が経過する間に、アクセス負荷に偏りが生じている可能性がある。このため、切り替えコントローラ201は、割り当て見直し処理を実行する必要があるか否かを判定する。
具体的には、切り替えコントローラ201は、全てのストレージシステム130から、性能情報を取得する(804)。ステップ804の処理は、ステップ803の処理と同様である。
次に、切り替えコントローラ201は、性能情報管理テーブル202を参照し、いずれかのディスクコントローラ302に対応するCPU使用率303が所定の閾値を超えているか否かを判定する(805)。
ステップ805において、いずれかのディスクコントローラ302に対応するCPU使用率303が所定の閾値を超えていないと判定された場合、アクセス負荷が適切に分散されているため、割り当て見直し処理を実行する必要がない。この場合、切り替えコントローラ201は、次回のイベントをチェックするため、ステップ801に戻る。
一方、ステップ805において、いずれかのディスクコントローラ302に対応するCPU使用率303が所定の閾値を超えていると判定された場合、そのディスクコントローラ302が示すディスクコントローラ131にアクセス負荷が集中していると考えられる。この場合、アクセス負荷を分散することによって、性能が改善される可能性がある。このため、切り替えコントローラ201は、割り当て見直し処理を実行し(806)、その後、ステップ801に戻る。
図9は、本発明の実施の形態の切り替えコントローラ201が実行する割り当て見直し処理のフローチャートである。
割り当て見直し処理は、割り当て見直し実行判定処理のステップ806において切り替えコントローラ201によって実行される(図8参照)。
切り替えコントローラ201は、最初に、性能情報管理テーブル202を参照して、最もCPU使用率303が高いディスクコントローラ131を検出する(901)。
次に、切り替えコントローラ201は、ホスト・ストレージ接続情報管理テーブル204を参照して、ステップ901において検出されたディスクコントローラ131に割り当てられている論理ボリューム135の一覧表(図示省略)を作成する(902)。
次に、切り替えコントローラ201は、ボリューム情報管理テーブル203を参照して、一覧表に登録された論理ボリューム135を、検出されたディスクコントローラ131に対するデータI/O量404が多い順に並べ替える。
次に、切り替えコントローラ201は、一覧表の先頭の論理ボリューム135を対象として(904)、ボリュームごとの割り当て見直し処理を実行する(905)。ボリュームごとの割り当て見直し処理については、後で詳細に説明する(図10参照)。
次に、切り替えコントローラ201は、ボリュームごとの割り当て見直し処理の戻り値を参照して、論理ボリューム135の割り当てが変更されたか否かを判定する(906)。
ステップ906において、論理ボリューム135の割り当てが変更されていないと判定された場合、一覧表の次の論理ボリューム135を対象として、ボリュームごとの割り当て見直し処理を実行する(907、904及び905)。一覧表の最後の論理ボリューム135を対象としたボリュームごとの割り当て見直し処理が終了した場合、割り当て見直し処理を終了する。
一方、ステップ906において、論理ボリューム135の割り当てが変更されたと判定された場合、切り替えコントローラ201は、割り当てが変更された後の各ディスクコントローラの性能を予測し、予測の結果に基づいて、性能情報管理テーブル202及びボリューム情報管理テーブル203を更新する(ステップ908)。さらに、切り替えコントローラ201は、変更された割り当てに従って、ホスト・ストレージ接続情報テーブル204を更新する。後述するペア切り替え処理が実行された場合、切り替えコントローラ201は、さらに、ボリュームペア状態管理テーブル205も更新する。
次に、切り替えコントローラ201は、更新された性能情報管理テーブル202を参照して、CPU使用率303が所定の閾値を超えているディスクコントローラ131があるか否かを判定する(909)。
ステップ909において、CPU使用率303が所定の閾値を超えているディスクコントローラ131があると判定された場合、アクセス負荷の偏りが解消されていないため、ステップ901に戻り、割り当て見直し処理を再度実行する。
一方、ステップ909において、CPU使用率303が所定の閾値を超えているディスクコントローラ131がないと判定された場合、アクセス負荷の偏りが解消された結果、アクセス負荷が適切に分散されている。この場合、割り当て見直し処理を終了する。
次に、割り当て見直し処理の具体例を説明する。
例えば、性能情報管理テーブル202が図3に示す通りである場合、ステップ901において、CPU使用率303が最も高い「80%」であるディスクコントローラ1が検出される。
次に、ステップ902において、ホスト・ストレージ接続情報管理テーブル204のディスクコントローラ503及び割り当てボリューム504が参照される。そして、ディスクコントローラ1に割り当てられているVOL1及びVOL2からなる一覧表が作成される。
次に、ステップ903において、ボリューム情報管理テーブル203の論理ボリューム403及びデータI/O量404が参照される。そして、データI/O量404が「500KB」であるVOL1が一覧表の先頭に、データI/O量404が「300KB」であるVOL2がVOL1の後に並べられる。
次に、ステップ905において、VOL1を対象としてボリュームごとの割り当て見直し処理が実行される。
例えば、ステップ905において割り当てが変更された結果、ディスクコントローラ1に割り当てられていたVOL1がディスクコントローラ2に割り当てられた場合、ディスクコントローラ1及びディスクコントローラ2の性能が予測される(908)。具体的には、ディスクコントローラ1及びディスクコントローラ2のCPU132のCPU使用率303が予測される。
さらに、ステップ908では、性能情報管理テーブル202及びボリューム情報管理テーブル203等が更新される。
ステップ909では、更新された性能情報管理テーブル202が参照され、CPU使用率303が所定の閾値を超えるか否かが判定される。
図10は、本発明の実施の形態の切り替えコントローラ201が実行するボリュームごとの割り当て見直し処理のフローチャートである。
ボリュームごとの割り当て見直し処理は、割り当て見直し処理のステップ905において切り替えコントローラ201によって実行される(図9参照)。
切り替えコントローラ201は、最初に、切り替え可能ディスクコントローラ検索処理を実行する(1001)。
ディスクコントローラ131の切り替えとは、論理ボリューム135がディスクコントローラ131に割り当てられているとき、その割り当てを解除し、その論理ボリューム135を新たに別のディスクコントローラ131に割り当てることを意味する。例えば、「VOL1をディスクコントローラ2に切り替える」とは、VOL1と他のディスクコントローラ131との割り当てを解除し、VOL1をディスクコントローラ2に新たに割り当てることを意味する。切り替え可能ディスクコントローラ検索処理は、切り替え可能なディスクコントローラ131、すなわち、切り替えによって論理ボリューム135を新たに割り当てることができるディスクコントローラ131を検索する処理である。切り替え可能ディスクコントローラ検索処理については、後で詳細に説明する(図11参照)。
次に、切り替えコントローラ201は、切り替え可能ディスクコントローラ検索処理の戻り値を参照して、切り替え可能なディスクコントローラ131があるか否かを判定する(1002)。
ステップ1002において、切り替え可能なディスクコントローラ131があると判定された場合、切り替えコントローラ201は、ディスクコントローラ切り替え処理を実行して(1004)、ボリュームごとの割り当て見直し処理を終了する。ディスクコントローラ切り替え処理は、論理ボリューム135を、切り替え可能なディスクコントローラ131に切り替える処理である。ディスクコントローラ切り替え処理については、後で詳細に説明する(図14及び図15参照)。
一方、ステップ1002において、切り替え可能なディスクコントローラ131がないと判定された場合、切り替えコントローラ201は、追加可能ディスクコントローラ検索処理を実行する(1003)。
ディスクコントローラ131の追加とは、論理ボリューム135がディスクコントローラ131に割り当てられているとき、その割り当てを維持したままで、その論理ボリューム135をさらに別のディスクコントローラ131に割り当てることを意味する。追加可能ディスクコントローラ検索処理は、追加可能なディスクコントローラ131、すなわち、追加によって論理ボリューム135を割り当てることができるディスクコントローラ131を検索する処理である。追加可能ディスクコントローラ検索処理については、後で詳細に説明する(図12参照)。
次に、切り替えコントローラ201は、追加可能ディスクコントローラ検索処理の戻り値を参照して、追加可能なディスクコントローラ131があるか否かを判定する(1005)。
ステップ1005において、追加可能なディスクコントローラ131があると判定された場合、切り替えコントローラ201は、ディスクコントローラ追加処理を実行して(1007)、ボリュームごとの割り当て見直し処理を終了する。ディスクコントローラ追加処理は、論理ボリューム135を、追加可能なディスクコントローラ131に追加する処理である。ディスクコントローラ追加処理については、後で詳細に説明する(図16及び図17参照)。
一方、ステップ1005において、追加可能なディスクコントローラ131がないと判定された場合、切り替えコントローラ201は、ペア切り替え可能ディスクコントローラ検索処理を実行する(1006)。
ペアの切り替えとは、論理ボリューム135がペアに属しているとき、そのペアの正論理ボリュームを副論理ボリュームに、副論理ボリュームを正論理ボリュームに変更することを意味する。ペア切り替え可能ディスクコントローラ検索処理は、ペア切り替え可能なディスクコントローラ131を検索する処理、すなわち、ペアの切り替えをすることができるペアに属する論理ボリューム135が割り当てられたディスクコントローラ131を検索する処理である。ペア切り替え可能ディスクコントローラ検索処理については、後で詳細に説明する(図13参照)。
次に、切り替えコントローラ201は、ペア切り替え可能ディスクコントローラ検索処理の戻り値を参照して、ペア切り替え可能なディスクコントローラ131があるか否かを判定する(1008)。
ステップ1008において、ペア切り替え可能なディスクコントローラ131があると判定された場合、切り替えコントローラ201は、ペア切り替え処理を実行して(1009)、ボリュームごとの割り当て見直し処理を終了する。ペア切り替え処理については、後で詳細に説明する(図18及び図19参照)。
一方、ステップ1008において、ペア切り替え可能なディスクコントローラ131がないと判定された場合、切り替えコントローラ201は、ボリュームごとの割り当て見直し処理を終了する。この場合、ボリュームごとの割り当て見直し処理の戻り値は、論理ボリューム135の割り当てを変更しなかったことを示す値となる。
一方、ステップ1004、1007又は1009の処理を実行した後でボリュームごとの割り当て見直し処理を終了する場合、戻り値は、論理ボリューム135の割り当てを変更したことを示す値となる。
図11は、本発明の実施の形態の切り替えコントローラ201が実行する切り替え可能ディスクコントローラ検索処理のフローチャートである。
切り替え可能ディスクコントローラ検索処理は、ボリュームごとの割り当て見直し処理のステップ1001において切り替えコントローラ201に呼び出されて実行される(図10参照)。ボリュームごとの割り当て見直し処理は、割り当て見直し処理のステップ905において実行される(図9参照)。ステップ905において処理の対象とされた論理ボリューム135を、図11の説明において、「当該論理ボリューム135」と記載する。
切り替えコントローラ201は、最初に、ホスト・ストレージ接続情報管理テーブル204を参照して、当該論理ボリューム135、及び、当該論理ボリューム135を使用するホスト100のいずれとも接続可能なディスクコントローラ131の一覧表を作成する(1101)。
次に、切り替えコントローラ201は、性能情報管理テーブル202を参照して、作成した一覧表のディスクコントローラ131を、CPU使用率303が低い順に並べ替える(1102)。
次に、切り替えコントローラ201は、作成した一覧表の先頭のディスクコントローラ131を対象として(1103)、当該論理ボリューム135がその対象のディスクコントローラ131に既に割り当てられているか否かを判定する(1104)。切り替えコントローラ201は、ステップ1104の判定の際に、ホスト・ストレージ接続情報管理テーブル204を参照する。この判定の対象のディスクコントローラ131を、図11の説明において、「当該ディスクコントローラ131」と記載する。
ステップ1104において、当該論理ボリューム135が当該ディスクコントローラ131に既に割り当てられていると判定された場合、当該論理ボリューム135をさらに当該ディスクコントローラ131に割り当てることができない。言い換えると、当該論理ボリューム135を当該ディスクコントローラ131に切り替えることができない。この場合、切り替えコントローラ201は、一覧表における次のディスクコントローラ131を対象として、ステップ1104の判定を実行する(1103から1105)。
一覧表における最後のディスクコントローラ131を対象としたステップ1104の判定が終了した場合、切り替えコントローラ201は、切り替え可能なディスクコントローラ131がないことを、切り替え可能ディスクコントローラ検索処理の呼び出し元に返信して(1106)、切り替え可能ディスクコントローラ検索処理を終了する。言い換えると、この場合、切り替え可能ディスクコントローラ検索処理の戻り値は、切り替え可能なディスクコントローラ131がないことを示す値となる。
一方、ステップ1104において、当該論理ボリューム135が当該ディスクコントローラ131にまだ割り当てられていないと判定された場合、当該論理ボリューム135を当該ディスクコントローラ131に切り替えることができる。ただし、その結果、アクセス負荷が分散されない場合は、切り替えることができない。このため、切り替えコントローラ201は、当該論理ボリューム135を当該ディスクコントローラ131に切り替えた場合のCPU使用率303を予測する(1107)。この予測は、図9のステップ908と同様にして実行されてもよい。
次に、切り替えコントローラ201は、当該ディスクコントローラ131について予測されたCPU使用率303が所定の閾値を超えているか否かを判定する(1108)。
ステップ1108において、CPU使用率303の予測値が所定の閾値を超えていると判定された場合、当該論理ボリューム135を当該ディスクコントローラ131に切り替えても、アクセス負荷が分散されないと予想される。したがって、当該論理ボリューム135を当該ディスクコントローラ131に切り替えることができない。
この時点で、ディスクコントローラ131の一覧表には、まだステップ1104の判定の対象とされていないディスクコントローラ131が残っている場合がある。しかし、ステップ1102において、一覧表のディスクコントローラ131がCPU使用率303の低い順に並べられている。このため、ステップ1108においてアクセス負荷が分散されない場合には、当該論理ボリューム135を残りのディスクコントローラ131に切り替えても、アクセス負荷が分散されないと予想される。このため、切り替えコントローラ201は、切り替え可能なディスクコントローラ131がないことを、切り替え可能ディスクコントローラ検索処理の呼び出し元に返信して(1106)、処理を終了する。
一方、ステップ1108において、CPU使用率303の予測値が所定の閾値を超えていないと判定された場合、当該論理ボリューム135を当該ディスクコントローラ131に切り替えることによって、アクセス負荷が分散されると予想される。このため、切り替えコントローラ201は、当該ディスクコントローラ131が切り替え可能なディスクコントローラであることを切り替え可能ディスクコントローラ検索処理の呼び出し元に返信して(1109)、切り替え可能ディスクコントローラ検索処理を終了する。言い換えると、この場合、切り替え可能ディスクコントローラ検索処理の戻り値は、当該ディスクコントローラ131が切り替え可能なディスクコントローラであることを示す値となる。
この場合、予測されたCPU使用率303は、図9のステップ908において、性能情報管理テーブル202に登録される。
ここで、切り替え可能ディスクコントローラ検索処理の具体例を説明する。
図9のステップ905において、ストレージシステム1のVOL1が処理の対象である場合、そのVOL1が当該論理ボリューム135である。
この場合、切り替えコントローラ201は、ホスト・ストレージ接続情報テーブル204を参照する(1101)。その結果、ストレージシステム1のVOL1はホスト1によって使用されている。また、ストレージシステム1は、ディスクコントローラ1及びディスクコントローラ2を備える。ディスクコントローラ2は、ホスト1と物理的に接続されている。このため、切り替えコントローラ201は、ホスト1及びVOL1に接続可能なディスクコントローラ1及びディスクコントローラ2からなる一覧表を作成する。
次に、切り替えコントローラ201は、性能情報管理テーブル202を参照する(1102)。ディスクコントローラ2のCPU使用率303「10%」がディスクコントローラ1のCPU使用率303「80%」より低いため、ディスクコントローラ2が一覧表の先頭となる。
ディスクコントローラ2はVOL1に割り当てられていないため(1104)、切り替えコントローラ201は、VOL1をディスクコントローラ2に切り替えた場合のディスクコントローラ2のCPU使用率303を予測する(1107)。
予測されたCPU使用率303が所定の閾値を超える場合(1108)、切り替えコントローラ201は、切り替え可能なディスクコントローラ131がないことを返信する(1106)。
一方、予測されたCPU使用率303が所定の閾値を超えない場合(1108)、切り替えコントローラ201は、VOL1をディスクコントローラ2に切り替えることができることを返信する(1109)。この場合、予測されたCPU使用率303は、図9のステップ908において、性能情報管理テーブル202の行312に登録される。
図12は、本発明の実施の形態の切り替えコントローラ201が実行する追加可能ディスクコントローラ検索処理のフローチャートである。
追加可能ディスクコントローラ検索処理は、ボリュームごとの割り当て見直し処理のステップ1003において切り替えコントローラ201に呼び出されて実行される(図10参照)。
図12に示すように、追加可能ディスクコントローラ検索処理では、ステップ1201からステップ1209までの処理が実行される。これらの処理は、それぞれ、図11のステップ1101からステップ1109までの処理と同様である。
ただし、ステップ1207において、切り替えコントローラ201は、当該論理ボリューム135を当該ディスクコントローラ131に追加した場合のCPU使用率303を予測する。この予測は、ステップ1107と同様に実行される。
ステップ1206において、切り替えコントローラ201は、追加可能なディスクコントローラ131がないことを呼び出し元に返信する。
ステップ1206において、切り替えコントローラ201は、当該ディスクコントローラ131が追加可能なディスクコントローラであることを呼び出し元に返信する。
その他のステップで実行される処理は、図11に示す処理と同じであるため、説明を省略する。
図13は、本発明の実施の形態の切り替えコントローラ201が実行するペア切り替え可能ディスクコントローラ検索処理のフローチャートである。
ペア切り替え可能ディスクコントローラ検索処理は、ボリュームごとの割り当て見直し処理のステップ1006において切り替えコントローラ201に呼び出されて実行される(図10参照)。
図13の説明において、図11と同様、処理の対象の論理ボリューム135を当該論理ボリューム135と記載する。
切り替えコントローラ201は、最初に、当該論理ボリューム135にペアボリュームが存在するか否か(言い換えると、当該論理ボリューム135がリモートコピーのペアに属するか否か)を判定する(1301)。
ステップ1301において、ペアボリュームが存在しないと判定された場合、当該論理ボリューム135がペアに属さないため、当該論理ボリューム135についてペアの切り替えを実行することができない。このため、切り替えコントローラ201は、ペア切り替え可能なディスクコントローラ131がないことをペア切り替え可能ディスクコントローラ検索処理の呼び出し元に返信して(1310)、処理を終了する。言い換えると、この場合、ペア切り替え可能ディスクコントローラ検索処理の戻り値は、ペア切り替え可能なディスクコントローラ131がないことを示す値となる。
一方、ステップ1301において、ペアボリュームが存在すると判定された場合、当該論理ボリューム135はペアに属する。この場合、切り替えコントローラ201は、当該論理ボリューム135を使用しているホスト100と、当該論理ボリューム135のペアボリュームとを接続可能なディスクコントローラ131が存在するか否かを判定する(1302)。具体的には、切り替えコントローラ201は、ホスト・ストレージ接続情報管理テーブル204を参照して、ペアボリュームが格納されているストレージシステム130のいずれかのディスクコントローラ131が、当該論理ボリューム135を使用するホスト100と物理的に接続されているか否かを判定する。
ステップ1302において、該当するディスクコントローラ131が存在しないと判定された場合、当該論理ボリューム135を使用するホスト100は、当該論理ボリューム135のペアボリュームにアクセスすることができないため、ペアの切り替えを実行することができない。このため、切り替えコントローラ201は、ステップ1310を実行して処理を終了する。
一方、ステップ1302において、該当するディスクコントローラ131が存在すると判定された場合、当該論理ボリューム135を使用するホスト100は、当該論理ボリューム135のペアボリュームにアクセスすることができる。この場合、切り替えコントローラ201は、当該論理ボリューム135を使用しているホスト100と、当該論理ボリューム135のペアボリュームとを接続可能なディスクコントローラ131の一覧表(図示省略)を作成する(1303)。この一覧表を、図13の説明において、「ペア切り替え候補ディスクコントローラ一覧表」と記載する。なお、図13には、ペア切り替え候補ディスクコントローラ一覧表を「一覧表A」と表示する。
次に、切り替えコントローラ201は、ペア切り替え候補ディスクコントローラ一覧表に含まれるディスクコントローラ131を、CPU使用率303が低い順に並べ替える(1304)。
次に、切り替えコントローラ201は、ペア切り替え候補ディスクコントローラ一覧表の先頭のディスクコントローラ131から最後のディスクコントローラ131までを対象として、順に、ステップ1305からステップ1309までのループを実行する。
最初に、切り替えコントローラ201は、ペア切り替え候補ディスクコントローラ一覧表の先頭のディスクコントローラ131を、ペア切り替え対象ディスクコントローラ一覧表(図示省略)に登録する(1306)。なお、図13には、ペア切り替え対象ディスクコントローラ一覧表を「一覧表B」と表示する。
次に、切り替えコントローラ201は、ペア切り替え対象ディスクコントローラ一覧表に登録されたディスクコントローラ131にペアディスクを割り当てた場合のそのディスクコントローラ131のCPU使用率を予測する(1307)。ペア切り替え対象ディスクコントローラ一覧表に複数のディスクコントローラ131が登録されている場合、それらのディスクコントローラ131のCPU使用率を予測する。この予測は、図9のステップ908と同様に実行されてもよい。
次に、切り替えコントローラ201は、ペア切り替え対象ディスクコントローラ一覧表に登録されたディスクコントローラ131の中に、予測されたCPU使用率が所定の閾値を超えるものがあるか否かを判定する(1308)。
ステップ1308において、予測されたCPU使用率が所定の閾値を超えるディスクコントローラ131があると判定された場合、ペアの切り替えによってアクセス負荷が分散されない。この場合、切り替えコントローラ201は、ペア切り替え候補ディスクコントローラ一覧表に登録された次のディスクコントローラ131をペア切り替え対象ディスクコントローラ一覧表に追加して(1306)、ステップ1307及び1308を実行する。
一方、ステップ1308において、予測されたCPU使用率が所定の閾値を超えるディスクコントローラ131がないと判定された場合、ペアの切り替えによってアクセス負荷が分散される。この場合、切り替えコントローラ201は、ペア切り替え対象ディスクコントローラ一覧表に登録されたディスクコントローラ131をペア切り替え可能なディスクコントローラ131として呼び出し元に返信して(1311)、処理を終了する。言い換えると、この場合、ペア切り替え可能ディスクコントローラ検索処理の戻り値は、ペア切り替え対象ディスクコントローラ一覧表に登録されたディスクコントローラ131がペア切り替え可能なディスクコントローラ131であることを示す値である。
この場合、予測されたCPU使用率303は、図9のステップ908において、性能情報管理テーブル202に登録される。
ここで、ペア切り替え可能ディスクコントローラ検索処理の具体例を説明する。
図6に示すように、ストレージシステム1のVOL1とストレージシステム2のVOL2がペアを形成している場合に、VOL1を当該論理ボリューム135としてペア切り替え可能ディスクコントローラ検索処理を実行する例を説明する。なお、この例の初期状態において、ストレージシステム2のVOL2は、ディスクコントローラ3に割り当てられていない。
ストレージシステム1のVOL1のペアボリュームであるストレージシステム2のVOL2が存在する(1301)。すなわち、VOL1はペアに属している。
ストレージシステム1のVOL1は、ホスト1によって使用されている。一方、ストレージシステム2に含まれるディスクコントローラ3は、ホスト1と物理的に接続されている(図5参照)(1302)。すなわち、ディスクコントローラ3は、ホスト1及びペアボリュームであるVOL2のいずれとも接続することができる。
この例において、ペア切り替え候補ディスクコントローラ一覧表には、ディスクコントローラ3のみが含まれる(1303から1306)。
次に、切り替えコントローラ201は、VOL2をディスクコントローラ3に割り当てた場合のディスクコントローラ3のCPU使用率を予測する(1307)。その結果、予測されたCPU使用率が所定の閾値を超えない場合(1308)、切り替えコントローラ201は、ディスクコントローラ3がペア切り替え可能なディスクコントローラ131であることを呼び出し元に返信して(1311)、処理を終了する。この場合、予測されたCPU使用率303は、図9のステップ908において、性能情報管理テーブル202の行313に登録される。
図14は、本発明の実施の形態の切り替えコントローラ201が実行するディスクコントローラ切り替え処理のフローチャートである。
ディスクコントローラ切り替え処理は、ボリュームごとの割り当て見直し処理のステップ1004において切り替えコントローラ201によって実行される(図10参照)。
図14の説明において、図11と同様、処理の対象の論理ボリューム135を当該論理ボリューム135と記載する。また、ディスクコントローラ切り替え処理が開始された時点で当該論理ボリューム135が割り当てられているディスクコントローラ131を切り替え元ディスクコントローラ131と記載する。さらに、その時点の切り替え可能なディスクコントローラ131を切り替え先ディスクコントローラ131と記載する。
切り替えコントローラ201は、最初に、当該論理ボリューム131を、切り替え先ディスクコントローラ131に割り当てる(1401)。このとき、切り替えコントローラ201は、当該論理ボリューム131と切り替え先ディスクコントローラ131とを対応付ける割り当て情報を格納する指示をストレージシステム130に送信してもよい。さらに、この割り当てに従って、図9のステップ908においてホスト・ストレージ接続情報管理テーブル204が更新される。
次に、切り替えコントローラ201は、切り替え元ディスクコントローラ131のキャッシュメモリ134に格納されたデータのうち、当該論理ボリューム135に関するデータを、切り替え先ディスクコントローラ131のキャッシュメモリ134にコピーする(1402)。具体的には、切り替えコントローラ201は、そのデータをコピーする指示をストレージシステム130に送信する。
当該論理ボリューム135に関するデータとは、当該論理ボリューム135から読み出されるデータ又は当該論理ボリューム135にこれから書き込まれるデータの少なくとも一方である。例えば、切り替え元のキャッシュメモリ134に、当該論理ボリューム135から読み出されたデータ(例えば、先読みデータ)が格納されている場合、そのデータを切り替え先のキャッシュメモリ134にコピーすることによって、切り替えが実行された後も高速なアクセスを実現することができる。
なお、コピーが終了した後、コピーされたデータは切り替え元のキャッシュメモリ134から削除されてもよい。
次に、切り替えコントローラ201は、当該論理ボリューム135と切り替え元ディスクコントローラ131との割り当てを解除する(1403)。このとき、切り替えコントローラ201は、当該論理ボリューム131と切り替え元ディスクコントローラ131とを対応付ける割り当て情報を削除する指示をストレージシステム130に送信してもよい。さらに、この割り当ての解除に従って、図9のステップ908においてホスト・ストレージ接続情報管理テーブル204が更新される。
ホスト100のデバイスリンクマネージャ103は、更新された割り当て情報を参照して、切り替え先ディスクコントローラ131を経由して当該論理ボリューム135にアクセスできることを認識する。
以上で、ディスクコントローラ切り替え処理が終了する。
図15は、本発明の実施の形態のディスクコントローラ切り替え処理の具体例の説明図である。
図15は、例として、ディスクコントローラ1に割り当てられていたVOL1をディスクコントローラ2に切り替える処理を示す。したがって、図15の例では、VOL1が当該論理ボリューム135、ディスクコントローラ1が切り替え元ディスクコントローラ131、ディスクコントローラ2が切り替え先ディスクコントローラ131に相当する。
図15(A)は、図14のディスクコントローラ切り替え処理が開始された時点のストレージシステム130を示す。この時点で、VOL1は、ディスクコントローラ1に割り当てられ、ディスクコントローラ2には割り当てられていない。
その後、VOL1がディスクコントローラ2に割り当てられる(図14のステップ1401)。次に、ディスクコントローラ1のキャッシュメモリ134に格納されたデータがディスクコントローラ2のキャッシュメモリ134にコピーされる(図14のステップ1402)。次に、VOL1とディスクコントローラ1との割り当てが解除される(図14のステップ1403)。その結果、図15(B)に示すように、VOL1は、ディスクコントローラ2のみに割り当てられる。
上記の切り替えの結果、ホスト1からディスクコントローラ2を経由してVOL1に至るパスが追加され、ホスト1からディスクコントローラ1を経由してVOL1に至るパスが削除される。
この場合、図9のステップ908において、ホスト・ストレージ接続情報管理テーブル204の行511の割り当てボリューム504からVOL1が削除される。さらに、行512の割り当てボリューム504にVOL1が追加される。
図16は、本発明の実施の形態の切り替えコントローラ201が実行するディスクコントローラ追加処理のフローチャートである。
ディスクコントローラ追加処理は、ボリュームごとの割り当て見直し処理のステップ1007において切り替えコントローラ201によって実行される(図10参照)。
図16の説明において、図11と同様、処理の対象の論理ボリューム135を当該論理ボリューム135と記載する。また、ディスクコントローラ追加処理が開始された時点の追加可能なディスクコントローラ131を追加先ディスクコントローラ131と記載する。
切り替えコントローラ201は、当該論理ボリューム135を、追加先ディスクコントローラ131に割り当てる(1601)。具体的には、切り替えコントローラ201は、当該論理ボリューム135と追加先ディスクコントローラ131とを対応付ける割り当て情報を格納する指示をストレージシステム130に送信してもよい。さらに、この割り当てに従って、図9のステップ908においてホスト・ストレージ接続情報管理テーブル204が更新される。
ホスト100のデバイスリンクマネージャ103は、更新された割り当て情報を参照して、追加元ディスクコントローラ131及び追加先ディスクコントローラ131のいずれを経由しても当該論理ボリューム135にアクセスできることを認識する。
以上で、ディスクコントローラ追加処理が終了する。
図17は、本発明の実施の形態のディスクコントローラ追加処理の具体例の説明図である。
図17は、例として、ディスクコントローラ1に割り当てられていたVOL1をディスクコントローラ2に追加する処理を示す。したがって、図17の例では、VOL1が当該論理ボリューム135、ディスクコントローラ2が追加先ディスクコントローラ131に相当する。
図17(A)は、図16のディスクコントローラ追加処理が開始された時点のストレージシステム130を示す。この時点で、VOL1は、ディスクコントローラ1に割り当てられ、ディスクコントローラ2には割り当てられていない。
その後、VOL1がディスクコントローラ2に割り当てられる(図16のステップ1601)。その結果、図17(B)に示すように、VOL1は、ディスクコントローラ1及びディスクコントローラ2の両方に割り当てられる。
上記の追加の結果、ホスト1からディスクコントローラ2を経由してVOL1に至るパスが追加される。
この場合、図9のステップ908において、ホスト・ストレージ接続情報管理テーブル204の行512の割り当てボリューム504にVOL1が追加される。
図18は、本発明の実施の形態の切り替えコントローラ201が実行するペア切り替え処理のフローチャートである。
ペア切り替え処理は、ボリュームごとの割り当て見直し処理のステップ1009において切り替えコントローラ201によって実行される(図10参照)。
最初に、リモートコピーのペアのモードについて説明する。
リモートコピーのペアの属性には、同期モード及び非同期モードの二つがある。
ペアが同期モードである場合、ホスト100が正論理ボリュームへのデータの書き込み要求を発行すると、まず、正論理ボリュームに対象のデータが書き込まれる。次に、副論理ボリュームに対象のデータが転送され、書き込まれる。副論理ボリュームへの書き込みが正常に終了すると、ストレージシステム130は、正論理ボリュームにデータが正常に書き込まれたことを示す応答をホスト100に送信する。
一方、ペアが非同期モードである場合、ホスト100が正論理ボリュームへのデータの書き込み要求を発行すると、まず、正論理ボリュームに対象のデータが書き込まれる。その後、副論理ボリュームに対象のデータが転送され、書き込まれる。この転送は、正論理ボリュームにデータが書き込まれた直後に実行されてもよいし、正論理ボリュームと拭く論理ボリュームとを結合するデータの経路が混雑していないとき(例えば、夜間)に実行されてもよい。副論理ボリュームへの書き込みが終了したか否かに関らず、ストレージシステム130は、正論理ボリュームにデータが正常に書き込まれたことを示す応答をホスト100に送信する。
なお、各ストレージシステム130は、ペア情報(図示省略)を格納してもよい。ペア情報は、例えば、メモリ133又はメモリ139に格納されてもよい。ペア情報には、例えば、そのストレージシステム130が格納する論理ボリューム135がペアに属するか否かを示す情報、ペアに属する論理ボリューム135が正論理ボリューム又は副論理ボリュームのいずれであるかを示す情報、ペアに属する論理ボリューム135のペアボリュームを識別する情報、及び、ペアのモードを示す情報を含んでもよい。
次に、ペア切り替え処理の手順について説明する。
図18の説明において、処理の対象の論理ボリューム135が属するペアを当該ペアと記載する。さらに、処理の対象の論理ボリューム135をペア切り替え元ボリュームと記載する。
切り替えコントローラ201は、最初に、当該ペアが非同期モードであるか否かを判定する(1801)。
ステップ1801において、当該ペアが非同期モードでない(すなわち、同期モードである)と判定された場合、当該ペアの正論理ボリューム及び副論理ボリュームのデータが同期している。この場合、処理はステップ1804に進む。
一方、ステップ1801において、当該ペアが非同期モードであると判定された場合、当該ペアの正論理ボリューム及び副論理ボリュームのデータが同期していない場合がある。この場合、ペア切り替えを実行する前にデータを同期する必要がある。このため、切り替えコントローラ201は、当該ペアを同期モードに変更する(1802)。このとき、切り替えコントローラ201は、ペア情報として登録されたペアのモードを更新する指示をストレージシステム130に送信してもよい。
次に、切り替えコントローラ201は、当該ペアが同期状態(すなわち、正論理ボリュームと副論理ボリュームに同一のデータが格納された状態)になるのを待つ(1803)。
切り替えコントローラ201は、当該ペアが同期状態になると、ホスト100のデバイスリンクマネージャ103に、ペア構成情報を送信する(1804)。ここで、ペア構成情報は、当該ペアの正論理ボリューム及び副論理ボリュームを識別する情報を含む。
次に、切り替えコントローラ201は、ペアボリューム(すなわち、当該ペアの副論理ボリューム)を、ペア切り替え可能ディスクコントローラ検索処理のステップ1311(図13参照)において返信されたペア切り替え可能なディスクコントローラ131に割り当てる(1805)。複数のペア切り替え可能なディスクコントローラ131がある場合、切り替えコントローラ201は、それらの複数のペア切り替え可能なディスクコントローラ131にペアボリュームを割り当てる。
次に、切り替えコントローラ201は、ペア切り替え元ボリュームへのアクセスがなくなるのを待つ(1806)。
次に、切り替えコントローラ201は、当該ペアを切り替える(1807)。すなわち、当該ペアの正論理ボリュームを副論理ボリュームに変更し、副論理ボリュームを正論理ボリュームに変更する。このとき、切り替えコントローラ201は、当該ペアの切り替えに従ってペア情報を更新する指示をストレージシステム130に送信してもよい。
次に、切り替えコントローラ201は、ペア切り替え元ボリュームとディスクコントローラ131との全ての割り当てを解除する(1808)。
以上で、ペア切り替え処理が終了する。
図19は、本発明の実施の形態のペア切り替え処理の具体例の説明図である。
図19は、例として、ストレージシステム1のVOL1とストレージシステム2のVOL2がペアを形成している場合においてペア切り替え処理を実行する処理を示す。したがって、図19の例では、VOL1及びVOL2からなるペアが当該ペア、VOL1がペア切り替え元論理ボリューム135、VOL2がペアボリュームに相当する。また、ディスクコントローラ3が、図13のステップ1311におけるペア切り替え可能なディスクコントローラ131に相当する。
なお、図19において、矢印で結合された論理ボリューム135がペアを構成する。矢印の元に位置する論理ボリューム135が正論理ボリューム、矢印の先に位置する論理ボリューム135が副論理ボリュームである。
図19(A)は、図18のペア切り替え処理が開始された時点のストレージシステム130を示す。この時点で、VOL1(正論理ボリューム)はディスクコントローラ1に割り当てられ、VOL2(副論理ボリューム)は、ディスクコントローラ3に割り当てられていない。
その後、VOL2がディスクコントローラ3に割り当てられる(図18のステップ1805)。さらに、VOL1が副論理ボリューム、VOL2が正論理ボリュームに変更される。その結果、図19(B)に示すように、VOL2がディスクコントローラ3に割り当てられた正論理ボリュームとなる。
上記のペア切り替えの結果、ホスト1からディスクコントローラ3を経由してVOL2に至るパスが追加され、ホスト1からディスクコントローラ1を経由してVOL1に至るパスが削除される。
この場合、図19(A)の時点で、ホスト・ストレージ接続情報管理テーブル204の行513の割り当てボリューム504にVOL2が登録されていない。その後、図9のステップ908において、ホスト・ストレージ接続情報管理テーブル204の行511の割り当てボリューム504からVOL1が削除される。さらに、行513の割り当てボリューム504にVOL2が追加される。さらに、ボリュームペア状態管理テーブル205の行611の正/副604が副に、行612の正/副604が正に更新される。
次に、ホスト100のデバイスリンクマネージャ103が実行する処理について説明する。
なお、既に説明したように、デバイスリンクマネージャ103は、CPU101によって実行されるプログラム及びそのプログラムが参照する情報を含む。したがって、以下の説明においてデバイスリンクマネージャ103が実行する処理は、実際には、CPU101によって実行される。
図20は、本発明の実施の形態のデバイスリンクマネージャ103がディスクコントローラ131の切り替え時に実行する処理のフローチャートである。
図20に示す処理は、切り替えコントローラ201がディスクコントローラ切り替え処理(図14及び図15参照)を実行したときに、デバイスリンクマネージャ103が実行する処理である。
デバイスリンクマネージャ103は、最初に、切り替え先のディスクコントローラ131に割り当てられた切り替え対象の論理ボリューム135を新規デバイスとして検出する(2001)。このとき、デバイスリンクマネージャ103は、ストレージシステム130に格納された割り当て情報(図示省略)を参照してもよい。図15の例では、ディスクコントローラ2が切り替え先のディスクコントローラ131、VOL1が切り替え対象の論理ボリューム135である。
ホスト100の上位のプログラム(例えば、アプリケーションプログラム)は、デバイスを論理的な記憶装置として認識する。デバイスは、例えば、いわゆる論理ユニット(LU)である。
次に、デバイスリンクマネージャ103は、切り替え元のディスクコントローラ131と切り替え対象の論理ボリューム135との組み合わせによって認識されるデバイスと、切り替え先のディスクコントローラ131と切り替え対象の論理ボリューム135との組み合わせによって認識されるデバイスとが同一であることを上位のプログラム(例えば、アプリケーションプログラム)に認識させる(2002)。図15の例では、ディスクコントローラ1が切り替え元のディスクコントローラ131である。
次に、デバイスリンクマネージャ103は、切り替え元のディスクコントローラ131と切り替え対象の論理ボリューム135との割り当ての解除を検出する(2003)。この解除は、図14のステップ1403において実行されるものである。
次に、デバイスリンクマネージャ103は、切り替え元のディスクコントローラ131と切り替え対象の論理ボリューム135との組み合わせによって認識されるデバイスを削除する(2004)。
以上で処理を終了する。
図21は、本発明の実施の形態のデバイスリンクマネージャ103がディスクコントローラ131の追加時に実行する処理のフローチャートである。
図21に示す処理は、切り替えコントローラ201がディスクコントローラ追加処理(図16及び図17参照)を実行したときに、デバイスリンクマネージャ103が実行する処理である。
なお、図21の説明において、ディスクコントローラ131の追加が実行される前に論理ボリューム135が割り当てられていたディスクコントローラ131(図17の例では、ディスクコントローラ1)を追加元のディスクコントローラと記載する。
デバイスリンクマネージャ103は、最初に、追加先のディスクコントローラ131に割り当てられた追加対象の論理ボリューム135を新規デバイスとして検出する(2101)。図17の例では、ディスクコントローラ2が追加先のディスクコントローラ131、VOL1が追加対象の論理ボリューム135である。
次に、デバイスリンクマネージャ103は、追加先のディスクコントローラ131と追加対象の論理ボリューム135との組み合わせによって認識されるデバイスと、追加元のディスクコントローラ131と追加対象の論理ボリューム135との組み合わせによって認識されるデバイスとが同一であることを上位のプログラム(例えば、アプリケーションプログラム)に認識させる(2102)。
以上で処理を終了する。
図22は、本発明の実施の形態のデバイスリンクマネージャ103がペア切り替え時に実行する処理のフローチャートである。
図22に示す処理は、切り替えコントローラ201がペア切り替え処理(図18及び図19参照)を実行したときに、デバイスリンクマネージャ103が実行する処理である。
なお、図22の説明において、切り替え対象のペアを当該ペア、切り替えられる前の当該ペアの正論理ボリュームをペア切り替え対象ボリューム、ペア切り替え対象ボリュームが割り当てられていたディスクコントローラ131をペア切り替え元ディスクコントローラ131、切り替えられる前の当該ペアの副論理ボリュームをペアボリューム、ペアボリュームが割り当てられるディスクコントローラ131をペア切り替え先ディスクコントローラ131と記載する。図19の例において、VOL1がペア切り替え対象ボリューム、ディスクコントローラ1がペア切り替え元ディスクコントローラ131、VOL2がペアボリューム、ディスクコントローラ3がペア切り替え先ディスクコントローラ131である。
デバイスリンクマネージャ103は、最初に、ストレージマネージャ113の切り替えコントローラ201から、当該ペアに関するペア構成情報を受信する(2201)。この構成情報は、図18のステップ1804において送信されたものである。
次に、デバイスリンクマネージャ103は、ペア切り替え先ディスクコントローラ131に割り当てられたペアボリュームを新規デバイスとして検出する(2202)。ここで、ペア切り替え先のディスクコントローラ131とは、図18のステップ1805におけるペア切り替え可能なディスクコントローラ131である。また、ペアボリュームとは、図18のステップ1805におけるペアボリュームである。
次に、デバイスリンクマネージャ103は、ペア切り替え対象ボリューム及びペア切り替え元ディスクコントローラ131の組み合わせによって認識されるデバイスと、ペアボリューム及びペア切り替え先ディスクコントローラ131の組み合わせによって認識されるデバイスとが同一であることを上位のプログラム(例えば、アプリケーションプログラム)に認識させる(2203)。
次に、デバイスリンクマネージャ103は、ペア切り替え元ディスクコントローラ131とペア切り替え対象ボリュームとの割り当ての解除を検出する(2204)。この解除は、図18のステップ1808において実行されるものである。
次に、デバイスリンクマネージャ103は、ペア切り替え元のディスクコントローラ131とペア切り替え対象ボリュームとの組み合わせによって認識されるデバイスを削除する(2205)。
以上で処理を終了する。
以上の本発明の実施の形態において、ストレージマネージャ113は、IPネットワーク150に接続された管理サーバ110に格納され、管理サーバ110のCPU111によって実行される。しかし、ストレージマネージャ113は、FC−SW120に格納され、FC−SW120のCPU(図示省略)によって実行されてもよい。この場合において、ストレージマネージャ113がホスト100又はストレージシステム130に対して指示又はデータ等を送受信する場合、その送受信は、SANを経由して(すなわち、インバンドで)実行される。
あるいは、ストレージマネージャ113は、一つのストレージシステム130に格納され、CPU132又はCPU138によって実行されてもよい。この場合も、データ等はインバンドで送受信される。
あるいは、ストレージマネージャ113は、全てのストレージシステム130に格納され、CPU132又はCPU138によって実行されてもよい。この場合、各ストレージシステム130は、そのストレージシステム130についての情報のみを管理し、その情報をSANを経由して相互に通信することによって、その情報を共有してもよい。この場合も、データ等はインバンドで送受信される。
以上の本発明の実施の形態によれば、ストレージマネージャ113は、各ディスクコントローラ131のアクセス負荷を監視し、アクセス負荷が集中している(すなわち、アクセス負荷が適切に分散されていない)と判定した場合、論理ボリューム135のディスクコントローラ131に対する割り当てを変更する。ここで、割り当ての変更とは、ディスクコントローラ131の切り替え又は追加である。あるいは、ストレージマネージャ113は、論理ボリューム135が属するペアを切り替える。その結果、ホスト100から論理ボリューム135に至る新たなパスが設定され、あるいは、設定されていたパスが削除される。ホスト100のデバイスリンクマネージャ103が、新たなパスにアクセスを割り当てることによって、ホスト100によるアクセス負荷が計算機システム全体に適切に分散される。