説明

計算機装置及びパス管理方法

【課題】
物理I/Oデバイスの障害が仮想計算機システム全体に与える影響を低減させ得る信頼性高い計算機装置及びパス管理方法を提案する。
【解決手段】
第一のパス管理部が、仮想HBAの障害を検出した場合に、障害を第二のパス管理部に通知し、第二のパス管理部は、障害の通知に応じて、障害が検出された、仮想HBAに対応する物理HBAを経由する、他の仮想HBAを有する各仮想計算機に対応する第一のパス管理部に対して、他の仮想HBAの閉塞を指示し、第一のパス管理部は、第二のパス管理部から仮想HBAの閉塞を指示された場合に、指示された仮想HBAを閉塞するようにした。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、計算機装置及びパス管理方法に関し、例えば物理HBA(host bus adapter)を複数の仮想計算機(以下、これを仮想マシンと呼ぶ)で共有使用する仮想計算機システムに適用して好適なものである。
【背景技術】
【0002】
従来、仮想計算機システムにおけるHBA等の物理I/O(Input/Output)デバイスの共有使用は、ハイパーバイザと呼ばれる仮想化プログラムにより物理I/Oデバイスを論理I/Oデバイスとして分割共有し、I/Oデバイスを制御するパス冗長化プログラムをもつ仮想マシンに実行権を割り当てることにより行われている(特許文献1)。
【0003】
特許文献1には、ハイパーバイザがサーバ装置の物理I/Oデバイスと、サーバ計算機が有する複数の仮想計算機の仮想I/Oデバイスとの間のアクセス経路情報を管理する方法が記載されている。また、特許文献1には、ハイパーバイザがI/Oチャネルの障害を検出した際、仮想I/Oデバイスと物理I/Oデバイスの接続を変更する方法が記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−209487号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に開示された方法では、I/Oのタイムアウトが発生しないと障害を検出できない。このため、ある仮想計算機で障害の発生が検出されているにもかかわらず、他の仮想計算機でも障害を検出する度にI/Oの遅延が発生するという問題があった。
【0006】
本発明は、以上の点を考慮してなされたもので、物理I/Oデバイスの障害が仮想計算機システム全体に与える影響を低減させ得る信頼性の高い計算機装置及びパス管理方法を提案しようとするものである。
【課題を解決するための手段】
【0007】
かかる課題を解決するため本発明においては、仮想環境を提供し、記憶領域を有するストレージ装置に接続される、計算機装置において、それぞれが仮想HBAを有して複数の仮想計算機を提供する仮想計算機提供部と、前記複数の仮想計算機にそれぞれ対応させて設けられ、それぞれ対応する前記仮想計算機が有する仮想HBAの状態を管理する、複数の第一のパス管理部と、前記複数の仮想計算機により共有使用され、前記仮想HBAに対応する物理HBAと、前記複数の仮想計算機が有する仮想HBAと前記複数の物理HBAとの対応関係を管理する第二のパス管理部と、を備え、前記第一のパス管理部は、前記仮想HBAの障害を検出した場合に、当該障害を前記第二のパス管理部に通知し、前記第二のパス管理部は、前記障害の通知に応じて、当該障害が検出された、仮想HBAに対応する前記物理HBAを経由する、他の前記仮想HBAを有する各仮想計算機に対応する前記第一のパス管理部に対して、当該他の仮想HBAの閉塞を指示し、前記第一のパス管理部は、前記第二のパス管理部から前記仮想HBAの閉塞を指示された場合に、指示された前記仮想HBAを閉塞することを特徴とする。
【0008】
また本発明においては、仮想環境を提供し、記憶領域を有するストレージ装置に接続される、計算機装置のパス管理方法において、それぞれが仮想HBAを有して複数の仮想計算機を提供する仮想計算機提供部と、前記複数の仮想計算機にそれぞれ対応させて設けられ、それぞれ対応する前記仮想計算機が有する仮想HBAの状態を管理する、複数の第一のパス管理部と、前記複数の仮想計算機により共有使用され、前記仮想HBAに対応する物理HBAと、前記複数の仮想計算機が有する仮想HBAと前記複数の物理HBAとの対応関係を管理する第二のパス管理部と、を備え、前記第一のパス管理部は、前記仮想HBAの障害を検出した場合に、当該障害を前記第二のパス管理部に通知し、前記第二のパス管理部は、前記障害の通知に応じて、当該障害が検出された、仮想HBAに対応する前記物理HBAを経由する、他の前記仮想HBAを有する各仮想計算機に対応する前記第一のパス管理部に対して、当該他の仮想HBAの閉塞を指示し、前記第一のパス管理部は、前記第二のパス管理部から前記仮想HBAの閉塞を指示された場合に、指示された前記仮想HBAを閉塞することを特徴とする。
【発明の効果】
【0009】
本発明によれば、パスに障害が発生したときに、当該障害が各仮想計算機に通知され、各仮想計算機において障害が発生した物理I/Oを経由するパスが閉塞される。従って、本発明によれば、パスの障害による遅延を事前に回避することができる。
【発明を実施するための形態】
【0010】
以下図面について、本発明の一実施の形態を詳述する。
(1)本実施の形態による仮想計算機システムの構成
図1において、1は全体として本実施の形態による仮想計算機システムの物理構成を示す。この仮想計算機システム1は、物理計算機2がネットワーク3を介してストレージ装置4に接続されることにより構成されている。
この仮想計算機システム1は、物理計算機2、ストレージ装置4、スイッチ5(ネットワーク3)、管理端末6、及び管理計算機7により構成されている。物理計算機2、ストレージ装置4はスイッチ5(ネットワーク3)に接続される。また、物理計算機2、管理端末6、スイッチ5は、それぞれLAN27を介して管理計算機7に接続される。図1では、ストレージ装置4は管理端末6を介して管理計算機7に接続されているが、ストレージ装置4が直接LANに接続される構成であってもよい。また、物理計算機2が管理計算機7の機能を有する場合、仮想計算機システム1は管理計算機7を有さない構成としてもよい。
【0011】
物理計算機2は、パーソナルコンピュータ又はワークステーションなどから構成され、CPU(Central Processing Unit)10、メモリ11、複数のNIC(Network Interface Card)12、複数のHBA(host bus Adapter)13、記憶装置16を備える。また、物理計算機2は、キーボードやマウス等の入力装置14及びディスプレイ15等の出力装置を備える。
【0012】
CPU10は、物理計算機2全体の動作制御を司るプロセッサであり、メモリ11に格納された制御プログラムに基づいて必要な処理を実行する。またメモリ11は、図2に示すように、ホストOS(Operating System)40や、ゲストOS51、複数の仮想マシン(VM)を有する仮想環境を提供する仮想化プログラム20などの制御プログラムを保持するために用いられるほか、CPU10のワークメモリとしても用いられる。後述のパス管理プログラム21、第1のパス管理テーブル22、パス情報ファイル23、アプリケーションソフトウェア24、パス冗長化プログラム(DLM:Device Link Manager)25及び第2のパス管理テーブル26もこのメモリ11に格納されて保持される。
【0013】
NIC12は、物理計算機2、管理計算機7、管理端末6、スイッチ5に備えられており、それぞれの間の通信時にプロトコル制御を行う通信インタフェースである。NIC12には、例えばIP(Internet Protocol)アドレス等の1又は複数のネットワークアドレスが付与される。本実施の形態の場合、NIC12同士がLAN27を介して接続されている。また、物理計算機2のNIC12が仮想化され、仮想マシン50にそれぞれ割当てられている。ホストOS40と仮想マシン50とは仮想的なLANを介して必要な情報やコマンドをやり取りし得るようになされている。
【0014】
また物理HBA13は、物理計算機2及びストレージ装置4間の通信時にプロトコル制御を行う通信インタフェースである。この物理HBA13にもWWN(World Wide Name)等の1又は複数のネットワークアドレスが付与される。
【0015】
スイッチ5は、ファイバチャネルスイッチやTCP/IPスイッチ等である。スイッチ5は、物理計算機2や、管理計算機7、ストレージ装置4との接続のため、HBAやNICを備えており、ネットワーク間を接続する。以下では、スイッチ5も含めて、ネットワーク3として説明する。ネットワーク3は、例えばSAN(Storage Area Network)、LAN、インターネット、公衆回線又は専用回線などから構成される。このネットワーク3を介した物理計算機2及びストレージ装置4間の通信は、例えばネットワーク3がSANである場合にはファイバーチャネルプロトコルに従って行われ、ネットワーク3がLANである場合にはTCP/IP(Transmission Control Protocol/Internet Protocol)プロトコルに従って行われる。
【0016】
ストレージ装置4は、1又は複数のディスク装置30と、ディスク装置30に対するデータの入出力を制御するコントローラ31とから構成される。
【0017】
ディスク装置30は、例えばSCSI(Small Computer System Interface)ディスク等の高価なディスクや、SATA(Serial AT Attachment)ディスクや光ディスク等の安価なディスクなどから構成される。1又は複数のディスク装置30により1つのRAIDグループ32が構成され、1つのRAIDグループ32を構成する各ディスク装置30が提供する物理的な記憶領域上に、1又は複数の論理ボリュームVOLが設定される。そして物理計算機2からのデータは、この論理ボリュームVOL内に所定大きさのブロック(以下、これを論理ブロックと呼ぶ)を単位として記憶される。
【0018】
各論理ボリュームVOLには、それぞれ固有のボリューム番号が付与される。本実施の形態の場合、データの入出力は、このボリューム番号と、各論理ブロックにそれぞれ付与されるその論理ブロックのブロック番号(LBA:Logical Block Address)とを組み合わせたものをアドレスとして、当該アドレスを指定して行われる。
【0019】
コントローラ31は、1又は複数のチャネルアダプタ(CHA)33、メモリ35、CPU36、キャッシュ38、制御メモリ34、ポート37、及びNIC39を備える。コントローラ31は、物理計算機2からネットワーク3を介して与えられるI/O要求を受信すると、このI/O要求に応じて、対応するディスク装置30にデータを読み書きする。
チャネルアダプタ33は、ネットワーク3を介して物理計算機2と通信を行うためのインタフェースである。メモリ35はCPU36で実行される処理に必要な制御情報を保持する。CPU36は、チャネルアダプタ33を経由して受信した入出力要求について、アクセス対象のデバイスを特定し、入出力要求を処理する。この際、CPU36は、入出力要求に含まれるLUN(Logical Unit Number)によって、アクセス対象のデバイスを特定する。キャッシュ38は、物理計算機2からのリード要求に対して、予めデータを格納したり、物理計算機2から受信したデータを一時的に格納する。これによってアクセス要求の処理速度を高める。制御メモリ34は、論理ボリュームの制御情報や、キャッシュ上のデータをディスクに反映したか否か等の制御情報を保持する。
【0020】
管理端末6は、CPU61、メモリ62、記憶装置66、ストレージ装置4と接続されるNIC6、LAN27と接続されるNIC64、ストレージ管理者からの入力を受け付ける入力装置65、並びに、ストレージ管理者にストレージ装置4の構成情報や管理情報を出力するディスプレイ63等の出力装置を有する。CPU61は記憶装置66に格納されているストレージ管理プログラムをメモリ62に読み出して実行することにより、構成情報の参照、構成変更の指示、特定機能の動作指示などを行い、ストレージ装置4の保守運用に関して、ストレージ管理者もしくは管理計算機7とストレージ装置4との間のインタフェースとなる。尚、本実施形態では、管理端末6を介さずに、ストレージ装置4を直接管理計算機7へ接続し、ストレージ装置4を管理計算機7で動作する管理ソフトウェアを用いて管理する構成としてもよい。
【0021】
図3は、かかる仮想計算機システム1の論理構成を示す。説明を簡単化するため、物理計算機2、ネットワーク3、ストレージ装置4のみ図示する。物理計算機2上ではOS(以下、これをホストOSと呼ぶ)40が稼働する。このホストOS40上で仮想化プログラム20(図1)が稼働している。さらに、この仮想化プログラム20上では、1又は複数のゲストOS51が稼働する。ゲストOS51とは、仮想化プログラム20によって構成される仮想マシン50上で動作するOSである。
【0022】
ホストOS40上には、物理計算機2のCPU10(図1)を時分割してなる仮想的なCPU(以下、これを仮想CPUと呼ぶ)41と、物理計算機2のメモリ11(図1)を論理分割してなる仮想的なメモリ(以下、これを仮想メモリと呼ぶ)42とが存在する。以下では、仮想メモリに格納されるというときは、実際にはメモリ11に格納されていることを意味する。
【0023】
またゲストOS51上には、仮想CPU52及び仮想メモリ53と、物理計算機2のNIC12(図1)を仮想化した仮想NIC54と、それぞれ物理計算機2のいずれかの物理HBA13を仮想化した複数の仮想HBA55とが存在している。仮想CPU52は物理計算機2のCPU10を時分割してなる。仮想メモリ53は物理計算機2のメモリ11を論理分割してなる。1つの仮想マシン(VM:Virtual Machine)50は、1つのゲストOS51と、そのゲストOS51上に存在する仮想CPU52、仮想メモリ53、仮想NIC54及び仮想HBA55から構成されている。
【0024】
そしてホストOS40上の仮想メモリ42には、パス管理プログラム21、第1のパス管理テーブル(PMT)22及びパス情報ファイル23が格納され、各仮想マシン50の仮想メモリ53には、アプリケーション24と、第2のパス管理テーブル(PMT)26を管理するパス冗長化プログラム(DLM:Device Link Manager)25とが格納されている。
【0025】
パス管理プログラム21は、物理計算機2上に定義された各仮想マシン50にそれぞれ接続されたパスを管理するためのプログラムであり、ホストOS40上に常駐する。ホストOS40の仮想CPU41は、このパス管理プログラム21に基づいて第1のパス管理テーブル22やパス情報ファイル23等を作成及び更新する。
図3において、物理HBA13に示されているX及びYは、物理HBA13のIDを表している。また、仮想HBA55に示されているX1〜X3及びY1〜Y3は、仮想HBA55のIDを表している。図3では、IDがXの物理HBA13が仮想化され、IDがX1〜X3の仮想HBA55として、各仮想マシン50に割当てられていることが表されている。IDがYの物理HBA13についても同様である。物理HBA13を仮想マシン50に割り当てる処理はCPU10が行う。
【0026】
第1のパス管理テーブル22は、物理計算機2上に定義された各仮想マシン50のパス状態をパス管理プログラム21が一元管理するためのテーブルであり、図4に示すように、VM欄22A、VM状態欄22B、パスID欄22C、仮想HBA欄22D、物理HBA欄22E、ボリューム番号欄22F及びパス状態欄22Gから構成される。
【0027】
そしてVM欄22Aには、物理計算機2上に定義された各仮想マシン50のうちの対応する仮想マシン50のマシンIDが格納され、VM状態欄22Bには、その仮想マシン50の状態(「起動中」、「未起動」又は「休止状態」)が格納される。
【0028】
また仮想HBA欄22Dには、その仮想マシン50が備える仮想HBA55(図3)のIDが格納され、物理HBA欄22Eには、その仮想HBA55が仮想化している物理HBA13(図1)のIDが格納される。さらにボリューム番号欄22Fには、同じ行(エントリ)の仮想HBA55と対応付けられたストレージ装置4内の論理ボリュームVOLのボリューム番号が格納される。
【0029】
さらにパスID欄22Cには、かかる仮想HBA55と、その仮想HBA55に対応付けられた論理ボリュームVOLとを接続するパスのパスIDが格納され、パス状態欄22Gにはそのパスの現在の状態が格納される。なお、パスの状態としては、使用可能な状態を表す「オンライン(Online)」と、閉塞状態を表す「オフライン(Offline)」との2種類がある。
【0030】
従って図4の場合、例えば現在「起動中」の「VM1」という仮想マシン50は「X」という物理HBA13を仮想化した「X1」という仮想HBA55を備えており、この仮想HBA55は「010001」というパスIDのパスを介してストレージ装置4内の「1」というボリューム番号の論理ボリュームVOLと接続され、そのパスは「オンライン(online)」の状態にあることが例示されている。
【0031】
パス情報ファイル23は、第1のパス管理テーブル22の内容を格納したファイルである。パス管理プログラム21は、終了時にパス管理テーブル22の内容をパス情報ファイル23に出力し、起動時に、このパス情報ファイル23に基づいて第1のパス管理テーブル22を作成する。
【0032】
一方、パス冗長化プログラム25は、仮想マシン50側において当該仮想マシン50と接続された各パスを管理するためのプログラムである。このパス冗長化プログラム25は、仮想HBA55を介して発行したI/O要求の送信結果に基づいて対応するパスの障害(パス障害)を検出する機能と、パス障害を検出したときにそのパスを閉塞する(オフラインにする)機能と、パス障害を検出したときにこれをパス管理プログラム21に通知する機能と、閉塞したパスの回復を確認したときにそのパスを使用可能とする(オンラインにする)機能とを備える。
【0033】
また第2のパス管理テーブル26は、パス冗長化プログラム25が、対応する仮想マシン50について定義された各パスを管理するために使用するテーブルであり、図5に示すように、パスID欄26A、仮想HBA欄26B、物理HBA欄26C、ボリューム番号欄26D及びパス状態欄26Eから構成される。そしてパスID欄26Aには、対応するパスに対して仮想マシン50が独自に付与したパスIDが格納される。また仮想HBA欄26B、物理HBA欄26C、ボリューム番号欄26D及びパス状態欄26Eには、それぞれ第1のパス管理テーブル22の対応するエントリの仮想HBA欄22D、物理HBA欄22E、ボリューム番号欄22F及びパス状態欄22Gに格納された情報とそれぞれ同じ情報が格納される。
【0034】
(2)本実施の形態によるパス管理機能
次に、物理計算機2に搭載された本実施の形態によるパス管理機能について説明する。なお、以下においては、各種処理の処理主体を「プログラム」又は「ソフトウェア」として説明する場合があるが、実際にはそのプログラム又はソフトウェアに基づいてホストOS40又は仮想マシン50の仮想CPU41,52(より正確には物理計算機2のCPU10)がその処理を実行することは言うまでもない。
【0035】
本実施の形態の場合、物理計算機2には、いずれかの仮想マシン50がパスの障害を検出した場合に、その仮想マシン50及び他の仮想マシン50において、かかる障害が検出されたパス(以下、これを障害パスと呼ぶ)と同じ物理HBA13を経由するパスを閉塞する(オフライン状態にする)第1のパス管理機能と、いずれかの仮想マシン50が障害パスの回復を検出した場合に、その仮想マシン50及び他の仮想マシン50において、かかる回復を検出したパス(以下、これを回復パスと呼ぶ)と同じ物理HBA13を経由するパスをオンライン状態に戻す第2のパス管理機能とが搭載されている。
【0036】
以上のような本実施の形態によるパス管理機能のうちの第1のパス管理機能について、図4及び図6を用いて具体的に説明する。
【0037】
例えば図1及び図4の状態から図6のように「X」という物理HBA13に障害が発生したとする。この場合、「VM1」という仮想マシン50のアプリケーションが「X1」という仮想HBA55を介してストレージ装置4に対してI/O要求を送信しても、その仮想マシン50は当該I/O要求に対するストレージ装置4からの返信を受信することができず、やがてエラー通知を受信するか又はタイムアウトが発生することになる。
【0038】
このときその仮想マシン50のパス冗長化プログラム25は、かかる仮想HBA55に接続されたパスにおいてパス障害が発生したと判別し、そのパスを閉塞する閉塞処理を行う(SP1)。またパス冗長化プログラム25は、所定のパス障害情報をホストOS40のパス管理プログラム21に通知する(SP2)。従って、図4及び図6の例において、「010001」というパスにおいてパス障害が検出された場合、「VM1」という仮想マシン50のパス冗長化プログラム25は、このパスを閉塞すると供に、このパスに障害が発生したというパス障害情報をパス管理プログラム21に通知する。
【0039】
一方、パス障害情報を受信したパス管理プログラム21は、パス障害情報により通知された障害パスが経由する物理HBA13を経由する他のパスと接続されている仮想マシン50を第1のパス管理テーブル22上で検索する。そしてパス管理プログラム21は、そのような仮想マシン50を検出すると、その仮想マシン50のパス冗長化プログラム25に対して、かかる「他のパス」を閉塞すべき指示(以下、これをパス閉塞指示と呼ぶ)を送信する(SP3)。図4及び図6の例の場合、パス管理プログラム21は、「VM1」という仮想マシン50に対して「010002」というパスを閉塞すべき旨のパス閉塞指示を与え、「VM2」という仮想マシン50に対して「020001」及び「020002」という2つのパスをそれぞれ閉塞すべき旨のパス閉塞指示を与え、「VM3」という仮想マシン50に対して「030001」及び「030002」という2つのパスをそれぞれ閉塞すべき旨のパス閉塞指示を送信する。
【0040】
そして、このパス閉塞指示を受信した「VM3」という仮想マシン50のパス冗長化プログラム25は、パス閉塞指示において指定されたパスを閉塞する閉塞処理を行い(SP4)、この後は、この閉塞したパス以外のパスを介してストレージ装置との間で通信を行う(SP5)。図4及び図6の例では、例えば「VM2」という仮想マシン50のパス冗長化プログラム25は、「020001」及び「020002」という2つのパスを閉塞し、この後は、「020003」又は「020004」というパスを介してストレージ装置4との間の通信を行うことになる。
【0041】
ところで、図4及び図6の例において、パス管理プログラム21が「VM3」という仮想マシン50に対してパス閉塞指示を送信したときに当該仮想マシン50の状態が「未起動」であった場合、この仮想マシン50では、かかるパス閉塞指示に対応することができないため、当該パス閉塞指示において指定されたパス(「030001」及び「030002」という2つのパス)が閉塞されない。
【0042】
そこで、本実施の形態の場合、仮想マシン50のパス冗長化プログラム25は、当該仮想マシン50の起動処理時に、パス管理プログラム21に対してパス障害の有無を問い合わせる(SP6)。そしてパス管理プログラム21は、かかる問い合わせに対して、そのとき障害が発生している物理HBA13と、その仮想マシン50が使用可能なパスとに関連するパス障害情報とを、そのパス冗長化プログラム25に通知する(SP7)。
【0043】
そしてパス冗長化プログラム25は、かかるパス障害情報を受信すると、自仮想マシンと接続されたパスのうちの障害が発生した物理HBA13を経由するパスを閉塞する閉塞処理を実行し(SP8)、この後は、この閉塞したパス以外のパスを利用してストレージ装置4との間の通信を行う(SP9)。例えば上述の例の場合、「VM3」という仮想マシン50は、パス管理プログラム21からのパス障害情報に基づいて、「030001」及び「030002」という2つのパスをそれぞれ閉塞し、この後は、「030003」及び「030004」というパスを利用してストレージ装置4との間の通信を行うことになる。
【0044】
以上のような処理により、障害が発生した物理HBA13を経由するパスを仮想マシン50が利用しようとすることを未然に防止することができ、これによりタイムアウトの発生に起因するI/O遅延の発生を有効に防止することができる。
【0045】
(3)本実施の形態によるパス管理機能に関する各種処理
次に、以上のような本実施の形態によるパス管理機能に関するホストOS40上のパス管理プログラム21と、仮想マシン50のゲストOS51との具体的な処理内容について説明する。
【0046】
(3−1)パス管理プログラム起動処理
図7は、ホストOS40上のパス管理プログラム21により実行されるパス管理プログラム起動処理の処理手順を示す。パス管理プログラム21は、この図7に示す処理手順に従って、起動処理の際に第1のパス管理テーブル22を作成する。
【0047】
すなわちパス管理プログラム21は、ユーザ指示により又は起動処理中のホストOS40により起動されると、このパス管理プログラム起動処理を開始し、まず、ホストOS40上の仮想メモリ42内を検索して、パス情報ファイル23があるか否かを判別する(SP10)。
【0048】
パス管理プログラム21は、この判断において否定結果を得ると(SP10;NO)、図4について上述した第1のパス管理テーブル22を新たに作成し、(SP11)、この後、SP21に進む。
【0049】
これに対してパス管理プログラム21は、SP10の判断において肯定結果を得ると(SP10;YES)、仮想メモリ42からパス情報ファイル23を読み出し、読み出したパス情報ファイル23に基づいて第1のパス管理テーブル22を作成する(SP12)。
【0050】
続いてパス管理プログラム21は、仮想環境の定義情報であるVM情報を取得する(SP13)。このVM情報は、例えば図8に示すように、物理計算機2上に定義されている各仮想マシン50のマシンIDと、その仮想マシン50の現在の状態とを対応付けた情報であり、予めユーザにより作成されて物理計算機2のメモリ11(図1)において保持されている。
【0051】
次いでパス管理プログラム21は、SP13において取得したVM情報にマシンIDが登録された仮想マシン50を1つ選択し(SP14)、その仮想マシン50が「起動中」であるか否かをVM情報に基づいて判断する(SP15)。
【0052】
パス管理プログラム21は、この判断において否定結果を得ると(SP15;NO)、SP12において作成した第1のパス管理テーブル22におけるその仮想マシン50に対応するエントリの状態欄22B(図4)に、その仮想マシン50の状態として「未起動」を格納し(SP16)、この後、SP20に進む。
【0053】
これに対してパス管理プログラム21は、SP15の判断において肯定結果を得ると(SP15;YES)、SP12において作成した第1のパス管理テーブル22におけるその仮想マシン50に対応するエントリの状態欄22B(図4)に、その仮想マシン50の状態として「起動中」を格納する(SP17)。
【0054】
この後、パス管理プログラム21は、その仮想マシン50のパス冗長化プログラム25(図3)に対して、当該仮想マシン50に接続されている各パスの情報を問い合わせる。そしてパス冗長化プログラム25は、この問い合わせに対して、第2のパス管理テーブル26(図3)に登録されている各パスのパスIDと、これらパスにそれぞれ接続された仮想HBA55(図3)のIDと、これらパスにそれぞれ接続された論理ボリュームVOLのボリューム番号とをパス情報としてパス管理プログラム21に通知する(SP18)。そしてパス管理プログラム21は、このようにして取得したパス情報を第1のパス管理テーブル22に反映させる(SP19)。
【0055】
なお、後述のように、各仮想マシン50はそれぞれ自仮想マシンに接続された各パスを独自のパスIDを付与して管理しているため、各仮想マシン50から収集したパス情報を第1のパス管理テーブル22に反映させるとパスIDが重複するおそれがある。そこで、パス管理プログラム21は、仮想マシン50から収集したパス情報を第1のパス管理テーブル22に反映するに際しては、パスごとに、SP18において取得したそのパスのパスIDの先頭にその仮想マシン50のIDを付加した新たなパスIDを作成し、その新たなパスIDを当該パスのパスIDとして第1のパス管理テーブル22に登録する。従って、例えば「01」というマシンIDの仮想マシン50から収集した「0001」というパスIDのパスについては、「0001」の先頭に「01」を付加した「010001」がそのパスの新たなパスIDとして第1のパス管理テーブル22に登録される。
【0056】
次いでパス管理プログラム21は、SP13において取得したVM情報に基づいて、物理計算機2上に定義されたすべての仮想マシン50についてSP14〜SP19の処理を行ったか否かを判別する(SP20)。
【0057】
パス管理プログラム21は、この判断において否定結果を得ると(SP20;NO)、SP14に戻り、この後、SP14において選択する仮想マシンを順次他の仮想マシン50に切り替えながら、S14〜S20の処理を繰り返す。
【0058】
そしてパス管理プログラム21は、やがて物理計算機2上に定義されたすべての仮想マシン50についてSP14〜SP20の処理を実行し終えることによりSP20において肯定結果を得ると(SP20;YES)、起動処理を完了して各仮想マシン50についてそれぞれ設定された各パスの状態の監視を開始する(SP21)そしてパス管理プログラム21は、この後、このパス管理プログラム起動処理を終了する。
【0059】
(3−2)パス管理テーブル作成処理
図9は、パス管理プログラム起動処理(図7)のSP11においてパス管理プログラム21により実行されるパス管理テーブル作成処理の処理手順を示す。パス管理プログラム21は、この図9に示す処理手順に従って、第1のパス管理テーブル22を新規に作成する。
【0060】
すなわちパス管理プログラム21は、パス管理プログラム起動処理のSP11に進むと、このパス管理テーブル作成処理を開始し、まず、パス管理プログラム起動処理のSP13と同様にしてVM情報を取得する(SP30)。
【0061】
続いてパス管理プログラム21は、各仮想マシン50に対するリソース割付けの定義情報であるHBA情報を取得する(SP31)。このHBA情報は、例えば図10に示すように、仮想マシン50が認識するHBAと、ホストOS40が認識するHBAとの対応関係を表す情報であり、予めユーザにより作成されて物理計算機2のメモリ11(図1)に格納されている。
【0062】
次いでパス管理プログラム21は、SP30において取得したVM情報にマシンIDが登録された仮想マシン50を1つ選択し(SP32)、その仮想マシン50の状態が「起動中」であるか否かを判断する(SP33)。
【0063】
パス管理プログラム21は、この判断において否定結果を得ると(SP33;NO)、SP36に進む。これに対してパス管理プログラム21は、かかる判断において肯定結果を得ると(SP30;YES)、パス管理プログラム起動処理のSP18と同様にして、その仮想マシン50のパス情報を取得し(SP34)、取得したパス情報を第1のパス管理テーブル22に反映させる(SP35)。
【0064】
次いでパス管理プログラム21は、SP30において取得したVM情報に基づいて、物理計算機2上に定義されたすべての仮想マシン50についてSP32〜SP35の処理を行ったか否かを判別する(SP36)。
【0065】
そしてパス管理プログラム21は、この判断において否定結果を得ると(SP36;NO)、SP32に戻り、この後、SP32において選択する仮想マシンを順次他の仮想マシン50に切り替えながら、SP32〜SP36の処理を繰り返す。
【0066】
そしてパス管理プログラム21は、やがて物理計算機2上に定義されたすべての仮想マシン50についてSP32〜SP35を実行し終えることによりSP36において肯定結果を得ると(SP36;YES)、このパス管理テーブル作成処理をして、パス管理プログラム起動処理(図7)に戻る。
【0067】
(3−3)ゲストOS起動処理
一方、図11は、仮想マシン50のゲストOS51(図3)により実行されるゲストOS起動処理の処理手順を示す。ゲストOS51は、仮想化プログラム20(図1)により起動されると、このゲストOS起動処理を開始し、まず、パス冗長化プログラム25(図3)を起動して、第2のパス管理テーブル26(図3)を作成させる(SP40)。
【0068】
具体的には、パス冗長化プログラム25は、起動処理時、例えばSCSI(Small Computer System Interface)プロトコルのINQUIRYコマンドをそのゲストOS51上に存在するすべての仮想HBA55(図3)を介して発行することにより、各仮想HBA55にパスを介してそれぞれ接続されたストレージ装置4内の論理ボリュームVOLのボリューム番号を収集する。そしてパス冗長化プログラム25は、このようにして収集した情報と、物理計算機2のメモリ11に格納されている上述のVM情報及びHBA情報とに基づいて、第2のパス管理テーブル26を作成する。なお、この際パス冗長化プログラム25は、各パスに対して独自のパスID(例えばシーケンシャルな番号)を付与し、このパスIDを第2のパス管理テーブル26の対応するパスID欄26A(図5)に格納する。またパス冗長化プログラム25は、第2のパス管理テーブル26の各エントリのパス状態欄26E(図5)に、対応するパスのパス状態として「オンライン(Online)」を格納する。
【0069】
次に、ゲストOS51は、ホストOS40上のパス管理プログラム21に対して、自ゲストOS51が起動した旨を通知する(SP41)。具体的には、ゲストOS51は、OS起動スクリプトに従って、対応する仮想マシン50のマシンIDと、その仮想マシン50の状態(「起動中」)とからなる情報(以下、これを起動通知情報と呼ぶ)をパス管理プログラム21に送信する。例えば、「VM3」という仮想マシン50のゲストOS51を起動した場合、ゲストOS51は、「マシンID」として「VM3」、仮想マシン50の状態として「起動中」という情報が格納された起動通知情報をパス管理プログラム21に送信する。
【0070】
なお、かかる起動通知情報を受信したパス管理プログラム21は、この起動通知情報に基づいて第1のパス管理テーブル22を更新する。具体的に、パス管理プログラム21は、例えば「VM3」という仮想マシン50のゲストOS51から起動通知情報を受信した場合、第1のパス管理テーブル22上の「VM3」という仮想マシン50に対応するすべてのエントリについて、VM状態欄22B(図4)に格納されているその仮想マシン50の状態を「未起動」から「起動中」に変更する。
【0071】
続いてゲストOS51は、自ゲストOSが構成する仮想マシン50と接続されたすべてのパスについてのパス情報を、ホストOS40のパス管理プログラム21に問い合わせることにより取得する(SP42)。例えば「VM3」という仮想マシン50のゲストOS51の場合、かかる問い合わせにより、第1のパス管理テーブル22上でVM欄22A(図4)に「VM3」が格納されている全エントリの情報をかかるパス情報として取得することになる(図4及び図5参照)。
【0072】
次いでゲストOS51は、SP42において取得したパス情報にパスIDが含まれる1つのパスを選択する(SP43)。またゲストOS51は、そのパスのパス状態をSP42において取得したパス情報から読み出し(SP44)、そのパスのパス状態が「オフライン(Offline)」であるか否かを判断する(SP45)。
【0073】
ゲストOS51は、この判断において否定結果を得ると(SP45;NO)、SP47に進む。これに対してゲストOS51は、この判断において肯定結果を得ると(SP45;YES)、第2のパス管理テーブル26におけるそのパスに対応するエントリのパス状態欄26E(図5)に格納されているパス状態を「オンライン(Online)」から「オフライン(Offline)」に変更することにより、そのパスを閉塞する(SP46)。
【0074】
続いてゲストOS51は、SP42において取得したパス情報に基づいて、そのゲストOS51が構成する仮想マシン50と接続されたすべてのパスについてSP43〜SP46の処理を実行したか否かを判断する(SP47)。
【0075】
そしてゲストOS51は、この判断において否定結果を得るとSP43に戻り、この後、SP47において選択するパスを順次他のパスに切り替えながら、SP43〜SP47の処理を繰り返す。
【0076】
そしてゲストOS51は、やがて自ゲストOSが構成する仮想マシン50と接続されたすべてのパスについてSP43〜SP46の処理を実行し終えることによりSP47において肯定結果を得ると、自ゲストOSの起動処理を終了して、通常の処理を開始する(SP48)。そしてゲストOS51は、この後、このゲストOS起動処理を終了する。
【0077】
以上のようなゲストOS起動処理により、このゲストOS起動処理を実行するゲストOS51が構成する仮想マシン50と接続されたパスのうち、障害が発生した物理HBA13(図1)を経由するパスが、当該ゲストOS51を起動し終えた段階で既に閉塞されていることから、当該仮想マシン50の運用開始直後からパス障害に起因するI/O遅延の発生を有効に防止することができる。
【0078】
(3−4)パス障害対処処理
他方、図12は、ホストOS40のパス管理プログラムにより実行されるパス障害対処処理の処理手順を示す。
【0079】
各仮想マシン50のパス冗長化プログラム25は、自仮想マシンに接続されたパスに障害を検出すると、これに応じたパス障害情報を、仮想LAN27(図3)を介してSNMP(Simple Network Management Protocol)プロトコルのTRAP等を用いてホストOS40に送信する。そしてホストOS40のパス管理プログラム21は、このパス障害情報を受信すると、図12に示す処理手順に従って、パス障害に対する処理を実行する。
【0080】
すなわちパス管理プログラム21は、かかるパス障害情報を受信すると、このパス障害対処処理を開始し、まず、受信したパス障害情報に基づいて、第1のパス管理テーブル22における障害が発生したパスに対応するエントリのパス状態欄22G(図4)を更新する(SP50)。例えば図4の状態において、「VM1」という仮想マシン50のパス冗長化プログラム25から送信された、「010001」というパスに障害が発生したというパス障害情報を受信した場合、パス管理プログラム21は、図13(A)に示すように、第1のパス管理テーブル22における「VM1」という仮想マシン50と接続された「010001」というパスに対応するエントリのパス状態欄22Gに格納されているパス状態を「オンライン(Online)」から「オフライン(Offline)」に変更する。
【0081】
続いてパス管理プログラム21は、障害が発生したパスが経由する物理計算機2の物理HBA13(図1)を第1のパス管理テーブル22上で検索し(SP51)、この検索により検出したその物理HBA13に対して、状態を取得するためのコマンドであるOS提供コマンドを送信する(SP52)。
【0082】
そしてパス管理プログラム21は、かかるOS提供コマンドに対するその物理HBA13からの応答に基づいて、当該物理HBA13に障害が発生しているか否かを判断する(SP53)。例えば、かかる物理HBA13からの応答がエラーであった場合(その物理HBA13の状態が「READY」又は「ONLINE」ではない場合)には、その物理HBA13に障害が発生したと判断し、これに対してエラーでない場合には、その物理HBA13に障害が発生していないであると判断することになる。
【0083】
そしてこの判断において否定結果が得られた場合には(SP53;NO)、例えば論理ボリュームVOLや、経路上のスイッチの障害など、その物理HBA13以外のデバイスの障害と推定されるため、パス管理プログラム21は、いずれかのパスのパス閉塞を行うことなく、このパス障害対処処理を終了する。
【0084】
これに対してパス管理プログラム21は、かかる判断において肯定結果が得られた場合には(SP53;YES)、第1のパス管理テーブル22を参照して、障害が発生した物理HBA13を経由するパスのうちの一つのパスを選択し(SP54)、そのパスのパスIDと、そのパスと接続された仮想マシン50のマシンIDと、当該仮想マシン50上のそのパスと接続された仮想HBA55(図3)のIDとを第1のパス管理テーブル22から取得する(SP55)。
【0085】
そしてパス管理プログラム21は、第1のパス管理テーブル22における対応するエントリのパス状態欄22G(図4)に格納されたパス状態を「オンライン(Online)」から「オフライン(Offline)」に変更すると共に、SP55において取得したパスID及びマシンIDに基づいて、そのマシンIDの仮想マシン50に対してそのパスIDのパスを閉塞するよう指示するパス閉塞指示をSNMPプロトコルのTRAP等を用いて送信する(SP56)。かくしてこのパス閉塞指示を受信した仮想マシン50のパス冗長化プログラム25は、当該パス閉塞指示において指定されたパスIDのパスを閉塞する閉塞処理(第2のパス管理テーブル26の対応するエントリのパス状態26E(図5)を「オフライン(Offline)」に変更する処理)を実行する。
【0086】
続いてパス管理プログラム21は、第1のパス管理テーブル22を参照して、障害が発生した物理HBA13を経由するすべてのパスに関して、SP54〜SP56の処理を実行し終えたか否かを判断する(SP57)。
【0087】
そしてパス管理プログラム21は、この判断において否定結果を得ると(SP57;NO)、SP54に戻り、この後、SP57において順次他のパスを選択しながら、SP54〜SP57の処理を繰り返す。この結果、図13(A)の場合を例にとると、図13(B)に示すように、「010002」、「020001」、「020002」、「030001」及び「030002」という各パスについてSP54〜SP56の処理がそれぞれ実行されることになる。
【0088】
ただし、図13(A)のように「VM1」及び「VM2」という仮想マシン50が「起動中」であり、「VM3」という仮想マシン50が「未起動」であったものとすると、対応するパスの閉塞処理は「VM1」及び「VM2」という仮想マシン50においてのみ行われ、「VM3」という仮想マシン50では行われない。「VM3」という仮想マシン50については、ゲストOS起動処理(図11)について上述したように、その起動処理時に上述のような対応するパスの閉塞処理が行われることになる。
【0089】
そしてパス管理プログラム21は、図13(C)に示すように、やがて障害が発生した物理HBA13を経由するすべてのパスを閉塞させ終えることによりSP57において肯定結果を得ると、このパス障害対処処理を終了する。
【0090】
(3−5)パス回復処理
さらに図14は、ホストOS40のパス管理プログラム21により実行されるパス回復処理の処理手順を示す。
【0091】
パス管理プログラム21は、障害が発生した物理HBA13に対して、定期的にOS提供コマンドを発行してヘルスチェックを行う(SP60)。
【0092】
そしてパス管理プログラム21は、かかるOS提供コマンドに対するその物理HBA13からの応答に基づいて、図12について上述したパス障害対処処理のSP53と同様の処理により、当該物理HBA13が回復したか否かを判断する(SP61)。
【0093】
パス管理プログラム21は、この判断において否定結果を得ると(SP61;NO)、いずれのパスの回復処理を行うことなく、このパス回復処理を終了する。これに対してパス管理プログラム21は、この判断において肯定結果を得ると(SP61;YES)、第1のパス管理テーブル22を参照して、回復した物理HBA13を経由するパスのうちの一つのパスを選択し(SP62)、そのパスのパスIDと、そのパスと接続された仮想マシン50のマシンIDと、当該仮想マシン50上のそのパスと接続された仮想HBA55(図3)のIDとを第1のパス管理テーブル22から取得する(SP63)。
【0094】
続いてパス管理プログラム21は、第1のパス管理テーブル22における対応するエントリのパス状態欄22G(図4)に格納されたパス状態を「オフライン(Offline)」から「オンライン(Online)」に変更すると共に、SP65において取得したパスID及びマシンIDに基づいて、そのマシンIDの仮想マシン50に対してそのパスIDのパスを回復するよう指示するパス回復指示をSNMPプロトコルのTRAP等を用いて送信する(SP64)。かくしてこのパス回復指示を受信した仮想マシン50のパス冗長化プログラム25は、当該パス回復指示において指定されたパスIDのパスを回復する回復処理(第2のパス管理テーブル26の対応するエントリのパス状態を「オンライン(Online)」に変更する処理)を実行する。
【0095】
続いてパス管理プログラム21は、第1のパス管理テーブル22を参照して、障害から回復した物理HBA13を経由するすべてのパスに関して、SP64〜SP66の処理を実行し終えたか否かを判断する(SP65)。
【0096】
そしてパス管理プログラム21は、この判断において肯定結果を得ると(SP65;YES)、SP62に戻り、この後、SP62において順次他のパスを選択しながら、SP62〜SP65の処理を繰り返す。この結果、図15(A)の場合を例にとると、図15(B)に示すように、「010002」、「020001」、「020002」、「030001」及び「030002」という各パスについてSP64〜SP66の処理がそれぞれ実行されることになる。
【0097】
ただし、図15(A)のように「VM1」及び「VM2」という仮想マシン50が「起動中」であり、「VM3」という仮想マシン50が「未起動」であったものとすると、対応するパスの回復処理は「VM1」及び「VM2」という仮想マシン50においてのみ行われ、「VM3」という仮想マシン50では行われない。「VM3」という仮想マシン50については、ゲストOS起動処理(図11)について上述したように、その起動処理時に上述のような対応するパスの回復処理が行われることになる。
【0098】
そしてパス管理プログラム21は、図13(C)に示すように、やがて障害から回復した物理HBA13を経由するすべてのパスを回復し終えることによりSP67において肯定結果を得ると、このパス回復処理を終了する。
【0099】
次に、仮想マシン50が休止している間に、物理HBAの障害が発生した場合の処理について説明する。ハイバネーション中に障害が発生した場合、ハイバネーション時に中断した処理が、レジューム時に、障害が発生した物理HBAに対して、I/Oを出す可能性がある。以下、(3−6)〜(3−9)にてこれら処理を説明する。
【0100】
(3−6)仮想マシンのハイバネーション処理
図16は、仮想マシン50のゲストOS51により実行される、仮想マシンのハイバネーション処理の処理手順を表す。
【0101】
仮想マシン50は、メモリイメージやレジスタの内容をディスクに書き込み、仮想マシンの処理を休止状態(ハイバネーション)させることができる。仮想マシン50のハイバネーションが実行される際、ゲストOS51は、パス管理プログラム21にハイバネーションを実行する旨を通知する(SP70)。具体的には、ゲストOS51は、対応する仮想マシン50のマシンIDと、その仮想マシン50の状態(「休止状態」)とからなる情報(以下、これを休止状態通知情報と呼ぶ)をパス管理プログラム21に送信する。例えば、「VM1」という仮想マシン50のゲストOS51を休止状態した場合、ゲストOS51は、「マシンID」として「VM1」、仮想マシン50の状態として「休止状態」という情報が格納された休止状態通知情報をパス管理プログラムに送信する。
【0102】
かかる休止状態通知情報を受信したパス管理プログラム21は、この休止状態通知情報に基づいて第1のパス管理テーブル22を更新する。具体的には、パス管理プログラム21は、「VM1」という仮想マシン50のゲストOS51から休止状態通知情報を受信した場合、第一のパス管理テーブル22上の「VM1」という仮想マシン50に対応するすべてのエントリについて、VM状態欄22Bに格納されているその仮想マシン50の状態を「起動中」から「休止状態」に変更する。
【0103】
(3−7)ハイバネーション中のパス障害対処処理
図17は、ホストOS40のパス管理プログラム21により実行される処理である。図12とは、SP80〜SP82が異なる。以下では、(3−4)の処理との相違点を中心に説明する。
【0104】
SP50〜SP55の処理は(3−4)パス障害対処処理で述べたものと同様であるため説明を省略する。
【0105】
次に、パス管理プログラム21は、パス管理テーブル22に、VM状態欄22Bが「休止状態」であり、パス状態欄22Gが「Offline」であるエントリが存在する場合(SP80;YES)、SP81へ進む。例えば、物理HBA「X」に障害が発生した場合、パス管理プログラム21は、パス管理テーブル22の、VM1の仮想HBA「X1」と、HBA「X」の対応をHBA「Y」に変更する(SP81)。そして、CPU10は、物理HBA13と仮想HBA55の割り当てを変更する。
【0106】
その後、仮想HBAと物理HBAの対応を変更したエントリのパス状態欄22Gを「Offline」から「Online」に変更する(SP82)。
【0107】
続いてパス管理プログラム21は、第1のパス管理テーブル22を参照して、障害が発生した物理HBA13を経由するすべてのパスに関して、ステップSP54〜ステップ82の処理を実行し終えたか否かを判断する(SP57)。
【0108】
(3−8)仮想マシンのレジューム処理
図18は、仮想マシン50のゲストOS51により実行される、仮想マシンのレジューム処理の処理手順を表す。レジュームとはハイバネーションによって休止した仮想マシン50を再起動させる処理をいう。
【0109】
仮想マシン50のレジュームが実行される際、ゲストOS51は、ホストOS40上のパス管理プログラム21に対して、レジュームする旨を通知する(SP90)。具体的には、ゲストOS51は、対応する仮想マシン50のマシンIDと、その仮想マシン50の状態(「起動中」)とからなる情報をパス管理プログラム21に送信する。例えば、「VM1」という仮想マシン50のゲストOS51をレジュームした場合、ゲストOS51は、「マシンID」として「VM1」、仮想マシン50の状態として「起動中」という情報が格納された起動通知情報をパス管理プログラム21に送信する。
【0110】
かかる起動通知情報を受信したパス管理プログラム21は、この起動通知情報に基づいて第1のパス管理テーブル22を更新する。具体的には、パス管理プログラム21は、「VM1」という仮想マシン50のゲストOS51から起動通知情報を受信した場合、第一のパス管理テーブル22上の「VM1」という仮想マシン50に対応するすべてのエントリについて、VM状態欄22Bに格納されているその仮想マシン50の状態を「休止状態」から「起動中」に変更する。そして、パス管理プログラム21は、対応を変更したパスのパス状態欄22Gを「Online」から「Offline」に変更する。
【0111】
続いてゲストOS51は、自ゲストOSが構成する仮想マシン50と接続されたすべてのパスについてのパス情報を、ホストOS40のパス管理プログラム21に問い合わせることにより取得する(SP91)。例えば、「VM1」という仮想マシン50の場合、そのゲストOS51は、第1のパス管理テーブル22上でVM欄22Aに「VM1」が格納されている全エントリの情報を取得する。
【0112】
次いでゲストOS51は、SP91において取得したパス情報にパスIDが含まれる1つのパスを選択する。(SP92)。またゲストOS51は、そのパスのパス状態をSP92において取得したパス情報から読み出し(SP93)、そのパスのパス状態が「オフライン(Offline)」であるか否かを判断する(SP94)。
【0113】
ゲストOS51は、この判断において否定結果を得ると(SP94;NO)、SP96に進む。これに対してゲストOS51は、この判断において肯定結果を得ると(SP94;YES)、第2のパス管理テーブル26におけるそのパスに対応するエントリのパス状態欄26Eに格納されているパス状態を「オンライン(Online)」から「オフライン(Offline)」に変更することにより、そのパスを閉塞する(SP95)。
【0114】
続いてゲストOS51は、SP91おいて取得したパス情報に基づいて、そのゲストOS51が構成する仮想マシン50と接続されたすべてのパスについてSP92〜SP95の処理を実行したか否かを判断する(SP96)。
【0115】
そしてゲストOS51は、この判断において否定結果を得るとSP92に戻り、この後、選択するパスを順次他のパスに切り替えながら、SP92〜SP95の処理を繰り返す。
【0116】
そしてゲストOS51は、やがて自ゲストOSが構成する仮想マシン50と接続されたすべてのパスについてSP92〜SP95の処理を実行し終えることによりSP96において肯定結果を得ると、SP97へ進む。
【0117】
そして、ゲストOS51は、パス管理プログラム21に対して、自ゲストOS51のレジューム処理が終了したことを通知する(SP97)。
【0118】
かかるレジューム終了の通知を受信したパス管理プログラム21は、図17のSP81において変更した、物理HBAと仮想HBAの対応をもとに戻す。
【0119】
例えば、パス管理プログラム21は、パス管理テーブル22の、仮想HBA「X1」と対応する物理HBA「Y」を物理HBA「X」に変更する。そして、CPU10は、仮想HBA「X1」に割り当てらていた、物理HBAを「X」から「Y」に変更する。
【0120】
ゲストOS51は、自ゲストOSが構成する仮想マシン50と接続されたすべてのパスについてのパス情報を、ホストOS40のパス管理プログラム21に問い合わせることにより取得する(SP98)。
【0121】
ゲストOS51は、第2のパス管理テーブル26におけるそのパスに対応するエントリの物理HBA26Cに格納されている「Y」から「X」に変更する。
これにより、仮想マシン50をレジューム直後に、ハイバネーション前に中断された処理が実行され、パスの障害に起因するI/O遅延の発生を防止することができる。
【0122】
(3−9)パス閉塞情報の表示
物理計算機2または管理計算機7において、各仮想マシン50のパス閉塞の契機を表示することができる。図19はその一例である。
仮想マシン50のパス冗長化プログラム25が障害を検出し、自仮想マシン50のパスを閉塞した場合、その旨が表示される。図19では、閉塞契機22Hに「検出」が表示される。また、他の仮想マシン50のパス冗長化プログラムが検出し、パス管理プログラム21から通知を受けてパスを閉塞した場合、その旨が表示される。図19では、閉塞契機22Hに「通知」が表示される。また、仮想マシン50の閉塞契機の情報のログをテキストで表示してもよい。
【0123】
(4)本実施の形態の効果
以上のように本実施の形態による仮想計算機システム1では、いずれかの仮想マシン50がパス障害を検出したときに、これをホストOS40のパス管理プログラム21に通知し、パス管理プログラム21がこの通知に基づいて、障害が発生したパスと同じ物理HBA13を経由するパスを閉塞するように各仮想マシン50に通知し、この通知に基づいて各仮想マシン50において対応するパスを閉塞するため、かかる物理HBA13に発生した障害によってすべての仮想マシン50のI/O駆動が抑制されることがなく、物理HBA13の障害が仮想計算機システム1全体に与える影響を低減させることができる。かくするにつき信頼性の高い計算機装置及びパス管理方法を実現できる。
【0124】
(5)他の実施の形態
なお上述の実施の形態においては、複数の仮想マシン50にそれぞれ対応させて設けられ、それぞれ対応する仮想マシン50に接続されたパスのパス状態を管理する複数のゲスト側パス管理部を、物理計算機2全体の動作制御を司るCPU10(図1)とパス冗長化プログラム25とにより構成するようにした場合について述べたが、本発明はこれに限らず、かかるゲスト側パス管理部専用のCPUを設けるようにしても良い。
【0125】
同様に上述の実施の形態においては、複数の仮想マシン50におけるパス状態を一元管理するホスト側パス管理部を、物理計算機2全体の動作制御を司るCPU10とパス冗長化プログラム25とにより構成するようにした場合について述べたが、本発明はこれに限らず、かかるホスト側パス管理部専用のCPUを設けるようにしても良い。
【0126】
さらに上述の実施の形態においては複数の仮想計算機により共有使用される複数の物理I/Oデバイスが物理HBA13である場合について述べたが、本発明はこれに限らず、かかる物理I/Oデバイスが例えばNIC12等の他の物理I/Oデバイスである場合にも本発明を適用することができる。
【図面の簡単な説明】
【0127】
【図1】本実施の形態による仮想計算機システムの全体構成を示すブロック図である。
【図2】図1の物理計算機のメモリが格納する情報を説明するための図である。
【図3】図1の仮想計算機システムの論理構成を示すブロック図である。
【図4】第1のパス管理テーブルを説明するための概念図である。
【図5】第2のパス管理テーブルを説明するための概念図である。
【図6】本実施の形態によるパス管理機能の説明に供するブロック図である。
【図7】パス管理プログラム起動処理の処理手順を示すフローチャートである。
【図8】VM情報の説明に供する概念図である。
【図9】パス管理テーブル作成処理の処理手順を示すフローチャートである。
【図10】HBA情報の説明に供する概念図である。
【図11】ゲストOS起動処理の処理手順を示すフローチャートである。
【図12】パス障害対処処理の処理手順を示すフローチャートである。
【図13】(A)〜(C)は、パス障害対処処理の説明に供する概念図である。
【図14】パス回復処理の処理手順を示すフローチャートである。
【図15】(A)〜(C)は、パス回復処理の説明に供する概念図である。
【図16】仮想マシンのハイバネーション処理の処理手順を示すフローチャートである。
【図17】ハイバネーション中のパス障害対処処理の処理手順を示すフローチャートである。
【図18】仮想マシンのレジューム処理の処理手順を示すフローチャートである。
【図19】第1のパス管理テーブルを説明するための概念図である。
【符号の説明】
【0128】
1……仮想計算機システム、2……物理計算機、4……ストレージ装置、5……スイッチ、6……管理端末、7……管理計算機、10……CPU、11……メモリ、13……HBA、20……仮想化プログラム、21……パス管理プログラム、22……第1のパス管理テーブル、23……パス情報ファイル、25……パス冗長化プログラム、26……第2のパス管理プログラム、40……ホストOS、41,52……仮想CPU、42,53……仮想メモリ、55……仮想HBA、VOL……論理ボリューム。

【特許請求の範囲】
【請求項1】
仮想環境を提供し、記憶領域を有するストレージ装置に接続される、計算機装置において、
それぞれが仮想HBAを有して複数の仮想計算機を提供する仮想計算機提供部と、
前記複数の仮想計算機にそれぞれ対応させて設けられ、それぞれ対応する前記仮想計算機が有する仮想HBAの状態を管理する、複数の第一のパス管理部と、
前記複数の仮想計算機により共有使用され、前記仮想HBAに対応する物理HBAと、
前記複数の仮想計算機が有する仮想HBAと前記複数の物理HBAとの対応関係を管理する第二のパス管理部と、
を備え、
前記第一のパス管理部は、
前記仮想HBAの障害を検出した場合に、当該障害を前記第二のパス管理部に通知し、
前記第二のパス管理部は、
前記障害の通知に応じて、当該障害が検出された、仮想HBAに対応する前記物理HBAを経由する、他の前記仮想HBAを有する各仮想計算機に対応する前記第一のパス管理部に対して、当該他の仮想HBAの閉塞を指示し、
前記第一のパス管理部は、
前記第二のパス管理部から前記仮想HBAの閉塞を指示された場合に、指示された前記仮想HBAを閉塞する
ことを特徴とする計算機装置。
【請求項2】
前記第二のパス管理部は、
前記障害が発生した物理HBAの回復を検出した場合に、
当該回復した前記物理HBAに対応する仮想HBAを有する、各仮想計算機に対応する前記第一のパス管理部に対して、当該物理HBAの回復を指示し、
前記第一のパス管理部は、
前記第二のパス管理部から物理HBAの回復を指示された場合に、指示された前記物理HBAに対応する仮想HBAを回復させる
ことを特徴とする請求項1に記載の計算機装置。
【請求項3】
前記第一のパス管理部は、
対応する前記仮想計算機の起動処理時に、前記第二のパス管理部に、当該仮想計算機の仮想HBAに対応する物理HBAの状態を問い合わせ、得られた当該物理HBAの状態を管理し、
障害が発生した物理HBAに対応する仮想HBAを閉塞する
ことを特徴とする請求項2に記載の計算機装置。
【請求項4】
前記仮想計算機が休止する際、前記第一のパス管理部は前記第二のパス管理部に、休止することを通知し、
前記第二のパス管理部は、
前記障害の通知に応じて、
前記障害が検出された物理HBAと、前記休止した仮想計算機の仮想HBAと、の対応を
前記計算機装置が有する障害が検出されていない物理HBAと、前記休止した仮想計算機の、前記障害が検出された物理HBAに対応していた仮想HBAと、の対応に変更し、
前記休止した仮想計算機が再起動される際、
前記第一のパス管理部は、
前記第二のパス管理部に再起動することを通知し、
前記第二のパス管理部は、
前記再起動の通知に応じて、前記再起動した仮想計算機に対応する、前記第一のパス管理部に対して、前記障害が検出された物理HBAに対応していた仮想HBAの閉塞を指示し、
前記第一のパス管理部は、
前記第二のパス管理部から、前記閉塞の指示をされた場合に、前記指示された仮想HBAを閉塞し、
前記第二のパス管理部は、
前記閉塞された仮想HBAと、前記障害が検出された物理HBAに対応させる
ことを特徴とする請求項1に記載の計算機装置。
【請求項5】
前記計算機装置は、
前記第一のパス管理プログラムが、前記障害を検出し、前記障害が検出された仮想HBAを閉塞した場合、検出して閉塞した旨を表示し、
前記第一のパス管理プログラムが、前記第二のパス管理プログラムから、前記障害を通知され、前記障害が検出された物理HBAに対応する仮想HBAを閉塞した場合、通知を受けて閉塞した旨を表示する
ことを特徴とする請求項1記載の計算機装置。
【請求項6】
仮想環境を提供し、記憶領域を有するストレージ装置に接続される、計算機装置のパス管理方法において、
それぞれが仮想HBAを有して複数の仮想計算機を提供する仮想計算機提供部と、
前記複数の仮想計算機にそれぞれ対応させて設けられ、それぞれ対応する前記仮想計算機が有する仮想HBAの状態を管理する、複数の第一のパス管理部と、
前記複数の仮想計算機により共有使用され、前記仮想HBAに対応する物理HBAと、
前記複数の仮想計算機が有する仮想HBAと前記複数の物理HBAとの対応関係を管理する第二のパス管理部と、
を備え、
前記第一のパス管理部は、
前記仮想HBAの障害を検出した場合に、当該障害を前記第二のパス管理部に通知し、
前記第二のパス管理部は、
前記障害の通知に応じて、当該障害が検出された、仮想HBAに対応する前記物理HBAを経由する、他の前記仮想HBAを有する各仮想計算機に対応する前記第一のパス管理部に対して、当該他の仮想HBAの閉塞を指示し、
前記第一のパス管理部は、
前記第二のパス管理部から前記仮想HBAの閉塞を指示された場合に、指示された前記仮想HBAを閉塞する
ことを特徴とする計算機装置のパス管理方法。
【請求項7】
前記第二のパス管理部は、
前記障害が発生した物理HBAの回復を検出した場合に、
当該回復した前記物理HBAに対応する仮想HBAを有する、各仮想計算機に対応する前記第一のパス管理部に対して、当該物理HBAの回復を指示し、
前記第一のパス管理部は、
前記第二のパス管理部から物理HBAの回復を指示された場合に、指示された前記物理HBAに対応する仮想HBAを回復させる
ことを特徴とする請求項6に記載の計算機装置のパス管理方法。
【請求項8】
前記第一のパス管理部は、
対応する前記仮想計算機の起動処理時に、前記第二のパス管理部に、当該仮想計算機の仮想HBAに対応する物理HBAの状態を問い合わせ、得られた当該物理HBAの状態を管理し、
障害が発生した物理HBAに対応する仮想HBAを閉塞する
ことを特徴とする請求項7に記載の計算機装置のパス管理方法。
【請求項9】
前記仮想計算機が休止する際、前記第一のパス管理部は前記第二のパス管理部に、休止することを通知し、
前記第二のパス管理部は、
前記障害の通知に応じて、
前記障害が検出された物理HBAと、前記休止した仮想計算機の仮想HBAと、の対応を
前記計算機装置が有する障害が検出されていない物理HBAと、前記休止した仮想計算機の、前記障害が検出された物理HBAに対応していた仮想HBAと、の対応に変更し、
前記休止した仮想計算機が再起動される際、
前記第一のパス管理部は、
前記第二のパス管理部に再起動することを通知し、
前記第二のパス管理部は、
前記再起動の通知に応じて、前記再起動した仮想計算機に対応する、前記第一のパス管理部に対して、前記障害が検出された物理HBAに対応していた仮想HBAの閉塞を指示し、
前記第一のパス管理部は、
前記第二のパス管理部から、前記閉塞の指示をされた場合に、前記指示された仮想HBAを閉塞し、
前記第二のパス管理部は、
前記閉塞された仮想HBAと、前記障害が検出された物理HBAに対応させる
ことを特徴とする請求項6に記載の計算機装置のパス管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate