JP6774971B2 - データアクセスアクセラレータ - Google Patents

データアクセスアクセラレータ Download PDF

Info

Publication number
JP6774971B2
JP6774971B2 JP2017568326A JP2017568326A JP6774971B2 JP 6774971 B2 JP6774971 B2 JP 6774971B2 JP 2017568326 A JP2017568326 A JP 2017568326A JP 2017568326 A JP2017568326 A JP 2017568326A JP 6774971 B2 JP6774971 B2 JP 6774971B2
Authority
JP
Japan
Prior art keywords
production
dataset
application
accelerator
production dataset
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
JP2017568326A
Other languages
English (en)
Other versions
JP2018519608A5 (ja
JP2018519608A (ja
Inventor
ダラル・チラグ
バハラドワジ・ヴァイジャイアンティ
Original Assignee
ベリタス テクノロジーズ エルエルシー
ベリタス テクノロジーズ エルエルシー
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 ベリタス テクノロジーズ エルエルシー, ベリタス テクノロジーズ エルエルシー filed Critical ベリタス テクノロジーズ エルエルシー
Priority claimed from PCT/US2016/040367 external-priority patent/WO2017004361A1/en
Publication of JP2018519608A publication Critical patent/JP2018519608A/ja
Publication of JP2018519608A5 publication Critical patent/JP2018519608A5/ja
Application granted granted Critical
Publication of JP6774971B2 publication Critical patent/JP6774971B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本開示は、データをキャッシュすることに関し、より具体的には、アプリケーション及び試験環境においてデータアクセスを高速化することに関する。
関連技術の説明
プロダクションデータは、事業目的のために企業及び/又は組織によって持続的に蓄積されて使用される情報である。プロダクションデータは、それ自体の重要性のため、正確で、文書化され、そして、継続的に管理されなければならない。企業は、ソフトウェア開発及び試験を実行するためにプロダクションデータを使用する。例えば、仮想マシンが、アプリケーションの開発及び試験環境に実装されてもよく、そして、プロダクション環境において蓄積されるプロダクションデータを使用してアプリケーションの開発及び試験を実行するために使用されてもよい。
そのようなアプリケーション開発及び試験動作は、しばしば、ストレージシステム(例えば、ストレージアプライアンスのストレージスタック)に記憶されたプロダクションデータを必要とする。場合によっては、そのようなストレージシステムは、離れた場所にあって、ネットワーク経由でアクセスされる必要がある。いくつかのストレージシステムは、大規模な連続した書込み動作を一般に含むバックアップ及びリストア動作に最適化され好適なものである。そのようなストレージシステムは、アプリケーション開発及び試験環境に必要な小規模及び/又はランダム読出し及び書込み動作を実行する際に効率的でない。
それに加えて、多重仮想マシン(例えば、アプリケーション仮想マシン)がアプリケーション開発及び試験を実行するために使用される場合、そのような仮想マシンは、一般に、同一の(又は、類似の)共通データを含むデータセットをキャッシュする。これにより、キャッシュが多重仮想マシンにおいて複製されることになる。より大規模なキャッシュは、そのような状況でなんらかの利益を提供する。しかし、大規模なキャッシュは、通常、アプリケーション開発及び試験環境のそれぞれの仮想マシンに分割され、したがって、キャッシング効率を低下させる。
アプリケーション及び試験環境においてデータアクセスを高速化するための様々なシステム、方法、及びプロセスが開示される。そのような方法は、ストレージシステムからプロダクションデータセットを受け取ることと、集約キャッシュ(consolidated cache)にプロダクションデータセットをキャッシュすることと、を含む。集約キャッシュは、アクセラレータ仮想マシンによって実装される。方法は、1つ又は2つ以上のアプリケーション仮想マシンからのプロダクションデータセットの要求をインターセプトし、そして、プロダクションデータセットを集約キャッシュから1つ又は2つ以上のアプリケーション仮想マシンに供給する。
一実施形態では、ストレージシステムからプロダクションデータセットを受け取ること、及び集約キャッシュにプロダクションデータセットをキャッシュすることが、アクセラレータ仮想マシンによって管理される。この例では、プロダクションデータセットは、1つ又は2つ以上のアプリケーション仮想マシンによって必要とされる共通のプロダクションデータを含む。他の実施形態では、1つ又は2つ以上のアプリケーション仮想マシンからのプロダクションデータセットの要求が、クライアントによってインターセプトされてアクセラレータ仮想マシンに転送される。
いくつかの実施形態では、1つ又は2つ以上のアプリケーション仮想マシン、アクセラレータ仮想マシン、集約キャッシュ、及びクライアントは、ハイパーバイザによってサポートされる。他の実施形態では、ストレージシステムは、プロダクション環境の一部分であり、そして、1つ又は2つ以上のアプリケーション仮想マシン、アクセラレータ仮想マシン、集約キャッシュ、及びクライアントは、アプリケーション開発及び試験環境の一部分である。
一実施形態では、1つ又は2つ以上のアプリケーション仮想マシンのそれぞれは、シン・プロビジョニングされた(thin-provisioned)仮想ディスクを使用し、そして、シン・プロビジョニングされた仮想ディスクは、対応するアプリケーション仮想マシンによって加えられたプロダクションデータセットへの変更を記憶する。
前述の内容は概要であり、したがって必然的に、簡略化、一般化、及び詳細の省略を含み、その結果として、当業者であれば、その概要が例示的であるにすぎず、なんら限定的ではないことがわかるであろう。請求項によってのみ規定されるような、本発明の他の態様、創意に富んだ機能、及び利点は、下記に示す非限定的な詳細な説明において明瞭になるであろう。
本開示は、添付図面を参照することによってよりよく理解され得、そして、それの多数の対象、機能、及び利点が当業者に明らかにされる。
本開示の一実施形態に従う、仮想化サーバを実装するコンピューティングシステムのブロック図である。
本開示の一実施形態に従う、アクセラレータ仮想マシンを実装するコンピューティングシステムのブロック図である。
本開示の一実施形態に従う、アプリケーション及び試験環境にデータアクセスを提供するコンピューティングシステムのブロック図である。
本開示の一実施形態に従う、プロダクションデータをキャッシュするためのプロセスを示すフローチャートである。
本開示の一実施形態に従う、アプリケーション仮想マシンにプロダクションデータを供給するためのプロセスを示すフローチャートである。
本開示の一実施形態に従う、集約キャッシュを更新するためのプロセスを示すフローチャートである。
本開示の一実施形態に従う、集約キャッシュからプロダクションデータを供給するためのプロセスを示すフローチャートである。
本開示の一実施形態に従う、集約キャッシュがソフトウェア内に実装され得る態様を示す、コンピューティングシステムのブロック図である。
本開示の一実施形態に従う、様々なコンピューティングデバイスがネットワークを介して通信し得る態様を示す、ネットワーク化システムのブロック図である。
本開示は、様々な修正形態及び代替形式に影響を受けるけれども、本開示の特定の実施形態は、図面及び詳細な説明において例として提供される。図面及び詳細な説明は、開示内容を開示された特定の形式に限定することを意図しないことを理解されたい。その代わりに、添付の請求項によって規定されるような本開示の趣旨及び範囲内にある全ての修正形態、等価物、及び代替形態を包含することが意図される。
序論
ソフトウェア(又は、アプリケーション)開発及び試験環境は、プロダクションデータの大量のコピーを消費する。前述したように、1つ又は2つ以上の仮想マシン(アプリケーション仮想マシン、又はApp VMと呼ばれる)が、そのようなアプリケーション開発及び試験を実行するために使用されてもよい。これらのApp VMは、プロダクションデータを必要とする(及び、使用する)が、このプロダクションデータは、一般に、1つ又は2つ以上のストレージシステム(例えば、ストレージアプライアンス)における様々な場所(例えば、プロダクション環境)に記憶される。そのため、そのようなアプリケーション開発及び試験は、プロダクションデータがプロダクション環境からアプリケーション開発及び試験環境まで(例えば、Network File System(NFS)等の分散ファイルシステムプロトコルを提供するクライアントサーバアプリケーションを使用して)ネットワーク経由で運ばれることを必要とする。
アプリケーション開発及び試験環境でのそれぞれのApp VMは、プロダクションデータのそれ自体のコピー(例えば、それぞれのApp VMは、そのApp VMのためだけにプロビジョニングされたそれ自体のデータファイルのセットを有する)を必要とし、それを使用するけれども、そのようなデータファイルは、一般にかなりの量の共通データを含む。例えば、アプリケーション開発者(又は、試験者)は、プロダクションデータセットに変更を加えてもよく、そして、試験が、同時に複数のApp VMを使用して同一のプロダクションデータセットについて実行されてもよい。プロダクションデータセットが試験(及び/又は、活動に基づく他の開発)を実行するために使用されるので、そのような試験を実行する仮想マシンは、頻繁に廃棄される(例えば、動作が停止され、開始が許容されない)。更に、そのような試験活動は、古い(そして、おそらく新鮮でない)データセットの代わりに最近のデータセットにおいて試験シナリオが実行されることを保証するために、データが頻繁にリフレッシュされることを必要とする。
前述したように、そのようなアプリケーション開発及び試験動作は、しばしば、ストレージシステム(例えば、ストレージアプライアンスのストレージスタック)に記憶され、そしてバックアップデータであるプロダクションデータを必要とする(例えば、プロダクションデータが安定的で読取り専用である)。バックアップデータを記憶するストレージシステムは、概して、大規模な連続した書込み動作(例えば、データバックアップ中に生じて動作を記憶する書込み動作)のために最適化される。そのようなストレージシステムは、アプリケーション開発及び試験環境に必要な小規模及び/又はランダム読出し及び書込み動作を実行する際に効率的でない。
更に、アプリケーション開発及び試験作業負荷(例えば、アプリケーション開発及び試験環境のアプリケーションで実行される試験活動)は、一般的に複数のApp VMで同時に動き、多くの共通性を有するデータセットにアクセスする(例えば、複数のApp VMが同一のデータセットについて試験する)。そのため、それぞれのApp VMは、同一のデータセット(例えば、ストレージシステムによって提供されている同一又は類似のデータセット)をキャッシュし、したがって、キャッシュは、複数のApp VMにおいて複製される。
更に、前述のように、プロダクションデータ(任意の最新版を含む)は、一般的にネットワーク経由でプロダクション環境からアプリケーション及び試験環境までの搬送を必要とする。しかし、アプリケーション開発及び試験シナリオにおいて、App VMは、しばしばリサイクルされ(上記のように)、したがって、データが頻繁にリフレッシュされるので、データが長期間、持続性を保つことを必要としない。
また、前述のように、App VMにより近接したより大規模なキャッシュは、いくつかの利益(例えば、App VMがストレージシステムからのプロダクションデータにネットワーク経由でアクセスする必要がないようなネットワーク効率)を提供する。しかし、そのようなキャッシュは、アプリケーション開発及び試験環境においてそれぞれのApp VM上で分割されることにより、キャッシング効率を低下させることになる。
アプリケーション及び試験環境においてデータアクセスを高速化するためのシステム、方法、及びプロセスが本明細書で開示される。
例示的なアプリケーション開発及び試験環境
アプリケーション開発及び試験は、プロダクション(又は生の)データセット(例えば、現実の顧客データベース)を表す1つ又は2つ以上のデータセットについて実行される。そのような開発及び試験は、アプリケーションが現実のシナリオで正確に実行することを確実にする。(プロダクションデータ及び/又はプロダクション環境を表している)プロダクションデータセットのバックアップコピー(又は、カバースナップショット)は、アプリケーション開発及び試験のために使用されてもよい。本明細書に記載のアプリケーション開発及び試験環境は、一例にすぎない。本明細書に示す構成と異なる構成を有する環境もまた想定される。
そのような開発及び試験を実行するために、縮小された仮想マシンがしばしば使用される。例えば、企業がプロダクション環境においてAPACHEウェブサーバソフトウェアを使用している場合、APACHEをも動かす縮小された仮想マシンを使用することが好ましい(例えば、プロダクション環境が千(1000)の顧客をサポートする場合、アプリケーション開発及び試験環境での縮小されたApp VMは、十(10)の顧客をサポートできる)。このように、プロダクション環境(プロダクションデータの精度の所定の重要性)は、影響を受けないか、又は変更されない。
仮想マシンは、アプリケーション開発及び試験を実行することに有用である。そのような開発及び試験は、データセットに頻繁に変更を加えることを含むので、1つ又は2つ以上の仮想マシンは、容易に廃棄及び再利用されてもよい。更に、そのような開発及び試験は、プロダクションデータセットの同一のコピーを同時に動かす(そして、それらについて試験を実行する)ために、複数のApp VMによってサポートされ(及び、それらの上に分散され)てもよい。
図1は、一実施形態に従う、仮想化サーバを実装するコンピューティングシステムのブロック図である。仮想化サーバ105は、プロセッサ110と、メモリ115と、を含むコンピューティングデバイスである。仮想化サーバ105は、サーバ、デスクトップ、ラップトップ、タブレット等を含む任意のタイプのコンピューティングデバイスであってもよい。
メモリ115は、仮想化環境を実装することにより、アプリケーション開発及び試験を実行する。メモリ115は、アクセラレータ仮想マシン(アクセラレータVM 120)と、いくつかのアプリケーション仮想マシン(アプリケーションVM(135(1)〜(N))と、集約キャッシュ125(例えば、ソリッドステートドライブ(SSD))と、ファイルシステムクライアント(例えば、NFSクライアント)と、それぞれのApp VMのための専用仮想ディスク(例えば、App VM 135(1)と関連する仮想ディスク140(1)、及びApp VM 135(N)と関連する仮想ディスク140(N))と、を含む。この例(及び、環境)では、図1に示す仮想ディスクは、また、差分仮想ディスクと呼ばれる場合がある。
メモリ115は、また、ハイパーバイザ150と、オペレーティングシステム145と、を実装する。図1に示すように、ハイパーバイザ150は、ソフトウェア(例えば、Red Hat(登録商標)Enterprise Virtualization等)を使用して実装される。しかし、ハイパーバイザ150は、また、(図3に示すように)VMware(商標)社によって提供されるESXi等のネイティブ又はベアメタルハイパーバイザであってもよい。更に、代替の実施形態は、仮想化サーバ毎に、示すものと異なる数の仮想マシンを実装してもよく、そして、仮想化サーバは、同一の仮想化サーバ内の他のコンピューティングデバイスと同一の又はそれと異なる数の仮想マシンをそれぞれ実装する付加的なコンピューティングデバイスを含んでもよい。
図1は、また、ストレージシステム160、及びストレージ管理モジュール155を示す。前述のように、ストレージシステム160は、ストレージアプライアンスであってもよく、及び/又はハードドライブ、コンパクトディスク、デジタル多目的ディスク、SSD、フラッシュメモリ等のメモリ、又はアレイ等を含む1つ又は2つ以上の様々な異なるストレージデバイスを含んでもよい。ストレージ管理モジュール155は、ネットワーク160を介してストレージシステム160と仮想化サーバ105との間にインターフェースを提供する(例えば、ストレージシステム160からファイルシステムクライアント130までプロダクションデータを転送又は送信する)。任意の他の適切なネットワーク又は相互接続が、ネットワーク160の代わりに及び/又はそれに付加して使用されてもよいことに留意されたい。
例示的なデータアクセスアクセラレータ
図2は、一実施形態に従う、アプリケーション試験及び開発環境においてデータアクセスを提供し得るアクセラレータ仮想マシンのブロック図である。アクセラレータVM 120は、サーバビュー205と、データアクセスインターセプタ220と、重複排除認識(deduplication-aware)エンジン225と、キャッシングサブシステム230と、クライアントビュー235と、を含む。App VM 120は、ストレージシステム160(例えば、ネットワーク又はいくつかの他のタイプの相互接続経由で)に通信可能に結合される。
サーバビュー205は、ファイルシステムサーバ210と、ストレージターゲット215と、を含む。クライアントビュー235は、ファイルシステムクライアント130(図1に示す)と、ストレージイニシエータ240と、を含む。一実施形態では、図2のコンピューティングアーキテクチャは、アクセラレータVMが複数のApp VM(例えば、図2に示すような集約キャッシュ125からのApp VM 135(1)〜(N))にデータアクセスを提供することを可能にするように構成することができる。
いくつかの実施形態では、アクセラレータVM 120は、ストレージシステム160からプロダクションデータセット(例えば、生のプロダクションデータセットのバックアップコピー又はカバースナップショット)を受け取る。アクセラレータVM 120は、次に、集約キャッシュ125内のプロダクションデータセットを(例えば、キャッシングサブシステム230を使用して)キャッシュする。この例では、集約キャッシュ125は、アクセラレータVM 120によって実装される。アクセラレータVM 120がファイルシステムクライアント130を実装しているので、アクセラレータVM 120は、1つ又は2つ以上のApp VMからのプロダクションデータセットの要求をインターセプトするためにファイルシステムクライアント130を使用してもよい。いうまでもなく、この例では、1つ又は2つ以上のApp VMからのプロダクションデータセットの要求は、ストレージシステム160向けであるが、アクセラレータVM 120に代わってファイルシステムクライアント130によってインターセプトされる。その後、アクセラレータVM 120は、図2に示すように、ファイルシステムクライアント130を使用して集約キャッシュ125から1つ又は2つ以上のApp VMにプロダクションデータセットを供給する。
いくつかの実施形態では、プロダクションデータセットは、オンデマンドでキャッシュされてもよい。例えば、初めてApp VMがプロダクションデータのブロック(又は、いくつかの他のストレージユニット)を要求し、プロダクションデータがキャッシュ内で利用可能でないとき、プロダクションデータのブロックは、ストレージシステムから取り出され(又は、読み出され)てもよい。
他の実施態様において、ストレージシステム160からのプロダクションデータセットの受取り、及び集約キャッシュ125内のプロダクションデータセットの(例えば、キャッシングサブシステム230を使用する)キャッシングは、アクセラレータ仮想マシン120によって管理される。この例では、プロダクションデータセットは、1つ又は2つ以上のApp VM(例えばApp VM 135(1)〜(N))によって必要とされる共通のプロダクションデータを備える。いくつかの実施形態では、1つ又は2つ以上のApp VMによるプロダクションデータセットの要求は、(例えば、図2に示すように、データアクセスインターセプタ220を使用して)クライアント(例えば、ファイルシステムクライアント130)によってインターセプトされ、そして、アクセラレータVM120まで転送される。
データアクセス高速化の例
図3は、一実施形態に従う、アプリケーション及び試験環境においてデータアクセスを高速化するコンピューティングシステムのブロック図である。図3は、ネットワーク165を使用してストレージシステム160(及び、ストレージ管理モジュール155)に通信可能に結合されたハイパーバイザ150を示す。ストレージ管理モジュール155は、ストレージシステム160と、ハイパーバイザ150によって実装されたNFSクライアント315との間のインターフェースとして機能する。
ハイパーバイザ150は、NFSクライアント315に結合された(及びそれとインターフェースで接続する)アクセラレータVM 120を含む。アクセラレータVM 120は、集約キャッシュを実装して管理するが、この例では、SSD 305である。いくつかの実施形態では、集約キャッシュ125は、様々なストレージフォーマットで及び/又はSSD以外のデータストレージ装置に実装されてもよいことに留意されたい。SSD305は、集約キャッシュ125を実装することにより、App VM135(1)、135(2)、及び135(3)それぞれにデータアクセスを提供する。SSD 305が集約キャッシュであるので、SSD 305は、App VM 135(1)、135(2)、及び135(3)の中でキャッシュを分割しない。その代わりに、SSD 305は、アプリケーション開発及び試験目的のためにApp VM 135(1)、135(2)、及び135(3)によって必要とされる共通のプロダクションデータセットだけをキャッシュする。
App VM 135(1)、135(2)、及び135(3)は、それぞれ専用オーバーレイファイル(例えば、それぞれ、App VM 135(1)のためのオーバーレイファイル310(1)、App VM 135(2)のためのオーバーレイファイル310(2)、及びApp VM 135(3)のためのオーバーレイファイル310(3))によってプロビジョニングされる。一実施形態では、それぞれのオーバーレイファイルは、対応するApp VMによって加えられたプロダクションデータセットへの変更を記憶するシン・プロビジョニングされた仮想ディスクに提供されるコンテンツログを含む。例えば、オーバーレイファイル310(1)は、App VM 135(1)によって加えられたプロダクションデータセットへの変更を記憶するシン・プロビジョニングされた仮想ディスク(例えば、差分仮想ディスク)に提供される。NFSクライアント315は、オーバーレイファイルにアクセスすることにより、(例えば、コンテンツログを使用して)App VMのオーバーレイファイルからApp VMに供給され得るデータブロック、及び集約キャッシュ125(例えば、SSD 305)からApp VMに供給される必要があるデータブロックを識別できる。他の例では、NFSクライアントは、オーバーレイファイルにアクセスしない。ハイパーバイザが、要求されたプロダクションデータがオーバーレイファイルであると決定した場合、ハイパーバイザは、オーバーレイファイルからプロダクションデータを供給する。ハイパーバイザが、要求されたプロダクションデータがオーバーレイファイルでないと決定した場合、ハイパーバイザは、NFSクライアントと通信して、ストレージシステムからプロダクションデータを取り込む。
いくつかの実施形態では、App VM、アクセラレータVM、集約キャッシュ、及び/又はクライアント(例えば、ファイルシステムクライアント130、NFSクライアント315等)は、(図3に示すように)ハイパーバイザ150によってサポートされる。他の実施形態において、App VM、アクセラレータVM、集約キャッシュ、及び/又はクライアントは、ハイパーバイザから独立して(及び別個に)、しかし、同一の仮想化サーバ上で(図1に示すように)動作してもよい。
一実施形態では、オーバーレイファイルは、アクセラレータVM 120によって提供され、そしてその内部に記憶されてもよい。このシナリオでは、アクセラレータVMは、仮想ストレージアプライアンスとして機能してもよく、そして、集約キャッシュ125にそれぞれのオーバーレイファイルのためのパーソナライズされた領域を作成してもよい。例えば、図3の3つのApp VMのために、アクセラレータVM 120は、SSD 305内に、オーバーレイファイル310(1)、310(2)、及び310(3)それぞれのための3つのパーソナライズされた領域を作成してもよい。いくつかの実施形態では、それぞれのカスタマイズされた領域が占める集約キャッシュ125でのスペースは、特定の閾値に基づいてもよい(例えば、アクセラレータVMは、SSD 305での総利用可能スペースの5%以下がそれぞれのオーバーレイファイルに割り当てられることを保証にするように構成されてもよい)。前述のように、それぞれのオーバーレイファイルは、オーバーレイファイルの対応するApp VMによって加えられたプロダクションデータセット内のデータブロックへの変更を捕捉して記憶する。
前述のように、アクセラレータVM 120は、重複排除認識エンジン225を含む。重複排除認識エンジン225は、複数のプロダクションデータセット全体にわたって重複排除された領域(又は、データブロック)を認識している。例えば、プロダクションデータセットが所定の時間の間、(例えば、アプリケーション試験のために)使用され、リフレッシュされる必要がある場合、重複排除認識エンジン225は、特定の割合のプロダクションデータセットだけが、その所定の時間内に変更及び/又は修正されたと判断してもよい。インクリメンタルバックアップは、一般的に、所定のバックアップセットの小規模な割合を変更及び/又は修正するだけであり、プロダクションデータセットの大規模な割合がおそらく変更及び/又は修正されないので、アクセラレータVMは、プロダクションデータを集約キャッシュ125からApp VMに局所的に提供し続けてもよい。
いくつかの実施形態では、ハイパーバイザ(例えば、ハイパーバイザ150)は、仮想ディスクファイル、仮想マシン仕様、テンプレート等を記憶できるデータストア(図3に示さず)を実装してもよい。ハイパーバイザは、仮想ディスクファイルをApp VM上で実行する(又は動く)オペレーティングシステムのためのSmall Computer System Interface(SCSI)ブロックデバイスとしてApp VMに結合してもよい。データストアは、ファイルシステム(例えば、ハイパーバイザ自体の私有ファイルシステム、又はNFSファイルシステム)によって補助されてもよい。データストアがNFSファイルシステム(図3に示さず)によって補助されるとき、ハイパーバイザのパーソナライズされたクライアント(例えば、図3に示すようなハイパーバイザ150のNFSクライアント315)は、NFSサーバ(図3に示さず)によって供給されるNFSファイルシステムをマウントするために使用されてもよい。NFSサーバは、他のホストデバイス(例えば、仮想デバイス、又はフィジカルデバイス)上で動くことができる。データストアから供給される仮想ディスクへの入力/出力(I/O)動作は、補助ファイルシステム(例えば、上記のようなNFSファイルシステム)を調べる。
ハイパーバイザの私有ファイルシステムがその代わりに使用されるとき、I/Oは、私有ファイルシステムを調べることができ、そして、私有ファイルシステムは、次に、I/Oが仮想ディスクファイルの適切な領域まで進行するのを可能にする前に、シン・プロビジョニングされた仮想ディスクのためのストレージをプロビジョニングすること(必要に応じて)等の活動を実行できる。NFSデータストアのために、I/Oは、NFSクライアント(例えば、NFSクライアント315)によってインターセプトされ、そして、I/Oは、NFSサーバにリダイレクトされる。この例では、ハイパーバイザ150のNFSデータストア(図3に示さず)は、アクセラレータVM120によって供給されてもよい。いくつかの実施形態では、アクセラレータVMは、NFSサーバを実装し(及び、動かし)てもよく、そして、ハイパーバイザのNFSクライアントは、App VMから仮想ディスクへのI/Oをインターセプトしてもよく、そして、それらのI/OをアクセラレータVM 120上で動くNFSサーバにリダイレクトしてもよい。
データアクセスを高速化するための例示的なプロセス
図4は、一実施形態に従う、プロダクションデータをキャッシュするためのプロセスを示すフローチャートである。プロセスは、410において、仮想化サーバの仮想アプライアンス(例えば、仮想化サーバ105のアクセラレータVM 120)の作成で始まる。420において、仮想アプライアンスは、(例えば、ストレージ管理モジュール155を使用して)ストレージシステム(例えば、ストレージシステム160)から1つ又は2つ以上のプロダクションデータセットを要求する。430において、仮想アプライアンスは、ストレージシステムから1つ又は2つ以上のプロダクションデータセットを受け取り、そして、440において、仮想アプライアンスは、集約キャッシュ(例えば、SSD 305)に1つ又は2つ以上のプロダクションデータセットをキャッシュする。
450において、ファイルシステムクライアント(例えば、NFSクライアント315)は、ストレージシステムからのプロダクションデータの供給の要求をインターセプトする。特定の実施形態では、ストレージシステムは、プロダクション環境の一部分であり、そして、1つ又は2つ以上のApp VM、アクセラレータVM、集約キャッシュ、及びクライアントは、アプリケーション開発及び試験環境の一部分であることに留意されたい。ストレージシステムからプロダクションデータを供給することの要求は、1つ又は2つ以上のApp VMによってなされる。要求は、クライアント(例えば、ファイルシステムクライアント130、NFSクライアント315、Storage Area Network(SAN)等)によってインターセプトされる。460において、クライアントは、要求が1つ又は2つ以上のApp VMからであるか否か決定する(例えば、いくつかの実施形態では、プロダクションデータをサービスすることの要求は、アプリケーション開発及び/又は試験を実行していない、アプリケーション開発及び試験環境における他のコンピューティングデバイスから生じてもよい)。否である場合、クライアントは、470において、プロダクションデータを供給することの要求をインターセプトし続け、そして、要求が1つ又は2つ以上のApp VMからであるか否かを決定する。
ストレージシステムからプロダクションデータを供給することの要求が1つ又は2つ以上のApp VMから生じる場合、クライアントは、要求をインターセプトし、そして要求をアクセラレータVM 120に転送する(例えば、クライアントは仮想アプライアンスに要求を転送する)。480において、アクセラレータVM 120は、集約キャッシュ(ストレージシステムの代わりに)からの要求を履行する。プロセスは、490において、クライアントがプロダクションデータの要求を処理し続けなければならいか否か決定することによって終了する。
図5は、一実施形態に従う、アプリケーション仮想マシンにプロダクションデータを提供するためのプロセスを示すフローチャートである。505において、アクセラレータVMは、それぞれのApp VMのために書込み可能なオーバーレイを構成する。例えば、書込み可能なオーバーレイは、アクセラレータVM(例えば、仮想アプライアンス)が作成された後に、アクセラレータVM 120によって構成されてもよい。前述のように、それぞれの書込み可能なオーバーレイは、シン・プロビジョニングされた仮想ディスクのそれぞれのApp VMに提供されるコンテンツログを含むことにより、App VMによってプロダクションデータセットに加えられた変更の経過を識別及び維持することができる。
510において、アクセラレータVMは、ファイルシステムクライアントにアクセスする。上述のように、ファイルシステムクライアントは、NFSクライアントであってもよく、そして、アクセラレータVMと複数のApp VM 135(1)〜(N)との間でのデータ操作を容易にする。515において、アクセラレータVMは、ストレージシステムからプロダクションデータのコピーを取得する(例えば、アクセラレータVM 120は、ストレージ管理モジュール155と通信及びインターフェースで接続することによってストレージシステム160からプロダクションデータのコピーを取得する)。520において、アクセラレータVMは、集約キャッシュ125にプロダクションデータのコピーをキャッシュする(例えば、アクセラレータVMは、図3に示すようにSSD 305にプロダクションデータのコピーをキャッシュする)。
525において、クライアント(例えば、NFSクライアント315)は、App VMがデータを要求しているか否かを決定する。上述のように、アプリケーション開発及び試験環境での他のコンピューティングエンティティはまた、データを要求してもよい。App VMがデータを要求している場合、クライアントは、530において、要求が共通の(プロダクション)データ又は変更されたデータ(プロダクションデータ)に対するものか否かを決定する。要求が変更されたプロダクションデータに対するものである場合、クライアントは、535において、書込み可能なオーバーレイから変更されたプロダクションデータを供給する(例えば、App VM 135(1)が変更されたプロダクションデータを要求する場合、NFSクライアント315は、アクセラレータVM120に要求を転送せず、その代わりに、NFSクライアント315は、単に、書込み可能なオーバーレイ310(1)からの変更されたプロダクションデータの要求を供給(又は、履行)する。)。
要求が共通のプロダクションデータに対するものである場合、クライアントは、540において、集約キャッシュ125にキャッシュされた共通のプロダクションデータを供給する(例えば、App VM 135(1)が、共通のプロダクションデータを要求する場合、NFSクライアント315は、アクセラレータVM 120に要求を転送し、アクセラレータVM 120は、次に、NFSクライアント315経由でこの要求をサービスし、そして、要求された共通のプロダクションデータをApp VM 135(1)に提供する)。しかし、要求が、変更されたプロダクションデータ、及び共通のプロダクションデータの両方に対するものである場合、クライアントは、(要求を行うApp VMと関連する)書込み可能なオーバーレイから、変更されたプロダクションデータを供給し、そして、集約キャッシュから共通のプロダクションデータを供給する。550において、クライアントは、App VMがより多くのデータを要求しているか否かを決定する。555において、プロセスは、更なる要求を処理するためにクライアントを使用することによって終了する。
App VMが(例えば、プロダクションデータについて)一周以上の試験を実行するために使用された後に、AppVMは、プロダクションデータセットに有意な変更を作成してもよい。また、その間(1回り以上の試験がプロダクションデータセットについて実行されている間)に、プロダクション環境のコンピューティング環境が変化することがある(例えば、Apacheウェブサーバがいくつかの他の種類のウェブサーバと置換されることがある)。そのようなシナリオにおいて、(古い)App VMは、廃棄されてもよく(例えば、停止されてよく)、そして、App VMの新たなコピーが、試験を継続するためにプロビジョニングされてもよい。しかし、App VMが廃棄されるとき、App VMは、キャッシュされたプロダクションデータへのアクセスを失う場合があり、そして、新たにプロビジョニングされたApp VMが、ストレージシステムからプロダクションデータセットを再取り込みしなければならない。いくつかの例では、App VMが廃棄された後に、App VMが再始動してもよく、そして、プロダクションデータのより新たなバージョンを要求してもよい。プロダクションデータのこのより新たなバージョンは、ストレージシステムから自動的に取り込まれる。しかし、変更されないプロダクションデータは、依然としてキャッシュから直接的に供給されてもよい。
本明細書で開示されるような単一の集約キャッシュ(例えば、集約キャッシュ125)が、キャッシュされたプロダクションデータを保持することにより、プロダクションデータは、ストレージシステムから再取り込みされる必要がない。新たにプロビジョニングされたApp VMが必要とするプロダクションデータは、集約キャッシュから局所的に利用可能であり、そして、ストレージシステムから(例えば、価値あるネットワークリソースを消費することによって)取得される必要はない。そうすることは、時間及びネットワークリソースを節約しながら、高価なメモリリソースの使用を最適化する。
図6は、一実施形態に従う、集約キャッシュを更新するためのプロセスを示すフローチャートである。プロセスは、クライアント及び/又はアクセラレータVMが、App VMが閾値よりも大規模に変更されたプロダクションデータを有するか否か(例えば、プロダクションデータの20%超がApp VMによって実行された試験によって変更され及び/又は修正されたか否か)を決定するときに、605において開始する。そのような場合、610において、アクセラレータVMがApp VMを廃棄し、そして、615において、新たなApp VMを作成する。620において、クライアントは、プロダクションデータを供給することの新たなApp VMからの要求をインターセプトする。例えば、ファイルシステムクライアント130は、プロダクションデータを供給するために新たなApp VMからの要求をインターセプトするために使用されてもよく、そして、625において、アクセラレータVM 120に要求を送信する。630において、クライアントは、アクセラレータVM 120を使用して集約キャッシュ(例えば、SSD 305)にアクセスする。635において、クライアントは、アクセラレータVM 120が他のApp VMにプロダクションデータの同一のコピーを供給しているか否かを決定する。アクセラレータVM 120が他のApp VMにプロダクションデータの同一のコピーを供給していない場合、クライアントは、640において、集約キャッシュがプロダクションデータの最新のコピーによって更新されるのを待つ。
いくつかの実施形態では、App VMを廃棄するための閾値は、プロダクションデータの陳腐さに基づいている(例えば、プロダクションデータが陳腐化している程度に基づいており、その程度は、ストレージシステムのプロダクションデータのうちのどれ位がApp VMによって変更されたかを計算することによって決定され得る)。他の実施形態において、集約キャッシュの更新が、自動的に行われてもよい。プロダクションデータがキャッシュ内にない(又は、利用可能でない)場合、プロダクションデータは、(例えば、ストレージシステムから)オンデマンドで取り込まれ(又は、読み取られ)てもよく、そして、使用されないプロダクションデータは、キャッシュ(例えば、SSD 305)から自動的に排出され(又は削除され)てもよい。いくつかの例では、仮想アプライアンスが作成され、キャッシュがリセットされ、そして、プロダクションデータを供給することの要求がインターセプトされる。プロダクションデータがキャッシュで利用可能である場合、プロダクションデータはApp VMに供給される。利用可能でない場合、プロダクションデータは、ストレージシステムから取り込まれる。他の例において、App VMが廃棄されなければならないとき、そのApp VMがシャットダウンされ、そして、新たなApp VMが生み出されて、プロダクションデータのより新たなバージョンに向けられる。この例では、キャッシュは、App VMによって使用されているプロダクションデータを自動的に取り出し(又は、供給し)てもよく、そして、App VMによって使用されていないプロダクションデータを排除(又は、削除)してもよい。
特定の実施形態では、重複排除認識エンジン225は、プロダクション環境において更新及び/又は修正されていない大多数のプロダクションデータが、集約キャッシュからそのようなキャッシュされたプロダクションデータを要求するApp VMに局所的に供給され続け得ることを保証する。しかし、プロダクションデータが許容可能な閾値を越えて変化した場合(又は、新たなApp VMがプロダクション環境において変更及び/又は修正されたプロダクションデータの部分を要求する場合)、クライアントは、集約キャッシュがそのような変更及び/又は修正によって更新されるのを待つ。そのため、645において、クライアントは、集約キャッシュが更新されたか否かを決定する(プロセスは、キャッシュが更新されるまで待つ)。アクセラレータVM 120が、他のApp VMにプロダクションデータの同一のコピーを供給しているか、又は、集約キャッシュが更新され、次に新たなApp VMにプロダクションのコピーを供給するのを待っている場合に、プロセスは、650において、集約キャッシュから新たなApp VMにプロダクションデータのコピーを供給することによって終了する。
図7は、一実施形態に従う、集約キャッシュからプロダクションデータを提供するためのプロセスを示すフローチャートである。プロセスは、705において、アクセラレータVM(例えば、アクセラレータVM 120)が(例えば、ストレージ管理モジュール155経由で)プロダクション環境のストレージシステム(例えば、ストレージシステム160)にアクセスするときに始まる。710において、アクセラレータVMが(クライアントと共に)、生のプロダクションデータ(例えば、プロダクション環境で使用されているデータ)とキャッシュされたプロダクションデータ(例えば、アプリケーション開発及び試験環境で使用されているプロダクション環境からのデータのコピー)との間の差が許容可能か否か(例えば、生のプロダクションデータとキャッシュされたプロダクションデータとの間の差が特定の閾値を上回るか否か)を決定する。差が許容可能である(例えば、生のプロダクションデータとキャッシュされたプロダクションデータとの間の差が特定の閾値未満である)場合、プロセスは、755において、クライアントがアクセラレータVMに集約キャッシュからの(プロダクション)データを供給するように命令するときに終了する。
しかし、差が許容可能でない(例えば、生のプロダクションデータとキャッシュされたプロダクションデータとの間の差が特定の閾値を上回る)場合、クライアント(例えば、NFSクライアント315)は、715において、アクセラレータVM 120に信号を転送して、集約キャッシュ125からキャッシュされたプロダクションキャッシュをアプリケーション開発及び試験環境でのApp VMに供給するのを停止する。720において、クライアントは、アクセラレータVM 120に集約キャッシュ125をフラッシュするように命令する(例えば、生のプロダクションデータがキャッシュされたプロダクションデータと80%異なっている場合、キャッシュされたプロダクションデータを使用してApp VMによって実行されている試験は、役に立たない及び/又は不正確である可能性がある)。
725において、アクセラレータVMは、ストレージシステムからの新たなプロダクションデータセットを要求する。ストレージ管理モジュール155が、735において、ストレージシステムからアクセラレータVM 120に新たなプロダクションデータセットを転送した後に、730において、アクセラレータVMは、ストレージシステムから新たなプロダクションデータセットを受け取る。740において、アクセラレータVMは、集約キャッシュ125に新たなプロダクションデータセットをキャッシュする。745において、クライアント(例えば、NFSクライアント315)は、ストレージシステムから(例えば、1つ又は2つ以上のApp VMから)プロダクションデータを供給することの要求をインターセプトする。750において、クライアントは、アクセラレータVM 120に要求を転送する。プロセスは、755において、クライアントがアクセラレータVMに集約キャッシュからデータを供給するように命令するときに終了する。
他の例示的な実施形態
いうまでもなく、図1、図2、及び図3に示すような同一のコンピューティング環境にプロダクション環境(例えば、他のコンピューティングデバイスの中のストレージシステム160)並びにアプリケーション開発及び試験環境(例えば、仮想化サーバ105)を共有することは、有用である場合がある。例えば、企業は、しばしば、企業内でそれら自体のアプリケーション(例えば、人的資源アプリケーション)を開発する。アプリケーション開発及び試験プロセスの一部分として、企業は、開発及び/又は試験されているアプリケーションと関連するコード修正、コード強化、及びバグ修正等を常に試験する。
前述のタスクを実行するために、プロダクションデータを示しているデータセットを使用することは、非常に有利である場合があり、その理由は、プロダクションデータは現実のデータ(又は、生のデータ)(例えば、企業が営業活動を行うために毎日使用するデータ、顧客データ、従業員情報、トランザクションデータ、支払い情報等)であるからである。この例では、プロダクションデータは、プロダクション環境のストレージシステム(例えば、ストレージシステム160)(例えば、現在営業活動に使用されている企業の情報テクノロジー(IT)インフラストラクチャの一部分であるストレージシステム)に記憶されたプロダクションデータセットのバックアップコピーである。
その結果として、プロダクションデータ(又は、この場合でのようなプロダクションデータのバックアップコピー)を使用してアプリケーション開発及び試験を実行することは、企業が、(例えば、アプリケーションがプロダクション環境に実装される場合に)アプリケーションが現実のシナリオでどのように実行する(又は、実行することになる)かについて正確に及び効果的に決定することを可能にする。しかし、アプリケーションが、アプリケーション開発及び試験環境で開発及び試験されているので、プロダクション環境に対する破壊的な変更は、回避される。前述のように、プロダクションデータを修正することは、特にアプリケーション開発及び試験プロセスの変わりやすい性質を考えると、企業の日々の営業活動を混乱させる場合がある。
更に、また、上述のように、アプリケーション仮想マシンは、アプリケーション開発及び試験を実行するために使用されてもよい。仮想マシンのいくつかのコピーは、容易に生成され(例えば、作成され)得るので、いくつかのアプリケーション仮想マシンは、プロダクションデータセットの同一のバックアップコピーを試験し得る。例えば、1つのアプリケーションVMは、アプリケーションにおいてコード修正を実行してもよく、そして、それらのコード修正をプロダクションデータセットのバックアップコピーを使用して試験してもよい。他のアプリケーションVMは、アプリケーションにおいてコード強化を実行してもよく、そして、それらの強化をプロダクションデータセットのバックアップコピーを使用して試験してもよい。なお、更に他のアプリケーションVMは、アプリケーションに加えられたバグ修正をプロダクションデータセットのバックアップコピーを使用して試験してもよい。そのため、アプリケーションVMが様々なタスクを実行するけれども、それらは、プロダクションデータセットの同一の(バックアップの)コピーを使用する(又は、使用する傾向がある)。特定の実施形態では、プロダクションデータセットのこの同一の(バックアップの)コピーは、共通のプロダクションデータと呼ばれてもよい。いくつかの実施形態では、この共通のプロダクションデータは、アクセラレータVMによって集約キャッシュにキャッシュされるプロダクションデータセットの一部分であってもよい。
いくつかの実施形態では、そして、前述のように、それぞれの対応するApp VMがプロダクションデータに行う変更を記憶する書込み可能なオーバーレイは、シン・プロビジョニングされた仮想ディスクである。シン・プロビジョニングされた書込み可能なオーバーレイは、前もってデータのブロックを割り当てる従来の方法よりむしろ、オンデマンドベースでスペース(例えば、データのブロック)を割り当てることによって仮想化環境での利用可能なストレージの利用を最適化する。例えば、App VM 135(1)がプロダクションデータにおいて重大なコード強化を試験している場合、App VM 135(1)は、プロダクションデータに有意な変更を加える可能性があるであろう。この場合、書込み可能なオーバーレイ310(1)は、それに応じてそれらの変更に対応するのに十分なスペースでプロビジョニングされてもよい。
逆に、App VM 135(3)がプロダクションデータを使用してアプリケーションへの軽度のバグ修正を試験している場合、App VM 135(3)によるプロダクションデータへの変更が(もしあっても)軽度である可能性があるので、書込み可能なオーバーレイ310(3)は、小規模なスペースでプロビジョニングされてもよい。このように、書込み可能なオーバーレイは、アプリケーション開発及び試験環境においてそれらの対応する仮想マシンによって実行されているタスクのストレージ要件(例えば、タスクがプロダクションデータに有意な変更を加えることになる(又は、そうならない)可能性があるか否か)に基づいてストレージを効率的に共有するように構成されるシン・プロビジョニングされた仮想ディスクであってもよい。
特定の実施形態では、そして、前述のように、App VMからのプロダクションデータセットの要求は、クライアントによってインターセプトされる(そして、アクセラレータVMに転送される)。例えば、NFSクライアント315は、ストレージ管理モジュール155向けのApp VMによるファイルシステムコールをインターセプトしてもよい(例えば、ファイルシステムは、プロダクションデータの送信の要求のようなデータ操作のパフォーマンスを要求することをコールする)。インターセプトは、いずれのクライアント(又は、App VM)もストレージシステムでのプロダクションデータにアクセスすることを可能にするファイルディレクトリを共有する分散ファイルシステムプロトコル(例えば、Network File System)を使用して実行されてもよい。例えば、共用されたファイルディレクトリは、1つ又は2つ以上のデーモン(それらは、バックグラウンドプロセスとして動くコンピュータプログラムである)を使用してプロダクションデータを検索するためにアクセスされてもよい。
他の実施形態において、そして、前述したように、集約キャッシュは、App VMにプロダクションデータを供給するために使用される。一般的に、キャッシュ(例えば、SSD 305)で利用可能なストレージスペースは、いくつかのApp VM(又は、他のコンピューティングデバイス)の間で分割される。しかし、本明細書で開示される実施形態は、それぞれのApp VMにそれ自体の書込み可能なオーバーレイを提供することによりプロダクションデータへの変更を捕捉するので、また、それぞれのApp VMがアプリケーション開発及び試験のために共通のプロダクションデータを使用するので、単一の集約キャッシュ(例えば、集約キャッシュ125)が提供されてもよく、キャッシュのストレージは、様々なApp VMの間で分割されない(又は、それらに別個に割り当てられない)。むしろ、単一の集約キャッシュは、その全体が全てのApp VMによって等しく共有されることにより、共通のプロダクションデータの単一のコピーを記憶する。そのため、いうまでもなく、本明細書で開示された特定の実施形態は、アプリケーション開発及び試験環境にキャッシング関連の効率を提供し得る集約キャッシュを実装できる。
例示的なコンピューティング環境
図8は、一実施形態に従う、集約キャッシュがソフトウェアに実装され得る方法を示すコンピューティングシステムのブロック図である。コンピューティングシステム800は、コンピュータ可読命令を実行することが可能な任意のシングル若しくはマルチプロセッサコンピューティングデバイス又はシステムを広く表す。コンピューティングシステム800の例としては、ワークステーション、パーソナルコンピュータ、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、携帯用デバイス(例えば、パーソナル携帯情報機器、及び携帯電話)、ネットワークアプライアンス、ストレージ制御装置(例えば、配列制御装置、テープドライブ制御装置、又はハードディスク制御装置)等を含む任意の1つ又は2つ以上の様々なデバイスが挙げられるが、これらに限定されない。その最も基本的な構成において、コンピューティングシステム800は、少なくとも1つのプロセッサ110と、メモリ115と、を含んでもよい。仮想化サーバ105を実装するソフトウェアを実行することによって、コンピューティングシステム800は、アプリケーション開発及び試験環境で集約キャッシュからのデータアクセスを高速化するように構成されている専用コンピューティングデバイスになる。
プロセッサ110は、概して、データの処理、又は命令の解釈及び実行ができる任意のタイプ又は形式の処理装置を表す。特定の実施形態において、プロセッサ110は、ソフトウェアアプリケーション又はモジュールから命令を受信してもよい。これらの命令は、プロセッサ110に、本明細書に記載及び/又は例示する実施形態のうちの1つ又は2つ以上の機能を実施させてもよい。例えば、プロセッサ110は、本明細書に記載する動作の全部又は一部を実行してもよく、及び/又は実行するための手段であってもよい。プロセッサ110は、また、本明細書に記載又は例示する任意の他の動作、方法、及びプロセスを実行してもよく、及び/又は実行するための手段であってもよい。
メモリ115は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は不揮発性ストレージデバイス若しくは媒体を概して表す。例としては、限定することなく、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられる。必要でないけれども、特定の実施例では、コンピューティングシステム800は、揮発性メモリユニット及び不揮発性ストレージデバイスの両方を含んでもよい。一例では、集約キャッシュ及びアクセラレータ仮想マシンを実装するプログラム命令が、メモリ115にロードされてもよい。
特定の実施形態において、コンピューティングシステム800は、また、プロセッサ110及びメモリ115に加えて、1つ又は2つ以上の構成要素又は要素を含んでもよい。例えば、図8に示すように、コンピューティングシステム800は、メモリコントローラ820と、入力/出力(I/O)コントローラ835と、通信インターフェース845とを含んでもよく、これらのそれぞれは、通信インフラストラクチャ805を介して相互接続されてもよい。通信インフラストラクチャ805は、コンピューティングデバイスの1つ又は2つ以上の構成要素間の通信を容易にすることが可能な任意のタイプ又は形式のインフラストラクチャを概して表す。通信インフラストラクチャ805の例としては、限定することなく、通信バス(業界標準アーキテクチャ(ISA)、周辺構成要素相互接続(PCI)、PCIエクスプレス(PCIe)、又は類似のバス等)、及びネットワークが挙げられる。
メモリコントローラ820は、メモリ若しくはデータを取り扱うことが可能な、又はコンピューティングシステム800の1つ又は2つ以上の構成要素間の通信を制御することが可能な任意のタイプ又は形式のデバイスを概して表す。例えば、特定の実施形態では、メモリコントローラ820は、通信インフラストラクチャ805を介して、プロセッサ110、メモリ115、及びI/Oコントローラ835間の通信を制御してもよい。特定の実施形態では、メモリコントローラ820は、本明細書に記載又は例示する1つ又は2つ以上の動作又は機能を単独又は他の要素との組合せのいずれかで実行してもよく、及び/又は実行するための手段であってもよい。
I/Oコントローラ835は、コンピューティングデバイスの入出力機能を調整及び/又は制御することが可能な任意のタイプ又は形式のモジュールを概して表す。例えば、特定の実施形態では、I/Oコントローラ835は、プロセッサ110、メモリ115、通信インターフェース845、表示アダプタ815、入力インターフェース825、及びストレージインターフェース840等のコンピューティングシステム800の1つ又は2つ以上の要素間のデータの転送を制御してもよく、又はそれを容易にしてもよい。
通信インターフェース845は、コンピューティングシステム800と、1つ又は2つ以上の追加のデバイスとの間の通信を容易にすることが可能な任意のタイプ又は形式の通信デバイス又はアダプタを広く表す。例えば、特定の実施形態では、通信インターフェース845は、コンピューティングシステム800と追加のコンピューティングシステムを含む私的又は公的ネットワークとの間の通信を容易にしてもよい。通信インターフェース845の例としては、限定することなく、有線ネットワークインターフェース(ネットワークインターフェースカード等)、無線ネットワークインターフェース(無線ネットワークインターフェースカード等)、モデム、及び任意の他の好適なインターフェースが挙げられる。少なくとも1つの実施形態では、通信インターフェース845は、インターネット等のネットワークへの直接的なリンクを介して、遠隔サーバへの直接的な接続を提供してもよい。通信インターフェース845は、また、例えば、ローカルエリアネットワーク(イーサネット(登録商標)ネットワーク等)、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラ電話接続、衛星データ接続、又は任意の他の好適な接続を通じて、かかる接続を間接的に提供してもよい。
ある実施形態において、通信インターフェース845はまた、外部バス又は通信チャネルを介して、コンピューティングシステム800と、1つ若しくは2つ以上の追加のネットワーク又はストレージデバイスとの間の通信を容易にするように構成されるホストアダプタを表してもよい。ホストアダプタの例としては、限定することなく、スモールコンピュータシステムインターフェース(SCSI)ホストアダプタ、ユニバーサルシリアルバス(USB)ホストアダプタ、米国電気電子技術者協会(IEEE)1394ホストアダプタ、シリアルアドバンストテクノロジーアタッチメント(SATA)、シリアルアタッチトSCSI(SAS)、及びエクスターナルSATA(eSATA)ホストアダプタ、アドバンスドテクノロジーアタッチメント(ATA)、及びパラレルATA(PATA)ホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネット(登録商標)アダプター等が挙げられる。通信インターフェース845は、また、コンピューティングシステム800が分散又は遠隔コンピューティングに関与することを可能にしてもよい。例えば、通信インターフェース845は、実行のために、遠隔デバイスから命令を受信するか、又は遠隔デバイスに命令を送信してもよい。
図8に示すように、コンピューティングシステム800は、また、表示アダプタ815を介して、通信インフラストラクチャ805に連結される少なくとも1つの表示デバイス810を含んでもよい。表示デバイス810は、表示アダプタ815によって転送された情報を視覚的に表示することが可能な任意のタイプ又は形式のデバイスを概して表す。同様に、表示アダプタ815は、表示デバイス810上に表示するために、通信インフラストラクチャ805から(又は当該技術分野において既知のように、フレームバッファから)、グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形式のデバイスを概して表す。
図8に示すように、コンピューティングシステム800は、また、入力インターフェース825を介して通信インフラストラクチャ805に連結される少なくとも1つの入力デバイス830を含んでもよい。入力デバイス830は、コンピュータ又はヒトのいずれかによって生成された入力を、コンピューティングシステム800に提供することが可能な任意のタイプ又は形式の入力デバイスを概して表す。入力デバイス830の例としては、限定することなく、キーボード、ポインティングデバイス、音声認識デバイス、又は任意の他の入力デバイスが挙げられる。
図8に示すように、コンピューティングシステム800は、また、ストレージインターフェース840を介する通信インフラストラクチャ805へのストレージデバイス850を含んでもよい。ストレージデバイス850は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式のストレージデバイス又は媒体を概して表す。例えば、ストレージデバイス850は、磁気ディスクドライブ(例えば、いわゆるハードドライブ)、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブ等を含み得る。ストレージインターフェース840は、コンピューティングシステム800のストレージデバイス850と他の構成要素との間でデータを転送及び/又は送信するための任意のタイプ又は形式のインターフェース又はデバイスを概して表す。
特定の実施形態では、ストレージデバイス850は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能なストレージユニットから読み取るように、及び/又はそれに書き込むように構成されてもよい。好適な取り外し可能な記憶ユニットの例としては、限定することなく、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。ストレージデバイス850は、また、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム800にロードされることを可能にするための他の類似の構造又はデバイスを含んでもよい。例えば、ストレージデバイス850は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み取り、及び書き込むように構成されてもよい。ストレージデバイス850は、また、コンピューティングシステム800の一部であってもよく、又は他のインターフェースシステムによってアクセスされる別個のデバイスであってもよい。
多くの他のデバイス又はサブシステムが、コンピューティングシステム800に接続されてもよい。逆に、図8に示す構成要素及びデバイスの全てが、本明細書において説明及び/又は例示する実施形態を実践するために存在する必要があるわけではない。上記で述べたデバイス及びサブシステムは、また、図8に示すものとは異なる様式で相互接続されてもよい。
コンピューティングシステム800は、また、任意の数のソフトウェア、ファームウェア、及び/又はハードウェア構成を採用してもよい。例えば、本明細書において開示される実施形態のうちの1つ又は2つ以上は、コンピュータ可読ストレージ媒体上にコンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される)としてコード化され得る。コンピュータ可読ストレージ媒体の例としては、磁気記憶媒体(例えば、ハードディスクドライブ、及びフロッピーディスク)、光記憶メディア(例えば、CD−、又はDVD−ROM)、電子記憶媒体(例えば、ソリッドステートドライブ、及びフラッシュメディア)等が挙げられる。そのようなコンピュータプログラムは、また、インターネット等のネットワークを介してメモリに又はキャリア媒体に記憶するためにコンピューティングシステム800に転送されてもよい。
コンピュータプログラムを含むコンピュータ可読媒体は、コンピューティングシステム800にロードされてもよい。コンピュータ可読媒体上に記憶されたコンピュータプログラムの全部又は一部分は、次に、メモリ115及び/又はストレージデバイス850の種々の部分に記憶されてもよい。プロセッサ110によって実行されるとき、コンピューティングシステム800にロードされたコンピュータプログラムは、本明細書において説明及び/又は例示する実施形態のうちの1つ又は2つ以上の機能をプロセッサ110に実施させてもよく、及び/又はそれらを実施するための手段であってもよい。付加的に又は代替的に、本明細書に説明及び/又は例示される例示的な実施形態のうちの1つ又は2つ以上は、ファームウェア及び/又はハードウェアに実装され得る。例えば、コンピューティングシステム800は、本明細書において開示される実施形態のうちの1つ又は2つ以上を実装するように適合された特定用途向け集積回路(ASIC)として構成されてもよい。
例示的なネットワーキング環境
図9は、本開示の一実施形態に従う、様々なコンピューティングデバイスがネットワークを介して通信し得る態様を示す、ネットワーク化システムのブロック図である。特定の実施形態では、ネットワーク接続型ストレージ(NAS)デバイスは、ネットワークファイルシステム(NFS)、サーバメッセージブロック(SMB)、又はコモンインターネットファイルシステム(CIFS)等の様々なプロトコルを使用して仮想化サーバ105と通信するように構成されてもよい。
ネットワーク165は、複数のコンピューティングデバイスの間での通信を容易にすることができる任意のタイプ又は形式のコンピュータネットワーク又はアーキテクチャを概して表す。ネットワーク165は、仮想化サーバ105とストレージシステム160との間での通信を容易にしてもよい。特定の実施形態では、そして、図8のコンピューティングシステム800に関して、図8の通信インターフェース845等の通信インターフェースは、仮想化サーバ105とネットワーク165との間にコネクティビティを提供するために使用されてもよい。本明細書に記載及び/又は例示する実施形態は、インターネット又は任意の特定のネットワークベース環境に限定されないことに留意されたい。例えば、ネットワーク165は、ストレージエリアネットワーク(SAN)であってもよい。
少なくとも1つの実施形態において、本明細書で開示する実施形態のうちの1つ又は2つ以上の全部又は一部分は、コンピュータプログラムとしてコード化されてもよく、そして、仮想化サーバ105、アプリケーションVM 135(1)〜(N)、ファイルシステムクライアント130、及び/又はアクセラレータ仮想マシン120、あるいはこれらの任意の組み合わせにロードされて実行されてもよい。本明細書で開示する実施形態のうちの1つ又は2つ以上の全部又は一部分は、また、コンピュータプログラムとしてコード化されてもよく、そして、仮想化サーバ105、アプリケーションVM 135(1)〜(N)、ファイルシステムクライアント130、及び/又はアクセラレータ仮想マシン120に記憶されてもよく、並びにネットワーク165経由で分散されてもよい。
いくつかの例では、図1の仮想化サーバの全部又は一部分は、クラウドコンピューティング又はネットワークベース環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど)は、ウェブブラウザ又は他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
加えて、本明細書に記載の構成要素のうちの1つ又は2つ以上は、データ、物理的デバイス、及び/又は物理的デバイスの表現を、ある形態から他の形態に変換し得る。例えば、仮想化サーバ105、アプリケーションVM 135(1)〜(N)、ファイルシステムクライアント130、及び/又はアクセラレータ仮想マシン120は、コンピューティングデバイスの動作を変換することにより、アプリケーション開発及び試験環境において単一の集約キャッシュを使用してコンピューティングデバイスにデータアクセスを高速化させてもよい。
本開示がいくつかの実施形態と関連して説明されたけれども、本開示は、本明細書で述べた特定の形式に限定されるように意図されていない。逆に、添付の請求項によって規定されるような本開示の範囲内に合理的に含まれ得るような代替形態、修正形態、及び等価物を包含するように意図されている。

Claims (20)

  1. 方法であって、
    複数のアプリケーション仮想マシンのうち1つのアプリケーション仮想マシンからの要求をインターセプトすることであって、
    前記要求はプロダクションデータセットの一部分についてのものであり、
    前記プロダクションデータセットは生のプロダクションデータセットのコピーであり、
    前記生のプロダクションデータセットは、情報テクノロジーインフラストラクチャに含まれるストレージシステムに格納され、
    前記プロダクションデータセットは、ストレージシステムから受け取られており、
    前記プロダクションデータセットは、集約キャッシュにキャッシュされており
    前記プロダクションデータセットのデータは前記複数のアプリケーション仮想マシンに共通である、ことと、
    前記プロダクションデータセットの一部分を前記アプリケーション仮想マシンに供給することであって、
    前記集約キャッシュは、アクセラレータ仮想マシンによって実装され、
    前記プロダクションデータセットの前記一部分が共通のプロダクションデータであるとき、前記プロダクションデータセットの前記一部分は前記集約キャッシュから供給され、
    前記プロダクションデータセットの前記一部分が変更されたプロダクションデータであるとき、前記プロダクションデータセットの前記一部分は前記アプリケーション仮想マシンについての書き込み可能なオーバーレイから供給され、前記変更されたプロダクションデータは、前記アプリケーション仮想マシンによって変更されたプロダクションデータであることと、を含む、方法。
  2. 記要求は、前記ストレージシステム向けであり、
    前記プロダクションデータセットの受取り及びキャッシングは、前記アクセラレータ仮想マシンによって管理されている、請求項1に記載の方法。
  3. 前記プロダクションデータセットは、前記複数のアプリケーション仮想マシンによって必要とされる前記共通のプロダクションデータを備え、請求項1に記載の方法。
  4. 前記供給は、ファイルシステムクライアントへのアクセスを有する前記アクセラレータ仮想マシンによって実行され、
    前記アプリケーション仮想マシンからの前記プロダクションデータセットの要求は、前記ファイルシステムクライアントによってインターセプトされて
    前記ファイルシステムクライアントは前記プロダクションデータセットについての前記要求を前記アクセラレータ仮想マシンに転送する、請求項1に記載の方法。
  5. 前記複数のアプリケーション仮想マシン、前記アクセラレータ仮想マシン、前記集約キャッシュ、及び前記ファイルシステムクライアントは、ハイパーバイザによってサポートされている、請求項4に記載の方法。
  6. 前記複数のアプリケーション仮想マシンのうちのそれぞれは、1つ又は2つ以上のシン・プロビジョニングされた仮想ディスクを使用して、前記複数のアプリケーション仮想マシンのそれぞれにつき書き込み可能なオーバーレイを格納し
    前記1つ又は2つ以上のシン・プロビジョニングされた仮想ディスクのそれぞれは、差分仮想ディスクであり、
    前記1つ又は2つ以上のシン・プロビジョニングされた仮想ディスクのそれぞれは、複数のアプリケーション仮想マシンのうち対応するアプリケーション仮想マシンによって加えられた前記プロダクションデータセットへの変更を記憶する、請求項1に記載の方法。
  7. 前記ストレージシステムは、プロダクション環境に含まれ
    前記ストレージシステムを含む前記情報テクノロジーインフラストラクチャは、企業活動に現在使用されており、
    前記企業活動は前記プロダクション環境にて行われ、
    前記複数のアプリケーション仮想マシン、前記アクセラレータ仮想マシン、前記集約キャッシュ、及び前記ファイルシステムクライアントは、アプリケーション開発及び試験環境に含まれる、請求項4に記載の方法。
  8. システムであって、
    1つ又は2つ以上のプロセッサと、
    前記1つ又は2つ以上のプロセッサに結合されたメモリと、を備え、前記メモリは、前記1つ又は2つ以上のプロセッサによって実行可能なプログラム命令を記憶し、前記1つ又は2つ以上のプロセッサは、
    複数のアプリケーション仮想マシンのうち1つのアプリケーション仮想マシンからの要求をインターセプトすることであって、
    前記要求はプロダクションデータセットの一部分についてのものであり、
    前記プロダクションデータセットは生のプロダクションデータセットのコピーであり、
    前記生のプロダクションデータセットは、情報テクノロジーインフラストラクチャに含まれるストレージシステムに格納され、
    前記プロダクションデータセットは、ストレージシステムから受け取られており、
    前記プロダクションデータセットは、集約キャッシュにキャッシュされており
    前記プロダクションデータセットのデータは前記複数のアプリケーション仮想マシンに共通である、ことと、
    前記プロダクションデータセットの一部分を前記アプリケーション仮想マシンに供給することであって、
    前記集約キャッシュは、アクセラレータ仮想マシンによって実装され、
    前記プロダクションデータセットの前記一部分が共通のプロダクションデータであるとき、前記プロダクションデータセットの前記一部分は前記集約キャッシュから供給され、
    前記プロダクションデータセットの前記一部分が変更されたプロダクションデータであるとき、前記プロダクションデータセットの前記一部分は前記アプリケーション仮想マシンについての書き込み可能なオーバーレイから供給され、前記変更されたプロダクションデータは、前記アプリケーション仮想マシンによって変更されたプロダクションデータであることと、
    を実行する、システム。
  9. 前記要求は、前記ストレージシステム向けであり、
    前記プロダクションデータセットの受取り及びキャッシングは、前記アクセラレータ仮想マシンによって管理されている、請求項8に記載のシステム。
  10. 前記プロダクションデータセットは、前記複数のアプリケーション仮想マシンによって必要とされる前記共通のプロダクションデータを備える、請求項8に記載のシステム。
  11. 前記アプリケーション仮想マシンに前記プロダクションデータセットの前記一部分を供給することは、ファイルシステムクライアントへのアクセスを有する前記アクセラレータ仮想マシンによって実行され、
    前記アプリケーション仮想マシンからの前記プロダクションデータセットの要求は、前記ファイルシステムクライアントによってインターセプトされて、
    前記ファイルシステムクライアントは前記プロダクションデータセットについての前記要求を前記アクセラレータ仮想マシンに転送する、請求項8に記載のシステム。
  12. プログラム命令を備える非一過性コンピュータ可読ストレージ媒体であって、前記プログラム命令は、
    複数のアプリケーション仮想マシンのうち1つのアプリケーション仮想マシンからの要求をインターセプトすることであって、
    前記要求はプロダクションデータセットの一部分についてのものであり、
    前記プロダクションデータセットは生のプロダクションデータセットのコピーであり、
    前記生のプロダクションデータセットは、情報テクノロジーインフラストラクチャに含まれるストレージシステムに格納され、
    前記プロダクションデータセットは、ストレージシステムから受け取られており、
    前記プロダクションデータセットは、集約キャッシュにキャッシュされており
    前記プロダクションデータセットのデータは前記複数のアプリケーション仮想マシンに共通である、ことと、
    前記プロダクションデータセットの一部分を前記アプリケーション仮想マシンに供給することであって、
    前記集約キャッシュは、アクセラレータ仮想マシンによって実装され、
    前記プロダクションデータセットの前記一部分が共通のプロダクションデータであるとき、前記プロダクションデータセットの前記一部分は前記集約キャッシュから供給され、
    前記プロダクションデータセットの前記一部分が変更されたプロダクションデータであるとき、前記プロダクションデータセットの前記一部分は前記アプリケーション仮想マシンについての書き込み可能なオーバーレイから供給され、前記変更されたプロダクションデータは、前記アプリケーション仮想マシンによって変更されたプロダクションデータであることと、を実行させる非一過性コンピュータ可読ストレージ媒体
  13. 前記要求は、前記ストレージシステム向けであり、
    前記プロダクションデータセットの受取り及びキャッシングは、前記アクセラレータ仮想マシンによって管理されている、請求項12に記載の非一過性コンピュータ可読ストレージ媒体。
  14. 前記プロダクションデータセットは、前記複数のアプリケーション仮想マシンによって必要とされる前記共通のプロダクションデータを備える、請求項12に記載の非一過性コンピュータ可読ストレージ媒体。
  15. 前記供給は、ファイルシステムクライアントへのアクセスを有する前記アクセラレータ仮想マシンによって実行され、
    前記アプリケーション仮想マシンからの前記プロダクションデータセットの要求は、前記ファイルシステムクライアントによってインターセプトされて、
    前記ファイルシステムクライアントは前記プロダクションデータセットについての前記要求を前記アクセラレータ仮想マシンに転送する、請求項12に記載の非一過性コンピュータ可読ストレージ媒体。
  16. 請求項15に記載の非一過性コンピュータ可読ストレージ媒体において、
    前記複数のアプリケーション仮想マシンと前記アクセラレータ仮想マシンと前記集約キャッシュと前記ファイルシステムクライアントとは、ハイパーバイザによってサポートされる、非一過性コンピュータ可読ストレージ媒体。
  17. 請求項12に記載の非一過性コンピュータ可読ストレージ媒体において、
    前記複数のアプリケーション仮想マシンのうちのそれぞれは、1つ又は2つ以上のシン・プロビジョニングされた仮想ディスクを使用して、前記複数のアプリケーション仮想マシンのそれぞれにつき書き込み可能なオーバーレイを格納し、
    前記1つ又は2つ以上のシン・プロビジョニングされた仮想ディスクのそれぞれは、差分仮想ディスクであり、
    前記1つ又は2つ以上のシン・プロビジョニングされた仮想ディスクのそれぞれは、複数のアプリケーション仮想マシンのうち対応するアプリケーション仮想マシンによって加えられた前記プロダクションデータセットへの変更を記憶する、非一過性コンピュータ可読ストレージ媒体。
  18. 請求項15に記載の非一過性コンピュータ可読ストレージ媒体において、
    前記ストレージシステムは、プロダクション環境に含まれ、
    前記ストレージシステムを含む前記情報テクノロジーインフラストラクチャは、企業活動に現在使用されており、
    前記企業活動は前記プロダクション環境にて行われ、
    前記複数のアプリケーション仮想マシン、前記アクセラレータ仮想マシン、前記集約キャッシュ、及び前記ファイルシステムクライアントは、アプリケーション開発及び試験環境に含まれる、非一過性コンピュータ可読ストレージ媒体。
  19. 請求項11に記載のシステムにおいて、
    前記複数のアプリケーション仮想マシンと前記アクセラレータ仮想マシンと前記集約キャッシュと前記ファイルシステムクライアントとは、ハイパーバイザによってサポートされる、システム。
  20. 請求項8に記載のシステムにおいて、
    前記複数のアプリケーション仮想マシンのうちのそれぞれは、1つ又は2つ以上のシン・プロビジョニングされた仮想ディスクを使用して、前記複数のアプリケーション仮想マシンのそれぞれにつき書き込み可能なオーバーレイを格納し、
    前記1つ又は2つ以上のシン・プロビジョニングされた仮想ディスクのそれぞれは、差分仮想ディスクであり、
    前記1つ又は2つ以上のシン・プロビジョニングされた仮想ディスクのそれぞれは、複数のアプリケーション仮想マシンのうち対応するアプリケーション仮想マシンによって加えられた前記プロダクションデータセットへの変更を記憶する、システム。
JP2017568326A 2015-06-30 2016-06-30 データアクセスアクセラレータ Active JP6774971B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
IN2485MU2015 2015-06-30
IN2485/MUM/2015 2015-06-30
US14/838,669 US10474486B2 (en) 2015-06-30 2015-08-28 Data access accelerator
US14/838,669 2015-08-28
PCT/US2016/040367 WO2017004361A1 (en) 2015-06-30 2016-06-30 Data access accelerator

Publications (3)

Publication Number Publication Date
JP2018519608A JP2018519608A (ja) 2018-07-19
JP2018519608A5 JP2018519608A5 (ja) 2019-10-03
JP6774971B2 true JP6774971B2 (ja) 2020-10-28

Family

ID=57683803

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017568326A Active JP6774971B2 (ja) 2015-06-30 2016-06-30 データアクセスアクセラレータ

Country Status (4)

Country Link
US (1) US10474486B2 (ja)
EP (1) EP3317764B1 (ja)
JP (1) JP6774971B2 (ja)
CN (1) CN107924324B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10558480B2 (en) 2015-09-10 2020-02-11 Veritas Technologies Llc Optimizing access to production data
US10037276B1 (en) * 2015-11-04 2018-07-31 Veritas Technologies Llc Systems and methods for accelerating access to data by pre-warming the cache for virtual machines
US10462182B2 (en) * 2017-05-12 2019-10-29 Vmware, Inc. Thin agent-based SSL offloading
JP7110615B2 (ja) * 2018-02-22 2022-08-02 日本電気株式会社 情報処理装置、情報処理システム、情報処理方法、及び、プログラム
CN109491776B (zh) * 2018-11-06 2022-05-31 北京百度网讯科技有限公司 任务编排方法和系统
US11093625B2 (en) * 2019-05-09 2021-08-17 Vmware, Inc. Adaptive file access authorization using process access patterns

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0389151A3 (en) * 1989-03-22 1992-06-03 International Business Machines Corporation System and method for partitioned cache memory management
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US5940868A (en) * 1997-07-18 1999-08-17 Digital Equipment Corporation Large memory allocation method and apparatus
US7428636B1 (en) * 2001-04-26 2008-09-23 Vmware, Inc. Selective encryption system and method for I/O operations
US7240346B2 (en) * 2002-11-13 2007-07-03 Microsoft Corporation Method and system for accessing drawing resources
US7747660B1 (en) 2003-03-24 2010-06-29 Symantec Operating Corporation Method and system of providing access to a virtual storage device
US8365167B2 (en) * 2008-04-15 2013-01-29 International Business Machines Corporation Provisioning storage-optimized virtual machines within a virtual desktop environment
US8352240B2 (en) * 2008-06-20 2013-01-08 Vmware, Inc. Decoupling dynamic program analysis from execution across heterogeneous systems
US9575786B2 (en) * 2009-01-06 2017-02-21 Dell Products L.P. System and method for raw device mapping in traditional NAS subsystems
US8769206B2 (en) * 2009-01-20 2014-07-01 Oracle International Corporation Methods and systems for implementing transcendent page caching
US9043555B1 (en) * 2009-02-25 2015-05-26 Netapp, Inc. Single instance buffer cache method and system
JPWO2010097933A1 (ja) * 2009-02-27 2012-08-30 富士通株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
US8370835B2 (en) * 2009-03-12 2013-02-05 Arend Erich Dittmer Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device
US8195980B2 (en) * 2009-03-31 2012-06-05 Oracle America, Inc. Virtual machine snapshotting and damage containment
US8290911B1 (en) 2009-06-30 2012-10-16 Symantec Corporation System and method for implementing data deduplication-aware copying of data
US9092500B2 (en) 2009-09-03 2015-07-28 Commvault Systems, Inc. Utilizing snapshots for access to databases and other applications
US20110191522A1 (en) * 2010-02-02 2011-08-04 Condict Michael N Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory
US8234515B2 (en) * 2010-04-01 2012-07-31 Accenture Global Services Limited Repurposable recovery environment
US8677111B2 (en) * 2010-05-04 2014-03-18 Riverbed Technology, Inc. Booting devices using virtual storage arrays over wide-area networks
US9767274B2 (en) * 2011-11-22 2017-09-19 Bromium, Inc. Approaches for efficient physical to virtual disk conversion
US9239909B2 (en) * 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
US9201677B2 (en) * 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8874823B2 (en) * 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US20120317642A1 (en) * 2011-06-09 2012-12-13 Barracuda Networks, Inc. Parallel Tracing Apparatus For Malicious Websites
US8938425B1 (en) 2011-06-30 2015-01-20 Emc Corporation Managing logical views of storage
US20130111127A1 (en) 2011-10-28 2013-05-02 Hitachi, Ltd. Storage system and data processing method in storage system
US9069587B2 (en) * 2011-10-31 2015-06-30 Stec, Inc. System and method to cache hypervisor data
US9122535B2 (en) * 2011-11-22 2015-09-01 Netapp, Inc. Optimizing distributed data analytics for shared storage
US10359972B2 (en) * 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9116812B2 (en) * 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US9021087B1 (en) * 2012-01-27 2015-04-28 Google Inc. Method to improve caching accuracy by using snapshot technology
US10073656B2 (en) * 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
US8620962B1 (en) * 2012-02-21 2013-12-31 Netapp, Inc. Systems and methods for hierarchical reference counting via sibling trees
US20130311595A1 (en) * 2012-05-21 2013-11-21 Google Inc. Real-time contextual overlays for live streams
US9141529B2 (en) 2012-08-14 2015-09-22 OCZ Storage Solutions Inc. Methods and apparatus for providing acceleration of virtual machines in virtual environments
US9454487B2 (en) * 2012-08-27 2016-09-27 Vmware, Inc. Transparent host-side caching of virtual disks located on shared storage
US9280373B1 (en) * 2012-10-16 2016-03-08 IntelliCorp Inc. Data transfer guide
KR101471879B1 (ko) * 2012-10-31 2014-12-11 삼성에스디에스 주식회사 하이퍼바이저 기반 서버 이중화 시스템, 그 방법 및 서버 이중화 컴퓨터 프로그램이 기록된 기록매체
US8949531B2 (en) * 2012-12-04 2015-02-03 Vmware, Inc. Automated space management for server flash cache
US20140237471A1 (en) * 2013-02-21 2014-08-21 Barracuda Networks, Inc. Boot and Browse Apparatus Coupled to Backup Archive and Method of Operation
US9239682B2 (en) * 2013-02-27 2016-01-19 Vmware, Inc. I/O hint framework for Server Flash Cache
US9189410B2 (en) * 2013-05-17 2015-11-17 Vmware, Inc. Hypervisor-based flash cache space management in a multi-VM environment
US9292328B2 (en) * 2013-05-24 2016-03-22 Bromium, Inc. Management of supervisor mode execution protection (SMEP) by a hypervisor
US9183103B2 (en) * 2013-05-31 2015-11-10 Vmware, Inc. Lightweight remote replication of a local write-back cache
US9984089B2 (en) * 2013-06-28 2018-05-29 Vmware, Inc. Techniques for implementing hybrid flash/HDD-based virtual disk files
US9882984B2 (en) * 2013-08-02 2018-01-30 International Business Machines Corporation Cache migration management in a virtualized distributed computing system
US9342253B1 (en) * 2013-08-23 2016-05-17 Nutanix, Inc. Method and system for implementing performance tier de-duplication in a virtualization environment
US9183151B2 (en) * 2013-08-30 2015-11-10 Vmware, Inc. Thread cache allocation
US9594583B2 (en) * 2013-11-12 2017-03-14 Red Hat, Inc. Lightweight snapshots for virtual disks
US9507617B1 (en) * 2013-12-02 2016-11-29 Trend Micro Incorporated Inter-virtual machine communication using pseudo devices
US9495251B2 (en) * 2014-01-24 2016-11-15 Commvault Systems, Inc. Snapshot readiness checking and reporting
US20150363219A1 (en) * 2014-03-14 2015-12-17 Avni Networks Inc. Optimization to create a highly scalable virtual netork service/application using commodity hardware
US9697130B2 (en) * 2014-06-25 2017-07-04 Sandisk Technologies Llc Systems and methods for storage service automation
US9569124B2 (en) * 2014-11-04 2017-02-14 Rubrik, Inc. Deduplication of virtual machine content
US10558480B2 (en) * 2015-09-10 2020-02-11 Veritas Technologies Llc Optimizing access to production data
US10037276B1 (en) * 2015-11-04 2018-07-31 Veritas Technologies Llc Systems and methods for accelerating access to data by pre-warming the cache for virtual machines
US20170132027A1 (en) * 2015-11-09 2017-05-11 Symantec Corporation Systems and methods for coordinating data caching on virtual storage appliances
US9880744B1 (en) * 2015-12-22 2018-01-30 Veritas Technologies Llc Method for flash-friendly caching for CDM workloads
US9836402B1 (en) * 2016-07-22 2017-12-05 Red Hat, Inc. Guest ordering of host file system writes

Also Published As

Publication number Publication date
EP3317764A1 (en) 2018-05-09
EP3317764B1 (en) 2019-09-11
US20170003999A1 (en) 2017-01-05
US10474486B2 (en) 2019-11-12
JP2018519608A (ja) 2018-07-19
CN107924324A (zh) 2018-04-17
CN107924324B (zh) 2022-06-07

Similar Documents

Publication Publication Date Title
JP6774971B2 (ja) データアクセスアクセラレータ
TWI625674B (zh) 用於支援在主機上運行的多個虛擬機器的nvme控制器虛擬化的系統和方法
US10152246B1 (en) Application aware AMQP durable messages backup and restore
US8683156B2 (en) Format-preserving deduplication of data
US9015417B2 (en) Deduplication-aware page cache
US8966188B1 (en) RAM utilization in a virtual environment
US10705917B2 (en) Consolidated full backup of a restored virtual machine
US10474539B1 (en) Browsing federated backups
US11144339B2 (en) Optimizing access to production data
US10042719B1 (en) Optimizing application data backup in SMB
US10380074B1 (en) Systems and methods for efficient backup deduplication
US10635604B2 (en) Extending a cache of a storage system
US20210109822A1 (en) Systems and methods for backup and restore of container-based persistent volumes
US8612702B1 (en) Systems and methods for performing optimized backups of multiple volumes
US10467190B2 (en) Tracking access pattern of inodes and pre-fetching inodes
US9405709B1 (en) Systems and methods for performing copy-on-write operations
WO2017083313A1 (en) Systems and methods for coordinating data caching on virtual storage appliances
US11455114B1 (en) Consolidation and migration of cloud data
US10235293B2 (en) Tracking access pattern of inodes and pre-fetching inodes
US11429491B2 (en) Source-side accelerated indexing for data protection search
US11301156B2 (en) Virtual disk container and NVMe storage management system and method
US11726885B2 (en) Efficient method and system of intelligent deploying file level restore agent in multicloud
WO2017004361A1 (en) Data access accelerator
US11989159B2 (en) Hybrid snapshot of a global namespace
US20210096763A1 (en) Method, device, and computer program product for managing storage system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180125

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180529

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190820

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200811

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201005

R150 Certificate of patent or registration of utility model

Ref document number: 6774971

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250