JP2017045477A - 仮想ディスクストレージ技術 - Google Patents

仮想ディスクストレージ技術 Download PDF

Info

Publication number
JP2017045477A
JP2017045477A JP2016227634A JP2016227634A JP2017045477A JP 2017045477 A JP2017045477 A JP 2017045477A JP 2016227634 A JP2016227634 A JP 2016227634A JP 2016227634 A JP2016227634 A JP 2016227634A JP 2017045477 A JP2017045477 A JP 2017045477A
Authority
JP
Japan
Prior art keywords
virtual disk
extent
file
virtual
parser
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.)
Pending
Application number
JP2016227634A
Other languages
English (en)
Inventor
エー スタークス,ジョン
A Starks John
エー スタークス,ジョン
エル グリーン,ダスティン
L Green Dustin
エル グリーン,ダスティン
ウィリアム ハリス,トッド
William Harris Todd
ウィリアム ハリス,トッド
ジョン,マシュー
John Mathew
ラジャラム,センディル
Rajaram Senthil
メーラ,カラン
Mehra Karan
アール クリスティアンセン,ニール
R Christiansen Neal
アール クリスティアンセン,ニール
ラン ダイ,チュン
Chung-Lang Dai
ラン ダイ,チュン
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 Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of JP2017045477A publication Critical patent/JP2017045477A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage 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
    • 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
    • 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
    • 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/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
    • 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/0626Reducing size or complexity of storage 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/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/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
    • 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
    • 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/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】
本発明開示は、仮想ディスクファイルのペイロードデータを保管する技術について記載する。
【解決手段】
典型的な構成において、それぞれの仮想ディスクエクステントは、仮想ディスクファイルによってその仮想ディスクエクステントが記述されているかどうかを示す状態情報と関連付けられる。特定の条件の下で、仮想ディスクエクステントを記述するために使用されたスペースは、リクレームされ得るし、状態情報は、その仮想ディスクエクステントに対して指示された読出し及び/又は書込みオペレーションをどのように扱うかを決定するために使用され得る。上述に加えて、他の技術が、特許請求の範囲、図面、および発明の詳細な説明において説明される。
【選択図】 図4

Description

本発明開示は、仮想ディスクに対するデータを一つまたはそれ以上の仮想ディスクファイルに保管する技術について記載する。
ストレージ仮想化技術によって、物理的ストレージから論理的ストレージを切り離すことができる。ストレージ仮想化の一つの実施例は、仮想マシン内で行われる。仮想化ソフトウェア層(典型的には、ハイパーバイザー(hypervisor)または仮想マシンモニター、と呼ばれるもの)が、コンピューターシステム上にインストールされ、仮想マシンがどのように物理的ハードウェアとインタラクト(interact)するかをコントロールする。ゲストオペレーティングシステムは、典型的には、物理的ハードウェアに対して排他的なコントロールを実施するようにコード化されており、仮想化ソフトウェアは、物理的ハードウェアのリソースを再分割し、仮想マシンの中で物理的ハードウェアの存在をエミュレート(emulate)するように構成されてよい。ストレージ仮想化の別の実施例は、ストレージアレイ(storage array)を実行するように構成されたコンピューターシステム内で行われる。この場合、物理的コンピューターシステムまたは仮想マシンは、iSCSIプロトコルまたは類似のものを使用して、ストレージアレイに接続され得る。
仮想的または物理的マシンのいずれかに対するストレージをエミュレート(emulate)するために、ストレージハンドリングモジュールが使用できる。例えば、ストレージハンドリングモジュールは、一つまたはそれ以上の仮想化ディスクファイルを読出し、または書込みすることによって、仮想化または物理的マシンにより発行された入出力(IO)ジョブを扱うことができる。それらは、仮想ディスクのエクステント(extent)、つまり、ブロック(block)といったストレージの隣接した領域、を記述、つまり、保管するために使用され得る。このように、ストレージハンドリングプログラムは、一つまたはそれ以上の仮想ディスクファイルに対して、仮想ディスクのためのビットパターンデータを書き込むことにより書込みリクエストに対応し、そして、一つまたはそれ以上の仮想ディスクファイルの中に保管されたビットパターンデータを読み出すことにより読出しリクエストに対応することができる。
米国特許出願第12/888433号明細書 米国特許出願第12/938383号明細書
本発明開示は、仮想ディスクに対するデータを一つまたはそれ以上の仮想ディスクファイルに保管する技術について記載する。
典型的な構成において、仮想ディスクエクステントは、仮想ディスクファイルによってその仮想ディスクエクステントが記述されているかどうかを示す状態情報と関連付けされ得る。特定の条件の下で、仮想ディスクエクステントを記述するために使用されたスペース(space)は、リクレーム(reclaim)され得るし、状態情報は、その仮想ディスクエクステントに対して指示された後続の読出し及び/又は書込みオペレーションをどのように扱うかを決定するために使用され得る。リクレームされたスペース、例えば一つまたはそれ以上のレンジ(range)から成るエクステント、は、同一または別の仮想ディスクエクステントを記述するために使用され得る。上述に加えて、他の技術が、特許請求の範囲、発明の詳細な説明、および図面において説明される。
本発明開示の一つまたはそれ以上の種々の態様は、これらに限定されるわけではないが、ここにおいて参照される態様をもたらすための回路及び/又はプログラムを含むことが、当業者によって正しく理解されよう。回路及び/又はプログラムは、システム設計者のデザイン選択に基づいて、ここにおいて参照される態様をもたらすように構成されたハードウェア、ソフトウェアプログラム、及び/又は、ファームウェアの仮想的なあらゆる組み合わせであり得る。
上述は概要であり、従って、必要に応じて、詳細部の簡素化、一般化、そして、省略を含んでいる。概要は、説明のためだけのものであり、どのような方法においても本発明を限定することを意図するものではないことが、当業者によって正しく理解されよう。
図1は、コンピューターシステムのハイレベルなダイヤグラムを示している。 図2は、ソフトウェアプログラムの仮想化のための典型的な構成についてハイレベルなダイヤグラムを示している。 図3は、ソフトウェアプログラムの仮想化のための別の構成についてハイレベルなダイヤグラムを示している。 図4は、仮想ディスクを遂行するために構成されたコンピューターシステムのローレベルなダイヤグラムを示している。 図5Aは、仮想ディスクを遂行するために構成されたコンピューターシステムのローレベルなダイヤグラムを示している。 図5Bは、仮想ディスクを遂行するために構成されたコンピューターシステムのローレベルなダイヤグラムを示している。 図6は、異なるディスクのハイレベルなダイヤグラムを示している。 図7は、仮想ディスクと仮想ディスクファイルとの関係のハイレベルな説明図である。 図8は、仮想ディスクと仮想ディスクファイルとの関係のハイレベルな説明図である。 図9は、仮想ディスクと仮想ディスクファイルとの関係のハイレベルな説明図である。 図10は、仮想ディスクと仮想ディスクファイルとの関係のハイレベルな説明図である。 図11は、コンピューターで読み取り可能なストレージ媒体において実施され、及び/又は、コンピューターシステムによって実行される、オペレーション工程を示している。 図12は、図11で説明された工程と併せて実行され得る追加のオペレーションを示している。 図13は、図12で説明された工程と併せて実行され得る追加のオペレーションを示している。 図14は、コンピューターで読み取り可能なストレージ媒体において実施され、及び/又は、コンピューターシステムによって実行される、オペレーション工程を示している。 図15は、図14で説明された工程と併せて実行され得る追加のオペレーションを示している。 図16は、コンピューターで読み取り可能なストレージ媒体において実施され、及び/又は、コンピューターシステムによって実行される、オペレーション工程を示している。 図17は、図16で説明された工程と併せて実行され得る追加のオペレーションを示している。
開示された技術的事項は一つまたはそれ以上のコンピューターシステムにおいて使用されてよい。図1および以降の説明は、開示された技術的事項が実行され得る好適なコンピューター環境の簡潔で一般的な説明を提供することを意図したものである。
至る所で使用される用語である回路(circuitry)は、ハードウェアインタラプトコントローラー、ハードドライブ、ネットワークアダプター、グラフィックプロセッサ、ハードウェアベースのビデオ/オーディオコード、といったハードウェアコンポーネント、および、そうしたハードウェアを動作するために使用されるファームウェアを含み得る。回路は、また、マイクロプロセッサ、特定アプリケーション集積回路(ASIC)、および、例えば、ファームウェア及び/又はソフトウェアによって構成され、インストラクションの読出しと実行を実施するマルチコア汎用処理装置のコア、といったプロセッサ、も含み得る。プロセッサは、例えば、RAM、ROM、ファームウェア、及び/又は、マスストレージ、といったメモリーからロードされたインストラクションによって構成され、プロセッサが機能を実行するための構成をするように動作可能なロジックを具現化する。回路がハードウェアとソフトウェアの組合わせを含む、一つの典型的な実施例において、実施者は、ハードウェアによって実行され得る、マシンで読み取り可能なコードの中に後でコンパイルされるロジックを具現化するソースコードを書き込んでもよい。当業者であれば、最先端の技術はハードウェアで実施される機能とソフトウェアで実行される機能との違いがほとんどないところまで進化してきたことを理解しているので、ここにおいて説明される機能を遂行するためのハードウェア対ソフトウェアの選択は、単なるデザイン選択に過ぎない。別の言い方をすれば、当業者であれば、ソフトウェアによるプロセスは同等なハードウェア構成に変換することができ、ハードウェア構成自身は同等なソフトウェアによるプロセスに変換することができることを理解しているので、ハードウェアによる実施対ソフトウェアによる実施の選択は、実施者に任されている。
図1を参照すると、典型的なコンピューティングシステム100が示されている。コンピューターシステム100は、例えば、実行コアである、プロセッサ102を含んでよい。一つのプロセッサが示されているが、別の実施例において、コンピューターシステム100は、マルチプロセッサを有してもよい。例えば、プロセッササブストレート(substrate)あたりにマルチな実行コアプロセッサ、及び/又は、マルチな実行コアをそれぞれが有し得るマルチプロセッササブストレートである。図に示されるように、種々のコンピューターで読み取り可能なストレージ媒体110が、種々のシステムコンポーネントをプロセッサ102に接続する一つまたはそれ以上のシステムバスによって、相互に接続され得る。システムバスは、バス構成のいくつかのタイプのどれでもよく、メモリーバス、メモリーコントローラー、ペリフェラルバス、および、種々のバス構成のうちいずれかを使用するローカルバス、を含んでいる。典型的な実施例において、コンピューターで読み取り可能なストレージ媒体110は、例えば、ランダムアクセスメモリー(RAM)104、例えば、電子機械的ハードドライブ、半導体ハードドライブ、等のストレージデバイス106、例えば、FLAH RAMまたはROMといったファームウェア108、例えば、CD−ROM、フロッピー(登録商標)ディスク、DVD、フラッシュドライブ、外部ストレージデバイス、等といった、取外し可能なストレージデバイス118、を含んでよい。当業者によって、磁気カセット、フラッシュメモリーカード、及び/又は、デジタルビデオディスク、といった、他のタイプのコンピューターで読み取り可能なストレージ媒体が使用され得ることが正しく理解されるべきである。
コンピューターで読み取り可能なストレージ媒体110は、実行可能なインストラクションといったコンピューターシステム100のための、プロセッサが実行可能なインストラクション122、データ構造、プログラムモジュール、および、他のデータについて、不揮発性および揮発性のストレージを提供する。スタートアップの最中といった、コンピューターシステム100の中のエレメント間で情報を伝送するのを助ける基本的なルーチンを含む、ベーシック入力/出力システム(BIOS)120は、ファームウェア108の中に保管され得る。多くのプログラムが、ファームウェア108、ストレージデバイス106、RAM104、及び/又は、取外し可能なストレージデバイス118、に保管され、オペレーティグシステム及び/又はアプリケーションプログラムを含んでプロセッサによって実行される。典型的な実施例において、コンピューターで読み取り可能なストレージ媒体110は、仮想ディスクパーサ(parser)404を保管することができるが、詳しくは以降のパラグラフにおいて説明される。そして、コンピューターシステム100を、特定の目的のために構成されたコンピューターシステム、つまり、この発明開示において説明される技術に従って構成されたコンピューターシステム、へと変換することによってプロセッサ102により実行され得る。
コマンドと情報は、これらに限定されるわけではないが、キーボードおよびポインティングデバイスを含む、入力デバイスを介してコンピューターシステム100によって受取ることができる。他の入力デバイスとして、マイクロフォン、ジョイスティック、ゲームパッド、スキャナー、といったものが含まれてよい。これら、および、他の入力デバイスは、しばしば、システムバスに接続されたシリアルポートインターフェイスを通じてプロセッサ102に接続される。しかし、パラレルポート、ゲームポート、または、ユニバーサルシリアルポート(USB)といった他のインターフェイスによって接続されてもよい。ディスプレイまたは他のタイプのディスプレイ装置も、また、グラフィックプロセッサユニット112の一部であり、もしくは接続されるビデオアダプターといったインターフェイスを介してシステムバスに接続され得る。ディスプレイに加えて、コンピューターは、典型的には、スピーカーおよびプリンター(図示なし)といった、他のペリフェラル出力デバイスを含んでいる。図1の典型的なシステムは、また、ホストアダプター、スモールコンピューターシステムインターフェイス(SCSI)、および、SCSIバスに接続された外部ストレージデバイスを含み得る。
コンピューターシステム100は、離れたコンピューターといった、一つまたはそれ以上の離れたコンピューターに対するロジカル接続を使用して、ネットワーク化された環境において動作し得る。離れたコンピューターは、別のコンピューター、サーバー、ルーター、ネットワークPC、ピア(peer)デバイス、または、他の共通ネットワークノードであり得るし、典型的には、コンピューターシステム100に関して上述された多くのまたは全てのエレメントを含んでもよい。
LANまたはWANのネットワーク環境において使用される場合、コンピューターシステム100は、ネットワークインターフェイスカード(NIC)114を通じて、そのLANまたはWANに接続され得る。NIC114は、内部または外部のカードでよいが、システムバスに接続され得る。ネットワーク環境において、コンピューターシステム100に関して示されたプログラムモジュール、または、その一部は、離れたメモリーストレージデバイスに保管され得る。ここにおいて説明されるネットワーク接続は典型的なものであり、コンピューター間の通信リンクを確立する他の手段が使用され得るということが、正しく理解されよう。さらに、本発明開示の数多くの実施例がコンピューター化されたシステムに対して特によく適応していることが描かれている一方で、この文書においては、本発明開示をそうした実施例に限定することは全く意図されていない。
図2に移ると、仮想マシンを生成するために使用することができる典型的な仮想化プラットフォームが示されている。この実施例において、マイクロカーネルハイパーバイザー(microkernel hypervisor)202は、コンピューターシステム200のハードウェアに対するアクセスをコントロールし、調整するように構成され得る。マイクロカーネルハイパーバイザー202は、パーティション(partition)と呼ばれる実行環境を生成することができる。子パーティション1から子パーティションN(Nは、1以上の整数)といったものである。ここにおいて、子パーティションは、マイクロカーネルハイパーバイザー202によってサポートされた、分離の基本単位である。マイクロカーネルハイパーバイザー202は、一つのパーティションにおけるプロセスを別のパーティションのリソースにアクセスすることから分離することができる。特に、マイクロカーネルハイパーバイザー202は、カーネルモードのゲストオペレーティングシステムのコードを、別のパーティションのリソースにアクセスすることから分離することができ、ユーザーモードのプロセスも同様である。それぞれの子パーティションは、例えば、メモリー、デバイス、プロセッササイクル、等といった、マイクロカーネルハイパーバイザー202のコントロールの下にある一式のハードウェアリソースに対してマップされ得る。実施例において、マイクロカーネルハイパーバイザー202は、スタンドアロンのソフトウェアプロダクト、オペレーティグシステムの一部、マザーボードのファームウェアの中にエンベッドされたもの、特別な集積回路、または、これらの組み合わせであり得る。
マイクロカーネルハイパーバイザー202は、物理的コンピューターシステムにおけるゲストオペレーティングシステムのメモリーのビュー(view)を制限することによって、パーティション化を執行することができる。マイクロカーネルハイパーバイザー202が、仮想マシンをインスタンス化(instantiate)する場合には、システムの物理的メモリー(SPM)のページ(例えば、開始および終了アドレスを伴なうメモリーの固定長ブロック)を、ゲストの物理的メモリー(GPM)として仮想マシンに割り当てることができる。ここで、ゲストの制限されたシステムメモリーのビューは、マイクロカーネルハイパーバイザー202によってコントロールされる。ゲストの物理的メモリー、という用語は、仮想マシンの観点からメモリーのページを記述する簡潔な方法であり、システムの物理的メモリー、という用語は、物理的システムの観点からメモリーのページを記述する簡潔な方法である。従って、仮想マシンに割り当てられたメモリーのページは、ゲストの物理アドレス(仮想マシンによって使用されるアドレス)と、システムの物理アドレス(ページの現実のアドレス)を有することになる。
ゲストオペレーティングシステムは、ゲスト物理的メモリーを仮想化してもよい。仮想メモリーは、オペレーティグシステムがメモリーをオーバーコミット(over commit)できるようにし、物理的に連続したワーキングメモリ(working memory)に対してアプリケーションが唯一のアクセスを与えるようにする、マネージメント技術である。仮想化環境において、ゲストオペレーティングシステムは、仮想ゲストアドレスとして知られる仮想アドレスをゲスト物理アドレスに変換するために、この文書においてゲストページと呼ばれる、一つまたはそれ以上のページテーブルを使用することができる。この実施例において、メモリーアドレスは、ゲスト仮想アドレス、ゲスト物理アドレス、および、システム物理アドレスを有してよい。
示された実施例において、親パーティションコンポーネントは、Xenのオープンソースハイパーバイザー(open source hypervisor)のドメイン0と類似していると考えられるものであるが、ホスト環境204を含むことができる。ホスト環境204は、オペレーティグシステム(または、一式のコンフィグレーションユーティリティ)であり得るし、ホスト環境204は、仮想化サービスプロバイダー228(VSP)を使用して、子パーティション1からNを実行しているゲストオペレーティングシステムに対してリソースを提供するように構成され得る。VSP228は、典型的にはオープンソースコミュニティにおいてバックエンドのドライバーとして言及されるが、仮想化サービスクライアント(VSC)によってハードウェアリソースに対するインターフェイスを多重化するために使用することができる(VSCは、典型的には、オープンソースコミュニティにおけるフロントクエンドのドライバー、または、パラ(para)仮想デバイスとして言及される)。図に示すように、視覚化サービスクライアントは、ゲストオペレーティングシステムの状況の中で実行される。しかしながら、これらのドライバーはゲストにおける他のドライバーとは異なり、ハードウェアまたはエミュレートされたハードウェアと通信する代わりに、VSPを介してホスト環境204と通信する。典型的な実施例において、仮想化サ−ビスクライアント216および218と通信するために仮想化サ−ビスプロバイダー228によって使用されるパス(path)は、エンライトIO(enlightened IO)パスとして考えられ得る。
図に示すように、エミュレーター234、例えば、仮想IDEデバイス、仮想ビデオアダプター、仮想NIC、等は、ホスト環境204の中で実行するように構成することができ、エミュレートされたハードウェアリソース、例えば、IOポート、ゲスト物理アドレス領域、仮想VRAM、エミュレートされたROM領域、等のゲストオペレーティングシステム220および222に対して利用可能なもの、に接続される。例えば、ゲストOSが、デバイスのレジスターがメモリのマップされたデバイスであるであろうところのゲスト物理アドレスにマップされたゲスト仮想アドレスにタッチする場合は、マイクロカーネルハイパーバイザー202が、リクエストをインターセプト(intercept)し、ゲストが関連のエミュレーターに書き込もうと試みた値を伝える。ここで、この実施例におけるエミュレートされたハードウェアリソースは、ゲスト物理アドレス空間に配置された仮想デバイスであるとして考えられ得る。エミュレーション使用のこうした方法は、考えられたエミュレーションパス(path)であり得る。エミュレーションパスは、エンライトIOパスと比較して効率がよくない。VSPとVSCとの間にメッセージを伝えるよりも、デバイスをエミュレートするためにより多くのCPU時間を要するからである。例えば、エミュレーションパスを介してディスクに対してバッファーを書き込むために、レジスターにマップされたメモリー上のいくつかのアクションが必要である。一方で、このことは、エンライトIOパスにおけるVSCからVSPに伝えられる一つのメッセージに削減され得る。VMにおけるドライバーは、ハードウェアにアクセスするための設計よりむしろ、仮想化システムによって提供されるIOサービスにアクセスするように設計されているからである。
それぞれの子パーティションは、一つまたはそれ以上の仮想プロセッサ(230と232)を含み得る。ゲストオペレーティングシステム(220と222)は、その上で実行されるスレッド(thread)を管理し、スケジュールすることができる。一般的に、仮想プロセッサは、実行可能なインストラクション、および関連の状態情報であり、物理的プロセッサの表現に特定のアーキテキチャーを提供している。例えば、一つの仮想マシンは、インテルx86プロセッサの特性をもった仮想プロセッサを有し得る一方で、別の仮想プロセッサがパワーPCプロセッサの特性を有してもよい。この実施例における仮想プロセッサは、コンピューターシステムのプロセッサに対してマップされてもよい。仮想プロセッサを遂行するインストラクションが、物理的プロセッサによって直接的に実行されるようにである。従って、マルチプロセッサを含む実施例において、例えば、他のプロセッサがハイパーバイザーインストラクションを実行する一方で、プロセッサによって、同時に仮想プロセッサが実行され得る。パーティションにおける仮想プロセッサとメモリーの組合わせは、仮想マシンであると考えられる。
ゲストオペレーティングシステム(220と222)は、例えば、マイクロソフト、アップル、オープンソースコミュニティ、等からのオペレーティグシステムであってよい。ゲストオペレーティングシステムは、オペレーションのユーザー/カーネルモードを含み得るし、スケジューラー、メモリーマネージャー、等を含むカーネルを有し得る。一般的に言えば、カーネルモードは、プロセッサにおいて、少なくとも特権のあるプロセッサのインストラクションへのアクセスを保証する実行モードを含み得る。それぞれのオペレーティグシステムは、ターミナルサーバー、eコマースサーバー、eメールサーバー、等、といったものに保管されたアプリケーションを有することができる関連のファイルシステム、および、ゲストオペレーティングシステム自身を、有し得る。ゲストオペレーティングシステムは、仮想プロセッサ上で実行されるスレッド、および、そうしたアプリケーションが遂行され得るインスタンスをスケジュールすることができる。
図3を参照すると、図2において説明されたものに対する代替的な仮想化プラットフォームが示されている。図3は、図2と類似のコンポーネントを示している。しかしながら、この実施例において、ハイパーバイザー302は、マイクロカーネルコンポーネント、および、仮想化サービスプロバイダー228やデバイスドライバー224といった図2のホスト環境204におけるものと類似のコンポーネントを含み得る。一方で、マネージメントオペレーティグシステム304は、例えば、ハイパーバイザー302を構成するために使用されるコンフィグレーションユーティリティを含み得る。このアーキテクチャーにおいて、ハイパーバイザー302は、図2のマイクロカーネルハイパーバイザー202と同一または類似の機能を実行することができる。しかしながら、このアーキテクチャーにおいて、ハイパーバイザー304は、エンライトIOパスを遂行し、コンピューターシステムの物理的ハードウェアのためのドライバーを含み得る。図3のハイパーバイザーは、スタンドアロンのソフトウェアプロダクト、オペレーティグシステムの一部、マザーボードのファームウェアの中にエンベッドされたもの、であってよく、ハイパーバイザー302の一部は、特別の集積回路によって遂行されてもよい。
図4に移ると、コンピューターシステム400が示されており、この文書において説明される従来技術を達成するために使用され得るハイレベルのブロックダイヤグラムを示している。簡潔には、コンピューターシステム400は、図1から図3に関して説明されたものと類似のコンポーネントを含み得る。図4は、仮想化システム420を示しており、図2または図3によって説明された仮想化プラットフォームのハイレベルな表現として考えられ得る。例えば、仮想化システム420は、マイクロカーネルハイパーバイザー202とホスト環境204によって提供される特徴の組合せのハイレベルな表現として考えられ得る。代替的に、仮想化システム420は、ハイパーバイザー302とマネージメントOS304のハイレベルな表現として考えられ得る。従って、この文書の至る所にある用語「仮想化システム420」の使用は、以降のパラグラフで説明される仮想ディスク技術が、あらゆるタイプの仮想化ソフトウェア層の中、または、あらゆるタイプの仮想化プラットフォームの中で実行され得ることを示している。
仮想化システム420は、オフロード(offload)プロバイダーエンジン422を含み得る。簡潔には、オフロードプロバイダーエンジン422は、例えば、アプリケーションから発行されたオフロード書込み及びオフロード読出しリクエスト(ときどき、PROXY READおよびPROXY WRITEと呼ばれるもの)をサービスするように構成され得る。オフロード読出しリクエストは、オフロード読出しがノーマルリード(normal read)であった場合に読み出されるであろうデータを表すトークンを創出するリクエストである。オフロード書込みリクエストは、宛先ロケーションに対するトークンによって表されるデータを書き込むためのリクエストである。一つの実施例では、オフロード読出しとそれに続くオフロード書込みは、データを一つのロケーションから別のロケーションにコピーするために使用され得る。例えば、ローカルRAMを通じて移動することを避けるためのデータを表すトークンを使用した、コンピューターシステム400からドメインの中の宛先コンピューターシステムへのコピーである。例えば、コンピューターシステム400と宛先コンピューターシステム(図示なし)が共通のデータレポジトリ(repository)にアクセスでき、コンピューターシステムからその宛先にデータをコピーするリクエストを受取った場合を想定してみよ。データを宛先にコピーする代わりに、アプリケーション424は、オフロードプロバイダーエンジン422に対して、トークンを発行するリクエストを発行してもよい。トークンは、トークンがそのデータと関連するときに存在するがままのデータを表すものである。トークンは、宛先に送付され、共通のストレージレポジトリからデータを獲得し、宛先にデータを書き込むために、宛先において実行されているプログラムによって使用され得る。コピー−オフロード技術の詳細は、タイトル“Offload Reads and Writes”の米国特許出願第12/888433号明細書と、タイトル“Virtualization and Offload Reads and Write”の米国特許出願第12/938383号明細書に説明されている。これらの内容は、それらがこの文書において説明される技術と一致している限り、それらの全体がここにおいて参照として包含されている。
仮想ディスクパーサ404は、特定の実施例において実行可能なインストラクションのモジュールであり得るが、仮想ディスクを仮想ディスクファイルからインスタンス化し、仮想マシンに変わってストレージIOを扱うために使用され得る。図に示されるように、仮想ディスクパーサ404は、仮想ディスクファイル406といった、一つまたはそれ以上の仮想ディスクファイルをオープンし、仮想ディスク402を生成することができる。
仮想ディスクパーサ404は、仮想化システムファイルシステム408を介して、ストレージデバイス106から仮想ディスクファイル406を獲得し得る。簡潔には、仮想化システムファイルシステム408は、コンピューターファイル、および、仮想ディスクファイル406といった仮想化システム420のデータを体系づけるソフトウェアモジュールを表している。仮想化システムファイルシステム408は、このデータを、固定サイズの物理的エクステントのアレイ(array)の中、つまり、物理的ストレージデバイスの連続した領域、に保管することができる。特定の実施例において、エクステントはクラスター(cluster)であり、設定された長さを有するビット(bit)に係るバイト(byte)の配列であり得る。典型的なクラスターサイズは、512バイトと64キロバイトの間の2乗の数である。特定の構成において、クラスターサイズは64キロバイトであってよい。
仮想ディスクファイル406をオープンするためのリクエストを受取った場合に、仮想化システムファイルシステム408は、そのファイルがディスク上でどこに位置しているかを判断し、ディスクデバイスドライバーに対して、一つまたはそれ以上のディスクの物理的エクステントからデータを読み出すようにIOジョブを発行する。ファイルシステム408によって発行されたIOジョブは、ストレージデバイス106上での仮想ディスクファイルのパーシスタントコピー(persistent copy)の位置を表すディスクのオフセットと長さを決定し、ストレージデバイス106に対してIOジョブを発行する。ストレージデバイスがどのように動作するかの意味論のために、書込みIOジョブは、ストレージデバイス106の回路が、例えば、円板、フラッシュメモリー、等の固定ストレージユニット460上の場所にアクセスすることを決定するまで、キャッシュ454で表される、揮発性メモリーの一つまたはそれ以上のキャッシュのレベルの中にバッファーされ、固定ストレージユニット460に対して仮想ディスファイル406のパーシスタントコピーの新たな内容を表すバッファーされたビットパターンを書き込むことができる。
仮想ディスクパーサ404は、仮想ディスクファイル406を示すビットパターンを獲得することができ、複数の仮想ディスクエクステントを含むディスクとして、仮想ディスクファイル406におけるペイロード(payload)、例えばユーザーデータ、を公開することができる。一つの実施例において、これらの仮想ディスクエクステントは、512キロバイトから上は64メガバイトまでの固定サイズのブロックで、複数のセクターにパーティション化されたものであってよい。しかしながら、別の実施例においては、仮想ディスクエクステントは、可変サイズのエクステントであり得る。典型的な構成では、ゲストオペレーティングシステム412をブートする前に、エミュレートまたはエンライトされたストレージコントローラーに関するリソースと、エミュレートまたはエンライトされた仮想ディスクの態様が設定される。レジスターにマップされたメモリーを伴なうエミュレートされたストレージコントローラーが、仮想マシン410のゲスト物理アドレス空間の中で有効なようにである。ブートコードが実行され、ゲストオペレーティングシステム412がブートされる。仮想化システム420は、ゲスト物理アドレス空間のこの領域にアクセスしようとする試みを検知し、結果を返すことができ、それにより、ゲストオペレーティングシステム412は、ストレージデバイスがエミュレートされたストレージコントローラーに接続されていると判断できる。応答として、ゲストオペレーティングシステム412は、ドライバー(パラ(para)仮想化ドライバーまたは標準のドライバーのいずれか)をロードし、検知されたストレージデバイスに対してストレージIOリクエストを発行するためにそのドライバーを使用する。仮想化システム420は、ストレージIOリクエストを仮想ディスクパーサ404に対して伝えることができる。
ゲストオペレーティングシステム412は、実行されると、ファイルシステム414を介して仮想ディスク402に対してIOジョブを発行することができる。このことは、コンピューターファイルとゲストオペレーティングシステム412のデータ、および、ゲストオペレーティングシステム412上にインストールされたアプリケーションを体系付けることにおいて、仮想化システムのファイルシステム414と類似している。ゲストオペレーティングシステム412は、オペレーティグシステムが物理的ストレージデバイスとインタラクトするやり方と類似の方法において、仮想ディスク402とインタラクトすることができ、ついには、IOジョブが仮想ディスクパーサ404へ伝えられる。仮想ディスクパーサ404は、物理的ストレージデバイスをエミュレートするやり方で、IOジョブにどのように対応するかを決定するためのロジックを含んでよい。例えば、仮想ディスクパーサ404は、仮想ディスクファイル406からデータを読み出し、仮想ディスクファイル406にデータを書き込むことができる。次に、仮想ディスクファイル406に書き込まれたデータは、仮想化システムのファイルシステム408を通じて伝送され、固定ストレージユニット460上または中に保管された仮想ディスクファイルのパーシスタントコピーに引き渡される。
簡潔に図5Aを参照すると、この文書において説明される技術を実行するための代替的なアーキテクチャーが示されている。図5に示すように、仮想ディスクパーサ404は、また、マイクロソフトから提供されるオペレーティグシステムといった、オペレーティグシステム502の中で実行され得る。この実施例において、仮想ディスクパーサ404は、ストレージサーバー500上で実行されるように構成され得る。ストレージサーバーは、図1のコンピューターシステム100に類似のコンポーネントを含み得る。この実施例において、ストレージサーバー500は、物理的ストレージデバイス510のアレイを含み、ストレージがオペレーティグシステム508に対してローカルで接続されているように見えるように、サーバーに対してストレージを利用可能にすることができる。仮想ディスクパーサ404は、図4に関して説明したのと同様に動作できる。この構成における相違は、ファイルシステム414によって発行されたIOジョブが、ネットワーク接続を通じて仮想ディスクパーソナルコンピューターさ404に伝送され得ることである。
簡潔に図5Bを参照すると、この文書において説明される技術を実行するためのさらなる別のアーキテクチャーが示されている。図5Bは、仮想ディスクパーサ404がオペレーティグシステム502において実行されること、および、コンピューターシステム512が図1のコンピューターシステム100に類似するコンポーネントを含み得るという点で、図5Aと類似している。しかしながら、この実施例における相違は、ループバック接続(loopback−attached)の仮想ディスク402が記載されていることである。ファイルシステム414は、アプリケーション424といったアプリケーションを含むが、仮想ディスク402の中に保管され得るし、仮想ディスクファイル406は、コンピューターシステムのファイルシステム514の中に保管され得る。
ここで仮想ディスク402に注目すると、仮想ディスクは単一の仮想ディスクファイルによって作用され得る一方で、別の構成においては、仮想ディスク402をもたらすために、差分仮想ディスクファイル(differencing virtual disk file)のグループが使用され得る。図6は、仮想ディスク402が差分ディスクとして作用するために、仮想ディスクパーソナルコンピュータパーサ404によって使用され得る典型的な仮想ディスクのチェインを示している。一般的に、差分仮想ディスクファイルは、親イメージとの比較において変更された一式のエクステントとしての、仮想ディスクの現在の状態を表す。親イメージは、別の差分仮想ディスクファイルであるか、または、ベース仮想ディスクファイルであり得る。
典型的な構成においては、親仮想ディスクファイルと子仮想ディスクファイルとの間のリンクは、子の中に保管することができる。特に、子は、親の識別子と親の場所を示す値を含み得る。仮想マシンを開始すると、仮想ディスクパーサ404は、チェインにおける最後の仮想ディスクファイルを示す情報を受け取る。つまり、仮想ディスクファイル612は、仮想ディスクファイル612、610、606、および、600を含むチェインの最後であり、このファイルをオープンする。このファイルは、その親の識別子を含み得る。つまり、仮想ディスクファイル610と、そこへのパスである。仮想ディスクパーサ404は、ベース仮想ディスクファイルが配置され、オープンされるまで、親を配置し、オープンする、といったようなことができる。
仮想ディスクパーサ404は、データが親仮想ディスクファイルの中に存在しているか、保管されているかどうかを示す情報を使用することができる。典型的に、チェインにおける最後の仮想ディスクファイルは、読出し/変更としてオープンされ、他の仮想ディスクファイルは、読出し専用としてオープンされる。従って、書込みは、チェインにおける最後の仮想ディスクファイルに対して行われる。読出しオペレーションは、同様に、最初に、チェインにおける最後の仮想ディスクファイルに向けられる。そして、仮想ディスクパーサ404は、論理的順序において、最後の仮想ディスクファイルからベース仮想ディスクファイルまでを検索し、そのデータがどこに配置されているかの情報はキャッシュされていないというデータが見つけられるまで続ける。特定の実施例において、仮想ディスクファイル、例えば仮想ディスクファイル612、のためのブロックアロケーション(block allocation)テーブル(図示なし)は、仮想ディスクエクステントが仮想ディスクファイルのセクションによって定められるかどうか、または、この仮想ディスクエクステントがトランスペアレント(transparent)であるかを示す状態情報を含み得る。例えば、さらなるチェインに沿った異なる仮想ディスクファイルによって定められる。一つの実施例においては、仮想ディスクパーサ404は、この仮想ディスクエクステントがトランスペアレントであるかどうかを判断すること、チェインにおける次の仮想ディスクファイル、例えば仮想ディスクファイル610、に対するブロックアロケーションテーブルにアクセスすること、などといったことができ、そのデータを定めるチェインにおける仮想ディスクファイルが配置されるまで続ける。
図7を参照すると、図は、仮想ディスクファイル702によって、少なくとも部分的に説明された仮想ディスク402を示している。仮想ディスクは、図6において説明された書込み/変更可能なあらゆる仮想ディスクファイル、例えば、仮想ディスクファイル602、608、または612、に、もしくは、単一の仮想ディスクファイルに類似している。図に示されるように、仮想ディスク412は、N個のストレージに係るエクステントを含み得る(ここで、Nは0より大きい整数である)。そして、この特定の実施例では、仮想ディスク402は、10個のエクステントを含んでいる。仮想ディスク402は、異なるファイルに対するビットパターンおよびゲストオペレーティングシステム412に対するデータを含んでいるように示されており、仮想ディスクエクステントの中の異なるパターンによって差別化される。
仮想ディスク402は物理的ストレージデバイスではないので、仮想ディスクエクステントに対して基礎をなすペイロードデータは、仮想ディスクファイル702の中の異なるセクションによって”記述される“、つまり、保管される。例えば、仮想ディスクエクステント1は、仮想ディスクファイルオフセット値0、または、ペイロードデータを保管するために使用できる最初のオフセットにより定められるセクションによって記述される。アロケーションテーブル416は、コンピューターシステム400の動作中はランダムアクセスメモリーの中に保管され得るが、あらゆるセクションにおいて仮想ディスクファイル702の中で固定され得るし、複数のセクションを拡張し得る。簡潔には、アロケーションテーブル416は、仮想ディスクエクステントを仮想ディスクファイル702のセクションに対してリンクする情報を含んでいる。例えば、アロケーションテーブル416は、データを保管する仮想ディスクファイル702のセクションを定める仮想ディスクのファイルバイトオフセットを決定する情報を保管することができる。矢印は、アロケーションテーブル416に保管された関係を示している。
以降のパラグラフにおいてより詳細が説明されるが、アロケーションテーブル416は、また、状態情報も含み得る。しかしながら、この構成は典型的なものである。代替的な構成において、この情報は、仮想ディスクファイル702の異なるセクションに保管され、RAM104の中にロードされ得る。アロケーションテーブル416は、それぞれの仮想ディスクエクステントに対するエントリーを含み得る。どの状態にそれぞれのエクステントが入っているかを示す状態情報、および、仮想ディスクファイル702においてそれぞれの仮想ディスクエクステントがどこに記述されているか(図示なし)を示すファイルオフセットである。代替的な実施例において、エクステントは、また、複数の既にマップされ(ファイルオフセットにおいて)連続したテーブルエントリーによっても定められ得る。この構成においては、ブロックペイロードがファイルにおいて連続である場合に、ブロック境界をまたぐ読出し及び書込みは、仮想ディスクファイル702に対する単一の読出し/書込みとしてサービスされ得る。特定の実施例において、仮想ディスクパーサ404は、また、どのタイプのビットパターンが、仮想ディスクファイルの使用されていないそれぞれのセクションに保管されているかを示す情報、つまり、フリースペースマップ、を保管することができる。上述に加えて、フリースペースマップは、仮想ディスクファイル406のどのセクターが使用され、どれがフリーであるかを判断するために、仮想ディスクパーサ404によって使用されることを許可する。この実施例におけるフリースペースマップは、非ゼロ(non−zero)であるファイルにおけるフリースペースをトラックするように構成され得る。一つの典型的な実施例においては、仮想ディスク402の一部分を記述するためにフリースペースの非ゼロ領域を使用しているので、ゼロであり、または、他の仮想ディスクオフセットからの情報を開示してはならず、フリースペースは、ゼロまたは情報を開示しないパターン(典型的にはゼロ)で、それぞれ上書きされる。仮想ディスクパーサ404は、仮想ディスクファイルのどのセクションを仮想ディスクエクステントに割り当てるかを定めるために、この情報を使用することができる。例えば、ゼロ状態にある仮想ディスクエクステントに書き込む場合、仮想ディスクパーサ404は、仮想ディスクエクステントに戻るために、既に中にゼロを有しているセクションを割り当てることができる。
ゲストオペレーティングシステム412またはオペレーティグシステム508は、実行されると、データとファイルを生成し、仮想ディスク402に対して、データを保管するようにディスク書込みを発行する。仮想ディスクファイル702が、追加の使用されていないスペースを有しない場合、仮想ディスクパーサ404は、ファイルの終わりを延長し、その仮想ディスクエクステントを記述するために新たなスペースを使用することができる。ゲストオペレーティングシステム412またはオペレーティグシステム508は、仮想ディスク402のセクションを使用、削除、および、再使用することができる。しかしながら、仮想ディスクパーサ404は、単に、ファイルシステム414のためだけにデータを保管しているので、仮想ディスクパーサ404は、ゲストオペレーティングシステム412によって、仮想ディスクファイルのセクションが未だに使用されているかどうかを判断することができない。従って、仮想ディスクパーサ404は、もはやファイルシステム414によって使用されていない仮想ディスクエクステントを記述するために、仮想ディスクファイル702において割り当てられたスペースを保持する。この結果として、仮想ディスクファイル702のサイズは、仮想ディスク402のサイズに到達するまで増加し得る。
典型的な実施例において、仮想ディスクパーサ404は、仮想ディスクファイルの使用されていないセクションをリクレーム(reclaim)し、任意的にそれらを再使用するように構成され得る。そのように、仮想ディスクファイルが拡張されるべき頻度は減り、仮想ディスクファイルの全体のサイズが削減される。一つの典型的な実施例において、ファイルシステムが、仮想ディスクエクステントをもはや使用していないことを知らせる場合、仮想ディスクパーサ404は、仮想ディスクファイルからの仮想ディスクエクステントの割り当てを解除し、つまりリンクをはずし、仮想ディスクエクステントを、その仮想ディスクエクステントに対する読出しオペレーションがどのように扱われるべきかを記述する情報に関連付けることができる。そして、仮想ディスクファイルのセクションは、同一または別の仮想ディスクエクステントを記述するために再使用され得る。
一つの典型的な構成において、仮想ディスクパーサ404は、TRIM、UNMAP、及び/又は、仮想ディスクエクステントが、いつ仮想ディスクファイル406からの割り当てを解除できるかを判断するために、ファイルシステムによって発行されるゼロコマンドに係るWRITE SAMEを使用することができる。TRIMコマンドは、ゲストオペレーティングシステム412またはオペレーティグシステム508によって発行され得る。例えば、ゲストオペレーティングシステム412またはオペレーティグシステム508が実行されると、ファイルシステム414は、いくつかのセクターがもはや必要ではないと判断し、TRIMコマンドを発行することがある。代替的に、または、追加的に、仮想ディスクパーサ404は、規定のインターバルにおいて、または、規定のクライテリアが満足された場合に、ファイルシステム414がTMRコマンドを発行することをリクエストするように構成され得る。例えば、仮想マシン410がインスタンス化された場合、仮想マシン410がシャットダウンした場合、軽度の使用下、等である。
簡潔には、TRIMコマンドは、データストレージデバイスに、どのセクターが使用中であるともはや考えられていないか、について、そのデータストレージデバイスに知らせるために使用される。そこに保管されたデータが、データストレージデバイスによって、任意的に消去され得るようにである。TRIMコマンドの一つのタイプは、フリースペースTRIMコマンドと呼ばれるが、セクターがファイルシステム414によってもはや使用されていないことを知らせるために、ファイルシステム414によって使用され得る。スタンダードTRIMコマンドと呼ばれる他のコマンドはそうできない。TRIMコマンドの2つのタイプ間の違いは、セクターがフリースペースTRIMの対象である場合に、ユーザースペースアプリケーション及びそういったものが、セクターから読出すことを防ぐことによって、ファイルシステム414が、セクターに対する安全を提供することである。この方法でトリム(trim)されたセクターへのアクセスをファイルシステム414が保証するという事実は、仮想ディスクファイルスペースを効率的に割り当てる能力を増大するために使用することができる。この特定の実施態様は、以降のパラグラフにおいてより詳細に説明される。
一つの典型的な構成において、仮想ディスクパーサ404は、仮想ディスクエクステントがTRIMコマンドによって完全にカバーされる場合に、再生オペレーションを実行するように構成され得る。また、他の方法としては、仮想ディスクパーサ404は、仮想ディスクエクステントにおける全てのセクターを特定する仮想ディスクのセクター領域を定めるTRIMコマンドの受け取りに応じて、仮想ディスクファイルから仮想ディスクエクステントの割り当てを解除することができる。同一または代替的な実施例において、仮想ディスクエクステントの一部をカバーするTRIMコマンドを受取った場合、仮想ディスクパーサ404は、消去されたセクターに対応するのは仮想ディスクファイルのどの領域であるかを判断することができ、ストレージデバイス106に対する仮想ディスクファイルの領域に対してTRIMコマンドを送付することができる。この実施例において、基礎をなすファイルシステム、例えば仮想化システムのファイルシステム408、ストレージサーバーのファイルシステム504、またはコンピューターシステムのファイルシステム514は、TRIMコマンドを変換し、かつ、変換されたオフセットをストレージデバイス106に送付し、内部データ構成の変更を介してスペースを直接的にリクレームし、または、キャッシュからのデータをクリアする、ことができる。
同一または別の実施例においては、仮想ディスクエクステントの一部をカバーするTRIMコマンドを受取った場合、仮想ディスクパーサ404は、どのセクターがTRIMコマンドの対象であるか、そして、TRIMコマンドがフリースペーストリムであったか否か、を示す情報を保管するように構成されてよい。仮想ディスクエクステントの残りが消去されたインスタンスにおいて、仮想ディスクパーサ404は、仮想ディスクファイルからの仮想ディスクエクステントの割り当てを解除することができる。
仮想ディスクファイルを割り当てを解除する場合、仮想ディスクパーサ404は、仮想ディスクエクステントを、その仮想ディスクエクステントに指示された読出しオペレーションをどのように扱うかを記述した状態情報と関連付けることができる。表1は、仮想ディスクパーサ404が関連付けられ、そして、仮想ディスクファイルの再生を最適化するために使用することができる典型的な状態情報を示している。仮想ディスクエクステントをリクレームする能力は、一つの実施例において、2つの状態(記述された、および、記述されない)を使用して達成される。しかしながら、データが削除された場合に、仮想ディスクファイル702の中に保管されたビットパターンは、典型的には消去されないので、スペースが再使用される前に、仮想ディスクエクステントを記述するために選択されたスペースが、消去される必要があるのはいつか、または、そこに保管される以前にデータを上書きすることなく再使用することができるか、を判断するために追加の状態が使用され得る。削除に際してデータが消去されない一つの理由は、データを消去するためにプロセッササイクルを要するからであり、いくつかのストレージデバイスは、ブロック単位ベースで書込みオペレーションを実行するように構成されているので、新たなデータで上書きするときに、データを消去するのが、より効率的である。以降の状態は典型的なものであり、本発明開示は、以下の表に定められた状態を使用することに限定されない。
Figure 2017045477
図7に関して表1を参照すると、リストされている第1の状態は「マップ」状態であり、仮想ディスクエクステントが仮想ディスクファイル702のセクションによって記述されることを示している。例えば、仮想ディスクエクステント0は、「マップ」状態にあるものとして示されている仮想ディスクエクステントの実施例である。
表1の記載について続けると、仮想ディスクエクステントは、その仮想ディスクエクステントが「トランスペアレント」であることを示す状態情報と関連付けられ得る。つまり、その仮想ディスクエクステントは、異なる仮想ディスクファイルによって記述されるということである。トランスペアレント状態で、仮想ディスクエクステントに対する読出しオペレーションが仮想ディスクパーサ404によってが受取られるインスタンスにおいて、仮想ディスクパーサ404は、異なる仮想ディスクファイルを参照することができ、読出しにどのように応答するかを判断するためにアロケーションテーブルをチェックすることができる。仮想ディスクエクステントに対する読出しオペレーションを仮想ディスクパーサ404が受取るインスタンスにおいて、仮想ディスクパーサ404は、仮想ディスクエクステントを「トランスペアレント」状態から「マップ」状態に転換することができる。
図7に関する表1の記載について続けると、仮想ディスクエクステントは、また、「非マップ」状態と関連付けられ得る。この実施例において、仮想ディスクエクステントは、仮想ディスクファイル702によって記述されず、また、チェインの中のいかなる他の仮想ディスクファイルによっても記述されない。この実施例では、非マップ状態は、TRIMコマンドに従う仮想ディスクエクステントを記述するために使用され得る。TRIMコマンドは、ファイルシステム414が仮想ディスクエクステントに対するアクセスを保証するであろうことを意味しない。または、言い換えると、この仮想ディスクエクステントをこの状態に転換するために使用されたTRIMコマンドは、標準TRIMコマンドである。仮想ディスクエクステントが非マップ状態にあり、そのエクステントに対する読出しを示すIOジョブが受取られるインスタンスにおいて、仮想ディスクパーサ404は、以下で応答することができる。0(ゼロ)、0トークン、1、全部1を表すトークン、または、ビットパターンを開示する非情報、例えば、全部0、全部1、1と0がランダムに生成されたパターン、である。この実施例において、仮想ディスクファイル702のセクションが、この状態での仮想ディスクエクステントの裏付けに割り当てる場合、仮想ディスクパーサ404は、割り当ての前に、ビットパターンを開示する非情報を仮想ディスクファイル702のセクションに書き込むことができ、または、仮想ディスクエクステントを記述するためのビットパターンを開示する非情報を既に含んでいるセクションを選択することができる。図7の仮想ディスクエクステント6は、非マップ状態にあるものとして示されている。
一つの実施例においては、非マップまたは非初期化のエクステントを定めるデータが維持される。非マップまたは非初期化状態は、2つのサブ状態(sub−state)を含んでいる。それらは、データが未だに仮想ディスクファイル702の中にあることを意味する、アンカー、および、データが維持されている又はいないことを意味する、非アンカー、である。これらのサブ状態が使用されるインスタンスにおいて、仮想ディスクパーサ404は、セクションをゼロにすることなく、データを保管するセクションを割り当てることによって、非マップだがアンカーであるエクステントをマップに転換することができる。同様に、仮想ディスクパーサ404は、仮想ディスク402の少なくとも一部に対して、非初期化エクステントをそれらが非マップであるかのように取り扱うよう構成されている一方で、仮想ディスクパーサ404は、セクションをゼロにすることなく、データを保管するセクションを割り当てることによって、エクステントをマップに転換する最中に、非初期化だがアンカーであるエクステントをゼロにするのを防ぐことができる。
表1は、加えて「ゼロ」状態を示している。この実施例において、仮想ディスクエクステントは、仮想ディスクファイル702によって記述されず、また、チェインの中のいかなる他の仮想ディスクファイルによっても記述されない。しかしながら、仮想ディスクエクステントは、全部0(ゼロ)であるとして読み出すことが求められる。この実施例において、ゼロ状態は、TRIMコマンドのいずれのタイプにも従う仮想ディスクエクステントを記述するため、または、プログラムが全部を0(ゼロ)に書き込んだ仮想ディスクエクステントを記述するために使用され得る。例えば、以前に保管されていたデータが完全に上書きされたことを保証するために、削除ユーティリティープログラムが、仮想ディスクエクステント4に対して全部0(ゼロ)を書き込むことを想定してみよ。仮想ディスクエクステントがゼロ状態にあり、そのエクステントへの読出しを示すIOジョブが受取られるインスタンスにおいては、仮想ディスクパーサ404は、ゼロまたはゼロトークンで応答することができる(オフロード読出しオペレーションにおいて)。この状態において書込みが仮想ディスクエクステントに対して指示されるインスタンスにおいては、仮想ディスクパーサ404は、仮想ディスクファイル702のセクションをゼロにして、仮想ディスクエクステントを記述するために使用し、または、既にゼロである仮想ディスクファイル702の一部を選択して、仮想ディスクエクステントの裏付けに割り当てることができる。この実施例において、ゼロにされたスペースは、データ構成または仮想ディスクファイル702を使用してトラックすることができるだろう。データ構成は、仮想ディスクファイル702がオープンされたとき、仮想ディスクファイル702がクローズされたとき等、定期的に更新され得る。非マップまたは非初期化状態におけるエクステントからの読出しは、任意的に、仮想ディスクパーサ404に、そのエクステントをゼロ状態に転換させる。仮想ディスクパーサ404が、非マップまたは非初期化状態におけるエクステントに対してセクタースタビリティ(stability)を提供するように構成されている構造におけるものである。
表1は、また、「非初期化」状態と呼ばれる状態を示している。非初期化状態は、仮想ディスクエクステントが仮想ディスクファイル702によって記述されないこと、および、ファイルシステム414が仮想ディスクエクステントに対するアクセスを保証していることを示している。つまり、ファイルシステム414は、ユーザーアプリケーションが、仮想ディスクエクステントの中のセクターを読み出すことを防ぐように構成されている。この実施例において、非初期化状態は、フリースペースのTRIMコマンドに従う仮想ディスクエクステントを記述するために使用され得る。仮想ディスクエクステントが非初期化状態であり、エクステントに対する読出しを示すIOジョブが受取られるインスタンスにおいて、仮想ディスクパーサ404は、あらゆるデータで応答することができる。つまり、仮想ディスクファイル702のほとんど全ての場所からのビットパターン、0、1、情報を開示しないビットパターン、等である。仮想ディスクペイロードと安全にインパクトを与えることのないメタデータだけが、仮想ディスククライアントに対して表されるという要求を超えて、仮想ディスクパーサ404は、仮想ディスクエクステントに対する安全を提供するものではないからである。この状態における仮想ディスクエクステントに対して書込みが指示されるインスタンスにおいて、仮想ディスクパーサ404は、そのセクションの中に保管されるあらゆるデータを警告することなく、単純に仮想ディスクファイル702のセクションを割り当てることができる。従って、事前にスペースをクリアすることなく仮想ディスクファイルの中にスペースを割り当てることができるので、この状態が最も有利である。図7の仮想ディスクエクステント5は、非初期化状態にあり、仮想ディスクファイル702は、その仮想ディスクエクステントを裏付けていないものとして示されている。
状態情報がそれぞれの仮想ディスクエクステントと関連付けられると、仮想ディスクパーサ404は、アドミニストレーター又はそのようなものに対して、仮想ディスク404がどのように配置されるかについて追加の情報を提供するように構成され得る。一つの典型的な実施例においては、仮想ディスク404は、状態情報に基づいた所定のパラメーターを含むオフセットクエリー(query)に対して反応するように構成され得る。例えば、ユーザーは、与えられたバイトオフセットから開始して、仮想ディスク402を通して繰り返すクエリーを発行することができ、「マップ」、「非マップ」、「トランスペアレント」等、といった特定のクライテリアを満足する領域を配置することができる。加えて、ユーザーは、差分仮想ディスクファイルを考慮するために、クエリーがどのくらい「深く」行くべきかを選択することができる。例えば、図7を参照すると、ユーザーは深さを2に設定して、クエリーを実行し得る。それに応じて、仮想ディスクパーサ404は、チェインにおける最後の2つの仮想ファイルについてクエリーを実行する。例えば、仮想ディスクファイル610と612である。特定のクエリーは、次の非トランスペアレント領域、次の非ゼロ領域、次の定義された領域、次の初期化された領域、等、を獲得するためのクエリーを含み得る。簡潔には、次に定められた領域に対するクエリーは、定められたデータを含む次の領域を返すように構成され得る(例えば、マップまたはゼロ状態におけるセクターであって、そのセクターの親の仮想ディスクファイルの状態を決めるトランスペアレントセクターを伴なうもの)。次の初期化された領域に対するクエリーは、そのセクターの親の仮想ディスクファイルの状態を決めるトランスペアレントセクターを伴なって、非初期化状態以外の状態におけるデータを含む次の領域を返すことができる。
図8に移ると、図は、仮想ディスクパーサ404が、仮想ディスク402に保管されるファイルまたは他のデータに応じて、どのように仮想ディスクエクステントを一つの状態から別の状態へ転換するかについての特定の実施例を示している。例えば、ユーザーが仮想マシン410の中でデータベース管理プログラムを使用し、データベースを創出するものと想定してみよ。ユーザーは、データベースをファイルの中に保管することができ、ファイルシステム414は、仮想ディスク402上のどこにファイル802を保管するかを定めることができる。ファイルシステム414は、ファイル802を、例えば、仮想ディスクエクステント3から5の中に落とし込まれるセクターに書き込むように、一つまたはそれ以上のディスク書込みを発行することができる。この実施例において、仮想ディスクエクステント3は、「マップ」され、仮想ディスクパーサ404は、ファイル802の最初の部分をアロケーションテーブル416によって特定されたセクションへ書き込むことができる。
仮想ディスクエクステント4と5は、一方で、「ゼロ」と「非初期化」状態である。この実施例において、仮想ディスクパーサ404は、仮想ディスクエクステント4を裏付けるために仮想ディスクファイル702の使用されていないセクションを選択し、仮想ディスクエクステント4がゼロ状態にあることを定めることができる。この決定に応じて、仮想ディスクパーサ404は、仮想ディスクエクステント4を記述するために使用されようとしているセクションをゼロ化し、または、既に全部ゼロであるセクションを割り当てることができる。ゼロであるセクションを割り当て、または、セクションをゼロ化するプロセスが完了した後で、仮想ディスクパーサ404は、セクションの最初のバイトを示す仮想ディスクのファイルバイトオフセットを特定する情報を生成し、そして、アロケーションテーブル416に保管することができる。そのセクションの最初のバイトは、仮想ディスクファイル702において仮想ディスクエクステント4がどこに記述されるかを定めるものである。仮想ディスクパーサ404は、次に、「マップ」状態であることを示すために仮想ディスクエクステント4に関する状態情報を変更する。そして、エクステント4に対する書込み領域を、割り当てられたセクションに書き込むことができる。
代替的には、現在ゼロ状態にある仮想ディスクの全てのエクステントをカバーする書込み領域のために、仮想ディスクファイルの割り当てられたセクションが選択され、そのセクションに対して書込み領域が発行されて、書込みが完了すると、次に、仮想ディスクパーサ404は、そのエクステントが「マップ」状態であることを示すために、仮想ディスクエクステントに関する状態情報を変更することができる。代替的には、現在ゼロ状態にある仮想ディスクエクステントを部分的にしかカバーしない書込み領域のために、仮想ディスクファイルの割り当てられたセクションが選択され、そのセクションに対して書込み領域が発行され、そのセクションの残りに対してゼロ化書込みが発行されて、書込みが完了すると、次に、仮想ディスクパーサ404は、そのエクステントが「マップ」状態であることを示すために、仮想ディスクエクステントに関する状態情報を変更することができる。当業者であれば、与えられた書込み命令は、フォースユニットアクセス(force−unit−access)書込みといった、フラッシュ(flush)またはライトスルーライト(write−through−write)を使用して遂行できることが理解されよう。
同様に、仮想ディスクパーサ404は、仮想ディスクエクステント5を裏付けるために仮想ディスクファイル702の使用されていないセクションを選択し、アロケーションテーブル416に問い合わせることにより、仮想ディスクエクステント5が非初期化状態にあることを定めることができる。この決定に応じて、仮想ディスクパーサ404は、選択されたセクションの内容を変更することなく、仮想ディスクエクステント5を記述するためのセクションを割り当てることができる。仮想ディスクパーサ404は、セクションの最初のバイトを示す仮想ディスクのファイルバイトオフセットを特定する情報を生成し、そして、セクションのファイルバイトオフセットをアロケーションテーブル416に保管することができる。そのセクションの最初のバイトは、仮想ディスクファイル702において仮想ディスクエクステント4がどこに記述されるかを定めるものである。仮想ディスクパーサ404は、次に、「マップ」状態であることを示すために仮想ディスクエクステント5に関する状態情報を変更する。
図9は、仮想ディスクパーサ404が、ファイル802の削除オペレーションと仮想ディスクエクステント7の内容をゼロ化するオペレーションに応じて、どのように仮想ディスクエクステントを一つの状態から別の状態へ転換するかについて別の特定の実施例を示している。例えば、ユーザーはファイル802を削除し、ファイルシステム414はTRIMコマンドを発行する。この実施例において、仮想ディスクパーサ404は、仮想ディスクエクステント4と5を完全にカバーし、仮想ディスクエクステント3を部分的にカバーする仮想ディスクセクターの領域を含むTRIMコマンドを受け取る。仮想ディスクエクステント4と5が完全に削減されるという決定に応じて、仮想ディスクパーサ404は、アロケーションテーブル416からリンクを除去し、仮想ディスクファイル702がこの仮想ディスクエクステントを裏付けていないことを示す状態に仮想ディスクエクステント4を転換するように構成され得る。ユーザーが仮想マシン410の中でデータベース管理プログラムを使用し、データベースを創出するものと想定してみよ。ユーザーは、データベースをファイルの中に保管することができ、ファイルシステム414は、仮想ディスク402上のどこにファイル802を保管するかを定めることができる。ファイルシステム414は、ファイル802を、例えば、仮想ディスクエクステント3から5の中に落とし込まれるセクターに書き込むように、一つまたはそれ以上のディスク書込みを発行することができる。この実施例において、仮想ディスクエクステント3は、「マップ」され、仮想ディスクパーサ404は、ファイル802の最初の部分をアロケーションテーブル416によって特定されたセクションへ書き込むことができる。仮想ディスクエクステント4のためのアロケーションテーブルのエントリーに示されるように、仮想ディスクパーサ404が、仮想ディスクエクステントを転換する状態は、仮想ディスクパーサ404がどの状態を使用するように構成されているか、および、ファイルシステム414がフリースペースTRIMコマンドまたは標準TRIMコマンドを発行するかどうか、に依存している。例えば、仮想ディスクパーサ404は、2つの状態を使用するように構成され得る。つまり、仮想ディスクエクステントを記述するためのマップとゼロである。代替的には、仮想ディスクパーサ404は、3つの状態を使用するように構成され得る。つまり、仮想ディスクエクステントを記述するためのマップ、ゼロ、非マップ、である。代替的には、仮想ディスクパーサ404は、4つの状態を使用するように構成され得る。つまり、マップ、ゼロ、非マップ、非初期化である。非マップと非初期化との相違は、標準TRIMコマンドとフリースペースTRIMコマンドとの相違に応じたものである。パーサが非初期化状態を使用しないように構成されている場合に、フリースペースTRIMは、標準TRIMとして扱われる。図に示すように、ファイル702の部分は、仮想ディスクファイル702の中にまだ保管されている。それらを仮想ディスクファイル702から消去しても効率が悪いからである。
仮想ディスクエクステント5は、TRIMによって部分的にカバーされているので、仮想ディスクパーサ404は、このエクステントを種々の方法のうちの一つにおいて扱うことができる。一つの構成において、仮想ディスクパーサ404は、エクステント5をマップ状態にしておいてもよい。この構成において、仮想ディスクパーサ404は、エクステント全体に対するTRIM情報が受け取られた場合に、エクステントを転換してもよい。代替的には、仮想ディスクパーサ404は、エクステントを記述するスペースが割り当て解除され得るとの指示を提供するより多くのTRIM情報が受け取られることを期待して、エクステントを部分的にカバーするTRIM情報をトレースしてもよい。
同様に、仮想ディスクエクステントは、また、TRIMによって部分的にカバーされる。この実施例において、仮想ディスクパーサ404は、マップ状態のまま残され、もはや使用されない仮想ディスクファイル702の部分を記述するTRIM情報を基礎をなすファイルシステムに対して送付するように構成され得る。例えば、ファイルシステムは、仮想化ファイルシステム408、ストレージサーバーのファイルシステム504、または、コンピューターシステムのファイルシステム514、である。
ファイル802の削除に加えて、図9は、仮想ディスクエクステント7がゼロ化される実施例を示している。仮想ディスクパーサ404は、ファイルシステム414によって発行され、仮想ディスクエクステント7の全ての領域がゼロ化されることを示すIOジョブをスキャンすることができる。この決定に応じて、仮想ディスクパーサ404は、エクステントアロケーションテーブル416からリンクを除去し、仮想ディスクエクステント7をゼロ状態に転換するように構成され得る。図に示すように、仮想ディスクエクステント7の以前の内容は、仮想ディスクファイル702の中に未だに保管されている。
図10に移ると、図は、仮想ディスクファイルのグループ1002、1004、1006によって少なくとも部分的に記述される仮想ディスク402を示している。それは、仮想ディスクファイル608、604、および、600によって定まる仮想ディスクファイルのチェインに類似している。この典型的な実施例において、仮想ディスク402を表すデータは、複数の仮想ディスクファイルにわたって分解される。この典型的な実施例においては、仮想ディスクパーサ404が仮想ディスクエクステント1と2を読み出そうと試みる場合、仮想ディスクパーサ404は、仮想ディスクファイル1002のためのアロケーションテーブルにアクセスし、これらのエクステントがトランスペアレントであると定めることができる。次に、仮想ディスクパーサ404は、仮想ディスクファイル1004のためのアロケーションテーブルにアクセスし、これらのエクステントがトランスペアレントであると定めることができる。最後に、仮想ディスクパーサ404は、祖父母の仮想ディスクファイル1006のためのアロケーションテーブルにアクセスし、これらの仮想ディスクエクステントが定義されたものと定めることができる。
以降は、オペレーションの工程を説明する一連のフローチャートである。理解を容易にするために、フローチャートは、最初のフローチャートが全般的で「ビックピクチャー(big picture)」な視点による実施を表し、以降のフローチャートは破線で示された、さらなる追加及び/又は詳細を提供する、というように体系付けられている。さらに、当業者であれば、破線で示された任意の工程は、任意的なものであると考えられることが正しく理解されよう。
図11を参照すると、オペレーション1100、1102、1104、および、1106を含む、仮想ディスクファイル内でスペースをリクレームするためのオペレーション工程が示されている。オペレーション1100は、オペレーション工程を開始する。オペレーション1102は、仮想ディスクエクステントを含む仮想ディスクのインスタンス化を示しており、仮想ディスクエクステントは、仮想ディスクファイルから切り離されている。簡潔に図4、図5A、または、図5Bに移ると、仮想ディスク402は、例えば、実行可能なインストラクションや関連付けされたインスタンスデータといった、仮想ディスクパーサ404によってインスタンス化され、一つまたはそれ以上の仮想ディスクファイルの中に保管されたデータが、論理的ハードドライブとして公開される。論理的ハードドライブは、ハードドライブの行為をエミュレートすることによりファイルシステム414からの読出し/書込みオペレーションを扱うように構成され得る。仮想ディスクファイル406(図6に示されるように、一つまたはそれ以上のファイルであり得る)は、物理的ハードドライブ上に典型的に見つけられるものを保管することができる。つまり、ディスクパーティション、ファイルシステム、等である。図7に移ると、仮想ディスク402は、複数のエクステントを含んで示されており、そのうちいくつかは、仮想ディスクファイル702のあらゆるセクターから分離されている。
特定の実施例において、エクステントがブロックであると想定してみよ。この実施例において、アロケーションテーブル416は、一つまたはそれ以上の仮想ディスクファイル702からランダムアクセスメモリーの中にロードされ得るものだが、仮想ディスク402における仮想ディスクブロックを仮想ディスクファイル702のサイズ化(例えば、ブロックサイズ)されたセクションであるエクステントにリンクする情報を保管するために使用され得る。アロケーションテーブル416は、また、仮想ディスク402におけるそれぞれの仮想ディスクブロックに対する状態情報も保管し得る。非ゼロデータを潜在的に含む仮想ブロックは、そのブロックがマップ状態に居ることを示す状態情報と関連付けられる。つまり、仮想ディスクファイル702は、仮想ディスク402のブロックを記述する(例えば、データを保管する)ために割り当てられている。仮想ディスクブロック1から3、および、7は、この状態に居るブロックの例である。図に示されるように、仮想ディスクブロック4と5、6、8、および、9は、有効な仮想ディスクブロックである。しかしながら、これらの仮想ディスクブロックは、仮想ディスクファイル702の中に割り当てられたいかなるスペースも有しない。典型的な実施例においては、ファイルシステム414がこれらのブロックに対して書き込むので、これらの仮想ディスクブロックは、それらに対する読出し及び/又は書込みオペレーションにどのように対応するかを定めるために仮想ディスクパーサ404によって使用される情報と関連付けられ得る。
簡潔に図11に戻って参照すると、オペレーション1104は、コンピューターシステムは、追加的に割り当てのための回路を含み得ることを示している。仮想ディスクに関連付けられた状態情報に基づいて、仮想ディスクファイルのセクションの中に既に存在するビットパターンを上書きすることなく仮想ディスクエクステントを記述するために、仮想ディスクファイルのセクションを割り当てるものである。例えば、図8に戻ると、仮想ディスクパーサ404は、仮想ディスクエクステントの領域に対して書き込むためのIOジョブを受け取ることができる。書込みIOジョブの受け取りに応じて、仮想ディスクパーサ404は、アロケーションテーブル416をチェックし、仮想ディスクエクステントを記述するために仮想ディスクファイル702の中のスペースが割り当てられていないことを判断し、仮想ディスクエクステントを裏付けるために仮想ディスクファイル406のセクションを割り当てる。従って、仮想ディスクエクステントに対してファイルシステムによって書き込まれたデータは、仮想ディスクパーサ404によって、仮想ディスクファイル702のセクションに保管される。
この実施例において、仮想ディスクパーサ404は、アロケーションテーブル416の状態情報に基づいて仮想ディスクエクステントを記述するために使用する以前に、仮想ディスクファイル702のセクションに既に保管されているいかなるデータも(全部0(ゼロ)、全部1、または、ビットパターンを開示するあらゆる他の非情報、を書き込むことにより)上書きしない。典型的な実施例において、状態情報は、ファイルシステム414がこの仮想ディスクエクステントに対するアクセスを保証していることを示し得る。仮想ディスクエクステントは、ファイルシステムのフリースペースによってカバーされているからである。特定の実施例において、状態情報は、仮想ディスクエクステントが「非初期化」状態に居ることを示し得る。クリアすることなく仮想ディスクエクステントを割り当てることは、そうでなければ、仮想ディスクファイル702のセクションを上書きするのに使用されていたであろうプロセッササイクルおよびIOジョブを節約するという付加利益を提供する。
オペレーション1104の特定の実施例において、そして、図7に戻って、エクステントはブロックであり、ファイルシステム414が仮想ディスク402に対して、ファイル802をしますビットパターンを仮想ディスクのブロック3から5に書き込むようにIOジョブを送付することを想定してみよ。そうしたIOジョブの受け取りに応じて、仮想ディスクパーサ404は、仮想ディスクのブロック5は仮想ディスクファイル406のいかなるセクションによっても裏付けされておらず、非初期化であると判断する。この判断に応じて、仮想ディスクパーサ404は、仮想ディスクのブロック5を記述するために、そして、IOジョブによってカバーされないセクションの領域に以前から保管されていたデータを上書きすることなくファイル802を示すビットパターンの領域を書き込むために、仮想ディスクファイル702を割り当てるように構成され得る。
図11に再び戻ると、オペレーション1106は、コンピューターシステムは、仮想ディスクファイルによって仮想ディスクエクステントが記述されていることを示すために、仮想ディスクエクステントと関連付けられた状態情報を変更するように構成された回路を追加的に含むことができる。例えば、図8に戻ると、仮想ディスクパーサ404は、仮想ディスクファイル702が仮想ディスクエクステントを記述していることを反映するために、仮想ディスクエクステントと関連付けられた状態情報を変更する(例えば、メモリーを上書きする)ことができる。一つの構成において、書込みと状態情報の変更は、同時に発生し得る。例えば、仮想ディスクパーサ404は、アロケーションテーブル416の中に、仮想ディスクエクステント5は「マップ」であることを示す情報を保管することができる。従って、仮想ディスクエクステント5に向けられた後続の読出しオペレーションは、アロケーションテーブル416の中で特定されたバイトオフセットのところに保管されたビットパターンを返すことによって、仮想ディスクパーサ404により扱われる。仮想ディスクパーサ404は、同時に、仮想ディスクエクステントを記述するために割り当てられた仮想ディスクファイル702のセクションに対してデータを書込み(例えば、この工程をトリガーした書込みオペレーションに関連するビットパターン)、かつ、システムのファイルシステム408、ストレージサーバーのファイルシステム504、または、コンピューターシステムのファイルシステム514を仮想化するために仮想ディスク702のセクションに対してビットパターンを書き込むIOジョブを発行することができる。続いて発行されたフラッシュコマンドを完了する以前といった、ある時点において、ビットパターンは、固定のストレージユニット460の中に固定される。
図12に移ると、図は、図11で示されたオペレーションと併せて実行され得る追加的なオペレーションを示している。オペレーション1208に移ると、コンピューターシステムは、オフセットクエリーコマンドに対して情報をもって対応するための回路を含み得ることを示している。情報は、非ゼロである仮想ディスクのセクター、非トランスペアレント状態にある仮想ディスクのセクター、マップ状態にある仮想ディスクのセクター、及び/又は、初期化状態にいる仮想ディスクのセクター、を特定するものである。例えば、仮想ディスクパーサ404は、開始のバイトオフセット与えられて、仮想ディスク上の次のバイトオフセットといった、仮想ディスク402に関する情報を生成するためのコマンドを受け取るように構成され得る。仮想ディスクは、非トランスペアレント状態、つまりトランスペアレント以外の状態、マップ状態、つまり仮想ディスクファイル406の中のデータを含む仮想ディスク402のセクター、定義された状態、つまりマップまたはゼロ化された仮想ディスク402のセクター、及び/又は、初期化状態、つまり非初期化以外の状態、にある。コマンドは、深さ制限ができ、所定の数量の仮想ディスクファイルだけが調査される。所定の数量の仮想ディスクファイルが調査された後にトランスペアレントとして残っているあらゆる領域を、その状態クエリーによって示された領域に加えて、リクエスターに報告として返す。どの状態クエリーがリクエストされたかにかかわらずである。こうしたコマンドの受け取りに応じて、仮想ディスクパーサ404は、仮想ディスク402上の最初のバイトオフセットから開始し、コマンドに関する領域が検知されるまで、対応領域、または、領域セットを築き、望まれた情報を返すことができる。
図12の説明を続けると、オペレーション1210は、コマンドのグループから選択された少なくとも一つのコマンドを発行するように仮想ディスクファイルをコントロールしているファイルシステムに対してリクエストを送付することを示している。コマンドは、トリムコマンド、非マップコマンド、ゼロのライトセイム(write same)コマンド、ゼロトークンのオフロード書込みコマンド、を含む。図4、図5A、または、図5Bに戻って参照すると、仮想ディスクパーサ404は、ファイルシステム414に対してリクエストを発行するように構成され得る。この実施例におけるリクエストは、ファイルシステム414がTRIMコマンドを発行するためのものである。例えば、仮想ディスクパーサ404は、ファイルシステム414に対して定期的に一つまたはそれ以上のリクエストを発行することができる。仮想ディスク402のインスタンス化の直後、及び/又は、仮想マシン410のシャットダウン、ハイバーネイト、等の以前である。そうしたコマンドに応じて、ファイルシステム414は、仮想ディスク402のどのセクターがもはや使用されていないかを判断し、これらの使用されていないセクターを特定した一つまたはそれ以上のTRIMコマンドを仮想ディスクパーサ404に対して送付することができる。それにより、仮想ディスクパーサ404は、トリム情報を受け取ることができる。ファイルシステム414によってもはや使用されていないセクターの領域のリスト、および、ファイルシステム414が、それらのセクターに対するアクセスを保証するためにセクターからの読出しを禁止しているかどうかの情報である。仮想ディスクパーサ404は、情報を受け取り、その領域によってカバーされる仮想ディスクエクステントを、仮想ディスクファイル702の中のスペースがリクレームされ得る状態に転換することができる。
図12の説明を続けると、オペレーション1212は、コンピューターシステムは、第2の仮想ディスクエクステントをトリムするリクエストの受け取りに応じて、第2の仮想ディスクエクステントの領域に対応する仮想ディスクファイルの領域を定めるための回路を含むことができる。回路は、仮想ディスクファイルの定められた領域に対するトリムコマンドを、仮想ディスクファイルをストレージデバイス上に保管するように構成されたファイルシステムに対して送付するためのものである。例えば、図8を参照すると、ファイルシステム414は、仮想ディスクエクステントの領域を特定するTRIMコマンドを発行する。例えば、TRIMコマンドは、単に、一つまたはそれ以上の仮想ディスクブロックを形成するセクターの部分に対応するセクターの領域を特定する。特定の実施例において、ファイルシステム414がファイル802を保管するためのスペースをトリムすることを想定してみよ。そのように、トリムコマンドは、単に、仮想ディスクエクステント3を構成するセクターの領域を特定してもよい。この実施例において、仮想ディスクパーサ404は、セクターの領域が仮想ディスクエクステントのサブセクション(subsection)をカバーすることを定め、仮想ディスクエクステントのトリムされた領域に対応する仮想ディスクファイル702の領域を定めるために、アロケーションテーブル416の中のマップ情報を使用することができる。仮想ディスクパーサ404は、システムのファイルシステム408、または、ストレージサーバーのファイルシステム504を仮想化するために、仮想ディスクエクステントのトリムされたセクターに対応する仮想ディスクファイル702の領域をトリムするようにリクエストを発行することができる。システムのファイルシステム408、または、ストレージサーバーのファイルシステム504を仮想化は、トリムコマンドとそれによる利益を使用するように構成され得る。仮想ディスクファイル406を裏付けているセクターの領域をトリムすること、キャッシュからデータをフラッシュ(flush)すること、内部バッファーをクリアすること、等、によってである。
代替的には、仮想ディスクパーサ404は、領域がフリースペーストリムであったかどうかを示す情報と同様に、仮想ディスクエクステントの領域がトリムされたことを示す情報を保管することができる。ゲストオペレーティングシステム412またはオペレーション508が実行していると、最後には、仮想ディスクエクステントの残りをゼロ化またはトリムする。この発生に応じて、仮想ディスクパーサ404は、仮想ディスクエクステントを、仮想ディスクファイル702によって記述されていない状態へと転換することを定め、仮想ディスクエクステントの異なる領域がどのようにトリムされ、または、ゼロ化されたかに応じて、状態を選択することができる。仮想ディスクパーサ404は、仮想ディスクエクステントの異なる領域が異なる非記述の状態に置かれる場合に、仮想ディスクエクステントを転換するための最も制限的な状態を選択するように構成することができる。ゼロ状態は最も制限的なものであり、非初期化は最も制限的でないものであり、非マップはその中間的なところである。例えば、第1の領域がゼロであり、残りが非初期化である場合は、仮想ディスクパーサ404は仮想ディスクエクステントの全体をゼロ状態に転換することができる。
図12の説明を続けると、オペレーション1214は、コンピューターシステム400が、仮想ディスクファイルのセクションから仮想ディスクエクステントを割り当て解除するように、かつ、仮想ディスクエクステントに関する状態情報を変更するように構成された回路を追加的に含み得ることを示している。変更は、その仮想ディスクエクステントをカバーするセクターの領域をトリムするリクエストの受け取りに応じて、仮想ディスクエクステントが、仮想ディスクファイルに関連したスペースを有していないことを示すためである。例えば、図9に移ると、仮想ディスクパーサ404は、仮想ディスクエクステントを仮想ディスクファイル702のセクションに対して関連付けているアロケーションテーブル416のリンクを除去することができる。このオペレーションは、仮想ディスクファイル702から仮想ディスクエクステントを分離する効果を有している。リンクの除去に加えて、仮想ディスクパーサ404は、そのエクステントが仮想ディスクファイル702の中に関連するスペースを持っていないことを示すために、仮想ディスクエクステントと関連付けられた状態情報を変更することができる。つまり、仮想ディスクパーサ404は、仮想ディスクエクステントを、非マップ、非初期化、または、ゼロ状態の中へ置くことができる。
仮想ディスクパーサ404は、仮想ディスクエクステントのセクターをトリムまたはゼロ化するリクエストの受け取りに応じて、リンクを除去し、状態情報を更新することができる。例えば、セクターをトリムまたはゼロ化するリクエストが受け取られ、一つまたはそれ以上の仮想ディスクエクステントをカバーするバイトオフセットの領域を特定する。そうしたIOジョブの受け取りに応じて、仮想ディスクパーサ404は、そのリクエストが仮想ディスクエクステントのセクターをカバーすることを判断し、リンクを除去して状態情報を更新するための上述のオペレーションを実行することができる。
特定の実施例において、IOジョブが、そのトリムがフリースペーストリムであることを示していると想定してみよ。例えば、ユーザーは、仮想ディスクエクステント3から5にわたるビットパターンとして保管されているファイル802を削除し得るし、ファイルシステム414は、そのスペースがファイルシステム414によってもはや使用されていないことを示し得る。フリースペースTRIMコマンドの受け取りに応じて、仮想ディスクパーサ404は、アロケーションテーブル416にアクセスすることができ、ファイルシステムがエクステント3、5の一部と、エクステント4の全部をトリムしたものと判断することができる。この実施例において、仮想ディスクパーサ404は、仮想ディスクエクステント4を仮想ディスクファイル702に対してマップするリンクを除去し、その仮想ディスクエクステントは非初期化であることを示すために仮想ディスクエクステント4に関する状態情報を変更することができる。仮想ディスクファイル602のこのセクションは、今や、他の仮想ディスクエクステントを裏付けるために再使用され得る。加えて、仮想ディスクパーサ404は、仮想ディスクエクステント3と5は、部分的なTRIMコマンドの対象であると判断することができる。この実施例において、仮想ディスクパーサ404は、仮想ディスクエクステント3と5のトリムされた部分を記述する仮想ディスクファイル702の部分を記述する仮想ディスクファイルのバイトオフセットを見つけるためにアロケーションテーブル416を使用することができ、システムのファイルシステム408、ストレージシステムのファイルシステム504、または、コンピューターシステムのファイルシステム514を仮想化するための仮想ディスクファイルのバイトオフセット記述するTRIMコマンドを発行することができる。
別の特定の実施例において、ファイルシステム414によって発行されたIOジョブが、ファイル802をゼロ化することを示すものと想定してみよ。例えば、ファイル802は、クレジットカード番号といった、機密情報を保管しているデータベースファイルであり得るし、アドミニストレーターは、全部ゼロのバッファーを伴なって書込みコマンドを発行することにより全部ゼロを書き込むことによって、ファイルの内容をゼロ化するように定めることができる。ファイル802の中に存在するデータの上にゼロを書き込むのである。そうしたIOジョブの受け取りに応じて、仮想ディスクパーサ404は、仮想ディスクエクステント4がゼロ化されたこと、および、このエクステントがリクレームできること、を判断するように構成され得る。この実施例において、仮想ディスクパーサ404は、仮想ディスクエクステント4を仮想ディスクファイル702に対してマップするリンクを除去し、その仮想ディスクエクステントはゼロであることを示すために仮想ディスクエクステント4に関する状態情報を変更することができる。仮想ディスクファイル702のこのセクションは、今や、他の仮想ディスクエクステントを裏付けるために再使用され得るし、仮想ディスクパーサ404は、全部ゼロをもって回答することにより仮想ディスクエクステント4に対する後続の読出しオペレーションに応じることができる。
別の特定の実施例において、ユーザーは、ファイル802の状態を初期化するために、そこに保管されたデータを重ね書きするよりはむしろ、大量のゼロを書き込むことができる。この実施例では、仮想ディスクパーサ404がトリムされたセクションをゼロとして読み出し報告するインスタンスにおけるTRIM、仮想ディスクパーサ404が非マップ領域がゼロであると報告する場合のUNMAP、ゼロのWRITE SAME、及び/又は、ゼロトークンのオフロード書込み、といったコマンドが、エクステントをゼロ状態に転換するために使用され得る。
特定の実施例において、IOジョブが、トリムは標準トリムであることを示すものと想定してみよ。例えば、ユーザーは、仮想ディスクエクステント3から5にわたるビットパターンとして保管されているファイル802を削除し得る。しかしながら、TRIMコマンドは、そのスペースがファイルシステム414によって使用されているかどうかを示すものではない。標準TRIMコマンドの受け取りに応じて、仮想ディスクパーサ404は、アロケーションテーブル416にアクセスすることができ、ファイルシステム414がエクステント3、5の一部と、エクステント4の全部をトリムしたものと判断することができる。この実施例において、仮想ディスクパーサ404は、仮想ディスクエクステント4を仮想ディスクファイル702に対してマップするリンクを除去し、その仮想ディスクエクステントは非マップまたはゼロであることを示すために仮想ディスクエクステント4に関する状態情報を変更することができる。仮想ディスクファイル702のこのセクションは、今や、他の仮想ディスクエクステントを裏付けるために再使用され得る。加えて、仮想ディスクパーサ404は、仮想ディスクエクステント3と5は、部分的なTRIMコマンドの対象であると判断することができる。この実施例において、仮想ディスクパーサ404は、仮想ディスクエクステント3と5のトリムされた部分を記述する仮想ディスクファイル702の部分を取りまとめる仮想ディスクファイルのバイトオフセットを見つけるためにアロケーションテーブル416を使用することができ、システムのファイルシステム408を仮想化するための仮想ディスクファイルのバイトオフセットを記述するTRIMコマンドを、典型的には領域の形式において、発行することができる。
図13をみると、図12のオペレーション1214に加えて実行され得る追加的なオペレーションが示されている。オペレーション1316は、コンピューターシステムが、仮想ディスクエクステントに対するデータ書込みリクエストを受け取るための回路を含み得ることを示している。回路は、仮想ディスクエクステント、その仮想ディスクエクステントがゼロ化されたことを示す状態情報、に関する状態情報に基づいて仮想ディスクファイルの使用されていないセクションをゼロにするためのものである。回路は、その仮想ディスクエクステントを記述するために仮想ディスクファイルの使用されていないセクションを割り当てるためのものである。図9の内容を参照すると、仮想ディスクパーサ404は、仮想ディスクエクステント、例えば図9の仮想ディスクエクステント4、に対してデータを書き込むリクエストを受け取ることができ、この実施例において、その仮想ディスクエクステントがゼロ化されことを示す状態情報と関連付けされる。例えば、仮想ディスクエクステント4が割り当て解除された場合、仮想ディスクパーサ404は、その仮想ディスクエクステントがゼロ化されたと判断し得る。つまり、アプリケーションが、よく知られたゼロトークン(well−known zero token)のオフロード書込みを使用してファイル602に対して全部ゼロを書き込んだものである。
仮想ディスクエクステントがゼロ状態にあるという判断に応じて、仮想ディスクパーサ404は、仮想ディスク702の使用されていないセクションを特定することができる。つまり、仮想ディスクエクステントを記述するために動作的には使用されておらず、かつ、いかなる割り当てられたメタデータを保管するためにも動作的に使用されていないセクションである。そして、仮想ディスクパーサ404は、仮想ディスクエクステントを裏付けるためにそのセクションを使用することができる。仮想ディスクパーサ404は、さらに、新たに割り当てられたエクステントの未だ書き込まれていないセクターからのあらゆる読出しは、全部ゼロであるものとして読み出すことを保証する。仮想ディスクパーサ404は、セクションに対してIO書込みジョブのペイロードを書き込むことができる。つまり、マップされている仮想ディスクエクステントを示すための状態情報を更新し、仮想ディスクエクステント4を保管するために使用されるセクションの始まりを特定する仮想ディスクファイルバイトオフセットを記述するためにアロケーションテーブル416の情報を更新する。仮想ディスクパーサ404は、また、ログエントリー(log entry)を創出することができ、システム故障およびフラッシュされる書込み以前の再起動の場合に、新たに割り当てられたエクステントの未だ書き込まれていないセクターは、いまだに全部ゼロであるものとして読み出し、新たに割り当てられたエクステントの書き込まれたセクターを、全部ゼロまたは書き込まれたデータのいずれかであるものとして読み出す。後続で最初のフラッシュコマンドの際に、仮想ディスクパーサ404は、フラッシュの完了の後のシステム故障は、書き込まれたデータを読み出す新たに割り当てられたエクステントの以前に書き込まれたセクターからの読出しを結果的に生じることを保証し、かつ、ゼロを読み出して、新たに割り当てられたエクステントの未だに使用されていないセクターを読み出す。
図13の説明を続けると、オペレーション1318は、コンピューターシステムが、仮想ディスクエクステントに対する書込みリクエストを受け取るための回路を含み得ることを示している。回路は、仮想ディスクエクステントと関連付けられた状態情報に基づいて、仮想ディスクファイルの使用されていないセクションの内容を変更することなく仮想ディスクエクステントを記述するために、仮想ディスクファイルの使用されていないセクションを割り当てるためのものであり、状態情報は、ファイルシステムが仮想ディスクエクステントへのアクセスを保証していることを示している。図9を再び参照すると、仮想ディスクパーサ404は、仮想ディスクエクステント、例えば図9の仮想ディスクエクステント4、に対するデータ書込みIOジョブを受け取ることができ、この実施例において、そのエクステントは、仮想ディスクエクステントに対する安全がファイルシステム414によって提供されていることを示す状態情報と関連付けられている。この状態情報の検知に応じて、仮想ディスクパーサ404は、仮想ディスクファイル702の使用されていないセクションを特定することができる。そのセクションに対してIOジョブのペイロードを書込み、その仮想ディスクエクステントがマップされていることを示すために状態情報を更新し、仮想ディスクエクステント4を保管するために使用されるセクションの始まりを特定する仮想ディスクファイルバイトオフセットを記述するためにアロケーションテーブル416の情報を更新する。
この実施例において、エクステントはブロックであり、IOジョブに対するペイロードが、その仮想ディスクブロックにおけるセクターの一部分しかカバーしないものと想定してみよ。特定的には、仮想ディスクブロックは、512キロバイトであり、書込みは、仮想ディスクブロックのセクターの最初の500セクターをカバーし得る。この実施例において、仮想ディスクパーサ404は、仮想ディスクファイル702の割り当てられたセクターの最初の500セクターにデータを書き込むことができ、残りの524セクターに保管されたデータを消去することはない。従って、このセクションが検査される場合には、最初の500セクターがペイロードを含み、残りの524セクターは、仮想ディスクファイル702のセクションに対して以前に書き込まれたあらゆるビットパターンを含んでいることがわかるであろう。この実施例では、仮想ディスクパーサ404は、このセクションを消去することなく使用することができる。ファイルシステム414は、ファイルシステムのフリースペースにあるセクターに対する読出しオペレーションを拒絶するように構成されているからである。アプリケーションは、仮想ディスクブロックの残りの524セクターを読み出すことが禁止されるので、セクターはあらゆるデータを含むことができる。仮想ディスクに以前から保管されているものである。
図13のオペレーション1320に移ると、図は、仮想ディスクエクステントに対する書込みリクエストを受け取るための回路を含むように構成され得ることを示している。回路は、仮想ディスクエクステントに関連付けられた状態情報に基づいて、仮想ディスクファイルの使用されていないセクションを、情報を開示しないビットパターンで論理的に上書きするためのものであり、状態情報は、ファイルシステムが、仮想ディスクエクステントに対するアクセスを保証してしないことを示している。回路は、その仮想ディスクファイルを記述するために、仮想ディスクファイルの上書きされたセクションを割り当てる。図9を再び参照すると、仮想ディスクパーサ404は、仮想ディスクエクステントに対するデータ書込みリクエストを受け取ることができ、エクステントは、この実施例において、ファイルシステム414はその仮想ディスクエクステントに対するアクセスを保証していないことを示す状態情報に関連付けられている。例えば、仮想ディスクパーサ404は、標準TRIMコマンドの受け取りに応じて仮想ディスクエクステントを割り当て解除し、その仮想ディスクエクステントが非マップ、つまり、仮想ディスクファイル702におけるスペースによって裏付けされていないこと、を示す状態情報をアロケーションテーブル416の中に保管することができる。
仮想ディスクエクステントが非マップであるとの判断に応じて、仮想ディスクパーサ404は、仮想ディスクエクステントを記述するために使用する仮想ディスクファイル702の使用されていないセクションを特定することができ、その仮想ディスクエクステントに対する読出しが、いかなる情報もうかつに明らかにすることはないことを保証するために情報を開示しないビットパターンを論理的に書き込むことができる。好適な実施例において、情報を開示しないビットパターンは、全部ゼロまたは以前に保管されたデータであり得る。セクションがゼロ化され、または、以前に保管されたデータといった他の情報を開示しないビットパターンが論理的に書き込まれた後で、仮想ディスクパーサ404は、そのセクションに対してIOジョブのペイロードを論理的に書き込むことができる。そして、仮想ディスクエクステントがマップされていることを示すために状態情報を更新し、仮想ディスクエクステントを保管するために使用されるセクションの始まりを特定する仮想ディスクファイルのバイトオフセットを記述するためにアロケーションテーブル416の情報を更新する。
図13の説明を続けると、オペレーション1322は、コンピューターシステムは、仮想ディスクエクステントがゼロであることを示す状態情報に基づいて、仮想ディスクエクステントに関連付けられたオフロード読出しリクエストの受け取りに応じて、リクエスターにゼロを表すトークンを送付するように構成された回路を含み得ることを示している。例えば、図4を参照すると、オフロードプロバイダーエンジン422、例えばオフロード読出し及びオフロード書込みコマンドを提供するように構成された回路、は、リクエスターによって発行されたオフロード読出しリクエストに応じて、ゼロを表すトークンをリクエスター、例えばアプリケーション424、に対して送付することができる。オフロード読出しリクエストは、リクエスターに対するトークンを生成し、送付することによって一つの場所から別の場所にデータを効率的にコピーするために使用することができる。トークンは、リクエスターのメモリーにデータをコピーする代わりに、リクエストされたデータを表しており、そのデータを宛先に送付する。オフロード読出しおよびオフロード書込みコマンドは、宛先場所が、発信場所によって生成されたトークンを認識して、そのトークンによって表されたデータを宛先に論理的に書き込むことができる場合に、コピーオフロードを達成するために使用することができる。発信元によって生成されたよく知られたゼロトークンの場合に、宛先は、基礎をなすストレージ、例えばストレージデバイス106、にアクセスする必要がない。この特定の実施例において、ストレージは、SANターゲットであり得る。この実施例において、オフロード読出しリクエストは、一つまたはそれ以上の仮想ディスクエクステントの中に保管されたデータを有する一つまたはそれ以上のファイルに対するオフロード読出しコマンドを実行することであり得る。それらの一つは、その仮想ディスクエクステントがゼロ化されていることを示す状態情報と関連付けられている。この実施例において、オフロード読出しリクエストは、よく知られたゼロトークンを生成すること、および、よく知られたゼロトークンをリクエスターに返すことによって提供され得る。
オフロード読出しリクエストは、オフロードプロバイダーエンジン422に対してルート(route)され得る。オフロードプロバイダーエンジン422は、リクエストを受取り、仮想ディスクパーサに対して、仮想ディスクエクステントに保管された情報のメッセージを送付することができる。仮想ディスクパーサ404は、リクエストを受け取り、仮想ディスクエクステントに対する状態を読出し、この実施例においては、状態情報が、その仮想ディスクエクステントはゼロ化されていることを示しているものと判断する。仮想ディスクパーサ404は、その仮想ディスクエクステントが全部ゼロであることを示すメッセージをオフロードプロバイダーエンジン422に返すことができ、オフロードプロバイダーエンジン422は、リクエストされたデータが全部ゼロであること、例えば、仮想ディスクブロックを記述するセクターの領域が全部ゼロであること、を示すよく知られたトークンを生成することができ、そのよく知られたトークンをリクエスターに送付することができる。
特定の実施例において、オフロードリクエストは、コンピューターシステム400、ストレージサーバー500、またはコンピューターシステム512によって処理される代わりに、SANに対してフォワード(forward)され得る。この実施例において、SANは、トークンを生成し、それを仮想ディスクパーサ404に対して返すことができ、次に、リクエスターに対してゼロトークンを送付することができる。さらに、別の実施例では、オフロードプロバイダーエンジン422が、仮想ディスクエクステントが全部ゼロであることを示すメッセージを受け取った場合、オフロードプロバイダーエンジン422は、よく知られたトークンを生成することができる。効果としては、データを他のあらゆるゼロのデータと同等であるとして特定することによって、リクエストされたデータを、トークンに関連する分離された領域の中に論理的にコピーすること、および、そのよく知られたゼロトークンに関連する領域を共有することを達成する。オフロードプロバイダーエンジン422が、以前にリクエスターに対して送付されたトークンを特定してオフロード書込みを後に受け取るインスタンスにおいて、オフロードプロバイダーエンジン422は、データを、トークンに関連する領域から、リクエスターによって特定されたオフセットに論理的にコピーすることができる。
図14に移ると、図は、オペレーション1400、1402、1404、および、1406を含む、仮想ディスクファイルスペースをリクレームするためのオペレーション工程を示している。図に示すように、オペレーション1400がオペレーション工程を開始し、オペレーション1402は、仮想ディスクエクステントの領域はもはや使用されておらず、仮想ディスクエクステントは仮想ディスクの一部であり、仮想ディスクは仮想ディスクファイルの中に保管されている、ことを示す信号を受け取るための回路をコンピューターシステムが含み得ることを示している。例えば、図4に移って、仮想ディスクパーサ404は、仮想ディスク402をインスタンス化するように構成され得る。ファイルシステム414は、仮想ディスク402の一部、例えば仮想ディスクエクステントのセクターの一部、をもはや使用していないことを示す信号を仮想ディスクパーサ404に対して送付することができる。特定の実施例において、その信号はTRIMコマンドであり得る。特定の実施例において、仮想ディスクパーサ404によって受け取られた信号は、もはや使用されていないセクターの領域を定めるバイトオフセット値を特定することができ、それは仮想ディスクエクステントの最初の部分であり得る。
図4の説明を続けると、オペレーション1404は、コンピューターシステムは、また、仮想ディスクエクステントの領域を記述する仮想ディスクファイルの領域を特定するように構成された回路を含み得ることを示している。図7に戻って参照すると、仮想ディスクパーサ404は、信号と、例えば、仮想ディスクエクステント0の最初の領域、を特定する仮想ディスクバイトオフセット値を受け取ることができる。信号の受け取りに応じて、仮想ディスクパーサ404は、信号に関連する仮想ディスクバイトオフセット値に対応する仮想ファイル702の領域を定めるために、アロケーションテーブル416をチェックすることができる。
図14のオペレーション1406に移ると、コンピューターシステムは、仮想ディスクファイルをストレージデバイス上に保管するように構成されたファイルシステムに対して、仮想ディスクファイルの特定された領域をトリムするリクエストを送付するための回路を含み得ることを示している。例えば、図7を再び参照すると、仮想ディスクパーサ404は、信号が仮想ディスクエクステントの全体より少ない領域を特定したものと判断することができる。例えば、信号は、仮想ディスクエクステントの全てのセクターを含むものではないセクターの領域を示すことができる。この判断に応じて、仮想ディスクパーサ404は、トリムされた仮想ディスクエクステントの領域に対応する仮想ディスクファイル702の領域をトリムするリクエストを、仮想ディスクファイル702をホストしているファイルシステム、例えば仮想化システムのファイルシステム408、に対して発行することができる。仮想化システムのファイルシステム408は、仮想ディスクファイル406をトリムすること、キャッシュからデータをフラッシュすること、内部バッファーをクリアすること、ファイルシステムデータが保管されているディスクに対してトリムを送付すること、等によってトリムコマンドを使用し、利点を得るように構成され得る。
特定の実施例において、仮想ディスクパーサ404は、仮想ディスクファイルの一部をトリムするリクエストが、エクステント全体をカバーしていないとの判断に応じて、基礎をなすファイルシステムに対してTRIMコマンドを発行するように構成され得る。例えば、仮想ディスクエクステントの最初の600セクターがもはや使用されていないこと、および、仮想ディスクパーサ404は、仮想ディスクエクステントのその600セクターは、仮想ディスクエクステントを構成する1024セクターより少ないと判断し得ることを、信号が特定することを想定してみよ。この判断に応じて、仮想ディスクパーサ404は、アロケーションテーブル416にアクセスし、仮想ディスクエクステントを記述する仮想ディスクファイル702のセクションの最初の600セクターを記述する仮想ディスクファイルのバイトオフセットを定め、仮想ディスクファイル702をホストするファイルシステムに対して、仮想ディスクファイル602のこの部分をトリムするリクエストを送付する、ことができる。
図15に移ると、図14で説明されたオペレーションと併せて実行され得る追加的なオペレーションを示している。オペレーション1508に移ると、コンピューターシステムは、仮想ディスクエクステントに関連するオフロード読出しリクエストの受け取りに応じて、仮想ディスクエクステントがゼロ化されていることを示す状態情報に基づいて、ゼロを表すトークンをリクエスターに対して送付するための回路を、追加的に含み得ることを示している。例えば、図4を参照すると、オフロードプロバイダーエンジン422、例えばオフロード読出しおよびオフロード書込みコマンドをサービスするように構成された回路、は、リクエスターによって発行されたオフロード読出しリクエストに応じて、ゼロを表わすトークンをリクエスター、例えばアプリケーション424、に送付することができる。オフロード読出しリクエストは、トークンを生成し、リクエスターに対して送付することによって、データを一つの場所から別の場所に効率的にコピーするために使用され得る。トークンは、リクエスターのメモリーへのデータコピーの代わりにリクエストされたデータを表しており、データを宛先に送付する。オフロード読出し及びオフロード書込みコマンドは、宛先場所が、発信元によって生成されたトークンを認識し、そのトークンによって表されるデータを宛先に論理的に書き込むことができる場合に、コピーオフロードを達成するために使用され得る。宛先によって生成されるよく知られたゼロトークンの場合、宛先は、基礎をなすストレージ、例えばストレージデバイス106、にアクセスする必要はなく、この特定の実施例においてはSANターゲットであり得る。この実施例において、オフロード読出しリクエストは、一つまたはそれ以上の仮想ディスクエクステントに保管されたデータを有する一つまたはそれ以上のファイル上でオフロード読出しオペレーションを実行することであり得る。そのうちの一つは、仮想ディスクエクステントがゼロ化されていることを示す状態情報に関連している。この実施例において、オフロード読出しリクエストは、よく知られたゼロトークンを生成し、そのよく知られたゼロトークンをリクエスターに返すことによって、サービスされ得る。
図15の説明を続けると、オペレーション1510は、コンピューターシステムが、仮想ディスクファイルのグループからのサブグループを選択するための回路を含み得ることを示している。回路は、データを含むサブグループのセクター及びトランスペアレントであるサブグループのセクターを特定する情報を生成する。典型的な実施例において、仮想ディスク402は、複数の仮想ディスクファイルからインスタンス化され得る。別の言い方をすれば、仮想ディスク402は、M個の仮想ディスクファイルから形成され得る(ここで、Mは1以上の整数である)。この典型的な実施例において、仮想ディスクパーサ404は、仮想ディスク402上の次のバイトオフセットを定めるリクエストを、例えば、アドミニストレーターから受け取るように構成され得る。与えられたバイトオフセットにおいて開始するものであり、仮想ディスクファイルのサブグループの中で定義されたセクターに関連するものである。例えば、図10を参照すると、仮想ディスクパーサ404は、仮想ディスクエクステント2の最初のセクターに対応する仮想ディスクオフセットにおいて開始する、次に定められたバイトオフセットに対するリクエスト、および、そのサブグループが仮想ディスクファイル1002と仮想ディスクファイル1004を含むことを示す情報を受け取ることができる。この実施例において、仮想ディスクパーサ404は、サブグループのスキャンを開始することができ、次に定められたバイトオフセットが、仮想ディスクエクステント3の開始に対応するセクターであることを定めることができる。この実施例において、仮想ディスクエクステントにおけるデータは、仮想ディスクファイル1006のセクターによって裏付けされており、サーチの範囲外であり、定義されたものとして返されることはない。
図15の説明を続けると、オペレーション1512は、コンピューターシステムが、仮想ディスクエクステントを仮想ディスクファイルから切り離し、仮想ディスクエクステントがゼロ化されたとの判断に応じてその仮想ディスクエクステントがゼロにされたことを示すために、仮想ディスクエクステントに関連付けられた状態情報を変更するように構成された回路を含み得ることを示している。例えば、図7に移ると、実施例において、仮想ディスクパーサ404は、仮想ディスクエクステントがゼロにされたと判断することができる。例えば、仮想ディスクパーサ404は、よく知られたゼロトークンによって表されるデータを、仮想ディスクエクステント、例えば仮想ディスクエクステント7、に書き込むリクエストを受け取ることができる。仮想ディスクパーサ404は、リクエストに関連するデータ構造から、そのリクエストが仮想ディスクエクステント全体に対するものであることを判断することができる。つまり、バイトオフセット値がエクステント7の最初のセクターから始まり、エクステント7の最後のセクターで終了するのである。こうした判断に応じて、かつ、仮想ディスクファイル702の対応するセクションにゼロを書き込む代わりに、仮想ディスクパーサ404は、仮想ディスクエクステント7を仮想ディスクファイル702のセクションに対してマップするリンクを除去するように構成され得る。リンクは、仮想ディスクエクステント7を記述し、仮想ディスクエクステントを、その仮想ディスクエクステントは全部ゼロであることを示す情報と関連付けるために使用されていたものである。例えば、仮想ディスクパーサ404は、仮想ディスクエクステントが全部ゼロを含んでいることを示す、アロケーションテーブル416の中の8バイトの情報を書き込むことができる。このオペレーションの最後の結果として、仮想ディスクファイル702のセクションは、他の仮想ディスクエクステントのデータを保管するために再使用され得る。仮想ディスクエクステントは、どの仮想ディスクファイルの領域もビットごとにエクステントを記述していないにもかかわらず、その仮想ディスクエクステントが全部ゼロを含んでいるかのように読み出される。
図15の説明を続けると、オペレーション1514は、コンピューターシステムが、仮想ディスクエクステントを仮想ディスクファイルから切り離し、仮想ディスクエクステントがファイルシステムによってフリースペースであるものと考えられているとの判断に応じてその仮想ディスクエクステントがフリースペースであることを示すために、仮想ディスクエクステントに関連付けられた状態情報を変更するように構成された回路を含み得ることを示している。例えば、再び図7に移ると、仮想ディスクパーサ404は、ファイルシステム414は、仮想ディスクエクステントを、それがフリースペースであること、つまり、スペースがファイルシステム414によって使用されていないこと、を示す情報と関連付けたものと判断することができる。例えば、仮想ディスクパーサ404は、ファイルシステム414から、仮想ディスクエクステント、例えば仮想ディスクエクステント3、をカバーするセクターの領域を示す信号と、そのセクターはフリースペースであると考えられていることを示す情報と、を受け取ることができる。こうした信号の受け取りに応じて、仮想ディスクパーサ404は、仮想ディスクエクステントを仮想ディスクファイル702のセクションに対してリンクしている情報を除去するように構成され得る。このオペレーションの結果として、仮想ディスクファイル702のセクションは、他の仮想ディスクエクステントのためにデータを保管するように再使用され得る。仮想ディスクパーサ404は、仮想ディスクエクステントを、その仮想ディスクエクステントが任意のデータを含んでいることを示す情報と追加的に関連付けることができる。任意のデータは、つまり、仮想ディスクエクステントのあらゆる部分に以前に保管されたデータ、全部0(ゼロ)、または、全部1である。従って、この仮想ディスクエクステントに向けられた読出しオペレーションは、以前仮想ディスクの中に保管されていた任意の情報を返すことによって扱うことができる。加えて、任意のデータは、仮想ディスクパーサ44が、読出しオペレーションを受け取るたびに、任意のデータを変更することができるように構成されている場合に、読出しオペレーションを受け取るごとに、任意的なデータが任意に変更され得る。
図15の説明を続けると、オペレーション1516は、コンピューターシステムが、エクステントを仮想ディスクファイルから切り離し、仮想ディスクエクステントがトリムされたとの判断に応じてその仮想ディスクエクステントが情報を開示しないビットパターンを含むことを示すために、仮想ディスクエクステントに関連付けられた状態情報を変更するように構成された回路を追加的に含み得ることを示している。例えば、再び図7に移ると、仮想ディスクパーサ404は、ファイルシステム414は、仮想ディスクエクステントを構成するセクターの領域をトリムされたものと判断することができる。そうした判断に応じて、仮想ディスクパーサ404は、仮想ディスクエクステントを仮想ディスクファイル702にリンクするアロケーションテーブル412の情報を除去することができる。このオペレーションの結果として、仮想ディスクファイル702のセクションは、他の仮想ディスクエクステントのためにデータを保管するように再使用され得る。仮想ディスクパーサ404は、仮想ディスクエクステントを、その仮想ディスクエクステントが情報を開示しないビットパターンを含んでいることを示す情報と追加的に関連付けることができる。情報を開示しないビットパターンは、つまり、全部0(ゼロ)、全部1、または、ランダムに生成されたビットパターンである。従って、この仮想ディスクエクステントに向けられた読出しオペレーションは、その情報を開示しない情報を返すことによって扱うことができる。特定の好適な実施例において、情報を開示しないビットパターンは、全部ゼロであり得る。しかしながら、これは、ゼロ状態は意味のあるゼロを表すために使用され得るという点で、上述のゼロ状態とは異なるものである。つまり、仮想ディスクエクステントが意図的にゼロ化されたところのインスタンスである。
オペレーション1518を参照すると、コンピューターシステムが、仮想ディスクをコントロールしているファイルシステムに対してトリムコマンドを発行するようにリクエストを送付するように構成された回路を追加的に含み得ることを示している。図7に戻ると、仮想ディスクパーサ404は、ファイルシステム414が一つまたはそれ以上のTRIMコマンドを発行するリクエストを発行するように構成され得る。典型的な構成において、仮想ディスクパーサ404は、そうしたリクエストを定期的に送付するように、または、既定のクライテリアに基づいてそうしたリクエストを送付するように構成され得る。例えば、VM(仮想マシン)が開始する場合、または、まもなくVMがシャットダウンされる以前の場合である。こうしたリクエストに応じて、ファイルシステム414は、仮想ディスクパーサ404に対して、仮想ディスク402の使用されていないセクターを特定する一つまたはそれ以上のTRIMコマンドを発行することができる。そして、仮想ディスクパーサ404は、TRIMコマンドからトリム情報を受け取ることができる。ファイルシステム414によって、もはや使用されていないセクターの領域といったものや、トリムされたセクターがフリースペースとして考えられているかどうかを示す任意的な情報である。仮想ディスクパーサ404は、情報を受け取り、アロケーションテーブル416に保管された状態情報を更新するために、そして、仮想ディスクファイル702の使用されていないセクターをおそらくリクレームするために、その情報を使用することができる。
図16に移ると、図は、仮想マシンのためのデータを保管するオペレーション工程を示している。オペレーション工程は、オペレーション1600で開始され、オペレーション1602に移り、コンピューターシステムが、仮想マシンの中で、ファイルシステムを含むゲストオペレーティングシステムを実行するための回路を含むことができるインスタンスを説明している。例えば、図4を参照すると、システム420、つまり図3のハイパーバイザー302または図2のホスト環境204とマイクロカーネルハイパーバイザー202によって実行される機能の組合わせ、の仮想化は、仮想マシン410をインスタンス化することができ、その中でゲストオペレーティングシステム(ゲストオペレーティングシステム412といったもの)を実行することができる。この実施例で、ゲストオペレーティングシステム412は、ファイルシステム414を含み、ゲストオペレーティングシステム412のためにデータを整理し、コントロールする実行可能なインストラクションであり得る。
図16の説明を続けると、オペレーション1604は、コンピューターシステムが、ゲストオペレーティングシステム、仮想ディスクエクステントを含む仮想ストレージデバイス、仮想ディスクファイルから分離された仮想ディスクエクステント、に対して仮想ストレージデバイスを公開するための回路を含み得ることを示している。図4に戻ると、仮想化システム420は、仮想ディスク402を、ゲストオペレーティングシステム412に対して公開することができる。例えば、仮想ディスクパーサ404は、ゲストオペレーティングシステム410の中で実行されているストレージ仮想化サービスクライアントと通信するように動作可能なストレージ仮想化サービスプロバイダーと通信することができる。特定の実施例において、ストレージ仮想化サービスクライアントは、ゲストに対して自身がストレージデバイスと通信できることを知らせるゲストオペレーティングシステム412の中にインストールされたドライバーであり得る。この実施例で、ファイルシステム414によって送付されたIOジョブは、最初にストレージ仮想化サービスクライアントに送付され、次に通信チャンネルを介してストレージ仮想化サービスプロバイダーに送付される。通信チャンネルは、例えば、メモリーの領域とクロスパーティション(cross−partition)との通知機能である。仮想ディスク402は、仮想ディスクパーサ404によってオープンされ得る一つまたはそれ以上の仮想ディスクファイル406で構成され、仮想ディスク402に対するデータを保管するために使用され得る。特定の実施例において、仮想ディスク402は、図7の仮想ディスクファイル702によって、少なくとも部分的に記述することができる。別の特定の実施例において、図10に移ると、仮想ディスク402は、仮想ディスクファイルのブループ(1002から1006)によって記述することができる。どちらの場合においても、図4に戻ると、仮想ディスク402は、複数の仮想ディスクエクステントを含み、仮想ディスクエクステントのうちの一つは分離され得る。つまり、仮想ディスクファイルに関連するいかなるスペースによってもビットごとには記述されない。
図16の説明を続けると、オペレーション1606は、コンピューターシステムが、仮想ディスクエクステントに対してデータを書き込むリクエストを受け取るための回路を含み得ることを示している。図7に戻ると、仮想ディスクパーサ404は、仮想ディスクファイル702の中に関連するスペースを有しない仮想ディスクエクステントに対してデータを書き込むリクエストを受け取ることができる。例えば、仮想ディスクエクステントの中にある、仮想ディスクセクターのアドレスを示すオフセット値を指定するIOジョブを受け取ることができる。
図16に戻ると、オペレーション1608は、コンピューターシステムが、仮想ディスクエクステントに関連付けられた状態情報は仮想ディスクエクステントがフリースペースであることを示していると判断するための回路を、追加的に含み得ることを示している。IOジョブの受け取りに応じて、仮想ディスクパーサ404は、アロケーションテーブル416にアクセスして、その仮想ディスクエクステントに関連付けられた状態情報を読み出す。この実施例で、仮想ディスクエクステントは、その仮想ディスクエクステントがフリースペースであることを示す情報と関連付けられ得る。つまり、ファイルシステム414は、その仮想ディスクエクステントを使用しておらず、仮想ディスクエクステントに対する読出しオペレーションは、任意のデータで回答され得るものである。
図16を参照すると、オペレーション1610は、コンピューターシステムが、仮想ディスクファイルのセクションの中に既に存在しているビットパターンを上書きすることなくその仮想ディスクエクステントを記述するように、仮想ディスクファイルのセクションを割り当てるための回路を、追加的に含み得ることを示している。例えば、図7に戻ると、書込みIOジョブの受け取りに応じて、仮想ディスクパーサ404は、仮想ディスクファイル702における使用されていないセクションを、仮想ディスクエクステントのためのデータを保管するために割り当てることができる。例えば、仮想ディスクパーサ404は、仮想ディスクエクステントを仮想ディスクファイル702の割り当てられたセクションのバイトオフセット値にリンクする情報を、アロケーションテーブル416に書き込むことができる。
この実施例において、仮想ディスクパーサ404は、セクションの中に存在するいかなるビットパターン、例えばいくつかの削除されたファイルからのデータ及び/又は任意のデータ、も上書きすることはない。データは、仮想ディスクエクステントを記述するためにそのセクションを使用する以前に、(全部0(ゼロ)、全部1、または、あらゆる他の情報を開示しないビットパターンを書き込むことにより)仮想ディスクファイル702のセクションの中に保管されたものである。仮想ディスクエクステント5がフリースペースであるとファイルシステム414が特定したことを、状態情報が示しているからである。このことは、そうでなければ仮想ディスクエクステントのセクションを上書きするために使用されていたであろうプロセッササイクルとIOジョブを節約できるという追加的な利益を提供する。
図16のオペレーション1612を参照すると、図は、コンピューターシステムが、仮想ディスクエクステントが仮想ディスクファイルの割り当てられたセクションにマップされていることを示すように、仮想ディスクエクステントと関連付けられた状態情報を変更するための回路を、追加的に含み得ることを示している。例えば、図7に戻ると、仮想ディスクパーサ404は、仮想ディスクエクステントがマップされていることを示すために関連付けられた状態情報を変更する、例えばメモリーを上書きする、ことができる。従って、仮想ディスクエクステントのセクターに向けられた後続の読出しオペレーションは、対応する割り当てられたセクションの領域に保管されたビットパターンを返すことにより、仮想ディスクパーサ404によって扱われる。
図16のオペレーション1614に移ると、図は、データを、仮想ディスクファイルの割り当てられたセクションに保管することを示している。図6に戻ると、仮想ディスクパーサ404は、仮想ディスクファイル702の中に、データ、例えばビットパターン、を書き込むことができる。仮想ディスクファイル702への書込みを示すIOジョブが、仮想ディスクファイルシステム408に対して発行され得る。そして、ついには、その変更は、固定ストレージユニット460によって固定され得る。
図17に移ると、図は、図16で説明されたオペレーションと供に実行され得る追加的なオペレーションを示している。オペレーション1716をみると、コンピューターシステムが、仮想ディスクエクステントがゼロ化されたとの判断に応じて仮想ディスクエクステントがゼロにされたことを示すように、仮想ディスクファイルから仮想ディスクエクステントを分離し、仮想ディスクエクステントと関連付けられた状態情報を変更するための回路を、追加的に含み得ることを示している。例えば、図6に移ると、実施例において、仮想ディスクパーサ404は、仮想ディスクエクステントがゼロ化されたものと判断することができる。例えば、仮想ディスクパーサ404は、よく知られたゼロトークンによって表されたデータを仮想ディスクエクステント、例えば仮想ディスクエクステント7、に対して書き込むためのオフロード書込みリクエストを受け取ることができる。仮想ディスクパーサ404は、リクエストに関連するデータ構造から、そのリクエストが仮想ディスクエクステント全体に対するものであると判断することができる。例えば、バイトオフセット値は、仮想ディスクエクステント7の最初のセクターにおいて始まり、仮想ディスクエクステント7の最後のセクターで終了する。そうした判断に応じて、および、仮想ディスクファイル702の対応するセクションにゼロを書き込む代わりに、仮想ディスクパーサ404は、アロケーションテーブル416に保管された、仮想ディスクファイル702のセクションに対するリンクを、仮想ディスクエクステントから除去し、その仮想ディスクエクステントを、仮想ディスクエクステントが全部ゼロであることを示す情報と関連付けるように、構成され得る。
図17の説明を続けると、オペレーション1718は、コンピューターシステムが、仮想ディスクエクステントがフリースペースであるものと特定したファイルシステムからの信号の受け取りに応じて仮想ディスクエクステントが任意のデータを含むことを示すように、仮想ディスクファイルから仮想ディスクエクステントを分離し、仮想ディスクエクステントと関連付けられた状態情報を変更するための回路を、追加的に含み得ることを示している。例えば、再び図7に戻ると、仮想ディスクパーサ404は、ファイルシステム414が、仮想ディスクエクステントを、それがフリースペースであること、つまりファイルシステム414によって使用されていないこと、を示す情報と関連付けたものと判断することができる。例えば、仮想ディスクパーサ404は、ファイルシステム414から、仮想ディスクエクステント、例えば仮想ディスクエクステント3、をカバーするセクターの領域を示す信号、および、そのセクターがフリースペースであることを示す情報、を受け取ることができる。そうした判断に応じて、仮想ディスクパーサ404は、アロケーションテーブル416にある、仮想ディスクエクステントを仮想ディスクファイル702のセクションにリンクする情報を除去し、かつ、仮想ディスクエクステントを、読出しIOジョブの受け取りに応じて任意のデータを返すことができることを示す情報に関連付けるように、構成され得る。任意のデータは、例えば、以前に仮想ディスクのあらゆる部分に保管されたデータ、全部0(ゼロ)、または、全部1である。
図17のオペレーション1720は、コンピューターシステム400が、仮想ディスクエクステントの全てのセクターをトリムするリクエストの受け取りに応じて仮想ディスクエクステントが情報を開示しないビットパターンを含むことを示すように、仮想ディスクファイルから仮想ディスクエクステントを分離し、仮想ディスクエクステントと関連付けられた状態情報を変更するための回路を、追加的に含み得ることを示している。例えば、再び図7に戻ると、仮想ディスクパーサ404は、仮想ディスクエクステントを構成するセクターがトリムされたものと判断することができる。例えば、仮想ディスクパーサ404は、ファイルシステム414から、仮想ディスクエクステントをカバーする領域を示すトリムコマンドを受け取ることができる。そうした信号の受け取りに応じて、仮想ディスクパーサ404は、アロケーションテーブル416にある、仮想ディスクエクステントを仮想ディスクファイル702のセクションにリンクする情報を除去し、かつ、仮想ディスクエクステントを、仮想ディスクエクステントが情報を開示しないビットパターンを有していることを示す情報に関連付けるように、構成され得る。
上述の詳細な説明は、例示及び/又はオペレーションダイヤグラムを介してシステム及び/又はプロセスの種々の実施例を明らかにしてきた。そうしたブロックダイヤグラム及び/又は実施例が、一つまたはそれ以上の機能及び/又はオペレーションを含む限りにおいて、当業者であれば、そうしたブロックダイヤグラムの中のそれぞれの機能及び/又はオペレーションまたは実施例が、広い範囲のハードウェア、ソフトウェア、ファームウェア、または、それらの仮想的なあらゆる組み合わせによって、個々に及び/又は集合的に実施することができることを理解されよう。
ここにおいて記載された本発明の技術的事項に係る特定の態様が示されて説明されてきたが、当業者にとっては、ここにおける教示に基づいて、ここにおいて説明された技術的事項及びそのより広い局面から逸脱することなく変更や変形をすることができること、従って、添付の請求項は、その範囲の中に、そうした変更や変形の全てを、ここにおいて説明された技術的事項の精神及び範囲内にあるものとして包含するものであること、が明らかである。
上記の実施形態につき以下の付記を残しておく。
(付記1)
インストラクションを含むコンピューターで読み取り可能なストレージ媒体であって、インストラクションがプロセッサによって実行されると、プロセッサは、
仮想ディスクエクステントを含む仮想ディスクをインスタンス化し、前記仮想ディスクエクステントは仮想ディスクファイルから分離されているものであり、
前記仮想ディスクに関連付けられた状態情報に基づいて、前記仮想ディスクファイルのセクションの中に既に存在するビットパターンを上書きすることなく、前記仮想ディスクエクステントを記述するために、ファイルのセクションを割り当て、かつ、
前記仮想ディスクエクステントが、前記仮想ディスクファイルによって記述されていることを示すために、前記仮想ディスクエクステントと関連付けられた前記状態情報を変更する、
ことを特徴とするコンピューターで読み取り可能なストレージ媒体。
(付記2)
前記コンピューターで読み取り可能なストレージ媒体は、さらに、インストラクションを含み、インストラクションが実行されると、前記プロセッサは、
前記仮想ディスクファイルをコントロールしているファイルシステムに対して、トリムコマンド、非マップコマンド、ゼロのライトセイムコマンド、および、ゼロトークンのオフロード書込みコマンド、を含むコマンドのグループから選択された少なくとも一つのコマンドを発行するためのリクエストを送付する、
付記1に記載のコンピューターで読み取り可能なストレージ媒体。
(付記3)
プロセッサと、
前記プロセッサに接続されたメモリーと、を含むコンピューターシステムであって、
前記プロセッサと前記メモリーが電源オンされる場合に、
前記メモリーは、インストラクションを含み、インストラクションがプロセッサによって実行されると、前記コンピューターシステムは、
仮想ディスクエクステントの領域がもはや使用されていないことを示す信号を受け取り、前記仮想ディスクエクステントは仮想ディスクの一部分であり、前記仮想ディスクは仮想ディスクファイルの中に保管されており、
前記仮想ディスクエクステントの前記領域を記述する前記仮想ディスクファイルの領域を特定し、かつ、
前記仮想ディスクファイルをストレージデバイス上に保管するように構成されたファイルシステムに対して、前記仮想ディスクファイルの前記特定された領域をトリムするリクエストを送付する、
ことを特徴とするコンピューターシステム。
(付記4)
前記メモリーは、さらに、インストラクションを含み、インストラクションが実行されると、前記コンピューターシステムは、
前記仮想ディスクエクステントと関連するオフロード読出しリクエストの受け取りに応じて、前記仮想ディスクエクステントがゼロ化されたことを示す状態情報に基づいて、リクエスターに対してゼロを表すトークンを送付する、
付記3に記載のコンピューターシステム。
(付記5)
前記仮想ディスクファイルは、前記仮想ディスクエクステントを含む仮想ディスクを供に形成する仮想ディスクファイルのグループのメンバーであり、
前記メモリーは、さらに、インストラクションを含み、インストラクションが実行されると、前記コンピューターシステムは、
仮想ディスクファイルの前記グループからサブグループを選択し、かつ、
データを含む前記サブグループのセクターおよびトランスペアレントである前記サブグループのセクターとを特定する情報を生成する、
付記3に記載のコンピューターシステム。
(付記6)
前記メモリーは、さらに、インストラクションを含み、インストラクションが実行されると、前記コンピューターシステムは、
前記仮想ディスクファイルから前記仮想ディスクエクステントを分離し、かつ、
前記仮想ディスクエクステントがゼロ化されたとの判断に応じて前記仮想ディスクエクステントがゼロにされたことを示すために、前記仮想ディスクエクステントに関連付けられた状態情報を変更する、
付記3に記載のコンピューターシステム。
(付記7)
前記メモリーは、さらに、インストラクションを含み、インストラクションが実行されると、前記コンピューターシステムは、
前記仮想ディスクをコントロールしているファイルシステムに対してトリムコマンドを発行するリクエストを送付する、
付記3に記載のコンピューターシステム。
(付記8)
仮想マシンのためのデータを保管するコンピューター実装方法であって、
仮想マシンの中で、ファイルシステムを含むゲストオペレーティングシステムを実行する段階と、
前記ゲストオペレーティングシステムに対して仮想ストレージデバイスを公開する段階であり、前記仮想ストレージデバイスは仮想ディスクエクステントを含み、前記仮想ディスクエクステントは仮想ディスクファイルから分離されたものである、段階と、
前記仮想ディスクエクステントに対するデータ書込みリクエストを受け取る段階と、
前記仮想ディスクエクステントに関連付けられた状態情報は、前記仮想ディスクエクステントがフリースペースであることを示しているものと判断する段階と、
前記仮想ディスクエクステントを記述するために、前記仮想ディスクファイルのセクションを、前記仮想ディスクファイルの前記セクションの中に以前から存在しているビットパターンを上書きすることなく、割り当てる段階と、
前記仮想ディスクエクステントが前記仮想ディスクファイルの前記割り当てられたセクションにマップされていることを示すために、前記仮想ディスクエクステントに関連付けられた前記状態情報を変更する段階と、
前記データを前記仮想ディスクファイルの前記割り当てられたセクションに保管する段階と、を含む、
ことを特徴とする方法。
(付記9)
前記コンピューター実装方法は、さらに、
前記仮想ディスクファイルから前記仮想ディスクエクステントを切り離す段階と、
ファイルシステムからの前記仮想ディスクエクステントがフリースペースであるものと特定する信号の受け取りに応じて、前記仮想ディスクエクステントが任意のデータを含むことを示すために、前記仮想ディスクエクステントに関連付けられた前記状態情報を変更する段階と、
を含む付記8に記載の方法。
(付記10)
前記コンピューター実装方法は、さらに、
前記仮想ディスクファイルから前記仮想ディスクエクステントを切り離す段階と、
前記仮想ディスクエクステントの全ての前記セクターをトリムするリクエストの受け取りに応じて、前記仮想ディスクエクステントが情報を開示しないビットパターンを含むことを示すために、前記仮想ディスクエクステントに関連付けられた前記状態情報を変更する段階と、
を含む付記8に記載の方法。
100、200 コンピューターシステム
102 プロセッサ
104 RAM
106 ストレージデバイス
118 取り外し可能なストレージデバイス
202 マイクロカーネルハイパーバイザー
204 ホスト環境
220、222 ゲストOS

Claims (4)

  1. 仮想マシンに対してデータを保管するためのコンピューターで実施される方法であって、
    ファイルシステムを含むゲストオペレーティングシステムを仮想マシンの中で実行するステップと、
    前記ゲストオペレーティングシステムに対して仮想ストレージデバイスを公開するステップであり、前記仮想ストレージデバイスは仮想ディスクエクステントを含み、前記仮想ディスクエクステントは仮想ディスクファイルから分離されたものである、ステップと、
    前記仮想ディスクエクステントに対するデータ書込みリクエストを受け取るステップと、
    前記仮想ディスクエクステントに関連付けられた状態情報が、前記仮想ディスクエクステントがフリースペースであることを示していると判断するステップと、
    前記仮想ディスクエクステントを記述するために、前記仮想ディスクファイルのセクションを、前記仮想ディスクファイルの前記セクションの中に以前から存在しているビットパターンを上書きすることなく、割り当てるステップと、
    前記仮想ディスクエクステントが前記仮想ディスクファイルの前記割り当てられたセクションに対してマップされていることを示すように、前記仮想ディスクエクステントに関連付けられた前記状態情報を変更するステップと、
    前記データを前記仮想ディスクファイルの前記割り当てられたセクションに保管するステップと、
    を含む、方法。
  2. 前記方法は、さらに、
    前記仮想ディスクファイルから前記仮想ディスクエクステントを切り離すステップと、
    前記仮想ディスクエクステントがゼロ化されたとの判断に応じて、前記仮想ディスクエクステントがゼロ化されたことを示すように、前記仮想ディスクエクステントに関連付けられた前記状態情報を変更するステップと、
    を含む、請求項1に記載の方法。
  3. 前記方法は、さらに、
    前記仮想ディスクファイルから前記仮想ディスクエクステントを切り離すステップと、
    ファイルシステムからの前記仮想ディスクエクステントをフリースペースとして特定する信号の受け取りに応じて、前記仮想ディスクエクステントが任意のデータを含むことを示すように、前記仮想ディスクエクステントに関連付けられた前記状態情報を変更するステップと、
    を含む、請求項1に記載の方法。
  4. 前記方法は、さらに、
    前記仮想ディスクファイルから前記仮想ディスクエクステントを切り離すステップと、
    前記仮想ディスクエクステントの全てのセクターをトリムするリクエストの受け取りに応じて、前記仮想ディスクエクステントが情報を開示しないビットパターンを含むことを示すように、前記仮想ディスクエクステントに関連付けられた前記状態情報を変更するステップと、
    を含む、請求項1に記載の方法。
JP2016227634A 2011-03-11 2016-11-24 仮想ディスクストレージ技術 Pending JP2017045477A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/046,617 US9146765B2 (en) 2011-03-11 2011-03-11 Virtual disk storage techniques
US13/046,617 2011-03-11

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2013557777A Division JP6050262B2 (ja) 2011-03-11 2012-03-04 仮想ディスクストレージ技術

Publications (1)

Publication Number Publication Date
JP2017045477A true JP2017045477A (ja) 2017-03-02

Family

ID=46797138

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2013557777A Active JP6050262B2 (ja) 2011-03-11 2012-03-04 仮想ディスクストレージ技術
JP2016227634A Pending JP2017045477A (ja) 2011-03-11 2016-11-24 仮想ディスクストレージ技術

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2013557777A Active JP6050262B2 (ja) 2011-03-11 2012-03-04 仮想ディスクストレージ技術

Country Status (7)

Country Link
US (4) US9146765B2 (ja)
EP (1) EP2684135A4 (ja)
JP (2) JP6050262B2 (ja)
KR (1) KR102047558B1 (ja)
CN (2) CN102707900B (ja)
HK (1) HK1243785A1 (ja)
WO (1) WO2012125315A2 (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US9841985B2 (en) * 2011-04-12 2017-12-12 Red Hat Israel, Ltd. Storage block deallocation in virtual environments
US8725782B2 (en) 2011-04-25 2014-05-13 Microsoft Corporation Virtual disk storage techniques
US9519496B2 (en) 2011-04-26 2016-12-13 Microsoft Technology Licensing, Llc Detecting and preventing virtual disk storage linkage faults
US9009438B2 (en) * 2011-06-01 2015-04-14 International Business Machines Corporation Space reclamation in multi-layered and thin provisioned storage systems
US9817582B2 (en) 2012-01-09 2017-11-14 Microsoft Technology Licensing, Llc Offload read and write offload provider
US9152548B2 (en) * 2012-01-17 2015-10-06 Vmware, Inc. Controlling access to a privileged resource in user-mode system level mobile virtualization using a ptrace () system call
US8488943B1 (en) 2012-01-31 2013-07-16 Google Inc. Trimming media content without transcoding
US8904081B1 (en) 2012-05-08 2014-12-02 Vmware, Inc. Composing a virtual disk using application delta disk images
WO2014030186A1 (ja) * 2012-08-23 2014-02-27 富士通株式会社 中継装置、中継方法、中継プログラムおよび中継システム
US9778860B2 (en) 2012-09-12 2017-10-03 Microsoft Technology Licensing, Llc Re-TRIM of free space within VHDX
US10120700B1 (en) * 2012-10-02 2018-11-06 Tintri Inc. Using a control virtual disk for storage management
US9569113B2 (en) * 2012-10-11 2017-02-14 SK Hynix Inc. Data storage device and operating method thereof
US9071585B2 (en) 2012-12-12 2015-06-30 Microsoft Technology Licensing, Llc Copy offload for disparate offload providers
US9251201B2 (en) 2012-12-14 2016-02-02 Microsoft Technology Licensing, Llc Compatibly extending offload token size
US9817766B1 (en) * 2012-12-28 2017-11-14 EMC IP Holding Company LLC Managing relocation of slices in storage systems
US9633027B1 (en) 2013-03-14 2017-04-25 EMC IP Holding Company LLC High speed backup
CN104079600B (zh) * 2013-03-27 2018-10-12 中兴通讯股份有限公司 文件存储方法、装置、访问客户端及元数据服务器系统
US9128746B2 (en) * 2013-03-29 2015-09-08 Vmware, Inc. Asynchronous unmap of thinly provisioned storage for virtual machines
CN104111800B (zh) 2013-04-18 2018-02-23 阿里巴巴集团控股有限公司 一种虚拟磁盘的io口调度方法及其调度装置
US9983992B2 (en) * 2013-04-30 2018-05-29 WMware Inc. Trim support for a solid-state drive in a virtualized environment
US9600203B2 (en) 2014-03-11 2017-03-21 Amazon Technologies, Inc. Reducing data volume durability state for block-based storage
US10055352B2 (en) * 2014-03-11 2018-08-21 Amazon Technologies, Inc. Page cache write logging at block-based storage
US9747298B2 (en) * 2014-05-02 2017-08-29 Vmware, Inc. Inline garbage collection for log-structured file systems
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
EP3190520B1 (en) * 2014-09-01 2019-08-07 Huawei Technologies Co. Ltd. File access method and apparatus, and storage system
US9489132B2 (en) 2014-10-07 2016-11-08 Pure Storage, Inc. Utilizing unmapped and unknown states in a replicated storage system
US11048446B2 (en) * 2014-12-17 2021-06-29 Uniys Corporation Data expanse using memory-mapped files on a system architecture interface layer-based mainframe operating system
US9632704B2 (en) 2015-02-09 2017-04-25 International Business Machines Corporation Management of physical extents for space efficient storage volumes
US9658773B2 (en) * 2015-02-09 2017-05-23 International Business Machines Corporation Management of extents for space efficient storage volumes by reusing previously allocated extents
US10558480B2 (en) * 2015-09-10 2020-02-11 Veritas Technologies Llc Optimizing access to production data
US9772780B2 (en) * 2015-10-30 2017-09-26 Netapp, Inc. Method for non-disruptively aligning I/O access of a host operating system with the underlying storage system
US10209899B2 (en) * 2015-11-06 2019-02-19 Microsoft Technology Licensing, Llc Storage virtualization offload
WO2017111955A1 (en) * 2015-12-22 2017-06-29 Intel IP Corporation Methods and apparatus to improve interprocess communication
US10168910B2 (en) 2017-03-09 2019-01-01 International Business Machines Corporation Storage area network reclamation for virtual environments
CN107688442B (zh) * 2017-09-04 2020-11-20 苏州浪潮智能科技有限公司 一种用于固态硬盘的虚拟块管理方法
US10565125B2 (en) * 2018-02-27 2020-02-18 Hewlett Packard Enterprise Development Lp Virtual block addresses
US11249664B2 (en) * 2018-10-09 2022-02-15 Western Digital Technologies, Inc. File system metadata decoding for optimizing flash translation layer operations
US10802725B2 (en) * 2019-03-07 2020-10-13 Vmware, Inc. Management of unmap processing rates in distributed and shared data storage volumes
CN110209354B (zh) * 2019-05-24 2022-04-19 北京百度网讯科技有限公司 用于处理数据的方法、装置、设备和介质
US20200391416A1 (en) * 2019-06-13 2020-12-17 Trexel, Inc. Blowing agent introduction in polymer foam processing methods and systems
US11422751B2 (en) 2019-07-18 2022-08-23 Pure Storage, Inc. Creating a virtual storage system
US20210055882A1 (en) * 2019-08-22 2021-02-25 Micron Technology, Inc. Hierarchical memory apparatus
US11816363B2 (en) 2021-11-04 2023-11-14 International Business Machines Corporation File based virtual disk management

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008090657A (ja) * 2006-10-03 2008-04-17 Hitachi Ltd ストレージシステム及び制御方法
JP2009104530A (ja) * 2007-10-25 2009-05-14 Hitachi Ltd 仮想計算機システム及びその制御方法
JP2009187379A (ja) * 2008-02-07 2009-08-20 Toshiba Corp 仮想計算機サーバ装置、更新画像検出方法およびプログラム
JP2010055557A (ja) * 2008-08-29 2010-03-11 Hitachi Ltd ストレージシステム及びストレージシステムの制御方法
JP2011048553A (ja) * 2009-08-26 2011-03-10 Nec Corp ストレージ装置、および同装置における実容量割当て方法、ならびに実容量割当てプログラム

Family Cites Families (128)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1740650A (en) 1926-08-13 1929-12-24 Holland William Heap Knitted articles or fabrics and the manufacture thereof
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
US5369757A (en) * 1991-06-18 1994-11-29 Digital Equipment Corporation Recovery logging in the presence of snapshot files by ordering of buffer pool flushing
US5355477A (en) 1991-12-23 1994-10-11 International Business Machines Corporation Method for updating a block using record-level locks by committing the update if the block has not been updated by another process otherwise spinning
JPH06215160A (ja) 1992-08-25 1994-08-05 Texas Instr Inc <Ti> データ処理方法および装置
US5414841A (en) * 1992-10-19 1995-05-09 International Business Machines Corporation Computerized system for representing data items using token identifiers
US5528594A (en) 1994-12-22 1996-06-18 International Business Machines Corporation Method and system for implementing sub-tokens on a token ring network
US5668958A (en) 1995-09-12 1997-09-16 International Business Machines Corporation Heterogeneous filing system with common API and reconciled file management rules
US6275867B1 (en) 1995-09-12 2001-08-14 International Business Machines Corporation Operation-partitioned off-loading of operations in a distributed environment
US6161145A (en) 1997-05-08 2000-12-12 International Business Machines Corporation Updating server-related data at a client
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6141705A (en) 1998-06-12 2000-10-31 Microsoft Corporation System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed
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
US6385701B1 (en) 1999-11-19 2002-05-07 International Business Machines Corporation Method, system and program products for sharing data between varied clients using token management
US7412462B2 (en) 2000-02-18 2008-08-12 Burnside Acquisition, Llc Data repository and method for promoting network storage of data
US6785743B1 (en) 2000-03-22 2004-08-31 University Of Washington Template data transfer coprocessor
US7720928B2 (en) * 2000-06-02 2010-05-18 Hewlett-Packard Development Company, L.P. Centralized fine-grained enhancements for distributed table driven I/O mapping
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
EP1179793A1 (de) 2000-08-09 2002-02-13 Indatex GmbH Portal für Finanzdienstleister
US7475199B1 (en) 2000-10-19 2009-01-06 Emc Corporation Scalable network file system
US7895445B1 (en) 2001-04-26 2011-02-22 Nokia Corporation Token-based remote data access
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
US20040139125A1 (en) 2001-06-05 2004-07-15 Roger Strassburg Snapshot copy of data volume during data access
US6938002B2 (en) 2001-06-20 2005-08-30 International Business Machines Corporation System and method for product evaluation
US7016982B2 (en) 2002-05-09 2006-03-21 International Business Machines Corporation Virtual controller with SCSI extended copy command
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US20040049603A1 (en) 2002-09-05 2004-03-11 International Business Machines Corporation iSCSI driver to adapter interface protocol
US7121456B2 (en) 2002-09-13 2006-10-17 Visa U.S.A. Inc. Method and system for managing token image replacement
US7340486B1 (en) 2002-10-10 2008-03-04 Network Appliance, Inc. System and method for file system snapshot of a virtual logical disk
EP1567929A2 (en) 2002-11-15 2005-08-31 Creo Inc. Methods and systems for sharing data
US7167905B2 (en) 2003-01-31 2007-01-23 Sierra Wireless, Inc. Token-based Web browsing with visual feedback of disclosure
US7194462B2 (en) 2003-02-27 2007-03-20 Bea Systems, Inc. Systems and methods for implementing an XML query language
JP4271967B2 (ja) 2003-03-10 2009-06-03 株式会社日立製作所 分散ファイルシステム及び分散ファイルシステムの運用方法
US7406501B2 (en) 2003-03-24 2008-07-29 Yahoo! Inc. System and method for instant messaging using an e-mail protocol
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
US20040267672A1 (en) 2003-06-26 2004-12-30 Gray William J. System and method for conducting secure electronic transactions
US7373548B2 (en) 2003-08-29 2008-05-13 Intel Corporation Hardware recovery in a multi-threaded architecture
DE60309706T2 (de) 2003-09-19 2007-03-29 Harman Becker Automotive Systems Gmbh Datenübertragungsschnittstelle
US7698361B2 (en) 2003-12-31 2010-04-13 Microsoft Corporation Lightweight input/output protocol
US7633955B1 (en) 2004-02-13 2009-12-15 Habanero Holdings, Inc. SCSI transport for fabric-backplane enterprise servers
JP4646526B2 (ja) 2004-02-18 2011-03-09 株式会社日立製作所 記憶制御システム及び同システムの制御方法
US7376674B2 (en) * 2004-05-14 2008-05-20 Oracle International Corporation Storage of multiple pre-modification short duration copies of database information in short term memory
US8042163B1 (en) 2004-05-20 2011-10-18 Symatec Operating Corporation Secure storage access using third party capability tokens
US7512721B1 (en) 2004-05-25 2009-03-31 Qlogic, Corporation Method and apparatus for efficient determination of status from DMA lists
US7383405B2 (en) 2004-06-30 2008-06-03 Microsoft Corporation Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
EP1650923B1 (en) 2004-10-22 2011-05-18 Software AG Authentication method and devices
US7464124B2 (en) 2004-11-19 2008-12-09 International Business Machines Corporation Method for autonomic data caching and copying on a storage area network aware file system using copy services
US20080104039A1 (en) 2004-11-24 2008-05-01 Linda Lowson System and method for resource management
US7275139B1 (en) 2004-12-02 2007-09-25 Tormasov Alexander G Secure deletion of information from hard disk drive
US7603555B2 (en) 2004-12-07 2009-10-13 Microsoft Corporation Providing tokens to access extranet resources
US7565526B1 (en) 2005-02-03 2009-07-21 Sun Microsystems, Inc. Three component secure tunnel
US8370819B2 (en) 2005-03-25 2013-02-05 Microsoft Corporation Mechanism to store information describing a virtual machine in a virtual disk image
US7475167B2 (en) 2005-04-15 2009-01-06 Intel Corporation Offloading data path functions
US8713180B2 (en) 2005-06-22 2014-04-29 Cisco Technology, Inc. Zero-copy network and file offload for web and application servers
US7480908B1 (en) 2005-06-24 2009-01-20 Azul Systems, Inc. Segmented virtual machine transport mechanism
JP4776307B2 (ja) 2005-08-31 2011-09-21 株式会社日立製作所 ストレージシステム、データ転送方法及びプログラム
US7617216B2 (en) 2005-09-07 2009-11-10 Emc Corporation Metadata offload for a file server cluster
US7725620B2 (en) 2005-10-07 2010-05-25 International Business Machines Corporation Handling DMA requests in a virtual memory environment
US8347373B2 (en) 2007-05-08 2013-01-01 Fortinet, Inc. Content filtering of remote file-system access protocols
US7877485B2 (en) * 2005-12-02 2011-01-25 International Business Machines Corporation Maintaining session states within virtual machine environments
US7676607B2 (en) 2005-12-08 2010-03-09 Electronics And Telecommunications Research Institute Hardware acceleration apparatus for iSCSI target system using TOE and method for performing read/write command using the apparatus
US7702843B1 (en) 2006-04-27 2010-04-20 Vmware, Inc. Determining 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
US20080065835A1 (en) 2006-09-11 2008-03-13 Sun Microsystems, Inc. Offloading operations for maintaining data coherence across a plurality of nodes
KR20090067221A (ko) 2006-09-21 2009-06-24 인터디지탈 테크날러지 코포레이션 그룹 단위 비밀키 발생
US8082231B1 (en) 2006-09-22 2011-12-20 Emc Corporation Techniques using identifiers and signatures with data operations
US8239674B2 (en) 2006-11-21 2012-08-07 Kabushiki Kaisha Toshiba System and method of protecting files from unauthorized modification or deletion
US7765361B2 (en) 2006-11-21 2010-07-27 Microsoft Corporation Enforced transaction system recoverability on media without write-through
US8213583B2 (en) 2006-11-22 2012-07-03 Verizon Patent And Licensing Inc. Secure access to restricted resource
CN101622596A (zh) 2006-12-06 2010-01-06 弗森多系统公司(dba弗森-艾奥) 使用空数据令牌指令管理存储设备中的数据的装置、系统和方法
CN101681282A (zh) 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
JP2008146574A (ja) 2006-12-13 2008-06-26 Hitachi Ltd 記憶制御装置及び記憶制御方法
US9189265B2 (en) 2006-12-21 2015-11-17 Vmware, Inc. Storage architecture for virtual machines
US20080155051A1 (en) 2006-12-23 2008-06-26 Simpletech, Inc. Direct file transfer system and method for a computer network
US7941812B2 (en) 2007-01-30 2011-05-10 Hewlett-Packard Development Company, L.P. Input/output virtualization through offload techniques
US8397038B2 (en) 2007-03-22 2013-03-12 Vmware, Inc. Initializing file data blocks
US7831720B1 (en) 2007-05-17 2010-11-09 Chelsio Communications, Inc. Full offload of stateful connections, with partial connection offload
US7886115B2 (en) 2007-07-13 2011-02-08 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for implementing virtual storage devices
US7730034B1 (en) 2007-07-19 2010-06-01 Amazon Technologies, Inc. Providing entity-related data storage on heterogeneous data repositories
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
WO2009085977A2 (en) 2007-12-20 2009-07-09 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
US20110131640A1 (en) 2008-02-18 2011-06-02 Microelectronica Espanola S.A.U. Secure transfer of data
US8074014B2 (en) 2008-03-31 2011-12-06 Microsoft Corporation Storage systems using write off-loading
US20090248835A1 (en) 2008-03-31 2009-10-01 Subhankar Panda Offloading data transfers between a local and remote network
CN101572660B (zh) 2008-04-30 2013-06-05 北京明朝万达科技有限公司 一种防止数据泄密的综合控制方法
US8745336B2 (en) 2008-05-29 2014-06-03 Vmware, Inc. Offloading storage operations to storage hardware
US20090327621A1 (en) 2008-06-27 2009-12-31 Microsoft Corporation Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager
US9323681B2 (en) 2008-09-18 2016-04-26 Avere Systems, Inc. File storage system, cache appliance, and method
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
US7904914B2 (en) 2008-09-30 2011-03-08 Microsoft Corporation On-the-fly replacement of physical hardware with emulation
US8086585B1 (en) 2008-09-30 2011-12-27 Emc Corporation Access control to block storage devices for a shared disk based file system
US8250267B2 (en) 2008-10-31 2012-08-21 Netapp, Inc. Control I/O offload in a split-path storage virtualization system
TWI405211B (zh) 2008-11-04 2013-08-11 Phison Electronics Corp 快閃記憶體儲存系統、控制器與資料保護方法
US8566821B2 (en) 2008-11-11 2013-10-22 Netapp Inc. Cloning virtual machines
TWI393143B (zh) 2008-12-05 2013-04-11 Phison Electronics Corp 快閃記憶體儲存系統及其控制器與防資料竄改方法
US9454368B2 (en) * 2009-01-21 2016-09-27 Vmware, Inc. Data mover permitting data transfer without transferring data between application and operating system
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
US8117168B1 (en) * 2009-03-31 2012-02-14 Symantec Corporation Methods and systems for creating and managing backups using virtual disks
US8805788B2 (en) * 2009-05-04 2014-08-12 Moka5, Inc. Transactional virtual disk with differential snapshots
WO2010138628A1 (en) 2009-05-28 2010-12-02 Marvell World Trade Ltd. Metadata management for virtual volumes
US8281149B2 (en) 2009-06-23 2012-10-02 Google Inc. Privacy-preserving flexible anonymous-pseudonymous access
WO2011023134A1 (en) 2009-08-28 2011-03-03 Beijing Innovation Works Technology Company Limited Method and system for managing distributed storage system through virtual file system
WO2011038359A2 (en) 2009-09-26 2011-03-31 Cisco Technology, Inc. Providing services at a communication network edge
US8627000B2 (en) 2010-02-08 2014-01-07 Microsoft Corporation Virtual disk manipulation operations
US9147081B2 (en) 2010-07-27 2015-09-29 Infinidat Ltd. Method of access control to stored information and system thereof
US9411517B2 (en) * 2010-08-30 2016-08-09 Vmware, Inc. System software interfaces for space-optimized block devices
US20120079583A1 (en) 2010-09-23 2012-03-29 Microsoft Corporation Offload reads and writes
US20120079229A1 (en) 2010-09-28 2012-03-29 Craig Jensen Data storage optimization for a virtual platform
US20120102561A1 (en) 2010-10-26 2012-04-26 International Business Machines Corporation Token-based reservations for scsi architectures
US9092149B2 (en) 2010-11-03 2015-07-28 Microsoft Technology Licensing, Llc Virtualization and offload reads and writes
US8443365B2 (en) * 2010-11-03 2013-05-14 Hewlett-Packard Development Company, L.P. Methods and systems to clone a virtual machine instance
US20120144501A1 (en) 2010-12-03 2012-06-07 Salesforce.Com, Inc. Regulating access to protected data resources using upgraded access tokens
US8874859B2 (en) * 2010-12-22 2014-10-28 Vmware, Inc. Guest file system introspection and defragmentable virtual disk format for space efficiency
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
US20120324560A1 (en) 2011-06-17 2012-12-20 Microsoft Corporation Token data operations
US20130041985A1 (en) 2011-08-10 2013-02-14 Microsoft Corporation Token based file operations
US20130179959A1 (en) 2012-01-05 2013-07-11 Microsoft Corporation Zero Token
US9817582B2 (en) 2012-01-09 2017-11-14 Microsoft Technology Licensing, Llc Offload read and write offload provider
US9071585B2 (en) 2012-12-12 2015-06-30 Microsoft Technology Licensing, Llc Copy offload for disparate offload providers
US9251201B2 (en) 2012-12-14 2016-02-02 Microsoft Technology Licensing, Llc Compatibly extending offload token size

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008090657A (ja) * 2006-10-03 2008-04-17 Hitachi Ltd ストレージシステム及び制御方法
JP2009104530A (ja) * 2007-10-25 2009-05-14 Hitachi Ltd 仮想計算機システム及びその制御方法
JP2009187379A (ja) * 2008-02-07 2009-08-20 Toshiba Corp 仮想計算機サーバ装置、更新画像検出方法およびプログラム
JP2010055557A (ja) * 2008-08-29 2010-03-11 Hitachi Ltd ストレージシステム及びストレージシステムの制御方法
JP2011048553A (ja) * 2009-08-26 2011-03-10 Nec Corp ストレージ装置、および同装置における実容量割当て方法、ならびに実容量割当てプログラム

Also Published As

Publication number Publication date
JP6050262B2 (ja) 2016-12-21
CN102707900B (zh) 2017-04-26
JP2014512593A (ja) 2014-05-22
US11614873B2 (en) 2023-03-28
US20230244395A1 (en) 2023-08-03
US20120233434A1 (en) 2012-09-13
EP2684135A4 (en) 2014-08-20
EP2684135A2 (en) 2014-01-15
KR20140005280A (ko) 2014-01-14
US20160335023A1 (en) 2016-11-17
US20160019004A1 (en) 2016-01-21
CN107092441B (zh) 2021-02-12
WO2012125315A3 (en) 2012-11-29
CN107092441A (zh) 2017-08-25
HK1243785A1 (zh) 2018-07-20
WO2012125315A2 (en) 2012-09-20
CN102707900A (zh) 2012-10-03
KR102047558B1 (ko) 2019-11-21
US9146765B2 (en) 2015-09-29

Similar Documents

Publication Publication Date Title
JP6050262B2 (ja) 仮想ディスクストレージ技術
US11157306B2 (en) Faster access of virtual machine memory backed by a host computing device&#39;s virtual memory
US10691341B2 (en) Method for improving memory system performance in virtual machine systems
JP5934344B2 (ja) 仮想記憶ディスク技術
US7434003B2 (en) Efficient operating system operation on a hypervisor
US8656386B1 (en) Method to share identical files in a common area for virtual machines having the same operating system version and using a copy on write to place a copy of the shared identical file in a private area of the corresponding virtual machine when a virtual machine attempts to modify the shared identical file
KR101903818B1 (ko) 가상 디스크 스토리지 기술
US20160062787A1 (en) Systems and methods for managing data input/output operations in a virtual computing environment
US11995459B2 (en) Memory copy during virtual machine migration in a virtualized computing system
JP5819350B2 (ja) 計算機システム及び起動方法
US9952984B2 (en) Erasing a storage block before writing partial data
US11880301B2 (en) Enabling efficient guest access to peripheral component interconnect express (PCIe) configuration space

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161124

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180220

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180724