(57)【要約】【課題】サーバによる処理を継続させながら、サーバが使用するI/Oインタフェイスを変更する。【解決手段】本発明の計算機システムは、サーバに対応付けられたI/Oインタフェイスと、サーバに対応付けられる他のI/Oインタフェイスと、サーバ、I/Oインタフェイス及び他のI/Oインタフェイスと接続し、I/Oバッファを有し、サーバに対応付けられたI/Oインタフェイスの、他のI/Oインタフェイスへの変更開始の要求に応答して、サーバからのI/Oインタフェイスへのアクセス要求をI/Oバッファに格納するI/Oマッピング部、サーバへ他のI/Oインタフェイスを対応付けるI/O変更部、及びI/O変更部による対応付けの完了に応答して、I/Oバッファに格納されているアクセス要求を他のI/Oインタフェイスへのアクセス要求に変換し、変換したアクセス要求を実行するI/O同期部を有する。【選択図】図１
2010003061.tif 000002
【特許請求の範囲】
【請求項１】
サーバに対応付けられたI/Oインタフェイスと、前記サーバに対応付けられる他のI/Oインタフェイスと、前記サーバ、前記I/Oインタフェイス及び前記他のI/Oインタフェイスと接続し、I/Oバッファを有し、前記サーバに対応付けられた前記I/Oインタフェイスの、前記他のI/Oインタフェイスへの変更開始の要求に応答して、前記サーバからの前記I/Oインタフェイスへのアクセス要求を前記I/Oバッファに格納するI/Oマッピング部、前記サーバへ前記他のI/Oインタフェイスを対応付けるI/O変更部、及び前記I/O変更部による前記対応付けの完了に応答して、前記I/Oバッファに格納されている前記アクセス要求を前記他のI/Oインタフェイスへのアクセス要求に変換し、前記変換したアクセス要求を実行するI/O同期部を有するI/O管理部とを設けたことを特徴とする計算機システム。
【請求項２】
前記I/O同期部は、前記I/O変更部による前記サーバへの前記他のI/Oインタフェイスの対応付けが不可のとき、前記I/Oバッファに格納されている前記I/Oインタフェイスへの前記アクセス要求を実行することを特徴とする請求項１記載の計算機システム。
【請求項３】
前記I/Oインタフェイスと前記他のI/Oインタフェイスとは、前記仮想サーバから同種のターゲット機器にアクセスするI/Oインタフェイスであることを特徴とする請求項２記載の計算機システム。
【請求項４】
前記サーバは仮想サーバであり、前記仮想サーバの実行を管理する仮想化部をさらに設けたことを特徴とする請求項３記載の計算機システム。
【請求項５】
前記I/O管理部を前記仮想化部に含んで構成したことを特徴とする請求項４記載の計算機システム。
【請求項６】
前記I/O変更部は、前記I/Oインタフェイス及び前記他のI/Oインタフェイスがネットワークインタフェイスであるとき、前記I/Oインタフェイスが有するＩＤを前記他のI/OインタフェイスのＩＤとすることを特徴とする請求項３記載の計算機システム。
【請求項７】
前記ＩＤは、WWN及びMACアドレスのいずれか一方であることを特徴とする請求項６記載の計算機システム。
【請求項８】
前記サーバ、前記I/Oインタフェイス及び前記他のI/Oインタフェイスの識別する情報をパラメータとして、前記変更開始の要求を発行する管理サーバをさらに設けたことを特徴とする請求項２記載の計算機システム。
【請求項９】
前記管理サーバは、ユーザからの指示、前記I/Oインタフェイスの高負荷の検知、及び前記I/Oインタフェイスの障害又は前記障害の兆しの検知のいずれかに基づいて、前記変更開始の要求を発行することを特徴とする請求項８記載の計算機システム。
【請求項１０】
サーバと接続し、I/Oバッファを有し、前記サーバに対応付けられたI/Oインタフェイスの、他のI/Oインタフェイスへの変更開始の要求に応答して、前記サーバからの前記I/Oインタフェイスへのアクセス要求を前記I/Oバッファに格納するI/Oマッピング部と、前記サーバへ前記他のI/Oインタフェイスを対応付けるI/O変更部と、前記I/O変更部による対応付けの完了に応答して、前記I/Oバッファに格納されている前記アクセス要求を前記他のI/Oインタフェイスへのアクセス要求に変換し、前記変換したアクセス要求を実行するI/O同期部とを有することを特徴とするI/O管理装置。
【請求項１１】
前記I/O同期部は、前記I/O変更部による前記サーバへの前記他のI/Oインタフェイスの対応付けが不可のとき、前記I/Oバッファに格納されている前記I/Oインタフェイスへの前記アクセス要求を実行することを特徴とする請求項10記載のI/O管理装置。
【請求項１２】
前記I/Oインタフェイスと前記他のI/Oインタフェイスとは、前記仮想サーバから同種のターゲット機器にアクセスするI/Oインタフェイスであることを特徴とする請求項11記載のI/O管理装置。
【請求項１３】
前記I/O変更部は、前記I/Oインタフェイス及び前記他のI/Oインタフェイスがネットワークインタフェイスであるとき、前記I/Oインタフェイスが有するＩＤを前記他のI/OインタフェイスのＩＤとすることを特徴とする請求項12記載のI/O管理装置。
【請求項１４】
前記ＩＤは、WWN及びMACアドレスのいずれか一方であることを特徴とする請求項13記載のI/O管理装置。
【請求項１５】
外部に接続した管理サーバから、前記サーバ、前記I/Oインタフェイス及び前記他のI/Oインタフェイスの識別する情報をパラメータとして、前記変更開始の要求を受け付けることを特徴とする請求項11記載のI/O管理装置。
【請求項１６】
サーバに対応付けられたI/Oインタフェイスから他のI/Oインタフェイスへ対応付けを変更する、I/Oバッファを有するI/O管理部による計算機システムのI/O構成変更方法であって、前記サーバに対応付けられた前記I/Oインタフェイスの、前記他のI/Oインタフェイスへの変更開始の要求に応答して、前記サーバからの前記I/Oインタフェイスへのアクセス要求を前記I/Oバッファに格納し、前記サーバへ前記他のI/Oインタフェイスを対応付け、前記対応付けの完了に応答して、前記I/Oバッファに格納されている前記アクセス要求を前記他のI/Oインタフェイスへのアクセス要求に変換し、前記変換したアクセス要求を実行することを特徴とするI/O構成変更方法。
【請求項１７】
前記サーバへの前記他のI/Oインタフェイスの対応付けが不可のとき、前記I/Oバッファに格納されている前記I/Oインタフェイスへの前記アクセス要求を実行することを特徴とする請求項16記載のI/O構成変更方法。
【請求項１８】
前記サーバは仮想サーバであり、前記I/O管理部は、前記仮想サーバからの前記I/Oインタフェイス及び前記他のI/Oインタフェイスへの前記アクセス要求の実行を管理することを特徴とする請求項17記載のI/O構成変更方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに係り、特にサーバとI/Oインタフェイスとのマッピング(対応関係)が変更可能な計算機システムとマッピングを変更するI/O構成変更方法に関する。
【背景技術】
【０００２】
計算機システムを構成するサーバには、サーバから利用可能なI/Oインタフェイス(PCIデバイス等)が固定的に搭載されている。しかし、計算機システムを柔軟に運用するには、サーバとI/Oインタフェイスとの割り当てを柔軟に変更できることが望ましい。
【０００３】
これを実現する従来技術として、サーバ仮想化技術がある。サーバ仮想化技術により、サーバ上の仮想サーバと、そのサーバに搭載の複数のI/Oインタフェイスのうち、どのI/Oインタフェイスを仮想サーバと対応付けるかを設定できる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記の方法では、仮想サーバの実行中にI/Oインタフェイスを変更すると、I/Oインタフェイスを使用する処理がエラーなり、仮想サーバの実行が中断される。そこで仮想サーバに割当てたI/Oインタフェイスを他のI/Oインタフェイスに変更する場合には、仮想サーバを停止し、I/Oインタフェイスを変更した後に再起動させる必要がある。仮想サーバの再起動は、継続的な処理を最初から再実行することになり、計算機システムの可用性が低下するという問題がある。
【０００５】
本発明が解決しようとする課題は、サーバを再起動させることなく、すなわちサーバによる処理を継続させながら、サーバが使用するI/Oインタフェイスを変更し、計算機システムで稼動する業務への影響を小さくすることである。
【課題を解決するための手段】
【０００６】
本発明の計算機システムは、サーバに対応付けられたI/Oインタフェイスと、サーバに対応付けられる他のI/Oインタフェイスと、サーバ、I/Oインタフェイス及び他のI/Oインタフェイスと接続し、I/Oバッファを有し、サーバに対応付けられたI/Oインタフェイスの、他のI/Oインタフェイスへの変更開始の要求に応答して、サーバからのI/Oインタフェイスへのアクセス要求をI/Oバッファに格納するI/Oマッピング部、サーバへ他のI/Oインタフェイスを対応付けるI/O変更部、及びI/O変更部による対応付けの完了に応答して、I/Oバッファに格納されているアクセス要求を他のI/Oインタフェイスへのアクセス要求に変換し、変換したアクセス要求を実行するI/O同期部を有する。
【０００７】
本発明の望ましい他の態様は、I/O同期部は、I/O変更部によるサーバへの他のI/Oインタフェイスの対応付けが不可のとき、I/Oバッファに格納されているI/Oインタフェイスへのアクセス要求を実行する。
【０００８】
本発明のさらに望ましい他の態様は、サーバは仮想サーバであり、仮想サーバの実行を管理する仮想化部をさらに設ける。
【０００９】
本発明のさらに望ましい他の態様は、I/O管理部を仮想化部に含んで構成する。
【００１０】
本発明のさらに望ましい他の態様は、サーバ、I/Oインタフェイス及び他のI/Oインタフェイスの識別する情報をパラメータとして、変更開始の要求を発行する管理サーバをさらに設ける。
【００１１】
本発明の他の態様は、サーバと接続し、I/Oバッファを有し、サーバに対応付けられたI/Oインタフェイスの、他のI/Oインタフェイスへの変更開始の要求に応答して、サーバからのI/Oインタフェイスへのアクセス要求をI/Oバッファに格納するI/Oマッピング部と、サーバへ他のI/Oインタフェイスを対応付けるI/O変更部と、I/O変更部による対応付けの完了に応答して、I/Oバッファに格納されているアクセス要求を他のI/Oインタフェイスへのアクセス要求に変換し、変換したアクセス要求を実行するI/O同期部とを有するI/O管理装置である。
【００１２】
本発明のさらに他の態様は、サーバに対応付けられたI/Oインタフェイスから他のI/Oインタフェイスへ対応付けを変更する、I/Oバッファを有するI/O管理部による計算機システムのI/O構成変更方法であって、サーバに対応付けられたI/Oインタフェイスの、他のI/Oインタフェイスへの変更開始の要求に応答して、サーバからのI/Oインタフェイスへのアクセス要求をI/Oバッファに格納し、サーバへ他のI/Oインタフェイスを対応付け、対応付けの完了に応答して、I/Oバッファに格納されているアクセス要求を他のI/Oインタフェイスへのアクセス要求に変換し、変換したアクセス要求を実行する。
【発明の効果】
【００１３】
本発明によれば、サーバによる処理を継続させながら、サーバが使用するI/Oインタフェイスを変更できる。
【発明を実施するための最良の形態】
【００１４】
以下に、本発明の実施例について記載する。
【実施例１】
【００１５】
図１は、実施例１の計算機システムの構成を示している。本実施例の計算機システムは管理サーバ２０、サーバ１０およびそれらを接続するネットワーク２１を有する。サーバ１０は、仮想化部１５と仮想サーバ１６をメモリ１１に保持する。仮想化部１５と仮想サーバ１６は、それぞれプログラムと、そのプログラムの実行に必要なデータとから成る。ここで、仮想化部１５は、サーバ上で仮想サーバ１６の実行を管理するハイパーバイザ（仮想モニターなどとも呼ばれる。）であり、仮想サーバ１６は各々がＯＳを持つ。
【００１６】
なお、本実施例では仮想化部１５はメモリ１１に格納され、CPU１２により実行されるプログラムとして説明するが、サーバ１０に搭載するハードウェアやファームウェア、又はそれらの組み合わせにより実装しても良い。また、仮想サーバ１６上でアプリケーションプログラム(業務プログラム)を実行する。
【００１７】
サーバ１０は、メモリ１１上のプログラムを実行するCPU１２と、ハードディスクやフラッシュメモリなどの補助記憶装置１３、およびI/Oインタフェイス１４を有する。図１では、補助記憶装置１３をサーバ１０に内蔵するように図示しているが、RAID（Redundant Arrays of Inexpensive Disks）システムのような記憶装置システムをI/Oインタフェイス１４を介して、サーバ１０の外部に接続しても良い。I/Oインタフェイス１４は、たとえばNIC(Network Interface Card)や、HBA（Host Bus Adaptor）などであり、その接続先はネットワークや、RAIDシステムのような外部記憶装置である。本実施例では、I/Oインタフェイス１４の具体例としてNICやHBAなどのPCIデバイスを取り上げて説明する。I/Oインタフェイス１４には、それぞれ記憶装置２２、ネットワーク２３、記憶装置２４などが接続する。図示を簡略化してあるが、あるI/Oインタフェイス１４と他のI/Oインタフェイス１４とが、たとえば同じ記憶装置２２やネットワーク２３に接続されていることが一般的である。
【００１８】
仮想化部１５は、仮想サーバ１６とI/Oインタフェイス１４とのマッピング(対応関係)を管理するI/Oマッピング部３０、I/Oインタフェイスの変更時に変更元と変更先のI/Oインタフェイス１４の状態を同期させるI/O同期部３１、及び仮想サーバ１６とI/Oインタフェイス１４とのマッピングを変更するI/O変更部３２の各処理部を有する。ここで、I/O同期または同期とは、変更元と変更先のI/Oインタフェイス１４の動作を、新たなリクエストの実行を保留することにより一時的に停止させ、変更元と変更先のI/Oインタフェイス１４を同等の動作状態(一時的停止)に維持することである。このI/Oインタフェイス１４の一時的な停止は、仮想サーバ１６から見ると、リクエストの実行を保留されるので停止に見えない。またI/O変更または変更とは、仮想サーバ１６から見て、同じターゲット機器（通信相手や記憶装置のボリューム）にアクセスするためのI/Oインタフェイス１４を変更元から変更先に切り替えることである。
【００１９】
仮想化部１５はさらに、仮想サーバ１６にマッピング可能な(対応付け可能な)I/Oインタフェイス１４の一覧情報を保持するI/Oインタフェイステーブル３３、仮想サーバ１６とI/Oインタフェイス１４とのマッピング関係を保持するI/Oマッピングテーブル３４、及び後述するI/O同期中の構成を保持するI/O同期テーブル３５の各テーブルを有する。
【００２０】
仮想化部１５はさらに、I/O同期中の、仮想サーバ１６からI/Oインタフェイス１４へのリクエスト（I/Oアクセス要求）およびリクエストに対する応答を保持するI/Oバッファ３６、および管理サーバ２０との通信のための管理I/F（３７）を有する。管理I/F（３７）は、仮想化部１５が管理サーバ２０との間でネットワーク２１を介して通信するための通信インタフェイスである。  図２は、I/Oインタフェイステーブル３３の例を示している。カラム３３０はI/Oインタフェイス１４の識別子を示す。カラム３３１は、I/Oインタフェイス１４のデバイス識別子を示す。デバイス識別子は、PCIデバイスの場合、PCIデバイスのバス番号(Ｂ)、デバイス番号（Ｄ）、及び機能番号（Ｆ）を含み、図ではバス番号xを「Bx」、デバイス番号yを「Dy」、機能番号zを「Fz」として示している。カラム３３２は、I/Oインタフェイス１４のメモリマップドI/Oアドレス（MMIO：Memory Mapped I/O Address）を示している。図ではMMIOを１６進数で記述している。カラム３３３は、I/Oインタフェイス１４の割り込みライン（INT）を示している。ここでは、MMIOによる入出力インタフェイスについて説明したが、Read／Writeコマンドや送受信コマンドを用いるI/Oインタフェイス１４であっても、仮想サーバ１６から見て仮想的な識別子を用いてアクセスできればよい。
【００２１】
図３に、I/Oマッピングテーブル３４に保持する仮想サーバ１６とI/Oインタフェイス１４とのマッピングの例を示す。図３の例では、仮想サーバ１（４１）とI/Oインタフェイス１（５１）とがマッピングされていることを示し、I/Oマッピングテーブル３４及びI/Oインタフェイステーブル３３を用いたアクセス変換（仮想MMIOなどを物理MMIOなどに変換）を伴って、仮想サーバ１（４１）からI/Oインタフェイス１（５１）へアクセスする。また、仮想サーバ２（４２）と仮想サーバ３（４３）とが、I/Oインタフェイス３（５３）を共有していることを示している。
【００２２】
このようにI/Oインタフェイス３（５３）を共有している場合は、仮想サーバ２（４２）と仮想サーバ３（４３）とからI/Oインタフェイス３（５３）へのアクセスは、前述のアクセス変換に加えて、仮想化部１５においてアクセスのスケジューリングを伴う。複数の仮想サーバがI/Oインタフェイスを共有している場合のI/O変更は、前述のように仮想サーバから見たI/Oインタフェイスの変更であるので、次の例のようになる。図３の構成において、仮想サーバ２(４２)から見たI/Oインタフェイス３（５３）を、たとえばI/Oインタフェイス１（５１）へ変更すると、破線で示すようにI/Oインタフェイス１（５１）は仮想サーバ１(４１)と仮想サーバ２(４２)とにより共有され、I/Oインタフェイス３（５３）は仮想サーバ３（４３）に専有されることになる。したがって、障害などの要因に基づいて、I/Oインタフェイス３（５３）の使用を停止する場合は、仮想サーバ２(４２)に対応するI/O変更と仮想サーバ３（４３）に対応するI/O変更とが必要となり、I/O変更の処理を繰り返すことになる。
【００２３】
他の例は図示内容から明らかであるので、説明を省略する。ここでI/Oインタフェイスの単位は、I/Oインタフェイス(装置、ボード)１４に複数のポート等を備える場合の各ポートのような最小の機能単位である。たとえば、PCIデバイスの機能番号単位などである。
【００２４】
図４は、図３に例示した仮想サーバ１６（図３では４１〜４５）とI/Oインタフェイス１４（図３では５１〜５５）とのマッピングの例を、I/Oマッピングテーブル３４として示している。カラム３４０は仮想サーバ１６の識別子を示す。カラム３４１は、仮想サーバ１６にマッピングされたI/Oインタフェイス１４の識別子を示している。カラム３４２は、カラム３４０に示す仮想サーバ１６が認識する、カラム３４１に示すI/Oインタフェイス１４に対して付与される仮想的なデバイス識別子を示している。カラム３４３は、カラム３４０に示す仮想サーバ１６が認識する、カラム３４１に示すI/Oインタフェイス１４に対して付与される仮想的なMMIOを示している。カラム３４４は、カラム３４０に示す仮想サーバ１６が認識する、カラム３４１に示すI/Oインタフェイス１４に対して付与される仮想的なINT(割り込みライン)を示している。換言すると、カラム３４０の仮想サーバ１６から見ると、カラム３４１のI/Oインタフェイス１４の、識別子がカラム３４２の仮想デバイス識別子に、メモリマップドI/Oアドレス（MMIO）がカラム３４３の仮想MMIOに、割り込みライン（INT）がカラム３４４の仮想INTに見える。
【００２５】
図５に、I/O同期テーブル３５の例を示す。I/O同期テーブル３５は、I/Oインタフェイス１４を変更するために同期中の、仮想サーバ１６、変更元のI/Oインタフェイス１４及び変更先のI/Oインタフェイス１４の対応関係を示す。具体的には、I/O同期テーブル３５のカラム３５０は、I/Oインタフェイス１４を変更する仮想サーバ１６の識別子を示す。カラム３５１は、カラム３５０に示す仮想サーバ１６にマッピングされているI/Oインタフェイス１４のうち、I/O変更の変更元となるI/Oインタフェイス１４の識別子である。カラム３５２は、I/O変更において、カラム３５１に示したI/Oインタフェイス１４の変更先となるI/Oインタフェイス１４の識別子である。図５のI/O同期テーブル３５には１行分を示しているが、I/Oインタフェイス１４を変更するために同期中の仮想サーバ１６とI/Oインタフェイス１４との対応関係の数に応じてテーブルの行数は増減する。I/O同期テーブル３５に複数行ある場合は、複数の仮想サーバ１６に関するI/O同期の処理、又は一つの仮想サーバ１６に関する複数のI/O同期の処理が並列実行されている。
【００２６】
図６に、Ｉ/Ｏバッファ３６の例を示す。Ｉ/Ｏバッファ３６は、I/O同期中に仮想サーバ１６からのリクエスト（Ｉ/Ｏアクセス要求）または応答を一時的に保留するために用いられる。カラム３６０は、Ｉ/Ｏバッファ３６に格納された順番を示す。カラム３６１は、格納されたリクエストまたは応答に係る仮想サーバ１６の識別子を示す。カラム３６２は、リクエストまたは応答に係るI/Oインタフェイス１４の識別子を示す。カラム３６３は、リクエストまたは応答のデータそのものを保持する。
【００２７】
図７に、管理サーバ２０の構成を示す。管理サーバ２０は、構成管理プログラム７０とテーブル群７１を保持するメモリ６０、メモリ６０内のプログラムを実行するCPU６１、ネットワーク２１と接続し、サーバ１０の管理I/F３７を介して仮想化部１５と通信するためのNIC６２、及びI/Oインタフェイス６３を有する。I/Oインタフェイス６３は、マウスやキーボードなどの入力装置６４、ディスプレイなどの表示装置６５を接続し、管理サーバ２０とユーザとの間で情報を入出力する。図示を省略しているが、I/Oインタフェイス６３は、USBメディアなどの記憶装置との接続に用いても良い。
【００２８】
構成管理プログラム７０は、サーバ１０やそのI/Oインタフェイス１４の構成情報等を取得する取得部７２、ユーザにUI(User Interface)を提供するUI部７３、I/O変更の可否等を確認する確認部７４、及びI/O変更を実行する変更部７５の各処理部を有する。管理サーバ２０は、テーブル群７１として、I/Oインタフェイス１４とその接続先(図１の記憶装置２２など)との構成を保持するI/O構成テーブル７６、及び仮想サーバ１６とI/Oインタフェイス１４とのマッピングを管理するマッピング管理テーブル７７を有する。
【００２９】
図８に、I/O構成テーブル７６の例を示す。カラム７６０はI/Oインタフェイス１４の識別子である。カラム７６１はカラム７６０に示すI/Oインタフェイス１４の種別を示す。たとえば、I/Oインタフェイス１４がNICであれば「NIC」、ファイバチャネル（FC）のＨＢＡであれば、「FC-HBA」などである。カラム７６２は、カラム７６０に示すI/Oインタフェイス１４のIDである。ここでIDは、たとえばWWN（World Wide Name）やMACアドレスなどである。カラム７６３は、カラム７６０のI/Oインタフェイス１４の接続先(図１の記憶装置２２など)を示す。ここで接続先は、I/Oインタフェイス１４の接続先となっているネットワーク機器や外部ストレージ装置を特定可能な情報であり、たとえば外部ストレージ装置に接続されたストレージエリアネットワーク（SAN）、および外部ストレージのディスク、ネットワーク（VLAN）などである。たとえば図では、I/Oインタフェイス１４の「I/O 1」が、外部ストレージ装置に接続されたストレージエリアネットワーク「SAN1」に接続され、外部ストレージ装置の論理ディスク「LU1」にアクセス可能であることを示している。
【００３０】
図９に、マッピング管理テーブル７７の例を示す。カラム７７０は仮想サーバ１６の識別子を示す。カラム７７１は、カラム７７０に示す仮想サーバ１６にマッピングされているI/Oインタフェイス１４を示す。このマッピング管理テーブル７７に格納されている情報は、仮想化部１５のI/Oマッピングテーブル３４のカラム３４０及びカラム３４１の情報と同じである。これらの情報は、ネットワーク２１を介した通信により、同期が取られている(内容が同じになっている)。
【００３１】
図１０に、仮想サーバ１６からのI/Oアクセス要求に対応するI/Oマッピング部３０の処理フロー図を示す。仮想サーバ１６がI/Oアクセス要求を発行すると、I/Oマッピング部３０がI/Oアクセス変換する（ステップ３００）。仮想サーバからI/Oアクセス要求には、リード／ライト種別、メモリ１１上の仮想サーバ１６に割当てられている領域内の所定領域（リード要求の場合は、リードデータを格納する領域であり、ライト要求の場合は、ライトするデータを格納している領域）の先頭アドレスとリード／ライトデータのサイズ又は所定領域のサイズ、仮想デバイス識別子（バス番号、デバイス番号、機能番号）、仮想MMIOを含んでいる。リード／ライトデータを格納する所定領域の先頭アドレスも、仮想サーバ１６が認識しているアドレス空間がサーバ１０のアドレス空間と異なり、アドレス変換を必要とするが、ここではメモリ１１に関するアドレス変換に関しては省略し、I/Oアクセス変換としてI/Oインタフェイス使用のための変換に関して説明する。
【００３２】
I/Oアクセス変換は、I/Oアクセス要求に含まれる仮想デバイス識別子に一致する、図４のI/Oマッピングテーブル３４の仮想デバイス識別子３４２を検索し、対応するI/Oインタフェイス１４の識別子３４１を求める。そのI/Oインタフェイス１４の識別子に一致する図２のI/Oインタフェイステーブル３３の識別子３３０を検索し、対応するI/Oインタフェイス１４の仮想デバイス識別子（バス番号、デバイス番号、機能番号）３４２、仮想MMIO３４３、仮想INT３４４に対応するデバイス識別子（バス番号、デバイス番号、機能番号）３３１、MMIO３３２、INT３３３を取得する。
【００３３】
仮想サーバ１６からのI/Oアクセス要求によってアクセスするI/Oインタフェイス１４が、I/O同期中か否かを判定する（ステップ３０１）。I/O同期に関しては後述するが、I/Oアクセス要求を発行した仮想サーバ１６の識別子がI/O同期テーブル３５にあり、仮想サーバ１６の識別子があるI/O同期テーブル３５の行（変更元または変更先インタフェイス３５１，３５２）にアクセス対象のI/Oインタフェイス１４の識別子が存在するとき、I/O同期中であると判定する。I/O同期中でなければ、変換されたデバイス識別子（バス番号、デバイス番号、機能番号）、MMIO、INT を用いてI/Oインタフェイス１４へアクセス(通常アクセス)する(ステップ３０１)。I/O同期中であれば、I/Oバッファ３６にI/Oアクセス要求を格納する（ステップ３０３）。通常アクセス又はI/Oバッファ３６へのI/Oアクセス要求の格納後に、I/Oマッピング部３０は仮想サーバ１６に応答する（ステップ３０４）。応答の内容は、通常アクセス後はその成功／失敗、I/Oバッファ３２０へのI/Oアクセス要求の格納後はI/Oバッファ３２０に格納したことを示す。
【００３４】
後の説明を分かり易くするために、図１１に示す通常アクセス(図１０のステップ３０２)の概略シーケンスについて説明する。図１１(a)にI/Oアクセス要求がリード要求の場合、図１１(ｂ)に接続先からのトリガーに対応してリード要求を発行する場合、及び図１１(ｃ)にI/Oアクセス要求がライト要求の場合の処理シーケンスの概略を示す。なお、仮想サーバ１６からのI/Oアクセス要求は、前述のようにアクセス変換を必要とするが、ここではアクセス変換を省略して説明する。
【００３５】
図１１(a)に示すI/Oアクセス要求が（1）リード要求の場合、I/Oインタフェイス１４は接続先(たとえば、ディスクボリューム２２)へ（2）データリード要求を発行する。データリード要求に応答した接続先からの（3）データは、I/Oインタフェイス１４内の入力バッファ１４０に格納される。この入力バッファ１４０に格納されたデータは、入力バッファ１４０のアドレス（MMIO）にアクセスすることにより（4）読み出され、仮想サーバ１６の所定領域に転送される。仮想サーバ１６の所定アドレスにデータが格納された後、I/Oインタフェイス１４からの（5）割込みにより、仮想サーバ１６は一連のリードシーケンスの終了を認識する。
【００３６】
一般にI/Oインタフェイス１４と仮想サーバ１６の所定領域とのデータ転送には、DMA(Direct Memory Access)転送が用いられ、その制御にDMAコントローラ(図示略)が用いられる。この場合、仮想サーバ１６はリード要求をDMAコントローラに発行すると、応答までのタイムアウト時間を設定したタイマからの割り込み又はDMAコントローラからの終了割り込み（上述の（5）割込みが相当）が入るまで、このリード要求に対するデータを用いない他のプロセス(タスク)を実行する。他のプロセスからも他のアクセス命令が発行される可能性があるので、仮想サーバ１６（又はサーバ１０）としては多重にI/Oアクセスすることになる。また、入力バッファ１４０から仮想サーバ１４０の所定領域へのデータ転送は、バッファ１４０にデータが格納されたことを契機にI/Oインタフェイス１４から出力される信号に応答してDMAコントローラによって実行され、前述のI/Oインタフェイス１４からの仮想サーバ１６への割り込みの実体はDMAコントローラからの割り込みになる。入力バッファ１４０のサイズはI/Oインタフェイス１４の種別によって異なる。
【００３７】
上記とは異なり、仮想サーバ１６が主導的に制御できない場合がある。I/Oインタフェイス１４がNICのような通信インタフェイスの場合である。このような場合を図１１(ｂ)に示す接続先からのトリガーに対応してリード要求を発行する場合として説明する。通信インタフェイスは（1）受信を検知（パケットの宛先アドレスが自アドレスを示していることの検知など）すると、仮想サーバ１６に（3）受信割り込みを発行し、この受信割り込みに応答して仮想サーバ１６は（DMAコントローラを介して）I/Oインタフェイス１４に（4）リード要求を発行する。一般にリード要求が発行された時点には、入力バッファ１４０に受信データが格納され始めている。この入力バッファ１４０に格納された受信データの、（5）仮想サーバ１６の所定領域への転送、I/Oインタフェイス１４からの（６）割込みに関しては、図１１(a)の場合と同様である。接続先がネットワーク２３であり、受信の場合はパケットの送信元からのトリガーで動作し、受信側は主導的に制御できないので（制御する場合は、受信の可否を知らせるなどの処理が必要となる。I/Oインタフェイス１４から動作不可（インオペラブル）やビジーを送信側に通知できる場合は、それらによって通知する。）、後述するI/O同期が取れない場合（受信処理の継続）が生じる。そこで図１１(ｂ)によるシーケンスの場合は、（4）リード要求を発行せずに、入力バッファ１４０をオーバーフローさせ、受信パケットを廃棄する。
【００３８】
プロトコル(通信規約)によっては、常に仮想サーバ１６が受信データを格納する所定領域を確保しておき、（3）受信割り込みがない（実際は受信割り込みが発生するが、DMAコントローラが動作を開始し、仮想サーバ１６には受信割り込みが発生しない）場合がある。このようなプロトコルにおいては、受信の完了（（６）割込み）に対応して肯定／否定応答をパケットの送信元へ返送する。したがって、所定領域に格納されたデータを廃棄し、応答しないようにすれば、結果として受信パケットを廃棄したことになる。換言すると、受信動作が実行されていないのと同様になる。
【００３９】
以上のようにすることにより、主導的に制御できない場合はリード動作が無かったものと見なせるので、このようなI/Oアクセス要求は、後述するI/O同期中にI/Oバッファ３６へ格納されないことになる。
【００４０】
図１１(c)を用いて、I/Oアクセス要求がライト要求の場合の処理シーケンスを説明する。仮想サーバ１６は、ライトするデータをメモリ１１上の所定領域へ格納し、（1）ライト要求を、DMAコントローラを介して、I/Oインタフェイス１４へ発行する。DMAコントローラは、仮想サーバ１４０の所定領域から（2）データをI/Oインタフェイス１３４の出力バッファ１４１へ転送する。出力バッファ１４１のアドレス（MMIO）は一般に入力バッファ１４０と異なるが、アドレス指定の方法はリードの場合と同様である。出力バッファ１４１へデータが格納されると、I/Oインタフェイス１４は、仮想サーバ１６へ（3）ライト完了(終了割り込み)を出力する。I/Oインタフェイス１４は、出力バッファ１４１の（4）データを接続先に向けて出力する。図示は、（4）データの接続先への出力より前に、仮想サーバ１４０へ（3）ライト完了(終了割り込み)を出力しているが、データの接続先への出力完了後に、ライト完了(終了割り込み)を出力するI/Oインタフェイス１４もある。ライト要求を発行してからライト完了(終了割り込み)を受けるまでの、仮想サーバ１６の動作はリードの場合と同様である。また、DMAコントローラも、データの転送方向が逆になることを除いて、リードの場合と同様に動作する。
【００４１】
図１２に、I/O同期部３１の処理フロー図を示す。管理サーバ２０からのI/O変更開始要求を受け付ける（ステップ３１０）。I/O変更開始要求には、I/O構成を変更する仮想サーバ１６の識別子、変更元のI/Oインタフェイス１４の識別子、及びそれに対応する変更先のI/Oインタフェイス１４の識別子がパラメータとして含まれる。変更先のI/Oインタフェイス１４が通信インタフェイスであり、そのネットワークIDを更新する場合には、更新するネットワークID情報もパラメータに含まれる。I/O同期テーブル３５に、I/O変更開始要求のパラメータである仮想サーバ１６の識別子、変更元のI/Oインタフェイス１４の識別子と、及びそれに対応する変更先のI/Oインタフェイス１４の識別子を登録する（ステップ３１１）。I/Oインタフェイス１４に対してデバイスバッファ（図１１の入力バッファ１４０、出力バッファ１４１）の開放を指示する（ステップ３１２）。この指示に従って、I/Oインタフェイス１４はデバイスバッファを開放する。このデバイスバッファの開放は、デバイスバッファにデータを残している入出力処理（通信インタフェイスの場合は送受信処理）を強制的に終了させることになる。これは、入出力処理の継続よりもI/O変更処理の方に高い優先度を与える考え方に基づいている。逆に強制的に終了させることがシステムの運用上不都合である場合、又はデバイスバッファの開放の指示を受けられないI/Oインタフェイス１４の場合は、デバイスバッファの開放のために予め定めた時間を待つなどにより、デバイスバッファが開放されるまで待てばよい。また、I/Oインタフェイス１４にデバイスバッファが存在しない場合には、デバイスバッファの開放の指示は不要である。
【００４２】
I/O同期部３１がI/O同期を開始したことを管理サーバ２０に通知する(ステップ３１３)。管理サーバ２０はI/O同期の開始の通知を受信し、後述する処理の後、I/O変更を要求する。I/O変更の要求を受けた、I/O同期部３１はI/O変更部３２を呼び出す。I/O変更部３２による処理は後述する。
【００４３】
I/O変更部３２の処理中に仮想サーバ１６からI/Oアクセス要求が発行されると、I/Oマッピング部３０によりI/Oアクセス要求はI/Oバッファ３６に格納されると前述した。システムによっては、I/O同期中のI/Oインタフェイス１４への仮想サーバ１６からI/Oアクセス要求の頻度（又はI/O変更部３２の処理中のI/Oアクセス要求の数）を予測できない。すなわち、I/O変更部３２の処理中にI/Oバッファ３６がオーバーフローする可能性がある。このような場合が想定されるならば、I/O変更部３２の処理開始前にI/O同期中の仮想サーバ１６を一時的に停止し、I/O変更部３２の処理終了後に、停止した仮想サーバ１６の処理を再開し、継続させる。仮想サーバ１６の一時的な停止及び再開は、仮想化部１５に用意されているコマンドを実行しても良いし、停止時に仮想サーバ１６のスナップショットをとり、再開時にそのスナップショットを基に再開させるようにしても良い。このように、I/O変更部３２の処理中に、仮想サーバ１６を一時的に停止させることにより、仮想サーバ１６からのI/Oアクセス要求の発行の停止を保証できる。この場合の仮想サーバ１６の再開は、仮想サーバ１６を再起動することと異なり、一時的な停止時点からの処理を継続できる。
【００４４】
変更部３２は、I/O同期テーブル３５に登録してあるI/O変更を完了する場合及びI/O変更しなかった場合（I/O変更の要求を受ける前の状態を維持している場合）の２種の結果をもたらす。
【００４５】
I/Oバッファ３６を開放する（ステップ３１５）。I/O変更部３２により、I/O同期テーブル３５に登録してあるI/O変更を完了した場合、I/Oバッファ３６に格納されているリクエスト（I/Oアクセス要求）および応答のI/Oインタフェイス１４を、変更元のI/Oインタフェイス１４から変更先のI/Oインタフェイス１４へ変換し、変換されたリクエスト（I/Oアクセス要求）および応答を実行する。I/O変更部３２により、I/O同期テーブル３５に登録してあるI/O変更が実行されなかった場合、I/Oバッファ３６に格納されているリクエスト（I/Oアクセス要求）および応答を、I/Oインタフェイス１４を変換せずに（変更元のI/Oインタフェイス１４で）実行する。このようにリクエスト（I/Oアクセス要求）および応答の実行に伴って、I/Oバッファ３６は開放される(空になる)。
【００４６】
I/O同期テーブル３５から、I/O変更の処理対象であったI/Oインタフェイス（変更元および変更先の両方）を削除する（ステップ３１６）。I/O変更の処理対象であったとは、I/O変更が完了した場合とI/O変更しなかった場合とがあるからである。この２つの場合を明示して、I/O変更の完了を管理サーバ２０へ通知する(ステップ３１７)。
【００４７】
図１３に、I/O変更部３２の処理フロー図を示す。I/O変更部３２は、I/O同期部３１（図１２のステップ３１４）から呼び出される。変更元I/Oインタフェイス１４と変更先I/Oインタフェイス１４との構成を検証する(ステップ３２０)。ここでの検証は、変更先I/Oインタフェイス１４に故障がないことの確認や、仮想サーバ１６のＯＳが認識しているMMIOの範囲とI/Oマッピングテーブル３４のMMIOの範囲が一致するか否かなど、構成変更の実行の可否を確認する。検証の結果、構成変更に問題がある場合にはステップ３２９へ進む。
【００４８】
I/Oのマッピングを変更する（ステップ３２２）。仮想サーバ１６へのI/Oインタフェイス１４のマッピングを、変更元のI/Oインタフェイス１４から変更先のI/Oインタフェイス１４に変更するため、I/Oマッピングテーブル３４において、該当する仮想サーバ１６にマッピングされた変更元のI/Oインタフェイス１４から、変更先のI/Oインタフェイス１４に更新する（具体的にはI/Oマッピングテーブル３４のI/Oインタフェイスの識別子３４１を変更先のI/Oインタフェイスの識別子３４１で上書きする。）。
【００４９】
変更先のI/Oインタフェイス１４のネットワークIDを更新するか否かを判定する（ステップ３２３）。I/O同期部３１が受けたI/O変更開始要求にパラメータとしてネットワークＩＤが含まれている場合に、IDの更新が必要である。変更先I/Oインタフェイス１４のネットワークIDを更新する。ここで、ネットワークIDの更新は、I/Oインタフェイス１４自体が更新機能も持つ場合には、I/Oインタフェイス１４にネットワークIDをパラメータとして更新を要求する。ネットワークIDの書き換えのためにプログラムの実行が必要となる場合には、I/O変更部３２がネットワークIDの書き換えを目的とした新たな仮想サーバを生成し、生成した仮想サーバにネットワークIDの書き換え対象のI/Oインタフェイスをマッピングし、その仮想サーバ上でネットワークID書き換えプログラムを配信して実行させ、プログラムの実行完了を待ってI/Oインタフェイス１４のマッピングを、その仮想サーバから解除する。なお、同一のネットワークIDが複数I/Oインタフェイス１４上に存在するのは望ましくないことから、変更先のI/Oインタフェイス１４だけでなく、変更元のI/Oインタフェイス１４のネットワークIDを書き換えても良い。
【００５０】
接続先への変更通知を行う(ステップ３２５)。たとえば、ネットワークであれば、接続先のARPテーブルの更新などを目的として、ARP(Address Resolution Protocol)パケットなどの送出であったり、ログイン・ログアウト処理（ＦＣのpLogin/Logout）や、ネットワーク上の機器が提供するAPI(Application Programming Interface)やCLI(Command Line Interface)などによる接続先の変更操作である。
【００５１】
I/O変更後のI/Oインタフェイス１４の構成検証する（ステップ３２６）。構成検証は、変更先I/Oインタフェイス１４の故障確認やリクエスト・応答確認(パケットの送受信による確認)、およびネットワークのIDを引き継いだ場合にはネットワークIDの確認処理などである。
【００５２】
検証の結果(ステップ３２７)、問題がある場合には、構成を変更前の状態に戻すため、I/Oインタフェイス１４のマッピングを変更前の状態に戻す(ステップ３２８)。I/Oインタフェイス１４のマッピングを変更前の状態に戻すためには、ステップ３２２〜ステップ３２５の各処理内容をロールバックする。
【００５３】
I/Oの構成変更をキャンセルし、キャンセルしたことと、その原因を通知し(ステップ３２９)、処理を終了する。検証の結果(ステップ３２７)、問題が無い場合はI/O変更の完了を通知する。この通知は、前述のI/O同期部３１に引き継がれ、管理サーバ２０に通知される（図１２のステップ３１７）。
【００５４】
以下に、本実施例の管理サーバ２０における構成管理プログラム７０の動作を示す。図１４に、構成管理プログラム７０の取得部７２の処理フロー図を示す。取得部７２は、構成情報を取得する(ステップ７２０)。ここで取得する構成情報は、I/O構成テーブル７６およびマッピング管理テーブル７７の作成および更新のための情報である。情報取得の方法は、たとえば仮想化部１５、ネットワークを構成するスイッチ、サーバの構成情報を保持する装置、外部ストレージ装置、計算機システムの構成情報を管理しているソフトウェアなどから、機器やソフトウェアが提供するAPI（Application Program Interface）やCLI（Command Line Interface）を利用して取得する方法や、ユーザによる入力、ファイルによる取得等である。取得した情報を利用して、I/O構成テーブル７６およびマッピング管理テーブル７７の作成および更新する(ステップ７２１)。
【００５５】
図１５に、構成管理プログラム７０がユーザによる設定情報を取得するために提供するUI(User Interface)の例として、ＧＵＩ（Graphical User Interface）の例を示す。このＧＵＩは、管理サーバ２０に接続する表示装置６５や、管理サーバ２０にネットワークを介して接続された他の端末の表示装置等にブラウザや専用のプログラム、およびテキストなどを用いて表示する。ウインドウ６５０はブラウザやプログラムのウインドウを示す。ウインドウ６５０には、仮想サーバ１６へのI/Oインタフェイス１４のマッピングの情報表示と、変更操作のためのボタン等が表示される。ユーザは、仮想サーバの選択枠６５１によりI/Oインタフェイス１４のマッピングを変更する仮想サーバ１６の識別子を選択する。図の例は、仮想サーバ１６の選択枠６５１はプルダウンメニューを示している。
【００５６】
I/O一覧６５２には、選択枠６５１で選択された仮想サーバ１６（図示は仮想サーバ２）に現在マッピングされているI/Oインタフェイス１４の一覧が表示される。図では、I/Oインタフェイス１４の識別子（I/O２など）と、I/O種別（ＮＩＣなど）、ネットワークID(ＭＡＣ１など)を表示しているが、さらに接続先ネットワーク等の情報を付加しても良い。I/O一覧６５２に表示されるI/Oインタフェイス１４がI/O同期処理中であれば、その状態を示す情報を表示しても良い。I/O一覧６５２はマウスなどのカーソルを特定のI/Oインタフェイス１４の行に合わせてマウスのクリック操作などを行うと、そのI/Oインタフェイス１４を選択(図のハッチングの行)できる。
【００５７】
変更先I/O候補６５３には、I/O一覧６５２で選択されたI/Oインタフェイス１４に対して、そのI/Oインタフェイス１４からの変更先の候補となるI/Oインタフェイス１４の一覧が表示される。図ではI/O一覧６５２のI/O種別「FC-HBA」が選択されているので、変更先I/O候補６５３の一覧には、同じI/O種別「FC-HBA」のI/Oインタフェイス１４を表示している。変更先I/O候補６５３の検索方法については、後述する。変更先I/O候補６５３においてI/Oインタフェイス１４の行を選択すると、選択されたI/Oインタフェイス１４が変更先I/Oインタフェイスとなる。
【００５８】
チェックボックス６５４は、対象仮想サーバ１６上で実行中のＯＳを再起動をせずに、I/Oインタフェイス１４を変更する場合にチェックする。チェックボックス６５５は、ネットワークIDを変更元I/Oインタフェイスから変更先I/Oインタフェイスに引き継ぐ場合にチェックする。チェックボックス６５６は、変更元I/Oインタフェイスが接続しているネットワークの構成を変更先I/Oインタフェイスにも引き継ぐ場合にはチェックする。「実行」ボタン６５７をマウスなどでクリックすると、I/O構成変更を実行する要求がブラウザやGUIプログラムからUI部７３に送られる。「キャンセル」ボタン６５８をクリックすると、ウインドウ６５０を閉じる。ウインドウ６５０において、仮想サーバ１６の選択枠６５１の内容と、I/O一覧６５２及び変更先I/O候補６５３で選択された内容は、それぞれ仮想サーバ１６、変更元I/Oインタフェイス及び変更先I/Oインタフェイスの識別子としてUI部７３に通知される。チェックボックスのチェック状態もブラウザやGUIプログラムからUI部７３に通知される。
【００５９】
図１６は、UI部７３の処理フロー図を示す。UI部７３が図１５に示したUI（ウインドウ６５０）を表示する（ステップ７３０）。ユーザがUI（ウインドウ６５０）において、仮想サーバ１６の識別子と変更元I/Oインタフェイスとを選択したことを検知し（ステップ７３１）、選択された変更元I/Oインタフェイスに対応する変更先I/Oインタフェイスの候補を検索するように確認部７４に要求する（ステップ７３２）。ただし、図示を省略するが、確認部７４は選択された変更元I/Oインタフェイスの状態を仮想化部１５への問い合わせ、選択された変更元I/OインタフェイスがI/O同期中であった場合には、選択不可能とする確認部７４は変更元I/Oインタフェイスに対応する変更先I/Oインタフェイスの候補を検索し、UI部７３に応答する。UI部７３が確認部７４から受けとった変更先のI/Oインタフェイスの候補を、変更先I/O候補６５３としてUI（ウインドウ６５０）に表示する（ステップ７３３）。UI部７３は、UI（ＧＵＩプログラムやブラウザ）からの構成変更指示を受け付け（ステップ７３４）、変更部７５にI/Oインタフェイス１４の変更処理を要求する（ステップ７３５）。これは、「実行」ボタン６５８のクリックの検知に相当する。変更部７５は、仮想サーバ１６とI/Oインタフェイス１４とのマッピングの変更処理を実行する（ステップ７３５）。変更部７５の処理は後述する。変更部７５による処理が完了すると、UI（ウインドウ６５０）にI/Oインタフェイス１４の構成変更完了のメッセージを表示する（ステップ７３６）。なお、UI部７３の処理の過程でエラーが発生した場合には、その旨もメッセージとして表示する。たとえば、I/O構成変更がキャンセルされた場合などである。
【００６０】
ユーザからの指示に基づいて仮想サーバ１６とI/Oインタフェイス１４とのマッピングの変更（I/O 変更）を実行する例をUI部７３の処理として説明した。仮想サーバ１６とI/Oインタフェイス１４とのマッピングの変更（I/O変更）は、計算機システムの運用上、ユーザからの指示に基づく場合だけではない。他の例としては、負荷が特定のI/Oインタフェイス１４に集中している場合や特定のI/Oインタフェイス１４に障害の兆しが検知されたり、障害が発生した場合などがある。
【００６１】
負荷が特定のI/Oインタフェイス１４に集中している場合は、そのI/Oインタフェイス１４を使用している仮想サーバ１６のマッピングを同種(互換性がある)の他のI/Oインタフェイス１４に変更することにより、負荷を平準化できる。このためには、仮想化部１５で各I/Oインタフェイスの性能情報を監視し、その監視結果を得た管理サーバ１０(構成管理プログラム７０)が、変更元及び変更先のI/Oインタフェイス１４(又は候補)を決定すればよい。この決定は、たとえば同種(互換性がある)のI/Oインタフェイス１４の中で、負荷の最も高いI/Oインタフェイス１４を選択し、このI/Oインタフェイス１４を使用している仮想サーバ１６の一つを選択し、選択した仮想サーバ１６が使用するI/Oインタフェイス１４として、負荷が最も低いI/Oインタフェイス１４を変更先とする。一つの仮想サーバ１６が独占的に使用しているI/Oインタフェイス１４の負荷が極端に高い場合は、新たな仮想サーバを仮想化部１５が生成し、I/Oインタフェイス１４の負荷を高くしている仮想サーバ１６の機能を分割し、分割した機能を新たな仮想サーバに実行させるようにした後に、前述の仮想サーバ１６の選択を実行する。仮想サーバ１６の選択や変更元及び変更先のI/Oインタフェイス１４(又は候補)の決定に際して、必要に応じてUI部７３の処理を選択的に用いてユーザに確認するようにしても良い。
【００６２】
I/Oインタフェイス１４に障害の兆しが検知されたり、障害が発生した場合について簡単に説明する。I/Oインタフェイス１４に発生する障害に関する情報を収集する。障害に関する情報とは、たとえば、I/Oインタフェイス１４の発熱の異常、エラー訂正処理の頻発、割り込みのロスト、重大な障害な予兆となるイベントの発生などである。仮想化部１５でI/Oインタフェイス１４の障害に関する情報を監視し、それらの情報がI/Oインタフェイス１４の障害の予兆または障害を示しているならば、管理サーバ１０(構成管理プログラム７０)に通知する。通知された管理サーバ１０は、障害の予兆または障害のI/Oインタフェイス１４の識別子の表示と共に、UI部７３を起動する。ここで、変更元としての障害の予兆または障害のI/Oインタフェイス１４と、そのI/Oインタフェイス１４を使用している仮想サーバ１６とを特定し、同種(互換性がある)のI/Oインタフェイス１４を変更先の候補として決定した後に、UI部７３のステップ７３２移行を実行させるようにしても良い。
【００６３】
図１７は、確認部７５の処理フロー図である。ウインドウ６５０のチェックボックス６５４のチェックの有無、またはチェックボックス６５５のチェックの有無に応じた、I/O構成変更が動的変更か否か、またはネットワークIDを引き継ぐか否かを確認する（ステップ７４０）。
【００６４】
I/O構成変更が動的変更、またはネットワークIDの引き継ぐ場合には、I/Oインタフェイス１４のI/O種別と接続先ネットワークとを条件に変更元I/Oインタフェイスから変更が可能な変更先I/Oインタフェイス１４を検索する（ステップ７４１）。I/O構成テーブル７６のI/O種別（カラム７６１）を用いて、変更元I/Oインタフェイスと同じI/O種別のI/Oインタフェイスを条件として検索する。ただし、I/O種別が完全に一致しなくても良い。たとえば同等の機能を持つ（互換性がある）I/O種別であれば変更先I/Oインタフェイスの候補としても良い。同等か否かを判断する基準をユーザが定義しても良い。また、上記の条件による検索に加えて、I/O構成テーブル７６の接続先（カラム７６３）の情報を用いて、変更元I/Oインタフェイスと同一のネットワークに接続されているI/Oインタフェイス１４を候補として検索する。この検索においても、接続先が完全に一致しなくても良い。たとえば接続先が最終的に変更元I/Oインタフェイスと同じターゲット機器に接続されている場合や、変更元I/Oインタフェイスが利用するストレージ装置と同等の情報を保持するストレージ装置に接続されているI/Oインタフェイスなどは、変更先I/Oインタフェイスの候補としても良い。また、この条件をユーザが定義しても良い。
【００６５】
I/O構成変更が動的変更及びネットワークIDの引き継ぎのいずれでもない場合には、ウインドウ６５０のチェックボックス６５６のチェックの有無に応じて、ネットワーク構成の引き継ぎをするか否かを確認する（ステップ７４２）。ネットワーク構成の引き継ぎをする場合には、I/Oインタフェイス１４の接続先ネットワークを条件に変更元I/Oインタフェイスから変更が可能な変更先I/Oインタフェイスを検索する。I/O構成テーブル７６の接続先（カラム７６３）の情報を用いて、変更元I/Oインタフェイスと同一のネットワークに接続されているI/Oインタフェイス１４を候補として検索する。この検索においても、接続先ネットワークが完全に一致しなくても良い。たとえば、ネットワークが最終的に変更元I/Oインタフェイスと同じターゲット機器に接続されている場合や、変更元I/Oインタフェイスが利用するストレージ装置と同等の情報を保持するストレージ装置に接続されているI/Oインタフェイス１４などは、変更先I/Oインタフェイスの候補としても良い。この条件をユーザが定義しても良い。
【００６６】
ウインドウ６５０のチェックボックス６５４〜６５６のいずれにもチェックが無い場合、仮想化部１５へ問い合わせ、変更先のI/Oインタフェイス１４の候補として、仮想化部１５が管理する全てのI/Oインタフェイスを候補とする(ステップ７４４)。変更先の候補のI/Oインタフェイス１４をUI部７３に返信する(ステップ７４５)。なお、I/Oインタフェイス１４の候補の検索が不要なユーザに対応するため、確認部７４はステップ７４４及びステップ７４５の処理のみを実行するオプションをユーザに提供しても良い。
【００６７】
図１８に、変更部７５の処理フロー図を示す。I/O変更開始を仮想化部１５０に対してI/O変更開始を要求する(ステップ７５０)。この要求は、図１２のステップ３１０において、I/O同期部３１が受信する。仮想化部１５からI/O同期開始の通知を受信する(ステップ７５１)。このステップは、図１２のI/O同期部３１のステップ３１３に対応した処理である。ウインドウ６５０のチェックボックス６５６のチェックの有無に応じて、ネットワーク構成の引き継ぐか否かを確認する(ステップ７５２)。ネットワーク構成の引き継ぐ場合には、ネットワークIDの引き継ぎをするか否かを確認し(ステップ７５３)、引き継ぐ場合は、接続先のセキュリティを再設定する(ステップ７５４)。仮想サーバ１６が用いるI/Oインタフェイス１４の変更により、変更元I/Oインタフェイスと変更先I/OインタフェイスのネットワークIDが変化するので、ネットワークIDに基づくセキュリティがネットワーク上に存在する機器に設定されていた場合には、機器のセキュリティ設定に利用されている変更元I/OインタフェイスのネットワークIDを、変更先I/OインタフェイスのネットワークIDに書き換える。これにより、ネットワークで接続された計算機システムにおいてネットワークID変更の影響を抑えることができる。セキュリティ設定に限らず、ネットワークIDを利用して何らかの設定を行っている機器が存在する場合、それらも書き換えの対象とする。これらの書換えの実際は、詳細を省略するが、仮想化部１５に変更部７５から指示し、仮想化部１５が実行する。
【００６８】
I/O構成テーブル７６のI/O種別(カラム７６１)を参照して、変更元および変更先のI/OインタフェイスがNICか否かに基づいて、ネットワーク設定の引き継ぎをするか否かを判断する(ステップ７５５)。ネットワーク設定を引き継ぐ場合、変更元I/Oインタフェイスのネットワーク上の機器に対して設定されている情報を、変更先I/Oインタフェイスのネットワーク上の機器に設定する。たとえば、それぞれのI/Oインタフェイス１４が接続されているネットワークスイッチのポートが異なる場合、変更元I/Oインタフェイスの接続されているネットワークスイッチポートに対して設定されたVLAN（Virtual LAN）、QoS（Quality of Service）設定等を、変更先I/Oインタフェイスの接続されているネットワークスイッチポートに対して設定する。これらの設定の実際は、詳細を省略するが、仮想化部１５に変更部７５から指示し、仮想化部１５が実行する。
【００６９】
変更元I/Oインタフェイスの接続されているストレージが、変更先I/Oインタフェイスに接続されているストレージと異なる場合は、ストレージ構成を引き継ぐと判断し(ステップ７５７)、変更元I/Oインタフェイスが接続されているストレージと、変更先I/Oインタフェイスが接続されているストレージが格納している内容(データ)を一致させる。この処理には、たとえばストレージのレプリケーションのためのソフトウェアや、ストレージ装置自体のレプリケーション機能などを利用する。ネットワーク構成を引き継ぐことにより、接続先のストレージ構成やネットワーク構成の異なるI/Oインタフェイス１４間での構成の変更が可能になる。
【００７０】
仮想化部１５に対してI/O変更を要求する(ステップ７５９)。このステップは、図１２のI/O同期部３１の処理をステップ３１４から継続させる契機となる。I/O同期部３１のステップ３１７からのI/O変更完了通知があるまでウエイトし、通知を受信したならば処理を終了する。
【００７１】
なお、変更部７５のステップ７５２〜７５８は仮想化部１５に対する指示を作成し、その実行主体が仮想化部１５であることから、ステップ７５２〜７５８を実行した後に、I/O変更開始を要求する(ステップ７５０)ことにより、変更部７５のステップ７５１及びステップ７５９と共に、I/O同期部３１のステップ３１３を省略でき、I/O変更の一連の処理における管理サーバ２０の中間的処理によるオーバーヘッドや、管理サーバ２０とサーバ１０との通信オーバーヘッドを削減できる。
【００７２】
本実施例によれば、仮想サーバによる処理を継続させながら、仮想サーバが使用するI/Oインタフェイスの構成を変更し、計算機システムで稼動する業務への影響を小さくすることができる。
【実施例２】
【００７３】
実施例１では、仮想サーバ１６とI/Oインタフェイス１４とのマッピングを変更するための、サーバ１０上の処理を仮想化部１５による処理として説明した。本実施例は、実施例１で説明したI/Oアクセス変換の処理を含め、仮想サーバ１６とI/Oインタフェイス１４とのマッピングを変更するための処理を仮想化部１５から独立させたI/O管理部によって実行する例である。
【００７４】
図１９に、本実施例の計算機システムの構成を示す。実施例１と異なるのは、I/Oアクセス変換の処理を含め、仮想サーバ１６とI/Oインタフェイス１４とのマッピングを変更するための処理を実行するI/O管理部１７を設け、仮想サーバ１６が仮想化部１５を介さずに、I/O管理部１７に接続する点にある。このように、実施例１と構成を異にしても、図１(実施例１)と図１９(実施例２)とを比較すれば、実施例１で説明したI/O変更に係る処理が変わらないことは容易に理解されるであろう。
【００７５】
本実施例によれば、仮想サーバ１６からのI/Oインタフェイス１４へのアクセスに係る処理時間を短縮するために、I/Oアクセス変換を仮想化部１５から独立させた構成の仮想サーバシステムにも、実施例１で説明したI/O変更に係る処理を適用可能である。
【実施例３】
【００７６】
図２０に、本実施例の計算機システム構成例を示す。本実施例は、実施例２の仮想サーバ１６を物理サーバ(図中はノード８３)とし、I/O管理部１７を独立したI/O管理装置８０として設ける。ノード８３はI/O管理装置８０に接続され、I/O管理装置８０はネットワーク２１を介して管理サーバ２０に接続され、I/Oインタフェイス１４はI/Oインタフェイス１４に接続されている。図２０では、I/Oインタフェイス１４とは独立に管理装置８０を図示しているが、I/Oインタフェイス１４を含めてI/O管理装置８０として構成しても良い。ノード８３は一般的なコンピュータであり、説明を省略する。
【００７７】
I/O管理装置８０は、メモリ８１とCPU８２とを備えたコンピュータにより構成される。メモリ８１には、実施例１で説明したI/O変更の処理のためのプログラムやテーブルが格納される。I/O管理装置８０のノード８３との接続、I/Oインタフェイス１４との接続を簡略化して図示してあるが、この接続のために、さらにI/Oインタフェイスを用いることは自明であろう。I/O管理装置８０は、ノード８３との接続とI/Oインタフェイス１４との接続とをさらに接続し、さらに実施例１で説明したI/O変更を実行するので、接続のスイッチング(交換)機能を持ったコンピュータと言える。ただし、ノード８３が一般的なコンピュータ(物理サーバ)である場合に、MMIOなどはノード８３において仮想化されていないので、実施例１や実施例２のI/Oマッピングテーブル３４及びI/Oマッピングテーブル３４を用いたI/Oアクセス変換は実行されない。
【００７８】
本実施例によれば、I/O管理装置８０を独立した装置とし、構成の自由度を高くした計算機システムにおいても、実施例１で説明したI/O変更に係る処理を適用可能である。したがって、サーバによる処理を継続させながら、サーバが使用するI/Oインタフェイスの構成を変更し、計算機システムで稼動する業務への影響を小さくすることができる。
【図面の簡単な説明】
【００７９】
【図１】実施例１の計算機システムの構成である。
【図２】I/Oインタフェイステーブルの例である。
【図３】仮想サーバとI/Oインタフェイスとのマッピングの例である。
【図４】I/Oマッピングテーブルの例である。
【図５】I/O同期テーブルの例である。
【図６】Ｉ/Ｏバッファの例である。
【図７】管理サーバの構成である。
【図８】I/O構成テーブルの例である。
【図９】マッピング管理テーブルの例である。
【図１０】I/Oマッピング部の処理フロー図である。
【図１１】通常アクセスの概略シーケンスである。
【図１２】I/O同期部の処理フロー図である。
【図１３】I/O変更部の処理フロー図である。
【図１４】取得部の処理フロー図である。
【図１５】ＧＵＩの例である。
【図１６】UI部の処理フロー図である。
【図１７】確認部の処理フロー図である。
【図１８】変更部の処理フロー図である。
【図１９】実施例２の計算機システムの構成である。
【図２０】実施例３の計算機システムの構成である。
【符号の説明】
【００８０】
１０：サーバ、１１：メモリ、１２：ＣＰＵ、１３：補助記憶装置、１４：I/Oインタフェイス、１５：仮想化部、１６：仮想サーバ、１７：I/O管理部、２０：管理サーバ、３６：I/Oバッファ、６０：メモリ、６１：ＣＰＵ、６２：ＮＩＣ、６３：I/Oインタフェイス、８０：I/O管理装置、８１：メモリ、８２：ＣＰＵ、８３：ノード。
【図１】
2010003061.tif 000003
【図２】
2010003061.tif 000004
【図３】
2010003061.tif 000005
【図４】
2010003061.tif 000006
【図５】
2010003061.tif 000007
【図６】
2010003061.tif 000008
【図７】
2010003061.tif 000009
【図８】
2010003061.tif 000010
【図９】
2010003061.tif 000011
【図１０】
2010003061.tif 000012
【図１１】
2010003061.tif 000013
【図１２】
2010003061.tif 000014
【図１３】
2010003061.tif 000015
【図１４】
2010003061.tif 000016
【図１５】
2010003061.tif 000017
【図１６】
2010003061.tif 000018
【図１７】
2010003061.tif 000019
【図１８】
2010003061.tif 000020
【図１９】
2010003061.tif 000021
【図２０】
2010003061.tif 000022