JP5585844B2 - 仮想計算機の制御方法及び計算機 - Google Patents

仮想計算機の制御方法及び計算機 Download PDF

Info

Publication number
JP5585844B2
JP5585844B2 JP2011067444A JP2011067444A JP5585844B2 JP 5585844 B2 JP5585844 B2 JP 5585844B2 JP 2011067444 A JP2011067444 A JP 2011067444A JP 2011067444 A JP2011067444 A JP 2011067444A JP 5585844 B2 JP5585844 B2 JP 5585844B2
Authority
JP
Japan
Prior art keywords
virtual
adapter
virtual machine
function
failure
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
JP2011067444A
Other languages
English (en)
Other versions
JP2012203636A (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 JP2011067444A priority Critical patent/JP5585844B2/ja
Priority to US13/368,634 priority patent/US8954963B2/en
Priority to EP12155184A priority patent/EP2503456A1/en
Publication of JP2012203636A publication Critical patent/JP2012203636A/ja
Application granted granted Critical
Publication of JP5585844B2 publication Critical patent/JP5585844B2/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/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、仮想計算機に関し、仮想計算機上で稼動するゲストOSを停止させずにI/Oデバイスの障害回復を処理する技術に関する。
オープン系サーバの性能向上および機能拡充に伴い、物理サーバに搭載されるプロセッサコアを有効に活用する方法として、サーバ仮想化ソフトウェア(ハイパバイザやVMM)が広く用いられている。ハイパバイザは、1台の物理サーバ上で複数の仮想計算機を生成し、それぞれの仮想計算機でOSやアプリケーションを稼働させる。プロセッサの性能向上と相まって、近年では物理サーバ上で10以上の仮想計算機(LPAR)を稼働させるケースも珍しくない。しかし、物理サーバ上で稼動する仮想計算機の数が増えるにつれ、I/Oデバイスに関する2つの問題が浮上していた。
問題1(性能問題):物理I/Oアダプタを、複数の仮想I/Oアダプタとして振る舞わせる「I/O共有」を実現するためにハイパバイザの介入が不可欠だった。この場合、ハイパバイザの介入オーバヘッドが原因で、仮想計算機の利用できるI/O性能が限られていた。
問題2(信頼性問題):オープン系サーバでは従来、I/Oアダプタ障害の内容をOS等のソフトウェアに伝達する仕組みが存在しなかった。そのため、物理I/Oアダプタに障害が発生すると、障害の規模や種類が判断できないために必ず物理サーバ全体がダウンし、物理サーバ上で稼働する全ての仮想計算機に被害が及んでいた。
これらの問題を解決するためにPCI Sigから、IOV(I/O Virtualization)とAER (Advanced Error Reporting)という2つの規格が制定された。
IOVは、上記の性能問題を解決するために、「I/O共有」の主要部をハードウェアで提供する仕組みである。IOVを用いると、ハイパバイザの介入が初期化等の低頻度処理のみとなるため、仮想計算機で高いI/O性能を利用可能になる。
一方、AERは、非特許文献1で示すように、上記信頼性問題を改善するために、I/Oアダプタの障害情報をOS等のソフトウェアに伝達する仕組みである。AERによって、OS等のソフトウェアは障害の深刻度を判断可能となり、軽度な障害であればリセット等の方法でI/Oアダプタを回復させ、物理サーバや仮想計算機の稼働を継続可能となる。
なお、IOVを利用する技術として、特許文献1にハイパバイザの基本的な動作が開示されている。特許文献1ではIOVに対応するI/Oアダプタの物理機能(以下、PF :Physical Function)の障害に対処する方法として、PFのHotPlug(サーバを稼働させた状態でPFを抜き差しする技術)を利用する技術が含まれている。特許文献1を使用すれば、PFに障害が発生した場合には、保守要員や管理者等がI/Oアダプタを交換することができる。
米国特許出願公開第2009/133016号明細書
PCI Express(r) Base Specification Revision 2.1 (§7.10. Advanced Error Reporting Capability)
しかしながら、上記特許文献1には軽度な障害への対処方法が言及されていない。I/Oアダプタの電源投入直後、及びリセット直後は、従来との互換性の観点からIOV機能が無効化される。このため、IOVに対応したI/Oアダプタは、HotPlugの直後ではI/O共有の為の仮想I/Oアダプタ機能(以下、VF:Virtual Functionとする)が無効化されているため、特許文献1の技術を用いると以下の問題が生じる。
軽度な障害に対して、AERの仕組みに則ってI/Oアダプタ(PF)をリセットすると、IOV機能が無効化されるため、仮想計算機からIOVによって生成されていた仮想I/Oアダプタ機能(VF)が消失する。仮想計算機上で動くOS(以下、ゲストOS)は、一般に物理I/Oアダプタ(PF)向けに設計されているため、I/Oアダプタが突然消失する事態を想定していない。そのためVFが突然消失するとゲストOSがクラッシュするケースがある。また、上記特許文献1では、軽度な障害に対してもPFをリセットしなければならず、障害から回復するために保守員による交換作業が発生し、保守の手間がかかる、と言う問題があった。
そこで本発明は、上記問題点に鑑みてなされたもので、IOVに対応するI/Oアダプタの高性能、高信頼性、保守容易性を充足することを目的とする。特に、I/OアダプタのPFリセットが引き起こすVFの無断消失に起因するゲストOSのクラッシュを回避し、I/Oアダプタの軽度な障害から自動的に回復させることを目的とする。
本発明は、プロセッサとメモリと仮想I/Oアダプタを仮想機能として生成する物理機能と前記仮想機能と物理機能のそれぞれの状態を管理するレジスタとを有するI/Oアダプタを備えた物理計算機と、前記物理計算機の計算機資源を仮想計算機に提供する仮想化部と、前記仮想計算機で実行されるOSと、を備えて、前記仮想化部が前記仮想機能を割り当てた1つ以上の仮想計算機を生成し、前記仮想計算機でOSを稼働させ、前記OSに前記仮想機能を利用させる仮想計算機の制御方法であって、前記仮想化部が、前記I/Oアダプタのレジスタを参照し前記I/Oアダプタの障害の発生を検出する第1のステップと、前記仮想化部前記障害の発生した前記I/Oアダプタの前記物理機能により提供される前記仮想機能が割り当られた仮想計算機を特定する第2のステップと、前記仮想化部が、前記特定された仮想計算機上で稼働する前記OSに前記仮想機能の利用中止を指示する第3のステップと、前記仮想化部が、前記OSから前記利用中止の指示に対する応答を受領した後、前記I/Oアダプタの前記物理機能の回復処理を実施する第4のステップと、を含む。
したがって、本発明は、I/O共有機能を有する物理I/Oアダプタを備えて、仮想化部は、仮想I/Oアダプタ(VF)を仮想計算機に割り当てる。障害発生時などの特定のケースを除けば仮想化部の動作頻度が低いため、高性能を実現できる。次に、VF消失の契機となる物理I/Oアダプタの機能(PF)のリセットに先だって、仮想計算機のOSからVFの取り外し許可を受ける。これにより、VF消失によるOSクラッシュを回避できる。従って高信頼である。PFドライバが軽度な障害と判断した場合に、保守要員の手を借りずにPFをリセットし、物理I/Oアダプタの回復を試みる。物理I/Oアダプタの回復に成功した場合は仮想計算機にVFを割り当て直し、仮想計算機を障害発生前の状態に戻す。従って保守が容易である。以上より、高性能、高信頼、保守容易性が充足される。
本発明の第1の実施形態を示し、計算機システムの一例を示すブロック図である。 本発明の第1の実施形態を示し、物理計算機及びソフトウェアの関係を示すブロック図である。 本発明の第1の実施形態を示し、物理計算機のメモリマップの一例である。 本発明の第1の実施形態を示し、アダプタ割り当て表の一例である。 本発明の第1の実施形態を示し、PF状態表の一例である。 本発明の第1の実施形態を示し、VF状態表の一例である。 本発明の第1の実施形態を示し、ハイパバイザの全体的な処理を説明するフローチャートの例である。 本発明の第1の実施形態を示し、ハイパバイザのI/O障害処理を説明するフローチャートの例である。 本発明の第1の実施形態を示し、ハイパバイザのPF障害処理を説明するフローチャートの例である。 本発明の第1の実施形態を示し、ハイパバイザのVF障害処理を説明するフローチャートの例である。 本発明の第1の実施形態を示し、ハイパバイザのI/O仮想化処理を説明するフローチャートの例である。 本発明の第1の実施形態を示し、ハイパバイザのPF回復処理を説明するフローチャートの例である。 本発明の第1の実施形態を示し、ハイパバイザのVF交換処理を説明するフローチャートの例である。 本発明の第2の実施形態を示し、物理計算機及びソフトウェアの関係を示すブロック図である。 本発明の第2の実施形態を示し、物理計算機のメモリマップの一例である。 本発明の第2の実施形態を示し、ハイパバイザのPF障害処理を説明するフローチャートの例である。 本発明の第2の実施形態を示し、ハイパバイザのVF障害処理を説明するフローチャートの例である。 本発明の第2の実施形態を示し、ハイパバイザのI/O仮想化処理を説明するフローチャートの例である。 本発明の第2の実施形態を示し、ハイパバイザのPF回復処理を説明するフローチャートの例である。 本発明の第2の実施形態を示し、ハイパバイザのVF回復処理を説明するフローチャートの例である。 本発明の第2の実施形態を示し、ハイパバイザのVF交換処理を説明するフローチャートの例である。
以下、本発明の一実施形態を添付図面に基づいて説明する。
図1は、本発明の第1の実施形態を示し、IOV(I/O Virtualization)とAER (Advanced Error Reporting)に対応するI/Oアダプタを用いた仮想計算機システムの一例を示すブロック図である。本実施形態のI/Oアダプタ60は、物理的なI/Oアダプタの物理機能(以下、PF:Physical Function)と、「I/O共有」を実現する仮想I/Oアダプタ(以下、VF:Virtual Function)を生成する機能を有し、VFを仮想計算機に割り当てる場合の構成及び動作を説明する。
<1.ハードウェア構成>
図1は、本発明の第1の実施形態となる仮想計算機システムを動作させる物理計算機の構成例を示す。物理計算機は、障害検出機能を有するCPU70(またはプロセッサコア)を1つ以上有し、これらのCPU70はQPI(Quick Path Interconnect)やSMI(Scalable Memory Interconnect)等のインターコネクト110を介してChipSet100やメモリ90に接続される。
ChipSet100には、PCIexpress等のバス120を介してI/Oアダプタ60が接続される。I/Oアダプタ60はLAN130に接続されるネットワークアダプタ、ディスク装置140等に接続されるSCSIアダプタ、SAN150(Storage Area Network)に接続されるファイバーチャネルアダプタ、コンソール80に接続されるグラフィックコントローラなどで構成される。
CPU70はインターコネクト110を介してメモリ90にアクセスし、ChipSet100からI/Oアダプタ60にアクセスして所定の処理を行う。
メモリ90には、仮想化部としてハイパバイザ20がロードされ、ハイパバイザ20が制御する仮想計算機30−1〜30−nが、ゲストOS40−1〜40−nを実行する。ハイパバイザ20は、物理計算機10の計算器資源を分割または仮想化して仮想計算機に割り当てる。なお、以下では仮想計算機30−1〜3−nの総称を符号30で示し、ゲストOS40−1〜40−nの総称を符号40で示す。
<2.ソフトウェア構成>
次に、物理計算機10上で仮想計算機30を実現するソフトウェアの構成の主要部と、制御対象となるハードウェア要素について、図2を参照しながら詳述する。図2は、物理計算機及びソフトウェアの関係を示すブロック図である。
物理計算機10上では、1つ以上の仮想計算機30を制御するハイパバイザ20が稼動する。物理計算機10は、ChipSet100と、1つ以上のI/Oアダプタ60を含む。
ChipSet100は、I/Oアダプタ60の取り外し(挿抜)要求(HotRemoveの要求)を保持するレジスタと、取り付け告知(HotAddの通知)を保持するレジスタから成るHotPlugレジスタ(以下、HPレジスタ)185を含む。またChipSet100は、I/Oアダプタ60の取り外し要求または取り付け告知あるいは障害を認識すると割り込みを発生して、物理計算機10上で稼働するハイパバイザ20に要求や障害の発生を通知する機能を有する。
1つ以上のI/Oアダプタ60はIOV機能を有しており、物理的な機能(PF:Physical Function)160(160−1〜160−m)と仮想的な機能(VF:Virtual Function)190(190−1−1〜190−m−k)から成る。PF160はいつでも利用できる機能だが、VF190はIOV機能が有効な場合のみ利用できる機能である。なお、仮想計算機10は、IOVに非対応のI/Oアダプタ60を含んでも構わない。
PF160は、物理計算機10の外部とデータを送受信する機能を有し、IOV機能を制御するIOVレジスタ170と、PFに関する障害の有無や種類といった障害情報を保持するAERレジスタ180を含む。
VF190は、IOV機能が有効な場合のみ、物理計算機10の外部とデータを送受信する機能を有し、VFに関する障害の有無や種類といった障害情報を保持するAERレジスタ180を含む。
ここで、AERレジスタ180は、2種類存在し、PF160のAERレジスタ180とVF190のAERレジスタ180が存在する。PF160のAERレジスタ180は物理機能、つまり物理I/Oアダプタ60の障害に関する情報を保持し、VF190のAERレジスタ180は仮想機能、つまり仮想I/Oアダプタの障害に関する情報を保持する。なお、I/Oアダプタ60は、障害発生時にAERレジスタ180に障害情報を設定するコントローラ(図示省略)を有する。
ハイパバイザ20は、仮想計算機30を生成し、仮想計算機30上に対してChipSet100に相当する機能(仮想ChipSet300)を提供する。またハイパバイザ20は、任意のVF190を任意の仮想計算機30に占有的に割り当て、当該仮想計算機30上で稼働するゲストOS40に当該VF190の直接操作を許す機能(パススルー機能)を備える。このパススルー機能によって、複数の仮想計算機30でひとつのI/Oアダプタ60をVF190から共有することができる。
ハイパバイザ20は、仮想計算機30に対するVF190の割り当て関係を保持するアダプタ割り当て表200と、物理計算機10または物理計算機資源を監視して障害発生時に呼び出される障害処理部210と、仮想計算機30の状態を保持する仮想計算機のエミュレーションデータと、PF160の種類に応じた制御手順を備えたPFドライバ250(250−1〜250−m)を含む。
障害処理部210は、IOV機能に対応したI/Oアダプタ60の障害を受け持つIOV障害処理部212を含み、IOV障害処理部212はPF160の障害処理状況を保持するPF状態表214と、VF190の障害処理状況を保持するVF状態表216を含む。
仮想計算機のエミュレーションデータ220は、仮想計算機30に提供する仮想ChipSet300などの仮想的な部品またはデバイスに関する状態を保持するために、仮想ChipSetデータ222を含む。仮想ChipSetデータ222は、仮想ChipSet300が保持すべきHPレジスタ185などの状態を保持する。
PFドライバ250は、IOVレジスタ170を操作する機能と、PF160で障害が発生した場合に軽度障害か重度障害かを判断する機能、及びPFリセット後に障害回復の成否を判断する機能を有する。
仮想計算機30は、ハイパバイザ20によって提供される仮想ChipSet300等の仮想的な部品と、占有的に割り当てられたVF190を含む。仮想計算機30の上ではゲストOS40が動作する。ゲストOS40は、VF190の種類に応じたVFドライバ260を用いてVF190を操作する。
VFドライバ260は、VF190で障害が発生した場合に軽度障害か重度障害かを判断する障害の程度を判定する機能、及びVFリセット後に障害回復の成否を判定する機能を有する。
図3はハイパバイザ20が管理するメモリ90のアドレスマップの一例を示す。
ハイパバイザ20は、メモリ90上に自身を配置する領域と、仮想計算機30が使用する領域を割り当てる。例えば図3のように、ハイパバイザ20は、自身にアドレスAD0〜AD1を割り当て、仮想計算機30−1にアドレスAD1+1〜AD2を、仮想計算機30−nにアドレスAD3〜AD4を割り当てる。 各仮想計算機30の領域には、ゲストOS40とVFドライバ260(260−1〜260−n)が格納される。
ハイパバイザ20が使用する領域には、アダプタ割り当て表200、障害処理部210、仮想計算機のエミュレーションデータ220と、PFドライバ250が格納される。
図4は、アダプタ割り当て表200の構成例である。アダプタ割り当て表200は、VF190と仮想計算機30の割り当て関係を保持する表である。本表ではVF190を識別する手段として、VF190を生成したPF160の通し番号(PF#)400と、VF190の通し番号(VF#)410を用い、当該VF190を割り当てた仮想計算機30の通し番号(仮想計算機番号)420を格納する。未割り当ての場合は仮想計算機番号420を"未割り当て"とする。
図5は、PF状態表214の構成例である。PF状態表214は、PF160の通し番号(PF#)400と、PF160の障害処理状況として、PF160の状態510と、当該PF160から生成された各VF190の取り外し許可の有無を格納する待ち合わせbitmap520からひとつのエントリが構成される。PF160の識別にはPF#400を使用する。状態510は、障害処理が不要な状態(正常)、軽度障害に伴ってPF160のリセットが必要となった状態(リセット保留)、重度障害に伴ってPF160の交換が必要となった状態(交換保留)のいずれかを保持する。待ち合わせbitmap520は、各bitが当該PF160の生成した各VF190に対応しており、VF190の取り外し許可をゲストOS40に要求中の場合に「1」、未要求または許可済みの場合に「0」が格納される。待ち合わせbitmap520の全bitが0になるとPFのリセットが可能になる。
図6は、VF状態表216の構成例である。VF状態表216は、PF160の通し番号(PF#)400と、VF190の通し番号(VF#)410と、VF190の障害処理状況として、VF190の状態620を保持する。VF190の識別には、PF#400と、VF#410を使用する。状態620は、障害処理が不要な状態(正常)、軽度障害に伴ってVF190のリセットが必要となった状態(リセット保留)、重度障害に伴ってVF190の交換が必要となった状態(交換保留)のいずれかを保持する。
<3.ハイパバイザによる処理>
次に、ハイパバイザ20が行う処理の一例について、以下、フローチャートを参照しながら説明する。
<3.1.ハイパバイザによる処理の概要>
図7は、ハイパバイザ20が行う処理の全体像を示すフローチャートの例である。物理計算機10の電源を投入するとハイパバイザ20がメモリ90にロードされ、ハイパバイザ20自身と物理計算機10を初期化し、I/Oアダプタ60のIOV機能を有効化する(700)。ステップ700では、PF状態表214は全PFが正常状態に初期化され、VF状態表216は全VFが正常状態に初期化され、アダプタ割り当て表200は全VFが未割り当てに初期化される。
続いてハイパバイザ20は、コンソール80からの入力、或いは前回起動時の割り当て指示に基づいて、VF190を割り当てた仮想計算機30を生成する(710)。ステップ710では、アダプタ割り当て表200の、VF190の行に割り当てられた仮想計算機30の通し番号(識別子)を登録する。
続いてハイパバイザ20は、仮想計算機30の稼働を開始し、仮想計算機30上でゲストOS40及びアプリケーション(以下、両者を総称してゲストと記載)を実行する(720)。ステップ720ではゲストが任意の命令コードを実行できるが、1命令を実行する毎にCPU70がハイパバイザ20の介入が必要なイベントが発生しているかをチェックする(730)。ハイパバイザ20の介入が必要なイベントが発生していれば、CPU70がハイパバイザ20を呼び出してステップ740に進む。ハイパバイザ20の介入が必要なイベントが発生していなければ、ゲストの次の命令を実行するためにステップ720に進む。
ハイパバイザ20が呼び出されると、CPU70から発生したイベントの情報を受け取って解析し、ハイパバイザ20はイベントの内容を取得する(740)。
続いてハイパバイザ20は、I/Oアダプタ60に障害が発生したか否かを判定し(750)、I/Oアダプタ60に障害が発生していればステップ790に進んでI/O障害処理を行う。本実施形態のI/Oアダプタ60は、障害発生時に割込信号を発生する。ハイパバイザ20は、この割込信号を障害発生のイベントとして受信する。

一方、ハイパバイザ20は、I/Oアダプタ60に障害が発生していなければ、ステップ760に進んでゲストが仮想チップセット300等に対してI/O操作を行ったか否かを判定する。ゲストがI/O操作を行っていれば、ステップ780に進んでI/O仮想化処理を行う。ゲストがI/O操作を行っていなければステップ770に進み、ハイパバイザ20の従来の処理(解析したイベントに応じた処理)を行う。ハイパバイザ20の従来の処理については、公知または周知の処理を実施すればよいので、説明を省略する。
ステップ770、780、790の何れかで発生したイベントに対する処理が完了すると、ハイパバイザ20はゲストの実行を再開させる(795)。
<3.2.I/O障害処理>
図8は、図7のステップ790で行われるI/O障害処理のフローチャートの例である。I/Oアダプタ60に障害の発生を検出したハイパバイザ20は、PF160又はVF190が備えるAERレジスタ180を参照し、どのI/Oアダプタ60で障害が発生したのかを特定する(800)。
続いてハイパバイザ20は、障害が発生したI/Oアダプタ60の種類によって処理を分岐させる(810)。ハイパバイザ20は発生した障害が、IOVに非対応のI/Oアダプタ(従来アダプタ)60で発生した場合は、ステップ820に進んで従来の障害処理を行う。従来の障害処理については、公知または周知の処理を実施すればよいので、説明を省略する。
ハイパバイザ20は発生した障害が、IOV機能を有するI/OアダプタのPF160部分で発生した場合は、ステップ830に進んでPF障害処理を後述のように行う。一方、ハイパバイザ20は発生した障害が、IOV機能を有するI/OアダプタのVF190部分で発生した場合は、ステップ840に進んでVF障害処理を後述のように行う。
<3.2.1.PF障害処理>
図9は、図8のステップ830で行われるPF障害処理のフローチャートの例である。障害が発生したPF160を特定したハイパバイザ20は、当該PF160の種類に応じたPFドライバ250に、障害からの回復が可能か否かを問い合わせ、障害の重度を取得する(900)。I/Oアダプタ60の障害の程度には3通りの重度があり、重い障害から順に、
(1)回復不能でI/Oアダプタ60の交換が必要となる重度障害(PCI_ERS_RESULT_DISCONNECT)、
(2)PF160をリセットすれば回復できる可能性のある軽度障害(PCI_ERS_RESULT_NEED_RESET)、
(3)PF160のレジスタの一部を再設定する等の処理で回復が完了する障害(PCI_ERS_RESULT_RECOVERED)、
に分類される。
ハイパバイザ20は、障害の重度に応じて処理を分岐させる(910)。
(1)回復不能な重度障害であれば、PF状態表214の該当するPF160のエントリの状態510を、「交換保留」に変更する(930)。
(2)リセットで回復できる可能性がある軽度障害であれば、ハイパバイザ20はPF状態表214の該当するPF160のエントリの状態510を、"リセット保留"に変更する(960)。
(3)回復完了した障害であれば、ハイパバイザ20の回復処理は省略する。
上記(1)及び(2)のケースでは更に、ハイパバイザ20がアダプタ割り当て表200を参照し、障害が起きたPF160から生成された全てのVF190と、各VF190を割り当てた仮想計算機30を特定する(940)。
続いてハイパバイザ20は、各仮想計算機30に含まれる仮想ChipSet300のHPレジスタ185にVF190の稼働時取り外し(Hot Remove)要求を設定する。そして、ハイパバイザ20は、仮想計算機30にHotPlug割り込みを通知して、ゲストOS40にVF190の利用中止と安全な取り外し(Safely Remove)を指令する(950)。
最後にハイパバイザ20は、障害内容と対処結果をコンソール80に出力する(920)。コンソール80への出力により保守要員にI/Oアダプタ60の保守を促す。I/Oアダプタ60の障害の種類が(2)または(3)の場合は、直ちにI/Oアダプタ60の交換を行う必要は無いが、I/Oアダプタ60が経年劣化している可能性を考慮し、予防保守の観点から保守員に通報する。一方、障害の種類が(1)の場合は、直ちにI/Oアダプタ60の交換を行う必要がある旨をコンソール80に通知する。
<3.2.2.VF障害処理>
図10は、図8の840で行われるVF障害処理のフローチャートの例である。障害が発生したVF190を特定したハイパバイザ20は、VF状態表216の、当該VF190のエントリを“交換保留”に変更する(1060)。更に、ハイパバイザ20がアダプタ割り当て表200を参照し、障害が起きたVF190を割り当てた仮想計算機30を特定する(1040)。
続いてハイパバイザ20は、当該仮想計算機30に含まれる仮想ChipSet300のHPレジスタ185にVF190の稼働時取り外し(Hot Remove)要求を設定する。そして、ハイパバイザ20は、仮想計算機30にHotPlug割り込みを通知して、ゲストOS40にVF190の利用中止と安全な取り外し(Safely Remove)を指令する(1050)。
最後にハイパバイザ20は、障害内容と対処結果をコンソール80に出力通報し、I/Oアダプタ60の交換を促す(1020)。VF障害に対しては直ちに交換を行う必要は無いが、I/Oアダプタ60が経年劣化している可能性を考慮し、予防保守の観点から保守員に通報する。
<3.3.I/O仮想化処理>
図11は、図7のステップ780で行われるI/O仮想化処理のフローチャートの例である。ゲストによるI/O操作を検出したハイパバイザ20は、操作対象(仮想ChipSet300等のレジスタ)及び操作内容(読み出し、書き込み)に応じて従来のI/Oエミュレーション処理を行う(1100)。従来のI/Oエミュレーション処理については、公知または周知の処理を実施すればよいので、説明を省略する。
続いてハイパバイザ20は、ゲストによるI/O操作の内容がVF190の取り外し(HotRemove)許可であったか否かを判定する(1110)。つまり、ハイパバイザ20は、ゲストがVF190の取り外しを許可するまで待機する。なお、VF190の取り外し許可の通知は、ゲストが仮想ChipSet300のホットプラグレジスタ185に許可の応答を書き込むことで行う。ハイパバイザ20はホットプラグレジスタ185の値が所定の許可応答であれば、ゲストによるI/O操作の内容がVF190の取り外し許可であった場合となる。この場合のみ、ハイパバイザ20は、PF状態表214を参照し、当該VF190を生成したPF160がリセット保留中であるかを判定する(1120)。
ステップ1120に於いてPF160がリセット保留中だった場合、ハイパバイザ20は、PF状態表214の当該PF160のエントリについて、待ち合わせbitmap520の取り外し許可が得られたVF190に対応するbitを「0」に変更する(1130)。
続いてハイパバイザ20は、PF状態表214の当該PF160の待ち合わせbitmap520で全bitが「0」に揃ったか否かを判定する(1140)。全bitが「0」に揃った場合のみ、1150に進んでPF回復処理を行う。
ステップ1120に於いてPF160がリセット保留中でなかった場合は、ハイパバイザ20がVF状態表216を参照し、取り外し許可が得られたVF190が交換保留中であるか否かを判定する(1180)。ハイパバイザ20は、VF190が交換保留中であった場合のみ、ステップ1190に進んでVF交換処理を行う。
<3.3.1.PF回復処理>
図12は、図11のステップ1150で行われるPF回復処理のフローチャートの例である。リセット保留中のPF160から生成された全てのVF190について、ゲストOS40からの取り外し許可を検出したハイパバイザ20は、当該PF160をリセットする(1200)。これによって、当該PF160=I/Oアダプタ60はリセットされ再起動する。
続いてハイパバイザ20は、リセットしたPF160の種類に応じたPFドライバ250を呼び出し、PF160の回復に成功したか否かをI/Oアダプタ60に問い合わせる(1210)。ハイパバイザ20は、PF160の回復の成否に応じて処理を分岐する(1220)。
PF160の回復に成功した場合は、ハイパバイザ20がPFドライバ250にPF160の再初期化を依頼し、IOV機能を再度有効化してPF160にVF190を再生成させる(1230)。続いてハイパバイザ20は、アダプタ割り当て表200を参照して、当該PF160から生成されていた全てのVF190について、障害発生前にどの仮想計算機30に割り当てられていたかを取得し、当該仮想計算機30に含まれる仮想ChipSet300のHPレジスタ185にVF190の稼働時取り付け(Hot Add)告知(または通知)を設定する。そして、ハイパバイザ20は、仮想計算機30にHotPlug割り込みを通知して、ゲストOS40にVF190の増設認識(再認識)と初期化及び利用開始を促す(1240)。これにより、HotPlug割り込みを受信したゲストOS40は、仮想ChipSet300のHPレジスタ185を読み込んで、HotAddが発生したことを取得し、PF160が再生成したVF190の再検知を行う。ゲストOS40は既にロードしていたVFドライバ260で再検知したVF190の利用を再開する。
続いてハイパバイザ20は、PF状態表214の当該PF160に対応するエントリの状態510を正常状態に戻す(1250)。
一方、ステップ1220でPF160の回復に失敗した場合は、ハイパバイザ20がPF状態表214の障害PFのエントリの状態510を交換保留に変更する(1270)。ハイパバイザ20によるPF回復処理の最後に、当該処理の結果をコンソール80に出力して保守要員によるI/Oアダプタ60の交換を促す(1260)。回復に成功した場合は直ちに交換を行う必要は無いが、I/Oアダプタ60が経年劣化している可能性を考慮し、予防保守の観点から保守要員に通報する。
<3.3.2.VF交換処理>
図13は、図11のステップ1190で行うVF回復処理のフローチャートの例である。交換保留中のVF190について、ゲストOS40からの取り外し許可を検出したハイパバイザ20は、アダプタ割り当て表200を参照し、当該VF190と同じPF160から生成された別のVF190を代替VFとして割り当て可能かを判断する(1400)。
代替VFを割り当て可能な場合のみ、ハイパバイザ20はアダプタ割り当て表200を更新して、代替VFを当該ゲストOS40が動いている仮想計算機30に割り当て直す(1420)。続いてハイパバイザ20は、当該仮想計算機30に含まれる仮想ChipSet300のHPレジスタ185に代替VFの稼働時取り付け(HotAdd)の告知を設定させる。そして、ハイパバイザ20は仮想計算機30にHotPlug割り込みを通知して、ゲストOS40に代替VFの増設認識と初期化及び利用開始を促す(1430)。これにより、HotPlug割り込みを受信したゲストOS40は、仮想ChipSet300のHPレジスタ185を読み込んで、HotAddが発生したことを取得し、PF160が再生成した他のVF190の追加を行う。ゲストOS40は追加したVF190の種類に応じたVFドライバ260で代替のVF190の利用を開始する。
ハイパバイザ20によるVF交換処理の最後に、当該処理の結果をコンソール80に出力し、保守要員によるI/Oアダプタ60の交換を促す(1410)。交換に成功した場合は直ちに交換を行う必要は無いが、I/Oアダプタ60が経年劣化している可能性を考慮し、予防保守の観点から保守員に通報する。
<4.まとめ>
以上の構成及び処理により、障害発生時を除いてVF190をゲストOS40に直接操作させるため、高い性能を実現できる。
PF160で軽度な障害が発生した場合は、当該PF160のリセットによって消失する全てのVF190を予め仮想計算機30からHotRemoveして、ゲストOS40のクラッシュを回避できるため高信頼を実現できる。また、保守要員の手を借りずにPF160を回復させ、再生成されたVF190を自動的に仮想計算機30にHotAddするため、I/Oアダプタ60の保守を容易にすることができる。
また、VF190で軽度及び重度な障害が発生した場合についても、保守要員の手を借りずにハイパバイザ20が当該VF190を仮想計算機30からHotRemoveする。そして、ハイパバイザ20は、代替VF190を割り当て直して仮想計算機30にHotAddする。これにより仮想計算機30は代替VF190で回復することができるため、VF190の障害に対しても高信頼と保守容易性を実現できる。
<第2実施形態>
本発明の第2実施形態では、ハイパバイザ20がVF190を利用してVF190の機能を提供するEmulated Function310(以下、EFとする)を生成し、仮想計算機30にEF310を割り当てる場合の構成及び動作を説明する。本第2実施形態では、ゲストOS40では無くハイパバイザ20がVF190を直接操作するため、VF障害に対してより適切な処理が可能となる。なお、EF310は、VF190と同様にゲストに対して仮想I/Oアダプタとして振る舞う。
<5.ハードウェア構成>
本第2の実施形態の計算機システムのハードウェア構成は、前記第1実施形態の図1と同様であるため説明を省略する。
<6.ソフトウェア構成>
次に、物理計算機10上で仮想計算機30を実現するソフトウェアの構成の主要部と、制御対象となるハードウェア要素について、図14を参照しながら詳述する。実施形態1に於ける図2と同一の符号の同一構成要素については説明を省略する。
物理計算機10は、前記第1の実施形態と同一である。ハイパバイザ20は、任意のVF190を用いてEF310を生成し、任意の仮想計算機30にEF310を割り当てる。EF310はVF190と1対1に対応し、VF190と同じ機能を提供する。EF310は機能を提供するインタフェースがVF190と違っていても構わない。ハイパバイザ20は、VF190を使用するためにVF190の種類に応じたVFドライバ260(VF260−1〜260−m)を保持する。またハイパバイザ20は、EF310を実現するために、仮想計算機30のエミュレーションデータ220の内部にEFデータ224を保持する。
仮想計算機30は、ハイパバイザ20によって提供される仮想ChipSet300等の仮想的な部品と、EF310を含む。仮想計算機30の上ではゲストOS40が動作する。ゲストOS40は、EF310に対応する仮想アダプタドライバ270を用いてEF310を操作する。
図15はハイパバイザ20が管理するメモリ90の一例を示す。前記第1実施形態に於ける図3と同一の構成については説明を省略する。 各仮想計算機30の領域には、ゲストOS40と仮想アダプタドライバ270が格納される。
ハイパバイザ20が使用する領域には、アダプタ割り当て表200、障害処理部210、仮想計算機のエミュレーションデータ220と、PFドライバ250に加えて、VFドライバ260が格納される。
アダプタ割り当て表200の構成は、前記第1実施形態の図4と同一であるため説明を省略する。また、PF状態表214の構成は、前記第1実施形態の図5と同一であるため説明を省略する。
VF状態表216の構成は、VF190とEF310は1対1で対応するため、EF310にはVF190と同じ通し番号を付与する。よって本第2実施形態では、前記第1実施形態の図6に示したVF#410は仮想アダプタ#の意味を兼ねる。
<7.ハイパバイザによる処理>
次に、ハイパバイザ20が行う処理の一例について、以下、フローチャートを参照しながら説明する。
<7.1.ハイパバイザによる処理の概要>
ハイパバイザ20が行う処理の全体像を示すフローチャートは、前記第1実施形態の図7と同一であるため説明を省略する。
<7.2.I/O障害処理>
図7のステップ790で行われるI/O障害処理は、前記第1実施形態の図8の処理と同一であるため説明を省略する。
<7.2.1.PF障害処理>
図16は、図8のステップ830で行われるPF障害処理のフローチャートの例である。前記第1実施形態の図9と同一符号の同一処理については説明を省略する。
本第2の実施形態では前記第1実施形態で示した(1)重度障害及び(2)軽度障害のケースで更に、ハイパバイザ20がアダプタ割り当て表200を参照し、障害が起きたPF160から生成された全てのVF190と、各VF190と1対1に対応するEF310を割り当てた仮想計算機30を特定する(1740)。
続いてハイパバイザ20は、各仮想計算機30に含まれる仮想ChipSet300のHPレジスタ185にEF310の稼働時取り外し(Hot Remove)要求を設定させる。ハイパバイザ20は、仮想計算機30にHotPlug割り込みを通知して、ゲストOS40にEF310の安全な取り外し(Safely Remove)を指令する(1750)。
<7.2.2.VF障害処理>
図17は、図8のステップ840で行われるVF障害処理のフローチャートの例である。なお、以下では前記第1実施形態の図10と同一符号の同一処理については説明を省略する。
障害が発生したVF190を特定したハイパバイザ20は、当該VF190の種類に応じたVFドライバ260に、障害からの回復が可能か否かを問い合わせ、障害の重度を取得する(1800)。I/Oアダプタ60の障害の程度には前記第1実施形態で述べたとおり3通りの重度があり、重い障害から順に、(1)回復不能でVF190の交換が必要となる重度障害、(2)VF190をリセットすれば回復できる可能性のある軽度障害、(3)VF190のレジスタの一部を再設定する等の手段で回復を完了した障害に分類される。
ハイパバイザ20は、I/Oアダプタ60の障害の重度に応じて処理を分岐させる(1810)。(1)回復不能な重度障害であれば、VF状態表216の該当するVF190のエントリの状態620を、「交換保留」に変更する(1830)。(2)リセットで回復できる可能性がある軽度障害であれば、VF状態表216の該当するVF190のエントリの状態620を、「リセット保留」に変更する(1860)。(3)回復完了した障害であれば、ハイパバイザ20に回復処理は省略する。
上記障害の程度が(1)及び(2)のケースでは更に、ハイパバイザ20がアダプタ割り当て表200を参照し、障害が起きたVF190と1対1に対応するEF310と、当該EF310を割り当てた仮想計算機30を特定する(1840)。
続いてハイパバイザ20は、各仮想計算機30に含まれる仮想ChipSet300のHPレジスタ185にEF310の稼働時取り外し(Hot Remove)要求を設定させる。そして、ハイパバイザ20は、仮想計算機30にHotPlug割り込みを通知して、ゲストOS40にEF310の利用中止と安全な取り外し(Safely Remove)を指令する(1850)。
<7.3.I/O仮想化処理>
図18は、前記第1実施形態の図7のステップ780で行われるI/O仮想化処理のフローチャートの例である。以下では、前記第1実施形態の図11と同一符号の同一処理については説明を省略する。
ゲストによるI/O操作を検出したハイパバイザ20は、操作対象(仮想ChipSet300等のレジスタ)及び操作内容(読み出し、書き込み)に応じて従来のI/Oエミュレーション処理を行う(1900)。この際、EF310のインタフェースが操作された場合は、ハイパバイザ20が、VF190の同一機能のインタフェースを代行操作する。
続いてハイパバイザ20は、ゲストによるI/O操作の内容がEF310の取り外し(Hot Remove)許可であったか否かを判定する(1910)。ゲストによるI/O操作の内容がVF190の取り外し許可であった場合のみ、ハイパバイザ20は、PF状態表214を参照し、当該VF190を生成したPF160がリセット保留中であるか否かを判断する(1120)。
ステップ1120に於いてPF160がリセット保留中でなかった場合は、ハイパバイザ20がVF状態表216を参照し、取り外し許可が得られたEF310と1対1で対応するVF190がリセット保留中であるか否かを判定する(1960)。当該VF190がリセット保留中であった場合のみ、1970に進んでVF回復処理を行う。
<7.3.1.PF回復処理>
図19は、図18のステップ1150で行われるPF回復処理のフローチャートの例である。以下では、前記第1実施形態の図12と同一符号、同一処理については説明を省略する。
PF160の回復に成功した場合は、ハイパバイザ20がPFドライバ250にPF160の再初期化を依頼し、IOV機能を再度有効化してVF190を再生成させる(1230)。続いてハイパバイザ20は、アダプタ割り当て表200を参照して、当該PF160から生成されていた全てのVF190について、各VF190と1対1に対応するEF310が障害発生前にどの仮想計算機30に割り当てられていたかを取得する。そして、ハイパバイザ20は、EF310に対応する仮想計算機30にEF310を再初期化させる(2035)。更にハイパバイザ20は、当該仮想計算機30に含まれる仮想ChipSet300のHPレジスタ185にEF310の稼働時取り付け(Hot Add)告知を設定する。そして、ハイパバイザ20は、仮想計算機30にHotPlug割り込みを通知して、ゲストOS40にEF310の増設認識と初期化及び利用開始を促す(2040)。
<7.3.2.VF回復処理>
図20は、図18のステップ1970で行われるVF回復処理のフローチャートの例である。リセット保留中のVF190と1対1に対応するEF310について、ゲストOS40からの取り外し許可を検出したハイパバイザ20は、当該VF190をリセットする(2100)。
続いてハイパバイザ20は、VF190の種類に応じたVFドライバ260を呼び出し、VF190の回復に成功したか否かをVFドライバ260に問い合わせる(2110)。ハイパバイザ20は、VF190の回復の成否に応じて処理を分岐する(2120)。
VF190の回復に成功した場合は、ハイパバイザ20が当該EF310を再初期化するよう仮想計算機30に指令する(2130)。続いてハイパバイザ20は、当該EF310を有する仮想計算機30に含まれる仮想ChipSet300のHPレジスタ185にEF310の稼働時取り付け(Hot Add)告知を設定する。そして、ハイパバイザ20は仮想計算機30にHotPlug割り込みを通知して、ゲストOS40にEF310の増設認識と初期化及び利用開始を促す(2140)。これにより、HotPlug割り込みを受信したゲストOS40は、仮想ChipSet300のHPレジスタ185を読み込んで、Hot Addが発生したことを取得し、初期化されたEF310を加え、仮想アダプタドライバ270でEF310の利用を再開する。
続いてハイパバイザ20は、VF状態表216の当該VF190に対応するエントリの状態620を正常状態に戻す(2150)。最後にハイパバイザ20は、当該処理の結果をコンソール80に出力し、保守要員によるI/Oアダプタ60の交換を促す(2160)。回復に成功した場合は直ちに交換を行う必要は無いが、I/Oアダプタ60が経年劣化している可能性を考慮し、予防保守の観点から保守員に通報する。
一方、ステップ2120でVF190の回復に失敗した場合は、ハイパバイザ20がVF状態表216の障害VFのエントリの状態620を交換保留に変更する(2170)。続いてハイパバイザはVF交換処理を行う(2180)。
<7.3.3.VF交換処理>
図21は、図18のステップ1190及び図20のステップ2180で行うVF回復処理のフローチャートの例である。以下では、前記第1実施形態の図13と同一符号、同一処理については説明を省略する。
ステップ1420で代替VFを仮想計算機30に割り当て直したのち、ハイパバイザ20は、代替VFと1対1に対応する代替EF310を初期化する(2225)。更にハイパバイザは、当該仮想計算機30に含まれる仮想ChipSet300のHPレジスタ185に代替EF310の稼働時取り付け(Hot Add)告知を設定する。そして、ハイパバイザ20は、仮想計算機30にHotPlug割り込みを通知して、ゲストOS40に代替EF310の増設認識と初期化及び利用開始を促す(1430)。
<8.まとめ>
以上の構成及び処理により、ハイパバイザ20の処理がEF310とVF190のインタフェース変換のみとなるため、前記第1実施形態には劣るが、比較的高い性能を実現できる。
PF160で軽度な障害が発生した場合は、当該PF160のリセットによって消失する全てのVF190を予め仮想計算機30からHot Removeしておき、ゲストOS40のクラッシュを回避できるため高信頼を実現できる。また、保守要員の手を借りずにPF160を回復させ、再生成されたVF190を自動的に仮想計算機30へHotAddするため、保守容易性を実現できる。
また、VF190で軽度及び重度な障害が発生した場合についても、保守要員の手を借りずに当該VF190を仮想計算機30からHotRemoveし、障害の重度に応じてVF190をリセットまたは交換する対応をとることができる。そして、EF310を仮想計算機30にHotAddして仮想計算機を回復させるため、VF190の障害に対しても高信頼性と保守容易性を実現できる。
なお、上記各実施形態では、物理計算機10上に仮想計算機を生成する仮想化部としてハイパバイザを適用した例を示したが、VMM(Virtual Machine Monitor)を用いることができる。
また、上記各実施形態では、物理計算機10にチップセット100がCPU70から独立して存在する例を示したが、CPU70内にチップセット100の機能を含めるようにしてもよい。
以上のように、本発明は、IOV機能とAER機能を備えたI/Oアダプタを備えた仮想計算機や仮想計算機の管理システムに適用することができる。
10 物理計算機
20 ハイパバイザ
30 仮想計算機
40 ゲストOS
60 I/Oアダプタ
70 CPU
80 コンソール
90 メモリ
100 チップセット
110 インターコネクト
120 バス
130 LAN
140 ディスク
150 SAN
160 PF
170 IOVレジスタ
180 AERレジスタ
185 HPレジスタ(HotPlugレジスタ)
190 VF
200 アダプタ割り当て表
210 障害処理部
212 IOV障害処理部
214 PF状態表
216 VF状態表
220 仮想計算機のエミュレーションデータ
222 仮想Chipsetデータ
224 仮想アダプタデータ
250 PFドライバ
260 VFドライバ
270 仮想アダプタドライバ
300 仮想ChipSet
310 仮想アダプタ

Claims (14)

  1. プロセッサとメモリと仮想I/Oアダプタを仮想機能として生成する物理機能と前記仮想機能と前記物理機能のそれぞれの状態を管理するレジスタとを有するI/Oアダプタを備えた物理計算機と、前記物理計算機の計算機資源を仮想計算機に提供する仮想化部と、前記仮想計算機で実行されるOSと、を備えて、前記仮想化部が前記仮想機能を割り当てた1つ以上の仮想計算機を生成し、前記仮想計算機でOSを稼働させ、前記OSに前記仮想機能を利用させる仮想計算機の制御方法であって、
    前記仮想化部が、前記I/Oアダプタのレジスタを参照し前記I/Oアダプタの障害の発生を検出する第1のステップと、
    前記仮想化部が、前記障害の発生した前記I/Oアダプタの前記物理機能により提供される前記仮想機能が割り当られた仮想計算機を特定する第2のステップと、
    前記仮想化部が、前記特定された仮想計算機上で稼働する前記OSに前記仮想機能の利用中止を指示する第3のステップと、
    前記仮想化部が、前記OSから前記利用中止の指示に対する応答を受領した後、前記I/Oアダプタの前記物理機能の回復処理を実施する第4のステップと、
    を含むことを特徴とする仮想計算機の制御方法。
  2. 請求項1に記載の仮想計算機の制御方法であって、
    前記I/Oアダプタは、
    障害が発生したときに、障害情報を格納する障害情報レジスタを有し、
    前記第1のステップは、
    前記仮想化部が、前記障害を示す信号を受信したときに前記障害情報レジスタを参照することを特徴とする仮想計算機の制御方法。
  3. 請求項2に記載の仮想計算機の制御方法であって、
    前記仮想計算機は、
    前記I/Oアダプタの挿抜要求と通知を格納するホットプラグレジスタをさらに有し、
    前記第2のステップは、
    全ての前記仮想機能について前記特定を行い、
    前記第のステップは、
    前記仮想化部が、前記ホットプラグレジスタに前記仮想機能の取り外し要求を設定する第のステップと、
    前記OSが、前記ホットプラグレジスタを読み込む第のステップと、
    前記特定された仮想計算機上で稼働する全ての前記OSが、前記ホットプラグレジスタに前記仮想機能の取り外し要求に対して応答するまで待機する第のステップと、
    をさらに含むことを特徴とする仮想計算機の制御方法。
  4. 請求項3に記載の仮想計算機の制御方法であって、
    前記仮想化部は、前記OSが前記仮想機能の利用を中止した後に、前記I/Oアダプタを再初期化する第のステップと、
    前記I/Oアダプタが、前記仮想機能を再度生成し、前記仮想化部が、再度生成された仮想機能を前記仮想計算機に再度割り当てるのステップと、
    前記仮想化部が、前記ホットプラグレジスタにI/Oアダプタの取り付け通知を設定する第10のステップと、
    前記OSが、前記ホットプラグレジスタを読み込んで前記I/Oアダプタの取り付けを検知する第11のステップと、
    前記OSが、前記仮想機能の利用を再開する第12のステップと、
    をさらに含むことを特徴とする仮想計算機の制御方法。
  5. 請求項1に記載の仮想計算機の制御方法であって、
    前記仮想化部は、
    前記I/Oアダプタを操作するドライバを有し、当該ドライバには予め障害発生時の処理の方針が設定され、
    前記第のステップは、
    前記仮想化部が、前記障害発生時には前記ドライバに対して、障害対処の方針を問い合わせる第13のステップと、
    前記ドライバに設定された前記方針がリセット試行である場合に、前記仮想計算機で稼働する前記OSに前記仮想機能の状態を伝達する第14のステップと、
    をさらに含むことを特徴とする仮想計算機の制御方法。
  6. 請求項3に記載の仮想計算機の制御方法であって、
    前記仮想化部は、
    前記I/Oアダプタを操作するドライバを有し、当該ドライバには予め障害発生時の処理の方針が設定され、
    前記仮想化部は、前記OSが前記仮想機能の利用を中止した後に、前記I/Oアダプタを再初期化する第のステップと、
    前記I/Oアダプタが、前記仮想機能を再度生成し、前記仮想化部が、再度生成された仮想機能を前記仮想計算機に再度割り当てる第のステップと、
    前記仮想化部が、前記ホットプラグレジスタにI/Oアダプタの取り付け通知を設定する第10のステップと、
    前記OSが、前記ホットプラグレジスタを読み込んで前記I/Oアダプタの取り付けを検知する第11のステップと、
    前記OSが、前記仮想機能の利用を再開する第12のステップと、
    をさらに含み、
    前記第のステップは、
    前記仮想化部が、前記障害発生時には前記ドライバに対して、障害対処の方針を問い合わせる第13のステップと、
    前記ドライバに設定された前記方針がリセット試行である場合に、前記仮想計算機で稼働する前記OSに前記仮想機能の状態を伝達する第14のステップと、
    をさらに含むことを特徴とする仮想計算機の制御方法。
  7. 請求項1に記載の仮想計算機の制御方法であって、
    前記仮想計算機は、第1のOSが稼働する第1の仮想計算機と第2のOSが稼働する第2の仮想計算機を含み、
    前記仮想化部は、前記第1の仮想計算機及び第2の仮想計算機に前記仮想機能をそれぞれ割り当てて、前記第1のOS及び前記第2のOSに前記割り当てた前記仮想機能をそれぞれ利用させ、
    前記第4のステップは、
    前記仮想化部が、前記第1のOSからの前記仮想機能の利用中止の指示に対する応答と、前記第2のOSからの前記仮想機能の利用中止の指示に対する応答とを待ち合わせることを特徴とする仮想計算機の制御方法。
  8. プロセッサとメモリと仮想I/Oアダプタを仮想機能として生成する物理機能と前記仮想機能と前記物理機能のそれぞれの状態を管理するレジスタとを有するI/Oアダプタを備えた物理計算機と、
    前記物理計算機の計算機資源を仮想計算機に提供する仮想化部と、
    前記仮想計算機で実行されるOSと、を備えて、前記仮想化部が、前記仮想機能を割り当てた1つ以上の仮想計算機を生成し、前記仮想計算機で前記OSを稼働させ、前記OSに前記仮想機能を利用させる計算機であって、
    前記仮想化部は、
    前記I/Oアダプタのレジスタを参照し前記I/Oアダプタの障害の発生を検出する障害処理部と、
    前記物理機能が生成した前記仮想機能について、当該仮想機能を割り当てた前記仮想計算機を管理する割り当て情報と、
    を備え、
    前記障害処理部は、
    前記障害の発生した前記I/Oアダプタの前記割り当て情報を参照し、前記物理機能により提供される前記仮想機能が割り当られた前記仮想計算機を特定し、前記特定された仮想計算機上で稼働する前記OSに前記仮想機能の利用中止を指示し、前記OSから前記利用中止の指示に対する応答を受領した後、前記I/Oアダプタの前記物理機能の回復処理を実施することを特徴とする計算機。
  9. 請求項8に記載の計算機であって、
    前記I/Oアダプタは、
    障害情報を格納する障害情報レジスタを有し、
    前記障害処理部は、
    前記I/Oアダプタで発生した障害を示す信号を受信したときに前記障害情報レジスタを参照することを特徴とする計算機。
  10. 請求項9に記載の計算機であって、
    前記仮想計算機は、
    前記I/Oアダプタの挿抜要求と通知を格納するホットプラグレジスタをさらに有し、
    前記障害処理部は、全ての前記仮想機能について前記特定を行い、
    前記障害処理部は、
    前記ホットプラグレジスタに前記仮想機能の取り外し要求を設定し、前記特定された仮想計算機上で稼働する全ての前記OSが、前記ホットプラグレジスタに前記仮想機能の取り外し要求に対して応答するまで待機することを特徴とする計算機。
  11. 請求項10に記載の計算機であって、
    前記障害処理部は、
    前記OSが前記仮想機能の利用を中止した後に、前記I/Oアダプタを再初期化し、前記ホットプラグレジスタにI/Oアダプタの取り付け通知を設定し
    前記I/Oアダプタは、前記再初期化の後に前記仮想機能を再度生成し、
    前記仮想化部が、再度生成された前記仮想機能を前記仮想計算機に再度割り当てて、
    前記OSが、前記ホットプラグレジスタを読み込んで前記I/Oアダプタの取り付けを検知した後に、前記仮想機能の利用を再開することを特徴とする計算機。
  12. 請求項8に記載の計算機であって、
    前記仮想化部は、
    前記I/Oアダプタを操作するドライバを有し、当該ドライバには予め障害発生時の処理の方針が設定され、
    前記障害処理部が、前記障害発生時には前記ドライバに対して、障害対処の方針を問い合わせ、前記ドライバに設定された前記方針がリセット試行である場合に、前記仮想計算機で稼働する前記OSに前記仮想機能の状態を伝達することを特徴とする計算機。
  13. 請求項10に記載の計算機であって、
    前記仮想化部は、
    前記I/Oアダプタを操作するドライバを有し、当該ドライバには予め障害発生時の処理の方針が設定され、
    前記障害処理部は、前記OSが前記仮想機能の利用を中止した後に、前記I/Oアダプタを再初期化し、
    前記I/Oアダプタが、前記仮想機能を再度生成し、
    前記仮想化部が、前記再度生成した仮想機能を前記仮想計算機に再度割り当てて、
    前記障害処理部が、前記ホットプラグレジスタにI/Oアダプタの取り付け通知を設定し、
    前記OSが、前記ホットプラグレジスタを読み込んで前記I/Oアダプタの取り付けを検知して、前記仮想機能の利用を再開し、
    前記障害処理部が、前記障害発生時には前記ドライバに対して、障害対処の方針を問い合わせ、前記ドライバに設定された前記方針がリセット試行である場合に、前記仮想計算機で稼働する前記OSに前記仮想機能の状態を伝達することを特徴とする計算機。
  14. 請求項8に記載の計算機であって、
    前記仮想計算機は、第1のOSが稼働する第1の仮想計算機と第2のOSが稼働する第2の仮想計算機を含み、
    前記仮想化部は、前記第1の仮想計算機及び第2の仮想計算機に前記仮想機能をそれぞれ割り当てて、前記第1のOS及び前記第2のOSに前記割り当てた前記仮想機能をそれぞれ利用させ、
    前記障害処理部は、
    前記第1のOSからの前記仮想機能の利用中止の指示に対する応答と、前記第2のOSからの前記仮想機能の利用中止の指示に対する応答とを待ち合わせることを特徴とする計算機。
JP2011067444A 2011-03-25 2011-03-25 仮想計算機の制御方法及び計算機 Expired - Fee Related JP5585844B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011067444A JP5585844B2 (ja) 2011-03-25 2011-03-25 仮想計算機の制御方法及び計算機
US13/368,634 US8954963B2 (en) 2011-03-25 2012-02-08 Method and apparatus for resetting a physical I/O adapter without stopping a guest OS running on a virtual machine
EP12155184A EP2503456A1 (en) 2011-03-25 2012-02-13 Virtual computer system and controlling method of virtual computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011067444A JP5585844B2 (ja) 2011-03-25 2011-03-25 仮想計算機の制御方法及び計算機

Publications (2)

Publication Number Publication Date
JP2012203636A JP2012203636A (ja) 2012-10-22
JP5585844B2 true JP5585844B2 (ja) 2014-09-10

Family

ID=45655652

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011067444A Expired - Fee Related JP5585844B2 (ja) 2011-03-25 2011-03-25 仮想計算機の制御方法及び計算機

Country Status (3)

Country Link
US (1) US8954963B2 (ja)
EP (1) EP2503456A1 (ja)
JP (1) JP5585844B2 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012048546A (ja) * 2010-08-27 2012-03-08 Hitachi Ltd 計算機システム、i/oデバイス制御方法、及びi/oドロワ
US8429322B2 (en) * 2010-10-26 2013-04-23 Red Hat Israel, Ltd. Hotplug removal of a device in a virtual machine system
JPWO2012176278A1 (ja) * 2011-06-21 2015-02-23 富士通株式会社 情報処理装置、仮想マシン制御方法およびプログラム
US8856788B2 (en) * 2012-09-05 2014-10-07 Red Hat Israel, Ltd. Activity based device removal management
JP5874879B2 (ja) * 2012-11-26 2016-03-02 株式会社日立製作所 I/oデバイスの制御方法及び仮想計算機システム
US9081604B2 (en) * 2012-12-21 2015-07-14 Red Hat Israel, Ltd. Automatic discovery of externally added devices
US9569241B2 (en) * 2013-02-22 2017-02-14 Red Hat Israel, Ltd. Sharing devices assigned to virtual machines using runtime exclusion
US9135101B2 (en) 2013-03-01 2015-09-15 Avago Technologies General Ip (Singapore) Pte Ltd Virtual function timeout for single root input/output virtualization controllers
EP2979180B1 (en) * 2013-03-27 2019-10-30 Keysight Technologies Singapore (Sales) Pte. Ltd. Methods, systems, and computer readable media for emulating virtualization resources
JP5917441B2 (ja) * 2013-06-03 2016-05-11 株式会社日立製作所 仮想計算機システム、sr−iov対応デバイスの制御方法
US9317317B2 (en) 2013-06-12 2016-04-19 International Business Machines Corporation Implementing concurrent device driver maintenance and recovery for an SRIOV adapter in a virtualized system
US9323620B2 (en) 2013-06-12 2016-04-26 International Business Machines Corporation Implementing shared adapter configuration updates concurrent with maintenance actions in a virtualized system
US9400704B2 (en) * 2013-06-12 2016-07-26 Globalfoundries Inc. Implementing distributed debug data collection and analysis for a shared adapter in a virtualized system
US9304849B2 (en) * 2013-06-12 2016-04-05 International Business Machines Corporation Implementing enhanced error handling of a shared adapter in a virtualized system
US9720775B2 (en) 2013-06-12 2017-08-01 International Business Machines Corporation Implementing concurrent adapter firmware update for an SRIOV adapter in a virtualized system
CN103473136B (zh) * 2013-09-02 2017-06-13 华为技术有限公司 一种虚拟机的资源配置方法和通信设备
US9569242B2 (en) 2014-07-16 2017-02-14 International Business Machines Corporation Implementing dynamic adjustment of I/O bandwidth for virtual machines using a single root I/O virtualization (SRIOV) adapter
CN105429839B (zh) * 2014-09-09 2019-11-19 中兴通讯股份有限公司 虚拟化网络功能vnf优化方法、装置及系统
US9804877B2 (en) * 2014-09-16 2017-10-31 Unisys Corporation Reset of single root PCI manager and physical functions within a fabric
US10157074B2 (en) * 2015-10-16 2018-12-18 Dell Products L.P. Systems and methods for multi-root input/output virtualization-based management by single service processor
US10042720B2 (en) 2016-02-22 2018-08-07 International Business Machines Corporation Live partition mobility with I/O migration
US10002018B2 (en) 2016-02-23 2018-06-19 International Business Machines Corporation Migrating single root I/O virtualization adapter configurations in a computing system
US10042723B2 (en) * 2016-02-23 2018-08-07 International Business Machines Corporation Failover of a virtual function exposed by an SR-IOV adapter
US10025584B2 (en) 2016-02-29 2018-07-17 International Business Machines Corporation Firmware management of SR-IOV adapters
US10635499B2 (en) * 2016-03-23 2020-04-28 Unisys Corporation Multifunction option virtualization for single root I/O virtualization
US10341215B2 (en) 2016-04-06 2019-07-02 Keysight Technologies Singapore (Sales) Pte. Ltd. Methods, systems, and computer readable media for emulating network traffic patterns on a virtual machine
US9720862B1 (en) 2016-10-21 2017-08-01 International Business Machines Corporation Migrating interrupts from a source I/O adapter of a computing system to a destination I/O adapter of the computing system
US9715469B1 (en) 2016-10-21 2017-07-25 International Business Machines Corporation Migrating interrupts from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system
US9720863B1 (en) 2016-10-21 2017-08-01 International Business Machines Corporation Migrating MMIO from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system
WO2018092287A1 (ja) * 2016-11-18 2018-05-24 株式会社日立製作所 計算機及び計算機の再起動方法
CN108319492B (zh) * 2017-01-18 2020-05-08 华为技术有限公司 复位物理机的方法、装置与系统
US9785519B1 (en) 2017-02-16 2017-10-10 Red Hat Israel, Ltd. Driver switch for device error recovery for assigned devices
US10949306B2 (en) * 2018-01-17 2021-03-16 Arista Networks, Inc. System and method of a cloud service provider virtual machine recovery
US10608892B2 (en) 2018-07-27 2020-03-31 Vmware, Inc. Methods, systems and appratus for custom interface specification in a cloud management system
US11323354B1 (en) 2020-10-09 2022-05-03 Keysight Technologies, Inc. Methods, systems, and computer readable media for network testing using switch emulation
US11483227B2 (en) 2020-10-13 2022-10-25 Keysight Technologies, Inc. Methods, systems and computer readable media for active queue management

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7487403B2 (en) 2004-11-12 2009-02-03 International Business Machines Corporation Method for handling a device failure
WO2007024544A1 (en) * 2005-08-23 2007-03-01 Moore Computer Consultants, Inc. Connection of peripherals to operating systems
JP4295783B2 (ja) * 2006-12-13 2009-07-15 株式会社日立製作所 計算機、仮想デバイスの制御方法
US8141092B2 (en) * 2007-11-15 2012-03-20 International Business Machines Corporation Management of an IOV adapter through a virtual intermediary in a hypervisor with functional management in an IOV management partition
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
US8141094B2 (en) * 2007-12-03 2012-03-20 International Business Machines Corporation Distribution of resources for I/O virtualized (IOV) adapters and management of the adapters through an IOV management partition via user selection of compatible virtual functions
US8359415B2 (en) * 2008-05-05 2013-01-22 International Business Machines Corporation Multi-root I/O virtualization using separate management facilities of multiple logical partitions
JP4934642B2 (ja) 2008-06-11 2012-05-16 株式会社日立製作所 計算機システム
JP2010039729A (ja) * 2008-08-05 2010-02-18 Hitachi Ltd I/o管理システム、サーバシステム及びそのi/oスイッチの管理方法
JP5352848B2 (ja) * 2008-11-28 2013-11-27 株式会社日立製作所 仮想計算機の制御方法及び計算機装置
JP2011067444A (ja) 2009-09-25 2011-04-07 Panasonic Electric Works Co Ltd カウンタ及びその製造方法
US8726093B2 (en) * 2010-06-30 2014-05-13 Oracle America, Inc. Method and system for maintaining direct hardware access in the event of network interface card failure
US20120167082A1 (en) * 2010-12-23 2012-06-28 Sanjay Kumar Direct sharing of smart devices through virtualization
US8726276B2 (en) * 2011-01-26 2014-05-13 International Business Machines Corporation Resetting a virtual function that is hosted by an input/output adapter

Also Published As

Publication number Publication date
US20120246644A1 (en) 2012-09-27
EP2503456A1 (en) 2012-09-26
JP2012203636A (ja) 2012-10-22
US8954963B2 (en) 2015-02-10

Similar Documents

Publication Publication Date Title
JP5585844B2 (ja) 仮想計算機の制御方法及び計算機
US8146082B2 (en) Migrating virtual machines configured with pass-through devices
US8127086B2 (en) Transparent hypervisor pinning of critical memory areas in a shared memory partition data processing system
US9760455B2 (en) PCIe network system with fail-over capability and operation method thereof
JP4001877B2 (ja) 入出力ファブリックにおけるハードウェア・エラーからの自動回復
JP5305848B2 (ja) データ処理システム内で入出力(i/o)仮想化を管理するための方法およびデータ処理システムならびにコンピュータ・プログラム
JP5851503B2 (ja) 高可用性仮想機械環境におけるアプリケーションの高可用性の提供
JP5536878B2 (ja) ファイバ・チャネル・ファブリックへのアクセスの変更
US20060064523A1 (en) Control method for virtual machine
JP5305866B2 (ja) データ処理システム内で入出力(i/o)仮想化を管理するための方法およびコンピュータ・プログラムならびにデータ処理システム
US9304849B2 (en) Implementing enhanced error handling of a shared adapter in a virtualized system
JP4576398B2 (ja) マルチパーティションコンピュータシステムのi/oデバイスを制御するためのシステム
JP5216336B2 (ja) 計算機システム、管理サーバ、および、不一致接続構成検知方法
JP6458146B2 (ja) 計算機及びメモリ領域管理方法
US20110209148A1 (en) Information processing device, virtual machine connection method, program, and recording medium
JP2011527047A (ja) 分散型raidと関連するアプリケーションの実行のための方法およびシステム
WO2012004902A1 (ja) 計算機システム及び計算機システムの系切替制御方法
US10990436B2 (en) System and method to handle I/O page faults in an I/O memory management unit
JP5201176B2 (ja) 情報処理装置
JP4656080B2 (ja) 情報処理装置のシステム部品

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130603

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140528

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: 20140624

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140709

R150 Certificate of patent or registration of utility model

Ref document number: 5585844

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees