(57)【要約】【課題】仮想ディスク環境が提供される仮想ＯＳの起動ディスクに対するディスクアクセス性能を向上させる。【解決手段】第１ディスクアクセス方式を用いてＯＳの起動ディスクに対するアクセスを行う第１ドライバ及び第１ディスクアクセス方式より高速にディスクアクセス可能な第２ディスクアクセス方式を用いてアクセスを行う第２ドライバと、第１及び第２ドライバに対するディスクアクセス命令を発行する上位ドライバとの間に介在するディスクアクセス方式切替装置であって、第２ドライバの初期化終了前では、上位ドライバから受け取る第１ドライバ向けの起動ディスクに対するディスクアクセス命令を第１ドライバに渡し、第２ドライバの初期化の終了を検知した場合には、上位ドライバから受け取る第１ドライバ向けの起動ディスクに対するディスクアクセス命令を第２ドライバに渡す。【選択図】図２
2009134601.tif 000002
【特許請求の範囲】
【請求項１】
第１のディスクアクセス方式を用いてオペレーティングシステムの起動ディスクに対するディスクアクセスを行う第１のデバイスドライバ、及び第１のディスクアクセス方式より高速にディスクアクセス可能な第２のディスクアクセス方式を用いてディスクアクセスを行う第２のデバイスドライバと、これらの第１及び第２のデバイスドライバに対するディスクアクセス命令を発行する上位ドライバとの間に介在するディスクアクセス方式切替装置であって、
前記第２のデバイスドライバの初期化処理が終了する前においては、前記上位ドライバから受け取る前記第１のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記第１のデバイスドライバに渡し、
前記第２のデバイスドライバの初期化処理の終了を検知した場合には、前記上位ドライバから受け取る第１のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記第２のデバイスドライバに渡す
ことを特徴とするディスクアクセス方式切替装置。
【請求項２】
前記第２のデバイスドライバ向けの前記起動ディスクの有無の問い合わせ命令を前記上位ドライバから受け取った場合に、この命令を前記第２のデバイスドライバに渡すことなく、この命令に対する失敗の命令結果を生成して前記上位ドライバに返信する
請求項１に記載のディスクアクセス方式切替装置。
【請求項３】
前記第２のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記上位ドライバから受けとった場合に、この命令を前記第２のデバイスドライバに渡すことなく、この命令に対する成功の命令結果を生成して前記上位ドライバに返信する
請求項１に記載のディスクアクセス方式切替装置。
【請求項４】
前記第１のディスクアクセス方式は、Ｉ／Ｏエミュレーション方式であり、前記第２のディスクアクセス方式は、パラバーチャライゼーション方式である
請求項１〜３のいずれか一項に記載のディスクアクセス方式切替装置。
【請求項５】
アクセス対象のディスクに対し、管理オペレーティングシステムを介してアクセス可能なゲストオペレーティングシステムであって、
第１のディスクアクセス方式を用いて前記ゲストオペレーティングシステムの起動ディスクに対するディスクアクセスを行う第１のデバイスドライバと、
前記第１のディスクアクセス方式よりも高速にディスクアクセス可能な第２のディスクアクセス方式を用いてディスクアクセスを行う第２のデバイスドライバと、
前記第１及び第２のデバイスドライバに対するディスクアクセス命令を発行する上位ドライバと、
前記第１及び第２のデバイスドライバと前記上位ドライバとの間に介在し、前記第２のデバイスドライバの初期化処理が終了する前においては、前記上位ドライバから受け取る前記第１のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記第１のデバイスドライバに渡し、前記第２のデバイスドライバの初期化処理の終了を検知した場合には、前記上位ドライバから受け取る前記第１のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記第２のデバイスドライバに渡すディスクアクセス方式切替装置と
を備えるゲストオペレーティングシステム。
【請求項６】
物理ディスクと、この物理ディスクに対するディスクアクセス管理を行う管理オペレーティングシステムと、自身に提供された仮想ディスク環境に応じたディスクアクセス要求を発行するゲストオペレーティングシステムとを備え、前記管理オペレーティングシステ
ムは、前記ゲストオペレーティングシステムから発行された前記仮想ディスク環境に応じたディスクアクセス要求を前記物理ディスクに応じたディスクアクセス要求に変換して前記物理ディスクに対するアクセスを行う情報処理装置であって、
前記ゲストオペレーティングシステムは、
第１のディスクアクセス方式を用いて前記ゲストオペレーティングシステムの仮想的な起動ディスクに対するディスクアクセスを行う第１のデバイスドライバと、
前記第１のディスクアクセス方式よりも高速にディスクアクセス可能な第２のディスクアクセス方式を用いて仮想的なディスクアクセスを行う第２のデバイスドライバと、
前記第１及び第２のデバイスドライバに対するディスクアクセス命令を発行する上位ドライバと、
前記第１及び第２のデバイスドライバと前記上位ドライバとの間に介在し、前記第２のデバイスドライバの初期化処理が終了する前においては、前記上位ドライバから受け取る前記第１のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記第１のデバイスドライバに渡し、前記第２のデバイスドライバの初期化処理の終了を検知した場合には、前記上位ドライバから受け取る前記第１のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記第２のデバイスドライバに渡すディスクアクセス方式切替装置と
を備える情報処理装置。
【請求項７】
コンピュータを、第１のディスクアクセス方式を用いてオペレーティングシステムの起動ディスクに対するディスクアクセスを行う第１のデバイスドライバ、及び第１のディスクアクセス方式より高速にディスクアクセス可能な第２のディスクアクセス方式を用いてディスクアクセスを行う第２のデバイスドライバと、これらの第１及び第２のデバイスドライバに対するディスクアクセス命令を発行する上位ドライバとの間に介在するディスクアクセス方式切替装置として機能させるプログラムであって、
コンピュータを、前記第２のデバイスドライバの初期化処理が終了する前においては、前記上位ドライバから受け取る前記第１のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記第１のデバイスドライバに渡すステップと、
前記第２のデバイスドライバの初期化処理の終了を検知した場合には、前記上位ドライバから受け取る第１のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記第２のデバイスドライバに渡すステップと
を実行させるディスクアクセス方式切替装置として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想ＯＳ(Operating system)環境において、ディスクアクセス方式をＩ／Ｏエミュレーション方式のような第１のディスクアクセス方式からパラバーチャライゼーション(Para-Virtualization)方式のような第２のディスクアクセス方式に切り替えるディ
ディスクアクセス方式切替装置に関する。
【背景技術】
【０００２】
コンピュータを仮想化し、複数のＯＳを同時並行に動作させられるようにする仮想化ソフトの一つとして、Ｘｅｎがある。Ｘｅｎは、仮想マシンモニタ(VMM：Virtual Machine Monitor)と呼ばれるソフトウェアの一つである。Ｘｅｎは、コンピュータのハードウェア資源を一括で管理し、ＯＳに対してはその一部を組み合わせた仮想マシン(VM：Virtual Machine)と呼ばれる仮想的なコンピュータとして振舞ことができる。
【０００３】
仮想ＯＳ環境(Xen環境)では、ゲストＯＳを管理する管理ＯＳ(ドメイン０)が存在し、
その管理下でゲストＯＳが動作する。ゲストＯＳのブートディスクは完全仮想化され、実在のハードウェア(Ｈ／Ｗ)を完全にエミュレートしている(Ｉ／Ｏ(Input/Output)エミュ
レーション方式)。しかし、このＩ／Ｏエミュレーション方式によるＩ／Ｏアクセス方法
は、パフォーマンスが低く、特にＩ／Ｏアクセスで性能が低い。
【０００４】
そこで、ディスクのＩ／Ｏ性能を向上させる為に、準仮想化として実在のＨ／Ｗを完全にエミュレートせず、仮想化に都合がよい仮想Ｈ／Ｗ(仮想マシン)を構築するパラバーチャライゼーション(ParaVirtualization：ＰＶ)方式がある。この仮想Ｈ／Ｗのインタフェースを介してＩ／Ｏアクセスを行うことによって性能を高めることができる。準仮想化でＩ／Ｏアクセスを行うには、専用のデバイスドライバが必要になる。
【０００５】
図８は、Ｉ／Ｏエミュレーション方式とＰＶ方式それぞれのディスクアクセス方式を使用したゲストＯＳを概念的に示している。図８において、ゲストＯＳ４０Ａは、Ｉ／Ｏエミュレーション方式によるディスクアクセスを行うためのＡＴＡＰＩ／ＩＤＥ標準ドライバ４１と、ＰＶ方式によるディスクアクセスを行うための仮想ＳＣＳＩドライバ４２と、これらのドライバ４１及び４２に対してディスクＩ／Ｏ命令(ディスク入力(書き込み)／
出力(読み出し)命令)を含む様々な命令を供給するディスククラスドライバ４３とを備え
ている。
【０００６】
Ｉ／Ｏエミュレーション方式では、ゲストＯＳ４０Ａは、Xen Hypervisor(ハイパーバ
イザ)３０を介してエミュレートされたＨ／Ｗ(図８では、仮想ＡＴＡＰＩ／ＩＤＥ  Ｈ／Ｗ３１)にアクセスすることで、管理ＯＳ２０を通して物理ディスク１２Ａにアクセスす
ることができる。ＰＶ方式では、ゲストＯＳ４０Ａは、準仮想化用ディスクドライバ(ド
ライバ４２)からXen Hypervisor３０を介して管理ＯＳ２０の準仮想化用ディスクドライ
バ(仮想ＳＣＳＩドライバ２３)にアクセスすることで、管理ＯＳ２０のＡＴＡＰＩ／ＩＤＥ標準ドライバ２１を介して物理ディスク１２Ａにアクセスすることができる。両方式のディスクは独立しており、両方式を共有したディスクは存在しない。
【０００７】
ここに、ドメイン０(管理ＯＳ)とは、Xen Hypervisorを介して他のゲストＯＳを管理するＯＳである。ゲストＯＳとＨ／Ｗ(例えば物理ディスク１２Ａ)の間に介在することで、Ｈ／Ｗを仮想的に作成したり、それを実際のＨ／Ｗに関連付けたりすることができる。ドメイン１〜（ゲストＯＳ）はXen Hypervisor により、実際のＨ／Ｗを隠蔽され、ドメイ
ン０(管理ＯＳ)から仮想的なＨ／Ｗ(仮想マシン)を割り振られる(割り当てられる)。
【０００８】
Ｘｅｎでは、ディスクＩ／Ｏを行う方式として、Ｉ／Ｏエミュレーション方式と、ＰＶ(ParaVirtualization)方式という２つの方式との少なくとも一方を使用することができる。Ｉ／Ｏエミュレーション方式では、Xen Hypervisorにより、一般に流通している実在のＨ／ＷであるＡＴＡＰＩ(AT Attachment Packet Interface)やＩＤＥ(Integrated Drive Electronics)のハードウェアがエミュレートされる。ゲストＯＳはこのエミュレートされた仮想Ｈ／Ｗ(例えば、図８の仮想ＡＴＡＰＩ／ＩＤＥ  Ｈ／Ｗ３１)を利用してＩ／Ｏ命令を実行する。このため、仮想ＯＳ(図８のゲストＯＳ４０Ａが相当)で使用されるデバイスドライバとして、一般に流通している実在のＨ／Ｗ用のデバイスドライバをそのまま使用することができる(例えば、図８のＡＴＡＰＩ／ＩＤＥ標準ドライバ４１が相当)。仮想Ｈ／Ｗに対するＩ／Ｏ要求は、管理ＯＳ２０からコントロールされ、管理ＯＳ２０上のＩ／Ｏエミュレータ２２で物理ディスク１２Ａに対するＩ／Ｏ要求に変換される。このＩ／Ｏエミュレーション方式は、Windows（登録商標）のようなゲストＯＳのブートディスク
（一般的にＣドライブ）に対して利用できる半面、Ｈ／Ｗのエミュレートによる性能負荷が高いというデメリットがある。
【０００９】
一方、ＰＶ方式では、ゲストＯＳ４０Ａと管理ＯＳ２０との夫々がＰＶ方式のデバイスドライバ(仮想ディスクドライバ４２及び２３)を有し、これらが対になって協調動作をしながらＩ／Ｏ要求を処理して、物理ディスク１２Ａに対するＩ／Ｏ要求に変換し、物理ディスク１２ＡのデバイスドライバであるＡＴＡＰＩ／ＩＤＥ標準ドライバ２１に渡す。これによって、ドライバ２１が物理ディスク１２Ａに対するディスクアクセスを行う。
【００１０】
ゲストＯＳが有するＰＶ方式のデバイスドライバ(仮想ＳＣＳＩドライバ４２に相当)をフロントエンドドライバ、管理ＯＳが有するＰＶ方式のデバイスドライバ(仮想ＳＣＳＩ
ドライバ２３に相当)をバックエンドドライバと呼ぶ。
【００１１】
ＰＶ方式では、Ｉ／Ｏエミュレーション方式のように実在のＨ／Ｗのエミュレートは行われず、単純にゲストＯＳと管理ＯＳとの双方からアクセスできる共有メモリを使ってＩ／Ｏデータを受け渡す。これによって、Ｉ／Ｏデータ処理を簡略化する。このＩ／Ｏデータの受け渡しは、フロント／バックエンドドライバの協調動作によって行われる。このＰＶ方式は、Ｉ／Ｏエミュレーション方式に比べＩ／Ｏ要求性能が高い。一方、Windows（
登録商標）がゲストＯＳとして適用された場合において、このゲストＯＳのブート(起動)プロセス時に、ＰＶ方式のドライバ(仮想ＳＣＳＩドライバ４２)がロードされるタイミングがＩ／Ｏシミュレーション方式のドライバ(ＡＴＡＰＩ／ＩＤＥ標準ドライバ４１)より遅いことから、ゲストＯＳのブートディスク(起動ディスク)に対するディスクアクセス方式として採用できないデメリットがある。
【００１２】
すなわち、Windows（登録商標）のようなゲストＯＳのブートプロセス初期には、Ｉ／
Ｏエミュレーション方式のディスクのデバイスドライバ(ＡＴＡＰＩ／ＩＤＥ標準ドライ
バ４１)が先にロードされ、ブートプロセス後期にＰＶ方式のデバイスドライバ(仮想ＳＣＳＩドライバ４２)がロードされる。ブートプロセス初期においては、ブート用データを
含むシステムファイルが存在するブートディスクへのＩ／Ｏ要求が発生する。ＰＶ方式のドライバがロード完了していない状況下では、Ｉ／Ｏ要求可能なディスクは、Ｉ／Ｏエミュレーション方式のディスクのみである。また、システムファイルが存在する(格納され
た)ブートディスクへのアクセスは、主に次のような契機で行われる。このため、ブート
ディスクのアクセス頻度は高い。
（１）システムファイルのロード／アンロード
（２）システム用ログファイルの書き出し
（３）レジストリアクセス
（４）仮想メモリファイルへのスワップ
（５）メモリダンプ出力
【特許文献１】特開２００５−１７４３０７号公報
【特許文献２】特開平８−２１２０８９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
ブートディスクがＩ／Ｏエミュレーション方式である場合には、次のような性能面の問題がある。
（ａ）システムのブートに時間がかかる。
（ｂ）ブート後、通常運用時のパフォーマンスも比較的低くなる。
（ｃ）メモリダンプ出力の性能が低い。システムクラッシュした際のダンプ出力の際に  
多大な時間を要してしまい、システムの早期復旧を阻害する要因となる。
【００１４】
本発明の態様は、上記した問題に鑑みなされたものであり、起動ディスクに対するディスクアクセスを速めることのできる技術を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の態様は、上記した課題を解決するために、以下の構成を採用する。すなわち
、本発明の第１の態様は、第１のディスクアクセス方式を用いてオペレーティングシステムの起動ディスクに対するディスクアクセスを行う第１のデバイスドライバ、及び第１のディスクアクセス方式より高速にディスクアクセス可能な第２のディスクアクセス方式を用いてディスクアクセスを行う第２のデバイスドライバと、これらの第１及び第２のデバイスドライバに対するディスクアクセス命令を発行する上位ドライバとの間に介在するディスクアクセス方式切替装置であって、
前記第２のデバイスドライバの初期化処理が終了する前においては、前記上位ドライバから受け取る前記第１のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記第１のデバイスドライバに渡し、
前記第２のデバイスドライバの初期化処理の終了を検知した場合には、前記上位ドライバから受け取る第１のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記第２のデバイスドライバに渡す
ことを特徴とするディスクアクセス方式切替装置である。
【００１６】
本発明によれば、第２のデバイスドライバの初期化処理が終了した後は、第２のディスクアクセス方式を用いて起動ディスクに対するディスクアクセスが実行される。これによって、起動ディスクに対するアクセスを速めることができる。
【００１７】
第１の態様におけるディスクアクセス方式切替装置は、前記第２のデバイスドライバ向けの前記起動ディスクの有無の問い合わせ命令を前記上位ドライバから受け取った場合に、この命令を前記第２のデバイスドライバに渡すことなく、この命令に対する失敗の命令結果を生成して前記上位ドライバに返信することができる。
【００１８】
また、第１の態様におけるディスクアクセス方式切替装置は、前記第２のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記上位ドライバから受けとった場合に、この命令を前記第２のデバイスドライバに渡すことなく、この命令に対する成功の命令結果を生成して前記上位ドライバに返信することができる。
【００１９】
また、第１の態様において、前記第１のディスクアクセス方式は、Ｉ／Ｏエミュレーション方式であり、前記第２のディスクアクセス方式は、パラバーチャライゼーション方式である。
【００２０】
本発明の第２の態様は、アクセス対象のディスクに対し、管理オペレーティングシステムを介してアクセス可能なゲストオペレーティングシステムであって、
第１のディスクアクセス方式を用いて前記ゲストオペレーティングシステムの起動ディスクに対するディスクアクセスを行う第１のデバイスドライバと、
前記第１のディスクアクセス方式よりも高速にディスクアクセス可能な第２のディスクアクセス方式を用いてディスクアクセスを行う第２のデバイスドライバと、
前記第１及び第２のデバイスドライバに対するディスクアクセス命令を発行する上位ドライバと、
前記第１及び第２のデバイスドライバと前記上位ドライバとの間に介在し、前記第２のデバイスドライバの初期化処理が終了する前においては、前記上位ドライバから受け取る前記第１のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記第１のデバイスドライバに渡し、前記第２のデバイスドライバの初期化処理の終了を検知した場合には、前記上位ドライバから受け取る前記第１のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記第２のデバイスドライバに渡すディスクアクセス方式切替装置と
を備えるゲストオペレーティングシステムである。
【００２１】
また、本発明の第３の態様は、物理ディスクと、この物理ディスクに対するディスクアクセス管理を行う管理オペレーティングシステムと、自身に提供された仮想ディスク環境に応じたディスクアクセス要求を発行するゲストオペレーティングシステムとを備え、前記管理オペレーティングシステムは、前記ゲストオペレーティングシステムから発行された前記仮想ディスク環境に応じたディスクアクセス要求を前記物理ディスクに応じたディスクアクセス要求に変換して前記物理ディスクに対するアクセスを行う情報処理装置であって、
前記ゲストオペレーティングシステムは、
第１のディスクアクセス方式を用いて前記ゲストオペレーティングシステムの仮想的な起動ディスクに対するディスクアクセスを行う第１のデバイスドライバと、
前記第１のディスクアクセス方式よりも高速にディスクアクセス可能な第２のディスクアクセス方式を用いて仮想的なディスクアクセスを行う第２のデバイスドライバと、
前記第１及び第２のデバイスドライバに対するディスクアクセス命令を発行する上位ドライバと、
前記第１及び第２のデバイスドライバと前記上位ドライバとの間に介在し、前記第２のデバイスドライバの初期化処理が終了する前においては、前記上位ドライバから受け取る前記第１のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記第１のデバイスドライバに渡し、前記第２のデバイスドライバの初期化処理の終了を検知した場合には、前記上位ドライバから受け取る前記第１のデバイスドライバ向けの前記起動ディスクに対するディスクアクセス命令を前記第２のデバイスドライバに渡すディスクアクセス方式切替装置と
を備える情報処理装置である。
【００２２】
本発明は、上記した第１〜第３の態様と同様の特徴を有するディスクアクセス切替方法のような方法の発明、又は、第１〜第３の態様を実現するためのコンピュータプログラム、或いは、このコンピュータプログラムを格納した記録媒体として実現可能である。
【発明の効果】
【００２３】
本発明の態様によれば、起動ディスクに対するディスクアクセスを速めることができる。
【発明を実施するための最良の形態】
【００２４】
以下、図面を参照して本発明の実施形態を説明する。実施形態の構成は例示であり、本
発明は実施形態の構成に限定されない。
【００２５】
〔実施形態の概要〕
仮想ＯＳ環境(例えばＸｅｎ環境)において、ゲストＯＳ(ドメイン1,2,3．．．)による
ディスクへのアクセスをフィルタリングする機構を追加する。これによって、ゲストＯＳの起動後に高速アクセス可能なインタフェースに切り替えてアクセスすることで、ディスクＩ／Ｏの性能を向上させることができる。
【００２６】
Windows（登録商標）ドメイン(ゲストＯＳ)のブートプロセス初期に、Ｉ／Ｏエミュレ
ーション方式のディスクのデバイスドライバがロードされた直後は、このデバイスドライバを利用してブートディスク(起動ディスク)にアクセスする。しかし、ブートプロセス後期において、ＰＶ方式のドライバがロードされた後では、このデバイスドライバを利用してブートディスクにアクセスする。このようにすれば、ブートディスクに対するＰＶ方式の高速なディスクアクセスを実現することができる。
【００２７】
ここに、ブートディスク(起動ディスク)は、システム(少なくともゲストＯＳ)を起動(
ブート)するためのシステムファイルが格納されたディスクである。システムファイルは
、ブート時に使用されるデータのみならず、ブート後も必要に応じて使用されるデータを含むことができる。実施形態では、ゲストＯＳの起動プロセス(ブートプロセス)において、ＰＶ方式のドライバの初期化が完了した後には、ブートディスクに対して、ＰＶ方式によるディスクアクセスが行われる状態となる。よって、ゲストＯＳのような仮想ディスク環境が提供される仮想オペレーティングシステムにおいて、ディスクＩ／Ｏ（ディスク出入力）の性能を向上させることができる。
【００２８】
これを実現するために、ゲストＯＳからＩ／Ｏ要求(ディスクアクセス要求)を受けたときに、状況に応じてＩ／Ｏエミュレーション方式のデバイスドライバとＰＶ方式のデバイスドライバとの一方にＩ／Ｏ要求を振り分ける、これらのデバイスドライバに対して上位のデバイスドライバが用意される。この仮想環境での動的ディスクアクセス切り替え機構を「仮想ディスクフィルタドライバ」と定義する。仮想ディスクフィルタドライバ(ディ
スクアクセス方式切替装置に相当)にて、ブートプロセスの途中で、デバイスドライバの
ロードタイミングを検知しながら、Ｉ／Ｏ要求の振り分け先をＩ／Ｏエミュレーション方式のデバイスドライバから、ＰＶ方式のドライバに切り替えることでこれを実現することができる。
【００２９】
〔具体例〕
図１は、管理ＯＳ及びゲストＯＳを有するディスクアクセスシステムを備える情報処理装置(コンピュータ)の構成例を示す図である。図１において、コンピュータ１０は、バスＢを介して相互に接続されたＣＰＵ１１のようなプロセッサ、記憶デバイス(例えばハー
ドディスク(ＨＤＤ))１２、メモリ(例えばＲＡＭ)１３、ネットワークデバイス１４、入
力装置(例えばキーボード、マウス)１５、及び出力装置(例えば、ディスプレイ、プリン
タ)を備えている。メモリ１３上には、ＣＰＵ１１がプログラムを実行することによって
、管理ＯＳ２０，仮想マシンモニタ３０，及びゲストＯＳ４０が実現される。
【００３０】
図２は、メモリ１３上に展開される仮想ディスクドライバを含むＸｅｎ(仮想ＯＳ)環境の概念図であり、Ｉ／Ｏエミュレーション方式とＰＶ方式とのそれぞれのディスクアクセス方式を使用したゲストＯＳ４０を概念的に示す。
【００３１】
図２において、管理ＯＳ(ドメイン０)２０は、物理ディスク１２Ａに対するアクセスを行うためのＡＴＡＰＩ／ＩＤＥ標準ドライバ２１と、Ｉ／Ｏエミュレーション方式を実現するためのＩ／Ｏエミュレータ２２とを備えている。一方、管理ＯＳ２０は、ＰＶ方式を
実現するための仮想デバイスドライバとしての仮想ＳＣＳＩドライバ２３を備えている。
【００３２】
仮想マシンモニタ(ハイパーバイザ)３０は、Ｉ／Ｏエミュレータ２２によるエミュレートによって作成された仮想ハードウェアとしての仮想ＡＴＡＰＩ／ＩＤＥハードウェア３１を備えている。仮想マシンモニタ３０は、ゲストＯＳ４０からハードウェア(Ｈ／Ｗ)を隠蔽するために存在する。ゲストＯＳ４０は、ハードウェア(例えば物理ディスク１２Ａ)を意識せず、管理ＯＳ２０に対してＩ／Ｏアクセスすることによって、管理ＯＳ２０がゲストＯＳ４０の代わりにハードウェア(例えば物理ディスク１２Ａ)を制御(ディスクアク
セス制御)する。
【００３３】
ゲストＯＳ(ドメイン１)４０(仮想ＯＳ)は、Ｉ／Ｏエミュレーション方式に対応するＡＴＡＰＩ／ＩＤＥ標準ドライバ４１と、ＰＶ方式に対応する仮想デバイスドライバとしての仮想ＳＣＳＩドライバ４２と、これらのドライバ４１及び４２の上位ドライバに相当するディスククラスドライバ４３とを備え、ドライバ４１及び４２と、ディスククラスドライバ４３との間に、本発明に関する仮想ディスクフィルタドライバ４４(以下、フィルタ
ドライバと称する)が介在している。
【００３４】
このように、本実施形態では、図８と異なり、ディスククラスドライバ４３と各方式のデバイスドライバ４１及び４２との間にフィルタドライバ４４が存在する。フィルタドライバ４４により、状況に応じて単一のディスク(物理ディスク１２Ａ、記憶デバイス１２
中に含まれる)に対するディスクアクセス方式をＩ／Ｏエミュレーション方式とＰＶ方式
との間で切り替えることができる。
【００３５】
図１において、管理ＯＳ(ドメイン０)２０は、Xen Hypervisor(仮想マシンモニタ)３０を介してゲストＯＳ４０を管理する。ゲストＯＳ４０とハードウェア(Ｈ／Ｗ：物理ディ
スク１２Ａ)との間に介在することで、仮想ＡＴＡＰＩ／ＩＤＥハードウェア３１のよう
な仮想Ｈ／Ｗを作成したり、仮想ハードウェアを実際のハードウェアに関連付けることができる。
【００３６】
ゲストＯＳ(ドメイン１)４０は、Xen Hypervisor(仮想マシンモニタ)３０ によって実
際のハードウェア(物理ディスク１２Ａ)を隠蔽され、管理ＯＳ(ドメイン０)２０から仮想的なハードウェアを割り当てられる(仮想ディスク環境が提供される)。なお、図２の例では、単一のゲストＯＳを示すが、複数のゲストＯＳ(ドメイン１、２、３・・・)が存在していても良い。
【００３７】
フィルタドライバ４４は、ディスククラスドライバ４３から受け取るＩ／Ｏ要求を、デバイスドライバ４１及び４２のロード状況などに応じて、適切なデバイスドライバ(Ｉ／
Ｏエミュレーション方式又はＰＶ方式)４１及び４２の一方に渡す役目をする。
【００３８】
Ｉ／Ｏエミュレーション方式では、Xen Hypervisor(仮想マシンモニタ)３０によって、世間一般に流通している実在のＡＴＡＰＩ／ＩＤＥのハードウェア(Ｈ／Ｗ)がエミュレートされて、仮想ＡＴＡＰＩ／ＩＤＥハードウェア３１のような仮想ハードウェアが作成される。ゲストＯＳ４０は、仮想ハードウェアを利用してＩ／Ｏ命令を実行することができる。このため、ゲストＯＳ４０では、Ｉ／Ｏエミュレーション方式のデバイスドライバとして、世間一般に流通しているハードウェア用に提供されているデバイスドライバがそのまま使用される。図２に示す例では、ＡＴＡＰＩ／ＩＤＥ標準ドライバ４１が使用されている。
【００３９】
仮想ハードウェア(仮想ＡＴＡＰＩ／ＩＤＥ  Ｈ／Ｗ３１)に対するＩ／Ｏ要求は、管理ＯＳ２０からコントロールされ、管理ＯＳ２０上で、Ｉ／Ｏエミュレータ２２及びＡＴＡ
ＰＩ／ＩＤＥ標準ドライバ２１によって、物理ディスク１２Ａに対するＩ／Ｏ要求に変換され、物理ディスク１２Ａに対するアクセスが実行される。
【００４０】
ＰＶ方式では、ゲストＯＳ４０と管理ＯＳ２０との夫々がＰＶ方式のデバイスドライバを有し、これらのデバイスドライバが対になって協調動作をしながらＩ／Ｏ要求を処理して、物理ディスク１２Ａに対するＩ／Ｏ要求に変換する。ゲストＯＳ４０が有するＰＶ方式のデバイスドライバはフロントエンドドライバと呼ばれ、管理ＯＳ２０が有するＰＶ方式のデバイスドライバはバックエンドドライバと呼ばれる。図２の例では、仮想ＳＣＳＩドライバ４２がフロントエンドドライバに相当し、仮想ＳＣＳＩドライバ２３がバックエンドドライバに相当する。
【００４１】
ＰＶ方式では、Ｉ／Ｏエミュレーション方式のように実在のハードウェアのエミュレートは行われず、単純にゲストＯＳ４０と管理ＯＳ２０との双方からアクセスできる共有メモリ３２(例えば仮想マシンモニタ３０上にメモリ領域が作成される)を使ってＩ／Ｏデータを受け渡す。これによって、Ｉ／Ｏデータ処理が簡略化される。このＩ／Ｏデータの受け渡しは、フロントエンドドライバ(ドライバ４２)及びバックエンドドライバ(ドライバ
２３)の協調動作によって行われる。
【００４２】
ゲストＯＳ４０が備えるフィルタドライバ４４は、主に以下の２つの機能を持つ。
【００４３】
(機能１)上位エンティティ(ディスククラスドライバ４３(上位ドライバ４３ともいう))からの命令をフックし、異なる下位ディスクドライバ(ドライバ４１及び４２の一方)に命令を流す(渡す)ことができる。このとき、フィルタドライバ４４は、命令の宛て先を書き換えるだけでよく、命令自体はそのままの形で渡す。
【００４４】
(機能２)上位エンティティ(上位ドライバ：ディスククラスドライバ４３)からの命令をフックし、対象の下位ディスクドライバ(ドライバ４１及び４２の一方)に渡すことなく終端(ターミネート)する。
【００４５】
機能１は、フィルタドライバ４４がＩ／Ｏエミュレーション方式のドライバ４１、及びＰＶ方式のドライバ４２の上位に位置しており、上位ドライバ４３からそれぞれのドライバ４１及び４２に対して発行された命令をフックできることを示す。
【００４６】
フィルタドライバ４４は、上位ドライバ４３からのディスクＩ／Ｏ命令をフックして、このＩ／Ｏ命令を与える対象のデバイスドライバ(ドライバ４１及び４２)を変更することを可能とする。このようなフィルタドライバ４４の動作は、ユーザに意識されない。すなわち、ユーザ操作(例えば入力装置１５の操作)において、フィルタドライバ４４の動作を意識する必要はない。
【００４７】
機能２は、フィルタドライバ４４が、上位ドライバ４３からのディスクの存在の問い合わせ命令をフックして、この命令に対する応答をターミネートすることを示す。これを応用して、ディスク状態取得命令を失敗で折り返すことで、ディスクの存在をユーザから隠すことが出来る。
【００４８】
〈動作説明〉
ゲストＯＳ４０(例えばWindows（登録商標）)のブートプロセス実行中、フィルタドラ
イバ４４は、ＰＶ方式のドライバ４２の初期化処理を監視する。この状態では、ブートディスク(ゲストＯＳ４０から見た(ゲストＯＳ４０に提供された仮想ディスク環境における)仮想のブートディスク)は、ドライバ４１を用いたＩ／Ｏエミュレーション方式で動作している。このブートプロセスにおいて、ドライバ４１のロード(初期化)は、ドライバ４２
のロード(初期化)に先だって行われる。このため、ブートプロセス時におけるブートディスクへのアクセスは、Ｉ／Ｏエミュレーション方式が使用される。
【００４９】
次に、ＰＶ方式のドライバ４２の初期化が完了したら、フィルタドライバ４４はＩ／Ｏエミュレーション方式のドライバ４１向けのディスクＩ／Ｏ命令をフックして、ＰＶ方式のドライバ４２に流す。これによって、ＰＶ方式のドライバ４２により、高速なディスクアクセスが可能となる。よって、ブートディスクへのアクセス性能が向上する。このようにして、ユーザが意識することなくディスクアクセスを切り替えることができる。
【００５０】
上位ドライバ４３からのＰＶ方式のドライバ４２に対するディスク問い合わせ命令は、フィルタドライバ４４によって終端され、破棄される。これにより、ＰＶ方式のドライバ４２を介したブートディスクは存在するがユーザには見えず、操作不可能なディスクとなる。
【００５１】
〈仮想ディスクフィルタドライバのフック内容〉
図３は、上位ドライバ４３から宛先のディスクドライバに向けて送られた命令に対してフィルタドライバ４４が処理する内容を示す表である。フィルタドライバ４４は、ディスク状態取得命令(ディスク存在問い合わせ命令)、及びディスクＩ／Ｏ命令をフック対象とし、これら以外の命令については何ら干渉することなく下位ドライバへ流す。
【００５２】
通常、フィルタドライバ４４は、Ｉ／Ｏエミュレーション方式のドライバ４１(ブート
ディスク)か、ＰＶ方式のドライバ(汎用ディスク)４２に対しての命令を処理する。
【００５３】
しかし、ＰＶ方式のドライバ４２(ブートディスク)に対する命令をフィルタドライバ４４が受け取った場合には、その命令に対して表に挙げたように、失敗で上位ドライバ４３に折り返す処理を行う。これは、仮に、当該ケースが発生した場合は、そのまま命令をドライバ４２に流すと問題が発生するからである。
【００５４】
図４は、フィルタドライバ４４によるディスクの存在の問い合わせ命令処理の概念を示す。図４に示すように、Ｉ／Ｏエミュレーション方式のドライバ４１に対するディスクの存在の問い合わせ命令(図４(１))を上位ドライバ(ディスククラスドライバ)４３から受け取った場合には、フィルタドライバ４４は、その命令をそのままドライバ４１へ流す(図
４(２))。
【００５５】
これに対し、フィルタドライバ４４は、ＰＶ方式のドライバ４２に対するディスクの存在の問い合わせ命令に対し、アクセス対象のディスクに応じた処理を行う。すなわち、ブートディスク１２１がアクセス対象ディスクであるディスク存在問い合わせ命令(図４(３))を受け取った場合には、フィルタドライバ４４は、当該命令を終端し、アクセス結果を失敗に設定し、上位ドライバ４３へ折り返す(図４(４))。これは、ブートディスクがユーザに多重に見えることを防ぐためである。
【００５６】
これに対し、アクセス対象ディスクが汎用ディスク１２１であるディスク存在問い合わせ命令(図４(５))を受け取った場合には、フィルタドライバ４４は、その汎用ディスク１２１に対するディスクの存在の問い合わせ命令を、そのままドライバ４２に流す(図４(６))。
【００５７】
図５は、フィルタドライバ４４によるディスクＩ／Ｏ命令処理の概念を示す。ゲストＯＳ４０のブート開始時は、Ｉ／Ｏエミュレーション方式のドライバ４１に上位ドライバ(
ディスククラスドライバ)４３からのディスクアクセス命令(ディスクＩ／Ｏ命令：図５(
１))を、Ｉ／Ｏエミュレーション方式のドライバ４１に流す(図５(２))。
【００５８】
ブート後、ＰＶ方式のドライバ４２の初期化が完了した後に、ドライバ４１に向けられたブートディスク１２１へのディスクＩ／Ｏ命令(図５(１))を上位ドライバ４３から受け取った場合には、このＩ／Ｏ命令をＰＶ方式のドライバ４２にフックする(図５(３))。
【００５９】
一方、ＰＶ方式のドライバ４２に対するブートディスク１２１へのディスクＩ／Ｏ命令(図５(４))は、“成功”で上位ドライバ４３に折り返す(図５(５))。これはＩ／Ｏエミュレーション方式のドライバ４１と同時に(並列に)ブートディスク１２１へアクセスすることによってデータの不整合が発生することを防ぐためである。これに対し、ドライバ４２に対する汎用ディスク１２２へのディスクアクセス命令(ディスクＩ／Ｏ命令：図５(６))については、フィルタドライバ４４は何もせず、ドライバ４２に流す(図５(７))。
【００６０】
図６Ａ，図６Ｂ，図６Ｃは、ゲストＯＳ４０のブート(起動)時におけるフィルタドライバ４４の動作説明図である。ゲストＯＳブート時、以下の流れでＩ／Ｏエミュレーション方式のドライバ４１からＰＶ方式のドライバ４２へディスクＩ／Ｏ命令をフックする。
【００６１】
図６Ａに示すように、最初に、上位ドライバ４３は、ドライバ４１(Ｉ／Ｏエミュレー
ション方式)でゲストＯＳ４０をブートする(ドライバ４１を用いてブートディスク１２１にアクセスする)。このとき、フィルタドライバ４４、ドライバ４２(ＰＶ方式)はロード
されていない。
【００６２】
次に、図６Ｂに示すように、ゲストＯＳ４０からフィルタドライバ４４、及びドライバ４２がロードされる。フィルタドライバ４４は、ドライバ４２の初期化完了を待つ。ドライバ４２は、初期化によってブートディスク１２１を認識すると、フィルタドライバ４４に初期化完了の通知を渡す。
【００６３】
次に、図６Ｃに示すように、フィルタドライバ４４は、ドライバ４２から初期化完了の通知を受け取ると、ドライバ４１向けのディスクＩ／Ｏ命令をフックしてドライバ４２へ渡す処理(フック処理)を開始する。これによって、ドライバ４２の初期化終了後は、ＰＶ方式のドライバ４２を用いてブートディスク１２１にアクセスされる。
【００６４】
〈フィルタドライバによる命令処理動作〉
図７は、フィルタドライバ４４による命令処理動作例を示すフローチャートである。図７に示す処理は、例えば、ＯＳのブートが開始され、フィルタドライバ４４のロード終了後に開始される。
【００６５】
最初のＯＰ１では、フィルタドライバ４４は、ディスクアクセス命令(ディスクＩ／Ｏ
命令)を受け取るごとに、ＰＶ方式のドライバ４２の初期化が完了しているか確認する。
【００６６】
初期化が完了している場合(ＯＰ１；ＹＥＳ)には、フィルタドライバ４４は、ディスクＩ／Ｏ命令のフック処理を開始し、上位ドライバ４３からの命令の内容によって予め決められた処理を行う(図３の表に従った処理を行う)。
【００６７】
すなわち、フィルタドライバ４４は、上位ドライバ４３からの命令がブートディスク１２１へのディスクＩ／Ｏ命令かどうかを判断する(ＯＰ２)。上位ドライバ４３からの命令がディスクＩ／Ｏ命令でなければ(ＯＰ；ＮＯ)、処理がＯＰ６に進む。命令がディスクＩ／Ｏ命令であれば(ＯＰ２；ＹＥＳ)、処理がＯＰ３に進む。
【００６８】
ＯＰ３では、フィルタドライバ４４は、ディスクＩ／Ｏ命令がＩ／Ｏエミュレーション方式のドライバ４１へのディスクＩ／Ｏ命令か否かを判断する。命令がドライバ４１への
ディスクＩ／Ｏ命令でなければ(ＯＰ３；ＮＯ)、処理がＯＰ８へ進み、命令がドライバ４１へのディスクＩ／Ｏ命令であれば(ＯＰ３；ＹＥＳ)、処理がＯＰ４へ進む。
【００６９】
ＯＰ４では、フィルタドライバ４４は、このＩ／Ｏ命令をフックし、この命令の宛先をドライバ４２へ書き換えてドライバ４２に与える。その後、処理を終了する。
【００７０】
ＯＰ５に処理が進んだ場合には、フィルタドライバ４４は、命令に対する処理を何ら行うことなく、Ｉ／Ｏエミュレーション方式のドライバ４１に命令を渡す。その後、処理が終了する。
【００７１】
また、ＯＰ６に処理が進んだ場合には、フィルタドライバ４４は、命令がドライバＢに対する、ブートディスク１２１のディスクの存在の問い合わせ命令かどうかを判断する。このとき、命令がブートディスク１２１のディスク存在問い合わせ命令であれば(ＯＰ６
；ＹＥＳ)、この命令を終端し、この命令に対する結果“失敗”を生成して、上位ドライ
バ４３に折り返す(ＯＰ７)。これに対し、命令がブートディスク１２１のディスク存在問い合わせ命令でない(ＯＰ６；ＮＯ、すなわち、汎用ディスク１２２のディスク存在問い
合わせ命令である)場合には、処理がＯＰ５に進み、フィルタドライバ４４は、当該命令
に対する処理を行うことなく、当該命令をドライバ４２に渡す。
【００７２】
また、ＯＰ８に処理が進んだ場合には、命令がドライバ４２向けのブートディスク１２１に対するディスクＩ／Ｏ命令であるものとして、フィルタドライバ４４は、当該命令を終端し、この命令に対する結果“成功”を生成して上位ドライバ４３に折り返す。その後、処理が終了する。
【００７３】
このフローチャートが終了した場合には、フィルタドライバ４４は、上位ドライバ４４から次の命令が来るのを待ち受ける状態となり、次の命令を受け取ると、ＯＰ１以降の処理を行う。
【００７４】
〔実施形態の効果〕
実施形態によれば、ブートディスク１２１をゲストＯＳのブートプロセス中にＩ／Ｏエミュレーション方式からＰＶ方式に切り替えることができる。これによって、次の性能面の問題が解決される。
【００７５】
（１）システムのブートにかかる時間が短縮化される。これによって、 高速なシステ
ムブートによりシステム利用者の快適性の向上が図られる。また、 高速なシステムブー
トによって、トラブル時のシステムリブート時などに、システムの早期復旧が実現される。
【００７６】
（２）ブート後、通常運用時のパフォーマンスが高くなる。すなわち、ブートディスクに対しては、ＰＶ方式を用いたディスクアクセスが行われる。このため、アプリケーションの高速な実行、ユーザアクセスの多重度の増加、ネットワークの高速レスポンスなどシステム性能が向上し、システム利用者の快適性を向上させることができる。
【００７７】
（３）メモリダンプ出力が高速になる。即ち、システムに障害が生じた場合に、メモリの内容がブートディスク中のファイル(例えばシステムファイル)に書き込まれる。ＰＶ方式が使用されることで、メモリダンプ出力(メモリ内容のファイル書き込み)の際に多大な時間を要する問題が解決する。よって、システムクラッシュした際のシステムの早期復旧が実現される。
【図面の簡単な説明】
【００７８】
【図１】管理ＯＳ及びゲストＯＳを有するディスクアクセスシステムを備える情報処理装置(コンピュータ)の構成例を示す。
【図２】図１に示したメモリ上に展開される仮想ディスクドライバを含むＸｅｎ(仮想ＯＳ)環境の概念図であり、Ｉ／Ｏエミュレーション方式とＰＶ方式とのそれぞれのディスクアクセス方式を使用したゲストＯＳを概念的に示す。
【図３】上位ドライバから宛先のディスクドライバに向けて送られた命令に対してフィルタドライバが処理する内容を示す表である。
【図４】フィルタドライバによるディスクの存在の問い合わせ命令処理の概念を示す。
【図５】フィルタドライバによるディスクＩ／Ｏ命令処理の概念を示す。
【図６Ａ】ゲストＯＳブート(起動)時におけるフィルタドライバの動作説明図である。
【図６Ｂ】ゲストＯＳブート(起動)時におけるフィルタドライバの動作説明図である。
【図６Ｃ】ゲストＯＳブート(起動)時におけるフィルタドライバの動作説明図である。
【図７】フィルタドライバによる命令処理動作例を示すフローチャートである。
【図８】従来のディスクアクセスシステムの例を示す図である。
【符号の説明】
【００７９】
１０・・・コンピュータ
１１・・・ＣＰＵ
１２・・・記憶デバイス
１３・・・メモリ
１４・・・ネットワークデバイス
１５・・・入力装置
１６・・・出力装置
２０・・・管理ＯＳ
２１・・・ＡＴＡＰＩ／ＩＤＥ標準ドライバ
２２・・・Ｉ／Ｏエミュレータ
２３・・・仮想ＳＣＳＩドライバ
３０・・・仮想マシンモニタ
３１・・・仮想ＡＴＡＰＩ／ＩＤＥハードウェア
３２・・・共有メモリ
４０・・・ゲストＯＳ
４１・・・仮想ＡＴＡＰＩ／ＩＤＥ標準ドライバ(第１のデバイスドライバ)
４２・・・仮想ＳＣＳＩドライバ(第２のデバイスドライバ)
４３・・・ディスククラスドライバ(上位ドライバ)
４４・・・仮想ディスクフィルタドライバ(ディスクアクセス方式切替装置)
【図１】
2009134601.tif 000003
【図２】
2009134601.tif 000004
【図３】
2009134601.tif 000005
【図４】
2009134601.tif 000006
【図５】
2009134601.tif 000007
【図６Ａ】
2009134601.tif 000008
【図６Ｂ】
2009134601.tif 000009
【図６Ｃ】
2009134601.tif 000010
【図７】
2009134601.tif 000011
【図８】
2009134601.tif 000012