JP6841818B2 - プロダクションデータへのアクセスの最適化 - Google Patents

プロダクションデータへのアクセスの最適化 Download PDF

Info

Publication number
JP6841818B2
JP6841818B2 JP2018512630A JP2018512630A JP6841818B2 JP 6841818 B2 JP6841818 B2 JP 6841818B2 JP 2018512630 A JP2018512630 A JP 2018512630A JP 2018512630 A JP2018512630 A JP 2018512630A JP 6841818 B2 JP6841818 B2 JP 6841818B2
Authority
JP
Japan
Prior art keywords
storage
virtual
production data
allocated
data files
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
JP2018512630A
Other languages
English (en)
Other versions
JP2018530817A (ja
JP2018530817A5 (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 ベリタス テクノロジーズ エルエルシー
Publication of JP2018530817A publication Critical patent/JP2018530817A/ja
Publication of JP2018530817A5 publication Critical patent/JP2018530817A5/ja
Application granted granted Critical
Publication of JP6841818B2 publication Critical patent/JP6841818B2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Description

本開示は、データストレージに関する。具体的には、本開示は、プロダクションデータへのアクセスの最適化に関する。
関連技術の説明
プロダクションデータは、事業目的のために企業及び/又は組織によって持続的に蓄積されて使用される情報である。プロダクションデータは、通常、アプリケーション及び開発及び試験を実施するために使用される。例えば、仮想マシンは、アプリケーションの開発及び試験環境に実装されてよく、そして、プロダクションデータを使用してアプリケーションの開発及び試験を実行するために使用されてよい。
アプリケーションの開発及び試験を実施するには、プロダクションデータのコピーが必要である。具体的には、アプリケーションの開発及び試験は(例えば、アプリケーションの開発及び試験の過程において)プロダクションデータを修正(又は変更)することがあるため、プロダクションデータの原本が改ざんされることなく、元のままに保つためにプロダクションデータのコピーが必要となる。しかしながら、プロダクションデータセットは、通常、極めてサイズが大きく、アプリケーションの開発及び試験環境では、大量のプロダクションデータのコピーを作成する(消費する)。
大量のプロダクションデータセットのコピーを作成するにはかなりの時間を要するが、この期間は、アプリケーションの開発及び試験環境で(例えば、かかるアプリケーションの開発及び試験を実施する仮想マシンで)このプロダクションデータを即座に利用することはできない。更に、このプロダクションデータのコピーに加えられた変更(又は修正)は、通常、非常に小さい、つまり最小限であるため、プロダクションデータのコピーの大部分は、変更されない及び/又は修正されないままであり、したがって、コピーによるプロダクションデータのプロビジョニングは冗長となる。
アプリケーションの開発及び試験環境においてプロダクションデータへのアクセスを最適化するための様々なシステム、方法、及びプロセスを開示する。かかる方法の1つは、入出力(I/O)動作が書き込み動作であると判定することに応じて、仮想データファイルの書き込み動作を実行することを含む。この例では、仮想データファイルは仮想ディスクに記憶され、仮想ディスクは仮想ストレージユニットの一部であり、仮想データファイルは(仮想ディスク上の)割り当てられた記憶域の一部である。
いくつかの実施形態では、I/O動作が読み取り動作であると判定することに応じて、方法は、読み取り動作を実行するべき仮想ストレージユニット上の記憶場所を判定し、以前の書き込み動作がこの記憶場所で実行されたかどうかを判定する。以前の書き込み動作がこの記憶場所で実行されたと判定することに応じて、方法は、仮想データファイルで読み取り動作を実行し、以前の書き込み動作がこの記憶場所で実行されなかったと判定することに応じて、方法は、割り当てられた記憶域で読み取り動作を実行する。
一実施形態では、方法は、ストレージシステムにおいてI/O動作を受信する。ストレージシステムは、プロダクションデータファイルと、仮想ストレージユニットと、を含む。この例では、仮想ストレージユニットは、仮想ディスクと、割り当てられた記憶域と、を含む。別の実施形態では、方法は、I/O動作が読み取り動作であるか、書き込み動作であるかを判定する。I/O動作は仮想化サーバ上で実行する仮想マシンによって生じ、ストレージシステムは、仮想化サーバに通信可能に接続されている。
いくつかの実施形態では、方法は、ストレージシステムにおいて仮想マシンから割り当てマップを受信する。この例では、割り当てマップは、割り当てられた記憶域に関する情報を含む。割り当てられた記憶域は仮想マシンによって割り当てられ、ストレージシステム上に記憶されたプロダクションデータファイルに対応する。
特定の実施形態では、方法は、割り当てマップ内の情報をプロダクションデータファイルに関連付けられた1つ以上のオフセットに変換することを含む。この例では、1つ以上のオフセットがストレージ構造から検索される。次いで、方法は、割り当てマップにストレージ構造をオーバーレイする。オーバーレイすることで、ストレージシステムは、仮想ストレージユニット上の割り当てられた記憶域に対して指示された仮想マシンからのI/O動作を、ストレージシステム上のプロダクションデータファイルに再マップできる。
他の実施形態では、方法は、仮想ストレージユニットの形成を求める、仮想化サーバからの要求を受信することと、受信内容に基づいて、ストレージシステム内に仮想ストレージユニットを形成することと、を含む。仮想ストレージユニットは、割り当てられた記憶域を割り当てるために仮想マシンによって使用される。
いくつかの実施形態では、方法は、ストレージシステムから仮想化サーバに仮想ディスクをインポートすることを含む。インポートは、クライアントによって実行される。この例では、クライアントは、ネットワークファイルシステムクライアントである。仮想ディスクは、仮想化サーバ上で実行するハイパーバイザにインポートされる。他の実施形態では、方法は、ハイパーバイザから仮想マシンに仮想ディスクをエクスポートすることを含み、エクスポートはハイパーバイザによって実行される。
一実施形態では、プロダクションデータファイルは、仮想マシンがアプリケーションの開発及び試験に必要とするプロダクションデータを含む。プロダクションデータは、1つ以上の生のプロダクションデータセットの一部である。別の実施形態では、ストレージシステム内の仮想ディスクはスパースファイルであり、仮想マシンはシンプロビジョニングされた仮想ディスクを用い、シンプロビジョニングされた仮想ディスクは、仮想マシンによって加えられたプロダクションデータファイルへの変更を記憶する。
特定の実施形態では、ストレージシステムはプロダクション環境の一部であり、仮想マシン及びクライアントはアプリケーションの開発及び試験環境の一部である。一実施形態では、再マップすることで、仮想マシンは、プロダクションデータファイルではなく、割り当てられた記憶域に対する読み取り動作を指示することによりプロダクションデータファイルにアクセスできる。
前述の内容は概要であり、したがって必然的に、簡略化、一般化、及び詳細の省略を含み、その結果として、当業者であれば、その概要が例示的であるにすぎず、なんら限定的ではないことがわかるであろう。請求項によってのみ規定されるような、本開示の他の態様、本発明の機能、及び利点は、下記に示す非限定的な詳細な説明において明瞭になるであろう。
本開示は、添付図面を参照することによってよりよく理解され得、そして、その多数の目的、機能、及び利点が当業者に明らかにされる。
本開示の一実施形態による、ストレージシステムに通信可能に接続されている仮想化サーバのブロック図である。
本開示の一実施形態による、アプリケーションの開発及び試験環境のブロック図である。
本開示の一実施形態による、プロダクションデータへのアクセスの提供に使用され得るデータアクセスモジュールのブロック図である。
本開示の一実施形態による、入出力(I/O)動作を再マップするためのプロセスを示すフローチャートである。
本開示の一実施形態による、プロダクションデータへのアクセスを提供するためのプロセスを示すフローチャートである。
本開示の一実施形態による、プロダクションデータからの読み取り動作を提供するためのプロセスを示すフローチャートである。
本開示の一実施形態による、新しいデータファイルを新しい割り当てにマップするためのプロセスを示すフローチャートである。
本開示の一実施形態による、ソフトウェアに実装され得るハイパーバイザを示すコンピューティングシステムのブロック図である。
本開示の一実施形態による、様々なコンピューティングデバイスがネットワークを介して通信し得る方法を示す、ネットワーク化システムのブロック図である。
本開示は、様々な修正及び代替的な形態が可能であるが、本開示の特定の実施形態は、図面及び詳細な説明において例として提供される。図面及び詳細な説明は、開示内容を開示された特定の形式に限定することを意図しないことを理解されたい。その代わりに、添付の請求項によって規定されるような本開示の趣旨及び範囲内にある全ての修正形態、等価物、及び代替形態を包含することが意図される。
序論
アプリケーションの開発及び試験環境は、現実の環境を模倣する状況でかかる開発及び試験を実行するために、好ましくは、(テストデータとは対照的な)プロダクションデータで動作する。しかしながら、かかるプロダクションデータセットは、極めて大量であり得る。かかるプロダクションデータは、開発され、試験されるアプリケーションを実行する1つ以上の仮想マシン(アプリケーション仮想マシンと呼ばれる)に時宜を得た方法でアクセスできる必要がある。アプリケーションの開発及び試験環境の性質を考慮すると、プロダクションデータのコピーは、複数回更新することが必要であり得る。したがって、かかるデータの最初のプロビジョニング並びに以降の更新には、プロダクションデータの複数のコピーを作成し、プロダクション環境から(例えば、ストレージアプライアンス内のストレージスタックから)アプリケーションの開発及び試験環境に転送することが必要になり得る。
プロダクションデータがアプリケーションの開発及び試験の対象となるとき、通常、これらは大幅に変更(修正)されない。実際、アプリケーションの開発及び試験中に使用されたプロダクションデータのコピーの相当部分は、そのままであるという予測もある。例えば、アプリケーションの開発及び試験に必要なプロダクションデータが1テラバイト(TB)である場合、かかる開発及び試験のために1TBのプロダクションデータセットのコピーを最初に作成する必要がある。その後、アプリケーションの開発及び試験プロセスがプロダクションデータのコピーの更新を要求する場合、別の1TBのプロダクションデータセットのコピーを作成する必要がある。しかしながら、通常、アプリケーションの開発及び試験プロセスは、1TBのプロダクションデータセットのコピーのわずかな比率(例えば、5%)のみを変更(又は修正)する。1TBのプロダクションデータセットのコピーの残りの95%は、そのままである(例えば、変更されない)。
したがって、プロダクションデータをコピーすることによりプロダクションデータをアプリケーションの開発及び試験環境にプロビジョニングすることは、少なくとも2つの問題をもたらす。第1に、アプリケーションの開発及び試験環境へのプロダクションデータの最初のプロビジョニングは、時宜を得た方法で実現できない。これは、大量のプロダクションデータセットのコピーの作成にかなりの時間を費やすためである。第2に、アプリケーションの開発及び試験を続行するために更新したプロダクションデータのコピーが必要となるたびに、大量のプロダクションデータセットの別のコピーを作成して更にかなりの時間が浪費される。また、プロダクションデータの既存のコピーの大部分がそのままであるため、プロダクションデータのコピーを何度も作成することは冗長である。
本明細書では、アプリケーションの開発及び試験環境においてプロダクションデータへのアクセスを最適化する方法、システム、及びプロセスを開示する。
例示的なアプリケーション開発及び試験環境
アプリケーションの開発及び試験は、プロダクション(つまり生の)データファイル(例えば、営利主体によって現在使用されている実際の顧客データベース)を表す1つ以上のプロダクションデータファイルのコピーで実行される。かかる開発及び試験により、アプリケーションが適切に、かつ現実のシナリオで期待されるように実行するようになる。(プロダクションデータ及び/又はプロダクション環境を表す)プロダクションデータファイルのコピー(又は、カバースナップショット)は、アプリケーションの開発及び試験に使用され得る。本明細書に記載のアプリケーションの開発及び試験環境は、生のデータを使用することが好ましいが、その使用によりこれらのデータを変更することは許されない状況の単なる例である。本明細書に示す構成と異なる構成を有する環境もまた想定される。
そのような開発及び試験を実行するために、縮小された仮想マシンがしばしば使用される。例えば、企業がプロダクション環境においてウェブサーバソフトウェアを使用している場合、かかるウェブサーバソフトウェアをも動かす縮小された仮想マシンを使用することが好ましい(例えば、プロダクション環境が1000の顧客をサポートする場合、アプリケーション開発及び試験環境における縮小された仮想マシンは、10の顧客のみをサポートしてよい)。このように、プロダクション環境(プロダクションデータの精度の所定の重要性は所与とする)は、影響を受けない。
図1は、一実施形態に従う、仮想化サーバを実装するコンピューティングシステムのブロック図である。仮想化サーバ105は、プロセッサ110と、メモリ115と、を含むコンピューティングデバイスである。仮想化サーバ105は、サーバ、デスクトップ、ラップトップ、タブレット等を含む任意のタイプのコンピューティングデバイスであってもよい。
メモリ115は、仮想化環境を実装することにより、アプリケーション開発及び試験を実行する。メモリ115は、仮想マシン125と、ファイルシステムクライアント130及び仮想ディスク135を実装するハイパーバイザ120と、を含む(仮想ディスク135は点線で示して、仮想ディスク135が別個の仮想ディスクではないが、本明細書に記載するように、割り当てのためにストレージシステムからインポートされる仮想ディスク150と称する)。
上述のように、メモリ115はまた、ハイパーバイザ120及びオペレーティングシステム140を実装する。図1に示すように、ハイパーバイザ120は、ソフトウェアを使用して実装され得る。しかしながら、ハイパーバイザ120はまた、ネイティブ、つまりベアメタルハイパーバイザであり得る。加えて、他の実施形態は、仮想化サーバごとに異なる数の仮想マシンを実装してよく、そして、仮想化サーバは、同一の仮想化サーバ内の他のコンピューティングデバイスと同一の又はそれと異なる数の仮想マシンをそれぞれ実装する付加的なコンピューティングデバイスを含んでよい。
図1はまた、ストレージシステム170を示す。ストレージシステム160は、ストレージアプライアンスであってよく、及び/又はハードドライブ、コンパクトディスク、デジタル多目的ディスク、ソリッドステートドライブ、フラッシュメモリ等のメモリ、又はアレイ等を含む1つ以上の様々な異なるストレージデバイスを含んでよい。データアクセスモジュール165は、ネットワーク180を介してストレージシステム170と仮想化サーバ105との間のインターフェースを提供してよい。ネットワーク180の代わりに及び/又はそれに加えて、任意の他の適切なネットワーク又は相互接続が使用され得ることに留意されたい。
データアクセスモジュール165に加えて、ストレージシステム170はまた、仮想ストレージユニット145を含む。仮想ストレージユニット145は仮想ディスク150を実装する。仮想ストレージユニット145は、スタンドアローンの仮想ディスクとして機能できる、又は1つ以上の仮想ディスクを実装できる。仮想ディスク150は割り当てられた記憶域155を含む。ストレージシステム170はまた、プロダクションデータファイル160を含む。この例では、ストレージシステム170は、プロダクションデータファイル160への1つ以上のアプリケーションアクセスを提供することによりプロダクション環境を実装する。
図2は、一実施形態による、アプリケーションの開発及び試験環境のブロック図である。図1と同様に、図2はまた、2つの仮想マシン(仮想マシン125(1)及び125(2))を実装する仮想化サーバ105を含む。仮想マシン125(2)は、書き込み可能オーバーレイ205に接続されている。仮想マシン125(1)及び125(2)の両方は、ネットワークファイルシステム(NFS)クライアント210を実装するハイパーバイザ120に接続されている。NFSクライアント210は、ファイルシステムクライアント(例えば、図1に示すクライアント130等)の一種である。
一実施形態では、書き込み可能オーバーレイ205は、仮想マシン125(2)によって加えられたプロダクションデータファイルへの変更を記憶する、シンプロビジョニングされた仮想ディスク上で提供されるコンテンツログを含む。例えば、オーバーレイファイル205は、仮想マシン125(2)によって加えられたプロダクションデータセットへの変更を記憶するシンプロビジョニングされた仮想ディスク(例えば、差分仮想ディスク)上で提供される。NFSクライアント210はオーバーレイファイルにアクセスして、(例えば、コンテンツログを使用して)仮想マシンのオーバーレイファイルから仮想マシンに提供され得るデータブロックを識別できる。他の例では、NFSクライアントは書き込み可能オーバーレイ(例えば、仮想マシン125(1))にアクセスしない。ハイパーバイザが、要求されたプロダクションデータファイルは書き込み可能オーバーレイにあると判定する場合、ハイパーバイザは、書き込み可能オーバーレイからプロダクションデータを提供する。ハイパーバイザが、要求されたプロダクションデータは書き込み可能オーバーレイにはないと判定する場合、ハイパーバイザは、NFSクライアントと通信して、ストレージシステムからプロダクションデータファイルを取り込む。
図2はまた、iSCSIイニシエータ220を実装する物理ホスト215を示す。物理ホスト215は、サーバ、デスクトップ、ラップトップ、タブレット等を含む任意のタイプのコンピューティングデバイスであってよく、iSCSIイニシエータ220は、物理ホスト215が、ネットワーク180、又は他のタイプのネットワーク及び/若しくは相互接続を通じてストレージシステム170に接続できるようにする。仮想化サーバ105及び物理ホスト215のそれぞれは、単独で使用して、又は併用して、アプリケーションの開発及び試験を実行できる。したがって、仮想化サーバ105(仮想マシン125(1)及び125(2)を含む)及び物理ホスト215は、アプリケーションの開発及び試験環境と総称され得る。
図2に示すように、ストレージシステム170は、アプリケーションの開発及び試験環境とプロダクション環境(例えば、ストレージシステム170)との間のインターフェースを提供する、データアクセスモジュール165を含む。データアクセスモジュール165は、マッピングモジュール235を含む。加えて、ストレージシステム170は、iSCSIターゲット225と、仮想ストレージユニット145と、を含む。仮想ストレージユニットは仮想ディスク150を実装する。仮想ディスク150は、仮想データファイル175を更に記憶する、割り当てられた記憶域155を含む。ストレージシステム170はまた、図1及び2に示すように、プロダクションデータ157内にプロダクションデータファイル160を含む。上述のように、仮想ストレージユニットは、仮想ディスクであり得る、又は1つ以上の仮想ディスクを実装し得る。
一実施形態では、図2のシステムを使用して、プロダクションデータファイル160へのアクセスを提供できる。例えば、データアクセスモジュール165は、仮想マシン125(1)若しくは125(2)又は物理ホスト215によって生じた入出力(I/O)動作が書き込み動作(又は単に書き込み)であるかどうかを判定する。I/O動作が書き込みの場合、データアクセスモジュール165は仮想データファイル175への書き込みを実行する。仮想データファイル175は、仮想ストレージユニット145の一部である仮想ディスク150(例えば、ベース仮想ディスクとも称せられる)に記憶されることに留意されたい。仮想データファイル175は、仮想ディスク150上の割り当てられた記憶域155の一部である。この例では、割り当てられた記憶域155は、データアクセスモジュール165によって仮想ディスク150上で割り当てられ得る。
別の実施形態では、データアクセスモジュール165は、(仮想化サーバ105又は物理ホスト215から受信した)I/O動作が読み取り動作(又は単に読み取り)であるかどうかを判定する。I/O動作が読み取りである場合、データアクセスモジュール165は、読み取りが実行されるべき仮想ストレージユニット145上の記憶場所を判定する。データアクセスモジュール165はまた、以前の書き込み動作がその記憶場所で実行されたかどうかを判定する。以前の書き込み動作がその記憶場所で実行された場合、データアクセスモジュール165は、仮想データファイル175で読み取りを実行する。しかしながら、以前の書き込み動作がその記憶場所で実行されなかった場合、データアクセスモジュール165は、割り当てられた記憶域155で読み取りを実行する。
プロダクションデータへのアクセスの最適化の例
図3は、一実施形態による、プロダクションデータへのアクセスの提供に使用され得るデータアクセスモジュールのブロック図である。図1及び2と同様に、図3は、アプリケーションの開発及び試験環境として実装される仮想化サーバ105並びにプロダクション環境として実装されるストレージシステム170を示す。仮想化サーバ105は、仮想マシン125と、ハイパーバイザ120と、を含む。ハイパーバイザ120はNFSクライアント210を更に実装し、仮想ディスク135は、前述したようにシンプロビジョニングされる。NFSクライアント210は、仮想マシン125によって生じたI/O動作(例えば、読み取り及び/又は書き込み)とストレージシステム170との間のインターフェース機構を提供する。
ハイパーバイザ120は、仮想データファイル、仮想マシンの仕様、テンプレート等(例えば、図1及び3に示すように仮想ディスク135)を記憶できるデータストアを実装する。ハイパーバイザは、仮想マシン125上で実行する(又は動く)オペレーティングシステム140のためのSmall Computer System Interface(SCSI)ブロックデバイスとして、仮想データファイルを仮想マシンに結合できる。データストアは、ファイルシステム(例えば、ハイパーバイザ自体の私有ファイルシステム、又はNFSファイルシステム)によって補助されてよい。データストアがNFSファイルシステムによって補助される場合、ハイパーバイザ120上のNFSクライアント120を使用して、NFSサーバによって提供されるNFSファイルシステムを実装できる。NFSサーバは、他のホストデバイス(例えば、仮想デバイス、又は物理デバイス)上で動くことができる。データストア(例えば、仮想ディスク135)から提供される、仮想ディスク150へのI/O動作は、補助ファイルシステム(例えば、上述のようにNFSファイルシステム)を調べる。
ハイパーバイザの私有ファイルシステムがその代わりに使用されるとき、I/O動作は、私有ファイルシステムを調べることができ、そして、私有ファイルシステムは、次に、I/O動作が仮想データファイル175の適切な領域まで進行するのを可能にする前に、シンプロビジョニングされた仮想ディスク(例えば、仮想ディスク135)のためにストレージをプロビジョニングすること(必要に応じて)等の活動を実行できる。NFSデータストアでは、I/O動作はNFSクライアント210によってインターセプトされ、NFSサーバにリダイレクトされる。
いくつかの実施形態では、データアクセスモジュール165は、マッピングモジュール235を使用して、ストレージシステム170にて仮想マシン125から割り当てマップを受信する。割り当てマップは、割り当てられた記憶域155に関する情報を含む。上述のように、割り当てられた記憶域155は、仮想マシン125からの割り当て要求に基づいて、仮想ディスク150上のデータアクセスモジュール165によって割り当てられ得る。この例では、割り当てられた記憶域155の仮想データファイル175は、ストレージシステム170に記憶されたプロダクションデータファイル160に対応する(そして、これにマップされる)。
マッピングモジュール235は、仮想ストレージユニット145に実装された仮想ディスク150上の仮想データファイル175のプロダクションデータファイル160へのマッピングを実行する。マッピングモジュール235が仮想マシン125から割り当てマップを受信すると、マッピングモジュール235は、プロダクションデータファイル160に関連付けられた1つ以上のオフセットに割り当てマップ内の情報を変換する。マッピングモジュール235は、プロダクションデータファイル160のストレージ構造にアクセスすることにより、プロダクションデータファイル160に関連付けられた1つ以上のオフセットを検索できる。
一実施形態では、マッピングモジュール235は、仮想マシン125から受信した割り当てマップにプロダクションデータファイル160のストレージ構造をオーバーレイする。この例では、オーバーレイすることで、データアクセスモジュール165は、割り当てられた記憶域155上の仮想データファイル175に対して指示された仮想マシン125からの1つ以上のI/O動作を、ストレージシステム170上で別個に記憶されているプロダクションデータファイル160に再マップできる。このようにして、データアクセスモジュール165は、プロダクションデータファイルをコピーすることをコピーを要せずに、アプリケーションの開発及び試験のための仮想マシン125によるプロダクションデータファイル160へのアクセスを最適化できる。
いくつかの実施形態では、データアクセスモジュール165は、仮想マシン125(又は仮想化サーバ105上の他のかかる仮想コンピューティングデバイス)からの要求を受信して、仮想ストレージユニット145を作成する。データアクセスモジュール165は、かかる要求に基づいて、ストレージシステム170内で仮想ストレージユニット145を作成する。仮想ストレージユニット145は、仮想マシン125によって使用されて、割り当てられた記憶域155を割り当てることができる。例えば、プロダクションデータファイル160の合計サイズが10ギガバイト(10GB)の場合、データアクセスモジュール166は、仮想ディスク(例えば、仮想ディスク150)を作成することにより仮想ストレージユニットを作成し、この(ベース)仮想ディスク上の記憶域を割り当てられた記憶域(例えば、割り当てられた記憶域155)として割り当てることができる。
しかしながら、データアクセスモジュール165によって(例えば、適切な仮想マシンディスク(VMDK)形式で)作成された仮想ディスク(例えば、仮想ディスク150)はスパースファイルであることに留意されたい。スパースファイルは、ファイル自体がほぼ空である場合に、ファイルシステム上の領域をより効率的に使用するために作成され得るタイプのファイルである。したがって、データアクセスモジュール165がプロダクションデータファイル160に基づいて仮想ストレージユニット145内の記憶域を割り当てても、割り当て(例えば、割り当てられた記憶域155)は、実際には10GBの記憶域(例えば、プロダクションデータファイルの実際のサイズ)を消費しない。割り当ての結果として仮想ストレージユニット145上で消費される唯一の記憶域は、(例えば、オフセットに関連するメタデータを記憶するため等の)ごく少量の記憶域である。
前述のように、マッピングモジュール235は、仮想マシン125から受信した割り当てマップにプロダクションデータファイル160のストレージ構造をオーバーレイする。割り当てマップは、例えば、NFSクライアント210を使用して、ストレージシステム170から仮想化サーバ105に仮想ディスク150をインポートすることで、仮想マシン125によって作成される。例えば、仮想ディスク150(例えば、割り当てられたスパースファイル)が、仮想化サーバ105上で実行するハイパーバイザ120にインポートされる。次いで、ハイパーバイザ120はこの仮想ディスクを仮想マシン125にエクスポートする。
例えば、いくつかの実施形態では、仮想ディスク150は、ストレージユニット170上でスパースファイルとして作成される(例えば、スパースファイルは単なる割り当てである)。ハイパーバイザ120内のNFSクライアント210は、この仮想ディスク150をエクスポートするように指示される。こうすることにより、NFSクライアント210及び仮想マシン125は、どちらも仮想ディスク150にアクセスできる。上述のように、NFSクライアント210は、割り当てられたスパースファイル(例えば、仮想ディスク150)を別の仮想ディスクとして(例えば、仮想ディスク135として)仮想マシン125にエクスポートする。
このようにして、仮想マシン125は、割り当てられた記憶域155内で仮想データファイル175を割り当てることができる。次いで、データアクセスモジュール165は、仮想化サーバ105からストレージシステム170にこれらの割り当てをもう一度取り込み、仮想ディスク150上に位置付けられたこれらの割り当て(例えば、仮想マシン125によって指定される)の位置を更に翻訳する。次いで、マッピングモジュール235は、仮想ディスク150のこれらの区域(又は割り当て)を、ストレージシステム170上のプロダクションデータファイル160に再マップできる。前述のプロセスにより、仮想マシン125がアプリケーションの開発及び試験のためにプロダクションデータファイル160をただちに利用できる。これは、再マップすることで、プロダクションデータファイル160ではなく、割り当てられた記憶域155に対する読み取りを指示することにより、仮想マシン125が、プロダクションデータファイル160にアクセスできるためである。
一実施形態では、前述したように些細なものであり得る、仮想マシン125によって実行されたプロダクションデータファイル160に対する変更が、仮想ストレージユニット145上の仮想データファイル175に書き込まれる。別の実施形態では、仮想マシンによって実行されたプロダクションデータファイル160に対する変更は、図2に示すように書き込み可能オーバーレイ(例えば、シンプロビジョニングされた仮想ディスクとして実装される)によってキャプチャされ得る。
プロダクションデータへのアクセスを最適化する例示的なプロセス
図4は、一実施形態による、I/O動作を再マップするためのプロセスを示すフローチャートである。このプロセスは、410において仮想ストレージユニット(例えば、仮想ストレージユニット145)の作成を求める要求を(例えば、仮想マシン125(1)又は125(2)から)受信することにより開始する。420において、プロセスは、ストレージシステム内に仮想ストレージユニットを作成する(例えば、データアクセスモジュール165は、ストレージシステム170内に仮想ストレージユニット145を作成する)。
前述したように、仮想マシン125(1)若しくは125(2)、又は物理ホスト215は、プロダクションデータファイルに基づいて、仮想ストレージユニット上の記憶域を割り当てることができる。仮想ストレージユニット上の記憶域の割り当ては、仮想ディスク150のファイルシステムのメタデータ構造を変更するだけであり、I/O動作は、記憶域の割り当ての結果としては実際に実行されないことに留意されたい。
430において、プロセスは、仮想化サーバから(例えば、NFSクライアント210から)割り当てマップを受信する。この時点において、データアクセスモジュール165は、仮想マシンによって作成された割り当てを判定し、これらの割り当てを仮想ディスク150のオフセットに翻訳する。データファイルの割り当ては、通常、ファイルシステム内で連続的ではないことに留意されたい。したがって、データアクセスモジュール165は、仮想ディスク150上の仮想データファイルのオフセットに割り当てられたブロックの1つずつを翻訳する。
440において、プロセスは、プロダクションデータファイルのデータストレージ構造にアクセスする。450において、プロセスは、(例えば、割り当てマップと(プロダクションデータファイルの)データストレージ構造との間で1つ以上のエクステントを共有することにより)割り当てマップ及びデータストレージ構造をオーバーレイする。460において、プロセスは、仮想マシンからのI/O動作を割り当てられた記憶域に再マップすることへと進む。このようにして、割り当てられた記憶域が読み取り要求を受信すると、マッピングモジュール235は、プロダクションデータファイルの1つ以上の実際のデータファイルに読み取り要求を再マップし、要求されたデータをプロダクションデータファイルから仮想マシンに提供する。したがって、プロダクションデータファイルのコピーの作成は不要になる。次いで、プロセスは終了する。
図5は、一実施形態による、プロダクションデータへのアクセスを最適化するためのプロセスを示すフローチャートである。このプロセスは、510においてI/O動作を受信すること(例えば、データアクセスモジュール165において)により開始する。520において、プロセスは、I/O動作が読み取りか、書き込みかを判定する。I/O動作が書き込みである場合、プロセスは、530において、仮想データファイル(例えば、仮想データファイル175)での書き込みを実行する。しかしながら、I/O動作が読み取りである場合、プロセスは、540において、以前の書き込みが、読み取りの(記憶)場所(例えば、仮想データファイル上)に対して実行されたかどうかを判定して、読み取りが、変更及び/又は修正されたデータを要求しているかどうかを判定する)。
以前の書き込みが読み取りの記憶場所に対して実行された場合、プロセスは、560において、仮想データ(例えば、仮想データファイル)での読み取りを実行する。しかしながら、以前の書き込みが読み取りの記憶場所に対して実行されなかった場合、プロセスは、560において、プロダクションデータでの読み取りを実行する(例えば、データアクセスモジュール165は、プロダクションデータファイル160の実際のコンテンツにアクセスして、図5のフローチャートで示すように、翻訳の結果としての読み取り及び割り当ての再マップを提供できる)。プロセスは、570において、更なるI/O動作が存在するかどうかを判定することにより終了する。
図6は、一実施形態による、プロダクションデータからの読み取り動作を提供するためのプロセスを示すフローチャートである。このプロセスは、610において、仮想マシンから割り当てマップを取得(又は受信)することにより開始する。仮想マシン125は仮想ストレージユニット上の割り当てられた記憶域を割り当てることができるため、仮想マシン125は、割り当てマップの形式で割り当てに関する情報(例えば、1つ以上の仮想データファイルが作成される仮想ディスクファイルシステムのディレクトリ、1つ以上の仮想データファイルのサイズ等)を保持できる。前述したように、割り当てられた記憶域内の仮想データファイルにI/O動作がまだ書き込まれていないため、かかる割り当ては、ファイルシステム(ストレージシステムではない)の空き領域のみを減少させる。
620において、プロセスは、割り当てられた記憶域のオフセットに割り当てを翻訳する。例えば、データアクセスモジュール165は、NFSクライアント210から、割り当てられた記憶域で仮想マシンによって割り当てられた1つ以上の仮想データファイルに関する情報を含む割り当てマップ(ブロック割り当てマップとも称される)を受信する。ブロック割り当てマップの受信後、マッピングモジュール235は、仮想マシンから受信した(及び割り当てマップに含まれる)仮想データファイルの割り当てを、ストレージシステム上の割り当てられた記憶域内の仮想データファイルのオフセットに翻訳する。
630において、プロセスは、プロダクションデータファイルのデータストレージ構造を取得する(又は受信する)。プロダクションデータファイルのデータストレージ構造は、別のブロック割り当てマップの形式又はプロダクションデータファイルのオフセットを明らかにする他の形式で受信され得る。この時点において、プロセスは、マッピングモジュール235経由で、2つのブロックマップへのアクセスを有する。第1ブロックマップは、仮想マシンから受信した割り当てマップである。第2ブロックマップは、ストレージシステム内に存在するプロダクションデータファイルのデータストレージ構造である。640において、プロセスは、(仮想マシンから受信した)割り当てマップ及びデータストレージ構造(例えば、ストレージシステムに記憶される第2ブロックマップ)をオーバーレイする。
例えば、割り当てマップは、仮想マシンに関連付けられた仮想ディスク(例えば、仮想ディスク135)内の仮想データファイルのオフセット並びに仮想データファイルの長さを明らかにすることができる。オーバーレイ時には、(例えば、仮想マシンによる)仮想ディスクファイルシステム内の仮想データファイルのこの割り当てを使用して、仮想データファイルが実際に開始する(及び終了する)オフセット、並びにストレージシステム内の仮想ディスク上の(例えば、図3に示す仮想ストレージユニット145上の仮想ディスク150の割り当てられた記憶域155内の)仮想データファイルのサイズを判定できる。
650において、プロセスは、割り当てられた記憶域内の(仮想データファイルの)オフセットを、プロダクションデータ157内のプロダクションデータファイルの実際のデータのオフセットに再マップする。このようにして、図6のプロセスは、プロダクションデータファイルをコピーせずに1つ以上の仮想マシンにプロダクションデータファイルを提供できる。その結果として、660において、プロセスは、仮想ディスクから(例えば、割り当てられた記憶域155内の仮想データファイル175から)書き込み(及び修正された書き込みに対する読み取り)を提供する。しかしながら、アプリケーションの開発及び試験中、プロダクションデータの大部分は、通常変更されないままであるため、プロセスは、670において、プロダクションデータ157から(例えば、プロダクションデータファイル160から)読み取りを提供することにより終了する。
図7は、一実施形態による、同一のプロダクションデータのコピーで、又は新しいプロダクションデータのコピー(例えば、より新しいバージョン)でアプリケーションの開発及び試験を実施するためのプロセスを示すフローチャートである。一実施形態では、この(プロダクション)データ更新プロセスは、仮想マシン125に接続されている同一の仮想ディスク(例えば、図1に示す仮想ディスク135)を使用して実現し得る。プロセスは、710において、(例えば、データアクセスモジュール165を使用して仮想マシン125から)既存の仮想データファイルの割り当てを取り込むことにより開始する。720において、プロセスは、ストレージシステム170上(例えば、仮想ディスク150上)の(既存の)仮想データファイルからの領域を再利用する。730において、プロセスは、(仮想マシン125上の)これらの(既存の)仮想データファイルを削除する。
740において、プロセスは、(例えば、ファイルシステムクライアント130及び仮想ディスク135を使用して)仮想マシン125上の新しい仮想データファイルに領域を割り当てる。750において、プロセスは、仮想マシン125からこれらの(新しい)仮想データファイルへの割り当てを取り込む。プロセスは、760において、ストレージシステム170上で新しい仮想データファイルをこれらの割り当てにマップすることにより終了する。
データエクステントを共有するための方法の例
一実施形態では、マッパーメソッドを使用して、仮想ディスクファイルシステムとホストファイルシステムとの間でデータエクステントを共有できる。この例では、(例えば、マッピングモジュール235に実装された)マッパーによって、仮想データファイルセットに応じて仮想データファイルを指定できる。マッパーは、アプリケーションとファイルシステムとの間のI/Oパスに実装されるソフトウェアコンポーネントである。マッパーは、他のファイルのブロックからなるものとしてファイルのビューを作成する。例示のマッピング仕様には、[File1];FileA,0,0,10;FileB,0,10,20;and FileC,50,30,10が挙げられる。マッパーは、仮想データファイルのセットに応じて仮想データファイルのこの仕様を使用して、複合ファイル(例えば、tarファイル)からホストファイルシステムの名前区間内の個々のファイルを識別できる。マッパーはまた、仮想データファイルコンテンツの仕様を、複数のプロダクションデータファイルにまたがる集合体にすることができる。マッパーを使用して、プロダクションデータファイルの識別に使用される仮想ディスクの領域を指定できる。したがって、仮想ディスクに対してI/O動作が実行される場合、データアクセスモジュール165はI/O動作をインターセプトし、プロダクションデータファイルからデータを提供することができる。
例えば、マッパーは、上記の仕様を以下のように読み取ることができる。(1)「File1」という名前のファイルを作成する。File1のコンテンツは、FileA、FileB、及びFileCにまたがる。3つの数字のうちの最初の数字(例えば、FileA、FileB、及びFileCにおいてそれぞれ0、0、及び50)は、指定されたファイル内のオフセットとして読む。2番目の数字(例えば、FileA、FileB、及びFileCにおいてそれぞれ0、10、及び30)は、File1内のオフセットであり、3つの数字のうちの3番目の数字(例えば、FileA、FileB、及びFileCにおいてそれぞれ10、20、及び10)は、そのファイルのコンテンツの長さである。例えば、FileAのオフセット0において始まる10ブロックを使用して、オフセット0におけるFile1のコンテンツを形成する(又は割り当てる)。同様に、FileBのオフセット0において始まる20ブロックを使用して、オフセット10におけるFile1のコンテンツを形成する。同様に、FileCのオフセット50において始まる10ブロックを使用して、オフセット30におけるFile1のコンテンツを形成する。
したがって、いくつかの実施形態では、File1がオフセット0において読み取られる場合、マッパーは、10ブロックついてFileAからFile1のコンテンツを提供し、次の20ブロックについてはFileB、最後の10ブロックについてはFileCから提供する。例えば、アプリケーションがオフセット5においてFile1の10ブロックを読み取る場合、マッパーは、FileAから最初の5ブロック、FileBから次の5ブロックを提供する。
別の実施形態では、ネイティブファイルシステムメソッドを使用して、仮想ディスクファイルシステムとホストファイルシステムとの間でデータエクステントを共有できる。ネイティブファイルシステムメソッドによって、プロダクションデータファイルが仮想データファイルで利用可能になり、プロダクションデータファイル及び仮想データファイルの両方が、別のホストに対してファイルシステムとして(例えば、入れ子のファイルシステムとして)動作できる。
入れ子のファイルシステムは、ファイルシステム内のファイルが、それ自体で完全なファイルシステムを形成するデータを含むファイルシステムである。例えば、仮想データファイル175は、ゲストオペレーティングシステム(例えば、オペレーティングシステム140)に見えて使用可能である、完全なファイルシステムをホストできる。ホストファイルシステム(例えば、ハイパーバイザ120に、又はこれによって実装されるファイルシステム)の場合、仮想データファイルは単にファイルである。一実施形態では、仮想ディスクによってホストされるファイルシステムのビューを作成できる。この例では、ファイルシステムコンテンツは、仮想ディスク内のファイルシステムコンテンツをコピーするのではなく、別のファイルから提供され得る。コンテンツは、例えば、上述したマッパーメソッドを使用して仮想的に利用可能になり得る。
マッパーメソッド及びネイティブファイルシステムメソッドの上記の例に関して、1つ以上の実施形態では、ストレージシステムはファイルシステムを含み、ストレージシステム上の仮想ディスクはまた、別個のファイルシステムを含む。ストレージシステムのファイルシステムはホストファイルシステムであり、仮想ディスクのファイルシステムは仮想ディスクファイルシステムである。これらの例では、仮想ディスクファイルシステムは仮想マシンの仮想データファイルを管理し、ホストファイルシステムは、ストレージシステムに記憶されたプロダクションデータファイルを管理する。
例示的なコンピューティング環境
図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つ以上の構成要素間の通信を容易にすることが可能な任意のタイプ又は形式のインフラストラクチャを概して表す。通信インフラストラクチャ805の例としては、限定することなく、通信バス(業界標準アーキテクチャ(ISA)、周辺構成要素相互接続(PCI)、PCIエクスプレス(PCIe)、又は類似のバス等)、及びネットワークが挙げられる。
メモリコントローラ820は、メモリ若しくはデータを取り扱うことが可能な、又はコンピューティングシステム800の1つ以上の構成要素の間の通信を制御することが可能な任意のタイプ又は形式のデバイスを概して表す。例えば、特定の実施形態では、メモリコントローラ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つ以上の他のデバイスとの間の通信を容易にすることが可能な任意のタイプ又は形式の通信デバイス又はアダプタを広く表す。通信インターフェース845は、コンピューティングシステム800と追加のコンピューティングシステムを含むプライベート又はパブリックネットワークとの間の通信を容易にしてよい。通信インターフェース845の例としては、有線ネットワークインターフェース(ネットワークインターフェースカード等)、無線ネットワークインターフェース(無線ネットワークインターフェースカード等)、モデム、及び任意の他の好適なインターフェースが挙げられるが、これらに限定されない。通信インターフェース845は、インターネット等ネットワークへの直接リンクを介してリモートサーバへの直接接続を提供してよく、また、例えば、ローカルエリアネットワーク(例えば、イーサネット(登録商標)ネットワーク)、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、携帯電話接続、衛星データ接続、又は任意の他の好適な接続を通じて、かかる接続を間接的に提供してよい。
通信インターフェース845はまた、外部バス又は通信チャネルを介して、コンピューティングシステム800と、1つ以上の追加のネットワーク又はストレージデバイスとの間の通信を容易にするように構成されたホストアダプタを表してよい。ホストアダプタの例としては、スモールコンピュータシステムインターフェース(SCSI)ホストアダプタ、ユニバーサルシリアルバス(USB)ホストアダプタ、米国電気電子技術者協会(IEEE)1394ホストアダプタ、シリアルアドバンストテクノロジーアタッチメント(SATA)、シリアルアタッチトSCSI(SAS)、及びエクスターナルSATA(eSATA)ホストアダプタ、アドバンスドテクノロジーアタッチメント(ATA)、及びパラレルATA(PATA)ホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネット(登録商標)アダプター等が挙げられるが、これらに限定されない。通信インターフェース845はまた、コンピューティングシステム800が、(例えば、実行するためにリモートデバイスに対して命令を送受信することにより)分散又はリモートコンピューティングに関与できるようにしてよい。
図8に示すように、コンピューティングシステム800はまた、表示アダプタ815を介して、通信インフラストラクチャ805に接続されている少なくとも1つの表示デバイス810を含んでよい。表示デバイス810は、表示アダプタ815によって転送された情報を視覚的に表示することが可能な任意のタイプ又は形式のデバイスを概して表す。同様に、表示アダプタ815は、表示デバイス810上に表示するために、通信インフラストラクチャ805から(又は当該技術分野において既知のように、フレームバッファから)グラフィック、テキスト、及び他のデータを転送するように構成されている任意のタイプ又は形式のデバイスを概して表す。コンピューティングシステム800はまた、入力インターフェース825を介して通信インフラストラクチャ805に接続されている、少なくとも1つの入力デバイス830を含んでよい。入力デバイス830は、コンピュータ又はヒトのいずれかによって生成された入力を、コンピューティングシステム800に提供することが可能な任意のタイプ又は形式の入力デバイスを概して表す。入力デバイス830の例としては、キーボード、ポインティングデバイス、音声認識デバイス、又は任意の他の入力デバイスが挙げられる。
コンピューティングシステム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)等の様々なプロトコルを使用して仮想化サーバ310と通信するように構成されてよい。
ネットワーク180は、複数のコンピューティングデバイス間での通信を容易にすることができる任意のタイプ又は形式のコンピュータネットワーク又はアーキテクチャを概して表す。ネットワーク180は、仮想化サーバ105とストレージシステム170との間での通信を容易にしてよい。特定の実施形態では、そして、図8のコンピューティングシステム800に関して、図8の通信インターフェース845等の通信インターフェースは、仮想化サーバ105とネットワーク180との間にコネクティビティを提供するために使用されてよい。本明細書に記載及び/又は例示する実施形態は、インターネット又は任意の特定のネットワークベース環境に限定されないことに留意されたい。例えば、ネットワーク180は、ストレージエリアネットワーク(SAN)であってよい。
少なくとも1つの実施形態では、本明細書で開示する実施形態のうちの1つ以上の全体又は一部は、コンピュータプログラムとしてコード化されてよく、そして、仮想化サーバ105、仮想マシン125、及びハイパーバイザ120、又はこれらの任意の組み合わせにロードされて実行されてよい。本明細書で開示する実施形態のうちの1つ以上の全体又は一部は、また、コンピュータプログラムとしてコード化されてもよく、そして、仮想化サーバ105、仮想マシン125、及び/又はハイパーバイザ120に記憶されてよく、並びにネットワーク180上に分散されてよい。
いくつかの例では、図1、2、及び3の仮想化サーバの全体又は一部は、クラウドコンピューティング又はネットワークベース環境の一部を表してよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど)は、ウェブブラウザ又は他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
加えて、本明細書に記載の構成要素のうちの1つ又は2つ以上は、データ、物理的デバイス、及び/又は物理的デバイスの表現を、ある形態から他の形態に変換し得る。例えば、ストレージシステム170、仮想化サーバ105、仮想マシン125、及び/又はハイパーバイザ120は、ストレージシステム及び/又は仮想化サーバに、アプリケーションの開発及び試験環境におけるプロダクションデータへのアクセスを最適化させるために、ストレージシステム及び/又は仮想化サーバの挙動を変換してよい。
本開示がいくつかの実施形態と関連して説明されたけれども、本開示は、本明細書で述べた特定の形式に限定されるように意図されていない。逆に、添付の請求項によって規定されるような本開示の範囲内に合理的に含まれ得るような代替形態、修正形態、及び等価物を包含するように意図されている。

Claims (20)

  1. ストレージシステムにより実行される方法であって、
    前記ストレージシステムにおいて入出力(I/O)動作を受信することであって、
    前記I/O動作は、第1アプリケーションから受信されることと、
    前記I/O動作は、割り当てられた記憶域に記憶されている仮想データファイルに対して指示されることと、
    前記割り当てられた記憶域は、前記ストレージシステム内の仮想ストレージユニット内の仮想ディスク内に割り当てられていることと、
    前記ストレージシステムは、1つ以上のプロダクションデータファイルを含むプロダクションデータが記憶された1つ以上のストレージデバイスと、前記仮想ストレージユニットとを含むことと、
    前記1つ以上のプロダクションデータファイルは、第2アプリケーションによる現在の使用のために構成されていることと、
    前記1つ以上のプロダクションデータファイル及び前記仮想ストレージユニットは、前記ストレージシステム内で互いに別々に記憶されることと、
    前記I/O動作が読み取り動作であるか、書き込み動作であるかを判定し、前記I/O動作が前記書き込み動作であるとの判定に応じて、前記仮想データファイルで前記書き込み動作を実行することと、
    前記I/O動作が前記読み取り動作であるとの判定に応じて、
    前記読み取り動作が実行されるべき、前記仮想ストレージユニット上の記憶場所を判定することと、
    以前の書き込み動作が前記記憶場所で実行されたかどうかを判定することと、
    前記以前の書き込み動作が前記記憶場所で実行されたとの判定に応じて、前記記憶場所に対応する前記仮想データファイル内の位置で前記読み取り動作を実行することと、
    前記以前の書き込み動作が前記記憶場所で実行されなかったとの判定に応じて、前記読み取り動作を前記記憶場所の前記割り当てられた記憶域で実行することとであって、
    前記割り当てられた記憶域で前記読み取り動作を行うことは、
    前記記憶場所に対応する、1つ以上のプロダクションデータファイル内の場所からデータを提供することを含み、
    前記データは、前記割り当てられた記憶域の前記読み取り動作に応答し、
    少なくとも前記記憶場所に関して、前記割り当てられた記憶域が前記プロダクションデータにマップされることで前記提供が容易になることと、を含む、方法。
  2. 前記仮想ディスク上に前記割り当てられた記憶域を割り当てることであって
    記第1アプリケーションは、アプリケーション開発及び試験環境で実行されるアプリケーションであり
    記第2アプリケーションは、プロダクション環境で実行されるアプリケーションであり、
    前記1つ以上のプロダクションデータファイルは、前記第2アプリケーションを実行する物理的コンピューティングデバイスからアクセス可能であり
    記I/O動作が仮想化サーバにより実行される仮想マシンによって生じ、
    前記物理的コンピューティングデバイス及び前記仮想化サーバは、互いに別々であり、
    前記仮想化サーバ及び前記ストレージシステムが、互いに通信可能に接続されている、ことと、
    前記1つ以上のプロダクションデータファイルのうちの1つからの前記割り当てられた記憶域の読み取り動作を提供することと、を含む請求項1に記載の方法。
  3. 記仮想マシンから割り当てマップを受信することであって、
    前記割り当てマップが前記割り当てられた記憶域に関する情報を含み、
    前記割り当てられた記憶域が前記仮想マシンによって割り当てられ、
    前記割り当てられた記憶域が、少なくとも部分的に、少なくとも1つの前記1つ以上のプロダクションデータファイルに対応する、ことと、
    前記割り当てマップ内の情報を前記1つ以上のプロダクションデータファイルに関連付けられている1つ以上のオフセットに変換することであって、
    前記1つ以上のオフセットが前記1つ以上のプロダクションデータファイルのストレージ構造に基づく、ことと、
    前記ストレージ構造を前記割り当てマップにオーバーレイすることであって
    前記オーバーレイすることは、前記ストレージシステムが、前記割り当てられた記憶域からの前記I/O動作を、前記1つ以上のプロダクションデータファイルに再マップすることを可能にすることで、前記提供を容易にする、ことと、を更に含む、請求項2に記載の方法。
  4. 前記仮想ストレージユニットを作成することを求める、前記仮想化サーバからの要求を受信することと、
    前記受信することに基づいて、
    前記ストレージシステム内に前記仮想ストレージユニットを作成することであって、
    前記仮想ストレージユニットが、前記割り当てられた記憶域を割り当てるために前記仮想マシンによって使用され、
    前記仮想ストレージユニット上の前記仮想ディスクがスパースファイルとして作成される、ことと、を更に含む、請求項2に記載の方法。
  5. 前記ストレージシステムから前記仮想化サーバに前記仮想ディスクをインポートすることであって、
    前記インポートすることがクライアントによって実行され、
    前記クライアントがネットワークファイルシステム(NFS)クライアントであり、
    前記仮想ディスクが前記仮想化サーバにより実行されるハイパーバイザにインポートされる、ことと、
    前記ハイパーバイザから前記仮想マシンに前記仮想ディスクをエクスポートすることであって、
    前記エクスポートすることが前記ハイパーバイザによって実行される、ことと、を更に含む、請求項2に記載の方法。
  6. 記プロダクションデータが1つ以上の生のプロダクションデータセットの一部である、請求項2に記載の方法。
  7. 前記ストレージシステム内の前記仮想ディスクがスパースファイルであり、
    前記仮想マシンがシンプロビジョニングされた仮想ディスクを用い、
    前記シンプロビジョニングされた仮想ディスクが、前記仮想マシンによって加えられた前記1つ以上のプロダクションデータファイルに対する変更を記憶する、請求項2に記載の方法。
  8. 前記ストレージシステムは、前記プロダクション環境の部分であり、
    前記仮想マシン及び前記クライアントが前記アプリケーションの開発及び試験環境の一部である、請求項5に記載の方法。
  9. 前記オーバーレイすることはさらに、前記仮想マシンが、前記1つ以上のプロダクションデータファイルではなく、前記割り当てられた記憶域に対する前記読み取り動作を指示することにより前記1つ以上のプロダクションデータファイルにアクセスすることを可能にすることで、前記提供を容易にする、請求項3に記載の方法。
  10. プログラム命令を備える非一過性コンピュータ可読ストレージ媒体であって、前記プログラム命令が、
    ストレージシステムにおいて入出力(I/O)動作を受信することであって、
    前記I/O動作は、第1アプリケーションから受信されることと、
    前記I/O動作は、割り当てられた記憶域に記憶されている仮想データファイルに対して指示されることと、
    前記割り当てられた記憶域は、前記ストレージシステム内の仮想ストレージユニット内の仮想ディスク内に割り当てられていることと、
    前記ストレージシステムは、1つ以上のプロダクションデータファイルを含むプロダクションデータが記憶された1つ以上のストレージデバイスと、前記仮想ストレージユニットとを含むことと、
    前記1つ以上のプロダクションデータファイルは、第2アプリケーションによる現在の使用のために構成されていることと、
    前記1つ以上のプロダクションデータファイル及び前記仮想ストレージユニットは、前記ストレージシステム内で互いに別々に記憶されることと、
    前記I/O動作が読み取り動作であるか、書き込み動作であるかを判定し、前記I/O動作が前記書き込み動作であるとの判定に応じて、前記仮想データファイルで前記書き込み動作を実行することと、
    前記I/O動作が前記読み取り動作であるとの判定に応じて、
    前記読み取り動作が実行されるべき、前記仮想ストレージユニット上の記憶場所を判定することと、
    以前の書き込み動作が前記記憶場所で実行されたかどうかを判定することと、
    前記以前の書き込み動作が前記記憶場所で実行されたとの判定に応じて、前記記憶場所に対応する前記仮想データファイル内の位置で前記読み取り動作を実行することと、
    前記以前の書き込み動作が前記記憶場所で実行されなかったとの判定に応じて、前記読み取り動作を前記記憶場所の前記割り当てられた記憶域で実行することであって、
    前記割り当てられた記憶域で前記読み取り動作を行うことは、
    前記記憶場所に対応する、1つ以上のプロダクションデータファイル内の場所からデータを提供することを含み、
    前記データは、前記割り当てられた記憶域の前記読み取り動作に応答し、
    少なくとも前記記憶場所に関して、前記割り当てられた記憶域が前記プロダクションデータにマップされることで前記提供が容易になることと、を実行可能である、非一過性コンピュータ可読ストレージ媒体。
  11. 前記プログラム命令は、
    前記仮想ディスク上に前記割り当てられた記憶域を割り当てることであって
    記第1アプリケーションは、アプリケーション開発及び試験環境で実行されるアプリケーションであり
    記第2アプリケーションは、プロダクション環境で実行されるアプリケーションであり、
    前記1つ以上のプロダクションデータファイルは、前記第2アプリケーションを実行する物理的コンピューティングデバイスからアクセス可能であり
    記I/O動作が仮想化サーバにより実行される仮想マシンによって生じ、
    前記物理的コンピューティングデバイス及び前記仮想化サーバは、互いに別々であり、
    前記仮想化サーバ及び前記ストレージシステムが、互いに通信可能に接続されている、ことと、
    前記1つ以上のプロダクションデータファイルのうちの1つからの前記割り当てられた記憶域の読み取り動作を提供することと、
    を更に実行可能である、請求項10に記載の非一過性コンピュータ可読ストレージ媒体。
  12. 前記プログラム命令は、
    前記ストレージシステムにおいて前記仮想マシンから割り当てマップを受信することであって、
    前記割り当てマップが前記割り当てられた記憶域に関する情報を含み、
    前記割り当てられた記憶域が前記仮想マシンによって割り当てられ、
    前記割り当てられた記憶域が、少なくとも部分的に、少なくとも1つの前記1つ以上のプロダクションデータファイルに対応する、ことと、
    前記割り当てマップ内の情報を前記1つ以上のプロダクションデータファイルに関連付けられている1つ以上のオフセットに変換することであって、
    前記1つ以上のオフセットがストレージ構造から検索される、ことと、
    前記ストレージ構造を前記割り当てマップにオーバーレイすることであって
    前記割り当てマップに前記ストレージ構造をオーバーレイすることは、前記ストレージシステムが、前記割り当てられた記憶域からの前記I/O動作を、前記1つ以上のプロダクションデータファイルに再マップすることを可能にすることで、前記1つ以上のプロダクションデータファイルのうちの1つからの前記割り当てられた記憶域の読み取り動作を容易にする、ことと、を更に実行可能である、請求項11に記載の非一過性コンピュータ可読ストレージ媒体。
  13. 前記プログラム命令は、
    前記仮想ストレージユニットを作成することを求める、前記仮想化サーバからの要求を受信することと、
    前記要求の受信に基づいて、
    前記ストレージシステム内に前記仮想ストレージユニットを作成することであって、
    前記仮想ストレージユニットが、前記割り当てられた記憶域を割り当てるために前記仮想マシンによって使用され、
    前記仮想ストレージユニット上の前記仮想ディスクがスパースファイルとして作成される、ことと、
    前記ストレージシステムから前記仮想化サーバに前記仮想ディスクをインポートすることであって、
    インポートするために更に実行可能な前記プログラム命令は、クライアントによって実行され、
    前記クライアントがネットワークファイルシステム(NFS)クライアントであり、
    前記仮想ディスクが前記仮想化サーバにより実行されるハイパーバイザにインポートされる、ことと、
    前記ハイパーバイザから前記仮想マシンに前記仮想ディスクをエクスポートすることであって、
    エクスポートするために更に実行可能な前記プログラム命令は、前記ハイパーバイザによって実行される、ことと、を更に実行可能である、請求項11に記載の非一過性コンピュータ可読ストレージ媒体。
  14. 記プロダクションデータが1つ以上の生のプロダクションデータセットの一部であり、
    前記ストレージシステム内の前記仮想ディスクがスパースファイルであり、
    前記仮想マシンがシンプロビジョニングされた仮想ディスクを用い、
    前記シンプロビジョニングされた仮想ディスクが、前記仮想マシンによって加えられた前記1つ以上のプロダクションデータファイルに対する変更を記憶し、
    再マップされる前記I/O動作は、前記仮想マシンが、前記プロダクションデータファイルではなく、前記割り当てられた記憶域に対する前記読み取り動作を指示することにより前記プロダクションデータファイルにアクセスすることを可能にする、請求項12に記載の非一過性コンピュータ可読ストレージ媒体。
  15. システムであって、
    1つ又は2つ以上のプロセッサと、
    前記1つ又は2つ以上のプロセッサに結合されたメモリと、を備え、前記メモリは、前記1つ又は2つ以上のプロセッサによって実行可能なプログラム命令を記憶し、前記プログラム命令は、
    ストレージシステムにおいて入出力(I/O)動作を受信することであって、
    前記I/O動作は、第1アプリケーションから受信されることと、
    前記I/O動作は、割り当てられた記憶域に記憶されている仮想データファイルに対して指示されることと、
    前記割り当てられた記憶域は、前記ストレージシステム内の仮想ストレージユニット内の仮想ディスク内に割り当てられていることと、
    前記ストレージシステムは、1つ以上のプロダクションデータファイルを含むプロダクションデータが記憶された1つ以上のストレージデバイスと、前記仮想ストレージユニットとを含むことと、
    前記1つ以上のプロダクションデータファイルは、第2アプリケーションによる現在の使用のために構成されていることと、
    前記1つ以上のプロダクションデータファイル及び前記仮想ストレージユニットは、前記ストレージシステム内で互いに別々に記憶されることと、
    前記I/O動作が読み取り動作であるか、書き込み動作であるかを判定し、前記I/O動作が前記書き込み動作であるとの判定に応じて、前記仮想データファイルで前記書き込み動作を実行することと、
    前記I/O動作が読み取り動作であるとの判定に応じて、
    前記読み取り動作が実行されるべき、前記仮想ストレージユニット上の記憶場所を判定することと、
    以前の書き込み動作が前記記憶場所で実行されたかどうかを判定することと、
    前記以前の書き込み動作が前記記憶場所で実行されたとの判定に応じて、前記記憶場所に対応する前記仮想データファイル内の位置で前記読み取り動作を実行することと、
    前記以前の書き込み動作が前記記憶場所で実行されなかったとの判定に応じて、前記読み取り動作を前記記憶場所の前記割り当てられた記憶域で実行することであって、
    前記割り当てられた記憶域で前記読み取り動作を行うことは、
    前記記憶場所に対応する、1つ以上のプロダクションデータファイル内の場所からデータを提供することを含み、
    前記データは、前記割り当てられた記憶域の前記読み取り動作に応答し、
    少なくとも前記記憶場所に関して、前記割り当てられた記憶域が前記プロダクションデータにマップされることで前記提供が容易になることと、を実行可能である、システム。
  16. 前記プログラム命令は、
    前記仮想ディスク上に前記割り当てられた領域を割り当てることであって
    記第1アプリケーションは、アプリケーション開発及び試験環境で実行されるアプリケーションであり、
    前記1つ以上のプロダクションデータファイルは、第2アプリケーションによる現在の使用のために構成され
    記1つ以上のプロダクションデータファイルは、前記第2アプリケーションを実行する物理的コンピューティングデバイスからアクセス可能であり
    記I/O動作が仮想化サーバにより実行される仮想マシンによって生じ、
    前記物理的コンピューティングデバイス及び前記仮想化サーバは、互いに別々であり、
    前記仮想化サーバ及び前記ストレージシステムが、互いに通信可能に接続されている、ことと、
    前記1つ以上のプロダクションデータファイルのうちの1つからの前記割り当てられた記憶域の読み取り動作を提供することと、
    を更に前記1つ又は2つ以上のプロセッサに実行させる、請求項15に記載のシステム。
  17. 前記プログラム命令は、
    前記ストレージシステムにおいて前記仮想マシンから割り当てマップを受信することであって、
    前記割り当てマップが前記割り当てられた記憶域に関する情報を含み、
    前記割り当てられた記憶域が前記仮想マシンによって割り当てられ、
    前記割り当てられた記憶域が、少なくとも部分的に、少なくとも1つの前記1つ以上のプロダクションデータファイルに対応する、ことと、
    前記割り当てマップ内の情報を前記1つ以上のプロダクションデータファイルに関連付けられている1つ以上のオフセットに変換することであって、
    前記1つ以上のオフセットがストレージ構造から検索される、ことと、
    前記ストレージ構造を前記割り当てマップにオーバーレイすることであって
    前記割り当てマップに前記ストレージ構造をオーバーレイすることは、前記ストレージシステムが、前記割り当てられた記憶域からの前記I/O動作を、前記1つ以上のプロダクションデータファイルに再マップすることを可能にすることで、前記1つ以上のプロダクションデータファイルのうちの1つからの前記割り当てられた記憶域の読み取り動作を容易にする、ことと、を更に前記1つ又は2つ以上のプロセッサに実行させる、請求項16に記載のシステム。
  18. 前記プログラム命令は、
    前記仮想ストレージユニットを作成することを求める、前記仮想化サーバからの要求を受信することと、
    前記要求の受信に基づいて、
    前記ストレージシステム内に前記仮想ストレージユニットを作成することであって、
    前記仮想ストレージユニットが、前記割り当てられた記憶域を割り当てるために前記仮想マシンによって使用され、
    前記仮想ストレージユニット上の前記仮想ディスクがスパースファイルとして作成される、ことと、を更に前記1つ又は2つ以上のプロセッサに実行させる、請求項16に記載のシステム。
  19. 前記プログラム命令は、
    前記ストレージシステムから前記仮想化サーバに前記仮想ディスクをインポートすることであって、
    インポートするために前記1つ又は2つ以上のプロセッサにより更に実行可能な前記プログラム命令は、クライアントによって実行され、
    前記クライアントがネットワークファイルシステム(NFS)クライアントであり、
    前記仮想ディスクが前記仮想化サーバにより実行されるハイパーバイザにインポートされる、ことと、
    前記ハイパーバイザから前記仮想マシンに前記仮想ディスクをエクスポートすることであって、
    エクスポートするために前記1つ又は2つ以上のプロセッサにより更に実行可能な前記プログラム命令は、前記ハイパーバイザによって実行される、ことと、を更に前記1つ又は2つ以上のプロセッサに実行させる、請求項16に記載のシステム。
  20. 再マップされる前記I/O動作は、前記プロダクションデータファイルではなく、前記割り当てられた記憶域に対する読み取り動作を指示することにより、前記仮想マシンが前記プロダクションデータファイルにアクセスすることを可能すること、を更に前記1つ又は2つ以上のプロセッサに実行させる、請求項17に記載のシステム。
JP2018512630A 2015-09-10 2016-09-08 プロダクションデータへのアクセスの最適化 Active JP6841818B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/850,072 US10558480B2 (en) 2015-09-10 2015-09-10 Optimizing access to production data
US14/850,072 2015-09-10
PCT/US2016/050755 WO2017044612A1 (en) 2015-09-10 2016-09-08 Optimizing access to production data

Publications (3)

Publication Number Publication Date
JP2018530817A JP2018530817A (ja) 2018-10-18
JP2018530817A5 JP2018530817A5 (ja) 2019-09-19
JP6841818B2 true JP6841818B2 (ja) 2021-03-10

Family

ID=57121489

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018512630A Active JP6841818B2 (ja) 2015-09-10 2016-09-08 プロダクションデータへのアクセスの最適化

Country Status (5)

Country Link
US (2) US10558480B2 (ja)
EP (1) EP3347808B1 (ja)
JP (1) JP6841818B2 (ja)
CN (1) CN108604162B (ja)
WO (1) WO2017044612A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10474486B2 (en) * 2015-06-30 2019-11-12 Veritas Technologies Llc Data access accelerator
US11449468B1 (en) * 2017-04-27 2022-09-20 EMC IP Holding Company LLC Enforcing minimum space guarantees in thinly-provisioned file systems
US10324807B1 (en) * 2017-10-03 2019-06-18 EMC IP Holding Company LLC Fast native file system creation for backup files on deduplication systems
CN108255708B (zh) * 2017-12-14 2021-05-07 海尔优家智能科技(北京)有限公司 测试环境中访问生产文件的方法、装置、存储介质及设备
CN113031852A (zh) * 2019-12-25 2021-06-25 阿里巴巴集团控股有限公司 数据处理方法、装置、电子设备及存储介质
CN111767222A (zh) * 2020-06-28 2020-10-13 杭州数梦工场科技有限公司 数据模型的验证方法、装置、电子设备、存储介质

Family Cites Families (63)

* 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
US7103743B2 (en) * 2002-08-23 2006-09-05 Intel Corporation System and method of accessing vital product data
US7747660B1 (en) * 2003-03-24 2010-06-29 Symantec Operating Corporation Method and system of providing access to a virtual storage device
CA2954888C (en) * 2005-06-24 2019-06-04 Catalogic Software, Inc. System and method for high performance enterprise data protection
US8365167B2 (en) 2008-04-15 2013-01-29 International Business Machines Corporation Provisioning storage-optimized virtual machines within a virtual desktop environment
US9823992B2 (en) 2008-06-20 2017-11-21 Vmware, Inc. Decoupling dynamic program analysis from execution in virtual environments
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
WO2010097933A1 (ja) 2009-02-27 2010-09-02 富士通株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
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
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
US8150808B2 (en) * 2009-10-21 2012-04-03 Delphix Corp. Virtual database system
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
US9239909B2 (en) 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
US9767274B2 (en) 2011-11-22 2017-09-19 Bromium, Inc. Approaches for efficient physical to virtual disk conversion
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
US9146765B2 (en) * 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
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
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
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
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
US20140068182A1 (en) * 2012-09-04 2014-03-06 Drobo, Inc. Storage Virtualization In A Block-Level Storage System
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
CN103678036B (zh) * 2013-11-15 2016-08-17 上海爱数信息技术股份有限公司 一种基于虚拟机运行信息数据发现的备份方法
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
US10241691B2 (en) 2014-11-04 2019-03-26 Rubrik, Inc. Data management system
US10474486B2 (en) 2015-06-30 2019-11-12 Veritas Technologies Llc Data access accelerator
WO2017004361A1 (en) 2015-06-30 2017-01-05 Symantec Corporation Data access accelerator
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
US11144339B2 (en) 2021-10-12
CN108604162B (zh) 2021-07-09
US10558480B2 (en) 2020-02-11
US20200133699A1 (en) 2020-04-30
JP2018530817A (ja) 2018-10-18
US20170075708A1 (en) 2017-03-16
WO2017044612A9 (en) 2018-05-31
WO2017044612A1 (en) 2017-03-16
CN108604162A (zh) 2018-09-28
EP3347808B1 (en) 2024-05-01
EP3347808A1 (en) 2018-07-18

Similar Documents

Publication Publication Date Title
JP6841818B2 (ja) プロダクションデータへのアクセスの最適化
US9606748B2 (en) Importing pre-existing data of a prior storage solution into a storage pool for use with a new storage solution
US8683156B2 (en) Format-preserving deduplication of data
US9952782B1 (en) Method and system for accessing data between different virtual disk formats in a virtualization environment
US9665419B2 (en) Enhanced restart of a core dumping application
US10705917B2 (en) Consolidated full backup of a restored virtual machine
US9792075B1 (en) Systems and methods for synthesizing virtual hard drives
JP6774971B2 (ja) データアクセスアクセラレータ
US10725966B1 (en) Block level incremental backup for QCOW2 virtual disks
US9015022B2 (en) Simulating non-volatile memory in virtual distributed switches
CN114691300A (zh) 一种虚拟机实例的热迁移方法
US9405709B1 (en) Systems and methods for performing copy-on-write operations
US9619336B2 (en) Managing production data
US10303556B1 (en) Modifiable volume snapshots
US8769182B1 (en) Virtual tape library with the ability to perform multiple, simultaneous reads of a single virtual tape
TWI633434B (zh) 管理固態硬碟之方法、系統及電腦可讀取媒體
US10936229B1 (en) Simulating large drive count and drive size system and method
US20230281161A1 (en) File storage system
WO2017004361A1 (en) Data access accelerator
JP2014215686A (ja) データ移行方法、この方法に用いるスクリプトの生成方法、及び情報処理装置

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180405

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190805

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200702

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200714

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201012

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210218

R150 Certificate of patent or registration of utility model

Ref document number: 6841818

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250