JP2014167683A - 仮想計算機システム及び仮想計算機システムの障害模擬方法及び障害模擬プログラム - Google Patents

仮想計算機システム及び仮想計算機システムの障害模擬方法及び障害模擬プログラム Download PDF

Info

Publication number
JP2014167683A
JP2014167683A JP2013038796A JP2013038796A JP2014167683A JP 2014167683 A JP2014167683 A JP 2014167683A JP 2013038796 A JP2013038796 A JP 2013038796A JP 2013038796 A JP2013038796 A JP 2013038796A JP 2014167683 A JP2014167683 A JP 2014167683A
Authority
JP
Japan
Prior art keywords
failure
virtual
guest
information
simulation
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.)
Granted
Application number
JP2013038796A
Other languages
English (en)
Other versions
JP6045397B2 (ja
Inventor
Taiko Watanabe
泰公 渡邉
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2013038796A priority Critical patent/JP6045397B2/ja
Publication of JP2014167683A publication Critical patent/JP2014167683A/ja
Application granted granted Critical
Publication of JP6045397B2 publication Critical patent/JP6045397B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】準仮想化技術を適用した仮想計算機システムにおいて、模擬した障害をゲスト計算機の障害判定部により検出可能とすることを目的とする。
【解決手段】模擬が要求される障害の情報が定義されたH/W障害情報441入力するH/W障害操作ツール310を備え、ゲストOS400のフロントエンドドライバ420は、仮想マシンモニタ210と共有する共有メモリ430と、共有メモリ430に記憶される障害情報テーブル440と、障害情報テーブル440にH/W障害情報441が設定されているか否かを判定する障害判定部450と、障害判定部450により設定されていると判定された場合に、H/W障害情報441に基づいて、障害を模擬する障害模擬部451とを備える。
【選択図】図2

Description

本発明は、準仮想化を利用した仮想計算機における仮想計算機システム及び仮想計算機システムの障害模擬方法及び障害模擬プログラムに関する。特に、準仮想化を利用したゲスト計算機においてハードウェア障害を模擬し、障害処理機能の動作確認を行う仮想計算機システム及び仮想計算機システムの障害模擬方法及び障害模擬プログラムに関する。
仮想化技術を用いて複数の計算機を集約することはサーバリソースの有効活用や運用コストダウンの面で有用であり、近年、仮想化技術を用いてサーバの集約を行う事例が増加している。このような事例の増加に伴い、重要となるのが仮想計算機の信頼性である。
1台の計算機上に複数の仮想計算機を集約した構成は、ホスト計算機の障害がゲスト計算機に大きな影響を与えることとなるため、ホスト計算機に障害が発生した場合のゲスト計算機及びゲスト計算機上のアプリケーションの動作検証を行うことは重要である。
このような背景のもと、仮想化環境上でハードウェア障害を模擬し、ゲストアプリケーションの動作確認が行われるようになってきている。
仮想化環境において、I/Oポート、メモリマップドI/O、あるいは割り込みに関する情報を模擬し、仮想化環境に構築したシステムの障害処理機能の正常性を確認できるようにする技術がある(例えば、特許文献1参照)。
特開2011−227700号公報
仮想化環境では、デバイスエミュレーションの方式が2通りある。
1つ目は完全仮想化と呼ばれる方式で、実デバイスの動作をデバイスレジスタまで含めて全て再現するものである。完全仮想化では実デバイスが完全に再現されるため、ゲストOS(Operating・System)のデバイスドライバは実計算機で動作する時と同じものが使用可能である。しかし、デバイスエミュレーションが大きなオーバヘッドとなるため、ゲストOSのデバイスI/O性能は高くない。
それに対し、2つ目の準仮想化と呼ばれる方式では、デバイスエミュレーションを簡略化し、ホストOS−ゲストOS間のインタフェース(以下I/F)を仮想化環境に都合の良いように実装したものである。
準仮想化方式ではデバイスI/Oは、ホストOS−ゲストOS間の共有メモリを用いたアドレス渡しによるゼロコピーI/Oとなるため、完全仮想化方式に比べて高速なデバイスI/Oが可能となる。また、デバイスエミュレーションなどの処理が簡略化されるため、準仮想化方式ではCPU使用率を低減可能である。
特許文献1に示されている技術は、完全仮想化方式を対象としたものである。準仮想化技術を適用した仮想化環境においては、ゲストOSのデバイスドライバは、共有メモリを使用したデバイスI/Oに対応するための専用の実装となっている。そのため、準仮想化技術を適用した際のゲストOSのデバイスドライバでは、デバイスドライバ自体に障害を検出する機能が備わっていないため、模擬した障害をゲストOSにて検出することができないという課題がある。
本発明は、このような課題を解決するためになされたもので、準仮想化を適用した仮想化環境において、仮想マシンモニタで模擬したハードウェア障害をゲストOS上のデバイスドライバで検出可能とし、検出したハードウェア障害をゲストOSまたはゲストのアプリケーションへと通知する仕組みを持つ仮想計算機システムを得ることを目的とする。
本発明に係る仮想計算機システムは、
仮想計算機モニタにより準仮想化方式を用いて実現されるゲスト計算機であって、前記仮想計算機モニタにより仮想ハードウェアが割り当てられるゲスト計算機が動作する仮想計算機システムにおいて、
前記仮想ハードウェアの障害の模擬を要求する障害模擬要求であって、模擬が要求される障害の情報が定義された障害定義情報を含む障害模擬要求を入力する障害模擬要求入力部を備え、
前記ゲスト計算機は、
前記仮想ハードウェアを操作するゲスト側ドライバを備え、
前記ゲスト側ドライバは、
記憶装置に記憶される障害情報テーブルであって、前記障害模擬要求入力部により入力された前記障害模擬要求に含まれる前記障害定義情報が設定される障害情報テーブルと、
前記障害情報テーブルに前記障害定義情報が設定されているか否かを処理装置により判定する障害判定部と、
前記障害判定部により前記障害情報テーブルに前記障害定義情報が設定されていると判定された場合に、前記障害情報テーブルに設定されている前記障害定義情報に基づいて、
前記仮想ハードウェアの障害を模擬する障害模擬部とを備えることを特徴とする。
本発明の一の態様に係る仮想計算機システムによれば、準仮想化技術を適用した仮想計算機システムにおいても、模擬した障害をゲスト計算機の障害判定部により検出可能となり、障害が発生した際のゲスト計算機の動作確認を行うことが可能となるという効果を奏する。
実施の形態1に係る仮想計算機システム800のシステム構成を示す図である。 実施の形態1に係る仮想計算機システム800のブロック構成図である。 実施の形態1に係るH/W障害情報テーブル440の構成の一例を示す図である。 実施の形態1に係る実計算機100のハードウェア構成の一例を示す図である。 実施の形態1に係る仮想計算機システム800のH/W障害模擬方式の動作を示すシーケンス図である。 実施の形態1に係る仮想計算機システム800のH/W障害模擬方式の動作を示すシーケンス図である。 実施の形態1に係る仮想計算機システム800のH/W障害模擬方式の動作を示すシーケンス図である。 実施の形態2に係る仮想計算機システム801のブロック構成図である。 実施の形態2に係る仮想計算機システム801のH/W障害模擬方式の動作を示すシーケンス図である。 実施の形態3に係る仮想計算機システム802のブロック構成図である。 実施の形態3に係る仮想計算機システム802のH/W障害模擬方式の動作を示すシーケンス図である。 実施の形態4に係る仮想計算機システム803のブロック構成図である。 実施の形態4に係る仮想計算機システム803のH/W障害模擬方式の動作を示すシーケンス図である。 実施の形態5に係る仮想計算機システム804のシステム構成を示す一例を示す図である。 実施の形態5に係る仮想計算機システム804のブロック構成を示す図である。 実施の形態5に係る仮想計算機システム804のH/W障害模擬方式の動作を示すシーケンス図である。 実施の形態6に係る仮想計算機システム805のシステム構成を示す一例を示す図である。 実施の形態6に係る仮想計算機システム805のブロック構成図である。 実施の形態6に係る仮想計算機システム805のH/W障害模擬方式の動作を示すシーケンス図である。
実施の形態1.
本実施の形態に係る仮想計算機システム800は、準仮想化を利用した仮想計算機(ゲスト計算機)において模擬したハードウェア障害を、ゲストOSのデバイスドライバで検出し、ゲストOS及びゲストアプリケーションへの障害通知を行うものである。
図1は、本実施の形態に係る仮想計算機システム800のシステム構成を示す図である。
図1を用いて、本実施の形態に係る仮想計算機システム800のシステム構成について説明する。
図1は、準仮想化技術を用いた仮想計算機システム800の構成例を示したものであり、ホストOS組み込み型のホストOS型仮想マシンモニタを用いた構成である。
仮想計算機システム800は、実計算機100、ホストOS200、仮想計算機300、ゲストOS400、ゲストAPP(Application)500(ゲストアプリケーション)を備える。
実計算機100は、コンピュータであり、仮想計算機システム800を動作させるための物理ハードウェアである。実計算機100は、CPU、メモリ、割込みコントローラなどを備える。
ホストOS200(ホスト計算機)は、実計算機100上で動作するソフトウェアであり、CPUやメモリなどのハードウェア資源を抽象化してアプリケーションに提供する。本実施の形態に係るホストOS200には、仮想マシンモニタ210(仮想計算機モニタ)が組み込まれている。
仮想マシンモニタ210は、実計算機100上で複数のOSを動作させるためのソフトウェアであり、仮想計算機300を作成しゲストOS400に提供する。ゲストOS400が動作する仮想計算機300はゲスト計算機の一例である。
本実施の形態に係る仮想マシンモニタ210は、ホストOS型仮想マシンモニタである。
ホストOS型仮想マシンモニタとは、実計算機100上でホストOS200が動作しており、ホストOS200上で仮想マシンモニタ210及びゲストOS400が動作するものである。そして、ゲストOS400上においてゲストAPP500が動作する。
特に本実施の形態では、仮想マシンモニタ210が、ホストOS200の中にCPUやメモリなどのハードウェア資源を直接コントロールするカーネルモジュールとして組み込まれた形態の仮想計算機システム800を一例として示す。
本実施の形態では、仮想マシンモニタ210及びゲストOS400には準仮想化技術が適用されているものとする。
準仮想化技術とは、仮想計算機システム800向けのデバイスI/O高速化技術である。準仮想化技術を適用した環境では、ゲストOS400のデバイスドライバが仮想マシンモニタ210との間に共有メモリ430を備える。
準仮想化技術を適用した仮想計算機システム800では、この共有メモリ430を用いることで高速なデバイスI/Oが可能となる。
また、仮想マシンモニタ210でのデバイスエミュレーションが簡略化されるため、実計算機100のCPU負荷を低減することが可能である。
準仮想化技術では、仮想マシンモニタ210によりゲストOS400に対し、仮想H/W(仮想ハードウェア)が割り当てられる。準仮想化技術を利用するためには、ゲストOS400及び仮想マシンモニタ210が準仮想化に対応した専用のドライバであって、仮想H/Wを操作するためのドライバを備えていることが必要となる。
図1に示すように、ゲストOS400には、準仮想化に対応したドライバとして、フロントエンドドライバ420(ゲスト側ドライバの一例)が組み込まれる。また、仮想マシンモニタ210には、準仮想化に対応したドライバとして、バックエンドドライバ220(モニタ側ドライバの一例)が組み込まれる。
図2は、本実施の形態に係る仮想計算機システム800のブロック構成図である。図2を用いて、本実施の形態に係る仮想計算機システム800のブロック構成について説明する。
図2に示すように、仮想計算機システム800は、さらに、H/W障害操作ツール310、仮想マシンモニタ管理用API230、H/W障害情報設定部320、障害判定部450、障害模擬部451、障害通知部452、通常処理部453、H/W障害情報テーブル440を備える。H/W障害情報テーブル440は、共有メモリ430(共有記憶領域)に記憶されている。「H/W」とは、「Hardware(ハードウェア)」の略である。「API」とは、「Application・Programming・Interface」の略である。
H/W障害操作ツール310は、ホストOS200上で動作するアプリケーションである。H/W障害操作ツール310は、ユーザがH/W障害を操作するときのユーザインタフェースとなる。
仮想計算機システム800は、H/W障害を模擬し、H/W障害に対するシステムの機能を確認する障害模擬システムの一例である。
H/W障害操作ツール310は、仮想ハードウェアの障害の模擬を要求する障害模擬要求であって、模擬が要求される障害の情報が定義された障害定義情報を含む障害模擬要求を、例えば、ユーザから入力する。H/W障害操作ツール310は、障害模擬要求入力部の一例である。
仮想マシンモニタ管理用API230は、仮想計算機300(仮想マシン)の仮想メモリや仮想ネットワークを管理するライブラリである。
本実施の形態では、一例として仮想マシンモニタ管理用API230を使用するが、仮想マシンモニタ210を外部から操作可能なモジュールであれば仮想マシンモニタ管理用API230に限るものではない。
H/W障害情報設定部320(障害情報設定部)は、フロントエンドドライバ420−バックエンドドライバ220間で使用可能な共有メモリ430領域に構築されたH/W障害情報テーブル440(障害情報テーブル)に対し、H/W障害情報441(障害定義情報)を書き込む機能モジュールである。
本実施の形態では、H/W障害情報設定部320は、仮想マシンモニタ210のバックエンドドライバ220に搭載されている。
図3は、本実施の形態に係るH/W障害情報テーブル440の構成の一例を示す図である。図3を用いて、本実施の形態に係るH/W障害情報テーブル440の構成について説明する。
H/W障害情報テーブル440は、模擬を実行するH/W障害についての情報が設定されるテーブルである。H/W障害情報テーブル440には、H/W障害操作ツール310により入力された障害内容指示(障害模擬要求)に含まれるH/W障害情報441(障害定義情報)が設定される。H/W障害情報441には、障害の種別を特定する障害種別情報と、障害の内容を特定する障害内容情報とが含まれる。
図3に示すように、H/W障害情報テーブル440には、デバイス毎にH/W障害情報441が設定されている。例えば、デバイスAのH/W障害情報441a、デバイスBのH/W障害情報441b、・・・等のように構成される。
H/W障害情報441には、H/W情報、障害の種別、障害の内容、レジスタの値などの情報(H/W情報、障害の種別、障害の内容、レジスタの値などをまとめて、以下、H/W障害情報441とする)を持つ。このH/W障害情報441は、ゲストOS400の仮想デバイス1つにつき1つずつ存在する。
「H/W情報」は、H/W障害を生成する対象の仮想デバイスを示す情報が設定される。設定されたH/W情報から、H/W障害を生成する対象のゲストOS400や仮想デバイスが特定される。
「H/W情報」には、例えば、ブロックデバイスであればホストOS200上でのファイルのパスなどが設定される。ネットワークデバイスであればMACアドレスなどの仮想H/Wを特定することのできる情報が設定される。
「障害の種別」は、模擬を行う障害を示す情報である。「障害の種別」は、H/W障害生成が指示されていないときと、H/W障害生成が指示されているときと、を明確に区別することが可能なものとする。
本実施の形態では、例えば、「障害の種別」の値が0の場合はH/W障害の生成指示なし、0以外の場合をH/W障害生成の指示がある場合とする。また、0以外の値が設定されていた場合、設定されている値によって生成するH/W障害を判別可能であるものとする。例えば、「障害の種別」の値が1だった場合は仮想デバイスの応答遅延を模擬する、「障害の種別」の値が2だった場合は仮想デバイスの無応答状態を模擬するなどである。
「障害の内容」は、「障害の種別」で指定したH/W障害を模擬するための具体的な処理方法を指示するための値である。
生成する(模擬する)H/W障害が仮想デバイスの応答遅延だった場合を例とする。この場合、「障害の内容」に応答を遅延させる時間を設定する。「障害の内容」に設定する遅延時間は、任意に指定可能とする。
また、生成するH/W障害が仮想デバイスの無応答だった場合を例とする。この場合は、「障害の内容」に仮想デバイスの応答を破棄する回数を指定することで、「障害の内容」で指定された回数分だけ仮想デバイスが無応答になるように障害を模擬する。
「レジスタ値」は、仮想デバイスのデバイスレジスタの値として設定したい値を格納する。デバイスレジスタとは、ゲストOS400とデバイスとを通信させるための情報が格納されているレジスタである。
仮想計算機システム800に準仮想化を適用した場合は、仮想マシンモニタ210によってデバイスレジスタが模擬されないため、実際には仮想デバイスのデバイスレジスタは存在しない。しかし、後述する障害模擬部451あるいは障害通知部452等が、ゲストOS400またはゲストAPP500(ゲストアプリケーション)に対し、H/W障害を通知する際にデバイスレジスタの値を渡さなければならない場合がある。このような場合、障害模擬部451あるいは障害通知部452等は、「レジスタ値」に格納されている値を使用する。また、H/W障害発生時にゲストOS400からデバイスレジスタの参照依頼があった際にも、「レジスタ値」に任意の値を格納して渡すことが可能である。ゲストOS400からのデバイスレジスタの参照依頼とは、例えば、該デバイスにアクセスがあった場合などである。
障害判定部450は、仮想マシンモニタ210からの仮想割込みが入った場合に、フロントエンドドライバ420内の割込みハンドラから呼び出される。障害判定部450は、共有メモリ430内のH/W障害情報テーブル440に従い、障害の模擬が指示されているかどうかの判定を行う。
障害判定部450は、H/W障害情報テーブル440内の「障害の種別」の値が0にクリアされているか、0以外の値が設定されているかを処理装置により判定することで、H/W障害生成の指示の有無の判定を実行する。
障害模擬部451は、共有メモリ430のH/W障害情報テーブル440の内容に基づいて、H/W障害を模擬する。障害模擬部451は、ゲストOS400及びゲストAPP500が必要とする障害内容、障害情報の模擬を行う。
障害通知部452は、H/Wで発生した障害をゲストOS400またはゲストAPP500に通知する。
通常処理部453は、デバイスI/O、デバイスI/O完了処理などのデバイスドライバとしての通常機能を果たす部分である。
図4は、実計算機100のハードウェア構成の一例を示す図である。
図4において、実計算機100は、コンピュータであり、LCD901(Liquid・Crystal・Display)、キーボード902(K/B)、マウス903、FDD904(Flexible・Disk・Drive)、CDD905(Compact・Disc・Drive)、プリンタ906といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。LCD901の代わりに、CRT(Cathode・Ray・Tube)、あるいは、その他の表示装置が用いられてもよい。マウス903の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
実計算機100は、プログラムを実行するCPU911(Central・Processing・Unit)を備えている。CPU911は、処理装置の一例である。CPU911は、バス912を介してROM913(Read・Only・Memory)、RAM914(Random・Access・Memory)、通信ボード915、LCD901、キーボード902、マウス903、FDD904、CDD905、プリンタ906、HDD920(Hard・Disk・Drive:磁気ディスク装置)と接続され、これらのハードウェアデバイスを制御する。HDD920の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ、あるいは、その他の記録媒体が用いられてもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、HDD920は、不揮発性メモリの一例である。これらは、記憶装置の一例である。通信ボード915、キーボード902、マウス903、FDD904、CDD905は、入力装置の一例である。また、通信ボード915、LCD901、プリンタ906は、出力装置の一例である。
通信ボード915は、LAN(Local・Area・Network)等に接続されている。通信ボード915は、LANに限らず、IP−VPN(Internet・Protocol・Virtual・Private・Network)、広域LAN、ATM(Asynchronous・Transfer・Mode)ネットワークといったWAN(Wide・Area・Network)、あるいは、インターネットに接続されていても構わない。LAN、WAN、インターネットは、ネットワークの一例である。
HDD920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。プログラム群923には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、CPU911により読み出され実行される。ファイル群924には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ID(識別子)」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、RAM914やHDD920等の記録媒体に記憶される。RAM914やHDD920等の記録媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理(動作)に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、RAM914等のメモリ、FDD904のフレキシブルディスク(FD)、CDD905のコンパクトディスク(CD)、HDD920の磁気ディスク、光ディスク、DVD(Digital・Versatile・Disc)、あるいは、その他の記録媒体に記録される。また、データや信号は、バス912、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
次に、仮想計算機システム800におけるH/W障害模擬方式を実現するための動作について説明する。
図5は、本実施の形態に係る仮想計算機システム800のH/W障害模擬方式の動作を示すシーケンス図である。図5では、ユーザがH/W障害操作ツール310を使用してH/W障害情報テーブル440にH/W障害情報441をセットするまでのシーケンスを示す。
図6は、本実施の形態に係る仮想計算機システム800のH/W障害模擬方式の動作を示すシーケンス図である。図6は、H/W障害情報テーブル440にH/W障害情報441がセットされているときのゲストOS400の動作を示したものである。
図7は、本実施の形態に係る仮想計算機システム800のH/W障害模擬方式の動作を示すシーケンス図である。図7は、H/W障害情報テーブル440にH/W障害情報441がセットされていないときのゲストOS400の動作を示したものである。
図5を用いて、ユーザがH/W障害操作ツール310を使用してH/W障害情報テーブル440にH/W障害情報441をセットするまでのシーケンスについて説明する。
まず、仮想計算機システム800のユーザがH/W障害模擬方式を利用する場合、実計算機100のディスプレイ等(入力装置)から、H/W障害操作ツール310に対して、H/W情報、障害の種別、障害の内容などのH/W障害情報441の元となる情報を入力する。
つまり、ユーザがH/W障害操作ツール310を用いて仮想マシンモニタ管理用API230に対してH/W障害の生成を指示する。
S100において、H/W障害操作ツール310は、仮想マシンモニタ管理用API230に対し、ユーザにより入力されたH/W障害の内容情報を出力し、H/W障害の生成を指示するH/W障害生成指示を出力する。このH/W障害生成指示には、H/W障害模擬の対象とするゲストOS400、仮想デバイス、H/W障害の種別、H/W障害の内容、デバイスレジスタの値などの情報が含まれる。
S101において、仮想マシンモニタ管理用API230は、H/W障害操作ツール310からH/W障害生成指示を入力する。仮想マシンモニタ管理用API230は、H/W障害生成指示を入力すると、仮想マシンモニタ210内のH/W障害情報設定部320に対してH/W障害生成命令を発行(出力)する。
S102において、H/W障害情報設定部320は、仮想マシンモニタ管理用API230からH/W障害生成命令を入力する。このH/W障害生成命令には、H/W障害模擬の対象とするゲストOS400(以下、模擬対象ゲストOS400aとする)、仮想デバイス、H/W障害の種別、H/W障害の内容、デバイスレジスタの値などの情報が含まれる。
H/W障害情報設定部320は、H/W障害生成命令を入力すると、入力したH/W障害生成命令に基づいて、共有メモリ430のH/W障害情報テーブル440の模擬対象ゲストOS400aのH/W障害情報441aに、H/W障害の情報をセットする。
H/W障害情報設定部320は、H/W障害生成命令により指定された模擬対象ゲストOS400aのH/W障害情報441aに、H/W障害の情報をセットする。
そして、H/W障害情報設定部320によるH/W障害情報441aへのH/W障害の情報のセットの直後、バックエンドドライバ220は、模擬対象ゲストOS400aに対して仮想割り込みを上げる。
つまり、H/W障害情報設定部320がH/W障害情報441aへH/W障害の情報の設定を実行するとともに、バックエンドドライバ220が模擬対象ゲストOS400aに対して仮想割り込み信号を送信する。
S103に示すように、共有メモリ430のH/W障害情報テーブル440のH/W障害情報441aに、正常にH/W障害の情報がセットされると書込完了信号がH/W障害情報設定部320に出力される。
S104において、H/W障害情報設定部320は、共有メモリ430から書込完了信号を受信すると、H/W障害生成命令に対応するH/W障害生成応答を仮想マシンモニタ管理用API230に送信する。
S105において、仮想マシンモニタ管理用API230は、H/W障害情報設定部320からH/W障害生成応答を受信すると、H/W障害生成指示に対応するH/W障害生成指示応答をH/W障害操作ツール310に送信する。
H/W障害操作ツール310は、仮想マシンモニタ管理用API230からH/W障害生成指示応答を受信すると、ユーザからのH/W障害生成の指示に対応するH/W障害生成の完了通知を実計算機100のディスプレイなどに出力するとしてもよい。
図6は、H/W障害情報テーブル440のH/W障害情報441がセットされているときのゲストOS400の動作を示したものである。
まず、S200において、バックエンドドライバ220から模擬対象のゲストOS400のフロントエンドドライバ420に仮想割り込みが上がってくる(図5のS102の処理の記載を参照)と、まず、フロントエンドドライバ420内の割込みハンドラから障害判定部450に処理が入る。
S201において、障害判定部450は、共有メモリ430内のH/W障害情報テーブル440を参照し、H/W障害情報441がセットされているかどうかを処理装置により判定する。
ここではH/W障害情報441がセットされているため、障害判定部450は、H/W障害情報テーブル440にH/W障害情報441がセットされていると判定し、H/W障害情報441を読み込む(S202)。
次に、処理は障害模擬部451及び障害通知部452に移る(S203及びS205)。
S203において、障害判定部450は、例えば、読み込んだH/W障害情報441を含む障害模擬信号を障害模擬部451に送信する。
障害模擬部451は、障害判定部450から障害模擬信号を受信すると、障害模擬信号に含まれるH/W障害情報441に基づいて、H/W障害を模擬的に発生させる。
また、障害模擬部451は、ゲストOS400またはゲストAPP500から障害内容の参照があった場合には、障害判定部450から受信した障害模擬信号に含まれるH/W障害情報441を元にH/W障害の内容を模擬し、その内容をゲストOS400またはゲストAPP500へ返答する。この際模擬される内容は、例えばデバイスレジスタの内容などである。
S204において、障害模擬部451は、H/W障害の模擬が完了すると、障害模擬信号に対する障害模擬完了信号を障害判定部450に送信する。
S205において、障害判定部450は、障害模擬部451から障害模擬完了信号を受信すると、ゲストOS400またはゲストAPP500に対してH/W障害の通知を指示する障害通知指示を、障害通知部452に送信する。
S206において、障害通知部452は、障害判定部450から障害通知指示を受信すると、ゲストOS400またはゲストAPP500に対してH/W障害が発生したことを通知する。障害通知部452は、ゲストOS400に備えられた障害通知機能を用いて、H/W障害の通知を実行する。これにより、H/W障害が実際に発生していない場合であっても、ゲストOS400に備えられた障害通知機能が正常に機能するかどうかの検証をすることができる。
ここでは、模擬したH/W障害の通知を受けたゲストOS400またはゲストAPP500の動作については、特に言及しない。ゲストOS400に備えられた障害通知機能によるH/W障害の通知がドライバから上がってくるという構成は、実計算機システムでのH/W障害発生時の障害通知動作と同様である。ゲストOS400の障害通知機能は、例えば、ディスプレイなどにH/W障害メッセージを表示するなどの動作を行う。
S207において、ゲストOS400の障害通知機能は、ディスプレイなどにH/W障害メッセージを表示するなどの障害通知動作が完了したか否かについて、障害通知動作応答を障害通知部452に送信する。例えば、ゲストOS400の障害通知機能が正常に動作しなかった場合などには、ゲストOS400の障害通知機能は、エラーメッセージを表示したり、ゲストOS400をダウンさせるなどして、ゲストOS400の障害通知機能が正常に動作しないことを障害通知動作応答によりユーザに通知するなどしてもよい。
S208において、障害通知部452は、ゲストOS400から障害通知動作応答を受信すると、障害判定部450に対して障害通知動作応答の内容に基づいて、障害判定部450に対して障害通知指示応答を送信する。
障害通知部452は、障害判定部450によりH/W障害情報テーブル440にH/W障害情報441が設定されていると判定された場合に、H/W障害情報441に含まれる障害種別情報と障害内容情報とを含む情報を通知する。
障害判定部450は、障害通知部452からの障害通知指示応答を受信する。障害判定部450は、例えば、受信した障害通知指示応答の内容に基づいて、ユーザに対してH/W障害時の動作についての結果を発行する。
例えば、障害判定部450は、模擬したH/W障害と、その後のゲストOS400あるいはゲストAPP500の動作を対応付けた一覧をディスプレイに表示するなどしてもよい。
図7は、H/W障害情報テーブル440にH/W障害情報441がセットされていないときのゲストOS400の動作を示したものである。仮想計算機システム800において、H/W障害情報テーブル440にH/W障害情報441がセットされていない場合に、デバイスに対してアクセスなどがあった際には、通常動作を実行することになる。
ここでは一例として、ゲストOS400がフロントエンドドライバ420に対してデバイスの操作を指示したときのゲストOS400(仮想計算機システム800)の動作について説明する。
S300において、ゲストOS400は、フロントエンドドライバ420に対して呼び出しがあると、まず障害判定部450に処理が入る。
S301において、障害判定部450は、共有メモリ430内のH/W障害情報テーブル440を参照し、H/W障害情報441がセットされているか否かを処理装置により判定(確認)する。
ここでは、H/W障害情報テーブル440にH/W障害情報441がセットされていないものとする。
S302において、障害判定部450は、H/W障害情報テーブル440にH/W障害情報441がセットされていないと判定する。
すると、障害判定部450は、S303において、処理を通常処理部453へ移す。通常処理部453は、フロントエンドドライバ420の通常の処理を実行する。ここでは、ゲストOS400から指示されたデバイス操作の処理を実行する。
以上のように、本実施の形態に係る仮想計算機システム800のH/W障害模擬方式は、ホストOS型仮想マシンモニタ210を使用した仮想計算機システム800のH/W障害模擬方式であり、以下の(a)〜(e)の手段を備える。また、コンピュータである仮想計算機システム800上において、以下の(a)〜(e)の手順を備えるH/W障害模擬プログラムが実行される。
(a)H/W障害を模擬するためのH/W障害情報テーブル440が格納された共有メモリ430。
(b)H/W障害情報テーブル440を登録、更新するためのH/W障害情報設定部320。
(c)H/W障害情報テーブル440をもとにゲストOS400の準仮想化ドライバ内の処理を分岐させる障害判定部450。
(d)H/W障害情報テーブル440をもとにH/W障害の模擬を行う障害模擬部451。
(e)ゲストOS400またはゲストAPP500に対してH/W障害の通知を行う障害通知部452。
以上のように、本実施の形態に係る仮想計算機システム800のH/W障害模擬方式によれば、フロントエンドドライバ420−バックエンドドライバ220間の共有メモリ430に作成したH/W障害情報テーブル440にH/W障害情報441をセットするかしないかによって、H/W障害の発生の有無をフロントエンドドライバ420に検知させることができる。そして、H/W障害情報テーブル440にH/W障害情報441がセットされていた場合に、障害模擬及び障害通知を行わせることで、準仮想化を適用した仮想環境においてH/W障害の検出及び障害通知を実現できる。これにより、準仮想化技術を適用した仮想化環境上において、H/W障害発生時のゲストOS400またはゲストAPP500の動作確認を行うことが可能となる。
実施の形態2.
本実施の形態では、主に、実施の形態1との差異について説明する。
図8は、本実施の形態に係る仮想計算機システム801のブロック構成図である。
図8は、実施の形態1において説明した図2に対応する図であり、同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合もあるものとする。
本実施の形態では、図1に示す仮想マシンモニタ210がホストOS200に組み込まれた形態のホストOS型仮想マシンモニタ210を用いた仮想マシン環境を対象とする。
本実施の形態に係る仮想計算機システム801は、実施の形態1で説明した仮想計算機システム800の派生形である。実施の形態1で説明した仮想計算機システム800との差分は、H/W障害を生成する際の命令の経路から仮想マシン管理用API230(図2参照)を排したことである。
つまり、H/W障害操作ツール310は、H/W障害情報設定部320に対し、H/W障害生成命令を直接入力する。
図9は、本実施の形態に係る仮想計算機システム801のH/W障害模擬方式の動作を示すシーケンス図である。図9では、ユーザがH/W障害操作ツール310を使用してH/W障害情報テーブル440にH/W障害情報441をセットするまでのシーケンスを示す。
図9に示すように、ユーザがH/W障害操作ツール310に対してH/W障害生成を指示した後のシーケンスが異なる。
S400において、H/W障害操作ツール310は、ユーザにより入力されたH/W障害の内容情報に基づいて、H/W障害情報設定部320に対してH/W障害生成命令を発行(出力)する。
本実施の形態では、H/W障害操作ツール310から仮想マシンモニタ210のH/W障害情報設定部320が直接呼び出される構成となる。
その他の構成、処理シーケンス(S401,S402)は、実施の形態1(S102,S103)と同様である。
また、S405において、H/W障害情報設定部320は、共有メモリ430から書込完了信号を受信すると、H/W障害生成指示に対応するH/W障害生成指示応答をH/W障害操作ツール310に送信する。
本実施の形態に係る仮想計算機システム801のH/W障害模擬方式におけるその後(H/W障害情報設定後)のシーケンスは、実施の形態1と同様である。
以上のように、本実施の形態に係る仮想計算機システム801のH/W障害模擬方式は、ホストOS型仮想マシンモニタ210を使用した仮想計算機システム801のH/W障害模擬方式であり、以下の(a)の手段を備えることを特徴とする。また、コンピュータである仮想計算機システム801上において、以下の(a)の手順を備えるH/W障害模擬プログラムが実行される。
(a)H/W障害操作ツール310が仮想マシンモニタ管理用API230を経由せずに、H/W障害情報設定部320に対して直接H/W障害生成命令を発行する。
以上のように、本実施の形態に係る仮想計算機システム801によれば、フロントエンドドライバ420−バックエンドドライバ220間の共有メモリ430に作成したH/W障害情報テーブル440にH/W障害情報441をセットするかしないかによって、H/W障害の発生の有無をフロントエンドドライバ420に検知させる。そして、H/W障害情報テーブル440にH/W障害情報441がセットされていた場合に障害模擬および障害通知を行わせることで、準仮想化を適用した仮想環境においてH/W障害の検出および障害通知を実現できる。これにより、準仮想化技術を適用した仮想化環境上において、H/W障害発生時のゲストOS400またはゲストAPP500の動作確認を行うことが可能となる。
また、本実施の形態に係る仮想計算機システム801によれば、仮想マシンモニタ管理用API230(実施の形態1参照)を通さず直接バックエンドドライバ220を操作することができる。したがって、仮想マシンモニタ管理用API230分の処理を省略することができ、H/W障害発生の処理を高速化することが可能となる。また、仮想マシン管理用API230を使用する場合に比べ、H/W障害操作ツール310およびH/W障害情報設定部320のインタフェースを自由に設計・実装することが可能となる。
実施の形態3.
本実施の形態では、主に、実施の形態1,2との差異について説明する。
図10は、本実施の形態に係る仮想計算機システム802のブロック構成図である。
図10は、実施の形態1において説明した図2に対応する図であり、同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合もあるものとする。
本実施の形態に係る仮想計算機システム802について図10を用いて説明する。
本実施の形態では、図1に示す仮想マシンモニタ210がホストOS200に組み込まれた形態のホストOS型仮想マシンモニタ210を用いた仮想マシン環境を対象とする。
実施の形態1で説明した仮想計算機システム800との差分は、H/W障害操作ツール310をゲストのアプリケーションとし、H/W障害情報設定部320をフロントエンドドライバ420の内部に配置(搭載)したことである。
H/W障害情報設定部320をフロントエンドドライバ420の内部に配置したことにより、H/W障害情報テーブル440(H/W障害情報441)は共有メモリ430上に置く必要がない。したがって、本実施の形態に係る仮想計算機システム802では、障害情報保持領域480(障害情報記憶領域)をフロントエンドドライバ420内で確保し、H/W障害情報テーブル440(H/W障害情報441)を障害情報保持領域480へ格納する。
図11は、本実施の形態に係る仮想計算機システム802のH/W障害模擬方式の動作を示すシーケンス図である。図11では、ユーザがH/W障害操作ツール310を使用して障害情報保持領域480のH/W障害情報テーブル440にH/W障害情報441を書き込むまでのシーケンスを示す。
S500の処理は、図9のS400の処理と同様である。ただし、本実施の形態では、H/W障害操作ツール310はゲストのアプリケーションであり、H/W障害情報設定部320はフロントエンドドライバ420の内部に配置されている。
S501において、H/W障害情報設定部320は、H/W障害生成命令を受信すると、受信したH/W障害生成命令に基づいて、障害情報保持領域480のH/W障害情報テーブル440にH/W障害情報441をセットする。
S502,S503の処理は、S402,S403の処理と同様である。
本実施の形態に係る仮想計算機システム802のH/W障害模擬方式におけるその後(H/W障害情報設定後)のシーケンスは、実施の形態1と同様である。
以上のように、本実施の形態に係る仮想計算機システム802のH/W障害模擬方式は、ホストOS型仮想マシンモニタ210を使用した仮想計算機システム802のH/W障害模擬方式であり、以下の(a)〜(f)の手段を備える。また、コンピュータである仮想計算機システム802上において、以下の(a)〜(f)の手順を備えるH/W障害模擬プログラムが実行される。
(a)ユーザが入力したH/W障害に関する情報を元に、H/W障害情報設定部320に対してH/W障害生成を指示するH/W障害操作ツール310。
(b)H/W障害を模擬するためのH/W障害情報テーブル440が格納された障害情報保持領域480。
(c)H/W障害情報テーブル440を登録、更新するためのH/W障害情報設定部320。
(d)H/W障害情報テーブル440をもとにゲストOS400の準仮想化ドライバ内の処理を分岐させる障害判定部450。
(e)H/W障害情報テーブル440をもとにH/W障害の模擬を行う障害模擬部451。
(f)ゲストOS400またはゲストAPP500に対してH/W障害の通知を行う障害通知部452。
以上のように、本実施の形態に係る仮想計算機システム802のH/W障害模擬方式によれば、フロントエンドドライバ420内の障害情報保持領域480に作成したH/W障害情報テーブル440にH/W障害情報441をセットするかしないかによって、H/W障害の発生の有無をフロントエンドドライバ420に検知させることができる。そして、H/W障害情報テーブル440にH/W障害情報441がセットされていた場合に障害模擬および障害通知を行わせることで、準仮想化を適用した仮想環境においてH/W障害の検出および障害通知を実現できる。これにより、準仮想化技術を適用した仮想化環境上において、H/W障害発生時のゲストOS400またはゲストAPP500の動作確認を行うことが可能となる。
また、本実施の形態に係る仮想計算機システム802のH/W障害模擬方式によれば、ゲストOS400側のみにH/W障害の模擬・検出・通知の処理を実装するため、ホストOS200側には変更の必要がない。また、ハイパーバイザ型やホストOS型などの仮想マシンモニタの方式によらず使用が可能である。
実施の形態4.
本実施の形態では、主に、実施の形態3との差異について説明する。
図12は、本実施の形態に係る仮想計算機システム803のブロック構成図である。
図12は、実施の形態3において説明した図10に対応する図であり、同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合もあるものとする。
本実施の形態では、図1に示す仮想マシンモニタ210がホストOS200に組み込まれた形態のホストOS型仮想マシンモニタ210を用いた仮想マシン環境を対象とする。
本実施の形態に係る仮想計算機システム803は、実施の形態3で説明した仮想計算機システム802の派生形である。
実施の形態3で説明した仮想計算機システム802との差分は、H/W障害情報設定部320がフロントエンドドライバ420ではなく、フロントエンドドライバ420とは別のカーネルモジュールであるH/W障害設定モジュール490(障害設定モジュール)に配置したことである。
その他の構成は、実施の形態3で説明したものと同様である。
図13は、本実施の形態に係る仮想計算機システム803のH/W障害模擬方式の動作を示すシーケンス図である。図13では、ユーザがH/W障害操作ツール310を使用してH/W障害情報テーブル440にH/W障害情報441を書き込むまでのシーケンスを示す。
図13は、H/W障害操作ツール310に対してH/W障害生成の指示を与えてから、障害情報保持領域480にH/W障害情報441が設定されるまでのシーケンスを示すものである。
S600において、H/W障害操作ツール310は、H/W障害情報設定モジュール490に対してH/W障害生成の命令を発行する。
S601において、H/W障害情報設定モジュール490のH/W障害情報設定部320は、フロントエンドドライバ内の障害情報保持領域480に対してH/W障害情報を設定する。
このように、図13と、実施の形態3で説明した図11との差異は、H/W障害情報設定部320はH/W障害情報設定モジュール490内に配置されている点である。これ以外の処理(S600〜S603)は、実施の形態3で説明したS500〜S503と同様である。
本実施の形態に係る仮想計算機システム803のH/W障害模擬方式におけるその後(H/W障害情報設定後)のシーケンスは、実施の形態1〜3と同様である。
以上のように、本実施の形態に係る仮想計算機システム803のH/W障害模擬方式は、ホストOS型仮想マシンモニタ210を使用した仮想計算機システム803のH/W障害模擬方式であり、以下の(a)〜(c)の手段を備えることを特徴とする。また、コンピュータである仮想計算機システム803上において、以下の(a)〜(c)の手順を備えるH/W障害模擬プログラムが実行される。
(a)ゲストOS400に、H/W障害情報設定部320を含むH/W障害情報設定モジュール490がインストールされている。
(b)H/W障害操作ツール310が、ユーザが入力したH/W障害に関する情報を元に、H/W障害設定モジュール490内のH/W障害情報設定部320に対してH/W障害の生成を指示する。
(c)H/W障害設定モジュール490内のH/W障害情報設定部320が、フロントエンドドライバ420内の障害情報保持領域480に対してH/W障害情報441をセットする。
以上のように、本実施の形態に係る仮想計算機システム803のH/W障害模擬方式によれば、フロントエンドドライバ420内の障害情報保持領域480に作成したH/W障害情報テーブル440にH/W障害情報441をセットするかしないかによって、H/W障害の発生の有無をフロントエンドドライバ420に検知させることができる。そして、H/W障害情報テーブル440にH/W障害情報441がセットされていた場合に、障害模擬および障害通知を行わせることで、準仮想化を適用した仮想環境においてH/W障害の検出および障害通知を実現できる。これにより、準仮想化技術を適用した仮想化環境上において、H/W障害発生時のゲストOS400またはゲストAPP500の動作確認を行うことが可能となる。
また、本実施の形態に係る仮想計算機システム803のH/W障害模擬方式によれば、ゲストOS400側のみにH/W障害の模擬・検出・通知の処理を実装するため、ホストOS200側には変更の必要がない。また、ベアメタル型やホストOS型などの仮想マシンモニタ210の方式によらずに使用が可能である。
さらに、本実施の形態に係る仮想計算機システム803のH/W障害模擬方式によれば、H/W障害情報設定部320をフロントエンドドライバ420とは別のゲストOS400のカーネルモジュールとして分離したことにより、フロントエンドドライバ420の処理負荷の低減が可能となる。また、フロントエンドドライバ420にはブロックデバイス用、ネットワークデバイス用など複数の種類が存在する。本実施の形態を採用することで、各デバイス用のフロントエンドドライバ420で使用するH/W障害情報設定部320を、APIとして共用することができるようになるため、各フロントエンドドライバの実装を簡易化・容易化することが可能である。
実施の形態5.
本実施の形態では、主に、実施の形態1〜4との差異について説明する。
図14は、本実施の形態に係る仮想計算機システム804のシステム構成を示す一例を示す図である。図14を用いて、本実施の形態に係る仮想計算機システム804のシステム構成について説明する。
本実施の形態では、実施の形態1〜4において説明した構成と同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合もあるものとする。
図14は、準仮想化技術を用いた仮想計算機システム804の構成例を示したものである。図14に示す準仮想化技術を用いた仮想計算機システム804は、ホストOS組み込み型の仮想マシンモニタ210(実施の形態1で説明したもの)ではなく、ホストOS200上でアプリケーションとして動作するホストOS型仮想マシンモニタ210aを用いた構成である。
実計算機100は、仮想計算機システム804を動作させるための物理ハードウェアであり、CPU、メモリ、割込みコントローラなどを備える。
ホストOS200は、実計算機100上で動作するソフトウェアであり、CPUやメモリなどのハードウェア資源を抽象化してアプリケーションに提供する。
仮想マシンモニタ210aは、実計算機100上で複数のOSを動作させるためのソフトウェアであり、仮想計算機300を作成しゲストOS400に提供する。ホストOS型仮想マシンモニタ210aとは、実計算機100上でホストOS200が動作しており、ホストOS200上で仮想マシンモニタ210aおよびゲストOS400が動作するものである。
特に、本実施の形態では、仮想マシンモニタ210aがホストOS200上のアプリケーションとして動作する仮想計算機システム804を例として示す。
本実施の形態においても、仮想マシンモニタ210aおよびゲストOS400には準仮想化技術が適用されているものとする。
準仮想化技術については、実施の形態1にて説明したため、ここでは、その説明を省略する。
図15は、本実施の形態に係る仮想計算機システム804のブロック構成を示す図である。
図15は、実施の形態2において説明した図8に対応する図であり、実施の形態2との差分は、仮想マシンモニタ210aがホストOS200上で動作するアプリケーションとなっている点である。仮想マシンモニタ210aは、バックエンドドライバ220aを備え、バックエンドドライバ220aには、H/W障害情報設定部320が搭載されている。バックエンドドライバ220a及びH/W障害情報設定部320の機能構成については、実施の形態2と同様である。また、その他の構成についても実施の形態2と同様である。
図16は、本実施の形態に係る仮想計算機システム804のH/W障害模擬方式の動作を示すシーケンス図である。
図16に、H/W障害操作ツール310に対して障害生成の指示を与えてから共有メモリ430にH/W障害情報441がセットされるまでのシーケンスを示す。
まず、S700において、H/W障害操作ツール310に対して障害生成の指示を与えると、H/W障害操作ツール310から仮想マシンモニタ210aのH/W障害情報設定部320に対して、生成するH/W障害についての内容が指示される。
この際のプロセス間通信の方法については特に言及しないが、例えばメッセージパッシングやシグナル、ソケット通信などを利用する。
S701において、H/W障害生成の指示を受けたH/W障害情報設定部320は、共有メモリ430に対してH/W障害情報441を設定し、ゲストOS400に対して仮想割り込みを上げる。
以降のシーケンスは、実施の形態1と同様であり、図6及び図7に示したシーケンスとなる。
また、S702〜S703のシーケンスは、図9に示すS402〜S403のシーケンスと同様である。
以上のように、本実施の形態に係る仮想計算機システム804のH/W障害模擬方式は、仮想マシンモニタ210aがホストOS200のアプリケーションとして動作するホストOS型仮想マシンモニタ210aを使用した仮想計算機システム804のH/W障害模擬方式である。仮想計算機システム804のH/W障害模擬方式は、以下の(a)〜(e)の手段を備える。また、コンピュータである仮想計算機システム804上において、以下の(a)〜(e)の手順を備えるH/W障害模擬プログラムが実行される。
(a)H/W障害を模擬するためのH/W障害情報テーブル440が格納された共有メモリ430。
(b)H/W障害情報テーブル440を登録、更新するためのH/W障害情報設定部320。
(c)H/W障害情報テーブル440をもとにゲストOS400の準仮想化ドライバ内の処理を分岐させる障害判定部450。
(d)H/W障害情報テーブル440をもとにH/W障害の模擬を行う障害模擬部451。
(e)ゲストOS400またはゲストAPP500に対してH/W障害の通知を行う障害通知部452。
実施の形態1〜4では、ホストOS200に仮想マシンモニタ210が組み込まれた仮想化環境を対象としていたのに対し、本実施の形態では、以上のような構成とすることで、仮想マシンモニタ210aがホストOS200上のアプリケーションとして動作する仮想化環境においても、準仮想化技術を適用したゲストOS400上においてH/W障害の検出および通知が可能となる。これによって、準仮想化技術を適用した仮想化環境上において、H/W障害発生時のゲストOS400またはゲストAPP500の動作確認を行うことが可能となる。
実施の形態6.
本実施の形態では、主に、実施の形態1〜5との差異について説明する。
図17は、本実施の形態に係る仮想計算機システム805のシステム構成を示す一例を示す図である。図17を用いて、本実施の形態に係る仮想計算機システム805のシステム構成について説明する。
本実施の形態では、実施の形態1〜5において説明した構成と同様の機能を有する構成部については、同一の符号を付し、その説明を省略する場合もあるものとする。
本実施の形態に係る仮想計算機システム805は、ハイパーバイザ型仮想マシンモニタ210bを用いた構成である。
実計算機100は、仮想計算機システム805を動作させるための物理ハードウェアであり、CPU、メモリ、割込みコントローラなどを備える。
仮想マシンモニタ210bは、実計算機上で複数のOSを動作させるためのソフトウェアであり、仮想計算機300を作成しゲストOS400に提供する。
ハイパーバイザ型仮想マシンモニタ210bとは、実計算機100上で直接仮想マシンモニタが動作する形態の仮想マシンモニタ210bである。仮想マシンモニタ210bの模擬した仮想計算機300の上でゲストOS400が動作する。
本実施の形態においても、仮想マシンモニタ210bおよびゲストOS400には準仮想化技術が適用されているものとする。
準仮想化技術については、実施の形態1にて説明したため、ここでは、その説明を省略する。
図18は、本実施の形態に係る仮想計算機システム805のブロック構成図である。
本実施の形態に係る仮想計算機システム805は、上述したハイパーバイザ型仮想マシンモニタ210bを用いたシステムである。
図18は、実施の形態2において説明した図8に対応する図であり、実施の形態2との差分は、仮想マシンモニタ210bがハイパーバイザ型仮想マシンモニタである点である。仮想マシンモニタ210bは、バックエンドドライバ220bを備え、バックエンドドライバ220bには、H/W障害情報設定部320が搭載されている。バックエンドドライバ220a及びH/W障害情報設定部320の機能構成については、実施の形態2と同様である。
また、さらに実施の形態2と異なる点としては、本実施の形態に係る仮想計算機システム805は、試験対象とするゲストOS400の他に、H/W障害操作ツール310を使用してH/W障害を管理するためのゲストOSu400uを仮想マシンモニタ210b上に配置する点である。
ゲストOSu400uには、アプリケーションとしてH/W障害操作ツール310を配置し、H/W障害操作用のユーザインタフェースとする。
その他の構成については、ホストOS200が存在しないこと以外は実施の形態2と同様である。
図19は、本実施の形態に係る仮想計算機システム805のH/W障害模擬方式の動作を示すシーケンス図である。
図19に、H/W障害操作ツール310に対して障害生成の指示を与えてから共有メモリ430にH/W障害情報441がセットされるまでのシーケンスを示す。
まず、S800において、H/W障害操作ツール310に対して障害生成の指示を与えると、H/W障害操作ツール310から仮想マシンモニタ210bのH/W障害情報設定部320に対して、生成するH/W障害についての内容が指示される。
この際のゲストOS−ゲストOS1間のOS間通信の方法については特に言及しないが、例えば、パケット通信などを利用する。
S801において、H/W障害生成の指示を受けたH/W障害情報設定部320は、共有メモリ430に対してH/W障害情報441を設定し、ゲストOS400に対して仮想割り込みを上げる。
以降のシーケンスは、実施の形態1と同様であり、図6及び図7に示したシーケンスとなる。
また、S802〜S803のシーケンスは、図9に示すS402〜S403のシーケンスと同様である。
以上のように、本実施の形態に係る仮想計算機システム804のH/W障害模擬方式は、ハイパーバイザ型仮想マシンモニタ210bを使用した仮想計算機システム805のH/W障害模擬方式である。仮想計算機システム805のH/W障害模擬方式は、以下の(a)〜(e)の手段を備える。また、コンピュータである仮想計算機システム805上において、以下の(a)〜(e)の手順を備えるH/W障害模擬プログラムが実行される。
(a)H/W障害を模擬するためのH/W障害情報テーブル440が格納された共有メモリ430。
(b)H/W障害情報テーブル440を登録、更新するためのH/W障害情報設定部320。
(c)H/W障害情報テーブル440をもとにゲストOS400の準仮想化ドライバ内の処理を分岐させる障害判定部450。
(d)H/W障害情報テーブル440をもとにH/W障害の模擬を行う障害模擬部451。
(e)ゲストOS400またはゲストAPP500に対してH/W障害の通知を行う障害通知部452。
以上のように、本実施の形態に係る仮想計算機システム805のH/W障害模擬方式によれば、実計算機100上で直接仮想マシンモニタ210bが動作する形態の仮想化環境においても、準仮想化技術を適用したゲストOS400上においてH/W障害の検出および通知が可能となる。
これによって、準仮想化技術を適用したハイパーバイザ型仮想マシンモニタ210bを用いた仮想化環境上においても、H/W障害発生時のゲストOS400またはゲストAPP500の動作確認を行うことが可能となる。
実施の形態1〜6に係る仮想計算機システム(仮想計算機障害模擬システム、仮想計算機障害模擬方法及び仮想計算機障害模擬プログラム)は、ゲストOS及びホストOSから参照可能な共有メモリにH/W障害に関する情報を格納し、ホストOS側から当該共有メモリに設定したH/W障害に関する情報に応じて、ゲストOS上で当該H/W障害を検出・通知を行うという構成を備えた。このような構成により、準仮想化技術を適用した仮想計算機環境において、仮想マシンモニタ内にて模擬したハードウェア障害をゲストOSのデバイスドライバから検出可能とし、ゲストOSのデバイスドライバは該ハードウェア障害に関する通知をゲストOSまたはゲストアプリケーションに対して行うことが可能となる。これによって、準仮想化技術を適用した仮想計算機環境上において、ハードウェア障害が発生した際のゲストアプリケーションの動作確認を行うことが可能となる。
また、実施の形態1〜6に係る仮想計算機システム(仮想計算機障害模擬システム、仮想計算機障害模擬方法及び仮想計算機障害模擬プログラム)は、準仮想化方式用のデバイスドライバを備えた仮想化環境であり、障害模擬の指示を与える手段を持つ構成であれば、仮想化環境の構築方式の違いによらず実現できる。例えば、ホストOS組み込み型の仮想マシンモニタだけではなく、ホストOSをアプリケーションとして動作させる種類の仮想マシンモニタや、ハードウェア上で直接動作させるハイパーバイザ型の仮想マシンモニタにも適用可能である。
上記実施の形態1〜6の説明では、例えば、「H/W障害情報設定部」、「障害判定部」、「障害模擬部」、「障害通知部」、「通常処理部」がそれぞれ独立した機能ブロックとして構成されている。しかし、これに限られるわけではなく、例えば、「障害判定部」、「障害模擬部」、「障害通知部」をひとつの機能ブロックで実現し、「通常処理部」をひとつの機能ブロックで実現しても良い。あるいは、これらの機能ブロックを、他のどのような組み合わせで構成しても構わない。
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、2つ以上を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
100 実計算機、200 ホストOS、210,210a,210b 仮想マシンモニタ、220 バックエンドドライバ、230 仮想マシンモニタ管理用API、300 仮想計算機、310 H/W障害操作ツール、320 H/W障害情報設定部、400 ゲストOS、420 フロントエンドドライバ、430 共有メモリ、440 H/W障害情報テーブル、441 H/W障害情報、450 障害判定部、451 障害模擬部、452 障害通知部、453 通常処理部、500 ゲストAPP、800,801,802,803,804,805 仮想計算機システム、901 LCD、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 HDD、921 オペレーティングシステム、922 ウィンドウシステム、923 プログラム群、924 ファイル群。

Claims (11)

  1. 仮想計算機モニタにより準仮想化方式を用いて実現されるゲスト計算機であって、前記仮想計算機モニタにより仮想ハードウェアが割り当てられるゲスト計算機が動作する仮想計算機システムにおいて、
    前記仮想ハードウェアの障害の模擬を要求する障害模擬要求であって、模擬が要求される障害の情報が定義された障害定義情報を含む障害模擬要求を入力する障害模擬要求入力部を備え、
    前記ゲスト計算機は、
    前記仮想ハードウェアを操作するゲスト側ドライバを備え、
    前記ゲスト側ドライバは、
    記憶装置に記憶される障害情報テーブルであって、前記障害模擬要求入力部により入力された前記障害模擬要求に含まれる前記障害定義情報が設定される障害情報テーブルと、
    前記障害情報テーブルに前記障害定義情報が設定されているか否かを処理装置により判定する障害判定部と、
    前記障害判定部により前記障害情報テーブルに前記障害定義情報が設定されていると判定された場合に、前記障害情報テーブルに設定されている前記障害定義情報に基づいて、前記仮想ハードウェアの障害を模擬する障害模擬部と
    を備えることを特徴とする仮想計算機システム。
  2. 前記障害模擬要求入力部は、
    前記障害定義情報として、障害の種別を特定する障害種別情報と、障害の内容を特定する障害内容情報とを含み、
    前記障害模擬部は、
    前記障害情報テーブルに設定されている前記障害定義情報に含まれる前記障害種別情報と前記障害内容情報とにより特定される障害を模擬し、
    前記ゲスト側ドライバは、さらに、
    前記障害判定部により前記障害情報テーブルに前記障害定義情報が設定されていると判定された場合に、前記障害定義情報に含まれる前記障害種別情報と前記障害内容情報とを含む情報を通知する障害通知部を備える
    ことを特徴とする請求項1に記載の仮想計算機システム。
  3. 前記仮想計算機システムは、
    前記障害模擬要求入力部により入力された前記障害模擬要求に含まれる前記障害定義情報を入力し、入力した前記障害定義情報を前記障害情報テーブルに書き込む障害情報設定部を備えることを特徴とする請求項1または2に記載の仮想計算機システム。
  4. 前記ゲスト側ドライバは、
    前記仮想計算機モニタと共有する共有記憶領域を備え、
    前記障害情報テーブルは、
    前記共有記憶領域に記憶され、
    前記仮想計算機モニタは、
    前記ゲスト計算機に割り当てた前記仮想ハードウェアを操作するとともに前記障害情報設定部が搭載されたモニタ側ドライバを備え、
    前記仮想計算機システムは、さらに、
    前記仮想計算機モニタが組み込まれたホスト計算機を備え、
    前記ホスト計算機は、
    前記障害模擬要求入力部から前記障害模擬要求を入力し、入力した前記障害模擬要求を前記仮想計算機モニタの前記モニタ側ドライバに搭載された前記障害情報設定部に入力し、
    前記障害情報設定部は、
    入力した前記障害模擬要求に含まれる前記障害定義情報を、前記ゲスト側ドライバの前記共有記憶領域に記憶されている前記障害情報テーブルに設定する
    ことを特徴とする請求項3に記載の仮想計算機システム。
  5. 前記ホスト計算機は、
    前記障害模擬要求入力部から入力された前記障害模擬要求を前記仮想計算機モニタに入力するインタフェース部を備え、
    前記障害情報設定部は、
    前記障害模擬要求入力部から入力された前記障害模擬要求を前記ホスト計算機の前記インタフェース部を介して入力する
    ことを特徴とする請求項4に記載の仮想計算機システム。
  6. 前記ゲスト側ドライバは、
    前記障害情報テーブルが記憶される障害情報記憶領域を備えるとともに、前記障害情報設定部を搭載し、
    前記障害情報設定部は、
    前記障害模擬要求入力部から前記障害模擬要求を入力し、入力した前記障害模擬要求に含まれる前記障害定義情報を、前記障害情報記憶領域に記憶された前記障害情報テーブルに設定する
    ことを特徴とする請求項3に記載の仮想計算機システム。
  7. 前記ゲスト計算機は、
    前記障害情報設定部を備える障害設定モジュールを備え、
    前記ゲスト側ドライバは、
    前記障害情報テーブルが記憶される障害情報記憶領域を備え、
    前記障害情報設定部は、
    前記障害模擬要求入力部から前記障害模擬要求を入力し、入力した前記障害模擬要求に含まれる前記障害定義情報を、前記ゲスト側ドライバの備える前記障害情報テーブルに設定する
    ことを特徴とする請求項3に記載の仮想計算機システム。
  8. 前記ゲスト側ドライバは、
    前記仮想計算機モニタと共有する共有記憶領域を備え、
    前記障害情報テーブルは、
    前記共有記憶領域に記憶され、
    前記仮想計算機モニタは、
    前記ゲスト計算機に割り当てた前記仮想ハードウェアを操作するとともに前記障害情報設定部が搭載されたモニタ側ドライバを備え、
    前記仮想計算機システムは、さらに、
    前記仮想計算機モニタと前記障害模擬要求入力部とがアプリケーションプログラムとして動作するホスト計算機を備え、
    前記ホスト計算機は、
    前記障害模擬要求入力部により入力した前記障害模擬要求を前記仮想計算機モニタに入力し、
    前記仮想計算機モニタの前記モニタ側ドライバに搭載された前記障害情報設定部は、
    前記ホスト計算機から入力した前記障害模擬要求に含まれる前記障害定義情報を、前記ゲスト側ドライバの前記共有記憶領域に記憶されている前記障害情報テーブルに設定する
    ことを特徴とする請求項3に記載の仮想計算機システム。
  9. 前記ゲスト側ドライバは、
    前記仮想計算機モニタと共有する共有記憶領域を備え、
    前記障害情報テーブルは、前記共有記憶領域に記憶され、
    前記仮想計算機モニタは、
    前記ゲスト計算機に割り当てた前記仮想ハードウェアを操作するとともに前記障害情報設定部が搭載されたモニタ側ドライバを備え、
    前記仮想計算機システムは、さらに、
    前記障害模擬要求入力部を動作させる入力用計算機を備え、
    前記入力用計算機は、
    前記障害模擬要求入力部により前記障害模擬要求を入力し、入力した前記障害模擬要求を前記仮想計算機モニタに入力し、
    前記仮想計算機モニタの前記モニタ側ドライバに搭載された前記障害情報設定部は、
    前記入力用計算機から入力した前記障害模擬要求に含まれる前記障害定義情報を、前記ゲスト側ドライバの前記共有記憶領域に記憶されている前記障害情報テーブルに設定する
    ことを特徴とする請求項3に記載の仮想計算機システム。
  10. 仮想計算機モニタにより準仮想化方式を用いて実現されるゲスト計算機であって、前記仮想計算機モニタにより仮想ハードウェアが割り当てられるゲスト計算機が動作する仮想計算機システムの障害模擬方法において、
    障害模擬要求入力部が、前記仮想ハードウェアの障害の模擬を要求する障害模擬要求であって、模擬が要求される障害の情報が定義された障害定義情報を含む障害模擬要求を入力し、
    障害情報設定部が、前記障害模擬要求入力部により入力された前記障害模擬要求に含まれる前記障害定義情報を入力し、入力した前記障害定義情報を、前記ゲスト計算機の備える障害情報テーブルに設定し、
    障害判定部が、前記障害情報テーブルに前記障害定義情報が設定されているか否かを判定し、
    障害模擬部が、前記障害判定部により前記障害情報テーブルに前記障害定義情報が設定されていると判定された場合に、前記障害情報テーブルに設定されている前記障害定義情報に基づいて、前記仮想ハードウェアの障害を模擬する
    ことを特徴とする仮想計算機システムの障害模擬方法。
  11. 仮想計算機モニタにより準仮想化方式を用いて実現されるゲスト計算機であって、前記仮想計算機モニタにより仮想ハードウェアが割り当てられるゲスト計算機が動作する仮想計算機システムが搭載されたコンピュータの障害模擬プログラムにおいて、
    障害模擬要求入力部が、前記仮想ハードウェアの障害の模擬を要求する障害模擬要求であって、模擬が要求される障害の情報が定義された障害定義情報を含む障害模擬要求を入力する障害模擬要求入力処理と、
    障害情報設定部が、前記障害模擬要求入力処理により入力された前記障害模擬要求に含まれる前記障害定義情報を入力し、入力した前記障害定義情報を、前記ゲスト計算機の備える障害情報テーブルに設定する障害情報設定処理と、
    障害判定部が、前記障害情報テーブルに前記障害定義情報が設定されているか否かを判定する障害判定処理と、
    障害模擬部が、前記障害判定処理により前記障害情報テーブルに前記障害定義情報が設定されていると判定された場合に、前記障害情報テーブルに設定されている前記障害定義情報に基づいて、前記仮想ハードウェアの障害を模擬する障害模擬処理と
    を前記仮想計算機システムが搭載されたコンピュータに実行させることを特徴とする障害模擬プログラム。
JP2013038796A 2013-02-28 2013-02-28 仮想計算機システム及び仮想計算機システムの障害模擬方法及び障害模擬プログラム Expired - Fee Related JP6045397B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013038796A JP6045397B2 (ja) 2013-02-28 2013-02-28 仮想計算機システム及び仮想計算機システムの障害模擬方法及び障害模擬プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013038796A JP6045397B2 (ja) 2013-02-28 2013-02-28 仮想計算機システム及び仮想計算機システムの障害模擬方法及び障害模擬プログラム

Publications (2)

Publication Number Publication Date
JP2014167683A true JP2014167683A (ja) 2014-09-11
JP6045397B2 JP6045397B2 (ja) 2016-12-14

Family

ID=51617348

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013038796A Expired - Fee Related JP6045397B2 (ja) 2013-02-28 2013-02-28 仮想計算機システム及び仮想計算機システムの障害模擬方法及び障害模擬プログラム

Country Status (1)

Country Link
JP (1) JP6045397B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021533458A (ja) * 2018-12-03 2021-12-02 セールスフォース ドット コム インコーポレイティッド 自動動作管理のためのテストエンジン

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011100300A (ja) * 2009-11-06 2011-05-19 Mitsubishi Electric Corp 計算機装置及び情報処理方法及びプログラム
JP2011227700A (ja) * 2010-04-20 2011-11-10 Mitsubishi Electric Corp 周辺機器障害模擬システム、周辺機器障害模擬方法および周辺機器障害模擬プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011100300A (ja) * 2009-11-06 2011-05-19 Mitsubishi Electric Corp 計算機装置及び情報処理方法及びプログラム
JP2011227700A (ja) * 2010-04-20 2011-11-10 Mitsubishi Electric Corp 周辺機器障害模擬システム、周辺機器障害模擬方法および周辺機器障害模擬プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021533458A (ja) * 2018-12-03 2021-12-02 セールスフォース ドット コム インコーポレイティッド 自動動作管理のためのテストエンジン
JP7090797B2 (ja) 2018-12-03 2022-06-24 セールスフォース ドット コム インコーポレイティッド 自動動作管理のためのテストエンジン

Also Published As

Publication number Publication date
JP6045397B2 (ja) 2016-12-14

Similar Documents

Publication Publication Date Title
US9921940B2 (en) Creating a software performance testing environment on a virtual machine system
CN107209681B (zh) 一种存储设备访问方法、装置和系统
US8683589B2 (en) Providing protection against unauthorized network access
US8046641B2 (en) Managing paging I/O errors during hypervisor page fault processing
JP4434235B2 (ja) 計算機システムまたは計算機システムの性能管理方法
US8914684B2 (en) Method and system for throttling log messages for multiple entities
US8943284B2 (en) Systems and methods for integrating compute resources in a storage area network
JP2020091835A (ja) 情報を処理するための方法及び装置
CN111736945B (zh) 基于智能网卡的虚拟机热迁移方法、装置、设备及介质
JP2011154697A (ja) Raidと関連するアプリケーションの実行のための方法およびシステム
US20150089011A1 (en) Event Driven Remote Direct Memory Access Snapshots
JP2013073405A (ja) 監視装置、制御方法及び制御プログラム
CN101599005A (zh) 分配存储设备的逻辑存储实体的方法和系统
US11734430B2 (en) Configuration of a memory controller for copy-on-write with a resource controller
US20180157605A1 (en) Configuration of a memory controller for copy-on-write
US20160259578A1 (en) Apparatus and method for detecting performance deterioration in a virtualization system
US20150039834A1 (en) Sharing local cache from a failover node
JP6045397B2 (ja) 仮想計算機システム及び仮想計算機システムの障害模擬方法及び障害模擬プログラム
JP6356822B2 (ja) 計算機システム及びメモリダンプ方法
JP5419639B2 (ja) 計算機装置及び情報処理方法及びプログラム
US20150277945A1 (en) Virtual computer system
WO2018173300A1 (ja) I/o制御方法およびi/o制御システム
JP5832408B2 (ja) 仮想計算機システム及びその制御方法
TWI813283B (zh) 用於使用緩衝概要群組之系統間處理之電腦程式產品、電腦系統及電腦實施方法
JP2012173804A (ja) 共有メモリデバッグ装置及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160907

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161115

R150 Certificate of patent or registration of utility model

Ref document number: 6045397

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees