(57)【要約】【課題】  物理Ｉ／Ｏデバイスの障害が仮想計算機システム全体に与える影響を低減させ得る信頼性高い計算機装置及びパス管理方法を提案する。【解決手段】  第一のパス管理部が、仮想ＨＢＡの障害を検出した場合に、障害を第二のパス管理部に通知し、第二のパス管理部は、障害の通知に応じて、障害が検出された、仮想ＨＢＡに対応する物理ＨＢＡを経由する、他の仮想ＨＢＡを有する各仮想計算機に対応する第一のパス管理部に対して、他の仮想ＨＢＡの閉塞を指示し、第一のパス管理部は、第二のパス管理部から仮想ＨＢＡの閉塞を指示された場合に、指示された仮想ＨＢＡを閉塞するようにした。【選択図】図１２
2011014088.tif 000002
【特許請求の範囲】
【請求項１】
仮想環境を提供し、記憶領域を有するストレージ装置に接続される、計算機装置において、
それぞれが仮想ＨＢＡを有して複数の仮想計算機を提供する仮想計算機提供部と、
前記複数の仮想計算機にそれぞれ対応させて設けられ、それぞれ対応する前記仮想計算機が有する仮想ＨＢＡの状態を管理する、複数の第一のパス管理部と、
前記複数の仮想計算機により共有使用され、前記仮想ＨＢＡに対応する物理ＨＢＡと、
前記複数の仮想計算機が有する仮想ＨＢＡと前記複数の物理ＨＢＡとの対応関係を管理する第二のパス管理部と、
を備え、
前記第一のパス管理部は、
前記仮想ＨＢＡの障害を検出した場合に、当該障害を前記第二のパス管理部に通知し、
前記第二のパス管理部は、
前記障害の通知に応じて、当該障害が検出された、仮想ＨＢＡに対応する前記物理ＨＢＡを経由する、他の前記仮想ＨＢＡを有する各仮想計算機に対応する前記第一のパス管理部に対して、当該他の仮想ＨＢＡの閉塞を指示し、
前記第一のパス管理部は、
前記第二のパス管理部から前記仮想ＨＢＡの閉塞を指示された場合に、指示された前記仮想ＨＢＡを閉塞する
ことを特徴とする計算機装置。
【請求項２】
前記第二のパス管理部は、
前記障害が発生した物理ＨＢＡの回復を検出した場合に、
当該回復した前記物理ＨＢＡに対応する仮想ＨＢＡを有する、各仮想計算機に対応する前記第一のパス管理部に対して、当該物理ＨＢＡの回復を指示し、
前記第一のパス管理部は、
前記第二のパス管理部から物理ＨＢＡの回復を指示された場合に、指示された前記物理ＨＢＡに対応する仮想ＨＢＡを回復させる
ことを特徴とする請求項１に記載の計算機装置。
【請求項３】
前記第一のパス管理部は、
対応する前記仮想計算機の起動処理時に、前記第二のパス管理部に、当該仮想計算機の仮想ＨＢＡに対応する物理ＨＢＡの状態を問い合わせ、得られた当該物理ＨＢＡの状態を管理し、
障害が発生した物理ＨＢＡに対応する仮想ＨＢＡを閉塞する
ことを特徴とする請求項２に記載の計算機装置。
【請求項４】
前記仮想計算機が休止する際、前記第一のパス管理部は前記第二のパス管理部に、休止することを通知し、
前記第二のパス管理部は、
前記障害の通知に応じて、
前記障害が検出された物理ＨＢＡと、前記休止した仮想計算機の仮想ＨＢＡと、の対応を
前記計算機装置が有する障害が検出されていない物理ＨＢＡと、前記休止した仮想計算機の、前記障害が検出された物理ＨＢＡに対応していた仮想ＨＢＡと、の対応に変更し、
前記休止した仮想計算機が再起動される際、
前記第一のパス管理部は、
前記第二のパス管理部に再起動することを通知し、
前記第二のパス管理部は、
前記再起動の通知に応じて、前記再起動した仮想計算機に対応する、前記第一のパス管理部に対して、前記障害が検出された物理ＨＢＡに対応していた仮想ＨＢＡの閉塞を指示し、
前記第一のパス管理部は、
前記第二のパス管理部から、前記閉塞の指示をされた場合に、前記指示された仮想ＨＢＡを閉塞し、
前記第二のパス管理部は、
前記閉塞された仮想ＨＢＡと、前記障害が検出された物理ＨＢＡに対応させる
ことを特徴とする請求項１に記載の計算機装置。
【請求項５】
前記計算機装置は、
前記第一のパス管理プログラムが、前記障害を検出し、前記障害が検出された仮想ＨＢＡを閉塞した場合、検出して閉塞した旨を表示し、
前記第一のパス管理プログラムが、前記第二のパス管理プログラムから、前記障害を通知され、前記障害が検出された物理ＨＢＡに対応する仮想ＨＢＡを閉塞した場合、通知を受けて閉塞した旨を表示する
ことを特徴とする請求項１記載の計算機装置。
【請求項６】
仮想環境を提供し、記憶領域を有するストレージ装置に接続される、計算機装置のパス管理方法において、
それぞれが仮想ＨＢＡを有して複数の仮想計算機を提供する仮想計算機提供部と、
前記複数の仮想計算機にそれぞれ対応させて設けられ、それぞれ対応する前記仮想計算機が有する仮想ＨＢＡの状態を管理する、複数の第一のパス管理部と、
前記複数の仮想計算機により共有使用され、前記仮想ＨＢＡに対応する物理ＨＢＡと、
前記複数の仮想計算機が有する仮想ＨＢＡと前記複数の物理ＨＢＡとの対応関係を管理する第二のパス管理部と、
を備え、
前記第一のパス管理部は、
前記仮想ＨＢＡの障害を検出した場合に、当該障害を前記第二のパス管理部に通知し、
前記第二のパス管理部は、
前記障害の通知に応じて、当該障害が検出された、仮想ＨＢＡに対応する前記物理ＨＢＡを経由する、他の前記仮想ＨＢＡを有する各仮想計算機に対応する前記第一のパス管理部に対して、当該他の仮想ＨＢＡの閉塞を指示し、
前記第一のパス管理部は、
前記第二のパス管理部から前記仮想ＨＢＡの閉塞を指示された場合に、指示された前記仮想ＨＢＡを閉塞する
ことを特徴とする計算機装置のパス管理方法。
【請求項７】
前記第二のパス管理部は、
前記障害が発生した物理ＨＢＡの回復を検出した場合に、
当該回復した前記物理ＨＢＡに対応する仮想ＨＢＡを有する、各仮想計算機に対応する前記第一のパス管理部に対して、当該物理ＨＢＡの回復を指示し、
前記第一のパス管理部は、
前記第二のパス管理部から物理ＨＢＡの回復を指示された場合に、指示された前記物理ＨＢＡに対応する仮想ＨＢＡを回復させる
ことを特徴とする請求項６に記載の計算機装置のパス管理方法。
【請求項８】
前記第一のパス管理部は、
対応する前記仮想計算機の起動処理時に、前記第二のパス管理部に、当該仮想計算機の仮想ＨＢＡに対応する物理ＨＢＡの状態を問い合わせ、得られた当該物理ＨＢＡの状態を管理し、
障害が発生した物理ＨＢＡに対応する仮想ＨＢＡを閉塞する
ことを特徴とする請求項７に記載の計算機装置のパス管理方法。
【請求項９】
前記仮想計算機が休止する際、前記第一のパス管理部は前記第二のパス管理部に、休止することを通知し、
前記第二のパス管理部は、
前記障害の通知に応じて、
前記障害が検出された物理ＨＢＡと、前記休止した仮想計算機の仮想ＨＢＡと、の対応を
前記計算機装置が有する障害が検出されていない物理ＨＢＡと、前記休止した仮想計算機の、前記障害が検出された物理ＨＢＡに対応していた仮想ＨＢＡと、の対応に変更し、
前記休止した仮想計算機が再起動される際、
前記第一のパス管理部は、
前記第二のパス管理部に再起動することを通知し、
前記第二のパス管理部は、
前記再起動の通知に応じて、前記再起動した仮想計算機に対応する、前記第一のパス管理部に対して、前記障害が検出された物理ＨＢＡに対応していた仮想ＨＢＡの閉塞を指示し、
前記第一のパス管理部は、
前記第二のパス管理部から、前記閉塞の指示をされた場合に、前記指示された仮想ＨＢＡを閉塞し、
前記第二のパス管理部は、
前記閉塞された仮想ＨＢＡと、前記障害が検出された物理ＨＢＡに対応させる
ことを特徴とする請求項６に記載の計算機装置のパス管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機装置及びパス管理方法に関し、例えば物理ＨＢＡ（host bus adapter）を複数の仮想計算機（以下、これを仮想マシンと呼ぶ）で共有使用する仮想計算機システムに適用して好適なものである。
【背景技術】
【０００２】
従来、仮想計算機システムにおけるＨＢＡ等の物理Ｉ／Ｏ（Input/Output）デバイスの共有使用は、ハイパーバイザと呼ばれる仮想化プログラムにより物理Ｉ／Ｏデバイスを論理Ｉ／Ｏデバイスとして分割共有し、Ｉ／Ｏデバイスを制御するパス冗長化プログラムをもつ仮想マシンに実行権を割り当てることにより行われている（特許文献１）。
【０００３】
特許文献１には、ハイパーバイザがサーバ装置の物理Ｉ／Ｏデバイスと、サーバ計算機が有する複数の仮想計算機の仮想Ｉ／Ｏデバイスとの間のアクセス経路情報を管理する方法が記載されている。また、特許文献１には、ハイパーバイザがＩ／Ｏチャネルの障害を検出した際、仮想Ｉ／Ｏデバイスと物理Ｉ／Ｏデバイスの接続を変更する方法が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２０９４８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示された方法では、Ｉ／Ｏのタイムアウトが発生しないと障害を検出できない。このため、ある仮想計算機で障害の発生が検出されているにもかかわらず、他の仮想計算機でも障害を検出する度にＩ／Ｏの遅延が発生するという問題があった。
【０００６】
本発明は、以上の点を考慮してなされたもので、物理Ｉ／Ｏデバイスの障害が仮想計算機システム全体に与える影響を低減させ得る信頼性の高い計算機装置及びパス管理方法を提案しようとするものである。
【課題を解決するための手段】
【０００７】
かかる課題を解決するため本発明においては、仮想環境を提供し、記憶領域を有するストレージ装置に接続される、計算機装置において、それぞれが仮想ＨＢＡを有して複数の仮想計算機を提供する仮想計算機提供部と、前記複数の仮想計算機にそれぞれ対応させて設けられ、それぞれ対応する前記仮想計算機が有する仮想ＨＢＡの状態を管理する、複数の第一のパス管理部と、前記複数の仮想計算機により共有使用され、前記仮想ＨＢＡに対応する物理ＨＢＡと、前記複数の仮想計算機が有する仮想ＨＢＡと前記複数の物理ＨＢＡとの対応関係を管理する第二のパス管理部と、を備え、前記第一のパス管理部は、前記仮想ＨＢＡの障害を検出した場合に、当該障害を前記第二のパス管理部に通知し、前記第二のパス管理部は、前記障害の通知に応じて、当該障害が検出された、仮想ＨＢＡに対応する前記物理ＨＢＡを経由する、他の前記仮想ＨＢＡを有する各仮想計算機に対応する前記第一のパス管理部に対して、当該他の仮想ＨＢＡの閉塞を指示し、前記第一のパス管理部は、前記第二のパス管理部から前記仮想ＨＢＡの閉塞を指示された場合に、指示された前記仮想ＨＢＡを閉塞することを特徴とする。
【０００８】
また本発明においては、仮想環境を提供し、記憶領域を有するストレージ装置に接続される、計算機装置のパス管理方法において、それぞれが仮想ＨＢＡを有して複数の仮想計算機を提供する仮想計算機提供部と、前記複数の仮想計算機にそれぞれ対応させて設けられ、それぞれ対応する前記仮想計算機が有する仮想ＨＢＡの状態を管理する、複数の第一のパス管理部と、前記複数の仮想計算機により共有使用され、前記仮想ＨＢＡに対応する物理ＨＢＡと、前記複数の仮想計算機が有する仮想ＨＢＡと前記複数の物理ＨＢＡとの対応関係を管理する第二のパス管理部と、を備え、前記第一のパス管理部は、前記仮想ＨＢＡの障害を検出した場合に、当該障害を前記第二のパス管理部に通知し、前記第二のパス管理部は、前記障害の通知に応じて、当該障害が検出された、仮想ＨＢＡに対応する前記物理ＨＢＡを経由する、他の前記仮想ＨＢＡを有する各仮想計算機に対応する前記第一のパス管理部に対して、当該他の仮想ＨＢＡの閉塞を指示し、前記第一のパス管理部は、前記第二のパス管理部から前記仮想ＨＢＡの閉塞を指示された場合に、指示された前記仮想ＨＢＡを閉塞することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、パスに障害が発生したときに、当該障害が各仮想計算機に通知され、各仮想計算機において障害が発生した物理Ｉ／Ｏを経由するパスが閉塞される。従って、本発明によれば、パスの障害による遅延を事前に回避することができる。
【発明を実施するための形態】
【００１０】
以下図面について、本発明の一実施の形態を詳述する。
（１）本実施の形態による仮想計算機システムの構成
図１において、１は全体として本実施の形態による仮想計算機システムの物理構成を示す。この仮想計算機システム１は、物理計算機２がネットワーク３を介してストレージ装置４に接続されることにより構成されている。
この仮想計算機システム１は、物理計算機２、ストレージ装置４、スイッチ５（ネットワーク３）、管理端末６、及び管理計算機７により構成されている。物理計算機２、ストレージ装置４はスイッチ５（ネットワーク３）に接続される。また、物理計算機２、管理端末６、スイッチ５は、それぞれＬＡＮ２７を介して管理計算機７に接続される。図１では、ストレージ装置４は管理端末６を介して管理計算機７に接続されているが、ストレージ装置４が直接ＬＡＮに接続される構成であってもよい。また、物理計算機２が管理計算機７の機能を有する場合、仮想計算機システム１は管理計算機７を有さない構成としてもよい。
【００１１】
物理計算機２は、パーソナルコンピュータ又はワークステーションなどから構成され、ＣＰＵ（Central Processing Unit）１０、メモリ１１、複数のＮＩＣ（Network Interface Card）１２、複数のＨＢＡ（host bus Adapter）１３、記憶装置１６を備える。また、物理計算機２は、キーボードやマウス等の入力装置１４及びディスプレイ１５等の出力装置を備える。
【００１２】
ＣＰＵ１０は、物理計算機２全体の動作制御を司るプロセッサであり、メモリ１１に格納された制御プログラムに基づいて必要な処理を実行する。またメモリ１１は、図２に示すように、ホストＯＳ（Operating System）４０や、ゲストＯＳ５１、複数の仮想マシン（ＶＭ）を有する仮想環境を提供する仮想化プログラム２０などの制御プログラムを保持するために用いられるほか、ＣＰＵ１０のワークメモリとしても用いられる。後述のパス管理プログラム２１、第１のパス管理テーブル２２、パス情報ファイル２３、アプリケーションソフトウェア２４、パス冗長化プログラム（ＤＬＭ：Device Link Manager）２５及び第２のパス管理テーブル２６もこのメモリ１１に格納されて保持される。
【００１３】
ＮＩＣ１２は、物理計算機２、管理計算機７、管理端末６、スイッチ５に備えられており、それぞれの間の通信時にプロトコル制御を行う通信インタフェースである。ＮＩＣ１２には、例えばＩＰ（Internet Protocol）アドレス等の１又は複数のネットワークアドレスが付与される。本実施の形態の場合、ＮＩＣ１２同士がＬＡＮ２７を介して接続されている。また、物理計算機２のＮＩＣ１２が仮想化され、仮想マシン５０にそれぞれ割当てられている。ホストＯＳ４０と仮想マシン５０とは仮想的なＬＡＮを介して必要な情報やコマンドをやり取りし得るようになされている。
【００１４】
また物理ＨＢＡ１３は、物理計算機２及びストレージ装置４間の通信時にプロトコル制御を行う通信インタフェースである。この物理ＨＢＡ１３にもＷＷＮ（World Wide Name）等の１又は複数のネットワークアドレスが付与される。
【００１５】
スイッチ５は、ファイバチャネルスイッチやＴＣＰ／ＩＰスイッチ等である。スイッチ５は、物理計算機２や、管理計算機７、ストレージ装置４との接続のため、ＨＢＡやＮＩＣを備えており、ネットワーク間を接続する。以下では、スイッチ５も含めて、ネットワーク３として説明する。ネットワーク３は、例えばＳＡＮ（Storage Area Network）、ＬＡＮ、インターネット、公衆回線又は専用回線などから構成される。このネットワーク３を介した物理計算機２及びストレージ装置４間の通信は、例えばネットワーク３がＳＡＮである場合にはファイバーチャネルプロトコルに従って行われ、ネットワーク３がＬＡＮである場合にはＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）プロトコルに従って行われる。
【００１６】
ストレージ装置４は、１又は複数のディスク装置３０と、ディスク装置３０に対するデータの入出力を制御するコントローラ３１とから構成される。
【００１７】
ディスク装置３０は、例えばＳＣＳＩ（Small Computer System Interface）ディスク等の高価なディスクや、ＳＡＴＡ（Serial AT Attachment）ディスクや光ディスク等の安価なディスクなどから構成される。１又は複数のディスク装置３０により１つのＲＡＩＤグループ３２が構成され、１つのＲＡＩＤグループ３２を構成する各ディスク装置３０が提供する物理的な記憶領域上に、１又は複数の論理ボリュームＶＯＬが設定される。そして物理計算機２からのデータは、この論理ボリュームＶＯＬ内に所定大きさのブロック（以下、これを論理ブロックと呼ぶ）を単位として記憶される。
【００１８】
各論理ボリュームＶＯＬには、それぞれ固有のボリューム番号が付与される。本実施の形態の場合、データの入出力は、このボリューム番号と、各論理ブロックにそれぞれ付与されるその論理ブロックのブロック番号（ＬＢＡ：Logical Block Address）とを組み合わせたものをアドレスとして、当該アドレスを指定して行われる。
【００１９】
コントローラ３１は、1又は複数のチャネルアダプタ（ＣＨＡ）３３、メモリ３５、ＣＰＵ３６、キャッシュ３８、制御メモリ３４、ポート３７、及びＮＩＣ３９を備える。コントローラ３１は、物理計算機２からネットワーク３を介して与えられるＩ／Ｏ要求を受信すると、このＩ／Ｏ要求に応じて、対応するディスク装置３０にデータを読み書きする。
チャネルアダプタ３３は、ネットワーク３を介して物理計算機２と通信を行うためのインタフェースである。メモリ３５はＣＰＵ３６で実行される処理に必要な制御情報を保持する。ＣＰＵ３６は、チャネルアダプタ３３を経由して受信した入出力要求について、アクセス対象のデバイスを特定し、入出力要求を処理する。この際、ＣＰＵ３６は、入出力要求に含まれるＬＵＮ（Logical Unit Number）によって、アクセス対象のデバイスを特定する。キャッシュ３８は、物理計算機２からのリード要求に対して、予めデータを格納したり、物理計算機２から受信したデータを一時的に格納する。これによってアクセス要求の処理速度を高める。制御メモリ３４は、論理ボリュームの制御情報や、キャッシュ上のデータをディスクに反映したか否か等の制御情報を保持する。
【００２０】
管理端末６は、ＣＰＵ６１、メモリ６２、記憶装置６６、ストレージ装置４と接続されるＮＩＣ６、ＬＡＮ２７と接続されるＮＩＣ６４、ストレージ管理者からの入力を受け付ける入力装置６５、並びに、ストレージ管理者にストレージ装置４の構成情報や管理情報を出力するディスプレイ６３等の出力装置を有する。ＣＰＵ６１は記憶装置６６に格納されているストレージ管理プログラムをメモリ６２に読み出して実行することにより、構成情報の参照、構成変更の指示、特定機能の動作指示などを行い、ストレージ装置４の保守運用に関して、ストレージ管理者もしくは管理計算機７とストレージ装置４との間のインタフェースとなる。尚、本実施形態では、管理端末６を介さずに、ストレージ装置４を直接管理計算機７へ接続し、ストレージ装置４を管理計算機７で動作する管理ソフトウェアを用いて管理する構成としてもよい。
【００２１】
図３は、かかる仮想計算機システム１の論理構成を示す。説明を簡単化するため、物理計算機２、ネットワーク３、ストレージ装置４のみ図示する。物理計算機２上ではＯＳ（以下、これをホストＯＳと呼ぶ）４０が稼働する。このホストＯＳ４０上で仮想化プログラム２０（図１）が稼働している。さらに、この仮想化プログラム２０上では、１又は複数のゲストＯＳ５１が稼働する。ゲストＯＳ５１とは、仮想化プログラム２０によって構成される仮想マシン５０上で動作するＯＳである。
【００２２】
ホストＯＳ４０上には、物理計算機２のＣＰＵ１０（図１）を時分割してなる仮想的なＣＰＵ（以下、これを仮想ＣＰＵと呼ぶ）４１と、物理計算機２のメモリ１１（図１）を論理分割してなる仮想的なメモリ（以下、これを仮想メモリと呼ぶ）４２とが存在する。以下では、仮想メモリに格納されるというときは、実際にはメモリ１１に格納されていることを意味する。
【００２３】
またゲストＯＳ５１上には、仮想ＣＰＵ５２及び仮想メモリ５３と、物理計算機２のＮＩＣ１２（図１）を仮想化した仮想ＮＩＣ５４と、それぞれ物理計算機２のいずれかの物理ＨＢＡ１３を仮想化した複数の仮想ＨＢＡ５５とが存在している。仮想ＣＰＵ５２は物理計算機２のＣＰＵ１０を時分割してなる。仮想メモリ５３は物理計算機２のメモリ１１を論理分割してなる。１つの仮想マシン（ＶＭ：Virtual Machine）５０は、１つのゲストＯＳ５１と、そのゲストＯＳ５１上に存在する仮想ＣＰＵ５２、仮想メモリ５３、仮想ＮＩＣ５４及び仮想ＨＢＡ５５から構成されている。
【００２４】
そしてホストＯＳ４０上の仮想メモリ４２には、パス管理プログラム２１、第１のパス管理テーブル（PMT）２２及びパス情報ファイル２３が格納され、各仮想マシン５０の仮想メモリ５３には、アプリケーション２４と、第２のパス管理テーブル（PMT）２６を管理するパス冗長化プログラム（ＤＬＭ：Device Link Manager）２５とが格納されている。
【００２５】
パス管理プログラム２１は、物理計算機２上に定義された各仮想マシン５０にそれぞれ接続されたパスを管理するためのプログラムであり、ホストＯＳ４０上に常駐する。ホストＯＳ４０の仮想ＣＰＵ４１は、このパス管理プログラム２１に基づいて第１のパス管理テーブル２２やパス情報ファイル２３等を作成及び更新する。
図３において、物理ＨＢＡ１３に示されているＸ及びＹは、物理ＨＢＡ１３のＩＤを表している。また、仮想ＨＢＡ５５に示されているＸ１〜Ｘ３及びＹ１〜Ｙ３は、仮想ＨＢＡ５５のＩＤを表している。図３では、ＩＤがＸの物理ＨＢＡ１３が仮想化され、ＩＤがＸ１〜Ｘ３の仮想ＨＢＡ５５として、各仮想マシン５０に割当てられていることが表されている。ＩＤがＹの物理ＨＢＡ１３についても同様である。物理ＨＢＡ１３を仮想マシン５０に割り当てる処理はＣＰＵ１０が行う。
【００２６】
第１のパス管理テーブル２２は、物理計算機２上に定義された各仮想マシン５０のパス状態をパス管理プログラム２１が一元管理するためのテーブルであり、図４に示すように、ＶＭ欄２２Ａ、ＶＭ状態欄２２Ｂ、パスＩＤ欄２２Ｃ、仮想ＨＢＡ欄２２Ｄ、物理ＨＢＡ欄２２Ｅ、ボリューム番号欄２２Ｆ及びパス状態欄２２Ｇから構成される。
【００２７】
そしてＶＭ欄２２Ａには、物理計算機２上に定義された各仮想マシン５０のうちの対応する仮想マシン５０のマシンＩＤが格納され、ＶＭ状態欄２２Ｂには、その仮想マシン５０の状態（「起動中」、「未起動」又は「休止状態」）が格納される。
【００２８】
また仮想ＨＢＡ欄２２Ｄには、その仮想マシン５０が備える仮想ＨＢＡ５５（図３）のＩＤが格納され、物理ＨＢＡ欄２２Ｅには、その仮想ＨＢＡ５５が仮想化している物理ＨＢＡ１３（図１）のＩＤが格納される。さらにボリューム番号欄２２Ｆには、同じ行（エントリ）の仮想ＨＢＡ５５と対応付けられたストレージ装置４内の論理ボリュームＶＯＬのボリューム番号が格納される。
【００２９】
さらにパスＩＤ欄２２Ｃには、かかる仮想ＨＢＡ５５と、その仮想ＨＢＡ５５に対応付けられた論理ボリュームＶＯＬとを接続するパスのパスＩＤが格納され、パス状態欄２２Ｇにはそのパスの現在の状態が格納される。なお、パスの状態としては、使用可能な状態を表す「オンライン（Online）」と、閉塞状態を表す「オフライン（Offline）」との２種類がある。
【００３０】
従って図４の場合、例えば現在「起動中」の「ＶＭ１」という仮想マシン５０は「Ｘ」という物理ＨＢＡ１３を仮想化した「Ｘ１」という仮想ＨＢＡ５５を備えており、この仮想ＨＢＡ５５は「010001」というパスＩＤのパスを介してストレージ装置４内の「１」というボリューム番号の論理ボリュームＶＯＬと接続され、そのパスは「オンライン（online）」の状態にあることが例示されている。
【００３１】
パス情報ファイル２３は、第１のパス管理テーブル２２の内容を格納したファイルである。パス管理プログラム２１は、終了時にパス管理テーブル２２の内容をパス情報ファイル２３に出力し、起動時に、このパス情報ファイル２３に基づいて第１のパス管理テーブル２２を作成する。
【００３２】
一方、パス冗長化プログラム２５は、仮想マシン５０側において当該仮想マシン５０と接続された各パスを管理するためのプログラムである。このパス冗長化プログラム２５は、仮想ＨＢＡ５５を介して発行したＩ／Ｏ要求の送信結果に基づいて対応するパスの障害（パス障害）を検出する機能と、パス障害を検出したときにそのパスを閉塞する（オフラインにする）機能と、パス障害を検出したときにこれをパス管理プログラム２１に通知する機能と、閉塞したパスの回復を確認したときにそのパスを使用可能とする（オンラインにする）機能とを備える。
【００３３】
また第２のパス管理テーブル２６は、パス冗長化プログラム２５が、対応する仮想マシン５０について定義された各パスを管理するために使用するテーブルであり、図５に示すように、パスＩＤ欄２６Ａ、仮想ＨＢＡ欄２６Ｂ、物理ＨＢＡ欄２６Ｃ、ボリューム番号欄２６Ｄ及びパス状態欄２６Ｅから構成される。そしてパスＩＤ欄２６Ａには、対応するパスに対して仮想マシン５０が独自に付与したパスＩＤが格納される。また仮想ＨＢＡ欄２６Ｂ、物理ＨＢＡ欄２６Ｃ、ボリューム番号欄２６Ｄ及びパス状態欄２６Ｅには、それぞれ第１のパス管理テーブル２２の対応するエントリの仮想ＨＢＡ欄２２Ｄ、物理ＨＢＡ欄２２Ｅ、ボリューム番号欄２２Ｆ及びパス状態欄２２Ｇに格納された情報とそれぞれ同じ情報が格納される。
【００３４】
（２）本実施の形態によるパス管理機能
次に、物理計算機２に搭載された本実施の形態によるパス管理機能について説明する。なお、以下においては、各種処理の処理主体を「プログラム」又は「ソフトウェア」として説明する場合があるが、実際にはそのプログラム又はソフトウェアに基づいてホストＯＳ４０又は仮想マシン５０の仮想ＣＰＵ４１，５２（より正確には物理計算機２のＣＰＵ１０）がその処理を実行することは言うまでもない。
【００３５】
本実施の形態の場合、物理計算機２には、いずれかの仮想マシン５０がパスの障害を検出した場合に、その仮想マシン５０及び他の仮想マシン５０において、かかる障害が検出されたパス（以下、これを障害パスと呼ぶ）と同じ物理ＨＢＡ１３を経由するパスを閉塞する（オフライン状態にする）第１のパス管理機能と、いずれかの仮想マシン５０が障害パスの回復を検出した場合に、その仮想マシン５０及び他の仮想マシン５０において、かかる回復を検出したパス（以下、これを回復パスと呼ぶ）と同じ物理ＨＢＡ１３を経由するパスをオンライン状態に戻す第２のパス管理機能とが搭載されている。
【００３６】
以上のような本実施の形態によるパス管理機能のうちの第１のパス管理機能について、図４及び図６を用いて具体的に説明する。
【００３７】
例えば図１及び図４の状態から図６のように「Ｘ」という物理ＨＢＡ１３に障害が発生したとする。この場合、「ＶＭ１」という仮想マシン５０のアプリケーションが「Ｘ１」という仮想ＨＢＡ５５を介してストレージ装置４に対してＩ／Ｏ要求を送信しても、その仮想マシン５０は当該Ｉ／Ｏ要求に対するストレージ装置４からの返信を受信することができず、やがてエラー通知を受信するか又はタイムアウトが発生することになる。
【００３８】
このときその仮想マシン５０のパス冗長化プログラム２５は、かかる仮想ＨＢＡ５５に接続されたパスにおいてパス障害が発生したと判別し、そのパスを閉塞する閉塞処理を行う（ＳＰ１）。またパス冗長化プログラム２５は、所定のパス障害情報をホストＯＳ４０のパス管理プログラム２１に通知する（ＳＰ２）。従って、図４及び図６の例において、「010001」というパスにおいてパス障害が検出された場合、「ＶＭ１」という仮想マシン５０のパス冗長化プログラム２５は、このパスを閉塞すると供に、このパスに障害が発生したというパス障害情報をパス管理プログラム２１に通知する。
【００３９】
一方、パス障害情報を受信したパス管理プログラム２１は、パス障害情報により通知された障害パスが経由する物理ＨＢＡ１３を経由する他のパスと接続されている仮想マシン５０を第１のパス管理テーブル２２上で検索する。そしてパス管理プログラム２１は、そのような仮想マシン５０を検出すると、その仮想マシン５０のパス冗長化プログラム２５に対して、かかる「他のパス」を閉塞すべき指示（以下、これをパス閉塞指示と呼ぶ）を送信する（ＳＰ３）。図４及び図６の例の場合、パス管理プログラム２１は、「ＶＭ１」という仮想マシン５０に対して「010002」というパスを閉塞すべき旨のパス閉塞指示を与え、「ＶＭ２」という仮想マシン５０に対して「020001」及び「020002」という２つのパスをそれぞれ閉塞すべき旨のパス閉塞指示を与え、「ＶＭ３」という仮想マシン５０に対して「030001」及び「030002」という２つのパスをそれぞれ閉塞すべき旨のパス閉塞指示を送信する。
【００４０】
そして、このパス閉塞指示を受信した「ＶＭ３」という仮想マシン５０のパス冗長化プログラム２５は、パス閉塞指示において指定されたパスを閉塞する閉塞処理を行い（ＳＰ４）、この後は、この閉塞したパス以外のパスを介してストレージ装置との間で通信を行う（ＳＰ５）。図４及び図６の例では、例えば「ＶＭ２」という仮想マシン５０のパス冗長化プログラム２５は、「020001」及び「020002」という２つのパスを閉塞し、この後は、「020003」又は「020004」というパスを介してストレージ装置４との間の通信を行うことになる。
【００４１】
ところで、図４及び図６の例において、パス管理プログラム２１が「ＶＭ３」という仮想マシン５０に対してパス閉塞指示を送信したときに当該仮想マシン５０の状態が「未起動」であった場合、この仮想マシン５０では、かかるパス閉塞指示に対応することができないため、当該パス閉塞指示において指定されたパス（「030001」及び「030002」という２つのパス）が閉塞されない。
【００４２】
そこで、本実施の形態の場合、仮想マシン５０のパス冗長化プログラム２５は、当該仮想マシン５０の起動処理時に、パス管理プログラム２１に対してパス障害の有無を問い合わせる（ＳＰ６）。そしてパス管理プログラム２１は、かかる問い合わせに対して、そのとき障害が発生している物理ＨＢＡ１３と、その仮想マシン５０が使用可能なパスとに関連するパス障害情報とを、そのパス冗長化プログラム２５に通知する（ＳＰ７）。
【００４３】
そしてパス冗長化プログラム２５は、かかるパス障害情報を受信すると、自仮想マシンと接続されたパスのうちの障害が発生した物理ＨＢＡ１３を経由するパスを閉塞する閉塞処理を実行し（ＳＰ８）、この後は、この閉塞したパス以外のパスを利用してストレージ装置４との間の通信を行う（ＳＰ９）。例えば上述の例の場合、「ＶＭ３」という仮想マシン５０は、パス管理プログラム２１からのパス障害情報に基づいて、「030001」及び「030002」という２つのパスをそれぞれ閉塞し、この後は、「030003」及び「030004」というパスを利用してストレージ装置４との間の通信を行うことになる。
【００４４】
以上のような処理により、障害が発生した物理ＨＢＡ１３を経由するパスを仮想マシン５０が利用しようとすることを未然に防止することができ、これによりタイムアウトの発生に起因するＩ／Ｏ遅延の発生を有効に防止することができる。
【００４５】
（３）本実施の形態によるパス管理機能に関する各種処理
次に、以上のような本実施の形態によるパス管理機能に関するホストＯＳ４０上のパス管理プログラム２１と、仮想マシン５０のゲストＯＳ５１との具体的な処理内容について説明する。
【００４６】
（３−１）パス管理プログラム起動処理
図７は、ホストＯＳ４０上のパス管理プログラム２１により実行されるパス管理プログラム起動処理の処理手順を示す。パス管理プログラム２１は、この図７に示す処理手順に従って、起動処理の際に第１のパス管理テーブル２２を作成する。
【００４７】
すなわちパス管理プログラム２１は、ユーザ指示により又は起動処理中のホストＯＳ４０により起動されると、このパス管理プログラム起動処理を開始し、まず、ホストＯＳ４０上の仮想メモリ４２内を検索して、パス情報ファイル２３があるか否かを判別する（ＳＰ１０）。
【００４８】
パス管理プログラム２１は、この判断において否定結果を得ると（ＳＰ１０；ＮＯ）、図４について上述した第１のパス管理テーブル２２を新たに作成し、（ＳＰ１１）、この後、ＳＰ２１に進む。
【００４９】
これに対してパス管理プログラム２１は、ＳＰ１０の判断において肯定結果を得ると（ＳＰ１０；ＹＥＳ）、仮想メモリ４２からパス情報ファイル２３を読み出し、読み出したパス情報ファイル２３に基づいて第１のパス管理テーブル２２を作成する（ＳＰ１２）。
【００５０】
続いてパス管理プログラム２１は、仮想環境の定義情報であるＶＭ情報を取得する（ＳＰ１３）。このＶＭ情報は、例えば図８に示すように、物理計算機２上に定義されている各仮想マシン５０のマシンＩＤと、その仮想マシン５０の現在の状態とを対応付けた情報であり、予めユーザにより作成されて物理計算機２のメモリ１１（図１）において保持されている。
【００５１】
次いでパス管理プログラム２１は、ＳＰ１３において取得したＶＭ情報にマシンＩＤが登録された仮想マシン５０を１つ選択し（ＳＰ１４）、その仮想マシン５０が「起動中」であるか否かをＶＭ情報に基づいて判断する（ＳＰ１５）。
【００５２】
パス管理プログラム２１は、この判断において否定結果を得ると（ＳＰ１５；ＮＯ）、ＳＰ１２において作成した第１のパス管理テーブル２２におけるその仮想マシン５０に対応するエントリの状態欄２２Ｂ（図４）に、その仮想マシン５０の状態として「未起動」を格納し（ＳＰ１６）、この後、ＳＰ２０に進む。
【００５３】
これに対してパス管理プログラム２１は、ＳＰ１５の判断において肯定結果を得ると（ＳＰ１５；ＹＥＳ）、ＳＰ１２において作成した第１のパス管理テーブル２２におけるその仮想マシン５０に対応するエントリの状態欄２２Ｂ（図４）に、その仮想マシン５０の状態として「起動中」を格納する（ＳＰ１７）。
【００５４】
この後、パス管理プログラム２１は、その仮想マシン５０のパス冗長化プログラム２５（図３）に対して、当該仮想マシン５０に接続されている各パスの情報を問い合わせる。そしてパス冗長化プログラム２５は、この問い合わせに対して、第２のパス管理テーブル２６（図３）に登録されている各パスのパスＩＤと、これらパスにそれぞれ接続された仮想ＨＢＡ５５（図３）のＩＤと、これらパスにそれぞれ接続された論理ボリュームＶＯＬのボリューム番号とをパス情報としてパス管理プログラム２１に通知する（ＳＰ１８）。そしてパス管理プログラム２１は、このようにして取得したパス情報を第１のパス管理テーブル２２に反映させる（ＳＰ１９）。
【００５５】
なお、後述のように、各仮想マシン５０はそれぞれ自仮想マシンに接続された各パスを独自のパスＩＤを付与して管理しているため、各仮想マシン５０から収集したパス情報を第１のパス管理テーブル２２に反映させるとパスＩＤが重複するおそれがある。そこで、パス管理プログラム２１は、仮想マシン５０から収集したパス情報を第１のパス管理テーブル２２に反映するに際しては、パスごとに、ＳＰ１８において取得したそのパスのパスＩＤの先頭にその仮想マシン５０のＩＤを付加した新たなパスＩＤを作成し、その新たなパスＩＤを当該パスのパスＩＤとして第１のパス管理テーブル２２に登録する。従って、例えば「01」というマシンＩＤの仮想マシン５０から収集した「0001」というパスＩＤのパスについては、「0001」の先頭に「01」を付加した「010001」がそのパスの新たなパスＩＤとして第１のパス管理テーブル２２に登録される。
【００５６】
次いでパス管理プログラム２１は、ＳＰ１３において取得したＶＭ情報に基づいて、物理計算機２上に定義されたすべての仮想マシン５０についてＳＰ１４〜ＳＰ１９の処理を行ったか否かを判別する（ＳＰ２０）。
【００５７】
パス管理プログラム２１は、この判断において否定結果を得ると（ＳＰ２０；ＮＯ）、ＳＰ１４に戻り、この後、ＳＰ１４において選択する仮想マシンを順次他の仮想マシン５０に切り替えながら、Ｓ１４〜Ｓ２０の処理を繰り返す。
【００５８】
そしてパス管理プログラム２１は、やがて物理計算機２上に定義されたすべての仮想マシン５０についてＳＰ１４〜ＳＰ２０の処理を実行し終えることによりＳＰ２０において肯定結果を得ると（ＳＰ２０；ＹＥＳ）、起動処理を完了して各仮想マシン５０についてそれぞれ設定された各パスの状態の監視を開始する（ＳＰ２１）そしてパス管理プログラム２１は、この後、このパス管理プログラム起動処理を終了する。
【００５９】
（３−２）パス管理テーブル作成処理
図９は、パス管理プログラム起動処理（図７）のＳＰ１１においてパス管理プログラム２１により実行されるパス管理テーブル作成処理の処理手順を示す。パス管理プログラム２１は、この図９に示す処理手順に従って、第１のパス管理テーブル２２を新規に作成する。
【００６０】
すなわちパス管理プログラム２１は、パス管理プログラム起動処理のＳＰ１１に進むと、このパス管理テーブル作成処理を開始し、まず、パス管理プログラム起動処理のＳＰ１３と同様にしてＶＭ情報を取得する（ＳＰ３０）。
【００６１】
続いてパス管理プログラム２１は、各仮想マシン５０に対するリソース割付けの定義情報であるＨＢＡ情報を取得する（ＳＰ３１）。このＨＢＡ情報は、例えば図１０に示すように、仮想マシン５０が認識するＨＢＡと、ホストＯＳ４０が認識するＨＢＡとの対応関係を表す情報であり、予めユーザにより作成されて物理計算機２のメモリ１１（図１）に格納されている。
【００６２】
次いでパス管理プログラム２１は、ＳＰ３０において取得したＶＭ情報にマシンＩＤが登録された仮想マシン５０を１つ選択し（ＳＰ３２）、その仮想マシン５０の状態が「起動中」であるか否かを判断する（ＳＰ３３）。
【００６３】
パス管理プログラム２１は、この判断において否定結果を得ると（ＳＰ３３；ＮＯ）、ＳＰ３６に進む。これに対してパス管理プログラム２１は、かかる判断において肯定結果を得ると（ＳＰ３０；ＹＥＳ）、パス管理プログラム起動処理のＳＰ１８と同様にして、その仮想マシン５０のパス情報を取得し（ＳＰ３４）、取得したパス情報を第１のパス管理テーブル２２に反映させる（ＳＰ３５）。
【００６４】
次いでパス管理プログラム２１は、ＳＰ３０において取得したＶＭ情報に基づいて、物理計算機２上に定義されたすべての仮想マシン５０についてＳＰ３２〜ＳＰ３５の処理を行ったか否かを判別する（ＳＰ３６）。
【００６５】
そしてパス管理プログラム２１は、この判断において否定結果を得ると（ＳＰ３６；ＮＯ）、ＳＰ３２に戻り、この後、ＳＰ３２において選択する仮想マシンを順次他の仮想マシン５０に切り替えながら、ＳＰ３２〜ＳＰ３６の処理を繰り返す。
【００６６】
そしてパス管理プログラム２１は、やがて物理計算機２上に定義されたすべての仮想マシン５０についてＳＰ３２〜ＳＰ３５を実行し終えることによりＳＰ３６において肯定結果を得ると（ＳＰ３６；ＹＥＳ）、このパス管理テーブル作成処理をして、パス管理プログラム起動処理（図７）に戻る。
【００６７】
（３−３）ゲストＯＳ起動処理
一方、図１１は、仮想マシン５０のゲストＯＳ５１（図３）により実行されるゲストＯＳ起動処理の処理手順を示す。ゲストＯＳ５１は、仮想化プログラム２０（図１）により起動されると、このゲストＯＳ起動処理を開始し、まず、パス冗長化プログラム２５（図３）を起動して、第２のパス管理テーブル２６（図３）を作成させる（ＳＰ４０）。
【００６８】
具体的には、パス冗長化プログラム２５は、起動処理時、例えばＳＣＳＩ（Small Computer System Interface）プロトコルのINQUIRYコマンドをそのゲストＯＳ５１上に存在するすべての仮想ＨＢＡ５５（図３）を介して発行することにより、各仮想ＨＢＡ５５にパスを介してそれぞれ接続されたストレージ装置４内の論理ボリュームＶＯＬのボリューム番号を収集する。そしてパス冗長化プログラム２５は、このようにして収集した情報と、物理計算機２のメモリ１１に格納されている上述のＶＭ情報及びＨＢＡ情報とに基づいて、第２のパス管理テーブル２６を作成する。なお、この際パス冗長化プログラム２５は、各パスに対して独自のパスＩＤ（例えばシーケンシャルな番号）を付与し、このパスＩＤを第２のパス管理テーブル２６の対応するパスＩＤ欄２６Ａ（図５）に格納する。またパス冗長化プログラム２５は、第２のパス管理テーブル２６の各エントリのパス状態欄２６Ｅ（図５）に、対応するパスのパス状態として「オンライン（Online）」を格納する。
【００６９】
次に、ゲストＯＳ５１は、ホストＯＳ４０上のパス管理プログラム２１に対して、自ゲストＯＳ５１が起動した旨を通知する（ＳＰ４１）。具体的には、ゲストＯＳ５１は、ＯＳ起動スクリプトに従って、対応する仮想マシン５０のマシンＩＤと、その仮想マシン５０の状態（「起動中」）とからなる情報（以下、これを起動通知情報と呼ぶ）をパス管理プログラム２１に送信する。例えば、「ＶＭ３」という仮想マシン５０のゲストＯＳ５１を起動した場合、ゲストＯＳ５１は、「マシンＩＤ」として「ＶＭ３」、仮想マシン５０の状態として「起動中」という情報が格納された起動通知情報をパス管理プログラム２１に送信する。
【００７０】
なお、かかる起動通知情報を受信したパス管理プログラム２１は、この起動通知情報に基づいて第１のパス管理テーブル２２を更新する。具体的に、パス管理プログラム２１は、例えば「ＶＭ３」という仮想マシン５０のゲストＯＳ５１から起動通知情報を受信した場合、第１のパス管理テーブル２２上の「ＶＭ３」という仮想マシン５０に対応するすべてのエントリについて、ＶＭ状態欄２２Ｂ（図４）に格納されているその仮想マシン５０の状態を「未起動」から「起動中」に変更する。
【００７１】
続いてゲストＯＳ５１は、自ゲストＯＳが構成する仮想マシン５０と接続されたすべてのパスについてのパス情報を、ホストＯＳ４０のパス管理プログラム２１に問い合わせることにより取得する（ＳＰ４２）。例えば「ＶＭ３」という仮想マシン５０のゲストＯＳ５１の場合、かかる問い合わせにより、第１のパス管理テーブル２２上でＶＭ欄２２Ａ（図４）に「ＶＭ３」が格納されている全エントリの情報をかかるパス情報として取得することになる（図４及び図５参照）。
【００７２】
次いでゲストＯＳ５１は、ＳＰ４２において取得したパス情報にパスＩＤが含まれる１つのパスを選択する（ＳＰ４３）。またゲストＯＳ５１は、そのパスのパス状態をＳＰ４２において取得したパス情報から読み出し（ＳＰ４４）、そのパスのパス状態が「オフライン（Offline）」であるか否かを判断する（ＳＰ４５）。
【００７３】
ゲストＯＳ５１は、この判断において否定結果を得ると（ＳＰ４５；ＮＯ）、ＳＰ４７に進む。これに対してゲストＯＳ５１は、この判断において肯定結果を得ると（ＳＰ４５；ＹＥＳ）、第２のパス管理テーブル２６におけるそのパスに対応するエントリのパス状態欄２６Ｅ（図５）に格納されているパス状態を「オンライン（Online）」から「オフライン（Offline）」に変更することにより、そのパスを閉塞する（ＳＰ４６）。
【００７４】
続いてゲストＯＳ５１は、ＳＰ４２において取得したパス情報に基づいて、そのゲストＯＳ５１が構成する仮想マシン５０と接続されたすべてのパスについてＳＰ４３〜ＳＰ４６の処理を実行したか否かを判断する（ＳＰ４７）。
【００７５】
そしてゲストＯＳ５１は、この判断において否定結果を得るとＳＰ４３に戻り、この後、ＳＰ４７において選択するパスを順次他のパスに切り替えながら、ＳＰ４３〜ＳＰ４７の処理を繰り返す。
【００７６】
そしてゲストＯＳ５１は、やがて自ゲストＯＳが構成する仮想マシン５０と接続されたすべてのパスについてＳＰ４３〜ＳＰ４６の処理を実行し終えることによりＳＰ４７において肯定結果を得ると、自ゲストＯＳの起動処理を終了して、通常の処理を開始する（ＳＰ４８）。そしてゲストＯＳ５１は、この後、このゲストＯＳ起動処理を終了する。
【００７７】
以上のようなゲストＯＳ起動処理により、このゲストＯＳ起動処理を実行するゲストＯＳ５１が構成する仮想マシン５０と接続されたパスのうち、障害が発生した物理ＨＢＡ１３（図１）を経由するパスが、当該ゲストＯＳ５１を起動し終えた段階で既に閉塞されていることから、当該仮想マシン５０の運用開始直後からパス障害に起因するＩ／Ｏ遅延の発生を有効に防止することができる。
【００７８】
（３−４）パス障害対処処理
他方、図１２は、ホストＯＳ４０のパス管理プログラムにより実行されるパス障害対処処理の処理手順を示す。
【００７９】
各仮想マシン５０のパス冗長化プログラム２５は、自仮想マシンに接続されたパスに障害を検出すると、これに応じたパス障害情報を、仮想ＬＡＮ２７（図３）を介してＳＮＭＰ（Simple Network Management Protocol）プロトコルのＴＲＡＰ等を用いてホストＯＳ４０に送信する。そしてホストＯＳ４０のパス管理プログラム２１は、このパス障害情報を受信すると、図１２に示す処理手順に従って、パス障害に対する処理を実行する。
【００８０】
すなわちパス管理プログラム２１は、かかるパス障害情報を受信すると、このパス障害対処処理を開始し、まず、受信したパス障害情報に基づいて、第１のパス管理テーブル２２における障害が発生したパスに対応するエントリのパス状態欄２２Ｇ（図４）を更新する（ＳＰ５０）。例えば図４の状態において、「ＶＭ１」という仮想マシン５０のパス冗長化プログラム２５から送信された、「010001」というパスに障害が発生したというパス障害情報を受信した場合、パス管理プログラム２１は、図１３（Ａ）に示すように、第１のパス管理テーブル２２における「ＶＭ１」という仮想マシン５０と接続された「010001」というパスに対応するエントリのパス状態欄２２Ｇに格納されているパス状態を「オンライン（Online）」から「オフライン（Offline）」に変更する。
【００８１】
続いてパス管理プログラム２１は、障害が発生したパスが経由する物理計算機２の物理ＨＢＡ１３（図１）を第１のパス管理テーブル２２上で検索し（ＳＰ５１）、この検索により検出したその物理ＨＢＡ１３に対して、状態を取得するためのコマンドであるＯＳ提供コマンドを送信する（ＳＰ５２）。
【００８２】
そしてパス管理プログラム２１は、かかるＯＳ提供コマンドに対するその物理ＨＢＡ１３からの応答に基づいて、当該物理ＨＢＡ１３に障害が発生しているか否かを判断する（ＳＰ５３）。例えば、かかる物理ＨＢＡ１３からの応答がエラーであった場合（その物理ＨＢＡ１３の状態が「READY」又は「ONLINE」ではない場合）には、その物理ＨＢＡ１３に障害が発生したと判断し、これに対してエラーでない場合には、その物理ＨＢＡ１３に障害が発生していないであると判断することになる。
【００８３】
そしてこの判断において否定結果が得られた場合には（ＳＰ５３；ＮＯ）、例えば論理ボリュームＶＯＬや、経路上のスイッチの障害など、その物理ＨＢＡ１３以外のデバイスの障害と推定されるため、パス管理プログラム２１は、いずれかのパスのパス閉塞を行うことなく、このパス障害対処処理を終了する。
【００８４】
これに対してパス管理プログラム２１は、かかる判断において肯定結果が得られた場合には（ＳＰ５３；ＹＥＳ）、第１のパス管理テーブル２２を参照して、障害が発生した物理ＨＢＡ１３を経由するパスのうちの一つのパスを選択し（ＳＰ５４）、そのパスのパスＩＤと、そのパスと接続された仮想マシン５０のマシンＩＤと、当該仮想マシン５０上のそのパスと接続された仮想ＨＢＡ５５（図３）のＩＤとを第１のパス管理テーブル２２から取得する（ＳＰ５５）。
【００８５】
そしてパス管理プログラム２１は、第１のパス管理テーブル２２における対応するエントリのパス状態欄２２Ｇ（図４）に格納されたパス状態を「オンライン（Online）」から「オフライン（Offline）」に変更すると共に、ＳＰ５５において取得したパスＩＤ及びマシンＩＤに基づいて、そのマシンＩＤの仮想マシン５０に対してそのパスＩＤのパスを閉塞するよう指示するパス閉塞指示をＳＮＭＰプロトコルのＴＲＡＰ等を用いて送信する（ＳＰ５６）。かくしてこのパス閉塞指示を受信した仮想マシン５０のパス冗長化プログラム２５は、当該パス閉塞指示において指定されたパスＩＤのパスを閉塞する閉塞処理（第２のパス管理テーブル２６の対応するエントリのパス状態２６Ｅ（図５）を「オフライン（Offline）」に変更する処理）を実行する。
【００８６】
続いてパス管理プログラム２１は、第１のパス管理テーブル２２を参照して、障害が発生した物理ＨＢＡ１３を経由するすべてのパスに関して、ＳＰ５４〜ＳＰ５６の処理を実行し終えたか否かを判断する（ＳＰ５７）。
【００８７】
そしてパス管理プログラム２１は、この判断において否定結果を得ると（ＳＰ５７；ＮＯ）、ＳＰ５４に戻り、この後、ＳＰ５７において順次他のパスを選択しながら、ＳＰ５４〜ＳＰ５７の処理を繰り返す。この結果、図１３（Ａ）の場合を例にとると、図１３（Ｂ）に示すように、「010002」、「020001」、「020002」、「030001」及び「030002」という各パスについてＳＰ５４〜ＳＰ５６の処理がそれぞれ実行されることになる。
【００８８】
ただし、図１３（Ａ）のように「ＶＭ１」及び「ＶＭ２」という仮想マシン５０が「起動中」であり、「ＶＭ３」という仮想マシン５０が「未起動」であったものとすると、対応するパスの閉塞処理は「ＶＭ１」及び「ＶＭ２」という仮想マシン５０においてのみ行われ、「ＶＭ３」という仮想マシン５０では行われない。「ＶＭ３」という仮想マシン５０については、ゲストＯＳ起動処理（図１１）について上述したように、その起動処理時に上述のような対応するパスの閉塞処理が行われることになる。
【００８９】
そしてパス管理プログラム２１は、図１３（Ｃ）に示すように、やがて障害が発生した物理ＨＢＡ１３を経由するすべてのパスを閉塞させ終えることによりＳＰ５７において肯定結果を得ると、このパス障害対処処理を終了する。
【００９０】
（３−５）パス回復処理
さらに図１４は、ホストＯＳ４０のパス管理プログラム２１により実行されるパス回復処理の処理手順を示す。
【００９１】
パス管理プログラム２１は、障害が発生した物理ＨＢＡ１３に対して、定期的にＯＳ提供コマンドを発行してヘルスチェックを行う（ＳＰ６０）。
【００９２】
そしてパス管理プログラム２１は、かかるＯＳ提供コマンドに対するその物理ＨＢＡ１３からの応答に基づいて、図１２について上述したパス障害対処処理のＳＰ５３と同様の処理により、当該物理ＨＢＡ１３が回復したか否かを判断する（ＳＰ６１）。
【００９３】
パス管理プログラム２１は、この判断において否定結果を得ると（ＳＰ６１；ＮＯ）、いずれのパスの回復処理を行うことなく、このパス回復処理を終了する。これに対してパス管理プログラム２１は、この判断において肯定結果を得ると（ＳＰ６１；ＹＥＳ）、第１のパス管理テーブル２２を参照して、回復した物理ＨＢＡ１３を経由するパスのうちの一つのパスを選択し（ＳＰ６２）、そのパスのパスＩＤと、そのパスと接続された仮想マシン５０のマシンＩＤと、当該仮想マシン５０上のそのパスと接続された仮想ＨＢＡ５５（図３）のＩＤとを第１のパス管理テーブル２２から取得する（ＳＰ６３）。
【００９４】
続いてパス管理プログラム２１は、第１のパス管理テーブル２２における対応するエントリのパス状態欄２２Ｇ（図４）に格納されたパス状態を「オフライン（Offline）」から「オンライン（Online）」に変更すると共に、ＳＰ６５において取得したパスＩＤ及びマシンＩＤに基づいて、そのマシンＩＤの仮想マシン５０に対してそのパスＩＤのパスを回復するよう指示するパス回復指示をＳＮＭＰプロトコルのＴＲＡＰ等を用いて送信する（ＳＰ６４）。かくしてこのパス回復指示を受信した仮想マシン５０のパス冗長化プログラム２５は、当該パス回復指示において指定されたパスＩＤのパスを回復する回復処理（第２のパス管理テーブル２６の対応するエントリのパス状態を「オンライン（Online）」に変更する処理）を実行する。
【００９５】
続いてパス管理プログラム２１は、第１のパス管理テーブル２２を参照して、障害から回復した物理ＨＢＡ１３を経由するすべてのパスに関して、ＳＰ６４〜ＳＰ６６の処理を実行し終えたか否かを判断する（ＳＰ６５）。
【００９６】
そしてパス管理プログラム２１は、この判断において肯定結果を得ると（ＳＰ６５；ＹＥＳ）、ＳＰ６２に戻り、この後、ＳＰ６２において順次他のパスを選択しながら、ＳＰ６２〜ＳＰ６５の処理を繰り返す。この結果、図１５（Ａ）の場合を例にとると、図１５（Ｂ）に示すように、「010002」、「020001」、「020002」、「030001」及び「030002」という各パスについてＳＰ６４〜ＳＰ６６の処理がそれぞれ実行されることになる。
【００９７】
ただし、図１５（Ａ）のように「ＶＭ１」及び「ＶＭ２」という仮想マシン５０が「起動中」であり、「ＶＭ３」という仮想マシン５０が「未起動」であったものとすると、対応するパスの回復処理は「ＶＭ１」及び「ＶＭ２」という仮想マシン５０においてのみ行われ、「ＶＭ３」という仮想マシン５０では行われない。「ＶＭ３」という仮想マシン５０については、ゲストＯＳ起動処理（図１１）について上述したように、その起動処理時に上述のような対応するパスの回復処理が行われることになる。
【００９８】
そしてパス管理プログラム２１は、図１３（Ｃ）に示すように、やがて障害から回復した物理ＨＢＡ１３を経由するすべてのパスを回復し終えることによりＳＰ６７において肯定結果を得ると、このパス回復処理を終了する。
【００９９】
次に、仮想マシン５０が休止している間に、物理ＨＢＡの障害が発生した場合の処理について説明する。ハイバネーション中に障害が発生した場合、ハイバネーション時に中断した処理が、レジューム時に、障害が発生した物理ＨＢＡに対して、Ｉ／Ｏを出す可能性がある。以下、（３−６）〜（３−９）にてこれら処理を説明する。
【０１００】
（３−６）仮想マシンのハイバネーション処理
図１６は、仮想マシン５０のゲストＯＳ５１により実行される、仮想マシンのハイバネーション処理の処理手順を表す。
【０１０１】
仮想マシン５０は、メモリイメージやレジスタの内容をディスクに書き込み、仮想マシンの処理を休止状態（ハイバネーション）させることができる。仮想マシン５０のハイバネーションが実行される際、ゲストＯＳ５１は、パス管理プログラム２１にハイバネーションを実行する旨を通知する（ＳＰ７０）。具体的には、ゲストＯＳ５１は、対応する仮想マシン５０のマシンＩＤと、その仮想マシン５０の状態（「休止状態」）とからなる情報（以下、これを休止状態通知情報と呼ぶ）をパス管理プログラム２１に送信する。例えば、「ＶＭ１」という仮想マシン５０のゲストＯＳ５１を休止状態した場合、ゲストＯＳ５１は、「マシンＩＤ」として「ＶＭ１」、仮想マシン５０の状態として「休止状態」という情報が格納された休止状態通知情報をパス管理プログラムに送信する。
【０１０２】
かかる休止状態通知情報を受信したパス管理プログラム２１は、この休止状態通知情報に基づいて第1のパス管理テーブル２２を更新する。具体的には、パス管理プログラム２１は、「ＶＭ１」という仮想マシン５０のゲストＯＳ５１から休止状態通知情報を受信した場合、第一のパス管理テーブル２２上の「ＶＭ１」という仮想マシン５０に対応するすべてのエントリについて、ＶＭ状態欄２２Ｂに格納されているその仮想マシン５０の状態を「起動中」から「休止状態」に変更する。
【０１０３】
（３−７）ハイバネーション中のパス障害対処処理
図１７は、ホストＯＳ４０のパス管理プログラム２１により実行される処理である。図１２とは、ＳＰ８０〜ＳＰ８２が異なる。以下では、（３−４）の処理との相違点を中心に説明する。
【０１０４】
ＳＰ５０〜ＳＰ５５の処理は（３−４）パス障害対処処理で述べたものと同様であるため説明を省略する。
【０１０５】
次に、パス管理プログラム２１は、パス管理テーブル２２に、ＶＭ状態欄２２Ｂが「休止状態」であり、パス状態欄２２Ｇが「Offline」であるエントリが存在する場合（ＳＰ８０；ＹＥＳ）、ＳＰ８１へ進む。例えば、物理ＨＢＡ「Ｘ」に障害が発生した場合、パス管理プログラム２１は、パス管理テーブル２２の、ＶＭ１の仮想ＨＢＡ「Ｘ１」と、ＨＢＡ「Ｘ」の対応をＨＢＡ「Ｙ」に変更する（ＳＰ８１）。そして、ＣＰＵ１０は、物理ＨＢＡ１３と仮想ＨＢＡ５５の割り当てを変更する。
【０１０６】
その後、仮想ＨＢＡと物理ＨＢＡの対応を変更したエントリのパス状態欄２２Ｇを「Offline」から「Online」に変更する（ＳＰ８２）。
【０１０７】
続いてパス管理プログラム２１は、第１のパス管理テーブル２２を参照して、障害が発生した物理ＨＢＡ１３を経由するすべてのパスに関して、ステップＳＰ５４〜ステップ８２の処理を実行し終えたか否かを判断する（ＳＰ５７）。
【０１０８】
（３−８）仮想マシンのレジューム処理
図１８は、仮想マシン５０のゲストＯＳ５１により実行される、仮想マシンのレジューム処理の処理手順を表す。レジュームとはハイバネーションによって休止した仮想マシン５０を再起動させる処理をいう。
【０１０９】
仮想マシン５０のレジュームが実行される際、ゲストＯＳ５１は、ホストＯＳ４０上のパス管理プログラム２１に対して、レジュームする旨を通知する（ＳＰ９０）。具体的には、ゲストＯＳ５１は、対応する仮想マシン５０のマシンＩＤと、その仮想マシン５０の状態（「起動中」）とからなる情報をパス管理プログラム２１に送信する。例えば、「ＶＭ１」という仮想マシン５０のゲストＯＳ５１をレジュームした場合、ゲストＯＳ５１は、「マシンＩＤ」として「ＶＭ１」、仮想マシン５０の状態として「起動中」という情報が格納された起動通知情報をパス管理プログラム２１に送信する。
【０１１０】
かかる起動通知情報を受信したパス管理プログラム２１は、この起動通知情報に基づいて第１のパス管理テーブル２２を更新する。具体的には、パス管理プログラム２１は、「ＶＭ１」という仮想マシン５０のゲストＯＳ５１から起動通知情報を受信した場合、第一のパス管理テーブル２２上の「ＶＭ１」という仮想マシン５０に対応するすべてのエントリについて、ＶＭ状態欄２２Ｂに格納されているその仮想マシン５０の状態を「休止状態」から「起動中」に変更する。そして、パス管理プログラム２１は、対応を変更したパスのパス状態欄２２Ｇを「Online」から「Offline」に変更する。
【０１１１】
続いてゲストＯＳ５１は、自ゲストＯＳが構成する仮想マシン５０と接続されたすべてのパスについてのパス情報を、ホストＯＳ４０のパス管理プログラム２１に問い合わせることにより取得する（ＳＰ９１）。例えば、「ＶＭ１」という仮想マシン５０の場合、そのゲストＯＳ５１は、第１のパス管理テーブル２２上でＶＭ欄２２Ａに「ＶＭ１」が格納されている全エントリの情報を取得する。
【０１１２】
次いでゲストＯＳ５１は、ＳＰ９１において取得したパス情報にパスＩＤが含まれる１つのパスを選択する。（ＳＰ９２）。またゲストＯＳ５１は、そのパスのパス状態をＳＰ９２において取得したパス情報から読み出し（ＳＰ９３）、そのパスのパス状態が「オフライン（Offline）」であるか否かを判断する（ＳＰ９４）。
【０１１３】
ゲストＯＳ５１は、この判断において否定結果を得ると（ＳＰ９４；ＮＯ）、ＳＰ９６に進む。これに対してゲストＯＳ５１は、この判断において肯定結果を得ると（ＳＰ９４；ＹＥＳ）、第２のパス管理テーブル２６におけるそのパスに対応するエントリのパス状態欄２６Ｅに格納されているパス状態を「オンライン（Online）」から「オフライン（Offline）」に変更することにより、そのパスを閉塞する（ＳＰ９５）。
【０１１４】
続いてゲストＯＳ５１は、ＳＰ９１おいて取得したパス情報に基づいて、そのゲストＯＳ５１が構成する仮想マシン５０と接続されたすべてのパスについてＳＰ９２〜ＳＰ９５の処理を実行したか否かを判断する（ＳＰ９６）。
【０１１５】
そしてゲストＯＳ５１は、この判断において否定結果を得るとＳＰ９２に戻り、この後、選択するパスを順次他のパスに切り替えながら、ＳＰ９２〜ＳＰ９５の処理を繰り返す。
【０１１６】
そしてゲストＯＳ５１は、やがて自ゲストＯＳが構成する仮想マシン５０と接続されたすべてのパスについてＳＰ９２〜ＳＰ９５の処理を実行し終えることによりＳＰ９６において肯定結果を得ると、ＳＰ９７へ進む。
【０１１７】
そして、ゲストＯＳ５１は、パス管理プログラム２１に対して、自ゲストＯＳ５１のレジューム処理が終了したことを通知する（ＳＰ９７）。
【０１１８】
かかるレジューム終了の通知を受信したパス管理プログラム２１は、図１７のＳＰ８１において変更した、物理ＨＢＡと仮想ＨＢＡの対応をもとに戻す。
【０１１９】
例えば、パス管理プログラム２１は、パス管理テーブル２２の、仮想ＨＢＡ「Ｘ１」と対応する物理ＨＢＡ「Ｙ」を物理ＨＢＡ「Ｘ」に変更する。そして、ＣＰＵ１０は、仮想ＨＢＡ「Ｘ１」に割り当てらていた、物理ＨＢＡを「Ｘ」から「Ｙ」に変更する。
【０１２０】
ゲストＯＳ５１は、自ゲストＯＳが構成する仮想マシン５０と接続されたすべてのパスについてのパス情報を、ホストＯＳ４０のパス管理プログラム２１に問い合わせることにより取得する（ＳＰ９８）。
【０１２１】
ゲストＯＳ５１は、第２のパス管理テーブル２６におけるそのパスに対応するエントリの物理ＨＢＡ２６Ｃに格納されている「Ｙ」から「Ｘ」に変更する。
これにより、仮想マシン５０をレジューム直後に、ハイバネーション前に中断された処理が実行され、パスの障害に起因するＩ／Ｏ遅延の発生を防止することができる。
【０１２２】
（３−９）パス閉塞情報の表示
物理計算機２または管理計算機７において、各仮想マシン５０のパス閉塞の契機を表示することができる。図１９はその一例である。
仮想マシン５０のパス冗長化プログラム２５が障害を検出し、自仮想マシン５０のパスを閉塞した場合、その旨が表示される。図１９では、閉塞契機２２Ｈに「検出」が表示される。また、他の仮想マシン５０のパス冗長化プログラムが検出し、パス管理プログラム２１から通知を受けてパスを閉塞した場合、その旨が表示される。図１９では、閉塞契機２２Ｈに「通知」が表示される。また、仮想マシン５０の閉塞契機の情報のログをテキストで表示してもよい。
【０１２３】
（４）本実施の形態の効果
以上のように本実施の形態による仮想計算機システム１では、いずれかの仮想マシン５０がパス障害を検出したときに、これをホストＯＳ４０のパス管理プログラム２１に通知し、パス管理プログラム２１がこの通知に基づいて、障害が発生したパスと同じ物理ＨＢＡ１３を経由するパスを閉塞するように各仮想マシン５０に通知し、この通知に基づいて各仮想マシン５０において対応するパスを閉塞するため、かかる物理ＨＢＡ１３に発生した障害によってすべての仮想マシン５０のＩ／Ｏ駆動が抑制されることがなく、物理ＨＢＡ１３の障害が仮想計算機システム１全体に与える影響を低減させることができる。かくするにつき信頼性の高い計算機装置及びパス管理方法を実現できる。
【０１２４】
（５）他の実施の形態
なお上述の実施の形態においては、複数の仮想マシン５０にそれぞれ対応させて設けられ、それぞれ対応する仮想マシン５０に接続されたパスのパス状態を管理する複数のゲスト側パス管理部を、物理計算機２全体の動作制御を司るＣＰＵ１０（図１）とパス冗長化プログラム２５とにより構成するようにした場合について述べたが、本発明はこれに限らず、かかるゲスト側パス管理部専用のＣＰＵを設けるようにしても良い。
【０１２５】
同様に上述の実施の形態においては、複数の仮想マシン５０におけるパス状態を一元管理するホスト側パス管理部を、物理計算機２全体の動作制御を司るＣＰＵ１０とパス冗長化プログラム２５とにより構成するようにした場合について述べたが、本発明はこれに限らず、かかるホスト側パス管理部専用のＣＰＵを設けるようにしても良い。
【０１２６】
さらに上述の実施の形態においては複数の仮想計算機により共有使用される複数の物理Ｉ／Ｏデバイスが物理ＨＢＡ１３である場合について述べたが、本発明はこれに限らず、かかる物理Ｉ／Ｏデバイスが例えばＮＩＣ１２等の他の物理Ｉ／Ｏデバイスである場合にも本発明を適用することができる。
【図面の簡単な説明】
【０１２７】
【図１】本実施の形態による仮想計算機システムの全体構成を示すブロック図である。
【図２】図１の物理計算機のメモリが格納する情報を説明するための図である。
【図３】図１の仮想計算機システムの論理構成を示すブロック図である。
【図４】第１のパス管理テーブルを説明するための概念図である。
【図５】第２のパス管理テーブルを説明するための概念図である。
【図６】本実施の形態によるパス管理機能の説明に供するブロック図である。
【図７】パス管理プログラム起動処理の処理手順を示すフローチャートである。
【図８】ＶＭ情報の説明に供する概念図である。
【図９】パス管理テーブル作成処理の処理手順を示すフローチャートである。
【図１０】ＨＢＡ情報の説明に供する概念図である。
【図１１】ゲストＯＳ起動処理の処理手順を示すフローチャートである。
【図１２】パス障害対処処理の処理手順を示すフローチャートである。
【図１３】（Ａ）〜（Ｃ）は、パス障害対処処理の説明に供する概念図である。
【図１４】パス回復処理の処理手順を示すフローチャートである。
【図１５】（Ａ）〜（Ｃ）は、パス回復処理の説明に供する概念図である。
【図１６】仮想マシンのハイバネーション処理の処理手順を示すフローチャートである。
【図１７】ハイバネーション中のパス障害対処処理の処理手順を示すフローチャートである。
【図１８】仮想マシンのレジューム処理の処理手順を示すフローチャートである。
【図１９】第１のパス管理テーブルを説明するための概念図である。
【符号の説明】
【０１２８】
１……仮想計算機システム、２……物理計算機、４……ストレージ装置、５……スイッチ、６……管理端末、７……管理計算機、１０……ＣＰＵ、１１……メモリ、１３……ＨＢＡ、２０……仮想化プログラム、２１……パス管理プログラム、２２……第１のパス管理テーブル、２３……パス情報ファイル、２５……パス冗長化プログラム、２６……第２のパス管理プログラム、４０……ホストＯＳ、４１，５２……仮想ＣＰＵ、４２，５３……仮想メモリ、５５……仮想ＨＢＡ、ＶＯＬ……論理ボリューム。
【図１】
2011014088.tif 000003
【図２】
2011014088.tif 000004
【図３】
2011014088.tif 000005
【図４】
2011014088.tif 000006
【図５】
2011014088.tif 000007
【図６】
2011014088.tif 000008
【図７】
2011014088.tif 000009
【図８】
2011014088.tif 000010
【図９】
2011014088.tif 000011
【図１０】
2011014088.tif 000012
【図１１】
2011014088.tif 000013
【図１２】
2011014088.tif 000014
【図１３】
2011014088.tif 000015
【図１４】
2011014088.tif 000016
【図１５】
2011014088.tif 000017
【図１６】
2011014088.tif 000018
【図１７】
2011014088.tif 000019
【図１８】
2011014088.tif 000020
【図１９】
2011014088.tif 000021