(57)【特許請求の範囲】
【請求項１】
プロセッサとメモリとストレージを備える物理計算機と、
前記物理計算機の計算機資源を仮想計算機へ割り当てる仮想化部と、を備えて前記仮想計算機を起動させる仮想計算機の起動方法であって、
前記仮想化部が、前記仮想計算機を起動する以前に、前記仮想計算機と前記ストレージを接続する第１のアクセス経路と第２のアクセス経路の状態を設定する第１のステップと、
前記仮想化部が、前記仮想計算機を起動する第２のステップと、
前記仮想化部が、前記第１のアクセス経路と前記第２のアクセス経路を切り替える契機を判定する第３のステップと、
前記仮想化部が、前記第１及び第２のアクセス経路を切り替える契機と判定したときに、前記第１のアクセス経路を第２のアクセス経路に切り替える第４のステップと、を含み、
前記第１のステップは、
前記仮想化部が、前記第２のアクセス経路を無効にする第５のステップと、
前記仮想化部が、前記第１のアクセス経路を有効にする第６のステップと、を含み、
前記第４のステップは、
前記仮想化部が、前記第１のアクセス経路を無効にする第７のステップと、
前記仮想化部が、前記第２のアクセス経路を有効にする第８のステップと、を含み、
前記ストレージは物理機能と仮想機能を備えたＩＯアダプタを介して接続され、前記第１のアクセス経路は前記物理機能を介して前記ストレージに接続され、前記第２のアクセス経路は前記仮想機能を介して前記ストレージに接続されることを特徴とする仮想計算機の起動方法。
【請求項２】
請求項１に記載の仮想計算機の起動方法であって、
前記第３のステップは、
前記仮想化部が、前記仮想計算機から前記第１のアクセス経路の使用を終了したことを示す通知を受け付けたときに、前記第１のアクセス経路と前記第２のアクセス経路を切り替える契機と判定することを特徴とする仮想計算機の起動方法。
【請求項３】
請求項１に記載の仮想計算機の起動方法であって、
前記第３のステップは、
前記仮想化部は、前記仮想計算機が前記第２のアクセス経路の設定を検知したときに、前記第１のアクセス経路と前記第２のアクセス経路を切り替える契機と判定することを特徴とする仮想計算機の起動方法。
【請求項４】
請求項１に記載の仮想計算機の起動方法であって、
前記第８のステップは、
仮想化部が、前記第２のアクセス経路を有効にした後に、仮想計算機上でオペレーティングシステムを起動させ、当該オペレーティングシステムが前記仮想機能のドライバを介して前記第２のアクセス経路を使用することを特徴とする仮想計算機の起動方法。
【請求項５】
計算機資源として、プロセッサとメモリとストレージを備え、更に前記計算機資源を仮想計算機へ割り当てる仮想化部を備えた計算機であって、
前記仮想化部は、
前記仮想計算機と前記ストレージを接続する第１のアクセス経路と第２のアクセス経路の状態を設定するアクセス経路管理部と、
前記第１のアクセス経路と前記第２のアクセス経路を切り替える契機を判定する切り替え契機判定部と、を備え、
前記アクセス経路管理部は、
前記仮想計算機を起動する以前に、前記第２のアクセス経路を無効にしてから前記第１のアクセス経路を有効に設定して、前記仮想計算機を起動させる際に、前記第１のアクセス経路で前記仮想計算機と前記ストレージを接続し、前記切り替え契機判定部が前記切り替えを判定したときに前記第１のアクセス経路を無効にしてから前記第２のアクセス経路を有効に設定して、前記第１のアクセス経路を前記第２のアクセス経路に切り替えて、前記仮想計算機と前記ストレージを接続し、
前記ストレージは、
物理機能と仮想機能を備えたＩＯアダプタを介して前記仮想計算機に接続され、前記第１のアクセス経路は前記物理機能を介して前記ストレージに接続され、前記第２のアクセス経路は前記仮想機能を介して前記ストレージに接続されることを特徴とする計算機。
【請求項６】
請求項５に記載の計算機であって、
前記切り替え契機判定部は、
前記仮想計算機から前記第１のアクセス経路の使用を終了したことを示す通知を受け付けたときに、前記第１のアクセス経路と前記第２のアクセス経路を切り替える契機と判定することを特徴とする計算機。
【請求項７】
請求項５に記載の計算機であって、
前記切り替え契機判定部は、
前記仮想化部が、前記仮想計算機が前記第２のアクセス経路の設定を検知したときに、前記第１のアクセス経路と前記第２のアクセス経路を切り替える契機と判定することを特徴とする計算機。
【請求項８】
請求項５に記載の計算機であって、
前記アクセス経路管理部は、前記第２のアクセス経路を有効にした後に、仮想計算機上でオペレーティングシステムを起動させ、当該オペレーティングシステムが前記仮想機能のドライバを介して前記第２のアクセス経路を使用することを特徴とする計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は仮想計算機に関し、特に同一の起動デバイスに対して複数のアクセス手段を用いて起動する仮想計算機の起動方法に関する。
【背景技術】
【０００２】
近年の半導体の製造においては、プロセスルールが進むに従い、ＣＰＵの性能向上の手法が動作周波数の向上から、一つのＬＳＩに搭載するＣＰＵコア数の増加へと変わってきた。これにより物理計算機では複数または多数のＣＰＵコアを搭載する実装が一般的になった。物理計算機に搭載された複数または多数のＣＰＵコアを有効活用する方法の一つとして、サーバ仮想化技術がある。サーバ仮想化ソフトウェア（ハイパバイザ）が複数の仮想計算機を一つの物理計算機の上に生成する。複数の仮想計算機を一台の物理計算機で稼動させるため、物理計算機のＣＰＵ利用率が向上する。
【０００３】
ハイパバイザは、物理計算機に搭載した主記憶を複数の領域に分割し各領域を各仮想計算機の主記憶として割り当てるとともに、物理計算機に搭載したＣＰＵコアを占有もしくは時分割で各仮想計算機に割り当てる。仮想記憶と異なりスワップアウトが発生しないので、仮想計算機は主記憶に物理計算機と同等の性能でアクセスできる。ハイパバイザの処理オーバヘッドは小さいため、ＣＰＵと主記憶については、仮想計算機は物理計算機に近い性能を持つ。
【０００４】
仮想計算機と物理計算機で大きく異なるのはＩＯアダプタの性能である。実装スペースの制約のため、物理計算機に搭載できるＩＯアダプタの数には限りがある。このため一つのＩＯアダプタを複数の仮想計算機で共有する。ＩＯアダプタを共有するために、ハイパバイザはＩＯアダプタをエミュレートする仮想ＩＯアダプタを仮想計算機に提供する。エミュレーションによるオーバヘッドの分だけ、仮想計算機のＩＯ性能は物理計算機のＩO性能よりも劣るという問題がある。
【０００５】
この問題の解決のため、ＰＣＩ  ＳｉｇはＳＲ−ＩＯＶ（Single Root I/O Virtualization）という規格を制定した。ＳＲ−ＩＯＶはＩＯアダプタ共有の主要部分をハードウェアで提供する仕組みである。ＳＲ−ＩＯＶではハードウェア初期化など頻度の低い処理のみハイパバイザが担当するので、仮想計算機でも高いＩＯ性能を利用可能になる。ＩＯＶを利用する技術として、特許文献１にハイパバイザの基本的な処理動作が開示されている。ＳＲ−ＩＯＶの仕様書としては、非特許文献１が知られている。
【０００６】
ＳＲ−ＩＯＶではＩＯアダプタと仮想ＩＯアダプタを、それぞれPhysical Function（ＰＦ）、Virtual Function（ＶＦ）と呼ぶ。ＬＳＩの実装面積を削減するため、ＶＦはＰＦとは異なる方式で実装される。第一にＶＦはＰＦのSR-IOV Extended CapabilitiesのSR-IOV ControlフィールドにあるVF Enableビットをセットして初めて利用可能になる。第二にＰＦとＶＦでは利用可能なレジスタの数が異なるとともに、同一のレジスタについてもリードライトに対する挙動が変わる場合がある。このようなＰＦとＶＦの違いがあるため、ＰＦとＶＦを利用するにはそれぞれ専用のデバイスドライバが必要になる。ＰＦ用デバイスドライバがＩＯアダプタを初期化した後にＶＦ  ＥｎａｂｌｅビットをセットしてＶＦを利用可能にする。ＰＦ用デバイスドライバはＩＯアダプタのハードウェアの全体に関連する設定や障碍監視も担当する。ＶＦ用デバイスドライバはＶＦ部分の設定や動作のみを担当する。
【０００７】
特許文献２には、エミュレーションモードとパススルーモードを持つ仮想デバイスが開示されている。オペレーションの種別によりエミュレーションモードとパススルーモードを切り替える。この特許文献２では以下の例を挙げている。低頻度で性能を要求しないオペレーションにはエミュレーションモード、高頻度で性能を要求するオペレーションにはパススルーモード、に切り替える。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許出願公開第２００９／０１３３０１６号明細書
【特許文献２】米国特許出願公開第２００９／０１１９０８７号明細書
【非特許文献】
【０００９】
【非特許文献１】”Single Root I/O Virtualization and Sharing Specification Revision 1.1”、[online]、２０１０年、ＰＣＩ  ＳＩＧ。[平成２３年９月１０日検索]、インターネット＜http://www.pcisig.com/specifications/iov/single_root/＞
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ＯＳは以下の二段階のプロセスで起動する。まず、第一のプロセスでは、ＵＥＦＩ(Unified Extensible Firmware Interface)のブートサービス用デバイスドライバもしくはＩＯアダプタのＲＯＭ ＢＩＯＳ（Basic Input/Output System）内のドライバが起動デバイスからブートイメージを読み出す。第２のプロセスでは、ブートイメージ内のカーネルに組み込まれたＯＳ用デバイスドライバが起動デバイスから必要なファイルを読み出す。つまり、ＯＳの起動にはＯＳ用デバイスドライバに加えて、ＵＥＦＩ用デバイスドライバもしくはＲＯＭ  ＢＩＯＳ用ドライバも必要になる。
【００１１】
ＨＢＡ（Host Bus Adapter）等のＳＲ−ＩＯＶのＩＯアダプタでは、サポートするＯＳごとにＯＳ用ＰＦデバイスドライバ（ＰＦドライバ）とＯＳ用ＶＦデバイスドライバ（ＶＦドライバ）が必要になる。ＰＦを起動デバイスとして利用するにはＵＥＦＩ用ＰＦドライバが必要になる。さらにＶＦを起動デバイスとして利用するにはＵＥＦＩ用ＶＦドライバも必要になる。ＶＦを利用するには、まず、ＩＯアダプタのＰＦにアクセスしてＶＦを設定する必要があり、ＶＦ用のドライバだけではＳＲ−ＩＯＶのＩＯアダプタを利用できない。これらによりＳＲ−ＩＯＶではＩＯアダプタベンダのドライバ開発コストが増大するという課題がある。
【００１２】
ＵＥＦＩの代わりにＢＩＯＳを用いる場合でも、ＵＥＦＩ用デバイスドライバの代わりにＲＯＭ  ＢＩＯＳ用ドライバが必要になるため、ＩＯアダプタベンダのドライバ開発コストの増加の課題が残る。
【００１３】
ＶＦを起動デバイスとして用いずに他の手段で起動した場合、ＶＦ経由でアクセスするストレージは起動デバイス（通常はＣ）とは異なるドライブ名称（ＤやＥなど）となる。これはサーバ仮想化により物理計算機とは異なる運用形態となり、システム構築や運用管理面での工数が増大する。つまり、仮想化イメージに設定されたドライブ名称と実際に付与されたドライブ名称が異なることで、パスの不整合が生じる。この不整合を修正するための労力が必要となる。これらにより運用管理コストが増大するという課題がある。
【００１４】
エミュレーションモードとパススルーモードを切り替える仮想デバイスを利用するには、エミュレーションモードとパススルーモードの両方のモードに対応するデバイスドライバが必要になる。ハイパバイザの種類とサポートするＯＳの組み合わせの数だけデバイスドライバを開発する必要があるため、ＩＯアダプタベンダのドライバ開発コストの増加の課題が残る。
【００１５】
そこで本発明は、上記問題点に鑑みてなされたもので、ＵＥＦＩ用ＶＦドライバの開発を必要とせず、かつドライブ名称の変更を防いで、仮想計算機を起動させることを目的とする。
【課題を解決するための手段】
【００１６】
本発明は、プロセッサとメモリとストレージを備える物理計算機と、前記物理計算機の計算機資源を仮想計算機へ割り当てる仮想化部と、を備えて前記仮想計算機を起動させる仮想計算機の起動方法であって、前記仮想化部が、前記仮想計算機を起動する以前に、前記仮想計算機と前記ストレージを接続する第１のアクセス経路と第２のアクセス経路の状態を設定する第１のステップと、前記仮想化部が、前記仮想計算機を起動する第２のステップと、前記仮想化部が、前記第１のアクセス経路と前記第２のアクセス経路を切り替える契機を判定する第３のステップと、前記仮想化部が、前記第１及び第２のアクセス経路を切り替える契機と判定したときに、前記第１のアクセス経路を第２のアクセス経路に切り替える第４のステップと、を含み、前記第１のステップは、前記仮想化部が、前記第２のアクセス経路を無効にする第５のステップと、前記仮想化部が、前記第１のアクセス経路を有効にする第６のステップと、を含み、前記第４のステップは、前記仮想化部が、前記第１のアクセス経路を無効にする第７のステップと、前記仮想化部が、前記第２のアクセス経路を有効にする第８のステップと、を含み、前記ストレージは物理機能と仮想機能を備えたＩＯアダプタを介して接続され、前記第１のアクセス経路は前記物理機能を介して前記ストレージに接続され、前記第２のアクセス経路は前記仮想機能を介して前記ストレージに接続される。
【発明の効果】
【００１７】
したがって、本発明は、起動直後の仮想計算機は第１のアクセス経路でストレージにアクセスするので、ＵＥＦＩ（もしくはＲＯＭ  ＢＩＯＳ）用ＶＦドライバの開発が不要であり、かつドライブ名称が変わらないため、ＩＯアダプタベンダのドライバ開発コストの増大を抑制するとともに、運用管理コストの増大を抑制する効果がある。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態を示し、物理計算機の一例を示すブロック図である。
【図２】本発明の第１の実施形態を示し、物理計算機上のソフトウェアの構成を示すブロック図である。
【図３Ａ】本発明の第１の実施形態を示し、ＩＯアダプタの割り当て表の一例を示す図である。
【図３Ｂ】本発明の第１の実施形態を示し、ＩＯアダプタの物理機能の割り当て表の一例を示す図である。
【図３Ｃ】本発明の第１の実施形態を示し、ＩＯアダプタの物理機能と仮想機能の割り当て表の一例を示す図である。
【図４】本発明の第１の実施形態を示し、ストレージの割り当て表の一例を示す図である。
【図５Ａ】本発明の第１の実施形態を示し、アクセス経路管理表の一例を示す図である。
【図５Ｂ】本発明の第１の実施形態を示し、アクセス経路管理表の一例で、経路を切り替えた後を示す図である。
【図６】本発明の第１の実施形態を示し、アクセス経路の一例を示すブロック図である。
【図７】本発明の第１の実施形態を示し、物理計算機で行われる起動処理の一例を示すフローチャートである。
【図８】本発明の第２の実施形態を示し、物理計算機上のソフトウェアの構成を示すブロック図である。
【図９】本発明の第２の実施形態を示し、アクセス経路の一例を示すブロック図である。
【図１０】本発明の第２の実施形態を示し、物理計算機で行われる起動処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態を、図面を用いて説明する。同一の符号は同一の構成要素を示す。
【００２０】
＜第１実施形態＞
本実施形態では、ＵＥＦＩ(Unified Extensible Firmware Interface)を利用して仮想計算機が起動する場合の構成および処理の一例を説明する。本実施形態では、ＵＥＦＩを利用して起動する仮想計算機において、一つの起動デバイスに対して二つのアクセス経路を設け、起動の途中でアクセス経路を切り替える所に特徴がある。
【００２１】
図１は、本発明を適用する物理計算機のブロック図である。図１において、１００は物理計算機、１０１はＣＰＵ、１０２はインタコネクト、１０３はチップセット、１０４はＮＩＣ（Network Interface Card）、１０５はＨＢＡ（Host Bus Adapter）、１０６はバス（例えば、ＰＣＩバス）、１１０は主記憶（メインメモリ）、１２０−１〜１２０−ｎは仮想計算機（または論理区画）、１３０−１〜１３０−ｎはゲストＯＳ（Operating System）、１４０はハイパバイザ、１５０はストレージ、１６０はネットワーク、１９０はＵＥＦＩを格納するＲＯＭである。なお、ＲＯＭ１９０に代わってＥＥＰＲＯＭやフラッシュメモリにＵＥＦＩを格納しても良い。また、仮想計算機１２０−１〜１２０−ｎの総称を示す符号は１２０とし、ゲストＯＳ１３０−１〜１３０−ｎの総称を示す符号は１３０とする。
【００２２】
ＣＰＵ１０１にはインタコネクト１０２を通してチップセット１０３と主記憶１１０が接続される。チップセット１０３にはバス１０６を通してＮＩＣ１０４とＨＢＡ１０５が接続される。ＮＩＣ１０４はネットワーク１６０に接続され、ＨＢＡ１０５はストレージ１５０に接続される。なお、ストレージ１５０は複数の論理ユニット（またはボリューム）を備えている。
【００２３】
主記憶１１０には、ハイパバイザ１４０がロードされ、ハイパバイザ１４０が制御する複数の仮想計算機１２０がゲストＯＳ１３０をそれぞれ実行する。なお、ハイパバイザ１４０が生成する仮想計算機１２０の構成や、起動させるゲストＯＳ１３０の種類や起動のタイミングなどは、物理計算機１００の入出力装置（図示省略）で設定したり、ネットワーク１６０に接続された管理計算機（図示省略）で設定すればよい。
【００２４】
図２は、本発明の第１の実施の形態における物理計算機およびソフトウェアのスタックの一例を示すブロック図である。
【００２５】
図２は、ハイパバイザ１４０が物理計算機１００の計算機資源を分割して仮想計算機１２０−１、１２０−２を生成した例を示す。そして、図２では、複数の仮想計算機１２０で共有するＩＯアダプタとしてＨＢＡ１０５を用いる例を示す。ＨＢＡ１０５は、前記従来例で述べたＳＲ−ＩＯＶに準拠して、物理機能（以下、ＰＦ）と仮想機能（以下、ＶＦ）を提供することができる。
【００２６】
図２において、１２０−１は起動対象の仮想計算機、１２０−２はｉＳＣＳＩターゲット機能を提供する仮想計算機、１３０−１は起動対象のゲストＯＳ、１３０−２はｉＳＣＳＩターゲット機能を提供するゲストＯＳ、２０１はＵＥＦＩ用ｉＳＣＳＩドライバ、２０２はＵＥＦＩ用ＰＦドライバ、２０３はＯＳ用ＶＦドライバ、２０４はＯＳ用ＰＦドライバ、２０５はｉＳＣＳＩターゲットサーバ、２１０はＰＦ、２１１はＩＯＶレジスタ、２１２はＶＦ、２２１は仮想ＮＩＣエミュレータ、２２２はＵＥＦＩイベント監視部、２３１はアダプタ割り当て表、２３２はストレージ割り当て表、２３３はアクセス経路管理表、である。
【００２７】
物理計算機１００は、ＲＯＭ１９０にＵＥＦＩ１９１を格納する。ＳＲ−ＩＯＶに準拠したＨＢＡ１０５は、起動時などに機能を提供するＰＦ（図中ＰＦ−１）２１０と、複数のＶＦ（図中ＶＦ−１−１〜ＶＦ−１−ｎ）２１２を提供することができる。ＨＢＡ１０５のＰＦ２１０は、ＶＦを制御するためのＩＯＶレジスタ２１１を備える。ＩＯＶレジスタ２１１のＶＦ  Ｅｎａｂｌｅビットに、仮想計算機１２０やハイパバイザ１４０が所定の値をセットすることで任意のＶＦ−１−１〜ＶＦ−１−ｎが利用可能となる。
【００２８】
ハイパバイザ１４０は、ＲＯＭ１９０のＵＥＦＩ１９１を読み込んで起動する。ハイパバイザ１４０は、まず、仮想計算機１２０−２を生成し、ゲストＯＳ１３０−２を起動させる。ハイパバイザ１４０は、仮想計算機１２０−２に対して仮想のＵＥＦＩ１９２を提供する。ハイパバイザ１４０は、仮想のＵＥＦＩ１９２にＵＥＦＩ用ＰＦドライバ２０２を提供する。仮想のＵＥＦＩ１９２は、ＵＥＦＩ用ＰＦドライバ２０２を用いてＨＢＡ１０５のＰＦ２１０にアクセスし、ストレージ１５０からブートイメージを読み込む。そして、ブートイメージからゲストＯＳ１３０−２を起動する。
【００２９】
ゲストＯＳ１３０−２には、ＨＢＡ１０５のＰＦ２１０を利用するためのＯＳ用ＰＦドライバ２０４が組み込まれている。そして、ゲストＯＳ１３０−２ではｉＳＣＳＩターゲットサーバ２０５が実行される。ｉＳＣＳＩターゲットサーバ２０５は、他の仮想計算機１２０からのアクセスを受け付けて、ＨＢＡ１０５のＰＦ２１０を介してストレージ１５０にアクセスするサーバ機能である。
【００３０】
また、ゲストＯＳ１３０−２は、ＯＳ用ＰＦドライバ２０４でＨＢＡ１０５のＰＦ２１０にアクセスし、ＩＯＶレジスト２１１にＶＦ  Ｅｎａｂｌｅビットに所定の値をセットして、ＶＦ−１−１〜ＶＦ−１−ｎを利用可能にする。
【００３１】
本実施形態では、仮想計算機１２０−２及びゲストＯＳ１３０−２を予め起動しておいてから、仮想計算機１２０−１とゲストＯＳ１３０−１を起動させる例を示す。
【００３２】
ゲストＯＳ１３０−２のｉＳＣＳＩターゲットサーバ２０５を利用して、仮想計算機１２０−１とゲストＯＳ１３０−１が起動する。仮想計算機１２０−１は、ハイパバイザ１４０から仮想ＵＥＦＩ１９３の提供を受ける。仮想ＵＥＦＩ１９３には、ゲストＯＳ１３０−２のｉＳＣＳＩターゲットサーバ２０５を利用するＵＥＦＩ用ｉＳＣＳＩドライバ２０１が含まれる。
【００３３】
一方、仮想計算機１２０−１がＵＥＦＩ用ｉＳＣＳＩドライバ２０１で起動した後には、ＯＳ用ＶＦドライバ２０３をロードしたゲストＯＳ１３０−１が起動する。ゲストＯＳ１３０−１は、ＯＳ用ＶＦドライバ２０３からＨＢＡ１０５のＶＦ２１２（例えば、ＶＦ−１−１）を使用してストレージ１５０にアクセスする。
【００３４】
物理計算機１００の計算機資源を仮想計算機１２０に割り当てるハイパバイザ１４０は、ＩＯアダプタと仮想計算機１２０の関係を管理するアダプタ割り当て表２３１と、ストレージ１５０と仮想計算機１２０の関係を管理するストレージ割り当て表２３２と、各仮想計算機１２０からストレージ１５０までのアクセス経路を管理するアクセス経路管理表２３３を備える。
【００３５】
ハイパバイザ１４０は、仮想計算機１２０の仮想のＵＥＦＩ１９３の挙動を監視するためのＵＥＦＩイベント監視部２２２を実行する。ＵＥＦＩイベント監視部２２２はＵＥＦＩ１９３からゲストＯＳ１３０−１へと制御が切り替わるイベントであるＵＥＦＩ boot serviceの終了を監視し、終了するとハイパバイザ１４０に通知する。また、ハイパバイザ１４０は、物理的なＮＩＣ１０４を複数の仮想計算機で共有するために、仮想ＮＩＣエミュレータ２２１を実行する。
【００３６】
ハイパバイザ１４０の各機能部はプログラムとして主記憶１１０にロードされる。ＣＰＵ１０１は、各機能部のプログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、ＣＰＵ１０１は、ＵＥＦＩイベント監視プログラムに従って動作することでＵＥＦＩイベント監視部２２２として機能する。他のプログラムについても同様である。さらに、ＣＰＵ１０１は、各プログラムが実行する複数の処理のそれぞれを実現する機能部としても動作する。
【００３７】
ハイパバイザ１４０やゲストＯＳ１３０の各機能を実現するプログラム、テーブル等の情報は、ストレージ１５０や不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【００３８】
また、本実施形態におけるＵＥＦＩ１９１は、ハイパバイザ１４０を起動するためのブートマネージャを利用するものであり、物理計算機１００のハードウェアの入出力を管理する入出力管理部として機能する。また、ハイパバイザ１４０が提供する仮想のＵＥＦＩ１９２及びＵＥＦＩ１９３は、仮想計算機１２０を起動するためのブートマネージャとして利用するものであり、仮想計算機１２０の入出力を管理する入出力管理部として機能する。
【００３９】
図３Ａ〜図３Ｃは本発明の第１の実施の形態におけるアダプタ割り当て表である。図３Ａは、仮想ＮＩＣエミュレータ２２１が提供する仮想ＮＩＣ（図中ＶＮＩＣ）の割り当て表３００である。図３Ｂは、ＨＢＡ１０５のＰＦ２１０の割り当て表３１０である。また、図３ＣはＨＢＡ１０５のＶＦ２１２の割り当て表３２０を示す。
【００４０】
図３Ａの仮想ＮＩＣの割り当て表３００は、３０１は仮想ＮＩＣの識別子を格納するＶＮＩＣ＃３０１と、仮想計算機の識別子を格納する仮想計算機番号３０２からひとつのエントリが構成される。図示の例では、仮想ＮＩＣエミュレータ２２１が提供する仮想ＮＩＣ（ＶＮＩＣ０）が仮想計算機（＃０）１２０−２に割り当てられ、仮想ＮＩＣ（ＶＮＩＣ１）が仮想計算機（＃１）１２０−１に割り当てられていることを示す。
【００４１】
図３ＢのＨＢＡ１０５のＰＦ２１０の割り当て表３１０は、ＰＦの識別子を格納するＰＦ＃３１１と、ＰＦ２１０が割り当てられた仮想計算機１２０の識別子を格納する仮想計算機番号３０２からひとつのエントリが構成される。図示の例では、ＰＦ−１、ＰＦ−２が仮想計算機（＃０）１２０−２に割り当てられていることを示す。
【００４２】
図３ＣのＨＢＡ１０５のＶＦ２１２の割り当て表３２０は、ＰＦの識別子を格納するＰＦ＃３１１と、ＰＦ２１０の配下のＶＦの識別子を格納するＶＦ＃３２１と、ＶＦ２１２が割り当てられた仮想計算機１２０の識別子を格納する仮想計算機番号３０２とからひとつのエントリが構成される。図示の例では、ＰＦ−１の配下のＶＦ−１−１が仮想計算機（＃１）１２０−１に割り当てられていることを示す。
【００４３】
なお、図３Ａ〜図３Ｃの割り当て表３００〜３２０の総称が図２に示すアダプタ割り当て表２３１である。
【００４４】
図４は本発明の第１の実施の形態におけるストレージ割り当て表２３２である。ストレージ割り当て表２３２は、仮想計算機１２０の識別子を格納する仮想計算機番号３０２と、当該仮想計算機に割り当てたストレージ１５０の論理ユニット（ＬＵ）の識別子を格納するＬＵＮ４０１と、論理ユニットのＷｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅを格納するＷＷＮ４０２と、論理ユニットのｉＳＣＳＩの識別名称を格納するｉＳＣＳＩネーム４０３かひとつのエントリが構成される。図中、エントリ４１１はｉＳＣＳＩの経路用のストレージ割り当てを示し、エントリ４１２はＨＢＡ１０５を経由するストレージ１５０の割り当てを示す。
【００４５】
図５Ａ、図５Ｂは本発明の第１の実施の形態におけるアクセス経路管理表２３３、２３３’である。図５Ａは、起動する仮想計算機１２０−１からｉＳＣＳＩターゲットサーバ２０５の経路を選択した状態のアクセス経路管理表２３３を示す。アクセス経路管理表２３３は、仮想計算機の識別子を格納する仮想計算機番号３０２と、仮想計算機に割り当てた論理ユニットの識別子を格納するＬＵＮ４０１と、ＨＢＡ１０５のＰＦ２１０の選択状態を格納するＰＦ５０１と、ＶＦ２１２の選択状態を格納するＶＦ５０２と、ｉＳＣＳＩの選択状態を格納するｉＳＣＳＩ５０３からひとつのエントリが構成される。なお、各選択状態は「１」で有効＝選択中、「０」で無効＝非選択となる。
【００４６】
図５Ｂのアクセス経路管理表２３３’は、仮想計算機（＃１）１２０−１がＶＦ２１２を介してストレージ１５０のＬＵＮ０にアクセスし、仮想計算機（＃０）１２０−２がＰＦ２１０を介してストレージ１５０のＬＵＮ０、ＬＵＮ１にアクセスする例を示す。
【００４７】
図６は本発明の第１の実施の形態におけるアクセス経路の一例を示すブロック図である。図６において、１５０は起動対象の仮想計算機（＃１）１２０−１に割り当てたストレージ、６０２は仮想ＮＩＣ、２０２はＰＦ、６０４はＶＦ、６１０はｉＳＣＳＩを使ったアクセス経路（第１アクセス経路）、６２０はＶＦを使ったアクセス経路（第２アクセス経路）、である。処理の詳細については後述する。
【００４８】
図７は本発明の第１の実施の形態におけるアクセス経路切り替えのフローチャートである。このフローチャートは、ハイパバイザ１４０が仮想計算機（＃１）１２０−１を起動するときに実行する。図７において、７０１はＶＦ２１２からストレージ１５０にアクセスする経路６２０を無効にするステップである。つまり、ハイパバイザ１４０は、ＶＦ２１２（ＶＦ−１−１）に至る経路を遮断する。あるいは、ＶＦ２１２からストレージ１５０へのアクセスを禁止するようにしてもよい。
【００４９】
７０２はｉＳＣＳＩターゲットサーバ２０５を経由してＰＦ２１０から仮想計算機（＃１）１２０−１がストレージ１５０にアクセスする経路を有効にするステップである。これにより、仮想計算機（＃１）１２０−１はＰＦ２１０を介してストレージ１５０に接続される。
【００５０】
７０３はハイパバイザ１４０が仮想計算機（＃１）１２０−１の電源を投入するステップである。
【００５１】
７０４はハイパバイザ１４０のＵＥＦＩイベント監視部２２２が、ＵＥＦ１９３のboot service終了を検出するステップである。ＵＥＦＩイベント監視部２２２は、ＵＥＦ１９３からboot serviceの終了を検知すると、ステップ７０５へ進む。
【００５２】
７０５はｉＳＣＳＩターゲットサーバ２０５からストレージ１５０にアクセスする経路を無効にするステップである。
【００５３】
７０６はＶＦ２１２からストレージ１５０にアクセスする経路を有効にするステップ、である。
【００５４】
以上の処理によって、後述するように仮想計算機（＃１）１２０−１は、ＵＥＦＩ用ＶＦドライバを用いることなく起動することができるのである。
【００５５】
本発明の第１の実施の形態では、ハイパバイザ１４０上に二つの仮想計算機（＃０，＃１）１２０−２、１２０−１を生成する。ここで、後から起動する仮想計算機（＃１）１２０−１が本発明の起動適用する仮想計算機であり、先に起動していた仮想計算機１２０−２のゲストＯＳ（＃０）１３０−２がｉＳＣＳＩターゲット機能を提供する。
【００５６】
仮想計算機（＃１）１２０−１の上には本発明により起動対象のゲストＯＳ（＃１）１３０−１を起動させ、このとき仮想計算機（＃０）１２０−２上のゲストＯＳ（＃０）１３０−２でｉＳＣＳＩターゲット機能を提供する。
【００５７】
先に起動させる仮想計算機（＃０）１２０−２は、ＨＢＡ１０５のＰＦ２１０からストレージ１５０にアクセスして起動する。このために、仮想計算機（＃０）１２０−２の仮想ＵＥＦＩ１９２はＵＥＦＩ用ＰＦドライバ２０２を備え、ゲストＯＳ（＃０）１３０−２はＯＳ用ＰＦドライバ２０４を備える。ゲストＯＳ（＃０）１３０−２はｉＳＣＳＩターゲット機能を提供するため、ゲストＯＳ１３０−２はｉＳＣＳＩターゲットサーバ２０５を実行する。
【００５８】
ゲストＯＳ（＃０）１３０−２がＯＳ用ＰＦドライバ２０４を読み込み、ＰＦ２１０のＩＯＶレジスタ２１１に対してＶＦ  Ｅｎａｂｌｅビットをセットすることで、ＨＢＡ１０５のＶＦ２１２を利用可能にする。図２で示したように、図中一番目のＰＦであるＰＦ−１と、ＰＦ−１に対するＶＦ−１−１〜ＶＦ−１−ｎを図示しているが、ＰＦが複数存在する場合にも同様に適用できる。
【００５９】
ハイパバイザ１４０内の仮想ＮＩＣエミュレータ２２１は、物理的なＮＩＣ１０４を複数の仮想計算機１２０で仮想スイッチを介して共有するために、仮想ＮＩＣを生成して仮想計算機１２１、１２０−２に割り当てる。なお、図２では仮想ＮＩＣは図示していない。また、仮想スイッチはハイパバイザ１４０内に生成されるもので、仮想計算機１２０同士の通信を行うことができる。
【００６０】
仮想計算機（＃１）１２０−１上のゲストＯＳ（＃１）１３０−１は、ＶＦ２１２を起動デバイスとして利用する。このため、ゲストＯＳ１３０−１はＯＳ用ＶＦドライバ２０３を備える。
【００６１】
しかし、ハイパバイザ１４０が仮想計算機１２０−１（＃１）に提供するＵＥＦＩ１９３はＵＥＦＩ用ＶＦドライバの代わりにＵＥＦＩ用ｉＳＣＳＩドライバ２０１を備える。つまり、仮想計算機１２０−１（＃１）を起動する際には、ＵＥＦＩ用ＶＦドライバを利用しないため、ＩＯアダプタベンダがＵＥＦＩ用ＶＦドライバを提供する必要がなくなる。これにより、ＩＯアダプタベンダの開発コストを低減できる。
【００６２】
図３Ａ〜図３Ｃに示したアダプタ割り当て表２３１は仮想計算機１２０に割り当てるＩＯアダプタの情報を管理する。アダプタ割り当て表２３１は、仮想ＮＩＣ割り当て表３１０、ＰＦ割り当て表３１０、ＶＦ割り当て表３２０、からなる。仮想計算機番号３０２の＃０は仮想計算機１２０−２、＃１は仮想計算機１２０−１に対応する。仮想計算機（＃０）１２０−２にはＶＮＩＣ０、ＰＦ−１、ＰＦ−２を割り当て、仮想計算機（＃１）１２０−１には、ＶＮＩＣ１とＶＦ−１−１を割り当てている。ＶＦ−１−２はいずれの仮想計算機にも割り当てていない。
【００６３】
図４に示したストレージ割り当て表２３２は、仮想計算機１２０に割り当てるストレージ１５０の情報を管理する。ここで、ストレージ割り当て表２３２の仮想計算機番号３０２＝「＃０」は、図２の仮想計算機（＃０）１２０−２、仮想計算機番号３０２＝「＃１」は図２の仮想計算機（＃１）１２０−１である。
【００６４】
ストレージ割り当て表２３２の仮想計算機番号３０２＝「＃０」にはＬＵＮ０とＬＵＮ１の二つのストレージ１５０を割り当てる。ＬＵＮ０はＷＷＮのみ割り当てられており、仮想計算機（＃０）１２０−２が使用するストレージであることを示す。図中ＬＵＮ１はＷＷＮ４０２とｉＳＣＳＩネーム４０３の両方が割り当てられている。仮想計算機１２０−２はｉＳＣＳＩターゲットサーバ２０５を実行しており、仮想気計算（＃０）１２０−２に割り当てられたストレージ１５０を他の計算機に対してｉＳＣＳＩターゲットデバイスとして公開できる。図４のエントリ４１１のＬＵＮ１は仮想計算機（＃０）１２０−２が他の計算機に対してｉＳＣＳＩターゲットとしてストレージ１５０を提供することを示している。
【００６５】
仮想計算機（＃１）１２０−１にはＬＵＮ０のストレージ１５０を割り当てる。ＬＵＮ０は、図４で示したようにＷＷＮ４０２とｉＳＣＳＩネーム４０３の両方が割り当てられている。仮想計算機（＃１）１２０−１はｉＳＣＳＩターゲットサーバを持っていないので、ｉＳＣＳＩターゲットデバイスを公開するのではなくマウントすることを示す。つまり、ＬＵＮ＝０は同一のストレージ１５０がＨＢＡ１０５のアクセス経路とｉＳＣＳＩのアクセス経路の二つのアクセス経路を持つことを示している。
【００６６】
ここで、図４のストレージ割り当て表２３２のエントリ４１１と、エントリ４１２は同一のストレージであることに注目する。仮想計算機（＃１）１２０−１がｉＳＣＳＩターゲットとしてＬＵＮ０を利用する場合には、仮想計算機（＃０）１２０−２のＬＵＮ１を利用する。
【００６７】
このことを模式的に表した図が図６になる。ストレージ１５０が図４のストレージ割り当て表２３２のエントリ４１１とエントリ４１２のストレージに相当する。図６の破線で表した経路６１０がｉＳＣＳＩを利用する経路で、図中実線で表した経路６２０がＨＢＡ１０５を直接利用する経路を示す。
【００６８】
図５Ａ、図５Ｂに示したアクセス経路管理表２３３、２３３’はストレージ１５０に対してＨＢＡ１０５とｉＳＣＳＩターゲットサーバ２０５のどちらの経路からストレージ１５０にアクセスさせるかを管理する。
【００６９】
図５Ａに示したアクセス経路管理表２３３は、ｉＳＣＳＩターゲットサーバ２０５の経路を選択した状態で、図５Ｂに示したアクセス経路管理表２３３’は、ＨＢＡ１０５へ直接アクセスする経路を選択した状態を示す。アクセス経路管理表２３３、２３３’では、ＨＢＡ１０５についてはさらにＰＦ２１０とＶＦ２１２のどちらを利用するかも管理する。図５Ａのアクセス経路管理表２３３のエントリ５１１とエントリ５１２は、それぞれ図４のストレージ割り当て表２３２のエントリ４１１とエントリ４１２に対応する。
【００７０】
図５Ａに示したアクセス経路管理表２３３は仮想計算機（＃０）１２０−２がＬＵＮ０とＬＵＮ１に対してＨＢＡ１５０のＰＦ２１０でアクセスし、仮想計算機（＃１）１２０−１がＬＵＮ０に対してｉＳＣＳＩターゲット２０５を経由してアクセスすることを示す。
【００７１】
図５Ｂに示したアクセス経路管理表２３３’は仮想計算機（＃０）１２０−２がＬＵＮ０，１に対してＨＢＡ１５０のＰＦ２１０でアクセスし、仮想計算機（＃１）１２０−１がＬＵＮ０に対してＨＢＡ１５０のＶＦ２１２でアクセスすることを示す。図５Ｂのアクセス経路管理表２３３では仮想計算機（＃０）１２０−２のＬＵＮ１はアクセスしない設定になっている。
【００７２】
図５Ｂに示したアクセス経路管理表２３３’のエントリ５１１’とエントリ５１２’は同一のストレージ１５０である。図５Ｂのエントリ５１１’は仮想計算機（＃０）１２０−２が仮想計算機（＃１）１２０−１に対してｉＳＣＳＩターゲットデバイスとしてストレージ１５０を提供するために存在する。このため、図５Ｂのエントリ５１１’とエントリ５１２’は整合性を保って設定する必要がある。例えば、図５Ａに示したアクセス経路管理表２３３のエントリ５１２で仮想計算機（＃１）１２０−１がｉＳＣＳＩドライバ２０１でストレージ１５０にアクセスするには、ＶＦ２１２の選択状態欄５０２を無効、つまり「０」に設定するとともに、ｉＳＣＳＩの選択状態欄５０３を有効つまり「１」に設定し、さらにエントリ５１１で仮想計算機（＃０）１２０−２がｉＳＣＳＩターゲットサーバ２０５でストレージ１５０を公開するためにＰＦ２１０の選択状態欄５０１を１に設定する。
【００７３】
また別の例としては、図５Ａに示したアクセス経路管理表２３３のエントリ５１２で仮想計算機（＃１）１２０−１がｉＳＣＳＩではなくＨＢＡ１０５のＶＦ２１２でストレージ１５０にアクセスするには、図５Ｂに示したアクセス経路管理表２３３のＶＦ２１２の選択状態を格納するＶＦ５０２を１に設定するとともにｉＳＣＳＩの選択状態５０３を０に設定し、さらにエントリ５１１’で仮想計算機（＃０）１２０−２がｉＳＣＳＩターゲット２０５のストレージ公開を停止するためにＰＦ２１０の選択状態を格納するＰＦ５０１を０に設定する。
【００７４】
ここでは、ｉＳＣＳＩターゲット２０５のストレージ１５０の有効と無効をアクセス経路管理表２３３の図５Ａのエントリ５１１と図５Ｂのエントリ５１１’のようにストレージ１５０に対してＰＦ２１０でアクセス可能にするか否かを決定している。しかし、ｉＳＣＳＩターゲット２０５のストレージ１５０の公開の有効と無効を制御する方法はこの方式に限らない。ｉＳＣＳＩターゲットサーバ２０５の設定ファイル（図示していない）を変更するなど、任意の方式を利用することができる。
【００７５】
本実施形態では、アクセス経路管理表２３３は同一のストレージ１５０に対してＨＢＡ１０５とｉＳＣＳＩターゲット２０５のように複数のアクセス経路がある場合には、常に一つのアクセス経路のみ有効にする所に特徴がある。同一のストレージ１５０に対して複数のアクセス経路がある場合でも、同時に一つのアクセス経路しか有効にならないため、複数のアクセス経路からアクセスが競合するのを防止できる効果がある。
【００７６】
次に、図７を用いて本発明による仮想計算機とゲストＯＳ１３０の起動方法について説明する。各種管理表の状態については、他の図面も参照して説明する。
【００７７】
物理計算機１００は大きく分けて以下の４つの手順で起動する。
（１）ストレージ１５０からマスターブートレコードの読み出し、
（２）ストレージ１５０からブートローダを読み出し、
（３）ストレージ１５０からブートイメージを読み出し、
（４）ストレージ１５０から起動に必要なファイルの読み出し。
【００７８】
ここで、上記（１）から（３）はＵＥＦＩが処理するためにＵＥＦＩ用ドライバで処理が行われる。上記（４）はＵＥＦＩの制御が終了し、制御がＯＳに移り、ＯＳがストレージ１５０からの読み込み処理を実行するためブートイメージに含まれるＨＢＡ１０５のＯＳ用ドライバ（ＰＦ）で、ストレージ１５０から起動に必要なファイルを読み出す。物理計算機１００の起動ではＵＥＦＩ用ＰＦドライバ２０２とＯＳ用ＰＦドライバ２０４の２つでストレージ１５０から読み込みを継続することができる。
【００７９】
仮想計算機（＃１）１２０−１の起動手順も上述の（１）〜（４）に示した物理計算機１００と同様である。このため、仮想計算機１２０がＶＦ２１２を起動デバイスとして利用する場合には、ＵＥＦＩ用ＶＦドライバが必須となる。本発明の特徴は、ＳＲ−ＩＯＶに準拠したＩＯアダプタ（ＨＢＡ１０５）で、ＵＥＦＩ用ＶＦドライバを使わずに、仮想計算機（＃１）１２０−１上のゲストＯＳ（＃１）１３０−１をＨＢＡ１０５のＶＦ２１２で起動することにある。
【００８０】
ＵＥＦＩ用ドライバの役割はＨＢＡ１０５を介してストレージ１５０から読み込んだブートイメージを主記憶１１０に展開して、ＯＳに制御を移すことである。本発明では、ＵＥＦＩ用ＶＦドライバの代わりにＵＥＦＩ用ｉＳＣＳＩドライバ２０１を利用する。このため、仮想計算機１２０−１及びゲストＯＳ１３０−１の起動途中でｉＳＣＳＩターゲットサーバ２０５を利用してＰＦ２１０でストレージ１５０にアクセスする経路からＨＢＡ１０５のＶＦ２１２からストレージ１５０にアクセスする経路へと経路の切り替えが発生する。
【００８１】
図６で示すように、仮想計算機（＃１）１２０−１の起動前に、ハイパバイザ１４０は、仮想計算機（＃１）１２０−１からＶＦ２１２の経路６２０（実線）を無効にしてから、ｉＳＣＳＩターゲットサーバ２０５の経路６１０（破線）を有効にする必要がある。
【００８２】
図７に示したステップ７０１ではハイパバイザ１４０が、仮想計算機（＃１）１２０−１からＶＦ２１２の経路６２０を無効にする。つまり、ステップ７０１ではハイパバイザ１４０は以下の処理を実行する。
【００８３】
ハイパバイザ１４０は、図５Ａのアクセス経路管理表２３３を参照して、ＶＦ２１２の経路６２０を無効にする。具体的には、起動対象の仮想計算機２１２のＶＦの状態選択欄５０２を無効、つまり０、に設定する。
【００８４】
図７のステップ７０２では、ハイパバイザ１４０がｉＳＣＳＩの経路６１０を有効にする。ステップ７０２ではハイパバイザ１４０は以下の処理を実行する。
【００８５】
ハイパバイザ１４０は、図５Ａのアクセス経路管理表２３３を参照して、ｉＳＣＳＩの経路６１０を有効にする。具体的には、アクセス経路管理表２３３の起動対象の仮想計算機のｉＳＣＳＩの状態選択欄５０３を有効、つまり１、に設定する。ステップ７０１とステップ７０２を実行すると、図５Ａに示したアクセス経路管理表２３３のエントリ５１２になる。
【００８６】
以上により、電源投入時のアクセス経路の設定が完了したので、図７のステップ７０３に進み、ハイパバイザ１４０は仮想計算機（＃１）１２０−１の電源を投入する。この時、仮想計算機（＃１）１２０−１は、図６の経路６１０（破線）を利用してストレージ１５０にアクセスする。つまり、仮想計算機（＃１）１２０−１のＵＥＦＩ用ｉＳＣＳＩドライバ２０１は、ハイパバイザ１４０の仮想ＮＩＣ６０２を介してｉＳＣＳＩターゲットサーバ２０５にアクセスし、ｉＳＣＳＩターゲットサーバ２０５はＯＳ用ＰＦドライバ２０４を介して、仮想ＰＦ６０３とＰＦ２１０（ＰＦ−１）を利用してストレージ１５０にアクセスする。なお、仮想ＰＦ６０３はＵＥＦＩ用ＰＦドライバ２０２に対応してハイパバイザ１４０が生成した仮想デバイスである。
【００８７】
仮想計算機（＃１）１２０−１のＵＥＦＩ１９３は、ＵＥＦＩ用ｉＳＣＳＩドライバ２０１で仮想スイッチ６０２、ｉＳＣＳＩターゲットサーバ２０５、ＯＳ用ＰＦドライバ２０４、仮想ＰＦ６０３、ＨＢＡのＰＦ２１０を経由して、ストレージ１５０からマスターブートレコードを読み出して、マスターブートレコードに定義されたブートローダを読み出し、ブートローダで定義されたブートイメージを読み出して主記憶１１０に展開する。仮想計算機（＃１）１２０−１のＵＥＦＩ１９３は、ブートイメージを主記憶１０１へ格納すると処理を終了し、制御をゲストＯＳ（＃１）１３０−１に移す。
【００８８】
ＵＥＦＩ１９３からゲストＯＳ１３０−１に制御が移る時に、ＵＥＦＩ１９３はboot service exitのイベントを発生する。ステップ７０４では、ハイパバイザ１４０のＵＥＦＩイベント監視部２２２がＵＥＦＩ１９３のイベントを監視し、boot service exitを検出するとステップ７０５に進む。
【００８９】
ＵＥＦＩ１９３からのboot service exitのイベント以降は、ＵＥＦＩ１９３からゲストＯＳ１３０−１に制御が移り、ＯＳ用ＶＦドライバ２０３でストレージ１５０にアクセスする。つまり、この場合はゲストＯＳ（＃１）１３０−１がＨＢＡ１０５のＶＦ２１２を利用してストレージ１５０にアクセスする。このため、図６に示したｉＳＣＳＩの経路６１０（図中破線）を無効にして、ＶＦ−１−１の経路６２０（図中実線）を有効にし、軌道の途中にｉＳＣＳＩの経路６１０からＶＦ−１−１の経路６２０へとアクセスする経路を切り替える。
【００９０】
図７のステップ７０５ではｉＳＣＳＩの経路６１０を無効にする。ステップ７０５ではハイパバイザ１４０は以下の処理を実行する。ハイパバイザ１４０は、図５Ｂのアクセス経路管理表２３３’を参照して、ｉＳＣＳＩの経路６１０を無効にする。具体的には、起動対象の仮想計算機（＃１）１２０−１のｉＳＣＳＩの状態選択欄５０３を０に設定する。
【００９１】
ステップ７０６ではハイパバイザ１４０がゲストＯＳ１３０−１からＶＦ２１２の経路６２０を有効にする。ステップ７０２ではハイパバイザ１４０は以下の処理を実行する。ハイパバイザ１４０は、図５Ｂのアクセス経路管理表２３３’を参照して、ＶＦ２１２の経路６２０を有効にする。具体的には、起動対象の仮想計算機（＃１）１２０−１のＶＦの状態選択欄５０２を１に設定する。ステップ７０５とステップ７０６を実行すると、図５Ｂのアクセス経路管理表２３３’の５１２’になる。
【００９２】
以上により、起動対象の仮想計算機（＃１）１２０−１のＵＥＦＩ１９３からゲストＯＳ１３０−１に制御が移った後のアクセス経路の切り替えが完了したので処理を終了する。この時、仮想計算機（＃１）のゲストＯＳ（＃１）１３０−１は図６の経路６２０を利用して、ＨＢＡ１０５のＶＦ２１２からストレージ１５０にアクセスする。つまり、ＯＳ用ＶＦドライバ２０３は仮想デバイスのＶＦ６０４とＶＦ２１２を利用してストレージ１５０にアクセスする。なお、図６の仮想ＶＦ６０４は、ハイパバイザ１４０が提供するＶＦ−１−１に対応する仮想デバイスである。
【００９３】
本実施形態では、仮想計算機１２０−１及びゲストＯＳ１３０−１の起動方法について述べた。参考までにゲストＯＳ１３０−１のインストール方法と、仮想計算機１２０−１の起動方法の設定について以下に述べる。
【００９４】
ゲストＯＳ１３０−１は通常のＯＳのインストールと同様にＤＶＤ（図示省略）やネットワークなどの手段によりインストールする。ここでは、ＤＶＤを使ってインストールする場合について説明する。
【００９５】
ゲストＯＳ１３０−１のインストールにはｉＳＣＳＩを利用せず、ＨＢＡ１０５のＶＦ２１２のみを利用する。そこでストレージ割り当て表２３２で仮想計算機１２０−１がＶＦ２１２のみを利用するように設定する。つまり、図５Ｂのアクセス経路管理表２３３のエントリ５１２’の設定になる。
【００９６】
ＯＳのインストール用ＤＶＤから仮想計算機１２０−１を起動するため、仮想計算機１２０−１のＵＥＦＩ１９３の起動デバイスをＤＶＤに設定する。物理計算機１００に接続したＤＶＤ（図示省略）にＯＳのインストール用ＤＶＤを挿入して、仮想計算機１２０−１の電源を投入する。ゲストＯＳ１３０−１のインストールが始まると、追加のデバイスドライバとしてＯＳ用ＶＦドライバ２０３をインストールする。ゲストＯＳ１３０−１のインストール先には、ＶＦ２１２でアクセスするストレージ１５０を指定する。ＯＳのインストール用ＤＶＤで起動するだけではＶＦ２１２を利用できないためストレージ１５０を利用できないが、ＯＳ用ＶＦドライバ２０３をインストールの途中で組み込むことで、ストレージ１５０をゲストＯＳ１３０−１のインストール先として利用可能になる。
【００９７】
ゲストＯＳ１３０−１のインストール完了後、ＵＥＦＩ１９３の起動デバイスをｉＳＣＳＩに設定する。
【００９８】
従来例のＯＳのインストールでは、インストールに利用したＨＢＡ１０５をＵＥＦＩの起動デバイスに設定する。これに対して本発明では、ゲストＯＳ１３０−１のインストールに利用しなかったｉＳＣＳＩをＵＥＦＩ１９３の起動デバイスに設定する所に特徴がある。最後にハイパバイザ１４０の仮想計算機管理表（図示省略）に対して、仮想計算機１２０−１が本発明の方法により起動するよう設定する。ハイパバイザ１４０は仮想計算機１２０−１を起動する時に仮想計算機管理表を参照し、起動対象の仮想計算機１２０−１が本発明の方法により起動するか、通常の起動手順により起動するか判別して起動の処理を変更する。この起動の処理の変更は、ＵＥＦＩイベント監視部２２２の監視対象の設定やアクセス経路管理表２３３の設定などである。
【００９９】
本実施形態では、同一のストレージ１５０に対してｉＳＣＳＩの経路６１０とＶＦ２１２の経路６２０を用意するが、どちらか一方の経路のみを利用するようにアクセス経路管理表２３３により制御する所に特徴がある。仮想計算機１２０−１とゲストＯＳ１３０−１の起動フェーズがどこまで進んだかをストレージに記録するＯＳでは、同一のストレージに対して二つのアクセス経路があるとアクセス競合やデータの不整合が発生する可能性がある。このため、何らかの手段でアクセス経路を一つだけ有効にする必要がある。
【０１００】
本実施形態ではアクセス経路管理表２３３によりアクセス経路を一つに制御するが、この方法に限らず任意の方法を利用できる。例えば、仮想計算機１２０−１の仮想ハードウェア構成からｉＳＣＳＩをサポートする仮想ＮＩＣ６０２をＵＥＦＩ１９３がゲストＯＳ１３０−１に対して見せないように制御する方法もある。この方法ではＵＥＦＩ１９３は仮想ＮＩＣ６０２を利用できるが、ゲストＯＳ１３０−１は仮想ＮＩＣ６０２を利用できない。つまり、アクセス経路切り替えを実現できる。
【０１０１】
本実施形態では、ＵＥＦＩ用ＶＦドライバが存在しない場合に仮想計算機１２０−１をＶＦ２１２から起動する方法について述べているが、ＵＥＦＩ用ＰＦドライバが存在しない場合に仮想計算機をＰＦから起動する場合についても同様に適用できる。
【０１０２】
本実施形態では、ｉＳＣＳＩターゲットサーバ２０５を仮想計算機１２０−２の上で実行しているが、ｉＳＣＳＩターゲットを動かす場所は仮想計算機上に限らない。例えばハイパバイザ１４０でｉＳＣＳＩターゲットサーバを実行する方法もある。
【０１０３】
本実施形態ではＯＳ用ＰＦドライバ２０４を仮想計算機１２０−２の上のゲストＯＳ１３０−２で実行しているが、ＯＳ用ＰＦドライバ２０４を実行させる場所は仮想計算機上に限らない。例えばハイパバイザ１４０でＯＳ用ＰＦドライバ２０４を実行する方法もある。仮想計算機上でＯＳ用ＰＦドライバ２０４を実行する場合には、ＯＳ用ＰＦドライバ２０４を実行する仮想計算機を起動してからでなければＯＳ用ＶＦドライバ２０３を実行する仮想計算機を起動できない。
【０１０４】
これに対してハイパバイザ１４０でＯＳ用ＰＦドライバ２０４を稼動させる場合には、ハイパバイザ１４０がＩＯＶレジスタ２１１に対してＶＦ  ＥｎａｂｌｅビットをセットすることでＶＦ２１２を利用可能にするので、任意の仮想計算機から起動できる。
【０１０５】
本実施形態では、同一のストレージ１５０に対してＶＦ２１２の経路６２０に加えてｉＳＣＳＩの経路６１０を用意して、ブートイメージの読み出しまでのアクセスにｉＳＣＳＩの経路６１０を利用したが、ｉＳＣＳＩ以外の任意の経路を利用できる。例えば、ハイパバイザ１４０がエミュレーションにより仮想ＡＴＡを仮想計算機に提供している場合には、仮想ＡＴＡの経路を利用できる。
【０１０６】
本実施形態ではＨＢＡ１０５のＶＦ２１２を使った起動方法について述べたが、ＩＯアダプタの種類はＨＢＡ１０５に限らない。ブートイメージを主記憶に展開してからＯＳに制御を移すという流れを類推できるＩＯアダプタであれば本発明を適用できる。例えば、ＮＩＣ１０４を使ったネットワークブートにも適用できる。この場合には、仮想ＮＩＣ６０２でネットワーク１６０からブートイメージを主記憶１１０に展開して、ブートイメージに含まれるＯＳに処理が移ってからＮＩＣ１０４のＶＦが残りのファイルを読み出す。ｉＳＣＳＩブートについても同様に適用できる。
【０１０７】
＜第２実施形態＞
前記第１の実施形態ではＵＥＦＩを利用して仮想計算機を起動する場合について述べたが、ＢＩＯＳを利用して起動する場合にも適用できる。ＵＥＦＩではＯＳに制御が移る時にboot service exitのイベントを発行する。このため、ＵＥＦＩのイベントを監視して、boot service exitのイベントを検出することでアクセス経路の切り替えタイミングを判定できる。これに対して、ＢＩＯＳはＯＳに制御を移る時にイベントを発行しない。このため、イベント監視以外の手段によりアクセス経路の切り替えタイミングを判定する必要がある。例えば、ＯＳによるＩＯアダプタの使用開始（設定開始）を切り替えタイミングに利用できる。
【０１０８】
本第２実施形態では、ＢＩＯＳを利用して仮想計算機を起動する場合の構成および処理について説明する。本実施形態では、ＢＩＯＳを利用して起動する仮想計算機において、一つの起動デバイスに対して二つのアクセス経路を設け、起動の途中でＯＳによるＩＯアダプタの利用開始（設定開始）を検出してアクセス経路を切り替える所に特徴がある。ＵＥＦＩやＢＩＯＳに関連しない部分は、前記第１の実施形態と同じ構成になるため説明を省略する。
【０１０９】
図８は、本発明の第２の実施の形態における物理計算機およびソフトウェアのスタックの一例を示すブロック図である。図８において、ＲＯＭ１９０には、ＢＩＯＳ１９５が格納され、ＨＢＡ１０５にはＲＯＭ  ＢＩＯＳ８０３が搭載される。ハイパバイザ１４０は、前記第１実施形態のＵＥＦＩイベント監視部２２２に代わって、ゲストＯＳ（＃１）１３０−１のＰＣＩデバイスのアクセスを監視するＰＣＩアクセス監視部８０２を備える。また、ハイパバイザ１４０は、仮想計算機（＃１）１２０−１、仮想計算機（＃０）１２０−２にそれぞれ仮想のシステムＢＩＯＳ８０１を提供する。その他の構成は前記第１実施形態と同様である。
【０１１０】
また、本第２実施形態におけるＢＩＯＳ１９５は、ハイパバイザ１４０を起動する際には、物理計算機１００のハードウェアの入出力を管理する入出力管理部として機能する。また、ハイパバイザ１４０が提供する仮想のＳＹＳＴＥＭ  ＢＩＯＳ８０１は、ゲストＯＳ１３０を起動する際に仮想計算機１２０の入出力を管理する入出力管理部として機能する。
【０１１１】
図９は本発明の第２の実施の形態におけるアクセス経路の一例を示すブロック図である。図９において、９１０はゲストＯＳ（＃１）１３０−１の仮想ＮＩＣ６０２からｉＳＣＳＩターゲットサーバ２０５を使ってＰＦ２１０からストレージ１５０へのアクセス経路である。経路６２０は前記第１実施形態と同様であり、ゲストＯＳ（＃１）１３０−１からＶＦ−１−１を経由してストレージ１５０にアクセスする。
【０１１２】
図１０は本発明の第２の実施の形態における起動時に行われるアクセス経路切り替えのフローチャートである。図１０において、１００１はゲストＯＳ（＃１）１３０−１がＶＦを初期化するためにＰＣＩコンフィグレーション空間へのアクセスしたことを検出するステップ、である。ゲストＯＳ（＃１）１３０−１がＰＣＩコンフィグレーション空間へアクセスしたことをハイパバイザ１４０のＰＣＩアクセス監視部８０２が検知すると、ステップ７０５へ進んで前記第１実施形態と同様に、ストレージ１５０へのアクセス経路を切り替える。その他の処理は、前記第１実施形態と同様である。
【０１１３】
本実施形態では、ＰＣＩアクセス監視部８０２がゲストＯＳ（＃１）１３０−１のＰＣＩコンフィグ空間へのアクセスを監視し、ＨＢＡ１０５のＶＦ２１２のＰＣＩコンフィグレーション空間へのアクセス、すなわち、ゲストＯＳ１３０−１がＶＦ２１２を設定しようとするアクセスを検出した段階で、ｉＳＣＳＩの経路９１０からＶＦ２１２の経路６２０へとアクセス経路を切り替えても安全だと判断する所に特徴がある。ゲストＯＳ１３０−１がＶＦ２１２を設定するためのＰＣＩコンフィグレーション空間へのアクセスとしては、ＰＣＩバスのルートやブリッジの検出や、ルート配下のデバイスの登録やデバイスドライバの組み込みなどである。
【０１１４】
前記第１実施形態のように、ゲストＯＳ１３０−１をＵＥＦＩで起動する場合には、ＵＥＦＩ用ｉＳＣＳＩドライバ２０１やＵＥＦＩ用ＰＦドライバ２０２などのＵＥＦＩ boot serviceデバイスドライバを用いてストレージ１５０からマスターブートレコード、ブートローダブートイメージを読み出す。つまり、ＵＥＦＩ用のデバイスドライバは既にＵＥＦＩに組み込まれた状態で、仮想計算機は電源投入される。
【０１１５】
これに対して、ゲストＯＳ（＃１）１３０−１を仮想システムＢＩＯＳ８０１で起動する場合には、ＵＥＦＩ boot serviceデバイスドライバに相当するコードが仮想ＳＹＳＴＥＭ ＢＩＯＳ８０１ではなくＨＢＡ１０５内にあるＲＯＭ ＢＩＯＳ８０３に含まれている。このため、仮想ＳＹＳＴＥＭ ＢＩＯＳ８０１はＲＯＭ ＢＩＯＳ８０３に含まれるプログラムを利用してストレージ１５０にアクセスする。ＵＥＦＩとＢＩＯＳでは、ストレージ１５０にアクセスするプログラムの所在が異なるが、ストレージ１５０にアクセスする手順には本質的な差がない。
【０１１６】
ＵＥＦＩとＢＩＯＳ８０１（１９５）とで本質的に異なるのは、ＵＥＦＩやＢＩＯＳが処理を終えてＯＳに制御が移る時の処理である。ＵＥＦＩからＯＳに制御が移る時にＵＥＦＩはboot service exitのイベントを発行する。ＵＥＦＩはＢＩＯＳよりも高機能かつ多機能であるため主記憶を占有する量が多い。このためＵＥＦＩはboot service exitのイベントを発行する時に、ＯＳの起動後に不要になるコードを主記憶から削除する。ハイパバイザ１４０はＵＥＦＩの発行するイベントを監視することで、boot service exitのイベント発生を検出できる。
【０１１７】
これに対して、主記憶１１０を占有する量の少ないＢＩＯＳはＯＳ起動後も主記憶１１０に残り続けるため、ＢＩＯＳからＯＳに制御が移る時にＢＩＯＳはイベントを発行しない。このため、イベント監視以外の手段を用いてＢＩＯＳからＯＳへの制御の移行を検出する必要がある。
【０１１８】
ＢＩＯＳからＯＳに制御が移ると、ＯＳはＰＣＩバスをスキャンしてどのようなＩＯアダプタを利用可能か調べ、次にＩＯアダプタを初期化して利用可能にし、最後にＩＯアダプタを利用してストレージ１５０などにアクセスする。ＰＣＩバスのスキャンや初期化の時に、ＰＣＩデバイスのＰＣＩコンフィグレーション空間へのアクセスが発生する。
【０１１９】
図９において、仮想ＮＩＣ６０２など仮想計算機１２０−１の電源投入時から利用可能なＩＯアダプタは、仮想ＳＹＳＴＥＭ ＢＩＯＳ８０１によるハードウェアの初期化の段階でＰＣＩコンフィグレーション空間へのアクセスが発生する。このため仮想ＮＩＣ６０２の場合にはＰＣＩコンフィグレーション空間へのアクセスを監視してもＢＩＯＳからＯＳに制御が移ったか判断できない。
【０１２０】
これに対して、ＨＢＡ１０５のＶＦ２１２のＰＣＩコンフィグレーション空間へのアクセスは、ゲストＯＳ１３０−１がＯＳ用ＶＦドライバ２０３を組み込んだ段階で発生する。つまり、ＨＢＡ１０５のＶＦ２１２のＰＣＩコンフィグレーション空間へのアクセスを監視すれば、ＯＳに制御が移りかつＶＦ２１２の利用を開始していないという段階を特定できる。この段階ならば、仮想ＳＹＳＴＥＭ  ＢＩＯＳ８０１によるｉＳＣＳＩの経路９１０によるアクセスが終了するとともに、ゲストＯＳ１３０−１によるＶＦ２１２の経路６２０によるアクセスが開始されていないので、ｉＳＣＳＩの経路９１０からＶＦの経路６２０へと安全に切り替えられる。ＰＣＩアクセス監視部８０２は、ＰＣＩコンフィグレーション空間へのアクセスを監視し、ＨＢＡ１０５のＶＦ２１２のＰＣＩコンフィグレーション空間へのアクセスを検出したらハイパバイザ１４０に通知する。
【０１２１】
次に、図１０を用いて本発明による仮想計算機の起動方法について説明する。各種管理表の状態については、他の図面も参照して説明する。
【０１２２】
前記第１の実施形態ではＵＥＦＩ用ｉＳＣＳＩドライバ２０１を利用してｉＳＣＳＩの経路６１０を実現する。これに対して本実施形態では図９の仮想ＮＩＣ６０２のＲＯＭ ＢＩＯＳ８０３を利用してｉＳＣＳＩの経路９１０を実現する。
【０１２３】
仮想計算機１２０−１の起動前に、ＶＦ２１２の経路６２０を無効にしてｉＳＣＳＩの経路９１０を有効にする必要がある。
【０１２４】
図１０のステップ７０１ではＶＦ２１２の経路６２０を無効にする。ステップ７０２ではｉＳＣＳＩの経路９１０を有効にする。ステップ７０１とステップ７０２を実行すると、図５Ａのアクセス経路管理表２３３に示したエントリ５１２になる。
【０１２５】
以上により、電源投入時のアクセス経路９１０の設定が完了したので、ステップ７０３に進み仮想計算機１２０−１の電源を投入する。この時、仮想計算機１２０−１は図９の経路９１０を利用してストレージ１５０にアクセスする。つまり、仮想ＮＩＣ６０２のＲＯＭ ＢＩＯＳ８０３はｉＳＣＳＩターゲットサーバ２０５にアクセスし、ｉＳＣＳＩターゲットサーバ２０５はＯＳ用ＰＦドライバ２０４を介して、仮想ＰＦ６０３とＨＢＡ１０５のＰＦ２１０を利用してストレージ１５０にアクセスする。
【０１２６】
図１０のステップ１００１では、ＰＣＩアクセス監視部８０２が仮想ＶＦ６０４のＰＣＩコンフィグレーション空間へのアクセスを検出するとステップ７０５に進む。
【０１２７】
仮想ＳＹＳＴＥＭ  ＢＩＯＳ８０１からゲストＯＳ１３０−１に制御が移ると、ＯＳ用ＶＦドライバ２０３でゲストＯＳ１３０−１はストレージ１５０にアクセスする。つまり、この場合ゲストＯＳ１３０−１はＶＦ２１２を利用してストレージ１５０にアクセスする。このため、ｉＳＣＳＩの経路９１０を無効にする一方、ＶＦ２１２の経路６２０を有効にして、ｉＳＣＳＩの経路９１０からＶＦ２１２の経路６２０へとアクセス経路を切り替える。
【０１２８】
ステップ７０５ではｉＳＣＳＩの経路９１０を無効にする。ステップ７０６ではＶＦ２１２の経路６２０を有効にする。ステップ７０５とステップ７０６を実行すると、図５Ｂに示したアクセス経路管理表２３３’のエントリ５１２’になる。
【０１２９】
以上により、仮想ＳＹＳＴＥＭ  ＢＩＯＳ８０１からゲストＯＳ１３０−１に制御が移った後のアクセス経路の設定が完了したので処理を終了する。この時、仮想計算機１２０−１は図９の経路６２０を利用してストレージ１５０にアクセスする。つまり、ＯＳ用ＶＦドライバ２０３は仮想ＶＦ６０４と、ＨＢＡ１０５のＶＦ２１２を利用してストレージ１５０にアクセスする。
【０１３０】
このように、仮想のＳＹＳＴＥＭ  ＢＩＯＳ８０１で仮想計算機（＃１）１２０−１及びゲストＯＳ（＃１）１３０−１を起動する場合においても、前記第１実施形態と同様に、マスターブートレコード、ブートローダ、ブートイメージの読み出しをｉＳＣＳＩターゲットサーバ２０５、ＯＳ用ＰＦドライバ２０４、ＰＦ２１０を経由してストレージ１５０から読み込んだ後、ゲストＯＳ（＃１）１３０−１に制御が移ると、ＯＳ用ＶＦドライバ２０３からＨＢＡ１０５のＶＦ２１２を経由してストレージ１５０からゲストＯＳ１３０−１の起動に必要なファイルの読み出しを続けることができる。そして、第２実施形態においては仮想のＳＹＳＴＥＭ  ＢＩＯＳ８０１からゲストＯＳ（＃１）１３０−１への制御の移行を、ＨＢＡ１０５のＶＦ２１２のＰＣＩコンフィグレーション空間へのアクセスをハイパバイザ１４０が検知することで実現する。つまり、ハイパバイザ１４０のＰＣＩアクセス監視部８０２は、ＶＦ２１２のＰＣＩコンフィグレーション空間へのアクセスを検知すると、仮想のＳＹＳＴＥＭ  ＢＩＯＳ８０１からゲストＯＳ（＃１）１３０−１へ制御が移ったことを判定する。そして、ハイパバイザ１４０がストレージ１５０へのアクセス経路を図９の経路９１０から経路６２０へ切り替えることで、ゲストＯＳ（＃１）１３０−１はＨＢＡ１０５のＶＦ２１２を利用してストレージ１５０にアクセスすることができるのである。
【０１３１】
以上のように、第１実施形態、第２実施形態より、本発明によればＵＥＦＩやＢＩＯＳを用いる物理計算機１００で、ＳＲ−ＩＯＶに準拠したＩＯアダプタで仮想計算機１２０を円滑に利用することができる。
【０１３２】
なお、上記第１実施形態、第２実施形態では、バス１０６がＰＣＩバスの例を示したが、ＰＣＩｅｘｐｒｅｓｓなどのようにシリアル接続で構成されていてもよい。
【０１３３】
また、上記第１実施形態、第２実施形態では、物理計算機１００の計算機資源を複数の仮想計算機１２０に提供する仮想化部としてハイパバイザ１４０を適用した例を示したが、仮想化部としてはＶＭＭ（Virtual Machine Manager）を用いるようにしてもよい。
【産業上の利用可能性】
【０１３４】
以上のように、本発明はＳＲ−ＩＯＶに準拠したＩＯアダプタを備えた仮想計算機及び仮想計算機システムに適用することができる。
【符号の説明】
【０１３５】
１００  物理計算機
１０１  ＣＰＵ
１０２  インタコネクト
１０３  チップセット
１０４  ＮＩＣ
１０５  ＨＢＡ
１０６  バス
１１０  主記憶
１２０  仮想計算機
１３０  ゲストＯＳ
１４０  ハイパバイザ
１５０  ストレージ
１６０  ネットワーク
２０１  ＥＦＩ用ｉＳＣＳＩドライバ
２０２  ＥＦＩ用ＰＦドライバ
２０３  ＯＳ用ＶＦドライバ
２０４  ＯＳ用ＰＦドライバ
２０５  ｉＳＣＳＩターゲットサーバ
２１０  ＰＦ
２１１  ＩＯＶレジスタ
２１２  ＶＦ
２２１  仮想ＮＩＣエミュレータ
２２２  ＥＦＩイベント監視部
２３１  アダプタ割り当て表
２３２  ストレージ割り当て表
２３３  アクセス経路管理表
３００  仮想ＮＩＣの割り当て表
【図１】
0005733628.tif 000002
【図２】
0005733628.tif 000003
【図３Ａ】
0005733628.tif 000004
【図３Ｂ】
0005733628.tif 000005
【図３Ｃ】
0005733628.tif 000006
【図４】
0005733628.tif 000007
【図５Ａ】
0005733628.tif 000008
【図５Ｂ】
0005733628.tif 000009
【図６】
0005733628.tif 000010
【図７】
0005733628.tif 000011
【図８】
0005733628.tif 000012
【図９】
0005733628.tif 000013
【図１０】
0005733628.tif 000014