JP2010522370A - 移動型仮想マシンイメージ - Google Patents
移動型仮想マシンイメージ Download PDFInfo
- Publication number
- JP2010522370A JP2010522370A JP2009554449A JP2009554449A JP2010522370A JP 2010522370 A JP2010522370 A JP 2010522370A JP 2009554449 A JP2009554449 A JP 2009554449A JP 2009554449 A JP2009554449 A JP 2009554449A JP 2010522370 A JP2010522370 A JP 2010522370A
- Authority
- JP
- Japan
- Prior art keywords
- virtual machine
- image
- virtual
- machine image
- mapping
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/161—Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1224—Client or server resources management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/453—Help systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45541—Bare-metal, i.e. hypervisor runs directly on hardware
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
- Storage Device Security (AREA)
Abstract
本発明は、OSレベルの仮想化技術を利用した移動型仮想マシンイメージを生成し、利用する方法を提供する。移動型仮想マシンイメージは、PCのハードウェアに独立し、PCのOS環境を大部分利用しながらOSに結合および分離が容易であり、簡単で迅速な移動性、配布性、共有性、および初期化能力を提供する。
Description
本発明は仮想マシン技術に関するものであって、より具体的にはオペレーティングシステム(OS)レベルの仮想化技術を利用して、個人PC環境の移動性を実現する技術に関するものである。
最近パーソナルコンピュータ(PC)に関する技術は急速に発展し、現代人は一日の大部分をPCとともにしている。PCの文書処理機能とスプレッドシート等の各種アプリケーション製品により大部分の会社員は少なくとも一つのPCを使用するようになり、マルチメディア技術の発展はPCに基づいたエンターテイメント事業を発展させた。特にインターネットの普及は人間にとって、PCに対する依存性の増大に決定的な役割を果たした。現代人はPCのない生活を想像することができなくなり、このような現象はますます深刻化するであろう。
パーソナルコンピュータの環境は、使用者に対して複雑なコンピュータ知識に関する要求を減らしていく方向に発展した。80年代のPCは、使用者が直接コンピュータのOSが設けた命令語を直接入力しながらコンピューティング作業を処理することが求められたことから、命令語の入力に習熟していない使用者はコンピュータを全く利用できなかった。また、ハードウェアに関する情報を一々入力しなければ、コンピュータがそれぞれのハードウェアを認識して動作させることができなかった。
90年代に入りGUI(Graphic User Interface)技術が発達して、コンピュータに命令を伝達する方式がより直観的かつ視覚的な方式に変化し、OSがハードウェアを自ら認識する能力が増加して、使用者に対するコンピュータに関する知識の要求がより少なくなるようになった。
ところが、PCは依然としてOSに対する知識、プログラムのインストールに関する知識、プログラムの設定に関する知識など、コンピュータに関して門外漢である一般人が自由にアプローチするには多少複雑な知識を要求しており、PCはまだ一部の専門家たちしか自由自在に利用することができない。GUIをはじめとする多様な技術が普及したものの、今日に至ってもプログラムのインストールと設定は一般人が簡単にアプローチしにくく、各種ウイルスや悪性プログラムは一般人のコンピュータの使用をより一層困難にしている。
PCがテレビや冷蔵庫のような大衆的な生活家電製品になるためには、コンピュータの使用が現在より容易にならなければならない。テレビの場合、使用者がリモコンを利用してチャンネルさえ変更することができれば、望むチャンネルを容易に、かつ素早く視聴することができる。コンピューティングの環境もこのように簡単に変化しなければならない。
現在のPC環境は、いくつかの種類の新たな欲求に直面している。それはPC環境の簡単かつ迅速な移動性、ソフトウェア配布の簡便化、物理的に一台のPCに対する各使用者の環境の独立性を保障する新たな共有方式、いつでも自らが望む初期状態にPCを再設定することができるPC環境の設定方式などである。
まず、PC環境の移動性を察し見ると、PCは他の家電製品とは異なり、個人ごとに使用するコンピューティング環境が異なる。PCのハードウェアの仕様も千差万別であるが、同一のハードウェアと同一のOSを使用するとしても、OSに対する各種デスクトップの環境の状態が異なり、使用しているアプリケーションソフトウェアも各々異なる。このような点は、次のような問題を引き起こす。
例えば、家庭と会社でPCを使用する人は、家庭と会社のPC環境が各々異なる。したがって、会社の仕事に必要な作業を家庭でしようとすると、家庭のPC環境を会社のPC環境のようにしなければならない。必要なソフトウェアもインストールしなければならず、各種デスクトップの設定も本人が仕事をするのに便利な設定状態に変えなければならない。また別の場所に出張に行って、コンピュータ作業をしなければならない場合、出張所のPC環境を調整するようにならなければならない。このような煩わしさを解消しようとして、ノートブックが利用されている。ところが、ノートブックは価格が相対的に高価であり、重い本体を持って移動することも大きな負担になっている。
第二に、ソフトウェアの配布について調べて見ると、新たなソフトウェアを購入した使用者は、オンラインまたは記録媒体を通じて購入したソフトウェアをPCにインストールする過程を経なければならない。インストールの過程は比較的簡単であるが、これに困難を感じる人は少なくない。また、一度インストールしたソフトウェアに外部的または内部的要因により異常が発生した場合、再インストールをしなければならない不便さが存在する。
事務環境においては、一般的にPC環境がグループ化されて設定される。必要とするソフトウェアが同じようなグループが作られることもあり得るが、その基準は同じ部署である事もあり同じ職級でもあり得る。一つのグループに対する必要なソフトウェアを全て含む一つのPC環境を迅速に設定することは、PCマネージャーの役割である。ところが、各職員に対する一つ一つの要求を処理することは、かなり時間がかかる非効率的な作業である。各グループ別にPC環境があらかじめ保存されており、これを素早く提供できるのであれば、部署の配置が変わる時ごとに、新入社員が入社する時ごとに、業務に必要なソフトウェア目録が変わる時ごとに迅速に業務環境を整えることができる。究極的にはPCマネージャーが必要ない程に、誰でも容易にかつ手軽なようにPCの業務環境を整えるべきである。
第三に、PCの共有について察し見ると、二人が一台のPCを共有する場合、二人は各自が要求するPC環境が異なる。ひとりに最適化されたPC環境は他の人に不便になり得、時にはひとりがPCをウイルスに露出させて、他の人にまで被害を与えることがある。この場合、PCを各自が一つずつ保有するしかない。
第四に、PC環境の初期化の問題を察し見ると、現代のPCは常にウイルスや悪性コードなどに露出されていて、時間が過ぎるにしたがってPCが麻痺することがあり、時には本人のミスによりPCが正常に作動することができない場合も発生する。この場合、原因を診断して修理することができる専門的な知識を備えた専門家が必ず必要であり、そうでなければ大部分がハードディスクをフォーマットして必要なソフトウェアを再インストールし、デスクトップの環境を再設定する。これはPCの使用において、この上なく大きい障害である。PCが一般家電と同じように容易にかつ便利に利用されるためには、問題が発生するとしても専門家の援助なしに簡単に何度かのマウスクリックの動作によりいつでも使用者が設定した初期PC環境のクリーンな状態に復旧されなければならない。
PCに対する人間の依存性が深刻化するほどに、時間と場所に対する制約なしに常に自分だけのPC環境でコンピュータを利用しようと思う要求は増大するであろう。ところが、現在の技術での解決策は、結局ノートブックと同じさらなるハードウェアを利用することに帰着する。
一方、最近仮想マシンに対する研究が活発に進められている。仮想マシンは1960年代に一台のメインフレームを何台かのマシンに仮想的に分けて使用するために導入された概念である。ところが、マイクロコンピュータやPCの価格が下落するのにともない、一台のメインフレームを分けて使用することよりは何台かのPCを導入することが費用の側面で有利になり、その結果1980年代に入って仮想マシンの技術はほとんど使われなくなった。ところが、1990年代入って、多数の小容量コンピュータを使用することが管理および維持補修の費用をむしろ増加させ、コンピュータ資源の効率的使用も問題があったので(一例としてAサーバはCPU使用率が10%であるのに比べて、BサーバはCPU使用率が99%である場合がある)再度、仮想化技術に関心を傾け始めた。ところが、大容量サーバの効率的な資源管理のための仮想化技術に関することが主であって、クライアントシステムのための仮想化技術に対してはまだ研究が不備である。
あらかじめ言及するが、本発明はPC環境の容易で迅速な移動、配布、共有および初期化を実現するために仮想マシンを利用する。
仮想マシンを具現する方式は多様である。今までに知られた仮想化具現方式を列挙してみると、ハードウェアレベルの仮想化、アプリケーションレベルの仮想化、OSレベルの仮想化などがある。以下、仮想化技術に対するこれまでの研究と限界を調べて見る。
ハードウェアレベルの仮想化
ハードウェアレベルの仮想化は、CPU、メモリー、ハードディスク、BIOSなどをソフトウェア的にエミュレーション(full virtualization)する方式と、ハードウェアの仮想化を支援するデバイス(CPU)を利用した準仮想化(paravirtualization)方式がある。
ハードウェアレベルの仮想化は、CPU、メモリー、ハードディスク、BIOSなどをソフトウェア的にエミュレーション(full virtualization)する方式と、ハードウェアの仮想化を支援するデバイス(CPU)を利用した準仮想化(paravirtualization)方式がある。
命令語の三つのレベルの仮想化方式は、中央処理装置、メモリー、チップセット、バースおよび各種周辺装置(ネットワークカード、ハードディスク、フロッピーディスク、CD−ROM)をソフトウェア的にエミュレーションして仮想マシンを生成するのである。命令語の三つのレベルの仮想化方式は、仮想マシンで発生するすべての命令語をソフトウェア的に処理しなければならないので、処理速度の低下をはじめとして性能上の問題が多い。
準仮想化方式は、命令語の三つのレベルの仮想化方式とは異なり、命令語をエミュレーションするのではなく、OSのソースコードやバイナリを修正して、一つのハードウェアにおいていくつかのOSが実行されるようにするのである。最近では、OSを修正しなくても一つのハードウェアにいくつかのOSを実行することができるようにする形態のCPUも開発された。準仮想化方式は、命令語の三つがソフトウェア的に再解釈される訳ではないため処理速度が速い。
ハードウェアレベルの仮想化は標準ハードウェアを提供するようになって、生成された仮想マシンイメージは一つのPC環境それ自体であることから、これをコピーするとインストールされたOSまで共にコピーされるので、独立性および移動性が確実に保障される。
ところが、ハードウェアの性能は下降平準化される。例えば、実在のPCに良い3Dグラフィックカードが装着されていても、仮想マシンが旧型2Dグラフィックカードをエミュレーションして仮想ハードウェアを提供したのであれば、結局旧型2Dグラフィックカードで動作する。結局、まだエミュレーションされていないデバイス(IEEE1394等)は使用が不可能である。ところが、現実的に現在市販されているすべてのハードウェア装置をエミュレーションすることは不可能である。
また、ハードウェアレベルに仮想化された一つの仮想マシンは、一つのOS資源をすべて使用することから、複数の仮想マシンを同時に実行させるのは難しい。例えば、ウインドウズVistaの場合、約1GBラムが必要であることから、三つの仮想マシンを正常に実行しようとするならば実在のマシンを含めて4Gのラムが必要である。
さらに、一つのイメージの大きさが相対的に大きい。すべてのハードウェアの要素を全てエミュレーションしなければならないため、多くの容量を占める。現在までに市販されたハードウェアレベルの仮想化を利用した仮想マシンのイメージは、ギガ単位の容量を持つ。また、メモ帳のような小規模のアプリケーションを配布する時も、数百MB〜数十GBのOSイメージが含まれなければならないので非常に非効率的である。
また、仮想マシンに新たなOSをインストールする訳であるため、OSライセンスがさらに必要である。これは使用者に対してOSをもう一つ購入することを要求する。
また、実在のマシンにインストールされた各種アプリケーションと設定されたOS環境を、仮想マシンでは共に使用することができない。実在のマシンと仮想マシンは、完全に独立しているためである。P2Vという製品を利用して、複製して使用することはできるが、共に使用することは不可能である。
ところが、各仮想マシン別に完全に独立したOSをインストールすることができるため、VPS(Virtual Private Server)、サーバ統合などのサーバの仮想化に適した方式であり、ソフトウェアの開発およびテストなどの分野にも活用されている。
結局ハードウェアレベルの仮想化は、サーバ仮想化としては適しているものの、デスクトップの仮想化の商用化の可能性は劣る。
アプリケーションレベルの仮想化
アプリケーションレベルの仮想化方式は、Sun Micro Systems社によって開発されたJava Virtual Machineのように、アプリケーションをバイトコード形態に作成して、一つのアプリケーションが多様な異機種のハードウェアおよびソフトウェアの環境において実行されるようにするものである。
アプリケーションレベルの仮想化方式は、Sun Micro Systems社によって開発されたJava Virtual Machineのように、アプリケーションをバイトコード形態に作成して、一つのアプリケーションが多様な異機種のハードウェアおよびソフトウェアの環境において実行されるようにするものである。
初期アプリケーションレベルの仮想化製品は、ソフトウェアの衝突防止を目的として開発された。ウインドウズ環境を例にあげると、プログラムは実行ファイル(.exeなど)と共有ライブラリー(.dllなど)から構成される。このとき、共有ライブラリーは多様な会社で製作した様々なソフトウェアとして共有される場合が多い。例えば、c:WwindowsWsystem32Wmsvcrt.dllという共有ライブラリーは、Aという会社で製作したA'プログラムで使用され、Bという会社で製作したB'プログラムで共有されて使用される。
ところで、msvcrt.dllは同一ファイル名に多様なバージョンが存在し得る。もし、A'プログラムが2.0.0.0バージョンのmsvcrt.dllをc:WwindowsWsyste32ディレクトリにインストールして使用していて、B'プログラムがインストールされて、これを1.0.0.0バージョンに上書きすると、A'プログラムが正常動作することができないことがある。
アプリケーションレベルの仮想化を利用すると、各アプリケーション別に固有のファイルシステム保存空間が割り当てられることから、同一ファイル名の共有ライブラリーがアプリケーション別の保存空間に独立して保存されるため、このような衝突の問題を回避することができる。
以後アプリケーションレベルの仮想化は、アプリケーションストリーミング技術に発展した。アプリケーションの実行に必要な実行ファイル、共有ライブラリー、レジストリなどのデータ(以下、アプリケーションデータ)を使用者のPCでないサーバに保存しておき、使用者がAアプリケーションを実行した時に必要なデータをサーバで動的に受け入れるように具現すると、使用者はAというアプリケーションをPCにインストールしなくても実行して使用できるようになる。
現在アプリケーションレベルの仮想化技術は、アプリケーションデータをUSBドライブに保存してUSBドライブをPCに連結すると、該当アプリケーションをインストールなしに直ちに使用することができる形態に発展している。これは一つのアプリケーションを任意のPCで実行可能なようにすることによって、PC環境の移動性を制限的に提供する。
ところが、アプリケーションレベルの仮想化は、ファイル、レジストリデータのみを別途に保存するため、インストール段階での衝突の問題は解決できるが、実行段階での衝突の問題は解決できない。例えば、Aというアンチウイルス製品とBというアンチウイルス製品を共にインストールして使用する場合、互いに互いを監視して誤謬を発生させ、正常でない終了をする場合が多い。このような実行段階での衝突は、アプリケーションレベルの仮想化で解決することができない。
また、アプリケーションレベルの仮想化で仮想化することができないアプリケーションあるいはカスタマイジングが必要なアプリケーションが多数存在する。ウインドウズサービスやカーネルモジュールを使用するアプリケーション、OSの特定の構成要素に依存するアプリケーションなどがその例である。このようなアプリケーション依存性は、アプリケーションの支援目録を必然的に要求するようになる。結果として、アプリケーションレベルの仮想化は全体のコンピューティング環境を提供するのではなく、特定アプリケーションのみ仮想的に使用することができるようにするのに止まる。
OSレベルの仮想化
最後に、OSレベルの仮想化方式は、OSの各構成要素(プロセス、ファイルシステム、ネットワーク資源、システムコールインターフェース、ネームスペースなど)を仮想化する方式である。従来のOSレベルの仮想化方式は、主にVPS(Virtual Private Server)のようなサーバ仮想化を目的として開発された。サーバコンピュータのOSカーネルをパーティショニングし、各パーテーション別に独立したOS環境を提供する。
最後に、OSレベルの仮想化方式は、OSの各構成要素(プロセス、ファイルシステム、ネットワーク資源、システムコールインターフェース、ネームスペースなど)を仮想化する方式である。従来のOSレベルの仮想化方式は、主にVPS(Virtual Private Server)のようなサーバ仮想化を目的として開発された。サーバコンピュータのOSカーネルをパーティショニングし、各パーテーション別に独立したOS環境を提供する。
従来のサーバホスティングの場合、使用者に物理的サーバを1台ずつ提供していた。使用者別の完全なOS空間が提供されるものの、実在サーバを購入しなければならない関係で初期費用がかさみ、維持費用もかなり必要である。
OSレベルの仮想化は、一つのOSに独立した複数の仮想OSを生成することができる。使用者はOSの必要な環境を独立して使用することができ、物理的サーバを実際に購入しなくても良いので費用が節減される。
あるいは、ソフトウェアの開発およびテストなどの目的で多数のOS環境が必要な使用者に、独立したOS空間を効率的に提供するための方法としても使用されてきた。
(技術的課題)
本発明はPC環境の簡単かつ迅速な移動方式、ソフトウェアの新たな配布方式、使用者の独立性が保障されたPCの新たな共有方式、容易で手軽なコンピューティング環境の初期化方式を実現するための新たな仮想化技法を提供するものである。これを通じて、PCの使用者に対してOSに対する知識、プログラムインストールに関する知識、プログラム設定に関する知識を要求せずに、一般家電製品程度の水準で容易で自由にPCを使えるようにコンピューティング環境を提供しようとするものである。
本発明はPC環境の簡単かつ迅速な移動方式、ソフトウェアの新たな配布方式、使用者の独立性が保障されたPCの新たな共有方式、容易で手軽なコンピューティング環境の初期化方式を実現するための新たな仮想化技法を提供するものである。これを通じて、PCの使用者に対してOSに対する知識、プログラムインストールに関する知識、プログラム設定に関する知識を要求せずに、一般家電製品程度の水準で容易で自由にPCを使えるようにコンピューティング環境を提供しようとするものである。
本発明はこれを解決するために、PCのハードウェアに独立し、PCのOS環境を大部分利用しながらOSに結合および分離が容易であって、簡単で早い移動性、配布性、共有性および初期化能力を提供する移動型仮想マシンイメージを提供する。本発明において‘移動型’という用語は、前記特徴を有することを意味する。
現在、仮想化技術はサーバ統合、ソフトウェア開発およびテスト、ホスティング分野で数多く使用されている。ところが、本願が追求する移動型仮想マシンイメージに関する研究はまだ進められていない。前述した通り、従来のいかなる仮想化方式も本発明の目的を達成することができない。
ハードウェアレベルの仮想化方式を利用する場合、一台の仮想マシンが必要とするメモリー、ハードディスクの資源は実在のマシンと同一であるため、一台の物理的マシンに多数の仮想マシンを生成するのは困難である。
ところが、OSレベルの仮想化を利用すると一つのOSですべての仮想サーバを駆動することができるため、個別仮想マシンのOSの駆動に必要な資源が要求されず、ハードウェアレベルの仮想化方式に比して少ないリソースで多数の仮想マシンを駆動することができる。
OSレベルの仮想化が前記のような利点を有しているにも拘わらず、PC環境の移動などに積極的に活用されない理由のうちの一つは、仮想マシンイメージの移動性が保障されなかったためである。
ハードウェアレベルの仮想化の場合、OSを含む一つの独立したシステムを構成する仮想マシンイメージを生成するため移動性が保障される。ところが、OSレベルの仮想化の場合、OSを分離して仮想的に利用するのにとどまり、実在のOSから自由に分離して、他のOSに結合する一つの完全な仮想マシンイメージを生成する訳ではないことから、移動性を実現することができなかった。
その理由は、OS環境に従属的な機能、使用者の実在のOSと共有すべき資源などが存在するためである。OSはシステム設定、ドライブ名、ホームディレクトリの経路、ファイルの権限および経路、レジストリ権限および経路などが使用者別に異なり、生成された仮想マシンイメージがこのような多様な環境で正常に実行されないためである。
OSレベルの仮想化を利用し、完全な移動性が保障される仮想マシンイメージを生成して利用することができるのであれば、OSレベルの仮想化の長所をそのまま利用するようになるため、PC環境の迅速かつ便利な移動性が最も効率的に具現される。本発明はOSレベルの仮想化を利用して、移動型仮想マシンイメージを生成する方法を提供する。
以下、本発明のOSレベルの仮想化の基本概念を説明する。
OSレベルの仮想化
OSはカーネル(Kernel)、デバイスドライバ(Device Driver)、システムプロセス(System Process)、サービスプロセス(Services process)等から構成される。
OSはカーネル(Kernel)、デバイスドライバ(Device Driver)、システムプロセス(System Process)、サービスプロセス(Services process)等から構成される。
カーネルは運営体の核心である。カーネルはOSの一部であって、OSの他のすべての部分に様々な基本的サービスを提供する。カーネルはシステムのハードウェアやリソースを管理してこれを抽象化(Abstraction)する。
一般的にカーネルは、カーネル実行部(Kernel Executive)、HAL(Hardware Abstraction Layer)から構成される。
カーネル実行部は、プロセスおよびスレッド管理(process and thread management)、メモリー管理(memory management)、オブジェクト管理(object management)、保安管理(security management)、プロセス通信管理(inter-process communication management)等を担当する。
HALはハードウェアを抽象化して、カーネルの他の構成要素、あるいはアプリケーションがハードウェアに直接アプローチしなくてもハードウェアを使用することができるようにしてくれる。
デバイスドライバは、物理的な装置を制御したり、カーネルレベルで実行されなければならない命令語を実行するのに使用される。
システムプロセスはユーザモードで実行されるOSの核心プロセスであって、デバイスドライバ要請処理、使用者ログイン/ログオフ処理、保安関連処理などを担当する。
サービス(daemon)プロセスは、ユーザモードにおいてバックグラウンドで実行されるプロセスであって各種サービスを担当する。例えば、ファイル共有サービス、テレネットサービス、ウェブサービス、プリンタサービスなどがある。これらのサービスプロセスは、バックグラウンドで実行され、OSの他の構成要素、あるいはアプリケーションが該当機能を使用することができるように支援する。
アプリケーションプロセス(Application process)はOSで実行され、使用者に実際に必要な機能を提供するソフトウェアを意味し、ワードプロセッサーアプリケーション、メディアレイヤアプリケーションなどがある。一般的にソフトウェアはOSとアプリケーションを意味する(software = operating system + application)。
(階層化されたカーネル構成要素)
図1は、本願の仮想化方式の望ましい実施例を構成図として示した図面である。
図1は、本願の仮想化方式の望ましい実施例を構成図として示した図面である。
独立したゲストOSの実行環境は、仮想カーネル、実行空間、仮想マシンデータから構成される。
表1はOSを含む一般的なPCの構造である。
OSの各構成要素であるHAL、カーネル実行部、デバイス ドライバ、システムプロセス、サービスなどは階層化(layered)されている。
上位階層の構成要素が、下位階層の構成要素に特定機能の処理を要請すると、下位階層は該当要請を処理した後、結果をリターンする。
仮想化は上位階層の要請を下位階層が処理する時、これを制御することによって具現される。例えば、デバイスドライバがカーネル実行部に特定オブジェクトの生成を要請するとき、仮想空間に該当オブジェクトを生成した後、結果をリターンし、アプリケーションがc:Wmyfile.txtファイルの生成を要請すると、カーネル実行部はこれを実在のディスクでない仮想ディスクに生成した後、結果をリターンする。
上位階層は下位階層の応答を利用してすべての機能を処理するため、下位階層で仮想化が具現されれば、上位階層は修正なしに仮想マシンで実行される。
本発明においては、OSの最も下位階層であるHALおよびカーネル実行部の階層で仮想化を具現して、上位階層のデバイスドライバ、システムプロセス、サービスプロセス、アプリケーションは特別な修正なしに仮想空間で実行されるようにする。
以下、本発明の移動型OSを具現する方法を説明する。
(仮想カーネルの生成)
仮想カーネルは、カーネル実行部の階層で上位階層から要請をディスパッチ(dispatch)することで具現される。実在のマシンに属したスレッドあるいはプロセスでの要請は実在空間でディスパッチされ、仮想マシンに属したスレッドあるいはプロセスでの要請は仮想空間でディスパッチされる。仮想マシン内で実行されるということは、カーネル実行部に対する要請がディスパッチされるということを意味する。
仮想カーネルは、カーネル実行部の階層で上位階層から要請をディスパッチ(dispatch)することで具現される。実在のマシンに属したスレッドあるいはプロセスでの要請は実在空間でディスパッチされ、仮想マシンに属したスレッドあるいはプロセスでの要請は仮想空間でディスパッチされる。仮想マシン内で実行されるということは、カーネル実行部に対する要請がディスパッチされるということを意味する。
図3は、カーネルの上位レイヤでの要請がカーネル実行部を経て、仮想空間または実在空間にディスパッチされることを示している。
カーネル実行部に対する仮想化は、ファイル、レジストリ、オブジェクトなどのネームスペースに対する仮想化と、プロセスおよびスレッドに対する仮想化、メモリー仮想化として具現される。
ネームスペースに対する仮想化の具現方法は次の通りである。
名前を有するカーネル構成要素は、ファイル、レジストリ、その他のカーネルオブジェクトなどがある。ファイルの場合WDeviceWHarddiskVolume1Wmyfile.txtという名前を有し、レジストリの場合WRegistryWMachineWSoftwareWmykeyという名前を有し、カーネルオブジェクトの場合WBaseNamedObjectsWmyobjectという名前を有する。
名前を有するカーネル構成要素は、ファイル、レジストリ、その他のカーネルオブジェクトなどがある。ファイルの場合WDeviceWHarddiskVolume1Wmyfile.txtという名前を有し、レジストリの場合WRegistryWMachineWSoftwareWmykeyという名前を有し、カーネルオブジェクトの場合WBaseNamedObjectsWmyobjectという名前を有する。
これらの名前は、ネームスペースで管理される。特定のカーネルオブジェクトを開く場合、カーネル実行部は該当オブジェクトが存在するか否かをネームスペースでチェックし、特定カーネルオブジェクトを生成する場合、重複するオブジェクトがあるか否か等もネームスペースでチェックされ、カーネルオブジェクトが生成された場合、オブジェクト名がネームスペースに記録される。各仮想マシンは固有のネームスペースを有する。例えば、VM1仮想マシンの場合、上記例のファイル WDeviceWHarddiskVolume1Wmyfile.txtに対する要請はWVM1WDeviceWHarddiskVolume1Wmyfile.txtにディスパッチされ、上記例のレジストリWRegistryWMachineWSoftwareWmykeyに対する要請はWRegistryWVM1WMachineWSoftware Wmykeyにディスパッチされ、上記例のオブジェクト WBaseNamedObjectsWmyobjectに対する要請は、WVM1WbaseNamedObjectsWmyobjectにディスパッチされる。もちろん、ディスパッチされる名前の形態は、任意にその規則を設定することができる。このように、各仮想マシン別に独立したネームスペースを付与することによって、ネームスペースに対する仮想化が具現される。
プロセスおよびスレッドに対する仮想化については、具現方法は次の通りである。
OSの観点において、スレッドは実行の最小単位であり、プロセスはメモリアドレスを共有するスレッドの集合である。プロセスやスレッドに対する生成要請は、カーネル実行部に伝えられる。カーネル実行部は、子プロセスの生成を要請した親プロセスが特定仮想マシン内にある場合、子プロセスも該当仮想マシン内で生成する。カーネル実行部は、スレッドの生成を要請したスレッドのプロセスが仮想マシン内にある場合、該当スレッドも該当仮想マシン内で生成する。一般的にOSレベルの仮想化は、プロセス単位で仮想化が具現されるため、上記段階で充分である。
ところが、本願発明は仮想化の最小単位はプロセスでなくスレッドである。その理由は、効率的なOSレベルの仮想化を具現するために一部のOSプロセスを仮想マシンで新しく生成するのではなく、実在のマシンのプロセスを共有し、この場合、ひとつのプロセス内で特定スレッドは実在のマシンで実行され、特定スレッドは特定仮想マシンで実行されなければならないためである。カーネル実行部が、スレッド生成の要請を受ける場合、スレッドの生成を要請した親スレッドが仮想マシン内にあれば、該当スレッドも仮想空間で実行する。
(仮想マシンイメージマッピング)
同一のOSであるとしても、各システム別に設定されている使用者の権限や各種システムの設定が異なることから、ある仮想マシンで使用されていた仮想マシンイメージを他の仮想マシンで使用しようとすれば、仮想マシンイメージのマッピング過程を経なければならず、細部的には権限マッピング、環境変数および設定マッピング、仮想マシンと実在のマシン間に共有される資源に対するマッピングなどが含まれる。このようなマッピングは、仮想マシンイメージを実在のマシンに合うように設定を変換する方式と、カーネル実行部に特定イメージの設定を登録する方式があり、二つの方式すべて、あるいはどちらか一つの方式のみを適用することができる。
同一のOSであるとしても、各システム別に設定されている使用者の権限や各種システムの設定が異なることから、ある仮想マシンで使用されていた仮想マシンイメージを他の仮想マシンで使用しようとすれば、仮想マシンイメージのマッピング過程を経なければならず、細部的には権限マッピング、環境変数および設定マッピング、仮想マシンと実在のマシン間に共有される資源に対するマッピングなどが含まれる。このようなマッピングは、仮想マシンイメージを実在のマシンに合うように設定を変換する方式と、カーネル実行部に特定イメージの設定を登録する方式があり、二つの方式すべて、あるいはどちらか一つの方式のみを適用することができる。
権限マッピングの細部内容は次の通りである。
多重使用者OSは使用者別アプローチ制御機能を提供し、これを利用してファイル、レジストリ、装置別に特定の使用者に特定の権限を付与することができる。仮想マシンイメージは権限情報が存在しなかったり、イメージを制作した当時に使用者の権限で設定されている。一部のOSのこのような権限が合わない場合、ブーティングが中断される場合もある。したがって、イメージを持込むとき、権限マッピング段階を経なければならない。
仮想マシンイメージを実在のマシンに合うように変更する場合、イメージ内の各ファイル、ディレクトリ、レジストリ、装置などの権限の設定を実在のマシンのOS環境に合う値あるいはOS基本値に設定することができる。もちろん、使用上OSのアプローチ制御機能が必要でないか、またはアプローチ制御が設定されていなくても動作に問題がないファイル、ディレクトリ、レジストリ、装置については権限マッピング過程は省略されても構わない。
カーネル実行部に登録する方式の場合、仮想カーネル実行部に該当アカウント自体を登録する。
環境変数および設定の再マッピングは、実在のマシンの環境変数と設定が実在のマシンのドライブ経路を基準として記録されている。仮想OSがインストールされた仮想ディスクドライブ名は、実在OSがインストールされた物理的ディスクのドライブ名と異なり得るため、環境変数あるいは設定値のうちマッピングが必要な部分は新たにマッピングしなければならない。
共有される資源に対するマッピングは、下記の通りである。
システムプロセス、サービスプロセスなど一部のOSの構成要素は、実在のマシンと仮想マシンの間に共有され、これらのプロセスで使用される資源もまた共有される。スレッド別に割り当てられる資源は、スレッドレベルの仮想化を通じて解決されるが、プロセス別に割り当てられる資源は状況に合う処理をしなければならない。例えば、ウインドウズの場合、kernel32.dll、user32.dllファイルは実在のマシンと仮想マシンの間にバージョンが同期化されなければならない。
(スタンドアローン(Stand alone)方式の仮想マシンOSイメージの生成)
仮想マシンイメージ内にはOSデータファイルが含まれており、一般的にOSデータ ファイルは数百MB以上の空間を占める。本願発明はOSレベルの仮想化であるため、OSファイルは仮想マシンイメージに入れて配布するのではなく、実在のマシンのOSを利用して直接生成することができる。配布される仮想マシンイメージ内にはファイル目録、レジストリ目録、OS設定値と同じOSイメージの直接の生成に必要な最小限のデータのみを含め、ファイルデータ、レジストリデータなどは実在のマシンのOSにおいて内容をコピーして使用することができる。
仮想マシンイメージ内にはOSデータファイルが含まれており、一般的にOSデータ ファイルは数百MB以上の空間を占める。本願発明はOSレベルの仮想化であるため、OSファイルは仮想マシンイメージに入れて配布するのではなく、実在のマシンのOSを利用して直接生成することができる。配布される仮想マシンイメージ内にはファイル目録、レジストリ目録、OS設定値と同じOSイメージの直接の生成に必要な最小限のデータのみを含め、ファイルデータ、レジストリデータなどは実在のマシンのOSにおいて内容をコピーして使用することができる。
配布される仮想マシンイメージ内に含まれるファイル目録、レジストリ目録、OS設定値のようなデータは、同一のOSの多様なバージョンに存在するすべての目録、或いは一部の目録を含む。例えば、ウインドウズOSはウインドウズ2000、ウインドウズXP、ウインドウズ2003等、多様なバージョンが存在し、仮想マシンイメージはすべてのウインドウズバージョンあるいは一部のウインドウズバージョンに使用されるファイル、レジストリ目録を含むことがある。
イメージマッピングの段階で、上記目録のうち実在のマシンのOSに存在する項目だけを使用するように記録する。以後、実際のマシンのOSにおいて仮想マシンイメージにファイルおよびレジストリデータの内容をコピーする。コピーはイメージマッピング段階でなされ得、仮想マシンの実行段階で該当ファイルやレジストリが実際に使用される時になされることがある。
ウインドウズOSは、DOS環境との互換性のために8.3形式の短いファイルネーム(Short File Name、SFN)ファイル名と、長いファイルネーム(Long File Name、LFN)を共に支援するが、ファイルをコピーするとLFNは同一であるものの、SFNは実在のOSと生成されたイメージが互いに異なることもある。したがって、ファイル複写後、SFNを一致させなければならない。レジストリに記録されたファイル名も、共に一致しなければならない。
(ストリーミング方式のイメージトランスポート)
仮想マシンイメージファイルは、一般的に非常に大きい。仮想マシンを使用するためにイメージファイル全体をダウンロードあるいはコピーした後に使用することもできるが、イメージストリーミング方式でイメージをトランスポートする場合より全体のイメージをダウンロードする時まで待たずに仮想マシンを使用することができる。ストリーミングはイメージファイルをストリーミング記憶装置に保存しておいて、仮想マシンの使用中に必要な部分だけをダウンロードあるいはコピーして使用する方式であり、ストリーミング記憶装置は、ファイルサーバ、ウェブサーバ、FTPサーバのようなサーバ形態の記憶装置でもあり得、USBドライブやCD/DVDロムのような移動式記憶装置であることもあり、一般のハードディスクのような固定式記憶装置であることもある。
仮想マシンイメージファイルは、一般的に非常に大きい。仮想マシンを使用するためにイメージファイル全体をダウンロードあるいはコピーした後に使用することもできるが、イメージストリーミング方式でイメージをトランスポートする場合より全体のイメージをダウンロードする時まで待たずに仮想マシンを使用することができる。ストリーミングはイメージファイルをストリーミング記憶装置に保存しておいて、仮想マシンの使用中に必要な部分だけをダウンロードあるいはコピーして使用する方式であり、ストリーミング記憶装置は、ファイルサーバ、ウェブサーバ、FTPサーバのようなサーバ形態の記憶装置でもあり得、USBドライブやCD/DVDロムのような移動式記憶装置であることもあり、一般のハードディスクのような固定式記憶装置であることもある。
ストリーミング方式のディスクイメージトランスポートは次のような手続きからなる。プロセス、スレッド、デバイスドライバ内のインストラクションが特定ファイルあるいはディレクトリに対するアプローチを要請すると、仮想カーネル実行部はこの要請を仮想ディスクにディスパッチする。仮想ディスクは要請されたファイル、あるいはディレクトリの仮想ディスク上の位置を計算し、これを利用してディスクイメージファイルにおける位置(offset)を求める。計算された位置と必要な長さ(length)をストリーミングイメージ記憶装置に要請すると、ストリーミングイメージ記憶装置はイメージファイルの指定された位置(offset)で指定された長さ(length)だけのデータをトランスポートする。仮想ディスクはトランスポートされたデータを利用して、実行を継続する。
ストリーミング方式のレジストリイメージのトランスポートは、次のような手続きからなる。
プロセス、スレッド、デバイス ドライバ内のインストラクションが特定のレジストリキーあるいは値に対するアプローチを要請すると、仮想カーネル実行部はこれを処理するためにレジストリイメージファイルにアプローチする。この時、レジストリイメージファイルにおいてアプローチしなければならない位置(offset)と長さ(length)が計算され、この要請をストリーミング記憶装置にトランスポートする。ストリーミング記憶装置は、レジストリイメージファイルで指定された位置(offset)と長さ(length)のデータを処理した後、結果をリターンする。仮想カーネル実行部は、トランスポートされたデータを利用して実行を継続する。
(仮想ディスクを介したイメージローディング)
仮想ディスクは、実在のハードディスクをソフトウェア的にエミュレーションする仮想装置である。一つの仮想ディスクは、一つあるいはいくつかの仮想イメージファイルと連結され、仮想ディスクの特定セクターはイメージファイルの特定位置と連結する。したがって、仮想ディスクの特定セクターへのデータの読み取り、書き取りの要請は、イメージファイルの特定位置に該当データを読み取り、使用する形態でエミュレーションされ、その他パーテーションおよびディスクに対する制御要請も同じ方法で処理される。仮想ディスクを利用すると、仮想マシン内に存在する多数のファイルおよびディレクトリが実在のマシンでは一つのディスクイメージファイルで存在するので移動性が向上し、イメージファイルに暗号化を適用すると、他の使用者は暗号を知らなければ仮想マシンを使用することができないので、機密性も良くなる。OSにより、各ディスクはドライブ名が付与される。例えば、ウインドウズOSの場合、C:,D:などのドライブ名が付与される。仮想ディスクも自主的なドライブ名を有することから、同じC:ドライブでも仮想マシンのC:ドライブは仮想ディスクを指し、実在のマシンのC:ドライブは物理的ディスクを指す。
仮想ディスクは、実在のハードディスクをソフトウェア的にエミュレーションする仮想装置である。一つの仮想ディスクは、一つあるいはいくつかの仮想イメージファイルと連結され、仮想ディスクの特定セクターはイメージファイルの特定位置と連結する。したがって、仮想ディスクの特定セクターへのデータの読み取り、書き取りの要請は、イメージファイルの特定位置に該当データを読み取り、使用する形態でエミュレーションされ、その他パーテーションおよびディスクに対する制御要請も同じ方法で処理される。仮想ディスクを利用すると、仮想マシン内に存在する多数のファイルおよびディレクトリが実在のマシンでは一つのディスクイメージファイルで存在するので移動性が向上し、イメージファイルに暗号化を適用すると、他の使用者は暗号を知らなければ仮想マシンを使用することができないので、機密性も良くなる。OSにより、各ディスクはドライブ名が付与される。例えば、ウインドウズOSの場合、C:,D:などのドライブ名が付与される。仮想ディスクも自主的なドライブ名を有することから、同じC:ドライブでも仮想マシンのC:ドライブは仮想ディスクを指し、実在のマシンのC:ドライブは物理的ディスクを指す。
本願発明において、仮想マシンディスクイメージは低容量オプション(light option)を提供する。一般的にOSを使用しようとすると、数百メガバイト以上の保存空間が必要である。ディスクイメージ内にすべてのファイルを含むこともできるが、効率的な移動性を保障するために空のイメージあるいはファイルの目録だけが取り入れられたイメージを配布し、ファイルの内容は実在のマシンのOSのものを利用する方式も可能である。また、実在のマシンとの衝突を最小化するために、OSはO:ドライブ、アプリケーションプログラムはP:ドライブに設定して、仮想ディスクイメージを制作、配布することができる。
(階層化された仮想マシンイメージ)
仮想マシンイメージを単一のファイルでなく階層化された構造で提供する場合、使用中に必要なイメージファイルを挿入することもでき、仮想マシンに問題が発生した場合、問題となるイメージファイルのみを新たなものに交替することができるなど長所がある。仮想マシンイメージはOSのイメージ階層、アプリケーションプログラムのテンプレートのイメージ階層、使用者データのイメージ階層、臨時データのイメージ階層に分かれる。臨時データ階層は、仮想マシンの実行過程で生成されたデータにより仮想マシンに問題が生じた時に削除されても構わないデータが保存される。使用者のデータイメージ階層は、使用者が生成したデータで各種文書ファイル、使用者の指定ファイル、使用者が直接インストールしたソフトウェアのファイルおよびレジストリなどが保存される。アプリケーションプログラムのテンプレートイメージは、仮想マシンイメージの送信機能を通じて生成されたアプリケーションイメージであり、このイメージファイルは仮想マシンの使用中に変更されない。仮想OSテンプレートイメージは、仮想OSのファイルおよびレジストリを含んでいるイメージであり、このイメージファイルは仮想マシンの使用中に変更されない。
仮想マシンイメージを単一のファイルでなく階層化された構造で提供する場合、使用中に必要なイメージファイルを挿入することもでき、仮想マシンに問題が発生した場合、問題となるイメージファイルのみを新たなものに交替することができるなど長所がある。仮想マシンイメージはOSのイメージ階層、アプリケーションプログラムのテンプレートのイメージ階層、使用者データのイメージ階層、臨時データのイメージ階層に分かれる。臨時データ階層は、仮想マシンの実行過程で生成されたデータにより仮想マシンに問題が生じた時に削除されても構わないデータが保存される。使用者のデータイメージ階層は、使用者が生成したデータで各種文書ファイル、使用者の指定ファイル、使用者が直接インストールしたソフトウェアのファイルおよびレジストリなどが保存される。アプリケーションプログラムのテンプレートイメージは、仮想マシンイメージの送信機能を通じて生成されたアプリケーションイメージであり、このイメージファイルは仮想マシンの使用中に変更されない。仮想OSテンプレートイメージは、仮想OSのファイルおよびレジストリを含んでいるイメージであり、このイメージファイルは仮想マシンの使用中に変更されない。
図2に示されているように、仮想OS、アプリケーションプログラムテンプレート、使用者データ、臨時データは階層化されている。ファイルシステムを例にあげると、ファイルシステムスタックには仮想OSファイル、アプリケーションプログラムテンプレートファイル、使用者データファイル、臨時データファイルが保存されている。アプリケーションプログラムがc:Wmyfile.txtを要請すると、臨時データにおいて該当ファイルを探し、存在しなければ使用者データファイルから探し、存在しなければアプリケーションデータファイルから探し、存在しなければ仮想OSファイルから探す。レジストリも同じ方式により動作する。
(仮想OSのブーティング)
使用者がOSを使用しようとすると、OSをブーティングしなければならない。OSブーティングの段階は、一般的に装置の初期化、遅れた変更、システムプロセスの実行、サービスプロセスの実行、OSアプリケーションの実行などの段階に分かれる。仮想マシンも同じように仮想マシン内のOSをブーティングしなければならない。OSレベルで仮想化を具現した場合、それぞれの仮想マシンもブーティング過程を経なければならない。カーネル実行部レイヤでネームスペースおよびプロセスとスレッドに対する強化を具現した後、該当OSのブーティング開始点を仮想カーネル内において呼び出すことでブーティングは始まり、仮想カーネル内で呼び出されたブーティング開始点は、OSのブーティング過程と同様にブーティング段階を進行させる。仮想マシンのブーティング段階では物理的装置に対する初期化は省略され、仮想装置に対する初期化の過程はさらに必要である。遅れた変更とは、ファイルなどの資源が使用中であればこれを削除したり変更することが不可能であるため、一般的にシステム終了後に次回のブーティング過程で資源の削除や変更を処理することを意味し、仮想マシンのブーティング過程で仮想マシン内の遅れた変更を処理しなければならない。
使用者がOSを使用しようとすると、OSをブーティングしなければならない。OSブーティングの段階は、一般的に装置の初期化、遅れた変更、システムプロセスの実行、サービスプロセスの実行、OSアプリケーションの実行などの段階に分かれる。仮想マシンも同じように仮想マシン内のOSをブーティングしなければならない。OSレベルで仮想化を具現した場合、それぞれの仮想マシンもブーティング過程を経なければならない。カーネル実行部レイヤでネームスペースおよびプロセスとスレッドに対する強化を具現した後、該当OSのブーティング開始点を仮想カーネル内において呼び出すことでブーティングは始まり、仮想カーネル内で呼び出されたブーティング開始点は、OSのブーティング過程と同様にブーティング段階を進行させる。仮想マシンのブーティング段階では物理的装置に対する初期化は省略され、仮想装置に対する初期化の過程はさらに必要である。遅れた変更とは、ファイルなどの資源が使用中であればこれを削除したり変更することが不可能であるため、一般的にシステム終了後に次回のブーティング過程で資源の削除や変更を処理することを意味し、仮想マシンのブーティング過程で仮想マシン内の遅れた変更を処理しなければならない。
システムプロセスはOS環境を提供するのに必要な核心プロセスであって、使用者のアカウント管理、ログオン処理、セッション管理、サービス管理などを担当するプロセスである。例えばマイクロソフト社のWindoWS(登録商標)オペレーティングシステムではlsass.exe、winlogon.exe、smss.exeのようなプロセスである。サービスプロセスはバックグラウンドで実行されながら、他のアプリケーションが必要な機能を提供するプロセスとしてDCOM/RPCサービス、プリンタspoolerサービスなどがある。
システムプロセスやサービスプロセスは、仮想マシン内にすべてのプロセスを実行することもできるが、全体のシステム資源を効率的に利用するためにホストOSや他の仮想マシンにすでに実行されているプロセスを共有することもできる。例えば、アカウント管理システムのプロセスの場合、仮想マシンごとに一つずつ実行すると、各仮想マシン別に独立したアカウントが存在するが、ホストOSのプロセスを共有する場合、ホストOSのID/パスワードアカウント情報を各ゲストOSが共有することになる。システムプロセスやサービスプロセスを共有するためには、該当プロセス内に存在するすべての全域的オブジェクトに対するアプローチを共有するプロセスのオブジェクトでマッピングさせなければならない。例えば、プリンタスプーラー(spooler)サービスのプロセスには、プリンタ制御のための名前付きパイプなどが存在するが、ゲストOS内のメモ帳プロセスが文書の出力を要請すると、基本的にゲストOS内のスプーラーサービスの名前付きパイプで接続を試みるであろう。ところが、ゲストOS内にはスプーラーサービスが存在せず、ホストOSのものを共有するため、このような要請をホストOSのスプーラーサービスでマッピングしなければならない。
使用者がOSを終了しようとすれば、OSをシャットダウンしなければならない。OSのシャットダウン段階は、一般的にアプリケーションの終了、装置ドライバの終了、サービスプロセスの終了、システムプロセスの終了などの段階に分かれる。仮想マシンも同じように仮想マシン内のOSを終了しなければならない。終了過程は、実在OSの終了過程によるが、実在の装置の終了は行わない。
(仮想OSの使用)
仮想マシンがブーティングされた後、使用者は実在のOSと同様に仮想マシンを使用する。仮想マシンの画面は、スイッチモードとシームレス(seamless)モードを支援する。スイッチモードは仮想マシン別に独立した画面を持つモードであり、使用者が仮想マシンを使用中に別の仮想マシンや実在のマシンを利用しようとすると、メニューあるいはショートカットキーを利用して画面を転換しなければならない方式である。シームレスモードは実在のマシンのプログラムと仮想マシンのプログラムが一つの画面内で表示される方式である。
仮想マシンがブーティングされた後、使用者は実在のOSと同様に仮想マシンを使用する。仮想マシンの画面は、スイッチモードとシームレス(seamless)モードを支援する。スイッチモードは仮想マシン別に独立した画面を持つモードであり、使用者が仮想マシンを使用中に別の仮想マシンや実在のマシンを利用しようとすると、メニューあるいはショートカットキーを利用して画面を転換しなければならない方式である。シームレスモードは実在のマシンのプログラムと仮想マシンのプログラムが一つの画面内で表示される方式である。
(仮想マシンイメージの送信)
使用者が仮想マシン内で遂行したファイルオフレーションは、仮想ディスクイメージに保存され、仮想マシン内で遂行したレジストリオフレーションは仮想レジストリイメージに保存される。イメージファイルはイメージを送信することを通じて、移動、配布、共有が可能である。送信の最も簡単な方法は、単にイメージファイルをコピーすることである。より発展した方法は、イメージファイル内の不必要な情報を除去し、イメージの大きさを減らすことである。不必要な情報としては臨時ファイル、権限設定情報、共有されないOS構成要素のファイル、レジストリなどがある。より発展した方法としては、イメージファイル内のそれぞれのファイル、ディレクトリ、装置、レジストリに対する権限設定、OSあるいはインストールされたアプリケーションのライセンス情報の追加、使用可能なOSのバージョン情報、必要なライブラリー情報などを追加して、より効率的な共有が可能なようにイメージをパッケージングすることである。
使用者が仮想マシン内で遂行したファイルオフレーションは、仮想ディスクイメージに保存され、仮想マシン内で遂行したレジストリオフレーションは仮想レジストリイメージに保存される。イメージファイルはイメージを送信することを通じて、移動、配布、共有が可能である。送信の最も簡単な方法は、単にイメージファイルをコピーすることである。より発展した方法は、イメージファイル内の不必要な情報を除去し、イメージの大きさを減らすことである。不必要な情報としては臨時ファイル、権限設定情報、共有されないOS構成要素のファイル、レジストリなどがある。より発展した方法としては、イメージファイル内のそれぞれのファイル、ディレクトリ、装置、レジストリに対する権限設定、OSあるいはインストールされたアプリケーションのライセンス情報の追加、使用可能なOSのバージョン情報、必要なライブラリー情報などを追加して、より効率的な共有が可能なようにイメージをパッケージングすることである。
本発明は、PC環境が物理的なハードウェアの制約から解放されるようにする。一つの物理的なPCにインストールされたコンピュータの環境は、そのハードウェアを離れて、別の場所に移動することができなかった制約を克服する。一つの物理的なPCには、一つのコンピュータの環境がインストールされ得るという空間的制約を克服する。ハードウェアやソフトウェアはハードウェアに有機的に結合して使用されなければならないという制約を克服する。使用者は固有のPCソフトウェアの環境をPCハードウェアから自由に脱、付着させることにより、移動性を実現させる。
PCに習熟していない使用者は、プログラムのインストールに必要な知識、各種プログラムの設定を合わせる作業から完全に脱け出し、一度設定された最適化されたプログラムの作業環境を容易にかつ素早く、いつでも使用することができるようにする。すなわち、ソフトウェアをインストール/アンインストールする概念が、コピー/削除する概念に変化する。
一度保存された仮想マシンイメージは、イメージキャッシュ機能、移動式ドライブあるいはファイルサーバ保存機能を利用して、素早く手軽に利用することができる。
また、PCに習熟した使用者に対しても、プログラムのインストールと除去が非常に迅速になされるため、PCをより一層効率的に利用するようにする。
図4に示されている通り、本発明を実施するためには基本的に次のような‘基本ルーチン’を実行する。
1.OSが含まれた仮想マシンテンプレートイメージを、実在のマシンのOSでマッピングする。
2.上記イメージを利用して、仮想マシンをブーティングする。
1.OSが含まれた仮想マシンテンプレートイメージを、実在のマシンのOSでマッピングする。
2.上記イメージを利用して、仮想マシンをブーティングする。
ここで、仮想マシンテンプレートイメージは、OSレベルの仮想化方式を利用して分割された仮想OSのイメージである。OSだけを持つイメージでもあり得、他のPCから移動させて'持ってきたもの'であるイメージであることもある。
ブーティングされた仮想マシンにおいて、利用者はプログラムをインストールした上で必要な事項を設定して、自らが望むPC環境を仮想マシンに具現することができ、ブーティングされた仮想マシンは再び仮想マシンテンプレートイメージに‘送信’が可能である。
送信されたイメージは保存された後に再使用が可能であり、移動ディスクやオンライントランスポートを利用して他のPCに移動することができ、移動したPCにおいて基本ルーチンを実行して、仮想マシンとして使用が可能であるため、PC環境の移動性が実現される。
本発明はPCの利用者に多様な便宜性を提供することができる。
個人の固有のPC環境は、移動ディスクやネットワークを利用して家庭、学校、会社、外国などにある他のPCにそのまま移動することができる。
一台のPCを共有する使用者は、基本ルーチンを実行して各自の固有の仮想マシンイメージを生成して保存し、PCを利用する時ごとにそのイメージで基本ルーチンを実行することにより共有性が達成される。
あるいは個人が複数の仮想マシンイメージを生成して、用途に応じて使用することができる。例えば、VM1では保安が必要なインターネットバンキングや電子商取引にのみ安全に利用することができる。VM2では会社の機密事項が保存された作業環境で利用することができる。VM3ではウイルスやハッキングに完全に露出させながら、自由にインターネットを利用することができる。
PCの初期化を頻繁に必要とする使用者は、基本ルーチンを実行した後、自らの初期のPC環境を設定し、送信してイメージを保存しておく。その後、いつでも初期化が必要であれば、そのイメージを呼び出して基本ルーチンを実行することにより初期化が簡単になされる。PCに関する知識が不足している人は、基本ルーチンを実行する方法、イメージの送信や、受信という方法のみを熟知すれば、いつでも自身のPCの問題を解決することができる。その過程は、単に何度かのマウスクリックの動作により簡単になされる。
本発明はソフトウェアの新たな流通方式を提供する。ソフトウェアのプロバイダは、OSのみがインストールされた仮想マシンテンプレートイメージを利用して、基本ルーチンを実行した後に配布するソフトウェアをインストールし、イメージを送信して販売することができる。消費者はそのイメージを購入して、自身のPCで基本ルーチンを経るだけでソフトウェアを直ちに利用することができる。
消費者は自らに必要なソフトウェアの目録と各製品の設定事項を注文書の形態でプロバイダに提供することもできる。プロバイダは、注文により仮想マシンイメージを生成して、消費者に伝達することができる。あるいは、予め度々使用されるソフトウェアをパッケージ化したイメージを販売することもできる。
オンライン方式のソフトウェアの流通も可能である。サーバは注文を受信して、注文に伴う仮想マシンイメージを生成し、これをトランスポートすることができる。生成されたイメージは、保存された後に再利用が可能である。
企業や官公庁では、構成員に迅速にPCの業務環境を提供することができる。一つのPCで基本ルーチンを実行した後、必要なソフトウェアを全てインストールして送信したイメージを保存しておく。その後、必要な社員にそのイメージを支給して、その社員のPCで基本ルーチンを実行すると業務環境が迅速に準備される。構成員のグループ別に必要なソフトウェアの種類が異なるため、グループ別にイメージを作っておくことができる。
インターネットカフェやIT教育センターのように、少数の人員が多数のPCを管理しなければならない場所においても本発明を利用することができる。各PCでは、あらかじめ保存されたイメージで基本ルーチンを実行した仮想マシン上において顧客がPCを利用するようにする。そうすると、そのPCに問題が生じた場合、本来のイメージを利用して直ちに初期化することができる。また、顧客が特定のソフトウェアのインストールを要求すると、そのソフトウェアがあらかじめインストールされた仮想マシンイメージを利用して、基本ルーチンを実行することにより顧客の要求を直ちに充たすことができる。
与えられた本発明の原理に対する説明に、多くの変化および変形が考案されるものと理解している。よって、後記の特許請求の範囲は、本発明の本質および範囲を外れない、そのようなすべての変化および変形を含むことを意図とする。
Claims (13)
- OSを備える仮想マシンイメージを実行する方法において、
仮想マシンテンプレートイメージをOSにマッピングする段階と、
前記マッピングされたイメージを利用して、仮想マシンをブーティングする段階と、を含むことを特徴とする仮想マシンイメージの実行方法。 - 第1項において、
仮想ディスクを生成する段階と、
前記仮想ディスクに適応変換されたイメージをローディングする段階と、をさらに含むことを特徴とする仮想マシンイメージの実行方法。 - 第1項において、
前記マッピングする段階は、権限マッピング、環境変数マッピング、OS設定マッピング、ドライブ名マッピング、共有される資源に対するマッピングの少なくとも一部を含むことを特徴とする仮想マシンイメージの実行方法。 - 第1項において、
前記マッピングする段階は、スタンドアローン方式のイメージマッピング段階を含み、
前記スタンドアローン方式のイメージマッピング段階は、
仮想マシンイメージで提供するすべてのバージョンのOSファイルおよびレジストリ目録情報で実在のマシンのOSに存在する項目のみを記録する過程と、
実在のマシンのOSでファイルおよびレジストリ内容を仮想マシンイメージにコピーするかコピーしなければならないことを記録する過程を含むことを特徴とする仮想マシンイメージの実行方法。 - 第1項において、
実行された仮想マシンのイメージを送信する段階をさらに含むことを特徴とする仮想マシンイメージの生成方法。 - 第1項において、
前記マッピングする段階以前に、仮想マシンイメージを受信する段階をさらに含むことを特徴とする仮想マシンイメージの生成方法。 - 第1項において、
前記ブーティングする段階は、
カーネル実行部で仮想カーネルを生成する段階と、
仮想装置ドライバ、仮想サービス、仮想システムプロセスの少なくとも一部をローディングする段階と、を含むことを特徴とする仮想マシンイメージの生成方法。 - 第7項において、
前記仮想装置ドライバ、仮想サービス、仮想システムプロセスの全てまたは一部のカーネル構成要素のうち一部分は実在のマシンと共有し、残りの部分は共有しないことを特徴とする仮想マシンイメージの実行方法。 - 第7項において、
前記カーネル実行部で仮想カーネルを生成する段階は、
スレッドレベルで仮想化を具現することを含むことを特徴とする仮想マシンイメージの実行方法。 - ソフトウェアを配布する方法において、
前記ソフトウェアの配布のために少なくとも一つのサーバが設けられ、前記サーバはコンピュータネットワークを介してクライアントと通信可能であり、
クライアントのソフトウェアの配布要請を受信する段階と、
要請されたソフトウェアがインストールされた、仮想マシンイメージを生成する段階と、
生成された仮想マシンイメージをクライアントにトランスポートする段階と、を含むことを特徴とするソフトウェアの配布方法。 - 第10項において、
前記要請は少なくとも一つのインストールされるプログラムの種類および各プログラムの所定の設定事項と構成要素のうち、少なくとも一つを予め決定することを含むことを特徴とするプログラムの配布方法。 - 第10項において、
前記クライアントに提供された仮想マシンイメージをサーバまたは外部保存空間に保存する段階をさらに含み、
これにより、使用者は前記仮想マシンイメージの再トランスポートを受けることができることを特徴とするプログラムの配布方法。 - 仮想マシンイメージをトランスポートする方法において、
前記仮想マシンイメージをトランスポートするために少なくとも一つのサーバが設けられ、前記サーバはコンピュータネットワークを介してクライアントと通信可能であり、
クライアントが要請するコンピュータ環境の設定事項を受信する段階と、
受信された設定事項により、仮想マシンイメージを生成する段階と、
使用者の要請に応答して生成された仮想マシンイメージをトランスポートする段階と、を含み、
前記設定事項はソフトウェアの目録およびOSの環境設定のうち少なくとも一つを含むことを特徴とする仮想マシンイメージのトランスポート方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR20070027161 | 2007-03-20 | ||
| PCT/KR2008/001567 WO2008115012A1 (en) | 2007-03-20 | 2008-03-20 | Movable virtual machine image |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2010522370A true JP2010522370A (ja) | 2010-07-01 |
Family
ID=39766073
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2009554449A Pending JP2010522370A (ja) | 2007-03-20 | 2008-03-20 | 移動型仮想マシンイメージ |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US20100107163A1 (ja) |
| EP (1) | EP2137629A4 (ja) |
| JP (1) | JP2010522370A (ja) |
| KR (5) | KR20080085780A (ja) |
| CN (1) | CN101636722B (ja) |
| WO (1) | WO2008115012A1 (ja) |
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2012203640A (ja) * | 2011-03-25 | 2012-10-22 | Fujitsu Ltd | 仮想マシン管理方法、情報処理装置および仮想マシン管理プログラム |
| US8595511B2 (en) | 2011-06-29 | 2013-11-26 | International Business Machines Corporation | Securely managing the execution of screen rendering instructions in a host operating system and virtual machine |
| JP2014149727A (ja) * | 2013-02-01 | 2014-08-21 | Konica Minolta Inc | 画像形成装置および画像形成装置制御方法 |
| JP2017516179A (ja) * | 2014-03-04 | 2017-06-15 | アマゾン テクノロジーズ インコーポレイテッド | デジタル証明書を用いた仮想マシンイメージの認証 |
| KR101967300B1 (ko) * | 2017-10-27 | 2019-04-09 | 아토리서치(주) | 가상머신 이미지 생성 자동화 방법 및 장치 |
| KR102557385B1 (ko) * | 2022-11-29 | 2023-07-20 | 쿤텍 주식회사 | 가상머신 시스템 및 이를 이용한 가상머신 프로비저닝 방법 |
| US12099865B2 (en) | 2022-11-29 | 2024-09-24 | Coontec Co., Ltd. | Virtual machine system and virtual machine provisioning method using the same |
Families Citing this family (101)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8726294B2 (en) | 2010-10-01 | 2014-05-13 | Z124 | Cross-environment communication using application space API |
| US8966379B2 (en) | 2010-10-01 | 2015-02-24 | Z124 | Dynamic cross-environment application configuration/orientation in an active user environment |
| US9047102B2 (en) | 2010-10-01 | 2015-06-02 | Z124 | Instant remote rendering |
| US8933949B2 (en) | 2010-10-01 | 2015-01-13 | Z124 | User interaction across cross-environment applications through an extended graphics context |
| US9098437B2 (en) | 2010-10-01 | 2015-08-04 | Z124 | Cross-environment communication framework |
| US20130024812A1 (en) | 2011-07-13 | 2013-01-24 | Z124 | Foreground/background assortment of hidden windows |
| US20130024778A1 (en) | 2011-07-13 | 2013-01-24 | Z124 | Dynamic cross-environment application configuration/orientation |
| US8819705B2 (en) | 2010-10-01 | 2014-08-26 | Z124 | User interaction support across cross-environment applications |
| US8698751B2 (en) | 2010-10-01 | 2014-04-15 | Z124 | Gravity drop rules and keyboard display on a multiple screen device |
| US8266616B1 (en) * | 2006-05-11 | 2012-09-11 | Hewlett-Packard Development Company, L.P. | Computer system provisioning using templates |
| US8776038B2 (en) * | 2008-08-07 | 2014-07-08 | Code Systems Corporation | Method and system for configuration of virtualized software applications |
| US8434093B2 (en) | 2008-08-07 | 2013-04-30 | Code Systems Corporation | Method and system for virtualization of software applications |
| US8930512B2 (en) * | 2008-08-21 | 2015-01-06 | Red Hat, Inc. | Providing remote software provisioning to machines |
| US8255350B2 (en) * | 2008-12-31 | 2012-08-28 | Sap Ag | Instantiating a solution using preconfigured templates |
| US8407700B2 (en) * | 2009-03-03 | 2013-03-26 | Symantec Corporation | Methods and systems for merging virtualization sublayers |
| US8402458B1 (en) * | 2009-03-18 | 2013-03-19 | Symantec Corporation | Methods and systems for converting non-layered-software-application installations into layered installations |
| JP5671297B2 (ja) | 2009-11-16 | 2015-02-18 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | Imsネットワークを介してマルチメディア・サービスを最適化するための方法及びシステム |
| KR101115136B1 (ko) * | 2009-12-02 | 2012-02-24 | 주식회사 반딧불소프트웨어 | 보안 컴퓨팅 환경 시스템 및 그 구현 방법 |
| EP2513811B1 (en) | 2009-12-14 | 2018-03-28 | Citrix Systems, Inc. | Methods and systems for optimizing a process of archiving at least one block of a virtual disk image |
| KR101316677B1 (ko) * | 2009-12-17 | 2013-10-10 | 한국전자통신연구원 | 사용자 인터페이스 가상화에 의한 어플리케이션 서비스 시스템 및 방법 |
| US8954958B2 (en) * | 2010-01-11 | 2015-02-10 | Code Systems Corporation | Method of configuring a virtual application |
| US9104517B2 (en) | 2010-01-27 | 2015-08-11 | Code Systems Corporation | System for downloading and executing a virtual application |
| US8959183B2 (en) * | 2010-01-27 | 2015-02-17 | Code Systems Corporation | System for downloading and executing a virtual application |
| US9229748B2 (en) | 2010-01-29 | 2016-01-05 | Code Systems Corporation | Method and system for improving startup performance and interoperability of a virtual application |
| US8250638B2 (en) * | 2010-02-01 | 2012-08-21 | Vmware, Inc. | Maintaining the domain access of a virtual machine |
| US8464003B2 (en) | 2010-02-17 | 2013-06-11 | Hitachi, Ltd. | Method and apparatus to manage object based tier |
| KR101089157B1 (ko) * | 2010-03-05 | 2011-12-02 | 주식회사 안철수연구소 | 클라이언트 가상화를 이용한 서버의 논리적 망분리 시스템 및 방법 |
| US8763009B2 (en) | 2010-04-17 | 2014-06-24 | Code Systems Corporation | Method of hosting a first application in a second application |
| US20110258624A1 (en) * | 2010-04-19 | 2011-10-20 | Fuat Bahadir | Virtual machine based secure operating system |
| US8996667B2 (en) | 2010-04-27 | 2015-03-31 | International Business Machines Corporation | Deploying an operating system |
| US9851984B2 (en) | 2010-05-12 | 2017-12-26 | Hewlett Packard Enterprise Development Lp | Methods, apparatus and articles of manufacture to update virtual machine templates |
| US8352415B2 (en) * | 2010-06-15 | 2013-01-08 | International Business Machines Corporation | Converting images in virtual environments |
| US8782106B2 (en) | 2010-07-02 | 2014-07-15 | Code Systems Corporation | Method and system for managing execution of virtual applications |
| US8490088B2 (en) | 2010-09-10 | 2013-07-16 | International Business Machines Corporation | On demand virtual machine image streaming |
| KR101471366B1 (ko) | 2010-09-30 | 2014-12-10 | 에스케이플래닛 주식회사 | 단말기에 따른 적응적 화면 가상화 방법 및 시스템 |
| US8749484B2 (en) | 2010-10-01 | 2014-06-10 | Z124 | Multi-screen user interface with orientation based control |
| WO2012044546A2 (en) | 2010-10-01 | 2012-04-05 | Imerj, Llc | Auto-waking of a suspended os in a dockable system |
| US8761831B2 (en) | 2010-10-15 | 2014-06-24 | Z124 | Mirrored remote peripheral interface |
| US9021015B2 (en) | 2010-10-18 | 2015-04-28 | Code Systems Corporation | Method and system for publishing virtual applications to a web server |
| US9209976B2 (en) | 2010-10-29 | 2015-12-08 | Code Systems Corporation | Method and system for restricting execution of virtual applications to a managed process environment |
| US8707301B2 (en) | 2010-11-08 | 2014-04-22 | Microsoft Corporation | Insertion of management agents during machine deployment |
| GB2499956B (en) | 2010-11-23 | 2018-02-14 | Servicenow Inc | Direct migration of software images with streaming technique |
| DE112011104325B4 (de) | 2010-12-09 | 2020-08-06 | International Business Machines Corporation | Computerlesbare Speichermedien zum Verschlüsseln und Entschlüsseln einer virtuellen Platte |
| DE112011104356B4 (de) | 2010-12-13 | 2014-05-15 | International Business Machines Corporation | Aktualisieren von Software-Images auf der Grundlage von Streaming-Technik |
| JP5767565B2 (ja) | 2010-12-14 | 2015-08-19 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ソフトウェア・イメージの管理方法、コンピュータ・プログラム、およびシステム(共有メモリ・ブロックを用いた複数のソフトウェア・イメージの管理) |
| CN102025744A (zh) * | 2010-12-20 | 2011-04-20 | 北京世纪互联工程技术服务有限公司 | 一种云计算中虚拟机镜像导入和导出系统 |
| US8839241B2 (en) * | 2010-12-31 | 2014-09-16 | Emc Corporation | Virtual appliance deployment |
| US8713088B2 (en) * | 2011-03-27 | 2014-04-29 | Hewlett-Packard Development Company, L.P. | Identifying users of remote sessions |
| TW201250482A (en) * | 2011-06-02 | 2012-12-16 | Hon Hai Prec Ind Co Ltd | System and method for updating virtual machine templates |
| US20130007726A1 (en) | 2011-06-30 | 2013-01-03 | Indrajit Poddar | Virtual machine disk image installation |
| US8943564B2 (en) * | 2011-07-21 | 2015-01-27 | International Business Machines Corporation | Virtual computer and service |
| CN102929884B (zh) * | 2011-08-10 | 2016-05-04 | 阿里巴巴集团控股有限公司 | 一种收缩虚拟磁盘镜像文件的方法及装置 |
| US9158561B2 (en) * | 2011-08-18 | 2015-10-13 | Vmware, Inc. | Systems and methods for modifying an operating system for a virtual machine |
| US8924986B2 (en) * | 2011-09-01 | 2014-12-30 | American Megatrends, Inc. | Methods, devices and computer program products for confluence of multiple operating systems |
| US8878794B2 (en) | 2011-09-27 | 2014-11-04 | Z124 | State of screen info: easel |
| US8924954B2 (en) * | 2011-11-22 | 2014-12-30 | Huawei Technologies Co., Ltd. | Application software installation method and application software installation apparatus |
| KR101335326B1 (ko) * | 2011-12-30 | 2013-12-02 | (주)네오위즈게임즈 | 클라이언트 단말, 감시 서버, 및 감시 영역 변조 방지 방법 |
| KR101320739B1 (ko) * | 2012-02-22 | 2013-10-21 | 주식회사 팬택 | 휴대용 단말의 메모리 보안 시스템 |
| US10013269B2 (en) * | 2012-02-22 | 2018-07-03 | Vmware, Inc. | Component framework for deploying virtual machines using service provisioning information |
| US9052940B2 (en) * | 2012-03-01 | 2015-06-09 | International Business Machines Corporation | System for customized virtual machine for a target hypervisor by copying image file from a library, and increase file and partition size prior to booting |
| GB2502288A (en) | 2012-05-22 | 2013-11-27 | Ibm | Modifying the order of checking virtual machines for cached disc data |
| KR101493828B1 (ko) * | 2012-05-31 | 2015-02-16 | 주식회사 케이티 | 가상머신 초기 설정 자동화 방법 및 가상머신 초기 설정 자동화 서비스 제공 방법 |
| KR101302003B1 (ko) * | 2012-07-19 | 2013-08-30 | (주)하이큐브시스템 | 버추얼 오퍼레이팅 시스템 |
| US9977698B2 (en) * | 2012-07-31 | 2018-05-22 | V3 Systems Holdings, Inc. | Virtual machine migration into the cloud |
| US9262212B2 (en) * | 2012-11-02 | 2016-02-16 | The Boeing Company | Systems and methods for migrating virtual machines |
| CN103902347B (zh) * | 2012-12-24 | 2017-09-29 | 中国电信股份有限公司 | 虚拟机系统的部署方法与系统 |
| US10002001B1 (en) * | 2013-02-19 | 2018-06-19 | Amazon Technologies, Inc. | Importing a virtual disk image into a compute service environment |
| CN103118129A (zh) * | 2013-02-22 | 2013-05-22 | 浪潮电子信息产业股份有限公司 | 一种具有家用集成数字电视功能的云桌面系统 |
| US9378038B2 (en) | 2013-06-07 | 2016-06-28 | American Megatrends, Inc. | Methods, devices and computer readable storage devices for emulating a gyroscope in a guest operating system from a host operating system |
| US9858097B2 (en) | 2013-06-07 | 2018-01-02 | American Megatrends, Inc. | Methods, devices and computer readable storage devices for emulating rotation events in a guest operating system from a host operating system |
| KR101479409B1 (ko) * | 2013-07-05 | 2015-01-06 | 포항공과대학교 산학협력단 | 오프로드를 이용하는 워크로드의 무결성 보장 장치 및 방법 |
| CN104572274A (zh) * | 2013-10-18 | 2015-04-29 | 宇宙互联有限公司 | 跨云点迁移系统及方法 |
| CN104572239A (zh) * | 2013-10-18 | 2015-04-29 | 宇宙互联有限公司 | 利用云平台制作模板的系统及方法 |
| KR102165601B1 (ko) | 2013-10-24 | 2020-10-14 | 에스케이플래닛 주식회사 | 안전한 어플리케이션 실행을 위한 방법 및 이를 위한 장치 |
| KR102211850B1 (ko) * | 2013-12-11 | 2021-02-02 | 주식회사 케이티 | 클라우드 기반의 가상머신 이미지 서비스 제공 방법 및 시스템 |
| KR102237566B1 (ko) * | 2014-01-23 | 2021-04-07 | 한국전자통신연구원 | 완전 복제된 가상 머신의 디스크 이미지 파일 캐싱 시스템 및 방법 |
| US10599457B2 (en) * | 2014-02-25 | 2020-03-24 | Red Hat, Inc. | Importing and exporting virtual disk images |
| US9430182B2 (en) | 2014-03-06 | 2016-08-30 | American Megatrends, Inc. | Methods, systems and computer readable storage devices for presenting screen content |
| US9652631B2 (en) | 2014-05-05 | 2017-05-16 | Microsoft Technology Licensing, Llc | Secure transport of encrypted virtual machines with continuous owner access |
| US9639340B2 (en) * | 2014-07-24 | 2017-05-02 | Google Inc. | System and method of loading virtual machines |
| US9519787B2 (en) * | 2014-11-14 | 2016-12-13 | Microsoft Technology Licensing, Llc | Secure creation of encrypted virtual machines from encrypted templates |
| US9497187B2 (en) | 2014-12-13 | 2016-11-15 | International Business Machines Corporation | Controlling a discovery component, within a virtual environment, that sends authenticated data to a discovery engine outside the virtual environment |
| US9563454B2 (en) * | 2015-02-03 | 2017-02-07 | International Business Machines Corporation | Using a mobile device to transfer virtual machine between computers while preserving session |
| KR102295960B1 (ko) * | 2015-02-10 | 2021-09-01 | 한국전자통신연구원 | 가상화 기반의 보안 서비스 제공 장치 및 제공 방법 |
| CN104699570B (zh) * | 2015-03-30 | 2017-11-17 | 福州大学 | 一种虚拟桌面与物理桌面共用镜像的智能网络流桌面方法 |
| US9146769B1 (en) | 2015-04-02 | 2015-09-29 | Shiva Shankar | Systems and methods for copying a source machine to a target virtual machine |
| US11438278B2 (en) * | 2015-06-29 | 2022-09-06 | Vmware, Inc. | Container-aware application dependency identification |
| KR101711409B1 (ko) * | 2015-09-14 | 2017-03-03 | 주식회사 새올정보기술 | 다양한 os 환경을 기반으로 하는 어플리케이션 가상화 시스템 및 방법 |
| US20170123996A1 (en) * | 2015-11-02 | 2017-05-04 | Microsoft Technology Licensing, Llc | Direct Mapped Files in Virtual Address-Backed Virtual Machines |
| US9928062B2 (en) * | 2016-03-04 | 2018-03-27 | International Business Machines Corporation | ISA-ported container images |
| CN107919033A (zh) * | 2016-10-10 | 2018-04-17 | 北京七展国际数字科技有限公司 | 一种通过融合多媒体、微气候及生物景观的超感官生态体验系统 |
| KR102019799B1 (ko) * | 2016-11-09 | 2019-09-09 | 건국대학교 산학협력단 | 읽기 및 쓰기가 가능한 가상 디스크의 병합 마운팅을 통한 가상 클러스터 구축 방법 및 장치 |
| KR101974974B1 (ko) * | 2017-05-23 | 2019-05-07 | 주식회사 엔젠소프트 | 컨테이너 기술 기반의 시스템 전환 장치 및 방법 |
| WO2018216972A1 (ko) * | 2017-05-23 | 2018-11-29 | 주식회사 엔젠소프트 | 컨테이너 기술 기반의 시스템 전환 장치 및 방법 |
| US10761869B2 (en) * | 2017-06-26 | 2020-09-01 | Wangsu Science & Technology Co., Ltd. | Cloud platform construction method and cloud platform storing image files in storage backend cluster according to image file type |
| US10430227B2 (en) | 2018-01-09 | 2019-10-01 | Microsoft Technology Licensing, Llc | Fast instantiation of virtual machines in distributed computing systems |
| US10664323B2 (en) | 2018-03-07 | 2020-05-26 | Microsoft Technology Licensing, Llc | Live migration of virtual machines in distributed computing systems |
| KR20200054040A (ko) | 2018-11-09 | 2020-05-19 | 주식회사 엔젠소프트 | 모바일 os 가상화 기반의 보안 제공 장치 및 이를 위한 방법 |
| KR102223141B1 (ko) * | 2019-02-12 | 2021-03-04 | 성균관대학교산학협력단 | 컨테이너 환경에서의 스토리지 드라이버의 동작 방법 및 스토리지 드라이버 장치 |
| US10990673B1 (en) * | 2019-05-24 | 2021-04-27 | Trend Micro Inc. | Protection of antivirus daemon in a computer |
| CN112783525A (zh) * | 2021-01-22 | 2021-05-11 | 新华三大数据技术有限公司 | 一种守护进程升级方法及装置 |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060155735A1 (en) * | 2005-01-07 | 2006-07-13 | Microsoft Corporation | Image server |
Family Cites Families (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5752005A (en) * | 1996-01-22 | 1998-05-12 | Microtest, Inc. | Foreign file system establishing method which uses a native file system virtual device driver |
| US6356915B1 (en) * | 1999-02-22 | 2002-03-12 | Starbase Corp. | Installable file system having virtual file system drive, virtual device driver, and virtual disks |
| US6978439B2 (en) * | 2002-01-10 | 2005-12-20 | Microsoft Corporation | Cross-platform software development with a software development peripheral |
| US7577722B1 (en) * | 2002-04-05 | 2009-08-18 | Vmware, Inc. | Provisioning of computer systems using virtual machines |
| US20040044643A1 (en) * | 2002-04-11 | 2004-03-04 | Devries David A. | Managing multiple virtual machines |
| US7673308B2 (en) * | 2002-11-18 | 2010-03-02 | Symantec Corporation | Virtual OS computing environment |
| US8209680B1 (en) * | 2003-04-11 | 2012-06-26 | Vmware, Inc. | System and method for disk imaging on diverse computers |
| US20050198303A1 (en) * | 2004-01-02 | 2005-09-08 | Robert Knauerhase | Dynamic virtual machine service provider allocation |
| JP4242819B2 (ja) | 2004-10-06 | 2009-03-25 | 株式会社日立製作所 | オフライン作業可能な端末を有する計算機システム |
| US7334076B2 (en) * | 2005-03-08 | 2008-02-19 | Microsoft Corporation | Method and system for a guest physical address virtualization in a virtual machine environment |
| US8074214B2 (en) | 2005-05-19 | 2011-12-06 | Oracle International Corporation | System for creating a customized software installation on demand |
| US20070074191A1 (en) * | 2005-08-30 | 2007-03-29 | Geisinger Nile J | Software executables having virtual hardware, operating systems, and networks |
| US20070050770A1 (en) * | 2005-08-30 | 2007-03-01 | Geisinger Nile J | Method and apparatus for uniformly integrating operating system resources |
| US9189291B2 (en) * | 2005-12-12 | 2015-11-17 | International Business Machines Corporation | Sharing a kernel of an operating system among logical partitions |
| US7653794B2 (en) * | 2006-05-08 | 2010-01-26 | Microsoft Corporation | Converting physical machines to virtual machines |
| WO2007136192A1 (en) * | 2006-05-18 | 2007-11-29 | Sanggyu Lee | Method for protecting client and server |
-
2008
- 2008-03-20 JP JP2009554449A patent/JP2010522370A/ja active Pending
- 2008-03-20 CN CN2008800088354A patent/CN101636722B/zh not_active Expired - Fee Related
- 2008-03-20 EP EP08723604A patent/EP2137629A4/en not_active Withdrawn
- 2008-03-20 KR KR1020080025797A patent/KR20080085780A/ko not_active Ceased
- 2008-03-20 WO PCT/KR2008/001567 patent/WO2008115012A1/en not_active Ceased
- 2008-03-20 US US12/531,963 patent/US20100107163A1/en not_active Abandoned
-
2009
- 2009-01-09 KR KR1020090001739A patent/KR101152227B1/ko active Active
-
2011
- 2011-08-19 KR KR1020110082503A patent/KR101179849B1/ko active Active
- 2011-08-19 KR KR1020110082502A patent/KR101179758B1/ko active Active
-
2012
- 2012-05-03 KR KR1020120046928A patent/KR20120050956A/ko not_active Withdrawn
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060155735A1 (en) * | 2005-01-07 | 2006-07-13 | Microsoft Corporation | Image server |
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2012203640A (ja) * | 2011-03-25 | 2012-10-22 | Fujitsu Ltd | 仮想マシン管理方法、情報処理装置および仮想マシン管理プログラム |
| US8595511B2 (en) | 2011-06-29 | 2013-11-26 | International Business Machines Corporation | Securely managing the execution of screen rendering instructions in a host operating system and virtual machine |
| JP2014149727A (ja) * | 2013-02-01 | 2014-08-21 | Konica Minolta Inc | 画像形成装置および画像形成装置制御方法 |
| JP2017516179A (ja) * | 2014-03-04 | 2017-06-15 | アマゾン テクノロジーズ インコーポレイテッド | デジタル証明書を用いた仮想マシンイメージの認証 |
| US10698710B2 (en) | 2014-03-04 | 2020-06-30 | Amazon Technologies, Inc. | Authentication of virtual machine images using digital certificates |
| KR101967300B1 (ko) * | 2017-10-27 | 2019-04-09 | 아토리서치(주) | 가상머신 이미지 생성 자동화 방법 및 장치 |
| KR102557385B1 (ko) * | 2022-11-29 | 2023-07-20 | 쿤텍 주식회사 | 가상머신 시스템 및 이를 이용한 가상머신 프로비저닝 방법 |
| US12099865B2 (en) | 2022-11-29 | 2024-09-24 | Coontec Co., Ltd. | Virtual machine system and virtual machine provisioning method using the same |
Also Published As
| Publication number | Publication date |
|---|---|
| KR20110099206A (ko) | 2011-09-07 |
| CN101636722B (zh) | 2013-01-30 |
| KR20090018992A (ko) | 2009-02-24 |
| KR101179849B1 (ko) | 2012-09-04 |
| EP2137629A4 (en) | 2010-12-29 |
| CN101636722A (zh) | 2010-01-27 |
| KR20110098889A (ko) | 2011-09-02 |
| US20100107163A1 (en) | 2010-04-29 |
| KR20080085780A (ko) | 2008-09-24 |
| KR20120050956A (ko) | 2012-05-21 |
| KR101152227B1 (ko) | 2012-06-08 |
| EP2137629A1 (en) | 2009-12-30 |
| WO2008115012A1 (en) | 2008-09-25 |
| KR101179758B1 (ko) | 2012-09-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2010522370A (ja) | 移動型仮想マシンイメージ | |
| Portnoy | Virtualization essentials | |
| US20080127348A1 (en) | Network computer system and method using thin user client and virtual machine to provide immunity to hacking, viruses and spy ware | |
| US8505006B1 (en) | Resource management in virtual machines using dynamic table for performing resource queries | |
| US8683466B2 (en) | System and method for generating a virtual desktop | |
| US8151263B1 (en) | Real time cloning of a virtual machine | |
| US7975236B1 (en) | Seamless integration of non-native application into host operating system | |
| US7743389B2 (en) | Selecting between pass-through and emulation in a virtual machine environment | |
| US7996785B2 (en) | Systems and methods for integrating application windows in a virtual machine environment | |
| US10574524B2 (en) | Increasing reusability of and reducing storage resources required for virtual machine images | |
| US20120054740A1 (en) | Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments | |
| US20150169344A1 (en) | Systems and methods for providing seamless software compatibility using virtual machines | |
| US20100235825A1 (en) | Mechanism for Staged Upgrades of a Virtual Machine System | |
| NO340567B1 (no) | Hierarkisk virtualisering med en flernivå virtualiseringsmekanisme | |
| CN101278263A (zh) | 虚拟机环境中的输入/输出设备与物理存储器之间的直接存储器访问 | |
| TW201137751A (en) | Method and system for effective management of heterogeneous virtual environments in a desktop environment | |
| Dash | Getting started with oracle vm virtualbox | |
| US20120311572A1 (en) | Method and apparatus for implementing virtual proxy to support heterogenous systems management | |
| JP2022522643A (ja) | 初期プログラムロード機構を用いたセキュア・ゲストの起動 | |
| US10664299B2 (en) | Power optimizer for VDI system | |
| Solomon et al. | Windows internals | |
| Solomon | The Windows NT kernel architecture | |
| US10565355B2 (en) | Techniques of managing licenses of virtual desktops | |
| CN110383255B (zh) | 用于管理对物理设备的客户分区访问的方法和计算设备 | |
| Meier et al. | IBM systems virtualization: Servers, storage, and software |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110316 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120820 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120828 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130212 |