(57)【要約】【課題】仮想サーバからのＩ／Ｏ要求を発行する複数の経路に対して、Ｉ／Ｏ要求の特性に応じた経路の優先度を設定することで、負荷分散や帯域制御を実現すること。【解決手段】本発明に係る計算機システム１は、複数の仮想サーバが一又は複数のディスクデバイス１１０を共有する計算機システム１である。計算機システム１は、仮想サーバから発行されるＩ／Ｏ命令の種類に応じた優先度を、複数の仮想サーバのうちいずれかの仮想サーバからディスクデバイス１１０へと至る複数の経路１２０のそれぞれに対して予め定めた優先度情報を備える。また、計算機システム１は、Ｉ／Ｏ命令が発行された場合に、優先度情報に従ってＩ／Ｏ命令の発行先とする経路を選択し、その選択した経路に対してＩ／Ｏ命令を発行するパス管理手段２０１を備える。【選択図】図１
2010211458.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想サーバが一又は複数のディスクデバイスを共有する計算機システムであって、
前記仮想サーバから発行されるＩ／Ｏ命令の種類に応じた優先度を、前記複数の仮想サーバのうちいずれかの仮想サーバから前記ディスクデバイスへと至る複数の経路のそれぞれに対して予め定めた優先度情報と、
前記Ｉ／Ｏ命令が発行された場合に、前記優先度情報に従って前記Ｉ／Ｏ命令の発行先とする経路を選択し、当該選択した経路に対して前記Ｉ／Ｏ命令を発行するパス管理手段と、を備える
ことを特徴とする計算機システム。
【請求項２】
前記優先度情報には、
前記複数の経路のそれぞれに対して、前記Ｉ／Ｏ命令を発行する前記仮想サーバを識別する発行元識別子が定められており、
前記パス管理手段は、
前記Ｉ／Ｏ命令が発行された場合に、前記仮想サーバごとに、前記優先度情報に従って前記Ｉ／Ｏ命令の発行先とする経路を選択する
ことを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記優先度情報には、
前記複数の経路のそれぞれに対して、当該経路を介した前記ディスクデバイスへのアクセスの可否を示すアクセス状態が定められており、
前記パス管理手段は、
前記Ｉ／Ｏ命令が発行された場合に、前記優先度情報に従って、前記Ｉ／Ｏ命令の発行先として前記複数の経路のうちでアクセスが可能な状態である経路を選択する
ことを特徴とする請求項１に記載の計算機システム。
【請求項４】
前記パス管理手段は、
前記アクセスが可能な状態である経路が複数存在する場合には、各経路において処理中のＩ／Ｏ転送量に応じて、前記Ｉ／Ｏ命令の発行先とする一の経路を選択する
ことを特徴とする請求項３に記載の計算機システム。
【請求項５】
前記優先度情報には、
前記複数の経路のそれぞれに対して、前記Ｉ／Ｏ命令が、Ｒｅａｄ命令である場合の優先度と、Ｗｒｉｔｅ命令である場合の優先度とが定められている
ことを特徴とする請求項１に記載の計算機システム。
【請求項６】
複数の仮想サーバが一又は複数のディスクデバイスを共有する計算機システムにおけるＩ／Ｏ制御方法であって、
前記仮想サーバから発行されるＩ／Ｏ命令の種類に応じた優先度を、前記複数の仮想サーバのうちいずれかの仮想サーバから前記ディスクデバイスへと至る複数の経路のそれぞれに対して予め定めた優先度情報を用いて、
前記Ｉ／Ｏ命令が発行された場合に、前記優先度情報に従って前記Ｉ／Ｏ命令の発行先とする経路を選択し、当該選択した経路に対して前記Ｉ／Ｏ命令を発行するパス管理ステップを有する
ことを特徴とするＩ／Ｏ制御方法。
【請求項７】
前記優先度情報には、
前記複数の経路のそれぞれに対して、前記Ｉ／Ｏ命令を発行する前記仮想サーバを識別する発行元識別子が定められており、
前記パス管理ステップは、
前記Ｉ／Ｏ命令が発行された場合に、前記仮想サーバごとに、前記優先度情報に従って前記Ｉ／Ｏ命令の発行先とする経路を選択する
ことを特徴とする請求項６に記載のＩ／Ｏ制御方法。
【請求項８】
前記優先度情報には、
前記複数の経路のそれぞれに対して、当該経路を介した前記ディスクデバイスへのアクセスの可否を示すアクセス状態が定められており、
前記パス管理ステップは、
前記Ｉ／Ｏ命令が発行された場合に、前記優先度情報に従って、前記Ｉ／Ｏ命令の発行先として前記複数の経路のうちでアクセスが可能な状態である経路を選択する
ことを特徴とする請求項６に記載のＩ／Ｏ制御方法。
【請求項９】
前記パス管理ステップは、
前記アクセスが可能な状態である経路が複数存在する場合には、各経路において処理中のＩ／Ｏ転送量に応じて、前記Ｉ／Ｏ命令の発行先とする一の経路を選択する
ことを特徴とする請求項８に記載のＩ／Ｏ制御方法。
【請求項１０】
前記優先度情報には、
前記複数の経路のそれぞれに対して、前記Ｉ／Ｏ命令が、Ｒｅａｄ命令である場合の優先度と、Ｗｒｉｔｅ命令である場合の優先度とが定められている
ことを特徴とする請求項６に記載のＩ／Ｏ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷分散や帯域制御を実現可能な計算機システム及びＩ／Ｏ制御方法に関し、特に、ハイパーバイザー型の仮想計算機システムにおける計算機システム及びＩ／Ｏ制御方法に関する。
【背景技術】
【０００２】
仮想計算機システムは、１つのホストＯＳとハイパーバイザーとを有し、ハイパーバイザーを用いて複数のゲストＯＳを動作させるコンピュータシステムである。仮想計算機システムは、複数のＯＳが物理的なプロセッサとメモリを共有して動作させる、計算機システムの一形態として使用されている。
【０００３】
仮想計算機システムの一例が特許文献１に開示されている。特許文献１に開示される仮想計算機システムは、仮想サーバ間のＩ／Ｏを共有する際の性能オーバヘッドを押さえながら、仮想サーバの優先度に応じた、Ｉ／Ｏアクセスの調停と帯域制御とを実現するシステムである。
【０００４】
また、本発明に関連する技術として、特許文献２には、更新データのＩ／Ｏ命令に優先順位を付与して、優先度の高いものを早く処理するようにしたリモートファイル制御装置が開示されている。さらに、特許文献３には、入出力装置への複数のアクセス経路に対して優先順位が設定され、優先順位に従ってアクセス経路を設定する入出力処理装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１７６４８２号公報
【特許文献２】特開２０００−０８９９９８号公報
【特許文献３】特開平０３−０７８８５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に係る仮想計算機システムでは、以下に示すような問題点があった。
第１の問題点は、特許文献１に係る仮想計算機システムでは、仮想サーバ間の負荷分散について、Ｉ／Ｏ命令の種類について考慮していない点である。その理由は、特許文献１などに開示される関連する仮想サーバシステムでは、Ｉ／Ｏ命令の種類を識別する手段を備えていないためである。
第２の問題点は、特許文献１に係る仮想計算機システムでは、サーバ内のＩ／Ｏアクセスの調停と帯域制御とを実施しているが、Ｉ／Ｏを発行する経路上において帯域が制限されてしまう点である。その理由は、ホストコンピュータと、Ｉ／Ｏの発行先となるストレージデバイスと、の間の経路について考慮していないためである。
【０００７】
また、特許文献２に係るリモートファイル制御装置では、時間的に制約のあるＷＲＩＴＥ  ＩＯを優先的に処理させるため、命令毎に優先順位を指定する。ここで、優先順位は、ＲＥＡＤとＷＲＩＴＥ命令内において処理すべきデータのうち、どの部分の処理を優先すべきかを示すものである。即ち、特許文献２に係る優先順位は、各部分の処理の順番を規定するものであり、ＲＥＡＤとＷＲＩＴＥ命令毎に、どの経路を優先的に使用するのかを示すものではない。このため、特許文献２に係る優先順位を用いても、優先度の高い経路を使用して、Ｉ／Ｏ命令処理の帯域を確保することはできないものである。
【０００８】
さらに、特許文献３に係る入出力処理装置では、アクセス経路に設定される優先順位は、１つの経路にアクセスが固定的に集中しないように、１回のアクセスごとに、どの経路を優先させるのかを定めるものである。即ち、特許文献３に係る優先順位は、上位装置がどの経路を優先的に使用するかを示すためのものであり、上位装置が同一である場合には、アクセスごとに使用する経路は変化しない。このため、上位装置が同一である場合に、優先度の高い経路を使用して、命令処理の帯域を確保することはできないものである。
【０００９】
本発明は、上述した問題を鑑みなされたものであり、その目的は、仮想サーバからのＩ／Ｏ要求を発行する複数の経路に対して、Ｉ／Ｏ要求の特性に応じた経路の優先度を設定することで、負荷分散や帯域制御を実現可能な計算機システム、Ｉ／Ｏ制御方法を提供することである。
【課題を解決するための手段】
【００１０】
本発明に係る計算機システムは、複数の仮想サーバが一又は複数のディスクデバイスを共有する計算機システムであって、前記仮想サーバから発行されるＩ／Ｏ命令の種類に応じた優先度を、前記複数の仮想サーバのうちいずれかの仮想サーバから前記ディスクデバイスへと至る複数の経路のそれぞれに対して予め定めた優先度情報と、前記Ｉ／Ｏ命令が発行された場合に、前記優先度情報に従って前記Ｉ／Ｏ命令の発行先とする経路を選択し、当該選択した経路に対して前記Ｉ／Ｏ命令を発行するパス管理手段と、を備えるものである。
【００１１】
本発明に係るＩ／Ｏ制御方法は、複数の仮想サーバが一又は複数のディスクデバイスを共有する計算機システムにおけるＩ／Ｏ制御方法であって、前記仮想サーバから発行されるＩ／Ｏ命令の種類に応じた優先度を、前記複数の仮想サーバのうちいずれかの仮想サーバから前記ディスクデバイスへと至る複数の経路のそれぞれに対して予め定めた優先度情報を用いて、前記Ｉ／Ｏ命令が発行された場合に、前記優先度情報に従って前記Ｉ／Ｏ命令の発行先とする経路を選択し、当該選択した経路に対して前記Ｉ／Ｏ命令を発行するパス管理ステップを有するものである。
【発明の効果】
【００１２】
本発明によれば、仮想サーバからのＩ／Ｏ要求を発行する複数の経路に対して、Ｉ／Ｏ要求の特性に応じた経路の優先度を設定することで、負荷分散や帯域制御を実現可能な計算機システム、Ｉ／Ｏ制御方法を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１に係る計算機システムの構成を示す図である。
【図２】本発明の実施の形態１に係る経路情報を示す表である。
【図３】本発明の実施の形態１に係る優先度情報を示す表である。
【図４】本発明の実施の形態１に係る経路決定方法を説明するためのフローチャートである。
【図５】本発明の実施の形態１に係る経路決定方法を説明するためのフローチャートである。
【図６】本発明の実施の形態１に係る経路決定方法を説明するためのフローチャートである。
【図７】本発明の実施の形態１に係る計算機システムの構成を示す図である。
【図８】本発明の実施の形態１に係る経路情報を示す表である。
【図９】本発明の実施の形態１に係る優先度情報を示す表である。
【図１０】本発明の実施の形態２に係る計算機システムの構成を示す図である。
【発明を実施するための形態】
【００１４】
実施の形態１．
以下、図面を参照して本発明の実施の形態１について説明する。
（構成の説明）
まず、図１乃至図３を参照して、本実施の形態１に係る計算機システム１の構成について説明する
【００１５】
図１は、本実施の形態１に係る計算機システム１の一例を示す構成図である。計算機システム１は、プログラム制御に従って動作する１台のホストコンピュータ１００と、ストレージデバイス１１０と、を有している。ホストコンピュータ１００とストレージデバイス１１０とは、任意の本数の経路１２０（１２０＿１〜１２０＿ｎ）を用いて接続されている。
【００１６】
ホストコンピュータ１００は、メモリ１０１と、プロセッサ１０２と、任意の個数のポート１０３（１０３＿１〜１０３＿ｎ）と、を有している。各ポート１０３に対して、計算機システム１において一意なホスト側ポート識別子３０２が割り振られている。
【００１７】
ストレージデバイス１１０は、任意の個数のポート１１１（１１１＿１〜１１１＿ｎ）と、任意の個数のディスク１１２（１１２＿１〜１１２＿ｎ）と、を備えている。各ポート１１１に対して、計算機システム１において一意なストレージ側ポート識別子３０３が割り振られている。また、各ディスク１１２に対して、計算機システム１において一意なディスク識別子４０２が割り振られている。
【００１８】
経路１２０（１２０＿１〜１２０＿ｎ）は、ホストコンピュータ１００の各ポート１０３と、ストレージデバイス１１０の各ポート１１１とを結ぶ論理的な経路を示している。各経路１２０に対して、計算機システム１において一意なパスＩＤ３０１が割り振られている。また、経路１２０は、パスＩＤ３０１を用いて一意に識別することも可能であるが、ホスト側ポート識別子３０２とストレージ側ポート識別子３０３とを用いることで、一意に識別することもできる。
【００１９】
尚、経路１２０は、任意の接続方式を用いて実現することができる。例えば、ファイバチャネルプロトコルを用いた接続方式の場合には、任意の本数のファイバチャネルケーブルと、ファイバチャネルスイッチとを用いて、経路１２０を実現することができる。
【００２０】
メモリ１０１は、１つのホストＯＳ２００と、任意の個数のゲストＯＳ２１０と、ゲストＯＳ２１０を生成するハイパーバイザー２２０と、を有している。計算機システム１では、１つのホストコンピュータ１００において、複数の仮想的なサーバを構成する。各仮想サーバ上では、オペレーティングシステム（ホストＯＳ２００とゲストＯＳ２１０）を個別に立ち上げることができる。このため、ホストＯＳ２００とゲストＯＳ２１０は、メモリ１０１やプロセッサ１０２を共同して使用する。ハイパーバイザー２２０は、計算機システム１を実現するための制御プログラムであり、ゲストＯＳ２１０を制御する。
【００２１】
ホストＯＳ２００は、パス管理プログラム２０１と、経路情報２０２と、優先度情報２０３と、を記憶している。即ち、ホストＯＳ２００において、パス管理プログラム２０１が動作している。
【００２２】
ゲストＯＳ２１０は、任意の個数のアプリケーションプログラム２１１と、Ｉ／Ｏ制御プログラム２１２と、を記憶している。即ち、ゲストＯＳ２１０において、アプリケーションプログラム２１１と、Ｉ／Ｏ制御プログラム２１２とが動作している。
【００２３】
ホストＯＳ２００において動作するパス管理プログラム２０１は、２つの機能を有している。第１の機能は、ゲストＯＳ２１０から発行されたＩ／Ｏ要求について、発行先となる経路１２０を決定する機能である。第２の機能は、発行したＩ／Ｏ要求の処理が完了した場合に、完了したＩ／Ｏ要求を受け取って、処理中のＩ／Ｏを管理する機能である。尚、パス管理プログラム２０１が有する各機能の詳細については後述する。
【００２４】
図２は、ホストＯＳ２００に記憶される経路情報２０２の一例を示す表である。経路情報２０２は、ホストコンピュータ１００とストレージデバイス１１０との接続状況を示す情報である。経路情報２０２は、経路１２０を一意に識別するパスＩＤ３０１と、パスが接続されているホスト側ポート識別子３０２と、パスが接続されているストレージ側ポート識別子３０３と、パスで処理中のＩ／Ｏ転送量を示すＩ／Ｏサイズ３０４と、を含むテーブルとして与えられる。
【００２５】
経路情報２０２は、パス管理プログラム２０１が管理する。パス管理プログラム２０１は、経路１０２が追加された場合には、経路情報２０２に新たなエントリーを追加する。同様に、パス管理プログラム２０１は、経路１０２が削除された場合には、該当する経路情報２０２のエントリーを削除する。
【００２６】
図３は、ホストＯＳ２００に記憶される優先度情報２０３の一例を示す表である。優先度情報２０３は、ゲストＯＳ２１０が、Ｒｅａｄ／ＷｒｉｔｅのそれぞれのＳＣＳＩ命令に対して、どの経路を優先して使用するかを示す情報である。優先度情報２０３は、Ｉ／Ｏの発行元となるゲストＯＳ２１０を一意に識別する発行元識別子４０１と、パスＩＤ３０１と、ディスク識別子４０２と、アクセス状態４０３と、Ｒｅａｄ優先度４０４と、Ｗｒｉｔｅ優先度４０５と、を含むテーブルとして与えられる。
【００２７】
アクセス状態４０３は、ディスク識別子４０２に応じて識別されるディスク１１２に対して、パスＩＤ３０１に応じて識別される経路１２０を通してのアクセスの可否を示す状態である。ここでは、アクセス可能な状態の場合にアクセス状態４０３を「正常」とし、障害などに応じてアクセス不能な状態の場合にアクセス状態４０３を「異常」とする。
【００２８】
Ｒｅａｄ優先度４０４とＷｒｉｔｅ優先度４０５は、該当する優先度情報２０３のエントリーにおいて、ディスク識別子４０２に応じて識別されるディスク１１２に対して、パスＩＤ３０１に応じて識別される経路１２０を通してのＲｅａｄ命令とＷｒｉｔｅ命令によるアクセスの優先度を示す。ここでは、Ｒｅａｄ優先度４０４とＷｒｉｔｅ優先度４０５は、正の整数値に基づいて予め設定される。優先度の数値が大きいほど経路１２０の優先度は高いものとし、最大の数値の優先度のエントリーに該当する経路１２０が使用される。
【００２９】
優先度情報２０３は、パス管理プログラム２０１が管理する。パス管理プログラム２０１は、経路１２０と、ゲストＯＳ２０１と、ディスク１１２と、が追加された場合には、優先度情報２０３に新たなエントリーを追加する。また、パス管理プログラム２０１は、経路１２０と、ゲストＯＳ２０１と、ディスク１１２と、のうちいずれかが障害など応じてアクセスできない状態になった場合には、エントリーは削除せずに、優先度情報２０３のアクセス状態４０３を「異常」に変更する。そして、パス管理プログラム２０１は、障害復旧などに応じてアクセスが可能となった時点で、優先度情報２０３のアクセス状態４０３を「正常」へと変更する。
【００３０】
ゲストＯＳ２１０のＩ／Ｏ制御プログラム２１２は、ゲストＯＳ２１０から外部へのＩ／Ｏを制御するプログラムである。Ｉ／Ｏ制御プログラム２１２は、アプリケーションプログラム２１１からＩ／Ｏ要求を受けた場合には、発行元識別子４０１をＩ／Ｏ要求に付加して、ハイパーバイザー２２０へとＩ／Ｏを発行する。そして、ハイパーバイザー２２０へ発行されたＩ／Ｏは、ホストＯＳ２００のパス管理プログラム２０１へと転送される。
【００３１】
（動作の説明）
次に、図４乃至図６を参照して、本実施の形態１に係る計算機システム１の動作について説明する。図４乃至図６は、Ｉ／Ｏ制御プログラム２１２からＩ／Ｏ要求を受信した場合に、パス管理プログラム２０１が、受信したＩ／Ｏ要求をストレージデバイス１１０へ転送する際の動作を説明するためのフローチャート図である。
【００３２】
まず、図４を参照して、パス管理プログラム２０１が、Ｉ／Ｏの発行先候補となる、アクティブパスグループ５００を決定する方法について説明する。パス管理プログラム２０１は、Ｉ／Ｏ制御プログラム２１２からＩ／Ｏ要求を受信した場合に、優先度情報２０２を参照して、受信したＩ／Ｏ要求について、発行元識別子４０１と、発行先のディスク識別子４０２とが一致し、かつ、アクセス状態が「正常」であるエントリーを探す（ステップＡ１）。
【００３３】
次に、パス管理プログラム２０１は、受信したＩ／Ｏ要求のＳＣＳＩ命令を確認する（ステップＡ２）。確認の結果、ＳＣＳＩ命令がＲｅａｄである場合には、パス管理プログラム２０１は、ステップＡ１で絞り込んだエントリーのうちから、Ｒｅａｄ優先度４０４の値が最大であるエントリーを探す。尚、Ｒｅａｄ優先度４０４が最大であるエントリーが複数個存在する場合には、それら全てのエントリーが該当するものとする。そして、パス管理プログラム２０１は、該当するエントリーのパスＩＤ３０１の集合を、アクティブパスグループ５００として保持する（ステップＡ３）。ここで、アクティブパスグループとは、当該ゲストＯＳ２１０から発行されたディスク１１２へのＩ／Ｏ命令に対して、優先的に使用する経路の集合を示す。
【００３４】
また、ステップＡ２での確認の結果、ＳＣＳＩ命令がＷｒｉｔｅ命令である場合には、パス管理プログラム２０１は、上述したステップＡ３と同様の方法に従って、ステップＡ１で絞り込んだエントリーからＷｒｉｔｅ優先度４０５の値が最大であるエントリーを探し、アクティブパスグループ５００に登録する（ステップＡ４）。
【００３５】
また、ステップＡ２での確認の結果、ＳＣＳＩ命令がＲｅａｄ命令とＷｒｉｔｅ命令のいずれでもない場合には、パス管理プログラム２０１は、ステップＡ３へと進み、ＳＣＳＩ命令がＲｅａｄ命令である場合と同様の処理を実施する。尚、Ｒｅａｄ命令とＷｒｉｔｅ命令のいずれの命令でもない場合には、Ｒｅａｄ命令とＷｒｉｔｅ命令に比べてデータ転送量が小さくなるため、性能に与える影響は低いものと考える。
【００３６】
次に、図５を参照して、アクティブパスグループ５００の決定に続いて、パス管理プログラム２０１が、登録したアクティブパスグループ５００から、発行先の経路１２０を決定する方法について説明する。
【００３７】
パス管理プログラム２０１は、登録したアクティブパスグループ５００に含まれる、パスＩＤ３０１の個数を確認する（ステップＢ１）。確認の結果、パスＩＤ３０１の個数が０個の場合には、Ｉ／Ｏ命令を発行可能な経路が１本も存在していないことを示す。この場合には、パス管理プログラム２０１は、Ｉ／Ｏ制御プログラム２１２に対してＩ／Ｏエラーを返却することで、Ｉ／Ｏを発行できない旨を通知する（ステップＢ２）。
【００３８】
また、ステップＢ１での確認の結果、パスＩＤ３０１の個数が１個の場合には、パス管理プログラム２０１は、唯一のパスであるパスＩＤ３０１に該当する経路１２０を、Ｉ／Ｏの発行先とする（ステップＢ３）。
【００３９】
また、ステップＢ１での確認の結果、パスＩＤ３０１の個数が２個以上の場合には、パス管理プログラム２０１は、経路情報２０２を参照して、アクティブパスグループ５００に含まれるパスＩＤ３０１に一致するエントリーを探す（ステップＢ４）。次いで、パス管理プログラム２０１は、ステップＢ４で絞り込んだ経路情報２０２のエントリーのうちから、Ｉ／Ｏサイズ３０４が最小のエントリーを１つ探す。尚、Ｉ／Ｏサイズ３０４が最小のエントリーが複数個存在する場合には、経路情報２０２においてより先頭に登録されているエントリーが該当するものとする。そして、パス管理プログラム２０１は、該当するパスＩＤ３０１に対応する経路１２０を、Ｉ／Ｏの発行先とする（ステップＢ５）。
【００４０】
次に、図６を参照して、Ｉ／Ｏの発行先の決定に続いて、パス管理プログラム２０１が、経路情報２０２の発行先のパスＩＤ３０１に一致するエントリーについて、Ｉ／Ｏサイズ３０４を更新する方法について説明する。
【００４１】
パス管理プログラム２０１は、受信したＩ／Ｏ要求のＳＣＳＩ命令を確認する（ステップＣ１）。確認の結果、ＳＣＳＩ命令がＲｅａｄ命令である場合には、パス管理プログラム２０１は、受信するＩ／Ｏ転送量を、経路情報２０２のＩ／Ｏサイズ３０４に加算する（ステップＣ２）。
【００４２】
また、ステップＣ１での確認の結果、ＳＣＳＩ命令がＷｒｉｔｅ命令である場合には、パス管理プログラム２０１は、送信するＩ／Ｏの転送量を、経路情報２０２のＩ／Ｏサイズ３０４に加算する（ステップＣ３）。
【００４３】
また、ステップＣ１での確認の結果、ＳＣＳＩ命令がＲｅａｄ命令とＷｒｉｔｅ命令のいずれの命令でもない場合には、パス管理プログラム２０１は、経路情報２０２のＩ／Ｏサイズ３０４は更新しない（ステップＣ４）。
【００４４】
パス管理プログラム２０１は、Ｉ／Ｏサイズの更新完了に続いて、決定した経路１２０に対してＩ／Ｏを発行する。そして、発行されたＩ／Ｏの処理が完了した時点で、パス管理プログラム２０１に対して、Ｉ／Ｏの処理が完了したことが通知される。パス管理プログラム２０１は、Ｉ／Ｏの完了通知を受けた場合に、経路情報２０２のＩ／Ｏサイズ３０４について、Ｉ／Ｏ発行先の経路１２０を識別するパスＩＤ３０１に一致するエントリーのＩ／Ｏサイズ３０４を更新する。具体的には、パス管理プログラム２０１は、ステップＣ２又はステップＣ３において加算した送受信Ｉ／Ｏのサイズを、Ｉ／Ｏサイズ３０４から減算する。
【００４５】
（具体例）
次に、図７乃至図９を参照して、具体例を用いて、本実施の形態１に係る計算機システム１の動作について説明する。ここでは、計算機システム１が、図７に示すような装置構成である場合を想定する。また、経路情報２０２ａが、図８に示すように設定され、優先度情報２０３ａが、図９に示すように設定されているものとする。ゲストＯＳ２１０ａ、２１０ｂの発行元識別子４０１を、それぞれ、Ｓ１、Ｓ２とする。また、ディスク１１２ａ、１１２ｂのディスク識別子４０２を、それぞれ、Ｄ１、Ｄ２とする。ポート１０３ａ、１０３ｂ、１０３ｃ、１０３ｄのホスト側ポート識別子３０２を、それぞれＩ１、Ｉ２、Ｉ３、Ｉ４とする。また、ポート１１１ａ、１１１ｂ、１１１ｃ、１１１ｄのストレージ側ポート識別子３０３を、それぞれＴ１、Ｔ２、Ｔ３、Ｔ４とする。
【００４６】
図７乃至図９に示した構成において、ゲストＯＳ２０１ａ上のアプリケーションプログラム２１１ａが、ディスク１１２ａに対して６４ＫＢのＷｒｉｔｅ命令を発行した場合に、Ｉ／Ｏ要求が、ハイパーバイザー２２０を通してパス管理プログラム２０１に転送される。
【００４７】
Ｉ／Ｏ要求を受信したパス管理プログラム２０１は、優先度情報２０２ａを参照して、Ｉ／Ｏの発行先候補となるエントリーを探す（図４のステップＡ１）。ここで、図９に示した例では、エントリー４１０ａ、４１０ｂ、４１０ｃ、４１０ｄが、Ｉ／Ｏの発行先候補のエントリーに該当する。
【００４８】
次に、パス管理プログラム２０１は、受信したＩ／Ｏ要求のＳＣＳＩ命令の種類を判断する（図４のステップＡ２）。ここでは、受信したＩ／Ｏ要求はＷｒｉｔｅ命令であるため、パス管理プログラム２０１は、ステップＡ１において該当したエントリーのうち、Ｗｒｉｔｅ優先度の値が最大のエントリーを探す（図４のステップＡ４）。探索の結果、図９に示した例では、エントリー４１０ｂと４１０ｄが該当するため、アクティブパスグループ５００に含まれるパスＩＤ３０１はＰ２とＰ４になる。
【００４９】
次に、パス管理プログラム２０１は、アクティブパスグループ５００に含まれるパスＩＤ３０１の個数を確認する（図５のステップＢ１）。ここでは、該当するパスＩＤ３０１の個数は２個であるため、パス管理プログラム２０１は、経路情報２０３ａのエントリーから、アクティブパスグループ５００に含まれるパスＩＤ３００に一致するエントリーを探す（図５のステップＢ４）。探索の結果、図８に示した例では、エントリー３１０ｂと３１０ｄが該当する。
【００５０】
次に、パス管理プログラム２０１は、ステップＢ４において該当したエントリーのうち、Ｉ／Ｏサイズ３０４が最小のエントリーを探す（図５のステップＢ５）。探索の結果、図８に示した例ではエントリー３１０ｂが該当するため、パス管理プログラム２０１は、パスＩＤ３０２のＰ２に応じて識別される経路１２０ｂを、Ｉ／Ｏの発行先に決定する。
【００５１】
パス管理プログラム２０１は、決定した経路に対してＩ／Ｏを発行する前に、経路情報２０２ａのＩ／Ｏサイズ３０４を更新する。具体的には、まず、パス管理プログラム２０１は、受信したＩ／Ｏ要求のＳＣＳＩ命令を確認する（図６のステップＣ１）。確認の結果、ＳＣＳＩ命令がＷｒｉｔｅ命令であるため、パス管理プログラム２０１は、経路情報２０２ａのＩ／Ｏサイズ３０４について、パスＩＤ３２０がＰ２に該当するエントリー３１０ｂのＩ／Ｏサイズ３０４ｂを更新する。ここでは、Ｗｒｉｔｅ命令のＩ／Ｏ転送量は６４ＫＢであるため、パス管理プログラム２０１は、Ｉ／Ｏサイズ３０４ｂの値を、３２ＫＢに６４ＫＢを加算した、９６ＫＢへと更新する（図６のステップＣ３）。
【００５２】
パス管理プログラム２０１は、Ｉ／Ｏサイズ３０４ｂの更新を完了した後、決定した経路１２０ｂへＩ／Ｏ要求を発行する。そして、発行されたＩ／Ｏ要求が完了した時点で、パス管理プログラム２０１へとＩ／Ｏ要求が転送される。パス管理プログラム２０１は、転送されたＩ／Ｏ要求を受信した場合に、ステップＣ３において更新したＩ／Ｏサイズ３０４ｂの値を、元の値に戻す。ここでは、パス管理プログラム２０１は、Ｉ／Ｏサイズ３０４ｂの値を、９６ＫＢからＩ／Ｏ転送量６４ＫＢを減算した、３２ＫＢにする。
【００５３】
実施の形態２．
次に、図１０を参照して、本発明の実施の形態２について説明する。
図１０は、本実施の形態２に係る計算機システム２の一例を示す構成図である。計算機システム２は、プログラム制御に従って動作する１台のホストコンピュータ１００と、任意の台数のストレージデバイス１１０と、を有している。ホストコンピュータ１００とストレージデバイス１１０とは、任意の本数の経路１２０を用いて接続されている。本実施の形態２に係る計算機システム２は、２つ以上のストレージデバイス１１０を備える点において、図１に示した計算機システム１と異なる。尚、図１０においては、２つのストレージデバイス１１０ａと１１０ｂのみを図示しているが、３つ以上のストレージデバイス１１０を備えるものとしても良い。
【００５４】
ホストコンピュータ１００は、メモリ１０１と、プロセッサ１０２と、任意の個数のポート１０３（１０３＿１〜１０３＿ｎ）と、を有している。各ポート１０３に対して、計算機システム２において一意なホスト側ポート識別子３０２が割り振られている。
【００５５】
ストレージデバイス１１０ａは、任意の個数のポート１１１（１１１＿１〜．．．）と、任意の個数のディスク１１２（１１２＿１〜１１２＿ｉ）と、を備えている。各ポート１１１に対して、計算機システム２において一意なストレージ側ポート識別子３０３が割り振られている。また、各ディスク１１２に対して、計算機システム２において一意なディスク識別子４０２が割り振られている。尚、ストレージデバイス１１０ｂに関しても同様にして、ストレージ側ポート識別子３０３とディスク識別子４０２とが割り振られている。
【００５６】
経路１２０（１２０＿１〜１２０＿ｎ）は、ホストコンピュータ１００の各ポート１０３と、ストレージデバイス１１０ａ、１１０ｂの各ポート１１１とを結ぶ論理的な経路を示している。各経路１２０に対して、計算機システム１において一意なパスＩＤ３０１が割り振られている。
【００５７】
尚、計算機システム２において、メモリ１０１に含まれるホストＯＳ２００などについては、実施の形態１に係るホストＯＳ２００などと同様の構成及び動作であるため、ここでは、その詳細な説明を省略する。
【００５８】
本実施の形態２に係る計算機システム２では、ストレージ側ポート識別子３０３と、ディスク識別子４０２とを一意に特定可能とすることで、異なるストレージデバイス１１０間の、異なるディスク１１２について、１つの経路情報２０２と、優先度情報２０３との間で重複することなくテーブルを作成することができる。このため、実施の形態１において説明した手法と同様にして、パス管理プログラム２０１に基づいて、Ｉ／Ｏ命令の発行先を決定することができる。
【００５９】
従って、本実施の形態２に係る計算機システム２は、ディスクデバイス１１０の個数が、任意の正の整数Ｎに拡張された場合においても、実施することが可能である。
【００６０】
以上説明したように、本発明によれば、以下に説明する効果を奏する。
まず、第１の効果は、Ｉ／Ｏ要求の発行先の経路を決定するに際して、読み込み命令と書き込み命令に関して、異なる優先度に応じて経路を決定することができる点である。これにより、例えば、読み込み命令の多い仮想サーバからＲｅａｄ  Ｉ／Ｏ要求を受けた場合には、そのＩ／Ｏ要求に対して広い帯域を割り当てることができる。その理由は、Ｉ／Ｏ命令の種類を考慮したＲｅａｄ優先度とＷｒｉｔｅ優先度を用いて、経路を決定するためである。
【００６１】
第２の効果は、仮想サーバごとに、Ｉ／Ｏの発行先となるストレージの経路を指定できる点である。これにより、広い帯域を必要とする仮想サーバが存在した場合には、そのサーバに経路を占有させる、或いは、そのサーバに対して複数の経路を用いてＩ／Ｏ要求を発行することで、より広い帯域を確保することができる。その理由は、Ｉ／Ｏの発行元である、仮想サーバの発行元識別子が優先度情報に含まれており、発行元識別子に応じて分けられた優先度を用いて経路を決定するためである。
【００６２】
第３の効果は、経路上に障害が発生した場合においても可用性を確保することができる点である。これにより、パス障害が発生した場合においても、継続してＩ／Ｏを発行することができる。その理由は、Ｉ／Ｏの発行先として複数の経路を備えており、経路情報のアクセス状態に応じてパスの状態を管理して、正常なパスへとＩ／Ｏを発行するためである。
【００６３】
尚、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００６４】
１、２  計算機システム、
１００  ホストコンピュータ、
１０１  メモリ、
１０２  プロセッサ、
１０３（１０３＿１〜１０３＿ｎ）  ポート、
１１０  ストレージデバイス、
１１１（１１１＿１〜１１１＿ｎ）  ポート、
１１２（１１２＿１〜１１２＿ｎ）  ディスク、
１２０（１２０＿１〜１２０＿ｎ）  経路、
２００  ホストＯＳ、
２０１  パス管理プログラム、
２０２  経路情報、
２０３  優先度情報、
２１０  ゲストＯＳ、
２１１  アプリケーションプログラム、
２１２  Ｉ／Ｏ制御プログラム、
２２０  ハイパーバイザー
【図１】
2010211458.tif 000003
【図２】
2010211458.tif 000004
【図３】
2010211458.tif 000005
【図４】
2010211458.tif 000006
【図５】
2010211458.tif 000007
【図６】
2010211458.tif 000008
【図７】
2010211458.tif 000009
【図８】
2010211458.tif 000010
【図９】
2010211458.tif 000011
【図１０】
2010211458.tif 000012