説明

リモートスキャンをサポートする計算機

【課題】リモートスキャンのコマンドを発行するのに最適なホスト計算機を選択できる確率を高める。
【解決手段】計算機が、ホスト計算機とローカルストレージとを接続するパスに関する第一の接続情報を取得し、且つ、ストレージシステム同士を接続するパスに関する第二の接続情報を取得する。計算機は、それらの接続情報を基に経路管理情報を生成する。経路管理情報は、複数の経路に関する情報である。一つの経路は、直列に接続された二以上のノードとノード間のパスとで構成されている。二以上のノードのうちのスタートノードが、ホスト計算機であり、その二以上のノードうちの他のノードが、ストレージシステムである。計算機は、経路管理情報を基に、リモートスキャンを実行するホスト計算機として、スキャン対象のリモートストレージをエンドノードとする複数の経路のうちの最適な経路のスタートノードであるホスト計算機を選択する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、直列に接続された複数のストレージシステムのいずれかからスキャン対象の論理ボリュームに関する情報を取得する技術に関する。
【背景技術】
【0002】
直列に接続された複数のストレージシステムのいずれかからスキャン対象の論理ボリュームに関する情報を取得する技術として、例えば、特許文献1及び2に開示の技術がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−146801号公報
【特許文献2】米国特許出願公開第2006/0112245号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
以下の説明では、少なくとも一つのホスト計算機に接続されているストレージシステムを「ローカルストレージ」と呼び、いずれのホスト計算機にも接続されていないストレージシステムを「リモートストレージ」と呼ぶ。また、ホスト計算機とストレージシステムを「ノード」と総称することがある。
【0005】
この種の技術では、一般的に、複数のストレージシステムには、二以上のローカルストレージと一以上のリモートストレージが含まれている。スキャン対象の論理ボリュームに関する情報(以下、スキャン結果情報)を取得するためのスキャンコマンドは、いずれかのホスト計算機から発行される。
【0006】
スキャン対象のストレージシステムが、そのホスト計算機に接続されているローカルストレージであれば、そのローカルストレージからそのホスト計算機にスキャン結果情報が送信される。
【0007】
一方、スキャン対象のストレージシステムが、いずれかのリモートストレージであれば、スキャンコマンドは、そのスキャンコマンドを受けたローカルストレージから、一以上のストレージシステムを順次に経由して、スキャン対象のリモートストレージに届く。そして、そのリモートストレージから、スキャン結果情報が送信される。送信されたスキャン結果情報は、上記一以上のストレージシステムを逆の順序に経由し、ローカルストレージを通じて、スキャンコマンドの発行元のホスト計算機に届く。以下、リモートストレージから上記スキャン結果情報を取得することを「リモートスキャン」と言う。
【0008】
各ローカルストレージが、直接的に或いは少なくとも一つのストレージシステムを介して、スキャン対象のリモートストレージに接続されているケースがある。このケースでは、二以上のホスト計算機のいずれからリモートスキャンのコマンドを発行しても、スキャン対象のリモートストレージからスキャン結果情報を取得することができる。
【0009】
このケースでは、どのホスト計算機からリモートスキャンのコマンドを発行するかを、ユーザが選択する。ユーザは、通常、ノード間の接続構成(すなわち、どのホスト計算機がどのストレージシステムに接続されているかや、どのストレージシステムがどのストレージシステムに接続されているか)を知らない。このため、リモートスキャンのコマンドを発行するのに最適なホスト計算機を選択することが難しい。
【0010】
そこで、本発明の目的は、リモートスキャンのコマンドを発行するのに最適なホスト計算機を選択できる確率を高めることにある。
【課題を解決するための手段】
【0011】
複数のホスト計算機が接続されている通信ネットワークに接続されている計算機が、経路調査処理と、スキャン処理とを実行する。その計算機は、複数のホスト計算機のうちのいずれかのであっても良い。また、その計算機は、一つの計算機であっても良いし複数の計算機で構成されていても良い。
【0012】
前述した経路調査処理は、
(a1)ホスト計算機とローカルストレージとを接続するパスであるホストパスに関するホスト/ストレージ接続情報を取得する処理と、
(a2)ストレージシステムとストレージシステムとを接続するパスであるストレージパスに関するストレージ/ストレージ接続情報を各ホスト計算機を通じて取得する処理と、
(a3)ホスト/ストレージ接続情報とストレージ/ストレージ接続情報とを基に経路管理情報を生成し、生成した経路管理情報を保存する処理と
を含む。経路管理情報は、複数の経路に関する情報である。一つの経路は、直列に接続された二以上のノードとノード間のパスとで構成されている。二以上のノードのうちのスタートノードが、いずれかのホスト計算機であり、その二以上のノードうちの他のノードが、いずれかのストレージシステムである。
【0013】
前述したスキャン処理は、
(b1)一以上のストレージカスケードを構成する複数のストレージシステムのうちのスキャン対象のストレージシステムをエンドノードとする複数の経路を経路管理情報から特定する処理と、
(b2)スキャン対象のストレージシステムがいずれかのリモートストレージであることが上記(b1)の処理においてわかった場合に、経路管理情報を基に、リモートスキャンを実行するホスト計算機として、上記複数の経路のうちの最適な経路のスタートノードであるホスト計算機を選択する処理と
を含む。計算機は、スキャン処理において、上記(b2)で選択されたホスト計算機にリモートスキャンを命じても良い。
【0014】
上記(b2)において、計算機は、最適な経路のスタートノードであるホスト計算機を表す情報を表示することなくそのホスト計算機を選択しても良いし、その情報を表示し、ユーザからそのホスト計算機の指定を受け付けたことに応答して、そのホスト計算機を選択しても良い。
【図面の簡単な説明】
【0015】
【図1】図1は、本発明の一実施形態に係る計算機システムの概要を示す。
【図2】図2は、本発明の一実施形態に係る計算機システムの構成を示す。
【図3】図3Aは、ストレージパステーブル242を示す。図3Bは、ホストパステーブル210を示す。
【図4】図4Aは、ホストパス管理テーブル214を示す。図4Bは、ストレージパス管理テーブル215を示す。図4Cは、ストレージテーブル216を示す。
【図5】図5Aは、配列(W1)212を示す。図5Bは、配列(W2)213を示す。
【図6】図6は、経路テーブル217を示す。
【図7】図7は、ホスト追加処理のフローチャートである。
【図8】図8は、構成変更処理のフローチャートである。
【図9】図9は、ホスト削除処理のフローチャートである。
【図10】図10は、ストレージパステーブル収集処理のフローチャートを示す。
【図11】図11は、配列作成処理のフローチャートである。
【図12】図12は、スキャン処理のフローチャートの一部である。
【図13】図13は、スキャン処理のフローチャートの残りである。
【図14】図14は、距離/重み計算処理のフローチャートの一部である。
【図15】図15は、距離/重み計算処理のフローチャートの残りである。
【図16】図16は、複数のストレージカスケードを含んだ計算機システムの一例の概要を示す。
【図17】図17は、ストレージパスの説明図である。
【図18】図18は、経路の重みの算出方法の一例の説明図である。
【図19】図19は、直列に接続された複数のストレージシステムの並びの変形例を示す。
【発明を実施するための形態】
【0016】
図1は、本発明の一実施形態に係る計算機システムの概要を示す。
【0017】
2つのホスト計算機111がある。以下、それら2つのホスト計算機111を、それぞれ、「ホスト1」及び「ホスト2」と称する。また、それらを特に区別しない場合には「ホスト」と総称することがある。
【0018】
ホスト1及び2に、管理サーバ101が接続されている。ただし、管理サーバ101の機能がホスト1及び2のいずれかに設けられている場合には、管理サーバ101は必ずしも無くても良い。
【0019】
1つのストレージカスケードがある。そのストレージカスケードは、直列に接続された4つのストレージシステム121で構成されている。以下、それら4つのストレージシステムを、それぞれ、「ストレージ1」、「ストレージ2」、「ストレージ3」及び「ストレージ4」と称する。また、それらを特に区別しない場合には「ストレージ」と総称することがある。また、ホストとストレージを「ノード」と総称することがある。
【0020】
ストレージ1〜4のうち、ストレージ1にホスト1がホストパスP31で直結されており、ストレージ4にホスト2がホストパスP32で直結されている。このため、ストレージ1及び4が、それぞれ、ローカルストレージであり、ストレージ2及び3が、それぞれ、リモートストレージである。なお、本実施形態において、「直結されている」とは、いずれのノード(ホスト又はストレージ)を介することなく接続されていることを意味する。また、「ホストパス」とは、ホストとストレージとを接続するパスである。
【0021】
ストレージ同士を接続するパスであるストレージパスの向きが予め定義されている。図1によれば、ストレージ間毎に、ストレージ1からストレージ4への方向(第一の方向)のパスである第一のストレージパスP11、P12又はP13と、ストレージ4からストレージ1への方向(第二の方向)のパスである第二のストレージパスP23、P22又はP21とが予め定義されている。スキャンコマンドは、ストレージパスの向きに沿って転送される。スキャンコマンドに限らず、他種のコマンドも、ストレージパスの向きに沿って転送される。たとえば、ホスト1が、ストレージ2内の論ボリュームを指定したI/Oコマンド(ライトコマンド又はリードコマンド)を送信した場合、そのI/Oコマンドは、ストレージ1及び第一のストレージパス(P11)を介して、ストレージ2に転送される。
【0022】
各ホストは、そのホストとローカルストレージとを接続するホストパスに関するホスト/ストレージ接続情報を保持している。例えば、ホスト1が保持するホスト/ストレージ接続情報は、ホスト1に直結されているストレージ1を表す情報を含んでいる。ホスト/ストレージ接続情報は、具体的には、例えば、後述するホストパステーブル210である(図2、図3B参照)。
【0023】
各ストレージは、ストレージ同士を接続するストレージパスに関するストレージ/ストレージ接続情報を保持している。例えば、ストレージ2が保持するストレージ/ストレージ接続情報は、ストレージ2に直結されているストレージ1及び3を表す情報を含んでいる。ストレージ/ストレージ接続情報は、具体的には、例えば、後述するストレージパステーブル242である(図2、図3A参照)。
【0024】
本実施形態では、管理サーバ101が、ホスト/ストレージ接続情報及びストレージ/ストレージ接続情報を取得し、それらの情報を基に、経路管理情報を生成する。経路管理情報が、存在する全ての経路に関する情報である。従って、どのホストがどのストレージに接続されていて、どのストレージがどのストレージに接続されているかを把握することができる。なお、一つの経路は、直列に接続された二以上のノードとノード間のパスとで構成されており、その二以上のノードのうちのスタートノードが、いずれかのホストであり、その二以上のノードうちの他のノードが、いずれかのストレージである。例えば、ストレージ3をエンドノードとする経路として、2つの経路がある。1つ目の経路は、第1の向きの経路、すなわち、ホスト1、ホストパスP31、ストレージ1、第一のストレージパスP11、ストレージ2及び第一のストレージパスP12を含んだ経路である。2つ目の経路は、第2の向きの経路、すなわち、ホスト2、ホストパスP32、ストレージ4及び第二のストレージパスP23を含んだ経路である。
【0025】
管理サーバ101は、各ホストを通じて全てのストレージからストレージ/ストレージ情報を取得する。その際、第一の方向と第二の方向の両方の方向に沿ってストレージ/ストレージ情報が取得される。具体的には、例えば、管理サーバ101は、ホスト1を通じてストレージ1からストレージ/ストレージ情報を取得し、次に、その情報から特定されるストレージ2からホスト1及びストレージ1を通じてストレージ/ストレージ情報を取得し、次に、その情報から特定されるストレージ3からホスト1、ストレージ1及びストレージ2を通じてストレージ/ストレージ情報を収集し、最後に、その情報から特定されるストレージ4からホスト1、ストレージ1、ストレージ2及びストレージ3を通じてストレージ/ストレージ情報を取得する。同様の方法で、管理サーバ101は、ホスト2を通じてストレージ4からストレージ/ストレージ情報を取得し、その後、ストレージ3、ストレージ2及びストレージ1の順で、ホスト2を通じて、ストレージ/ストレージ情報を取得する。
【0026】
経路管理情報は、例えば、後述の経路テーブル217である(図2、図6参照)。管理サーバ101は、経路管理情報を基に、スキャン対象のリモートストレージをエンドノードとする複数の経路のうちの最適な経路を特定し、最適な経路のスタートノードのホストを選択する。そして、管理サーバ101は、そのホストにリモートスキャン(スキャン対象のリモートストレージからスキャン対象の論理ボリュームに関する情報を取得すること)を実行させる。例えば、スキャン対象のリモートストレージがストレージ3の場合、ストレージ3をエンドノードとする経路は前述した2つの経路があるが、その2つの経路のうち、第2の向きの経路の距離の方が第1の向きの経路の距離よりも短い。このため、管理サーバ101は、第2の向きの経路のスタートノードであるホスト2を選択し、ホスト2にリモートスキャンを実行させる。
【0027】
なお、「経路の距離」とは、ここでは、スタートノードからエンドノードに至るまでにノード間をホップすることになる数(ホップ数)である。ホップ数が多ければ距離が長いということであり、ホップ数が少なければ距離が短いということである。ホップ数は、スタートノードとエンドノードとの間に存在するノード(以下、中間ノード)の数が少なければ少なくなり、中間ノードの数が多くなれば多くなる。ホップ数は、中間ノードの数+1である。
【0028】
図1に示した構成例ではあり得ないが、別の構成例では、スキャン対象のリモートストレージをエンドノードとする複数の経路に、距離が同じ経路が二つ以上含まれていることがあり得る。この場合、管理サーバ101は、それら二以上の経路のうち、負荷が最小の経路を特定し、負荷が最小の経路のスタートノードのホストを選択する。経路毎の負荷は、後述するように、単位時間(例えば1秒間)当たりの回線帯域及びデータ量を基に算出される。
【0029】
さらに、負荷が最小の経路が二つ以上存在する場合には、管理サーバ101は、二以上の負荷最小経路に対応した二以上のホストのうち、負荷が最小のホストを選択する。ホストの負荷は、ホストのリソースの動作状態を基に特定される。リソースの動作状態としては、例えば、CPUクロックサイクル時間及びメモリ使用率などを採用することができるが、本実施形態では、CPUクロックサイクル時間が採用される。
【0030】
本実施形態では、二以上の負荷最小経路がある場合、ホストの負荷に基づいてホストが選択されるが、それに代えて又は加えて、他のノードの負荷(例えばローカルストレージの負荷)も考慮されても良い。例えば、ホストとそのホストに直結されているローカルノードとのセット(ホスト/ローカルストレージセット)毎に、負荷が特定され、最も負荷の小さいホスト/ローカルストレージセットに属するホストが選択されても良い。
【0031】
また、本実施形態では、経路の距離、経路の負荷、及び、ノードの負荷のうち、経路の距離が最優先され、次に、経路の負荷が優先されるが、優先順位はそれに限らなくても良い(たとえば、経路の負荷が最優先されても良い)。或いは、それら三つの要素(経路の距離、経路の負荷、及び、ノードの負荷)のうちの少なくとも二つが常に参酌されても良い。具体的には、スキャン対象のリモートストレージをエンドノードとする複数の経路について、下記の三つの要素:
(X1)経路の距離の差;
(X2)経路の負荷の差;
(X3)ノード(例えばホスト)の負荷の差、
のうちの少なくとも二つの要素が常に参酌されても良い。たとえば、第一の経路の方が第二の経路より短いが、それらの距離の差が所定値未満であって、第一の経路の負荷の方が第二の負荷よりも所定値以上に大きい場合には、第二の経路が選択されても良い。
【0032】
さて、リモートスキャンの実行が命じられたホストは、リモートスキャンのコマンドを発行する。そのリモートスキャンコマンドに応答して、スキャン対象のリモートストレージから、スキャン対象の論理ボリュームに関するスキャン結果情報を受ける。管理サーバ101は、スキャン対象のリモートストレージをエンドノードとする全ての経路のスタートノードのホスト(但し、そのリモートスキャンコマンドの発行元のホストを除く)を、経路管理情報を基に特定する。そして、管理サーバ101は、特定されたホストに、スキャン結果情報を送信する。例えば、図1に示した構成例によれば、いずれのストレージがスキャン対象となっても、ホスト1又は2のうちのいずれかにスキャン結果情報が送信されることになる。別の構成例、例えば、図16に示した構成例において、スキャン対象のストレージ12にホスト11からリモートスキャンコマンドが送信された場合、管理サーバ101は、ホスト12にスキャン結果情報を送信するが、他のホスト13にはその情報を送信しない。なぜなら、ストレージ12をエンドノードとする経路はホスト1以外ではホスト2のみであるからである。なお、「スキャン結果情報を送信する」とは、ストレージから取得されたスキャン結果情報それ自体を送信するのであっても良いし、そのスキャン結果情報を基に更新されたシステム構成情報(どのストレージシステムにどの論理ボリュームが存在するかを表す情報、例えば後述の構成ファイル209(図2参照))を送信するのであっても良い。なお、スキャン結果情報を他のホストに送信する理由は、或るホストが使用不可能になった場合に、他のホストにもスキャン結果情報を送信しておかないと、他のホストで業務を継続することができないことにある(つまりディザスタリカバリを考慮したことにある)。
【0033】
以上が、本実施形態の概要である。以下、本実施形態を詳細に説明する。
【0034】
図2は、本発明の一実施形態に係る計算機システムの構成を示す。
【0035】
ホスト1及び2と管理サーバ101は、IP(Internet Protocol)ネットワーク115に接続されている。ストレージ1〜4が、SAN(Storage Area Network)225に接続されている。IPネットワーク115及びSAN225のうちの少なくとも1つが他種のネットワークであっても良い。また、ホスト1及び2、管理サーバ101及びストレージ1〜4が共通のネットワークに接続されていても良い。例えば、ホスト1及び2がSAN225に接続されても良い。
【0036】
ホスト1及び2について、ホスト1を代表的に例に採り説明する。
【0037】
ホスト1は、IF202と、記憶資源と、それらに接続されたCPU201とを有する。記憶資源は、例えば、メモリ203とディスク207である。
【0038】
IF202は、IPネットワーク115を介した通信を行うためのネットワークインターフェイスである。
【0039】
メモリ203は、CPU201に実行されるコンピュータプログラム、例えば、オペレーティングシステム(図示せず)、AP(アプリケーションプログラム)204及びレプリケーション管理ソフト206を記憶する。
【0040】
ディスク207は、ディスク型の記憶装置、例えばハードディスクである。ディスク207は、構成ファイル209及びホストパステーブル210を記憶する。
【0041】
管理サーバ101は、IF302と、記憶資源と、それらに接続されたCPU301とを有する。記憶資源は、例えば、メモリ303とディスク307である。
【0042】
IF302は、IPネットワーク115を介した通信を行うためのネットワークインターフェイスである。
【0043】
メモリ303は、CPU301に実行されるコンピュータプログラム、例えば、オペレーティングシステム(図示せず)、及び統合レプリケーション管理ソフト211を記憶する。また、メモリ303は、配列(W1)212と、配列(W2)213とを記憶する。
【0044】
ディスク307は、ディスク型の記憶装置、例えばハードディスクである。ディスク307は、ホストパス管理テーブル214、ストレージパス管理テーブル215、ストレージテーブル216、経路テーブル217及び構成ファイル209を記憶する。構成ファイル209は、ホスト1及び2が有する構成ファイル209と同じである。構成ファイル209は、スキャン結果情報を基に作成又は更新されるファイルであり、例えば、どのストレージがどの論理ボリュームを有するかを表す情報が記述されている。
【0045】
ストレージ1〜4について、ストレージ1を代表的に例に採り説明する。
【0046】
ストレージ1は、コントローラ(以下、CTL)241と、複数の論理ボリューム(以下、VOL)とを有する。
【0047】
CTL241は、複数のポート、CPU及びメモリを有する。CTL241は、ホストから直接或いは他のストレージを介して受信したI/Oコマンドで指定されているVOLにアクセスする。CTL241内のメモリは、ストレージパステーブル242を記憶する。
【0048】
各VOLは、仮想的なVOLと実体的なVOLのいずれかである。実体的なVOLは、RAID(Redundant Array of Independent (or Inexpensive) Disks)グループを基に形成されている。RAIDグループは、所定のRAIDレベルでデータを記憶する。RAIDグループは、複数の物理記憶デバイス(例えばハードディスク或いはフラッシュメモリ)で構成されている。
【0049】
複数のVOLは、ホストVOLと、コマンドデバイス(図2では「CD」略記)とを含む。
【0050】
ホストVOLは、ホストからのI/Oコマンドで指定され得るVOLである。
【0051】
コマンドデバイスは、コマンド制御用のVOLである。コマンドデバイスには、種々のコマンド、例えば、そのコマンドデバイスを有するストレージ内の他のVOLが指定されたコマンドや、他のストレージに対するコマンドが格納される。本実施形態では、一つのストレージに、第1の方向(ストレージ1からストレージ4への向き)用のコマンドデバイスと、第2の方向(ストレージ4からストレージ1への向き)用のコマンドデバイスとが設けられている。図2の例で言えば、ストレージ1〜4において、第1の方向用のコマンドデバイスは、コマンドデバイス1〜4であり、第2の方向用のコマンドデバイスは、コマンドデバイス5〜8である。
【0052】
各ストレージにおいて、コマンドデバイスとコマンドデバイスとの間の物理パス及び論理パスが設定済みである。
【0053】
「論理パス」とは、図17に示すように、1又は複数の物理パス1701上に仮想的に確立される通信路1702のことである。1つの論理パスは最大8つの物理パスを有することができる。「物理パス」は、回線と同義語である。物理パスは、送信側ストレージ内のCU(Control Unit)に関連付けられたポート(イニシエータポート)から受信側ストレージ内のCUに関連付けられたポート(ターゲットポート)へのパスである(それらのポート間は例えばファイバチャネルケーブルで接続されている)。「CU」は、VOLに対応付けられている要素であり、CUに対応付けられているVOLは、複数の論理記憶デバイスの集合である。
【0054】
コマンドデバイス間の論理パスは、コマンドデバイス専用の論理パス、又は、コピー用の論理パスである。コマンドデバイス間の通信は単方向のため、2つのストレージ間で両方向の通信をするために、コマンドデバイスと論理パスがそれぞれ2つ設定されている。図2において、論理パス及びその向きは、コマンドデバイス間に示されている矢印及びその向きである。
【0055】
本実施形態では、コマンドデバイス間の物理パス(回線)の帯域及び単位時間当りのデータ量を基に、ストレージパス(論理パス)の負荷が決定される。もし、1つの論理パスが複数の物理パスを有する場合には、ストレージパスの負荷の算出には、それら複数の物理パスのうちの少なくとも1つの物理パスの帯域及び単位時間当りのデータ量が考慮される。例えば、それら複数の物理パスの帯域及びデータ量の平均値が用いられても良いし、データ量÷帯域の値が最も小さい物理パス(つまり負荷の最も小さい物理パス)の帯域及びデータ量が用いられても良い。
【0056】
ホストが有するレプリケーション管理ソフト206は、下記の機能:
(1)コピー操作(VOLペアの作成や、VOLペアペアの状態変更を行う機能);
(2)コピーグループ操作(複数のVOLペアをグループ化し、グループ単位で操作を実行する機能);
(3)ボリュームスキャン(ストレージからVOLに関する情報を取得する機能);
(4)リモートストレージ制御(リモートストレージを制御(操作)する機能);
(5)論理パス制御(ストレージパスを確立・削除する機能);
を有する。
【0057】
ボリュームスキャンは、例えば、コピーグループ定義のために必要となる。スキャン結果情報は、構成ファイル209に格納される。構成ファイル209に格納されたVOL情報(どのストレージがどのVOLを有するか)を基に、VOLペアやVOLペアグループが作成される。ボリュームスキャンとしては、ローカルスキャンとリモートスキャンの2種類がある。
【0058】
ローカルスキャンは、スキャン対象がローカルストレージの場合のボリュームスキャンである。つまり、ローカルストレージからスキャン結果情報が取得される。
【0059】
リモートスキャンは、スキャン対象がリモートストレージの場合のボリュームスキャンである。リモートスキャンのためには、リモートスキャンコマンドの転送のために、前述したストレージパスの設定が必要である。リモートスキャンの操作のために、ユーザは、例えば、リモートストレージのシリアル番号、スキャンするVOLの範囲(例えば、VOL番号の範囲)、及びルートリストを入力する。ルートリストとは、リモートスキャンコマンドの転送順路であり、どのストレージをどの順番で経由するかを表す。例えば、14001→14002→14003というルートリスト(シリアル番号のリスト)は、ストレージ1→ストレージ2→ストレージ3という転送順路を意味する。このため、そのルートリストを含んだリモートスキャンコマンドは、ローカルストレージ1、リモートストレージ2を経由して、リモートストレージ3に届く。具体的には、そのリモートスキャンコマンドは、以下の順で処理される。
【0060】
ローカルストレージ1内のCTL1が、ホスト1からリモートスキャンコマンドを受信し、そのリモートスキャンコマンドをコマンドデバイス1に格納する。CTL1は、そのリモートスキャンコマンド内のルートリストに従い、そのリモートスキャンコマンドを、コマンドデバイス1からストレージパスP11を経由してリモートストレージ2に転送する。リモートストレージ2内のCTL2が、ストレージパスP11経由でリモートスキャンコマンドを受信し、そのコマンドをコマンドデバイス2に格納する。CTL2は、そのリモートスキャンコマンド内のルートリストに従い、そのリモートスキャンコマンドを、コマンドデバイス2からストレージパスP12を経由してリモートストレージ3に転送する。リモートストレージ3内のCTL3が、ストレージパスP12経由でリモートスキャンコマンドを受信し、そのコマンドをコマンドデバイス3に格納する。
【0061】
CTL3は、コマンドデバイス3内のリモートスキャンコマンドを参照し、そのコマンドで指定されているVOL範囲に属するVOLに関する情報を取得し、その情報を含んだスキャン結果情報(ボリューム情報)を送信する。そのスキャン結果情報は、リモートスキャンコマンドの転送順序とは逆の順序でストレージを経由してホスト1に到達する。具体的には、例えば、スキャン結果情報は、ストレージパスP22、ストレージ2、ストレージパスP21及びローカルストレージ1を経由して、ホスト1に届く。ホスト1内のレプリケーション管理ソフト206は、そのスキャン結果情報を構成ファイル209に格納する。また、そのレプリケーション管理ソフト206は、スキャン結果情報(例えば、更新後の構成ファイル209)を、管理サーバ101に送信する。管理サーバ101内の統合レプリケーション管理ソフト211が、そのスキャン結果情報を、ホスト2に送信する。ホスト2内のレプリケーション管理ソフト206は、そのスキャン結果情報を保存する(例えば、構成ファイル209を作成、更新又は保存する)。
【0062】
さて、以下、ストレージ、ホスト及び管理サーバが有するテーブルを詳細に説明する。
【0063】
図3Aは、ストレージが有するストレージパステーブル242を示す。
【0064】
ストレージパステーブル242は、ストレージパスに関する情報が記述されているテーブルである。このテーブル242には、このテーブル242を有するストレージを送信側ストレージとしたストレージパスに関する情報が記述される。図3Aに示すテーブル242は、ストレージカスケードの一端であるストレージ1のテーブル242の例である。このため、1つのストレージパスについてしか記述されていないが、ストレージ2及び3のようにストレージカスケードの端に無いストレージのテーブル242には、第1の方向と第2の方向の両方の方向のストレージパスについての情報が記述される。
【0065】
テーブル242は、一つのストレージパスにつき、下記の情報要素:
(1)送信側ストレージ番号(送信側ストレージのシリアル番号);
(2)送信側CU番号(送信側ストレージのCUの番号);
(3)イニシエータポート番号;
(4)受信側ストレージ番号(受信側ストレージのシリアル番号);
(5)受信側CU番号(受信側ストレージのCU番号);
(6)ターゲットポート番号;
(7)回線帯域(ストレージパスが有する物理パスの帯域);
(8)データ量(ストレージパスが有する物理パスを流れる1秒間当りのデータ量);
(9)状態(ストレージパスの状態、例えば、正常、障害など)
を有する。もし、1つのストレージパスが複数の物理パスを有する場合、例えば、上記情報要素(3)、(6)、(7)、(8)及び(9)は、物理パス毎に存在する。
【0066】
図3Bは、ホストが有するホストパステーブル210を示す。
【0067】
ホストパステーブル210は、ホストパスに関する情報が記述されているテーブルである。このテーブル210は、下記の情報要素:
(1)ホスト名(このテーブル210を有するホストの名称);
(2)直結ストレージ番号(そのホストに直結されているローカルストレージのシリアル番号);
(3)回線帯域(ホストパスの帯域);
(4)データ量(ホストパスを流れる1秒間当りのデータ量);
(5)CPUサイクル時間(そのホストが有するCPUのサイクル時間);
(6)状態(ホストパスの状態、例えば、正常、障害など);
を有する。
図4Aは、管理サーバ101が有するホストパス管理テーブル214を示す。
【0068】
ホストパス管理テーブル214は、検出された全てのホストパスに関する情報が記述される。このテーブル214は、一つのホストパスにつき、下記の情報要素:
(1)ノードID(ホストのID);
(2)ホスト名(ホストの名称);
(3)直結ストレージ番号(そのホストに直結されているローカルストレージのシリアル番号);
(4)回線帯域(ホストパスの帯域);
(5)データ量(ホストパスを流れる1秒間当りのデータ量);
(6)CPUサイクル時間(そのホストが有するCPUのサイクル時間);
(7)状態(ホストパスの状態、例えば、正常、障害など);
を有する。このテーブル214に、ホストから取得されたホストパステーブル242が有する情報が記述される。
図4Bは、管理サーバ101が有するストレージパス管理テーブル215を示す。
【0069】
ストレージパス管理テーブル215は、検出された全てのストレージパスに関する情報が記述される。このテーブル215は、一つのストレージパスにつき、下記の情報要素:
(1)送信側ストレージ番号(送信側ストレージのシリアル番号);
(2)受信側ストレージ番号(受信側ストレージのシリアル番号);
(3)回線帯域(ストレージパスが有する物理パスの帯域);
(4)データ量(ストレージパスが有する物理パスを流れる1秒間当りのデータ量);
(5)状態(ストレージパスの状態、例えば、正常、障害など)
を有する。このテーブル215に、ストレージからホストを通じて取得されたストレージパステーブル210が有する情報が記述される。
【0070】
図4Cは、管理サーバ101が有するストレージテーブル216を示す。
【0071】
ストレージテーブル216は、検出されたストレージに関する情報が記述される。具体的には、例えば、このテーブル216には、ストレージ毎に、ノードID及びストレージ番号(ストレージのシリアル番号)が記述される。
【0072】
図5Aは、管理サーバ101に作成される配列(W1)212を示す。
【0073】
配列(W1)212は、どのノード(ホストまたはストレージ)とどのノードが直結されているかを表すマトリクスである。配列(W1)212は、後述するスキャン処理の最中に作成される。
【0074】
縦軸の番号[i]及び横軸の番号[j]は、ノードに割り振られた番号(本実施形態ではノードID)である。図5A(及び後述の図5B)において、ノード[1]〜[4]が、ストレージ1〜4に対応し、ノード[5]〜[6]が、ホスト1〜2に対応する。
【0075】
以下、ノード[i]からノード[j]へのパス(接続)があるか否かを、「W1[i][j]」と表記することがある。W1[i][j]=1は、ノード[i]からノード[j]に直結されていることを意味する。一方、W1[i][j]=∞は、ノード[i]からノード[j]に直結されていないことを意味する。例えば、図5Aのマトリクスによれば、ノード[i=2](ストレージ2)は、ノード[i=3](ストレージ3)へも直結されているし、ノード[i=1](ストレージ1)へも直結されている。
【0076】
図5Bは、管理サーバ101に作成される配列(W2)213を示す。
【0077】
配列(W2)213は、ノード間の重みを表すマトリクスである。このマトリクスの構成は、配列(W1)212と同様である。つまり、縦軸の番号[i]及び横軸の番号[j]は、ノードに割り振られた番号である。配列(W2)213も、後述するスキャン処理の最中に作成される。
【0078】
ここで、「重み」とは、データ量÷帯域で算出された値である。以下、ノード[i]からノード[j]へのパスの重みを、「W2[i][j]」と表記することがある。W2[i][j]の値は、ノード[i]からノード[j]へのパスについてのデータ量÷帯域で算出された値である。具体的には、例えば、W2[1][2]は、ストレージ1からストレージ2へのパスの重みであり、その重みは「3/5」である。なぜなら、図4Bに示したテーブル215の1行目によれば、そのパスについての帯域は「5」でデータ量は「3」であるからである。
【0079】
なお、W2[i][j]=∞は、ノード[i]からノード[j]へのパスが無いことを意味する。
【0080】
図6は、管理サーバ101が有する経路テーブル217を示す。
【0081】
経路テーブル217は、経路に関する情報が記述されている。経路の構成(どのノードからどのパスを通ってどのノードに至るか)は、ホストパス管理テーブル214とストレージパス管理テーブル215とを基に特定される。このテーブル217は、一つの経路につき、下記の情報要素:
(1)エンドノードID(経路のエンドノードのノードID);
(2)スタートノードID(経路のスタートノードのノードID);
(3)経路の距離(ホップ数);
(4)経路の重み;
(5)ルートリスト(ストレージの経由順序);
を有する。経路の重みは、経路が有する全てのパスの重み(データ量÷回線)、或いは、経路が有する特定のパスの重みを基に算出される。
【0082】
このテーブル217によれば、以下の事がわかる。
【0083】
例えば、スタートノードがノード5(ホスト1)でありエンドノード(スキャン対象のストレージ)がノード1(ストレージ1)の場合、エンドノードがローカルストレージであるため、ホップ数が1である。また、ストレージ間をスキャンコマンドが転送される必要が無いので、ルートリストとして有効な情報が設定されない(null)。
【0084】
また、例えば、スタートノードがノード6(ホスト2)でありエンドノード(スキャン対象のストレージ)がノード3(ストレージ3)の場合、コマンドは、ホスト2からストレージ4に到達し、その後、ストレージ4からストレージ3に到達することになるので(つまり中間ノードの数が1つなので)、ホップ数が2である。
【0085】
以下、本実施形態で行われる処理を、フローチャートを参照して説明する。
【0086】
図7は、ホスト追加処理のフローチャートである。
【0087】
ホスト追加処理は、ホストが追加される場合に実行される処理である。
【0088】
S701で、統合レプリケーション管理ソフト211が、ユーザから、追加する全てのホストに関する情報(例えばIPアドレス)の入力を受ける。なお、ユーザからソフト211への情報は、管理サーバ101が備える入力装置を用いて入力されても良いし、遠隔のユーザ端末から入力されても良い。
【0089】
追加するホスト毎に、以下のS702〜S706が行われる。以下、一つのホスト(図7及び図10の説明で「対象ホスト」と言う)を例に採り、S702〜S706を説明する。
【0090】
S702で、ソフト211が、ユーザから入力された情報を用いて対象ホストへの接続確認を行う。
【0091】
S703で、ソフト211が、その接続確認の結果、接続に成功したか否かを判断する。接続に成功した判断されたならば(S703:YES)、S704が行われる。
【0092】
S704で、ソフト211が、対象ホストからホストパステーブル210を取得し、そのテーブル210が有する情報を基に、ホストパス管理テーブル214を更新する。例えば、テーブル210が有する情報がテーブル214に追加され、且つ、対象ホストに割り当てられたノードIDもテーブル214に追加される。
【0093】
ホストに直結されている全てのローカルストレージについて、S705及びS706が行われる。
【0094】
S705で、ソフト211が、対象ホストに直結されているローカルストレージのストレージ番号がストレージテーブル216に登録済みか否かを判断する。この判断の結果が否定的の場合に限り(S705:NO)、S706が行われる。
【0095】
S706で、ソフト211が、図10の処理(ストレージパステーブル収集処理)を実行する。それにより、ストレージテーブル216及びストレージパス管理テーブル215が更新される。
【0096】
図8は、構成変更処理のフローチャートである。
【0097】
構成変更処理は、構成変更(例えば、パスの追加或いは削除)が行われる場合、或いは、各パスの負荷を取得する場合に行われる処理である。
【0098】
S801で、統合レプリケーション管理ソフト211が、ストレージパス管理テーブル215、ストレージテーブル216及び経路テーブル217を削除する。
【0099】
ホストパス管理テーブル214に情報が登録されているホスト毎に、以下のS802〜S807が行われる。以下、一つのホスト(図8及び図10の説明で「対象ホスト」と言う)を例に採り、S802〜S807を説明する。
【0100】
S802で、ソフト211が、対象ホストへの接続確認を行う。
【0101】
S803で、ソフト211が、その接続確認の結果、接続に成功したか否かを判断する。接続に成功した判断されたならば(S803:YES)、S804が行われ、接続に失敗したと判断されたならば(S803:NO)、S807が行われる。
【0102】
S804で、ソフト211が、対象ホストからホストパステーブル210を取得し、そのテーブル210が有する情報を基に、ホストパス管理テーブル214を更新する。
【0103】
対象ホストに直結されている全てのローカルストレージについて、S805及びS806が行われる。
【0104】
S805で、ソフト211が、対象ホストに直結されているローカルストレージのストレージ番号がストレージテーブル216に登録済みか否かを判断する。この判断の結果が否定的の場合に限り(S805:NO)、S806が行われる。
【0105】
S806で、ソフト211が、図10の処理(ストレージパステーブル収集処理)を実行する。それにより、ストレージテーブル216及びストレージパス管理テーブル215が更新される。
【0106】
S807で、ソフト211が、ホストパス管理テーブル214における、対象ホストに対応する「状態」の値を、「エラー」に更新する。
【0107】
図9は、ホスト削除処理のフローチャートである。
【0108】
S901で、統合レプリケーション管理ソフト211が、ユーザから、削除するホストの指定を受ける(例えば削除対象のホストの名称の入力を受ける)。
【0109】
S902で、ソフト211は、ホストパス管理テーブル214及び経路テーブル217から、指定されたホストが関わるレコード(行)を削除する。
【0110】
図10は、ストレージパステーブル収集処理のフローチャートを示す。
【0111】
この処理では、下記3つの引数:
(1)引数V(要求先のストレージのストレージ番号);
(2)引数R(ルートリスト);
(3)引数H(対象ホストのノードID);
が使用される。
【0112】
S1001で、ソフト211が、引数Hに対応した対象ホストを介して、引数Vと引数Rとを指定したテーブルリクエストを発行する。それにより、ソフト211は、引数Vに対応したストレージから、ストレージパステーブル242を取得する。ソフト211は、そのテーブル242が有する情報を基に、ストレージパス管理テーブル215を更新する。具体的には、テーブル242が有する情報のうち、送信側ストレージ番号、受信側ストレージ番号、回線帯域、データ量及び状態が、ストレージパステーブル242に登録される。なお、このS1001では、引数Vは、対象ホストに直結されているローカルストレージである。故に、引数Rは、このS1001ではnullである(或いは、ローカルストレージのストレージ番号のみを含んでいる)。
【0113】
S1002で、ソフト211が、引数Vをストレージテーブル216に追加する。
【0114】
S1003で、ソフト211が、引数Vに対応したノードID(エンドノードID)と、引数Rと、引数H(スタートノードID)を、経路テーブル217に追加する。
【0115】
S1004で、ソフト211が、引数Vにストレージが訪問済みであることを表す情報をメモリに記録する。
【0116】
取得されたストレージパステーブル242に受信側ストレージ番号が登録されている場合、S1005〜S1008が行われる。
【0117】
S1005で、ソフト211が、引数Vを、受信側ストレージ番号に更新する。
【0118】
S1006で、ソフト211が、更新後の引数Vに対応したストレージを訪問したか否かを判断する。その判断の結果が否定的の場合に(S1006:NO)、S1007が行われる。
【0119】
S1007で、ソフト211が、引数Rに更新後の引数Vを追加する。これにより、引数Rに記述されているストレージ番号のリストの末尾に、更新後の引数Vが追加される。
【0120】
S1008で、ソフト211が、S1001と同様に、引数Hが表す対象ホストを介して、更新後の引数Vと更新後の引数Rとを指定したテーブルリクエストを送信する。そのテーブルリクエストは、その引数Rに従う順序でストレージを経由し、引数Vに対応したストレージに届く。そして、そのストレージが有するストレージパステーブル242が、引数Rに従う順序と逆の順序でストレージを経由し、引数Hに対応した対象ホストを介して、管理サーバ101に届く。そのストレージパステーブル242に受信側ストレージ番号が記述されている場合に、S1005〜S1008が行われる。なお、このS1008は、S1001の処理の再帰呼び出しである。
【0121】
このストレージパステーブル収集処理により、対象ホストに直結されているローカルストレージを含んだストレージカスケードにおける全てのストレージから、ローカルストレージに近いストレージから順に、ストレージパステーブル242を取得することができる。この処理は、図7によれば、追加された全てのホストについて行われ、図8によれば、ホストパス管理テーブル214に登録されている全てのホストについて行われる。すなわち、ソフト211は、どのホストからも、そのホストに直結されているローカルストレージを含んだストレージカスケード内の全てのストレージがそれぞれ有するストレージパステーブル242を取得する。
【0122】
図12及び図13は、スキャン処理のフローチャートである。
【0123】
S1201で、統合レプリケーション管理ソフト211が、ユーザから、下記の3つの情報要素:
(K1)スキャン対象のストレージのストレージ番号;
(K2)スキャン対象のVOLの範囲(例えばVOLの番号の範囲);
(K3)スキャン結果情報の反映先の構成ファイルのファイル名;
の入力を受ける。
【0124】
S1202で、ソフト211は、上記(K2)に属するVOLの情報が他の構成ファイルに格納済みか否かを調べる。S1202の判断の結果が肯定的であれば(S1202:YES)、スキャン処理が終了となる。一方、S1202の判断の結果が否定的であれば(S1202:NO)、S1203が行われる。
【0125】
S1203で、ソフト211は、上記(K1)がホストパス管理テーブル214に登録されているか否か、つまり、上記(K1)に対応したストレージがローカルストレージか否かを判断する。
【0126】
S1203の判断の結果が肯定的であれば(S1203:YES)、ローカルスキャンが行われる。すなわち、ソフト211は、上記(K1)のローカルストレージに接続されているホストから、上記(K1)及び(K2)を含んだローカルスキャンのコマンドを送信させる(S1208)。これにより、ソフト211は、ホストを通じて、上記(K1)のローカルストレージから、上記(K2)に属するVOLに関するスキャン結果情報を取得し、その情報を、上記(K3)の構成ファイルに格納する。ソフト211は、経路テーブル217を参照して、上記(K1)のローカルストレージに対応した他のホスト(そのローカルストレージに一又は複数のパスを介して繋がっているホスト)を特定し、特定された他のホストに、上記(K3)の構成ファイルを転送する(S1209)。
【0127】
一方、S1203の判断の結果が否定的であれば(S1203:NO)、リモートスキャンが行われる。具体的には、S1204〜S1207、S1210、S1211〜S1218の処理が行われる。
【0128】
S1204で、ソフト211は、図11に示す配列作成処理を行うことで、図5Aに示した配列(W1)212と、図5Bに示した配列(W2)213を作成する。
【0129】
S1205で、ソフト211は、図14及び図15に示す距離/重み計算処理を行うことで、経路の距離と重みを算出する。
【0130】
S1206で、ソフト211は、経路テーブル217から、上記(K1)のストレージまでの経路の距離が最も短いホストを選択する。
【0131】
S1207で、ソフト211は、経路テーブル217と、配列(W1)212及び/又は配列(W2)213とを基に、S1206で選択したホストから上記(K1)のストレージまでの経路に∞のパスがあるか否かを判断する。例えば、その経路に含まれるいずれかのパス(ホストパス又はストレージパス)の状態が「エラー」となっていると、そのパスについてのW1[i][j]及びW2[i][j]の値が∞となる。この判断の結果が肯定的の場合(S1207:YES)、ソフト211は、所定のエラー処理を行って(S1210)、このスキャン処理を終了する。一方、この判断の結果が否定的の場合(S1207:NO)、図13のS1211が行われる。
【0132】
S1211で、ソフト211は、最短距離の経路が複数存在するか否か、すなわち、S1206で選択されたホストが複数個存在するか否かを判断する。この判断の結果が否定的の場合(S1211:NO)、S1215が行われる。一方、この判断の結果が肯定的の場合(S1211:YES)、S1212が行われる。
【0133】
S1212で、ソフト211は、S1206で選択された複数のホストのうち、重みが最も小さい経路のスタートノードのホストを選択する。
【0134】
S1213で、ソフト211は、最短距離且つ重みが最も小さい経路が複数存在するか否か、すなわち、S1212で選択されたホストが複数個存在するか否かを判断する。この判断の結果が否定的の場合(S1213:NO)、S1215が行われる。一方、この判断の結果が肯定的の場合(S1213:YES)、S1214が行われる。
【0135】
S1214で、ソフト211は、ホストパス管理テーブル214を参照し、S1212で選択された複数のホストのち、CPUサイクル時間が最も短いホストを選択する。
【0136】
S1215で、ソフト211は、S1206、S1212又はS1214で選択された一つのホストに関する情報を、引数Aとして設定する。以下、引数Aに対応したホストを「ホストA」と言う。
【0137】
S1216で、ソフト211は、ホストAに、リモートスキャンを実行させる。具体的には、例えば、ソフト211は、ホストAから上記(K1)のストレージまでの経路に対応したルートリストと、上記(K1)及び(K2)とを含んだリモートスキャンのコマンドを、ホストAから送信させる。これにより、ソフト211は、ホストAを通じて、上記(K1)のローカルストレージから、上記(K2)に属するVOLに関するスキャン結果情報を取得する。ソフト211は、その情報を、上記(K3)の構成ファイルに格納し、その構成ファイルをホストAに格納する(S1217)。ソフト211は、経路テーブル217を参照して、上記(K1)のローカルストレージに対応した他のホスト(そのローカルストレージに一又は複数のパスを介して繋がっているホスト)を特定し、特定された他のホストに、上記(K3)の構成ファイルを転送する(S1218)。
【0138】
図11は、配列作成処理のフローチャートである。この処理は、図12のS1205の処理である。
【0139】
S1101で、ソフト211は、引数nとして、ディスカバリしているホストの数(ホストパス管理テーブル214に登録されているホストの数)を設定する。
【0140】
S1102で、ソフト211は、引数mとして、ストレージテーブル216に登録されているストレージの数を設定する。
【0141】
S1103で、ソフト211は、長さn+mの配列(W1)及び(W2)を作成する。この段階では、配列(W1)及び(W2)も、縦軸[i](iは、1から(n+m)までの整数)と、横軸[j](jは、1から(n+m)までの整数)とを有するが、iとjが交差する各セルはブランクである。
【0142】
S1104〜S1108が、iとjの全ての組合せ(パターン)について行われる。
【0143】
S1104で、ソフト211は、任意に選択したiの値が、ホストパス管理テーブル214に登録されているいずれかのノードID(ホストのノードID)と一致するか否かを判断する。この判断の結果が肯定的の場合、S1107が行われる(この場合、ホスト[i]と言う)。一方、この判断の結果が否定的の場合、S1105が行われる(この場合、ストレージ[i]と言う。
【0144】
S1105で、ソフト211は、ストレージパス管理テーブル215を参照し、送信側ストレージ[i]に対応した受信側ストレージ[j]があり、且つ、送信側ストレージ[i]から受信側ストレージ[j]へのストレージパスの状態が正常か否かを判断する。この判断の結果が肯定的の場合、S1106が行われ、この判断の結果が否定的の場合、S1108が行われる。
【0145】
S1106で、ソフト211は、W1[i][j]=1を設定する。すなわち、ソフト211は、配列(W1)212の、[i]と[j]が交差するセルに、「1」を設定する。また、ソフト211は、W2[i][j]=(データ量÷回線帯域)を設定する。すなわち、ソフト211は、配列(W2)213の、[i]と[j]が交差するセルに、(データ量÷回線帯域)を設定する。それらのデータ量及び回線帯域は、それぞれ、ノード[i]からノード[j]へのパスに対応した値である。
【0146】
S1107で、ソフト211は、ホストパス管理テーブル214を参照し、ホスト[i]に直結したローカルストレージ[j]があり、且つ、ホスト[i]からローカルストレージ[j]へのホストパスの状態が正常か否かを判断する。この判断の結果が肯定的の場合、S1106が行われ、この判断の結果が否定的の場合、S1108が行われる。
【0147】
S1108で、ソフト211は、W1[i][j]=∞、及び、W2[i][j]=∞を設定する。
【0148】
S1104〜S1108が、iとjの全ての組合せについて行われることで、図5Aに示した配列(W1)212、及び、図5Bに示した配列(W2)213が完成する。
【0149】
図14及び図15は、距離/重み計算処理のフローチャートである。この処理は、図12のS1205の処理である。
【0150】
フローチャートを用いて距離/重み計算処理を説明する前に、本実施形態に係る距離/重み計算処理の概要を説明する。
【0151】
本実施形態に係るシステム構成(ホストとストレージを含んだシステムの構成)は、ノード(ストレージ、ホスト)を頂点と考えると、非連結の有効グラフと考えることができる。
【0152】
各頂点(vertex)は、フィールド「distance」、「load」及び「status」を持つ。distanceは、引数で指定した頂点とこの頂点との距離を表す。loadは、引数で指定した頂点とこの頂点の間の経路の重みを表す。statusは、この頂点を訪問したかどうかを表す。
【0153】
全ての頂点について、distance及びloadのそれぞれの初期値は、「∞」とされ、statusの初期値は、unvisited(未訪問)とされる。ただし、引数で指定された頂点のdistanceとloadは、自分自身であるため0(ゼロ)に初期化される。
【0154】
この処理では、unvisitedかつ最少のdistanceを持つ頂点pが選択され、その頂点から接続関係にある全ての頂点のdistanceとloadが計算される。図14及び図15に示す(B)のループで各頂点が頂点pとなるようにすることで、全ての頂点のdistance及びloadが計算される。
【0155】
図18に示すシステム構成の例において、例えば、ホスト21からスキャン対象ストレージ2までの経路の距離は、2つのパスA及びBを有するため、「2」となる(以下、その経路を「経路AB」と表現する)。一方、ホスト22からスキャン対象ストレージ2までの経路の距離も、2つのパスD及びCを有するため、「2」となる(以下、その経路を「経路DC」と表現する)。
【0156】
経路の重みの定義の仕方としては、複数の方法、例えば次の2種類がある。図14及び図15のフローチャートは、下記<方法1>を表現している。
【0157】
<方法1>
経路上の各パスの重み(データ量÷回線)の最大値が採用される。この方法によれば、経路ABの重みは、パスAの重み「1/2」とパスBの重み「1/2」のうちの最大値(max(1/2,1/2))=1/2となる。一方、経路DCの重みは、パスDの重み「0/2」とパスCの重み「2/2」のうちの最大値(max(0/2,2/2))=2/2となる。
【0158】
<方法2>
経路上の各パスの重み(データ量÷回線)の平均が採用される。この方法によれば、経路ABの重みは、パスAの重み「1/2」とパスBの重み「1/2」の平均((1/2+1/2)÷2)=1/2となる。一方、経路DCの重みは、パスDの重み「0/2」とパスCの重み「2/2」の平均((0/2+2/2)÷2)=1/2となる。
【0159】
以下、図14及び図15を参照して、距離/重み計算処理を詳細に説明する。
【0160】
S1401で、ソフト211が、下記の設定:
(1)引数n=ディスカバリしているホストの数(ホストパス管理テーブル214に登録されているホストの数);
(2)引数m=ストレージテーブル216に登録されているストレージの数;
(3)(n+m)×(n+m)の配列(vertex);
を行う。ここでの(n+m)は、フィールド「distance」、「load」及び「status」を持つオブジェクトの長さ(数)である。
【0161】
S1402が、x=1から(n+m)までの整数のそれぞれについて行われる。すなわち、ソフト211は、下記の設定:
(1)vertex(x).distance=∞;
(2)vertex(x).load=∞;
(3)vertex(x).state=unvisited;
を行う。
【0162】
S1403で、ソフト211は、vertex(x).distanceを0(ゼロ)に更新し、同様に、vertex(x).loadを0(ゼロ)に更新する。
【0163】
配列(W1)212及び配列(W2)213の値[i]として、1から(n+m)までの整数があるが、各整数について、S1404〜S1409が行われる。
【0164】
S1404で、ソフト211は、「min=∞」を設定する。そして、ソフト211は、x=1から(n+m)までの整数のそれぞれについて、S1405及びS1406を行う。すなわち、S1405で、ソフト211は、「vertex(x).state=unvisited」且つ「vertex(x).distance<min」か否かを判断する。この判断の結果が肯定的であれば(S1405:YES)、ソフト211は、S1406で、「p=x」且つ「min=distance」を設定する。つまり、変数pの値として、現在のxの値が設定され、変数minとして、現在のdistanceの値が設定される。
【0165】
S1407で、ソフト211は、「min=∞」か否かを判断する。この判断の結果が肯定的であれば(S1407:YES)、S1410が行われ、この判断の結果が否定的であれば(S1407:NO)、S1408が行われる。
【0166】
S1408で、ソフト211は、vertex(x).stateの値を「visited」に更新する。
【0167】
ソフト211は、x=1から(n+m)までの整数のそれぞれについて、S1409を行う。すなわち、S1409で、ソフト211は、下記の設定:
(1)vertex(x).distance=min
(vertex(x).distance, vertex(p).distance+W1[x][p]);
(2)vertex(x).load=max
(vertex(p).load, W2[x][p]);
を行う。なお、これは、上記<方法1>及び<方法2>のうちの<方法1>についての説明であるが、<方法2>が採用された場合、vertex(x).loadは、「vertex(x).load=min (vertex(x).load, vertex(p).load+W2[x][p])」である。
【0168】
以上のS1404〜S1409の処理が、i=1から(n+m)までのそれぞれの整数について行われる。
【0169】
その後、ソフト211は、x=1から(n+m)までの整数のそれぞれについて、S1410及びS1411を行う。すなわち、S1410で、ソフト211は、vertex(x)の値がホストのノードIDと一致するか否かを判断する。この判断の結果が否定的であれば(S1410:NO)、ソフト211は、S1411で、x、start、vertex(x).distance、及びvertex(x).loadを、経路テーブル217に登録する。
【0170】
以上、上述した実施形態によれば、スキャン処理の前に、管理サーバ101が、ホスト1及び2とストレージカスケード(ストレージ1〜4)とを含んだ計算機システムに存在する全ての経路の構成を把握する(具体的には、経路テーブル217が構築される)。そして、スキャン処理では、経路テーブル217を参照して、管理サーバ101が、スキャン対象のリモートストレージをエンドノードとする複数の経路のうちの最適な経路のスタートノードのホストを選択する。最適な経路とは、前述したように、例えば、最短経路及び負荷最小経路である。これにより、リモートスキャンのコマンドを発行するのに最適なホスト計算機を選択できる確率が高まる。
【0171】
以上、本発明の一つの実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、ホスト、ストレージ及びストレージカスケードの数は、上記例に限られない。また、「直列に接続された複数のストレージシステム」とは、必ずしも一列のストレージカスケードである必要は無く、例えば図19に示すように、途中で枝分かれすることで、複数のストレージカスケード(例えば、ストレージ11、12及び15のカスケードと、ストレージ11、12、13及び14のカスケードと、ストレージ15、12、13及び14のカスケード)が含まれても良い。
【符号の説明】
【0172】
101…管理サーバ

【特許請求の範囲】
【請求項1】
通信ネットワークを介して通信するためのネットワークインターフェイスと、
記憶資源と、
前記ネットワークインターフェイス及び前記記憶資源に接続されたプロセッサと
を備え、
前記通信ネットワークに複数のホスト計算機が接続されており、
1以上のストレージカスケードを構成する複数のストレージシステムがあり、
1つのストレージカスケードは、直列に接続された二以上のストレージシステムで構成されており、
前記複数のストレージシステムには、二以上のローカルストレージと一以上のリモートストレージが含まれており、
前記ローカルストレージは、少なくとも一つのホスト計算機に接続されているストレージシステムであり、
前記リモートストレージは、いずれのホスト計算機にも接続されていないストレージシステムであり、
前記プロセッサが、経路調査処理と、スキャン支援処理とを実行し、
(A)前記経路調査処理は、
(a1)ホスト計算機とローカルストレージとを接続するパスであるホストパスに関するホスト/ストレージ接続情報を前記ネットワークインターフェイスを通じて取得する処理と、
(a2)ストレージシステムとストレージシステムとを接続するパスであるストレージパスに関するストレージ/ストレージ接続情報を各ホスト計算機及び前記ネットワークインターフェイスを通じて取得する処理と、
(a3)前記(a1)で取得されたホスト/ストレージ接続情報と前記(a2)で取得されたストレージ/ストレージ接続情報とを基に経路管理情報を生成し、生成した経路管理情報を前記記憶資源に格納する処理と
を含み、
前記経路管理情報は、複数の経路に関する情報であり、
一つの経路は、直列に接続された二以上のノードとノード間のパスとで構成されており、その二以上のノードのうちのスタートノードが、いずれかのホスト計算機であり、その二以上のノードうちの他のノードが、いずれかのストレージシステムであり、
(B)前記スキャン処理は、
(b1)前記複数のストレージシステムのうちのスキャン対象のストレージシステムをエンドノードとする複数の経路を前記経路管理情報から特定する処理と、
(b2)前記スキャン対象のストレージシステムがいずれかのリモートストレージであることが前記(b1)の処理においてわかった場合に、前記経路管理情報を基に、前記スキャン対象のリモートストレージからスキャン対象の論理ボリュームに関する情報を取得することであるリモートスキャンを実行するホスト計算機として、前記複数の経路のうちの最適な経路のスタートノードであるホスト計算機を選択する処理と
を含む、
計算機。
【請求項2】
各ストレージシステムは、第一及び第二のコマンドデバイスを有し、
ストレージシステム同士を接続する前記ストレージパスとして、第一の方向のストレージパスと第二の方向のストレージパスとがあり、
前記第一の方向のストレージパスは、一方のストレージシステム内の前記第一のコマンドデバイスから他方のストレージシステム内の前記第一のコマンドデバイスへのパスであり、
前記第二の方向のストレージパスは、前記他方のストレージシステム内の前記第二のコマンドデバイスから前記一方のストレージシステム内の前記第二のコマンドデバイスへのパスであり、
各コマンドデバイスは、コマンドが格納される論理ボリュームであり、
前記最適な経路は、前記スキャン対象のリモートストレージとスタートノードのホスト計算機との間に存在するストレージシステムの数が最も少ない最短経路であり、
前記最適な経路を介して前記リモートスキャンを実行することの命令を受けたホスト計算機から、前記最適な経路に従う転送順序と前記スキャン対象の論理ボリュームとが指定されたスキャンコマンドが発行され、そのスキャンコマンドが、そのホスト計算機に接続されているローカルストレージに受信され、そのローカルストレージが有する前記第一及び第二のコマンドデバイスのうちの、前記転送順序に従う方のコマンドデバイスに格納され、その転送順序に従う方向のストレージパスを通じてコマンドデバイス間で転送され、その結果、前記スキャン対象のリモートストレージ内のコマンドデバイスに格納され、
前記スキャン対象のリモートストレージから、そのリモートストレージに格納されたスキャンコマンドに応答して、そのスキャンコマンドで指定されている前記スキャン対象の論理ボリュームに関するスキャン結果情報が送信され、そのスキャン結果情報が、前記転送順序と逆の順序で転送されて、前記スキャンコマンドを発行したホスト計算機に受信され、
前記プロセッサが、前記スキャン対象のリモートストレージをエンドノードとする前記複数の経路のうちの前記最短経路以外の経路のスタートノードのホスト計算機に、前記スキャン結果情報を送信する、
請求項1記載の計算機。
【請求項3】
前記ホスト/ストレージ接続情報は、前記ホストパスについて帯域及び単位時間当りのデータ転送量を表す情報を含み、
前記ストレージ/ストレージ接続情報は、前記第一及び第二の方向のストレージパスについて帯域及び単位時間当りのデータ転送量を表す情報を含み、
前記プロセッサは、前記(b2)の処理において、以下の(b21)及び(b22)の処理:
(b21)前記ホスト/ストレージ接続情報が表す帯域及び/データ転送量と、前記ストレージ/ストレージ接続情報が表す帯域及び/データ転送量とを基に、ノード間のパス毎の負荷を算出し、ノード間のパス毎の負荷を基に、それぞれの経路の負荷を算出する;
(b22)二以上の最短経路がある場合、前記二以上の最短経路に属する二以上のホスト計算機のうち、負荷が最小の経路である負荷最小経路のスタートノードのホスト計算機を選択する、
を行う、
請求項2記載の計算機。
【請求項4】
前記ホスト/ストレージ接続情報は、ホスト計算機のCPU性能を表す情報を含み、
前記プロセッサは、前記(b2)の処理において、更に、以下の(b23)の処理:
(b23)二以上の負荷最小経路がある場合、前記二以上の負荷最小経路に属する二以上のホスト計算機のうち、CPU性能が最も高いホスト計算機を選択する、
を行う、
請求項3記載の計算機。
【請求項5】
前記最適な経路は、それぞれの経路の距離、経路の負荷、及びノードの負荷の少なくとも一つに基づいて選択された経路であり、
経路の距離は、スタートノードとエンドノードとの間に存在するストレージシステムの数であり、
経路の負荷は、その経路が有する各パスの負荷を基に定まる負荷である、
請求項1記載の計算機。
【請求項6】
前記最適な経路は、最短経路であり、
前記最短経路は、前記スキャン対象のリモートストレージとスタートノードのホスト計算機との間に存在するストレージシステムの数が最も少ない経路である、
請求項5記載の計算機。
【請求項7】
前記ホスト/ストレージ接続情報は、前記ホストパスについての負荷を表す情報を含み、
前記ストレージ/ストレージ接続情報は、前記ストレージパスについての負荷を表す情報を含み、
前記プロセッサは、前記ホスト/ストレージ接続情報及び前記ストレージ/ストレージ接続情報が表すノード間のパス毎の負荷を基に、経路毎の負荷を算出し、
二以上の最短経路がある場合、前記最適な経路は、前記二以上の最短経路のうちの、負荷が最小の経路である負荷最小経路である、
請求項6記載の計算機。
【請求項8】
二以上の負荷最小経路がある場合、前記最適な経路は、前記二以上の負荷最小経路のうちの、ノードに関する負荷が最小の経路である、
請求項7記載の計算機。
【請求項9】
前記二以上の負荷最小経路に属する二以上のホスト計算機のうちの、負荷の最も小さいホスト計算機が選択される、
請求項8記載の計算機。
【請求項10】
前記ホスト/ストレージ接続情報は、前記ホストパスについての負荷を表す情報を含み、
前記ストレージ/ストレージ接続情報は、前記ストレージパスについての負荷を表す情報を含み、
前記プロセッサは、前記ホスト/ストレージ接続情報及び前記ストレージ/ストレージ接続情報が表すノード間のパス毎の負荷を基に、経路毎の負荷を算出し、
前記最適な経路は、負荷が最小の経路である負荷最小経路である、
請求項5又は6記載の計算機。
【請求項11】
前記選択されるホスト計算機は、ノードに関する負荷が最小の経路のスタートノードである、
請求項5、6又は10記載の計算機。
【請求項12】
前記最適な経路を介して前記リモートスキャンを実行することの命令を受けたホスト計算機から、前記最適な経路に従う転送順序と前記スキャン対象の論理ボリュームとが指定されたスキャンコマンドが発行され、そのスキャンコマンドが、そのホスト計算機に接続されているローカルストレージに受信され、そのスキャンコマンドで指定されている転送順序に従って転送され、前記スキャン対象のリモートストレージに受信され、
前記スキャン対象のリモートストレージから、そのスキャンコマンドに応答して、そのスキャンコマンドで指定されている前記スキャン対象の論理ボリュームに関するスキャン結果情報が送信され、そのスキャン結果情報が、前記転送順序と逆の順序で転送されて、前記スキャンコマンドを発行したホスト計算機に受信され、
前記プロセッサが、前記スキャン対象のリモートストレージをエンドノードとする前記複数の経路のうちの前記最適な経路以外の経路のスタートノードのホスト計算機に、前記スキャン結果情報を送信する、
請求項1、5乃至11のうちのいずれか1項に記載の計算機。
【請求項13】
前記最適な経路は、経路の距離の差、経路の負荷の差、及びノードの負荷の差のうちの少なくとも二つに基づいて選択された経路である、
請求項5記載の計算機。
【請求項14】
1以上のストレージカスケードを構成する複数のストレージシステムのいずれかからスキャン対象の論理ボリュームに関する情報をホスト計算機に取得させるスキャン方法であり、
1つのストレージカスケードは、直列に接続された二以上のストレージシステムで構成されており、
前記複数のストレージシステムには、二以上のローカルストレージと一以上のリモートストレージが含まれており、
前記ローカルストレージは、少なくとも一つのホスト計算機に接続されているストレージシステムであり、
前記リモートストレージは、いずれのホスト計算機にも接続されていないストレージシステムであり、
前記スキャン方法は、経路調査処理とスキャン処理とを実行し、
(A)前記経路調査処理は、
(a1)ホスト計算機とローカルストレージとを接続するパスであるホストパスに関するホスト/ストレージ接続情報を前記ネットワークインターフェイスを通じて取得する処理と、
(a2)ストレージシステムとストレージシステムとを接続するパスであるストレージパスに関するストレージ/ストレージ接続情報を各ホスト計算機及び前記ネットワークインターフェイスを通じて取得する処理と、
(a3)前記(a1)で取得されたホスト/ストレージ接続情報と前記(a2)で取得されたストレージ/ストレージ接続情報とを基に経路管理情報を生成し、生成した経路管理情報を前記記憶資源に格納する処理と
を含み、
前記経路管理情報は、複数の経路に関する情報であり、
一つの経路は、直列に接続された二以上のノードとノード間のパスとで構成されており、その二以上のノードのうちのスタートノードが、いずれかのホスト計算機であり、その二以上のノードうちの他のノードが、いずれかのストレージシステムであり、
(B)前記スキャン処理は、
(b1)前記複数のストレージシステムのうちのスキャン対象のストレージシステムをエンドノードとする複数の経路を前記経路管理情報から特定する処理と、
(b2)前記スキャン対象のストレージシステムがいずれかのリモートストレージであることが前記(b1)の処理においてわかった場合に、前記経路管理情報を基に、前記スキャン対象のリモートストレージからスキャン対象の論理ボリュームに関する情報を取得することであるリモートスキャンを実行するホスト計算機として、前記複数の経路のうちの最適な経路のスタートノードであるホスト計算機を選択する処理と
を含む、
スキャン方法。
【請求項15】
1以上のストレージカスケードを構成する複数のストレージシステムのいずれかからスキャン対象の論理ボリュームに関する情報をホスト計算機に取得させるコンピュータプログラムであって、
1つのストレージカスケードは、直列に接続された二以上のストレージシステムで構成されており、
前記複数のストレージシステムには、二以上のローカルストレージと一以上のリモートストレージが含まれており、
前記ローカルストレージは、少なくとも一つのホスト計算機に接続されているストレージシステムであり、
前記リモートストレージは、いずれのホスト計算機にも接続されていないストレージシステムであり、
前記コンピュータプログラムは、経路調査処理とスキャン処理とをコンピュータに実行させ、
(A)前記経路調査処理は、
(a1)ホスト計算機とローカルストレージとを接続するパスであるホストパスに関するホスト/ストレージ接続情報を前記ネットワークインターフェイスを通じて取得する処理と、
(a2)ストレージシステムとストレージシステムとを接続するストレージパスに関するストレージ/ストレージ接続情報を各ホスト計算機及び前記ネットワークインターフェイスを通じて取得する処理と、
(a3)前記(a1)で取得されたホスト/ストレージ接続情報と前記(a2)で取得されたストレージ/ストレージ接続情報とを基に経路管理情報を生成し、生成した経路管理情報を前記記憶資源に格納する処理と
を含み、
前記経路管理情報は、複数の経路に関する情報であり、
一つの経路は、直列に接続された二以上のノードとノード間のパスとで構成されており、その二以上のノードのうちのスタートノードが、いずれかのホスト計算機であり、その二以上のノードうちの他のノードが、いずれかのストレージシステムであり、
(B)前記スキャン処理は、
(b1)前記複数のストレージシステムのうちのスキャン対象のストレージシステムをエンドノードとする複数の経路を前記経路管理情報から特定する処理と、
(b2)前記スキャン対象のストレージシステムがいずれかのリモートストレージであることが前記(b1)の処理においてわかった場合に、前記経路管理情報を基に、前記スキャン対象のリモートストレージからスキャン対象の論理ボリュームに関する情報を取得することであるリモートスキャンを実行するホスト計算機として、前記複数の経路のうちの最適な経路のスタートノードであるホスト計算機を選択する処理と
を含む、
コンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate