説明

仮想計算機を使用したクライアントシステム、仮想計算機を使用したクライアント制御方法及びそのプログラム

【課題】複数の使用者が個々に使用する複数のクライアントを有するクライアントシステムにおいて、電力消費を低減する。
【解決手段】入力ユニット(キーボード13、マウス14)と、デイスプレイ(12)を、サーバ(10)のUSBポートに、USBデバイスとして、接続し、且つサーバ(10)を仮想計算機で構成する。仮想計算機のホストOS(20)が、各入力ユニット、デイスプレイと対応するゲストOSを認識するテーブル(26)を使用して、各入力ユニットとデイスプレイを、サーバ(10)の対応するゲストOS(22−1〜22−4)を操作させる。このため、利用者のクライアントで、CPU,メモリが不要となり、省エネルギー化に寄与する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想計算機を使用したクライアントシステム、仮想計算機を使用したクライアント制御方法及びそのプログラムに関する。
【背景技術】
【0002】
近年のパーソナルコンピュータの普及に伴い、アプリケーションソフトのインストールやバージョンアップや、ハードウェアのメンテナンス等の運用、管理コストが無視できない。このような問題を解決するため、シンクライアントという技術が提案されている。
【0003】
図20は、従来のシンクライアントの説明図である。図20に示すように、サーバ200とシンクライアントPC(Personal Computer)100とを、通信ユニットであるNIC(Network Interface Card)110,120で接続する。そして、クライアントPC100は、キーボード、マウス、ディスプレイ(VGA:Video Graphics Array 画面)と、CPU、メモリのみを持ち、サーバ200が処理を行い、サーバ200での処理結果をクライアントPC100に表示するものである。
【0004】
シンクライアントでは、クライアントPC100で操作した内容が、NIC110,120を通じてサーバ200に送られる。サーバ200は、CPU、メモリ、デイスク装置を有し、所定のアプリケーションを実行し、処理し、その結果をクライアントPC100に返送する。クライアントPCでは、サーバ200から送られた処理結果が表示される。サーバ200は、実サーバであっても、仮想計算機で分割した仮想マシンのサーバのどちらでもかまわない。
【0005】
このシンクライアントでは、クライアントPC100に、キーボード、マウス、VGAと、NIC110を処理するための処理能力が必要であるため、CPUとメモリが搭載されている。しかしながら、他の処理はそれ程必要ないため、CPU、メモリとも高性能なものを使用しなくても良い。
【0006】
このため、シンクライアントを用いることで、クライアントPC100では処理を行わないため、PCクライアント100へのアプリケーションのインストール、アップデート等が不要となり、且つ省電力なPCでも十分に使用可能である。又、クライタントPC100でデータを保持しないため、情報漏洩の危険がない。
【0007】
又、仮想計算機システムは、実計算機システム200に、仮想計算機モニター(仮想化ソフトウェア)と、ホストOS(Operating System)と、複数の仮想マシン(ゲストOS(Operating System))とを搭載する。ホストOSは、ゲストOSを管理するため設けられる。仮想計算機モニターは、ホストOS、ゲストOSを、仮想化制御する。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2008−052407号公報(図1乃至図7)
【特許文献2】特開平11−134117号公報
【非特許文献】
【0009】
【非特許文献1】「シンクライアント」(thin client)(IT用語辞典、http://e-words.jp/w/E382B7E383B3E382AFE383A9E382A4E382A2E383B3E38388.html,2009年8月24日閲覧)
【発明の概要】
【発明が解決しようとする課題】
【0010】
従来の構成では、消費電力の低いPCでも構成可能であるので、全体的に見たら省エネルギー化できる。しかしながら、従来のシンクライアントでは、クライアントPC側に、キーボード、マウス、VGAとNIC110を処理するための処理能力が必要であるため、CPUとメモリの搭載が必要である。
【0011】
通常、PCの電力消費は、CPUが約30%、電源が約40%と言われているため、省エネルギー化に限度があり、更なる電力消費の低減が困難である。又、各クライアントにCPUとメモリを必要とするため、事務所等の複数のPCを利用するシステムでは、更なるコスト低減も困難である。
【0012】
従って、本発明の目的は、仮想化技術を使用して、より省エネルギー化を可能とする仮想計算機を使用したクライアントシステム、仮想計算機を使用したクライアント制御方法及びそのプログラムを提供することにある。
【課題を解決するための手段】
【0013】
この目的の達成のため、クライアントシステムは、CPUとメモリとバスと複数のバスアダプタとを有し、仮想マシンを動作する複数のゲストOSをホストOSで管理するとともに、仮想計算機モニタが、少なくとも前記CPU,前記メモリを有する物理資源を仮想資源に分割し、分割した仮想資源を単位として前記ゲストOSに、前記物理資源を割り当てる仮想計算機として動作する物理サーバと、前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する、複数の入力ユニットと、複数の出力ユニットとを有し、前記物理サーバの前記ホストOSは、前記複数のゲストOSの各々に、前記ゲストOSを使用する前記入力ユニットと前記出力ユニットの前記バス上での識別番号を格納する構成定義テーブルを有し、前記ホストOSが、前記構成定義テーブルを用いて前記入力ユニットからの入力を対応する前記ゲストOSに通知し、前記ゲストOSの処理結果を対応する前記出力ユニットに出力する。
【0014】
又、この目的の達成のため、クライアント制御方法は、CPUとメモリとバスと複数のバスアダプタとを有する物理サーバを、仮想マシンを動作する複数のゲストOSをホストOSで管理するとともに、仮想計算機モニタが、少なくとも前記CPU,前記メモリを有する物理資源を仮想資源に分割し、分割した仮想資源を単位として前記ゲストOSに前記物理資源を割り当てる仮想計算機として動作するステップと、前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する、複数の入力ユニットからの入力を、前記ゲストOSを使用する前記入力ユニットと出力ユニットの前記バス上での識別番号を格納する構成定義テーブルを参照して、対応する前記ゲストOSに通知するステップと、前記ゲストOSの処理結果を、前記構成定義テーブルを参照して、前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する複数の出力ユニットの内、前記ゲストOSに対応する前記出力ユニットに出力するステップを有する。
【0015】
更に、この目的の達成のため、プログラムは、CPUとメモリとバスと複数のバスアダプタとを有する物理サーバを、仮想マシンを動作する複数のゲストOSをホストOSで管理するとともに、仮想計算機モニタが、少なくとも前記CPU,前記メモリを有する物理資源を仮想資源に分割し、分割した仮想資源を単位として前記ゲストOSに前記物理資源を割り当てる仮想計算機として動作するステップと、前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する、複数の入力ユニットからの入力を、前記ゲストOSを使用する前記入力ユニットと出力ユニットの前記バス上での識別番号を格納する構成定義テーブルを参照して、対応する前記ゲストOSに通知するステップと、前記ゲストOSの処理結果を前記構成定義テーブルを参照して、前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する複数の表示ユニットの内、前記ゲストOSに対応する前記出力ユニットに出力するステップとを、コンピュータに実行させる。
【発明の効果】
【0016】
入力ユニット(キーボード、マウス)と、デイスプレイを、仮想計算機として動作するサーバのバスポートに、バスデバイスとして接続し、ホストOSが、各入力ユニットやデイスプレイと対応するゲストOSを認識するため、各入力ユニットとデイスプレイは、サーバの対応するゲストOSを操作できる。このため、利用者のクライアントで、CPUやメモリが不要となり、省エネルギー化に寄与する。また、ホストOSに、バス接続ツリーとゲストOSを対応させるための機能を設けたため、ゲストOSをハンドルする処理を追加するだけで実現できる。
【図面の簡単な説明】
【0017】
【図1】本発明のクライアントシステムの一実施の形態の物理ブロック図である。
【図2】図1のクライアントシステムのサーバの一実施の形態の物理ブロック図である。
【図3】図1、図2の仮想計算機システムのソフトウェアの機能ブロック図である。
【図4】図1乃至図3のクライアントの接続形態の説明図である。
【図5】図3のゲストOS構成定義テーブルの説明図である。
【図6】本発明の一実施の形態のホストOSのゲストOS管理用プログラムの処理フロー図(その1)である。
【図7】本発明の一実施の形態のホストOSのゲストOS管理用プログラムの処理フロー図(その2)である。
【図8】ゲストOS管理処理の動作説明図である。
【図9】本発明の一実施の形態の仮想マシンの起動処理の説明図である。
【図10】図9の物理メモリの割り当ての説明図である。
【図11】図10の実物理アドレスとゲスト物理アドレスのアドレス変換の説明図である。
【図12】図9のI/Oリソースの割り当ての第1の実施の形態の割込み番号管理表の説明図である。
【図13】図9のI/Oリソースの割り当ての第1の実施の形態のデバイスメモリ管理表の説明図である。
【図14】図9のI/Oリソースの割り当ての第2の実施の形態の説明図(その1)である。
【図15】図9のI/Oリソースの割り当ての第2の実施の形態の説明図(その2)である。
【図16】本発明の一実施の形態の仮想マシンの終了処理の説明図である。
【図17】本発明の他の実施の形態の仮想計算機システムのソフトウェアの機能ブロック図である。
【図18】図17のI/O動作の説明図である。
【図19】本発明の更に他の実施の形態の仮想計算機の説明図である。
【図20】従来のクライアントシステムの説明図である。
【発明を実施するための形態】
【0018】
以下、実施の形態の例を、仮想計算機を使用したクライアントシステム、仮想計算機のクライアント処理、仮想計算機の処理、他の実施の形態の順で説明するが、開示のクライアントシステムは、この実施の形態に限られない。
【0019】
(仮想計算機を使用したクライアントシステム)
図1は、本発明のクライアントシステムの一実施の形態の物理ブロック図である。図2は、図1のクライアントシステムのサーバの一実施の形態の物理ブロック図である。図3は、図1、図2の仮想計算機システムのソフトウェアの機能ブロック図である。図4は、図1乃至図3のクライアントの接続形態の説明図である。図5は、図3のゲストOS構成定義テーブルの説明図である。
【0020】
図1に示すように、物理サーバ10は、複数(ここでは、4つ)のUSB(Universal Serial Bus)ポートを有する。複数(ここでは、4つ)のデスク(机)15−0〜15−3の各々には、マウス14−0〜14−3、キーボード13−0〜13−3、デイスプレイ(VGA)12−0〜12−3が設けられる。
【0021】
サーバ10のUSBポートには、複数(ここでは、4つ)のUSBハブ11−0〜11−3のいずれかが接続される。この各USBハブ11−0〜11−3に、対応するマウス14−0〜14−3、キーボード13−0〜13−3、デイスプレイ12−0〜12−3が接続される。
【0022】
従って、各マウス14−0〜14−3、キーボード13−0〜13−3、デイスプレイ12−0〜12−3は、サーバ10のUSBデバイスとして動作する。ここで、サーバ10のUSBポート数に制限があるため、マウスやキーボード、デイスプレイはUSBハブを介しサーバ10に接続しているが、USBポート数に余裕がある場合や、クライアント数が少ない場合には、USBハブを省略できる。
【0023】
このUSBデバイスには、図1で説明するように、USBの識別番号(図1の図示の「USB×××」)を付与し、図4で説明するように、USBデバイスの接続状態を示すツリーを作成する。
【0024】
図2により、物理サーバ10を説明する。図2に示すように、物理サーバ10は、実計算機1と周辺装置5〜7とを有する。実計算機1は、1つ又は複数のCPU/メモリ2と、ホストバスアダプタ(USBコントローラを含むHBA: Host Bus Adaptor))3と、ネットワークインタフェースカード(NIC: Network Interface Card)4とを、ハードウェアとして有する。
【0025】
このホストバスアダプタ(HBA)3は、スイッチ5(以下、「FC(Fibre Channel)スイッチ)とも称する」を介し、ストレージ装置(例えば、デイスク装置)7と接続する。ネットワークインタフェースカード(NIC)4は、Netスイッチ6を介しLAN(Local Area Network)8と接続する。ここで、ホストバスアダプタ3は、USBコントローラを有し、USBコントローラに、図3で説明するUSBポート3−0〜3−3が接続される。
【0026】
この物理ハードウェアに対し、図3で説明する仮想化ソフトウェアを搭載することにより、物理サーバ(実計算機)1を、複数の仮想サーバ9として機能させることができる。図3で説明するように、例えば、仮想化ソフトウェアで、CPU/メモリ2を、仮想サーバとして機能させ、サーバ1とI/O装置(ここでは、スイッチ5、ストレージ装置7、Netスイッチ6)の関係を仮想化する。
【0027】
例えば、I/Oアダプタ接続の仮想化(スイッチ/仮想化装置)、HBA3、NIC4のアドレスの仮想化、I/O装置(ここでは、FCスイッチ5、ストレージ装置7、Netスイッチ6)のアクセス権の設定により、サーバに対するI/O資源の割り当て、変更及びサーバの交換作業を単純化する。
【0028】
図3により、仮想計算機のソフトウェアを説明する。仮想計算機モニタ(Hypervisor)24は、仮想計算機(VM)全体を制御する層を構成し、CPU/メモリ2、ネットワークインタフェースカード(NIC)4,Netスイッチ6、FCスイッチ5、ストレージ装置7などの物理的な資源を、仮想資源に分割する。そして仮想計算機モニタ24は、分割した仮想資源を単位として、各OS(Operating System)に割り当て、各OSのデイスパッチ、各OSが実行する特権命令のエミュレーション、CPUに対するハードウェア制御等を行う。例えば、VMware(商品名)、HyperV(商品名)、Xen(商品名)などが、仮想計算機モニタとして適用できる。
【0029】
ホストOS20は、VM(ドメイン)として動作し、仮想計算機(VMシステム)全体の操作、仮想マシン(ゲストOS)22−1〜22−4の管理を行うOSである。例えば、ホストOSは、VMシステムのboot時に、自動で起動され、ドライバドメインやゲストOSの制御(起動、停止等)の制御を行う。ゲストOS22−1〜22−4は、VM構成で、実I/Oを持たないOSであり、例えば、Linux(商標名)、WINDOWS(商標名)等の周知のOSを適用できる。
【0030】
ハードウェア10は、前述の物理サーバであり、USBポート3−1〜3−4を有する。ゲスト操作用USBデバイスは、前述の各マウス14−0〜14−3、キーボード13−0〜13−3、デイスプレイ12−0〜12−3を含み、USBハブを介し、USBポート3−1〜3−4に各々接続される。
【0031】
このホストOS20は、前述のUSBデバイスとゲストOS22−1〜22−4とを対応付けるゲスト構成定義テーブル26と、ゲスト構成定義テーブル26を参照して、ゲストOSを制御するゲスト管理プログラム(図6〜図8で詳しく説明する)30とを有する。
【0032】
このゲスト構成テーブル26と、ゲスト管理プログラム30を、図4、図5で説明する。先ず、ゲストOSの起動操作は、クライアントのキーボード13−0〜13−3で行う。実マシンでは、PCの電源ボタンを操作することで電源が投入される。仮想計算機システムでは、ゲストOSの起動は、ホストOS20から操作しなければならない。
【0033】
ホストOSの操作のためには、ホストOSにログインする必要があり、従来の接続形態では、ネットワーク機能を使用しなければならない。ネットワーク機能を使用するためには、OSの機能を使用する必要があり、結局はクライアント側にCPUが必要となる。
【0034】
本実施の形態では、ホストOS20で、USBツリーとゲストOSとを対応させる機能を設け、クライアントにはCPU,OSを設けずに、ホストOS20を操作する。このため、ホストOS20が、どのゲストOS22−1〜22−4にUSBデバイスが対応するかを管理する。
【0035】
即ち、あるUSBデバイス(キーボードやマウス)から、どのゲストOSへの操作が行われたかを認識するためUSBツリーが構築される。図4に示すように、USBツリーは、USBのつながりを示し、USBポート3−1〜3−4、USBハブ11−0〜11−3、USBデバイス(キーボード13−0〜13−3、マウス14−0〜14−3、VGA12−0〜12−3)のツリー構造である。図4では、USBツリー構造において、図示の「USB×××」)がUSB識別番号である。
【0036】
このUSBツリーと、ゲストOSを対応付ける。例えば、ゲストOS22−1に、USBポート3−1、USBハブ11−0、キーボード13−0、マウス14−0、VGA12−0のUSBツリー1が対応付けられる。又、ゲストOS22−4に、USBポート3−4、USBハブ11−3、キーボード133、マウス14―3、VGA12−3のUSBツリー4が、対応付けられる。
【0037】
図5に示すように、ゲスト構成定義テーブル26は、USBポートとゲストOSとの対応表を格納する。この対応表により、ホストOS20は、USBポート3−1〜3−4への入出力が、どのゲストOS22−1〜22−4に対するものか、対応付けができる。
【0038】
例えば、図5では、ゲスト構成定義テーブル26に、項目として、ゲストOS名、ゲストOS操作・表示のUSB機器の番号、後述するゲストOS起動キー、ゲストOS強制停止キー名を、ゲストOS毎に、設ける。図5では、図4に従い、ゲストOS1(guest os 001)22−1に対応する項目として、USBハブ11−0(USB00)、USBデバイスUSB000,001,002(=キーボード13−0、マウス14−0、VGA12−0)をゲスト構成定義テーブル26に格納する。
【0039】
尚、USBハブを複数のゲストOSで共用することもできる。又、USBデバイスの番号とゲストOSの対応付けが出来るので、キーボード13−0、マウス14−0、VGA12−0だけでなく、外付けのUSBメモリなどの他のUSB機器を、ゲストOSへ対応付けることも可能である。
【0040】
仮想計算機システムでは、ホストOS20からゲストOSの起動操作を行う必要がある。又、他人のゲストOSの起動を防止する必要がある。即ち、ゲストOSを所有している人が不在の場合、勝手に、他人がそのゲストOSを起動し、操作することを防止する。このため、操作している人とゲストOSとの対応の認証を要する。
【0041】
このため、ホストOSは、ゲストOSを操作可能な操作者であることを確認する機能を持つ。即ち、ゲストOSが停止状態にある時、特定のキーボードを操作して、ゲストOSを起動した場合、故意または誤って自分の所有しないゲストOSを起動できてしまい、セキュリティ上の問題がある。このため、本実施の形態ではゲスト起動のためには、認証機能を設ける。
【0042】
この実施の形態では、特定のキーを入力し、ホストOSに配置したゲストOS構成定義テーブル26の対応表に設定されたゲストOS起動キーと入力されたキーとが一致した場合のみ、ゲストOSが起動できる認証機能を有する。図5の例では、ゲストOS1に対しては、特定の起動文字列(例えば、guestOS1_act_key=guestOS1_PowerON_hooHOO(23文字))を定義し、ゲストOS構成定義テーブル26のゲストOS起動キー欄に格納する。
【0043】
ホストOS20は、ゲストOSに特定されたUSBポートに接続されたキーボードから、この文字列が入力された場合に、そのゲストOSの起動の資格があると認識し、ゲストOSを起動する。
【0044】
又、ゲストOSの強制停止、電源切断を、ゲスト操作用KVM(キーボード13−0、マウス14−0、VGA12−0)から行う。実マシンでは、OSがハングアップしかつ、CTRL+ALT+DELETEキーなども受け付けなくなった時、PCの電源ボタンを長押しして、PCの電源を切断する。
【0045】
仮想計算機システムでは、起動操作と同じく、ホストOS20から仮想OSの強制停止操作を行う必要がある。このため、本実施の形態では、特定のキー(強制停止文字列)を入力し、ホストOS20に配置した対応表(ゲスト構成定義テーブル26)に設定されたゲストOS強制停止キーと入力された構成停止文字列とが一致した場合のみ、ゲストOSを強制停止する認証機能を有する。
【0046】
例えば、そのゲストOSに対し、強制停止文字列(例えば、guestOS1_poff_key=guestOS1_POFf_hooHOO(20文字))を定義し、ゲストOS構成定義テーブル26のゲストOS強制停止キー欄に格納する。
【0047】
ホストOS20は、前述の起動処理と同様に、そのゲストOSに特定されたキーボードから、この文字列が入力された場合、そのゲストOSを強制停止する。ゲストOS強制停止以外にも、強制停止停止文字列を入力する方法と同様な方法を、ダンプ採取(実マシンであれば、nmiボタン(例えば、インターネット=http://ja.wikipedia.org/wiki/%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF参照))や、ゲストOSの強制リブートなどにも適用できる。
【0048】
更に、キーボードやマウスからの入力は、ゲスト構成定義テーブル26を参照して、入力があったキーボードやマウスに対応したゲストOSを特定し、特定したゲストOSに入力をハンドリングする(受け渡す)。又、ゲストOSが、VGAに対して画面描写を行った場合には、同様に、ゲスト構成定義テーブル26を参照して、画面描写を行うべきUSB機器を特定し、特定したUSB機器に、画面描写する。
【0049】
図3を用いて、ゲストOS起動・終了と通常時の動作を説明する。
【0050】
(1)ゲストOS操作用キーボード13−0から、前述の特定のキーを入力することで、ゲストOS22−1の起動・停止要求を行う。
【0051】
(2)ゲストOS操作用キーボード13−0からの起動・停止要求に応じて、ホストOS20に、USBポート3−1からキーボード割込みが発生し、ホストOS20のゲスト管理用プログラム30が要求を受理する。
【0052】
(3)ホストOS20のゲスト管理用プログラム30は、ゲスト構成定義テーブル26を参照し、ゲストOS22−1の起動・停止要求が入力されたUSBポートとキー入力内容とが、ゲスト構成テーブル26に定義されたゲストOSに対応するものか判断する。
【0053】
(4)ホストOSは、USBポートとキー入力内容とが定義されたゲストに対応するものであると判断する場合には、ゲストOS22−1の起動・停止要求を、仮想計算機モニタ24(Hypervisor)に通知する。
【0054】
(5)仮想計算機モニタ(Hypervisor)24は、ホストOSからの通知に応じて、ゲストOS22−1の起動・停止を行う。
【0055】
(6)ゲストOS22−1の起動後は、ゲストOS操作用KVM12−0,13−0,14−0から、ゲストOS22−1を操作する。
【0056】
このように、入力ユニット(キーボード、マウス)と、デイスプレイを、サーバ10のUSB(バス)ポートに、USBデバイスとして接続し、且つサーバ10を仮想計算機で構成し、ホストOSが、各入力ユニット、デイスプレイと対応するゲストOSを認識するため、各入力ユニットとデイスプレイは、サーバ10の対応するゲストOSを操作できる。このため、利用者のクライアントで、CPU,メモリが不要となり、省エネルギー化に寄与する。
【0057】
また、ホストOS20に、USB(バス接続)ツリーとゲストOSを対応させるための機能を設けたため、ゲストOSをハンドルする処理を追加するだけで実現でき、ゲストOSや仮想計算機モニタの改造は不要であり、ホストOSだけで、クライアントにCPU,メモリを不要にすることを実現できる。しかも、ゲストOSを修正する必要は無いため、ゲストOSの種別を選ばない。
【0058】
更に、ゲストOS毎に用意するのは、キーボード、マウス、ディスプレイのみであり、シンクライアントのように、CPUやメモリ、ハードディスクや、装置にインストールしたOSを必要としない。このため、低価格で、省電力のPC環境の構成が可能になる。
【0059】
実マシン操作で可能なことは、ホストOS内に定義することで実現できるため、使用者は強制停止、ダンプ、リブートなど、実マシンと同じ機能を使用できる。
【0060】
しかも、このような構成でも、ホストOSに、ゲストOSを操作可能な操作者であることを確認する機能を設けたため、不正を防止できる。
【0061】
更に、ホストOS20に、ゲストOSを起動する機能と、ゲストOSを強制停止する機能を設けたため、利用者が、意識することなく、ゲストOSを利用したアプリケーションを実行できる。
【0062】
しかも、USB(バス接続)ツリーとゲストOSを対応させるための対応機能により、キーボードやマウス入力を、ゲストOSにハンドリングする(受け渡す)機能と、ゲストOSのVGA出力を目的のディスプレイに出力する機能を設けたので、利用者が意識することなく、ゲストOSを利用したアプリケーションを実行できる。
【0063】
(クライアント処理)
図6、図7は、本発明の一実施の形態のホストOSのゲストOS管理用プログラムの処理フロー図である。図8は、ゲストOS管理処理の動作説明図である。
【0064】
以下、図8を参照して、図6、図7のホストOS20のゲストOS管理用プログラムの管理処理を説明する。
【0065】
(S10)ホストOS20が起動すると、実マシンのUSBツリーを認識する。即ち、ホストOS20は、接続されている各USBデバイスの番号を取得し、ゲスト構成定義テーブル26に登録された内容と比較し、接続されている各USBデバイスを確認する。又、ホストOS20は、確認後、ゲスト構成定義テーブル26のUSBツリーとゲストOSとの対応から、どのUSB機器がどのゲストOSに対応するかを管理する。
【0066】
(S12)ホストOS20は、キーボードからのゲストOSの起動操作を待つ。USBポートを介しキーボードから入力を受け付けると、ホストOS20は、入力を発したキーボードのUSB番号でゲスト構成定義テーブル26を参照し、キーボードに対応するゲストOSを特定する。
【0067】
(S14)ホストOS20は、キーボードから入力された文字列が、ゲスト構成定義テーブル26のゲストOSに定義された内容(起動キー)と一致するかをチエックし、その結果に応じてゲストOSを操作可能な操作者による操作であることを確認する。ホストOS20は、入力された文字列と起動キーとが一致しない場合には、当該キーボードに対応するデイスプレイにエラーを表示し、ステップS12に戻る。
【0068】
(S16)ホストOS20は、キーボード入力された文字列とテーブル26の定義内容が一致した場合に、仮想計算機モニタ24を介し、一致した(認証に成功した)ゲストOS22−1を起動する(図8の矢印A)。ゲストOSはブートし、起動する、
(S18)ホストOS20は、ゲストOSからのデイスプレイ出力又は、キーボード又はマウスからの入力を待つ。ホストOS20は、入力を受けると、入力したUSBデバイスのUSB番号から、入力が、キーボード操作であるかを判定する。ホストOS20は、キーボード操作でない時は、図7のステップS24に進む。
【0069】
(S20)ホストOS20は、入力がキーボード操作であると判定した時は、キーボードから入力された文字列が、ゲスト構成定義テーブル26のゲストOSに定義された内容(強制停止キー)と一致するかをチエックする。ホストOS20は、入力文字列が強制停止キーと一致すると判定すると、強制停止キーに対応するゲストOSを強制停止する(図8の矢印D)。そして、ステップS12に戻る。
【0070】
(S22)一方、ホストOS20は、入力文字列が、強制停止キーと一致しないと判定すると、仮想計算機モニタ24を介し、文字列を入力したキーボードに対応するゲストOS22−1に、キーボード操作内容を通知する(図8の矢印B)。そして、ステップS18に戻る。
【0071】
(S24)一方、ステップS18で、入力がキーボード操作でないと判定した時は、仮想計算機モニタ24は、デイスパッチ時間を元に戻す。そして、ホストOS20は、入力を受け付けたUSBデバイスのUSB番号から、入力が、マウス操作であるかを判定する。ホストOS20は、入力がマウス操作でない時は、ステップS28に進む。
【0072】
(S26)ホストOS20は、入力がマウス操作であると判定した時は、仮想計算機モニタ24を介し、操作されたマウスに対応するゲストOS22−1に、マウス操作内容を通知する(図8の矢印B)。そして、ステップS18に戻る。
【0073】
(S28)ホストOS20は、入力がマウス操作でないと判定すると、ゲストOSからのデイスプレイ出力であると判断する。そして、ホストOS20は、ゲストOSに対応する物理デイスプレイに、画面データを出力する(図8の矢印C)そして、ステップS18に戻る。
【0074】
尚、ホストOS20は、キーボードやマウス入力を、ゲストOSにハンドリングするため、ゲスト構成定義テーブル26を参照して、ゲストOSに通知する。
【0075】
このように、ホストOS20に、認証部30−1と、ゲストOS起動・停止部30−2と、ゲストKVM処理部30−3とを有するゲスト管理プログラム30と、ゲスト構成定義テーブル26を設けることにより、ゲストOSや仮想計算機モニタの改造することなく、ホストOSだけで実現できる。しかも、ゲストOSを修正する必要は無いため、ゲストOSの種別を選ばない。
【0076】
(仮想計算機の処理)
次に、仮想計算機の処理を説明する、図9は、本発明の一実施の形態の仮想マシンの起動処理の説明図である。図10は、図9の物理メモリの割り当ての説明図である。図11は、図10の実物理アドレスとゲスト物理アドレスのアドレス変換の説明図である。図12、図13は、図9のI/Oリソースの割り当ての第1の実施の形態の説明図である。図14、図15は、図9のI/Oリソースの割り当ての第2の実施の形態の説明図である。図16は、本発明の一実施の形態の仮想マシンの終了処理の説明図である。
【0077】
図9により、仮想マシン(ゲストOS)を起動する処理を説明する。
【0078】
(1)ホストOS20がゲストOS起動を指示すると、デバイスエミュレータ32が、仮想計算機のインスタンスの作成(仮想CPU、ゲスト物理メモリ、仮想デバイスなど)の作成と、各リソースの初期化を行う。
【0079】
(2)仮想計算機モニタ24は、ゲスト物理メモリと実物理メモリを対応させるメモリ管理表を作成する(図10、図11で後述する)。
【0080】
(3)又、ゲストI/Oと実物理I/Oを対応させるリソース管理表を作成する(図12乃至図15で後述する)。
【0081】
(4)仮想計算機モニタ24は、仮想CPUを登録する。
【0082】
(5)仮想計算機モニタ24は、仮想CPUのスケジューラ(scheduler)に、(1)で作成した仮想CPUのインスタンスを登録し、仮想計算機モニタ24内で仮想CPUを実行する。
【0083】
次に、メモリ管理表作成のための物理メモリの割り当てを、図10、図11により説明する。仮想計算機モニタ24は、ホストOS20、後述するドライバOSを設けた場合には、ドライバOSおよびゲストOSに割り当てる物理メモリ2−2を管理し、それぞれが行うメモリアクセスを制御する。例えば、仮想計算機モニタ24は図10のように、仮想計算機モニタ、ホストOS20、ドライバOSおよびゲストOSに、物理メモリ空間2−2を割り当てる。
【0084】
ゲストOSは、メモリアクセスの際に、ゲスト物理アドレスを指定してメモリアクセスを行う。仮想計算機モニタ24は、図11のように、ゲスト物理アドレスを実物理アドレスに変換し、実際のメモリアクセスを行う。このアドレス変換を行うため、仮想計算機モニタ24はメモリ管理表を作成する。
【0085】
ゲストOSは、仮想計算機モニタ24により割り当てられたメモリ空間内で動作することが出来る。仮想計算機モニタ24は、仮想計算機モニタ用に割り当てられたメモリ空間内で動作するが、その他のメモリ空間に関してもアクセスすることが許可されている。ホストOS20、ドライバOSも、仮想計算機モニタ24から許可を受けることにより、特定のメモリ空間にアクセスすることが出来る。
【0086】
次に、I/O管理表に関するI/Oリソースの割り当てついて、図12乃至図15を用いて説明する。I/Oアクセス方法は、(1)通常のOSが物理ハードウェアを制御する際に使用するドライバをゲストOS上で利用する第1の方法と、(2)ゲストOSとホストOSまたはドライバOSとの間で、特殊なプロトコルを使用して物理ハードウェアを制御する方法(フロントエンド、バックエンドドライバを使用する方法)とがある。
【0087】
第1の方法の場合、ゲストOSは、I/Oアクセスの際に、ゲストI/Oリソースを利用して、ハードウェアアクセスを行う。仮想計算機モニタ24は、ゲストI/Oリソースを実物理I/Oリソースに変換し、実際のハードウェアアクセスを行う。図12は、割り込み番号管理表を示し、ゲスト割込み番号(キーボード、デイスク、ネットワークの番号)と物理割込み番号(キーボード、デイスク、ネットワークの物理番号)を対応つけるテーブルである。図13は、デバイスメモリ(MMIO(メモリIO、ポートIOなど)管理表を示し、ゲスト割込み番号(キーボード、デイスク、ネットワークのメモリ、レジスタの番号)と物理割込み番号(キーボード、デイスク、ネットワーク等のメモリ、レジスタの物理番号)を対応つけるテーブルである。
【0088】
これらのI/O管理表を作成し、ゲストOSは、I/Oアクセスの際に、ゲスト割込み番号と物理割込み番号のI/O管理表で、相互に番号を変換して、ゲストI/Oリソースを利用して、ハードウェアアクセスを行う。
【0089】
次に、フロントエンド、バックエンドドライバを使用する第2の方法を説明する。図14及び図15に示すように、仮想計算機モニタ24は、I/Oリソースとして、I/O要求を書き込む共有メモリ2−3と、I/O要求を通知するメカニズム(event番号と通知interface)とを提供する。
【0090】
図14のゲストOS22−1は、通常のハードウェアアクセスを行うドライバを使用せず、フロントエンドと呼ばれる仮想マシン専用のドライバ22Aを使用する。フロントエンドドライバ22Aからの要求は、ホストOS20のバックエンドドライバ36が処理し、実I/Oドライバ(プログラム)34を操作する。
【0091】
次に、フロントエンドドライバ22Aとバックエンドドライバ36のI/O発行時の処理を、図14及び図15を用いて、説明する。
【0092】
(1)図14に示すように、ゲストOS22−1は、I/O発行時に、I/O要求を共有メモリ2−3に書き込む。
【0093】
(2)ゲストOS22−1は、I/O発行通知を仮想計算機モニタ24に行う。
【0094】
(3)仮想計算機モニタ24は、I/O発行通知を、ホストOS(またはドライバOS)20に行う。
【0095】
(4)ホストOS(またはドライバOS)20は、I/O発行通知を受け取り、共有メモリ2−3の内容を参照する。
【0096】
(5)ホストOS(またはドライバOS)20は、共有メモリ22−3の内容にしたがって実I/Oを発行する。
【0097】
(6)図15に示すように、ホストOS(またはドライバOS)20は、実I/Oの結果を共有メモリ2−3に書き込む。
【0098】
(7)ホストOS(またはドライバOS)20は、I/O完了通知を仮想計算機モニタ24に行う。
【0099】
(8)仮想計算機モニタ24は、I/O完了通知を、ゲストOS22−1に行う。
【0100】
(9)ゲストOS22−1は、I/O完了通知を受け、共有メモリ2−3からI/Oの結果を受け取る。
【0101】
次に、仮想マシン(ゲストOS)を終了する処理を、図16で説明する。
【0102】
(1)ホストOS20から、ゲストOSの終了指示を、仮想計算機モニタ24が受けると、仮想計算機モニタ24内で仮想CPUを停止する。
【0103】
(2)仮想計算機モニタ24内の仮想CPUのスケジュール(scheduler)から、(1)で停止した仮想CPUを削除する。
【0104】
(3)仮想デバイスを解放し、ゲストI/Oと実物理I/Oを対応させるリソース管理表を解放する。
【0105】
(4)ゲスト物理メモリ(図10参照)を解放し、ゲスト物理メモリと実物理メモリとを対応させるメモリ管理表を解放する。
【0106】
(5)ホストOS20のデバイスエミュレータ32は、仮想計算機のインスタンス(仮想CPUなど)を解放する。
【0107】
このようにして、仮想計算機内で、仮想マシン(ゲストOS)の起動・停止、メモリアクセス、I/Oアクセスを実行する。
【0108】
(他の実施の形態)
図17は、本発明の他の実施の形態の仮想計算機システムのソフトウェアの機能ブロック図である。図18は、図17のドライバOSとゲストOSとの説明図である。
【0109】
前述の第1の実施の形態では、ホストOSが、ドライバ機能を有したもので説明した。この他の実施の形態では、図17に示すように、ホストOS20の他に、I/O装置を制御するドライバOS28を設けたものである。このドライバOS28は、実I/O制御を実行する。各ゲストOS22−1〜22−4は、ドライバOS28に対して、I/Oを依頼することにより、I/Oの実行が可能である。
【0110】
ドライバOS28は、ホストOS20上やゲストOS22−1上でも動作可能である。ゲストOS上でドライバOSを動作させた場合、対応するゲストOSはドライバOS28となる。図17では、図2のストレージ装置7とLAN等のネット8とに対して、ドライバOS28を設けており、ホストOS20は、KVM12−0,13−0,14−0をドライブする。
【0111】
図18に示すように、各ゲストOS22−1〜22−4はフロントエンドドライバ22Aを有し、ドライバOS28は、バックエンドドライバ36を有する。図9乃至図15で説明したように、このフロントエンドドライバ22Aとバックエンドドライバ36が、ゲストOS22−1とドライバOS28との間でI/Oデータを受け渡す。又、同様に、KVM12−0、13−0,14−0に対してドライバOS28を設けてもよい。
【0112】
この実施の形態では、ドライバOSを用いるため、ホストOSの負荷が低減でき、高速な操作環境を付与できる。
【0113】
図19は、本発明の更に別の実施の形態の説明図である。図19において、図8で示したものと同一のものは、同一の記号で示してある。図19において、キーボード13−0〜13−2による対応するゲストOSの認証起動、停止処理は、図6〜図8で示したものと同一であり、説明を省略する。
【0114】
図19の実施の形態では、ゲストOS22−1〜22−3が、直接、デイスプレイ12−0〜12−2、キーボード13−0〜13−2、マウス14−0〜14−2と入出力する。この方法は、仮想計算機モニタ24のハードウェアリソース機能を、ソフトウェアでなくCPUやチップセットで、置き換えたものであり、VT−d(Virtualization Technology)と称されている。詳細は、インターネット(http://www.atmarkit.co.jp/fsys/kaisetsu/085intelvt/intelvt.html)で既知であるため、省略する。
【0115】
この機能(チップ)を用いると、仮想計算機のオーバヘッドを軽減でき、より高速な操作環境を実現できる。
【0116】
又、バスアダプタを、USBコントローラ、USBポート、USBハブで説明したが、PCI(Peripheral Component Interface)等の他のバスアダプタを採用できる。
【0117】
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
【0118】
(付記1)
CPUとメモリとバスと複数のバスアダプタとを有し、仮想マシンを動作する複数のゲストOSをホストOSで管理するとともに、仮想計算機モニタが、少なくとも前記CPU,前記メモリを有する物理資源を仮想資源に分割し、分割した仮想資源を単位として前記ゲストOSに、前記物理資源を割り当てる仮想計算機として動作する物理サーバと、前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する、複数の入力ユニットと、複数の出力ユニットとを有し、前記物理サーバの前記ホストOSは、前記複数のゲストOSの各々に、前記ゲストOSを使用する前記入力ユニットと前記出力ユニットの前記バス上での識別番号を格納する構成定義テーブルを有し、前記ホストOSが、前記構成定義テーブルを用いて前記入力ユニットからの入力を対応する前記ゲストOSに通知し、前記ゲストOSの処理結果を対応する前記出力ユニットに出力することを特徴とする仮想計算機を使用したクライアントシステム。
【0119】
(付記2)
前記ホストOSは、前記入力ユニットのいずれかからの起動文字列を受け、前記構成定義テーブルに登録された文字列と前記起動文字列とが一致するか判定し、前記起動文字列が前記登録された文字列と一致している場合に、前記起動文字列を発した入力ユニットに対応する前記ゲストOSを起動することを特徴とする付記1の仮想計算機を使用したクライアントシステム。
【0120】
(付記3)
前記ホストOSは、前記入力ユニットからの強制停止文字列を受け、前記構成定義テーブルに登録された文字列と前記強制停止文字列とが一致するか判定し、前記強制停止文字列が、前記登録された文字列と一致している場合に、前記強制停止文字列を発した入力ユニットに対応する前記ゲストOSを強制停止することを特徴とする付記1の仮想計算機を使用したクライアントシステム。
【0121】
(付記4)
前記ホストOSは、前記入力ユニットからの入力を受け、前記入力ユニットに対応する前記構成定義テーブルに登録されたゲストOSに通知し、前記ゲストOSの処理結果を、前記構成定義テーブルに登録された前記ゲストOSに対応する前記出力ユニットに出力することを特徴とする付記1の仮想計算機を使用したクライアントシステム。
【0122】
(付記5)
前記バスアダプタが、USBアダプタで構成され、且つ前記入力ユニットと前記出力ユニットが、USBデバイスであることを特徴とする付記1の仮想計算機を使用したクライアントシステム。
【0123】
(付記6)
CPUとメモリとバスと複数のバスアダプタとを有する物理サーバを、仮想マシンを動作する複数のゲストOSをホストOSで管理するとともに、仮想計算機モニタが、少なくとも前記CPU,前記メモリを有する物理資源を仮想資源に分割し、分割した仮想資源を単位として前記ゲストOSに前記物理資源を割り当てる仮想計算機として動作するステップと、前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する、複数の入力ユニットからの入力を、前記ゲストOSを使用する前記入力ユニットと出力ユニットの前記バス上での識別番号を格納する構成定義テーブルを参照して、対応する前記ゲストOSに通知するステップと、前記ゲストOSの処理結果を、前記構成定義テーブルを参照して、前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する複数の出力ユニットの内、前記ゲストOSに対応する前記出力ユニットに出力するステップを有することを特徴とする仮想計算機を使用したクライアント制御方法。
【0124】
(付記7)
前記ホストOSは、前記入力ユニットのいずれかからの起動文字列を受け、前記構成定義テーブルに登録された文字列と前記起動文字列とが一致するか判定するステップと、前記起動文字列が前記登録された文字列と一致している場合に、前記起動文字列を発した入力ユニットに対応する前記ゲストOSを起動するステップとを更に有することを特徴とする付記6の仮想計算機を使用したクライアント制御方法。
【0125】
(付記8)
前記ホストOSは、前記入力ユニットからの強制停止文字列を受け、前記構成定義テーブルに登録された文字列と前記強制停止文字列とが一致するか判定するステップと、前記強制停止文字列が、前記登録された文字列と一致している場合に、前記強制停止文字列を発した入力ユニットに対応する前記ゲストOSを強制停止するステップとを有することを特徴とする付記6の仮想計算機を使用したクライアント制御方法。
【0126】
(付記9)
前記ホストOSは、前記入力ユニットからの入力を受け、前記入力ユニットに対応する前記構成定義テーブルに登録されたゲストOSに通知するステップと、前記ホストOSが、前記ゲストOSの処理結果を、前記構成定義テーブルに登録された前記ゲストOSに対応する出力ユニットに出力するステップを有することを特徴とする付記6の仮想計算機を使用したクライアント制御方法。
【0127】
(付記10)
CPUとメモリとバスと複数のバスアダプタとを有する物理サーバを、仮想マシンを動作する複数のゲストOSをホストOSで管理するとともに、仮想計算機モニタが、少なくとも前記CPU,前記メモリを有する物理資源を仮想資源に分割し、分割した仮想資源を単位として前記ゲストOSに前記物理資源を割り当てる仮想計算機として動作するステップと、前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する、複数の入力ユニットからの入力を、前記ゲストOSを使用する前記入力ユニットと出力ユニットの前記バス上での識別番号を格納する構成定義テーブルを参照して、対応する前記ゲストOSに通知するステップと、前記ゲストOSの処理結果を前記構成定義テーブルを参照して、前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する複数の表示ユニットの内、前記ゲストOSに対応する前記出力ユニットに出力するステップとを、コンピュータに実行させるプログラム。
【産業上の利用可能性】
【0128】
入力ユニット(キーボード、マウス)と、デイスプレイを、仮想計算機として動作するサーバのバスポートに、バスデバイスとして、接続し、ホストOSが、各入力ユニット、デイスプレイと対応するゲストOSを認識するため、各入力ユニットとデイスプレイは、サーバの対応するゲストOSを操作できる。このため、利用者のクライアントで、CPU,メモリが不要となり、省エネルギー化に寄与する。また、ホストOSに、バス接続ツリーとゲストOSを対応させるための機能を設けたため、ゲストOSをハンドルする処理を、追加するだけで実現でき、ゲストOSや仮想計算機モニタの改造は不要であり、ホストOSだけで実現できる。
【符号の説明】
【0129】
1 実計算機
2 CPU/メモリ
2−2 メモリ
3 ホストバスアダプタ
3−1 バス(USB)ポート
4 ネットワークインタフェースカード
5 スイッチ
6 Netスイッチ
7 ストレージ装置
8 LAN
9 仮想サーバ
10 物理サーバ
24 仮想計算機モニタ
20 ホストOS
22−1〜22−4 ゲストOS
26 ゲスト構成定義テーブル
30 ゲスト管理プログラム

【特許請求の範囲】
【請求項1】
CPUとメモリとバスと複数のバスアダプタとを有し、仮想マシンを動作する複数のゲストOSをホストOSで管理するとともに、仮想計算機モニタが、少なくとも前記CPU,前記メモリを有する物理資源を仮想資源に分割し、分割した仮想資源を単位として前記ゲストOSに前記物理資源を割り当てる仮想計算機として動作する物理サーバと、
前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する、複数の入力ユニットと、複数の出力ユニットとを有し、
前記物理サーバの前記ホストOSは、前記複数のゲストOSの各々に、前記ゲストOSを使用する前記入力ユニットと前記出力ユニットの前記バス上での識別番号を格納する構成定義テーブルを有し、
前記ホストOSが、前記構成定義テーブルを用いて前記入力ユニットからの入力を対応する前記ゲストOSに通知し、前記ゲストOSの処理結果を、前記ゲストOSに対応する前記出力ユニットに出力する
ことを特徴とする仮想計算機を使用したクライアントシステム。
【請求項2】
前記ホストOSは、前記入力ユニットのいずれかからの起動文字列を受け、前記構成定義テーブルに登録された文字列と前記起動文字列とが一致するか判定し、前記起動文字列が前記登録された文字列と一致している場合に、前記起動文字列を発した入力ユニットに対応するゲストOSを起動する
ことを特徴とする請求項1の仮想計算機を使用したクライアントシステム。
【請求項3】
前記ホストOSは、前記入力ユニットからの強制停止文字列を受け、前記構成定義テーブルに登録された文字列と前記強制停止文字列とが一致するか判定し、前記強制停止文字列が、前記登録された文字列と一致している場合に、前記強制停止文字列を発した入力ユニットに対応する前記ゲストOSを強制停止する
ことを特徴とする請求項1の仮想計算機を使用したクライアントシステム。
【請求項4】
CPUとメモリとバスと複数のバスアダプタとを有する物理サーバを、仮想マシンを動作する複数のゲストOSをホストOSで管理するとともに、仮想計算機モニタが、少なくとも前記CPU,前記メモリを有する物理資源を仮想資源に分割し、分割した仮想資源を単位として前記ゲストOSに前記物理資源を割り当てる仮想計算機として動作するステップと、
前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する複数の入力ユニットからの入力を、前記ゲストOSを使用する前記入力ユニットと出力ユニットの前記バス上での識別番号を格納する構成定義テーブルを参照して、対応する前記ゲストOSに通知するステップと、
前記ゲストOSの処理結果を、前記構成定義テーブルを参照して、前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する複数の表示ユニットの内、前記ゲストOSに対応する前記出力ユニットに出力するステップを有する
ことを特徴とする仮想計算機を使用したクライアント制御方法。
【請求項5】
CPUとメモリとバスと複数のバスアダプタとを有する物理サーバを、仮想マシンを動作する複数のゲストOSをホストOSで管理するとともに、仮想計算機モニタが、少なくとも前記CPU,前記メモリを有する物理資源を仮想資源に分割し、分割した仮想資源を単位として前記ゲストOSに前記物理資源を割り当てる仮想計算機として動作するステップと、
前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する複数の入力ユニットからの入力を、前記ゲストOSを使用する前記入力ユニットと出力ユニットの前記バス上での識別番号を格納する構成定義テーブルを参照して、対応する前記ゲストOSに通知するステップと、
前記ゲストOSの処理結果を、前記構成定義テーブルを参照して、前記物理サーバの前記バスアダプタの各々に接続され、使用者が個々に操作する複数の出力ユニットの内、前記ゲストOSに対応する前記出力ユニットに出力するステップとを、
コンピュータに実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate