(57)【要約】  本発明は、ＯＳレベルの仮想化技術を利用した移動型仮想マシンイメージを生成し、利用する方法を提供する。移動型仮想マシンイメージは、ＰＣのハードウェアに独立し、ＰＣのＯＳ環境を大部分利用しながらＯＳに結合および分離が容易であり、簡単で迅速な移動性、配布性、共有性、および初期化能力を提供する。
2010522370.tif 000002
【特許請求の範囲】
【請求項１】
ＯＳを備える仮想マシンイメージを実行する方法において、
仮想マシンテンプレートイメージをＯＳにマッピングする段階と、
前記マッピングされたイメージを利用して、仮想マシンをブーティングする段階と、を含むことを特徴とする仮想マシンイメージの実行方法。
【請求項２】
第１項において、
仮想ディスクを生成する段階と、
前記仮想ディスクに適応変換されたイメージをローディングする段階と、をさらに含むことを特徴とする仮想マシンイメージの実行方法。
【請求項３】
第１項において、
前記マッピングする段階は、権限マッピング、環境変数マッピング、ＯＳ設定マッピング、ドライブ名マッピング、共有される資源に対するマッピングの少なくとも一部を含むことを特徴とする仮想マシンイメージの実行方法。
【請求項４】
第１項において、
前記マッピングする段階は、スタンドアローン方式のイメージマッピング段階を含み、
前記スタンドアローン方式のイメージマッピング段階は、
仮想マシンイメージで提供するすべてのバージョンのＯＳファイルおよびレジストリ目録情報で実在のマシンのＯＳに存在する項目のみを記録する過程と、
実在のマシンのＯＳでファイルおよびレジストリ内容を仮想マシンイメージにコピーするかコピーしなければならないことを記録する過程を含むことを特徴とする仮想マシンイメージの実行方法。
【請求項５】
第１項において、
実行された仮想マシンのイメージを送信する段階をさらに含むことを特徴とする仮想マシンイメージの生成方法。
【請求項６】
第１項において、
前記マッピングする段階以前に、仮想マシンイメージを受信する段階をさらに含むことを特徴とする仮想マシンイメージの生成方法。
【請求項７】
第１項において、
前記ブーティングする段階は、
カーネル実行部で仮想カーネルを生成する段階と、
仮想装置ドライバ、仮想サービス、仮想システムプロセスの少なくとも一部をローディングする段階と、を含むことを特徴とする仮想マシンイメージの生成方法。
【請求項８】
第７項において、
前記仮想装置ドライバ、仮想サービス、仮想システムプロセスの全てまたは一部のカーネル構成要素のうち一部分は実在のマシンと共有し、残りの部分は共有しないことを特徴とする仮想マシンイメージの実行方法。
【請求項９】
第７項において、
前記カーネル実行部で仮想カーネルを生成する段階は、
スレッドレベルで仮想化を具現することを含むことを特徴とする仮想マシンイメージの実行方法。
【請求項１０】
ソフトウェアを配布する方法において、
前記ソフトウェアの配布のために少なくとも一つのサーバが設けられ、前記サーバはコンピュータネットワークを介してクライアントと通信可能であり、
クライアントのソフトウェアの配布要請を受信する段階と、
要請されたソフトウェアがインストールされた、仮想マシンイメージを生成する段階と、
生成された仮想マシンイメージをクライアントにトランスポートする段階と、を含むことを特徴とするソフトウェアの配布方法。
【請求項１１】
第１０項において、
前記要請は少なくとも一つのインストールされるプログラムの種類および各プログラムの所定の設定事項と構成要素のうち、少なくとも一つを予め決定することを含むことを特徴とするプログラムの配布方法。
【請求項１２】
第１０項において、
前記クライアントに提供された仮想マシンイメージをサーバまたは外部保存空間に保存する段階をさらに含み、
これにより、使用者は前記仮想マシンイメージの再トランスポートを受けることができることを特徴とするプログラムの配布方法。
【請求項１３】
仮想マシンイメージをトランスポートする方法において、
前記仮想マシンイメージをトランスポートするために少なくとも一つのサーバが設けられ、前記サーバはコンピュータネットワークを介してクライアントと通信可能であり、
クライアントが要請するコンピュータ環境の設定事項を受信する段階と、
受信された設定事項により、仮想マシンイメージを生成する段階と、
使用者の要請に応答して生成された仮想マシンイメージをトランスポートする段階と、を含み、
前記設定事項はソフトウェアの目録およびＯＳの環境設定のうち少なくとも一つを含むことを特徴とする仮想マシンイメージのトランスポート方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は仮想マシン技術に関するものであって、より具体的にはオペレーティングシステム(ＯＳ)レベルの仮想化技術を利用して、個人ＰＣ環境の移動性を実現する技術に関するものである。
【背景技術】
【０００２】
最近パーソナルコンピュータ(ＰＣ)に関する技術は急速に発展し、現代人は一日の大部分をＰＣとともにしている。ＰＣの文書処理機能とスプレッドシート等の各種アプリケーション製品により大部分の会社員は少なくとも一つのＰＣを使用するようになり、マルチメディア技術の発展はＰＣに基づいたエンターテイメント事業を発展させた。特にインターネットの普及は人間にとって、ＰＣに対する依存性の増大に決定的な役割を果たした。現代人はＰＣのない生活を想像することができなくなり、このような現象はますます深刻化するであろう。
【０００３】
パーソナルコンピュータの環境は、使用者に対して複雑なコンピュータ知識に関する要求を減らしていく方向に発展した。８０年代のＰＣは、使用者が直接コンピュータのＯＳが設けた命令語を直接入力しながらコンピューティング作業を処理することが求められたことから、命令語の入力に習熟していない使用者はコンピュータを全く利用できなかった。また、ハードウェアに関する情報を一々入力しなければ、コンピュータがそれぞれのハードウェアを認識して動作させることができなかった。
【０００４】
９０年代に入りＧＵＩ(Graphic User Interface)技術が発達して、コンピュータに命令を伝達する方式がより直観的かつ視覚的な方式に変化し、ＯＳがハードウェアを自ら認識する能力が増加して、使用者に対するコンピュータに関する知識の要求がより少なくなるようになった。
【０００５】
ところが、ＰＣは依然としてＯＳに対する知識、プログラムのインストールに関する知識、プログラムの設定に関する知識など、コンピュータに関して門外漢である一般人が自由にアプローチするには多少複雑な知識を要求しており、ＰＣはまだ一部の専門家たちしか自由自在に利用することができない。ＧＵＩをはじめとする多様な技術が普及したものの、今日に至ってもプログラムのインストールと設定は一般人が簡単にアプローチしにくく、各種ウイルスや悪性プログラムは一般人のコンピュータの使用をより一層困難にしている。
【０００６】
ＰＣがテレビや冷蔵庫のような大衆的な生活家電製品になるためには、コンピュータの使用が現在より容易にならなければならない。テレビの場合、使用者がリモコンを利用してチャンネルさえ変更することができれば、望むチャンネルを容易に、かつ素早く視聴することができる。コンピューティングの環境もこのように簡単に変化しなければならない。
【０００７】
現在のＰＣ環境は、いくつかの種類の新たな欲求に直面している。それはＰＣ環境の簡単かつ迅速な移動性、ソフトウェア配布の簡便化、物理的に一台のＰＣに対する各使用者の環境の独立性を保障する新たな共有方式、いつでも自らが望む初期状態にＰＣを再設定することができるＰＣ環境の設定方式などである。
【０００８】
まず、ＰＣ環境の移動性を察し見ると、ＰＣは他の家電製品とは異なり、個人ごとに使用するコンピューティング環境が異なる。ＰＣのハードウェアの仕様も千差万別であるが、同一のハードウェアと同一のＯＳを使用するとしても、ＯＳに対する各種デスクトップの環境の状態が異なり、使用しているアプリケーションソフトウェアも各々異なる。このような点は、次のような問題を引き起こす。
【０００９】
例えば、家庭と会社でＰＣを使用する人は、家庭と会社のＰＣ環境が各々異なる。したがって、会社の仕事に必要な作業を家庭でしようとすると、家庭のＰＣ環境を会社のＰＣ環境のようにしなければならない。必要なソフトウェアもインストールしなければならず、各種デスクトップの設定も本人が仕事をするのに便利な設定状態に変えなければならない。また別の場所に出張に行って、コンピュータ作業をしなければならない場合、出張所のＰＣ環境を調整するようにならなければならない。このような煩わしさを解消しようとして、ノートブックが利用されている。ところが、ノートブックは価格が相対的に高価であり、重い本体を持って移動することも大きな負担になっている。
【００１０】
第二に、ソフトウェアの配布について調べて見ると、新たなソフトウェアを購入した使用者は、オンラインまたは記録媒体を通じて購入したソフトウェアをＰＣにインストールする過程を経なければならない。インストールの過程は比較的簡単であるが、これに困難を感じる人は少なくない。また、一度インストールしたソフトウェアに外部的または内部的要因により異常が発生した場合、再インストールをしなければならない不便さが存在する。
【００１１】
事務環境においては、一般的にＰＣ環境がグループ化されて設定される。必要とするソフトウェアが同じようなグループが作られることもあり得るが、その基準は同じ部署である事もあり同じ職級でもあり得る。一つのグループに対する必要なソフトウェアを全て含む一つのＰＣ環境を迅速に設定することは、ＰＣマネージャーの役割である。ところが、各職員に対する一つ一つの要求を処理することは、かなり時間がかかる非効率的な作業である。各グループ別にＰＣ環境があらかじめ保存されており、これを素早く提供できるのであれば、部署の配置が変わる時ごとに、新入社員が入社する時ごとに、業務に必要なソフトウェア目録が変わる時ごとに迅速に業務環境を整えることができる。究極的にはＰＣマネージャーが必要ない程に、誰でも容易にかつ手軽なようにＰＣの業務環境を整えるべきである。
【００１２】
第三に、ＰＣの共有について察し見ると、二人が一台のＰＣを共有する場合、二人は各自が要求するＰＣ環境が異なる。ひとりに最適化されたＰＣ環境は他の人に不便になり得、時にはひとりがＰＣをウイルスに露出させて、他の人にまで被害を与えることがある。この場合、ＰＣを各自が一つずつ保有するしかない。
【００１３】
第四に、ＰＣ環境の初期化の問題を察し見ると、現代のＰＣは常にウイルスや悪性コードなどに露出されていて、時間が過ぎるにしたがってＰＣが麻痺することがあり、時には本人のミスによりＰＣが正常に作動することができない場合も発生する。この場合、原因を診断して修理することができる専門的な知識を備えた専門家が必ず必要であり、そうでなければ大部分がハードディスクをフォーマットして必要なソフトウェアを再インストールし、デスクトップの環境を再設定する。これはＰＣの使用において、この上なく大きい障害である。ＰＣが一般家電と同じように容易にかつ便利に利用されるためには、問題が発生するとしても専門家の援助なしに簡単に何度かのマウスクリックの動作によりいつでも使用者が設定した初期ＰＣ環境のクリーンな状態に復旧されなければならない。
【００１４】
ＰＣに対する人間の依存性が深刻化するほどに、時間と場所に対する制約なしに常に自分だけのＰＣ環境でコンピュータを利用しようと思う要求は増大するであろう。ところが、現在の技術での解決策は、結局ノートブックと同じさらなるハードウェアを利用することに帰着する。
【００１５】
一方、最近仮想マシンに対する研究が活発に進められている。仮想マシンは１９６０年代に一台のメインフレームを何台かのマシンに仮想的に分けて使用するために導入された概念である。ところが、マイクロコンピュータやＰＣの価格が下落するのにともない、一台のメインフレームを分けて使用することよりは何台かのＰＣを導入することが費用の側面で有利になり、その結果１９８０年代に入って仮想マシンの技術はほとんど使われなくなった。ところが、１９９０年代入って、多数の小容量コンピュータを使用することが管理および維持補修の費用をむしろ増加させ、コンピュータ資源の効率的使用も問題があったので(一例としてＡサーバはＣＰＵ使用率が１０％であるのに比べて、ＢサーバはＣＰＵ使用率が９９％である場合がある)再度、仮想化技術に関心を傾け始めた。ところが、大容量サーバの効率的な資源管理のための仮想化技術に関することが主であって、クライアントシステムのための仮想化技術に対してはまだ研究が不備である。
【００１６】
あらかじめ言及するが、本発明はＰＣ環境の容易で迅速な移動、配布、共有および初期化を実現するために仮想マシンを利用する。
【００１７】
仮想マシンを具現する方式は多様である。今までに知られた仮想化具現方式を列挙してみると、ハードウェアレベルの仮想化、アプリケーションレベルの仮想化、ＯＳレベルの仮想化などがある。以下、仮想化技術に対するこれまでの研究と限界を調べて見る。
【００１８】
ハードウェアレベルの仮想化
ハードウェアレベルの仮想化は、ＣＰＵ、メモリー、ハードディスク、ＢＩＯＳなどをソフトウェア的にエミュレーション(full virtualization)する方式と、ハードウェアの仮想化を支援するデバイス(ＣＰＵ)を利用した準仮想化(paravirtualization)方式がある。
【００１９】
命令語の三つのレベルの仮想化方式は、中央処理装置、メモリー、チップセット、バースおよび各種周辺装置(ネットワークカード、ハードディスク、フロッピーディスク、ＣＤ−ＲＯＭ)をソフトウェア的にエミュレーションして仮想マシンを生成するのである。命令語の三つのレベルの仮想化方式は、仮想マシンで発生するすべての命令語をソフトウェア的に処理しなければならないので、処理速度の低下をはじめとして性能上の問題が多い。
【００２０】
準仮想化方式は、命令語の三つのレベルの仮想化方式とは異なり、命令語をエミュレーションするのではなく、ＯＳのソースコードやバイナリを修正して、一つのハードウェアにおいていくつかのＯＳが実行されるようにするのである。最近では、ＯＳを修正しなくても一つのハードウェアにいくつかのＯＳを実行することができるようにする形態のＣＰＵも開発された。準仮想化方式は、命令語の三つがソフトウェア的に再解釈される訳ではないため処理速度が速い。
【００２１】
ハードウェアレベルの仮想化は標準ハードウェアを提供するようになって、生成された仮想マシンイメージは一つのＰＣ環境それ自体であることから、これをコピーするとインストールされたＯＳまで共にコピーされるので、独立性および移動性が確実に保障される。
【００２２】
ところが、ハードウェアの性能は下降平準化される。例えば、実在のＰＣに良い３Ｄグラフィックカードが装着されていても、仮想マシンが旧型２Ｄグラフィックカードをエミュレーションして仮想ハードウェアを提供したのであれば、結局旧型２Ｄグラフィックカードで動作する。結局、まだエミュレーションされていないデバイス(IEEE1394等)は使用が不可能である。ところが、現実的に現在市販されているすべてのハードウェア装置をエミュレーションすることは不可能である。
【００２３】
また、ハードウェアレベルに仮想化された一つの仮想マシンは、一つのＯＳ資源をすべて使用することから、複数の仮想マシンを同時に実行させるのは難しい。例えば、ウインドウズVistaの場合、約１ＧＢラムが必要であることから、三つの仮想マシンを正常に実行しようとするならば実在のマシンを含めて４Ｇのラムが必要である。
【００２４】
さらに、一つのイメージの大きさが相対的に大きい。すべてのハードウェアの要素を全てエミュレーションしなければならないため、多くの容量を占める。現在までに市販されたハードウェアレベルの仮想化を利用した仮想マシンのイメージは、ギガ単位の容量を持つ。また、メモ帳のような小規模のアプリケーションを配布する時も、数百ＭＢ〜数十ＧＢのＯＳイメージが含まれなければならないので非常に非効率的である。
【００２５】
また、仮想マシンに新たなＯＳをインストールする訳であるため、ＯＳライセンスがさらに必要である。これは使用者に対してＯＳをもう一つ購入することを要求する。
【００２６】
また、実在のマシンにインストールされた各種アプリケーションと設定されたＯＳ環境を、仮想マシンでは共に使用することができない。実在のマシンと仮想マシンは、完全に独立しているためである。Ｐ２Ｖという製品を利用して、複製して使用することはできるが、共に使用することは不可能である。
【００２７】
ところが、各仮想マシン別に完全に独立したＯＳをインストールすることができるため、ＶＰＳ(Virtual Private Server)、サーバ統合などのサーバの仮想化に適した方式であり、ソフトウェアの開発およびテストなどの分野にも活用されている。
【００２８】
結局ハードウェアレベルの仮想化は、サーバ仮想化としては適しているものの、デスクトップの仮想化の商用化の可能性は劣る。
【００２９】
アプリケーションレベルの仮想化
アプリケーションレベルの仮想化方式は、Sun Micro Systems社によって開発されたJava Virtual Machineのように、アプリケーションをバイトコード形態に作成して、一つのアプリケーションが多様な異機種のハードウェアおよびソフトウェアの環境において実行されるようにするものである。
【００３０】
初期アプリケーションレベルの仮想化製品は、ソフトウェアの衝突防止を目的として開発された。ウインドウズ環境を例にあげると、プログラムは実行ファイル(.exeなど)と共有ライブラリー(.dllなど)から構成される。このとき、共有ライブラリーは多様な会社で製作した様々なソフトウェアとして共有される場合が多い。例えば、c:WwindowsWsystem32Wmsvcrt.dllという共有ライブラリーは、Ａという会社で製作したＡ'プログラムで使用され、Ｂという会社で製作したＢ'プログラムで共有されて使用される。
【００３１】
ところで、msvcrt.dllは同一ファイル名に多様なバージョンが存在し得る。もし、Ａ'プログラムが2.0.0.0バージョンのmsvcrt.dllをc:WwindowsWsyste32ディレクトリにインストールして使用していて、Ｂ'プログラムがインストールされて、これを1.0.0.0バージョンに上書きすると、Ａ'プログラムが正常動作することができないことがある。
【００３２】
アプリケーションレベルの仮想化を利用すると、各アプリケーション別に固有のファイルシステム保存空間が割り当てられることから、同一ファイル名の共有ライブラリーがアプリケーション別の保存空間に独立して保存されるため、このような衝突の問題を回避することができる。
【００３３】
以後アプリケーションレベルの仮想化は、アプリケーションストリーミング技術に発展した。アプリケーションの実行に必要な実行ファイル、共有ライブラリー、レジストリなどのデータ(以下、アプリケーションデータ)を使用者のＰＣでないサーバに保存しておき、使用者がＡアプリケーションを実行した時に必要なデータをサーバで動的に受け入れるように具現すると、使用者はＡというアプリケーションをＰＣにインストールしなくても実行して使用できるようになる。
【００３４】
現在アプリケーションレベルの仮想化技術は、アプリケーションデータをＵＳＢドライブに保存してＵＳＢドライブをＰＣに連結すると、該当アプリケーションをインストールなしに直ちに使用することができる形態に発展している。これは一つのアプリケーションを任意のＰＣで実行可能なようにすることによって、ＰＣ環境の移動性を制限的に提供する。
【００３５】
ところが、アプリケーションレベルの仮想化は、ファイル、レジストリデータのみを別途に保存するため、インストール段階での衝突の問題は解決できるが、実行段階での衝突の問題は解決できない。例えば、Ａというアンチウイルス製品とＢというアンチウイルス製品を共にインストールして使用する場合、互いに互いを監視して誤謬を発生させ、正常でない終了をする場合が多い。このような実行段階での衝突は、アプリケーションレベルの仮想化で解決することができない。
【００３６】
また、アプリケーションレベルの仮想化で仮想化することができないアプリケーションあるいはカスタマイジングが必要なアプリケーションが多数存在する。ウインドウズサービスやカーネルモジュールを使用するアプリケーション、ＯＳの特定の構成要素に依存するアプリケーションなどがその例である。このようなアプリケーション依存性は、アプリケーションの支援目録を必然的に要求するようになる。結果として、アプリケーションレベルの仮想化は全体のコンピューティング環境を提供するのではなく、特定アプリケーションのみ仮想的に使用することができるようにするのに止まる。
【００３７】
ＯＳレベルの仮想化
最後に、ＯＳレベルの仮想化方式は、ＯＳの各構成要素(プロセス、ファイルシステム、ネットワーク資源、システムコールインターフェース、ネームスペースなど)を仮想化する方式である。従来のＯＳレベルの仮想化方式は、主にＶＰＳ(Virtual Private Server)のようなサーバ仮想化を目的として開発された。サーバコンピュータのＯＳカーネルをパーティショニングし、各パーテーション別に独立したＯＳ環境を提供する。
【００３８】
従来のサーバホスティングの場合、使用者に物理的サーバを1台ずつ提供していた。使用者別の完全なＯＳ空間が提供されるものの、実在サーバを購入しなければならない関係で初期費用がかさみ、維持費用もかなり必要である。
【００３９】
ＯＳレベルの仮想化は、一つのＯＳに独立した複数の仮想ＯＳを生成することができる。使用者はＯＳの必要な環境を独立して使用することができ、物理的サーバを実際に購入しなくても良いので費用が節減される。
【００４０】
あるいは、ソフトウェアの開発およびテストなどの目的で多数のＯＳ環境が必要な使用者に、独立したＯＳ空間を効率的に提供するための方法としても使用されてきた。
【先行技術文献】
【特許文献】
【００４１】
【特許文献１】米国特許第６，９７８，４３９号明細書
【特許文献２】米国特許第６，３５６，９１５号明細書
【特許文献３】米国特許出願公開２００５−００７６３２６号明細書
【特許文献４】米国特許第５，７５２，００５号明細書
【発明の詳細な説明】
【００４２】
（技術的課題）
本発明はＰＣ環境の簡単かつ迅速な移動方式、ソフトウェアの新たな配布方式、使用者の独立性が保障されたＰＣの新たな共有方式、容易で手軽なコンピューティング環境の初期化方式を実現するための新たな仮想化技法を提供するものである。これを通じて、ＰＣの使用者に対してＯＳに対する知識、プログラムインストールに関する知識、プログラム設定に関する知識を要求せずに、一般家電製品程度の水準で容易で自由にＰＣを使えるようにコンピューティング環境を提供しようとするものである。
【００４３】
本発明はこれを解決するために、ＰＣのハードウェアに独立し、ＰＣのＯＳ環境を大部分利用しながらＯＳに結合および分離が容易であって、簡単で早い移動性、配布性、共有性および初期化能力を提供する移動型仮想マシンイメージを提供する。本発明において‘移動型’という用語は、前記特徴を有することを意味する。
【００４４】
現在、仮想化技術はサーバ統合、ソフトウェア開発およびテスト、ホスティング分野で数多く使用されている。ところが、本願が追求する移動型仮想マシンイメージに関する研究はまだ進められていない。前述した通り、従来のいかなる仮想化方式も本発明の目的を達成することができない。
【００４５】
ハードウェアレベルの仮想化方式を利用する場合、一台の仮想マシンが必要とするメモリー、ハードディスクの資源は実在のマシンと同一であるため、一台の物理的マシンに多数の仮想マシンを生成するのは困難である。
【００４６】
ところが、ＯＳレベルの仮想化を利用すると一つのＯＳですべての仮想サーバを駆動することができるため、個別仮想マシンのＯＳの駆動に必要な資源が要求されず、ハードウェアレベルの仮想化方式に比して少ないリソースで多数の仮想マシンを駆動することができる。
【００４７】
ＯＳレベルの仮想化が前記のような利点を有しているにも拘わらず、ＰＣ環境の移動などに積極的に活用されない理由のうちの一つは、仮想マシンイメージの移動性が保障されなかったためである。
【００４８】
ハードウェアレベルの仮想化の場合、ＯＳを含む一つの独立したシステムを構成する仮想マシンイメージを生成するため移動性が保障される。ところが、ＯＳレベルの仮想化の場合、ＯＳを分離して仮想的に利用するのにとどまり、実在のＯＳから自由に分離して、他のＯＳに結合する一つの完全な仮想マシンイメージを生成する訳ではないことから、移動性を実現することができなかった。
【００４９】
その理由は、ＯＳ環境に従属的な機能、使用者の実在のＯＳと共有すべき資源などが存在するためである。ＯＳはシステム設定、ドライブ名、ホームディレクトリの経路、ファイルの権限および経路、レジストリ権限および経路などが使用者別に異なり、生成された仮想マシンイメージがこのような多様な環境で正常に実行されないためである。
【００５０】
ＯＳレベルの仮想化を利用し、完全な移動性が保障される仮想マシンイメージを生成して利用することができるのであれば、ＯＳレベルの仮想化の長所をそのまま利用するようになるため、ＰＣ環境の迅速かつ便利な移動性が最も効率的に具現される。本発明はＯＳレベルの仮想化を利用して、移動型仮想マシンイメージを生成する方法を提供する。
【技術的解決方法】
【００５１】
以下、本発明のＯＳレベルの仮想化の基本概念を説明する。
【００５２】
ＯＳレベルの仮想化
ＯＳはカーネル(Kernel)、デバイスドライバ(Device Driver)、システムプロセス(System Process)、サービスプロセス(Services process)等から構成される。
【００５３】
カーネルは運営体の核心である。カーネルはＯＳの一部であって、ＯＳの他のすべての部分に様々な基本的サービスを提供する。カーネルはシステムのハードウェアやリソースを管理してこれを抽象化(Abstraction)する。
【００５４】
一般的にカーネルは、カーネル実行部(Kernel Executive)、HAL(Hardware Abstraction Layer)から構成される。
【００５５】
カーネル実行部は、プロセスおよびスレッド管理(process and thread management)、メモリー管理(memory management)、オブジェクト管理(object management)、保安管理(security management)、プロセス通信管理(inter-process communication management)等を担当する。
【００５６】
HALはハードウェアを抽象化して、カーネルの他の構成要素、あるいはアプリケーションがハードウェアに直接アプローチしなくてもハードウェアを使用することができるようにしてくれる。
【００５７】
デバイスドライバは、物理的な装置を制御したり、カーネルレベルで実行されなければならない命令語を実行するのに使用される。
【００５８】
システムプロセスはユーザモードで実行されるＯＳの核心プロセスであって、デバイスドライバ要請処理、使用者ログイン/ログオフ処理、保安関連処理などを担当する。
【００５９】
サービス(daemon)プロセスは、ユーザモードにおいてバックグラウンドで実行されるプロセスであって各種サービスを担当する。例えば、ファイル共有サービス、テレネットサービス、ウェブサービス、プリンタサービスなどがある。これらのサービスプロセスは、バックグラウンドで実行され、ＯＳの他の構成要素、あるいはアプリケーションが該当機能を使用することができるように支援する。
【００６０】
アプリケーションプロセス(Application process)はＯＳで実行され、使用者に実際に必要な機能を提供するソフトウェアを意味し、ワードプロセッサーアプリケーション、メディアレイヤアプリケーションなどがある。一般的にソフトウェアはＯＳとアプリケーションを意味する(software = operating system + application)。
【００６１】
(階層化されたカーネル構成要素)
図1は、本願の仮想化方式の望ましい実施例を構成図として示した図面である。
【００６２】
独立したゲストＯＳの実行環境は、仮想カーネル、実行空間、仮想マシンデータから構成される。
【００６３】
表1はＯＳを含む一般的なＰＣの構造である。
【００６４】
【表１】
2010522370.tif 000003
【００６５】
ＯＳの各構成要素であるＨＡＬ、カーネル実行部、デバイス ドライバ、システムプロセス、サービスなどは階層化(layered)されている。
【００６６】
上位階層の構成要素が、下位階層の構成要素に特定機能の処理を要請すると、下位階層は該当要請を処理した後、結果をリターンする。
【００６７】
仮想化は上位階層の要請を下位階層が処理する時、これを制御することによって具現される。例えば、デバイスドライバがカーネル実行部に特定オブジェクトの生成を要請するとき、仮想空間に該当オブジェクトを生成した後、結果をリターンし、アプリケーションがc:Wmyfile.txtファイルの生成を要請すると、カーネル実行部はこれを実在のディスクでない仮想ディスクに生成した後、結果をリターンする。
【００６８】
上位階層は下位階層の応答を利用してすべての機能を処理するため、下位階層で仮想化が具現されれば、上位階層は修正なしに仮想マシンで実行される。
【００６９】
本発明においては、ＯＳの最も下位階層であるHALおよびカーネル実行部の階層で仮想化を具現して、上位階層のデバイスドライバ、システムプロセス、サービスプロセス、アプリケーションは特別な修正なしに仮想空間で実行されるようにする。
【００７０】
以下、本発明の移動型ＯＳを具現する方法を説明する。
【００７１】
(仮想カーネルの生成)
仮想カーネルは、カーネル実行部の階層で上位階層から要請をディスパッチ(dispatch)することで具現される。実在のマシンに属したスレッドあるいはプロセスでの要請は実在空間でディスパッチされ、仮想マシンに属したスレッドあるいはプロセスでの要請は仮想空間でディスパッチされる。仮想マシン内で実行されるということは、カーネル実行部に対する要請がディスパッチされるということを意味する。
【００７２】
図3は、カーネルの上位レイヤでの要請がカーネル実行部を経て、仮想空間または実在空間にディスパッチされることを示している。
【００７３】
カーネル実行部に対する仮想化は、ファイル、レジストリ、オブジェクトなどのネームスペースに対する仮想化と、プロセスおよびスレッドに対する仮想化、メモリー仮想化として具現される。
【００７４】
ネームスペースに対する仮想化の具現方法は次の通りである。
名前を有するカーネル構成要素は、ファイル、レジストリ、その他のカーネルオブジェクトなどがある。ファイルの場合WDeviceWHarddiskVolume1Wmyfile.txtという名前を有し、レジストリの場合WRegistryWMachineWSoftwareWmykeyという名前を有し、カーネルオブジェクトの場合WBaseNamedObjectsWmyobjectという名前を有する。
【００７５】
これらの名前は、ネームスペースで管理される。特定のカーネルオブジェクトを開く場合、カーネル実行部は該当オブジェクトが存在するか否かをネームスペースでチェックし、特定カーネルオブジェクトを生成する場合、重複するオブジェクトがあるか否か等もネームスペースでチェックされ、カーネルオブジェクトが生成された場合、オブジェクト名がネームスペースに記録される。各仮想マシンは固有のネームスペースを有する。例えば、ＶＭ１仮想マシンの場合、上記例のファイル WDeviceWHarddiskVolume1Wmyfile.txtに対する要請はWVM1WDeviceWHarddiskVolume1Wmyfile.txtにディスパッチされ、上記例のレジストリWRegistryWMachineWSoftwareWmykeyに対する要請はWRegistryWVM1WMachineWSoftware Wmykeyにディスパッチされ、上記例のオブジェクト WBaseNamedObjectsWmyobjectに対する要請は、WVM1WbaseNamedObjectsWmyobjectにディスパッチされる。もちろん、ディスパッチされる名前の形態は、任意にその規則を設定することができる。このように、各仮想マシン別に独立したネームスペースを付与することによって、ネームスペースに対する仮想化が具現される。
【００７６】
プロセスおよびスレッドに対する仮想化については、具現方法は次の通りである。
【００７７】
ＯＳの観点において、スレッドは実行の最小単位であり、プロセスはメモリアドレスを共有するスレッドの集合である。プロセスやスレッドに対する生成要請は、カーネル実行部に伝えられる。カーネル実行部は、子プロセスの生成を要請した親プロセスが特定仮想マシン内にある場合、子プロセスも該当仮想マシン内で生成する。カーネル実行部は、スレッドの生成を要請したスレッドのプロセスが仮想マシン内にある場合、該当スレッドも該当仮想マシン内で生成する。一般的にＯＳレベルの仮想化は、プロセス単位で仮想化が具現されるため、上記段階で充分である。
【００７８】
ところが、本願発明は仮想化の最小単位はプロセスでなくスレッドである。その理由は、効率的なＯＳレベルの仮想化を具現するために一部のＯＳプロセスを仮想マシンで新しく生成するのではなく、実在のマシンのプロセスを共有し、この場合、ひとつのプロセス内で特定スレッドは実在のマシンで実行され、特定スレッドは特定仮想マシンで実行されなければならないためである。カーネル実行部が、スレッド生成の要請を受ける場合、スレッドの生成を要請した親スレッドが仮想マシン内にあれば、該当スレッドも仮想空間で実行する。
【００７９】
(仮想マシンイメージマッピング)
同一のＯＳであるとしても、各システム別に設定されている使用者の権限や各種システムの設定が異なることから、ある仮想マシンで使用されていた仮想マシンイメージを他の仮想マシンで使用しようとすれば、仮想マシンイメージのマッピング過程を経なければならず、細部的には権限マッピング、環境変数および設定マッピング、仮想マシンと実在のマシン間に共有される資源に対するマッピングなどが含まれる。このようなマッピングは、仮想マシンイメージを実在のマシンに合うように設定を変換する方式と、カーネル実行部に特定イメージの設定を登録する方式があり、二つの方式すべて、あるいはどちらか一つの方式のみを適用することができる。
【００８０】
権限マッピングの細部内容は次の通りである。
【００８１】
多重使用者ＯＳは使用者別アプローチ制御機能を提供し、これを利用してファイル、レジストリ、装置別に特定の使用者に特定の権限を付与することができる。仮想マシンイメージは権限情報が存在しなかったり、イメージを制作した当時に使用者の権限で設定されている。一部のＯＳのこのような権限が合わない場合、ブーティングが中断される場合もある。したがって、イメージを持込むとき、権限マッピング段階を経なければならない。
【００８２】
仮想マシンイメージを実在のマシンに合うように変更する場合、イメージ内の各ファイル、ディレクトリ、レジストリ、装置などの権限の設定を実在のマシンのＯＳ環境に合う値あるいはＯＳ基本値に設定することができる。もちろん、使用上ＯＳのアプローチ制御機能が必要でないか、またはアプローチ制御が設定されていなくても動作に問題がないファイル、ディレクトリ、レジストリ、装置については権限マッピング過程は省略されても構わない。
【００８３】
カーネル実行部に登録する方式の場合、仮想カーネル実行部に該当アカウント自体を登録する。
【００８４】
環境変数および設定の再マッピングは、実在のマシンの環境変数と設定が実在のマシンのドライブ経路を基準として記録されている。仮想ＯＳがインストールされた仮想ディスクドライブ名は、実在ＯＳがインストールされた物理的ディスクのドライブ名と異なり得るため、環境変数あるいは設定値のうちマッピングが必要な部分は新たにマッピングしなければならない。
【００８５】
共有される資源に対するマッピングは、下記の通りである。
【００８６】
システムプロセス、サービスプロセスなど一部のＯＳの構成要素は、実在のマシンと仮想マシンの間に共有され、これらのプロセスで使用される資源もまた共有される。スレッド別に割り当てられる資源は、スレッドレベルの仮想化を通じて解決されるが、プロセス別に割り当てられる資源は状況に合う処理をしなければならない。例えば、ウインドウズの場合、kernel32.dll、user32.dllファイルは実在のマシンと仮想マシンの間にバージョンが同期化されなければならない。
【００８７】
(スタンドアローン(Stand alone)方式の仮想マシンＯＳイメージの生成)
仮想マシンイメージ内にはＯＳデータファイルが含まれており、一般的にＯＳデータ ファイルは数百MB以上の空間を占める。本願発明はＯＳレベルの仮想化であるため、ＯＳファイルは仮想マシンイメージに入れて配布するのではなく、実在のマシンのＯＳを利用して直接生成することができる。配布される仮想マシンイメージ内にはファイル目録、レジストリ目録、ＯＳ設定値と同じＯＳイメージの直接の生成に必要な最小限のデータのみを含め、ファイルデータ、レジストリデータなどは実在のマシンのＯＳにおいて内容をコピーして使用することができる。
【００８８】
配布される仮想マシンイメージ内に含まれるファイル目録、レジストリ目録、ＯＳ設定値のようなデータは、同一のＯＳの多様なバージョンに存在するすべての目録、或いは一部の目録を含む。例えば、ウインドウズＯＳはウインドウズ２０００、ウインドウズＸＰ、ウインドウズ２００３等、多様なバージョンが存在し、仮想マシンイメージはすべてのウインドウズバージョンあるいは一部のウインドウズバージョンに使用されるファイル、レジストリ目録を含むことがある。
【００８９】
イメージマッピングの段階で、上記目録のうち実在のマシンのＯＳに存在する項目だけを使用するように記録する。以後、実際のマシンのＯＳにおいて仮想マシンイメージにファイルおよびレジストリデータの内容をコピーする。コピーはイメージマッピング段階でなされ得、仮想マシンの実行段階で該当ファイルやレジストリが実際に使用される時になされることがある。
【００９０】
ウインドウズＯＳは、ＤＯＳ環境との互換性のために8.3形式の短いファイルネーム(Short File Name、SFN)ファイル名と、長いファイルネーム(Long File Name、LFN)を共に支援するが、ファイルをコピーするとＬＦＮは同一であるものの、ＳＦＮは実在のＯＳと生成されたイメージが互いに異なることもある。したがって、ファイル複写後、ＳＦＮを一致させなければならない。レジストリに記録されたファイル名も、共に一致しなければならない。
【００９１】
(ストリーミング方式のイメージトランスポート)
仮想マシンイメージファイルは、一般的に非常に大きい。仮想マシンを使用するためにイメージファイル全体をダウンロードあるいはコピーした後に使用することもできるが、イメージストリーミング方式でイメージをトランスポートする場合より全体のイメージをダウンロードする時まで待たずに仮想マシンを使用することができる。ストリーミングはイメージファイルをストリーミング記憶装置に保存しておいて、仮想マシンの使用中に必要な部分だけをダウンロードあるいはコピーして使用する方式であり、ストリーミング記憶装置は、ファイルサーバ、ウェブサーバ、FTPサーバのようなサーバ形態の記憶装置でもあり得、ＵＳＢドライブやＣＤ／ＤＶＤロムのような移動式記憶装置であることもあり、一般のハードディスクのような固定式記憶装置であることもある。
【００９２】
ストリーミング方式のディスクイメージトランスポートは次のような手続きからなる。プロセス、スレッド、デバイスドライバ内のインストラクションが特定ファイルあるいはディレクトリに対するアプローチを要請すると、仮想カーネル実行部はこの要請を仮想ディスクにディスパッチする。仮想ディスクは要請されたファイル、あるいはディレクトリの仮想ディスク上の位置を計算し、これを利用してディスクイメージファイルにおける位置(offset)を求める。計算された位置と必要な長さ(length)をストリーミングイメージ記憶装置に要請すると、ストリーミングイメージ記憶装置はイメージファイルの指定された位置(offset)で指定された長さ(length)だけのデータをトランスポートする。仮想ディスクはトランスポートされたデータを利用して、実行を継続する。
【００９３】
ストリーミング方式のレジストリイメージのトランスポートは、次のような手続きからなる。
【００９４】
プロセス、スレッド、デバイス ドライバ内のインストラクションが特定のレジストリキーあるいは値に対するアプローチを要請すると、仮想カーネル実行部はこれを処理するためにレジストリイメージファイルにアプローチする。この時、レジストリイメージファイルにおいてアプローチしなければならない位置(offset)と長さ(length)が計算され、この要請をストリーミング記憶装置にトランスポートする。ストリーミング記憶装置は、レジストリイメージファイルで指定された位置(offset)と長さ(length)のデータを処理した後、結果をリターンする。仮想カーネル実行部は、トランスポートされたデータを利用して実行を継続する。
【００９５】
(仮想ディスクを介したイメージローディング)
仮想ディスクは、実在のハードディスクをソフトウェア的にエミュレーションする仮想装置である。一つの仮想ディスクは、一つあるいはいくつかの仮想イメージファイルと連結され、仮想ディスクの特定セクターはイメージファイルの特定位置と連結する。したがって、仮想ディスクの特定セクターへのデータの読み取り、書き取りの要請は、イメージファイルの特定位置に該当データを読み取り、使用する形態でエミュレーションされ、その他パーテーションおよびディスクに対する制御要請も同じ方法で処理される。仮想ディスクを利用すると、仮想マシン内に存在する多数のファイルおよびディレクトリが実在のマシンでは一つのディスクイメージファイルで存在するので移動性が向上し、イメージファイルに暗号化を適用すると、他の使用者は暗号を知らなければ仮想マシンを使用することができないので、機密性も良くなる。ＯＳにより、各ディスクはドライブ名が付与される。例えば、ウインドウズＯＳの場合、Ｃ:,Ｄ:などのドライブ名が付与される。仮想ディスクも自主的なドライブ名を有することから、同じＣ:ドライブでも仮想マシンのＣ:ドライブは仮想ディスクを指し、実在のマシンのＣ:ドライブは物理的ディスクを指す。
【００９６】
本願発明において、仮想マシンディスクイメージは低容量オプション(light option)を提供する。一般的にＯＳを使用しようとすると、数百メガバイト以上の保存空間が必要である。ディスクイメージ内にすべてのファイルを含むこともできるが、効率的な移動性を保障するために空のイメージあるいはファイルの目録だけが取り入れられたイメージを配布し、ファイルの内容は実在のマシンのＯＳのものを利用する方式も可能である。また、実在のマシンとの衝突を最小化するために、ＯＳはＯ:ドライブ、アプリケーションプログラムはＰ:ドライブに設定して、仮想ディスクイメージを制作、配布することができる。
【００９７】
(階層化された仮想マシンイメージ)
仮想マシンイメージを単一のファイルでなく階層化された構造で提供する場合、使用中に必要なイメージファイルを挿入することもでき、仮想マシンに問題が発生した場合、問題となるイメージファイルのみを新たなものに交替することができるなど長所がある。仮想マシンイメージはＯＳのイメージ階層、アプリケーションプログラムのテンプレートのイメージ階層、使用者データのイメージ階層、臨時データのイメージ階層に分かれる。臨時データ階層は、仮想マシンの実行過程で生成されたデータにより仮想マシンに問題が生じた時に削除されても構わないデータが保存される。使用者のデータイメージ階層は、使用者が生成したデータで各種文書ファイル、使用者の指定ファイル、使用者が直接インストールしたソフトウェアのファイルおよびレジストリなどが保存される。アプリケーションプログラムのテンプレートイメージは、仮想マシンイメージの送信機能を通じて生成されたアプリケーションイメージであり、このイメージファイルは仮想マシンの使用中に変更されない。仮想ＯＳテンプレートイメージは、仮想ＯＳのファイルおよびレジストリを含んでいるイメージであり、このイメージファイルは仮想マシンの使用中に変更されない。
【００９８】
図2に示されているように、仮想ＯＳ、アプリケーションプログラムテンプレート、使用者データ、臨時データは階層化されている。ファイルシステムを例にあげると、ファイルシステムスタックには仮想ＯＳファイル、アプリケーションプログラムテンプレートファイル、使用者データファイル、臨時データファイルが保存されている。アプリケーションプログラムがc:Wmyfile.txtを要請すると、臨時データにおいて該当ファイルを探し、存在しなければ使用者データファイルから探し、存在しなければアプリケーションデータファイルから探し、存在しなければ仮想ＯＳファイルから探す。レジストリも同じ方式により動作する。
【００９９】
(仮想ＯＳのブーティング)
使用者がＯＳを使用しようとすると、ＯＳをブーティングしなければならない。ＯＳブーティングの段階は、一般的に装置の初期化、遅れた変更、システムプロセスの実行、サービスプロセスの実行、ＯＳアプリケーションの実行などの段階に分かれる。仮想マシンも同じように仮想マシン内のＯＳをブーティングしなければならない。ＯＳレベルで仮想化を具現した場合、それぞれの仮想マシンもブーティング過程を経なければならない。カーネル実行部レイヤでネームスペースおよびプロセスとスレッドに対する強化を具現した後、該当ＯＳのブーティング開始点を仮想カーネル内において呼び出すことでブーティングは始まり、仮想カーネル内で呼び出されたブーティング開始点は、ＯＳのブーティング過程と同様にブーティング段階を進行させる。仮想マシンのブーティング段階では物理的装置に対する初期化は省略され、仮想装置に対する初期化の過程はさらに必要である。遅れた変更とは、ファイルなどの資源が使用中であればこれを削除したり変更することが不可能であるため、一般的にシステム終了後に次回のブーティング過程で資源の削除や変更を処理することを意味し、仮想マシンのブーティング過程で仮想マシン内の遅れた変更を処理しなければならない。
【０１００】
システムプロセスはＯＳ環境を提供するのに必要な核心プロセスであって、使用者のアカウント管理、ログオン処理、セッション管理、サービス管理などを担当するプロセスである。例えばマイクロソフト社のＷｉｎｄｏＷＳ(登録商標)オペレーティングシステムではlsass.exe、winlogon.exe、smss.exeのようなプロセスである。サービスプロセスはバックグラウンドで実行されながら、他のアプリケーションが必要な機能を提供するプロセスとしてDCOM/RPCサービス、プリンタspoolerサービスなどがある。
【０１０１】
システムプロセスやサービスプロセスは、仮想マシン内にすべてのプロセスを実行することもできるが、全体のシステム資源を効率的に利用するためにホストＯＳや他の仮想マシンにすでに実行されているプロセスを共有することもできる。例えば、アカウント管理システムのプロセスの場合、仮想マシンごとに一つずつ実行すると、各仮想マシン別に独立したアカウントが存在するが、ホストＯＳのプロセスを共有する場合、ホストＯＳのＩＤ／パスワードアカウント情報を各ゲストＯＳが共有することになる。システムプロセスやサービスプロセスを共有するためには、該当プロセス内に存在するすべての全域的オブジェクトに対するアプローチを共有するプロセスのオブジェクトでマッピングさせなければならない。例えば、プリンタスプーラー(spooler)サービスのプロセスには、プリンタ制御のための名前付きパイプなどが存在するが、ゲストＯＳ内のメモ帳プロセスが文書の出力を要請すると、基本的にゲストＯＳ内のスプーラーサービスの名前付きパイプで接続を試みるであろう。ところが、ゲストＯＳ内にはスプーラーサービスが存在せず、ホストＯＳのものを共有するため、このような要請をホストＯＳのスプーラーサービスでマッピングしなければならない。
【０１０２】
使用者がＯＳを終了しようとすれば、ＯＳをシャットダウンしなければならない。ＯＳのシャットダウン段階は、一般的にアプリケーションの終了、装置ドライバの終了、サービスプロセスの終了、システムプロセスの終了などの段階に分かれる。仮想マシンも同じように仮想マシン内のＯＳを終了しなければならない。終了過程は、実在ＯＳの終了過程によるが、実在の装置の終了は行わない。
【０１０３】
(仮想ＯＳの使用)
仮想マシンがブーティングされた後、使用者は実在のＯＳと同様に仮想マシンを使用する。仮想マシンの画面は、スイッチモードとシームレス(seamless)モードを支援する。スイッチモードは仮想マシン別に独立した画面を持つモードであり、使用者が仮想マシンを使用中に別の仮想マシンや実在のマシンを利用しようとすると、メニューあるいはショートカットキーを利用して画面を転換しなければならない方式である。シームレスモードは実在のマシンのプログラムと仮想マシンのプログラムが一つの画面内で表示される方式である。
【０１０４】
(仮想マシンイメージの送信)
使用者が仮想マシン内で遂行したファイルオフレーションは、仮想ディスクイメージに保存され、仮想マシン内で遂行したレジストリオフレーションは仮想レジストリイメージに保存される。イメージファイルはイメージを送信することを通じて、移動、配布、共有が可能である。送信の最も簡単な方法は、単にイメージファイルをコピーすることである。より発展した方法は、イメージファイル内の不必要な情報を除去し、イメージの大きさを減らすことである。不必要な情報としては臨時ファイル、権限設定情報、共有されないＯＳ構成要素のファイル、レジストリなどがある。より発展した方法としては、イメージファイル内のそれぞれのファイル、ディレクトリ、装置、レジストリに対する権限設定、ＯＳあるいはインストールされたアプリケーションのライセンス情報の追加、使用可能なＯＳのバージョン情報、必要なライブラリー情報などを追加して、より効率的な共有が可能なようにイメージをパッケージングすることである。
【有利な効果】
【０１０５】
本発明は、PC環境が物理的なハードウェアの制約から解放されるようにする。一つの物理的なPCにインストールされたコンピュータの環境は、そのハードウェアを離れて、別の場所に移動することができなかった制約を克服する。一つの物理的なPCには、一つのコンピュータの環境がインストールされ得るという空間的制約を克服する。ハードウェアやソフトウェアはハードウェアに有機的に結合して使用されなければならないという制約を克服する。使用者は固有のＰＣソフトウェアの環境をＰＣハードウェアから自由に脱、付着させることにより、移動性を実現させる。
【０１０６】
ＰＣに習熟していない使用者は、プログラムのインストールに必要な知識、各種プログラムの設定を合わせる作業から完全に脱け出し、一度設定された最適化されたプログラムの作業環境を容易にかつ素早く、いつでも使用することができるようにする。すなわち、ソフトウェアをインストール/アンインストールする概念が、コピー/削除する概念に変化する。
【０１０７】
一度保存された仮想マシンイメージは、イメージキャッシュ機能、移動式ドライブあるいはファイルサーバ保存機能を利用して、素早く手軽に利用することができる。
【０１０８】
また、ＰＣに習熟した使用者に対しても、プログラムのインストールと除去が非常に迅速になされるため、ＰＣをより一層効率的に利用するようにする。
【図面の簡単な説明】
【０１０９】
【図１】本願のＯＳレベルの仮想化方式の望ましい実施例を示す図面である。
【図２】本願の望ましい実施例による階層化されたデータを示す図面である。
【図３】本願の望ましい実施例による階層化されたカーネルの動作を示す図面である。
【図４】本願の望ましい実施例による仮想マシンイメージを実行するルーチンを示す図面である。
【発明の実施のための最善の形態】
【０１１０】
図4に示されている通り、本発明を実施するためには基本的に次のような‘基本ルーチン’を実行する。
1.ＯＳが含まれた仮想マシンテンプレートイメージを、実在のマシンのＯＳでマッピングする。
2.上記イメージを利用して、仮想マシンをブーティングする。
【０１１１】
ここで、仮想マシンテンプレートイメージは、ＯＳレベルの仮想化方式を利用して分割された仮想ＯＳのイメージである。ＯＳだけを持つイメージでもあり得、他のＰＣから移動させて'持ってきたもの'であるイメージであることもある。
【０１１２】
ブーティングされた仮想マシンにおいて、利用者はプログラムをインストールした上で必要な事項を設定して、自らが望むＰＣ環境を仮想マシンに具現することができ、ブーティングされた仮想マシンは再び仮想マシンテンプレートイメージに‘送信’が可能である。
【０１１３】
送信されたイメージは保存された後に再使用が可能であり、移動ディスクやオンライントランスポートを利用して他のＰＣに移動することができ、移動したＰＣにおいて基本ルーチンを実行して、仮想マシンとして使用が可能であるため、ＰＣ環境の移動性が実現される。
【発明の実施のための形態】
【０１１４】
本発明はＰＣの利用者に多様な便宜性を提供することができる。
【０１１５】
個人の固有のＰＣ環境は、移動ディスクやネットワークを利用して家庭、学校、会社、外国などにある他のＰＣにそのまま移動することができる。
【０１１６】
一台のＰＣを共有する使用者は、基本ルーチンを実行して各自の固有の仮想マシンイメージを生成して保存し、ＰＣを利用する時ごとにそのイメージで基本ルーチンを実行することにより共有性が達成される。
【０１１７】
あるいは個人が複数の仮想マシンイメージを生成して、用途に応じて使用することができる。例えば、ＶＭ１では保安が必要なインターネットバンキングや電子商取引にのみ安全に利用することができる。ＶＭ２では会社の機密事項が保存された作業環境で利用することができる。ＶＭ３ではウイルスやハッキングに完全に露出させながら、自由にインターネットを利用することができる。
【０１１８】
ＰＣの初期化を頻繁に必要とする使用者は、基本ルーチンを実行した後、自らの初期のＰＣ環境を設定し、送信してイメージを保存しておく。その後、いつでも初期化が必要であれば、そのイメージを呼び出して基本ルーチンを実行することにより初期化が簡単になされる。ＰＣに関する知識が不足している人は、基本ルーチンを実行する方法、イメージの送信や、受信という方法のみを熟知すれば、いつでも自身のＰＣの問題を解決することができる。その過程は、単に何度かのマウスクリックの動作により簡単になされる。
【０１１９】
本発明はソフトウェアの新たな流通方式を提供する。ソフトウェアのプロバイダは、ＯＳのみがインストールされた仮想マシンテンプレートイメージを利用して、基本ルーチンを実行した後に配布するソフトウェアをインストールし、イメージを送信して販売することができる。消費者はそのイメージを購入して、自身のＰＣで基本ルーチンを経るだけでソフトウェアを直ちに利用することができる。
【０１２０】
消費者は自らに必要なソフトウェアの目録と各製品の設定事項を注文書の形態でプロバイダに提供することもできる。プロバイダは、注文により仮想マシンイメージを生成して、消費者に伝達することができる。あるいは、予め度々使用されるソフトウェアをパッケージ化したイメージを販売することもできる。
【０１２１】
オンライン方式のソフトウェアの流通も可能である。サーバは注文を受信して、注文に伴う仮想マシンイメージを生成し、これをトランスポートすることができる。生成されたイメージは、保存された後に再利用が可能である。
【０１２２】
企業や官公庁では、構成員に迅速にＰＣの業務環境を提供することができる。一つのＰＣで基本ルーチンを実行した後、必要なソフトウェアを全てインストールして送信したイメージを保存しておく。その後、必要な社員にそのイメージを支給して、その社員のＰＣで基本ルーチンを実行すると業務環境が迅速に準備される。構成員のグループ別に必要なソフトウェアの種類が異なるため、グループ別にイメージを作っておくことができる。
【０１２３】
インターネットカフェやIT教育センターのように、少数の人員が多数のＰＣを管理しなければならない場所においても本発明を利用することができる。各ＰＣでは、あらかじめ保存されたイメージで基本ルーチンを実行した仮想マシン上において顧客がＰＣを利用するようにする。そうすると、そのＰＣに問題が生じた場合、本来のイメージを利用して直ちに初期化することができる。また、顧客が特定のソフトウェアのインストールを要求すると、そのソフトウェアがあらかじめインストールされた仮想マシンイメージを利用して、基本ルーチンを実行することにより顧客の要求を直ちに充たすことができる。
【０１２４】
与えられた本発明の原理に対する説明に、多くの変化および変形が考案されるものと理解している。よって、後記の特許請求の範囲は、本発明の本質および範囲を外れない、そのようなすべての変化および変形を含むことを意図とする。
【図１】
2010522370.tif 000004
【図２】
2010522370.tif 000005
【図３】
2010522370.tif 000006
【図４】
2010522370.tif 000007
【手続補正書】
【提出日】平成21年3月3日(2009.3.3)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００７９
【補正方法】変更
【補正の内容】
【００７９】
(仮想マシンテンプレートイメージマッピング)
同一のＯＳであるとしても、各システム別に設定されている使用者の権限や各種システムの設定が異なることから、ある仮想マシンで使用されていた仮想マシンイメージを他の仮想マシンで使用しようとすれば、仮想マシンテンプレートイメージのマッピング過程を経なければならず、細部的には権限マッピング、環境変数およびＯＳ設定マッピング、仮想マシンと実在のマシン間に共有される資源に対するマッピングなどが含まれる。このようなマッピングは、仮想マシンテンプレートイメージを実在のマシンに合うように設定を変換する方式と、カーネル実行部に特定イメージの設定を登録する方式があり、二つの方式すべて、あるいはどちらか一つの方式のみを適用することができる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００８１
【補正方法】変更
【補正の内容】
【００８１】
多重使用者ＯＳは使用者別アプローチ制御機能を提供し、これを利用してファイル、レジストリ、装置別に特定の使用者に特定の権限を付与することができる。仮想マシンテンプレートイメージは権限情報が存在しなかったり、イメージを制作した当時に使用者の権限で設定されている。一部のＯＳのこのような権限が合わない場合、ブーティングが中断される場合もある。したがって、イメージを持込むとき、権限マッピング段階を経なければならない。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００８２
【補正方法】変更
【補正の内容】
【００８２】
仮想マシンテンプレートイメージを実在のマシンに合うように 適応変換 する場合、イメージ内の各ファイル、ディレクトリ、レジストリ、装置などの権限の設定を実在のマシンのＯＳ環境に合う値あるいはＯＳ基本値に設定することができる。もちろん、使用上ＯＳのアプローチ制御機能が必要でないか、またはアプローチ制御が設定されていなくても動作に問題がないファイル、ディレクトリ、レジストリ、装置については権限マッピング過程は省略されても構わない。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００８７
【補正方法】変更
【補正の内容】
【００８７】
(スタンドアローン(Stand alone)方式の仮想マシンイメージの生成)
仮想マシンイメージ内にはＯＳデータファイルが含まれており、一般的にＯＳデータ ファイルは数百ＭＢ以上の空間を占める。本願発明はＯＳレベルの仮想化であるため、ＯＳファイルは仮想マシンテンプレートイメージに入れて配布するのではなく、実在のマシンのＯＳを利用して直接生成することができる。配布される仮想マシンテンプレートイメージ内にはファイル目録、レジストリ目録、ＯＳ設定値と同じＯＳイメージの直接の生成に必要な最小限のデータのみを含め、ファイルデータ、レジストリデータなどは実在のマシンのＯＳにおいて内容をコピーして使用することができる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００８８
【補正方法】変更
【補正の内容】
【００８８】
配布される仮想マシンテンプレートイメージ内に含まれるファイル目録、レジストリ目録、ＯＳ設定値のようなデータは、同一のＯＳの多様なバージョンに存在するすべての目録、或いは一部の目録を含む。例えば、ウインドウズＯＳはウインドウズ２０００、ウインドウズＸＰ、ウインドウズ２００３等、多様なバージョンが存在し、仮想マシンテンプレートイメージはすべてのウインドウズバージョンあるいは一部のウインドウズバージョンに使用されるファイル、レジストリ目録を含むことがある。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００８９
【補正方法】変更
【補正の内容】
【００８９】
イメージマッピングの段階で、上記目録のうち実在のマシンのＯＳに存在する項目だけを使用するように記録する。以後、実際のマシンのＯＳから仮想マシンテンプレートイメージにファイルおよびレジストリデータの内容をコピーする。コピーはイメージマッピング段階でなされ得、仮想マシンの実行段階で該当ファイルやレジストリが実際に使用される時になされることがある。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００９７
【補正方法】変更
【補正の内容】
【００９７】
(階層化された仮想マシンイメージ)
仮想マシンイメージを単一のファイルでなく階層化された構造で提供する場合、使用中に必要なイメージファイルを挿入することもでき、仮想マシンに問題が発生した場合、問題となるイメージファイルのみを新たなものに交替することができるなど長所がある。仮想マシンイメージは仮想ＯＳのイメージ階層、アプリケーションプログラムのテンプレートのイメージ階層、使用者データのイメージ階層、臨時データのイメージ階層に分かれる。臨時データ階層は、仮想マシンの実行過程で生成されたデータにより仮想マシンに問題が生じた時に削除されても構わないデータが保存される。使用者のデータイメージ階層は、使用者が生成したデータで各種文書ファイル、使用者の指定ファイル、使用者が直接インストールしたソフトウェアのファイルおよびレジストリなどが保存される。アプリケーションプログラムのテンプレートイメージは、仮想マシンイメージの送信機能を通じて生成されたアプリケーションイメージであり、このイメージファイルは仮想マシンの使用中に変更されない。仮想ＯＳイメージは、仮想ＯＳのファイルおよびレジストリを含んでいるイメージであり、このイメージファイルは仮想マシンの使用中に変更されない。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００９８
【補正方法】変更
【補正の内容】
【００９８】
図２に示されているように、仮想ＯＳ、アプリケーションプログラムテンプレート、使用者データ、臨時データは階層化されている。ファイルシステムを例にあげると、ファイルシステムスタックには仮想ＯＳファイル、アプリケーションプログラムテンプレートファイル、使用者データファイル、臨時データファイルが保存されている。アプリケーションプログラムがc:Wmyfile.txtを要請すると、臨時データファイルにおいて該当ファイルを探し、存在しなければ使用者データファイルから探し、存在しなければアプリケーションテンプレートファイルから探し、存在しなければ仮想ＯＳファイルから探す。レジストリも同じ方式により動作する。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０１１１
【補正方法】変更
【補正の内容】
【０１１１】
ここで、仮想マシンテンプレートイメージは、ＯＳレベルの仮想化方式を利用して分割された仮想マシンのイメージである。ＯＳだけを持つイメージであることもある。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】０１１３
【補正方法】変更
【補正の内容】
【０１１３】
送信された仮想マシンテンプレートイメージは保存された後に再使用が可能であり、移動ディスクやオンライントランスポートを利用して他のＰＣに移動することができ、移動したＰＣにおいて基本ルーチンを実行して、仮想マシンとして使用が可能であるため、ＰＣ環境の移動性が実現される。
【手続補正１１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
仮想マシンテンプレートイメージを仮想マシンとして駆動する方法において、
仮想マシンテンプレートイメージをホストＯＳにマッピングして前記仮想マシンテンプレートイメージを仮想マシンイメージに適応変換させる段階と、
前記適応変換された仮想マシンイメージを利用して、ＯＳレベル仮想化方式で仮想マシンのＯＳをブーティングする段階と、を含むことを特徴とする仮想マシンテンプレートイメージの駆動方法。
【請求項２】
第１項において、
仮想ディスクを生成する段階をさらに含み、
前記適応変換された仮想マシンイメージは、前記仮想マシンディスクにローディングすることを特徴とする仮想マシンテンプレートイメージの駆動方法。
【請求項３】
第１項において、
前記マッピングする段階は、権限マッピング、環境変数マッピング、ＯＳ設定マッピング、ドライブ名マッピング、共有される資源に対するマッピングの少なくとも一部を含むことを特徴とする仮想マシンテンプレートイメージの駆動方法。
【請求項４】
第１項において、
前記マッピングする段階は、スタンドアローン方式のイメージマッピング段階を含み、
前記スタンドアローン方式のイメージマッピング段階は、
仮想マシンイメージで提供するすべてのバージョンのＯＳファイルおよびレジストリ目録情報で実在のマシンのＯＳに存在する項目のみを記録する過程と、
実在のマシンのＯＳでファイルおよびレジストリ内容を仮想マシンイメージにコピーするかコピーしなければならないことを記録する過程を含むことを特徴とする仮想マシンテンプレートイメージの駆動方法。
【請求項５】
第１項において、
使用中である仮想マシンのイメージを利用して、新たな仮想マシンテンプレートイメージを生成する段階をさらに含むことを特徴とする仮想マシンテンプレートイメージの駆動方法。
【請求項６】
第１項において、
前記適応変換された仮想マシンイメージは、仮想マシンＯＳイメージ、アプリケーションテンプレートイメージ、使用者データイメージおよび臨時データイメージの少なくとも一部の組み合わせを含んで階層化されていることを特徴とする仮想マシンテンプレートイメージの駆動方法。
【請求項７】
第１項において、
前記ブーティングする段階は、
カーネル実行部で仮想カーネルを生成する段階と、
仮想装置ドライバ、仮想サービス、仮想システムプロセスの少なくとも一部をローディングする段階と、を含むことを特徴とする仮想マシンテンプレートイメージの駆動方法。
【請求項８】
第７項において、
前記仮想装置ドライバ、仮想サービス、仮想システムプロセスの少なくとも一部は前記ホストＯＳと共有し、残りの部分は前記ホストＯＳと共有しないことを特徴とする仮想マシンテンプレートイメージの駆動方法。
【請求項９】
第７項において、
前記カーネル実行部で仮想カーネルを生成する段階は、スレッドレベルで仮想化を具現することを含むことを特徴とする仮想マシンテンプレートイメージの駆動方法。
【請求項１０】
ソフトウェアを配布する方法において、
前記ソフトウェアの配布のために少なくとも一つのサーバが設けられ、前記サーバはコンピュータネットワークを介してクライアントと通信可能であり、
クライアントのソフトウェアの配布要請を受信する段階と、
要請されたソフトウェアがインストールされた、ＯＳレベルの仮想化のための仮想マシンテンプレートイメージを生成する段階と、
生成された仮想マシンテンプレートイメージをクライアントにトランスポートする段階と、を含み、トランスポートされた前記仮想マシンテンプレートイメージは前記クライアントのホストＯＳにマッピングされ、クライアント内部に適応変換された仮想マシンイメージを生成し、これにより前記要請されたソフトウェアはクライアントに配布されることを特徴とするソフトウェアの配布方法。
【請求項１１】
第１０項において、
前記要請は少なくとも一つのインストールされるプログラムの種類および各プログラムの設定事項と構成要素のうち、少なくとも一つを予め決定することを含むことを特徴とするソフトウェアの配布方法。
【請求項１２】
第１０項において、
前記クライアントに提供された仮想マシンテンプレートイメージのコピーをサーバおよび外部の保存空間のうち少なくとも一つに保存する段階をさらに含み、
これにより、前記仮想マシンテンプレートイメージは前記クライアントに再トランスポートされることが可能なことを特徴とするソフトウェアの配布方法。
【請求項１３】
第１０項において、
前記仮想マシンテンプレートイメージは、ストリーミング方式で前記サーバから前記クライアントにトランスポートされることを特徴とするソフトウェアの配布方法。
【請求項１４】
仮想マシンテンプレートイメージをトランスポートする方法において、
前記仮想マシンテンプレートイメージをトランスポートするために少なくとも一つのサーバが設けられ、前記サーバはコンピュータネットワークを介してクライアントと通信可能であり、
クライアントから要請されたコンピュータ環境の設定事項を受信する段階と、
受信された前記コンピュータ環境の設定事項により、ＯＳレベルの仮想化のための仮想マシンテンプレートイメージを生成する段階と、
生成された前記仮想マシンテンプレートイメージを前記クライアントにトランスポートする段階と、を含み、
前記設定事項はソフトウェアの目録およびＯＳの環境設定のうち少なくとも一つを含み、
トランスポートされた前記仮想マシンテンプレートイメージは、前記クライアントのホストＯＳにマッピングされ、クライアント内部に適応変換された仮想マシンイメージを生成し、これにより前記クライアント内部に生成された適応変換された仮想マシンイメージは、クライアントから要請されたコンピュータ環境を備えることを特徴とする仮想マシンテンプレートイメージのトランスポート方法。
【国際調査報告】
2010522370.tif 000008
2010522370.tif 000009