JP5592942B2 - 仮想マシンシステムにおけるショートカット入出力 - Google Patents

仮想マシンシステムにおけるショートカット入出力 Download PDF

Info

Publication number
JP5592942B2
JP5592942B2 JP2012511992A JP2012511992A JP5592942B2 JP 5592942 B2 JP5592942 B2 JP 5592942B2 JP 2012511992 A JP2012511992 A JP 2012511992A JP 2012511992 A JP2012511992 A JP 2012511992A JP 5592942 B2 JP5592942 B2 JP 5592942B2
Authority
JP
Japan
Prior art keywords
machine
memory page
page
memory
machine memory
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.)
Active
Application number
JP2012511992A
Other languages
English (en)
Other versions
JP2012527704A (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.)
VMware LLC
Original Assignee
VMware LLC
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 VMware LLC filed Critical VMware LLC
Publication of JP2012527704A publication Critical patent/JP2012527704A/ja
Application granted granted Critical
Publication of JP5592942B2 publication Critical patent/JP5592942B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/325Hash tables
    • 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
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

Description

関連出願の相互参照
[0001]本出願は、2009年5月19日に出願された米国特許仮出願第61/179,612号の優先権を主張する。本仮出願の内容全体は、参考文献として本明細書に援用される。
本発明は、仮想マシンシステムにおけるショートカット入出力に関する。
[0002]仮想マシン(VM)は、オペレーティングシステム(OS)が専用の物理的マシンの外見上の制御により実行できる環境を提供する。複数のVMは、一般的なハードウェアマシン上で実行でき、各VMは、一般的なハードウェアマシン上で実行する他のVMから保護及び分離されて動作してもよい。各VMは、典型的には、ユーザレベルのアプリケーション及びカーネルモードサービスの両方を含む、対応するOSのための完全な実行状態をカプセル化する。
[0003]VMは、デスクトップコンピュータ上で一般的に見られる従来のデスクトップ環境のインスタンスを実行してもよい。仮想デスクトップインフラストラクチャ(VDI)システムは、一般的なハードウェアマシン上でデスクトップ環境のインスタンスを実行するように特に構成されたVMのシステムである。クライアント装置は、一般的なハードウェアマシンに対してネットワーク接続を介してVDIシステム内のデスクトップ環境の特定インスタンスをアクセスしてもよい。クライアント装置は、その後、適合するネットワークアクセスにより任意の位置からユーザに対してデスクトップ環境を提示することができる。
[0004]デスクトップ環境の各インスタンスは、デスクトップOS及び関連するアプリケーションを備える。デスクトップOS及びアプリケーションは、インスタンスに関連づけられる大容量ストレージボリューム内に存在する。各インスタンスは、デスクトップコンピュータに取り付けられたハードディスクによって提供されるものと同様のプライベートなストレージスペースを提供する固有の大容量ストレージボリュームに関連づけられる。大容量ストレージボリュームは、大容量ストレージボリュームに関連づけられた、共有の読み出し専用の「基本ディスク」及び固有の一組の差分ブロックに由来してもよい。
[0005]デスクトップ環境の個別のインスタンスの大容量ストレージボリュームは、大容量ストレージ装置上に存在する。大容量ストレージ装置は、1つ以上の磁気ハードディスクドライブを用いて、従来通りに実現されている。但し、大容量ストレージ装置媒体はいずれの形式で用いられてもよい。例えば、最新のコンピュータシステムにおいて、大容量ストレージ装置媒体は、ソリッドステートドライブ(SSD)又はSSDアレイを備えていてもよい。
[0006]複数のデスクトップ環境がVDIシステムによって起動されるとき、各デスクトップ環境は、関連づけられるVMによって提供される、外見上はプライベートなハードウェアマシン上のOSのそれぞれのインスタンスを個々に起動する。但し、現実には、一般的なハードウェアマシンは、複数のデスクトップ環境の各々を起動するために必要なステップ及び命令をすべて実行している。「ブートストーム(Boot Storm)」は、複数のデスクトップ環境がそれぞれのVMの中で一斉に起動を試みるときに生じる一般的なハードウェアマシンに関してのリソースの利用度合の急激且ついつか致命的になる増大を表す。ブートストームは、典型的には、入出力(I/O)要求、ディスクアクセス要求、及びメモリ割当て要求の急激な増大を特徴とする。各デスクトップ環境が起動するとき、特定の一組の一般的に使用されるディスクブロックは、大容量ストレージ装置から一般的なハードウェアマシン内のシステムメモリの中に読み込まれる。一般的に使用されるディスクブロックの多くは、OSのデータセグメントである。従来のVDIシステムにおいて、各ディスクブロックは、大容量ストレージ装置から読み出され、その後、一般的なハードウェアマシン上のシステムメモリの物理メモリページに格納されるかもしれない。次に、各物理メモリページは、ディスクブロックを要求したVMに対してプライベートにマッピングされる。その結果、一般的に用いられているブロックの各々のコピーは、大容量ストレージシステムから要求され、システムメモリ内に余分に格納されるかもしれず、結果として入出力及びストレージの非能率に通じる。
[0007]例えば、従来のVDIシステムにおいて、デスクトップ環境のN個のインスタンスが一般的なハードウェアマシン上で起動されるならば、一組の一般的に使用されるブロックからの各ブロックのN個のコピーは、大容量ストレージシステムから別々に要求され、N個の別々のコピーとしてシステムメモリ内に最初に格納される。同様に、M人の個別のユーザがそれぞれの仮想デスクトップ環境から特定の一般的なアプリケーションを開始すれば、アプリケーションによって用いられる各ブロックへのM個の別々の要求は、大容量ストレージシステムに対して別々に伝送され、対応するデータは、システムメモリ内のM個の別々のブロックに格納される。一般的なアプリケーションの開始シナリオと同様にブートストームのシナリオにおいても、大幅なメモリ及び入出力の容量は、デスクトップ環境の複数のインスタンスを起動して実行する複数のVMを支援するために利用される。残念なことに、このメモリ及び入出力容量の多くは、余分に利用され、従って、そうでなければVDIシステムアーキテクチャによって得られた有利性が制限される。
米国特許第6,789,156号 米国特許第7,620,766号
[0008]従って、当該技術分野で必要とされるものは、VDI及び他の同様のシステムにおけるシステムリソースの利用度合を低減するための技術である。
[0009]本発明の1つ以上の実施形態は、要求されたデータブロックが以前のアクセスからメモリ内に既に格納されているか、又は保留の要求の終了次第メモリ内に格納されるか否かに依存して、一般的にアクセスされるストレージボリュームに対する読み出し要求を条件付きで発行するための方法とシステムを提供する。その結果、ストレージボリュームに対して発行された入出力要求の総数を、特に、VDIシステムを支援する個別の仮想マシンによって作られた多数の読み出しを、ストレージボリュームにおけるアドレスと同じアドレスにあるVDIシステムにおいて、著しく低減することができる。
[0010]本発明の1つの実施形態による、実行するアプリケーションをその中に有するコンピュータシステムにおける読み出し入出力要求を処理する方法は、マシンメモリページにマッピングされた少なくとも2つの仮想メモリページを各々が有する、マシンメモリページの第1のグループと、マシンメモリページにマッピングされた1つのみの仮想メモリページを各々が有する、マシンメモリページの第2のグループとのための追跡データ構造を利用し、追跡データ構造が、各々のマシンメモリページのために、そこからその内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示す。この方法によれば、読み出し要求に応じて、追跡データ構造が、第1のグループ又は第2のグループにおけるマシンメモリページが読み出し要求において示されたストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定であることを判定するために用いられ、読み出し要求に関連づけられた仮想メモリページが、このマシンメモリページにマッピングされる。更に、第1のグループ又は第2のグループのいずれかのマシンメモリページに対するメモリ書き込み要求に応じて、関連づけられたマシンメモリの内容が、新たなマシンメモリページにコピーされ、メモリ書き込み要求に関連づけられた仮想メモリページが、新たなマシンメモリページにマッピングされる。
[0011]本発明の別の実施形態による、実行するアプリケーションをその中に有するコンピュータシステムにおける読み出し入出力要求を処理する方法は、マシンメモリページにマッピングされた少なくとも2つの仮想記憶ページを各々が有する、マシンメモリページの第1のグループと、マシンメモリページにマッピングされた1つのみの仮想メモリページを各々が有する、マシンメモリページの第2のグループと、マシンメモリページにマッピングされた仮想メモリページを各々が有しない、マシンメモリページの第3のグループとのための追跡データ構造を利用し、追跡データ構造が、各々のマシンメモリページのために、そこからその内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示し、参照カウントが、どのくらいの仮想メモリページがマシンメモリページにマッピングされているのかを示す。この方法によれば、読み出し要求に応じて、読み出し要求に関連づけられた仮想メモリページが、第1のグループ、第2のグループ及び第3のグループのうちの1つにおけるマシンメモリページにマッピングされ、マシンメモリページに関連づけられた参照カウントが、増加させられる。
[0012]本発明の更に別の実施形態による、実行する仮想マシンをその中に有するコンピュータシステムにおける読み出し入出力要求を処理する方法は、一組のマシンメモリページのための追跡データ構造を利用し、追跡データ構造が、各々のマシンメモリページのために、その内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示し、参照カウントが、どのくらいの仮想メモリページが前記マシンメモリページにマッピングされているのかを示し、保留状態フラグが、ストレージボリュームからの読み出しが保留中であるか否かを示す。この方法は、読み出し要求に応じて、追跡されているマシンメモリページの1つが、読み出し要求において示されたストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定であるかを、追跡データ構造を用いて判定するステップと、読み出し要求において示されたストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定である、追跡されているマシンメモリページがあるならば、読み出し要求に関連づけられたゲスト物理メモリページをマシンメモリページにマッピングするステップと、読み出し要求において示されたストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定である、追跡されているマシンメモリページがないならば、読み出し要求に示されたストレージボリュームの位置に格納されたデータのためのストレージボリュームに対して要求を発行し、要求されたデータが格納されるマシンメモリページに対する読み出し要求に関連づけられたゲスト物理メモリページをマッピングし、読み出し要求に関連づけられたゲスト物理メモリページをページ共有ヒントによりマーキングするステップとを含む。
[0013]本発明の1つの実施形態によるコンピュータシステムは、仮想マシンのためのホストプラットホームと、それに接続されたストレージボリュームとを含む。仮想マシンのためのホストプラットホームは、1つ以上のプロセッサと、マシンメモリページにマッピングされた少なくとも2つの仮想メモリページを各々が有する、マシンメモリページの第1のグループと、マシンメモリページにマッピングされた1つのみの仮想メモリページを各々が有する、マシンメモリページの第2のグループと、マシンメモリページにマッピングされた仮想メモリページを各々が有しない、マシンメモリページの第3のグループとのための追跡データ構造をその中に格納したシステムメモリとを含む。追跡データ構造が、各々のマシンメモリページのために、そこからその内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示し、参照カウントが、どのくらいの仮想メモリページが前記マシンメモリページにマッピングされているのかを示し、保留状態フラグが、ストレージボリュームからの読み出しが保留中であるか否かを示す。仮想マシンのいずれかによって発行された読み出し要求は、この追跡データ構造に基づいてストレージボリュームに条件付きで発行される。
[0014]他の実施形態は、開示された方法の1つ以上の態様を処理装置が実施することを可能にする命令を含むコンピュータ読み取り可能な記憶媒体を、制限なく、含む。
[0015]本発明の1つ以上の態様を実施するように構成されたコンピュータシステムを図示するブロック図である。 [0016]本発明の1つの実施形態による、ベースボリュームと、ベースボリュームのリンクされたクローンとを図示する。 [0017]本発明の1つの実施形態による、ゲスト物理ページ番号(GPPN)を介する、仮想マシン(VM)内のゲスト仮想ページ番号(GVPN)からマシンページ番号(MPN)へのメモリマッピングを図示する。 [0018]本発明の1つの実施形態による、第2のGPPNを介する、第2のVMの内の第2のGVPNから第2のMPNへの第2のメモリマッピングを図示する。 [0019]本発明の1つの実施形態による、それによって共有のための第1のMPNに対して第2のGPPNが再マッピングされ、第2のMPNがリリースされる「フリップ」操作を図示する。 [0020]本発明の1つの実施形態による、第2のVMのためのプライベートMPNへの共有MPNのコピーオンライトの再マッピング(Copy−on−Write Remapping)を図示する。 [0021]本発明の1つの実施形態による、第1のVMにより引き起こされたコピーオンライトの再マッピングの結果として、取り残されている共有MPNを図示する。 [0022]本発明の1つの実施形態による、少なくとも追跡されるページの各々の参照カウント及び保留状態ビットを含むように構成されたページ追跡テーブルを図示する。 [0023]本発明の1つの実施形態による、入出力要求を追跡してショートカットするために、ハイパーバイザによって実行される方法ステップのフローチャートである。 [0024]本発明の1つの実施形態による、仮想マシン内のGVPNから、入出力読み出し要求に関連づけられたMPNへのメモリマッピングを図示する。 [0025]本発明の1つの実施形態による、1つのMPNに関連づけられた要求されたデータブロックの、別のMPNに対するコピー操作を図示する。 [0026]本発明の1つの実施形態による、入出力要求を追跡しショートカットするために、ハイパーバイザによって実行される方法ステップのフローチャートである。
[0027]図1は、本発明の1つ以上の態様を実施するように構成されたコンピュータシステム100を図示するブロック図である。1つの実施形態において、コンピュータシステム100は、仮想デスクトップインフラストラクチャ(VDI)システムを実施するように構成され、それによって、仮想デスクトップ環境の複数の個別のインスタンスのための状態は、マシンメモリ110内に存在し、個別のインスタンスのための処理は、プロセッサ複合体112によって実行される。コンピュータシステム100は、プロセッサ複合体112と、マシンメモリ110と、大容量ストレージシステム114とを含む。プロセッサ複合体112は、ダイナミックランダムアクセスメモリ(DRAM)インタフェースのような任意の技術的に実現可能な電気的インタフェースを介して、マシンメモリ110に連結されていてもよい。他の構成において、プロセッサ複合体112は、業界標準のハイパートランスポート(HyperTransport)(商標)、PCIエクスプレス(PCI−Express)(商標)、インテル(Intel)(商標)QuickPathインターコネクト(QPI)、又は他の技術的に実現可能なトランスポートインタフェースのような媒介相互接続を介して、マシンメモリ110に連結されていてもよい。介在する相互接続に関する詳細な記述は、明瞭さのために本明細書には示されない。プロセッサ複合体112は、シリアルアドバンストテクノロジーアタッチメント(SATA)、シリアル接続小型コンピュータ用周辺機器インタフェース(SAS)又は他の技術的に実現可能なネイティブストレージインタフェースなどのネイティブストレージインタフェースを介して、大容量ストレージシステム114に連結されていてもよい。他の構成において、プロセッサ複合体112は、ファイバチャンネル(Fibre Channel)、インターネット小型コンピュータ用周辺機器インタフェース(iSCSI)、又は他の技術的に実現可能なネットワーク使用可能ストレージインタフェースなどのネットワーク使用可能ストレージインタフェースを介して、大容量ストレージシステム114に連結されている。
[0028]プロセッサ複合体112は、メモリインタフェース140と、1つ以上の中央処理装置(CPU)142−1〜142−mとを、制限なく含む。メモリインタフェース140は、1つ以上のCPU142にマシンメモリ110を連結するように構成されている。1つ以上の各CPU142は、マシンメモリ110内に格納されたプログラム命令を実行するように構成されている。プログラム命令は、実行するためにマシンメモリ110内に格納可能なソフトウェアモジュールとして編成されている。1つ以上のCPU142の各々は、ゲスト物理アドレス〜マシンアドレス、又はゲスト仮想アドレス〜ゲスト物理アドレス〜マシンアドレスのネスト化された変換マッピングなどのアドレス変換を実行するように構成されたメモリ管理ユニット(MMU)141を、制限なく含む。ディスクインタフェース144及びネットワークインタフェース146は、プロセッサ複合体112に連結されている。ディスクインタフェース144は、1つ以上のCPU142に大容量ストレージシステム114を連結するように構成されている。ディスクインタフェース144は、ディスクシステムの制御に関連する実装固有の機能性を含んでいてもよい。このような機能性は、例えば、独立ディスク冗長アレイ(RAID)及びキャッシングのための制御を含んでいてもよい。大容量ストレージシステム114は、磁気ディスクドライブ、ソリッドステートドライブ、又は永続的なストレージに対してデータを読み書きするように構成された他の構成要素などの、任意の技術的に実現可能なストレージ素子を備えていてもよい。ネットワークインタフェース146は、1つ以上のCPU142にネットワークポート116を連結するように構成されている。ネットワークインタフェース146は、プロセッサ複合体112内の1つ以上のCPU142にネットワークポート116を連結するように構成されている。ネットワークインタフェースは、ネットワークポート116を介してデータパケットを送受信するために必要とされる任意の機能性を含んでいてもよい。1つの構成において、ネットワークポート116は、業界標準のイーサネット(登録商標)ポートである。
[0029]マシンメモリ110は、全体的なVDIシステムの一部としてデスクトップ環境のインスタンスを提供するためにプロセッサ複合体112によって用いられるカーネル134、ハイパーバイザ136、及び仮想マシン(VM)120をその中に格納している。ハイパーバイザ136は、VM120に対して実行時環境を提供し、かつ対応するVM120の1つに関連する少なくとも1つの仮想マシンモニタ(VMM)130を実行するように構成されたソフトウェア仮想化レイヤである。各VM120は、1対1の方式で、VMM130の1つに関連づけられている。ハイパーバイザ136は、同一のデータを含むメモリのページを共有するためのページ共有メカニズムを実施するように構成されている共有モジュール138を含む。ページ共有は、以下でより詳細に記述されている。ハイパーバイザ136は、また、今後のディスクブロック要求で要求されてもよい(さもないとクライアント処理によって参照されない)ディスクデータのブロックに対応するメモリのページを保持するように構成された孤立キャッシュ(Orphan Cache)139を含む。
[0030]図示されるように、VM120−1は、1つ以上の仮想プロセッサ122と、ゲストシステムソフトウェア127とを含む。アプリケーション128は、ゲストシステムソフトウェア127のための従来のユーザ空間アプリケーション又はカーネル空間アプリケーションのための従来のランタイムモデルに従って開始し実行してもよい。1つの実施形態において、ゲストシステムソフトウェア127は、汎用オペレーティングシステムなどのゲストオペレーティングシステム(OS)124を含む。ゲストシステムソフトウェア127は、また、ウィンドウ管理システムなどのユーザインタフェース126を含む。ゲストOS124は、従来通りに、プロセス制御、メモリ管理、及びアプリケーション128によって必要とされる他のサービスを提供し、かつユーザに対してデスクトップ環境を提示するように構成されている。ゲストOS124は、仮想プロセッサ122を介してアクセス可能な対応する仮想装置(図示せず)を管理するように構成されたゲストドライバ(DRVS)125を含む。実際のハードウェアプロセッサシステムの対応するシステムハードウェアコンポーネントをエミュレートするために、仮想装置は、ソフトウェアで実施される。仮想装置は、グラフィックスフレームバッファ、ネットワークインタフェース、大容量ストレージインタフェース、周辺機器、及びシステムメモリを制限なく含んでいてもよい。通常の実行の間に、アプリケーション128は、ゲスト仮想ページ番号(GVPN)として編成された、仮想アドレス空間をターゲットとするロード要求及び格納要求を生成する。ゲスト仮想アドレス空間内のGVPNに対する要求は、仮想プロセッサ122内のエミュレートされたMMU機能によって、対応するゲスト物理アドレス及びゲスト物理ページ番号(GPPN)に対してマッピングされていてもよい。ゲスト物理メモリは、対応する固有のGPPNにより、ページと呼ばれる別のユニットとして、各々編成されている。アプリケーション128及びゲストシステムソフトウェア127は、大容量ストレージシステム114に対して入出力ブロック要求などの入出力要求を生成してもよい。VM120−1は、その仮想ストレージデバイスがゲストOS124からの入出力要求に応じて直接GPPNにアクセスすることを可能にする、仮想ダイレクトメモリアクセス(DMA)を実施してもよい。
[0031]各VM120は、VM120−1と実質的に同一の内部構造を有していてもよい。各VM120は、また、独立した物理アドレス空間を有していてもよい。従って、1つのVM120の内の所定のGPPNは、他の1つのVM120内のと同じGPPNから独立している。各GPPNは、マシンページ番号(MPN)を介して参照されるマシンメモリのページにマッピングされたゲスト物理メモリのページを参照する。各GPPNは、その代わりに、リモートホストにおけるマシンメモリページにより戻され、又は大容量ストレージシステム114内に存在するスワップファイル150の位置に戻されてもよい。あるケースでは、GPPNは、マシンメモリ又はスワップファイルの位置の任意のページにマッピングされていなくてもよいし、ページにより戻されなくてもよい。1つ以上のGPPNは、一般的な共有MPNにマッピングしてもよい。
[0032]共有MPNに対する各マッピングは「コピーオンライト」(COW)属性により特徴づけられる。「コピーオンライト」は、ページが書き込まれるとき、例外が引き起こされ、関連する例外ハンドラはメモリの新たな位置にページをコピーするように構成され、次に、オリジナルの書き込み要求に従って書き込まれるように、特定のページへのマッピングが読み出し専用に特徴づけられる当該技術分野において周知の技術を記述する。ページ共有のコンテキストにおいて、複数のGPPNは、例えば、単一の共有メモリページにマッピングされていてもよい。ゲストの視点からデータのそれ自身のコピーを有するように、ページ共有は、ゲストに対して透過的である。但し、ゲストが共有ページを書き込むことを試みるとき、それはコピーされ、書き込みは、ページの新しく生成されたコピーに対して向けられ、次に、そのゲストのみによって(即ち、そのゲストにマッピングされて)「所有される」。読み出し専用のマッピング、COW、コンテンツベースの非重複化、及びハッシュ法により加速された比較に関連する特許文献1及び特許文献2の内容は、参考文献として援用される。
[0033]一般に、VMMは、VMとホスト実行時環境との間のインタフェースを提供する。ホスト実行時環境は、コンピュータシステム100のハードウェアエレメント及び全体的な操作を管理し、それによってVMMに対してシステムサービスを提供するように構成された従来型オペレーティングシステム又はカーネルであってもよい。その代わりに、ホスト実行時環境は、コンピュータシステム100を管理し、それによってVMMにシステムサービスを提供するように構成された任意の技術的に実現可能なソフトウェアモジュールであってもよい。VMMは、VMが仮想プロセッサ122を介して外見上のハードウェアシステムをエミュレートすることを可能にするために、ハードウェアデバイス及びシステムサービスに対するアクセスを提供する。
[0034]1つの実施形態において、VMM130−1は、VM120−1とカーネル134との間のソフトウェアインターフェースを提供するように構成されている。他の実施形態において、VMM130−1は、VM120−1とホストオペレーティングシステム(図示せず)との間のインタフェースを提供するように構成されていてもよい。VMM130−1は、VM120−1によって生成されたゲスト物理アドレスを、マシンメモリ110内に格納されたデータにアクセスするために用いられてもよい対応するマシンアドレスに変換するために用いられる、GPPNからMPNへのマップ132−1を含む。VMM130−1から130−nの各々は、MPNマップ132に対するそれぞれのGPPNを含む。1つの実施形態において、GPPNからMPNへのマップ132−1〜132−nは、カーネル134によって管理されている。
[0035]カーネル134は、プロセッサ複合体112内の何らかのハードウェアリソース及びソフトウェアリソースを管理するように構成されている。特に、カーネル134は、1つ以上のCPU142上で実行する、プロセスVM120−1〜120−n及びVMM130−1〜VMM130−nを、スケジューリングし管理する。カーネル134は、マシンメモリ110にアクセスするためにMPNマッピングに対して各GPPNを維持するように構成された、少なくとも1つのメモリ管理テーブル135を含む。メモリ管理テーブル135は、MPNマップ132−1〜132−nに対する各GPPNのマッピングを含む。このように、カーネルは、マシンアドレスマッピングに対するすべてのゲスト物理アドレスのグローバルな視点(Global View)を有する。
[0036]VMM130−1〜VMM130−nのためのすべてのゲスト物理アドレス空間のために構成された総ストレージは、マシンメモリ110内の総有効ストレージを超えていてもよい。カーネル134は、マシンメモリ110と大容量ストレージシステム114内のスワップファイル150との間のメモリの選択されたページをスワップするメモリページングシステムを実施する。任意の技術的に実現可能な技術が、大容量ストレージシステム114などの永続的なストレージシステム内に存在する、マシンメモリ110とスワップファイル150との間のデータをページングするために用いられてもよい。更に、データ圧縮技術が、マシンメモリ110よりも大きな仮想メモリ空間を提供するために用いられてもよい。バルーニングなどの技術は、ページスワッピングなどのゲストレベルメモリの再利用を引き起こすために用いられてもよい。その上、任意の技術的に実現可能な技術は、マシンメモリ110からスワップファイルに(逆もまた同様に)スワップされるためのページを選択するために実施されてもよい。メモリのページがマシンメモリ110からスワップファイル150にスワップされるとき、メモリ管理テーブル135は、マシンメモリ110内に存在するというよりもむしろスワップファイル150内に存在するものとして、対応するGPPNのコンテンツの配置の変化を反映するために更新される。同様に、スワップファイル150内のページがマシンメモリ110にスワップされるとき、メモリ管理テーブル135は、スワップファイル150内に存在するよりもむしろマシンメモリ110内に存在するものとして、対応するGPPNのコンテンツの配置の別の変化を反映するために更新されてもよい。ある実施形態において、VMM130は、対応するVM120の各々からの高性能メモリアクセスのためのGVPN〜MPNのマッピングを直接実行するようにカーネル134がMMU141を構成することを可能にするために、ゲストOS124からのMMU命令を傍受する。例えば、あるMMUの具体例は、対応するVM120の各々からの高性能アクセスのためのGVPN〜MPNのマッピングをMMUが直接実行することを可能にする、ネスト化されたマッピングを可能にする。
[0037]大容量ストレージシステム114は、ストレージブロック162−1〜162−kを含むように構成されている、ベースボリューム160を含む。ベースボリューム160は、ゲストシステムソフトウェア127、アプリケーション128、及び他の共有ソフトウェアモジュールの包括的なイメージを含む基準ディスクイメージである。ベースボリュームは、また、一般的に使用されるデータファイルを含んでいてもよい。仮想ディスクボリュームは、ベースボリューム160に基づいて、及びベースボリューム160内に存在する特定ブロック162への任意の変更に基づいて、生成され、VM120に対して提示される。特定ブロック162に対する変更は、対応するVM120に関連づけられる特定の差分ファイル164に格納される。最初は、各VMに対して提示された各仮想ディスクボリュームは、ベースボリューム160と実質的に同一である。但し、実行時の通常の経過の間に、所定のVM120は、書き込まれている1つ以上のブロックの各々にコピーオンライト(COW)を引き起こす、対応する仮想ディスクボリューム内の1つ以上のブロックを書き込んでもよい。COWを介して仮想ディスクボリュームにブロックを書き込むプロセスは、仮想ディスクボリュームのためのブロックを「特定化する(specialize)」。特定化されたブロックデータは、ベースボリューム160を変更せずに、対応する差分ファイル164内に格納される。例えば、VM120−1は、仮想ディスクボリュームのブロック162−kを書き込み、それによって、ブロック162−kを特定化する。その後、VM120−1によって読み出されたとき、特定化されたブロック162−kからデータは返されるだろう。VM120−nには、独立及びプライベートな仮想ディスクボリュームが提供される。VM120−nは、独立して、その対応する仮想ディスクボリューム内のブロック162−kを特定化してもよく、それによって、対応する書き込みデータは、差分ファイル164−nに格納される。
[0038]ベースボリューム160及び差分ファイル164から対応するVM120の各々への仮想ディスクボリュームを生成することによって、大容量ストレージシステム114内の全体的な必要とされるストレージは、実質的に低減されてもよい。同時に、各VM120は、ベースボリューム160の外見上は独立して、プライベートで、かつ書き込み可能なインスタンスを提供される。VM120に対して仮想ディスクボリュームを生成及び提供するこの技術は、好都合なことに、VM120及び関連したゲストシステムソフトウェア127に対して効率的で透過的である。
[0039]1つの実施形態において、ゲストシステムソフトウェア127、及びアプリケーション128などの関連するアプリケーションは、例えばネットワークポート116を介してユーザが呼び出しアクセスできるデスクトップ環境を備える。コンピュータシステム100は、VM120−1〜VM120−nを起動するように構成されており、その結果、対応するデスクトップ環境を起動させ、ユーザによるアクセスを可能にさせる。ゲストシステムソフトウェア127を起動するとき、各VM120は、典型的には、実質的に同一である一組のデータブロックを読み出す。従来方式において、同一のブロックは、「ブートストーム」の一因となる、余分な要求がなされる。但し、本発明の1つ以上の実施形態において、冗長な読み出し要求は、以下でより詳細に記述されている、ディスクページ追跡機能170によりショートカットされる。ショートカット入出力要求は、ハイパーバイザ136内で完結し、従って、さらなる入出力トラフィックの一因とはならない。
[0040]図2は、本発明の1つの実施形態による、ベースボリューム160及びベースボリュームのリンクされたクローン210を図示する。ベースボリューム160及び差分ファイル164は、図1の大容量ストレージシステム114上に存在する。各差分ファイル164は、対応するVM120のための特定化されたブロックを格納する。1つの実施形態において、各差分ファイル164は、ホストファイルシステム内のランダムアクセスファイルを備える。但し、当業者は、特有のVM120に関連づけられた特定のブロックを表わすための他の技術的に実現可能な手段も、本発明の範囲を逸脱せずに実施されてもよいことを認識するだろう。
[0041]ベースボリューム160又はベースボリューム160のあるブロックは、読み出し専用の一般的なOS基本ディスク214としてシステムメモリ110内で表わされてもよく、そのリンクされたクローン210はルートボリュームとして共有されるように構成されている。1つの実施形態において、各リンクされたクローン210は、一般的なOS基本ディスク214のブロック構成に対応するブロック構成による仮想ディスクボリュームを備えている。所定のリンクされたクローン210内の特定化されていない各ブロックは、一般的なOS基本ディスク214と同等のブロックに対応している。リンクされたクローン210内の特定化された各ブロックは、関連する特定化されたブロック212−1及び212−nの一組から特定化されたブロックに対応している。
[0042]例えば、リンクされたクローン210−1のブロック「BIk1」は特定化されておらず(VM120−1によって書き込まれていない)、従って、一般的なOS基本ディスク214の「Blk1」に対応する。同様に、リンクされたクローン210−1のブロック「Blkn−1」は特定化されておらず、従って、一般的なOS基本ディスク214の「Blkn−1」に対応する。但し、リンクされたクローン210−1のブロック「Blk3」及び「Blkn」は、特定化されており、従って、一組の特定化されたブロック212−1のブロック「Blk3」及び「Blkn」に対応する。1つの実施形態において、一組の特定化されたブロック212−1のブロック「Blk3」及び「Blkn」は、大容量ストレージシステム114内の差分ファイル164−1に格納されている。この例において、「Blk1」は、リンクされたクローン210−1又は210−nのいずれかのためには特定化されていない。ブロック「Blk1」が、各VM120に関して特定化されていないままであるので、「Blk1」の1つのインスタンスのみがマシンメモリ110で実際に必要とされる。以下で記述されるように、特定化されていない一般的なOS基本ディスク214内の任意のブロックは、任意数のVMによって読み出されるときのマシンメモリ110における1つのインスタンスのみを必要とする。
[0043]ディスクブロックがVM120によってターゲットディスクボリュームから読み出される場合、ターゲットディスクに対してポストされている読み出しに先立って要求されたディスクブロックを受け取るために、マシンメモリ110内の十分なストレージがVM120に対して割り当てられている。ストレージは、1つ以上の関連するMPNによって参照される、1つ以上のマシンページの形式で割り当てられている。図1のディスクページ追跡機能170は、ボリューム識別子及びブロックオフセットによって識別されたディスクブロックを各々参照するエントリを備えるページ追跡テーブル175を保持する。各エントリは、また、MPN、及びディスクブロックに関連づけられたメタデータを含む。新しく要求されたディスクブロックが共有のための有効な候補を表わす場合、エントリは、ページ追跡テーブル175に追加される。例えば、ディスクブロックがベースボリューム160上に存在する場合、そのディスクブロックは、共有するための有効な候補である。1つのVM120によりベースボリューム160上で一度アクセスされたブロックは、別のVM120によって再びアクセスされる傾向がある。ページ追跡テーブル175は、以下の図4により詳細に記述されている。ディスクページ追跡機能170は、どのVM120によりどのディスクブロックがアクセスされているのかを追跡し、以下で記述されるようなMPNページ共有を引き起こすように構成されている。共有MPNによって参照されたメモリページに存在するディスクブロックデータが、関連するVM120によって書き込まれた場合、ディスクブロックは、VM120のために特定化され、共有MPNは、VM120のためのプライベートMPNを生成するために共有されていない。ディスクブロックは、任意の技術的に実現可能な技術を用いて特定化されていてもよく、共有MPNは、COWの任意の技術的に実現可能な変化などの任意の技術的に実現可能な技術を用いて共有されていなくてもよい。ディスクページ追跡機能170は、ディスクブロックアクセス要求に応じて実行するように構成された一組のプロシージャを備えている。一部のプロシージャは、ページ追跡テーブル175を保持するように構成されている。一部の他のプロシージャは、入力要求から入出力要求を生成するか、又は入出力要求をショートカットし、かつ入出力要求を出さずに同等の結果を生成するように構成されている。1つの実施形態において、一組のプロシージャの一部のプロシージャは、インフライト入出力要求(In−flight I/O Request)のための入出力要求状態に登録されたコールバック機能として実行されてもよい。
[0044]本明細書に図示される実施形態において、ディスクブロックのサイズとページインメモリのサイズとは、同一である。但し、本発明は、ディスクブロックのサイズとページインメモリのサイズとが同一でない他の実施形態に対しても適用可能である。
[0045]図3Aは、本発明の1つの実施形態による、GPPN312を介する、VM120−1内のゲスト仮想ページ番号(GVPN)310からMPN314へのメモリマッピングを図示する。各ページ番号は、メモリのページの連続する範囲内のメモリのページに対応している。GVPN310は、ゲスト仮想アドレス空間によって規定された範囲内のメモリのページに対応している。GVPN310は、図1のゲストOS124によってGPPN312にマッピングされている。GPPN312は、ゲスト物理アドレス空間によって規定された範囲内のメモリのページに対応し、ゲストOS124はプライベートな物理アドレス空間としてそれを扱う。但し、GPPN312は、更に、ハイパーバイザ136によってMPN314にマッピングされている。MPN314は、マシンメモリ110を備えるデータのページを格納するように構成されている、ダイナミックランダムアクセスメモリ(DRAM)などの実際のメモリ回路であるマシンメモリ110のページに対応している。
[0046]共有のための候補であるデータブロックがディスクボリュームから読み出された後、データブロックは、関連する各GPPNによって読み出し専用のページとしてマッピングされたMPN314によって参照されたメモリのページ内に存在する。共有のための候補でないデータブロックは、読み書きアクセスのために構成されたMPNによって参照されたメモリのページに格納されてもよい。
[0047]図3Bは、本発明の1つの実施形態による、第2のGPPN322を介する、第2のVM120−n内の第2のGVPN320から第2のMPN334への第2のメモリマッピングを図示する。MPN334に対応する第2のページは、対応するディスクブロックを検索するためにポストされている読み出しに先立って、GPPN322を介してGVPN320に対して割り当てられマッピングされる。このとき、ゲストOS124は、関連するファイルデータのためのディスクキャッシュとしてGPPN322を管理している。このシナリオにおいて、MPN314及びMPN334は、ボリューム内の同じボリューム及びディスクブロックに対応している。また、図1のディスクページ追跡機能170は、MPN314によって参照されたメモリのページにあらかじめ検索された同じディスクブロックとしてMPN334のために要求された保留ディスクブロックを識別する。従って、大容量記憶装置114から対応するディスクブロックを検索するために読み出し要求をポストするというよりもむしろ、GPPN322は、その代りに、MPN314を共有するために再マッピングされる。以下の図3Cに示されるように、MPN334は、その後、リリースされる。
[0048]図3Cは、本発明の1つの実施形態による、共有のための第1のMPN314に対して第2のGPPN322が再マッピングされ、第2のMPN334がリリースされる「フリップ(Flip)」操作を図示する。MPN314へのGPPN322の再マッピングによって、GPPN322に関連づけられたデータ検索に対して読み出されたディスクをポストする終端効果は、実際には、ディスク読み出し要求をポストせずに、又は関連する入出力トラフィックを生成せずに、達成される。このように、図1のハイパーバイザ136は、マシンメモリ110に存在する既知のページに対して、それらの対応する送信先GPPNをマッピングすることにより、入出力要求をショートカットしてもよい。VDIシステムが複数のデスクトップ環境インスタンスを実行している場合、各インスタンスを起動するためにベースボリューム160から検索されたディスクブロックの大部分は、マシンメモリ110上の全体的なメモリの圧迫を低減する共有MPNによって参照されたページに格納されるであろう。
[0049]図3Dは、本発明の1つの実施形態による、第2のVM120−nのためのプライベートMPN340への共有MPN314のコピーオンライトの再マッピングを図示する。VM120−nが図3CにおけるMPN314にあらかじめマッピングされたGPPN322を書き込むことを試みるならば、COW操作が実行され、GPPN322は、プライベートMPN340に対して再マッピングされる。プライベートMPN340は、書き込みデータを受け取るために必要とされる。対応するディスクブロックは、また、大容量ストレージシステム114からの今後のアクセスのためにMPN340によって参照されたメモリのページに存在するデータを維持するために、任意の技術的に実現可能な技術を用いて特定化される。
[0050]図3Eは、本発明の1つの実施形態による、第1のVM120−1により引き起こされたコピーオンライトの再マッピングの結果として、取り残されている共有MPN314を図示する。VM120−1が図3DにおけるMPN314にあらかじめマッピングされたGPPN312を書き込むことを試みるならば、COW操作が実行され、GPPN312は、プライベートMPN342に対して再マッピングされる。プライベートMPN342は、書き込みデータを受け取るために必要とされる。
[0051]あらかじめ共有されたMPN314は、今後の共有のための可能性が高い候補として見なされた、あらかじめ共有されたディスクブロックに対応するMPNを参照して(従って)保持するように構成された、孤立キャッシュ139内に取り残される。VM120は現在ブロックをアクセスしていないが、孤立キャッシュ139は、VM120によって今後ある時点でアクセスされてもよいディスクブロックを保持する。孤立キャッシュ139によって参照された複数のMPNが増大するにつれて、置換ポリシーは、新たなキャッシュエントリのためのスペースを作るために、一部のキャッシュエントリを立ち退かせてもよい。最長時間未使用(a least recently used)(LRU)ポリシーなどの任意の技術的に実現可能な置換ポリシーも、孤立キャッシュ139からキャッシュエントリの追い立てを開始するために用いられてもよい。1つの実施形態において、ディスクブロックが共有のベースボリューム上に存在するならば、そのディスクブロックは、共有する可能性の高い候補と見なされる。別の実施形態において、ディスクブロック参照カウントを追跡するように構成されるファイルシステムによって提供される、ディスクブロック参照カウントのための一部の閾値を満足させるか又は超えるとディスクブロックが特徴づけられているならば、そのディスクブロックは共有する可能性の高い候補と見なされる。閾値は、2程度の低い値であってもよいし、又は任意に高い値であってもよい。ファイルシステムは、任意の技術的に実現可能な技術を用いてディスクブロック参照カウントを追跡してもよい。当業者は、共有の可能性の高い候補であるとしてディスクブロックを特徴づけるための他の技術が、本発明の範囲を逸脱せずに、利用されてもよいことを認識するだろう。
[0052]図4は、本発明の1つの実施形態による、少なくとも追跡されるページの各々の参照カウント414及び保留状態ビット416を含むように構成されたページ追跡テーブル175を図示する。ページ追跡テーブル175は、MPN412と共にボリューム識別子(baseDisk)及びブロックオフセット(Offset)を備えた、特有のターゲット参照410に、特定化されたディスクブロックを関連づける。別の実施形態において、ディスクブロックの物理ディスク位置は、ボリューム識別子又はブロックオフセットに対する参照を用いずに、直接追跡されてもよい。従って、ターゲット参照410は、図1の大容量ストレージシステム114又はコンピュータシステム100に連結された他のストレージシステム内の固有のディスクブロックを表わす。MPN412は、マシンメモリに存在するような固有のディスクブロックからのデータを表わす。1つの実施形態において、ページ追跡テーブル175内に表わされた各ディスクブロックは、共有される可能性の高いものとして特徴づけられて来た。他のブロックは、ページ追跡テーブル175内に表わされていない。
[0053]MPN412は、どのくらいのゲスト物理ページがMPN412にマッピングされているかを示す参照カウント414により特徴づけられている。MPN412もまた、対応するディスクブロック要求が現在フライト中であるが、まだ完結していないことを示す保留状態ビット416により特徴づけられている。保留状態ビット416は、既に要求されているがマシンメモリ内にまだ存在してないディスクブロックに対して、ハイパーバイザ136が付加的な要求を開始しないようにすることを可能にする。1つの実施形態において、特定のディスクブロックに対する第1の要求は、1つのゲスト物理ページが対応するMPN412にマッピングされており、さもないと孤立キャッシュ139がMPN412を保持していることを示す、2に設定されている参照カウント414に帰着する。第2のゲスト物理ページが同じMPN412にマッピングされている場合、参照カウントは、3に設定されている。ゲスト物理ページがMPN412に現在マッピングされていない場合、参照カウントは、孤立キャッシュ139がMPN412を保持していることを示す、1に設定されている。各ケースにおいて、MPN412は、読み出し専用でマッピングされている。孤立キャッシュ139が特定のMPNを立ち退かせる必要がある場合、孤立キャッシュ139は、MPNに対するその参照を取り除き、MPNへの参照カウントを0にして、それによって、再利用されるべきMPNによって参照されたメモリのページを許可する。当業者は、参照カウント値の上記の割り当てられた意味が典型的であり、参照カウント値の他のシステムが、本発明の範囲を逸脱せずに、実施されてもよいことを認識するだろう。
[0054]図5は本発明の1つの実施形態による、入出力要求を追跡してショートカットするために、ハイパーバイザによって実行される方法ステップ500のフローチャートである。この方法ステップは、図1〜4のシステムにより記述されるが、当業者は、任意のシステムにおいて実行される方法ステップも本発明の範囲内であることを理解するだろう。
[0055]本方法は、ステップ510において開始する。ここで、ハイパーバイザ136は、ディスク識別子などのボリューム識別子とボリュームへのブロックオフセットとを備える、ディスクブロックのための入出力読み出し要求を受け取る。入出力読み出し要求は、典型的にはVM120から発信する。
[0056]ステップ512において、要求されたディスクブロックに共有されるべき十分な可能性があるならば、本方法は、ステップ514に進む。1つの実施形態において、要求されたディスクブロックがベースボリューム160などの共有の基本ディスク上に存在するならば、要求されたディスクブロックは、共有される十分な可能性を有すると見なされる。他の実施形態において、要求ディスクブロックが、ディスクブロック参照カウントを追跡するように構成されるファイルシステムによって提供される、ディスクブロック参照カウントのための一部の閾値を超えるように特徴づけられているならば、要求されたディスクブロックは、共有される十分な可能性を有すると見なされる。
[0057]ステップ514において、要求されたディスクブロックがページ追跡テーブル175によって追跡されるならば、本方法は、ステップ520に進む。要求されたディスクブロックがエントリによってページ追跡テーブル175に表わされるならば、要求されたディスクブロックは、追跡されているものと判定される。要求されたディスクブロックは、追跡されているが、保留状態ビット416ならば保留である。
[0058]ステップ520において、ハイパーバイザ136は、ページ追跡テーブル175に示される、対応する追跡されているMPNのMPNにマッピングするために、要求されたディスクブロックに割り当てられたGPPNのページマッピングをフリップする。ステップ522において、ページ追跡メタデータは、増分された参照カウント414を反映するために更新される。ステップ524において、ページ共有メタデータは、例えば、付加的なGPPNが共有MPNにマッピングされていることを共有モジュール138に通知するために更新される。任意の技術的に実現可能なページ共有メカニズムも、本発明の範囲を逸脱せずに、共有モジュール138によって実施されてもよい。
[0059]ステップ550において、本方法は、マッピングされたMPNの形式で、要求されたデータページを返す。1つの実施形態において、対応するページの保留状態ビット416がその後更に設定されるならば、本方法は、保留状態ビットが戻る前にクリアされるまで待機する。本方法は、ステップ590において終了する。
[0060]ステップ514に戻って、要求されたディスクブロックがページ追跡テーブル175によって追跡されていないならば、次に、本方法は、ステップ530に進む。そこでは、ハイパーバイザ136は、大容量ストレージシステム114から要求されたディスクブロックを検索するために、読み出された入出力操作の実行を開始する。ステップ532において、要求されたディスクブロックのためのデータは、対応するマッピングされたMPNに格納される。ステップ534において、ターゲット参照410、MPN412、参照カウント414及び保留状態ビット416を備えるページ追跡メタデータと共に、エントリがページ追跡テーブル175に追加される。1つの実施形態において、参照カウント414の初期値は2に設定されている。保留状態ビット416がクリアされた後、MPN412によって参照されたメモリのページ内への、要求されたブロックデータの書き込みが終了するまで、保留状態ビット416は、1に設定されている。ステップ536において、MPN412は、共有モジュール138と共有するためにマークを付けられ、任意の実装固有のメタデータも、MPN412のために追加される。1つの実施形態において、MPN412にマッピングされたGPPN、及び関連するVM識別子は、ページ共有のヒントを含むデータ構造(例えば、キュー又はリスト)に追加されている。このデータ構造は、共有モジュール138によって保持され、共有のための候補ページを選択するために、共有モジュール138によって用いられている。
[0061]ステップ512に戻ると、要求されたディスクブロックに共有される十分な可能性がないならば、次に、本方法は、ステップ540に進む。そこでは、ハイパーバイザ136は、大容量ストレージシステム114から要求されたディスクブロックを検索するために読み出し入出力操作の実行を開始する。ステップ542において、要求されたディスクブロックのためのデータは、対応するマッピングされたMPNに格納される。
[0062]他の実施形態は、図6A〜図6B及び図7において以下に記述されている。他の実施形態において、要求を発信するVM内のGPPNに読み書きブロックがマッピングされるにつれて、共有のための候補である要求されたディスクブロックの各々は、読み出され、格納される。但し、戻るのに先立って、コピーが、対応するMPNから作成され、孤立キャッシュ139の中に配置される。このように、MPNが読み出された後すぐに、MPNを書き込むことを要求を発信するVMが試みるならば、比較的割高な書き込み障害は回避される。GPPN及びその関連するVM識別子は、ページ共有の可能性を見出すために共有モジュール138によって後で用いられるページ共有ヒント情報構造に追加されてもよく、それによって、全体的なメモリの圧迫を低減する。後続の入出力要求が孤立キャッシュ139内のMPNコピーに匹敵するのであるならば、入出力要求は、孤立キャッシュ139により、ショートカットされ提供されていてもよい。別の他の実施形態において、1つ以上のMPNがページ共有ヒント情報構造に追加され、2つ以上のGPPNにより1つ以上のMPNの共有を可能にするために、MPNからGPPNへのバックマップが共有モジュール138によって用いられている。
[0063]図6Aは、本発明の1つの実施形態による、仮想マシン120−1内のGVPN610からの、入出力読み出し要求に関連づけられたMPN614へのメモリマッピングを図示する。GVPN610は、GPPN612を介してMPN614にマッピングされる。共有のための候補であるデータの関連するディスクブロックが、ディスクボリュームから読み出された後、データブロックは、MPN614によって参照されたメモリのページに存在し、GPPN612からMPN614へのマッピングは、読み書き属性によりマークされる。読み出し要求から戻るのに先立って、ハイパーバイザ136は、孤立キャッシュ139内にMPN614に関連づけられたメモリのページのコピーを生成するために、MPN614に関連づけられたデータをコピーする。
[0064]図6Bは、本発明の1つの実施形態による、1つのMPN614に関連づけられた要求されたデータブロックの、別のMPN620に対する複製操作を図示する。GPPN612に対して他の方法でプライベートにマッピングされたPN614の内容は、孤立キャッシュ139内に存在する、MPN620にコピーされる。MPN620に対する参照は、少なくともターゲット参照410と共に、参照カウント(最初は「1」に等しい)及び係属中のビットは、ページ追跡テーブル175に追加される。1つの実施形態において、GPPN612及びその関連するVM識別子は、ページ共有ヒント情報構造に追加される。GPPN612が変更される場合、それらはページ共有ヒント情報構造から取り除かれる。共有モジュール138によって実施されたページ共有メカニズムは、まずページ共有ヒント情報構造を読み出し、他の共有動作に先立って共有するための候補ページを探す。ページ共有メカニズムは、本発明の範囲を逸脱せずに、任意の技術的に実現可能な技術を用いて実施されてもよい。例えば、ページ共有メカニズムは、共有のための候補ページを識別し、ページの内容を吟味し、ハッシュ値を既存のハッシュテーブルと比較する、デーモン又はバックグラウンドサービスであってもよい。各ページが吟味されるにつれて、ハッシュテーブルに追加されてもよい。ページは、無作為に含む任意の技術を用いて共有するために識別されてもよい。一致するハッシュが識別される場合、対応するページは、一般的なMPNへの関連するGPPNの再マッピング及び冗長なMPNのリリースにより、候補ページで共有される。ページ共有メカニズムは、他のプロセスからヒントを受け取ってもよい。暗示されたページのコンテンツが同一であるならば、それらは、無作為に発見されるのを待つよりも、むしろすぐに共有されてもよい。このメカニズムの詳細な記述は、あらかじめ参考文献として援用されている、米国特許第6,789,156号及び第7,620,766号に記述されている。
[0065]MPN620が共有される可能性があると見なされたので、それは少なくとも、孤立キャッシュ139内のMPN620及び他のMPNを別のVM120が要求するための可能性を可能にする孤立キャッシュ139において一時的に保持される。VM120がマシンメモリ110(キャッシュ)からデータのディスクブロックを検索することができるたびに、入出力操作がショートカットされ、入出力リソースが維持される。
[0066]図7は、図6A〜図6Bに関連して記述された本発明の実施形態による、入出力要求を追跡しショートカットするために、ハイパーバイザによって実行される方法ステップ700のフローチャートである。この方法ステップは、図1〜4のシステムにより記述されるが、当業者は、任意のシステムにおいて実行される方法ステップも本発明の範囲内であることを理解するだろう。
[0067]本方法は、ステップ710において開始する。ここで、ハイパーバイザ136は、ディスク識別子などのボリューム識別子とボリュームへのブロックオフセットとを備える、ディスクブロックのための入出力読み出し要求を受け取る。入出力読み出し要求は、典型的にはVM120から発信する。
[0068]ステップ712において、要求されたディスクブロックに共有されるべき十分な可能性があるならば、本方法は、ステップ714に進む。1つの実施形態において、要求されたディスクブロックがベースボリューム160などの共有の基本ディスク上に存在するならば、要求されたディスクブロックは、共有される十分な可能性を有すると見なされる。他の実施形態において、要求ディスクブロックが、ディスクブロック参照カウントを追跡するように構成されたファイルシステムによって提供される、ディスクブロック参照カウントのための一部の閾値を超えるように特徴づけられるならば、要求されたディスクブロックは、共有される十分な可能性を有すると見なされる。
[0069]ステップ714において、要求されたディスクブロックがページ追跡テーブル175によって追跡されるならば、本方法は、ステップ720に進む。要求されたディスクブロックがエントリによってページ追跡テーブル175に表わされているならば、要求されたディスクブロックは、追跡されているものと判定される。要求されたディスクブロックは、追跡されているが、保留状態ビット416ならば保留である。
[0070]ステップ720において、ハイパーバイザ136は、ページ追跡テーブル175に示される、対応する追跡されるMPNのMPNにマッピングするために、要求されたディスクブロックに関連づけられたGPPNのページマッピングをフリップする。ステップ722において、ページ追跡メタデータは、増分された参照カウント414を反映するために更新される。ステップ724において、ページ共有メタデータは、例えば、付加的なGPPNが共有MPNにマッピングされている共有モジュール138に通知するために更新される。
[0071]ステップ750において、本方法は、マッピングされたMPNの形式で、要求されたデータページを返す。1つの実施形態において、対応するページの保留状態ビット416が依然として設定されているならば、本方法は、保留状態ビットが戻る前にクリアされるまで待機する。本方法は、ステップ790において終了する。
[0072]ステップ714に戻って、要求されたディスクブロックがページ追跡テーブル175によって追跡されていないならば、次に、本方法は、ステップ730に進む。そこでは、ハイパーバイザ136は、大容量ストレージシステム114から要求されたディスクブロックを検索するために読み出された入出力操作の実行を開始する。ステップ732において、要求されたディスクブロックのためのデータは、対応する読み書きマッピングされたMPNに格納される。ステップ733において、読み書きマッピングされたMPNに関連づけられたデータは、次に、読み取り専用アクセスのためにマッピングされる、第2のMPNによって参照されたメモリのページにコピーされる。ステップ734において、ターゲット参照410、MPN412(読み取り専用アクセスのためにマッピングされた参照MPN)、参照カウント414及び保留状態ビット416を備えるページ追跡メタデータと共に、エントリがページ追跡テーブル175に追加される。1つの実施形態において、参照カウント414の初期値は2に設定されている。MPN412によって参照されたメモリのページ内への、要求されたブロックデータの書き込みが終了するまで、保留状態ビット416は、1に設定されており、その後保留状態ビット416がクリアされる。ステップ736において、要求されたディスクブロック及び関連するVM識別子に関連づけられたGPPNは、ページ共有ヒント情報構造に追加される。
[0073]ステップ712に戻ると、要求されたディスクブロックに共有される十分な可能性がないならば、次に、本方法は、ステップ740に進む。そこでは、ハイパーバイザ136は、大容量ストレージシステム114から要求されたディスクブロックを検索するために読み出し入出力操作の実行を開始する。ステップ742において、要求されたディスクブロックのためのデータは、対応するマッピングされたMPNによって参照された1ページ以上のメモリに格納される。
[0074]要するに、一般的に要求されたデータブロックのための入出力操作をショートカットするための技術が開示されている。ページ追跡テーブルは、ディスクブロックとマシンページ番号との間の関連性を保持する。共有されるディスクブロックは、ページ追跡テーブル内で追跡され、一方で、他を追跡する必要はない。要求が追跡されるディスクブロックのために受け取られる場合、データは、VM内で要求されたブロックに割り当てられたページの再マッピングにより、要求するVMに提示される。このように、入出力要求の結果は、要求するVMに関して透過的に達成される。ディスクブロックは、ディスクボリューム識別子又はディスクブロック参照カウントなどの任意の技術的に実現可能な基準に基づいて共有される可能性があると見なされる。
[0075]本発明の1つの有利性は、入出力操作がゲストVMに関して透過的に低減できるということである。付加的な1つの有利性は、ディスクブロックデータの付加的なインスタンスが共有を通じて最小限に抑えられるので、付加的なマシンメモリのごく一部のみが必要とされるということである。
[0076]本明細書に記述された本発明の実施形態において、仮想化されたシステムのコンテキストにおいて「仮想(virtual)」は、GVPNにおけるようなゲスト仮想、又はGPPNにおけるようなゲスト物理を意味し、VPNにおけるような非仮想化されたシステムのコンテキストにおいては、単なる仮想を意味する。
[0077]添付された特許請求の範囲に記載される本発明の幅広い精神及び範囲から逸脱せずに、本明細書に記述された特定の実施形態に対して、様々な変形及び変更がなされてもよいことは、認識されるべきである。
[0078]本明細書に記述された様々な実施形態は、コンピュータシステムに格納されたデータを含む様々なコンピュータで実現される操作を利用してもよい。例えば、これらの操作は、通常は(必然的にではなく)物理量の物理的操作を必要としてもよい。これらの物理量は、それら(又はそれらを表現したもの)が格納され、組み合わされ、転送され、比較され、又は他の方法で操作可能な、電気的又は磁気的信号の形式をとってもよい。更に、このような操作は、多くの場合、生成、識別、判定、比較などの用語に関連する。本発明の1つ以上の実施形態の一部を形成する本明細書に記述された任意の操作は、有用な機械操作であってもよい。更に、本発明の1つ以上の実施形態は、また、これらの操作を実行するためのデバイス又は装置に関連する。装置は、特定の必要とされた目的のために、特別に構成されてもよいし、又は、コンピュータに格納されたコンピュータプログラムによって、選択的に起動され、又は構成された汎用コンピュータであってもよい。特に、様々な汎用機は、本明細書に教示と共に記述されたコンピュータプログラムと共に用いられてもよいし、又は、必要な操作を実行するために、より特定の装置を構成するほうが好都合であるかもしれない。
[0079]本明細書に記述された様々な実施形態は、携帯端末、マイクロプロセッサシステム、マイクロプロセサベースの民生用電子機器又はプログラミング可能な民生用電子機器、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成により実施されてもよい。
[0080]本発明の1つ以上の実施形態は、1つ以上のコンピュータプログラム、又は1つ以上のコンピュータ読み取り可能媒体で具体化された1つ以上のコンピュータプログラムモジュールとして実施されてもよい。用語「コンピュータ読み取り可能媒体」は、コンピュータプログラムをコンピュータによって読み出されることを可能にする方式で具体化するための任意の既存の(又は後に)開発される技術に基づいてもよいコンピュータシステムのコンピュータ読み取り可能媒体に、その後入力可能なデータを格納できる任意のデータストレージデバイスを表す。コンピュータ読み取り可能媒体の例は、ハードドライブ、ネットワーク接続ストレージ(NAS)、読み出し専用メモリ、ランダムアクセスメモリ(例えば、フラッシュメモリデバイス)、CD(コンパクトディスク)、CD−ROM、CD−R又はCD−RW、DVD(ディジタルバーサタイルディスク)、磁気テープ、及び他の光学/光学以外のデータストレージデバイスを含む。コンピュータ読み取り可能なコードが分散方式において格納され実行されるように、コンピュータ読み取り可能媒体は、ネットワーク連結のコンピュータシステム上で分散されていてもよい。
[0081]本発明の1つ以上の実施形態は、理解の明瞭さのために幾分詳細に記述されたが、一部の変更及び変形が特許請求の範囲内でなされてもよいことは、明白だろう。従って、記述された実施形態は、例示であり限定的でないように考慮され、特許請求の範囲が本明細書になされた詳細な記述に限定されないが、特許請求の範囲及びその等価範囲内で変更されてもよい。特許請求の範囲において、構成要素及び/又はステップは、明示的に特許請求の範囲において明示されない限り、操作の特有の順序性を暗に示さない。
[0082]複数のインスタンスが、単一のインスタンスとして本明細書に記述されたコンポーネント、操作又は構造に対して提供されてもよい。最後に、様々なコンポーネント、操作及びデータストアの間の境界は、多少便宜的であり、特有の操作は、特定の例示された構成のコンテキストにおいて図示される。機能性の他の割当てが、予見され、本発明の範囲内にあってもよい。一般に、典型的な構成における別々のコンポーネントとして提供された構造及び機能性は、組み合わせた構造又はコンポーネントとして実施されてもよい。同様に、単一のコンポーネントとして提供された構造及び機能性が、別々のコンポーネントとして実施されてもよい。これら及び他の変更、変形、付加及び改善は、添付された特許請求の範囲内にあってもよい。

Claims (18)

  1. 実行するアプリケーションをその中に有するコンピュータシステムにおいて読み出し入出力要求を処理する方法であって、前記アプリケーションはマシンメモリページにマッピングされた仮想メモリページを含み、前記方法は、
    各々がそれにマッピングされた少なくとも2つの仮想メモリページを有するマシンメモリページの第1のグループと、各々がそれにマッピングされた1つのみの仮想メモリページを有するマシンメモリページの第2のグループとのための追跡データ構造を保持するステップであって、前記追跡データ構造が、各々の前記マシンメモリページのために、そこからその内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示すステップと、
    読み出し要求に応じて、前記第1のグループ又は前記第2のグループにおけるマシンメモリページが、前記読み出し要求において示された前記ストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定であることを、前記追跡データ構造を用いて判定し、前記読み出し要求に関連づけられた仮想メモリページを前記マシンメモリページにマッピングするステップと、
    第1のメモリ書き込み要求に応じて、前記第1のグループにおけるマシンメモリページの内容を第1のマシンメモリページにコピーし、前記第1のメモリ書き込み要求に関連づけられた仮想メモリページを前記第1のマシンメモリページにマッピングするステップと、
    第2のメモリ書き込み要求に応じて、前記第2のグループにおけるマシンメモリページの内容を第2のマシンメモリページにコピーし、前記第2のメモリ書き込み要求に関連づけられた仮想メモリページを前記第2のマシンメモリページにマッピングするステップと
    を含み、前記第1のグループ及び前記第2のグループにおける前記マシンメモリページの少なくとも1つは、前記ストレージボリュームに対して発行された現在処理中の読み出し要求のターゲットメモリ位置であることを特徴とする方法。
  2. 前記アプリケーションが仮想マシンのインスタンスであり、前記仮想メモリページがゲスト物理メモリページであることを特徴とする請求項1記載の方法。
  3. 前記追跡データ構造が、前記マシンメモリページの各々に対して、どのくらいの仮想メモリページが前記マシンメモリページにマッピングされているのかを示す参照カウントを示し、前記読み出し要求に応じて、前記第1のグループ又は前記第2のグループにおいて前記マシンメモリページに関連づけられた前記参照カウントが増加されることを特徴とする請求項1記載の方法。
  4. 前記第1のメモリ書き込み要求に応じて、前記第1のグループにおいて前記マシンメモリページに関連づけられた前記参照カウントは減少され、前記第2のメモリ書き込み要求に応じて、前記第2のグループにおいて前記マシンメモリページに関連づけられた前記参照カウントは減少されることを特徴とする請求項3記載の方法。
  5. 前記マシンメモリページにマッピングされた仮想メモリページを有しない前記マシンメモリページに対応する前記追跡データ構造のエントリの1つ以上を削除することにより前記追跡データ構造を更新するステップ
    を更に含むことを特徴とする請求項4に記載の方法。
  6. 前記第1のグループと前記第2のグループとにおける前記マシンメモリページの少なくとも1つは、前記ストレージボリュームに対して発行され完了された読み出し要求のターゲットメモリ位置であることを特徴とする請求項1記載の方法。
  7. 実行するアプリケーションをその中に有するコンピュータシステムにおいて読み出し入出力要求を処理する方法であって、前記アプリケーションはマシンメモリページにマッピングされた仮想記憶ページを含み、前記方法は、
    マシンメモリページにマッピングされた少なくとも2つの仮想記憶ページを各々が有する、前記マシンメモリページの第1のグループと、前記マシンメモリページにマッピングされた1つのみの仮想メモリページを各々が有する、マシンメモリページの第2のグループと、前記マシンメモリページにマッピングされた仮想メモリページを各々が有しない、マシンメモリページの第3のグループとのための追跡データ構造を保持するステップであって、前記追跡データ構造が、各々の前記マシンメモリページのために、そこからその内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示し、参照カウントが、どのくらいの仮想メモリページが前記マシンメモリページにマッピングされているのかを示すステップと、
    読み出し要求に応じて、前記第1のグループ、前記第2のグループ及び前記第3のグループの1つにおけるマシンメモリページに、前記読み出し要求に関連づけられた仮想メモリページをマッピングし、前記マシンメモリページに関連づけられた前記参照カウントを増加させるステップと
    を含み、前記第1のグループと前記第2のグループと前記第3のグループとにおける前記マシンメモリページの少なくとも1つは、前記ストレージボリュームに対して発行され現在処理中である読み出し要求のターゲットメモリ位置であることを特徴とする方法。
  8. 前記アプリケーションは仮想マシンのインスタンスであり、前記仮想メモリページはゲスト物理メモリページであることを特徴とする請求項記載の方法。
  9. 前記第1のグループと前記第2のグループと前記第3のグループとにおける前記マシンメモリページの少なくとも1つは、前記ストレージボリュームに対して発行され完了された読み出し要求のターゲットメモリ位置であることを特徴とする請求項記載の方法。
  10. 前記第3のグループにおける前記マシンメモリページに関連づけられた1つ以上のエントリを削除するために前記追跡データ構造を更新するステップ
    を更に含むことを特徴とする請求項記載の方法。
  11. 第1のメモリ書き込み要求に応じて、前記第1のグループにおけるマシンメモリページの内容を第1のマシンメモリページにコピーし、前記第1のメモリ書き込み要求に関連づけられた仮想メモリページを前記第1のマシンメモリページにマッピングするステップと、
    第2のメモリ書き込み要求に応じて、前記第2のグループにおけるマシンメモリページの内容を第2のマシンメモリページにコピーし、前記第2のメモリ書き込み要求に関連づけられた仮想メモリページを前記第2のマシンメモリページにマッピングするステップと、
    を更に含むことを特徴とする請求項記載の方法。
  12. 実行する仮想マシンをその中に有するコンピュータシステムにおいて読み出し入出力要求を処理する方法であって、前記仮想マシンは、ゲスト物理メモリページを介してマシンメモリページにマッピングされたゲスト仮想メモリページを含み、前記方法は、
    一組のマシンメモリページのための追跡データ構造を保持するステップであって、前記追跡データ構造が、各々の前記マシンメモリページのために、その内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示し、参照カウントが、どのくらいの仮想メモリページが前記マシンメモリページにマッピングされているのかを示し、保留状態フラグが、前記ストレージボリュームからの読み出しが保留中であるか否かを示すステップと、
    読み出し要求に応じて、追跡されている前記マシンメモリページの1つが、読み出し要求において示された前記ストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定であるかを、前記追跡データ構造を用いて判定するステップと、
    前記読み出し要求において示された前記ストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定である、追跡されているマシンメモリページがあるならば、前記読み出し要求に関連づけられたゲスト物理メモリページを前記マシンメモリページにマッピングするステップと、
    前記読み出し要求において示された前記ストレージボリュームの位置に格納されたデータを包含しているか又は包含する予定である、追跡されているマシンメモリページがないならば、前記読み出し要求に示された前記ストレージボリュームの位置に格納されたデータのための前記ストレージボリュームに対して要求を発行し、前記要求されたデータが格納される前記マシンメモリページに対する前記読み出し要求に関連づけられたゲスト物理メモリページをマッピングし、ページ共有ヒントを包含するデータ構造に新たなエントリを追加するステップであって、前記新たなエントリが、前記読み出し要求に関連づけられた前記ゲスト物理メモリページと前記ゲスト物理メモリページに関連づけられた前記仮想マシンとを識別するステップと
    を含むことを特徴とする方法。
  13. 前記要求されたデータが格納される前記マシンメモリページに対応する前記追跡データ構造に新たなエントリを追加するステップであって、前記新たなエントリが、前記読み出し要求において示された前記ストレージボリュームの位置を含み、参照カウントが、1つのゲスト物理メモリページが前記マシンメモリページにマッピングされていることを示し、保留状態フラグが、前記ストレージボリュームからの読み出しが保留中であるか完了しているかを示すように設定されるステップ
    を更に含むことを特徴とする請求項12記載の方法。
  14. 仮想マシンのためのホストプラットホームとそれに接続されたストレージボリュームとを備えるコンピュータシステムであって、仮想マシンのための前記ホストプラットホームは、1つ以上のプロセッサ及びマシンメモリを含み、前記マシンメモリは、マシンメモリページにマッピングされた少なくとも2つの仮想記憶ページを各々が有する、マシンメモリページの第1のグループと、マシンメモリページにマッピングされた1つのみの仮想メモリページを各々が有する、前記マシンメモリページの第2のグループと、マシンメモリページにマッピングされた仮想メモリページを各々が有しない、前記マシンメモリページの第3のグループと、のための追跡データ構造をその中に格納し、前記追跡データ構造が、各々の前記マシンメモリページのために、そこからその内容が読み出されたか、又は読み出されているストレージボリュームにおける対応する位置を示し、参照カウントが、どのくらいの仮想メモリページが前記マシンメモリページにマッピングされているのかを示し、保留状態フラグが、前記ストレージボリュームからの読み出しが保留中であるか否かを示し、前記仮想マシンのいずれかによって発行された読み出し要求は、前記追跡データ構造に基づいて前記ストレージボリュームに条件付きで発行されることを特徴とするコンピュータシステム。
  15. 前記プロセッサは、前記仮想マシンによって発行された読み出し要求を処理し、読み出し要求を発行するのに先立って、前記読み出し要求において示されるものと同じである前記ストレージボリュームの位置からのデータを包含しているか又は包含する予定のマシンメモリページが存在するか否かを判定するために追跡データ構造をチェックするようにプログラミングされることを特徴とする請求項14記載のコンピュータシステム。
  16. 前記プロセッサは、前記マシンメモリページが、前記読み出し要求において示されるものと同じである前記ストレージボリュームの位置からのデータを包含しているか又は包含する予定であることが判定されるならば、マシンメモリページに仮想メモリページをマッピングし、前記マシンメモリページに関連づけられた前記参照カウントを増加させるようにプログラミングされることを特徴とする請求項14記載のコンピュータシステム。
  17. 前記プロセッサは、共有マシンメモリページに対して書き込むための要求に応じて新たなマシンメモリページに対して前記共有マシンメモリページの内容をコピーし、前記共有マシンメモリページに関連づけられた前記参照カウントを減少させるように、更にプログラミングされることを特徴とする請求項16記載のコンピュータシステム。
  18. 前記プロセッサは、新たなマシンメモリページに関連づけられたエントリを前記追跡データ構造に追加し、前記新たなマシンメモリページに対して保持されるメタデータの中に共有ヒントを挿入するように、更にプログラミングされることを特徴とする請求項14記載のコンピュータシステム。
JP2012511992A 2009-05-19 2010-05-19 仮想マシンシステムにおけるショートカット入出力 Active JP5592942B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17961209P 2009-05-19 2009-05-19
US61/179,612 2009-05-19
PCT/US2010/035409 WO2010135430A1 (en) 2009-05-19 2010-05-19 Shortcut input/output in virtual machine systems

Publications (2)

Publication Number Publication Date
JP2012527704A JP2012527704A (ja) 2012-11-08
JP5592942B2 true JP5592942B2 (ja) 2014-09-17

Family

ID=42542823

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012511992A Active JP5592942B2 (ja) 2009-05-19 2010-05-19 仮想マシンシステムにおけるショートカット入出力

Country Status (4)

Country Link
US (4) US10437865B1 (ja)
EP (1) EP2433217B1 (ja)
JP (1) JP5592942B2 (ja)
WO (1) WO2010135430A1 (ja)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5592942B2 (ja) 2009-05-19 2014-09-17 ヴイエムウェア インク 仮想マシンシステムにおけるショートカット入出力
US20160246711A9 (en) * 2010-01-28 2016-08-25 Hewlett-Packard Development Company, L. P. Interface methods and apparatus for memory devices
US8938589B2 (en) * 2010-01-28 2015-01-20 Hewlett-Packard Development Company, L. P. Interface methods and apparatus for memory devices using arbitration
WO2011148447A1 (ja) * 2010-05-24 2011-12-01 パナソニック株式会社 仮想計算機システム、領域管理方法、及びプログラム
US10318477B2 (en) * 2010-05-26 2019-06-11 Red Hat, Inc. Managing and archiving system and application log files
US9148428B1 (en) 2011-05-25 2015-09-29 Bromium, Inc. Seamless management of untrusted data using virtual machines
US9135038B1 (en) 2010-05-28 2015-09-15 Bromium, Inc. Mapping free memory pages maintained by a guest operating system to a shared zero page within a machine frame
US9116733B2 (en) 2010-05-28 2015-08-25 Bromium, Inc. Automated provisioning of secure virtual execution environment using virtual machine templates based on requested activity
US9792131B1 (en) 2010-05-28 2017-10-17 Bromium, Inc. Preparing a virtual machine for template creation
US9354906B1 (en) 2010-05-28 2016-05-31 Bromium, Inc. Managing the eviction process
US9104544B1 (en) * 2010-05-28 2015-08-11 Bromium, Inc. Mitigating eviction by maintaining mapping tables
US10095530B1 (en) 2010-05-28 2018-10-09 Bromium, Inc. Transferring control of potentially malicious bit sets to secure micro-virtual machine
US8972980B2 (en) 2010-05-28 2015-03-03 Bromium, Inc. Automated provisioning of secure virtual execution environment using virtual machine templates based on requested activity
US9386021B1 (en) 2011-05-25 2016-07-05 Bromium, Inc. Restricting network access to untrusted virtual machines
US9239909B2 (en) 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
JP5681465B2 (ja) * 2010-12-02 2015-03-11 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理システム、情報処理装置、準備方法、プログラムおよび記録媒体
US9015417B2 (en) * 2010-12-15 2015-04-21 Symantec Corporation Deduplication-aware page cache
US9038066B2 (en) * 2010-12-22 2015-05-19 Vmware, Inc. In-place snapshots of a virtual disk configured with sparse extent
US8893027B2 (en) * 2011-03-04 2014-11-18 Cisco Technology, Inc. Providing hosted virtual desktop infrastructure services
US9189419B2 (en) 2011-04-14 2015-11-17 Vmware, Inc. Detecting and suppressing redundant input-output operations
US8839275B1 (en) 2011-06-06 2014-09-16 Proximal Data, Inc. Method for intercepting input/output requests and responses
US9501421B1 (en) * 2011-07-05 2016-11-22 Intel Corporation Memory sharing and page deduplication using indirect lines
US9116803B1 (en) * 2011-09-30 2015-08-25 Symantec Corporation Placement of virtual machines based on page commonality
WO2013085511A1 (en) * 2011-12-07 2013-06-13 Intel Corporation Techniques to prelink software to improve memory de-duplication in a virtual system
US9235589B2 (en) 2011-12-13 2016-01-12 International Business Machines Corporation Optimizing storage allocation in a virtual desktop environment
US9904565B2 (en) * 2012-02-01 2018-02-27 Veritas Technologies Llc Subsequent operation input reduction systems and methods for virtual machines
US9069806B2 (en) * 2012-03-27 2015-06-30 Google Inc. Virtual block devices
US9996370B1 (en) * 2012-04-18 2018-06-12 Open Invention Network Llc Page swapping in virtual machine environment
US9442859B1 (en) 2012-06-17 2016-09-13 Samsung Electronics Co., Ltd. Method for asynchronous population of data caches used with mass storage devices
US9104552B1 (en) 2012-06-23 2015-08-11 Samsung Electronics Co., Ltd. Method for the use of shadow ghost lists to prevent excessive wear on FLASH based cache devices
US9330013B2 (en) * 2012-06-28 2016-05-03 Industrial Technology Research Institute Method of cloning data in a memory for a virtual machine, product of computer programs and computer system therewith
US9158701B2 (en) * 2012-07-03 2015-10-13 International Business Machines Corporation Process-specific views of large frame pages with variable granularity
US10120700B1 (en) * 2012-10-02 2018-11-06 Tintri Inc. Using a control virtual disk for storage management
US9361237B2 (en) * 2012-10-18 2016-06-07 Vmware, Inc. System and method for exclusive read caching in a virtualized computing environment
CN103870312B (zh) * 2012-12-12 2018-01-23 华为技术有限公司 建立虚拟机共享存储缓存的方法及装置
US9311164B2 (en) * 2013-02-14 2016-04-12 Red Hat Israel, Ltd. System and method for ballooning with assigned devices
US9298634B2 (en) * 2013-03-06 2016-03-29 Gregory RECUPERO Client spatial locality through the use of virtual request trackers
GB2515536A (en) * 2013-06-27 2014-12-31 Ibm Processing a guest event in a hypervisor-controlled system
WO2015003312A1 (en) * 2013-07-09 2015-01-15 Hua Zhong University Of Science Technology Data communication on a virtual machine
US9841927B2 (en) * 2013-09-23 2017-12-12 Red Hat Israel, Ltd Remote direct memory access with copy-on-write support
US9594583B2 (en) * 2013-11-12 2017-03-14 Red Hat, Inc. Lightweight snapshots for virtual disks
US9529609B2 (en) * 2013-12-10 2016-12-27 Vmware, Inc. Tracking guest memory characteristics for memory scheduling
US9547510B2 (en) 2013-12-10 2017-01-17 Vmware, Inc. Tracking guest memory characteristics for memory scheduling
US9459900B2 (en) 2014-01-13 2016-10-04 Red Hat Israel, Ltd. Hypervisor-based balloon page initialization
US10430614B2 (en) 2014-01-31 2019-10-01 Bromium, Inc. Automatic initiation of execution analysis
US9436395B2 (en) 2014-03-14 2016-09-06 Advanced Micro Devices, Inc. Mechanisms to save user/kernel copy for cross device communications
US9823842B2 (en) 2014-05-12 2017-11-21 The Research Foundation For The State University Of New York Gang migration of virtual machines using cluster-wide deduplication
US10268492B2 (en) * 2014-05-20 2019-04-23 Amazon Technologies, Inc. Low latency connections to workspaces in a cloud computing environment
US9558122B2 (en) * 2014-05-29 2017-01-31 Apple Inc. Cache reclamation using prioritized record removal
US9619543B1 (en) * 2014-06-23 2017-04-11 EMC IP Holding Company LLC Replicating in virtual desktop infrastructure
US11775443B2 (en) * 2014-10-23 2023-10-03 Hewlett Packard Enterprise Development Lp Supervisory memory management unit
US9766920B2 (en) * 2015-08-28 2017-09-19 Vmware, Inc. Dynamic content disk
US9836241B1 (en) 2016-08-30 2017-12-05 Red Hat Israel, Ltd. Label based guest memory deduplication
US10257033B2 (en) * 2017-04-12 2019-04-09 Cisco Technology, Inc. Virtualized network functions and service chaining in serverless computing infrastructure
US10496853B2 (en) * 2017-06-30 2019-12-03 Phoenix Technologies Ltd. Securing a host machine against direct memory access (DMA) attacks via expansion card slots
US10496431B2 (en) * 2017-07-31 2019-12-03 Red Hat Israel, Ltd. Virtual machine storage operation progress tracking
US10678778B1 (en) * 2017-10-19 2020-06-09 EMC IP Holding Company LLC Date deduplication acceleration
US10324653B1 (en) * 2017-12-01 2019-06-18 Red Hat Israel, Ltd. Fast evacuation of a cloned disk to a storage device
US10740202B2 (en) * 2018-02-07 2020-08-11 Excelero Storage Ltd. System and method for efficient comparison of mirrored storage devices
JP7110615B2 (ja) * 2018-02-22 2022-08-02 日本電気株式会社 情報処理装置、情報処理システム、情報処理方法、及び、プログラム
US10789094B1 (en) 2019-08-22 2020-09-29 Micron Technology, Inc. Hierarchical memory apparatus
US10996975B2 (en) 2019-08-22 2021-05-04 Micron Technology, Inc. Hierarchical memory systems
US11106595B2 (en) 2019-08-22 2021-08-31 Micron Technology, Inc. Hierarchical memory systems
US11016903B2 (en) 2019-08-22 2021-05-25 Micron Technology, Inc. Hierarchical memory systems
US11074182B2 (en) 2019-08-22 2021-07-27 Micron Technology, Inc. Three tiered hierarchical memory systems
US11036434B2 (en) 2019-08-22 2021-06-15 Micron Technology, Inc. Hierarchical memory systems
US11169928B2 (en) 2019-08-22 2021-11-09 Micron Technology, Inc. Hierarchical memory systems to process data access requests received via an input/output device
US11036633B2 (en) 2019-08-22 2021-06-15 Micron Technology, Inc. Hierarchical memory apparatus
US10929301B1 (en) 2019-08-22 2021-02-23 Micron Technology, Inc. Hierarchical memory systems
US10997179B1 (en) * 2019-12-26 2021-05-04 Snowflake Inc. Pruning index for optimization of pattern matching queries
US11681708B2 (en) 2019-12-26 2023-06-20 Snowflake Inc. Indexed regular expression search with N-grams
US11301285B1 (en) * 2020-01-30 2022-04-12 Parallels International Gmbh Methods and systems for seamless virtual machine changing for software applications
US11928334B2 (en) * 2020-05-15 2024-03-12 Mitsubishi Electric Corporation Apparatus controller and apparatus control system
US11494076B2 (en) * 2021-01-19 2022-11-08 Dell Products L.P. Storage-usage-based host/storage mapping management system
US20220283835A1 (en) * 2021-03-02 2022-09-08 Red Hat, Inc. Library based virtual machine migration
US11789653B2 (en) 2021-08-20 2023-10-17 Micron Technology, Inc. Memory access control using a resident control circuitry in a memory device

Family Cites Families (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06231047A (ja) * 1993-02-05 1994-08-19 Fujitsu Ltd アドレス変換方法および装置
JPH08328880A (ja) 1995-05-31 1996-12-13 Mitsubishi Electric Corp 複数のアプリケーションプログラムを同時に実行できるオペレーティングシステムにおける計算機運転管理システム
US6075938A (en) 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6772419B1 (en) * 1997-09-12 2004-08-03 Hitachi, Ltd. Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
EP0972374A1 (en) * 1998-02-04 2000-01-19 Sun Microsystems, Inc. Method and apparatus for efficient authentication and integrity checking using hierarchical hashing
US6792432B1 (en) * 1998-03-31 2004-09-14 Sybase, Inc. Database system with methods providing high-concurrency access in B-Tree structures
US6457021B1 (en) * 1998-08-18 2002-09-24 Microsoft Corporation In-memory database system
US6591269B1 (en) * 1999-05-19 2003-07-08 Sybase, Inc. Database system with methodology for online index rebuild
US6636242B2 (en) * 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6996536B1 (en) 2000-09-01 2006-02-07 International Business Machines Corporation System and method for visually analyzing clickstream data with a parallel coordinate system
US6636878B1 (en) 2001-01-16 2003-10-21 Sun Microsystems, Inc. Mechanism for replicating and maintaining files in a spaced-efficient manner
US6895468B2 (en) * 2001-01-29 2005-05-17 Seagate Technology Llc Log-structured block system and method
US6789156B1 (en) * 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
US7310644B2 (en) 2001-06-06 2007-12-18 Microsoft Corporation Locating potentially identical objects across multiple computers
US7111206B1 (en) 2001-09-19 2006-09-19 Juniper Networks, Inc. Diagnosis of network fault conditions
US6934880B2 (en) 2001-11-21 2005-08-23 Exanet, Inc. Functional fail-over apparatus and method of operation thereof
US20030110205A1 (en) * 2001-12-07 2003-06-12 Leith Johnson Virtualized resources in a partitionable server
WO2003073203A2 (en) * 2002-02-21 2003-09-04 Precise Software Solutions, Inc. System and method for analyzing input/output activity on local attached storage
US7210004B2 (en) * 2003-06-26 2007-04-24 Copan Systems Method and system for background processing of data in a storage system
US7287131B1 (en) 2003-03-21 2007-10-23 Sun Microsystems, Inc. Method and apparatus for implementing a fully dynamic lock-free hash table
US20050033933A1 (en) 2003-08-04 2005-02-10 Hetrick William A. Systems and methods for modifying disk drive firmware in a raid storage system
US20050083862A1 (en) 2003-10-20 2005-04-21 Kongalath George P. Data migration method, system and node
JP4863605B2 (ja) * 2004-04-09 2012-01-25 株式会社日立製作所 記憶制御システム及び方法
US7373451B2 (en) * 2003-12-08 2008-05-13 The Board Of Trustees Of The Leland Stanford Junior University Cache-based system management architecture with virtual appliances, network repositories, and virtual appliance transceivers
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
US7865508B2 (en) * 2004-04-23 2011-01-04 Tvworks, Llc Data structures and methods adapted for heterogeneous clients in an information distribution system
US7537153B2 (en) 2004-05-03 2009-05-26 De La Rue International, Limited Method and computer program product for electronically managing payment media
US7596569B2 (en) * 2004-09-24 2009-09-29 International Business Machines Corporation Method and program for space-efficient representation of objects in a garbage-collected system
US7600125B1 (en) * 2004-12-23 2009-10-06 Symantec Corporation Hash-based data block processing with intermittently-connected systems
US8140678B2 (en) 2004-12-28 2012-03-20 Sap Ag Failover protection from a failed worker node in a shared memory system
US8200700B2 (en) 2005-02-01 2012-06-12 Newsilike Media Group, Inc Systems and methods for use of structured and unstructured distributed data
JP4232767B2 (ja) 2005-03-14 2009-03-04 セイコーエプソン株式会社 ソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法
US8086569B2 (en) * 2005-03-30 2011-12-27 Emc Corporation Asynchronous detection of local event based point-in-time state of local-copy in the remote-copy in a delta-set asynchronous remote replication
US7428524B2 (en) * 2005-08-05 2008-09-23 Google Inc. Large scale data storage in sparse tables
US20070050423A1 (en) 2005-08-30 2007-03-01 Scentric, Inc. Intelligent general duplicate management system
JP4927408B2 (ja) * 2006-01-25 2012-05-09 株式会社日立製作所 記憶システム及びそのデータ復元方法
US7734603B1 (en) 2006-01-26 2010-06-08 Netapp, Inc. Content addressable storage array element
US8266152B2 (en) * 2006-03-03 2012-09-11 Perfect Search Corporation Hashed indexing
WO2007103815A2 (en) * 2006-03-03 2007-09-13 Perfect Search Corporation Hyperspace index
US8548948B2 (en) * 2006-04-11 2013-10-01 Oracle International Corporation Methods and apparatus for a fine grained file data storage system
US9009199B2 (en) * 2006-06-06 2015-04-14 Haskolinn I Reykjavik Data mining using an index tree created by recursive projection of data points on random lines
US7636800B2 (en) * 2006-06-27 2009-12-22 International Business Machines Corporation Method and system for memory address translation and pinning
US8412682B2 (en) 2006-06-29 2013-04-02 Netapp, Inc. System and method for retrieving and using block fingerprints for data deduplication
US7921077B2 (en) * 2006-06-29 2011-04-05 Netapp, Inc. System and method for managing data deduplication of storage systems utilizing persistent consistency point images
US7720892B1 (en) 2006-06-30 2010-05-18 Emc Corporation Bulk updates and tape synchronization
JP2008033392A (ja) * 2006-07-26 2008-02-14 Nec Corp 仮想計算機システム及びその動作方法
US7747584B1 (en) * 2006-08-22 2010-06-29 Netapp, Inc. System and method for enabling de-duplication in a storage system architecture
US20080059726A1 (en) * 2006-08-31 2008-03-06 Carlos Rozas Dynamic measurement of an operating system in a virtualized system
JP2008077144A (ja) * 2006-09-19 2008-04-03 Ricoh Co Ltd 仮想化システム、メモリ管理方法及び制御プログラム
US8191142B2 (en) * 2006-10-26 2012-05-29 Polytechnic Institute Of New York University Detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit strings using a hierarchical data structure
US7840537B2 (en) 2006-12-22 2010-11-23 Commvault Systems, Inc. System and method for storing redundant information
US8468244B2 (en) * 2007-01-05 2013-06-18 Digital Doors, Inc. Digital information infrastructure and method for security designated data and with granular data stores
US7606795B2 (en) * 2007-02-08 2009-10-20 International Business Machines Corporation System and method for verifying the integrity and completeness of records
EP1962192A1 (en) * 2007-02-21 2008-08-27 Deutsche Telekom AG Method and system for the transparent migration of virtual machine storage
US8364910B2 (en) * 2007-03-08 2013-01-29 Daniel Shawcross Wilkerson Hard object: hardware protection for software objects
US7792941B2 (en) * 2007-03-21 2010-09-07 International Business Machines Corporation Method and apparatus to determine hardware and software compatibility related to mobility of virtual servers
US8315984B2 (en) 2007-05-22 2012-11-20 Netapp, Inc. System and method for on-the-fly elimination of redundant data
US9002800B1 (en) * 2007-06-30 2015-04-07 Emc Corporation Archive and backup virtualization
US7669023B2 (en) 2007-07-10 2010-02-23 Hitachi, Ltd. Power efficient storage with data de-duplication
US8209506B2 (en) 2007-09-05 2012-06-26 Emc Corporation De-duplication in a virtualized storage environment
US7818493B2 (en) * 2007-09-07 2010-10-19 Sandisk Corporation Adaptive block list management
US7822939B1 (en) * 2007-09-25 2010-10-26 Emc Corporation Data de-duplication using thin provisioning
US7962452B2 (en) 2007-12-28 2011-06-14 International Business Machines Corporation Data deduplication by separating data from meta data
US8190835B1 (en) * 2007-12-31 2012-05-29 Emc Corporation Global de-duplication in shared architectures
US20090204636A1 (en) * 2008-02-11 2009-08-13 Microsoft Corporation Multimodal object de-duplication
US8825617B2 (en) * 2008-03-14 2014-09-02 International Business Machines Corporation Limiting deduplication based on predetermined criteria
US8751561B2 (en) 2008-04-08 2014-06-10 Roderick B. Wideman Methods and systems for improved throughput performance in a distributed data de-duplication environment
US7567188B1 (en) * 2008-04-10 2009-07-28 International Business Machines Corporation Policy based tiered data deduplication strategy
US7908436B1 (en) * 2008-04-25 2011-03-15 Netapp, Inc. Deduplication of data on disk devices using low-latency random read memory
US8515909B2 (en) * 2008-04-29 2013-08-20 International Business Machines Corporation Enhanced method and system for assuring integrity of deduplicated data
US8074047B2 (en) 2008-05-16 2011-12-06 International Business Machines Corporation System and method for content replication detection and elimination in main memory
US8135930B1 (en) 2008-07-14 2012-03-13 Vizioncore, Inc. Replication systems and methods for a virtual computing environment
US8099571B1 (en) 2008-08-06 2012-01-17 Netapp, Inc. Logical block replication with deduplication
US8086799B2 (en) 2008-08-12 2011-12-27 Netapp, Inc. Scalable deduplication of stored data
US9235577B2 (en) 2008-09-04 2016-01-12 Vmware, Inc. File transfer using standard blocks and standard-block identifiers
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US10642794B2 (en) 2008-09-11 2020-05-05 Vmware, Inc. Computer storage deduplication
US20100257181A1 (en) * 2009-04-01 2010-10-07 Sybase, Inc. Dynamic Hash Table for Efficient Data Access In A Relational Database System
JP5592942B2 (ja) 2009-05-19 2014-09-17 ヴイエムウェア インク 仮想マシンシステムにおけるショートカット入出力
US9678863B2 (en) * 2012-06-12 2017-06-13 Sandisk Technologies, Llc Hybrid checkpointed memory
WO2014087458A1 (en) * 2012-12-06 2014-06-12 Hitachi, Ltd. Storage apparatus and data management method
US10706082B1 (en) * 2017-06-29 2020-07-07 Seagate Technology Llc Deduplication database management
US11449480B2 (en) * 2019-10-31 2022-09-20 EMC IP Holding Company LLC Similarity hash for binary data pages
US20220092046A1 (en) * 2020-09-18 2022-03-24 Kioxia Corporation System and method for efficient expansion of key value hash table
US11615063B2 (en) * 2021-01-22 2023-03-28 EMC IP Holding Company LLC Similarity deduplication

Also Published As

Publication number Publication date
US20200065318A1 (en) 2020-02-27
US20100299667A1 (en) 2010-11-25
US9032181B2 (en) 2015-05-12
US11899592B2 (en) 2024-02-13
AU2010249649A1 (en) 2011-12-15
WO2010135430A1 (en) 2010-11-25
EP2433217B1 (en) 2019-10-16
US10496670B1 (en) 2019-12-03
US10437865B1 (en) 2019-10-08
JP2012527704A (ja) 2012-11-08
EP2433217A1 (en) 2012-03-28

Similar Documents

Publication Publication Date Title
JP5592942B2 (ja) 仮想マシンシステムにおけるショートカット入出力
US10289555B1 (en) Memory read-ahead using learned memory access patterns
US10691341B2 (en) Method for improving memory system performance in virtual machine systems
US9135171B2 (en) Method for improving save and restore performance in virtual machine systems
US10318324B2 (en) Virtualization support for storage devices
US9189419B2 (en) Detecting and suppressing redundant input-output operations
US9652405B1 (en) Persistence of page access heuristics in a memory centric architecture
US9880941B2 (en) Sharing an accelerator context across multiple processes
US8190823B2 (en) Apparatus, system and method for storage cache deduplication
US9760493B1 (en) System and methods of a CPU-efficient cache replacement algorithm
US9959074B1 (en) Asynchronous in-memory data backup system
US20100228903A1 (en) Block Map Based I/O Optimization for Storage Virtual Appliances
US10782904B2 (en) Host computing arrangement, remote server arrangement, storage system and methods thereof
US9875184B2 (en) Multi-level snapshot caching
US11010091B2 (en) Multi-tier storage
US11249914B2 (en) System and methods of an efficient cache algorithm in a hierarchical storage system
US10942670B2 (en) Direct access flash transition layer
AU2010249649B2 (en) Shortcut input/output in virtual machine systems
US11841797B2 (en) Optimizing instant clones through content based read cache
WO2014064547A1 (en) In-memory continuous data protection
US20230229609A1 (en) Iommu-based direct memory access (dma) tracking for enabling live migration of virtual machines (vms) using passthrough physical devices
US20220244981A1 (en) Non-interrupting portable page request interface
US20240086103A1 (en) Method and system to process data delete in virtualized computing environment
TW201610853A (zh) 用於儲存虛擬化的系統和方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131203

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140304

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140305

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: 20140715

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140801

R150 Certificate of patent or registration of utility model

Ref document number: 5592942

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350