(57)【特許請求の範囲】
【請求項１】
複数の仮想マシンが動作可能な情報処理装置であって、
プログラムを記憶する複数の記憶装置にアクセス可能であって、前記複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり、当該アクセス先の記憶装置からプログラムを読み込むための第１の起動コードを保持するインタフェース部と、
それぞれが前記複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり、前記インタフェース部を介して当該アクセス先の記憶装置からプログラムを読み込むための複数の第２の起動コードを記憶する記憶部と、
前記複数の仮想マシンのうちのいずれかの仮想マシン上でプログラムを起動するとき、当該仮想マシンに応じた第２の起動コードを前記記憶部から選択し、前記第１の起動コードに代えて選択した第２の起動コードを当該仮想マシンに提供する制御部と、
を有する情報処理装置。
【請求項２】
前記記憶部は、前記複数の仮想マシンそれぞれに対して少なくとも１つの第２の起動コードを対応付けた管理情報を更に記憶し、
前記制御部は、前記記憶部に記憶された前記管理情報に基づいて、前記仮想マシンに応じた第２の起動コードを選択する、
請求項１記載の情報処理装置。
【請求項３】
前記複数の第２の起動コードは、前記インタフェース部が保持する前記第１の起動コードを用いて生成されて前記記憶部に格納される、請求項１記載の情報処理装置。
【請求項４】
前記制御部は、１つの仮想マシンに対して２以上の第２の起動コードが対応付けられている場合、前記仮想マシンからの通知に基づいて、前記２以上の第２の起動コードの中の１つを選択する、請求項１記載の情報処理装置。
【請求項５】
前記制御部は、前記複数の仮想マシンと前記複数の第２の起動コードとの対応関係を示す管理情報を記憶する他の装置と通信して、前記仮想マシンに応じた第２の起動コードを選択する、請求項１記載の情報処理装置。
【請求項６】
前記インタフェース部は、前記複数の記憶装置にアクセス可能な２以上のアクセス部を備え、前記２以上のアクセス部と対応して２以上の第１の起動コードを保持し、
前記複数の第２の起動コードそれぞれは、前記インタフェース部が保持する前記２以上の第１の起動コードの中の１つを用いて生成されて前記記憶部に格納される、
請求項１記載の情報処理装置。
【請求項７】
前記アクセス先の記憶装置から読み込まれるプログラムは、オペレーティングシステムのプログラムである、請求項１記載の情報処理装置。
【請求項８】
前記制御部は、前記仮想マシン上で実行されるファームウェアからの要求に応じて、当該仮想マシンに応じた第２の起動コードを選択して前記ファームウェアに提供する、請求項１記載の情報処理装置。
【請求項９】
複数の仮想マシンが動作可能であり、プログラムを記憶する複数の記憶装置にアクセス可能な情報処理装置が実行する仮想マシン管理方法であって、
前記複数の仮想マシンのうちのいずれかの仮想マシン上でのプログラムの起動開始を検出し、
それぞれが前記複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり、前記情報処理装置が備えるインタフェース部を介して当該アクセス先の記憶装置からプログラムを読み込むための複数の第１の起動コードを記憶する記憶部から、プログラムの起動開始を検出した前記仮想マシンに応じた第１の起動コードを選択し、
前記インタフェース部が保持する、前記複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり当該アクセス先の記憶装置からプログラムを読み込むための第２の起動コードに代えて、選択した第１の起動コードを前記仮想マシンに提供する、
仮想マシン管理方法。
【請求項１０】
複数の仮想マシンが動作可能であり、プログラムを記憶する複数の記憶装置にアクセス可能なコンピュータに、
前記複数の仮想マシンのうちのいずれかの仮想マシン上でのプログラムの起動開始を検出し、
それぞれが前記複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり、前記コンピュータが備えるインタフェース部を介して当該アクセス先の記憶装置からプログラムを読み込むための複数の第１の起動コードを記憶する記憶部から、プログラムの起動開始を検出した前記仮想マシンに応じた第１の起動コードを選択し、
前記インタフェース部が保持する、前記複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり当該アクセス先の記憶装置からプログラムを読み込むための第２の起動コードに代えて、選択した第１の起動コードを前記仮想マシンに提供する、
処理を実行させる仮想マシン管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、仮想マシン管理方法および仮想マシン管理プログラムに関する。
【背景技術】
【０００２】
現在、情報処理の分野では、物理的なコンピュータ（物理マシンや物理ホストと呼ぶことがある）上で、複数の仮想的なコンピュータ（仮想マシンや論理ホストと呼ぶことがある）を動作させる仮想化技術が利用されている。各仮想マシン上では、オペレーティングシステム（ＯＳ：Operating System）などのソフトウェアを実行できる。仮想化技術を利用する物理マシンは、複数の仮想マシンを管理するためのソフトウェアを実行する。【０００３】
例えば、ハイパーバイザと呼ばれるソフトウェアが、ＣＰＵ（Central Processing Unit）の処理能力やＲＡＭ（Random Access Memory）の記憶領域を、演算のリソースとして複数の仮想マシンに割り振る。また、例えば、ハイパーバイザが、ＮＩＣ（Network Interface Card）やＨＢＡ（Host Bus Adapter）などのインタフェースの処理能力を、通信のリソースとして複数の仮想マシンに割り振ることがある。【０００４】
ところで、コンピュータがＯＳプログラムなどのプログラムを起動するとき、まず起動用のコード（ブートコードと呼ぶことがある）を実行することがある。コンピュータは、当該コードに従って、プログラムが記憶された所定の記憶装置にアクセスし、当該記憶装置からプログラムを読み込んで実行を開始する。【０００５】
なお、管理サーバがディスク番号を計算機のＢＩＯＳ（Basic Input/Output System）情報内に設定して当該計算機を再起動させることで、指定したディスクから当該計算機がＯＳプログラムを読み込むよう制御するブート制御方法が提案されている。また、仮想化機構が、仮想マシンに割当可能な仮想ＨＢＡとＷＷＮ（World Wide Name）とを対応付けておき、仮想マシンからストレージ装置へのアクセスをＷＷＮに基づいて制限できるようにする仮想計算機システムが提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−１６４３０５号公報（［００２４］，［００２５］）
【特許文献２】特開２０１０−３３４０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
コンピュータは、ＮＩＣやＨＢＡなどのインタフェースを介して接続された記憶装置から、ＯＳプログラムなどのプログラムを読み込んで実行することもできる。その場合、コンピュータは、例えば、インタフェース内に記憶されている起動用のコードを実行することで、インタフェースを介して当該記憶装置にアクセスすることが考えられる。【０００８】
しかし、複数の仮想マシンが同じインタフェースを共通に利用する物理マシンでは、各仮想マシンがインタフェース内のコードを用いて記憶装置にアクセスしようとすると、仮想マシンに応じてアクセス先の記憶装置を変更することが困難であるという問題がある。よって、例えば、複数種類のＯＳプログラムを複数の記憶装置に分散して格納しても、インタフェース内に記憶された起動用のコードが１つのみである場合、全ての仮想マシンが同一の記憶装置からＯＳプログラムを読み込もうとするおそれがある。【０００９】
本発明はこのような点に鑑みてなされたものであり、プログラムの起動の際に何れの記憶装置からプログラムを読み込むかを仮想マシンに応じて変更できる情報処理装置、仮想マシン管理方法および仮想マシン管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
複数の仮想マシンが動作可能な情報処理装置が提供される。情報処理装置は、インタフェース部と記憶部と制御部とを有する。インタフェース部は、プログラムを記憶する複数の記憶装置にアクセス可能であって、複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり、当該アクセス先の記憶装置からプログラムを読み込むための第１の起動コードを保持する。記憶部は、それぞれが複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり、インタフェース部を介して当該アクセス先の記憶装置からプログラムを読み込むための複数の第２の起動コードを記憶する。制御部は、複数の仮想マシンのうちのいずれかの仮想マシン上でプログラムを起動するとき、当該仮想マシンに応じた第２の起動コードを記憶部から選択し、第１の起動コードに代えて選択した第２の起動コードを当該仮想マシンに提供する。【００１１】
また、複数の仮想マシンが動作可能であり、プログラムを記憶する複数の記憶装置にアクセス可能な情報処理装置が実行する仮想マシン管理方法が提供される。仮想マシン管理方法では、複数の仮想マシンのうちのいずれかの仮想マシン上でのプログラムの起動開始を検出する。それぞれが複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり、情報処理装置が備えるインタフェース部を介して当該アクセス先の記憶装置からプログラムを読み込むための複数の第１の起動コードを記憶する記憶部から、プログラムの起動開始を検出した仮想マシンに応じた第１の起動コードを選択する。インタフェース部が保持する、複数の記憶装置のうちアクセス先の記憶装置を示す情報を含んでおり当該アクセス先の記憶装置からプログラムを読み込むための第２の起動コードに代えて、選択した第１の起動コードを当該仮想マシンに提供する。【００１２】
また、複数の仮想マシンが動作可能であり、プログラムを記憶する複数の記憶装置にアクセス可能なコンピュータで実行される仮想マシン管理プログラムが提供される。
【発明の効果】
【００１３】
プログラムの起動の際に何れの記憶装置からプログラムを読み込むかを、仮想マシンに応じて変更することができる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態の情報処理装置を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】第２の実施の形態のサーバ装置のハードウェア例を示す図である。
【図４】第２の実施の形態のＦＣスイッチ装置のハードウェア例を示す図である。
【図５】仮想マシンの配置例を示すブロック図である。
【図６】第２の実施の形態のハードウェアの割当例を示すブロック図である。
【図７】第２の実施の形態のサーバ装置の機能を示すブロック図である。
【図８】起動コードのデータ構造例を示す図である。
【図９】第２の実施の形態の起動管理テーブルのデータ構造例を示す図である。
【図１０】第２の実施の形態の全体処理を示すフローチャートである。
【図１１】第２の実施の形態のＶＦ割当処理を示すフローチャートである。
【図１２】第２の実施の形態のＶＦ割当処理を示すシーケンス図である。
【図１３】第２の実施の形態のＶＦ解除処理を示すフローチャートである。
【図１４】第２の実施の形態のＶＦ解除処理を示すシーケンス図である。
【図１５】第２の実施の形態の仮想マシン起動処理を示すフローチャートである。
【図１６】第２の実施の形態の仮想マシン起動処理を示すシーケンス図である。
【図１７】第３の実施の形態のサーバ装置の機能を示すブロック図である。
【図１８】第３の実施の形態の起動管理テーブルのデータ構造例を示す図である。
【図１９】第３の実施の形態のＶＦ割当処理を示すフローチャートである。
【図２０】第３の実施の形態のＶＦ割当処理を示すシーケンス図である。
【図２１】第３の実施の形態の仮想マシン起動処理を示すシーケンス図である。
【図２２】第４の実施の形態のＦＣスイッチ装置の機能を示すブロック図である。
【図２３】第４の実施の形態のＶＦ割当処理を示すシーケンス図である。
【図２４】第４の実施の形態の仮想マシン起動処理を示すシーケンス図である。
【図２５】第５の実施の形態のサーバ装置の機能を示すブロック図である。
【図２６】第５の実施の形態の起動管理テーブルのデータ構造例を示す図である。
【図２７】第５の実施の形態のＶＦ割当処理を示すフローチャートである。
【図２８】第５の実施の形態のＶＦ割当処理を示すシーケンス図である。
【図２９】第５の実施の形態の仮想マシン起動処理を示すシーケンス図である。
【発明を実施するための形態】
【００１５】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理装置を示す図である。情報処理装置１では、仮想マシン１ａ，１ｂを含む複数の仮想マシンが動作可能である。また、情報処理装置１は、記憶装置２，２ａにアクセスすることができる。記憶装置２，２ａは、例えば、不揮発性の記憶装置であり、仮想マシン１ａ，１ｂ上で実行されるＯＳプログラムなどのプログラムを記憶する。記憶装置２と記憶装置２ａとは、異なるプログラムを記憶してもよい。情報処理装置１は、インタフェース部１ｃ、記憶部１ｄおよび制御部１ｅを有する。
【００１６】
インタフェース部１ｃは、記憶装置２，２ａにアクセス可能である。インタフェース部１ｃは、ＮＩＣやＨＢＡなどのアダプタとして実装してもよい。インタフェース部１ｃと記憶装置２，２ａとは、ケーブルにより直接接続されてもよいし、スイッチなどの中継装置を介して接続されてもよい。インタフェース部１ｃは、起動コード３（第１の起動コード）を保持する。起動コード３は、インタフェース部１ｃが備える不揮発性の記憶装置（例えば、ＲＯＭ（Read Only Memory））に記憶されていてもよい。
【００１７】
ここで、起動コード３は、インタフェース部１ｃを介して何れかの記憶装置にアクセスし、当該記憶装置からプログラムを読み込むためのコードである。起動コード３は、ブートコードと呼ばれるものであってもよい。起動コード３は、インタフェース部１ｃからアクセス可能な記憶装置２，２ａのうち、アクセス先とする記憶装置を示す情報を含む。例えば、起動コード３は、アクセス先として記憶装置２を示す情報を含む。
【００１８】
記憶部１ｄは、起動コード３ａ，３ｂ（第２の起動コード）を記憶する。例えば、記憶部１ｄは、不揮発ＮＶＲＡＭ（Non Volatile RAM）やＲＡＭ、ＨＤＤ（Hard Disk Drive）として実装することができる。起動コード３ａ，３ｂは、起動コード３と同様、インタフェース部１ｃを介して何れかの記憶装置にアクセスし、当該記憶装置からプログラムを読み込むためのコードである。起動コード３ａ，３ｂは、それぞれ、インタフェース部１ｃからアクセス可能な記憶装置２，２ａのうち、アクセス先とする記憶装置を示す情報を含む。例えば、起動コード３ａは記憶装置２を示す情報を含み、起動コード３ｂは記憶装置２ａを示す情報を含む。
【００１９】
ここで、起動コード３ａ，３ｂは、インタフェース部１ｃが保持する起動コード３に基づいて生成されて記憶部１ｄに記憶されてもよい。例えば、起動コード３を複製し、複製した起動コードに含まれるアクセス先の記憶装置の情報を書き換えることで、起動コード３ａ，３ｂを生成してもよい。また、記憶部１ｄでは、仮想マシン毎に少なくとも１つの起動コードが対応付けられてもよい。例えば、仮想マシン１ａに起動コード３ａが対応付けられ、仮想マシン１ｂに起動コード３ｂが対応付けられる。記憶部１ｄは、仮想マシン１ａ，１ｂと起動コード３ａ，３ｂとの対応関係を示す管理情報を記憶してもよい。ただし、管理情報は、情報処理装置１と通信可能な他の装置に記憶しておいてもよい。
【００２０】
制御部１ｅは、仮想マシン１ａ，１ｂのうちのいずれかの仮想マシン上でプログラム（例えば、ＯＳプログラム）を起動するとき、当該仮想マシンに応じた起動コードを記憶部１ｄから選択する。そして、インタフェース部１ｃが保持する起動コード３に代えて、選択した起動コードを当該仮想マシンに提供する。例えば、制御部１ｅは、仮想マシン１ａ上でプログラムを起動するとき、起動コード３ａを記憶部１ｄから読み出して仮想マシン１ａに提供する。また、仮想マシン１ｂ上でプログラムを起動するとき、起動コード３ｂを記憶部１ｄから読み出して仮想マシン１ｂに提供する。
【００２１】
なお、制御部１ｅの機能は、例えば、情報処理装置１のＣＰＵおよびＲＡＭを用いて実行されるプログラムのモジュールにより実現することができる。当該モジュールは、ハイパーバイザ内のモジュールとして実装してもよい。また、制御部１ｅは、仮想マシン１ａ，１ｂ上のファームウェアから起動コード３の取得要求を受け付けたときに、起動コード３に代えて、記憶部１ｄに記憶された何れかの起動コードを仮想マシン１ａ，１ｂに提供してもよい。仮想マシン１ａ，１ｂ上のファームウェアは、例えば、制御部１ｅから提供された起動コードを実行することで、インタフェース部１ｃを介して記憶装置２，２ａのうちの何れかの記憶装置にアクセスし、ＯＳプログラムなどのプログラムを取得する。
【００２２】
第１の実施の形態の情報処理装置１によれば、仮想マシン１ａ，１ｂのうちいずれかの仮想マシン上でのプログラムの起動開始が検出される。記憶部１ｄに記憶された起動コード３ａ，３ｂの中から、当該仮想マシンに応じた起動コードが選択される。インタフェース部１ｃが保持する起動コード３に代えて、選択された起動コードが当該仮想マシンに提供される。当該仮想マシンでは、提供された起動コードが示す記憶装置にアクセスすることで、ＯＳプログラムなどのプログラムが読み出される。
【００２３】
これにより、仮想マシン１ａ，１ｂがインタフェース部１ｃを共通に利用する場合であっても、仮想マシンに応じてアクセス先の記憶装置を変更することができる。例えば、仮想マシン１ａが、起動コード３ａを用いて記憶装置２との接続を確立し、記憶装置２ａに記憶されたプログラムを読み出す。また、仮想マシン１ｂが、起動コード３ｂを用いて記憶装置２ａとの接続を確立し、記憶装置２ａに記憶されたプログラムを読み出す。このように、仮想マシン１ａ，１ｂは、異なる記憶装置に記憶されたプログラムを読み出して実行することができる。例えば、仮想マシン１ａ，１ｂは、異なる記憶装置に記憶されたＯＳプログラムを読み出して実行することができる。
【００２４】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。この情報処理システムは、管理端末装置１１，２１、サーバ装置１００、ファイバチャネル（ＦＣ：Fibre Channel）スイッチ装置２００、ストレージ装置３００，３００ａを含む。管理端末装置１１は、サーバ装置１００に接続されている。管理端末装置２１は、ＦＣスイッチ装置２００に接続されている。また、サーバ装置１００は、ネットワーク１０に接続されている。
【００２５】
管理端末装置１１，２１は、管理者が操作するコンピュータである。管理端末装置１１は、管理者がサーバ装置１００に対する指示を入力するためのものである。管理端末装置２１は、管理者がＦＣスイッチ装置２００に対する指示を入力するためのものである。
【００２６】
サーバ装置１００は、複数の仮想マシンが動作可能なサーバコンピュータである。サーバ装置１００は、複数の仮想マシンの起動や停止を管理する。サーバ装置１００は、ネットワーク１０を介して、ネットワーク１０に接続されたクライアント装置に対し仮想マシンの機能を利用可能とする。
【００２７】
ＦＣスイッチ装置２００は、ＦＣ用の複数のインタフェースを備え、各インタフェース間を中継する切換機である。ＦＣスイッチ装置２００は、サーバ装置１００およびストレージ装置３００，３００ａの間のデータ通信を中継する。ＦＣスイッチ装置２００は、管理端末装置２１からの指示を受け、ＦＣスイッチ装置２００上の管理機能を実行する。
【００２８】
ストレージ装置３００，３００ａは、プログラムを記憶する記憶装置である。ここで、ストレージ装置３００，３００ａが記憶するプログラムは、ＯＳの起動用のプログラム（以下、ＯＳプログラムという）である。サーバ装置１００上で動作する仮想マシンは、ストレージ装置３００，３００ａに記憶されたＯＳプログラムをロードして実行することで起動される。なお、ストレージ装置３００，３００ａにＯＳ以外の他のアプリケーションを起動するためのプログラムを格納して、仮想マシンでのアプリケーション起動に用いてもよい。
【００２９】
図３は、第２の実施の形態のサーバ装置のハードウェア例を示す図である。サーバ装置１００は、ＣＰＵ（Central Processing Unit）ボード１０１、クロスバースイッチ１０２、ＰＣＩ  Ｅｘｐｒｅｓｓ（Peripheral Component Interconnect Express）コントローラ１０３、ＳＡＳ（Serial Attached SCSI（Small Computer System Interface））インタフェース１０４、ＨＤＤ（Hard Disk Drive）１０５、ＦＣインタフェース１０６、ネットワークインタフェース１０７、ＳＶＰ（SerVice Processor）１０８およびディスクドライブ１０９を有する。
【００３０】
ＣＰＵボード１０１は、ＣＰＵやメモリを備えた情報処理部である。ＣＰＵボード１０１は、ＣＰＵ１１１、ＲＡＭ（Random Access Memory）１１２およびＮＶＲＡＭ１１３を有する。
【００３１】
ＣＰＵ１１１は、ハイパーバイザのプログラム、ＯＳプログラムおよびアプリケーションプログラムを実行して、仮想マシンや当該仮想マシン上のアプリケーションを実現する演算装置である。なお、ＣＰＵボード１０１は複数のＣＰＵを備えてもよい。
【００３２】
ＲＡＭ１１２は、ＣＰＵ１１１が実行するハイパーバイザのプログラム、ＯＳプログラムおよびアプリケーションプログラムの少なくとも一部を一時的に記憶する揮発性の記憶装置である。ＲＡＭ１１２は、ＣＰＵ１１１の処理に用いられるデータの少なくとも一部を一時的に記憶する。なお、ＣＰＵボード１０１は複数のＲＡＭを備えてもよい。
【００３３】
ＮＶＲＡＭ１１３は、ハイパーバイザの処理に用いるデータを記憶する不揮発性の記憶装置である。なお、ＣＰＵボード１０１は複数のＮＶＲＡＭやＦｌａｓｈ  ＲＯＭを備えてもよい。
【００３４】
更に、サーバ装置１００は、複数のＣＰＵボードを備えてもよい。
クロスバースイッチ１０２は、ＣＰＵボード１０１、ＰＣＩ  Ｅｘｐｒｅｓｓコントローラ１０３の間のデータ通信を中継する。
【００３５】
ＰＣＩ  Ｅｘｐｒｅｓｓコントローラ１０３は、クロスバースイッチ１０２とＳＡＳインタフェース１０４、ＦＣインタフェース１０６およびネットワークインタフェース１０７との間のデータ通信を制御する。
【００３６】
ＳＡＳインタフェース１０４は、ＨＤＤ１０５とディスクドライブ１０９に接続され、ＨＤＤ１０５とディスクドライブ１０９に対するデータの入出力を制御する。ディスクドライブ１０９は、ＳＡＴＡ(Serial ATA)プロトコルをカプセリングして入出力制御してもよい。
【００３７】
ＨＤＤ１０５は、ハイパーバイザのプログラムやハイパーバイザの処理に用いられるデータを記憶する不揮発性の記憶装置である。ＨＤＤ１０５は、ＣＰＵ１１１の命令に従って、内蔵の磁気ディスクに対する読み書きを行う。なお、サーバ装置１００は、ＨＤＤ以外の不揮発性の記憶装置（例えば、ＳＳＤ（Solid State Drive））を備えていてもよく、複数の記憶装置を備えてもよい。また、ＣＰＵボード１０１で実行するハイパーバイザのプログラムをＮＶＲＡＭ１１３に格納してもよい。
【００３８】
ＦＣインタフェース１０６は、スイッチ装置２００と接続され、スイッチ装置２００との間のデータ通信を制御するＨＢＡである。ＦＣインタフェース１０６は、ＦＣコントローラ１１４およびメモリ１１５を有する。ＦＣコントローラ１１４は、ＦＣインタフェース１０６の動作を制御する演算装置である。メモリ１１５は、ＦＣコントローラ１１４の処理に用いるデータを記憶する。サーバ装置１００は複数のＦＣコントローラを備えてもよい。
【００３９】
ネットワークインタフェース１０７は、ネットワーク１０と接続され、ネットワーク１０を介した他の装置とのデータ通信を制御する。
ＳＶＰ１０８は、サーバ装置１００を管理するための装置である。ＳＶＰ１０８は、サーバ装置のＣＰＵボード１０１、クロスバースイッチ１０２、ＰＣＩ−Ｅｘｐｒｅｓｓコントローラ１０３とＩ２Ｃなどで接続される。ＳＶＰ１０８は、管理端末装置１１に接続される。ＳＶＰ１０８は、サーバ装置１００を管理するためのＧＵＩ（Graphical User Interface）を管理端末装置１１に表示させる。管理者は、管理端末装置１１で当該ＧＵＩを操作して、サーバ装置１００に対する指示を行える。
【００４０】
ディスクドライブ１０９は、記録媒体１２に記録されたプログラムやデータを読み取る駆動装置である。記録媒体１２として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。ディスクドライブ１０９は、例えば、ＣＰＵ１１１の命令に従って、記録媒体１２から読み取ったプログラムやデータをＲＡＭ１１２またはＨＤＤ１０５に格納する。
【００４１】
図４は、第２の実施の形態のＦＣスイッチ装置のハードウェア例を示す図である。ＦＣスイッチ装置２００は、ルーティングコントローラ２０１、メモリ２０２、ＳＶＰ２０３、クロスバースイッチ２０４、Ｉ／Ｆ（InterFace）コントローラ２０５，２０５ａ，２０５ｂ，２０５ｃ，２０５ｄ，２０５ｅ、バッファ２０６，２０６ａ，２０６ｂ，２０６ｃ，２０６ｄ，２０６ｅおよびポート２０７，２０７ａ，２０７ｂ，２０７ｃ，２０７ｄ，２０７ｅを有する。
【００４２】
なお、以下ではＩ／Ｆコントローラ２０５、バッファ２０６およびポート２０７について説明するが、Ｉ／Ｆコントローラ２０５ａ，２０５ｂ，２０５ｃ，２０５ｄ，２０５ｅ、バッファ２０６ａ，２０６ｂ，２０６ｃ，２０６ｄ，２０６ｅおよびポート２０７ａ，２０７ｂ，２０７ｃ，２０７ｄ，２０７ｅに関しても同様である。
【００４３】
ルーティングコントローラ２０１は、複数のＳＡＮ（Storage Area Network）間でのデータ通信を制御する。
メモリ２０２は、ルーティングコントローラ２０１の処理に用いるデータを記憶する。例えば、ＳＡＮ間を接続するためのルーティングテーブルを記憶する。
【００４４】
ＳＶＰ２０３は、ＦＣスイッチ装置２００を管理するための装置である。ＳＶＰ２０３は、管理端末装置２１に接続される。ＳＶＰ２０３は、ＦＣスイッチ装置２００を管理するためのＧＵＩを管理端末装置２１に表示させる。管理者は、管理端末装置２１で当該ＧＵＩを操作して、ＦＣスイッチ装置２００に対する指示を行える。
【００４５】
クロスバースイッチ２０４は、各ポートを介した装置間のデータ通信を中継する。
Ｉ／Ｆコントローラ２０５は、各ポート間のデータの流れを制御する。
バッファ２０６は、データの流れを制御するためにデータを一時的に格納するための記憶領域である。
【００４６】
ポート２０７は、外部の装置と接続するためのアダプタである。ポート２０７は、ＦＣケーブルを介してサーバ装置１００と接続されている。ポート２０７ｃは、ＦＣケーブルを介してストレージ装置３００と接続されている。ポート２０７ｄは、ＦＣケーブルを介してストレージ装置３００ａと接続されている。
【００４７】
図５は、仮想マシンの配置例を示すブロック図である。サーバ装置１００は、ハードウェア１２０、ハイパーバイザ１４０および仮想マシン１５０，１５０ａを有する。
ハードウェア１２０は、サーバ装置１００が備える物理的なリソースである。ハードウェア１２０は、ＣＰＵボード１０１、ＰＣＩ  Ｅｘｐｒｅｓｓコントローラ１０３、ＳＡＳインタフェース１０４、ＨＤＤ１０５、ＦＣインタフェース１０６、ネットワークインタフェース１０７およびディスクドライブ１０９を含む。
【００４８】
ハイパーバイザ１４０は、仮想マシンを実現する。ハイパーバイザ１４０は、各仮想マシンに対するハードウェア１２０の割り当てを行い、各仮想マシンの起動・停止を制御する。また、ハイパーバイザ１４０は、各仮想マシンがハードウェア１２０を共同で利用できるよう各仮想マシンのハードウェア１２０へのアクセスを調停する。更に、ハイパーバイザ１４０は各仮想マシンに割り当てたハードウェア１２０の使用状況を監視する。
【００４９】
仮想マシン１５０，１５０ａは、ハイパーバイザ１４０によりサーバ装置１００上に実現された仮想マシンである。仮想マシン１５０，１５０ａは、それぞれ独立のＯＳを実行している。仮想マシン１５０，１５０ａは、その起動のときにＯＳプログラムをストレージ装置３００，３００ａから取得できる。具体的には、仮想マシン１５０，１５０ａはハイパーバイザ１４０から提供される起動コードによりストレージ装置３００，３００ａとの接続を確立する。そして、仮想マシン１５０，１５０ａはストレージ装置３００，３００ａの所定の記憶領域からＯＳプログラムをロードする。
【００５０】
仮想マシン１５０，１５０ａが実行するＯＳはそれぞれ同一でもよいし、異なっていてもよい。同一のＯＳとしても起動時の設定が異なっていてもよい。
図６は、第２の実施の形態のハードウェアの割当例を示すブロック図である。仮想マシン１５０，１５０ａはサーバ装置１００上のハードウェア１２０を論理的に分割したリソースにより実現される。図６ではハードウェア１２０に含まれる主要なものとして、ＣＰＵ１１１、ＲＡＭ１１２およびＦＣインタフェース１０６を示している。
【００５１】
ＣＰＵ１１１は、ＣＰＵリソース１１，ｌ２，ｌ３，ｌ４に時分割される。例えば、ＣＰＵリソースｌ１，ｌ２は仮想マシン１５０に割り当てられ、ＣＰＵリソースｌ３，ｌ４は仮想マシン１５０ａに割り当てられる。ＣＰＵは、命令単位、処理単位、演算回路単位で分割してもよい。
【００５２】
ＲＡＭ１１２は、ＲＡＭリソースｍ１，ｍ２に領域分割される。例えば、ＲＡＭリソースｍ１が仮想マシン１５０に割り当てられ、ＲＡＭリソースｍ２が仮想マシン１５０ａに割り当てられる。
【００５３】
ＦＣインタフェース１０６は、ＦＣインタフェースリソースｎ１，ｎ２に分割される。例えば、ＦＣインタフェースリソースｎ１，ｎ２には、ＦＣコントローラ１１４を時分割したリソースが含まれる。また、例えば、ＦＣインタフェースリソースｎ１，ｎ２には、バッファ用に確保されたメモリ１１５を領域分割したリソースが含まれる。例えば、ＦＣインタフェースリソースｎ１が仮想マシン１５０に割り当てられ、ＦＣインタフェースリソースｎ２が仮想マシン１５０ａに割り当てられる。ＦＣインタフェース１０６を物理ＨＢＡとすれば、ＦＣインタフェースリソースｎ１，ｎ２は当該物理ＨＢＡ上で実現される仮想ＨＢＡである。
【００５４】
図７は、第２の実施の形態のサーバ装置の機能を示すブロック図である。サーバ装置１００は、起動コード記憶部１３０，１６０、ハイパーバイザ１４０、仮想マシン１５０，１５０ａ、物理ファンクション（ＰＦ：Physical Function）１７０および仮想ファンクション（ＶＦ：Virtual Function）１８０，１８０ａ，１８０ｂを有する。起動コード記憶部１３０、ハイパーバイザ１４０および仮想マシン１５０，１５０ａの機能は、ＣＰＵ１１１が所定のプログラムを実行することによりサーバ装置１００上に実現される。また、起動コード記憶部１６０、ＰＦ１７０およびＶＦ１８０，１８０ａ，１８０ｂの機能は、ＦＣコントローラ１１４が所定のプログラムを実行することによりサーバ装置１００上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
【００５５】
起動コード記憶部１３０は、複数の起動コードおよび起動管理テーブルを記憶する。起動コードは、仮想マシン１５０，１５０ａがストレージ装置３００，３００ａとの接続を確立し、ストレージ装置３００，３００ａからＯＳプログラムを取得するための処理や設定内容を記述したデータである。起動管理テーブルは、仮想マシン１５０，１５０ａとストレージ装置３００，３００ａとの接続や起動コードの対応関係を定義したデータである。
【００５６】
ハイパーバイザ１４０は、制御部１４１を有する。制御部１４１は、ＦＣインタフェース１０６から起動コードを取得し、仮想マシン１５０，１５０ａごとに複製して起動コード記憶部１３０に格納する。ハイパーバイザ１４０は、仮想マシン１５０，１５０ａごとに起動コードを編集する。編集内容は、例えば管理端末装置１１から指示される。制御部１４１は、仮想マシン１５０，１５０ａが起動するときに、起動コード記憶部１３０から仮想マシン１５０，１５０ａに応じた起動コードを選択し、選択した起動コードを仮想マシン１５０，１５０ａに提供する。このとき、制御部１４１は起動コード記憶部１３０に記憶された起動管理テーブルを参照して、仮想マシン１５０，１５０ａに応じた起動コードを選択する。
【００５７】
仮想マシン１５０は、ファームウェア１５１およびＯＳ１５２を有する。
ファームウェア１５１は、仮想マシン１５０上にＯＳ１５２のプログラムをロードし、ＯＳ１５２を起動するためのソフトウェアである。
【００５８】
ＯＳ１５２は、仮想マシン１５０上で動作する基本プログラムである。
仮想マシン１５０ａは、ファームウェア１５１ａおよびＯＳ１５２ａを有する。ファームウェア１５１ａはファームウェア１５１に対応する。ＯＳ１５２ａはＯＳ１５２に対応する。
【００５９】
起動コード記憶部１６０は、起動コードを記憶する。起動コード記憶部１６０に記憶される起動コードは、例えば管理者により予め設定される。この起動コードは、起動コード記憶部１３０に記憶される起動コードの雛型となるデフォルトの起動コードである。
【００６０】
ＰＦ１７０は、データ通信制御用のモジュールである。ＰＦ１７０は、ＦＣインタフェース１０６上でＶＦ１８０，１８０ａ，１８０ｂを実現する。また、ＰＦ１７０は、ハイパーバイザ１４０からの要求により、起動コード記憶部１６０に記憶された起動コードをハイパーバイザ１４０に出力する。ＰＦ１７０は、アクセス部の一例である。
【００６１】
ＶＦ１８０，１８０ａ，１８０ｂは、ＰＦ１７０によって生成されたデータ通信制御用のモジュールである。ＶＦ１８０，１８０ａ，１８０ｂは、仮想マシン１５０，１５０ａに対して仮想的なアダプタとして機能する。仮想マシン１５０，１５０ａは、ＶＦ１８０，１８０ａ，１８０ｂにアクセスすることで、単一のＰＦ１７０を共有して、外部のストレージ装置３００，３００ａとのデータ通信を行える。
【００６２】
なお、ＦＣインタフェース１０６が実行するＶＦの数は、運用に応じて決定できる。図７では３つ実行する場合を例示したが、３つ以外の数でもよい。
図８は、起動コードのデータ構造例を示す図である。図８（Ａ）は、起動コード記憶部１６０に記憶される起動コード１６１を示している。図８（Ｂ）は、起動コード記憶部１３０に記憶される起動コード１３１，１３１ａを示している。
【００６３】
起動コード１６１は、アクセス先装置ＩＤ（IDentifier）の設定を含む。アクセス先装置ＩＤには、接続先のストレージ装置を識別するための情報が設定される。当該識別情報は、例えば接続先のストレージ装置に対応するＷＷＮである。例えば、ストレージ装置３００が備えるＦＣインタフェースのＷＷＮがデフォルトで設定される。
【００６４】
起動コード１３１，１３１ａは、アクセス先装置ＩＤおよび起動コードＩＤの設定を含む。アクセス先装置ＩＤは、起動コード１６１に設定されるアクセス先装置ＩＤに対応している。
【００６５】
起動コード１３１，１３１ａには、互いに別個のアクセス先装置ＩＤを設定可能である。例えば、起動コード１３１のアクセス先装置ＩＤには、ストレージ装置３００が備えるＦＣインタフェースのＷＷＮが設定される。また、起動コード１３１ａのアクセス先装置ＩＤには、ストレージ装置３００ａが備えるＦＣインタフェースのＷＷＮが設定される。
【００６６】
また、起動コードＩＤは、起動コード１３１，１３１ａを一意に識別するための識別情報である。例えば、起動コード１３１には、起動コードＩＤ“０”が設定される。また、起動コード１３１ａには、起動コードＩＤ“１”が設定される。
【００６７】
起動コード１３１，１３１ａのアクセス先装置ＩＤおよび起動コードＩＤの値は、制御部１４１によって設定される。
図９は、第２の実施の形態の起動管理テーブルのデータ構造例を示す図である。起動管理テーブル１３２は、起動コード記憶部１３０に格納される。起動管理テーブル１３２は、制御部１４１により更新される。起動管理テーブル１３２には、物理ホストＩＤ、仮想ホストＩＤ、ＶＦ、ＰＦ、パス、仮想ポート、起動コードＩＤ、起動指定および割当状態の項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つの仮想マシンに対するＶＦや起動コードの割り当てが示される。
【００６８】
物理ホストＩＤの項目には、ＣＰＵボードの識別情報が設定される。仮想ホストＩＤの項目には、仮想マシンの識別情報が設定される。ＶＦの項目には、ＶＦの識別情報が設定される。ＶＦの識別情報は、ＶＦを動作させるＦＣインタフェース１０６のデバイスのＩＤと、ＰＦ上で個々のＶＦを識別するための番号との組で構成される。ＰＦの項目には、ＰＦの識別情報が設定される。ＰＦの識別情報は、ＰＦを動作させるＦＣインタフェース１０６のデバイスのＩＤと、個々のＰＦを識別するための番号との組で構成される。パスの項目には、ファームウェアがＰＦとＶＦを対応付けて識別するためのデバイスパス情報が設定される。仮想ポートの項目には、ＦＣインタフェース１０６上で利用可能な仮想ポートの識別情報が設定される。仮想ポートの情報としては、例えばＮＰＩＶ（N Port ID Virtualization）を用いることができる。起動コードＩＤの項目には、起動コードＩＤが設定される。起動指定の項目には、仮想マシン上のＯＳの起動に用いるものであるか否かを示す情報が設定される（以下、単に起動用という場合、仮想マシン上のＯＳの起動用であることを示すとする）。割当状態を示す項目には、当該ＶＦが何れかの仮想マシンに割当済であるか否かを示す情報が設定される。
【００６９】
例えば、起動管理テーブル１３２には、物理ホストＩＤが“０”、仮想ホストＩＤが“０”、ＶＦにつきＩＤが“１０ＣＦ１２２３”、番号が“０”、ＰＦにつきＩＤが“１０ＣＦ１２２３”、番号が“０”、パスが“／ｐｃｉ＠０／ｖｄｅｖ０／ｆｃ０”、仮想ポートが“０”、起動コードＩＤが“０”、起動指定が“起動用”、割当状態が“割当済”という情報が設定される。
【００７０】
これは、仮想マシン１５０とＶＦ１８０とＰＦ１７０上の仮想ポートの対応関係を示している。すなわち、ＣＰＵボード１０１（物理ホストＩＤ“０”）で実現される仮想マシン１５０（仮想ホストＩＤ“０”）に対して、ＶＦ１８０（ＩＤ−番号の組が“１０ＣＦ１２２３−０”）が対応付けられていることを示す。また、ＶＦ１８０に対して入出力するためのデバイスパス情報が“／ｐｃｉ＠０／ｖｄｅｖ０／ｆｃ０”であることを示す。更に、ＶＦ１８０にＰＦ１７０（ＩＤ−番号の組が“１０ＣＦ１２２３−０”）の仮想ポート“０”が対応付けられていることを示す。また、ＶＦ１８０が仮想マシン上のＯＳの起動用として指定されており、仮想マシン１５０に割当済であることを示す。
【００７１】
また、例えば、起動管理テーブル１３２には、物理ホストＩＤが“０”、仮想ホストＩＤが“１”、ＶＦにつきＩＤが“１０ＣＦ１２２３”、番号が“１”、ＰＦにつきＩＤが“１０ＣＦ１２２３”、番号が“０”、パスが“／ｐｃｉ＠０／ｖｄｅｖ１／ｆｃ１”、仮想ポートが“１”、起動コードＩＤが“１”、起動指定が“起動用”、割当状態が“割当済”という情報が設定される。
【００７２】
これは、仮想マシン１５０ａとＶＦ１８０ａとＰＦ１７０上の仮想ポートの対応関係を示している。すなわち、ＣＰＵボード１０１（物理ホストＩＤ“０”）で実現される仮想マシン１５０ａ（仮想ホストＩＤ“１”）に対して、ＶＦ１８０ａ（ＩＤ−番号の組が“１０ＣＦ１２２３−１”）が対応付けられていることを示す。また、ＶＦ１８０ａに対して入出力するためのデバイスパス情報が“／ｐｃｉ＠０／ｖｄｅｖ１／ｆｃ１”であることを示す。更に、ＶＦ１８０ａにＰＦ１７０の仮想ポート“１”が対応付けられていることを示す。また、ＶＦ１８０ａが仮想マシン上のＯＳの起動用として指定されており、仮想マシン１５０ａに割当済であることを示す。
【００７３】
また、例えば、起動管理テーブル１３２には、物理ホストＩＤが“０”、仮想ホストＩＤが“−”（ハイフン）、ＶＦにつきＩＤが“１０ＣＦ１２２３”、番号が“２”、ＰＦにつきＩＤが“１０ＣＦ１２２３”、番号が“０”、パスが“−”（ハイフン）、仮想ポートが“−”（ハイフン）、起動コードＩＤが“−”（ハイフン）、起動指定が“非起動用”、割当状態が“未割当”という情報が設定される。
【００７４】
これは、ＶＦ１８０ｂの情報を示している。具体的には、ＶＦ１８０ｂ（ＩＤ−番号の組が“１０ＣＦ１２２３−２”）に対してＰＦ１７０（ＩＤ−番号の組が“１０ＣＦ１２２３−０”）が対応付けられていることを示す。また、仮想ホストＩＤ、パス、仮想ポート、起動コードＩＤが設定なし（“−”）であり、割当状態が“未割当”であることから、ＶＦ１８０ｂは何れの仮想マシンにも割り当てられていないことを示す。
【００７５】
なお、起動指定の項目の設定は、ＶＦ１８０ｂを仮想マシン上のＯＳの起動用として利用するのか、または、何れかのアプリケーションの起動用として利用するのか、が確定していないので、デフォルトの設定として“非起動用”が設定される。
【００７６】
例えば、仮想マシン１５０，１５０ａの何れかに対して、未割当のＶＦ１８０ｂを所定のアプリケーションの起動用に割り当てることも可能である。その場合には、起動指定の項目の設定は“非起動用”となる。このように、起動用に利用するＶＦと、それ以外の用途で利用するＶＦとを混在させ、両者を区別して利用することもできる。
【００７７】
また、例えば、仮想マシン１５０，１５０ａの何れかに対して、未割当のＶＦ１８０ｂを仮想マシン上のＯＳの起動用として更に割り当てることも可能である。例えば、異なる起動コードを指定して起動したい場合に有用である。具体的には、仮想マシン１５０に未割当のＶＦ１８０ｂ、ＰＦ１７０の仮想ポート“２”および起動コード１３１ａを新たに対応付けることが考えられる。
【００７８】
次に、以上の構成のサーバ装置１００の処理手順を説明する。
図１０は、第２の実施の形態の全体処理を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
【００７９】
（ステップＳ１１）サーバ装置１００が起動する。すると、ＣＰＵボード１０１によりハイパーバイザ１４０が実行される。
（ステップＳ１２）制御部１４１は、起動コード記憶部１３０に記憶された起動管理テーブル１３２を参照して、仮想マシンとＶＦとＰＦの仮想ポートとの対応関係をチェックする。例えば、割当済のＶＦやＰＦの存在が確認できない場合に、その旨を管理端末装置１１に通知することが考えられる。
【００８０】
（ステップＳ１３）制御部１４１は、ＶＦ割当指示を受け付けたか否かを判定する。ＶＦ割当指示は、例えば管理者が管理端末装置１１で管理用のＧＵＩに対し所定の操作を行うことで制御部１４１に入力される。ＶＦ割当指示を受け付けた場合、処理をステップＳ１４に進める。ＶＦ割当指示を受け付けていない場合、処理をステップＳ１５に進める。ここで、ＶＦ割当指示には、新規にＶＦを割り当てたい仮想マシンを示す情報および割り当てたいＰＦおよび割り当てるＶＦの数を指定する情報が含まれる。ＰＦを指定することは、当該ＰＦ上で実現されるＶＦの組を指定することともいえる。
【００８１】
（ステップＳ１４）制御部１４１は、ＶＦ割当指示に基づいてＶＦ割当処理を行う。そして、処理をステップＳ１９に進める。
（ステップＳ１５）制御部１４１は、ＶＦ解除指示を受け付けたか否かを判定する。ＶＦ解除指示は、例えば管理者が管理端末装置１１で管理用のＧＵＩに対し所定の操作を行うことで制御部１４１に入力される。ＶＦ解除指示を受け付けた場合、処理をステップＳ１６に進める。ＶＦ解除指示を受け付けていない場合、処理をステップＳ１７に進める。ここで、ＶＦ解除指示には、解除対象とするＶＦを示す情報が含まれる。
【００８２】
（ステップＳ１６）制御部１４１は、ＶＦ解除指示に基づいてＶＦ解除処理を行う。そして、処理をステップＳ１９に進める。
（ステップＳ１７）制御部１４１は、仮想マシン起動指示を受け付けたか否かを判定する。仮想マシン起動指示は、例えば管理者が管理端末装置１１で管理用のＧＵＩに対し所定の操作を行うことで制御部１４１に入力される。仮想マシン起動指示を受け付けた場合、処理をステップＳ１８に進める。仮想マシン起動指示を受け付けていない場合、処理をステップＳ１９に進める。ここで、仮想マシン起動指示には、起動対象の仮想マシンを示す情報が含まれる。
【００８３】
（ステップＳ１８）制御部１４１は、仮想マシン起動指示に基づいて仮想マシンを起動する。
（ステップＳ１９）ハイパーバイザ１４０は、サーバ装置１００が停止されるか否かを判定する。サーバ装置１００が停止される場合、サーバ装置１００の停止に備えてハイパーバイザ１４０は停止処理を行い、処理を終了する。サーバ装置１００が停止されない場合、処理をステップＳ１３に進める。
【００８４】
このようにして、サーバ装置１００は各種指示に応じてＶＦの割当・解除および仮想マシン上のＯＳの起動を行う。以下では、これらの各処理を個別に説明する。
まず、上記ステップＳ１４のＶＦ割当処理を説明する。
【００８５】
図１１は、第２の実施の形態のＶＦ割当処理を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
（ステップＳ２１）制御部１４１は、ＶＦ割当指示を取得する。ＶＦ割当指示には、例えば、仮想マシン１５０，１５０ａに対してＰＦ１７０からＶＦ２つを起動用として割り当てる旨の指示が含まれる。制御部１４１は、ＶＦ割当指示に含まれるＰＦと要求ＶＦ数（この場合、２である）とを特定する。
【００８６】
（ステップＳ２２）制御部１４１は、特定したＰＦからＰＦ上に構成されるＶＦの数を確認し、起動コードをロードする。例えば、制御部１４１は、ＰＦ１７０から起動コード１６１をロードする。このとき、ＰＦ１７０により、起動コード記憶部１６０に記憶された起動コード１６１が読み出され、制御部１４１に出力される。
【００８７】
（ステップＳ２３）制御部１４１は、起動管理テーブル１３２を参照して、当該ＰＦにつき未割当ＶＦ数を取得する。例えば、ＰＦ１７０につき割当済ＶＦ数として３を取得する（例えば、ＶＦ１８０，１８０ａ，１８０ｂの割当状態が全て“未割当”である）。
【００８８】
（ステップＳ２４）制御部１４１は、未割当ＶＦ数と要求ＶＦ数を比較する。
（ステップＳ２５）制御部１４１は、要求されたＶＦを割当可能であるか否かを判定する。割当可能である場合とは、未割当ＶＦ数が要求ＶＦ数以上である場合である。一方、割当不可能である場合とは、未割当ＶＦ数が要求ＶＦ数よりも小さい場合である。要求されたＶＦを割当可能である場合、処理をステップＳ２７に進める。要求されたＶＦを割当不可能である場合、処理をステップＳ２６に進める。なお、制御部１４１は、割当可能である場合、割り当てるＶＦを選択する。例えば、ＶＦの識別情報の昇順に割り当てるＶＦを選択する。例えば、ＶＦ１８０，１８０ａ，１８０ｂのうち、ＶＦ１８０，１８０ａを割り当て対象として選択する。
【００８９】
（ステップＳ２６）制御部１４１は、要求されたＰＦからＶＦを割り当てることができない旨を管理端末装置１１に通知する。管理者は、当該通知を確認して、別のＰＦを指定したＶＦ割当要求を再度行える。
【００９０】
（ステップＳ２７）制御部１４１は、ステップＳ２２でＰＦからロードした起動コードを要求ＶＦ数分だけ複製する。このとき、制御部１４１は、複製した起動コードに起動コードＩＤを付加する。例えば、ＰＦ１７０からロードした起動コード１６１を要求ＶＦ数“２”の分だけコピーして、起動コード１３１，１３１ａを生成する。そして、制御部１４１は、例えば起動コード１３１に起動コードＩＤ“０”を付加する。起動コード１３１ａに起動コードＩＤ“１”を付加する。
【００９１】
（ステップＳ２８）制御部１４１は、管理端末装置１１の指示により、ＶＦごとの起動コードを更新する。具体的には、制御部１４１は起動コード１３１，１３１ａのアクセス先装置ＩＤを管理者が指定した設定内容に変更する。例えば、起動コード１３１のアクセス先装置ＩＤをストレージ装置３００のＷＷＮに変更する。また、起動コード１３１ａのアクセス先装置ＩＤをストレージ装置３００ａのＷＷＮに変更する。なお、アクセス先装置の指定は、アクセス先装置ＩＤによる他、トポロジ（接続形態）の情報によって指定することも考えられる。
【００９２】
（ステップＳ２９）制御部１４１は、管理端末装置１１から編集完了の指示を受けると、変更後の起動コードを起動コード記憶部１３０に保存する。例えば、制御部１４１は起動コード記憶部１３０に起動コード１３１，１３１ａを保存する。
【００９３】
（ステップＳ３０）制御部１４１は、起動管理テーブル１３２を更新する。例えば、制御部１４１は、仮想マシン１５０（仮想ホストＩＤ“０”）と、ＶＦ１８０（ＩＤと番号の組“１０ＣＦ１２２３−０”）と、ＰＦ１７０の仮想ポート“０”と、起動コード１３１（起動コードＩＤ“０”）とを対応付け、パスを設定する。また、制御部１４１は、仮想マシン１５０ａ（仮想ホストＩＤ“１”）と、ＶＦ１８０ａ（ＩＤと番号の組“１０ＣＦ１２２３−１”）と、ＰＦ１７０の仮想ポート“１”と、起動コード１３１ａ（起動コードＩＤ“１”）とを対応付け、パスを設定する。更に、これらの各レコードにつき起動指定を“起動用”に、割当状態を“割当済”に設定する。そして、制御部１４１は、割当完了を管理端末装置１１に通知する。
【００９４】
このように、制御部１４１はＶＦ割当指示を受け付けると、起動管理テーブル１３２を編集して、仮想マシン１５０，１５０ａに対するＶＦ１８０，１８０ａの割り当てを行う。
【００９５】
なお、ＶＦ割当指示に各ＶＦに設定したいアクセス先装置ＩＤやその他の設定情報を含めてもよい。その場合、ステップＳ２８では制御部１４１はＶＦ割当指示で指定されたアクセス先装置ＩＤなどを起動コード１３１，１３１ａに設定できる。このため、ステップＳ２８での管理者の操作を省ける。
【００９６】
また、ステップＳ３０では、仮想マシン１５０とＶＦ１８０を対応付け、仮想マシン１５０ａとＶＦ１８０ａを対応付ける場合（ＩＤの昇順に対応付ける場合）を例示したが、このような方法に限らない。例えば、仮想マシン１５０とＶＦ１８０ａを対応付け、仮想マシン１５０ａとＶＦ１８０を対応付けてもよい。更に、ＰＦ１７０の仮想ポートの割り当ては、例えば未割当の仮想ポートをＩＤの昇順などで選択して割り当てればよい。
【００９７】
図１２は、第２の実施の形態のＶＦ割当処理を示すシーケンス図である。以下、図１２に示す処理をステップ番号に沿って説明する。なお、以下に示すステップＳＴ１０１の直前では、起動コード記憶部１３０に記憶された起動管理テーブル１３２において、ＶＦ１８０，１８０ａ，１８０ｂの割当状態が“未割当”であるとする。
【００９８】
（ステップＳＴ１０１）管理端末装置１１は、ハイパーバイザ１４０にＶＦ割当指示を送信する。ＶＦ割当指示は、仮想マシン１５０，１５０ａに対してＰＦ１７０からＶＦを２つ割り当てる旨の指示を含むとする。
【００９９】
（ステップＳＴ１０２）ハイパーバイザ１４０は、ＶＦ割当指示を受信すると、指定されたＰＦ１７０に起動コード１６１を要求する。
（ステップＳＴ１０３）ＰＦ１７０は、ハイパーバイザ１４０からの要求に応じて、起動コード記憶部１６０から起動コード１６１を取得し、ハイパーバイザ１４０に出力する。
【０１００】
（ステップＳＴ１０４）ハイパーバイザ１４０は、起動コード１６１に基づいてＰＦ上に構成されるＶＦの数を確認する。ハイパーバイザ１４０は、起動コード記憶部１３０に記憶された起動管理テーブル１３２を参照し、ＰＦ１７０上の未割当のＶＦ１８０，１８０ａ，１８０ｂに対して、仮想マシン１５０，１５０ａを割当可能と判断する。
【０１０１】
（ステップＳＴ１０５）起動コード１６１を複製して、起動コード１３１，１３１ａを生成する。ハイパーバイザ１４０は、起動コード１３１，１３１ａに起動コードＩＤを付加する。ハイパーバイザ１４０は、起動コード１３１，１３１ａの内容を管理端末装置１１に表示させ、当該管理端末装置１１上のＧＵＩから編集可能とする。管理者は当該ＧＵＩから各起動コードの編集内容を入力する。管理端末装置１１は、起動コード１３１，１３１ａに対する編集内容をハイパーバイザ１４０に送信する。管理端末装置１１は編集完了の入力を受け付けると、それをハイパーバイザ１４０に通知する。
【０１０２】
（ステップＳＴ１０６）ハイパーバイザ１４０は、編集内容を起動コード１３１，１３１ａに反映させて起動コード記憶部１３０に保存する。そして、ハイパーバイザ１４０は、起動管理テーブル１３２を更新する。
【０１０３】
（ステップＳＴ１０７）ハイパーバイザ１４０は割当完了を管理端末装置１１に通知する。
このようにして、ハイパーバイザ１４０はＰＦ１７０から起動コード１６１を取得し、当該起動コード１６１を雛型として、起動コード１３１，１３１ａを生成する。ハイパーバイザ１４０は、仮想マシン１５０，１５０ａ、ＶＦ１８０，１８０ａ、ＰＦ１７０の仮想ポートおよび起動コード１３１，１３１ａを対応付ける。ハイパーバイザ１４０は、起動管理テーブル１３２によって、その対応関係を管理する。
【０１０４】
次に、図１０のステップＳ１６のＶＦ解除処理を説明する。
図１３は、第２の実施の形態のＶＦ解除処理を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
【０１０５】
（ステップＳ３１）制御部１４１は、割当解除指示の内容から割当解除対象のＶＦを特定する。例えば、制御部１４１はＶＦ１８０を割当解除対象として特定する。
（ステップＳ３２）制御部１４１は、割当解除対象のＶＦ、および当該ＶＦが属するＰＦに通信のために確保していた資源の解放を指示する。例えば、制御部１４１はＰＦ１７０およびＶＦ１８０に資源解放を指示する。
【０１０６】
（ステップＳ３３）制御部１４１は、起動管理テーブル１３２を更新する。具体的には、ＶＦ１８０のレコードに設定された仮想ホストＩＤ、パス、仮想ポート、起動コードＩＤの各項目の設定値をクリアする。また、起動指定の項目に非起動用を設定する。更に、割当状態の項目を“未割当”に設定する。
【０１０７】
このように、制御部１４１はＶＦ解除指示を受け付けると、起動管理テーブル１３２を編集して、仮想マシン１５０に対するＶＦ１８０の割り当てを解除する。
図１４は、第２の実施の形態のＶＦ解除処理を示すシーケンス図である。以下、図１４に示す処理をステップ番号に沿って説明する。なお、以下に示すステップＳＴ１１１の直前では、起動コード記憶部１３０に記憶された起動管理テーブル１３２において仮想マシン１５０（仮想ホストＩＤ“０”）、ＶＦ１８０（ＶＦのＩＤと番号の組が“１０ＣＦ１２２３−０”）および起動コード１３１（起動コードＩＤ“０”）が対応付けられた状態であるとする。
【０１０８】
（ステップＳＴ１１１）管理端末装置１１は、ハイパーバイザ１４０にＶＦ解除指示を送信する。ＶＦ解除指示は、ＶＦ１８０の割り当てを解除する旨の指示を含むとする。
（ステップＳＴ１１２）ハイパーバイザ１４０は、ＶＦ解除指示を受信すると、解除指示を受けたＶＦ１８０と、ＶＦ１８０が属するＰＦ１７０に対して、確保している資源の解放指示を送信する。
【０１０９】
（ステップＳＴ１１３）ＰＦ１７０は、資源解放指示に応じて、ＶＦ１８０を用いた通信用にメモリ１１５に確保していた記憶領域などを解放する。ＶＦ１８０も同様に通信用にメモリ１１５に確保していた記憶領域などを解放する。そして、ＰＦ１７０は、資源解放が完了した旨をハイパーバイザ１４０に応答する。
【０１１０】
（ステップＳＴ１１４）ハイパーバイザ１４０は、起動コード記憶部１３０に記憶された起動管理テーブル１３２を更新する。具体的には、ＶＦ１８０に対応付けられていた仮想マシン１５０、パス、ＰＦ１７０の仮想ポートおよび起動コード１３１の情報を起動管理テーブル１３２上から削除する。
【０１１１】
（ステップＳＴ１１５）ハイパーバイザ１４０は、管理端末装置１１にＶＦ解除指示に応じたＶＦ解除を完了した旨を通知する。
このようにして、ハイパーバイザ１４０はＶＦ１８０の割当解除を行う。ハイパーバイザ１４０は、起動管理テーブル１３２の設定内容を更新して、ＶＦ１８０が未割当の状態として管理される。これにより、ＶＦ１８０が他の仮想マシンに対して割当可能な状態となり、ＶＦ１８０の状態を適切に管理できる。
【０１１２】
なお、上記ステップＳＴ１１４では、起動コード記憶部１３０から起動コード１３１を削除せずに残すものとした。ただし、起動コード記憶部１３０から起動コード１３１を削除してもよい。
【０１１３】
次に、図１０のステップＳ１８の仮想マシン起動処理を説明する。
図１５は、第２の実施の形態の仮想マシン起動処理を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
【０１１４】
（ステップＳ４１）制御部１４１は、仮想マシン起動指示を受け付けると、指示された仮想マシンのファームウェアをＣＰＵ１１１に実行させる。例えば、制御部１４１は仮想マシン１５０，１５０ａの起動指示を受け付ける。すると、ファームウェア１５１，１５１ａをＣＰＵ１１１に実行させる。これにより、ファームウェア１５１，１５１ａの機能がサーバ装置１００上に実現され、仮想マシン１５０，１５０ａの起動が開始される。
【０１１５】
（ステップＳ４２）制御部１４１は、起動コード記憶部１３０に記憶された起動管理テーブル１３２を参照して、起動対象の仮想マシンに割り当てられたＶＦが存在するか否かを判定する。存在する場合、処理をステップＳ４３に進める。存在しない場合、処理を終了する。例えば、制御部１４１は、起動対象の仮想マシン１５０，１５０ａに対して、ＶＦ１８０，１８０ａが割当済であることを確認する。
【０１１６】
（ステップＳ４３）制御部１４１は、起動管理テーブル１３２を参照して、起動対象の仮想マシンに割り当てられた起動コードが存在するか否かを判定する。存在する場合、処理をステップＳ４４に進める。存在しない場合、処理を終了する。例えば、制御部１４１は、起動対象の仮想マシン１５０，１５０ａに対して起動コード１３１，１３１ａが割当済であることを確認する。
【０１１７】
（ステップＳ４４）制御部１４１は、ステップＳ４１でサーバ装置１００上に実現されたファームウェアに仮想マシンの起動指示を行う。すると、ファームウェアはＯＳプログラムをロードするための起動コードを制御部１４１に要求する。例えば、起動指示を受けたファームウェア１５１，１５１ａは、起動コードを制御部１４１に要求する。
【０１１８】
（ステップＳ４５）制御部１４１は、当該要求を受けると、起動コード記憶部１３０に記憶された起動管理テーブル１３２を参照し、各仮想マシンに対応付けられた起動コードを特定する。例えば、仮想マシン１５０に対して起動コード１３１を特定し、仮想マシン１５０ａに対して起動コード１３１ａを特定する。制御部１４１は、起動コード１３１をファームウェア１５１に提供する。制御部１４１は、起動コード１３１ａをファームウェア１５１ａに提供する。
【０１１９】
（ステップＳ４６）ファームウェア１５１，１５１ａは、制御部１４１から取得した起動コードと仮想ポートに基づいてストレージ装置３００，３００ａとの接続を確立し、各装置からＯＳプログラムをロードする。例えば、ファームウェア１５１は、起動コード１３１のアクセス先装置ＩＤで指定されたＷＷＮに対応するストレージ装置３００との接続を確立し、ストレージ装置３００からＯＳプログラムをロードする。また、ファームウェア１５１ａは、起動コード１３１ａのアクセス先装置ＩＤで指定されたＷＷＮに対応するストレージ装置３００ａとの接続を確立し、ストレージ装置３００ａからＯＳプログラムをロードする。そして、ファームウェア１５１，１５１ａは、ロードしたＯＳプログラムをＣＰＵ１１１に実行させることで、ＯＳ１５２，１５２ａを起動する。
【０１２０】
このようにして、制御部１４１は仮想マシン１５０，１５０ａを起動するときに、起動コード記憶部１３０に記憶された起動コード１３１，１３１ａを取得して、仮想マシン１５０，１５０ａに提供する。
【０１２１】
なお、上記ステップＳ４２，Ｓ４３において、処理を終了する場合に、制御部１４１はファームウェア１５１，１５１ａを停止させてもよい。また、制御部１４１は処理を終了する場合に、処理を終了する理由（割り当てられたＶＦまたは起動コードが存在しないなど）を管理端末装置１１に通知してもよい。
【０１２２】
図１６は、第２の実施の形態の仮想マシン起動処理を示すシーケンス図である。以下、図１６に示す処理をステップ番号に沿って説明する。
（ステップＳＴ１２１）管理端末装置１１は、ハイパーバイザ１４０に仮想マシン起動指示を送信する。仮想マシン起動指示は、仮想マシン１５０，１５０ａを指定する情報を含むとする。
【０１２３】
（ステップＳＴ１２２）ハイパーバイザ１４０は、仮想マシン起動指示を受信すると、仮想マシン１５０，１５０ａが指定されていることを検知する。すると、ハイパーバイザ１４０は、起動コード記憶部１３０に記憶された起動管理テーブル１３２を参照して、仮想マシン１５０に対してＶＦ１８０および起動コード１３１が対応付けられていることを確認する。そして、ハイパーバイザ１４０は、仮想マシン１５０に起動指示を出力する。これにより、ファームウェア１５１がサーバ装置１００上で実行開始され、仮想マシン１５０の起動が開始される。
【０１２４】
（ステップＳＴ１２３）ハイパーバイザ１４０は、起動管理テーブル１３２を参照して、仮想マシン１５０ａに対してＶＦ１８０ａおよび起動コード１３１ａが対応付けられていることを確認する。そして、ハイパーバイザ１４０は、仮想マシン１５０ａに起動指示を出力する。これにより、ファームウェア１５１ａがサーバ装置１００上で実行開始され、仮想マシン１５０ａの起動が開始される。
【０１２５】
（ステップＳＴ１２４）仮想マシン１５０は、ハイパーバイザ１４０に起動コードを要求する。
（ステップＳＴ１２５）ハイパーバイザ１４０は、起動コード記憶部１３０から起動コード１３１を取得し、仮想マシン１５０に提供する。
【０１２６】
（ステップＳＴ１２６）仮想マシン１５０ａは、ハイパーバイザ１４０に起動コードを要求する。
（ステップＳＴ１２７）ハイパーバイザ１４０は、起動コード記憶部１３０から起動コード１３１ａを取得し、仮想マシン１５０ａに提供する。
【０１２７】
（ステップＳＴ１２８）仮想マシン１５０は、起動コード１３１で示されるアクセス先装置ＩＤに基づいて、ストレージ装置３００との接続を試みる。その際、ハイパーバイザ１４０は起動管理テーブル１３２を参照して、当該接続をＶＦ１８０に割り当て、更にＰＦ１７０の仮想ポート“０”に対応付ける。すなわち、仮想マシン１５０は、ＶＦ１８０およびＰＦ１７０の仮想ポート“０”を介してストレージ装置３００との接続を確立する。そして、仮想マシン１５０はストレージ装置３００にＯＳプログラムを要求する。
【０１２８】
（ステップＳＴ１２９）ストレージ装置３００は、仮想マシン１５０にＯＳプログラムを送信する。ハイパーバイザ１４０は、ＰＦ１７０の仮想ポート“０”を介して受信したＯＳプログラムをＶＦ１８０に対応付けて、仮想マシン１５０に出力する。仮想マシン１５０は、ＯＳプログラムを受信するとＯＳ１５２を起動する。
【０１２９】
（ステップＳＴ１３０）仮想マシン１５０ａは、起動コード１３１ａで示されるアクセス先装置ＩＤに基づいて、ストレージ装置３００ａとの接続を試みる。その際、ハイパーバイザ１４０は起動管理テーブル１３２を参照して、当該接続をＶＦ１８０ａに割り当て、更にＰＦ１７０の仮想ポート“１”に対応付ける。すなわち、仮想マシン１５０ａは、ＶＦ１８０ａおよびＰＦ１７０の仮想ポート“１”を介してストレージ装置３００ａとの接続を確立する。そして、仮想マシン１５０ａはストレージ装置３００ａにＯＳプログラムを要求する。
【０１３０】
（ステップＳＴ１３１）ストレージ装置３００ａは、仮想マシン１５０ａにＯＳプログラムを送信する。ハイパーバイザ１４０は、ＰＦ１７０の仮想ポート“１”を介して受信したＯＳプログラムをＶＦ１８０ａに対応付けて、仮想マシン１５０ａに出力する。仮想マシン１５０ａは、ＯＳプログラムを受信するとＯＳ１５２ａを起動する。
【０１３１】
このようにして、ハイパーバイザ１４０は、仮想マシン１５０，１５０ａ、ＶＦ１８０，１８０ａ、ＰＦ１７０の仮想ポートおよび起動コード１３１，１３１ａの対応関係を起動管理テーブル１３２により管理する。そして、仮想マシン１５０，１５０ａが起動するときに、ＦＣインタフェース１０６上の起動コード記憶部１６０に記憶された起動コード１６１に代えて、起動コード記憶部１３０に記憶された起動コード１３１，１３１ａを仮想マシン１５０，１５０ａに提供する。
【０１３２】
これにより、仮想マシン１５０，１５０ａはそれぞれ別個の起動コード１３１，１３１ａを用いて、ストレージ装置３００，３００ａとの接続を確立できる。起動コード１３１，１３１ａでアクセス先として互いに異なるストレージ装置を指定すれば、それぞれ別個のストレージ装置からＯＳプログラムをロードでき、別個のＯＳプログラムを仮想マシン１５０，１５０ａ上で起動できる。すなわち、ＯＳプログラムの起動時のアクセス先のストレージ装置３００，３００ａを仮想マシン１５０，１５０ａごとに切り換えられる。
【０１３３】
なお、図９の説明で仮想マシン１５０に起動コード１３１，１３１ａを対応付ける例を示した。この設定をした場合、起動コード１３１，１３１ａのうち何れを用いて仮想マシン１５０を起動するかは、例えばファームウェア１５１に設定し、仮想マシン１５０の起動時にファームウェア１５１からハイパーバイザ１４０に指示する。このようにすれば、仮想マシン１５０上で起動するＯＳを、仮想マシン１５０の起動時に選択可能となる。
【０１３４】
また、以上の説明ではＯＳプログラムの起動について主に説明したが、ＯＳプログラムの起動に限られない。例えば、ＯＳ以外の所定のアプリケーションを起動する際に、当該アプリケーションプログラムをロードするストレージ装置を仮想マシンごとに切り換えることもできる。
【０１３５】
［第３の実施の形態］
次に、第３の実施の形態を説明する。前述の第２の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
【０１３６】
第２の実施の形態では、１つのＣＰＵボード上で実行される複数の仮想マシンに１つのＦＣインタフェース上のＰＦおよびＶＦを割り当てる方法を例示した。
ここで、サーバ装置１００には複数のＣＰＵボードおよび複数のＦＣインタフェースが設けられることもある。その場合、１つのＣＰＵボードと１つのＦＣインタフェースとの間の仮想マシン、ＰＦおよびＶＦの対応付けは、第２の実施の形態と同様にして行える。一方で、１つのＣＰＵボード上の複数の仮想マシンに対して複数のＦＣインタフェースからＶＦを割り当ててもよい。そこで、第３の実施の形態では、複数のＣＰＵボードと複数のＦＣインタフェースを備えたサーバ装置において各仮想マシンに異なるＦＣインタフェースからＶＦを割り当てる方法を説明する。
【０１３７】
なお、第３の実施の形態の情報処理システムの全体構成は、図２で説明した第２の実施の形態の情報処理システムの全体構成と同様であるため説明を省略する。
また、第３の実施の形態のサーバ装置のハードウェア構成は、図３で説明した第２の実施の形態のサーバ装置１００のハードウェア構成と同様であるため説明を省略する（各構成をサーバ装置１００と同一符号で表記する）。ただし、第３の実施の形態のサーバ装置１００はＣＰＵボード１０１ａおよびＦＣインタフェース１０６ａを更に備える。ＣＰＵボード１０１ａのハードウェア構成はＣＰＵボード１０１と同様である。ＦＣインタフェース１０６ａのハードウェア構成はＦＣインタフェース１０６と同様である。
【０１３８】
更に、第３の実施の形態のＦＣスイッチ装置のハードウェア構成は、図４で説明した第２の実施の形態のＦＣスイッチ装置２００のハードウェア構成と同様であるため説明を省略する（各構成をＦＣスイッチ装置２００と同一符号で表記する）。
【０１３９】
図１７は、第３の実施の形態のサーバ装置の機能を示すブロック図である。サーバ装置１００は、起動コード記憶部１３０，１３０ａ、ハイパーバイザ１４０，１４０ａ、仮想マシン１５０，１５０ａ，１５０ｂ、起動コード記憶部１６０，１６０ａ、ＰＦ１７０，１７０ａおよびＶＦ１８０，１８０ａ，１８０ｃ，１８０ｄを有する。
【０１４０】
起動コード記憶部１３０、ハイパーバイザ１４０および仮想マシン１５０，１５０ａは、ＣＰＵ１１１が所定のプログラムを実行することで、サーバ装置１００上に実現される。起動コード記憶部１３０ａ、ハイパーバイザ１４０ａおよび仮想マシン１５０ｂは、ＣＰＵボード１０１ａ上のＣＰＵが所定のプログラムを実行することでサーバ装置１００上に実現される。起動コード記憶部１６０、ＰＦ１７０およびＶＦ１８０，１８０ａは、ＦＣコントローラ１１４が所定のプログラムを実行することでサーバ装置１００上に実現される。起動コード記憶部１６０ａ、ＰＦ１７０ａおよびＶＦ１８０ｃ，１８０ｄは、ＦＣインタフェース１０６ａ上のＦＣコントローラが所定のプログラムを実行することでサーバ装置１００上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実現してもよい。
【０１４１】
起動コード記憶部１３０ａは、起動コード記憶部１３０に対応する。ハイパーバイザ１４０ａは、ハイパーバイザ１４０に対応する。ハイパーバイザ１４０ａは、制御部１４１ａを有する。制御部１４１ａは、制御部１４１に対応する。
【０１４２】
制御部１４１，１４１ａは、互いに通信可能である。制御部１４１，１４１ａは、起動コード記憶部１３０，１３０ａに記憶された起動コードおよび起動管理テーブルの設定内容を同期する。制御部１４１，１４１ａは、起動コード記憶部１６０，１６０ａ全体として一意の起動コード識別情報を起動コードに付与する。
【０１４３】
仮想マシン１５０ｂは、仮想マシン１５０，１５０ａに対応する。ここで、仮想マシン１５０ｂは仮想マシン１５０ａと共に論理的な１つの仮想マシンを構成する。すなわち、ＣＰＵボード１０１，１０１ａに跨って、仮想マシン１５０ａ，１５０ｂを組み合わせた１つの仮想マシンが実現される。ハイパーバイザ１４０，１４０ａは所定のデータを互いに同期し、仮想マシン１５０ａ，１５０ｂを１つの仮想マシンとして、クライアント装置から利用可能とする。
【０１４４】
起動コード記憶部１６０ａは、起動コード記憶部１６０に対応する。
ＰＦ１７０ａは、ＰＦ１７０に対応する。ＰＦ１７０ａは、ＦＣスイッチ装置２００に接続されている。
【０１４５】
ＶＦ１８０ｃ，１８０ｄは、ＶＦ１８０，１８０ａに対応する。ＶＦ１８０ｃ，１８０ｄは、ＰＦ１７０ａによって生成されたデータ通信制御用のモジュールである。仮想マシン１５０，１５０ａ，１５０ｂは、ＶＦ１８０ｃ，１８０ｄにアクセスすることで単一のＰＦ１７０ａを共有して、外部のストレージ装置３００，３００ａとのデータ通信を行える。なお、第３の実施の形態では、ＦＣインタフェース１０６のＶＦ１８０ｂの図示を省略している（ＶＦ１８０ｂは割当済もしくは存在しないとする）。
【０１４６】
図１８は、第３の実施の形態の起動管理テーブルのデータ構造例を示す図である。起動管理テーブル１３２ａは、起動管理テーブル１３２に対応する。各項目に設定される内容は、起動管理テーブル１３２と同様である。
【０１４７】
ここで、仮想マシン１５０ａを起動するときに、ＰＦ１７０からＶＦを割り当てることができない場合を考える。その一例が、ＶＦ１８０，１８０ａとも仮想マシン１５０に割当済であり、ＰＦ１７０上で他に未割当のＶＦが存在しない場合である。起動管理テーブル１３２ａは、その場合の設定を例示している。
【０１４８】
具体的には、ＣＰＵボード１０１（物理ホストＩＤ“０”）における仮想マシン１５０（仮想ホストＩＤ“０”）に対して、ＶＦ１８０，１８０ａ（ＶＦのＩＤと番号の組が“１０ＣＦ１２２３−０”および“１０ＣＦ１２２３−１”）が割当済である。ＶＦ１８０，１８０ａの何れも“起動用”である。ＶＦ１８０，１８０ａにつき起動コードＩＤが“０”、“１”の２種類の起動コードが対応付けられており、仮想マシン１５０は、その起動時に何れかの起動コードを選択して起動可能となっている。
【０１４９】
また、起動管理テーブル１３２ａでは、仮想マシン１５０ｂに対する割当状況も示されている。具体的には、ＣＰＵボード１０１ａ（物理ホストＩＤ“１”）における仮想マシン１５０ｂ（仮想ホストＩＤ“０”）に対して、ＰＦ１７０ａ上のＶＦ１８０ｃ（ＶＦのＩＤと番号の組が“１０ＣＦ１２２３−０”）が割り当てられている。また、ＶＦ１８０ｃにはＰＦ１７０ａの仮想ポート“０”が対応付けられている。更に、仮想マシン１５０ｂに対して起動コードＩＤ“２”が対応付けられている。
【０１５０】
制御部１４１は、このようにＰＦ１７０上のＶＦが全て割当済の状態でＰＦ１７０を指定したＶＦ割当指示を受けた場合でも、同一ＩＤのＰＦ１７０ａを検出し、ＰＦ１７０ａ上の未割当のＶＦ１８０ｄを仮想マシン１５０ａに割り当てる。
【０１５１】
具体的には、ＣＰＵボード１０１（物理ホストＩＤ“０”）における仮想マシン１５０ａ（仮想ホストＩＤ“１”）に対して、ＰＦ１７０ａ（ＰＦのＩＤと番号の組が“１０ＣＦ１２２３−１”）上のＶＦ１８０ｄ（ＶＦのＩＤと番号の組が“１０ＣＦ１２２３−１”）が割り当てられている。また、ＶＦ１８０ｄにはＰＦ１７０ａの仮想ポート“１”が対応付けられている。図１７のハイパーバイザ１４０とＶＦ１８０ｄとの間の関連線は、この割当関係を示している。更に、仮想マシン１５０ａに対して起動コードＩＤ“３”が対応付けられている。
【０１５２】
次に、以上の構成のサーバ装置１００の処理手順を説明する。ここで、全体処理、割当解除処理および仮想マシン起動処理の手順は、図１０，１３，１５で説明した第２の実施の形態の全体処理、割当解除処理および仮想マシン起動処理の手順と同様であるため説明を省略する。
【０１５３】
図１９は、第３の実施の形態のＶＦ割当処理を示すフローチャートである。以下、図１９に示す処理をステップ番号に沿って説明する。
（ステップＳ５１）制御部１４１は、ＶＦ割当指示を取得する。ＶＦ割当指示には、仮想マシンを指定する情報、当該仮想マシンに対して、起動用として割り当てるＰＦおよび割り当てるＶＦの数（要求ＶＦ数）が含まれる。制御部１４１は、ＶＦ割当指示からＰＦおよび要求ＶＦ数を特定する。
【０１５４】
（ステップＳ５２）制御部１４１は、特定したＰＦからＰＦ上に構成されるＶＦの数を確認し、起動コードをロードする。
（ステップＳ５３）制御部１４１は、起動コード記憶部１３０に記憶された起動管理テーブル１３２ａを参照して、当該ＰＦにつき未割当ＶＦ数を取得する。
【０１５５】
（ステップＳ５４）制御部１４１は、未割当ＶＦ数と要求ＶＦ数とを比較する。
（ステップＳ５５）制御部１４１は、要求された数のＶＦを指定されたＰＦから割当可能であるか否かを判定する。割当可能である場合、処理をステップＳ５８に進める。割当不可能である場合、処理をステップＳ５６に進める。
【０１５６】
（ステップＳ５６）制御部１４１は、起動管理テーブル１３２ａを参照して、別のＦＣインタフェース上に同一ＩＤのＰＦが存在するか否かを判定する。同一ＩＤのＰＦが存在する場合、処理をステップＳ５７に進める。同一ＩＤのＰＦが存在しない場合、ＶＦの割り当てができないことを管理端末装置１１に通知して処理を終了する。例えば、ＰＦ１７０と同一ＩＤ（“１０ＣＦ１２２３”）のＰＦとしてＰＦ１７０ａが存在する。なお、制御部１４１はステップＳ５１〜Ｓ５５の処理を実行済のＰＦを除いてステップＳ５６の判断を行う。
【０１５７】
（ステップＳ５７）制御部１４１は、ステップＳ５１で取得したＶＦ割当指示のＰＦの指定を、ステップＳ５６で検知したＰＦに変更する。その結果、ＶＦ割当指示では、別個のＰＦ（例えば、ＰＦ１７０に代えてＰＦ１７０ａ）が指定されることとなる。そして、処理をステップＳ５１に進める。なお、制御部１４１はステップＳ５２で取得した起動コードを破棄する。
【０１５８】
（ステップＳ５８）制御部１４１は、ステップＳ５２でＰＦからロードした起動コードを要求ＶＦ数分だけ複製する。制御部１４１は、複製した起動コードに起動コードＩＤを付加する。
【０１５９】
（ステップＳ５９）制御部１４１は、管理端末装置１１の指示により、ＶＦごとの起動コードのアクセス先装置ＩＤの設定内容を更新する。
（ステップＳ６０）制御部１４１は、管理端末装置１１から編集完了の指示を受けると、変更後の起動コードを起動コード記憶部１３０に保存する。そして、制御部１４１は制御部１４１ａにも保存した起動コードを送信し、起動コード記憶部１３０ａに保存させ、起動コードの同期を行う。
【０１６０】
（ステップＳ６１）制御部１４１は、起動管理テーブル１３２ａを更新する。制御部１４１は、制御部１４１ａにも更新内容を送信し、起動コード記憶部１３０ａに格納された起動管理テーブルを更新させ、起動管理テーブルの同期を行う。
【０１６１】
このように、制御部１４１はＶＦ割当指示を受け付けた際に、指定されたＰＦからＶＦを割り当てることができない場合でも、同一ＩＤの他のＰＦが存在すれば、当該ＰＦから未割当のＶＦを検出して、仮想マシンに割り当てる。なお、同一ＩＤのＰＦを検出する理由は、当該ＩＤがデバイスに割り当てられたＩＤを示すものであり、ＩＤが同一であればＰＦの機能が同一であると考えられるからである。すなわち、制御部１４１は、ＶＦ割当指示によって指定されたＰＦからＶＦを割り当てられない場合、当該ＰＦと同一機能を備える他のＰＦからＶＦの割り当てを試みる。
【０１６２】
なお、ＶＦ割当指示に各ＶＦに設定したいアクセス先装置ＩＤやその他の設定情報を含めてもよい。その場合、ステップＳ５９では制御部１４１はＶＦ割当指示で指定されたアクセス先装置ＩＤなどを起動コードに設定できる。このため、ステップＳ５９での管理者の操作を省ける。
【０１６３】
図２０は、第３の実施の形態のＶＦ割当処理を示すシーケンス図である。以下、図２０に示す処理をステップ番号に沿って説明する。なお、以下に示すステップＳＴ１４１の直前では、ＶＦ１８０，１８０ａは仮想マシン１５０に割当済であり、ＶＦ１８０ｃは仮想マシン１５０ｂに割当済であるとする。そして、ＰＦ１７０にはその他に未割当のＶＦが存在しないとする。また、起動管理テーブル１３２ａにおいて、ＶＦ１８０ｄが“未割当”の状態であるとする。
【０１６４】
（ステップＳＴ１４１）管理端末装置１１は、ハイパーバイザ１４０にＶＦ割当指示を送信する。ＶＦ割当は、仮想マシン１５０ａに対して、ＰＦ１７０からＶＦを起動用として１つ割り当てる旨の指示を含むとする。
【０１６５】
（ステップＳＴ１４２）ハイパーバイザ１４０は、ＶＦ割当指示を受信すると、指定されたＰＦ１７０に起動コード１６１の送信を要求する。
（ステップＳＴ１４３）ＰＦ１７０は、ハイパーバイザ１４０からの要求に応じて、起動コード記憶部１６０から起動コード１６１を取得し、ハイパーバイザ１４０に出力する。
【０１６６】
（ステップＳＴ１４４）ハイパーバイザ１４０は、起動コード１６１に基づいて、ＰＦ上に構成されるＶＦの数を確認する。ハイパーバイザ１４０は、起動コード記憶部１３０に記憶された起動管理テーブル１３２ａを参照してＰＦ１７０に未割当のＶＦが存在しておらず、ＰＦ１７０から新たにＶＦの割り当てを行うことができないと判断する。
【０１６７】
（ステップＳＴ１４５）ハイパーバイザ１４０は、ＰＦ１７０と同一ＩＤのＰＦ１７０ａを検知すると、ＰＦ１７０ａに起動コードの送信を要求する。
（ステップＳＴ１４６）ＰＦ１７０ａは、ハイパーバイザ１４０からの要求に応じて、起動コード記憶部１６０ａから起動コードを所得し、ハイパーバイザ１４０に出力する。
【０１６８】
（ステップＳＴ１４７）ハイパーバイザ１４０は、ＰＦ１７０ａから受信した起動コードに基づいて、ＰＦ１７０ａ上に構成されるＶＦの数を確認する。ハイパーバイザ１４０は、起動管理テーブル１３２ａを参照してＰＦ１７０ａにおけるＶＦ１８０ｄが未割当であり、ＶＦ割当可能であると判断する。
【０１６９】
（ステップＳＴ１４８）ハイパーバイザ１４０は、ＰＦ１７０ａから受信した起動コードに対して起動コードＩＤ“３”を付加する（要求ＶＦ数が１つなので起動コードの複製を行わなくてもよい）。以下、起動コードＩＤ“３”を付した起動コードを起動コード１３１ａと表記する。ハイパーバイザ１４０は、管理端末装置１１からの起動コード１３１ａの編集を受け付ける。例えば、起動コード１３１ａのアクセス先装置ＩＤにストレージ装置３００ａのＷＷＮが設定される。管理端末装置１１は、管理者による編集完了の入力を受け付けると、それをハイパーバイザ１４０に通知する。
【０１７０】
（ステップＳＴ１４９）ハイパーバイザ１４０は、編集内容を起動コード１３１ａに反映させて、起動コード記憶部１３０に保存する。ハイパーバイザ１４０は、仮想マシン１５０ａ、ＰＦ１７０ａの仮想ポート“０”、ＶＦ１８０ｄおよび起動コード１３１ａの対応関係を起動用として起動管理テーブル１３２ａに設定する。ハイパーバイザ１４０は、ハイパーバイザ１４０ａと通信して、保存した起動コード１３１ａと起動管理テーブル１３２ａの更新内容とを同期する。
【０１７１】
（ステップＳＴ１５０）ハイパーバイザ１４０は、割当完了を管理端末装置１１に通知する。
このようにして、ハイパーバイザ１４０は、指定されたＰＦ１７０に未割当ＶＦが存在しなくても、ＰＦ１７０と同一ＩＤのＰＦ１７０ａから未割当ＶＦを検出して、仮想マシン１５０ａに対応付ける。
【０１７２】
図２１は、第３の実施の形態の仮想マシン起動処理を示すシーケンス図である。以下、図２１に示す処理をステップ番号に沿って説明する。
（ステップＳＴ１５１）管理端末装置１１は、ハイパーバイザ１４０に仮想マシン起動指示を送信する。仮想マシン起動指示は、仮想マシン１５０，１５０ａを指定する情報を含むとする。
【０１７３】
（ステップＳＴ１５２）ハイパーバイザ１４０は、仮想マシン起動指示を受信すると、仮想マシン１５０，１５０ａが指定されていることを検知する。すると、ハイパーバイザ１４０は、起動コード記憶部１３０に記憶された起動管理テーブル１３２ａを参照して、仮想マシン１５０に対して起動用のＶＦ１８０，１８０ａおよび起動コード１３１を含む２つの起動コードが対応付けられていることを確認する。そして、ハイパーバイザ１４０は、仮想マシン１５０に起動指示を出力する。これにより、ファームウェア１５１がサーバ装置１００上で実行開始される。
【０１７４】
（ステップＳＴ１５３）ハイパーバイザ１４０は、起動管理テーブル１３２ａを参照して、仮想マシン１５０ａに対して起動用のＶＦ１８０ｄおよび起動コード１３１ａが対応付けられていることを確認する。そして、ハイパーバイザ１４０は、仮想マシン１５０ａに起動指示を出力する。これにより、ファームウェア１５１ａがサーバ装置１００上で実行開始される。
【０１７５】
（ステップＳＴ１５４）仮想マシン１５０は、ハイパーバイザ１４０に起動コードを要求する。ここで、起動管理テーブル１３２ａでは、仮想マシン１５０に対して起動コード１３１を含む２つの起動コードが対応付けられている。仮想マシン１５０は、そのうちの起動コード１３１を指定してハイパーバイザ１４０に要求する。起動コードは、仮想マシン１５０のファームウェアで選定しておいてよい。
【０１７６】
（ステップＳＴ１５５）ハイパーバイザ１４０は、起動コード記憶部１３０から起動コード１３１を取得し、仮想マシン１５０に提供する。
（ステップＳＴ１５６）仮想マシン１５０ａは、ハイパーバイザ１４０に起動コードを要求する。
【０１７７】
（ステップＳＴ１５７）ハイパーバイザ１４０は、起動コード記憶部１３０から起動コード１３１ａを取得し、仮想マシン１５０ａに提供する。
（ステップＳＴ１５８）仮想マシン１５０は、起動コード１３１で示されるアクセス先装置ＩＤに基づいて、ストレージ装置３００との接続を試みる。その際、ハイパーバイザ１４０は起動管理テーブル１３２ａを参照して、当該接続をＶＦ１８０に割り当て、更にＰＦ１７０の仮想ポート“０”に対応付ける。すなわち、仮想マシン１５０は、ＶＦ１８０およびＰＦ１７０の仮想ポート“０”を介してストレージ装置３００との接続を確立する。そして、仮想マシン１５０はストレージ装置３００にＯＳプログラムを要求する。
【０１７８】
（ステップＳＴ１５９）ストレージ装置３００は、仮想マシン１５０にＯＳプログラムを送信する。ハイパーバイザ１４０は、ＰＦ１７０の仮想ポート“０”を介して受信したＯＳプログラムをＶＦ１８０に対応付けて、仮想マシン１５０に出力する。仮想マシン１５０は、ＯＳプログラムを受信するとＯＳ１５２を起動する。
【０１７９】
（ステップＳＴ１６０）仮想マシン１５０ａは、起動コード１３１ａで示されるアクセス先装置ＩＤに基づいて、ストレージ装置３００ａとの接続を試みる。その際、ハイパーバイザ１４０は起動管理テーブル１３２ａを参照して、当該接続をＶＦ１８０ｄに割り当て、更にＰＦ１７０ａの仮想ポート“０”に対応付ける。すなわち、仮想マシン１５０ａは、ＶＦ１８０ｄおよびＰＦ１７０ａの仮想ポート“０”を介してストレージ装置３００ａとの接続を確立する。そして、仮想マシン１５０ａはストレージ装置３００ａにＯＳプログラムを要求する。
【０１８０】
（ステップＳＴ１６１）ストレージ装置３００ａは、仮想マシン１５０ａにＯＳプログラムを送信する。ハイパーバイザ１４０は、ＰＦ１７０ａの仮想ポート“０”を介して受信したＯＳプログラムをＶＦ１８０ｄに対応付けて、仮想マシン１５０ａに出力する。仮想マシン１５０ａは、ＯＳプログラムを受信するとＯＳ１５２ａを起動する。
【０１８１】
このようにして、ハイパーバイザ１４０は、ＣＰＵボード１０１上の仮想マシン１５０，１５０ａに対して、ＦＣインタフェース１０６，１０６ａからＶＦを割り当てることができる。これにより、各仮想マシンに対するＶＦ割当の自由度を向上できる。
【０１８２】
また、仮想マシン１５０ａに対して指定のＰＦからＶＦを割り当てることができない場合、仮想マシン１５０ａと共に１つの仮想マシンを構成する仮想マシン１５０ｂが存在することがある。その場合には、仮想マシン１５０ｂに対応付けられているＰＦ１７０ａを優先して選択し、未割当ＶＦを検出してもよい。
【０１８３】
［第４の実施の形態］
次に、第４の実施の形態を説明する。前述の第２，第３の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
【０１８４】
第２，第３の実施の形態では、管理端末装置１１からの指示によりハイパーバイザが仮想マシン、ＶＦ、ＰＦの仮想ポートおよび起動コードの対応関係を管理する例を示した。一方、これをスイッチ装置２００が行ってもよい。その場合、管理者は管理端末装置２１を操作してＦＣスイッチ装置２００を介して仮想マシンの起動を指示できる。第４の実施の形態では、このような機能を説明する。
【０１８５】
なお、第４の実施の形態の情報処理システムの全体構成は、図２で説明した第２の実施の形態の情報処理システムの全体構成と同様であるため説明を省略する。ここで、サーバ装置１００のＳＶＰ１０８およびＦＣスイッチ装置２００のＳＶＰ２０３は、管理用のＬＡＮ（Local Area Network）で接続される。
【０１８６】
また、第４の実施の形態のサーバ装置のハードウェア構成は、図３で説明した第２の実施の形態のサーバ装置１００のハードウェア構成と同一であるため説明を省略する（各構成をサーバ装置１００と同一符号で表記する）。
【０１８７】
更に、第４の実施の形態のＦＣスイッチ装置のハードウェア構成は、図４で説明した第２の実施の形態のＦＣスイッチ装置２００のハードウェア構成と同様であるため説明を省略する（各構成をＦＣスイッチ装置２００と同一符号で表記する）。
【０１８８】
図２２は、第４の実施の形態のＦＣスイッチ装置の機能を示すブロック図である。ＦＣスイッチ装置２００は、起動管理情報記憶部２１０および制御部２２０を有する。これらのユニットの機能は、ＳＶＰ２０３が所定のプログラムを実行することによりＦＣスイッチ装置２００上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
【０１８９】
起動管理情報記憶部２１０は、起動管理テーブルを記憶する。起動管理テーブルのデータ構造例は、図９で説明した起動管理テーブル１３２と同様である。
制御部２２０は、管理端末装置２１からＶＦ割当指示を受け付けると、ハイパーバイザ１４０に対する起動コードの複製・編集を指示する。また、制御部２２０は、起動管理情報記憶部２１０に記憶された起動管理テーブルを更新する。具体的には、制御部２２０は、新たに割り当てた仮想マシン、起動コード、ＶＦ１８０，１８０ａ，１８０ｂおよびＰＦ１７０の仮想ポートの対応関係を起動管理テーブルに設定する。
【０１９０】
次に、以上の構成のＦＣスイッチ装置２００の処理手順を説明する。サーバ装置１００の制御部１４１が行う処理のうち、起動管理テーブルに関する処理を制御部２２０が実行する。
【０１９１】
具体的には、制御部２２０は図１０で示した全体処理を実行する。ただし、ステップＳ１１に対応するステップはＦＣスイッチ装置２００の起動を契機として、ステップＳ１９に対応するステップはＦＣスイッチ装置２００の停止有無の判断を契機として実行する。制御部２２０は、ＶＦ割当指示、ＶＦ解除指示および仮想マシン起動指示を管理端末装置２１から受け付ける。
【０１９２】
また、制御部２２０は、図１１，１３，１５で示したＶＦ割当処理、割当解除処理および仮想マシン起動処理のうち、起動管理テーブルを照会・更新する処理を担う。すなわち、制御部２２０は、起動コードの複製・保存に関してはハイパーバイザ１４０の制御部１４１に依頼する。また、制御部２２０は、当該起動コードに基づく仮想マシンの起動を制御部１４１に依頼する。その際、制御部２２０は起動管理情報記憶部２１０に記憶された起動管理テーブルを参照して、仮想マシン、ＶＦ、ＰＦの仮想ポートおよび起動コードの対応関係を制御部１４１に通知する。
【０１９３】
以下では、制御部２２０のこのような処理を具体的に説明する。
図２３は、第４の実施の形態のＶＦ割当処理を示すシーケンス図である。以下、図２３に示す処理をステップ番号に沿って説明する。
【０１９４】
（ステップＳＴ１７１）管理端末装置２１は、制御部２２０にＶＦ割当指示を送信する。ＶＦ割当指示は、仮想マシン１５０に対してＰＦ１７０からＶＦを起動用として１つ割り当てる旨の指示を含むとする。また、ＶＦ割当指示には、その他の起動コードに設定する情報（時間設定や接続形態など）を示す情報が含まれ得る。
【０１９５】
（ステップＳＴ１７２）制御部２２０は、ＶＦ割当指示を受信すると、サーバ装置１００のＳＶＰ１０８を介して、ハイパーバイザ１４０にＶＦ割当指示を出力する。
（ステップＳＴ１７３）ハイパーバイザ１４０は、ＶＦ割当指示を受信すると、指定されたＰＦ１７０にＶＦ数と起動コード１６１の送信を要求する。
【０１９６】
（ステップＳＴ１７４）ＰＦ１７０は、ハイパーバイザ１４０からの要求に応じて、ＶＦ数と起動コード記憶部１６０から起動コード１６１を取得し、ハイパーバイザ１４０に出力する。
【０１９７】
（ステップＳＴ１７５）ハイパーバイザ１４０は、ＰＦ１７０上に構成されるＶＦの数を確認し、制御部２２０に通知する。
（ステップＳＴ１７６）制御部２２０は、起動管理情報記憶部２１０に記憶された起動管理テーブルを参照して、ＰＦ１７０のＶＦ１８０が未割当であり、これを仮想マシン１５０に割当可能である旨をハイパーバイザ１４０に通知する。ハイパーバイザ１４０は、取得した起動コード１６１に起動コードＩＤを付加し、起動コード１３１を生成する（要求ＶＦ数が１であるため複製はしなくてもよい）。
【０１９８】
（ステップＳＴ１７７）制御部２２０は、ステップＳＴ１７１で受け付けたＶＦ割当指示の設定指示内容に基づいて、起動コード１３１を編集する。
（ステップＳＴ１７８）ハイパーバイザ１４０は、起動コード１３１を起動コード記憶部１３０に保存する。そして、ハイパーバイザ１４０は、起動コード１３１の保存完了通知を制御部２２０に送信する。保存完了通知には、起動コード１３１の起動コードＩＤが含まれる。
【０１９９】
（ステップＳＴ１７９）制御部２２０は、保存完了通知を受信すると、起動管理情報記憶部２１０に記憶された起動管理テーブルを更新する。具体的には、制御部２２０は、仮想マシン１５０、ＶＦ１８０、ＰＦ１７０の仮想ポート“０”および起動コード１３１を対応付けて、起動管理テーブルに設定する。
【０２００】
（ステップＳＴ１８０）制御部２２０は、ＶＦ割当完了を管理端末装置２１に通知する。
このようにして、ＦＣスイッチ装置２００で起動管理テーブルを保持する。ハイパーバイザ１４０は、制御部２２０の指示によって、起動コードの複製・保存を行う。
【０２０１】
なお、ステップＳＴ１７７では、第２，第３の実施の形態と同様に管理端末装置２１から管理者による編集を受け付けてもよい。
図２４は、第４の実施の形態の仮想マシン起動処理を示すシーケンス図である。以下、図２４に示す処理をステップ番号に沿って説明する。
【０２０２】
（ステップＳＴ１８１）管理端末装置２１は、制御部２２０に仮想マシン起動指示を送信する。仮想マシン起動指示は、仮想マシン１５０を指定する情報を含むとする。
（ステップＳＴ１８２）制御部２２０は、仮想マシン起動指示を受信すると、ハイパーバイザ１４０に対し、サーバ装置のＳＶＰ１０８を介して当該仮想マシン起動指示を送信する。制御部２２０は、転送する仮想マシン起動指示に、指定された仮想マシン１５０、ＶＦ１８０、ＰＦ１７０の仮想ポート“０”および起動コード１３１の対応関係を示す情報を含める。制御部２２０は、起動管理情報記憶部２１０に記憶された起動管理テーブルを参照して、当該対応関係を取得できる。
【０２０３】
（ステップＳＴ１８３）ハイパーバイザ１４０は、制御部２２０から仮想マシン起動指示を受信すると、仮想マシン１５０が指定されていることを検知する。ハイパーバイザ１４０は、仮想マシン１５０に起動指示を出力する。これにより、ファームウェア１５１がサーバ装置１００上で実行開始される。
【０２０４】
（ステップＳＴ１８４）仮想マシン１５０は、ハイパーバイザ１４０に起動コードを要求する。
（ステップＳＴ１８５）ハイパーバイザ１４０は、ステップＳＴ１８３で受信した仮想マシン起動指示に含まれる対応関係の情報に基づいて、起動コード記憶部１３０から起動コード１３１を取得し、仮想マシン１５０に提供する。
【０２０５】
（ステップＳＴ１８６）仮想マシン１５０は、起動コード１３１で示されるアクセス先装置ＩＤに基づいて、ストレージ装置３００との接続を試みる。その際、ハイパーバイザ１４０は、制御部２２０から取得した対応関係に基づいて、当該接続をＶＦ１８０に割り当て、更にＰＦ１７０の仮想ポート“０”に対応付ける。すなわち、仮想マシン１５０は、ＶＦ１８０およびＰＦ１７０の仮想ポート“０”を介してストレージ装置３００との接続を確立する。そして、仮想マシン１５０はストレージ装置３００にＯＳプログラムを要求する。
【０２０６】
（ステップＳＴ１８７）ストレージ装置３００は、仮想マシン１５０にＯＳプログラムを送信する。ハイパーバイザ１４０は、ＰＦ１７０の仮想ポート“０”を介して受信したＯＳプログラムをＶＦ１８０に対応付けて、仮想マシン１５０に出力する。仮想マシン１５０は、ＯＳプログラムを受信するとＯＳ１５２を起動する。
【０２０７】
このようにして、ＦＣスイッチ装置２００で起動管理テーブルを一元管理する。そして、仮想マシン１５０を起動するときには、ＦＣスイッチ装置２００の制御部２２０からハイパーバイザ１４０に起動コードに関する情報を送信する。なお、仮想マシン１５０の起動の処理を説明したが、仮想マシン１５０ａに関しても同様である。例えば、仮想マシン１５０ａをストレージ装置３００ａから起動したい場合、起動管理情報記憶部２１０に記憶された起動管理テーブルにそのための対応関係を予め設定する。そして、仮想マシン１５０ａの起動時には、制御部２２０は、当該仮想マシン１５０ａに関する対応関係を起動管理テーブルから取得してハイパーバイザ１４０に通知する。
【０２０８】
このようにＦＣスイッチ装置２００で起動管理テーブルを一元管理すれば、各ハイパーバイザで起動管理テーブルを保持しなくてよい。このため、例えば、第３の実施の形態で示したようなハイパーバイザ間での同期による通信負荷を軽減できる。また、例えば各ハイパーバイザの同期処理に伴う処理負荷を軽減できる。
【０２０９】
［第５の実施の形態］
次に、第５の実施の形態を説明する。前述の第２〜第４の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
【０２１０】
第２〜第４の実施の形態では、ＦＣインタフェースが１つのＰＦを有する場合を例示した。一方、１つのインタフェースが複数の異なるＰＦを有する場合もある。例えば、１つのアダプタで複数規格の通信（例えば、ＦＣとＥｔｈｅｒｎｅｔ（登録商標））に対応可能なインタフェースが考えられる。このようなインタフェースは、ＣＥＥ（Converged Enhanced Ethernet）と呼ばれることもある。
【０２１１】
そこで、第５の実施の形態では、複数のＰＦを有するＣＥＥインタフェースを備えたサーバ装置において各仮想マシンにＶＦを割り当てる方法を説明する。
なお、第５の実施の形態の情報処理システムの全体構成は、図２で説明した第２の実施の形態の情報処理システムの全体構成と同様である。ただし、ＦＣスイッチ装置２００に代えてＣＥＥをサポートするＣＥＥスイッチ装置２００ａを用いる。
【０２１２】
図２５は、第５の実施の形態のサーバ装置の機能を示すブロック図である。ここで、ＣＥＥスイッチ装置２００ａは、ネットワーク２０を介してサーバ装置１００ａと接続する。ネットワーク２０は、ＬＡＮである。サーバ装置１００ａは、ネットワーク２０と接続され、ストレージ装置３００，３００ａと同様にＯＳプログラムを記憶する情報処理装置である。
【０２１３】
また、サーバ装置１００，１００ａのハードウェア構成は、図３で説明した第２の実施の形態のサーバ装置１００のハードウェア構成と同様であるため説明を省略する（各構成をサーバ装置１００と同一符号で表記する。）ただし、第５の実施の形態のサーバ装置１００は、ＦＣインタフェース１０６に代えてＣＥＥインタフェース１０６ｂを備える。ＣＥＥインタフェース１０６ｂ上には、ＦＣおよびＥｔｈｅｒｎｅｔによる通信を制御するためのＣＥＥコントローラが設けられる。
【０２１４】
更に、ＣＥＥスイッチ装置２００ａのハードウェア構成は、図４で説明した第２の実施の形態のＦＣスイッチ装置２００のハードウェア構成と同様である。ただし、各ポート、Ｉ／Ｆコントローラおよびルーティングコントローラは、ＦＣおよびＥｔｈｅｒｎｅｔに対応可能である。
【０２１５】
サーバ装置１００は、起動コード記憶部１３０、ハイパーバイザ１４０、仮想マシン１５０，１５０ａ、起動コード記憶部１６０，１６０ｂ、ＰＦ１７０，１７０ｂおよびＶＦ１８０，１８０ａ，１８０ｅ，１８０ｆを有する。
【０２１６】
起動コード記憶部１３０、ハイパーバイザ１４０および仮想マシン１５０，１５０ａは、図７で説明した第２の実施の形態における同一符号のユニットに対応する。
起動コード記憶部１６０，１６０ｂ、ＰＦ１７０，１７０ｂおよびＶＦ１８０，１８０ａ，１８０ｅ，１８０ｆは、ＣＥＥコントローラが所定のプログラムを実行することでサーバ装置１００上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実現してもよい。
【０２１７】
起動コード記憶部１６０ｂは、起動コード記憶部１６０に対応する。起動コード記憶部１６０ｂは、デフォルトの起動コードを１つ記憶する。起動コード記憶部１６０に記憶されるブートコードは、Ｅｔｈｅｒｎｅｔ接続用のものである。このため、当該ブートコードのアクセス先装置ＩＤでは、例えばＭＡＣ（Media Access Control address）アドレスやＩＰ（Internet Protocol）アドレスによって接続先装置が指定される。
【０２１８】
ＰＦ１７０ｂは、Ｅｔｈｅｒｎｅｔ接続するためのインタフェースである。ＰＦ１７０ｂは、ＣＥＥスイッチ装置２００ａに接続されている。
ＶＦ１８０ｅ，１８０ｆは、仮想マシンがＥｔｈｅｎｅｔ接続するための仮想アダプタである。ＶＦ１８０ｅ，１８０ｆは、ＰＦ１７０ｂによって生成されたデータ通信制御用のモジュールである。仮想マシン１５０，１５０ａは、ＶＦ１８０ｅ，１８０ｆにアクセスすることで単一のＰＦ１７０ｂを共有している。ＰＦ１７０とＰＦ１７０ｂは、ＣＥＥインタフェース１０６ｂをバーチャルレーンで共有して、ＣＥＥスイッチ装置２００ａと接続している。バーチャルレーンは、１つのインタフェースの物理接続を論理的に分割した経路である。これにより、ＰＦ１７０は、ＣＥＥスイッチ装置２００ａを介してＦＣ接続により外部のストレージ装置３００，３００ａとのデータ通信を行える。また、ＰＦ１７０ｂは、ＣＥＥスイッチ装置２００ａおよびネットワーク２０を介して外部のサーバ装置１００ａとのデータ通信を行える。
【０２１９】
図２６は、第５の実施の形態の起動管理テーブルのデータ構造例を示す図である。起動管理テーブル１３２ｂは、起動管理テーブル１３２に対応する。各項目に設定される内容は、起動管理テーブル１３２と同様である。
【０２２０】
ここで、仮想マシン１５０はストレージ装置３００に記憶された起動コードでＯＳ起動し、仮想マシン１５０ａはサーバ装置１００ａに記憶された起動コードでＯＳ起動したい場合を考える。その場合、仮想マシン１５０は、ＰＦ１７０を介してストレージ装置３００とＦＣ接続できる。仮想マシン１５０ａは、ＰＦ１７０ｂを介してサーバ装置１００ａとＥｔｈｅｒｎｅｔ接続できる。起動管理テーブル１３２ｂは、その場合の設定を例示している。
【０２２１】
具体的には、ＣＰＵボード１０１（物理ホストＩＤ“０”）における仮想マシン１５０（仮想ホストＩＤ“０”）に対して、ＶＦ１８０，１８０ａ（ＶＦのＩＤと番号の組が“１０ＣＦ１２２３−０”および“１０ＣＦ１２２３−１”）が割当済である。ＶＦ１８０，１８０ａの何れも“起動用”である。ＶＦ１８０，１８０ａにつき起動コードＩＤが“０”、“１”の２種類の起動コードが対応付けられており、仮想マシン１５０は、その起動時に何れかの起動コードを選択して起動可能となっている。
【０２２２】
一方、仮想マシン１５０ａ（仮想ホストＩＤ“１”）に対しては、ＰＦ１７０ｂ（ＰＦのＩＤと番号の組が“１０ＣＦ１２２４−１”）上のＶＦ１８０ｅ（ＶＦのＩＤと番号の組が“１０ＣＦ１２２４−０”）が割り当てられている。図２５のハイパーバイザ１４０とＶＦ１８０ｅとの間の関連線は、この割当関係を示している。更に、仮想マシン１５０ａには起動コードＩＤ“２”が対応付けられている。パスの項目に設定された“／ｐｃｉ＠１／ｖｄｅｖ０／ｅｔｎ０”の“ｅｔｎ０”の箇所は、当該ＶＦ１８０ｅがＥｔｈｅｒｎｅｔ接続用のものであることを示している。
【０２２３】
なお、起動管理テーブル１３２ｂでは、ＰＦ１７０ｂ上のＶＦ１８０ｆ（ＶＦのＩＤと番号の組が“１０ＣＦ１２２４−１”）の割当状況も示されている。ＶＦ１８０ｆは、割当状態が“未割当”である。
【０２２４】
次に、以上の構成のサーバ装置１００の処理手順を説明する。ここで、全体処理、割当解除処理および仮想マシン起動処理の手順は、図１０，１３，１５で説明した第２の実施の形態の全体処理、割当解除処理および仮想マシン起動処理の手順と同様であるため説明を省略する。
【０２２５】
図２７は、第５の実施の形態のＶＦ割当処理を示すフローチャートである。以下、図２７に示す処理をステップ番号に沿って説明する。
（ステップＳ７１）制御部１４１は、ＶＦ割当指示を取得する。ＶＦ割当指示には、仮想マシンを指定する情報、当該仮想マシンに対して、起動用として割り当てるＰＦおよび割り当てるＶＦの数（要求ＶＦ数）が含まれる。例えば、仮想マシン１５０をストレージ装置３００のＯＳプログラムで起動させたい場合、ＰＦ１７０が選択される。また、仮想マシン１５０ａをサーバ装置１００ａのＯＳプログラムで起動させたい場合、ＰＦ１７０ｂが選択される。制御部１４１は、ＶＦ割当指示からＰＦおよび要求ＶＦ数を特定する。
【０２２６】
（ステップＳ７２）制御部１４１は、特定したＰＦから起動コードをロードし、ＰＦ上に構成されるＶＦの数を確認する。
（ステップＳ７３）制御部１４１は、起動管理テーブル１３２ｂを参照して、当該ＰＦにつき未割当ＶＦ数を取得する。
【０２２７】
（ステップＳ７４）制御部１４１は、未割当ＶＦ数と要求ＶＦ数とを比較する。
（ステップＳ７５）制御部１４１は、要求された数のＶＦを指定されたＰＦから割当可能であるか否かを判定する。割当可能である場合、処理をステップＳ７８に進める。割当不可能である場合、処理をステップＳ７６に進める。
【０２２８】
（ステップＳ７６）制御部１４１は、要求されたＰＦからＶＦを割り当てることができない旨を管理端末装置１１に通知する。管理者は、当該通知を確認して、別のＰＦを指定したＶＦ割当要求を再度行える。
【０２２９】
（ステップＳ７７）制御部１４１は、ステップＳ７２でＰＦからロードした起動コードを要求ＶＦ数分だけ複製する。制御部１４１は、複製した起動コードに起動コードＩＤを付加する。
【０２３０】
（ステップＳ７８）制御部１４１は、管理端末装置１１の指示により、ＶＦごとの起動コードのアクセス先装置ＩＤの設定内容を更新する。ＦＣ接続であれば、アクセス先装置ＩＤは、ＷＷＮである。Ｅｔｈｅｒｎｅｔ接続であれば、アクセス先装置ＩＤは、例えばＭＡＣアドレスやＩＰアドレスである。
【０２３１】
（ステップＳ７９）制御部１４１は、管理端末装置１１から編集完了の指示を受けると、変更後の起動コードを起動コード記憶部１３０に保存する。
（ステップＳ８０）制御部１４１は起動管理テーブル１３２ｂを更新する。
【０２３２】
このようにして、ＣＥＥインタフェース１０６ｂを用いる場合でも、ＦＣ接続およびＥｔｈｅｒｎｅｔ接続に関わらず、同様にしてＶＦごとの起動コードを生成できる。
図２８は、第５の実施の形態のＶＦ割当処理を示すシーケンス図である。以下、図２８の示す処理をステップ番号に沿って説明する。
【０２３３】
（ステップＳＴ１９１）管理端末装置１１は、ハイパーバイザ１４０にＶＦ割当指示を送信する。ＶＦ割当指示には、仮想マシン１５０ａに対して、ＰＦ１７０ｂからＶＦを１つ起動用として割り当てる旨の指示を含むとする。
【０２３４】
（ステップＳＴ１９２）ハイパーバイザ１４０は、ＰＦ１７０ｂに起動コードを要求する。
（ステップＳＴ１９３）ＰＦ１７０ｂは、ハイパーバイザ１４０からの要求に応じて、起動コード記憶部１６０ｂから起動コードを取得し、ハイパーバイザ１４０に出力する。
【０２３５】
（ステップＳＴ１９４）ハイパーバイザ１４０は、ＰＦ１７０ｂから受信した起動コードに基づいて、ＰＦ上に構成されるＶＦの数を確認する。ハイパーバイザ１４０は、起動管理テーブル１３２ａを参照してＰＦ１７０ｂにおけるＶＦ１８０ｅが未割当であり、ＶＦ割当可能であると判断する。なお、ＶＦ１８０ｅ，１８０ｆの何れを割り当てるかは、例えば、識別情報（ＶＦのＩＤと番号の組）の昇順に未割当のＶＦを選択していくなどのルールがハイパーバイザ１４０に予め設定される。
【０２３６】
（ステップＳＴ１９５）ハイパーバイザ１４０は、ＰＦ１７０ｂから受信した起動コードに対して起動コードＩＤ“２”を付加する（要求ＶＦ数が１つなので起動コードの複製を行わなくてもよい）。以下、起動コードＩＤ“２”を付した起動コードを起動コード１３１ａと表記する。ハイパーバイザ１４０は、管理端末装置１１からの起動コード１３１ａの編集を受け付ける。例えば、起動コード１３１ａのアクセス先装置ＩＤにサーバ装置１００ａのＭＡＣアドレスあるいはＩＰアドレスが設定される。管理端末装置１１は、管理者による編集完了の入力を受け付けると、それをハイパーバイザ１４０に通知する。
【０２３７】
（ステップＳＴ１９６）ハイパーバイザ１４０は、編集内容を起動コード１３１ａに反映させて、起動コード記憶部１３０に保存する。ハイパーバイザ１４０は、仮想マシン１５０ａ、ＰＦ１７０ｂの仮想ポート“０”、ＶＦ１８０ｅおよび起動コード１３１ａの対応関係を起動管理テーブル１３２ｂに設定する。
【０２３８】
（ステップＳＴ１９７）ハイパーバイザ１４０は、割当完了を管理端末装置１１に通知する。
このようにして、ハイパーバイザ１４０は、ＣＥＥインタフェース１０６ｂによりサーバ装置１００ａとＥｔｈｅｒｎｅｔ接続する仮想マシン１５０ａに対して、ＶＦ１８０ｅを割り当てる。
【０２３９】
図２９は、第５の実施の形態の仮想マシン起動処理を示すシーケンス図である。以下、図２９に示す処理をステップ番号に沿って説明する。
（ステップＳＴ２０１）管理端末装置１１は、ハイパーバイザ１４０に仮想マシン起動指示を送信する。仮想マシン起動指示は、仮想マシン１５０，１５０ａを指定する情報を含むとする。
【０２４０】
（ステップＳＴ２０２）ハイパーバイザ１４０は、仮想マシン起動指示を受信すると、仮想マシン１５０，１５０ａが指定されていることを検知する。すると、ハイパーバイザ１４０は、起動コード記憶部１３０に記憶された起動管理テーブル１３２ｂを参照して、仮想マシン１５０に対して起動用のＶＦ１８０，１８０ａおよび起動コード１３１を含む２つの起動コードが対応付けられていることを確認する。そして、ハイパーバイザ１４０は、仮想マシン１５０に起動指示を出力する。これにより、ファームウェア１５１がサーバ装置１００上で実行開始される。
【０２４１】
（ステップＳＴ２０３）ハイパーバイザ１４０は、起動管理テーブル１３２ｂを参照して、仮想マシン１５０ａに対して起動用のＶＦ１８０ｅおよび起動コード１３１ａが対応付けられていることを確認する。そして、ハイパーバイザ１４０は、仮想マシン１５０ａに起動指示を出力する。これにより、ファームウェア１５１ａがサーバ装置１００上で実行開始される。
【０２４２】
（ステップＳＴ２０４）仮想マシン１５０は、ハイパーバイザ１４０に起動コードを要求する。ここで、起動管理テーブル１３２ａでは、仮想マシン１５０に対して２つの起動コードが対応付けられている。仮想マシン１５０は、そのうちの起動コード１３１を指定してハイパーバイザ１４０に要求する。
【０２４３】
（ステップＳＴ２０５）ハイパーバイザ１４０は、起動コード記憶部１３０から起動コード１３１を取得し、仮想マシン１５０に提供する。
（ステップＳＴ２０６）仮想マシン１５０ａは、ハイパーバイザ１４０に起動コードを要求する。
【０２４４】
（ステップＳＴ２０７）ハイパーバイザ１４０は、起動コード記憶部１３０から起動コード１３１ａを取得し、仮想マシン１５０ａに提供する。
（ステップＳＴ２０８）仮想マシン１５０は、起動コード１３１で示されるアクセス先装置ＩＤに基づいて、ストレージ装置３００との接続を試みる。その際、ハイパーバイザ１４０は起動管理テーブル１３２ｂを参照して、当該接続をＶＦ１８０に割り当て、更にＰＦ１７０の仮想ポート“０”に対応付ける。すなわち、仮想マシン１５０は、ＶＦ１８０およびＰＦ１７０の仮想ポート“０”を介してストレージ装置３００とのＦＣ接続を確立する。そして、仮想マシン１５０はストレージ装置３００にＯＳプログラムを要求する。
【０２４５】
（ステップＳＴ２０９）ストレージ装置３００は、仮想マシン１５０にＯＳプログラムを送信する。ハイパーバイザ１４０は、ＰＦ１７０の仮想ポート“０”を介して受信したＯＳプログラムをＶＦ１８０に対応付けて、仮想マシン１５０に出力する。仮想マシン１５０は、ＯＳプログラムを受信するとＯＳ１５２を起動する。
【０２４６】
（ステップＳＴ２１０）仮想マシン１５０ａは、起動コード１３１ａで示されるアクセス先装置ＩＤに基づいて、サーバ装置１００ａとの接続を試みる。その際、ハイパーバイザ１４０は起動管理テーブル１３２ｂを参照して、当該接続をＶＦ１８０ｅに割り当て、更にＰＦ１７０ｂの仮想ポート“０”に対応付ける。すなわち、仮想マシン１５０ａは、ＶＦ１８０ｅおよびＰＦ１７０ｂの仮想ポート“０”を介してサーバ装置１００ａとのＥｔｈｅｒｎｅｔ接続を確立する。そして、仮想マシン１５０ａはストレージ装置３００ａにＯＳプログラムを要求する。
【０２４７】
（ステップＳＴ２１１）ストレージ装置３００ａは、仮想マシン１５０ａにＯＳプログラムを送信する。ハイパーバイザ１４０は、ＰＦ１７０ｂの仮想ポート“０”を介して受信したＯＳプログラムをＶＦ１８０ｅに対応付けて、仮想マシン１５０ａに出力する。仮想マシン１５０ａは、ＯＳプログラムを受信するとＯＳ１５２ａを起動する。
【０２４８】
このようにして、ハイパーバイザ１４０は、ＣＰＵボード１０１上の仮想マシン１５０，１５０ａに対して、ＣＥＥインタフェース１０６ｂ上の異なるＰＦ１７０，１７０ｂから接続したい通信規格に応じたＶＦを割り当てることができる。これにより、各仮想マシンに対するＶＦ割当の自由度を向上できる。
【０２４９】
なお、第５の実施の形態では、ＦＣおよびＥｔｈｅｒｎｅｔでの接続を例示して説明したが、他の通信規格を使い分けて接続する場合も同様である。ＣＥＥインタフェース１０６ｂでサポート可能な他の通信規格としては、例えば、ＳＡＳインタフェース、Ｉｎｆｉｎｉｂａｎｄインタフェース、ＰＣＩ  Ｅｘｐｒｅｓｓインタフェースが考えられる。
【０２５０】
また、第２〜第４の実施の形態でも、ＦＣインタフェースに限らず、ＮＩＣインタフェース、ＳＡＳインタフェース、Ｉｎｆｉｎｉｂａｎｄインタフェース、ＰＣＩ  Ｅｘｐｒｅｓｓインタフェースなどに対して、同様にしてアダプタ切り換えの制御を行える。
【０２５１】
上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０２５２】
１  情報処理装置
１ａ，１ｂ  仮想マシン
１ｃ  インタフェース部
１ｄ  記憶部
１ｅ  制御部
２，２ａ  記憶装置
３，３ａ，３ｂ  起動コード
【図１】
0005585731.tif 000002
【図２】
0005585731.tif 000003
【図３】
0005585731.tif 000004
【図４】
0005585731.tif 000005
【図５】
0005585731.tif 000006
【図６】
0005585731.tif 000007
【図７】
0005585731.tif 000008
【図８】
0005585731.tif 000009
【図９】
0005585731.tif 000010
【図１０】
0005585731.tif 000011
【図１１】
0005585731.tif 000012
【図１２】
0005585731.tif 000013
【図１３】
0005585731.tif 000014
【図１４】
0005585731.tif 000015
【図１５】
0005585731.tif 000016
【図１６】
0005585731.tif 000017
【図１７】
0005585731.tif 000018
【図１８】
0005585731.tif 000019
【図１９】
0005585731.tif 000020
【図２０】
0005585731.tif 000021
【図２１】
0005585731.tif 000022
【図２２】
0005585731.tif 000023
【図２３】
0005585731.tif 000024
【図２４】
0005585731.tif 000025
【図２５】
0005585731.tif 000026
【図２６】
0005585731.tif 000027
【図２７】
0005585731.tif 000028
【図２８】
0005585731.tif 000029
【図２９】
0005585731.tif 000030