(57)【要約】      （修正有）【課題】ＳＡＮ環境で、アプリケーションがサーバ間で移動する場合に、関連するＩ／Ｏプライオリティ設定を自動的に制御する。【解決手段】第１のストレージ制御ユニット上の物理ポートに対して生成された仮想ポートが、同じストレージ制御ユニット内にある又は別のストレージ制御ユニット上にある等の、別の物理ポートに移動されたら、行き先の物理ポートで仮想ポートによるプライオリティの競合を防ぐために、第１の物理ポートとストレージ制御ユニットのプライオリティ設定がチェックされ、仮想ポートと共に他の物理ポートに移動される。同様に、ボリュームグループをストレージ制御ユニット内の別な物理ポート又は異なったストレージ制御ユニットに移動する時には、ボリュームグループに指定されたプライオリティ設定も移動することができる。【選択図】図４Ａ
2009277211.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークとの通信のための第１の物理ポートを有し、該ネットワーク経由で第１のコンピュータと交信する第一のストレージ制御ユニットと、
前記第１のストレージ制御ユニット上に生成され、前記第１のコンピュータにデータストレージリソースとして提供され、前記第１の物理ポートを通してアクセスされ、第１のプライオリティ設定が指定された第１のストレージボリュームと、から構成され、
前記第１のストレージ制御ユニット内又は第２のストレージ制御ユニット内のいずれかにある第２の物理ポートを通して前記第１のボリュームがアクセスされるように前記第１のボリュームが移動される時には、前記第１のプライオリティ設定は、前記第１のボリュームと共に移動され、該第２の物理ポートにて受信する前記第１のボリュームをターゲットとする前記第１のコンピュータから受信する入／出力（Ｉ／Ｏ）操作に適用される、ことを特徴とするストレージシステム。
【請求項２】
前記第１のストレージ制御ユニット上に生成される複数の前記第１のストレージボリュームが存在し、該複数の第１のストレージボリュームは第１のボリュームグループを形成し、前記第１のストレージボリュームに指定された前記プライオリティ設定が該第１のボリュームグループに指定され、
前記第１のボリュームの移動は前記第１のボリュームグループと前記第１のプライオリティ設定の移動を含む、ことを特徴とする請求項１によるストレージシステム。
【請求項３】
前記第１のボリュームは前記第１のストレージ制御ユニット上に生成される第１の仮想ボリュームとして構成され、該第１の仮想ボリュームは前記第１のストレージ制御ユニットと交信する外部ストレージシステム上の論理ボリュームにマッピングされ、それにより該外部ストレージシステムが前記第１の仮想ボリュームにストレージ容量を提供する、ことを特徴とする請求項１によるストレージシステム。
【請求項４】
前記第１のボリュームに連結される第１の仮想ポートを更に有し、前記第１のコンピュータは該第１の仮想ポートを経由して前記第１のボリュームにアクセスし、
前記第１の仮想ポートと前記第１の仮想ボリュームは第１のボリュームグループに含まれ、前記第１のプライオリティ設定は該第１のボリュームグループに指定される、ことを特徴とする請求項１によるストレージシステム。
【請求項５】
前記第１のボリュームの前記移動が前記第１のボリュームと前記第１の仮想ポートを含む前記ボリュームグループの移動を含む時、前記第１のボリュームの移動に続いて前記第１の仮想ポートが前記第２の物理ポートに連結される、ことを特徴とする請求項４によるストレージシステム。
【請求項６】
前記第２の物理ポートは前記第１のストレージ制御ユニット内に存在し、
第２のボリュームをターゲットとして前記第１のストレージ制御ユニットにてＩ／Ｏ操作を受信したら、前記第１のストレージ制御ユニットは該第２のボリュームがプライオリティ設定を持つか否か判定するように構成され、
前記第２のボリュームがプライオリティ設定を持たずに更に前記第１のボリュームの毎秒あたりのＩ／Ｏ操作の測定値が閾値よりも小さい時には、前記第１のストレージ制御ユニットは前記第２のボリュームをターゲットとする前記Ｉ／Ｏ操作を遅延させるように構成される、ことを特徴とする請求項１によるストレージシステム。
【請求項７】
前記第２の物理ポートは第２のストレージ制御ユニット内に存在し、
前記第１及び第２のストレージ制御ユニットと交信する第２のコンピュータを更に有し、
前記第１のボリュームの移動を実行するのに先立って、前記第２のストレージ制御ユニットに第２のボリュームに指定された第２のプライオリティ設定が存在する時には、前記第２のコンピュータは、前記第２のストレージ制御ユニットにて得られる性能の全体量が前記第１のボリュームに対して指定された性能と該第２のボリュームに対して指定された性能の和を満たすのに十分であるか否かを判定するように構成される、ことを特徴とする請求項１によるストレージシステム。
【請求項８】
前記性能の全体量、前記第１のボリュームに対して指定される前記性能及び前記第２のボリュームに対して指定される前記性能は、毎秒あたりのＩ／Ｏ操作量に従って測定される、ことを特徴とする請求項７によるストレージシステム。
【請求項９】
前記第２のストレージ制御ユニットにて得られる性能の前記全体量が前記第１のボリュームに対して指定された前記性能と前記第２のボリュームに対して指定された前記性能の和を満たすのに十分でない時には、前記第２のコンピュータは前記第１のボリュームの移動を受け付ける、代わりのストレージ制御ユニットを特定するように構成される、ことを特徴とする請求項７によるストレージシステム。
【請求項１０】
ネットワーク経由で第１のコンピュータと交信し、該ネットワークとの通信のための第１の物理ポートを有する、第１のストレージ制御ユニットと、
前記第１の物理ポートに対応して生成され、第１のプライオリティ設定が指定された第１の仮想ポートと、から構成され、
第２の仮想ポートをターゲットとして前記第１のストレージ制御ユニットにて入／出力（Ｉ／Ｏ）操作を受信したら、前記第１のストレージ制御ユニットは、該第２の仮想ポートがプライオリティ設定を持つか否かを判定するように構成され、
前記第２の仮想ポートがプライオリティ設定を持たずに更に前記第１の仮想ポートの性能の測定値が閾値よりも小さい時には、前記第１のストレージ制御ユニットは前記第２の仮想ポートをターゲットとする前記Ｉ／Ｏ操作を遅延させるように構成される、ことを特徴とするストレージシステム。
【請求項１１】
前記第１のストレージ制御ユニット上に生成され、前記第１のストレージ制御ユニットと交信する外部ストレージシステム上の論理ボリュームにマッピングされる第１の仮想ボリュームを更に有し、それにより該外部ストレージシステムがストレージ容量を該仮想ボリュームに提供し、
前記第１の仮想ポートと前記第１の仮想ボリュームはボリュームグループを形成し、前記第１のプライオリティ設定は該ボリュームグループに指定され、
前記第１の仮想ポートの移動は前記第１のボリュームと前記第１の仮想ポートを含む前記ボリュームグループの移動を含む、ことを特徴とする請求項１０によるストレージシステム。
【請求項１２】
前記第１の仮想ポートを第２の物理ポートに連結して、前記第１の仮想ポートを前記第１のストレージ制御ユニット内又は第２のストレージ制御ユニット内のいずれかにある該第２の物理ポートに移動する時には、前記第１のプライオリティ設定は前記第１の仮想ポートと共に移動され、前記第２の物理ポートにて受信され前記第１の仮想ポートに向けられた通信に適用されるように構成される、ことを特徴とする請求項１０によるストレージシステム。
【請求項１３】
前記第２の物理ポートは第２のストレージ制御ユニット内に存在し、
前記第１のストレージ制御ユニット及び前記第２のストレージ制御ユニットと交信する第２のコンピュータを更に有し、
前記第１の仮想ポートの移動の実行の前に、前記第２のストレージ制御ユニットにて第３の仮想ポートに指定された第２のプライオリティ設定が存在する時には、前記第２のコンピュータは前記第２のストレージ制御ユニットにて得られる性能の全体量が前記第１の仮想ポートに対して指定された性能と該第３の仮想ポートに対して指定された性能の和を満たすのに十分であるか否か判定する、ように構成される、ことを特徴とする請求項１２によるストレージシステム。
【請求項１４】
前記性能の全体量、前記第１の仮想ポートに対して指定される前記性能及び前記第３の仮想ポートに対して指定される前記性能は、毎秒あたりのＩ／Ｏ操作量に従って測定される、ことを特徴とする請求項１３によるストレージシステム。
【請求項１５】
前記第２のストレージ制御ユニットにて得られる前記性能の全体量が前記第１の仮想ポートに対して指定された前記性能と前記第３の仮想ポートに対して指定された前記性能の和を満たすのに十分でない時には、前記第２のコンピュータは前記第１の仮想ポートの移動を受け付ける、代わりのストレージ制御ユニットを特定するように構成される、ことを特徴とする請求項１３によるストレージシステム。
【請求項１６】
第１のストレージ制御ユニット上に複数の第１のストレージボリュームを生成し、該第１のストレージボリュームが第１のボリュームグループ内に含まれるようにするステップと、
入／出力（Ｉ／Ｏ）操作の処理でのプライオリティを決定するために前記第１のボリュームグループに第１のプライオリティ設定を指定するステップと、
第２のボリュームグループをターゲットとする前記第１のストレージ制御ユニットにてＩ／Ｏ操作を受信するステップと、
前記第２のボリュームグループがプライオリティ設定を持つか否かを判定するステップと、
前記第２のボリュームグループがプライオリティ設定を持たずに更に前記第１のボリュームグループの性能の測定値が閾値より小さい時には、前記第２のボリュームグループをターゲットとする前記Ｉ／Ｏ操作を遅延させるステップ、とから成る、ことを特徴とするストレージシステムの操作方法。
【請求項１７】
前記複数の第１のボリュームを前記第１のストレージ制御ユニット上に生成される複数の第１の仮想ボリュームとして構成し、該第１の仮想ボリュームの各々は前記第１のストレージ制御ユニットと交信する外部ストレージシステム上の論理ボリュームにマッピングされ、そのことにより該外部ストレージシステムは前記複数の第１の仮想ボリュームに対してストレージ容量を提供するステップを更に含む、ことを特徴とする請求項１６による方法。
【請求項１８】
第１の物理ポートを通して前記第１のボリュームグループにアクセスするステップと、
前記複数の第１のボリュームを含む前記第１のボリュームグループを前記第１の物理ポートから前記第１のストレージ制御ユニット又は第２のストレージ制御ユニット内のいずれかにある第２の物理ポートに移動するステップ、を更に含み、
移動の後には、前記第１のボリュームグループは前記第２の物理ポートを経由してアクセスされ、
前記第１のプライオリティ設定は前記第１のボリュームグループと共に移動され、前記第２の物理ポートにて受信され前記第１のボリュームグループに向けられた通信に適用される、ことを特徴とする請求項１６による方法。
【請求項１９】
前記第１のストレージ制御ユニットと交信する第２のストレージ制御ユニット内に前記第２の物理ポートを提供するステップと、
前記第１のボリュームグループの移動の実行前に、前記第２のストレージ制御ユニットに第３のボリュームグループに指定された第２のプライオリティ設定が存在する時には、前記第２のストレージ制御ユニットにて得られる性能の全体量が前記第１のボリュームグループに対して指定された性能と該第３のボリュームグループに対して指定された性能の和を満たすのに十分であるか否かを判定するステップを更に含む、ことを特徴とする請求項１８による方法。
【請求項２０】
前記第２のストレージ制御ユニットで得られる前記性能の全体量が前記第１のボリュームグループに対して指定された前記性能と前記第３のボリュームグループに対して指定された前記性能の和を満たすのに十分でない時には、前記第１のボリュームグループの移動を受け付ける、代わりのストレージ制御ユニットを特定するステップを更に含む、ことを特徴とする請求項１９による方法。
【発明の詳細な説明】
【技術分野】
【０００１】
０００１    本発明は一般的に情報システム、ストレージシステム及びストレージエリアネットワーク（ＳＡＮ）に関連する。
【背景技術】
【０００２】
情報システムでは多数のサーバー（“ホストコンピュータ”とも呼ばれる）を単一のストレージシステム接続にすることがよく行われ得る。これらの多数のサーバーは単一のストレージシステムに頻繁にＩ／Ｏ（入／出力）要求を同時に発行する。これが起こると、一つのサーバーからのＩ／Ｏ要求は他のサーバーからのＩ／Ｏ要求を処理するストレージシステムの能力に容易に影響を与えてしまい、それによって他のサーバーの性能に影響を与えてしまうことになる。
【０００３】
０００２    この問題に対処する一つの方法はストレージシステム上の物理インタフェース（例えばチャネルポート）、ストレージデバイス、及びサーバー上の物理インタフェース間でプライオリティ制御を実行することである。例えばサーバー上の物理インタフェース間のプライオリティ制御は、適切なレベルの細かさでプライオリティ付けが可能なので、広く利用されている。従来からサーバー間のプライオリティ制御はサーバー上を走行するオペレーティングシステム（ＯＳ）に従って行われてきた。
【０００４】
０００４    関連する従来技術にはIdo他によるＵＳ特許７，１８１，６０７号“ストレージ制御装置”、及びIto他によるＵＳ特許６，７７９，０８３号“ストレージサブシステムの論理ユニットのセキュリティ”が含まれ、それらの全開示内容が本発明に援用される。
【０００５】
【特許文献１】米国特許広報７，１８１，６０７号
【特許文献２】米国特許広報６，７７９，０８３号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
０００２    しかしながら、サーバー上を走行するＯＳ又はアプリケーションが別のサーバーに移行されると、サーバー上の物理インタフェースの識別情報が変わるので、関連するストレージシステムのプライオリティ設定を変更する必要がある。更に、サーバーがＩ／Ｏ要求を発行しようとする仮想ポートがストレージシステム上の一つの物理インタフェースから別の物理インタフェースに移行されると、ストレージシステム上のプライオリティ設定は管理者によって新たな物理インタフェースに手動で転送されなければならない。
【０００７】
０００３    最近になって目立ち始めてきた別の問題は、情報施設（例えばデータセンター）でのサーバーによる消費電力量である。この問題に対処するために現在実行されつつある一つのソリューションは仮想マシーンソフトウェアの利用によるサーバー統合である。仮想マシーンソフトウェアは単一の物理サーバー（ホストコンピュータ）上で多重仮想サーバー環境（仮想マシーン又はＶＭ）を提供し、単一のサーバーが多数のＯＳを同時に走行させるのを可能にし、多数のＯＳのそれぞれはその上で一つ以上の別々のアプリケーションを走行させることを可能にしている。そのような仮想マシーン環境では、単一のサーバー上の多数のＯＳがサーバー上で一つの物理インタフェースを共有する状況がしばしば存在する。従ってそのような状況では、多数のＯＳは同じ物理ポートを使用しているのでどのＯＳがどのＩ／Ｏ要求の発信元かストレージシステムは区別できないので、多数のＯＳ間のプライオリティ制御は従来の技術を用いては達成することができない。
【課題を解決するための手段】
【０００８】
本発明の典型的な実施例はプライオリティ制御を可能にし及び／又はＯＳ又はアプリケーションの移行及び／又は仮想ポート又はボリュームの移動が生じたときにプライオリティ設定の移動を可能にするための方法、装置及びプログラムを含むコンピュータ読み取り可能媒体を提供する。本発明のこれらやその他の特徴や利点は以下の好適な実施例の詳細な説明に照らして当業者に明白になるであろう。
【発明を実施するための最良の形態】
【０００９】
００５０    以下の発明の詳細な説明に於いて開示の一部を構成する付随図面が参照され、そこでは発明が実施される典型的な実施例が、限定するためでなく説明のために示される。図面中ではいくつかの図面に亘って同様な番号は実質的に類似のコンポーネントを表す。更に、詳細な説明は以下に記述され図面で示されるような種々の典型的な実施例を提供するものであるが、本発明はここで説明され示される実施例に限定されるものでなく、当業者に知られているか知られるようになる他の実施例に展開できることに注意願いたい。明細書中で“一つの実施例”や“本実施例”と言及しているのはこの実施例に関連して説明される特定の特徴、構造又は特性が本発明の少なくとも一つの実施例に含まれることを意味し、明細書の種々の箇所でのこれらの語句の出現は必ずしもすべてが同じ実施例に関わるものでない。更に、以下の詳細な説明に於いて本発明の十分な理解を可能にするために数多くの具体的な詳細が説明されている。しかしながら、これらの具体的な詳細は本発明を実施するのに必ずしもすべてが必要なわけではないことが当業者には明らかであろう。他の状況下では、本発明を不必要に分かりにくくしない範囲で公知の構造、材料、回路、プロセス及びインタフェースは詳細には記述されておらず、更に／又はブロックダイアグラム形式で示されることもあり得る。
【００１０】
００５１    更に、後続する詳細な説明の或る部分はコンピュータ内のデータビットに関する操作のアルゴリズムや記号表現で表される。これらのアルゴリズム的記述や表現はデータ処理技術分野の当業者が該技術分野の他の当業者に彼らの仕事の本質を最も効果的に伝達するために使用される手段である。アルゴリズムとはここでも、一般的にも、望まれる結末の状態又は結果に導く一連の定義されたステップであると理解される。ステップとは物理量の物理的な操作を必要とするものである。必ずではなくても、通常これらの量は、記憶され、転送され、結合され、比較され、及びそれ以外の操作を行うことができる電気又は磁気信号の形式をとっている。これらの信号を、主に慣用されているという理由から、ビット、値、要素、シンボル、キャラクター、項、数、命令、等と呼ぶことが時には便利なことが分かってきた。しかしながら、これら及び同様な語のすべては適切な物理量に関連すべきであり、これらの量に適用される便宜的なラベルに過ぎないことを念頭に置くべきである。以下の説明で明らかなように、特に断らない限り、説明の全体を通じて“処理する”、“コンピュータで計算する”、“計算する”、“決定する”、“表示する”等の語を利用した説明は、コンピュータシステム、又はコンピュータシステムのレジスター及びメモリー内部の物理（電子）量として表わされるデータを操作して、同様にコンピュータシステムのメモリー又はレジスター又は他のこの種の情報記憶、転送、又は表示装置内の物理量として表される他のデータに変換する他の情報処理デバイス、の作用とプロセスを含み得る、ことは当然のことである。
【００１１】
００５２    本発明は更に、ここでの操作を遂行するための装置にも関係する。この装置は要求される目的のために特別に仕立てられるものであっても良いし、一つ以上のコンピュータプログラムによって一つ以上の汎用コンピュータが選択的に起動されるか再構成されるものであっても良い。このようなコンピュータプログラムは光ディスク、磁気ディスク、読み出し専用メモリー（ＲＯＭ）、ランダムアクセスメモリー（ＲＡＭ）、半導体デバイス及びドライブ、又は電子情報を記憶するのに適した任意の他のタイプの媒体の如きであって、これらに限定されないコンピュータ読み取り可能なストレージ媒体に記憶されても良い。ここで提供されるアルゴリズムや表示は本来いかなる特定のコンピュータ又は他の装置に結びつくものでない。種々の汎用システムがここでの教示に従うプログラムにより使用可能であるが、望ましい方法ステップを遂行するためにより専用の装置を構築するのが便利な場合もあるかもしれない。これらのシステムの多様な構造は以下に述べられる説明により明らかになるであろう。更に、本発明はいかなる特定のプログラム言語に関連して説明がなされるものでない。種々のプログラム言語がここで説明される本発明の教示を実行するために使用し得ることは当然である。プログラム言語の命令は例えば中央処理装置（ＣＰＵ）、プロセッサ、又はコントローラ、のような一つ以上の処理デバイスによって実行されよう。
【００１２】
００５３    以下により詳細に記述される本発明の典型的な実施例はストレージシステム上で仮想ポートを生成し管理し、更にストレージ制御ユニット内又はそれら間で仮想ポートやボリュームグループを移動するための装置、方法及びコンピュータプログラムを提供する。本発明の典型的な実施例は対応する物理ポートに対して生成された仮想ポート間でプライオリティを制御し、追跡することができるストレージ制御ユニットを実現する。典型的な実施例によれば、第１のストレージ制御ユニット上の第１の物理ポートに対して生成された仮想ポートが、例えば同じストレージ制御ユニット内又は他のストレージ制御ユニット上の、別の物理ポート（すなわち移動先物理ポート）に移動される時に、第１の物理ポートとストレージ制御ユニット上のプライオリティ設定がチェックされ、他の物理ポートに仮想ポートと共に移動される。このことは、仮想ポートのプライオリティ間の競合が行き先の物理ポートで起こらないことを確実にする。
【００１３】
００５４    第１の実施例−システム構成
００５５    図１は本発明が適用される情報システムの典型的な構成を示す。これらの実施例に於いて、一つ以上のホストコンピュータ１６０はフロントエンドＳＡＮ（ストレージエリアネットワーク）１７０を経由してストレージ制御ユニット１００と交信している。ストレージ制御ユニット１００は内部バス１０９を経由してお互いに接続されたＣＰＵ１０１、メモリー１０２、ＮＶＲＡＭ（不揮発メモリー）１０３、キャッシュメモリー１０４、ディスクコントローラ１０５、ＬＡＮ（ローカルエリアネットワーク）インタフェースコントローラ１０８及びＳＡＮインタフェースコントローラ１０７を有する。ＣＰＵ１０１はストレージ制御ユニット１００の制御を管理する。ＣＰＵ１０１はディスクコントローラ１０５、ＳＡＮインタフェースコントローラ１０７、ＬＡＮインタフェースコントローラ１０８、等を制御するためにメモリー１０２に記憶されたマイクロプログラムを実行する。本発明を実現するプログラムのいくつかはメモリー１０２に記憶された命令を用いてＣＰＵ１０１上で走行することができるが、命令は同時に又は別途に他のコンピュータ読み取り可能媒体上に記憶することもできる。ＮＶＲＡＭ１０３は電源がＯＦＦの場合も管理情報を維持することができる不揮発メモリーである。キャッシュメモリー１０４はＳＡＮインタフェースコントローラ１０７とディスクコントローラ１０５の間で交換されるデータを一時的に記憶する役目を果たす。
【００１４】
００５６    ディスクコントローラ１０５はＣＰＵ１０１から受信する命令に従ってディスクドライブ１０６とデータを交換する。ＣＰＵ１０１は、ディスクコントローラ１０５を経由していわゆるＲＡＩＤ（Redundant Array of Independent Disks）システムに適合するＲＡＩＤレベル(例えばＲＡＩＤ０、１又は５)に従う構成のディスクドライブ１０６を制御しても良い。このようなＲＡＩＤシステムに於いては複数のディスクドライブ１０６は一つのグループ（以後はＲＡＩＤグループと呼ぶ）として管理される。一つ以上の論理ボリューム（これも“論理ユニット”又は“ＬＵ”と呼ぶ）１１４が各ＲＡＩＤグループに形成され、ホスト１６０がアクセスするための論理ストレージとしての役目を果たす。ＬＵＮ（Logical Unit Number）と呼ぶ識別子が各論理ボリューム１１４に指定され、ホストコンピュータが特定のボリューム１１４を識別するのに用いられる。ＲＡＩＤ構成情報は、ＮＶＲＡＭ１０３に記憶されることができ、ＣＰＵ１０１がデータ読み出しプロセス又はデータ書き込みプロセスを実行する時に参照され得る。別の方法として他の実施例では、本発明の操作用の装置はディスクコントローラ１０５とディスクドライブ１０６は用意せず、それに代わって物理ストレージ容量を提供するために一つ以上の外部ストレージシステム１３０に頼ることもできる。更に、他の実施例では、一つ以上のストレージ制御ユニット１００を用いても良い。
【００１５】
００５７    ＳＡＮインタフェースコントローラ１０７はフロントエンドＳＡＮ１７０又はバックエンドＳＡＮ１２０に接続されるインタフェースコントローラである。これらのコントローラはＦＣ（Fibre Channel）ネットワークを経由して通信を送受信するように動作する。ＬＡＮインタフェースコントローラ１０８はＬＡＮ１５０を経由してサービスプロセッサ１４０に接続される。ＬＡＮ１５０はＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）プロトコルを用いてデータ送信が行われるイーサネット（Ｒ）ネットワークとすることができる。ＬＡＮ１５０はサービスプロセッサ１４０とストレージ制御ユニット１００との間の管理及び制御情報を交換するために使用できる。更に或る実施例では、インターネットのようなＷＡＮ（広域ネットワーク）がＬＡＮ１５０の代わりに使用されても良い。
【００１６】
００５８    ストレージ制御ユニット１００に物理容量を追加するために一つ以上の外部ストレージ制御ユニット１３０がストレージ制御ユニット１００に接続され、ストレージ制御ユニット１００によって管理されることもできる。外部ストレージ制御ユニット１３０はストレージ制御ユニット１００内に示されるものと同じコンポーネントを持つように構築することができる。しかしながら、通常は外部ストレージ制御ユニット１３０はストレージ制御ユニット１００に含まれるような他のストレージ制御ユニットを管理する機能は持たないであろう。外部ストレージ制御ユニット１３０はバックエンドＳＡＮ１２０を経由してストレージ制御ユニット１００に接続される。別案として、外部ストレージ制御ユニット１３０はＳＡＮ１２０なしに直接ストレージ制御ユニット１００に接続されても良い。
【００１７】
００５９    ストレージ制御ユニット１００は、外部ストレージ制御ユニット１３０内の論理ボリューム（又は論理ユニット、ＬＵ）を、ホスト１６０に対して、ストレージ制御ユニット１００の内部の論理ボリュームとして見せる、仮想化機能を有することができる。これらの仮想ボリュームは“仮想論理ユニット”又は“ＶＬＵ”とも呼ばれる。仮想ボリュームがストレージ制御ユニット１００上で使用されれば、ホストは特定のボリュームがストレージ制御ユニット１００上の論理ボリュームであるか、又は外部ストレージ制御ユニット１３０上の論理ボリュームに対応する仮想ボリュームであるかを知る必要はない。従って、外部ストレージ制御ユニット１３０との間でデータを読み書きする時には、ホスト１６０はストレージ制御ユニット１００内の仮想ＬＵにＩ／Ｏ（読み出し又は書き込み）要求を発行する。ストレージ制御ユニット１００は受信した要求を外部ストレージ制御ユニット１３０内の対応する論理ボリュームに向けられる対応するＩ／Ｏ要求（それぞれ読み出し又は書き込みコマンド）に変換する。更に他の実施例では、外部ストレージ制御ユニット１３０を置かないこともできる。その場合、ストレージ制御ユニット１００は、まさに内部ディスクドライブ１０６を用いて論理ボリュームを提供する。
【００１８】
００６０    バックエンドＳＡＮ１２０はストレージ制御ユニット１００と外部ストレージ制御ユニット１３０の間の交信を仲介する、ＦＣ−ＳＷ（Fibre Channel Switched Fabric）基準に適合した、一つ以上のＦＣスイッチ１８０を有することができる。本発明の実施例はフロントエンドＳＡＮ１７０とバックエンドＳＡＮ１２０の両方の役目を果たす一つのＳＡＮを配置しても良いし、あるいは図示のように二つの別々のＳＡＮを用いても良い。外部ストレージ制御ユニット１３０が存在しない場合、バックエンドＳＡＮ１２０は必要でない。フロントエンドＳＡＮ１７０も又ホスト１６０とストレージ制御ユニット１００の間の交信を仲介する、ＦＣ−ＳＷ（Fibre Channel Switched Fabric）基準に適合した、一つ以上のＦＣスイッチ１８０を有することができる。或る実施例では、同じ一つ以上のＦＣスイッチ１８０をフロントエンドＳＡＮ１７０とバックエンドＳＡＮ１２０の両方に使用することができる。  
００６１    ホスト１６０は、例えばパーソナルコンピュータ、ワークステーション、メインフレームコンピュータ、等でよい。ホスト１６０はデータベースアプリケーション、サーバーアプリケーション、等のアプリケーションプログラムを実行し、ストレージ制御ユニット１００に処理結果を書き込み、その中に記憶された情報リソース（即ちデータ）を利用する。図２に示すように、ホスト１６０は通常ＣＰＵ２０１、メモリー２０２、ストレージデバイス２０３、ＦＣインタフェースコントローラでよいＳＡＮインタフェースコントローラ２０４、及びイーサネット（Ｒ）インタフェースコントローラでよいＬＡＮインタフェースコントローラ２０５から構成することができる。これらのコンポーネントは内部バス２０６を経由してお互いに接続される。ホスト１６０はフロントエンドＳＡＮ１７０を経由してＳＡＮインタフェースコントローラ２０４を通してストレージ制御ユニット１００に接続される。
【００１９】
００６２    同様に図２に示されるように、サービスプロセッサ１４０はホスト１６０と同じハードウェアコンポーネントを有することができ、管理操作等を実行するために、ＬＡＮ１５０を経由してストレージ制御ユニット１００に接続される。例えば、サービスプロセッサ１４０はストレージ制御ユニット１００に関する構成設定及び操作情報取得を実行するために使用することができる。サービスプロセッサ１４０を使用する管理者はサービスプロセッサ１４０を通してストレージ制御ユニット１００内の論理ボリュームの生成、ホスト１６０への論理ボリュームの割り付け、ゾーニング、及びＬＵＮマスキング設定を実行することができる。
【００２０】
００６３    図２７に示すように、ＦＣスイッチ１８０は通常ＣＰＵ１８１、メモリー１８２、ＮＶＲＡＭ１８３、キャッシュメモリー１８４、及び複数のＦＣインタフェースコントローラ１８５を有することができる。ＦＣスイッチ１８０が一つ以上のホスト１６０、一つ以上のストレージ制御ユニット１００、及び一つ以上の外部ストレージ制御ユニット１３０間を仲介できるという条件では、本発明はフロントエンドＦＣスイッチとバックエンドＦＣスイッチの両方の役目を果たす一つのＦＣスイッチで実現することができる。
【００２１】
００６４    ソフトウェアモジュール
００６５    図３に示すように、これらの典型的な実施例に於いては、本発明を実行する時にストレージ制御ユニット１００が使用するいくつかの異なった種類のソフトウェアモジュールが存在する。これらのソフトウェアモジュールは、ストレージ制御ユニット１００上のメモリー１０２又は他のコンピュータ読み取り可能媒体に、ロードされるか又は記憶されることができる。更に、本発明が使用するいくつかの異なった管理テーブルをストレージ制御ユニット１００上のＮＶＲＡＭ１０３又は他のコンピュータ読み取り可能媒体に記憶することができる。モジュールの一つは、ストレージ制御ユニット１００内のボリュームグループマッピングテーブル３０４を用いてストレージ制御ユニット１００上のＶＬＵと外部ストレージ制御ユニット１３０上のＬＵとの間のマッピングを管理する、ボリュームグループマネージャ３０１である。ボリュームグループマネージャ３０１は又どのホストにＶＬＵがエクスポートされるか制御し、決定する。例えば、ＶＬＵは以下に更に説明するように、ボリュームグループを形成するために仮想Ｎ＿ポートに適合させることができ、どの仮想Ｎ＿ポートを通してＶＬＵがホストにエクスポートされるか決定することによりＶＬＵがボリュームグループマネージャ３０１によってエクスポートされる。ＶＬＵはストレージ制御ユニット１００内のボリュームグループマッピングテーブル３０４を用いて仮想Ｎ＿ポートが連結している物理Ｎ＿ポート上のＬＵにマップされる。
【００２２】
００６６    物理パスマネージャ３０２はストレージ制御ユニット１００上に存在する物理Ｎ＿ポートを管理する。物理パスマネージャは各物理Ｎ＿ポートがどのホスト１６０又は外部ストレージ制御ユニット１３０に到達することができるか制御するために物理ポートを管理し、更に、ストレージ制御ユニット１００内の物理パス管理テーブル３０５を用いて各物理Ｎ＿ポートの状態を監視する。
【００２３】
００６７    Ｉ／Ｏプロセスモジュール３０３はホスト１６０からＩ／Ｏ読み出し／書き込み要求を受信し処理する。各Ｉ／Ｏプロセスの開始時にＩ／Ｏプロセスモジュール３０３はプライオリティ管理テーブル３０６に基づきＩ／Ｏプロセスが開始可能か否か判定する。
【００２４】
００６８    プライオリティマネージャ３０４はサービスプロセッサ１４０を通しての管理者からの命令に従ってプライオリティ管理テーブル３０６の設定を変更する。ボリュームグループマッピングテーブル３０４、物理パス管理テーブル３０５、及びプライオリティ管理テーブル３０６は以下に更に説明される。
【００２５】
００６９    ファイバーチャネルプロトコル
００７０    ファイバーチャネルインタフェースを持つデバイスを“ノード”と呼び、インタフェースに対応する物理ターミナルを“ポート”と呼ぶ。一つのノードは一つ以上のポートを持つ。ファイバチャネルシステム全体で同時に参加できるポートの数は最大２４ビットのアドレス数即ち２の２４乗（１６，７７７，２１６）である。これらの接続を仲介するファイバーチャネル（ＦＣ）スイッチのようなハードウェアを“ファブリック”又は“スイッチングファブリック”と呼ぶ。各ノードの各ポートは“Ｎ＿ポート”と呼ばれ、ＦＣスイッチ上のポートは“Ｆ＿ポート”と呼ばれる。この説明に於いては、ホスト１６０、ストレージ制御ユニット１００及び外部ストレージ制御ユニット１３０を“ノード”と呼び、“Ｎ＿ポート”は各ノードの各ＳＡＮインタフェースコントローラ１０７に対応し、“Ｆ＿ポート”はＦＣスイッチ１８０のＦＣインタフェースコントローラ１８５に対応する。このようにして、図１の構成に於いて、フロントエンドＦＣスイッチ１８０ａと交信するＳＡＮインタフェースコントローラ１０７を“フロントエンド物理ポート”と呼ぶことが出来、バックエンドＦＣスイッチ１８０ｂと交信するＳＡＮインタフェースコントローラ１０７を“バックエンド物理ポート”と呼ぶことが出来る。フロントエンドとバックエンドＦＣスイッチの両方の役目を果たす唯一のＦＣスイッチが存在する状況下では、単一のＳＡＮインタフェースコントローラ１０７は、以下に更に説明するように、各物理ポートに割り当てられる多数の仮想ポートの使用によりフロントエンド及びバックエンド物理ポートの両者として動作することができる。更に、単一のＦＣスイッチと通信するために多数の物理ポートを各ストレージ制御ユニット上に提供することができる。
【００２６】
００７１    各ノード及びＮ＿ポートは、ワールドワイドに固有であって、標準化機構であるＩＥＥＥ（Institute of Electrical and Electronics Engineers, Inc.）によって予め定められたルールに従って指定される識別データを記憶する。この識別データはワールドワイドに固有なので、特定のポートを識別するための主要な識別子として役立つアドレスとして、“ＷＷＮ”（World Wide Name）と呼ばれる。ＦＣネットワークでのＷＷＮはＩＰネットワークで用いられるＭＡＣアドレスと類似のハードウェアに固定のアドレスである。ＦＣネットワークには２種類のＷＷＮアドレスが存在する。即ち、Ｎ_ポート_名及びノード_名であり、それぞれ８バイトのサイズを有する。Ｎ_ポート_名は各ポートに固有な値（ハードウェアアドレス）であり、ノード＿名は各ノードに固有な値（ハードウェアアドレス）である。本発明の例では、“ＷＷＰＮ”（World Wide Port Name）の語はＮ_ポート_名を表す。
【００２７】
００７２    Ｎ＿ポートがファブリックに接続される時、Ｎ＿ポート＿ＩＤと呼ばれるファブリック内での固有なＩＤがファブリックを仲介するＦＣスイッチによって各Ｎ＿ポートに指定される。ＦＣスイッチはＮ＿ポート＿ＩＤに基づきＦＣスイッチに接続されるノード間の伝達のルートを決める。ファイバーチャネルプロトコルはＮ＿ポートがその上に追加のＷＷＰＮを生成し、各追加のＷＷＰＮに指定される追加のＮ＿ポート＿ＩＤを持つことを可能にする。これが、“Ｎ＿ポート＿ＩＤ仮想化”又は“ＮＰＩＶ”と呼ばれるポート仮想化機能である。追加のＷＷＰＮは通常、ファブリック内で固有となるように各デバイス上で自動的に決定される。ハードウェアアドレスとしてのＷＷＰＮとダイナミックに生成された追加のアドレスとしてのＷＷＰＮとの区別を明確にするために、本説明ではハードウェアアドレスとしてのＷＷＰＮに対して“物理ＷＷＰＮ”及び“物理Ｎ＿ポート”の用語を使用し、物理Ｎ＿ポート上に追加のアドレスとしてダイナミックに生成されたＷＷＰＮに対して“仮想ＷＷＰＮ”及び“仮想Ｎ＿ポート”の用語を使用することにする。
【００２８】
００７３    ファイバーチャネルプロトコルでは、“オーダーセット”と呼ばれる信号レベルの情報と“フレーム”と呼ばれる固定フォーマットの論理情報を使用して、通信が実行される。基本的にＩ／Ｏ要求発信元は一つ以上のフレームを伝送することでＩ／Ｏプロセスを起動し、受信側は受信したフレームに応答して動作する。本発明では、フロントエンドＦＣスイッチ１８０ａが仲介するＳＡＮ内ではホスト１６０が発信元に対応し、ストレージ制御ユニット１００が受信側に対応する。一方、バックエンドＦＣスイッチ１８０ｂが仲介するＳＡＮ内ではストレージ制御ユニット１００が発信元に対応し、外部ストレージ制御ユニット１３０が受信側に対応する。
【００２９】
００７４    図２８はフレームの構造を示す。各フレーム２８０１は、フレームの開始を表わし“ＳＯＦ”（Start Of Frame）２８０２と呼ばれる４バイトの識別データ、リンク操作及びフレームの制御を特徴付ける２４バイトのフレームヘッダー２８０３、実際に転送されるオブジェクトであるデータ部分としてのデータフィールド２８０４、４バイトのＣＲＣ（Cyclic Redundancy Code）２８０５、及びフレームの終了を表す“ＥＯＦ”（End Of Frame）２８０６と呼ばれる４バイトの識別データを、有する。データフィールド２８０４は０から２，１１２バイトまで可変である。フレームヘッダー２８０３の構造に関しては、フレームヘッダー２８０３内のＤ＿ＩＤ２８０８、Ｓ＿ＩＤ２８０９、ＳＥＱ＿ＩＤ２８１０、及びＳＥＱ＿ＣＮＴ２８１１に関してのみ説明しよう。Ｄ＿ＩＤ（行き先ＩＤ）２８０８及びＳ＿ＩＤ（ソースＩＤ）２８０９はそれぞれ、フレームを受信するＮ＿ポート及びフレームを送信するＮ＿ポートを識別する３バイトのアドレス識別データであり、送受信されるすべてのフレームに対して有効な値を持っている。ファイバーチャネル基準の標準セットの一つであるＦＣ−ＰＨ（Fibre Channel Physical and Signaling Interface）基準は“ファブリックログイン”と呼ばれる初期化手順の間にファブリックがＤ＿ＩＤ２８０８とＳ＿ＩＤ２８０９を割り当てるように要求する。ファブリックログインの詳細な説明は後で行う。ＳＥＱ_ＩＤ(Sequence ID)２８１０は各フレームのシーケンスに対して固有な識別子である。ここでシーケンスとは発信元と受信側との間のトランザクションを構成するフレームのグループである。ＳＥＱ＿ＣＮＴ（Sequence Count）２８１１はシーケンス内のフレームの番号である。受信側ではＳＥＱ＿ＩＤ２８１０を参照することで属するフレームのシーケンスを識別し、ＳＥＱ＿ＣＮＴ２８１１を参照して各シーケンス内の受信したフレームをソートできる。
【００３０】
００７５    物理Ｎ＿ポートに対するファブリックログイン手順
００７６    ファブリックに参入するために、ファブリックに接続されるすべてのＮ＿ポートは初めにファブリックログインを遂行する必要がある。ファブリックログインにより、ＦＣスイッチは各Ｎ＿ポートにＮ＿ポート＿ＩＤを指定し、次いでＦＣスイッチ上のＮ＿ポートに対するルート情報を決める。物理Ｎ＿ポートに対して用いられるログイン手順は仮想Ｎ＿ポートに対して用いられるログイン手順とわずかばかり異なっている。
【００３１】
００７７    図２９はノード上の物理Ｎ＿ポート２９０１とＦＣスイッチ上のＦ＿ポート２９０２間の情報交換を示す。通常、このログイン手順は物理Ｎ＿ポートが最初にＦＣスイッチ上のＦ＿ポートに物理的に接続される時に行われる。最初に、ステップ２９０３で示すように、物理Ｎ＿ポート２９０１は固定Ｄ＿ＩＤ（０ｘＦＦＦＦＦＥ）２８０８、固定Ｓ＿ＩＤ（０ｘ００００００）２８０９、及び物理Ｎ＿ポート２９０１のＮ_ポート_名（物理ＷＷＰＮ）及びノード＿名を含むＦＬＯＧＩフレームを送信する。次いで、ステップ２９０４で、Ｆ＿ポート２９０２を有するＦＣスイッチがＦＣ−ＰＨ基準に基づき、物理Ｎ＿ポート２９０１のＷＷＰＮに対して使用されるＮ＿ポート＿ＩＤを決定する。Ｎ＿ポート＿ＩＤを決定後ステップ２９０５でＦ＿ポート２９０２を有するＦＣスイッチはＮ＿ポート＿ＩＤに対するルート情報を決定し、ステップ２９０６で決定したＮ＿ポート＿ＩＤを物理Ｎ＿ポート２９０１に返送する。Ｎ＿ポート＿ＩＤを受信後ステップ２９０７で、物理Ｎ＿ポート２９０１は受信したＮ＿ポート＿ＩＤを自らのＮ＿ポート＿ＩＤとみなし、Ｓ＿ＩＤ２８０９として自らのＮ＿ポート＿ＩＤ、Ｎ_ポート_名（物理ＷＷＰＮ）及びノード＿名を持つＰＬＯＧＩフレームをＦ＿ポート２９０２に送信する。これに応答して、ステップ２９０８でＦ＿ポート２９０２を有するＦＣスイッチはファブリック内にログオンしている他のすべてのアクセスできるＮ＿ポートのＤ＿ＩＤ（Ｎ＿ポート＿ＩＤ）、Ｎ＿ポート＿名（物理ＷＷＰＮと仮想ＷＷＰＮの両方）及びノード＿名のリストを返送する。この手順を通して、Ｎ＿ポート２９０１を有する装置はファブリック上の各Ｎ＿ポートに対しＮ＿ポート＿ＩＤとＮ＿ポート＿名（即ち物理ＷＷＰＮ及び仮想ＷＷＰＮの両方）間の対応を得ることができる。
【００３２】
００７８    Ｎ＿ポート＿ＩＤの仮想化及び仮想Ｎ＿ポートに対するファブリックログイン
００７９    ファイバーチャネルプロトコルの一部としてＮ＿ポート＿ＩＤの仮想化（ＮＰＩＶ）が定義される。この機能は物理Ｎ＿ポートに、その上に多数の仮想Ｎ＿ポートが生成されるのを可能にする。各仮想Ｎ＿ポートに対する仮想ＷＷＰＮが各Ｎ＿ポート上で決定され、各仮想ＷＷＰＮに対するＮ＿ポート＿ＩＤを獲得するために各仮想ＷＷPＮに対する追加のログイン手順が、図２９の手順を使用して既にファブリックにログイン済の物理Ｎ＿ポートを通してログイン要求を送信することにより遂行される。
【００３３】
００８０    図３０は仮想Ｎ＿ポート３００１とＦ＿ポート３００２を有するＦＣスイッチ間の情報交換を示す。図３０に示される手順は、当該仮想ＷＷＰＮに連結し、図２９に示すファブリックログイン手順が既に実行済の物理Ｎ＿ポートを経由して遂行される。手順自体は図２９で示した物理Ｎ＿ポートに対するファブリックログイン手順とほとんど同じである。しかしながら、ステップ３００３に示すように、Ｎ＿ポートから送信されるファブリックログイン要求が仮想ＷＷＰＮに対してであることをＦ＿ポート３００２を有するＦＣスイッチが決定できるように、ＦＬＯＧＩ要求の代りにＦＤＩＳＣ要求が仮想ＷＷＰＮに対して使用される。次いでステップ３００４で、Ｆ＿ポート３００２を有するＦＣスイッチはＦＣ−ＰＨ基準に基づき仮想Ｎ＿ポート３００１の仮想ＷＷＰＮに対して使用されるＮ＿ポート＿ＩＤを決定する。Ｎ＿ポート＿ＩＤを決定した後ステップ３００５で、Ｆ＿ポート３００２を有するＦＣスイッチはＮ＿ポート＿ＩＤに対するルート情報を定め、ステップ３００６で仮想Ｎ＿ポート３００1に対して決定したＮ＿ポート＿ＩＤを返送する。Ｎ＿ポート＿ＩＤを受信後、ステップ３００７で仮想Ｎ＿ポート３００１は受信したＮ＿ポート＿ＩＤを自らのＮ＿ポート＿ＩＤとみなし、Ｓ＿ＩＤ２８０９として自らのＮ＿ポート＿ＩＤ、Ｎ＿ポート＿名（仮想ＷＷＰＮ）及びノード＿名を持つＰＬＯＧＩフレームをＦ＿ポート３００２に送信する。これに応答して、ステップ３００８で、Ｆ＿ポート３００２を有するＦＣスイッチは、ファブリックログオン済の他のすべてのアクセスできるＮ＿ポートのＤ＿ＩＤ (Ｎ＿ポート＿ＩＤ)、Ｎ＿ポート＿名（物理ＷＷＰＮと仮想ＷＷＰＮの両方）及びノード＿名のリストを返送する。
【００３４】
００８１    指定済のＮ＿ポート＿ＩＤの再使用
００８２    これまでのところ、指定済のＮ＿ポート＿ＩＤを再使用し、又はＮ＿ポートによりＦＣスイッチから特定のＮ＿ポート＿ＩＤを要求するためのいかなるプロトコルもファイバーチャネルプロトコルに於いて定義されていない。しかしながらそのような機能を実行する方法がここで、ＦＣネットワーク内のＮ＿ポート＿ＩＤをＴＣＰ／ＩＰネットワーク内のＩＰアドレスに対応させることでＴＣＰ／ＩＰ内の異なったＭＡＣアドレスを有する物理ポート間のＩＰアドレスの移動と同様にモデル化される。ＴＣＰ／ＩＰではＩＰアドレスは異なったＭＡＣアドレスを有する物理ポート間で移動することができ、その結果ＩＰアドレスは再使用可能になり、ＩＰアドレスが異なったＭＡＣアドレスを有する別の物理ポートに移動した場合でも、クライアントホストがクライアントホストの構成を変更せずにＩＰアドレスを通してエクスポートされたサービスにアクセス可能になる。ＴＣＰ／ＩＰでは、ＩＰアドレスを別の物理ポートに移動する必要があることをネットワークスイッチに知らせるために、ＡＲＰコマンドが使用される。このコマンドに応答して、ネットワークスイッチはＩＰアドレスに対してルート情報を変更する。
【００３５】
００８３    本発明では、ＴＣＰ／ＩＰネットワークに於けるように、仮想Ｎ＿ポートは既存のＮ＿ポート＿ＩＤ、即ち図３０で述べた手順等を用いて予め遂行されたファブリックログイン手順により指定されたＮ＿ポート＿ＩＤ、を使用する要求を発行できるものと仮定する。例として、仮想Ｎ＿ポートを別の物理Ｎ＿ポートに移動する必要があることをＦＣスイッチに知らせるために、ＦＤＩＳＣコマンドを使用するものと仮定する。
【００３６】
００８４    図３１は既存のＮ＿ポート＿ＩＤを再使用するため、又はＦ＿ポート３１０２を有するＦＣスイッチから仮想Ｎ＿ポートに対する特定のＮ＿ポート＿ＩＤを要求するための、仮想Ｎ＿ポート３１０１に於けるファブリックログイン手順の例を示す。ステップ３１０３で、仮想Ｎ＿ポートは既存のＮ＿ポート＿ＩＤをＳ＿ＩＤフィールド２８０９にセットしたＦＤＩＳＣ要求を送信する。この要求に応答して、ステップ３１０４で、Ｆ＿ポート３１０２を有するＦＣスイッチはこのＮ＿ポート＿ＩＤが別のＷＷＰＮに対して使用されているか（即ち既に指定されているか）否かをチェックする。もしＮ＿ポート＿ＩＤが既に別のＷＷＰＮに指定されている場合は、ステップ３１０５でＦ＿ポート３１０２を有するＦＣスイッチはこの要求を拒否する。一方、要求されたＮ＿ポート＿ＩＤが他のＷＷＰＮにまだ指定されていないならば、ステップ３１０６で、Ｆ＿ポート３１０２を有するＦＣスイッチは自らのルート情報内のＮ＿ポート＿ＩＤに対してルート情報を変更し、ステップ３１０７でＦ＿ポート３１０２を有するＦＣスイッチは要求が受け入れられたことを知らせるために仮想Ｎ＿ポート３１０２に同じＮ＿ポート＿ＩＤを返送する。
【００３７】
００８５    ノードログイン手順
００８６    ファイバーチャネルプロトコルでは、発信元が受信側にフレームの送信を開始する前に、発信元のＮ＿ポートはポートログインと呼ばれる手順を用いて受信側のＮ＿ポートにログインする必要がある。図３２は発信元Ｎ＿ポート３２０１と受信側Ｎ＿ポート３２０２間の情報交換を示す。この手順は物理Ｎ＿ポートと仮想Ｎ＿ポートの両者に対して同じである。最初にステップ３２０３で発信元Ｎ＿ポート３２０１は受信側Ｎ＿ポート３２０２にＰＬＯＧＩフレーム３２０３を送信する。この要求はＮ＿ポート＿名（物理ＷＷＰＮ又は仮想ＷＷＰＮ）、ノード＿名、Ｓ＿ＩＤ及び発信元Ｎ＿ポート３２０１の他の情報を含んでいる。ＰＬＯＧＩ要求を受信後、受信側Ｎ＿ポート３２０２は要求に含まれる情報を保存する。この要求を承認する時は、受信側Ｎ＿ポート３２０２は発信元Ｎ＿ポート３２０１に“ＡＣＣ”３２０４と呼ばれるフレームを送信する。この要求を拒否する時は、受信側Ｎ＿ポート３２０２は発信元Ｎ＿ポート３２０１に“ＬＳ＿ＲＪＴ”３２０５と呼ばれるフレームを送信する。発信元Ｎ＿ポートがＰＬＯＧＩフレームに応答してＡＣＣフレームを含む応答を受信した時は、発信元Ｎ＿ポート３２０１はログインが成功したことを知り、受信側Ｎ＿ポート３２０２にＩ／Ｏ要求の送信を開始することができる。しかしながら発信元がＬＳ＿ＲＪＴフレームを受信した時は、発信元Ｎ＿ポート３２０１はログインが成立しなかったことを知り、受信側Ｎ＿ポート３２０２へのＩ／Ｏ要求の送信が許可されないことを知る。
【００３８】
００８７    管理テーブル
００８８    図４Ａは本発明に従うポート及び論理ボリュームの可能な構成を示す図である。この構成は多くの可能な構成の一つの例であり、本発明の更なる詳細を説明するために使用される。物理ＷＷＰＮは“ＷＷＰＮ＿＃”（＃は個々のポートに対する番号で置き換えられる）の名前で表わされ、物理ＷＷＰＮに指定されるＮ＿ポート＿ＩＤは“Ｎ＿ポート＿ＩＤ＿＃”の名前で表わされる。仮想ＷＷＰＮは“ＷＷＰＮ＿Ｖ＃”（＃は個々の仮想ポートに対する番号で置き換えられる）の名前で表わされ、仮想ＷＷＰＮに指定されるＮ＿ポート＿ＩＤは“Ｎ＿ポート＿ＩＤ＿Ｖ＃”の名前で表わされる。
【００３９】
００８９    例えばホスト１６０上のＳＡＮインタフェースコントローラ２０４（Ｎ＿ポート）はその物理ＷＷＰＮとして“ＷＷＰＮ＿１”を持ち、そのＮ＿ポート＿ＩＤとしてフロントエンドＳＡＮ１７０により指定された“Ｎ＿ポート＿ＩＤ＿１”を持つ。更に、ストレージ制御ユニット１００上のＳＡＮインタフェースコントローラ１０７ａはフロントエンドＳＡＮ１７０に接続され、その物理ＷＷＰＮとして“ＷＷＰＮ＿２”を持ち、そのＮ＿ポート＿ＩＤとしてフロントエンドＳＡＮ１７０によって指定された“Ｎ＿ポート＿ＩＤ＿２”を持つ。更に、ストレージ制御ユニット１００上のＳＡＮインタフェースコントローラ１０７ｄはフロントエンドＳＡＮ１７０に接続され、その物理ＷＷＰＮとして“ＷＷＰＮ＿３”を持ち、そのＮ＿ポート＿ＩＤとしてフロントエンドＳＡＮ１７０によって指定された“Ｎ＿ポート＿ＩＤ＿３”を持つ。更に、ストレージ制御ユニット１００上のＳＡＮインタフェースコントローラ１０７ｂはバックエンドＳＡＮ１２０に接続され、その物理ＷＷＰＮとして“ＷＷＰＮ＿５”を持ち、そのＮ＿ポート＿ＩＤとしてバックエンドＳＡＮ１２０によって指定された“Ｎ＿ポート＿ＩＤ＿５”を持つ。更に、ストレージ制御ユニット１００上のＳＡＮインタフェースコントローラ１０７ｅはバックエンドＳＡＮ１２０に接続され、その物理ＷＷＰＮとして“ＷＷＰＮ＿６”を持ち、そのＮ＿ポート＿ＩＤとしてバックエンドＳＡＮ１２０によって指定された“Ｎ＿ポート＿ＩＤ＿６”を持つ。更に、外部ストレージ制御ユニット１３０上のＳＡＮインタフェースコントローラ１０７ｃはその物理ＷＷＰＮとして“ＷＷＰＮ＿８”を持ち、そのＮ＿ポート＿ＩＤとしてバックエンドＳＡＮ１２０によって指定された“Ｎ＿ポート＿ＩＤ＿８”を持つ。
【００４０】
００９０    更に、ストレージ制御ユニット１００の物理ポートに仮想ポートを生成することができる。例えば図示の実施例ではストレージ制御ユニット１００は仮想ＷＷＰＮとして“ＷＷＰＮ＿Ｖ１”を持ち、フロントエンドＳＮ１７０によってそのＮ＿ポート＿ＩＤとしてこの仮想ＷＷＰＮに指定された“Ｎ＿ポート＿ＩＤ＿Ｖ１”を持つ。仮想ＷＷＰＮ“ＷＷＰＮ＿Ｖ１”は現在物理Ｎ＿ポートＷＷＰＮ＿２に連結している。同様に、“ＷＷＰＮ＿Ｖ２”は仮想ＷＷＰＮであり、“Ｎ＿ポート＿ＩＤ＿Ｖ２”がフロントエンドＳＡＮ１７０によりそのＮ＿ポート＿ＩＤとしてこの仮想ＷＷＰＮに指定されている。仮想ＷＷＰＮ“ＷＷＰＮ＿Ｖ２”も又現在物理Ｎ＿ポートＷＷＰＮ＿２に連結している。更に、“ＷＷＰＮ＿Ｖ５”は仮想ＷＷＰＮであり、“Ｎ＿ポート＿ＩＤ＿Ｖ５”はフロントエンドＳＡＮ１７０によりそのＮ＿ポート＿ＩＤとしてこの仮想ＷＷＰＮに指定されている。仮想ＷＷＰＮ“ＷＷＰＮ＿Ｖ５”は現在物理Ｎ＿ポートＷＷＰＮ＿３に連結している。
【００４１】
００９１    更に、ボリュームグループ１３８は論理又は仮想ボリュームのグループとして構成することができる。ボリュームグループ１３８には特定のグループのボリュームに向けられるＩ／Ｏ操作に適用されるプライオリティ設定を指定することができる。ボリュームグループ１３８も又連結する仮想ポートを含むことができる。例えばボリュームグループ１  １３８−１はＶＬＵ１、ＶＬＵ２、及び仮想ポートＷＷＰＮ＿Ｖ１、とＷＷＰＮ＿Ｖ３を含み、ボリュームグループ２  １３８−２はＶＬＵ３、ＶＬＵ４、及び仮想ポートＷＷＰＮ＿Ｖ２とＷＷＰＮ＿Ｖ４を含み、ボリュームグループ３  １３８−３はＬＵ１１、ＬＵ１２、及び仮想ポートＷＷＰＮ＿Ｖ５を含む。ボリュームグループ３はＳＡＮインタフェースコントローラ１０７ｄに対応する物理ポートＷＷＰＮ＿３を通して通信する。本実施例では論理ボリュームＬＵ１１、ＬＵ１２は図１に示すローカルストレージ媒体１０６上に生成されるので、グループ３はバックエンドポートＷＷＰＮ＿６へのバックエンド接続を必要としない。
【００４２】
００９２    図４Ａの例示の構成に示すように、外部ストレージ制御ユニット１３０はＷＷＰＮ＿８を通して四つの論理ユニット（ＬＵ）１３４（ＬＵ１からＬＵ４）をエクスポートする。ストレージ制御ユニット１００はＬＵ１３４を管理し、仮想論理ユニット（ＶＬＵ）１３３としてホスト１６０にエクスポートする。例えば、ＬＵ１はＶＬＵ１としてホスト１６０に提供され、ＬＵ２はＶＬＵ２としてホスト１６０に提供され、ＬＵ３はＶＬＵ３としてホスト１６０に提供され、ＬＵ４はＶＬＵ４としてホスト１６０に提供される。こうして、ホスト１６０は、ストレージ制御ユニット１００上に存在する論理ボリュームであるかのように仮想ボリュームＶＬＵ１〜ＶＬＵ４をアクセスして使用でき、一方ストレージ制御ユニット１００は外部ストレージ制御ユニット１３０上のＬＵ１〜ＬＵ４により与えられる物理ストレージ容量をそれぞれＶＬＵ１〜ＶＬＵ４の容量として使用する。図示の実施例に於いて、ＶＬＵ１とＶＬＵ２は仮想ポート名ＷＷＰＮ＿Ｖ１を通してエクスポートされ、仮想ポート名ＷＷＰＮ＿Ｖ３を用いてＬＵ１とＬＵ２にマップされる。同様にＶＬＵ３とＶＬＵ４は仮想ポート名ＷＷＰＮ＿Ｖ２を通してエクスポートされ、仮想ポート名ＷＷＰＮ＿Ｖ４を用いてＬＵ３とＬＵ４にマップされる。
【００４３】
００９３    この構成に従い、例えば、ホスト１６０上にワールドワイドのポート名ＷＷＰＮ＿１を有するＮ_ポートが外部ストレージ制御ユニット１３０上のＬＵ１に記憶されたデータにアクセスする時には、ポートＷＷＰＮ＿１は図２８に示すフレーム２８０１のような第１のフレームを持つＩ／Ｏ要求を送信する。第１のフレームはＳ＿ＩＤ２８０９として“Ｎ＿ポート＿ＩＤ＿１”を持ちＤ＿ＩＤ２８０８として“Ｎ＿ポート＿ＩＤ＿Ｖ１”を持つＩ／Ｏ要求を含む。フレームを受信の後、ストレージ制御ユニット１００は外部ストレージ１３０にＳ＿ＩＤ２８０９として“Ｎ＿ポート＿ＩＤ＿Ｖ３”を持ち、Ｄ＿ＩＤ２８０８として“Ｎ＿ポート＿ＩＤ＿８”を持つ第２のフレームを持つ変換されたＩ／Ｏ要求を送信する。第２のフレーム及び関連するＩ／Ｏ要求の受信に応答して、外部ストレージ制御ユニット１３０は、Ｓ＿ＩＤ２８０９として“Ｎ＿ポート＿ＩＤ＿８”を持ち、Ｄ＿ＩＤ２８０８として“Ｎ＿ポート＿ＩＤ＿Ｖ３”を持つＩ／Ｏ要求への応答を含む第３のフレームを返送する。第３のフレームを受信の後、ストレージ制御ユニット１００はＳ＿ＩＤ２８０９として“Ｎ＿ポート＿ＩＤ＿Ｖ１”を持ちＤ＿ＩＤ２８０８として“Ｎ＿ポート＿ＩＤ＿１”を持つ変換された応答を含む第４のフレームを送信する。
【００４４】
００９４    更に、ボリュームグループに対して又は特定の仮想ポートに対してプライオリティを設定できる。例えば、ボリュームグループ１（グループ１）  １３８−１はボリュームＶＬＵ１とＶＬＵ２に向けられたＩ／Ｏ操作にグループ２ボリュームＶＬＵ３とＶＬＵ４に向けられたＩ／Ｏ操作よりも優先するプライオリティを設定することができる。こうして、グループ１  １３８−１はプライオリティグループと、グループ２  １３８−２は非プライオリティグループとみなすことができる。プライオリティは管理者によって指定することができ、ホスト１６０上で走行するアプリケーション又はオペレーティングシステムのプライオリティ、又は他の条件、等の種々の要因に基づいて決定することができる。更に、ボリュームグループに代わって各フロントエンド仮想ポートに対して、プライオリティを設定することができる。例えば、特定の仮想ポートを通してどんなボリューム又は仮想ボリュームがアクセスされるかにかかわらず、ＷＷＰＮ＿Ｖ１にはプライオリティを指定し、ＷＷＰＮ＿Ｖ２には、非プライオリティを指定することができる。
【００４５】
００９５    或る時点で、例えばボリュームグループ１  １３８−１を負荷バランス等のために物理ポートＷＷＰＮ＿２を通してのアクセスから物理ポートＷＷＰＮ＿３を通してのアクセスに移動することが望ましい場合がある。この移動の仕掛けが図４Ｂに示されており、そこではボリュームグループ１  １３８−１が移動されている。更に、図４Ｂは仮想ポートＷＷＰＮ＿Ｖ１とＷＷＰＮ＿Ｖ３がボリュームグループ１の一部として移動されているが、ボリュームを新たな仮想ポート又は物理ポートと連結するため、等でボリュームのみを移動したり、新たなボリューム等と連結するために仮想ポートのみを移動したりすることも可能である。例えば、ボリュームが特定の仮想ポートに連結していない場合には、物理ポート間の負荷バランスのため等でプライオリティを含めて仮想ポートを移動するのが望ましい場合がある。この移動に連動して、ボリュームグループ１  １３８−１に対して決められていたプライオリティ処理が管理者の介在なしに新たな物理ポートＷＷＰＮ＿３でも維持されることが望まれる。同様に、もしプライオリティがフロントエンド仮想ポートに指定されているならば、そのフロントエンド仮想ポートが別な物理ポートに移動した場合、その特定のフロントエンド仮想ポートに付与済みのプライオリティを維持することも望まれるであろう。以下の記述で、これらのプライオリティ設定を維持する方法、装置及びプログラムが説明される。
【００４６】
００９６    ボリュームグループマッピングテーブル
００９７    図５はボリュームグループマッピングテーブル３０４の典型的なデータ構造を示す。図５の値は図４Ａに示したシステムの状態を表わす。ボリュームグループ５０１は論理ボリュームグループ及び仮想Ｎ＿ポートの任意の名前を示す。ターゲットホストＮ＿ポート５０２はグループ内の論理ボリュームがエクスポートされるホスト１６０上のＮ＿ポートのＷＷＰＮを示す。エクスポートされるボリューム５０３はホスト１６０にエクスポートされるストレージ制御ユニット１００内の論理ボリュームの識別子を提供する。外部Ｎ＿ポート５０４は各エクスポートされる仮想ボリュームに対応する実際のＬＵが存在する外部ストレージ制御ユニット１３０のＮ＿ポートのＷＷＰＮを示す。エクスポートされるボリュームがＬＵ１１、ＬＵ１２の場合のようにストレージ制御ユニット１００の内部にローカルに生成されるＬＵに対応する場合にはこのフィールドにはヌル値が設定される。外部ボリューム５０５はエクスポートされるボリューム５０３に対応する外部ストレージ制御ユニット１３０上のＬＵの識別子を示す。エクスポートされるボリューム５０３がＬＵ１１、ＬＵ１２の場合のようにストレージ制御ユニット１００の内部にローカルに生成されるＬＵに対応する場合にはこのフィールドにはヌル値が設定される。フロントエンド仮想Ｎ＿ポート５０６はエクスポートされるボリューム５０３をホスト１６０にエクスポートするために使用される仮想Ｎ＿ポートのＷＷＰＮを示す。フロントエンドＮ＿ポート＿ＩＤ５０７はフロントエンド仮想ＷＷＰＮ５０６に指定されるＮ＿ポート＿ＩＤを示す。バックエンド仮想Ｎ＿ポート５０８は外部ストレージ制御ユニット１３０にアクセスするために使用される仮想Ｎ＿ポートのＷＷＰＮを示す。エクスポートされるボリューム５０３がＬＵ１１、ＬＵ１２の場合のようにストレージ制御ユニット１００の内部にローカルに生成されるＬＵに対応する場合はこのフィールドにはヌル値が設定される。バックエンドＮ＿ポート＿ＩＤ５０９はバックエンド仮想ＷＷＰＮ５０８に指定されるＮ＿ポート＿ＩＤを示す。エクスポートされるボリューム５０３がＬＵ１１、ＬＵ１２の場合のようにストレージ制御ユニット１００の内部にローカルに生成されるＬＵに対応する場合にはこのフィールドにはヌル値が設定される。現在のフロントエンド物理Ｎ＿ポート５１０はフロントエンド仮想ＷＷＰＮ５０６に現在連結している物理Ｎ＿ポートのＷＷＰＮを示し、これはフロントエンド仮想ＷＷＰＮ５０６に対してＮ＿ポート＿ＩＤが取得された物理Ｎ＿ポートのＷＷＰＮである。現在のバックエンド物理Ｎ＿ポート５１１はバックエンド仮想ＷＷＰＮ５０８に現在連結している物理Ｎ＿ポートのＷＷＰＮを示し、これはバックエンド仮想ＷＷＰＮ５０８に対してＮ＿ポート＿ＩＤが取得された物理Ｎ＿ポートのＷＷＰＮである。エクスポートされるボリューム５０３がＬＵ１１、ＬＵ１２の場合のようにストレージ制御ユニット１００の内部にローカルに生成されるＬＵに対応する場合にはこのフィールドにはヌル値が設定される。
【００４７】
００９８    物理パス管理テーブル
００９９    図６は物理パス管理テーブル３０５の典型的なデータ構造を示す。図６の値は図４Ａに示すシステムの状態を表す。物理Ｎ＿ポート６０１はホスト１６０又は外部ストレージ制御ユニット１３０にアクセスするために使用できる物理Ｎ＿ポートのＷＷＰＮを示す。状態６０２は物理Ｎ＿ポート６０１の状態を示す。“ＯＫ”エントリーはＮ＿ポートが正しく動作していることを示し、一方“エラー”エントリーは何かの障害でＮ＿ポートが動作していないことを示す。到達可能Ｎ＿ポート６０３は物理Ｎ＿ポート６０１が到達できるＮ＿ポートのＷＷＰＮのリストを示す。この情報は物理Ｎ＿ポートが図２９に関連して前述したファブリックログイン手順を遂行する時に取得できる。
【００４８】
０１００    プライオリティ管理テーブル
０１０１    図７Ａ〜７Ｂはプライオリティ管理テーブル３０６の典型的なデータ構造を示す。この実施例ではプライオリティは各ボリュームグループ又は各フロントエンド仮想Ｎ＿ポートに対して指定することができる。図７Ａのプライオリティ管理テーブル３０６ａは各ボリュームグループに対してプライオリティが指定される場合のプライオリティ管理テーブルを示す。ボリュームグループ７０１ａは以降のフィールドの設定が適用されるボリュームグループ名を示す。プライオリティ７０２はボリュームグループのプライオリティ設定を示す。ボリュームグループがプライオリティであれば、“プライオリティ”がこのフィールドに設定される。それ以外の場合、このフィールドには“非プライオリティ”が設定される。ＩＯＰＳ（毎秒あたりの入／出力）測定値（Ｉｅ）７０３はボリュームグループの実際の性能状態を示す。この値はＩ／Ｏプロセスモジュール３０３によって定期的に測定され更新される。ＩＯＰＳ閾値（Ｉｔ）７０４は非プライオリティボリュームグループに対するＩ／Ｏ処理を抑制すべきか否か判定するためのＩＯＰＳ閾値情報を示す。ＩＯＰＳ閾値（Ｉｔ）７０４は定期的にＩＯＰＳ測定値（Ｉｅ）と比較され、ＩＯＰＳ測定値（Ｉｅ）７０３がＩＯＰＳ閾値（Ｉｔ）７０４を超える時には、非プライオリティボリュームグループに対するＩ／Ｏプロセスは抑制される。ボリュームグループが“非プライオリティ”の場合、このフィールドにはヌル値が設定される。ターゲットＩＯＰＳ（Ｉｏ）７０５はボリュームグループに対する目標ＩＯＰＳ性能を示す。ボリュームグループが“非プライオリティ”の場合、このフィールドにはヌル値が設定される。遅延設定（Ｓｔ）７０６は必要時にボリュームグループに対するＩ／Ｏ処理を抑制するために使用される遅延時間量を示す。ボリュームグループが“プライオリティ”の場合、このフィールドにはヌル値が設定される。遅延タイマー（Ｄｔ）７０７は必要時にボリュームグループに対するＩ／Ｏ処理を抑制するために使用される遅延タイマーを示す。ボリュームグループが“プライオリティ”の場合、このフィールドにはヌル値が設定される。ＩＯＰＳＭａｘ（Ｉｕ）７０８はボリュームグループに対するＩ／Ｏ処理を抑制する必要がある時に考慮される最大Ｉ／Ｏ性能を示す。ボリュームグループが“プライオリティ”の場合、このフィールドにはヌル値が設定される。ＩＯＰＳＭｉｎ（ＩＬ）７０９はボリュームグループに対するＩ／Ｏ処理を抑制する必要がある時に考慮される最小Ｉ／Ｏ性能を示す。ボリュームグループが“プライオリティ”の場合、このフィールドにはヌル値が設定される。従って、ＩＯＰＳ閾値（Ｉｔ）７０４とターゲットＩＯＰＳ（Iｏ）７０５はプライオリティボリュームグループに対してのみ設定され、遅延設定（Ｓｔ）７０６、遅延タイマー（Ｄｔ）７０７、ＩＯＰＳＭａｘ（Ｉｕ）７０８、及びＩＯＰＳＭｉｎ（ＩＬ）７０９は非プライオリティボリュームグループに対してのみ設定される。
【００４９】
０１０２    図７Ｂのプライオリティ管理テーブル３０６ｂは、プライオリティが各フロントエンド仮想Ｎ＿ポートに指定される場合のプライオリティ管理テーブル３０６の例を示す。プライオリティ管理テーブル３０６ｂに於いて、フロントエンド仮想Ｎ＿ポートエントリー７０１ｂはボリュームグループエントリー７０１ａを置き換え、一方プライオリティ管理テーブル３０６ｂの他のフィールドは図７Ａに関して前述したプライオリティ管理テーブル３０６ａのものと同じである。フロントエンド仮想Ｎ＿ポート７０１ｂは以後のフィールドの設定が適用されるフロントエンド仮想Ｎ＿ポート名を示す。
【００５０】
０１０３    Ｉ／Ｏプロセスを開始すべきか否かの判定
０１０４    図８Ａ〜８ＢはＩ／Ｏプロセスコマンドを開始すべきか否かを判定する典型的なプロセスフローチャートを示す。これらのプロセスは、Ｉ／Ｏコマンドを処理すべきプライオリティを決定するために、ストレージ制御ユニット１００が受信するＩ／Ｏコマンドの処理を開始する前に、Ｉ／Ｏプロセスモジュール３０３が実行する。例えば、ホスト１６０がＶＬＵ１〜ＶＬＵ４  １３３の一つに向けられたＩ／Ｏコマンドを発行すると、コマンドを処理する前にストレージ制御ユニット１００は、プライオリティ設定が、コマンドのターゲットであるＶＬＵに関連したボリュームグループ又はフロントエンド仮想ポートに、適用されるか否か判定する。プライオリティ設定がボリュームグループ又はフロントエンド仮想ポートに適用される場合、ストレージ制御ユニット１００は、図８Ａ〜８Ｂに述べられる手順に従って、特定のＩ／Ｏコマンドをいつ処理すべきか判定する。図８Ａは各ボリュームグループに対してプライオリティが指定されている場合のフローチャートを示し、一方図８Ｂは各フロントエンド仮想Ｎ＿ポートに対してプライオリティが指定されている場合のフローチャートを示す。
【００５１】
０１０５    ステップ８０１ａ：Ｉ／Ｏプロセスモジュール３０３はＩ／Ｏコマンドが処理されようとしているボリュームグループがプライオリティグループか否かをチェックする。プライオリティグループであれば、プロセスはステップ８０７ａに進む。そうでない場合はプロセスはステップ８０２ａに進む。
【００５２】
０１０６    ステップ８０２ａ：Ｉ／Ｏプロセスモジュール３０３はストレージ制御ユニット１００上にプライオリティボリュームグループが存在するか否かチェックする。もし存在すれば、プロセスはステップ８０３ａに進む。そうでない場合はプロセスはステップ８０７ａに進む。
【００５３】
０１０７    ステップ８０３ａ：ステップ８０１ａ及び８０２ａで見出されたプライオリティボリュームグループのＩＯＰＳ閾値（Ｉｔ）７０４及びＩＯＰＳ測定値（Ｉｅ）７０３をプライオリティ管理テーブル３０６ａから取り込む。
【００５４】
０１０８    ステップ８０４ａ：Ｉ／Ｏプロセスモジュール３０３はステップ８０１ａ及び８０２ａで見出され、ＩＯＰＳ測定値（Ｉｅ）７０３がＩＯＰＳ閾値（Ｉｔ）７０４よりも大きいプライオリティボリュームグループが存在するか否かチェックする。もし存在すれば、プロセスはステップ８０５ａに進む。そうでない場合はプロセスはステップ８０７ａに進む。
【００５５】
０１０９    ステップ８０５ａ：Ｉ／Ｏコマンドが処理されようとしているボリュームグループの遅延設定（Ｓｔ）７０６と遅延タイマー（Ｄｔ）７０７をプライオリティ管理テーブル３０６ａから取り込む。
【００５６】
０１１０    ステップ８０６ａ：Ｉ／Ｏプロセスモジュール３０３は遅延タイマー（Ｄｔ）７０７が遅延設定（Ｓｔ）７０６より大きいか否かチェックする。遅延タイマー（Ｄｔ）７０７が遅延設定（Ｓｔ）７０６よりも大きいならば、プロセスはステップ８０７ａに進む。そうでない場合はプロセスはステップ８０９ａに進む。
【００５７】
０１１１    ステップ８０７ａ：Ｉ／Ｏコマンドが処理されようとしているボリュームグループの遅延タイマー（Ｄｔ）７０７がゼロに初期化される。
【００５８】
０１１２    ステップ８０８ａ：Ｉ／Ｏプロセスモジュール３０３はＩ／Ｏコマンドの処理が開始されるべきことを意味する“Ｉ／ＯコマンドプロセスＯＫ”を返送する。
【００５９】
０１１３    ステップ８０９ａ：Ｉ／Ｏプロセスモジュール３０３はＩ／Ｏコマンドが処理されようとしているボリュームグループの遅延タイマー（Ｄｔ）７０７を更新する。
【００６０】
０１１４    ステップ８１０ａ：プロセスはＩ／Ｏコマンドの処理が開始されるべきでないことを意味する“Ｉ／ＯコマンドプロセスＮＧ（不可）”を返送する。
【００６１】
０１１５    このようにして、Ｄｔ（遅延タイマー）はＤｔがＳｔ（遅延設定）よりも大きくなるまで更新される。ＤｔがＳｔよりも小さい限り、非プライオリティのボリュームグループに対するＩ／Ｏコマンドの処理は開始されない。このようにして非プライオリティボリュームグループに対するＩ／Ｏコマンドの処理が抑制されるので、非プライオリティボリュームグループに対するＩ／ＯプロセスはプライオリティボリュームグループのＩ／Ｏ性能に影響を及ぼすことから免れる。
【００６２】
０１１６    図８Ｂは、各フロントエンド仮想Ｎ＿ポートに対してプライオリティが指定されている場合にＩ／Ｏ処理が開始されるべきか否か判定するための典型的なプロセスフローチャートを示す。
【００６３】
０１１７    ステップ８０１ｂ：Ｉ／Ｏプロセスモジュール３０３はＩ／Ｏコマンドが処理されようとしているフロントエンド仮想Ｎ＿ポートがプライオリティを持つか否かをチェックする。もしフロントエンド仮想Ｎ＿ポートがプライオリティを持つならば、プロセスはステップ８０７ｂに進む。そうでない場合は、プロセスはステップ８０２ｂに進む。
【００６４】
０１１８    ステップ８０２ｂ：Ｉ／Ｏプロセスモジュール３０３はストレージ制御ユニット１００上にプライオリティフロントエンド仮想Ｎ＿ポートが存在するかをチェックする。ストレージ制御ユニット１００上にプライオリティフロントエンド仮想Ｎ＿ポートが存在するならば、プロセスはステップ８０３ｂに進む。そうでない場合は、プロセスはステップ８０７ｂに進む。
【００６５】
０１１９    ステップ８０３ｂ：ステップ８０１ｂ及び８０２ｂで見出されたプライオリティフロントエンド仮想Ｎ＿ポートのＩＯＰＳ閾値（Ｉｔ）７０４及びＩＯＰＳ測定値（Ｉｅ）７０３をプライオリティ管理テーブル３０６ｂから取り込む。
【００６６】
０１２０    ステップ８０４ｂ：Ｉ／Ｏプロセスモジュール３０３はステップ８０１ｂ及び８０２ｂで見出され、ＩＯＰＳ測定値（Ｉｅ）７０３がＩＯＰＳ閾値（Ｉｔ）７０４よりも大きいプライオリティフロントエンド仮想Ｎ＿ポートが存在するか否かチェックする。もし存在するならば、プロセスはステップ８０５ｂに進む。そうでない場合は、プロセスはステップ８０７ｂに進む。
【００６７】
０１２１    ステップ８０５ｂ：Ｉ／Ｏコマンドが処理されようとしているフロントエンド仮想Ｎ＿ポートの遅延設定（Ｓｔ）７０６と遅延タイマー（Ｄｔ）７０７をプライオリティ管理テーブル３０６ｂから取り込む。
【００６８】
０１２２    ステップ８０６ｂ：Ｉ／Ｏプロセスモジュール３０３は遅延タイマー（Ｄｔ）７０７が遅延設定（Ｓｔ）７０６より大きいか否か判定する。ＤｔがＳｔよりも大きい時、プロセスはステップ８０７ｂに進む。そうでない場合は、プロセスはステップ８０９ｂに進む。
【００６９】
０１２３    ステップ８０７ｂ：Ｉ／Ｏコマンドが処理されようとしているフロントエンド仮想Ｎ＿ポート の遅延タイマー（Ｄｔ）７０７がゼロに初期化される。
【００７０】
０１２４    ステップ８０８ｂ：プロセスはＩ／Ｏコマンドの処理が開始されるべきであることを示す“Ｉ／ＯコマンドプロセスＯＫ”を返送する。
【００７１】
０１２５    ステップ８０９ｂ：Ｉ／Ｏコマンドが処理されようとしているフロントエンド仮想Ｎ＿ポートの遅延タイマー（Ｄｔ）７０７が更新される。
【００７２】
０１２６    ステップ８１０ｂ：プロセスはＩ／Ｏコマンドの処理が開始されるべきでないことを示す“Ｉ／ＯコマンドプロセスＮＧ”を返送する。
【００７３】
０１２７    Ｄｔ（遅延時間）がＳｔ（遅延設定）よりも大きくなるまでＤｔが更新され、非プライオリティフロントエンド仮想Ｎ＿ポートへのＩ／Ｏコマンドに対するＩ／ＯプロセスはＤｔがＳｔよりも大きくなるまで開始されない。このようにして、非プライオリティフロントエンド仮想Ｎ＿ポートに対するＩ／Ｏプロセスは、非プライオリティフロントエンド仮想Ｎ＿ポートに向けられるＩ／Ｏコマンドに対するＩ／Ｏプロセスを抑制することでプライオリティフロントエンド仮想Ｎ＿ポートのＩ／Ｏ性能に影響を与えることから免れる。
【００７４】
０１２８    遅延設定を調整するフローチャート
０１２９    図９Ａは、プライオリティボリュームグループのＩＯＰＳ性能がプライオリティボリュームグループのターゲットＩＯＰＳ７０５に最も近づくように、非プライオリティボリュームグループのＩ／Ｏプロセスの遅延設定（Ｓｔ）７０６を調整する典型的なプロセスのフローチャートを示す。このプロセスはＩ／Ｏプロセスモジュール３０３により定期的に実行される。この場合、プライオリティボリュームグループのＩＯＰＳ閾値（Ｉｔ）７０４とターゲットＩＯＰＳ（Ｉｏ）７０５、及び非プライオリティボリュームグループのＩＯＰＳＭａｘ（Ｉｕ）７０８とＩＯＰＳＭｉｎ（ＩＬ）７０９がサービスプロセッサ１４０を通して管理者によって設定される。プライオリティボリュームグループのＩ／Ｏ処理への影響の程度を正確には知ることができないので、ＩＯＰＳＭａｘ（Ｉｕ）７０８の値は実際の環境に適合する推定値に設定される。
【００７５】
０１３０    ステップ９０１ａ：非プライオリティボリュームグループのＩＯＰＳＭａｘ値（Ｉｕ）７０８をプライオリティ管理テーブル３０６ａから取り込む。
【００７６】
０１３１    ステップ９０２ａ：遅延設定（Ｓｔ）７０６がＩＯＰＳＭａｘ（Ｉｕ）７０８に基づいて計算される。ここで計算される遅延設定を、以後は遅延設定初期値（Ｓｔ０）と呼ぶ。
【００７７】
０１３２    ステップ９０３ａ：現在の遅延設定（Ｓｔ）７０６について前述した図８Ａのフローチャートに従ってＩ／Ｏコマンドの処理が或る時間の間実行される。
【００７８】
０１３３    ステップ９０４ａ：プライオリティボリュームグループのＩＯＰＳ測定値（Ｉｅ）７０３とターゲットＩＯＰＳ（Ｉｏ）７０５をプライオリティ管理テーブル３０６ａから取り込む。
【００７９】
０１３４    ステップ９０５ａ：非プライオリティボリュームグループのＩＯＰＳ測定値（Ｉｅ）７０３とＩＯＰＳＭｉｎ値（ＩＬ）７０９をプライオリティ管理テーブル３０６から取り込む。ここで非プライオリティボリュームグループのＩＯＰＳ測定値７０３を以後Ｉｅ’と呼ぶ。
【００８０】
０１３５    ステップ９０６ａ：Ｉ／Ｏプロセスモジュール３０３はプライオリティボリュームグループのＩＯＰＳ測定値（Ｉｅ）７０３とターゲットＩＯＰＳ（Ｉｏ）７０５との間に差があるか否かチェックする。差があれば、プロセスはステップ９０７ａに進む。差がなければ、又は差が無視できるほど十分小さいものと判断されれば、プロセスはステップ９０３ａに戻る。
【００８１】
０１３６    ステップ９０７ａ：Ｉ／Ｏプロセスモジュール３０３は非プライオリティボリュームグループのＩＯＰＳ測定値（Ｉｅ’）７０３がＩＯＰＳＭａｘ（Ｉｕ）７０８とＩＯＰＳＭｉｎ(ＩＬ)７０９の間にあるか否かチェックする。もし間にあればプロセスはステップ９０８ａに進む。そうでない場合、プロセスはステップ９０３ａに戻る。
【００８２】
０１３７    ステップ９０８ａ：遅延設定（Ｓｔ）が式：
Ｓｔ＝Ｓｔ０＋ａ（Ｉｅ−Ｉｏ）＋ｂ∫t0t (Ｉｅ−Ｉｏ)ｄｔ
に基づいて再設定される。ここで、ａ、ｂは係数であり、Ｓｔ０は遅延設定初期値、ｔ０は制御開始時刻、ｔは現在時刻である。遅延設定（Ｓｔ）の再設定に続いて、プロセスはステップ９０３ａに戻る。
【００８３】
０１３８    図９ＢはプライオリティボリュームグループのＩＯＰＳ性能がプライオリティボリュームグループのターゲットＩＯＰＳ７０５に最も良く近づけるように、非プライオリティボリュームグループのＩ／Ｏプロセスの遅延設定（Ｓｔ）７０６を調整することで、ＩＯＰＳＭａｘ（Ｉｕ）７０８未満の非プライオリティボリュームグループに対するＩ／Ｏプロセスを抑制するために実行されるプロセスの別な実施例のフローチャートを示す。このプロセスはＩ／Ｏプロセスモジュール３０３により定期的に実行され、図９Ａに関して前述したプロセスに代わって使用できる。この場合プライオリティボリュームグループのＩＯＰＳ閾値（Ｉｔ）７０４及び非プライオリティボリュームグループのＩＯＰＳＭａｘ（Ｉｕ）７０８がサービスプロセッサ１４０を通して管理者によって設定される。ターゲットＩＯＰＳ（Ｉｏ）７０５とＩＯＰＳＭｉｎ（ＩＬ）は使用されない。プライオリティボリュームグループのＩ／Ｏ処理への影響の程度を正確には知ることができないので、ＩＯＰＳＭａｘ（Ｉｕ）の値は実際の環境に適合する推定値に設定される。
【００８４】
０１３９    ステップ９０１ｂ：非プライオリティボリュームグループのＩＯＰＳＭａｘ値（Ｉｕ）７０８をプライオリティ管理テーブル３０６から取り込む。
【００８５】
０１４０    ステップ９０２ｂ：遅延設定（Ｓｔ）７０６がＩＯＰＳＭａｘ（Ｉｕ）７０８に基づいて計算される。ここで計算される遅延設定を、以後は遅延設定初期値（Ｓｔ０）と呼ぶ。
【００８６】
０１４１    ステップ９０３ｂ：現在の遅延設定（Ｓｔ）７０６について前述した図８Ａのフローチャートに従ってＩ／Ｏコマンドの処理が或る時間の間実行される。
【００８７】
０１４２    ステップ９０４ｂ：非プライオリティボリュームグループのＩＯＰＳ測定値（Ｉｅ）７０３をプライオリティ管理テーブル３０６から取り込む。非プライオリティボリュームグループのＩＯＰＳ測定値を以後はＩｅ’と呼ぶ。
【００８８】
０１４３    ステップ９０５ｂ：Ｉ／Ｏプロセスモジュール３０３は非プライオリティボリュームグループに対するＩＯＰＳ測定値（Ｉｅ’）７０３とＩＯＰＳＭａｘ(Ｉｕ)７０８との間に差があるか否かチェックする。差があれば、プロセスはステップ９０６ｂに進む。差がなければ、又は差が無視できるほど十分小さいと判断されれば、プロセスはステップ９０３ｂに戻る。
【００８９】
０１４４    ステップ９０６ｂ：遅延設定（Ｓｔ）が式：
Ｓｔ＝Ｓｔ０＋ａ（Ｉｅ−Ｉｏ）＋ｂ∫t0t (Ｉｅ−Ｉｏ)ｄｔ
に基づいて再設定される。ここでａ、ｂは係数であり、Ｓｔ０は遅延設定初期値、ｔ０は制御開始時刻、ｔは現在時刻である。遅延設定の再設定に続いて、プロセスはステップ９０３ｂに戻る。図９Ａと９Ｂで説明したと同じ方法が、各フロントエンド仮想Ｎ＿ポートに対してプライオリティが設定される場合にも適用可能である。
【００９０】
０１４５    第２の実施例
０１４６    図１０は本発明が適用可能な情報システムの別な典型的な構成を示す。ストレージシステム１００は、一つ以上のＦＣスイッチ１０８０ａを含むフロントエンドＳＡＮ１０７０を経由して一つ以上のホストコンピュータ１０６０と交信しており、更にＬＡＮ（ローカルエリアネットワーク）１０５０経由でサービスプロセッサ１０４０及びホスト１０６０とも交信している。ストレージシステム１００は多数のストレージ制御ユニット１０００、一つ以上のバックエンドＦＣスイッチ１０８０ｂを含むバックエンドＳＡＮ１０２０、及び一つ以上の外部ストレージ制御ユニット１０３０を含むように構成される。各ストレージ制御ユニット１０００はＣＰＵ１００１、メモリー１００２、不揮発ランダムアクセスメモリー(ＮＶＲＡＭ)１００３、キャッシュメモリー１００４、ディスクコントローラ１００５、ディスクドライブ１００６のような複数のストレージ媒体、多数のＳＡＮインタフェースコントローラ１００７、ＬＡＮインタフェースコントローラ１００８、及びユニット間ネットワークコントローラ１０１０を有する。これらのコンポーネントは内部バス１００９を経由してお互いが接続されている。更に三つのストレージ制御ユニット１０００ａ〜１０００ｃが示されているが、本発明はストレージ制御ユニットの特定な数に限定されるものでない。
【００９１】
０１４７    ＣＰＵ１００１はストレージ制御ユニット１０００の制御を管理し、一方メモリー１００２はＣＰＵ１００１により実行されるプログラムと命令を記憶する。ＣＰＵ１００１は、ディスクインタフェースコントローラ１００５、ＳＡＮインタフェースコントローラ１００７、ＬＡＮインタフェースコントローラ１００８、等を制御するために、メモリー１００２に記憶されるマイクロプログラムを実行する。更にＣＰＵ１００１は多数のストレージ制御ユニット１０００ａ〜１０００ｃが単一のストレージシステムとして機能できるように、ユニット間ネットワークコントローラ１０１０とユニット間ネットワーク１０１１を通して他のストレージ制御ユニット１０００と管理情報やデータを交換する。本発明を実現するいくつかのプログラムはＣＰＵ１００１により実行でき、メモリー１００２上又は他のコンピュータ読み取り可能媒体上に記憶できる。
【００９２】
０１４８    第１の実施例に関して前述したように、電源がＯＦＦの場合でも管理情報を保持できる不揮発メモリーとしてＮＶＲＡＭ１００３を含めることができる。キャッシュメモリー１００４はＳＡＮインタフェースコントローラ１００７とディスクコントローラ１００５間で交換されるデータを一時的に記憶する役目を果たす。ディスクコントローラ１００５は、ＣＰＵ１００１からの命令に従って、ディスクドライブ又は他の適切なストレージ媒体１００６とデータを交換する。ＣＰＵ１００１はディスクコントローラ１００５を介してＲＡＩＤ（Redundant Array of Independent Disks）構成（例えばＲＡＩＤレベル０、１又は５）内のディスクドライブ１００６を制御する。ＲＡＩＤ構成に於いては、多数のディスクドライブ１００６は一つのグループ（以後ＲＡＩＤグループと呼ぶことにする）として管理される。一つ以上の論理ボリューム（即ち論理ユニット、ＬＵ）が各ＲＡＩＤグループ上で論理的に構成され、ホスト１０６０に対するストレージの役目を果たす。ＬＵＮ（Logical Unit Number ）と呼ばれる識別子が各論理ボリュームに指定される。ＲＡＩＤ構成情報はＮＶＲＡＭ１００３に記憶され、ＣＰＵ１００１がデータ読み出しプロセス又はデータ書き込みプロセスを実行する時にＣＰＵ１００１によって参照される。更に、本発明はディスクコントローラ１００５及びディスクドライブ１００６なしで機能するように構成し、ストレージシステムが使用する物理ストレージは、多数のストレージ制御ユニット１０００と交信する一つ以上の外部ストレージシステム１０３０内に設けることもできるのは言うまでもない。
【００９３】
０１４９    ＳＡＮインタフェースコントローラの一つ１００７ａはフロントエンドＳＡＮ１０７０に、他のＳＡＮインタフェースコントローラ１００７ｂはバックエンドＳＡＮ１０２０に光ファイバー又は銅線ケーブル、等を経由して接続される。ＬＡＮインタフェースコントローラ１００８はＬＡＮ１０５０を経由してホスト１０６０及びサービスプロセッサ１０４０に接続される。ユニット間コントローラ１０１０はＣＰＵ１００１が他のストレージ制御ユニット１０００との間でデータを交換し、管理情報をＣＰＵ１００１と同期させることを可能にする。ストレージ制御ユニット１０００は、ユニット間ネットワークコントローラ１０１０により、ユニット間ネットワーク１０１１経由で相互に接続されている。ユニット間通信に於いては、ＰＣＩ−ＥＸＰＲＥＳＳ、Ｉｎｆｉｎｉｂａｎｄ、等の高速接続インタフェースの使用が望ましい。しかしながら、ファイバーチャネル、イーサネット（Ｒ）、等の、より慣用されているネットワークインタフェースもこのインタフェースとして使用できる。その場合、ユニット間ネットワークコントローラ１０１０としてＳＡＮインタフェースコントローラ１００７又はＬＡＮインタフェースコントローラ１００８が使用できる。これらの実施例に於いて、ユニット間ネットワーク１０１１として、フロントエンドＦＣスイッチ１０８０ａ又はバックエンドＦＣスイッチ１０８０ｂが仲介するＳＡＮ、又はＬＡＮ１０５０、又は他のネットワーク又は通信リンクが、使用可能である。
【００９４】
０１５０    フロントエンドＳＡＮ１０７０はホスト１０６０とストレージ制御ユニット１０００間でＦＣ−ＳＷ（Fibre Channel Switched Fabric）基準に準拠した通信を立ち上げる。バックエンドＳＡＮ１０２０はストレージ制御ユニット１０００と外部ストレージ制御ユニット１０３０間でＦＣ−ＳＷ（Fibre Channel Switched Fabric）基準に準拠した通信を仲介する。一般に、ＦＣ−ＳＷ基準に従って形成される通信ネットワークはＳＡＮ（Storage Area Network）と呼ばれる。本発明の実施例は前述のようにフロントエンドＳＡＮ１０７０とバックエンドＳＡＮ１０２０の両方の役目を果たす一つのＳＡＮで実現しても良い。ＬＡＮ１０５０はＴＣＰ／ＩＰを使用したデータ転送が行われるイーサネット（Ｒ）又は他の適切な媒体を使用して構築したローカルエリアネットワークである。更に、或る実施例ではインターネットのようなＷＡＮ（Wide Area Network）がＬＡＮ１０５０の代わりに使用できる。
【００９５】
０１５１    外部ストレージ制御ユニット１０３０はストレージ制御ユニット１０００に接続され、ストレージ制御ユニット１０００によって管理される。各外部ストレージ制御ユニット１０３０はストレージ制御ユニット１０００と同じコンポーネントから構成される。しかしながらストレージ制御ユニット１０００と異なり、外部ストレージ制御ユニット１０３０は通常他のストレージ制御ユニットを管理する機能を持たず、ユニット間ネットワークコントローラ１０１０も必要ない。外部ストレージ制御ユニット１０３０ａで図示したように、外部ストレージ制御ユニット１０３０のいくつかはバックエンドＳＡＮ１０２０を介してストレージ制御ユニット１０００に接続でき、外部ストレージ制御ユニット１０３０ｂで図示したように、外部ストレージ制御ユニット１０３０のいくつかは直接接続１０８１によりストレージ制御ユニット１０００に直結できる。各ストレージ制御ユニット１０００は、たとえ実際のストレージ容量は外部ストレージ制御ユニット１０３０によって管理されても、外部ストレージ制御ユニット１０３０内に生成された論理ボリューム（又は論理ユニット、ＬＵ）を、ストレージ制御ユニット１０００の内部に生成された論理ユニットであるとしてホストに提供されるストレージ容量のようにホスト１０６０から見えるようにすることができる。従って、これらのＬＵはストレージ制御ユニット１０００内に仮想的にのみ存在し、実際には外部ストレージ制御ユニット１０３０内のＬＵとして存在するので、仮想ＬＵである。以後はそのような仮想論理ボリュームを“仮想論理ユニット”又は“ＶＬＵ”と呼ぶことにする。外部ストレージ制御ユニット１０３０との間でデータを読み出し／書き込むために、ホスト１０６０はストレージ制御ユニット１０００の仮想論理ユニットにＩ／Ｏ（例えば読み出し／書き込み）要求を発行し、ストレージ制御ユニット１０００は受信したＩ／Ｏ要求を外部ストレージ制御ユニット１０３０内の対応する論理ボリュームに送信されるＩ／Ｏ要求に変換する。別の方法では、外部ストレージ制御ユニット１０３０が存在しないことがあり得る。その場合、ストレージ制御ユニット１０００はそれ自体の内部にディスクドライブ１００６を用いた論理ボリュームを提供する。
【００９６】
０１５２    ホスト１０６０は、例えば任意のパーソナルコンピュータ、ワークステーション、メインフレームコンピュータ、等で良い。ホスト１０６０はデータベースプログラム等のアプリケーションプログラムを実行し、ＬＵやＶＬＵ等のストレージボリュームに保存しておくためにストレージ制御ユニット１０００の一つに処理結果を書き込み、保存した情報リソースを利用する。ホスト１０６０は前述の図２に示すホスト１０６０と同じ構成を持つことができる。ホスト１０６０はフロントエンドＦＣスイッチ１０８０ａが仲介するＳＡＮ１０７０を通してストレージ制御ユニット１０００と接続される。
【００９７】
０１５３    サービスプロセッサ１０４０は図２に関連して前述したサービスプロセッサ１４０と同じコンポーネントを持つことができ、ＬＡＮ１０５０を経由してストレージ制御ユニット１０００に接続される。サービスプロセッサ１０４０は、例えばストレージ制御ユニット１０００に対して構成設定や操作情報取得を実行し、取得した情報を統合する。管理者はサービスプロセッサ１０４０を通して、ストレージ制御ユニット１０００内の論理ボリュームの生成、ホスト１０６０への論理ボリュームの割り付け、ゾーニング、及びＬＵＮマスキング設定を実行する。本発明を実現するプログラムのいくつかはサービスプロセッサ１０４０上で走行させることができる。
【００９８】
０１５４    ソフトウェアモジュール
０１５５    図１１に示すように、これらの実施例では本発明を実行するのに使用できる５種類のソフトウェアモジュールと四つのデータ構造が存在する。ソフトウェアモジュールは各ストレージ制御ユニット１０００のメモリー１００２にロードされ、データ構造は各ストレージ制御ユニット１０００のＮＶＲＡＭ１００３に記憶することができる。或いは、ソフトウェアモジュールとデータ構造はストレージシステムの内部又は外部にある他のコンピュータ読み取り可能媒体に記憶することもできる。大部分のソフトウェアモジュールは第１の実施例に関して前述したものと同様である。例えば、ボリュームグループマネージャ１１０１は第1の実施例のボリュームグループマネージャ３０１と同じで良く、物理パスマネージャ１１０２は第1の実施例の物理パスマネージャ３０２と同じで良く、Ｉ／Ｏプロセスモジュール１１０３は第1の実施例のＩ／Ｏプロセスモジュール３０３と同じで良い。第２の実施例は、仮想Ｎ＿ポート、ＶＬＵ、又は仮想Ｎ＿ポートとＶＬＵのグループのストレージ制御ユニット１０００間での移動に関し、サービスプロセッサ１０４０が発行する命令を受信するように構成される移動マネージャ１１０４を有している。移動マネージャ１１０４がそのような命令を受信すると、移動マネージャ１１０４は命令された移動を起動する。プライオリティマネージャ１１０５はサービスプロセッサ１０４０上の統合プライオリティマネージャからの命令に従ってプライオリティ管理テーブル３０４上の設定を変更するように構成される。これらの実施例でのデータ構造は四つの管理テーブルを有する。即ち第１の実施例に関して前述したような、ボリュームグループマッピングテーブル３０４、物理パス管理テーブル３０５、及びプライオリティ管理テーブル３０６並びに、以下に説明するユニット性能テーブル１１０８である。
【００９９】
０１５６    図１２に示すように、サービスプロセッサ１０４０が使用できる４種類のソフトウェアモジュールと四つのデータ構造がある。例えば、モジュールとデータ構造はメモリー２０２及び／又はサービスプロセッサ１０４０のストレージデバイス２０３、及び／又はサービスプロセッサ１０４０の内部又は外部にある他のコンピュータ読み取り可能媒体に記憶できる。図示の実施例ではサービスプロセッサ１０４０のメモリー２０２は統合ボリュームグループマネージャ１１１０、統合物理パスマネージャ１１１１、統合移動マネージャ１１１２、及び統合プライオリティマネージャ１１１３を有する。更に、サービスプロセッサ１０４０のメモリー２０２及び／又はストレージデバイス２０３は統合ボリュームグループマッピングテーブル１１１３、統合物理パス管理テーブル１１１４、統合プライオリティ管理テーブル１１１５、及び統合ユニット性能テーブル１１１６、を含むデータ構造を記憶することもできる。
【０１００】
０１５７    統合ボリュームグループマネージャ１１１０は各ストレージ制御ユニット１０００からボリュームグループマッピングテーブル３０４を取得し、サービスプロセッサ１０４０内の統合ボリュームグループマッピングテーブル１１１３にそれらを統合する。統合物理パスマネージャ１１１１は各ストレージ制御ユニット１０００から物理パス管理テーブル３０５を取得し、サービスプロセッサ１０４０内の統合物理パス管理テーブル１１１４にそれらを統合する。
【０１０１】
０１５８    統合移動マネージャ１１１２は管理者がストレージ制御ユニット１０００間で仮想Ｎ＿ポート、ＶＬＵ、又は仮想Ｎ＿ポートとＶＬＵのグループの移動を命令した時に、ユニット間ネットワーク１０１１を移動後に使用するか否か判定する。もし統合移動マネージャ１１１２が、命令通りの移動後にＩ／Ｏ操作を行うためにユニット間ネットワーク１０１１を使用する必要があると判定したなら、統合移動マネージャ１１１２は、ユニット間ネットワーク１０１１が、移動後にＩ／Ｏ操作を行うために使用する必要がなくなるように、別な移動ターゲットとして別なストレージ制御ユニット１０００を管理者に提供する。
【０１０２】
０１５９    統合プライオリティマネージャ１１１３は各ストレージ制御ユニット１０００からプライオリティ管理テーブル１１０７とユニット性能テーブル１１０８を取得し、それらを統合プライオリティ管理テーブル１１１５と統合ユニット性能テーブル１１１６に統合する。更に、統合プライオリティマネージャ１１１３は、管理者から受信した命令に従って、各ストレージ制御ユニット１０００上のプライオリティマネージャ１１０５を通してプライオリティ管理テーブル１１１７の設定を変更する。
【０１０３】
０１６０    図１３はこれらの実施例のポートと論理ボリュームの可能な構成例であるが、他にも数多くの構成が可能であることは言うまでもない。図１３の構成は本発明を更に詳細に説明するために示すものである。“ＷＷＰＮ＿＃”（ここでは＃は番号で置き換えられる）の名前で表される物理ＷＷＰＮがフロントエンドＳＡＮインタフェースコントローラ１００７ａに対して与えられ、物理ＷＷＰＮに対して指定されるＮ＿ポート＿ＩＤは“Ｎ＿ポート＿ＩＤ＿＃”の名前で表される。仮想ＷＷＰＮは“ＷＷＰＮ＿Ｖ＃”の名前で表され、仮想ＷＷＰＮに指定されるＮ＿ポート＿ＩＤは“Ｎ＿ポート＿ＩＤ＿Ｖ＃”の名前で表される。例えば、ホスト１０６０上のＳＡＮインタフェースコントローラ（Ｎ＿ポート）２０４はフロントエンドＳＡＮ１０７０に接続され、その物理ＷＷＰＮとしてＷＷＰＮ＿１を持ちフロントエンドＳＡＮ１０７０が指定したＮ＿ポート＿ＩＤ＿１を持つ。ストレージ制御ユニット１０００ａ上のフロントエンドＳＡＮインタフェースコントローラ１００７ａはフロントエンドＳＡＮ１０７０に接続され、その物理ＷＷＰＮとしてＷＷＰＮ＿２を持ち、フロントエンドＳＡＮ１０７０が指定したＮ＿ポート＿ＩＤ＿２を持つ。同様に、ストレージ制御ユニット１０００ｂ上のフロントエンドＳＡＮインタフェースコントローラ１００７ａは物理ＷＷＰＮ＿３とＮ＿ポート＿ＩＤ＿３を持ち、ストレージ制御ユニット１０００ｃ上のフロントエンドＳＡＮインタフェースコントローラ１００７ａはその物理ＷＷＰＮとしてＷＷＰＮ＿４及びＮ＿ポート＿ＩＤ＿４を持つ。ストレージ制御ユニット１０００ａ上のバックエンドＳＡＮインタフェースコントローラ１００７ｂはその物理ＷＷＰＮとしてＷＷＰＮ＿５及びバックエンドＳＡＮ１０２０が指定したＮ＿ポート＿ＩＤ＿５を持つ。同様にストレージ制御ユニット１０００ｂ上のバックエンドＳＡＮインタフェースコントローラ１００７ｂはその物理ＷＷＰＮとしてＷＷＰＮ＿６及びＮ＿ポート＿ＩＤ＿６を持ち、ストレージ制御ユニット１０００ｃ上のバックエンドＳＡＮインタフェースコントローラ１００７ｂはその物理ＷＷＰＮとしてＷＷＰＮ＿７及びＮ＿ポート＿ＩＤ＿７を持つ。外部ストレージ制御ユニット１０３０ａはＷＷＰＮ＿８のＷＷＰＮを持ちＮ＿ポート＿ＩＤ＿８が指定され、外部制御ユニット１０３０ｂ上のＳＡＮインタフェースコントローラ１００７ｃはＷＷＰＮ＿９のＷＷＰＮを持ちＮ＿ポート＿ＩＤ＿９が指定されている。
【０１０４】
０１６１    更に多数の仮想ポートが生成されている。例えば、ストレージ制御ユニット１０００ａは仮想ＷＷＰＮとしてＷＷＰＮ＿Ｖ１及びフロントエンドＳＡＮ１０７０が指定したＮ＿ポート＿ＩＤ＿Ｖ１を持ち、更に別の仮想ＷＷＰＮとしてＷＷＰＮ＿Ｖ２とＮ＿ポート＿ＩＤ＿Ｖ２を持つ。これらの仮想ポートは現在ＷＷＰＮ＿２を持つ物理Ｎ＿ポートに連結している。同様に、制御ユニット１０００ａは仮想ＷＷＰＮとしてＷＷＰＮ＿Ｖ４とバックエンドＳＡＮ１０２０が指定したＮ＿ポート＿ＩＤ＿Ｖ４を持ち、更に別の仮想ＷＷＰＮとしてＷＷＰＮ＿Ｖ３とＮ＿ポート＿ＩＤ＿Ｖ３を持つ。これらの仮想ポートは現在ＷＷＰＮ＿５を持つ物理Ｎ＿ポートに連結している。更にストレージ制御ユニット１０００ｂは仮想ＷＷＰＮとしてＷＷＰＮ＿Ｖ５とフロントエンドＳＡＮ１０７０が指定したＮ＿ポート＿ＩＤ＿Ｖ５を持つ。この仮想ポートは現在ＷＷＰＮ＿３を持つ物理Ｎ＿ポートに連結している。
【０１０５】
０１６２    図１３に示すように、ストレージ制御ユニット１０００ａは“ユニット＿１”という固有のＩＤを持ち、ストレージ制御ユニット１０００ｂは“ユニット＿２”という固有のＩＤを持ち、ストレージ制御ユニット１０００ｃは“ユニット＿３”という固有のＩＤを持つ。更に、外部ストレージ制御ユニット１０３０ａはＷＷＰＮ＿８を通して四つのＬＵ１３５（ＬＵ１〜ＬＵ４）をストレージ制御ユニット１０００ａにエクスポートしている。ストレージ制御ユニット１０００ａはこれらのＬＵを管理し、ＬＵ１に対するＶＬＵ１、ＬＵ２に対するＶＬＵ２、ＬＵ３に対するＶＬＵ３、及びＬＵ４に対するＶＬＵ４の様に、仮想ＬＵ１３３としてホスト１０６０にエクスポートする。更に、ＶＬＵ１とＶＬＵ２はボリュームグループ１  １０３８−１を構成し、ＷＷＰＮ＿Ｖ１を通してエクスポートされ、ＷＷＰＮ＿Ｖ３を用いてＬＵ１とＬＵ２にマップされる。同様に、ＶＬＵ３とＶＬＵ４はボリュームグループ２  １０３８−２を構成しＷＷＰＮ＿Ｖ２を通してエクスポートされ、ＷＷＰＮ＿Ｖ４を用いてＬＵ３とＬＵ４にマップされる。更に、ストレージ制御ユニット１０００ｂ上のボリュームグループ３  １０３８−３はストレージ制御ユニット１０００ｂ上に生成された論理ボリュームＬＵ１１、ＬＵ１２を有する。
【０１０６】
０１６３    例えば、ホスト１０６０上にＷＷＰＮ＿１を持つＮ＿ポートが外部ストレージ制御ユニット１０３０ａ上のＬＵ１に記憶されたデータにアクセスする時には、ホスト１０６０はＳ＿ＩＤ２８０９としてＮ＿ポート＿ＩＤ＿１を持ち、Ｄ＿ＩＤ２８０８としてＮ＿ポート＿ＩＤ＿Ｖ１を持つＩ／Ｏ要求を含むフレームを送信する。フレームを受信後、ストレージ制御ユニット１０００ａは、Ｓ＿ＩＤとしてＮ＿ポート＿ＩＤ＿Ｖ３を持ち、Ｄ＿ＩＤとしてＮ＿ポート＿ＩＤ＿８を持つフレームを含む変換されたＩ／Ｏ要求を送信する。この要求に応答して、外部ストレージ制御ユニット１０３０ａはＳ＿ＩＤとしてＮ＿ポート＿ＩＤ＿８を持ちＤ＿ＩＤとしてＮ＿ポート＿ＩＤ＿Ｖ３を持つフレームを含む応答を返送する。外部ストレージ制御ユニット１０３０ａからフレームを受信後、ストレージ制御ユニット１０００ａはＳ＿ＩＤとしてＮ＿ポート＿ＩＤ＿Ｖ１を持ち、Ｄ＿ＩＤとしてＮ＿ポート＿ＩＤ＿１を持つフレームを含む変換された応答を送信する。
【０１０７】
０１６４    ボリュームグループマッピングテーブル
０１６５    図１４Ａ〜１４Ｂは図１３に示す構成に対応するエントリーを持つボリュームグループマッピングテーブル３０４−１と３０４−２の例を示す。ボリュームグループマッピングテーブル３０４−１、３０４−２のすべてのフィールドは第１の実施例の図５に関して前述したボリュームグループマッピングテーブル３０４と同じである。図１４Ａと図１４Ｂの値はそれぞれ図１３に示すストレージ制御ユニット１０００ａと１０００ｂ上のボリュームグループの状態を表わす。
【０１０８】
０１６６    物理パス管理テーブル
０１６７    図１５Ａ〜１５Ｃはそれぞれ図１３に示す構成に対応する物理パス管理テーブル３０５−１〜３０５−３の例を示す。物理パス管理テーブル３０５−１〜３０５−３のすべてのフィールドは第１の実施例の図６に関して前述した物理パス管理テーブル３０５と同じである。図１５Ａ、図１５Ｂ、図１５Ｃの値はそれぞれ図１３に示すストレージ制御ユニット１０００ａ、１０００ｂ、１０００ｃ上の物理パスの状態を表わす。
【０１０９】
０１６８    プライオリティ管理テーブル
０１６９    図１６Ａ〜１６Ｂ及び１７Ａ〜１７Ｂは図１３で述べた典型的な構成下でのプライオリティ管理テーブル３０６の例を示す。プライオリティは各ボリュームグループ又は各フロントエンド仮想Ｎ＿ポートに従って指定することができる。図１６Ａのプライオリティ管理テーブル３０６ａ−１と図１６Ｂの３０６ａ−２は、プライオリティが各ボリュームグループに対して指定される場合のプライオリティ管理テーブルの例である。プライオリティ管理テーブル３０６ａ−１、３０６ａ−２のすべてのフィールドは第１の実施例のプライオリティ管理テーブル３０６ａと同じである。図１６Ａは図１３に示すストレージ制御ユニット１０００ａ上のボリュームグループ  グループ１  １０３８−１とグループ２  １０３８−２のプライオリティ管理設定の状態を表わす。図１６Ｂは図１３に示すストレージ制御ユニット１０００ｂ上のボリュームグループ３  １０３８−３のプライオリティ管理設定の状態を表わす。
【０１１０】
０１７０    図１７Ａのプライオリティ管理テーブル３０６ｂ−１と図１７Ｂの３０６ｂ−２はプライオリティが各フロントエンド仮想Ｎ＿ポートに対して指定される場合のプライオリティ管理テーブルの例である。プライオリティ管理テーブル３０６ｂ−１、３０６ｂ−２のすべてのフィールドは第１の実施例の図７Ｂで示したプライオリティ管理テーブル３０６ｂと同じである。図１７Ａは図１３に示す構成に於けるストレージ制御ユニット１０００ａ上のフロントエンド仮想Ｎ＿ポートのプライオリティ管理設定の状態を表わす。図１７Ｂは図１３に示す構成に於けるストレージ制御ユニット１０００ｂ上のフロントエンド仮想Ｎ＿ポートのプライオリティ管理設定の状態を表わす。
【０１１１】
０１７１    ユニット性能テーブル
０１７２    図２２Ａ〜２２Ｃはユニット性能テーブル１１０８の例を示す。図２２Ａ、図２２Ｂ、図２２Ｃはそれぞれ図１３に示すストレージ制御ユニット１０００ａ、１０００ｂ、１０００ｃ上のそれぞれのユニット性能テーブル１１０８−１、１１０８−２、１１０８−３の状態を表わす。ユニット性能テーブルに於いて、最大ＩＯＰＳ（Ｉｍ）２２０１は各ストレージ制御ユニットが可能な最大ＩＯＰＳ性能を示す。
【０１１２】
０１７３    サービスプロセッサ上の統合テーブル
０１７４    前述のように、各ストレージ制御ユニット内の管理テーブルの情報はサービスプロセッサ１０４０上に統合テーブルを作成するために集めることができる。図１８は統合ボリュームグループマッピングテーブル１１１３の例を示す。大部分のフィールドはボリュームグループマッピングテーブル３０４と同じであるが、統合ボリュームグループマッピングテーブル１１１３は、ボリュームグループ５０１が現在存在するストレージ制御ユニットを示す現在ユニットフィールド１８０１を有する。例えば、図１８に示すように、ボリュームグループ  グループ１とグループ２は現在ストレージ制御ユニット“ユニット＿１”に存在し、一方ボリュームグループ３は現在ストレージ制御ユニット“ユニット＿２”に存在する。
【０１１３】
０１７５    図１９は統合物理パス管理テーブル１１１４の例を示す。大部分のフィールドは図６に関して前述した物理パス管理テーブル３０５と同じである。しかしながら、統合物理パス管理テーブル１１１４は、物理Ｎ＿ポート６０１が存在するストレージ制御ユニットを示すユニットフィールド１９０１を有する。
【０１１４】
０１７６    図２０は統合プライオリティ管理テーブル１１１５の例を示す。図２０Ａはプライオリティが各ボリュームグループに対して指定される場合の統合プライオリティ管理テーブル１１１５ａの例を示す。フィールドの大部分は図７Ａに関して前述したプライオリティ管理テーブル３０６ａと同じである。しかしながら、統合プライオリティ管理テーブル１１１５ａは、ボリュームグループ７０１ａが存在するストレージ制御ユニットを示すユニットフィールド２００１ａを有する。同様に、図２０Ｂはプライオリティが各フロントエンド仮想Ｎ＿ポートに対して指定される場合の統合プライオリティ管理テーブル１１１５ｂの例を示す。フィールドの大分分は図７Ｂに関して前述したプライオリティ管理テーブル３０６ｂと同じである。しかしながら、統合プライオリティ管理テーブル１１１５ｂは、フロントエンド仮想Ｎ＿ポート７０１ｂが存在するストレージ制御ユニットを示すユニットフィールド２００１ｂを有する。
【０１１５】
０１７７    図２３は統合ユニット性能管理テーブル１１１６の例を示す。統合ユニット性能管理テーブル１１１６は、最大ＩＯＰＳ情報が対応するストレージ制御ユニットを示すユニットフィールド２３０１を有する。
【０１１６】
０１７８    仮想ポート移動
０１７９    図２１はボリュームグループ１をストレージ制御ユニット１０００ａからストレージ制御ユニット１０００ｂに移動する例を示す。本移動は、ストレージ制御ユニット１０００ａ上の物理ポートＷＷＰＮ＿２からストレージ制御ユニット１０００ｂ上の物理ポートＷＷＰＮ＿３に仮想ポートＷＷＰＮ＿Ｖ１を再指定し、一方ではストレージ制御ユニット１０００ａ上の物理ポートＷＷＰＮ＿５からストレージ制御ユニット１０００ｂ上の物理ポートＷＷＰＮ＿６に仮想ポートＷＷＰＮ＿Ｖ３を再指定し、更に第２のストレージ制御ユニット１０００ｂで仮想ボリュームＶＬＵ１及びＶＬＵ２をマッピングすることを含む。このようにして、この仕掛けでホスト１０６０から、例えばＬＵ１へのアクセスが、ストレージ制御ユニット１０００ａの代りにストレージ制御ユニット１０００ｂを通して行われる。別の例では他の目的のためにボリュームグループ全体は移動せずにフロントエンドポートを移動することができる。
【０１１７】
０１８０    一つのストレージ制御ユニット１０００から別のストレージ制御ユニット１０００への仮想ポート又はボリュームグループの移動の詳細は、Hara他により２００７年１２月１８日に出願のＵＳ特許出願１２／０００，８２１号に述べられており、すでに本発明に援用済である。サービスプロセッサ１０４０上の統合移動マネージャ１１１２を通しての管理者による命令に応答して、指定されたストレージ制御ユニット１０００上の移動マネージャ１１０４は、指定されたボリュームグループ又はフロントエンド仮想ポートを、指定された行き先のストレージ制御ユニット１０００に移動する。これらの実施例に於いて、移動マネージャ１１０４は移動が実行される時にボリュームグループ又はフロントエンド仮想ポートのプライオリティ情報も移動する。このことは移動されるボリュームグループ又はフロントエンド仮想ポートが行き先のストレージ制御ユニット内で同じプライオリティで処理されることを可能にする。
【０１１８】
０１８１    移動先ストレージ制御ユニットのプライオリティ設定のチェック
０１８２    移動後に於いて、行き先のストレージ制御ユニットが、移動されるボリュームグループ又はフロントエンド仮想ポートを同じレベルのプライオリティでサポートするのに十分な性能を持たない場合、ターゲットＩＯＰＳ（Ｉｏ）７０４は達成できない。このことは移動対象のボリュームグループ又はフロントエンド仮想ポートの移動前に、行き先のストレージ制御ユニット内に既に存在していた他のプライオリティボリュームグループ又はフロントエンド仮想ポートの性能にも影響を及ぼす可能性がある。従って、統合移動マネージャ１１０４は行き先のユニットが移動後にすべてのプライオリティボリュームグループ又はフロントエンド仮想ポートをサポートするのに十分な性能を持っているかを移動前にチェックするのが望ましい。
【０１１９】
０１８３    図２４は管理者が移動を指定した時に、行き先のストレージ制御ユニットが移動をサポートするのに十分な性能を持つか否かをチェックするための典型的なプロセスのフローチャートを示す。図２４は各ボリュームグループに対してプライオリティが指定されている場合に実行されるプロセスを示し、これによりフロントエンド仮想Ｎ＿ポートに対するプロセスも同様であることが理解されよう。このプロセスはサービスプロセッサ１０４０上の統合移動マネージャ１１１２により、又はストレージ制御ユニット１０００の一つの上の移動マネージャ１１０４の一つにより実行することができる。
【０１２０】
０１８４    ステップ２４０１ａ：プロセスは指定されたボリュームグループがプライオリティ設定を持つか否かチェックする。もし持っていればプロセスはステップ２４０２ａに進む。そうでない場合は、プロセスはステップ２４１５ａに進む。
【０１２１】
０１８５    ステップ２４０２ａ：プロセスは指定された行き先のストレージ制御ユニットにプライオリティボリュームグループが存在するか否かチェックする。もし存在するならプロセスはステップ２４０３ａに進む。そうでない場合は、プロセスはステップ２４１５ａに進む。
【０１２２】
０１８６    ステップ２４０３ａ：プロセスは指定されたボリュームグループと指定された行き先ユニットのすべてのプライオリティボリュームグループについて、統合プライオリティ管理テーブル１１１５ａから、ターゲットＩＯＰＳ（Ｉｏ）７０５を取得する。
【０１２３】
０１８７    ステップ２４０４ａ：プロセスは統合ユニット性能管理テーブル１１１６から指定された行き先ユニットの最大ＩＯＰＳ（Ｉｍ）２２０１を取得する。
【０１２４】
０１８８    ステップ２４０５ａ：ステップ２４０３ａで取得したターゲットＩＯＰＳ（Ｉｏ）のすべての合計を計算してステップ２４０４ａで取得した最大ＩＯＰＳ（Ｉｍ）２２０１と比較する。もし合計が最大ＩＯＰＳ（Ｉｍ）２２０１よりも小さいならば、プロセスはステップ２４１５ａに進む。そうでない場合はプロセスはステップ２４０６ａに進む。
【０１２５】
０１８９    ステップ２４０６ａ：プロセスは現在のストレージ制御ユニット（指定されたボリュームグループが既に存在するユニット）及び指定された行き先のストレージ制御ユニット以外のストレージ制御ユニットの最大ＩＯＰＳ（Ｉｍ）２２０１を取得する。
【０１２６】
０１９０    ステップ２４０７ａ：ステップ２４０６ａで取り込んだ他のユニットについて、指定された行き先のストレージ制御ユニットよりも大きな最大ＩＯＰＳ（Ｉｍ）値２２０１を持つユニットが存在するか否かチェックが行われる。もし存在するならばプロセスはステップ２４０８ａに進む。そうでない場合は、プロセスはステップ２４１３ａに進む。
【０１２７】
０１９１    ステップ２４０８ａ：プロセスはステップ２４０７ａの条件を満たすストレージ制御ユニットが、移動が指定されたボリュームグループと同じホスト１０６０及び同じ外部ストレージ制御ユニットへの動作パスを持つか否かチェックする。もし持つならば、プロセスはステップ２４０９ａに進む。そうでない場合は、プロセスはステップ２４１３ａに進む。
【０１２８】
０１９２    ステップ２４０９ａ：プロセスはステップ２４０８ａの条件を満たすストレージ制御ユニットですべてのプライオリティボリュームグループのターゲットＩＯＰＳ（Ｉｏ）７０５を取得する。
【０１２９】
０１９３    ステップ２４１０ａ：指定されたボリュームグループとステップ２４０８ａの条件を満たすストレージ制御ユニットのプライオリティボリュームグループのターゲットＩＯＰＳ（Ｉｏ）７０５の合計を計算し、最大ＩＯＰＳ（Ｉｍ）２２０１と比較する。この計算と比較はステップ２４０８ａの条件を満たす各ユニットに対して行われる。もしターゲットＩＯＰＳ（Ｉｏ）７０５の合計よりも大きな最大ＩＯＰＳ（Ｉｍ）を持ついくつかのユニットが存在するならば、プロセスはステップ２４１１ａに進む。そうでない場合は、プロセスはステップ２４１３ａに進む。
【０１３０】
０１９４    ステップ２４１１ａ：ステップ２４１０ａの条件を満たすストレージ制御ユニットを代わりの行き先のストレージ制御ユニットとして管理者に示す。
【０１３１】
０１９５    ステップ２４１２ａ：代わりのストレージ制御ユニットへの移動がＯＫか否かに関して管理者に対してチェックがなされる。もしＯＫの場合は、管理者は代わりのストレージ制御ユニットの一つを選択するように求められ、プロセスはステップ２４１６ａに進む。そうでない場合はプロセスはステップ２４１３ａに進む。
【０１３２】
０１９６    ステップ２４１３ａ：命令された移動が実行されたなら、行き先のストレージ制御ユニットがすべてのプライオリティボリュームグループをサポートするのには十分な性能を持っていないという警告が管理者に示される。
【０１３３】
０１９７    ステップ２４１４ａ：プロセスは管理者が指定されたストレージ制御ユニットへの移動を依然として実行することを望んでいるか否かチェックする。もしそうであれば、プロセスはステップ２４１５ａに進む。そうでない場合はプロセスはステップ２４１７ａに進む。
【０１３４】
０１９８    ステップ２４１５ａ：指定された行き先ユニットへの指定されたボリュームグループの移動を実行することが決定される。
【０１３５】
０１９９    ステップ２４１６ａ：別の行き先ユニットへの指定されたボリュームグループの移動を実行することが決定される。
【０１３６】
０２００    ステップ２４１７ａ：移動を中止する。
【０１３７】
０２０１    前述と同じ方法が各ボリュームグループに対してではなく各フロントエンド仮想Ｎ＿ポートに対してプライオリティが設定された場合にも適用できる。
【０１３８】
０２０２    移動後のプライオリティ管理テーブルと統合プライオリティ管理テーブル
０２０３    図２５Ａ、図２５Ｂと図２６はそれぞれ、図２１に示すようにユニット＿１上のグループ１がユニット＿２に移動した後の、プライオリティ管理テーブル３０６ａ−１、３０６ａ−２及び統合プライオリティ管理テーブル１１１５−１の例を示す。これらの例は各ボリュームグループに対してプライオリティが設定された場合を示しており、仮想Ｎ＿ポートに対するテーブルについても前述のように同様になる。例えば、図２５Ａはグループ１はもはやユニット＿１上にないことを示し、図２５Ｂはグループ１は今やユニット＿２上にあり、プライオリティ設定を持つことを示す。統合プライオリティ管理テーブル１１１５−１は同様の条件を示す。
【０１３９】
０２０４    前述から本発明の実施例はストレージシステムとストレージエリアネットワーク（ＳＡＮ）で使用でき、特に仮想ポートを持ち及び／又は多数のストレージ制御ユニットから構成されるストレージシステムで使用できることが理解されるであろう。本発明の実施例は仮想マシーンソフトウェアがコンピュータシステムに於いて使用される時に、各ホストによる通常のプライオリティ制御では各仮想マシーンによるプライオリティ制御を実現できないといった問題を克服できる。このようにして本発明の実施例の下では、ホストコンピュータとストレージシステム間の接続が変更される時には、ストレージシステムのプライオリティ制御も変更される。本発明の実施例に従うストレージ制御ユニットは各ボリュームグループ又は各仮想ポートに従ってプライオリティ制御を実現し、ボリュームグループ又は仮想ポートの移動が生じた時にはプライオリティ設定も移動する。例えば、その開示内容を本発明に援用する、ＵＳ特許出願１１／８２６，７１７号に述べるように、仮想マシーンに対して各ボリュームグループ又は各仮想ポートを指定し、本発明の実施例で述べた方法と装置を使用することにより、仮想マシーンが一つのホストコンピュータから他に移動される時でさえ、各仮想マシーンに従うプライオリティ制御を達成することができる。更に、ホストコンピュータとストレージ制御ユニット間の接続を新たなストレージ制御ユニットに変更する必要がある場合、本発明の実施例はプライオリティ設定を新たなストレージ制御ユニットに引き継ぐことを可能にする。
【０１４０】
０２０５    当然、図１、４、１０、１３、２１に示すシステム構成は本発明が実行可能な情報システムの全く典型的なものであり、本発明は特定のハードウェア構成に限定されない。本発明を実行するコンピュータとストレージシステムは、前述の発明を実行するために使われるモジュール、プログラム、及びデータ構造を記憶し、読み出すことができる周知のＩ／Ｏデバイス（例えばＣＤ及びＤＶＤドライブ、フロッピー（Ｒ）ディスクドライブ、ハードドライブ、等）を持つこともできる。これらのモジュール、プログラム及びデータ構造はそのようなコンピュータ読み取り可能媒体上でコード化できる。例えば、本発明のデータ構造は、本発明で使用されるプログラムが存在する一つ以上のコンピュータ読み取り可能媒体とは無関係にコンピュータ読み取り可能媒体上に記憶することができる。システムのコンポーネントはディジタルデータ通信の任意の形態又は媒体、例えば通信ネットワークによって相互接続できる。通信ネットワークの例として、ローカルエリアネットワーク、広域ネットワーク、例えばインターネット、無線ネットワーク、ストレージエリアネットワーク、等がある。
【０１４１】
０２０６    説明の中で本発明の徹底した理解を可能にするための説明の目的で数多くの詳細が述べられている。しかしながら、これらの具体的な詳細のすべてが必ずしも本発明を実施するために必要とされるわけではないことが当業者には明らかであろう。本発明は通常フローチャート、フローダイアグラム、構造ダイアグラム、又はブロックダイアグラムとして描かれるプロセスとして記述できることに注意願いたい。フローチャートは順序的なプロセスとして操作を記述できるが、多くの操作は並行して或いは同時に遂行できる。更に、操作の順序は再編成可能である。
【０１４２】
０２０７    この分野では公知の通り、前述の操作はハードウェア、ソフトウェア、又はソフトウェアとハードウェアの或る結合により遂行可能である。本発明の実施例の種々の態様が回路や論理デバイス（ハードウェア）を用いて実行可能であるが、一方マシーン読み取り可能媒体上に記憶され、もしプロセッサにより実行されるならば本発明の実施例を実行する方法をプロセッサに遂行させることになる命令（ソフトウェア）を用いる他の態様も実行可能である。更に本発明の或る実施例は専らハードウェアで遂行できるのに対し、他の実施例は専らソフトウェアで遂行できる。更に、記述された種々の機能は単一のユニット内で遂行できるし、或いは任意の数の方法で多数のコンポーネントに亘って展開することもできる。ソフトウェアにより遂行される場合、その方法はコンピュータ読み取り可能媒体に記憶される命令に基づいて汎用コンピュータのようなプロセッサにより実行することができる。もし望まれるならば、命令は圧縮した及び／又は暗号化したフォーマットで媒体上に記憶できる。
【０１４３】
０２０８    前述から、本発明はボリュームグループ及び仮想ポートに対してプライオリティ設定を管理し制御するための方法、装置及びコンピュータ読み取り可能媒体上に記憶されるプログラムを提供することが明らかであろう。更に、この明細書では特定の実施例が示され、説明されてきたが、同じ目的を達成すると見込まれる任意の仕掛けが開示された特定の実施例に置き換えることができることを当業者は理解する。この開示は本発明の任意であらゆる改案や変形をもカバーするものと意図されており、以下の請求項で用いられる表現は発明を明細書に開示した特定の実施例に限定して解釈されるべきでないことは言うまでもない。もっと正確に言えば、本発明の範囲は、このような請求項が権利を持つ同等物の全範囲とともに以下の請求項によって完全に決定されるべきであり、請求項解釈の確立した原則に従って解釈されるべきである。
【図面の簡単な説明】
【０１４４】
【図１】本発明が適用される方法と装置のハードウェア構成の例を示す。
【図２】ホストとサービスプロセッサのハードウェア構成の例を示す。
【図３】ストレージ制御ユニット上の典型的なソフトウェアモジュール構成を示す。
【図４Ａ】第１の実施例の説明に使用する典型的なポート及びボリューム構成を示す。
【図４Ｂ】第１の実施例のボリュームグループの移動後の説明に使用する典型的なポート及びボリューム構成を示す。
【図５】ボリュームグループマッピングテーブルの典型的なデータ構造を示す。
【図６】物理パス管理テーブルの典型的なデータ構造を示す。
【図７Ａ】ボリュームグループに従うプライオリティ管理テーブルの典型的なデータ構造を示す。
【図７Ｂ】フロントエンド仮想Ｎ＿ポートに従うプライオリティ管理テーブルの典型的なデータ構造を示す。
【図８Ａ】ボリュームグループ及びフロントエンドＮ＿ポートに従ってＩ／Ｏプロセスを開始すべきか否かを判定する典型的なプロセスのフローチャートを示す。
【図８Ｂ】ボリュームグループ及びフロントエンドＮ＿ポートに従ってＩ／Ｏプロセスを開始すべきか否かを判定する典型的なプロセスのフローチャートを示す。
【図９Ａ】Ｉ／Ｏプロセスを制御するために設定を調整する典型的なプロセスのフローチャートを示す。
【図９Ｂ】Ｉ／Ｏプロセスを制御するために設定を調整する典型的なプロセスのフローチャートを示す。
【図１０】第２の実施例の典型的なシステム構成を示す。
【図１１】ストレージコントローラ上の典型的なソフトウェアモジュール構成を示す。
【図１２】サービスプロセッサ上の典型的なソフトウェアモジュール構成を示す。
【図１３】説明用の典型的なポートとボリューム構成を示す。
【図１４Ａ】ユニット＿１のボリュームグループマッピングテーブルの例を示す。
【図１４Ｂ】ユニット＿２のボリュームグループマッピングテーブルの例を示す。
【図１５Ａ】ユニット＿１の物理パス管理テーブルの例を示す。
【図１５Ｂ】ユニット＿２の物理パス管理テーブルの例を示す。
【図１５Ｃ】ユニット＿３の物理パス管理テーブルの例を示す。
【図１６Ａ】ユニット＿１のプライオリティ管理テーブル（ボリュームグループによる）の例を示す。
【図１６Ｂ】ユニット＿２のプライオリティ管理テーブル（ボリュームグループによる）の例を示す。
【図１７Ａ】フロントエンド仮想Ｎ＿ポートに従うユニット＿１のプライオリティ管理テーブルの例を示す。
【図１７Ｂ】フロントエンド仮想Ｎ＿ポートに従うユニット＿２のプライオリティ管理テーブルの例を示す。
【図１８】統合ボリュームグループマッピングテーブルの典型的なデータ構造を示す。
【図１９】統合物理パス管理テーブルの典型的なデータ構造を示す。
【図２０Ａ】統合プライオリティ管理テーブル（ボリュームグループによる）の典型的なデータ構造を示す。
【図２０Ｂ】統合プライオリティ管理テーブル（仮想Ｎ＿ポートによる）の典型的なデータ構造を示す。
【図２１】ボリュームグループの移動の例を示す。
【図２２Ａ】ユニット＿１のユニット性能管理テーブルの典型的なデータ構造を示す。
【図２２Ｂ】ユニット＿２のユニット性能管理テーブルの典型的なデータ構造を示す。
【図２２Ｃ】ユニット＿３のユニット性能管理テーブルの典型的なデータ構造を示す。
【図２３】統合ユニット性能管理テーブルの典型的なデータ構造を示す。
【図２４】移動時に行き先ユニットのプライオリティ設定をチェックする典型的なフローチャートを示す。
【図２５Ａ】ユニット＿１のプライオリティ管理テーブル（ボリュームグループによる）の典型的なデータ構造を示す。
【図２５Ｂ】移動後のユニット＿２のプライオリティ管理テーブル（ボリュームグループによる）の典型的なデータ構造を示す。
【図２６】移動後の統合プライオリティ管理テーブル（ボリュームグループによる）の典型的なデータ構造を示す。
【図２７】ＦＣスイッチの典型的なハードウェア構成を示す。
【図２８】フレームの典型的なデータ構造を示す。
【図２９】物理Ｎ＿ポートに対するファブリックログイン手順を示す。
【図３０】仮想Ｎ＿ポートに対するファブリックログイン手順を示す。
【図３１】既存のＮ＿ポート＿ＩＤを再使用するため、又は要求者がＮ＿ポート＿ＩＤを指定するための、仮想Ｎ＿ポートに対する典型的なファブリックログイン手順を示す。
【図３２】発信元から受信側へのポートログインを示す。
【図１】
2009277211.tif 000003
【図２】
2009277211.tif 000004
【図３】
2009277211.tif 000005
【図４Ａ】
2009277211.tif 000006
【図４Ｂ】
2009277211.tif 000007
【図５】
2009277211.tif 000008
【図６】
2009277211.tif 000009
【図７Ａ】
2009277211.tif 000010
【図７Ｂ】
2009277211.tif 000011
【図８Ａ】
2009277211.tif 000012
【図８Ｂ】
2009277211.tif 000013
【図９Ａ】
2009277211.tif 000014
【図９Ｂ】
2009277211.tif 000015
【図１０】
2009277211.tif 000016
【図１１】
2009277211.tif 000017
【図１２】
2009277211.tif 000018
【図１３】
2009277211.tif 000019
【図１４Ａ】
2009277211.tif 000020
【図１４Ｂ】
2009277211.tif 000021
【図１５Ａ】
2009277211.tif 000022
【図１５Ｂ】
2009277211.tif 000023
【図１５Ｃ】
2009277211.tif 000024
【図１６Ａ】
2009277211.tif 000025
【図１６Ｂ】
2009277211.tif 000026
【図１７Ａ】
2009277211.tif 000027
【図１７Ｂ】
2009277211.tif 000028
【図１８】
2009277211.tif 000029
【図１９】
2009277211.tif 000030
【図２０Ａ】
2009277211.tif 000031
【図２０Ｂ】
2009277211.tif 000032
【図２１】
2009277211.tif 000033
【図２２Ａ】
2009277211.tif 000034
【図２２Ｂ】
2009277211.tif 000035
【図２２Ｃ】
2009277211.tif 000036
【図２３】
2009277211.tif 000037
【図２４】
2009277211.tif 000038
【図２５Ａ】
2009277211.tif 000039
【図２５Ｂ】
2009277211.tif 000040
【図２６】
2009277211.tif 000041
【図２７】
2009277211.tif 000042
【図２８】
2009277211.tif 000043
【図２９】
2009277211.tif 000044
【図３０】
2009277211.tif 000045
【図３１】
2009277211.tif 000046
【図３２】
2009277211.tif 000047
【外国語明細書】
2009277211000001.pdf