JP5733628B2 - 仮想計算機を制御する計算機装置及び仮想計算機の制御方法 - Google Patents

仮想計算機を制御する計算機装置及び仮想計算機の制御方法 Download PDF

Info

Publication number
JP5733628B2
JP5733628B2 JP2011215542A JP2011215542A JP5733628B2 JP 5733628 B2 JP5733628 B2 JP 5733628B2 JP 2011215542 A JP2011215542 A JP 2011215542A JP 2011215542 A JP2011215542 A JP 2011215542A JP 5733628 B2 JP5733628 B2 JP 5733628B2
Authority
JP
Japan
Prior art keywords
virtual machine
access path
virtual
access
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011215542A
Other languages
English (en)
Other versions
JP2013077076A (ja
Inventor
上村 哲也
上村  哲也
直也 服部
直也 服部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2011215542A priority Critical patent/JP5733628B2/ja
Priority to EP20120005633 priority patent/EP2575041A1/en
Priority to US13/585,403 priority patent/US9098321B2/en
Publication of JP2013077076A publication Critical patent/JP2013077076A/ja
Application granted granted Critical
Publication of JP5733628B2 publication Critical patent/JP5733628B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Description

本発明は仮想計算機に関し、特に同一の起動デバイスに対して複数のアクセス手段を用いて起動する仮想計算機の起動方法に関する。
近年の半導体の製造においては、プロセスルールが進むに従い、CPUの性能向上の手法が動作周波数の向上から、一つのLSIに搭載するCPUコア数の増加へと変わってきた。これにより物理計算機では複数または多数のCPUコアを搭載する実装が一般的になった。物理計算機に搭載された複数または多数のCPUコアを有効活用する方法の一つとして、サーバ仮想化技術がある。サーバ仮想化ソフトウェア(ハイパバイザ)が複数の仮想計算機を一つの物理計算機の上に生成する。複数の仮想計算機を一台の物理計算機で稼動させるため、物理計算機のCPU利用率が向上する。
ハイパバイザは、物理計算機に搭載した主記憶を複数の領域に分割し各領域を各仮想計算機の主記憶として割り当てるとともに、物理計算機に搭載したCPUコアを占有もしくは時分割で各仮想計算機に割り当てる。仮想記憶と異なりスワップアウトが発生しないので、仮想計算機は主記憶に物理計算機と同等の性能でアクセスできる。ハイパバイザの処理オーバヘッドは小さいため、CPUと主記憶については、仮想計算機は物理計算機に近い性能を持つ。
仮想計算機と物理計算機で大きく異なるのはIOアダプタの性能である。実装スペースの制約のため、物理計算機に搭載できるIOアダプタの数には限りがある。このため一つのIOアダプタを複数の仮想計算機で共有する。IOアダプタを共有するために、ハイパバイザはIOアダプタをエミュレートする仮想IOアダプタを仮想計算機に提供する。エミュレーションによるオーバヘッドの分だけ、仮想計算機のIO性能は物理計算機のIO性能よりも劣るという問題がある。
この問題の解決のため、PCI SigはSR−IOV(Single Root I/O Virtualization)という規格を制定した。SR−IOVはIOアダプタ共有の主要部分をハードウェアで提供する仕組みである。SR−IOVではハードウェア初期化など頻度の低い処理のみハイパバイザが担当するので、仮想計算機でも高いIO性能を利用可能になる。IOVを利用する技術として、特許文献1にハイパバイザの基本的な処理動作が開示されている。SR−IOVの仕様書としては、非特許文献1が知られている。
SR−IOVではIOアダプタと仮想IOアダプタを、それぞれPhysical Function(PF)、Virtual Function(VF)と呼ぶ。LSIの実装面積を削減するため、VFはPFとは異なる方式で実装される。第一にVFはPFのSR-IOV Extended CapabilitiesのSR-IOV ControlフィールドにあるVF Enableビットをセットして初めて利用可能になる。第二にPFとVFでは利用可能なレジスタの数が異なるとともに、同一のレジスタについてもリードライトに対する挙動が変わる場合がある。このようなPFとVFの違いがあるため、PFとVFを利用するにはそれぞれ専用のデバイスドライバが必要になる。PF用デバイスドライバがIOアダプタを初期化した後にVF EnableビットをセットしてVFを利用可能にする。PF用デバイスドライバはIOアダプタのハードウェアの全体に関連する設定や障碍監視も担当する。VF用デバイスドライバはVF部分の設定や動作のみを担当する。
特許文献2には、エミュレーションモードとパススルーモードを持つ仮想デバイスが開示されている。オペレーションの種別によりエミュレーションモードとパススルーモードを切り替える。この特許文献2では以下の例を挙げている。低頻度で性能を要求しないオペレーションにはエミュレーションモード、高頻度で性能を要求するオペレーションにはパススルーモード、に切り替える。
米国特許出願公開第2009/0133016号明細書 米国特許出願公開第2009/0119087号明細書
"Single Root I/O Virtualization and Sharing Specification Revision 1.1"、[online]、2010年、PCI SIG。[平成23年9月10日検索]、インターネット<http://www.pcisig.com/specifications/iov/single_root/>
OSは以下の二段階のプロセスで起動する。まず、第一のプロセスでは、UEFI(Unified Extensible Firmware Interface)のブートサービス用デバイスドライバもしくはIOアダプタのROM BIOS(Basic Input/Output System)内のドライバが起動デバイスからブートイメージを読み出す。第2のプロセスでは、ブートイメージ内のカーネルに組み込まれたOS用デバイスドライバが起動デバイスから必要なファイルを読み出す。つまり、OSの起動にはOS用デバイスドライバに加えて、UEFI用デバイスドライバもしくはROM BIOS用ドライバも必要になる。
HBA(Host Bus Adapter)等のSR−IOVのIOアダプタでは、サポートするOSごとにOS用PFデバイスドライバ(PFドライバ)とOS用VFデバイスドライバ(VFドライバ)が必要になる。PFを起動デバイスとして利用するにはUEFI用PFドライバが必要になる。さらにVFを起動デバイスとして利用するにはUEFI用VFドライバも必要になる。VFを利用するには、まず、IOアダプタのPFにアクセスしてVFを設定する必要があり、VF用のドライバだけではSR−IOVのIOアダプタを利用できない。これらによりSR−IOVではIOアダプタベンダのドライバ開発コストが増大するという課題がある。
UEFIの代わりにBIOSを用いる場合でも、UEFI用デバイスドライバの代わりにROM BIOS用ドライバが必要になるため、IOアダプタベンダのドライバ開発コストの増加の課題が残る。
VFを起動デバイスとして用いずに他の手段で起動した場合、VF経由でアクセスするストレージは起動デバイス(通常はC)とは異なるドライブ名称(DやEなど)となる。これはサーバ仮想化により物理計算機とは異なる運用形態となり、システム構築や運用管理面での工数が増大する。つまり、仮想化イメージに設定されたドライブ名称と実際に付与されたドライブ名称が異なることで、パスの不整合が生じる。この不整合を修正するための労力が必要となる。これらにより運用管理コストが増大するという課題がある。
エミュレーションモードとパススルーモードを切り替える仮想デバイスを利用するには、エミュレーションモードとパススルーモードの両方のモードに対応するデバイスドライバが必要になる。ハイパバイザの種類とサポートするOSの組み合わせの数だけデバイスドライバを開発する必要があるため、IOアダプタベンダのドライバ開発コストの増加の課題が残る。
そこで本発明は、上記問題点に鑑みてなされたもので、UEFI用VFドライバの開発を必要とせず、かつドライブ名称の変更を防いで、仮想計算機を起動させることを目的とする。
本発明は、プロセッサとメモリとストレージを備える物理計算機と、前記物理計算機の計算機資源を仮想計算機へ割り当てる仮想化部と、を備えて前記仮想計算機を起動させる仮想計算機の起動方法であって、前記仮想化部が、前記仮想計算機を起動する以前に、前記仮想計算機と前記ストレージを接続する第1のアクセス経路と第2のアクセス経路の状態を設定する第1のステップと、前記仮想化部が、前記仮想計算機を起動する第2のステップと、前記仮想化部が、前記第1のアクセス経路と前記第2のアクセス経路を切り替える契機を判定する第3のステップと、前記仮想化部が、前記第1及び第2のアクセス経路を切り替える契機と判定したときに、前記第1のアクセス経路を第2のアクセス経路に切り替える第4のステップと、を含み、前記第1のステップは、前記仮想化部が、前記第2のアクセス経路を無効にする第5のステップと、前記仮想化部が、前記第1のアクセス経路を有効にする第6のステップと、を含み、前記第4のステップは、前記仮想化部が、前記第1のアクセス経路を無効にする第7のステップと、前記仮想化部が、前記第2のアクセス経路を有効にする第8のステップと、を含み、前記ストレージは物理機能と仮想機能を備えたIOアダプタを介して接続され、前記第1のアクセス経路は前記物理機能を介して前記ストレージに接続され、前記第2のアクセス経路は前記仮想機能を介して前記ストレージに接続される
したがって、本発明は、起動直後の仮想計算機は第1のアクセス経路でストレージにアクセスするので、UEFI(もしくはROM BIOS)用VFドライバの開発が不要であり、かつドライブ名称が変わらないため、IOアダプタベンダのドライバ開発コストの増大を抑制するとともに、運用管理コストの増大を抑制する効果がある。
本発明の第1の実施形態を示し、物理計算機の一例を示すブロック図である。 本発明の第1の実施形態を示し、物理計算機上のソフトウェアの構成を示すブロック図である。 本発明の第1の実施形態を示し、IOアダプタの割り当て表の一例を示す図である。 本発明の第1の実施形態を示し、IOアダプタの物理機能の割り当て表の一例を示す図である。 本発明の第1の実施形態を示し、IOアダプタの物理機能と仮想機能の割り当て表の一例を示す図である。 本発明の第1の実施形態を示し、ストレージの割り当て表の一例を示す図である。 本発明の第1の実施形態を示し、アクセス経路管理表の一例を示す図である。 本発明の第1の実施形態を示し、アクセス経路管理表の一例で、経路を切り替えた後を示す図である。 本発明の第1の実施形態を示し、アクセス経路の一例を示すブロック図である。 本発明の第1の実施形態を示し、物理計算機で行われる起動処理の一例を示すフローチャートである。 本発明の第2の実施形態を示し、物理計算機上のソフトウェアの構成を示すブロック図である。 本発明の第2の実施形態を示し、アクセス経路の一例を示すブロック図である。 本発明の第2の実施形態を示し、物理計算機で行われる起動処理の一例を示すフローチャートである。
以下、本発明の実施の形態を、図面を用いて説明する。同一の符号は同一の構成要素を示す。
<第1実施形態>
本実施形態では、UEFI(Unified Extensible Firmware Interface)を利用して仮想計算機が起動する場合の構成および処理の一例を説明する。本実施形態では、UEFIを利用して起動する仮想計算機において、一つの起動デバイスに対して二つのアクセス経路を設け、起動の途中でアクセス経路を切り替える所に特徴がある。
図1は、本発明を適用する物理計算機のブロック図である。図1において、100は物理計算機、101はCPU、102はインタコネクト、103はチップセット、104はNIC(Network Interface Card)、105はHBA(Host Bus Adapter)、106はバス(例えば、PCIバス)、110は主記憶(メインメモリ)、120−1〜120−nは仮想計算機(または論理区画)、130−1〜130−nはゲストOS(Operating System)、140はハイパバイザ、150はストレージ、160はネットワーク、190はUEFIを格納するROMである。なお、ROM190に代わってEEPROMやフラッシュメモリにUEFIを格納しても良い。また、仮想計算機120−1〜120−nの総称を示す符号は120とし、ゲストOS130−1〜130−nの総称を示す符号は130とする。
CPU101にはインタコネクト102を通してチップセット103と主記憶110が接続される。チップセット103にはバス106を通してNIC104とHBA105が接続される。NIC104はネットワーク160に接続され、HBA105はストレージ150に接続される。なお、ストレージ150は複数の論理ユニット(またはボリューム)を備えている。
主記憶110には、ハイパバイザ140がロードされ、ハイパバイザ140が制御する複数の仮想計算機120がゲストOS130をそれぞれ実行する。なお、ハイパバイザ140が生成する仮想計算機120の構成や、起動させるゲストOS130の種類や起動のタイミングなどは、物理計算機100の入出力装置(図示省略)で設定したり、ネットワーク160に接続された管理計算機(図示省略)で設定すればよい。
図2は、本発明の第1の実施の形態における物理計算機およびソフトウェアのスタックの一例を示すブロック図である。
図2は、ハイパバイザ140が物理計算機100の計算機資源を分割して仮想計算機120−1、120−2を生成した例を示す。そして、図2では、複数の仮想計算機120で共有するIOアダプタとしてHBA105を用いる例を示す。HBA105は、前記従来例で述べたSR−IOVに準拠して、物理機能(以下、PF)と仮想機能(以下、VF)を提供することができる。
図2において、120−1は起動対象の仮想計算機、120−2はiSCSIターゲット機能を提供する仮想計算機、130−1は起動対象のゲストOS、130−2はiSCSIターゲット機能を提供するゲストOS、201はUEFI用iSCSIドライバ、202はUEFI用PFドライバ、203はOS用VFドライバ、204はOS用PFドライバ、205はiSCSIターゲットサーバ、210はPF、211はIOVレジスタ、212はVF、221は仮想NICエミュレータ、222はUEFIイベント監視部、231はアダプタ割り当て表、232はストレージ割り当て表、233はアクセス経路管理表、である。
物理計算機100は、ROM190にUEFI191を格納する。SR−IOVに準拠したHBA105は、起動時などに機能を提供するPF(図中PF−1)210と、複数のVF(図中VF−1−1〜VF−1−n)212を提供することができる。HBA105のPF210は、VFを制御するためのIOVレジスタ211を備える。IOVレジスタ211のVF Enableビットに、仮想計算機120やハイパバイザ140が所定の値をセットすることで任意のVF−1−1〜VF−1−nが利用可能となる。
ハイパバイザ140は、ROM190のUEFI191を読み込んで起動する。ハイパバイザ140は、まず、仮想計算機120−2を生成し、ゲストOS130−2を起動させる。ハイパバイザ140は、仮想計算機120−2に対して仮想のUEFI192を提供する。ハイパバイザ140は、仮想のUEFI192にUEFI用PFドライバ202を提供する。仮想のUEFI192は、UEFI用PFドライバ202を用いてHBA105のPF210にアクセスし、ストレージ150からブートイメージを読み込む。そして、ブートイメージからゲストOS130−2を起動する。
ゲストOS130−2には、HBA105のPF210を利用するためのOS用PFドライバ204が組み込まれている。そして、ゲストOS130−2ではiSCSIターゲットサーバ205が実行される。iSCSIターゲットサーバ205は、他の仮想計算機120からのアクセスを受け付けて、HBA105のPF210を介してストレージ150にアクセスするサーバ機能である。
また、ゲストOS130−2は、OS用PFドライバ204でHBA105のPF210にアクセスし、IOVレジスト211にVF Enableビットに所定の値をセットして、VF−1−1〜VF−1−nを利用可能にする。
本実施形態では、仮想計算機120−2及びゲストOS130−2を予め起動しておいてから、仮想計算機120−1とゲストOS130−1を起動させる例を示す。
ゲストOS130−2のiSCSIターゲットサーバ205を利用して、仮想計算機120−1とゲストOS130−1が起動する。仮想計算機120−1は、ハイパバイザ140から仮想UEFI193の提供を受ける。仮想UEFI193には、ゲストOS130−2のiSCSIターゲットサーバ205を利用するUEFI用iSCSIドライバ201が含まれる。
一方、仮想計算機120−1がUEFI用iSCSIドライバ201で起動した後には、OS用VFドライバ203をロードしたゲストOS130−1が起動する。ゲストOS130−1は、OS用VFドライバ203からHBA105のVF212(例えば、VF−1−1)を使用してストレージ150にアクセスする。
物理計算機100の計算機資源を仮想計算機120に割り当てるハイパバイザ140は、IOアダプタと仮想計算機120の関係を管理するアダプタ割り当て表231と、ストレージ150と仮想計算機120の関係を管理するストレージ割り当て表232と、各仮想計算機120からストレージ150までのアクセス経路を管理するアクセス経路管理表233を備える。
ハイパバイザ140は、仮想計算機120の仮想のUEFI193の挙動を監視するためのUEFIイベント監視部222を実行する。UEFIイベント監視部222はUEFI193からゲストOS130−1へと制御が切り替わるイベントであるUEFI boot serviceの終了を監視し、終了するとハイパバイザ140に通知する。また、ハイパバイザ140は、物理的なNIC104を複数の仮想計算機で共有するために、仮想NICエミュレータ221を実行する。
ハイパバイザ140の各機能部はプログラムとして主記憶110にロードされる。CPU101は、各機能部のプログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、CPU101は、UEFIイベント監視プログラムに従って動作することでUEFIイベント監視部222として機能する。他のプログラムについても同様である。さらに、CPU101は、各プログラムが実行する複数の処理のそれぞれを実現する機能部としても動作する。
ハイパバイザ140やゲストOS130の各機能を実現するプログラム、テーブル等の情報は、ストレージ150や不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
また、本実施形態におけるUEFI191は、ハイパバイザ140を起動するためのブートマネージャを利用するものであり、物理計算機100のハードウェアの入出力を管理する入出力管理部として機能する。また、ハイパバイザ140が提供する仮想のUEFI192及びUEFI193は、仮想計算機120を起動するためのブートマネージャとして利用するものであり、仮想計算機120の入出力を管理する入出力管理部として機能する。
図3A〜図3Cは本発明の第1の実施の形態におけるアダプタ割り当て表である。図3Aは、仮想NICエミュレータ221が提供する仮想NIC(図中VNIC)の割り当て表300である。図3Bは、HBA105のPF210の割り当て表310である。また、図3CはHBA105のVF212の割り当て表320を示す。
図3Aの仮想NICの割り当て表300は、301は仮想NICの識別子を格納するVNIC#301と、仮想計算機の識別子を格納する仮想計算機番号302からひとつのエントリが構成される。図示の例では、仮想NICエミュレータ221が提供する仮想NIC(VNIC0)が仮想計算機(#0)120−2に割り当てられ、仮想NIC(VNIC1)が仮想計算機(#1)120−1に割り当てられていることを示す。
図3BのHBA105のPF210の割り当て表310は、PFの識別子を格納するPF#311と、PF210が割り当てられた仮想計算機120の識別子を格納する仮想計算機番号302からひとつのエントリが構成される。図示の例では、PF−1、PF−2が仮想計算機(#0)120−2に割り当てられていることを示す。
図3CのHBA105のVF212の割り当て表320は、PFの識別子を格納するPF#311と、PF210の配下のVFの識別子を格納するVF#321と、VF212が割り当てられた仮想計算機120の識別子を格納する仮想計算機番号302とからひとつのエントリが構成される。図示の例では、PF−1の配下のVF−1−1が仮想計算機(#1)120−1に割り当てられていることを示す。
なお、図3A〜図3Cの割り当て表300〜320の総称が図2に示すアダプタ割り当て表231である。
図4は本発明の第1の実施の形態におけるストレージ割り当て表232である。ストレージ割り当て表232は、仮想計算機120の識別子を格納する仮想計算機番号302と、当該仮想計算機に割り当てたストレージ150の論理ユニット(LU)の識別子を格納するLUN401と、論理ユニットのWorld Wide Nameを格納するWWN402と、論理ユニットのiSCSIの識別名称を格納するiSCSIネーム403かひとつのエントリが構成される。図中、エントリ411はiSCSIの経路用のストレージ割り当てを示し、エントリ412はHBA105を経由するストレージ150の割り当てを示す。
図5A、図5Bは本発明の第1の実施の形態におけるアクセス経路管理表233、233’である。図5Aは、起動する仮想計算機120−1からiSCSIターゲットサーバ205の経路を選択した状態のアクセス経路管理表233を示す。アクセス経路管理表233は、仮想計算機の識別子を格納する仮想計算機番号302と、仮想計算機に割り当てた論理ユニットの識別子を格納するLUN401と、HBA105のPF210の選択状態を格納するPF501と、VF212の選択状態を格納するVF502と、iSCSIの選択状態を格納するiSCSI503からひとつのエントリが構成される。なお、各選択状態は「1」で有効=選択中、「0」で無効=非選択となる。
図5Bのアクセス経路管理表233’は、仮想計算機(#1)120−1がVF212を介してストレージ150のLUN0にアクセスし、仮想計算機(#0)120−2がPF210を介してストレージ150のLUN0、LUN1にアクセスする例を示す。
図6は本発明の第1の実施の形態におけるアクセス経路の一例を示すブロック図である。図6において、150は起動対象の仮想計算機(#1)120−1に割り当てたストレージ、602は仮想NIC、202はPF、604はVF、610はiSCSIを使ったアクセス経路(第1アクセス経路)、620はVFを使ったアクセス経路(第2アクセス経路)、である。処理の詳細については後述する。
図7は本発明の第1の実施の形態におけるアクセス経路切り替えのフローチャートである。このフローチャートは、ハイパバイザ140が仮想計算機(#1)120−1を起動するときに実行する。図7において、701はVF212からストレージ150にアクセスする経路620を無効にするステップである。つまり、ハイパバイザ140は、VF212(VF−1−1)に至る経路を遮断する。あるいは、VF212からストレージ150へのアクセスを禁止するようにしてもよい。
702はiSCSIターゲットサーバ205を経由してPF210から仮想計算機(#1)120−1がストレージ150にアクセスする経路を有効にするステップである。これにより、仮想計算機(#1)120−1はPF210を介してストレージ150に接続される。
703はハイパバイザ140が仮想計算機(#1)120−1の電源を投入するステップである。
704はハイパバイザ140のUEFIイベント監視部222が、UEF193のboot service終了を検出するステップである。UEFIイベント監視部222は、UEF193からboot serviceの終了を検知すると、ステップ705へ進む。
705はiSCSIターゲットサーバ205からストレージ150にアクセスする経路を無効にするステップである。
706はVF212からストレージ150にアクセスする経路を有効にするステップ、である。
以上の処理によって、後述するように仮想計算機(#1)120−1は、UEFI用VFドライバを用いることなく起動することができるのである。
本発明の第1の実施の形態では、ハイパバイザ140上に二つの仮想計算機(#0,#1)120−2、120−1を生成する。ここで、後から起動する仮想計算機(#1)120−1が本発明の起動適用する仮想計算機であり、先に起動していた仮想計算機120−2のゲストOS(#0)130−2がiSCSIターゲット機能を提供する。
仮想計算機(#1)120−1の上には本発明により起動対象のゲストOS(#1)130−1を起動させ、このとき仮想計算機(#0)120−2上のゲストOS(#0)130−2でiSCSIターゲット機能を提供する。
先に起動させる仮想計算機(#0)120−2は、HBA105のPF210からストレージ150にアクセスして起動する。このために、仮想計算機(#0)120−2の仮想UEFI192はUEFI用PFドライバ202を備え、ゲストOS(#0)130−2はOS用PFドライバ204を備える。ゲストOS(#0)130−2はiSCSIターゲット機能を提供するため、ゲストOS130−2はiSCSIターゲットサーバ205を実行する。
ゲストOS(#0)130−2がOS用PFドライバ204を読み込み、PF210のIOVレジスタ211に対してVF Enableビットをセットすることで、HBA105のVF212を利用可能にする。図2で示したように、図中一番目のPFであるPF−1と、PF−1に対するVF−1−1〜VF−1−nを図示しているが、PFが複数存在する場合にも同様に適用できる。
ハイパバイザ140内の仮想NICエミュレータ221は、物理的なNIC104を複数の仮想計算機120で仮想スイッチを介して共有するために、仮想NICを生成して仮想計算機121、120−2に割り当てる。なお、図2では仮想NICは図示していない。また、仮想スイッチはハイパバイザ140内に生成されるもので、仮想計算機120同士の通信を行うことができる。
仮想計算機(#1)120−1上のゲストOS(#1)130−1は、VF212を起動デバイスとして利用する。このため、ゲストOS130−1はOS用VFドライバ203を備える。
しかし、ハイパバイザ140が仮想計算機120−1(#1)に提供するUEFI193はUEFI用VFドライバの代わりにUEFI用iSCSIドライバ201を備える。つまり、仮想計算機120−1(#1)を起動する際には、UEFI用VFドライバを利用しないため、IOアダプタベンダがUEFI用VFドライバを提供する必要がなくなる。これにより、IOアダプタベンダの開発コストを低減できる。
図3A〜図3Cに示したアダプタ割り当て表231は仮想計算機120に割り当てるIOアダプタの情報を管理する。アダプタ割り当て表231は、仮想NIC割り当て表310、PF割り当て表310、VF割り当て表320、からなる。仮想計算機番号302の#0は仮想計算機120−2、#1は仮想計算機120−1に対応する。仮想計算機(#0)120−2にはVNIC0、PF−1、PF−2を割り当て、仮想計算機(#1)120−1には、VNIC1とVF−1−1を割り当てている。VF−1−2はいずれの仮想計算機にも割り当てていない。
図4に示したストレージ割り当て表232は、仮想計算機120に割り当てるストレージ150の情報を管理する。ここで、ストレージ割り当て表232の仮想計算機番号302=「#0」は、図2の仮想計算機(#0)120−2、仮想計算機番号302=「#1」は図2の仮想計算機(#1)120−1である。
ストレージ割り当て表232の仮想計算機番号302=「#0」にはLUN0とLUN1の二つのストレージ150を割り当てる。LUN0はWWNのみ割り当てられており、仮想計算機(#0)120−2が使用するストレージであることを示す。図中LUN1はWWN402とiSCSIネーム403の両方が割り当てられている。仮想計算機120−2はiSCSIターゲットサーバ205を実行しており、仮想気計算(#0)120−2に割り当てられたストレージ150を他の計算機に対してiSCSIターゲットデバイスとして公開できる。図4のエントリ411のLUN1は仮想計算機(#0)120−2が他の計算機に対してiSCSIターゲットとしてストレージ150を提供することを示している。
仮想計算機(#1)120−1にはLUN0のストレージ150を割り当てる。LUN0は、図4で示したようにWWN402とiSCSIネーム403の両方が割り当てられている。仮想計算機(#1)120−1はiSCSIターゲットサーバを持っていないので、iSCSIターゲットデバイスを公開するのではなくマウントすることを示す。つまり、LUN=0は同一のストレージ150がHBA105のアクセス経路とiSCSIのアクセス経路の二つのアクセス経路を持つことを示している。
ここで、図4のストレージ割り当て表232のエントリ411と、エントリ412は同一のストレージであることに注目する。仮想計算機(#1)120−1がiSCSIターゲットとしてLUN0を利用する場合には、仮想計算機(#0)120−2のLUN1を利用する。
このことを模式的に表した図が図6になる。ストレージ150が図4のストレージ割り当て表232のエントリ411とエントリ412のストレージに相当する。図6の破線で表した経路610がiSCSIを利用する経路で、図中実線で表した経路620がHBA105を直接利用する経路を示す。
図5A、図5Bに示したアクセス経路管理表233、233’はストレージ150に対してHBA105とiSCSIターゲットサーバ205のどちらの経路からストレージ150にアクセスさせるかを管理する。
図5Aに示したアクセス経路管理表233は、iSCSIターゲットサーバ205の経路を選択した状態で、図5Bに示したアクセス経路管理表233’は、HBA105へ直接アクセスする経路を選択した状態を示す。アクセス経路管理表233、233’では、HBA105についてはさらにPF210とVF212のどちらを利用するかも管理する。図5Aのアクセス経路管理表233のエントリ511とエントリ512は、それぞれ図4のストレージ割り当て表232のエントリ411とエントリ412に対応する。
図5Aに示したアクセス経路管理表233は仮想計算機(#0)120−2がLUN0とLUN1に対してHBA150のPF210でアクセスし、仮想計算機(#1)120−1がLUN0に対してiSCSIターゲット205を経由してアクセスすることを示す。
図5Bに示したアクセス経路管理表233’は仮想計算機(#0)120−2がLUN0,1に対してHBA150のPF210でアクセスし、仮想計算機(#1)120−1がLUN0に対してHBA150のVF212でアクセスすることを示す。図5Bのアクセス経路管理表233では仮想計算機(#0)120−2のLUN1はアクセスしない設定になっている。
図5Bに示したアクセス経路管理表233’のエントリ511’とエントリ512’は同一のストレージ150である。図5Bのエントリ511’は仮想計算機(#0)120−2が仮想計算機(#1)120−1に対してiSCSIターゲットデバイスとしてストレージ150を提供するために存在する。このため、図5Bのエントリ511’とエントリ512’は整合性を保って設定する必要がある。例えば、図5Aに示したアクセス経路管理表233のエントリ512で仮想計算機(#1)120−1がiSCSIドライバ201でストレージ150にアクセスするには、VF212の選択状態欄502を無効、つまり「0」に設定するとともに、iSCSIの選択状態欄503を有効つまり「1」に設定し、さらにエントリ511で仮想計算機(#0)120−2がiSCSIターゲットサーバ205でストレージ150を公開するためにPF210の選択状態欄501を1に設定する。
また別の例としては、図5Aに示したアクセス経路管理表233のエントリ512で仮想計算機(#1)120−1がiSCSIではなくHBA105のVF212でストレージ150にアクセスするには、図5Bに示したアクセス経路管理表233のVF212の選択状態を格納するVF502を1に設定するとともにiSCSIの選択状態503を0に設定し、さらにエントリ511’で仮想計算機(#0)120−2がiSCSIターゲット205のストレージ公開を停止するためにPF210の選択状態を格納するPF501を0に設定する。
ここでは、iSCSIターゲット205のストレージ150の有効と無効をアクセス経路管理表233の図5Aのエントリ511と図5Bのエントリ511’のようにストレージ150に対してPF210でアクセス可能にするか否かを決定している。しかし、iSCSIターゲット205のストレージ150の公開の有効と無効を制御する方法はこの方式に限らない。iSCSIターゲットサーバ205の設定ファイル(図示していない)を変更するなど、任意の方式を利用することができる。
本実施形態では、アクセス経路管理表233は同一のストレージ150に対してHBA105とiSCSIターゲット205のように複数のアクセス経路がある場合には、常に一つのアクセス経路のみ有効にする所に特徴がある。同一のストレージ150に対して複数のアクセス経路がある場合でも、同時に一つのアクセス経路しか有効にならないため、複数のアクセス経路からアクセスが競合するのを防止できる効果がある。
次に、図7を用いて本発明による仮想計算機とゲストOS130の起動方法について説明する。各種管理表の状態については、他の図面も参照して説明する。
物理計算機100は大きく分けて以下の4つの手順で起動する。
(1)ストレージ150からマスターブートレコードの読み出し、
(2)ストレージ150からブートローダを読み出し、
(3)ストレージ150からブートイメージを読み出し、
(4)ストレージ150から起動に必要なファイルの読み出し。
ここで、上記(1)から(3)はUEFIが処理するためにUEFI用ドライバで処理が行われる。上記(4)はUEFIの制御が終了し、制御がOSに移り、OSがストレージ150からの読み込み処理を実行するためブートイメージに含まれるHBA105のOS用ドライバ(PF)で、ストレージ150から起動に必要なファイルを読み出す。物理計算機100の起動ではUEFI用PFドライバ202とOS用PFドライバ204の2つでストレージ150から読み込みを継続することができる。
仮想計算機(#1)120−1の起動手順も上述の(1)〜(4)に示した物理計算機100と同様である。このため、仮想計算機120がVF212を起動デバイスとして利用する場合には、UEFI用VFドライバが必須となる。本発明の特徴は、SR−IOVに準拠したIOアダプタ(HBA105)で、UEFI用VFドライバを使わずに、仮想計算機(#1)120−1上のゲストOS(#1)130−1をHBA105のVF212で起動することにある。
UEFI用ドライバの役割はHBA105を介してストレージ150から読み込んだブートイメージを主記憶110に展開して、OSに制御を移すことである。本発明では、UEFI用VFドライバの代わりにUEFI用iSCSIドライバ201を利用する。このため、仮想計算機120−1及びゲストOS130−1の起動途中でiSCSIターゲットサーバ205を利用してPF210でストレージ150にアクセスする経路からHBA105のVF212からストレージ150にアクセスする経路へと経路の切り替えが発生する。
図6で示すように、仮想計算機(#1)120−1の起動前に、ハイパバイザ140は、仮想計算機(#1)120−1からVF212の経路620(実線)を無効にしてから、iSCSIターゲットサーバ205の経路610(破線)を有効にする必要がある。
図7に示したステップ701ではハイパバイザ140が、仮想計算機(#1)120−1からVF212の経路620を無効にする。つまり、ステップ701ではハイパバイザ140は以下の処理を実行する。
ハイパバイザ140は、図5Aのアクセス経路管理表233を参照して、VF212の経路620を無効にする。具体的には、起動対象の仮想計算機212のVFの状態選択欄502を無効、つまり0、に設定する。
図7のステップ702では、ハイパバイザ140がiSCSIの経路610を有効にする。ステップ702ではハイパバイザ140は以下の処理を実行する。
ハイパバイザ140は、図5Aのアクセス経路管理表233を参照して、iSCSIの経路610を有効にする。具体的には、アクセス経路管理表233の起動対象の仮想計算機のiSCSIの状態選択欄503を有効、つまり1、に設定する。ステップ701とステップ702を実行すると、図5Aに示したアクセス経路管理表233のエントリ512になる。
以上により、電源投入時のアクセス経路の設定が完了したので、図7のステップ703に進み、ハイパバイザ140は仮想計算機(#1)120−1の電源を投入する。この時、仮想計算機(#1)120−1は、図6の経路610(破線)を利用してストレージ150にアクセスする。つまり、仮想計算機(#1)120−1のUEFI用iSCSIドライバ201は、ハイパバイザ140の仮想NIC602を介してiSCSIターゲットサーバ205にアクセスし、iSCSIターゲットサーバ205はOS用PFドライバ204を介して、仮想PF603とPF210(PF−1)を利用してストレージ150にアクセスする。なお、仮想PF603はUEFI用PFドライバ202に対応してハイパバイザ140が生成した仮想デバイスである。
仮想計算機(#1)120−1のUEFI193は、UEFI用iSCSIドライバ201で仮想スイッチ602、iSCSIターゲットサーバ205、OS用PFドライバ204、仮想PF603、HBAのPF210を経由して、ストレージ150からマスターブートレコードを読み出して、マスターブートレコードに定義されたブートローダを読み出し、ブートローダで定義されたブートイメージを読み出して主記憶110に展開する。仮想計算機(#1)120−1のUEFI193は、ブートイメージを主記憶101へ格納すると処理を終了し、制御をゲストOS(#1)130−1に移す。
UEFI193からゲストOS130−1に制御が移る時に、UEFI193はboot service exitのイベントを発生する。ステップ704では、ハイパバイザ140のUEFIイベント監視部222がUEFI193のイベントを監視し、boot service exitを検出するとステップ705に進む。
UEFI193からのboot service exitのイベント以降は、UEFI193からゲストOS130−1に制御が移り、OS用VFドライバ203でストレージ150にアクセスする。つまり、この場合はゲストOS(#1)130−1がHBA105のVF212を利用してストレージ150にアクセスする。このため、図6に示したiSCSIの経路610(図中破線)を無効にして、VF−1−1の経路620(図中実線)を有効にし、軌道の途中にiSCSIの経路610からVF−1−1の経路620へとアクセスする経路を切り替える。
図7のステップ705ではiSCSIの経路610を無効にする。ステップ705ではハイパバイザ140は以下の処理を実行する。ハイパバイザ140は、図5Bのアクセス経路管理表233’を参照して、iSCSIの経路610を無効にする。具体的には、起動対象の仮想計算機(#1)120−1のiSCSIの状態選択欄503を0に設定する。
ステップ706ではハイパバイザ140がゲストOS130−1からVF212の経路620を有効にする。ステップ702ではハイパバイザ140は以下の処理を実行する。ハイパバイザ140は、図5Bのアクセス経路管理表233’を参照して、VF212の経路620を有効にする。具体的には、起動対象の仮想計算機(#1)120−1のVFの状態選択欄502を1に設定する。ステップ705とステップ706を実行すると、図5Bのアクセス経路管理表233’の512’になる。
以上により、起動対象の仮想計算機(#1)120−1のUEFI193からゲストOS130−1に制御が移った後のアクセス経路の切り替えが完了したので処理を終了する。この時、仮想計算機(#1)のゲストOS(#1)130−1は図6の経路620を利用して、HBA105のVF212からストレージ150にアクセスする。つまり、OS用VFドライバ203は仮想デバイスのVF604とVF212を利用してストレージ150にアクセスする。なお、図6の仮想VF604は、ハイパバイザ140が提供するVF−1−1に対応する仮想デバイスである。
本実施形態では、仮想計算機120−1及びゲストOS130−1の起動方法について述べた。参考までにゲストOS130−1のインストール方法と、仮想計算機120−1の起動方法の設定について以下に述べる。
ゲストOS130−1は通常のOSのインストールと同様にDVD(図示省略)やネットワークなどの手段によりインストールする。ここでは、DVDを使ってインストールする場合について説明する。
ゲストOS130−1のインストールにはiSCSIを利用せず、HBA105のVF212のみを利用する。そこでストレージ割り当て表232で仮想計算機120−1がVF212のみを利用するように設定する。つまり、図5Bのアクセス経路管理表233のエントリ512’の設定になる。
OSのインストール用DVDから仮想計算機120−1を起動するため、仮想計算機120−1のUEFI193の起動デバイスをDVDに設定する。物理計算機100に接続したDVD(図示省略)にOSのインストール用DVDを挿入して、仮想計算機120−1の電源を投入する。ゲストOS130−1のインストールが始まると、追加のデバイスドライバとしてOS用VFドライバ203をインストールする。ゲストOS130−1のインストール先には、VF212でアクセスするストレージ150を指定する。OSのインストール用DVDで起動するだけではVF212を利用できないためストレージ150を利用できないが、OS用VFドライバ203をインストールの途中で組み込むことで、ストレージ150をゲストOS130−1のインストール先として利用可能になる。
ゲストOS130−1のインストール完了後、UEFI193の起動デバイスをiSCSIに設定する。
従来例のOSのインストールでは、インストールに利用したHBA105をUEFIの起動デバイスに設定する。これに対して本発明では、ゲストOS130−1のインストールに利用しなかったiSCSIをUEFI193の起動デバイスに設定する所に特徴がある。最後にハイパバイザ140の仮想計算機管理表(図示省略)に対して、仮想計算機120−1が本発明の方法により起動するよう設定する。ハイパバイザ140は仮想計算機120−1を起動する時に仮想計算機管理表を参照し、起動対象の仮想計算機120−1が本発明の方法により起動するか、通常の起動手順により起動するか判別して起動の処理を変更する。この起動の処理の変更は、UEFIイベント監視部222の監視対象の設定やアクセス経路管理表233の設定などである。
本実施形態では、同一のストレージ150に対してiSCSIの経路610とVF212の経路620を用意するが、どちらか一方の経路のみを利用するようにアクセス経路管理表233により制御する所に特徴がある。仮想計算機120−1とゲストOS130−1の起動フェーズがどこまで進んだかをストレージに記録するOSでは、同一のストレージに対して二つのアクセス経路があるとアクセス競合やデータの不整合が発生する可能性がある。このため、何らかの手段でアクセス経路を一つだけ有効にする必要がある。
本実施形態ではアクセス経路管理表233によりアクセス経路を一つに制御するが、この方法に限らず任意の方法を利用できる。例えば、仮想計算機120−1の仮想ハードウェア構成からiSCSIをサポートする仮想NIC602をUEFI193がゲストOS130−1に対して見せないように制御する方法もある。この方法ではUEFI193は仮想NIC602を利用できるが、ゲストOS130−1は仮想NIC602を利用できない。つまり、アクセス経路切り替えを実現できる。
本実施形態では、UEFI用VFドライバが存在しない場合に仮想計算機120−1をVF212から起動する方法について述べているが、UEFI用PFドライバが存在しない場合に仮想計算機をPFから起動する場合についても同様に適用できる。
本実施形態では、iSCSIターゲットサーバ205を仮想計算機120−2の上で実行しているが、iSCSIターゲットを動かす場所は仮想計算機上に限らない。例えばハイパバイザ140でiSCSIターゲットサーバを実行する方法もある。
本実施形態ではOS用PFドライバ204を仮想計算機120−2の上のゲストOS130−2で実行しているが、OS用PFドライバ204を実行させる場所は仮想計算機上に限らない。例えばハイパバイザ140でOS用PFドライバ204を実行する方法もある。仮想計算機上でOS用PFドライバ204を実行する場合には、OS用PFドライバ204を実行する仮想計算機を起動してからでなければOS用VFドライバ203を実行する仮想計算機を起動できない。
これに対してハイパバイザ140でOS用PFドライバ204を稼動させる場合には、ハイパバイザ140がIOVレジスタ211に対してVF EnableビットをセットすることでVF212を利用可能にするので、任意の仮想計算機から起動できる。
本実施形態では、同一のストレージ150に対してVF212の経路620に加えてiSCSIの経路610を用意して、ブートイメージの読み出しまでのアクセスにiSCSIの経路610を利用したが、iSCSI以外の任意の経路を利用できる。例えば、ハイパバイザ140がエミュレーションにより仮想ATAを仮想計算機に提供している場合には、仮想ATAの経路を利用できる。
本実施形態ではHBA105のVF212を使った起動方法について述べたが、IOアダプタの種類はHBA105に限らない。ブートイメージを主記憶に展開してからOSに制御を移すという流れを類推できるIOアダプタであれば本発明を適用できる。例えば、NIC104を使ったネットワークブートにも適用できる。この場合には、仮想NIC602でネットワーク160からブートイメージを主記憶110に展開して、ブートイメージに含まれるOSに処理が移ってからNIC104のVFが残りのファイルを読み出す。iSCSIブートについても同様に適用できる。
<第2実施形態>
前記第1の実施形態ではUEFIを利用して仮想計算機を起動する場合について述べたが、BIOSを利用して起動する場合にも適用できる。UEFIではOSに制御が移る時にboot service exitのイベントを発行する。このため、UEFIのイベントを監視して、boot service exitのイベントを検出することでアクセス経路の切り替えタイミングを判定できる。これに対して、BIOSはOSに制御を移る時にイベントを発行しない。このため、イベント監視以外の手段によりアクセス経路の切り替えタイミングを判定する必要がある。例えば、OSによるIOアダプタの使用開始(設定開始)を切り替えタイミングに利用できる。
本第2実施形態では、BIOSを利用して仮想計算機を起動する場合の構成および処理について説明する。本実施形態では、BIOSを利用して起動する仮想計算機において、一つの起動デバイスに対して二つのアクセス経路を設け、起動の途中でOSによるIOアダプタの利用開始(設定開始)を検出してアクセス経路を切り替える所に特徴がある。UEFIやBIOSに関連しない部分は、前記第1の実施形態と同じ構成になるため説明を省略する。
図8は、本発明の第2の実施の形態における物理計算機およびソフトウェアのスタックの一例を示すブロック図である。図8において、ROM190には、BIOS195が格納され、HBA105にはROM BIOS803が搭載される。ハイパバイザ140は、前記第1実施形態のUEFIイベント監視部222に代わって、ゲストOS(#1)130−1のPCIデバイスのアクセスを監視するPCIアクセス監視部802を備える。また、ハイパバイザ140は、仮想計算機(#1)120−1、仮想計算機(#0)120−2にそれぞれ仮想のシステムBIOS801を提供する。その他の構成は前記第1実施形態と同様である。
また、本第2実施形態におけるBIOS195は、ハイパバイザ140を起動する際には、物理計算機100のハードウェアの入出力を管理する入出力管理部として機能する。また、ハイパバイザ140が提供する仮想のSYSTEM BIOS801は、ゲストOS130を起動する際に仮想計算機120の入出力を管理する入出力管理部として機能する。
図9は本発明の第2の実施の形態におけるアクセス経路の一例を示すブロック図である。図9において、910はゲストOS(#1)130−1の仮想NIC602からiSCSIターゲットサーバ205を使ってPF210からストレージ150へのアクセス経路である。経路620は前記第1実施形態と同様であり、ゲストOS(#1)130−1からVF−1−1を経由してストレージ150にアクセスする。
図10は本発明の第2の実施の形態における起動時に行われるアクセス経路切り替えのフローチャートである。図10において、1001はゲストOS(#1)130−1がVFを初期化するためにPCIコンフィグレーション空間へのアクセスしたことを検出するステップ、である。ゲストOS(#1)130−1がPCIコンフィグレーション空間へアクセスしたことをハイパバイザ140のPCIアクセス監視部802が検知すると、ステップ705へ進んで前記第1実施形態と同様に、ストレージ150へのアクセス経路を切り替える。その他の処理は、前記第1実施形態と同様である。
本実施形態では、PCIアクセス監視部802がゲストOS(#1)130−1のPCIコンフィグ空間へのアクセスを監視し、HBA105のVF212のPCIコンフィグレーション空間へのアクセス、すなわち、ゲストOS130−1がVF212を設定しようとするアクセスを検出した段階で、iSCSIの経路910からVF212の経路620へとアクセス経路を切り替えても安全だと判断する所に特徴がある。ゲストOS130−1がVF212を設定するためのPCIコンフィグレーション空間へのアクセスとしては、PCIバスのルートやブリッジの検出や、ルート配下のデバイスの登録やデバイスドライバの組み込みなどである。
前記第1実施形態のように、ゲストOS130−1をUEFIで起動する場合には、UEFI用iSCSIドライバ201やUEFI用PFドライバ202などのUEFI boot serviceデバイスドライバを用いてストレージ150からマスターブートレコード、ブートローダブートイメージを読み出す。つまり、UEFI用のデバイスドライバは既にUEFIに組み込まれた状態で、仮想計算機は電源投入される。
これに対して、ゲストOS(#1)130−1を仮想システムBIOS801で起動する場合には、UEFI boot serviceデバイスドライバに相当するコードが仮想SYSTEM BIOS801ではなくHBA105内にあるROM BIOS803に含まれている。このため、仮想SYSTEM BIOS801はROM BIOS803に含まれるプログラムを利用してストレージ150にアクセスする。UEFIとBIOSでは、ストレージ150にアクセスするプログラムの所在が異なるが、ストレージ150にアクセスする手順には本質的な差がない。
UEFIとBIOS801(195)とで本質的に異なるのは、UEFIやBIOSが処理を終えてOSに制御が移る時の処理である。UEFIからOSに制御が移る時にUEFIはboot service exitのイベントを発行する。UEFIはBIOSよりも高機能かつ多機能であるため主記憶を占有する量が多い。このためUEFIはboot service exitのイベントを発行する時に、OSの起動後に不要になるコードを主記憶から削除する。ハイパバイザ140はUEFIの発行するイベントを監視することで、boot service exitのイベント発生を検出できる。
これに対して、主記憶110を占有する量の少ないBIOSはOS起動後も主記憶110に残り続けるため、BIOSからOSに制御が移る時にBIOSはイベントを発行しない。このため、イベント監視以外の手段を用いてBIOSからOSへの制御の移行を検出する必要がある。
BIOSからOSに制御が移ると、OSはPCIバスをスキャンしてどのようなIOアダプタを利用可能か調べ、次にIOアダプタを初期化して利用可能にし、最後にIOアダプタを利用してストレージ150などにアクセスする。PCIバスのスキャンや初期化の時に、PCIデバイスのPCIコンフィグレーション空間へのアクセスが発生する。
図9において、仮想NIC602など仮想計算機120−1の電源投入時から利用可能なIOアダプタは、仮想SYSTEM BIOS801によるハードウェアの初期化の段階でPCIコンフィグレーション空間へのアクセスが発生する。このため仮想NIC602の場合にはPCIコンフィグレーション空間へのアクセスを監視してもBIOSからOSに制御が移ったか判断できない。
これに対して、HBA105のVF212のPCIコンフィグレーション空間へのアクセスは、ゲストOS130−1がOS用VFドライバ203を組み込んだ段階で発生する。つまり、HBA105のVF212のPCIコンフィグレーション空間へのアクセスを監視すれば、OSに制御が移りかつVF212の利用を開始していないという段階を特定できる。この段階ならば、仮想SYSTEM BIOS801によるiSCSIの経路910によるアクセスが終了するとともに、ゲストOS130−1によるVF212の経路620によるアクセスが開始されていないので、iSCSIの経路910からVFの経路620へと安全に切り替えられる。PCIアクセス監視部802は、PCIコンフィグレーション空間へのアクセスを監視し、HBA105のVF212のPCIコンフィグレーション空間へのアクセスを検出したらハイパバイザ140に通知する。
次に、図10を用いて本発明による仮想計算機の起動方法について説明する。各種管理表の状態については、他の図面も参照して説明する。
前記第1の実施形態ではUEFI用iSCSIドライバ201を利用してiSCSIの経路610を実現する。これに対して本実施形態では図9の仮想NIC602のROM BIOS803を利用してiSCSIの経路910を実現する。
仮想計算機120−1の起動前に、VF212の経路620を無効にしてiSCSIの経路910を有効にする必要がある。
図10のステップ701ではVF212の経路620を無効にする。ステップ702ではiSCSIの経路910を有効にする。ステップ701とステップ702を実行すると、図5Aのアクセス経路管理表233に示したエントリ512になる。
以上により、電源投入時のアクセス経路910の設定が完了したので、ステップ703に進み仮想計算機120−1の電源を投入する。この時、仮想計算機120−1は図9の経路910を利用してストレージ150にアクセスする。つまり、仮想NIC602のROM BIOS803はiSCSIターゲットサーバ205にアクセスし、iSCSIターゲットサーバ205はOS用PFドライバ204を介して、仮想PF603とHBA105のPF210を利用してストレージ150にアクセスする。
図10のステップ1001では、PCIアクセス監視部802が仮想VF604のPCIコンフィグレーション空間へのアクセスを検出するとステップ705に進む。
仮想SYSTEM BIOS801からゲストOS130−1に制御が移ると、OS用VFドライバ203でゲストOS130−1はストレージ150にアクセスする。つまり、この場合ゲストOS130−1はVF212を利用してストレージ150にアクセスする。このため、iSCSIの経路910を無効にする一方、VF212の経路620を有効にして、iSCSIの経路910からVF212の経路620へとアクセス経路を切り替える。
ステップ705ではiSCSIの経路910を無効にする。ステップ706ではVF212の経路620を有効にする。ステップ705とステップ706を実行すると、図5Bに示したアクセス経路管理表233’のエントリ512’になる。
以上により、仮想SYSTEM BIOS801からゲストOS130−1に制御が移った後のアクセス経路の設定が完了したので処理を終了する。この時、仮想計算機120−1は図9の経路620を利用してストレージ150にアクセスする。つまり、OS用VFドライバ203は仮想VF604と、HBA105のVF212を利用してストレージ150にアクセスする。
このように、仮想のSYSTEM BIOS801で仮想計算機(#1)120−1及びゲストOS(#1)130−1を起動する場合においても、前記第1実施形態と同様に、マスターブートレコード、ブートローダ、ブートイメージの読み出しをiSCSIターゲットサーバ205、OS用PFドライバ204、PF210を経由してストレージ150から読み込んだ後、ゲストOS(#1)130−1に制御が移ると、OS用VFドライバ203からHBA105のVF212を経由してストレージ150からゲストOS130−1の起動に必要なファイルの読み出しを続けることができる。そして、第2実施形態においては仮想のSYSTEM BIOS801からゲストOS(#1)130−1への制御の移行を、HBA105のVF212のPCIコンフィグレーション空間へのアクセスをハイパバイザ140が検知することで実現する。つまり、ハイパバイザ140のPCIアクセス監視部802は、VF212のPCIコンフィグレーション空間へのアクセスを検知すると、仮想のSYSTEM BIOS801からゲストOS(#1)130−1へ制御が移ったことを判定する。そして、ハイパバイザ140がストレージ150へのアクセス経路を図9の経路910から経路620へ切り替えることで、ゲストOS(#1)130−1はHBA105のVF212を利用してストレージ150にアクセスすることができるのである。
以上のように、第1実施形態、第2実施形態より、本発明によればUEFIやBIOSを用いる物理計算機100で、SR−IOVに準拠したIOアダプタで仮想計算機120を円滑に利用することができる。
なお、上記第1実施形態、第2実施形態では、バス106がPCIバスの例を示したが、PCIexpressなどのようにシリアル接続で構成されていてもよい。
また、上記第1実施形態、第2実施形態では、物理計算機100の計算機資源を複数の仮想計算機120に提供する仮想化部としてハイパバイザ140を適用した例を示したが、仮想化部としてはVMM(Virtual Machine Manager)を用いるようにしてもよい。
以上のように、本発明はSR−IOVに準拠したIOアダプタを備えた仮想計算機及び仮想計算機システムに適用することができる。
100 物理計算機
101 CPU
102 インタコネクト
103 チップセット
104 NIC
105 HBA
106 バス
110 主記憶
120 仮想計算機
130 ゲストOS
140 ハイパバイザ
150 ストレージ
160 ネットワーク
201 EFI用iSCSIドライバ
202 EFI用PFドライバ
203 OS用VFドライバ
204 OS用PFドライバ
205 iSCSIターゲットサーバ
210 PF
211 IOVレジスタ
212 VF
221 仮想NICエミュレータ
222 EFIイベント監視部
231 アダプタ割り当て表
232 ストレージ割り当て表
233 アクセス経路管理表
300 仮想NICの割り当て表

Claims (8)

  1. プロセッサとメモリとストレージを備える物理計算機と、
    前記物理計算機の計算機資源を仮想計算機へ割り当てる仮想化部と、を備えて前記仮想計算機を起動させる仮想計算機の起動方法であって、
    前記仮想化部が、前記仮想計算機を起動する以前に、前記仮想計算機と前記ストレージを接続する第1のアクセス経路と第2のアクセス経路の状態を設定する第1のステップと、
    前記仮想化部が、前記仮想計算機を起動する第2のステップと、
    前記仮想化部が、前記第1のアクセス経路と前記第2のアクセス経路を切り替える契機を判定する第3のステップと、
    前記仮想化部が、前記第1及び第2のアクセス経路を切り替える契機と判定したときに、前記第1のアクセス経路を第2のアクセス経路に切り替える第4のステップと、を含み、
    前記第1のステップは、
    前記仮想化部が、前記第2のアクセス経路を無効にする第5のステップと、
    前記仮想化部が、前記第1のアクセス経路を有効にする第6のステップと、を含み、
    前記第4のステップは、
    前記仮想化部が、前記第1のアクセス経路を無効にする第7のステップと、
    前記仮想化部が、前記第2のアクセス経路を有効にする第8のステップと、を含み、
    前記ストレージは物理機能と仮想機能を備えたIOアダプタを介して接続され、前記第1のアクセス経路は前記物理機能を介して前記ストレージに接続され、前記第2のアクセス経路は前記仮想機能を介して前記ストレージに接続されることを特徴とする仮想計算機の起動方法。
  2. 請求項1に記載の仮想計算機の起動方法であって、
    前記第3のステップは、
    前記仮想化部が、前記仮想計算機から前記第1のアクセス経路の使用を終了したことを示す通知を受け付けたときに、前記第1のアクセス経路と前記第2のアクセス経路を切り替える契機と判定することを特徴とする仮想計算機の起動方法。
  3. 請求項1に記載の仮想計算機の起動方法であって、
    前記第3のステップは、
    前記仮想化部は、前記仮想計算機が前記第2のアクセス経路の設定を検知したときに、前記第1のアクセス経路と前記第2のアクセス経路を切り替える契機と判定することを特徴とする仮想計算機の起動方法。
  4. 請求項1に記載の仮想計算機の起動方法であって、
    前記第8のステップは、
    仮想化部が、前記第2のアクセス経路を有効にした後に、仮想計算機上でオペレーティングシステムを起動させ、当該オペレーティングシステムが前記仮想機能のドライバを介して前記第2のアクセス経路を使用することを特徴とする仮想計算機の起動方法。
  5. 計算機資源として、プロセッサとメモリとストレージを備え、更に前記計算機資源を仮想計算機へ割り当てる仮想化部を備えた計算機であって、
    前記仮想化部は、
    前記仮想計算機と前記ストレージを接続する第1のアクセス経路と第2のアクセス経路の状態を設定するアクセス経路管理部と、
    前記第1のアクセス経路と前記第2のアクセス経路を切り替える契機を判定する切り替え契機判定部と、を備え、
    前記アクセス経路管理部は、
    前記仮想計算機を起動する以前に、前記第2のアクセス経路を無効にしてから前記第1のアクセス経路を有効に設定して、前記仮想計算機を起動させる際に、前記第1のアクセス経路で前記仮想計算機と前記ストレージを接続し、前記切り替え契機判定部が前記切り替えを判定したときに前記第1のアクセス経路を無効にしてから前記第2のアクセス経路を有効に設定して、前記第1のアクセス経路を前記第2のアクセス経路に切り替えて、前記仮想計算機と前記ストレージを接続し、
    前記ストレージは、
    物理機能と仮想機能を備えたIOアダプタを介して前記仮想計算機に接続され、前記第1のアクセス経路は前記物理機能を介して前記ストレージに接続され、前記第2のアクセス経路は前記仮想機能を介して前記ストレージに接続されることを特徴とする計算機。
  6. 請求項5に記載の計算機であって、
    前記切り替え契機判定部は、
    前記仮想計算機から前記第1のアクセス経路の使用を終了したことを示す通知を受け付けたときに、前記第1のアクセス経路と前記第2のアクセス経路を切り替える契機と判定することを特徴とする計算機。
  7. 請求項5に記載の計算機であって、
    前記切り替え契機判定部は、
    前記仮想化部が、前記仮想計算機が前記第2のアクセス経路の設定を検知したときに、前記第1のアクセス経路と前記第2のアクセス経路を切り替える契機と判定することを特徴とする計算機。
  8. 請求項5に記載の計算機であって、
    前記アクセス経路管理部は、前記第2のアクセス経路を有効にした後に、仮想計算機上でオペレーティングシステムを起動させ、当該オペレーティングシステムが前記仮想機能のドライバを介して前記第2のアクセス経路を使用することを特徴とする計算機。
JP2011215542A 2011-09-29 2011-09-29 仮想計算機を制御する計算機装置及び仮想計算機の制御方法 Expired - Fee Related JP5733628B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011215542A JP5733628B2 (ja) 2011-09-29 2011-09-29 仮想計算機を制御する計算機装置及び仮想計算機の制御方法
EP20120005633 EP2575041A1 (en) 2011-09-29 2012-08-02 Method and computer for controlling virtual machine
US13/585,403 US9098321B2 (en) 2011-09-29 2012-08-14 Method and computer for controlling virtual machine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011215542A JP5733628B2 (ja) 2011-09-29 2011-09-29 仮想計算機を制御する計算機装置及び仮想計算機の制御方法

Publications (2)

Publication Number Publication Date
JP2013077076A JP2013077076A (ja) 2013-04-25
JP5733628B2 true JP5733628B2 (ja) 2015-06-10

Family

ID=47189660

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011215542A Expired - Fee Related JP5733628B2 (ja) 2011-09-29 2011-09-29 仮想計算機を制御する計算機装置及び仮想計算機の制御方法

Country Status (3)

Country Link
US (1) US9098321B2 (ja)
EP (1) EP2575041A1 (ja)
JP (1) JP5733628B2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10782989B2 (en) * 2016-02-03 2020-09-22 Surcloud Corp. Method and device for virtual machine to access storage device in cloud computing management platform
US20130159572A1 (en) * 2011-12-16 2013-06-20 International Business Machines Corporation Managing configuration and system operations of a non-shared virtualized input/output adapter as virtual peripheral component interconnect root to multi-function hierarchies
US9164773B2 (en) * 2012-09-21 2015-10-20 Dell Products, Lp Deciding booting of a server based on whether its virtual initiator is currently used by another server or not
US9305068B1 (en) * 2012-09-28 2016-04-05 Emc Corporation Methods and apparatus for database virtualization
US9195483B2 (en) 2013-01-28 2015-11-24 Dell Products L.P. Systems and methods for mirroring virtual functions in a chassis configured to receive a plurality of modular information handling systems and a plurality of modular information handling resources
US9158553B2 (en) * 2013-04-09 2015-10-13 International Business Machines Corporation System and method for expediting virtual I/O server (VIOS) boot time in a virtual computing environment
JP5917441B2 (ja) * 2013-06-03 2016-05-11 株式会社日立製作所 仮想計算機システム、sr−iov対応デバイスの制御方法
US9304885B2 (en) * 2013-06-18 2016-04-05 International Business Machines Corporation Passive monitoring of virtual systems using agent-less, near-real-time indexing
IN2013DE02846A (ja) * 2013-09-26 2015-04-03 Emulex
US9882805B2 (en) * 2013-09-30 2018-01-30 Vmware, Inc. Dynamic path selection policy for multipathing in a virtualized environment
US20150149995A1 (en) * 2013-11-22 2015-05-28 International Business Machines Corporation Implementing dynamic virtualization of an sriov capable sas adapter
US10223148B2 (en) 2014-06-30 2019-03-05 Hewlett-Packard Development Company, L.P. Full virtual machine functionality
KR102308782B1 (ko) * 2014-08-19 2021-10-05 삼성전자주식회사 메모리 컨트롤러, 스토리지 디바이스, 서버 가상화 시스템 및 서버 가상화 시스템에서의 스토리지 디바이스 인식 방법
US9792138B2 (en) 2015-02-18 2017-10-17 Red Hat Israel, Ltd. Virtual machine migration to hyper visors with virtual function capability
US10223159B2 (en) 2015-02-18 2019-03-05 Red Hat Israel, Ltd. Configuring virtual machine interfaces to provide access to a requested logical network based on virtual function availability and a virtual function capability option
US9720720B2 (en) 2015-02-25 2017-08-01 Red Hat Israel, Ltd. Dynamic management of assignment and number of virtual functions on SR-IOV capable hypervisors
US10025740B2 (en) * 2015-09-14 2018-07-17 Cavium, Inc. Systems and methods for offloading link aggregation to a host bus adapter (HBA) in single root I/O virtualization (SRIOV) mode
US10452404B2 (en) 2016-07-28 2019-10-22 Microsoft Technology Licensing, Llc. Optimized UEFI reboot process
KR102028096B1 (ko) * 2017-04-18 2019-10-02 한국전자통신연구원 하이퍼바이저 기반의 가상 머신 격리 장치 및 방법
US10445007B1 (en) * 2017-04-19 2019-10-15 Rockwell Collins, Inc. Multi-core optimized warm-start loading approach
US10853126B2 (en) * 2018-07-26 2020-12-01 Vmware, Inc. Reprogramming network infrastructure in response to VM mobility

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7747847B2 (en) * 2005-03-25 2010-06-29 Broadcom Corporation Method and system for iSCSI boot in which an iSCSI client loads boot code from a host bus adapter and/or network interface card
US8086873B2 (en) * 2006-06-05 2011-12-27 Lenovo (Singapore) Pte. Ltd. Method for controlling file access on computer systems
US7840790B1 (en) * 2007-02-16 2010-11-23 Vmware, Inc. Method and system for providing device drivers in a virtualization system
US7945436B2 (en) 2007-11-06 2011-05-17 Vmware, Inc. Pass-through and emulation in a virtual machine environment
US8141093B2 (en) 2007-11-15 2012-03-20 International Business Machines Corporation Management of an IOV adapter through a virtual intermediary in an IOV management partition
JP2009176213A (ja) * 2008-01-28 2009-08-06 Hitachi Software Eng Co Ltd ネットワークブート方式
JP5089429B2 (ja) * 2008-02-21 2012-12-05 キヤノン株式会社 情報処理装置及びその制御方法、プログラム
JP2009230433A (ja) * 2008-03-21 2009-10-08 Toshiba Corp ネットワークブート装置、プログラム及び方法
US20090276774A1 (en) * 2008-05-01 2009-11-05 Junji Kinoshita Access control for virtual machines in an information system
JP4665040B2 (ja) * 2009-04-28 2011-04-06 株式会社東芝 計算機およびアクセス制御方法
WO2011078861A1 (en) * 2009-12-23 2011-06-30 Intel Corporation A computer platform providing hardware support for virtual inline appliances and virtual machines
US8473947B2 (en) * 2010-01-18 2013-06-25 Vmware, Inc. Method for configuring a physical adapter with virtual function (VF) and physical function (PF) for controlling address translation between virtual disks and physical storage regions
JP5566167B2 (ja) 2010-04-02 2014-08-06 キヤノン株式会社 画像形成装置

Also Published As

Publication number Publication date
EP2575041A1 (en) 2013-04-03
JP2013077076A (ja) 2013-04-25
US9098321B2 (en) 2015-08-04
US20130086583A1 (en) 2013-04-04

Similar Documents

Publication Publication Date Title
JP5733628B2 (ja) 仮想計算機を制御する計算機装置及び仮想計算機の制御方法
US8141092B2 (en) Management of an IOV adapter through a virtual intermediary in a hypervisor with functional management in an IOV management partition
JP5305866B2 (ja) データ処理システム内で入出力(i/o)仮想化を管理するための方法およびコンピュータ・プログラムならびにデータ処理システム
US8359415B2 (en) Multi-root I/O virtualization using separate management facilities of multiple logical partitions
US9384060B2 (en) Dynamic allocation and assignment of virtual functions within fabric
US8141093B2 (en) Management of an IOV adapter through a virtual intermediary in an IOV management partition
US8595723B2 (en) Method and apparatus for configuring a hypervisor during a downtime state
US9411654B2 (en) Managing configuration and operation of an adapter as a virtual peripheral component interconnect root to expansion read-only memory emulation
US11106622B2 (en) Firmware update architecture with OS-BIOS communication
US10635499B2 (en) Multifunction option virtualization for single root I/O virtualization
US8037210B2 (en) Computer and method for directly accessing computer hardware by virtual system
US10133504B2 (en) Dynamic partitioning of processing hardware
US11507421B2 (en) Information handling system and method to allocate peripheral component interconnect express (PCIe) bus resources
WO2016074127A1 (zh) 计算机设备及计算机设备内存启动的方法
US9626207B2 (en) Managing configuration and system operations of a non-shared virtualized input/output adapter as virtual peripheral component interconnect root to single function hierarchies
WO2008087080A1 (en) Controlling an operational mode for a logical partition on a computing system
US10606677B2 (en) Method of retrieving debugging data in UEFI and computer system thereof
US9804877B2 (en) Reset of single root PCI manager and physical functions within a fabric
US20190068772A1 (en) Computer system and method thereof for bluetooth data sharing between uefi firmware and os
US9304779B2 (en) Optimizing boot time of a storage system
US20160077847A1 (en) Synchronization of physical functions and virtual functions within a fabric
JP4692912B2 (ja) リソース割り当てシステム、及びリソース割り当て方法
US8499142B1 (en) UEFI boot loader for loading non-UEFI compliant operating systems
JP2018181305A (ja) プールされた物理リソースのローカルディスク消去メカニズム
US11829772B2 (en) Heterogeneous compute domains with an embedded operating system in an information handling system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140812

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141001

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150317

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150402

R150 Certificate of patent or registration of utility model

Ref document number: 5733628

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees