JP5934344B2 - 仮想記憶ディスク技術 - Google Patents

仮想記憶ディスク技術 Download PDF

Info

Publication number
JP5934344B2
JP5934344B2 JP2014508334A JP2014508334A JP5934344B2 JP 5934344 B2 JP5934344 B2 JP 5934344B2 JP 2014508334 A JP2014508334 A JP 2014508334A JP 2014508334 A JP2014508334 A JP 2014508334A JP 5934344 B2 JP5934344 B2 JP 5934344B2
Authority
JP
Japan
Prior art keywords
virtual disk
disk file
file
identifier
virtual
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
JP2014508334A
Other languages
English (en)
Other versions
JP2014517381A (ja
Inventor
エー スタークス,ジョン
エー スタークス,ジョン
エル グリーン,ダスティン
エル グリーン,ダスティン
ウィリアム ハリス,トッド
ウィリアム ハリス,トッド
ジョン,マシュー
ラジャラム,センシル
トラウト,エリック
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014517381A publication Critical patent/JP2014517381A/ja
Application granted granted Critical
Publication of JP5934344B2 publication Critical patent/JP5934344B2/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
    • 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
    • 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/061Improving I/O performance
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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
    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/121Facilitating exception or error detection and recovery, e.g. fault, media or consumables depleted

Description

本発明は、仮想記憶ディスク技術に関する。
記憶装置の仮想化技術は、物理記憶からの論理記憶の区分を可能にする。記憶装置の仮想化に関する1つの例示的な使用例は、仮想マシンに含まれる。仮想化ソフトウェアのレイヤ(通常、ハイパーバイザ又は仮想マシンモニタと呼ばれる)は、コンピュータシステムにインストールされ、仮想マシンが物理的ハードウェアとどのように相互作用するかを制御する。ゲストオペレーティングシステムは、通常、物理的ハードウェアに対して排他的制御を実行するようコーディングされるので、仮想化ソフトウェアは、物理的ハードウェアのリソースを分割し、仮想マシン内の物理的ハードウェアの存在をエミュレートするよう構成され得る。記憶装置の仮想化に関する別の使用例は、記憶装置アレイを実装するよう構成されるコンピュータシステムに含まれる。この場合、物理的コンピュータシステム又は仮想マシンは、iSCSIプロトコル等を用いて記憶装置アレイに接続され得る。
記憶処理モジュールは、仮想又は物理的機械の記憶装置をエミュレートするために用いることができる。例えば、記憶処理モジュールは、仮想又は物理的機械により発行された記憶IOジョブを、仮想ディスク、つまりブロックのような連続記憶領域の範囲を記述、つまり格納するために用いることができる1又は複数の仮想ディスクファイルから読み出し及びそれに書き込むことにより、処理できる。同様に、記憶処理プログラムは、仮想ディスクのビットパターンデータを1又は複数の仮想ディスクファイルに書き込むことにより書き込み要求に応答でき、該1又は複数の仮想ディスクファイルに格納された該ビットパターンデータを読み出すことにより読み出し要求に応答できる。
例示的な実施形態では、仮想ディスクファイルは識別子を割り当てられ、仮想ディスクファイルに依存する仮想ディスクファイルは、該識別子のコピーを有する。仮想ディスクファイルが開かれ、データが変更されて仮想ディスク範囲の内容に変更を生じる場合には、識別子は変更され得る。仮想ディスクをインスタンス化するために仮想ディスクファイル及び従属する仮想ディスクファイルが用いられる場合、識別子同士の差分が検出される。この差分は、仮想ディスクが損傷しているという事実を示す。
同一の又は別の例示的な実施形態では、仮想ディスク範囲のグループの正規化ビットマップは永続的であり得る。識別子は仮想ディスクファイルに格納され、識別子のコピーは正規化ビットマップと関連付けられ得る。仮想ディスクファイルに対して変更が行われると、識別子は更新され得る。正規化ビットマップが仮想ディスク範囲のグループのセクタビットマップを正確に反映する場合には、正規化ビットマップと関連付けられた識別子のコピーが更新され得る。仮想ディスクファイルが後の時間に開かれるとき、2つの識別子の一致は、正規化ビットマップが仮想ディスク範囲のグループのセクタビットマップを正確に反映していること、及びビットマップが使用可能であることを示す。以上に加え、他の技術は、請求の範囲、詳細な説明及び図面に記載される。
当業者は、本開示の1又は複数の種々の態様が、限定ではなく、ここに言及される態様を達成する回路及びプログラムを有しても良く、該回路及びプログラムが、システム設計者の設計選択に依存してここに言及される態様を達成するよう構成されるハードウェア、ソフトウェア及び/又はファームウェアの実質的に如何なる組合せでもあり得ることを理解する。
以上は要約であり、したがって必然的に簡略化、一般化及び詳細の省略を含む。当業者は、この要約が単に説明のためであり、限定を意図しないことを理解する。
コンピュータシステムのハイレベルブロック図を示す。 仮想化ソフトウェアプログラムの例示的なアーキテクチャのハイレベルブロック図を示す。 仮想化ソフトウェアプログラムの別のアーキテクチャのハイレベルブロック図を示す。 仮想ディスクを達成するよう構成されるコンピュータシステムのローレベルブロック図を示す。 仮想ディスクを達成するよう構成されるコンピュータシステムのローレベルブロック図を示す。 仮想ディスクを達成するよう構成されるコンピュータシステムのローレベルブロック図を示す。 差分仮想ディスクファイルのハイレベルブロック図を示す。 仮想ディスクと仮想ディスクファイルとの間の関係のを示す。 正規化ビットマップとセクタビットマップとの間の関係のを示す。 仮想ディスクファイルと合成セクタビットマップの間の関係のを示す。 コンピュータ可読記憶媒体内に具現化され及び/又はコンピュータシステムにより実行され得る動作手順を示す。 図10に示した動作と共に実行され得る追加動作を示す。 コンピュータ可読記憶媒体内に具現化され及び/又はコンピュータシステムにより実行され得る動作手順を示す。 図12に示した動作と共に実行され得る追加動作を示す。 コンピュータ可読記憶媒体内に具現化され及び/又はコンピュータシステムにより実行され得る動作手順を示す。 図14に示した動作と共に実行され得る追加動作を示す。
本願明細書で用いられる用語、回路は、ハードウェア割り込み制御部、ハードドライバ、ネットワークアダプタ、グラフィックプロセッサ、ハードウェアベースのビデオ/オーディオコーデックのようなハードウェアコンポーネント、及びこれらのハードウェアを動作させるファームウェアを含み得る。用語、回路は、マイクロプロセッサ、特定用途向け集積回路、及びファームウェア及び/又はソフトウェアにより構成されるプロセッサ、例えば命令をリードし及び実行する実行ユニットも含み得る。プロセッサ等は、メモリ、例えばRAM、ROM、ファームウェア及び/又は大容量記憶装置から読み込んだ命令により構成され得る。このような命令は、1又は複数の機能を実行するようプロセッサを構成するロジックを用い得る。特定の例示的な回路は、ハードウェア及びソフトウェアの組合せを含み得る。この特定例では、実装者は、プロセッサにより実行可能な機械可読コードに後にコンパイルされる、ロジックを具現化するソースコードを記述しても良い。
当業者は、最先端では、ハードウェアで実装される機能とソフトウェアで実装される(後にハードウェアにより実行される)機能との間に僅かな差しかないことを理解する。したがって、ハードウェア又はソフトウェアで実装されるというような機能の記載は、単に設計選択である。端的に言うと、ソフトウェア処理は等価なハードウェア構造に変換でき、ハードウェア構造はそれ自体が等価なソフトウェア処理に変換できるので、命令で具現化されるよう記載される機能は代替としてハードウェアで実装でき、逆も同様である。
開示の主題は、1又は複数のコンピュータシステムを用いても良い。図1及び以下の議論は、開示の主題が実施され得る適切なコンピューティング環境の簡潔な概略的説明を提供することを目的とする。
図1を参照すると、例示的なコンピューティングシステム100が示される。コンピューティングシステム100は、プロセッサ102、例えば実行コアを有し得る。1つのプロセッサ102が図示されるが、の実施形態では、コンピュータシステム100は、複数のプロセッサ、例えばプロセッサ基板毎に複数の実行コアを及び/又はそれぞれ複数の実行コアを有する複数のプロセッサ基板を有しても良い。図示のように、種々のコンピュータ可読記憶媒体110が、種々のシステムコンポーネントをプロセッサ102に結合する1又は複数のシステムバスにより相互接続され得る。システムバスは、メモリバス又はメモリ制御部、周辺バス、及び種々のバスアーキテクチャのうちの任意のものを用いるローカルバスを含む複数種類のバス構造のうちの任意のものであっても良い。例示的な実施形態では、コンピュータ可読記憶媒体110は、例えばRAM(random access memory)、記憶装置106、例えば電気機械ハードドライブ、固体ハードドライブ等、ファームウェア108、例えばFLASH RAM若しくはROM,及び取り外し可能記憶装置118、例えばCD−ROM,フロッピディスク、DVD、FLASHドライブ、外部記憶装置等を有し得る。当業者に理解されるべきことに、磁気カセット、フラッシュメモリカード、及び/又はデジタルビデオディスクのような他の種類のコンピュータ可読記憶媒体を用いることができる。
コンピュータ可読記憶媒体110は、プロセッサ実行可能命令122、データ構造、プログラムモジュール、及び実行可能命令のようなコンピュータ100のための他のデータの不揮発性及び揮発性記憶を提供し得る。BIOS(basic input/output system)120は、起動中のような、コンピュータシステム100内の要素間の情報転送を助ける基本ルーチンを含み、ファームウェア108に格納され得る。オペレーティングシステム及び/又はアプリケーションプログラムを含む多数のプログラムが、ファームウェア108、記憶装置106、RAM104、及び/又は取り外し可能記憶装置118に格納され、プロセッサ102により実行されても良い。例示的な実施形態では、コンピュータ可読記憶媒体110は、以下に詳述する仮想ディスクパーサ404を格納し得る。仮想ディスクパーサ404は、プロセッサ102により実行されることにより、コンピュータシステム100を、特定目的のために構成されたコンピュータシステムに変える。つまり、コンピュータシステムは、本願明細書に記載される技術に従って構成される。
コマンド及び情報は、キーボード及びポインティングデバイスを含むがこれらに限定されない入力装置116を通じて、コンピュータ100により受信されても良い。他の入力装置は、マイクロフォン、ジョイスティック、ゲームパッド、スキャナ等を有しても良い。上述の及び他の入力装置は、システムバスに結合されるシリアルポートインタフェースを通じて、プロセッサ102に接続される場合が多いが、パラレルポート、ゲームポート又はUSB(universal serial bus)ポートのような他のインタフェースにより接続することもできる。ディスプレイ又は他の種類のディスプレイは、グラフィックプロセッサユニット112の一部であり又はそれに接続されるビデオアダプタのようなインタフェースを介してシステムバスにも接続され得る。ディスプレイに加え、コンピュータは、通常、スピーカ及びプリンタ(図示しない)のような他の周辺出力装置を有する。図1の例示的なシステムは、ホストアダプタ、SCSI(Small Computer System Interface)バス、及びSCSIバスに接続される外部記憶装置も有し得る。
コンピュータシステム100は、遠隔コンピュータのような1又は複数のリモートコンピュータへの論理コネクションを用いてネットワーク環境で動作しても良い。リモートコンピュータは、別のコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置又は他の一般的なネットワークノードであって良く、通常、コンピュータシステム100に関して上述した要素の多く又は全てを有し得る。
LAN又はWANネットワーク環境で用いられるとき、コンピュータシステム100は、ネットワークインタフェースカード114を通じて、LAN又はWANに接続され得る。NIC114は、内蔵又は外付けであって良く、システムバスに接続され得る。ネットワーク環境では、コンピュータシステム100に関連して示されたプログラムモジュール又はその部分は、遠隔メモリ記憶装置に格納されても良い。理解されるべきことに、本願明細書に記載されたネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を用いることが出来る。さらに、本開示の多数の実施形態はコンピュータ化されたシステムに特に良く適すると考えられるが、本願明細書はこのような実施形態に本開示を限定するものではない。
図2及び3を参照すると、仮想デスクトップセッションに用いられる仮想マシンを生成するために用いることができる例示的な仮想化プラットフォームが示される。本実施形態では、ハイパーバイザマイクロカーネル202は、コンピュータシステム200のハードウェアを制御し、該ハードウェアへのアクセスを調停するよう構成され得る。ハイパーバイザマイクロカーネル202は、Childパーティション1乃至N(ここで、Nは1より大きい整数である)のようなパーティションと呼ばれる実行環境を生成し得る。ここで、Childパーティションは、ハイパーバイザマイクロカーネル202によりサポートされる分離の基本単位である。ハイパーバイザマイクロカーネル202は、あるパーティションのプロセスを、別のパーティションのリソースへのアクセスから隔離できる。各Childパーティションは、ハイパーバイザマイクロカーネル202の制御下にあるハードウェアリソース、例えばメモリ、装置、プロセッササイクル等のセットにマッピングされ得る。実施形態では、ハイパーバイザマイクロカーネル202は、スタンドアロン型ソフトウェア、オペレーティングシステムの一部であり、マザーボードのファームウェア内に組み込まれ、専用集積回路であり、又はそれらの組合せであり得る。
ハイパーバイザマイクロカーネル202は、ゲストオペレーティングシステムの、物理コンピュータシステム内のメモリの視野(メモリビュー)を制限することにより、パーティションを実行できる。ハイパーバイザマイクロカーネル202は、仮想マシンのインスタンスを生成するとき、システム物理メモリ(system physical memory:SPM)のページ、例えば開始アドレス及び終了アドレスを有する固定長メモリブロックを、ゲスト物理メモリ(guest physical memory:GPM)として仮想マシンに割り当てることができる。ここで、ゲストの、システムメモリの制限された視野は、ハイパーバイザマイクロカーネル202により制御される。用語、ゲスト物理メモリは、仮想マシンの観点からメモリページを記述する省略表現である。また、用語、システム物理メモリは、物理システムの観点からメモリページを記述する省略表現である。したがって、仮想マシンに割り当てられるメモリページは、ゲスト物理アドレス(仮想マシンにより用いられるアドレス)及びシステム物理メモリ(ページの実際のアドレス)を有する。
ゲストオペレーティングシステムは、ゲスト物理メモリを仮想化しても良い。仮想メモリは、オペレーティングシステムに、メモリをコミットさせ、アプリケーションに連続ワーキングメモリへの単独アクセスを与えさせる管理技術である。仮想化環境では、ゲストオペレーティングシステムは、1又は複数のページテーブルを用い、仮想ゲストアドレスとして知られる仮想アドレスを、ゲスト物理アドレスに変換する。本例では、メモリアドレスは、ゲスト仮想アドレス、ゲスト物理アドレス、及びシステム物理アドレスを有しても良い。
図示の例では、Parentパーティションコンポーネントは、Xenのオープンソースハイパーバイザのドメイン0と同様であるとも考えられ、ホスト204を含み得る。ホスト204はオペレーティングシステム(又は設定ユーティリティのセット)であり、ホスト204は、仮想化サービスプロバイダ228(VSP)を用いることにより、Childパーティション1〜Nで実行するゲストオペレーティングシステムにリソースを提供するよう構成され得る。VSP228は、通常、オーブンソースコミュニティでバックエンドドライバと呼ばれ、仮想化サービスクライアント(VSC)(通常、オーブンソースコミュニティでフロントエンドドライバと呼ばれる、又は並列仮想化装置)を用いてハードウェアリソースへのインタフェースを多重化するために用いることができる。図示のように、仮想化サービスクライアントは、ゲストオペレーティングシステムの環境内で実行する。しかしながら、これらのドライバは、ゲストによってではなく、ハイパーバイザにより提供される点で、ゲスト内の残りのドライバと異なる。例示的な実施形態では、仮想化サービスクライアント216及び218と通信するために仮想化サービスプロバイダ228により用いられる経路は、仮想化パスであると考えられる。
図示のように、エミュレータ234、例えば仮想化IDE装置、仮想化ビデオアダプタ、仮想化NIC等は、ホスト204内で動作するよう構成され、ゲストオペレーティングシステム220、222に利用可能なリソースに取り付けられる。例えば、ゲストOSが装置のレジスタが存在する場所にマッピングされたメモリ位置又はメモリにマッピングされた装置に触れるとき、ハイパーバイザマイクロカーネル202は、要求を傍受し、関連するエミュレータに書き込みしようとしたゲストに値を渡す。また、本例のリソースは、仮想装置が位置する場所に存在すると考えられる。このようなエミュレータの使用は、エミュレーションパスと考えられる。エミュレーションパスは、装置をエミュレートするためにはVSPとVSCとの間でメッセージを渡すよりも多くのCPUリソースを必要とするので、仮想化パスと比べて非効率である。例えば、エミュレーションパスを介してディスクに値を書き込むために、レジスタにマッピングされたメモリに対する何百回もの動作は、仮想化パスでは、VSCからVSPに渡される単一のメッセージにまで削減されても良い。
各Childパーティションは、1又は複数の仮想プロセッサ(230、232)を有し得る。ゲストオペレーティングシステム(220、222)は、仮想プロセッサを管理し、それらで実行すべきスレッドをスケジューリングする。概して、仮想プロセッサは、実行可能命令であり、特定アーキテクチャを有する物理的プロセッサを表す関連状態情報である。例えば、ある仮想マシンは、Intel x86プロセッサの特徴を有する仮想プロセッサを有しても良い。また、別の仮想プロセッサは、PowerPCプロセッサの特徴を有しても良い。本例の仮想プロセッサは、コンピュータシステムのプロセッサにマッピングされ、仮想プロセッサを達成する命令がプロセッサにより支援されるようにする。したがって、複数のプロセッサを有する一実施形態では、仮想プロセッサは複数のプロセッサにより同時に実行でき、同時に、例えば他のプロセッサはハイパーバイザ命令を実行する。パーティションにおける仮想プロセッサとメモリの組合せは、仮想マシンと考えられる。
ゲストオペレーティングシステム(220、222)は、例えばMicrosoft(登録商標)、Apple(登録商標)、オープンソースコミュニティ等によるオペレーティングシステムのような任意のオペレーティングシステムであり得る。ゲストオペレーティングシステムは、ユーザ/カーネル動作モードを有し、スケジューラ、メモリマネジャ等を含み得るカーネルを有し得る。一般的に、カーネルモードは、少なくとも特権的プロセッサ命令へのアクセスを許可する、プロセッサの実行モードを有し得る。各ゲストオペレーティングシステムは関連ファイルシステムを有し得る。ゲストオペレーティングシステムは、端末サービス、電子商取引サービス、電子メールサービス等のような関連ファイルシステムに格納されたアプリケーション、並びにゲストオペレーティングシステム自身を有し得る。ゲストオペレーティングシステムは、仮想プロセッサで実行すべきスレッドをスケジューリングでき、このようなアプリケーションのインスタンス化が達成できる。
図3を参照すると、図2と同様のコンポーネントを示すが、この例示的な実施形態では、ハイパーバイザ302が、マイクロカーネルコンポーネント、並びに仮想サービスプロバイダ228及びデバイスドライバ224のような図2のホスト204内のコンポーネントと同様のコンポーネントを含み得る。一方、管理オペレーティングシステム304は、例えばハイパーバイザ302を構成するために用いられる設定ユーティリティを有しても良い。このアーキテクチャでは、ハイパーバイザ302は、図2のハイパーバイザマイクロカーネル202及びホスト204と同じ又は同様の機能を実行できる。図3のハイパーバイザ302は、スタンドアロン型ソフトウェア、オペレーティングシステムの一部であり、マザーボードのファームウェア内に組み込まれ、及び/又はハイパーバイザ302の一部が専用集積回路により達成され得る。
図4を参照すると、コンピュータシステム400を示す。図4は、本願明細書に記載する技術を実行するために用いることができるコンポーネントのハイレベルブロック図である。簡単に言うと、コンピュータシステム400は、図1〜3に関して上述したコンポーネントと同様のコンポーネントを有し得る。図4は、図2又は3により説明した仮想プラットフォームのハイレベル表現であると考えられる仮想システム420を示す。例えば、仮想システム420は、ハイパーバイザマイクロカーネル202及びホスト環境204により提供される機能の組合せのハイレベル表現と考えられる。或いは、仮想システム420は、ハイパーバイザ302及び管理OS304のハイレベル表現と考えられる。したがって、本願明細書を通じて用語「仮想システム420」の使用は、以下の段落で説明する仮想ディスク技術が任意の種類の仮想ソフトウェア層内で又は任意の種類の仮想プラットフォームで実装され得ることを示唆する。
仮想ディスクパーサ404は、特定の例示的な実施形態では実行可能命令であり、仮想ディスクファイルから仮想ディスクをインスタンス化し、仮想マシンの代わりに記憶IOを処理するために用いることができる。図示のように、仮想ディスクパーサ404は、仮想ディスクファイル406のような1又は複数の仮想ディスクファイルを開き、仮想ディスク402を生成できる。
仮想ディスクパーサ404は、仮想システムファイルシステム408を介して記憶装置106から仮想ディスクファイル406を得ることができる。簡単に言うと、仮想システムファイルシステム408は、仮想ディスクファイル406のような、仮想システム420のコンピュータファイル及びデータを編成する実行可能命令を表す。仮想システムファイルシステム408は、このデータを固定サイズの物理的範囲のアレイ、つまり物理的記憶装置の連続記憶領域に格納できる。特定の例では、1つの範囲はクラスタであり、設定された長さを有する、複数ビットのバイトシーケンスである。例示的なクラスタのサイズは、通常、2の冪乗であり、512バイト乃至64キロバイトである。特定の構成では、クラスタのサイズは、4キロバイトであり得る。
仮想ディスクファイル406を開く要求を受信すると、仮想システムファイルシステム408は、ファイルがディスクのどこに位置するかを決定し、ディスクの1又は複数の物理的範囲からデータを読み出すためにIOジョブをディスクデバイスドライバへ発行する。ファイルシステム408により発行されたIOジョブは、記憶装置106にある仮想ディスクファイル406の永続的コピーの位置を記述するディスクオフセット及び長さを決定し、IOジョブを記憶装置106へ発行する。記憶装置がどのように動作するかのセマンティクスにより、書き込みIOジョブは、記憶装置106の回路が永続的記憶ユニット460の位置、例えばプラッタ、フラッシュメモリセル等にアクセスし、及び仮想ディスクファイル406の永続的コピーの新しいコンテンツを示すバッファリングされたビットパターンを永続的記憶ユニット460に書き込むことを決定するまで、キャッシュ454により表される揮発性メモリの1又は複数レベルのキャッシュにバッファリングされる。
仮想ディスクパーサ404は、仮想ディスクファイル406を示すビットパターンを得て、複数の仮想ディスク範囲を有するディスクとして仮想ディスクファイル406内にペイロード、例えばユーザデータを置く。一実施形態では、これらの仮想ディスク範囲は、固定サイズブロック、512キロバイト乃至64メガバイトのサイズであり、複数のセクタに区分され得る。しかしながら、別の実施形態では、仮想ディスク範囲は、可変サイズの範囲であり得る。例示的な構成では、ゲストオペレーティングシステム412をブートする前に、エミュレート又はEnlightened記憶制御部及び仮想ディスクのEnlightened特徴に関連するリソースは、メモリをマッピングされたレジスタを有するエミュレートされた記憶制御部が仮想マシン410のゲスト物理アドレス空間内で実行されるよう、設定される。ブートコードが実行し、ゲストオペレーティングシステム412をブートし得る。仮想システム420は、ゲスト物理アドレス空間のこの領域へのアクセスの試みを検出し、ゲストオペレーティングシステム412に記憶装置がエミュレートされた記憶制御部に取り付けられると決定させる結果を返す。これに応答して、ゲストオペレーティングシステム412は、ドライバ(並列仮想ドライバ又は通常のドライバ)をロードし、該ドライバを用いて、検出した記憶装置へ記憶IO要求を発行する。仮想システム420は、記憶IO要求を仮想ディスクパーサ404へ転送できる。
ゲストオペレーティングシステム412は、実行された後、ファイルシステム408を介して仮想ディスク402へIOジョブを発行できる。これは、ゲストオペレーティングシステム412及びゲストオペレーティングシステム412にインストールされたアプリケーションのコンピュータファイル及びデータを編成する仮想システムファイルシステム414と似ている。ゲストオペレーティングシステム412は、オペレーティングシステムが物理的記憶装置と相互作用するのと同様の方法で、仮想ディスク402と相互作用でき、最終的にIOジョブは仮想ディスクパーサ404へ転送される。仮想ディスクパーサ404は、物理的記憶装置をエミュレートする方法で、IOジョブにどのように応答するかを決定するロジックを有し得る。例えば、仮想ディスクパーサ404は、仮想ディスクファイル406からデータを読み出し、及び仮想ディスクファイル406にデータを書き込むことができる。また、仮想ディスクファイル406に書き込まれたデータは、仮想システムファイルシステム408を通じて転送され、永続的記憶ユニット460に格納された仮想ディスクファイル406の永続的コピーに又は永続的記憶ユニット460にコミットされる。
図5Aを参照すると、本願明細書に記載される技術を実施するための代替のアーキテクチャを示す。図5に示すように、仮想ディスクパーサ404は、Microsoft(登録商標)により提供されるオペレーティングシステムのようなオペレーティングシステム502に実装できる。本例では、仮想ディスクパーサ404は、図1のコンピュータシステム100と同様のコンポーネントを有し得る記憶サーバ500で実行するよう構成され得る。本例では、記憶サーバ500は、物理的記憶装置アレイ510を有し、サーバが利用可能な記憶を作るよう構成され得る。したがって、記憶は、オペレーティングシステム508にローカルに取り付けられるように見える。仮想ディスクパーサ404は、図4に関して説明したのと同様に動作する。相違点は、本構成では、ファイルシステム414により発行されるリード/ライトIOジョブが、ネットワーク接続を介して仮想ディスクパーサ404へ転送されることである。
図5Bを参照すると、本願明細書に記載される技術を実施するための更に別のアーキテクチャを示す。図5Bは、図5Aと同様に、仮想ディスクパーサ404がオペレーティングシステム502に実装され、コンピュータシステム512が図1のコンピュータシステム100と同様のコンポーネントを有し得る。しかしながら、本例は、図がループバックの取り付けられた仮想ディスク402を示す点が異なる。アプリケーション424のようなアプリケーションを含み、ファイルシステム414は、仮想ディスク402に格納され、また、仮想ディスクファイル406はコンピュータシステムファイルシステム514に格納され得る。
仮想ディスク402に注意を向けると、仮想ディスク402は単一の仮想ディスクファイルにより達成されるが、他の構成では、仮想ディスク402をもたらすために、差分仮想ディスクファイルのグループを用いることができる。図6は、差分ディスクとして仮想ディスク402を達成するために仮想ディスクパーサ404により用いられ得る仮想ディスクファイルの例示的なチェーンを示す。概して、差分仮想ディスクファイルは、仮想ディスクの現在状態を、親イメージと比較した変更の程度のセットとして表す。親イメージは、別の差分仮想ディスクファイル又は基本仮想ディスクファイルであり得る。
例示的な構成では、親仮想ディスクファイルと子仮想ディスクファイルとの間のリンク付けは、子の中に格納され得る。特に、子は、親の識別子及び親の位置を記述する値を有し得る。仮想マシンを起動するとき、仮想ディスクパーサ404は、チェーンの中の最後の仮想ディスクファイルを記述する情報を受信し、このファイルを開いても良い。つまり、仮想ディスクファイル612は、仮想ディスクファイル612、610、606、600を含むチェーンの最後である。このファイルは、このファイルの親、つまり仮想ディスクファイル610の識別子、及び親へのパスを有し得る。仮想ディスクパーサ404は親の位置を特定して親を開き、基本仮想ディスクファイルの位置が特定されそれが開かれるまで、以降同様である。
仮想ディスクパーサ404は、データが親仮想ディスクファイル内に存在するか又は格納されているか否かを示す情報を用いることができる。通常、チェーンの中の最後の仮想ディスクファイルは読み出し/変更として開かれ、他の仮想ディスクファイルは読み出しのみとして開かれる。したがって、書き込みは、通常、チェーン内の最後の仮想ディスクファイルに対して行われる。同様に、読み出し動作は、先ずチェーン内の最後の仮想ディスクファイルに向けられる。そして、仮想ディスクパーサ404は、最後から基本へと、データが位置する場所に関する情報がキャッシュされていないインスタンスでデータが見付かるまで、仮想ディスクファイルを論理的に検索する。特定の例では、仮想ディスクファイル、例えば仮想ディスクファイル612の割り当てテーブル(図示しない)は、仮想ディスク範囲が仮想ディスクファイルのセクションにより定められるか否か、又はこの仮想ディスク範囲が透過的か、例えば更にチェーンに沿って差分仮想ディスクファイルにより定められるかどうかを示す状態情報を有し得る。一実施形態では、仮想ディスクパーサ404は、この仮想ディスク範囲が透過的か否かを決定し、チェーン内の次の仮想ディスクファイル、例えば仮想ディスクファイル610の割り当てテーブルにアクセスするというように、データを定めるチェーン内の仮想ディスクファイルの位置が特定されるまで同様にする。
問題は、ユーザが意図的に又は不注意に親である仮想ディスクファイルを開き、ユーザペイロードに影響を与えるデータを変更し得るという点にある。これはまた、このファイルをチェーンの一部として用いる任意の仮想ディスクに影響を与え、仮想ディスクファイルを使用不可能にしてしまう可能性がある。例えば、ユーザが仮想ディスクファイル610を開き、パッチを適用し又はデフラグすると仮定する。本例では子仮想ディスクファイル612は、今や移動され又は失われた仮想ディスクファイル610内のデータに依存し得る。子仮想ディスクファイル612の割り当てテーブルが、仮想ディスクパーサ404に仮想ディスクファイル610から読み出すよう指示すると、仮想ディスクパーサ404は、誤ったデータを返し、仮想ディスクファイル600、606、610、612の組により記述されるゲストオペレーティングシステムを使用不可能にしてしまう。
例示的な実施形態では、固有識別子は、仮想ディスクファイルが生成されるとき、各仮想ディスクファイルに挿入され得る。子仮想ディスクファイルが生成されるとき、子の生成と同時にその親の固有識別子のコピーも、子に挿入され得る。したがって、仮想ディスクファイル604は、生成されたとき、固有識別子(固有識別子3)を与えられ、その親の固有識別子(固有識別子1)も仮想ディスクファイル604に挿入されている。
例示的な実施形態では、仮想ディスクパーサ404は、仮想ディスクファイルへの書き込みが仮想ディスク範囲及び/又は仮想ディスクのサイズを変更し得る場合に、仮想ディスクファイルの固有識別子を変更するよう構成され得る。例えば、異なるセクションに向けられる読み出し動作を生じる、ユーザペイロード、ディスク終端識別子又は割り当てテーブル内のエントリに対する変更は、仮想ディスクパーサ404に固有識別子を変更させる例である。仮想ディスクパーサ404は、仮想ディスクファイルのチェーンを開くとき、仮想ディスクファイルの親の固有識別子を子に格納された固有識別子と比較するよう構成され得る。差は、仮想ディスク範囲及び/又は仮想ディスクのサイズに影響を与える変更が親に対して行われたことを反映する。
図7を参照すると、仮想ディスクファイル402と仮想ディスク402を形成する1又は複数の仮想ディスクファイルとの間の関係を示す。本例では2つの仮想ディスクファイル(700、702)が示されるが、この図示の例は限定ではなく、仮想ディスク402を達成するためにより多くの仮想ディスクファイルを用いることができる。図7に示すように、各仮想ディスクファイルは、メタデータ704、706を有し得る。仮想ディスクファイル702のメタデータ706は、固有識別子708として格納された固有識別子を有し得る。仮想ディスクファイル700のメタデータ704は、親の固有ID710として格納された仮想ディスクファイル702の固有識別子のコピー、及び固有ID712として格納された自身の固有識別子を有し得る。例示的な実施形態では、親仮想ディスクファイル702が開かれ、書き込まれて仮想ディスク範囲のペイロード及び/又は仮想ディスクのサイズに変更が生じた場合、仮想ディスクパーサ404は、固有識別子708として格納された識別子を新しい固有識別子に変更する。その後、仮想ディスクパーサ404が親の固有識別子710として格納された識別子を固有識別子708として格納された識別子と比較する場合、二者は一致せず、仮想ディスク402は損傷した可能性があると決定され得る。
また、メタデータ706、704は、ディスク識別子(714、716)として格納された識別子を有し得る。これは、ページ#83要求等で仮想ディスク402の識別子としてゲストオペレーティングシステム412へ返される値であり得る。子仮想ディスクファイルが生成されるとき、親のディスク識別子として格納された値のコピーは子にもコピーされ、新しいディスク識別子が子に割り当てられ得る。ディスク識別子は、仮想ディスクを識別するためにゲストオペレーティングシステム412により用いられ、それを固有識別子と区別するために検討され得る。ディスク、シリンダ、ヘッド及びセクタ識別子に加え、従来の情報(CHS情報718、720)もメタデータ706、704に格納され得る。CHS情報は、シリンダ、ヘッド及びセクタ値の観点からIOを表現するIOジョブをオフセットとして表現されたIOジョブに変換するために用いることができる。
図7の総括を続けると、図示のように、仮想ディスク402は、N個の記憶範囲(Nは1より大きい整数である)を有し、この特定の例では、仮想ディスク402は10個の範囲を有する。仮想ディスク402は、ゲストオペレーティングシステム412の異なるファイル及びデータのビットパターンを有するとして示される。これらのビットパターンは、仮想ディスク範囲内の異なるハッチングにより区別される。
仮想ディスク402は物理的記憶装置ではないので、仮想ディスク範囲のための基本ペイロードデータは、仮想ディスクファイル702、700内の異なるセクション「により記述され」、つまり異なるセクションに格納され得る。割り当てテーブル416は、コンピュータシステム400の動作中にランダムアクセスメモリに格納され、任意のセクションにある仮想ディスクファイル702内に存続し、複数のセクションに及び得る。要するに、各仮想ディスクファイルは、仮想ディスク範囲を仮想ディスクファイル702又は700のセクションにリンク付けする情報を含む割り当てテーブル(図示しない)と関連付けられ得る。
各仮想ディスク範囲は、セクタビットマップと関連付けられ得る。例示的な構成では、仮想ディスク範囲のセクタビットマップは、仮想ディスク範囲を記述するために用いられる仮想ディスクファイルのセクションの始めに格納され得る。代替の構成では、図9を説明する段落で詳述するように、複数の仮想ディスク範囲のセクタビットマップは、集約され、合成セクタビットマップに格納される。セクタビットマップは、対応する仮想ディスク範囲内のセクタ毎に1バイトを有し得る。したがって、範囲が2メガバイトであり、各セクタが4キロバイトである場合、各仮想ディスク範囲は、512セクタを有し、各セクタビットマップは512バイトを有する。1は、セクタが子仮想ディスクファイル600により記述されることを示し、0は、セクタが親のような別の仮想ディスクファイルにより記述されることを示す。
ディスクからのセクタビットマップへのアクセスは性能に悪影響を与え得るので、一実施形態では、仮想ディスクパーサ404は、正規化ビットマップを生成するよう構成され得る。正規化ビットマップは、完全に記述される仮想ディスク範囲毎に1バイトを有し得る。ビットは、仮想ディスク範囲の各セクタが存在する場合に1に、仮想ディスク範囲内のセクタが透過的である場合に0に設定され得る。したがって、仮想ディスクパーサ404は、先ず、セクタビットマップを調べる必要が有るか否かを決定するために、正規化ビットマップを調べ得る。正規化ビットマップ内のエントリが1である場合、セクタビットマップを調べる必要はない。
例えば、図8を参照すると、セクタビットマップが仮想ディスク範囲毎にどのように生成され、正規化ビットマップを生成するために用いられるかの特定の例を示す。図8は、4個のセクタビットマップテーブル802、804、806、808を示し、各セクタビットマップは仮想ディスク範囲内のセクタ毎に1ビットを有し得る。図8に示すセクタビットマップは、本願明細書に記載する技術を説明するために実寸ではなく、8ビットを有する(また、各仮想ディスク範囲は8個のセクタを有する)。正規化ビットマップ810、812は、完全に記述される各仮想ディスク範囲が1でマーク付けされることを示す。例えば、正規化ビットマップ810は、仮想ディスク範囲1及び仮想ディスク範囲2のための1ビットを有し、これらの仮想ディスク範囲が子仮想ディスクファイル600により完全に記述されることを示す。
問題は、全ての仮想ディスクパーサが正規化ビットマップを使用するよう構成され、これらの正規化ビットマップが永続的ではない可能性があるという点にある。この制限を克服するために、例示的な実施形態では、仮想ディスクパーサ404は、仮想ディスクファイルに正規化ビットマップを格納するよう構成され得る。しかしながら、全ての仮想ディスクパーサがそれらを理解し又はそれらを使用せず、仮想ディスクパーサは仮想ディスクファイル406に格納された正規化ビットマップを示すビットパターンを上書きし、削除し又は無効にし得るので、仮想ディスクパーサ404は、それらを使用する前にそれらを認証するよう構成され得る。
例示的な実施形態では、これらの正規化ビットマップは、仮想ディスクパーサ404により持続され、仮想ディスクパーサ404は仮想ディスクをブートするときにそれらを認証するよう構成され得る。一実施形態では、各正規化ビットマップは、メタデータ704に格納され得る正規化ビットマップ識別子(NB ID)、例えばランダム値、シーケンス番号、タイムスタンプ等を割り当てられ得る。図示のように、メタデータ704は、NB ID820として格納された識別子、及びNB ID822として格納された識別子を有する。さらに、正規化ビットマップの状態が関連付けられたセクタビットマップを正確に記述する場合は、識別子のコピーも各正規化ビットマップと関連して格納され得る。例えば、正規化ビットマップ810はNB ID814として格納された識別子を有するとして示され、正規化ビットマップ812はNB ID816を有するとして示される。NB IDは個々の正規化ビットマップに格納されるとして図示されるが、このように格納される必要はない。むしろ、NB IDは、BAT内のような仮想ディスクファイル700内のどこにでも格納できる。
仮想ディスクパーサ404は、仮想ディスクファイルを開くとき、関連する正規化ビットマップが有効か否か及び使用可能か否かを決定するために、NB IDを用いることができる。このように、正規化ビットマップを使用するよう構成される仮想ディスクパーサは、正規化ビットマップが有効か否か、及び仮想ディスクファイルが正規化ビットマップを使用しない仮想ディスクパーサにより依然として使用可能か否かを決定できる。例えば、これら2つの識別子が一致するという事実は、正規化ビットマップが有効であり再生成する必要がなく使用可能であることを示す。
仮想ディスクパーサ404が仮想ディスクファイルを書き込み/変更モードで開いた後(又は最初の書き込みが検出されたとき)、仮想ディスクパーサ404は、メタデータに格納された識別子を新しい識別子に変更するよう構成され得る。例えば、仮想ディスクパーサ404は、シーケンス番号を増大し、記憶装置106の更新を示すIOジョブを発行して、識別子に対する変更が永続的になるようにし得る。正規化ビットマップがそれらが記述するセクタビットマップの状態を正確に反映する場合には、正規化ビットマップと関連付けて格納された識別子も、メタデータと一致するよう更新され得る。識別子が一致しない場合には、仮想ディスクパーサ404は、正規化ビットマップを再構築し得る。
図9を参照すると、例示的な実施形態では、仮想ディスクファイルの複数の仮想ディスク範囲のためのセクタビットマップは、集約され、合成セクタビットマップに格納され得る。例えば、合成セクタビットマップ900は、仮想ディスクファイル702の仮想ディスク範囲0〜3のためのセクタビットマップを有し、合成セクタビットマップ902は仮想ディスクファイル700の仮想ディスク範囲0〜3のためのセクタビットマップを有する。また、正規化ビットマップは、上述と同じ技術を用いて合成セクタビットマップのために生成され得る。正規化ビットマップを構築するために用いられるデータが集約される点が異なる。
例示的な実施形態では、合成セクタビットマップ900、902は、仮想ディスク範囲のペイロードを格納するために用いられるセクションの先頭からセクタビットマップを除去するために用いられ得る。これは、ペイロードを基礎となる記憶装置のセクタサイズに揃えるという効果を有する。さらに、合成セクタビットマップ900及び/又は902を形成するために用いられるセクタビットマップの数は、少なくとも基礎となる記憶装置により用いられるセクタサイズの倍数に等しくなるよう選択され得る。
図9の構成は、例示的であり実寸ではない。むしろ、図9は、仮想ディスク範囲のためのセクタビットマップを集約し、それらを合成セクタビットマップに格納する概念を説明するために用いられる。特定の例では、仮想ディスク範囲は2MBの大きさであり、各セクタは4KBであるとする。これは、各仮想ディスク範囲が512個のセクタを有し、仮想ディスク範囲のセクタビットマップが512バイトを有することを意味する。合成セクタビットマップが1メガバイトに渡るよう構成される例では、合成セクタビットマップは2048個の仮想ディスクファイル範囲を記述するために用いることができる。合成セクタビットマップのサイズは、基礎となる記憶装置及び仮想ディスク範囲に揃えられるよう選択され得る。
以下に、動作手順を示す一連のフローチャートを示す。理解を容易にするために、フローチャートは、最初のフローチャートが全体的な「対局」図により実装を表し、以降のフローチャートが破線で示される更なる追加及び/又は詳細を提供するよう構成される。さらに、当業者は、破線で示した動作手順が任意と考えられることを理解する。
図10を参照すると、図4のコンピュータシステムのようなコンピュータシステムにより実行され得る動作手順を示す。動作1000は動作手順を開始する。動作1002は、コンピュータシステム400が、仮想ディスクファイルを開くよう構成される回路を含むことを示す。ここで、該仮想ディスクファイルは、第1の固有識別子、及び仮想ディスク内のデータの少なくとも一部を形成する仮想ディスク範囲データを有する。例えば、図4を参照すると、コンピュータシステム400は実行可能命令であり得る仮想ディスクパーサ404を有し得る。例示的な実施形態では、仮想ディスクパーサ404は、図1のプロセッサ102のようなプロセッサにより実行でき、仮想化システムファイルシステム408に仮想ディスクファイルを開く要求を発行し得る。特定の例では、要求は、別の仮想ディスクファイル親である仮想ディスクファイル、例えば図6の仮想ディスクファイル600、604、606又は610を開くためであり得る。ここで、ユーザは、仮想ディスクファイルに格納された情報の一部を変更するために該仮想ディスクファイルを開くことを決定しても良い。例えば、ユーザは、パッチを適用するために仮想マシンの仮想ディスクとして仮想ディスクファイルを開き、彼又は彼女は該仮想ディスクの内容に別の仮想ディスクファイルが依存していることを知らないと仮定する。別の特定の例では、ユーザは、ファイルの内容を閲覧するために、テキストファイルとして仮想ディスクファイルを開いても良い。図7を参照すると、特定の例では、仮想ディスクファイルは親の仮想ディスクファイル702であると仮定する。本例では、仮想ディスクパーサ404が親の仮想ディスクファイル702を開くとき、仮想ディスク範囲のペイロードデータ及びメタデータ704(固有識別子708として格納された第1の識別子を含む)が検出され得る。
図10を参照すると、動作1004は、コンピュータシステム400により実行され得る動作を示す。特に、例示的な実施形態のコンピュータシステム400は、仮想ディスク範囲データがどのようにインタープリットされるかに影響する情報を仮想ディスクファイルに書き込む試みを検出するのに応答して、仮想ディスクファイル内の第1の固有識別子を第2の固有識別子で上書きする仮想ディスクファイルを開いた後、仮想ディスクパーサ404は、プロセッサ102により実行され、格納するペイロードに影響を与えるデータに行われた変更を検出し得る。仮想ディスクパーサ404は、ペイロードに影響を与える第1の変更を行うよう指示されるときを検出できるロジックを有し得る。また、変更が行われる前に、仮想ディスクパーサ404は、固有ID708として格納された第1の固有識別子を第2の固有識別子に変更する1又は複数のIOジョブを記憶装置106に発行し得る。
例えば、仮想ディスクは仮想ディスクファイルからインスタンス化され、ユーザは仮想ディスクをデフラグしようと試みると仮定する。仮想ディスクパーサ404は、第1の仮想ディスク範囲に格納されたデータを第2の仮想ディスク範囲に移動する1又は複数のIOジョブを受信し得る。このIOジョブの受信に応答して、仮想ディスクパーサ404は、割り当てテーブル内の関係を変更することを決定し得る。この変更は、第1の仮想ディスク範囲を記述するために用いられる仮想ディスクファイルのセクションを第2の仮想ディスク範囲を記述するよう変更する。仮想ディスクパーサ404は、例えばメモリ内のビットを調べ、仮想ディスク範囲が変更されていないことを示す、ビットが設定されていないという決定により開かれるので、自身が格納する仮想ディスク範囲データが変更されたか否かを決定し得る。この決定に応答して、仮想ディスクパーサ404は、ランダム値又はランダム英数字値を用いて第2の値を生成し、固有ID708として格納された第1の固有識別子を第2の固有識別子に変更する1又は複数のIOジョブを記憶装置106に発行し得る。
図10に戻ると、動作1006は、コンピュータシステム400が、第2の固有識別子が仮想ディスクファイルの永続的コピーに書き込まれたと決定する回路を任意的に含み得ることを示す。文脈上、図4に戻ると、コンピュータシステム400は、第2の固有識別子がディスクに永続的になったことを決定できる回路、例えばプロセッサ102で動作する仮想ディスクパーサ404を有し得る。例えば、前段落の例を続けると、仮想ディスクパーサ404は、1又は複数のIOジョブを記憶装置106に送信した後に、記憶装置106にフラッシュを発行し得る。記憶装置106は、永続的記憶ユニット460にキャッシュ454をフラッシュし得る。また、仮想ディスクファイル702のディスク上コピーに固有識別子として格納された識別子は、第2の固有識別子に更新され得る。この動作の結果として、仮想ディスクパーサ404は、仮想ディスクファイル702から構築された仮想ディスク及び別の仮想ディスクファイルが損傷している可能性があることを決定し得る。
図10に戻ると、動作1008は、コンピュータシステム400が、第2の固有識別子が仮想ディスクファイルの永続的コピーに書き込まれたという決定に応答して、仮想ディスクファイルに対して情報を変更する回路を追加で有し得ることを示す。図4に戻ると、仮想ディスクパーサ404は、仮想ディスクファイル702のディスク上コピーに固有識別子708として格納された識別子が第2の固有識別子に更新されたと決定し、仮想ディスクファイル702に格納された情報を変更し得る。例えば、仮想ディスクパーサ404は、記憶装置106から肯定応答を受信することにより、フラッシュ動作が完了したと決定し得る。代替で、仮想ディスクパーサ404は、障害メッセージが受信されなかったので、フラッシュ動作が完了したと決定し得る。フラッシュが終了した後、仮想ディスクパーサ404は、仮想ディスクファイル702に変更を行い、変更を示す1又は複数のIOジョブを記憶装置106へ送信させ得る。
図11を参照すると、図10に示した動作と共に実行され得る代替動作を示す。図11は、動作1110を示す。動作1110は、一実施形態では、第1の固有識別子を上書きするよう構成された回路が、追加で、仮想ディスク範囲のビットパターンへの書き込みの試みを検出するのに応答して、第1の固有識別子を上書きするよう構成され得ることを示す。例えば、図7に戻り、ユーザは親仮想ディスクファイル702から仮想ディスク402をインスタンス化し、仮想ディスク範囲のビットパターンに変更を生じるデータを変更すると仮定する。例えば、ユーザは、ファイルの内容を消去すると仮定する。仮想ディスクパーサ404は、仮想ディスク範囲に全て0を書き込む要求を示すIOジョブを受信し、これが、仮想ディスクファイル702が開かれて以来、仮想ディスクファイル702に対する最初の変更であると決定し得る。この決定に応答して、仮想ディスクパーサ404は、1又は複数のIOジョブを記憶装置106に発行し、固有識別子708として格納された第1の識別子を第2の固有識別子で上書きし得る。
図11に戻ると、動作1112は、例示的な実施形態では、コンピュータシステム400は、仮想ディスクファイルから得た第2の固有識別子が子仮想ディスクファイルに格納された固有識別子に等しくないという決定に応答して、仮想ディスクファイルをインスタンス化する要求を拒否するよう構成される回路を任意的に有し得ることを示す。例えば、図7に戻り、ユーザが仮想ディスクファイル700及び仮想ディスクファイル702の両方から仮想ディスク402をインスタンス化しようと試みた後のあるときを仮定する。本例では、仮想ディスクパーサ404は、子仮想ディスクファイル700を開き、親仮想ディスクファイル702へのパス、並びに親の固有識別子710として格納された識別子、本例では第1の固有識別子を決定し得る。次に、仮想ディスクパーサ404は、親仮想ディスクファイル702の位置を特定し、親仮想ディスクファイル702を開き、固有識別子708として格納された識別子、本例では第2の固有識別子の位置を特定し得る。仮想ディスクパーサ404は、第1の識別子が第2の識別子と等しくないと決定し得る。これは、親仮想ディスクファイル702が変更されたという事実を示す。そして、仮想ディスクパーサ404は、仮想ディスク402をインスタンス化する要求を拒否し得る。特定の例では、仮想ディスクパーサ404は、基本仮想ディスクファイルが有する変更が仮想ディスク402を無効にしたので、仮想ディスク402が損傷していることを示すテキストを含むダイアログボックスを表示させても良い。
図11を参照すると、動作1114は、例示的な実施形態では、コンピュータシステム400は、ユーザ入力に応答して、第2の固有識別子を第1の固有識別子に変更するよう構成された回路を有し得ることを示す。例えば、図7に戻り、ユーザは仮想ディスク402をインスタンス化しようと試みると仮定する。先行する段落で説明したように要求を拒否するのではなく、仮想ディスクパーサ404は、仮想ディスク402が損傷しているか否かに拘わらず、選択された場合に仮想ディスクパーサ404に仮想ディスク402をインスタンス化するよう試みるよう指示する選択肢を含むダイアログボックスを生じ得る。仮想ディスク402を開くのに成功した場合に、仮想ディスクパーサ404は、永続的固有識別子710として格納された識別子、つまり第1の固有識別子をコピーし、固有識別子708として格納された識別子、つまり第2の固有識別子を上書きし、修復動作が成功したことを示し得る。
図11に戻ると、動作1116は、例示的な実施形態では、コンピュータシステム400は、子仮想ディスクファイルにより完全に記述されるグループ内の仮想ディスク範囲を識別する情報と数値を関連付けるよう構成される回路、仮想ディスクファイル内のデータが変更されたという決定に応答して、子仮想ディスクファイル内の数値のコピーを第2の数値に更新するよう構成される回路、及び情報がグループ内の仮想ディスク範囲の状態を正確に反映するという決定に応答して、情報に関連付けられた数値を第2の数値に更新するよう構成される回路を有し得ることを示す。例えば、仮想ディスク402はインスタンス化され、仮想ディスクパーサ404はランダムアクセスメモリ内に正規化ビットマップをロードすると仮定する。正規化ビットマップは、正規化ビットマップ識別子、例えばランダムな数値、シーケンス番号等と関連付けられ得る。特定の例では、正規化ビットマップは図8の正規化ビットマップ810と同様である。図示のように、正規化ビットマップは、正規化ビットマップ識別子814として格納された識別子と関連付けられ得る。
仮想ディスクパーサ404は、例示的な実施形態では、仮想ディスクファイル700内のデータ、例えばメタデータ及び/又はペイロードデータを変更する要求の受信に応答して、仮想ディスクファイル700が変更されたか否かを決定するよう構成され得る。仮想ディスクパーサ404は、これが仮想ディスクファイル700が開かれて以来、最初の変更であるかどうかを知るために、メモリ内の識別子を調べ得る。この構成では、変更が、仮想ディスクファイル700が開かれて以来最初のものであるとき、仮想ディスクパーサ404は、変更を示す1又は複数のIOジョブを記憶装置106に発行させることにより、NB識別子820として格納された識別子を第2のNB識別子に変更し得る。代替の構成では、仮想ディスクパーサ404は、仮想ディスクファイル700が読み出し/変更モードで開かれると直ぐに、変更を示す1又は複数のIOジョブを記憶装置106に発行させることにより、NB識別子720として格納された識別子を第2のNB識別子に変更し得る。この時点で、仮想ディスクファイル700のディスク上コピーは、正規化ビットマップ値720及び正規化ビットマップ値814に対して異なる識別子を有し、次に仮想ディスクファイル700が仮想ディスクパーサ404により開かれたとき仮想ディスクパーサ404がクラッシュした場合、数値は一致しない。これは、正規化ビットマップ810が、正規化ビットマップ810がカバーするセクタビットマップの内容を正確に反映しないことを示す。
仮想ディスクパーサ404が正規化ビットマップを維持するよう、例えば仮想ディスク範囲0〜4のセクタビットマップが完全に記述された状態に遷移するときに正規化ビットマップを更新するようプログラミングされる例では、仮想ディスクパーサ404は、正規化ビットマップ識別子814を、永続的正規化ビットマップ識別子820に等しくなるよう変更し、変更を永続的にするために記憶装置106にIOジョブを発行するよう構成され得る。以上に詳述したように、正規化ビットマップ810のメモリ内バージョンに対して行われる変更が永続的記憶ユニット460にコミットし成功することを保証するために、トランザクションログ又は特定の他のロギングメカニズムが用いられる例では、正規化ビットマップ識別子814として格納された識別子に対する変更は、仮想ディスクパーサ404が子仮想ディスクファイル700を閉じるとき、又は変更が永続的正規化ビットマップ数値820に対して行われると直ぐに行われ得る。
図11に戻ると、動作1118は、例示的な実施形態では、コンピュータシステム400が、限定ではないが、仮想ディスクファイルのセクションに書き込まれた仮想ディスク範囲のグループのセクタビットマップにアクセスするよう構成される回路を有し得ることを示す。仮想ディスクファイルのセクタは、セクションが仮想ディスクファイルを格納するよう構成された記憶装置のセクタと揃えられるよう選択された仮想ディスクファイルオフセットを有する。例示的な実施形態では、IOジョブは、仮想ディスクパーサ404により受信され得る。これは、仮想ディスクパーサ404に、合成セクタビットマップ900を格納する仮想ディスクファイル702のセクションにアクセスさせる。本例では、合成セクタビットマップ900は、仮想ディスクファイル702に書き込まれるので、記憶装置106の基礎的セクタサイズに揃えられる。このように揃えられることは、合成セクタビットマップ900及び仮想ディスク範囲ペイロードが記憶装置106に揃えられ、したがってディスクに基づく記憶装置から読み出すときにトラック境界を跨る機会が減少するので、仮想ディスク402の全体性能を向上させる。
図12を参照すると、動作1200、1202、1204、1206、1208を含む動作手順を示す。動作1200を参照すると、動作の開始を示す。動作1202は、コンピュータシステム400の回路により実行され得る動作、つまり仮想ディスクをインスタンス化する動作を示す。ここで、該仮想ディスクは、第1の仮想ディスクファイルにより記述される仮想ディスク範囲のグループを有し、第1の仮想ディスクファイルは第1の識別子を有する。例えば、図4を参照し、ユーザ又は管理プログラムは仮想マシン410を起動すると仮定する。このような信号の受信に応答して、仮想化システム420は、仮想マシン410をインスタンス化する動作処理を開始し得る。処理の一部は、仮想ディスクパーサ404が、ゲストオペレーティングシステム412を形成するビットパターンを一緒に格納する仮想ディスクファイルを開く信号であり得る。仮想ディスクパーサ404は、例えば、子仮想ディスクファイル700及び親仮想ディスクファイル702を開き、それらを用いて図7の仮想ディスク402をインスタンス化すると決定し得る。図8に示すように、仮想ディスクファイル700は、正規化ビットマップ識別子820として格納された識別子を有するメタデータ804を有し得る。
図12に戻ると、動作1204は、コンピュータシステム400が、仮想ディスクファイルにより完全に記述されるグループ内の仮想ディスク範囲を識別する情報をランダムアクセスメモリ内にロードする回路を含むよう構成され得ることを示す。ここで、該情報は、第1の識別子のコピーに関連付けられる。次に、仮想ディスクパーサ404は、正規化ビットマップをランダムアクセスメモリ104内にロードし得る。代替で、情報は、テーブル、又は正規化ビットマップ以外のデータ構造に編成され得る。正規化ビットマップを用いる特定の例では、正規化ビットマップは、図8の正規化ビットマップ810と同様であり、仮想ディスク402の仮想ディスク範囲のグループが子仮想ディスクファイル700により完全に記述されるか否かを示すために用いられ得る。実行時間中、正規化ビットマップが仮想ディスク範囲は完全に永続的である、つまり全てのセクタは仮想ディスクファイル700により記述されると示す場合には、仮想ディスクパーサ404は、セクタビットマップを調べることなく、ペイロードを読み出し得る。本例では、ランダムアクセス104内にロードされた正規化ビットマップ810は、NB ID814として格納されたNB ID820として格納された同じ識別子を有し得る。仮想ディスクパーサ404は、識別子を比較し、正規化ビットマップ810が有効であると決定し、正規化ビットマップが記述する各セクタビットマップを読み出すことにより正規化ビットマップを再生成する代わりに、それを用い得る。
動作1206を参照すると、コンピュータシステム400が、第1の仮想ディスクファイルを開いた後に、第1の仮想ディスクファイル内の第1の識別子を第2の識別子に変更するよう構成される回路も含み得ることを示す。例えば、図8を参照すると、正規化ビットマップ810がメモリにロードされた後に、仮想ディスクパーサ404は、正規化ビットマップ識別子820として格納された識別子を第2の識別子に、例えば第2のランダムに生成された英数字値等に変更し得る。例示的な構成では、仮想ディスクパーサ404は、仮想ディスクファイル700が変更されるとき、正規化ビットマップ識別子820として格納された識別子を変更するよう構成され得る。
図12に戻ると、動作1208は、コンピュータシステム400が、情報がグループ内の仮想ディスク範囲の状態を正確に反映するという決定に応答して、情報に関連付けられた第1の識別子のコピーを第2の識別子に更新する回路を有し得ることを示す。文脈上、図8を再び参照すると、仮想ディスクパーサ404は、正規化ビットマップ数値814として格納された識別子を変更し、変更を示す1又は複数のIOジョブを記憶装置106に発行させ及び永続的記憶ユニット460により持続されるよう構成され得る。正規化ビットマップ810がそれがカバーするセクタビットマップの状態を正確に反映するという決定がなされた場合、仮想ディスクパーサ404は、NB ID814として格納される識別子を変更し、NB ID820として格納される識別子と一致させるように構成され得る。
図13を参照すると、図12に示した動作と共に実行され得る追加動作を示す。動作1310に注意を向けると、コンピュータシステム400が、第1の仮想ディスクファイル内の固有識別子が親仮想ディスクファイル内にある固有識別子と一致するという決定に応答して、仮想ディスクをインスタンス化する回路を追加で含み得ることを示す。例えば、文脈上、図7を参照すると、正規化ビットマップの識別子を更新する前に、仮想ディスクパーサ404は、親の固有ID710として格納された識別子が固有ID708として格納された識別子と一致すると決定することにより、仮想ディスクファイル700と702との間のリンクは有効であると決定し得る。この決定に応答して、仮想ディスクパーサ404は、仮想ディスク402を達成し得る。また、識別子が一致するという事実は、子仮想ディスクファイル700が生成されて以来、親仮想ディスクファイル702がそのペイロードデータに影響を与えるように変更されなかったという事実を示す。
図13に戻ると、動作1312は、例示的な実施形態では、コンピュータシステム400は、限定ではなく、第1の仮想ディスクファイル内の固有識別子が親仮想ディスクファイル内にある固有識別子と一致しないという決定に応答して、仮想ディスクファイルをインスタンス化する要求を拒否する回路を追加で有し得ることを示す。例えば、図7に戻り、ユーザが仮想ディスクファイル700及び仮想ディスクファイル702の両方から仮想ディスク402をインスタンス化しようと試みた後のあるときを仮定する。本例では、仮想ディスクパーサ404は、子仮想ディスクファイル700を開き、親仮想ディスクファイル702へのパス、並びに親の固有識別子710として格納された識別子、本例では第1の固有識別子を決定し得る。次に、仮想ディスクパーサ404は、親仮想ディスクファイル702の位置を特定し、親仮想ディスクファイル702を開き、固有識別子708として格納された識別子、本例では第2の固有識別子の位置を特定し得る。仮想ディスクパーサ404は、第1の識別子が第2の識別子と等しくないと決定し得る。これは、親仮想ディスクファイル702が変更されたという事実を示す。そして、仮想ディスクパーサ404は、仮想ディスク402をインスタンス化する要求を拒否し得る。特定の例では、仮想ディスクパーサ404は、基本仮想ディスクファイルが有する変更が仮想ディスク402を無効にしたので、仮想ディスク402が損傷していることを示すテキストを含むダイアログボックスを表示させても良い。
図13に戻ると、動作1314は、コンピュータシステム400が、グループ内の仮想ディスク範囲が変更されたという決定に応答して、第1の仮想ディスクファイル内の第1の識別子を第2の識別子に変更するよう構成される回路を追加で有し得ることを示す。例示的な実施形態では、仮想ディスク402がインスタンス化されるとき、仮想ディスクパーサ404は、仮想ディスクパーサが仮想ディスクファイル700の内容を変更しようとする試みを検出すると、NB ID820として格納された第1の識別子を第2の識別子に変更する要求を示すIOジョブを発行し得る。
図13の説明を続けると、動作1316は、例示的な実施形態では、コンピュータシステム400が、仮想ディスクファイルと閉じる処理中に、情報と関連付けられた第1の識別子のコピーを第2の識別子に変更する回路を有し得ることを示す。再び図8を参照すると、仮想ディスクパーサ404は、仮想ディスクファイル402を閉じるとき、正規化ビットマップ数値814として格納された数値を変更するよう構成され得る。仮想ディスクファイル700を閉じる前に、仮想ディスクパーサ404は、第1の識別子を第2の識別子に変更する変更を、仮想ディスクファイル700に書き込み得る。これは、また、NB ID810として格納されたディスク上の第1の識別子を第2の識別子に変更するために、1又は複数のIOジョブを記憶装置106に発行させる。
図13に戻ると、動作1318は、例示的な実施形態では、コンピュータシステム400は、仮想ディスクファイルは変更されたという決定に応答して、情報に関連付けられた第1の識別子のコピーを第2の固有識別子に変更するよう構成された回路を有し得ることを示す。例えば、再び図8を参照すると、仮想ディスクパーサ404は、仮想ディスク402の実行時間中に、正規化ビットマップ識別子814として格納された識別子を、第1の識別子から第2の識別子に変更して、格納された識別子が正規化ビットマップ識別子820と一致するようにするよう構成され得る。本例では、トランザクションログ等は、仮想ディスクパーサ404が正規化ビットマップ810を、仮想ディスク範囲0〜4のセクタビットマップの状態を反映する状態に保持するために用いられ得る。
図13に戻ると、動作1320は、コンピュータシステム400が、仮想ディスクファイルのセクションに書き込まれた仮想ディスク範囲のグループのセクタビットマップにアクセスするよう構成される回路を有し得ることを示す。仮想ディスクファイルのセクションは、セクションが仮想ディスクファイルを格納するよう構成された記憶装置のセクタと揃えられるよう選択された仮想ディスクファイルオフセットを有する。例示的な実施形態では、IOジョブは、仮想ディスクパーサ404により受信され得る。これは、仮想ディスクパーサ404に、合成セクタビットマップ900を格納する仮想ディスクファイル602のセクションにアクセスさせる。本例では、合成セクタビットマップ900は、仮想ディスクファイル702に書き込まれるので、記憶装置106の基礎的セクタサイズに揃えられる。このように揃えられることは、合成セクタビットマップ900及び仮想ディスク範囲ペイロードが記憶装置106に揃えられ、したがってディスクに基づく記憶装置から読み出すときにトラック境界を跨る機会が減少するので、仮想ディスク402の全体性能を向上させる。
図13に戻ると、動作1322は、コンピュータシステム400が、親仮想ディスクファイルに基づく仮想ディスクの仮想ディスク範囲がどのようにインタープリットされるかに影響する親仮想ディスクファイル内の情報を変更しようとする試みを検出するよう構成される回路であって、親仮想ディスクファイルは第1のランダム値を有する、回路、親仮想ディスクファイル内の第1のランダム値を第2のランダム値で上書きする回路、仮想ディスクファイルをフラッシュする回路、フラッシュが完了したことを示す信号の受信に応答して親仮想ディスクファイル内の情報を変更するよう構成される回路、を任意的に有し得ることを示す。例えば、図7を参照すると、仮想ディスクパーサ404は、仮想ディスクファイル702に適用される場合、IOジョブが仮想ディスク402がどのように公開されるかに影響するかを決定すると仮定する。例えば、仮想ディスクパーサ404は、仮想ディスクパーサ404に親仮想ディスクファイル702のペイロードデータを変更させる書き込み動作、仮想ディスク402の終わりを記述する情報を変更する書き込み動作、割り当てテーブルエントリを変更し、該変更が親仮想ディスクファイル702のどのセクションが仮想ディスク範囲を記述するために用いられるかを変更する書き込み動作、等を検出するよう構成され得る。このような書き込み動作の検出に応答して、仮想ディスクパーサ404は、固有識別子708として格納された第1のランダム値を第2のランダム値に変更し、フラッシュを発行し(フラッシュは、第2のランダム値を記憶装置106により永続的にさせる)、次に書き込み動作を仮想ディスクファイル702に適用するよう構成され得る。
図13に戻ると、動作1324は、コンピュータシステム400が、情報が第1の数値のコピーに関連付けられ、及び第1の仮想ディスクファイルが第2の数値を有するという決定に応答して、更新された情報を引き出すよう構成される回路を任意的に有し得ることを示す。例えば、図8を参照し、仮想ディスクパーサ404は、例えば子仮想ディスクファイル700及び親仮想ディスクファイル702から仮想ディスク402をインスタンス化すると仮定する。本例では、仮想ディスクパーサ404は、主記憶及びメタデータ704に正規化ビットマップ810をロードし得る。仮想ディスクパーサ404は、正規化ビットマップ識別子814として格納された識別子を正規化ビットマップ識別子820として格納された識別子と比較し、2つの識別子が一致しない、つまり正規化ビットマップ810は仮想ディスク範囲0〜4のセクタビットマップの状態を反映していないと決定し得る。この決定に応答して、仮想ディスクパーサ404は、仮想ディスク範囲0〜4のセクタビットマップを読み出すことにより、正規化ビットマップ810の新しい情報を引き出すよう構成され得る。対応するセクタビットマップにより完全に定められる各仮想ディスク範囲について、つまり、対応するビットマップは全て1を有し、仮想ディスクパーサ404は正規化ビットマップ810に1を格納し得る。対応するセクタビットマップにより完全に定められない各仮想ディスク範囲について、仮想ディスクパーサ404は正規化ビットマップ810に0を格納し得る。正規化ビットマップ810が関連する仮想ディスク範囲を反映するために更新された後、仮想ディスクパーサ404は、仮想ディスク402の実行時間中に正規化ビットマップ810を使用できる。
図14を参照すると、動作1400、1402、1404、1406、1408及び1410を含む、コンピュータシステム400により実行可能な動作手順を示す。動作1400は動作手順を開始する。動作1402は、一実施形態では、コンピュータシステム400が、親仮想ディスクファイルを開く回路を有するよう構成され得ることを示す。ここで、該親仮想ディスクファイルは子仮想ディスクファイルにリンク付けされ、親仮想ディスクファイルは第1の識別子を有し、子仮想ディスクファイルは第1の識別子のコピーを有する。例えば、図4を参照すると、コンピュータシステム400は実行可能命令のモジュールであり得る仮想ディスクパーサ404を有し得る。例示的な実施形態では、仮想ディスクパーサ404は、図1のプロセッサ102のようなプロセッサにより実行でき、仮想化システムファイルシステム408に仮想ディスクファイルを開く要求を発行し得る。特定の例では、要求は、別の仮想ディスクファイル親である仮想ディスクファイル、例えば図6の仮想ディスクファイル600、604、606又は610を開くためであり得る。ここで、ユーザは、格納された情報の一部を変更するために仮想ディスクファイルを開くことを決定しても良い。例えば、ユーザは、パッチを適用するために仮想マシンの仮想ディスクとして仮想ディスクファイルを開き、彼又は彼女は該仮想ディスクの内容に別の仮想ディスクファイルが依存していることを知らないと仮定する。
図14に戻ると、動作1404は、コンピュータシステム400が、仮想ディスク範囲を記述するデータを変更する試みの検出に応答して、仮想ディスクファイル内の第1の識別子を第2の識別子で上書きする回路を追加で有し得ることを示す。仮想ディスクファイルを開いた後、仮想ディスクパーサ404は、プロセッサ102により実行され、格納するペイロードに影響を与えるデータに変更が行われたことを検出し得る。
図14に戻ると、動作1406は、コンピュータシステム400が、親仮想ディスクファイルの永続的コピーを格納するよう構成される記憶装置に、第1の識別子を第2の識別子で上書きすることを示す入力/出力ジョブを発行する回路を追加で有する例を示す。仮想ディスクパーサ404は、仮想ディスク範囲のペイロードに影響を与える変更を行うよう指示されるときを検出できるロジックを有し得る。また、変更が行われる前に、仮想ディスクパーサ404は、固有ID708として格納された第1の固有識別子のディスク上コピーを第2の固有識別子に変更する1又は複数のIOジョブを記憶装置106に発行し得る。
図14の動作1408を参照すると、一実施形態では、コンピュータシステム400は、記憶装置にフラッシュコマンドを発行する回路を有し得る。例えば、再び図4を参照すると、第1の識別子を第2の識別子で上書きする要求を示すIOジョブの後に、仮想ディスクパーサ404は、記憶装置106にフラッシュコマンドを送信し得る。記憶装置106は、フラッシュコマンドを受信し、キャッシュ454の内容を永続的記憶ユニット460、例えばプラッタ又は1又は複数のフラッシュメモリセルに書き込み得る。そして、第2のランダム値は永続的であり得る。
図14の動作1410は、コンピュータシステム400が、記憶装置が内部キャッシュの内容を持続させることを示す信号の受信に応答して、仮想ディスク範囲を記述するデータを変更する回路を追加で有し得ることを示す。フラッシュコマンドが発行され、失敗メッセージが受信されない、又はフラッシュが成功したことを示す肯定応答が受信された後、仮想ディスクパーサ404は、仮想ディスク範囲を記述する親仮想ディスクファイルのセクションを変更し得る。これはまた、1又は複数のIOジョブを記憶装置106へ送信させ、変更を永続的にする。
図15を参照すると、図14に示した動作と共に実行され得る追加動作を示す。動作1512を参照すると、コンピュータシステムが仮想ディスクファイルの永続的コピー内の第2の識別子が子仮想ディスクファイルに格納された第1の識別子に一致しないという決定に応答して、仮想ディスクをインスタンス化する要求を拒否する回路を有するよう任意的に構成され得ることを示す。例えば、図7に戻り、ユーザが仮想ディスクファイル702及び仮想ディスクファイル702の両方から仮想ディスク402をインスタンス化しようと試みた後のあるときを仮定する。本例では、仮想ディスクパーサ404は、第1の識別子が第2の識別子と等しくないと決定し得る。これは、親仮想ディスクファイル702が変更されたという事実を示す。そして、仮想ディスクパーサ404は、仮想ディスク402をインスタンス化する要求を拒否し得る。特定の例では、仮想ディスクパーサ404は、基本仮想ディスクファイルが有する変更が仮想ディスク402を無効にしたので、仮想ディスク402が損傷していることを示すテキストを含むダイアログボックスを表示させても良い。
図15の説明を続けると、動作1514は、コンピュータシステム400は、ユーザ入力に応答して、固有識別子を前の値に変更する回路を含み得ることを示す。例えば、図7に戻り、ユーザは仮想ディスク402をインスタンス化しようと試みると仮定する。先行する段落で説明したように要求を拒否するのではなく、仮想ディスクパーサ404は、仮想ディスク402が損傷しているか否かに拘わらず、仮想ディスク402をインスタンス化しようと試みるよう仮想ディスクパーサ404に指示するダイアログボックスを表示させ得る。仮想ディスク402を開くのに成功した場合に、仮想ディスクパーサ404は、親の固有識別子710として格納された識別子、つまり第1の固有識別子をコピーし、固有識別子708として格納された識別子、つまり第2の固有識別子を上書きし、修復動作が成功したことを示し得る。
図15の説明を続けると、動作1516は、コンピュータシステム400が、仮想ディスクをインスタンス化する回路であって、仮想ディスクは親仮想ディスクファイルにより記述される仮想ディスク範囲を有し、仮想ディスク範囲は子仮想ディスクファイルにより記述され、子仮想ディスクファイルはシーケンス番号を有する、回路、子仮想ディスクファイルにより完全に記述される子仮想ディスクファイル内の仮想ディスク範囲のサブセットを識別する情報を、ランダムアクセスメモリにロードする回路であって、該情報はシーケンス番号のコピーと関連付けられる、回路、子仮想ディスクファイルが変更されたという決定に応答して、子仮想ディスクファイル内のシーケンス番号を増大する回路、情報が子仮想ディスクファイル内の仮想ディスク範囲のサブセットの状態を正確に反映するという決定に応答して、情報に関連付けられたシーケンス番号を増大する回路、を有し得ることを示す。例えば、仮想ディスク402はインスタンス化され、仮想ディスクパーサ404はランダムアクセスメモリ内に正規化ビットマップをロードする代替で、情報は、正規化ビットマップ以外のテーブルに編成され得る。正規化ビットマップは、正規化ビットマップ識別子、例えばランダムな数値、シーケンス番号等と関連付けられ得る。また、識別子は、正規化ビットマップがそれがカバーするセクタビットマップに対して正確であるときを示し得る。特定の例では、正規化ビットマップは図8の正規化ビットマップと同様である。図示のように、正規化ビットマップは、正規化ビットマップ識別子814として格納された識別子と関連付けられ得る。
仮想ディスクパーサ404は、例示的な実施形態では、仮想ディスクファイル702内のデータ、例えばメタデータ及び/又はペイロードデータを変更する要求の受信に応答して、仮想ディスクファイル702が変更されたか否かを決定するよう構成され得る。仮想ディスクパーサ404は、これが仮想ディスクファイル702が開かれて以来、最初の変更であるかどうかを知るために、メモリ内の識別子を調べ得る。この構成では、変更が、仮想ディスクファイル702が開かれて以来最初のものであるとき、仮想ディスクパーサ404は、変更を示す1又は複数のIOジョブを記憶装置106に発行させることにより、NB識別子820として格納された識別子を第2のNB識別子に変更し得る。代替の構成では、仮想ディスクパーサ404は、仮想ディスクファイル702が読み出し/変更モードで開かれると直ぐに、変更を示す1又は複数のIOジョブを記憶装置106に発行させることにより、NB識別子820として格納された識別子を第2のNB識別子に変更し得る。この時点で、仮想ディスクファイル702のディスク上バージョンは、正規化値820及び正規化ビットマップ値814に対して異なる識別子を有し、次に仮想ディスクファイル602が仮想ディスクパーサ404により開かれたとき仮想ディスクパーサ404がクラッシュした場合、数値は一致しない。これは、正規化ビットマップ810が、正規化ビットマップ810がカバーするセクタビットマップの内容を正確に反映しないことを示す。
仮想ディスクパーサ404が正規化ビットマップを維持するよう、例えば仮想ディスク範囲0〜4のセクタビットマップが完全に記述された状態に遷移するときに正規化ビットマップを更新するようプログラミングされる例では、仮想ディスクパーサ404は、正規化ビットマップ識別子814を、永続的正規化ビットマップ識別子820に等しくなるよう変更し、変更を永続的にするために記憶装置106にIOジョブを発行するよう構成され得る。以上に詳述したように、正規化ビットマップ810のメモリ内バージョンに対して行われる変更が永続的記憶ユニット460にコミットし成功することを保証するために、トランザクションログ又は特定の他のロギングメカニズムが用いられる例では、正規化ビットマップ識別子814として格納された識別子に対する変更は、仮想ディスクパーサ404が子仮想ディスクファイル700を閉じるとき、又は変更が永続的正規化ビットマップ数値820に対して行われると直ぐに行われ得る。
図15の説明を続けると、動作1518は、コンピュータシステム400が、仮想ディスク範囲のグループのセクタビットマップを仮想ディスクファイルのセクションに書き込む回路であって、仮想ディスクファイルのセクションは、セクションが仮想ディスクファイルを格納するよう構成される記憶装置のセクタに揃えられるよう選択された仮想ディスクファイルオフセットを有する、回路を含み得ることを示す。例示的な実施形態では、IOジョブは、仮想ディスクパーサ404により受信され得る。これは、仮想ディスクパーサ404に、合成セクタビットマップ900を格納する仮想ディスクファイル602のセクションにアクセスさせる。本例では、合成セクタビットマップ900は、仮想ディスクファイル702に書き込まれるので、記憶装置106の基礎的セクタサイズに揃えられる。このように揃えられることは、合成セクタビットマップ900及び仮想ディスク範囲ペイロードが記憶装置106に揃えられ、したがってディスクに基づく記憶装置から読み出すときにトラック境界を跨る機会が減少するので、仮想ディスク402の全体性能を向上させる。
以上の詳細な説明では、例及び/又は動作図を介してシステム及び/又は処理の種々の実施形態を説明した。このようなブロック図、及び/又は例が1又は複数の機能及び/又は動作を含む限り、当業者は、このようなブロック図又は例に含まれる各機能及び/又は動作が、広範なハードウェア、ソフトウェア、ファームウェア又は実質的にこれらの如何なる組合せにより個々に及び/又は集合的に実施され得ることを理解する。
本願明細書に記載された本発明の主題の特定の態様が示され説明されたが、当業者は、本願明細書の教示に基づき、本願明細書に記載された主題およびその広範な態様から逸脱することなく変更及び修正が為されても良く、したがって添付の請求の範囲が、その範囲内に、そのような全ての変更及び修正を本願明細書に記載された主題の真の精神及び範囲内にあるものとして包含することを理解する。

Claims (10)

  1. プロセッサにより実行されると該プロセッサに、
    複数の仮想ディスクファイルのチェーンのうちの第1の仮想ディスクファイルを開き、該第1の仮想ディスクファイルは、第1の固有識別子と、仮想ディスク内のデータの少なくとも一部を形成する仮想ディスク範囲データと、を有し、前記第1の仮想ディスクファイルの割り当てテーブルは、前記仮想ディスク範囲データが前記第1の仮想ディスクファイルのセクションにより定められるか否か、又は前記仮想ディスク範囲データが前記複数の仮想ディスクファイルのチェーンのうちの第2の仮想ディスクファイルにより定められるか否かを示す状態情報を有し、
    前記割り当てテーブルにアクセスし、前記仮想ディスク範囲データが前記第1の仮想ディスクファイルのセクションにより定められるか否かを決定し、
    ユーザペイロード、ディスク終端識別子、又は異なるセクションに向けられるリード動作を生じる前記割り当てテーブル内のエントリを変更する情報を前記第1の仮想ディスクファイルに書き込む試みの検出に応答して、前記第1の仮想ディスクファイル内の前記第1の固有識別子を第2の固有識別子で上書きし、
    前記第2の固有識別子が、物理的記憶装置に永続的に格納される、前記第1の仮想ディスクファイルコピーに書き込まれたことに応答して、前記第1の仮想ディスクファイルに前記情報を書き込ませる、
    命令を有するコンピュータ可読記憶媒体。
  2. 実行されると前記プロセッサに、
    正規化ビットマップ識別子を、子仮想ディスクファイルのみにより定められる仮想ディスク範囲をグループとして識別する正規化ビットマップと関連付け、
    前記第1の仮想ディスクファイル内のデータが変更されたに応答して、前記子仮想ディスクファイル内の前記正規化ビットマップ識別子のコピーを第2の正規化ビットマップ識別子に更新し、
    前記正規化ビットマップが前記グループとして識別された前記仮想ディスク範囲の状態を正確に反映するに応答して、前記情報に関連付けられた前記正規化ビットマップ識別子を前記第2の正規化ビットマップ識別子に更新させる、
    命令を更に有する請求項1に記載のコンピュータ可読記憶媒体。
  3. プロセッサと、
    給電されると前記プロセッサと電子的に通信するメモリと、
    を有し、前記メモリは、プロセッサにより実行されると該プロセッサに、
    複数の仮想ディスクファイルのチェーンのうちの第1の仮想ディスクファイルを開き、該仮想ディスクファイルは、第1の固有識別子と、仮想ディスク内のデータの少なくとも一部を形成する仮想ディスク範囲データと、を有し、前記第1の仮想ディスクファイルの割り当てテーブルは、前記仮想ディスク範囲データが前記第1の仮想ディスクファイルのセクションにより定められるか否か、又は前記仮想ディスク範囲データが前記複数の仮想ディスクファイルのチェーンのうちの第2の仮想ディスクファイルにより定められるかどうかを示す状態情報を有し、
    前記割り当てテーブルにアクセスし、前記仮想ディスク範囲データが前記第1の仮想ディスクファイルのセクションにより定められるか否かを決定し、
    ユーザペイロード、ディスク終端識別子、又は異なるセクションに向けられるリード動作を生じる前記割り当てテーブル内のエントリを変更する情報を前記第1の仮想ディスクファイルに書き込む試みの検出に応答して、前記第1の仮想ディスクファイル内の前記第1の固有識別子を第2の固有識別子で上書きし、
    前記第2の固有識別子が、物理的記憶装置に永続的に格納される、前記第1の仮想ディスクファイルのコピーに書き込まれたことに応答して、前記第1の仮想ディスクファイルに前記情報を書き込ませる、
    命令を有する、コンピュータシステム。
  4. 実行されると前記プロセッサに、
    前記第1の仮想ディスクファイル内の固有識別子が親仮想ディスクファイル内にある固有識別子に一致することに応答して、前記仮想ディスクをインスタンス化させる、
    命令を更に有する、請求項3に記載のコンピュータシステム。
  5. 実行されると前記プロセッサに、
    前記第1の仮想ディスクファイル変更されたことに応答して、前記情報と関連付けられた前記第1の固有識別子の前記コピーを前記第2の固有識別子に変更し、
    前記情報に対して行われた変更のログをとらせる
    命令を更に有する、請求項3に記載のコンピュータシステム。
  6. 実行されると前記プロセッサに、
    ユーザペイロード、ディスク終端識別子、又は異なるセクションに向けられるリード動作を生じる前記割り当てテーブル内のエントリを変更する親仮想ディスクファイル内の情報を変更しようとする試みを検出し、
    前記第1の仮想ディスクファイルを物理的記憶装置に永続的に書き込み
    前記の永続的な書き込みが完了したことを示す信号の受信に応答して、親仮想ディスクファイル内の前記情報を変更させる、
    命令を更に有する、請求項3に記載のコンピュータシステム。
  7. 複数の仮想ディスクファイルのチェーンのうちの親仮想ディスクファイルを開くステップであって、前記親仮想ディスクファイルは子仮想ディスクファイルにリンク付けされ、前記親仮想ディスクファイルは第1の識別子を有し、前記子仮想ディスクファイルは前記第1の識別子のコピーを有し、前記親仮想ディスクファイルの割り当てテーブルは、仮想ディスク範囲データが前記親仮想ディスクファイルのセクションにより定められるか否か、又は前記仮想ディスク範囲データが前記複数の仮想ディスクファイルのチェーンのうちの第2の仮想ディスクファイルにより定められるか否かを示す状態情報を有する、ステップと、
    前記割り当てテーブルにアクセスし、前記仮想ディスク範囲データが前記親仮想ディスクファイルのセクションにより定められるか否かを決定するステップと、
    前記仮想ディスク範囲データを変更する試みの検出に応答して、前記仮想ディスクファイル内の前記第1の識別子を第2の識別子で上書きするステップと、
    前記親仮想ディスクファイルのコピーを永続的に格納するよう構成される記憶装置に、前記第1の識別子を前記第2の識別子で上書きすることを示す入力/出力ジョブを発行するステップと、
    前記記憶装置にフラッシュコマンドを発行するステップと、
    前記記憶装置内部キャッシュの内容が永続的に書き込まれたことを示す信号の受信に応答して、前記仮想ディスク範囲データを変更するステップと、
    を有するコンピュータが実施する方法。
  8. 前記仮想ディスクファイルの前記コピー内の前記第2の識別子が前記子仮想ディスクファイルに格納された前記第1の識別子と一致しないことに応答して、仮想ディスクをインスタンス化する要求を拒否するステップ、
    を更に有する請求項7に記載のコンピュータが実施する方法。
  9. 想ディスクをインスタンス化するステップであって、前記仮想ディスクは前記親仮想ディスクファイルにより定められる仮想ディスク範囲と前記子仮想ディスクファイルにより定められる仮想ディスク範囲とを有し、前記子仮想ディスクファイルはシーケンス番号を有する、ステップと、
    前記子仮想ディスクファイルにより完全に記述される前記仮想ディスクファイル内の前記仮想ディスク範囲のサブセットを識別する情報を、ランダムアクセスメモリにロードするステップであって、前記情報は前記シーケンス番号のコピーと関連付けられる、ステップと、
    前記子仮想ディスクファイルは変更されたことに応答して、前記子仮想ディスクファイル内の前記シーケンス番号を増大するステップと、
    前記情報は前記子仮想ディスクファイル内の仮想ディスク範囲の前記サブセットの状態を正確に反映するに応答して、前記情報と関連付けられた前記シーケンス番号を増大するステップと、
    を更に有する請求項7に記載のコンピュータが実施する方法。
  10. 仮想ディスク範囲のグループのセクタビットマップを前記仮想ディスクファイルに書き込むステップであって、前記仮想ディスクファイルのセクションは、前記セクションが前記仮想ディスクファイルを格納するよう構成された記憶装置のセクタと揃えられるよう選択された仮想ディスクファイルオフセットを有する、ステップ、
    を更に有する請求項7に記載のコンピュータが実施する方法。
JP2014508334A 2011-04-26 2011-10-10 仮想記憶ディスク技術 Active JP5934344B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/094,620 US9519496B2 (en) 2011-04-26 2011-04-26 Detecting and preventing virtual disk storage linkage faults
US13/094,620 2011-04-26
PCT/US2011/055591 WO2012148448A1 (en) 2011-04-26 2011-10-10 Virtual disk storage techniques

Publications (2)

Publication Number Publication Date
JP2014517381A JP2014517381A (ja) 2014-07-17
JP5934344B2 true JP5934344B2 (ja) 2016-06-15

Family

ID=47068995

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014508334A Active JP5934344B2 (ja) 2011-04-26 2011-10-10 仮想記憶ディスク技術

Country Status (6)

Country Link
US (2) US9519496B2 (ja)
EP (1) EP2702493B1 (ja)
JP (1) JP5934344B2 (ja)
KR (1) KR101903817B1 (ja)
CN (1) CN103493028B (ja)
WO (1) WO2012148448A1 (ja)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US11449394B2 (en) 2010-06-04 2022-09-20 Commvault Systems, Inc. Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources
US10314594B2 (en) 2012-12-14 2019-06-11 Corquest Medical, Inc. Assembly and method for left atrial appendage occlusion
US10813630B2 (en) 2011-08-09 2020-10-27 Corquest Medical, Inc. Closure system for atrial wall
US10307167B2 (en) 2012-12-14 2019-06-04 Corquest Medical, Inc. Assembly and method for left atrial appendage occlusion
US8601473B1 (en) * 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US8966211B1 (en) * 2011-12-19 2015-02-24 Emc Corporation Techniques for dynamic binding of device identifiers to data storage devices
US9529808B1 (en) 2012-07-16 2016-12-27 Tintri Inc. Efficient and flexible organization and management of file metadata
US9117093B2 (en) * 2012-09-26 2015-08-25 Ca, Inc. Centralized, policy-driven maintenance of storage for virtual machine disks (VMDKS) and/or physical disks
US20140142689A1 (en) 2012-11-21 2014-05-22 Didier De Canniere Device and method of treating heart valve malfunction
JP2014115807A (ja) 2012-12-10 2014-06-26 International Business Maschines Corporation ファイルを複数のメディアに書込む方法、及びストレージ・システム
US9223597B2 (en) 2012-12-21 2015-12-29 Commvault Systems, Inc. Archiving virtual machines in a data storage system
US20140181046A1 (en) 2012-12-21 2014-06-26 Commvault Systems, Inc. Systems and methods to backup unprotected virtual machines
US20140196038A1 (en) 2013-01-08 2014-07-10 Commvault Systems, Inc. Virtual machine management in a data storage system
US9495404B2 (en) 2013-01-11 2016-11-15 Commvault Systems, Inc. Systems and methods to process block-level backup for selective file restoration for virtual machines
US9286110B2 (en) 2013-01-14 2016-03-15 Commvault Systems, Inc. Seamless virtual machine recall in a data storage system
US9424125B2 (en) * 2013-01-16 2016-08-23 Google Inc. Consistent, disk-backed arrays
US9817835B2 (en) * 2013-03-12 2017-11-14 Tintri Inc. Efficient data synchronization for storage containers
GB2512060A (en) * 2013-03-18 2014-09-24 Ibm Virtual machine image disk usage
US9043576B2 (en) * 2013-08-21 2015-05-26 Simplivity Corporation System and method for virtual machine conversion
US9654411B2 (en) 2013-08-27 2017-05-16 Vmware, Inc. Virtual machine deployment and management engine
US10628378B2 (en) 2013-09-03 2020-04-21 Tintri By Ddn, Inc. Replication of snapshots and clones
US20150074536A1 (en) 2013-09-12 2015-03-12 Commvault Systems, Inc. File manager integration with virtualization in an information management system, including user control and storage management of virtual machines
US9566443B2 (en) 2013-11-26 2017-02-14 Corquest Medical, Inc. System for treating heart valve malfunction including mitral regurgitation
US9823881B2 (en) * 2013-12-23 2017-11-21 Vmware, Inc. Ensuring storage availability for virtual machines
US11243707B2 (en) 2014-03-12 2022-02-08 Nutanix, Inc. Method and system for implementing virtual machine images
US9811427B2 (en) 2014-04-02 2017-11-07 Commvault Systems, Inc. Information management by a media agent in the absence of communications with a storage manager
US20160019317A1 (en) 2014-07-16 2016-01-21 Commvault Systems, Inc. Volume or virtual machine level backup and generating placeholders for virtual machine files
US9348517B2 (en) 2014-08-28 2016-05-24 International Business Machines Corporation Using a migration threshold and a candidate list for cache management of sequential write storage
US9417968B2 (en) 2014-09-22 2016-08-16 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
US9436555B2 (en) 2014-09-22 2016-09-06 Commvault Systems, Inc. Efficient live-mount of a backed up virtual machine in a storage management system
US9710465B2 (en) 2014-09-22 2017-07-18 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
US10073902B2 (en) 2014-09-24 2018-09-11 Microsoft Technology Licensing, Llc Snapshot and replication of a multi-stream application on multiple hosts at near-sync frequency
US10387447B2 (en) * 2014-09-25 2019-08-20 Oracle International Corporation Database snapshots
US10133749B2 (en) * 2014-10-13 2018-11-20 Vmware, Inc. Content library-based de-duplication for transferring VMs to a cloud computing system
US10776209B2 (en) 2014-11-10 2020-09-15 Commvault Systems, Inc. Cross-platform virtual machine backup and replication
US9983936B2 (en) * 2014-11-20 2018-05-29 Commvault Systems, Inc. Virtual machine change block tracking
US10842626B2 (en) 2014-12-09 2020-11-24 Didier De Canniere Intracardiac device to correct mitral regurgitation
JP6458752B2 (ja) * 2016-03-04 2019-01-30 日本電気株式会社 ストレージ制御装置、ストレージシステム、ストレージ制御方法、および、プログラム
US10565067B2 (en) 2016-03-09 2020-02-18 Commvault Systems, Inc. Virtual server cloud file system for virtual machine backup from cloud operations
US9842060B1 (en) * 2016-07-13 2017-12-12 Seagate Technology Llc Cache over-provisioning in a data storage device
CN106293519B (zh) * 2016-07-29 2019-05-10 浪潮(北京)电子信息产业有限公司 一种磁盘存储管理方法
US10474548B2 (en) 2016-09-30 2019-11-12 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, using ping monitoring of target virtual machines
US10162528B2 (en) 2016-10-25 2018-12-25 Commvault Systems, Inc. Targeted snapshot based on virtual machine location
US10152251B2 (en) 2016-10-25 2018-12-11 Commvault Systems, Inc. Targeted backup of virtual machine
US10678758B2 (en) 2016-11-21 2020-06-09 Commvault Systems, Inc. Cross-platform virtual machine data and memory backup and replication
US10877851B2 (en) 2017-03-24 2020-12-29 Commvault Systems, Inc. Virtual machine recovery point selection
US10387073B2 (en) 2017-03-29 2019-08-20 Commvault Systems, Inc. External dynamic virtual machine synchronization
US10740038B2 (en) * 2017-08-21 2020-08-11 Vmware, Inc. Virtual application delivery using synthetic block devices
US10824522B2 (en) 2017-11-27 2020-11-03 Nutanix, Inc. Method, apparatus, and computer program product for generating consistent snapshots without quiescing applications
US10877928B2 (en) 2018-03-07 2020-12-29 Commvault Systems, Inc. Using utilities injected into cloud-based virtual machines for speeding up virtual machine backup operations
US11200124B2 (en) 2018-12-06 2021-12-14 Commvault Systems, Inc. Assigning backup resources based on failover of partnered data storage servers in a data storage management system
US10996974B2 (en) 2019-01-30 2021-05-04 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data, including management of cache storage for virtual machine data
US10768971B2 (en) 2019-01-30 2020-09-08 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data
US11467753B2 (en) 2020-02-14 2022-10-11 Commvault Systems, Inc. On-demand restore of virtual machine data
US11442768B2 (en) 2020-03-12 2022-09-13 Commvault Systems, Inc. Cross-hypervisor live recovery of virtual machines
US11099956B1 (en) 2020-03-26 2021-08-24 Commvault Systems, Inc. Snapshot-based disaster recovery orchestration of virtual machine failover and failback operations
US11748143B2 (en) 2020-05-15 2023-09-05 Commvault Systems, Inc. Live mount of virtual machines in a public cloud computing environment
KR102438329B1 (ko) 2020-08-06 2022-08-31 주식회사 파수 가상 파일 관리 방법, 장치, 컴퓨터 프로그램 및 기록 매체
US11656951B2 (en) 2020-10-28 2023-05-23 Commvault Systems, Inc. Data loss vulnerability detection

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043866A (en) 1988-04-08 1991-08-27 International Business Machines Corporation Soft checkpointing system using log sequence numbers derived from stored data pages and log records for database recovery
US8631066B2 (en) 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US6304983B1 (en) 1998-09-30 2001-10-16 International Business Machines Corporation Checkpoint logging without checkpoint display device availability
US6545833B1 (en) * 1999-05-07 2003-04-08 Seagate Technology Llc Method to eliminate reassignments
US6804755B2 (en) 2000-06-19 2004-10-12 Storage Technology Corporation Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
US6578041B1 (en) 2000-06-30 2003-06-10 Microsoft Corporation High speed on-line backup when using logical log operations
US6880058B2 (en) * 2000-12-07 2005-04-12 Hitachi, Ltd. Computer system with storage system having re-configurable logical volumes
US6961055B2 (en) 2001-05-09 2005-11-01 Free Radical Design Limited Methods and apparatus for constructing virtual environments
US6697881B2 (en) 2001-05-29 2004-02-24 Hewlett-Packard Development Company, L.P. Method and system for efficient format, read, write, and initial copy processing involving sparse logical units
US7574496B2 (en) 2001-11-30 2009-08-11 Surgient, Inc. Virtual server cloud interfacing
US7257584B2 (en) 2002-03-18 2007-08-14 Surgient, Inc. Server file management
US7107385B2 (en) * 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7340486B1 (en) 2002-10-10 2008-03-04 Network Appliance, Inc. System and method for file system snapshot of a virtual logical disk
JP4186602B2 (ja) 2002-12-04 2008-11-26 株式会社日立製作所 ジャーナルログを利用した更新データ書込方法
US20040193952A1 (en) 2003-03-27 2004-09-30 Charumathy Narayanan Consistency unit replication in application-defined systems
US7461080B1 (en) 2003-05-09 2008-12-02 Sun Microsystems, Inc. System logging within operating system partitions using log device nodes that are access points to a log driver
US7373548B2 (en) 2003-08-29 2008-05-13 Intel Corporation Hardware recovery in a multi-threaded architecture
US7412464B2 (en) 2003-09-29 2008-08-12 International Business Machines Corporation Asynchronous data mirroring with look-ahead synchronization record
US7831550B1 (en) * 2003-09-30 2010-11-09 Symantec Operating Corporation Propagating results of a volume-changing operation to replicated nodes
JP4267421B2 (ja) 2003-10-24 2009-05-27 株式会社日立製作所 リモートサイト及び/又はローカルサイトのストレージシステム及びリモートサイトストレージシステムのファイル参照方法
US8370819B2 (en) 2005-03-25 2013-02-05 Microsoft Corporation Mechanism to store information describing a virtual machine in a virtual disk image
US7386662B1 (en) 2005-06-20 2008-06-10 Symantec Operating Corporation Coordination of caching and I/O management in a multi-layer virtualized storage environment
US7877485B2 (en) 2005-12-02 2011-01-25 International Business Machines Corporation Maintaining session states within virtual machine environments
US7870172B1 (en) * 2005-12-22 2011-01-11 Network Appliance, Inc. File system having a hybrid file system format
US7447854B1 (en) * 2005-12-30 2008-11-04 Vmware, Inc. Tracking and replicating changes to a virtual disk
JP2007279883A (ja) 2006-04-04 2007-10-25 Hitachi Ltd ファイル構成管理システム
US8321377B2 (en) 2006-04-17 2012-11-27 Microsoft Corporation Creating host-level application-consistent backups of virtual machines
US8095931B1 (en) 2006-04-27 2012-01-10 Vmware, Inc. Controlling memory conditions in a virtual machine
US7653794B2 (en) 2006-05-08 2010-01-26 Microsoft Corporation Converting physical machines to virtual machines
US8332370B2 (en) * 2006-05-09 2012-12-11 Hewlett-Packard Development Company, L.P. Maintaining commonly named client-specific file content in hard disk drive emulation
US7783833B2 (en) * 2006-09-28 2010-08-24 Hitachi, Ltd. Storage system, method for managing the same, and storage controller
JP2008108145A (ja) * 2006-10-26 2008-05-08 Hitachi Ltd 計算機システム及びこれを用いたデータの管理方法
US7765361B2 (en) 2006-11-21 2010-07-27 Microsoft Corporation Enforced transaction system recoverability on media without write-through
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US9189265B2 (en) 2006-12-21 2015-11-17 Vmware, Inc. Storage architecture for virtual machines
JP2008181271A (ja) * 2007-01-24 2008-08-07 Hitachi Ltd 仮想ボリュームに記憶されたデータをバックアップする記憶制御装置
US7886115B2 (en) 2007-07-13 2011-02-08 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for implementing virtual storage devices
US7801852B2 (en) 2007-07-31 2010-09-21 Oracle International Corporation Checkpoint-free in log mining for distributed information sharing
US7694105B2 (en) 2007-08-22 2010-04-06 Hitachi Global Storage Technologies Netherlands, B.V. Data storage systems that implement sector sets
JP2009093316A (ja) * 2007-10-05 2009-04-30 Hitachi Ltd ストレージシステム及び仮想化方法
US7996636B1 (en) * 2007-11-06 2011-08-09 Netapp, Inc. Uniquely identifying block context signatures in a storage volume hierarchy
US8032689B2 (en) * 2007-12-18 2011-10-04 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for data storage device virtualization
US20090164994A1 (en) 2007-12-20 2009-06-25 Virtual Computer, Inc. Virtual computing management systems and methods
US8051111B2 (en) 2008-01-31 2011-11-01 Prowess Consulting, Llc Method and system for modularizing windows imaging format
US8046550B2 (en) * 2008-07-14 2011-10-25 Quest Software, Inc. Systems and methods for performing backup operations of virtual machine files
JP5146174B2 (ja) 2008-07-28 2013-02-20 富士通株式会社 仮想マシンモニタ装置およびプログラム,ならびに仮想マシン間メモリ共有管理方法
US8307177B2 (en) * 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US8566821B2 (en) 2008-11-11 2013-10-22 Netapp Inc. Cloning virtual machines
US8261030B2 (en) 2008-11-18 2012-09-04 Microsoft Corporation Using delete notifications to free related storage resources
KR101437122B1 (ko) * 2008-12-03 2014-09-02 삼성전자 주식회사 Os 가상화를 이용하여 서비스를 제공하는 장치 및 방법
US8443166B2 (en) 2009-03-06 2013-05-14 Vmware, Inc. Method for tracking changes in virtual disks
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
US8397046B2 (en) * 2009-03-26 2013-03-12 Hitachi, Ltd. Method and apparatus for deploying virtual hard disk to storage system
US8478801B2 (en) 2009-05-20 2013-07-02 Vmware, Inc. Efficient reconstruction of virtual disk hierarchies across storage domains
US8583893B2 (en) * 2009-05-28 2013-11-12 Marvell World Trade Ltd. Metadata management for virtual volumes
US8799879B2 (en) * 2009-06-30 2014-08-05 Oracle America, Inc. Method and apparatus for protecting translated code in a virtual machine
US8825936B2 (en) * 2009-08-03 2014-09-02 Quantum Corporation Systems and methods for increasing data volume sparseness
US8489654B2 (en) 2009-08-28 2013-07-16 Beijing Innovation Works Technology Company Limited Method and system for forming a virtual file system at a computing device
US8473947B2 (en) * 2010-01-18 2013-06-25 Vmware, Inc. Method for configuring a physical adapter with virtual function (VF) and physical function (PF) for controlling address translation between virtual disks and physical storage regions
US8627000B2 (en) 2010-02-08 2014-01-07 Microsoft Corporation Virtual disk manipulation operations
JP5537732B2 (ja) * 2010-08-11 2014-07-02 株式会社日立製作所 ストレージシステム
US20120079583A1 (en) 2010-09-23 2012-03-29 Microsoft Corporation Offload reads and writes
US20120110259A1 (en) 2010-10-27 2012-05-03 Enmotus Inc. Tiered data storage system with data management and method of operation thereof
US9092149B2 (en) 2010-11-03 2015-07-28 Microsoft Technology Licensing, Llc Virtualization and offload reads and writes
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
WO2013069055A1 (en) 2011-11-09 2013-05-16 Hitachi, Ltd. Information processing system and method of controlling the same

Also Published As

Publication number Publication date
CN103493028A (zh) 2014-01-01
CN103493028B (zh) 2016-05-18
EP2702493B1 (en) 2018-08-22
KR101903817B1 (ko) 2018-10-02
EP2702493A1 (en) 2014-03-05
WO2012148448A1 (en) 2012-11-01
US20170060619A1 (en) 2017-03-02
US20120278799A1 (en) 2012-11-01
EP2702493A4 (en) 2014-11-26
KR20140018316A (ko) 2014-02-12
JP2014517381A (ja) 2014-07-17
US9519496B2 (en) 2016-12-13

Similar Documents

Publication Publication Date Title
JP5934344B2 (ja) 仮想記憶ディスク技術
US20230244395A1 (en) Virtual disk storage techniques
JP5932973B2 (ja) 仮想記憶ディスク技術
US10691341B2 (en) Method for improving memory system performance in virtual machine systems
US7849228B2 (en) Mechanisms for creation/deletion of linear block address table entries for direct I/O
US9075541B2 (en) Virtualizing storage for WPAR clients using node port ID virtualization
US20220334848A1 (en) Layered Composite Boot Device And File System For Operating System Booting In File System Virtualization Environments
US20070005815A1 (en) System and method for processing block mode I/O operations using a linear block address translation protection table
US20060265525A1 (en) System and method for processor queue to linear block address translation using protection table control based on a protection domain
US20060288125A1 (en) System and method for user space operations for direct I/O between an application instance and an I/O adapter
US7502871B2 (en) Method for query/modification of linear block address table entries for direct I/O

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150514

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150630

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150928

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160506

R150 Certificate of patent or registration of utility model

Ref document number: 5934344

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250