JP5214473B2 - ハードウェアデバイスなどのリソースを有する仮想マシンの移動システム - Google Patents

ハードウェアデバイスなどのリソースを有する仮想マシンの移動システム Download PDF

Info

Publication number
JP5214473B2
JP5214473B2 JP2008557282A JP2008557282A JP5214473B2 JP 5214473 B2 JP5214473 B2 JP 5214473B2 JP 2008557282 A JP2008557282 A JP 2008557282A JP 2008557282 A JP2008557282 A JP 2008557282A JP 5214473 B2 JP5214473 B2 JP 5214473B2
Authority
JP
Japan
Prior art keywords
resource
port
computer
stack
access request
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.)
Expired - Fee Related
Application number
JP2008557282A
Other languages
English (en)
Other versions
JP2009528620A (ja
Inventor
オシンス,ジャコブ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009528620A publication Critical patent/JP2009528620A/ja
Application granted granted Critical
Publication of JP5214473B2 publication Critical patent/JP5214473B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Description

本発明は、ハードウェアデバイスやそれ以外の物理デバイスなどのリソースを有する仮想マシンを、第1のマシン又はプラットホームから第2のマシン又はプラットホームに移動するのに用いられる方法及び機構に関する。特に、本発明は、リソースに関する状態情報をまったく失うことなく、仮想マシンの移動を可能にする方法及び機構に関する。
仮想マシンとは、ハードウェアシステムのエミュレーションを目的として計算機において動作するソフトウェア構築物である。必ずではないが典型的に、仮想マシンとは、アプリケーションなどであり、計算機において用いられてユーザアプリケーションなどをホストする。仮想マシンは、同時に、ユーザアプリケーションを計算機から隔離し、また、ユーザアプリケーションを計算機上にある他のアプリケーションから隔離する。複数の異なる計算機のそれぞれに対して様々な異なる仮想マシンを書くことができ、それにより、仮想マシンのために書かれた任意のユーザアプリケーションは異なる計算機の中の任意のものにおける動作が可能になる。したがって、それぞれの異なる計算機に対してであっても、異なる様々なユーザアプリケーションは不要である。
計算機のための新たなアーキテクチャと新たなソフトウェアとにより、単一の計算機が複数のパーティションをインスタンス化(instantiate)して動作させることが可能になる。ここで、複数のパーティションは、それぞれ、仮想マシンをインスタンス化して、その上で1又は複数のアプリケーションがインスタンス化されるオペレーティングシステムのインスタンスをホストするのに用いることができる。計算機は、必ずではないが典型的に、監督(overseer)アプリケーション又は「ハイパーバイザ」として機能する仮想マシンモニタを備えた仮想化レイヤを含む。ここで、仮想化レイヤは、それぞれの仮想マシンの管理的な側面を監督する、及び/又は、そうでない場合には管理し、それぞれの仮想マシンと当該仮想マシンの外部世界との間にある可能性のあるリンクとして機能する。
とりわけ、計算機上の特定の仮想マシンは、計算機と関連するリソースへのアクセスを要求することがある。そのようなリソースは、計算機と関連する可能性がある任意の種類のリソースでありうる。例えば、このリソースは、データを保存及び検索する記憶装置であり、記憶装置が用いられるどのような目的のための記憶装置でもかまわない。同様に、リソースは、ネットワーク、プリンタ、スキャナ、ネットワークドライブ、仮想ドライブ、サーバなど、任意の他の資産(アセット)でもありうる。したがって、リソースがどのようなものであっても、仮想マシンには、リソースによって提供されるサービスへのアクセスが与えられる。
複数のパーティションがインスタンス化されている計算機においては、その計算機の任意の特定のリソースは、特定のパーティション/仮想マシン(以下では、「仮想マシン」又は「VM」と称する)に動的に割り当てられる。それによって、この特定のVMは、当該リソースと当該計算機における他のVMからの当該リソースに対するサービスリクエストとを直接的に制御することができる。つまり、この特定のVMは、当該特定のリソースを「有する」リソースホストVM(VM−H)として、リソース能力(capabilities)を提供するホストである。同様に、このVM−Hは、そのような能力をリソースクライアントVM(VM−C)として消費するクライアントである別のVMに、リソースサービスを提供する。このように、VM−CとVM−Hとの組合せによって、特定のリソースの使用が必要となる動作が達成される。
計算機において動作する特定のVM−Cは、現実のマシンであるかのように動作するように構築される。すなわち、特定のVM−Cは、特定のリソースにアクセスする際には、特定のリソースが当該特定のリソースへの直接のリクエストによってアクセス可能であるかのように動作するのが典型的である。したがって、VM−Cは、そのようなリクエストが方向付けられるドライバの経路又はスタック(以下では、「スタック」と称する)を、特定のリソースが当該スタックの最後にあることを期待して、構築している場合がある。しかし、実際は、VM−Cは現実のマシンではなく、特定のリソースはスタックの最後に存在していない。
したがって、リソースが仮想化レイヤ/仮想マシンモニタによってスタックの最後に存在するものとしてエミュレートされる場合がある。実際には、仮想化レイヤは、リソースに対するリクエストを、当該リソースを有する又は当該リソースへのアクセスを有するVM−Hに送る。同様に、VM−Cがそれ自体の仮想的存在を認識していて、VM−Cと当該リソースを有する又は当該リソースへのアクセスを有するVM−Hとを接続するVMバス又はそれ以外の通信経路がその最後に存在している「拡張された(enlightened)」スタックを通じて、特定のリソースへのリクエストを送るという意味で、VM−Cに拡張された能力が与えられている場合がある。なお、ここで、VMバスとは、仮想化レイヤをバイパスするものである。やはり同様に、拡張された能力を有するVM−Cが、VMバスを用いて実現されているVM−CとVM−Hとの間の仮想パイプを通じて、特定のリソースにリクエストを送る場合もある。どのような通信プロトコルが用いられるにしても、VM−Cは、VM−Hを通じて特定のリソースにアクセスするのであって、したがって、VM−Cによって特定のリソースに送られるそれぞれのリクエストは、対応するVM−Hを通じて特定のリソースへの経路をたどる。
特に、特定のリソースを有するVM−Hに関しては、このVM−Hは、VM−Hに割り当てられたリソースのための適切なアダプタを通じて、リソースに直接にアクセスすることができる。必ずではないが典型的には、このアダプタは、VM−Hの計算機におけるハードウェア又はソフトウェアであり、このハードウェア又はソフトウェアはVM−Hへの当該リソースのインタフェースを与える。例えば、このアダプタは、ネットワークインタフェースカードやビデオカードであり、あるいは、同等のソフトウェアでありうる。アダプタへの直接的なアクセスにより、VM−Hは、比較的高い効率及び性能をもって、リソースを用いることができる。特定のリソースが、それぞれが潜在的に特定のVM−Hに割り当てられた複数の対応するアダプタを有していて、複数のVM−Hが1つの特定のリソースを有することもありうる。しかし、どの時点においても、少なくとも典型的には、ただ1つのVM−Hだけを特定のアダプタに割り当てる、すなわち、特定のアダプタを所有することができるのである。いずれにしても、典型的には、特定のアダプタの所有権は特定のアダプタ自体のリソースの所有権と同等であると想定できる。
VMの品質保証(hallmark)とは、VMが仮想的構築物として随意に停止させ再始動することができるということであり、更に、VMが停止された場合には随意に保存し検索し再始動することができることである。特に、特定の計算機においてインスタンス化されているVMは、単一のソフトウェア構築物である。このソフトウェア構築物は、VMに関係する動作データと状態情報とを含めて当該ソフトウェア構築物がVMに関係するすべてのデータを含む限り、適切なパッケージングが可能である。結果的に、第1の計算機におけるVMは、この第1の計算機においてVMを停止し、停止されたVMを第2の計算機に移動し、移動されたVMを第2の計算機において再始動することによって、第2の計算機に動かす、すなわち、「移動する」ことができる。より一般的には、あるVMを、同様の態様で、第1のプラットホームから第2のプラットホームに移動できる。ここで、これらのプラットホームは、複数の異なる計算機であるか、又は、同一の計算機の複数の異なる構成を表す。後者の場合には、例えば、追加的なメモリが加えられている、プロセッサが交換された、追加的な入力装置が提供されている、選択装置が取り外された、などの場合に、計算機は異なる構成を有することになる。
時には、VMに関係する状態情報のすべてが当該VMのソフトウェア構築物の中に含まれていないこともありうる。特に、リソース又はアダプタを有するVM−Hは、当該リソース又は当該アダプタと共に記憶されているリソースに関係する特定の状態情報を有することがある。単なる例であるが、ネットワークであるリソースをVM−Hが有しており、このVM−Hが有する対応するアダプタがネットワークインタフェースカードである場合には、ネットワークに対するリード及びライトコマンドのような状態情報は、少なくとも働きかけがあるまでは一時的に、ネットワークインタフェースカードに記憶される。他の例としては、リソースがアダプタを含む光ディスク読み出しドライブである場合には、ドライブに対するリードコマンドなどの状態情報は当該ドライブに記憶される。更に別の例であるが、リソースがプリンタであり対応するアダプタが印刷スプーラを含む場合には、プリンタに対するライトコマンドなどの状態情報は、そのスプーラに記憶される。
いずれにしても、VM−Hがリソースを有していて、有しているリソースに状態情報を記憶する場合のように、VMの状態情報の一部がVMのソフトウェア構築物に含まれない場合には、VMを第1のプラットホームから第2のプラットホームに移動することは、より困難になる。特に、そのような移動は、リソースにおける状態情報が失われないように処理され、又は、VMから恒久的に分離されるように処理されるまで、生じさせるべきではない。
したがって、VM−Hを第1のプラットホームから第2のプラットホームに移動するときに、VM−Hの状態情報をVM−Hが有するリソースにおいて処理する必要性が存在する。特に、移動の前にリソースにおける状態情報をその通常動作においてリソースから削除することができる、又は、別のVM−Hによる処理が可能であるような方法及び機構に対する必要性が存在する。
上述した必要性は、本発明によって少なくとも部分的には達成される。本発明では、計算システムが、リソースサービスを提供するリソースと、第1及び第2の仮想マシン(VM)がその上でインスタンス化されている計算機とを有する。それぞれのVMは、1又は複数のアプリケーションがインスタンス化されるオペレーティングシステムのインスタンスをホストする。第1のVMは、最初に、リソースに通信可能な態様で結合されており、リソースは、最初に、第1のVMに割り当てられており、よって、第1のVMは、最初に、リソースとそれによって提供されるサービスとを有している。第1のVMは、計算機上のソフトウェア構築物であり、保存が可能で、第1のプラットホームから第2のプラットホームに移動することができる。
第1のVMは、リソースに対応するリソーススタックであって当該リソーススタックを通じて送られたアクセスリクエストに従ってリソースにアクセスするリソーススタックと、前記リソースに通信可能な態様で結合された第1のポートと、通信媒体に通信可能な態様で結合された第2のポートと、リソーススタックと第1のポートと第2のポートとに通信可能な態様で結合されたポートリダイレクタと、を含む。ポートリダイレクタは、それぞれのアクセスリクエストを、第1のポートと第2のポートとの一方においてキューされるリソーススタックから、送り出す。
特に、ポートリダイレクタは、第1のVMが保存される又は移動されることを命じられるまで、それぞれのアクセスリクエストを、第1のポートにおいてキューされるリソーススタックから送り出す。第1のポートにおけるそれぞれのアクセスリクエストは、リソースに向けて送られ、当該リソースによって作用を受ける。第1のVMが保存される又は移動されることを命じられると、及びそれ以降は、ポートリダイレクタは、それぞれのアクセスリクエストを、リソーススタックから第2のポートに送る。第2のポートにおけるそれぞれのアクセスリクエストは、第1のポートにおいてキューされたすべてのアクセスリクエストに対してリソースが働きかけ、それ以後に、第1のVMによる所有から取り除かれた後でのみ、送り出される。
リソースが第1のVMから取り除かれることにより第2のVMが当該リソースとそれによって提供されるサービスとを事後的に有することになった後で、第2のVMは事後的にリソースに通信可能な態様で結合され、リソースは事後的に第2のVMに割り当てられる。リソースの所有者としての第2のVMは、第1のVMの第2のポートに通信媒体を通じて通信可能な態様で結合され、第2のポートにおけるそれぞれのアクセスリクエストは、通信媒体を通じて第2のVMに送られ、更に、リソースによって働きかけられる第2のVMを通じてリソースに送られる。したがって、第1のVMのリソーススタックからのアクセスリクエストは、すべてが、リソースが第1のVMから取り除かれ第2のVMに割り当てられ保存又は移動が完了した後であっても、リソースによる働きかけを受ける。
コンピュータ環境:
図1及び以下の説明では、本発明が実装可能である適切な計算環境についての簡潔な概説を提供することを意図している。しかし、ハンドヘルド、ポータブル及びあらゆる種類のそれ以外の計算機が本発明と関連して用いられることが想定されていると理解してほしい。以下では汎用コンピュータについて説明するが、これは単なる一例である。したがって、本発明は、非常にわずか又は最小限のクライアント・リソースだけしか含まれないネットワーク接続されホストされているサービス環境において実装されることがあるが、これは、例えば、クライアントデバイスがブラウザとしてすなわちワールドワイドウェブへのインタフェースとして機能するネットワーク環境である。
必須ではないが、本発明は、開発者によって用いられるために、アプリケーションプログラムインタフェース(API)を介して実装することができる。及び/又は、本発明は、クライアントワークステーション、サーバ又は他のデバイスなど1又は複数のコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明されるネットワークブラウジングソフトウェアに含まれる。一般に、プログラムモジュールは、特定のタスクを実行する又は特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的には、プログラムモジュールの機能は、様々な実施例において希望されるように、組み合わされ、分配される。更に、当業者であれば理解するように、本発明は、他のコンピュータシステム構成でも実行可能である。本発明は、他の周知の計算システム、環境及び/又は構成においても使用が可能である。制限を意味しないが、パーソナルコンピュータ(PC)、自動預金受払機、サーバコンピュータ、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能な家電、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータなどがその例である。本発明は、通信ネットワーク又は他のデータ伝送媒体によってリンクされる遠隔処理デバイスによってタスクが行なわれる分散コンピューティング環境中で実行されることもある。分散コンピューティング環境では、プログラムモジュールは、記憶装置デバイスを含むローカル及びリモートのコンピュータ記憶媒体の両方に位置することがある。
図1では、本発明が実装される適切な計算システム環境100の例を図解している。上述したように、計算システム環境100は適切なコンピュータ環境の単なる一例であり、本発明の使用又は機能の範囲に関するいかなる制限も示唆も意図もされていない。また、計算環境100は、例示的な動作環境100に図解されているコンポーネントのいかなる組合せにも限定されない。
図1を参照すると、本発明が実装される典型的なシステムは、汎用計算機をコンピュータ110の形で含んでいる。コンピュータ110の構成要素としては、限定的ではないが、演算処理装置120と、システムメモリ130と、システムメモリを含む様々なシステムコンポーネントを演算処理装置120に結合するシステムバス121とを含む。システムバス121は、メモリバス又はメモリコントローラと周辺バスと様々なバスアーキテクチャの中の任意のものを用いるローカルバスとを含むいくつかのタイプのバス構造の中のいずれかである。例示であって限定を意味しないが、そのようなアーキテクチャには、インダストリ・スタンダード・アーキテクチャ(ISA)バス、マイクロチャネル・アーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカルバス、ペリフェラル・コンポーネント・インタコネクト(PCI)バス(メザニーン・バスとしても知られる)及びPCIエクスプレスが含まれる。
コンピュータ110は、典型的には様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110がアクセスできる任意の利用可能な媒体であり、揮発性及び不揮発性の媒体と、取り外し可能及び取り外し不可能な媒体を含む。例示であり限定は意味しないが、コンピュータ可読媒体は、コンピュータ記憶装置媒体及び通信メディアを含むことがある。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール又はそれ以外のデータなどの情報の記憶のために任意の方法又は技術において用いられる揮発性・不揮発性、取り外し可能・取り外し不可能な媒体を含む。コンピュータ記憶媒体には、限定を意味しないが、RAM、ROM、EEPROM、フラッシュ・メモリ又は他のメモリ技術、CDROM、ディジタルバーサタイルディスク(DVD)又は他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、又は所望の情報を格納するために使用することができコンピュータ110によってアクセスすることができるそれ以外の媒体も含まれる。通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、又は、搬送波又は他の移送機構などの変調データ信号の中のそれ以外のデータを具体化するものであり、任意の情報配送媒体を含む。「変調データ信号」という用語は、信号中の情報をエンコードするように設定又は変更された特性の中の1又は複数を有する信号を意味する。例示であり限定ではないが、通信媒体には、有線ネットワークすなわちダイレクトワイアード接続又は光ファイバなどの有線媒体と、アコースティック、RF、赤外線、光、任意の波長で動作するフェーズドアレーアンテナ、任意の波長で動作する指向性及び非指向性型の電磁気エミッタ及び受信機、それ以外の無線媒体などが含まれる。上記のものの任意の組合せも、コンピュータ可読媒体の範囲に含まれる。
システムメモリ130は、コンピュータ記憶装置媒体を、リードオンリメモリ(ROM)131及びランダムアクセスメモリ(RAM)132など揮発性及び/又は不揮発性メモリの形で含む。始動中などにコンピュータ110内の要素間で情報を転送するのを支援する基本ルーチンを含む基本入出力システム133(BIOS)は、ROM131に典型的に格納される。RAM132は、典型的には、直ちにアクセス可能であり処理ユニット120が現在操作しているデータ及び/又はプログラムモジュールを含む。例示であり限定ではないが、図1は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136及びプログラム・データ137を図解している。
コンピュータ110は、取り外し可能/不可能な、揮発性/不揮発性のコンピュータ記憶媒体なども含む。単なる例示であるが、図1は、取り外し不可能で不揮発性の磁気媒体との間で読み書きを行うハードディスクドライブ141と、取り外し可能で不揮発性の磁気ディスク152との間で読み書きを行う磁気ディスクドライブ151と、CDROM又は他の光学媒体など取り外し可能で不揮発性の光ディスク156との間で読み書きを行う光ディスクドライブ155とを図解している。他の取り外し可能/不可能、揮発性/不揮発性のコンピュータ記憶媒体も典型的な動作操作環境において使用される。例示でありこれらに限定されないが、磁気カセットテープ、フラッシュメモリカード、ディジタルバーサタイルディスク、ディジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが含まれる。ハードディスクドライブ141は、インタフェース140など取り外しが不可能なインタフェースを介してシステムバス121に典型的に接続される。また、磁気ディスク装置151及び光ディスクドライブ155は、インタフェース150などの取り外しが可能なメモリ・インタフェースによってシステムバス121に典型的に接続される。
上述した図1に図解されているドライブ及び関連するコンピュータ記憶媒体は、コンピュータ110のために、コンピュータ可読命令、データ構造、プログラムモジュール及び他のデータためのストレージを提供する。図1では、例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146及びプログラム・データ147を格納するものとして図解される。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136及び番組データ137と異なる場合も同一の場合もある。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146及びプログラム・データ147には異なる参照番号が与えられていて、少なくともそれらが異なるコピーであることが図解されている。ユーザは、キーボード162や、マウス、トラックボール又はタッチパッドと一般に呼ばれるポインティング・デバイス161などの入力装置を介してコンピュータ110にコマンドと情報とを入力する。他の入力装置(図示せず)として、マイクロホン、ジョイスティック、ゲームパッド、サテライトデッシュ、スキャナなども含まれる。これら及びそれ以外の入力装置は、多くの場合、システムバス121に結合されているユーザ入力インタフェースを通じて演算処理装置120に接続されるが、パラレルポート、ゲームポート又はユニバーサルシリアルバス(USB)などそれ以外のインタフェース及びバス構造によって接続されることもある。
モニタ191又は他のタイプの表示装置も、ビデオインタフェース190などのインタフェース経由でシステムバス121に接続される。ノースブリッジなどのグラフィックインタフェース182がシステムバス121に接続されることもある。ノースブリッジとは、CPU(すなわちホスト処理ユニット120)と通信し、アクセラレイテッドグラフィックポート(AGP)通信に関して責任を負うチップセットである。1又は複数のグラフィック処理装置(GPU)184が、グラフィックインタフェース182と通信することがある。この点では、GPU184は、レジスタ記憶装置のようなオンチップ記憶装置を含み、ビデオメモリ186と通信するのが一般的である。しかし、GPU184は、コプロセサの一例に過ぎず、様々なコプロセシング装置がコンピュータ110に含まれていることがある。また、モニタ191又は他のタイプの表示装置が、ビデオインタフェース190などのインタフェース経由でシステムバス121に接続され、ビデオメモリ186と通信する。モニタ191に加えて、コンピュータには、更に、スピーカ197及びプリンタ196などの他の周辺出力装置が含まれることがあり、これらは出力周辺インタフェース195によって接続される。
コンピュータ110は、リモートコンピュータ180などの1又は複数のリモートコンピュータへの論理結合を用いて、ネットワーク接続された環境で動作することがある。リモートコンピュータ180とは、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス又はそれ以外の共通ネットワークノードであり、図1では記憶装置181だけが図解されているが、コンピュータ110に関して上述した中の多く又はすべての要素を含む。図1に描かれた論理結合は、ローカルエリアネットワーク(LAN)171及び広域ネットワーク(WAN)173を含むが、他のネットワークを含むこともある。そのようなネットワーキング環境は、オフィス、企業全体に渡るコンピュータネットワーク、イントラネット及びインターネットなどにおいて一般的である。
LANネットワーキング環境の中で用いられるときには、コンピュータ110は、ネットワークインタフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境の中で用いられるときには、コンピュータ110は、典型的には、モデム172や、インターネットなどWAN173経由での通信を確立する他の手段を含む。モデム172は、内蔵も外付けもありうるが、ユーザ入力インタフェース160経由で、又は、他の適切な機構を経由して、システムバス121に接続される。ネットワーク接続された環境では、コンピュータ110又はその一部との関係で示されているプログラムモジュールは、遠隔的な記憶装置に格納されることがある。例示であり限定ではないが、図1は、メモリ・デバイス181に常駐するものとしてリモート・アプリケーション・プログラム185を図解している。示されているネットワーク接続は、コンピュータ間で用いられる例示的な通信リンクとして図解されている。
当業者であれば、コンピュータ110又は他のクライアントデバイスがコンピュータネットワークの一部として用いられることを認識するはずである。この点で、本発明は、任意の数のメモリ又は記憶装置、任意の数の記憶装置の全体で生じる任意の数のアプリケーション又は処理を有する任意のコンピュータシステムに関するものである。本発明は、ネットワーク環境中で用いられリモート又はローカルなメモリを有するサーバコンピュータとクライアントコンピュータとを備えた環境に適用が可能である。本発明は、更に、プログラミング言語機能、解釈及び実行能力を有するスタンドアロンの計算機にも適用可能である。
分散コンピューティングは、計算機とシステムとの間の直接的な交換により、コンピュータ・リソース及びサービスの共有を促進する。これらのリソース及びサービスには、情報の交換、キャッシュ記憶装置、そして、ファイルのためのディスク記憶装置が含まれる。分散コンピューティングは、ネットワーク接続の効果を利用することにより、クライアントが集合的な能力をてこ(レバレッジ)として用いて企業全体に役立てることを可能にする。この点に関しては、様々なデバイスがアプリケーション、オブジェクト又はリソースを有し、これらの間の相互作用により、信頼できるグラフィックスパイプラインのために本発明の認証技術を用いることができる。
図2では、ネットワークで接続された又は分散型の典型的なコンピュータ環境の概略図を提供されている。分散型の計算環境は、計算オブジェクト10a、10b、計算オブジェクト又はデバイス110a、110b、110cなどを含む。これらのオブジェクトは、プログラム、メソッド、データ・ストア、プログラマブルロジックなどを含む。これらのオブジェクトは、PDA、テレビ、MP3プレーヤ、パーソナルコンピュータなどの同じ又は異なるデバイスの部分で構成される。それぞれのオブジェクトは、通信ネットワーク14を経由して別のオブジェクトと通信できる。このネットワークは、それ自体、図2のシステムにサービスを提供する他の計算オブジェクト及び計算機を含む。本発明のある側面によると、それぞれのオブジェクト10又は110は、信頼できるグラフィックスパイプラインのために本発明の認証テクニックを必要とするアプリケーションを含む。
110cなどのオブジェクトは、別の計算機10又は110上においてホストされることもある。したがって、示されている物理環境は接続されているデバイスをコンピュータとして示しているが、そのような図解は単なる例示である。よって、この物理環境を、PDA、テレビ、MP3プレーヤなどの様々なディジタル・デバイス、インタフェースなどのソフトウェア・オブジェクト、COMオブジェクトなどを含むようにも図解してもかまわない。
分散計算環境をサポートするシステム、コンポーネント及びネットワーク・コンフィギュレーションには様々なものがある。例えば、複数の計算システムを、ローカル・ネットワーク又は広域分散ネットワークを経由し、有線又は無線によって、接続することがある。現在では、ネットワークの多くはインターネットに結合されているので、インターネットが、広域的に分散された計算のためのインフラストラクチャを提供し、多くの異なるネットワークを包含する。
ホームネットワーキング環境では、少なくとも4つの別個のネットワーク転送媒体が存在していて、それぞれが、電力線、データ(無線及び有線の両方)、ボイス(例えば、電話)及びエンタテイメント媒体などユニークなプロトコルをサポートしている。光スイッチ及び器具などほとんどの家庭用制御機器は、電力線を接続に使用している。データサービスは、ブロードバンド(例えばDSL又はケーブル・モデムのいずれか)として家庭に入り、無線(例えば、ホームRF又は802.11b)又は有線(例えば、ホームPNA、Cat5、更には電力線も)接続のいずれかを用いて家庭内でアクセス可能である。音声トラフィックは、有線(例えば、Cat3)又は無線(例えば携帯電話)として家庭に入り、家庭の中ではCat3ワイアリングで分配される。エンタテイメント媒体は、サテライトかケーブルのいずれかを介して家庭に入り、典型的には同軸ケーブルを用いて家庭内で分配される。メディアデバイスのクラスターのためのディジタル相互接続としては、IEEE1394及びDVIが普及している。プロトコル標準として普及しているこれらのネットワーク環境及び他のものは、すべて、インターネット経由で外部の世界に接続されるイントラネットを形成するように相互に接続できる。要するに、様々な異なるソースが、データの記憶及び伝送のために存在する。その結果、計算機は、データ処理パイプラインのすべての部分において、コンテンツを保護する複数の方法を必要とする。
「インターネット」とは、一般的に、TCP/IPプロトコルを利用するネットワーク及びゲートウエイの集合を指し、これは、コンピュータ・ネットワーキング技術で周知である。TCP/IPは「トランスミッション・コントロール・プロトコル/インターネット・プロトコル」の頭文字である。インターネットは、ユーザが互いに対話しネットワークを介して情報を共有することを可能にするコンピュータ処理ネットワークプロトコルによって相互に接続された地理的に分散するリモートコンピュータ・ネットワークのシステム、と説明できる。広範囲に情報を共有するために、インターネットなどの遠隔ネットワークは、オープンなシステムとしてこれまで成長してきた。オープンシステムでは、開発者たちは、ほぼ制限をうけることなく特定の動作又はサービスを実行するソフトウェアアプリケーションを設計することができる。
したがって、以上のネットワークインフラストラクチャにより、クライアント/サーバ、ピアツーピア又はハイブリッドアーキテクチャなどネットワークトポロジのホストが可能になる。「クライアント」とは、それが関係していない別のクラス又はグループのサービスを利用するクラス又はグループのメンバである。よって、コンピューティングでは、クライアントとはプロセスであり、つまり、別のプログラムによって提供されるサービスを要求する命令又はタスクの集合である。クライアントプロセスは、別のプログラム又はサービス自体に関する作業上の詳細をまったく「知る」ことを必要とせずに、要求されたサービスを利用する。クライアント/サーバ・アーキテクチャ、特にネットワーク化されたシステムでは、クライアントは、通常、例えばサーバなど別のコンピュータによって提供され共有しているネットワークリソースにアクセスするコンピュータである。図2の例では、コンピュータ110a、110bなどはクライアントと考えることができ、コンピュータ10a、10bなどはサーバと考えることができる。なお、サーバ10a、10bなどは、クライアントコンピュータ110a、110bなどにおいて複製されるデータを維持管理する。
サーバは、典型的には、インターネットなどの遠隔ネットワークを経由してアクセス可能な遠隔コンピュータシステムである。クライアントプロセスは、第1のコンピュータシステムにおいてアクティブであり、サーバプロセスは第2のコンピュータシステムにおいてアクティブであって、通信媒体経由で相互に通信し、分散型の機能を提供し、複数のクライアントがサーバの情報収集能力を利用することを可能にしている。
クライアントとサーバとは、プロトコル層によって提供される機能を利用して、相互に通信する。例えば、ハイパーテキスト・トランスファ・プロトコル(HTTP)は、ワールド・ワイド・ウェブ(WWW)と共に使用される一般的なプロトコルである。典型的には、ユニバーサル・リソース・ロケータ(URL)又はインターネット・プロトコル(IP)アドレスなどのコンピュータネットワーク・アドレスは、サーバ又はクライアントコンピュータを相互に識別するのに用いられる。ネットワークアドレスは、ユニバーサル・リソース・ロケータ・アドレスとも呼ばれる。例えば、通信は、通信媒体を経由して提供することができる。特に、クライアントとサーバとは、大容量通信のためのTCP/IP接続を経由して、相互に接続可能である。
このように、図2には、本発明が実装されるネットワーク接続された又は分散型の環境が図解されていて、ネットワーク/バスを介してサーバとクライアントとが通信する。より詳細には、多くのサーバ10a、10bなどが、通信ネットワーク/バス14を介して相互接続されている。ここで、通信ネットワーク/バス14とは、LAN、WAN、イントラネット、インターネットなどである。そして、ポータブルコンピュータ、ハンドヘルドコンピュータ、シンクライアント、ネットワーク接続された器具、又は、VCR、TV、オーブン、照明、ヒータなどなどの他のデバイスを含む多数のクライアント又は遠隔計算機110a、110b、110c、110d、110eなどが本発明に従って相互に連結されている。したがって、本発明は、任意の計算機に適用可能であり、信頼できるソースからの安全なコンテンツを処理、記憶又はレンダリングする、更には、仮想マシンによって生成された高性能グラフィックスのレンダリングに用いることができる。
通信ネットワーク/バス14が例えばインターネットであるネットワーク環境では、サーバ10はウェブサーバであり、その場合、クライアント110a、110b、110c、110d、110eなどは、HTTPのような既知の多くのプロトコルの中の任意のプロトコルを介してウェブサーバと通信する。分散型の計算環境の特性として、サーバ10は、クライアント110として機能することもある。通信は、適性に応じて、有線又は無線でありうる。複数のクライアントデバイス110は、通信ネットワーク/バス14を介して通信する場合と通信しない場合とがあり、独立の通信が関連付けられていることもある。例えばテレビやVCRの場合、その制御に関して、ネットワーク接続された特徴が存在する場合としない場合とがある。クライアントコンピュータ110とサーバコンピュータ10とは、それぞれ、様々なアプリケーションプログラムモジュール又はオブジェクト135を備えているし、また、ファイルがそこに記憶される又はファイルがそこにダウンロード若しくは移動される様々なタイプの記憶素子又はオブジェクトへの接続又はアクセスを備えている。したがって、本発明は、コンピュータネットワーク/バス14にアクセスして対話するクライアントコンピュータ110a及び110bと、クライアントコンピュータ110a及び110bやそれ以外のデバイス111やデータベース20と対話するサーバコンピュータ10a、10bとを有するコンピュータネットワークにおいて、用いることができる。
分割(パーティション)された計算機:
ここで、図3を参照すると、計算機10は、この計算機10にリソースサービスを提供するのに用いられる特定のリソース12へのアクセスを含む又は有する。そのような計算機10、リソース12及びリソースサービスは、本発明の精神及び範囲から逸脱することなく、任意の適切な計算機、リソース及びリソースサービスでありうる。例えば、計算機10は、データ記憶サービスを提供するしソース12としてハードディスクドライブを備えた、デスクトップ又はラップトップコンピュータなどのパーソナルコンピュータでありうる。同様に、計算機10は、表示サービスを提供するリソース12としてディスプレイスクリーンを備えたポータブル型のオーディオ又はビデオプレーヤなどのポータブル再生装置でありうる。また、計算機10は、通信サービスを提供するリソース12としてデータ通信ネットワークを備えたサーバマシンでありうる。更にまた、サーバマシンは、それ自体がリソース12にもなりうる。リソース12は、特定のハードウェア、特定のハードウェアにアクセスするためのアダプタ、リモートサービス、ローカルサービス、及びこれらの組合せなどでもありうることに注意してほしい。
重要であるのは、計算機10は、複数のパーティションを実行するように構成され、それぞれのパーティションは、仮想マシンをインスタンス化(instantiate)し、更に、1又は複数のアプリケーションがインスタンス化されるオペレーティングシステムのインスタンスをホストすることである。示されているように、そのような計算機10では、当該計算機10の特定のリソース12は特定のパーティション又は仮想マシン14(以下では、VM14と称する)に割り当てられており、それにより、この特定のVM14は特定のリソース12を直接に制御することができる。よって、この特定のVM14は、リソース能力を提供するホスト(VM−H14)である。同様に、このようなVM−H14は1又は複数の他のVM16にリソースサービスを提供し、VM16はそれぞれがそのようなサービスを消費するクライアント(VM−C16)である。典型的には、それぞれのVM−C16とVM−H14とは、仮想マシン(VM)バス18などのパイプ又はチャネル経由で通信し、リソースに関連する動作を実行する。
VMバス18は、本発明の精神及び範囲から逸脱することなく、計算機10においてオブジェクトとしてそれ自体で確立されるか、又は、それ自体では存在しない概念的なオブジェクトとして確立される。後者の場合、そのようなVM14及び16が相互間で通信を確立することを選択すると、概念的なVMバス18は、VM14とVM16との間の通信経路として現れることに注意すべきである。特に、そのようなVMバス18の発生は、VM14及び16が相互間で通信することを選択しVM14のそれぞれが当該通信のために必要なサービスを確立し実際にそのようなサービスを用いて通信を行う際に、生じると考えられる。そのような場合、この通信は、本発明の精神及び範囲から逸脱することなく、計算機10の中の任意の適切な通信手段を経由して生じる。
図3の計算機10とVM14及び16とは、ユーザモードとカーネルモードとの両方を含むように機能的に動作するが、これらのモジュールは、本発明の目的にとって絶対的に必要であるとは考えられない。いずれにしても、そして、理解されると思われるが、ユーザモードは一般的に非特権な状態(non-privileged state)であり、そのモードでは、実行コードは例えばそのコード自体に割り当てられていないメモリへの書込みなど特定の動作の実行がハードウェアによって禁止されている。一般に、それらの禁止されている動作は、VM14及び16のオペレーティングシステムを不安定にするか、又は、セキュリティ上のリスクを構成する動作である。オペレーティングシステムの点では、ユーザモードは類似の非特権的な実行モードであり、そのモードでは、実行コードは、システムコンフィギュレーションファイルへの書込み、他のプロセスを停止させること、システムのリブートなど潜在的に危険な動作の実行をカーネルによって禁止される。
更に注意すべきであるが、カーネルモードすなわち特権的なモードは、オペレーティングシステムと関連するコアコンポーネントとが動作するモードである。カーネルモードで動作するコードは、VM/パーティション14及び16に割り当てられているシステムメモリとリソースとに対する無制限のアクセスを有する。一般に、カーネルモードで動作するコードの量は、セキュリティ及びエレガンスさとの両方の目的のために、最小化される。概略的に述べると、計算機10のユーザは、ユーザモードとそこで動作しているアプリケーションとを介して最も直接的にインタフェースし、他方で、計算機10はカーネルモードを介して最も直接的に特定のリソース12を含むリソースとインタフェースする。
ハードウェアリソース12を有するVM−H14の移動:
上に指摘したように、VM14及び16は、仮想的な構成物として、随意に停止、保存、検索、再開が可能である。その結果、第1のプラットホームの上に保存されているものとしてのVM14及び16は、第2のプラットホームに、動かす、又は、「移動」させることが可能である。ここでプラットホームとは、異なる計算機又は同一の計算機の異なる構成を表わす。したがって、例えば、ウェブサーバであるVM14及び16は、当該ウェブサーバのどのクライアントも当該ウェブサーバが移動されたことを知らないままに、第1の物理マシン上での動作を停止させ、移動させて、第2の物理マシンの上で再始動させることが可能である。そして、そのような移動により、第1の物理マシンを、その上で行われている作業を中断することなく、メンテナンスのため又は再コンフィギュレーションのために、ラインから取り外すことが可能である。更に、そのような移動により、物理マシンのグループが動的に負荷のバランスを取ることを可能になる。同様に、ユーザの個人的なワークスペースを表わすVM14及び16を、当該ユーザが、職場や家庭などにおける複数の計算機12の間で移動させることが可能になる。
しかし、VM14及び16に関する状態情報のすべてが当該VM14及び16のソフトウェア構成の内部に含まれているとは限らないことに注意しなければならない。特に、ハードウェア又はそのアダプタであるリソース12を有するVM−H14は、リソース12と関係のある特定の状態情報を当該リソース12と共に記憶している場合がある。特にVM−H14の状態情報の一部がVM−H14自体のソフトウェア構成に含まれていない状況では、VM−H14を第1のプラットホームから第2のプラットホームへVM−H14を移動させることはより困難となる。特に、リソース12におけるVM−H14の状態情報が、リソース12における当該状態情報が失われずに又はそうでなければVM−H14から恒久的に分離されるように処理されるまで、そのような移動は生じない。
ハードウェアリソース12の使用への割込みをVM−H14が許容できるシナリオでは、リソース12の状態情報は性質が比較的良性であり、移動のためにVM−H14を停止する前に、この状態情報に働きかけてリソース12から削除することができる可能性が高い。例えば、リソース12がプリンタであり状態情報が印刷ジョブに関係する場合には、印刷ジョブは、状態情報がプリンタによって消費されるように完了することが許容され、その後で、プリンタリソース12の所有権はVM−H14から剥奪され、VM−H14は移動されることになろう。
ハードウェアリソース12の使用への割込みをVM−H14が許容できる別のシナリオでは、リソース12の状態情報は性質がいくぶん低下しているが、移動のためにVM−H14を停止する前に、VM−H14に移動することができる可能性が高い。例えば、リソース12が先の例と同じプリンタであり状態情報が先の例と同じ印刷ジョブに関係しているが、当該印刷ジョブを合理的な時間内に完了することができない場合には、VM−H14を移動のために停止する前に、印刷ジョブを停止させることができ、印刷ジョブに関係する残りの状態情報をVM−Hに移動させることができ、その後で、プリンタリソース12の所有権を再びVM−H14から剥奪し、VM−H14を移動させることができる。そして、移動の後で、VM−H14は再び同じプリンタリソース12を所有すると想定して、印刷ジョブに関係する残りの状態情報をVM−H14からプリンタに移動して印刷ジョブを完了することができる。
しかし、これは、前述した仮定をすることができない場合でありえる。したがって、移動の後にVM−H14によって所有されるプリンタ資源12は、別のタイプのプリンタなどまったく異なるプリンタ資源12であるか、又は、同一のプリンタではあるが印刷コントローラが更新されているような僅かに異なるプリンタ資源12でありうる。重要なことであるが、いずれの場合にも、異なるプリンタ資源がもはや状態情報を認識できない又は作用できない限り、印刷ジョブに関係する残りの状態情報をVM−H14からプリンタ自体に移動して印刷ジョブを完了することができない可能性がある。
また、中止すべきであるが、リソース12を有するVM−H14は、ジョブリストや内部的ステートマシン変数などを含む状態情報を当該リソース自体において含むことがある。VM−H14が任意に停止され再始動されれば、リソース12の状態情報は異なる可能性があり、未解決のリクエストが最良の場合でも放棄され、その結果としてVM−H14はクラッシュする可能性がある。最悪の場合には、リソース12のためのドライバなどは、状況を誤解し、プログラミングの際にリソース12がリソース12自体の中のメモリを損ない、やはり結果的にVM−H14をクラッシュさせ、おそらくは、計算機10における他のVM14及び16もまたクラッシュさせる可能性がある。
このように、VM−H14が移動の後に同じ計算機10の上で再始動され同じリソースが利用可能であることを保証できる場合には、VM−H14のオペレーティングシステムにリソース12からすべての状態情報を移動させ、移動させる前にVM−H14と共に記憶させることで十分である。VM−H14が移動の後に再始動される場合、VM−H14のオペレーティングシステムは、記憶されている状態情報を更なる作用のためにリソース12に戻すことができる。
しかし、そのような保証ができない場合、又は、作業負荷のためすべての状態情報を移動の前に動かすことができない場合、移動の前にリソース12をVM−H14による所有から削除する又は「取り外す」ことで十分である場合が多いと思われる。そのような取り外しは、VM−H14のオペレーティングシステムに対する適切なリクエストをすることによって達成することができる。本発明のある1つの実施例では、そのような取り外しは、移動させるためにVM−H14を停止させる前に命令され、それにより、VM−H14のオペレーティングシステムは、重要であると考えられリソース12におけるすべての状態情報よりも少ないと想定される状態情報だけをリソース12からVM−H14に移動させる。取り外しの後では、リソース12は、VM−H14に関する状態情報を有しておらず、移動の前にも後にもVM−H14によってもはや所有されておらず、又は、VM−H14に対して利用可能でない。このように、移動の後では、VM−H14は、どのような状態情報についても再度リソース12に移動させようと試みることはなく、したがって、そのような移動に起因する可能性があるすべての問題が回避される。もちろん、VM−H14は、利用可能でありそのように望むのであれば、リソース12の所有権を再取得しなければならない。
しかし、更に別のシナリオでは、VM−H14は、ハードウェアリソース12の使用への割込みを許容することができず、したがって、リソース12の状態情報はその性質から比較的危機的状態にある。例えば、リソース12がディスクドライブなどVM−H14によって用いられる主記憶装置である場合、それへのアクセスはVM−H14を左右するほど重大であり、さもないと、VM−H14のオペレーティングシステムがクラッシュする可能性がある。したがって、そのようなシナリオでは、VM−H14が状態情報をそのようなリソース12に向けることができなければならない限り、ディスクドライブリソース12の所有権をVM−H14から剥奪する時間は存在しない。よって、このようなシナリオでは、何からの機構を用いて、VM−H14が状態情報をリソース12に向けることを許容しながら、リソース12の動作を停止させ、VM−H14のすべての状態情報をリソース12から取り除かなければならない。
次に図4を参照すると、典型的なVM−H14が、記憶装置スタック22を経由して記憶装置リソース12などのリソース12にアクセスする様子が示されている。ここで、記憶装置スタック22は、ファイルシステムドライバ、パーティションドライバ、ボリュームドライバ、ディスクドライバなどを含む。もちろん、本発明は、その精神及び範囲を逸脱することなく、記憶装置リソース12には限定されず、任意のタイプのリソース12でありうるのであって、適切な対応するスタック22などをアクセスに用いることができる。
示されているように、図4の記憶装置スタック22は、ポートドライバ24など(以下では、「ポート24」又は等価物)を経由して記憶装置リソース12と通信する。注意すべきであり、典型的であるのだが、ポート24は、記憶装置スタック22からの総括的で理想化されたコマンド又はリクエストを記憶装置リソース12に固有のコマンド又はリクエストに変換する。例えば、記憶装置リソース12がVM−H14のオペレーティングシステムが存在するメモリの一部を含む場合には、ページングリクエストなどを受け取るために、記憶装置リソース12は連続的に動作しなければならない。さもないと、VM−H14のオペレーティングシステムはクラッシュする。端的に言えば、このような場合には、少なくとも、VM−H14がアクセスリクエストなどの形式を有する状態情報を記憶装置リソースに常に送ることができなければならない限りにおいて、記憶装置リソース12へのアクセスを中断することはできない。
したがって、次に図5を参照すると、本発明のある実施例において、図4の単一のポート24が1対のポート24a及び24bに置き換えられている。ポート24aは記憶装置スタック22を記憶装置リソース12と通信可能に結合し、ポート24bは記憶装置スタック22を通信媒体経由で別の目的地と通信可能に結合している。図示されているように、ここで、通信媒体とは、VMバス18である。別の目的地とは、計算機10において動作している別のVM14、16である。しかし、別の目的地も通信媒体も、任意の適切な別の目的地及び通信媒体でもよく、その場合でも本発明の精神及び範囲から逸脱しない。
本発明の実施例では、図5に示されているように、ポート24a及び、24bのそれぞれは、ポートリダイレクタ26を経由して記憶装置スタック22に結合される。ポートリダイレクタ26は、記憶装置リソース12へのアクセスリクエストを、ポート24aを経由して記憶装置リソース12に方向付けるか、又は、ポート24b及び通信媒体/VMバス18を経由して別の目的地に方向付ける。重要な点は、ポートリダイレクタ26が、それぞれのアクセスリクエストを以下で説明される態様でいかにして方向付けるかということである。
次に図6を参照すると、本発明の実施例において、記憶装置リソース12などのリソース12を有するVM−H14を移動するのに用いられる一連の動作が示されている。これら一連の動作は、VM−H14を必ずしも移動させず保存するのにも用いられることに注意すべきである。移動でも保存でも、VM−H14の通常の実行時間の動作の間、記憶装置リソース12はVM−H14によって所有され、ポートリダイレクタ26は、VM−H14の記憶装置スタック22からのアクセスリクエストなどを、ポート24aを経由して記憶装置リソース12に方向付け、ポート24aと記憶装置リソース12とは、そのようなアクセスリクエストなどをキュー・アップし、処理する(ステップ601)。しかし、いずれかの適切なソースによってVM−H14の保存又は移動が行われた後で(ステップ603)、ポートリダイレクタ26は、VM−H14の記憶装置スタック22からのアクセスリクエストなどをポート24bに方向付ける(ステップ605)。
まず、ポート24bは受け取ったアクセスリクエストなどをキューし、他方で、ポート24aと記憶装置リソース12とは任意の残りのアクセスリクエストなどを処理する(ステップ607)。こうして、ポート24aと記憶装置リソース12とにおけるすべてのアクセスリクエストなどは完了することが可能になり、その後では、関係する状態情報が記憶装置リソース12に残ることはない(ステップ609)。ポート24aと記憶装置リソース12とにおけるアクセスリクエストなどは完了することが可能になるが、更なるアクセスリクエストなどはポート24bにおいてキューされ、そのようなアクセスリクエストなどが、否定され、無視され、又は拒絶されて、VM−H14のオペレーティングシステムをクラッシュさせることはない。
いったんポート24aと記憶装置リソースとにおけるすべてのアクセスリクエストなどと記憶装置リソース12とが完了し、関係する状態情報が記憶装置リソース12に残らないようになると、記憶装置リソース12は(第1の)VM−H14から取り除かれ、おそらくはイジェクトなどによって、(第1の)VM−H14は、もはや記憶装置リソース12を有しなくなる(ステップ611)。記憶装置リソース12は、次に、別のVM14、16に割り当てられる。別のVM14、16とは、記憶装置リソース12を有する第2のVM−H14である。このような除去及び割り当ての実行は、本発明の精神及び範囲から逸脱することなく、任意の適切な方法によって、任意の適切な手段を用いて行うことができる。
本発明のある実施例では、いったん記憶装置リソース12が第2のVM−H14に割り当てられると、ポート24bは、VMバス18などを介して第2のVM−H14に結合され(ステップ615)、ポート24bにおいてキューされているアクセスリクエストなどは、現在所有している記憶装置リソース12において実行されるように、第2のVM−H14に送られる(ステップ617)。ある時点で、必要なアクセスリクエストなどはすべてが、第1のVM−H14の記憶装置スタック12によって、記憶装置リソース12に送られる。これは、保存又は移動の際に、ポート24a又はポート24bを経由してなされる。記憶装置リソース12は、そのようにして送られたアクセスリクエストなどをすべて処理する(ステップ619)。このようにして、第1のVM−H14の保存又は移動は完了する。ここで、記憶装置リソース12に対するVM−H14からのアクセスリクエストは、すべて、ポート24aによって直接的に又はポート24b及び第2のVM−H14によって間接的に作用を受けることがわかっている。また、記憶装置リソース12が、第1のVM−H14の状態情報をまったく維持することなく第1のVM−H14から削除されることもわかっている(ステップ621)。
移動の後で記憶装置リソース12を第1のVM−H14に再度割り当てることは、ステップ603−621において実行された削除の逆である。したがって、そのような再割り当ての詳細をここで述べる必要はないと思われる。
第1のVM−H14のポートの24bは、受け取った一般的なコマンドを特定のコマンドに変換すべきでない。したがって、第2のVM−H14の記憶装置スタック22は、第1のVM−H14の記憶装置スタック22よりも機能的に上にある必要はない。特に、スタック22は、共に、一般的なコマンドを生じ、第2のVM−H14のポート24において受け取られたそのような一般的なコマンドは、特定のものでありうる。
結論
本発明は、少なくとも部分的にはホスト及びクライアントVM14、16の観点から説明されているが、ハードウェアを有するパーティション又はVMが移動されるような任意の状況に関するものであることに注意すべきである。移動するVMは、他のクライアントに対するホストである場合が多いが、常に他のクライアントに対するホストであるとは限らない。また、移動の際には、VM−H14は、ハードウェアデバイスの所有権を実際放棄するときには、少なくともこの出願において用いられる用語によれば、VM−C16になる。本発明は、ホスト及びクライアントVM14及び16のコンテキストで開示されているものの、「ホスト」又は「クライアント」などの用語に固執することなく、すなわち、VMを有するハードウェアが移動され、移動の前に当該ハードウェアの所有権を別のVMに与えるVMという観点から考察されるべきである。
本発明との関係で実行されるプロセスを実現するのに必要なプログラミングは、比較的単純なものであり、関係するプログラミング業界にとっては明白であるはずである。特に、図5に示されているオブジェクトのそれぞれを構成するのに必要なプログラミングや、図6のステップを実現するのに必要なプログラミングは、オブジェクト及びステップのそれぞれに必要な機能に基づけば、明白であるはずである。したがって、それらのプログラミングは、ここに添付されていない。本発明を実現するには、本発明の精神及び範囲から離れることなく、任意の特定のプログラミングを用いることが可能である。
本発明では、VM−H14が保存される又は第1のプラットホームから第2のプラットホームへ移動されるときに、有しているリソース12においてVM−H14の状態情報を処理するための方法及び機構が提供される。リソース12における状態情報は、移動の前に、通常の動作においてリソース12から削除することができる。あるいは、移動の後でVM−H14が事後的に検索できるように記憶することもできる。更にまた、別のVM−H14による処理も可能である。
上述した複数の実施例に対し、その発明的概念から離れることなく、変更を行うことが可能である。一例を挙げると、本発明はVM−H14の状態情報を備えたハードウェアリソース12の観点から説明されているが、リソース12は、本発明の精神及び範囲から離れることなく、ソフトウェアリソース12など、VM−H14の状態情報を備えた別のタイプのリソースでもよい。別の例として、本発明はリソース12にアクセスするスタック22及びポート24の観点から説明されているが、スタック22及びポート24は、本発明の精神及び範囲から離れずに、スタック及びポートだけではなくリソース12にアクセスする任意の他のアクセス機構をそれぞれが含むことが意図されている。したがって、本発明は、ここで開示された特定の実施例に限定されることはなく、特許請求の範囲に記載された本発明の精神及び範囲内にある修正を含むことが意図されている。
本発明が実装される例示的で制限的ではない計算環境を表すブロック図である。 本発明が実装される様々な計算機を有する例示的なネットワーク環境を表すブロック図である。 計算機を示すブロック図である。この計算機は、本発明の実施例に従って、特定のリソースを有しリソースサービスを提供する仮想マシン(VM−H)を備えたホストパーティションとVM−Hのリソースサービスを用いる仮想マシン(VM−C)を備えたクライアントパーティションとを含む複数のパーティションを動作させる。 図3のVM−Hを示すブロック図である。このVM−Hが有するリソースに結合されている追加的な詳細が示されている。 図3のVM−Hを示すブロック図である。本発明のある実施例に従って、このVM−Hが有するリソースに結合されている追加的な詳細が示されている。 図5のVM−Hに関して実行されるキーとなるステップを示す流れ図である。リソースへのすべてのアクセスリクエストが本発明のある1つの実施例に従って適切に処理されることを保証しながら、VM−Hの保存及び移動が実行される。

Claims (10)

  1. リソース・サービスを提供するリソースと、
    インスタンス化された第1及び第2の複数の仮想マシン(VM)を有する計算機であって、それぞれのVMは1又は複数のアプリケーションがその上でインスタンス化され得るオペレーティング・システムのインスタンスをホストし、前記第1のVMが前記リソースと前記リソースによって提供されるサービスとを当初から有するように前記第1のVMは当初から前記リソースに通信可能に結合され且つ前記リソースは前記第1のVMに当初から割り当てられており、前記第1のVMが保存可能且つ第1のプラットフォームから第2のプラットフォームに移動可能なこの計算機上のソフトウェア構成物であるものと、
    を備える計算システムにおいて、
    前記第1のVMが、
    前記リソースに対応するリソース・スタックであって、このリソース・スタック経由で送られるアクセス・リクエストに従って前記リソースにアクセスするリソース・スタックと、
    前記リソースに通信可能に結合された第1のポートと、
    通信媒体に通信可能に結合された第2のポートと、
    前記リソース・スタックと前記第1及び第2のポートとに通信可能に結合されており、前記リソース・スタックからのそれぞれのアクセスを前記第1及び第2のポートの一方においてキューされるように送るポート・リダイレクタと、
    を含み、
    前記ポート・リダイレクタは、前記第1のVMが保存されるか又は移動されるように命じられるまで前記リソース・スタックからのそれぞれのアクセス・リクエストを前記第1のポートにおいてキューされるように送り、前記第1のポートにおけるそれぞれのアクセス・リクエストは前記リソースによって作用を受ける前記リソースに更に送られ、
    前記ポート・リダイレクタは、前記第1のVMが保存されるか又は移動されるとき及びその後に前記リソース・スタックからのそれぞれのアクセス・リクエストを前記第2のポートに送り、前記第2のポートにおけるそれぞれのアクセス・リクエストは、前記リソースが前記第1のポートにおいてキューされているすべてのアクセス・リクエストに作用し次いで前記第1のVMによって所有されている状態から削除された後でのみ更に送られ、
    前記第2のVMが次いで前記リソースと前記リソースによって提供されるサービスとを所有するように前記第2のVMが次いで前記リソースに通信可能に結合され且つ前記リソースが次いで前記リソースが前記第1のVMから削除された後に前記第2のVMに割り当てられ、それによって前記リソースの所有者としての前記第2のVMが前記通信媒体を介して前記第1のVMの前記第2のポートに通信可能に結合され、前記第2のポートにおけるそれぞれのアクセス・リクエストが前記通信媒体を介して前記第2のVMに送られ、更に、前記リソースによって作用される前記第2のVMを介して前記リソースに送られ、
    よって、前記リソースが前記第1のVMから削除され前記第2のVMに割り当てられた後でも前記第1のVMの前記リソース・スタックからのすべてのアクセス・リクエストが前記リソースによって作用されて、前記第1のVMの保存又は移動を完了することが可能であることを特徴とする計算システム。
  2. 請求項1記載の計算システムにおいて、前記計算機は、前記第1のVMと前記第2のVMとを通信可能に結合する通信媒体としてVMバスを更に有することを特徴とする計算システム。
  3. 請求項1記載の計算システムにおいて、前記計算機は前記リソースを有していることを特徴とする計算システム。
  4. 請求項1記載の計算システムにおいて、前記リソースはハードウェア・リソースであることを特徴とする計算システム。
  5. 請求項1記載の計算システムにおいて、前記リソースは記憶装置リソースであることを特徴とする計算システム。
  6. リソース・サービスを提供するリソースと、
    インスタンス化された第1及び第2の複数の仮想マシン(VM)を有する計算機であって、それぞれのVMは1又は複数のアプリケーションがその上でインスタンス化され得るオペレーティング・システムのインスタンスをホストし、前記第1のVMが前記リソースと前記リソースによって提供されるサービスとを当初から有するように前記第1のVMは当初から前記リソースに通信可能に結合され且つ前記リソースは前記第1のVMに当初から割り当てられており、前記第1のVMが保存可能且つ第1のプラットフォームから第2のプラットフォームに移動可能なこの計算機上のソフトウェア構成物であるものと、
    を備えており、前記第1のVMが、
    前記リソースに対応するリソース・スタックであって、このリソース・スタック経由で送られるアクセス・リクエストに従って前記リソースにアクセスするリソース・スタックと、
    前記リソースに通信可能に結合された第1のポートと、
    通信媒体に通信可能に結合された第2のポートと、
    前記リソース・スタックと前記第1及び第2のポートとに通信可能に結合されており、前記リソース・スタックからのそれぞれのアクセスを前記第1及び第2のポートの一方においてキューされるように送るポート・リダイレクタと、
    を含む計算システムに関する方法であって、
    前記ポート・リダイレクタが、前記第1のVMが保存されるか又は移動されるように命じられるまで前記リソース・スタックからのそれぞれのアクセス・リクエストを前記第1のポートにおいてキューされるように送るステップであって、前記第1のポートにおいてキューされているそれぞれのアクセス・リクエストが前記リソースによって作用を受ける前記リソースに更に送られる、ステップと、
    前記第1のVMが保存されるか又は第1のプラットフォームから第2のプラットフォームに移動されるように命じられていると判断する第1のステップであって、前記第1の判断がされた時に、前記ポート・リダイレクタが、前記リソース・スタックからのそれぞれのアクセス・リクエストを前記第2のポートにおいてキューされるように送るステップと、
    前記第1のポートにおいてキューされており前記第1のポートによって送られたすべてのアクセス・リクエストに前記リソースが作用していることを判断する第2のステップと、
    を含んでおり、前記第2の判断がされた時に、
    前記リソースを、前記第1のVMによって所有されている状態から削除し、次いで前記第2のVMが前記リソースと前記リソースによって提供されるサービスとを所有するように前記第2のVMを前記リソースに通信可能に結合し且つ前記リソースを前記第2のVMに割り当て、
    更に、前記第2のVMを前記リソースの所有者として前記通信媒体を介して前記第1のVMの前記第2のポートに通信可能に結合し、
    前記第2のポートにおいてキューされているそれぞれのアクセス・リクエストを前記通信媒体を介して前記第2のVMに送り、それぞれのアクセス・リクエストは前記リソースによって作用される前記第2のVMを介して前記リソースに送られ、
    よって、前記リソースが前記第1のVMから削除され前記第2のVMに割り当てられた後でも前記第1のVMの前記リソース・スタックからのすべてのアクセス・リクエストが前記リソースによって作用されて、前記第1のVMの保存又は移動が完了することを特徴とする方法。
  7. 請求項6記載の方法において、前記計算機は、前記第1のVMと前記第2のVMとを通信可能に結合する通信媒体としてVMバスを更に有することを特徴とする方法。
  8. 請求項6記載の方法において、前記計算機は前記リソースを有していることを特徴とする方法。
  9. 請求項6記載の方法において、前記リソースはハードウェア・リソースであることを特徴とする方法。
  10. 請求項6記載の方法において、前記リソースは記憶装置リソースであることを特徴とする方法。
JP2008557282A 2006-02-28 2007-02-13 ハードウェアデバイスなどのリソースを有する仮想マシンの移動システム Expired - Fee Related JP5214473B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/363,897 2006-02-28
US11/363,897 US7788665B2 (en) 2006-02-28 2006-02-28 Migrating a virtual machine that owns a resource such as a hardware device
PCT/US2007/004047 WO2007100508A1 (en) 2006-02-28 2007-02-13 Migrating a virtual machine that owns a resource such as a hardware device

Publications (2)

Publication Number Publication Date
JP2009528620A JP2009528620A (ja) 2009-08-06
JP5214473B2 true JP5214473B2 (ja) 2013-06-19

Family

ID=38445496

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008557282A Expired - Fee Related JP5214473B2 (ja) 2006-02-28 2007-02-13 ハードウェアデバイスなどのリソースを有する仮想マシンの移動システム

Country Status (11)

Country Link
US (4) US7788665B2 (ja)
EP (1) EP1989635B1 (ja)
JP (1) JP5214473B2 (ja)
KR (1) KR20080106908A (ja)
CN (1) CN101390079B (ja)
AU (1) AU2007221339A1 (ja)
BR (1) BRPI0708338A8 (ja)
CA (1) CA2638765A1 (ja)
NO (1) NO20083314L (ja)
RU (1) RU2436149C2 (ja)
WO (1) WO2007100508A1 (ja)

Families Citing this family (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788665B2 (en) * 2006-02-28 2010-08-31 Microsoft Corporation Migrating a virtual machine that owns a resource such as a hardware device
CA2547047A1 (en) * 2006-05-15 2007-11-15 Embotics Corporation Management of virtual machines using mobile autonomic elements
US7823152B2 (en) * 2006-06-06 2010-10-26 International Business Machines Corporation System and method for collaborative hosting of applications, virtual machines, and data objects
US8819242B2 (en) * 2006-08-31 2014-08-26 Cisco Technology, Inc. Method and system to transfer data utilizing cut-through sockets
US7673113B2 (en) * 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
JP5246388B2 (ja) * 2007-03-08 2013-07-24 日本電気株式会社 仮想装置構成システム、及びその方法
US20080244574A1 (en) * 2007-03-26 2008-10-02 Vedvyas Shanbhogue Dynamically relocating devices between virtual machines
WO2009039375A2 (en) * 2007-09-20 2009-03-26 C & S Operations, Inc. Computer system
US8468521B2 (en) * 2007-10-26 2013-06-18 Netapp, Inc. System and method for utilizing a virtualized compute cluster as an execution engine for a virtual machine of a storage system cluster
CA2645716C (en) * 2007-11-21 2017-05-30 Datagardens Inc. Adaptation of service oriented architecture
US8910152B1 (en) * 2007-11-30 2014-12-09 Hewlett-Packard Development Company, L.P. Migrating a virtual machine by using a hot-plug event
US8370833B2 (en) * 2008-02-20 2013-02-05 Hewlett-Packard Development Company, L.P. Method and system for implementing a virtual storage pool in a virtual environment
US8201166B2 (en) * 2008-04-30 2012-06-12 Hewlett-Packard Development Company, L.P. Virtualization platform configured with virtual connect control
US8145471B2 (en) * 2008-04-30 2012-03-27 International Business Machines Corporation Non-destructive simulation of a failure in a virtualization environment
US9032397B2 (en) * 2008-05-28 2015-05-12 Hewlett-Packard Development Company, L.P. Virtual machine migration with direct physical access control
US7917617B1 (en) * 2008-08-14 2011-03-29 Netapp, Inc. Mitigating rebaselining of a virtual machine (VM)
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US8321878B2 (en) 2008-10-09 2012-11-27 Microsoft Corporation Virtualized storage assignment method
US8266618B2 (en) * 2008-11-21 2012-09-11 International Business Machines Corporation Graphics hardware resource usage in a fully virtualized computing environment
US7996484B2 (en) * 2008-12-11 2011-08-09 Microsoft Corporation Non-disruptive, reliable live migration of virtual machines with network data reception directly into virtual machines' memory
US20100161922A1 (en) * 2008-12-19 2010-06-24 Richard William Sharp Systems and methods for facilitating migration of virtual machines among a plurality of physical machines
US8190769B1 (en) * 2008-12-30 2012-05-29 Juniper Networks, Inc. Methods and apparatus for provisioning at a network device in response to a virtual resource migration notification
US8565118B2 (en) * 2008-12-30 2013-10-22 Juniper Networks, Inc. Methods and apparatus for distributed dynamic network provisioning
US8054832B1 (en) 2008-12-30 2011-11-08 Juniper Networks, Inc. Methods and apparatus for routing between virtual resources based on a routing location policy
US8255496B2 (en) 2008-12-30 2012-08-28 Juniper Networks, Inc. Method and apparatus for determining a network topology during network provisioning
US8331362B2 (en) * 2008-12-30 2012-12-11 Juniper Networks, Inc. Methods and apparatus for distributed dynamic network provisioning
US8224885B1 (en) 2009-01-26 2012-07-17 Teradici Corporation Method and system for remote computing session management
US8832699B2 (en) 2009-05-11 2014-09-09 Accenture Global Services Limited Migrating processes operating on one platform to another platform in a multi-platform system
US8813048B2 (en) * 2009-05-11 2014-08-19 Accenture Global Services Limited Single code set applications executing in a multiple platform system
US8826269B2 (en) * 2009-06-15 2014-09-02 Microsoft Corporation Annotating virtual application processes
US8429652B2 (en) * 2009-06-22 2013-04-23 Citrix Systems, Inc. Systems and methods for spillover in a multi-core system
US8953603B2 (en) 2009-10-28 2015-02-10 Juniper Networks, Inc. Methods and apparatus related to a distributed switch fabric
US8442048B2 (en) * 2009-11-04 2013-05-14 Juniper Networks, Inc. Methods and apparatus for configuring a virtual network switch
US9645857B2 (en) * 2009-12-17 2017-05-09 Hewlett Packard Enterprise Development Lp Resource fault management for partitions
US20110161495A1 (en) * 2009-12-26 2011-06-30 Ralf Ratering Accelerating opencl applications by utilizing a virtual opencl device as interface to compute clouds
US9110702B2 (en) * 2010-06-02 2015-08-18 Microsoft Technology Licensing, Llc Virtual machine migration techniques
US8719847B2 (en) * 2010-09-27 2014-05-06 Microsoft Corp. Management and marketplace for distributed home devices
US9104458B1 (en) 2010-09-30 2015-08-11 Amazon Technologies, Inc. Managing virtual computing nodes using isolation and migration techniques
US9183028B1 (en) 2010-09-30 2015-11-10 Amazon Technologies, Inc. Managing virtual computing nodes
WO2012045021A2 (en) 2010-09-30 2012-04-05 Commvault Systems, Inc. Efficient data management improvements, such as docking limited-feature data management modules to a full-featured data management system
US9384029B1 (en) 2010-09-30 2016-07-05 Amazon Technologies, Inc. Managing virtual computing nodes
JP5594049B2 (ja) * 2010-10-18 2014-09-24 富士通株式会社 仮想計算機移動方法、コンピュータ及びプログラム
JP5681465B2 (ja) * 2010-12-02 2015-03-11 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理システム、情報処理装置、準備方法、プログラムおよび記録媒体
US8891406B1 (en) 2010-12-22 2014-11-18 Juniper Networks, Inc. Methods and apparatus for tunnel management within a data center
US9104459B2 (en) 2011-01-07 2015-08-11 Red Hat Israel, Ltd. Memory change tracking during migration of virtual machine (VM) with VM-controlled assigned peripherals
US8924965B2 (en) * 2011-01-07 2014-12-30 Red Hat Israel, Ltd. Memory state transfer of virtual machine-controlled peripherals during migrations of the virtual machine
US8490092B2 (en) * 2011-07-06 2013-07-16 Microsoft Corporation Combined live migration and storage migration using file shares and mirroring
US10042656B2 (en) * 2011-08-01 2018-08-07 Avocent Corporation System and method for providing migrateable virtual serial port services
KR101672227B1 (ko) * 2011-08-15 2016-11-03 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 멀티모드 컴퓨팅 디바이스
US9461881B2 (en) 2011-09-30 2016-10-04 Commvault Systems, Inc. Migration of existing computing systems to cloud computing sites or virtual machines
US9372827B2 (en) 2011-09-30 2016-06-21 Commvault Systems, Inc. Migration of an existing computing system to new hardware
US9280380B2 (en) * 2012-02-29 2016-03-08 Red Hat Israel, Ltd. Management of I/O reqeusts in virtual machine migration
ES2439803B1 (es) * 2012-04-19 2014-10-29 Universitat Politècnica De Catalunya Procedimiento, sistema y pieza de código ejecutable para controlar el uso de recursos de hardware de un sistema informático
CN103577265A (zh) * 2012-07-25 2014-02-12 田文洪 一种云计算数据中心离线节能调度的方法与装置
US9600206B2 (en) 2012-08-01 2017-03-21 Microsoft Technology Licensing, Llc Request ordering support when switching virtual disk replication logs
US9740702B2 (en) 2012-12-21 2017-08-22 Commvault Systems, Inc. Systems and methods to identify unprotected virtual machines
CN103051479B (zh) * 2012-12-24 2016-01-20 北京启明星辰信息技术股份有限公司 虚拟机网络控制策略的迁移处理方法及系统
US9378035B2 (en) 2012-12-28 2016-06-28 Commvault Systems, Inc. Systems and methods for repurposing virtual machines
US9338254B2 (en) 2013-01-09 2016-05-10 Microsoft Corporation Service migration across cluster boundaries
CN103116517B (zh) * 2013-01-24 2016-09-14 华为技术有限公司 虚拟化平台下i/o通道的调整方法和调整装置
KR102083289B1 (ko) * 2013-01-29 2020-03-02 삼성전자주식회사 마이크로서버 환경의 소프트웨어 이주 방법 및 이를 지원하는 장치
CN103226496B (zh) * 2013-03-15 2016-05-25 杭州华三通信技术有限公司 业务同步处理方法和多核设备
US9720712B2 (en) * 2013-06-03 2017-08-01 Red Hat Israel, Ltd. Physical/virtual device failover with a shared backend
US9530000B2 (en) 2013-06-14 2016-12-27 Microsoft Technology Licensing, Llc Secure privilege level execution and access protection
US9674105B2 (en) * 2013-06-19 2017-06-06 International Business Machines Corporation Applying a platform code level update to an operational node
CN103473139B (zh) * 2013-09-26 2016-06-01 四川中电启明星信息技术有限公司 虚拟机集群资源分配调度方法
CN103699389B (zh) * 2013-12-30 2016-11-16 北京大学 一种基于编译选项的Linux内核模块关系提取方法
US9772876B2 (en) * 2014-01-06 2017-09-26 International Business Machines Corporation Executing an all-to-allv operation on a parallel computer that includes a plurality of compute nodes
EP3125117B1 (en) * 2014-03-28 2020-09-23 NTT Docomo, Inc. Update management system and update management method
US10013276B2 (en) 2014-06-20 2018-07-03 Google Llc System and method for live migration of a virtualized networking stack
US9367414B2 (en) 2014-06-27 2016-06-14 Vmware, Inc. Persisting high availability protection state for virtual machines stored on distributed object-based storage
US9513946B2 (en) 2014-06-27 2016-12-06 Vmware, Inc. Maintaining high availability during network partitions for virtual machines stored on distributed object-based storage
US9495259B2 (en) * 2014-06-27 2016-11-15 Vmware, Inc. Orchestrating high availability failover for virtual machines stored on distributed object-based storage
WO2016003454A1 (en) * 2014-07-02 2016-01-07 Hewlett-Packard Development Company, L.P. Managing port connections
CN104158868B (zh) * 2014-08-06 2017-12-08 新华三技术有限公司 一种文件传输方法和管理服务器
US10296320B2 (en) * 2014-09-10 2019-05-21 International Business Machines Corporation Patching systems and applications in a virtualized environment
US9811367B2 (en) * 2014-11-13 2017-11-07 Nsp Usa, Inc. Method and apparatus for combined hardware/software VM migration
CN105677441B (zh) * 2014-11-21 2019-07-09 华为技术有限公司 虚拟机迁移方法、虚拟设施管理器及协调器
US9959157B1 (en) * 2014-12-02 2018-05-01 Amazon Technologies, Inc. Computing instance migration
US10698607B2 (en) * 2015-05-19 2020-06-30 Netapp Inc. Configuration update management
US9563514B2 (en) 2015-06-19 2017-02-07 Commvault Systems, Inc. Assignment of proxies for virtual-machine secondary copy operations including streaming backup jobs
US10084873B2 (en) 2015-06-19 2018-09-25 Commvault Systems, Inc. Assignment of data agent proxies for executing virtual-machine secondary copy operations including streaming backup jobs
US9804873B2 (en) 2015-08-14 2017-10-31 Red Hat Israel, Ltd. Guest management of devices assigned to a virtual machine
US10430221B2 (en) 2015-09-28 2019-10-01 Red Hat Israel, Ltd. Post-copy virtual machine migration with assigned devices
US9639388B2 (en) 2015-09-30 2017-05-02 Red Hat, Inc. Deferred assignment of devices in virtual machine migration
US10136247B2 (en) * 2015-10-20 2018-11-20 Microsoft Technology Licensing, Llc Physical and virtual phone mobility
US9933957B1 (en) * 2015-12-30 2018-04-03 EMC IP Holding Company LLC Non-disruptively migrating virtual disks using virtualization appliance
CN105718310B (zh) * 2016-01-13 2018-09-18 上海应用技术学院 一种云平台下io密集型应用的虚拟机调度方法
US9954958B2 (en) 2016-01-29 2018-04-24 Red Hat, Inc. Shared resource management
US10061528B2 (en) * 2016-05-22 2018-08-28 Vmware, Inc. Disk assignment for multiple distributed computing clusters in a virtualized computing environment
RU2644126C2 (ru) * 2016-05-31 2018-02-07 Некоммерческое Партнерство "Центр Прикладных Исследований Компьютерных Сетей" Способ оптимального планирования использования виртуальных сетевых ресурсов центров обработки данных
US10210326B2 (en) * 2016-06-20 2019-02-19 Vmware, Inc. USB stack isolation for enhanced security
US10423444B2 (en) 2016-08-09 2019-09-24 Red Hat Israel, Ltd. Routing table preservation for virtual machine migration with assigned devices
US10949308B2 (en) 2017-03-15 2021-03-16 Commvault Systems, Inc. Application aware backup of virtual machines
US11108858B2 (en) 2017-03-28 2021-08-31 Commvault Systems, Inc. Archiving mail servers via a simple mail transfer protocol (SMTP) server
US11074138B2 (en) 2017-03-29 2021-07-27 Commvault Systems, Inc. Multi-streaming backup operations for mailboxes
US11294786B2 (en) 2017-03-31 2022-04-05 Commvault Systems, Inc. Management of internet of things devices
US10552294B2 (en) 2017-03-31 2020-02-04 Commvault Systems, Inc. Management of internet of things devices
US11221939B2 (en) 2017-03-31 2022-01-11 Commvault Systems, Inc. Managing data from internet of things devices in a vehicle
US10853195B2 (en) 2017-03-31 2020-12-01 Commvault Systems, Inc. Granular restoration of virtual machine application data
US10191911B2 (en) * 2017-05-27 2019-01-29 Plesk International Gmbh Permanent website hosting on mobile devices
US10740479B2 (en) * 2018-01-24 2020-08-11 International Business Machines Corporation Controlling access to removable non-volatile memory device using instruction file
US10904330B2 (en) * 2018-07-10 2021-01-26 Vmware, Inc. Systems, methods and apparatus to manage services in distributed systems
US11385909B2 (en) * 2020-01-06 2022-07-12 International Business Machines Corporation Cascading data configuration and data migration
US11656951B2 (en) 2020-10-28 2023-05-23 Commvault Systems, Inc. Data loss vulnerability detection

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3653159B2 (ja) * 1997-04-01 2005-05-25 株式会社日立製作所 仮想計算機システム間の仮想計算機移動制御方法
US6934755B1 (en) * 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
US6854115B1 (en) * 2000-06-02 2005-02-08 Sun Microsystems, Inc. Process persistence in a virtual machine
JP3877519B2 (ja) * 2000-12-15 2007-02-07 株式会社日立製作所 システム回復方法およびその実施計算機システム並びにその処理プログラムを記録した記録媒体
JP3426216B2 (ja) * 2001-01-19 2003-07-14 三菱電機株式会社 フォールトトレラント計算機システム
US7065549B2 (en) * 2002-03-29 2006-06-20 Illinois Institute Of Technology Communication and process migration protocols for distributed heterogeneous computing
US7313793B2 (en) * 2002-07-11 2007-12-25 Microsoft Corporation Method for forking or migrating a virtual machine
DE20215241U1 (de) * 2002-10-02 2003-02-27 Wang Huo Pia Bürste mit einer austauschbaren Borsteneinheit
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US7424710B1 (en) * 2002-12-18 2008-09-09 Vmware, Inc. TCP/IP offloading for virtual machines
JP4256693B2 (ja) * 2003-02-18 2009-04-22 株式会社日立製作所 計算機システム、i/oデバイス及びi/oデバイスの仮想共有方法
US7114153B2 (en) * 2003-09-10 2006-09-26 Qualcomm Inc. Method and apparatus for continuation-passing in a virtual machine
US7552436B2 (en) * 2003-11-25 2009-06-23 International Business Machines Memory mapped input/output virtualization
US7467381B2 (en) 2003-12-16 2008-12-16 Intel Corporation Resource partitioning and direct access utilizing hardware support for virtualization
US7971203B2 (en) * 2004-03-05 2011-06-28 Intel Corporation Method, apparatus and system for dynamically reassigning a physical device from one virtual machine to another
US20050216920A1 (en) 2004-03-24 2005-09-29 Vijay Tewari Use of a virtual machine to emulate a hardware device
US8156490B2 (en) * 2004-05-08 2012-04-10 International Business Machines Corporation Dynamic migration of virtual machine computer programs upon satisfaction of conditions
US7257811B2 (en) * 2004-05-11 2007-08-14 International Business Machines Corporation System, method and program to migrate a virtual machine
US7383405B2 (en) 2004-06-30 2008-06-03 Microsoft Corporation Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
US7464019B1 (en) * 2004-07-14 2008-12-09 Unisys Corporation Method of resolving conflicts of virtualized disks between two operating environments
US7660910B2 (en) * 2004-08-30 2010-02-09 Lantronix, Inc. Secure communication port redirector
US20060184938A1 (en) 2005-02-17 2006-08-17 Intel Corporation Method, apparatus and system for dynamically reassigning memory from one virtual machine to another
US7730486B2 (en) * 2005-02-28 2010-06-01 Hewlett-Packard Development Company, L.P. System and method for migrating virtual machines on cluster systems
US7797707B2 (en) * 2005-03-02 2010-09-14 Hewlett-Packard Development Company, L.P. System and method for attributing to a corresponding virtual machine CPU usage of a domain in which a shared resource's device driver resides
US7581229B2 (en) * 2005-03-11 2009-08-25 Microsoft Corporation Systems and methods for supporting device access from multiple operating systems
CN100367210C (zh) * 2005-06-16 2008-02-06 武汉理工大学 构建单机环境下的分布式应用系统的方法
US20070039050A1 (en) * 2005-08-15 2007-02-15 Vladimir Aksenov Web-based data collection using data collection devices
US8327353B2 (en) * 2005-08-30 2012-12-04 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
US20070143315A1 (en) * 2005-12-21 2007-06-21 Alan Stone Inter-partition communication in a virtualization environment
US7984438B2 (en) * 2006-02-08 2011-07-19 Microsoft Corporation Virtual machine transitioning from emulating mode to enlightened mode
US7788665B2 (en) * 2006-02-28 2010-08-31 Microsoft Corporation Migrating a virtual machine that owns a resource such as a hardware device

Also Published As

Publication number Publication date
US7788665B2 (en) 2010-08-31
EP1989635A4 (en) 2012-05-09
US20140317621A1 (en) 2014-10-23
BRPI0708338A2 (pt) 2011-05-24
US8769530B2 (en) 2014-07-01
CN101390079A (zh) 2009-03-18
KR20080106908A (ko) 2008-12-09
EP1989635A1 (en) 2008-11-12
EP1989635B1 (en) 2016-07-13
RU2008135084A (ru) 2010-03-10
US20070204265A1 (en) 2007-08-30
US20170161103A1 (en) 2017-06-08
WO2007100508A1 (en) 2007-09-07
CA2638765A1 (en) 2007-09-07
NO20083314L (no) 2008-07-31
US20100325282A1 (en) 2010-12-23
US9535745B2 (en) 2017-01-03
RU2436149C2 (ru) 2011-12-10
US10552208B2 (en) 2020-02-04
CN101390079B (zh) 2010-12-08
AU2007221339A1 (en) 2007-09-07
BRPI0708338A8 (pt) 2016-12-13
JP2009528620A (ja) 2009-08-06

Similar Documents

Publication Publication Date Title
JP5214473B2 (ja) ハードウェアデバイスなどのリソースを有する仮想マシンの移動システム
US10698717B2 (en) Accelerator virtualization method and apparatus, and centralized resource manager
US7984438B2 (en) Virtual machine transitioning from emulating mode to enlightened mode
US10708232B2 (en) Techniques for communication in hybrid cloud system
JP5201366B2 (ja) サーバ機能切替え装置、方法及びプログラム、並びにシンクライアントシステム及びサーバ装置
US10120705B2 (en) Method for implementing GPU virtualization and related apparatus, and system
US7761578B2 (en) Communicating in a virtual environment
US20110153716A1 (en) Enabling virtual desktop connections to remote clients
CN101171573A (zh) 用于网络、块和文件输入及输出的卸载堆栈
JP2014517419A (ja) ネットワークのセグメント化によるネイティブクラウドコンピューティング
JP2006164266A (ja) オペレーティングシステムのパフォーマンスの改善
CN111600755B (zh) 上网行为管理系统和方法
US20080294787A1 (en) Creating a checkpoint for modules on a communications stream
EP2154615B1 (en) Method and interprocess communication driver for managing reqests of a database client to a database server
US20210392117A1 (en) Tunnel Portals Between Isolated Partitions
CN112470443B (zh) 将复位向的生物辨识装置隔离到远程会话
JP7401484B2 (ja) 情報処理装置、情報処理装置の制御方法、及び、情報処理装置の制御プログラム
WO2023000705A1 (zh) 应用程序虚拟化方法、系统、电子设备及存储介质
US20230205557A1 (en) Gpu capability redirection in virtual desktop environments
JPH03288255A (ja) マルチ・プロセッサのネットワーク制御方式
JP2009064211A (ja) 分散システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100107

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120501

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120510

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120531

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120607

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120629

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120731

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130110

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130117

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130227

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160308

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees