JP5632010B2 - ブロブとしての仮想ハードドライブ管理 - Google Patents

ブロブとしての仮想ハードドライブ管理 Download PDF

Info

Publication number
JP5632010B2
JP5632010B2 JP2012539922A JP2012539922A JP5632010B2 JP 5632010 B2 JP5632010 B2 JP 5632010B2 JP 2012539922 A JP2012539922 A JP 2012539922A JP 2012539922 A JP2012539922 A JP 2012539922A JP 5632010 B2 JP5632010 B2 JP 5632010B2
Authority
JP
Japan
Prior art keywords
blob
application
store
hard drive
virtual hard
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012539922A
Other languages
English (en)
Other versions
JP2013511104A (ja
JP2013511104A5 (ja
Inventor
ジーン カルダー ブラッドリー
ジーン カルダー ブラッドリー
ジェームス エドワーズ アンドリュー
ジェームス エドワーズ アンドリュー
ワン ジュー
ワン ジュー
アラフェーフ サメール
アラフェーフ サメール
エンジニア アヌ
エンジニア アヌ
ズオ ユエ
ズオ ユエ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2013511104A publication Critical patent/JP2013511104A/ja
Publication of JP2013511104A5 publication Critical patent/JP2013511104A5/ja
Application granted granted Critical
Publication of JP5632010B2 publication Critical patent/JP5632010B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0686Libraries, e.g. tape libraries, jukebox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • 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

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)
  • Library & Information Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明は、ブロブとしての仮想ハードドライブ管理に関する。
従来より、クラウドコンピューティングプラットフォームはインターネット接続可能な仮想環境においてソフトウエアアプリケーションをホストしている。クラウドコンピューティングプラットフォームはサードバーティーによって設計されて維持されているデータセンターを団体が利用することを許している。従来の仮想環境は要求されたハードウエアリソース、ソフトウエアアプリケーションリソース、ネットワークリソース、及びストレージリソースを小さな又は大きな団体に提供する。仮想環境はまた、アプリケーションのセキュリティ、アプリケーションの信頼性、アプリケーションのスケーラビリティ及び可用性も提供する。
従来のデータセンターは物理コンピューティングリソース、物理ストレージリソース及び物理ネットワークリソースを提供する。データセンター内の物理リソース仮想化され、一組のアプリケーションプログラミングインターフェースとして団体に公開される。団体は自身のハードウエアリソース又はソフトウエアリソースを維持する必要が無く、又は、信頼性が有りスケーラブルなデータセンターを維持することは必要でない。
団体は仮想環境を介してソフトウエア又は根底にある物理ハードウエアの詳細を知ること無しにこれらの物理リソースに効率的にアクセスすることができる。
発明の実施形態は、一面において、クラウドコンピューティングプラットフォーム、コンピュータにより読取り可能な媒体、及びクラウドコンピューティングプラットフォーム内の仮想ハードドライブを管理するコンピュータ実装方法に関している。クラウドコンピューティングプラットフォームはファブリックコンピュータと仮想ハードドライブにアクセスするために用いられるブロブストアとを含んでいる。格納されたブロブが有効で耐久性があることを確実にするために各ブロブの幾つかのコピーを保持する複製を用いる耐久性クラウドストレージシステムである。
ファブリックコンピュータは複数のアプリケーションを実装している仮想マシンを実行するように構成されている。ファブリックコンピュータは仮想ハードドライブにアクセスして入力/出力(I/O)要求を介してデータを読み出し書き込む。ファブリックコンピュータはドライブライブラリー、複数のドライバ,ローカルキャッシュ及びブロブストアへのインターフェースを含む。アプリケーションはI/O要求を生成する。一方、I/O要求はI/O要求をブロブ指令(コマンド)に翻訳するドライバに送られる。ドライバはI/O要求をローカルキャッシュに格納されたデータで完結させても良く、或いはドライバはI/O要求によってアクセスされた仮想ハードドライブに関連したブロブ内に格納されたデータを取得するためにブロブストアにアクセスしても良い。ブロブ指令はブロブストアにアクセスするために用いられる。ブロブストアはアプリケーションに仮想ハードドライブとして公開されるブロブを格納するように構成されている。ブロブにアクセスすることを可能にするアプリケーションプログラミングインターフェース及びセマンティックは仮想ハードドライブにアクセスするためにアプリケーションが実行するアプリケーションプログラミングインターフェース及びセマンティックとは異なっている。
この概要は以下の詳細な説明で更に記述された概念の1つの選択を簡単な形式で導入するために提供されたものである。この概要は請求項に記載された主題の主要な特徴又は必須の特徴を特定することを意図したものでなく、請求項に記載された主題の範囲を決定する際の補助として独立して使用されることを意図したものでもない。
発明の実施形態に応じた模範的なクラウドコンピューティングプラットフォームを図示したネットワーク図である。 模範的なクラウドコンピューティングプラットフォームにおける模範的なファブリックコンピュータと模範的なブロブストアを図示したブロック図である。 仮想ハードドライブとして公開されるブロブを作成するための模範的な方法を図示した論理図である。 仮想ハードドライブへのI/O要求を管理する模範的な方法を図示した論理図である。
この特許は特許を受ける主題を法定の要件を満たすための詳細に記述したものである。しかしながら、記述自体はこの特許の範囲を限定することを意図したものではない。寧ろ、発明者は請求項に記載された主題は、他の現在又は未来の技術と共に、異なるステップ又はこの特許において記述されたものに類似したステップの組み合わせを含めることによって他の方法でも実施され得ることを考慮にしている。更に、本明細書において「ステップ」及び「ブロック」という用語は採用された方法の異なる要素を暗示しているように用いられているけれども、個々のステップの順序が明示的に記述されない限り、本明細書において開示された種々のステップ間の特定の順序を暗示していると解釈されるべきではない。更に、実施形態は添付された図面を参照しつつ以下に詳述されており、それらの図面の全体が本明細書に援用により包含される。
本明細書で用いられているように、用語「ブロブ」はバイナリーラージオブジェクトを意味している。
幾つかの実施形態において、クラウドコンピューティングプラットフォーム内で動作しているアプリケーションは耐久性が有り有効な仮想ハードドライブ内に格納されたファイルシステム内のデータにアクセスする。仮想ハードドライブ内のデータはソフトウエア又はハードウエアが故障した場合(例えば、ドライブの故障、ノードの故障、ラックの故障、ビット(bit rot)等の場合)にも利用可能状態を維持する。アプリケーションは仮想ハードドライブ内に格納されたデータにアクセスするために、ウインドウズ(登録商標)NTFS API等のアプリケーションプログラミングインターフェース(API)及びセマンティックを使用しても良い。
一実施形態において、仮想ハードドライブはマウント可能なブロックレベルの仮想装置である。仮想ハードドライブはクラウドコンピューティングプラットフォーム内の仮想マシン上で動作しているアプリケーションが、アプリケーションのために記憶装置とのインターフェースを行うファイルシステムAPIを使用して仮想ハードドライブ内のデータにアクセスすることを可能にする。仮想ハードドライブは耐久性が有り、ブロブストアへの書き込みを確定することによって全ての書き込みについてデータの消失を防止している。仮想ハードドライブはブロブである。仮想ハードドライブ及び仮想ハードドライブに関連したメタデータの内容はブロブに格納される。ブロブはブロブインターフェースを介してブロブストアからアップロード又はブロブストアにダウンロードすることができる。加えて、ブロブインターフェースはアプリケーションがブロブに関連した仮想ハードドライブをマウントし、仮想ハードドライブ内に格納されたデータにアクセスすることを許可することができる。
幾つかの実施形態において、仮想ハードドライブはアプリケーションによってボリュームとしてマウントされる。アプリケーションI/O要求ブロブストアに格納されたブロブにリダイレクトされる。一実施形態において、ブロブへの書き込みは書き込まれたデータをブロブストアに格納することによって耐久性の有るものとされ、ブロブストアはブロブストアにおいて書き込みが耐久性の有るものとされた後にアプリケーションに書き込みが成功したことをアクノリッジ(注:応答すること)する。仮想ハードドライブがマウント解除されるか又はドライブをマウントした仮想マシンが故障したときには、仮想ハードドライブに関連したブロブが耐久性の有るブロブストア内に残る。従って、他の仮想マシンが仮想ハードドライブに関連した同一のブロブをマウントし、ブロブに格納されたデータにアクセスしても良い。
クラウドコンピューティングプラットフォームは特に、記憶装置のリソースを使用する可能性のあるリレーショナルデータベースを含むレガシーアプリケーションの移動と実行、故障や遮断時の仮想マシン上のデータの保存、他の仮想マシンによって使用されるためのデータの記憶、及び多数の仮想マシン間での同時のデータ共有を可能にする。レガシーアプリケーションの移動と実行は、仮想マシンがウインドウズ(R)NTFSファイルシステムを介したI/O要求を開始するように構成されたアプリケーションを実行することを可能にする。仮想マシンはまた、mySQLまたはOracle等の構造化問い合わせ言語(SQL)を使用するリレーショナルデータベースを追加的なデータベースミラーリングを実行する必要無しに実行する。仮想マシンは仮想ハードドライブにデータを格納し、仮想ハードドライブに格納されたデータは、もし現在の仮想マシンが故障したときには追加の仮想マシンにより利用可能である。スナップショットは仮想ハードドライブに関連したブロブの現在の状態を記憶する。スナップショットは仮想マシンによってアクセス可能な読み出し専用の仮想ハードドライブを作成するために用いられても良い。仮想ハードドライブに格納されたデータは多数の仮想マシンに同時に利用可能であっても良い。一実施形態において、クラウドコンピューティングプラットフォームは仮想ハードドライブを更新し、スナップショットを作成し、その後スナップショットを他の仮想マシンと共用する。
一実施形態において、クラウドコンピューティングプラットフォームは物理マシンを仮想マシンとして公開させてもよい。物理マシンは仮想マシンによって使用される指令を介してアクセスされても良い。
当業者によって理解されるように、クラウドコンピューティングプラットフォームはハードウエア、ソフトウエア、又はハードウエアとソフトウエアの組み合わせを含んでも良い。ハードウエアはメモリに格納された命令を実行するように構成されたプロセッサーとメモリを含む。一実施形態において、メモリはコンピュータ実装方法のためにコンピュータが使用することが可能な命令を有するコンピュータプログラム製品を格納したコンピュータにより読取り可能な媒体を含む。コンピュータにより読取り可能な媒体は揮発性及び不揮発性媒体の両方、取り外し可能及び固定の媒体、及びデータベース、スイッチ、及び種々の他のネットワーク装置によって読み出し可能な媒体を含む。ネットワークスイッチ、ルーター、及び関連したコンポーネントは従来の性質のものであり、それと通信するための手段である。限定ではない例として、コンピュータにより読取り可能な媒体にはコンピュータ記憶媒体及び通信媒体が含まれる。コンピュータ記憶媒体、又はマシンによりマシン能な媒体は、情報を格納する方法又は技術によって実現される媒体を含む。格納された情報の例にはコンピュータにより利用可能な命令、データ構造、プログラムモジュール、及び他のデータ表現が含まれる。コンピュータ記憶媒体にはランダムアクセスメモリー(RAM)、リードオンリーメモリー(ROM)、電気的消去可能なプログラマブルリードオンリーメモリー(EEPROM)、フラッシュメモリー又は他のメモリ術、コンパクトディスクリードオンリーメモリー(CD−ROM)、デジタル多目的ディスク(DVD)、ホログラム媒体又は他の光学式ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置及び他の磁気記憶装置が含まれるがこれらに限定されない。これらのメモリ術はデータを瞬間的、一時的、又は永久に格納することが可能である。
一実施形態において、クラウドコンピューティングプラットフォームはクライアント装置が利用できるクラウドアプリケーションを含んでいる。クライアント装置はクラウドコンピューティングプラットフォームにアクセスしてクラウドアプリケーションを実行する。クラウドアプリケーションはクラウドコンピューティングプラットフォームにおいて利用できるストレージとプロセッシングリソースを使用して実装される。
図1は本発明の実施形態による模範的なコンピューティングシステム100を図示したネットワーク図である。図1に示されたコンピューティングシステム100は単なる例示であって、範囲と機能に関して如何なる限界を示唆することも意図していない。本発明の実施形態は多数の他の構成と共に動作することが可能である。図1を参照すると、コンピューティングシステム100はクラウドコンピューティングプラットフォーム110、クラウドアプリケーション120、及びクライアント装置130を含んでいる。
クラウドコンピューティングプラットフォーム110はクライアント装置130によって要求されたクラウドアプリケーション120を実行するように構成されている。クラウドコンピューティングプラットフォーム110はブロブストアを維持している。ブロブストアはクラウドアプリケーション120によってアクセスされたデータを格納したブロブを提供する。クラウドコンピューティングプラットフォーム110は、無線ネットワーク、ローカルエリアネットワーク、有線ネットワーク、又はインターネット等の通信ネットワークを介してクライアント装置130に接続する。
クラウドアプリケーション120はクライアント装置130が利用可能である。クラウドコンピューティングプラットフォーム110上で実行されたソフトウエアがクラウドアプリケーション120を実装する。一実施形態において、クラウドコンピューティングプラットフォーム110内の仮想マシンがクラウドアプリケーション120を実行する。クラウドアプリケーション120は編集アプリケーション、ネットワーク管理アプリケーション、財務アプリケーション、又はクライアント装置130によって要求又は開発されたどのようなアプリケーションをも含むことができる。或る実施形態において、クラウドアプリケーション130の幾つかの機能はクライアント装置130上で実行されても良い。
クライアント装置130はユーザーがクラウドコンピューティングプラットフォーム110によって提供されたクラウドアプリケーション120と対話するために使用される。幾つかの実施形態においてクライアント装置130はクラウドアプリケーション120にアクセスするために、クラウドコンピューティングプラットフォーム110に登録しなければならない。クラウドコンピューティングプラットフォーム110からのアカウントを有するクライアント装置130がクラウドアプリケーション120とクラウドコンピューティングプラットフォーム110内に提供された他のリソースにアクセスすることが可能である。クライアント装置130にはパーソナルデジタルアシスタント、スマートフォン、ラップトップ、パーソナルコンピュータ、ゲームシステム、セットトップボックス、又は他の適当なクライアントコンピューティング装置が含まれるが、これらに限定されない。クライアント装置130はクライアント装置130上のユーザー及びシステム情報を格納するユーザー及びシステム情報記憶装置を含む。ユーザー情報はサーチ履歴、クッキー、パスワードを含んでも良い。システム情報はインターネットプロトコルアドレス、キャッシュされたWebページ及びシステム利用率を含んでも良い。クライアント装置130はクラウドアプリケーション120から結果を受け取るためにクラウドコンピューティングプラットフォーム110と通信する。
従って、コンピューティングシステム100はクライアント装置130にクラウドアプリケーション120を提供するクラウドコンピューティングプラットフォーム110が構成されている。クラウドアプリケーション120はクライアント装置130上の複数のローカルクライアントアプリケーションを更新し管理する負担を除いている。
或る実施形態において、クラウドコンピューティングプラットフォームはファブリックコンピュータ及びブロブストアを提供する。ファブリックコンピュータは1以上の仮想マシンにおいてクラウドアプリケーションを実行する。ブロブストアはクラウドアプリケーションによって使用されるデータを格納する。一方、クラウドアプリケーションはクラウドアプリケーションI/O要求をブロブ指令に翻訳するドライバを介して仮想ハードドライブとしてのブロブとインターフェースで繋がる。
図2は模範的なファブリックコンピュータ210及び模範的なクラウドコンピューティングプラットフォームにおける模範的はブロブストア230を図示したブロック図である。ファブリッマシンピュータ210がクラウドアプリケーション221を実装する仮想マシン220を実行する。ブロブストア230はインターネットプロトコル(IP)アドレスを介してファブリックコンピュータ210によってアクセスすることができる。一実施形態において、クラウドアプリケーション221はファブリックコンピュータ210によって実行されても良く、後者は、クラウドアプリケーション221によって使用される仮想ハードドライブを実装したブロブを取得するためにブロブストアにアクセスする。
仮想マシン220はドライブライブラリー222、I/Oリダイレクション223、ドライバ224、ローカルキャッシュ225を含む。ドライブライブラリー222はドライブ管理を提供しても良く、I/Oリダイレクション223はドライブ指令をドライブ指令をブロブ指令に翻訳するドライバ224にリダイレクトすることによって仮想ハードドライブに格納されたコンテンツにアクセスすることを可能にしても良い。一実施形態において、仮想マシン220はドライブライブラリー222に格納されたクリエイトドライブ(CreateDrive)、デリートドライブ(DeleteDrive)、リストドライブ(ListDrive)、マウントドライブ(MountDrive)、アンマウントドライブ(UnmountDrive)及びスナップショットドライブ(SnapshotDrive)等のドライブ指令を使用して仮想ハードドライブ(VHD)に対応したブロブ内のデータにアクセスしても良い。一実施形態において、ドライブライブラリー222は仮想マシン220にドライブ指令を検索するためのブロブ名前空間を提供しても良い。例えば、仮想マシン220はブロブ名前空間をhttp://<accountname>.blob.core.windows.net/<containername>/<blobname>等のドライブライブラリー222におけるURLにアクセスすることによって検索しても良く、上記のURLにおいて、accountnameはクラウドコンピューティングプラットフォームのユーザーによって登録されたアカウントの名前であり、containernameはブロブストアの名前であり、blobnameはブロブの名前である。
一方、仮想マシン220はVHDにI/O要求を送出しても良い。I/O要求はドライバ224によってブロブ指令に翻訳される。ブロブストア230内のブロブは仮想マシン220上で実行されているクラウドアプリケーション221に仮想ハードドライブ(VHD)として公開されても良い。一実施形態において、VHDはクラウドアプリケーション221によって時限的なリースでマウントされることが可能な特別なタイプのブロブ(例えばページブロブ)であっても良い。VHDは例えばウインドウズ(R)NTFSセマンティックなどのファイルシステムセマンティック又はドライブライブラリー222に含まれるドライブ指令を使用して如何なるクラウドアプリケーション221によってもアクセスすることができる。
VHDによって送出されたI/O要求はI/Oリダイレクション223によって受取られる。I/Oリダイレクション223はVHDに対してクラウドアプリケーションI/O要求をドライバ224に送り出すように構成されたコンポーネントである。
或る実施形態において、ドライバ224はクラウドアプリケーションから受取ったドライブ指令をリースブロブ(LeaseBlob)、スナップショットブロブ(SnapShotBlob)、プットページ(PutPage)、クリアページ(ClearPage)、ゲットブロブ(GetBlob)、等のブロブ指令に翻訳するためにクラウドアプリケーションによって使用されるインターフェースを提供及び/又は実現する。ドライバ224はまたマウントされた仮想ハードドライブに向けられたクラウドアプリケーションI/O要求をブロブストア230に対して送出され、処理されたブロブ指令に翻訳する。ドライバ224は仮想ハードドライブのためのローカルキャッシュ225がブロブ内において仮想ハードドライブに対応して格納されたデータを格納するのを管理しても良い。ドライバ224はクラウドアプリケーション221からの読み出し動作に対応したデータを取り出すためにローカルキャッシュ225を用いても良い。クラウドアプリケーション221からの書き込み動作はローカルキャッシュ225及びブロブストア230内のブロブの両方に送出されても良い。他の実施形態において、ドライバー224がクラウドアプリケーションがリースが終了したときにローカルキャッシュ225内又はブロブストア内のデータにアクセスすることを防止するために仮想ハードドライブに対応したリースを管理するようにしても良い。
各ローカルキャッシュ225は単一のVHDと関連付けられている。マウントされたVHDのためのローカルキャッシュ225は同一のファブリックコンピュータ210上に配置されても良く、又はローカルキャッシュ225はVHDをマウントしたファブリックコンピュータ210の同一のラック内のコンピューティングリソース上に配置されても良い。この構成はネットワーク帯域幅を保持しても良い。或る実施形態において、仮想マシン220は複数のVHDを要求しても良い。各VHDのために、仮想マシンはローカルキャッシュ225として使用するファブリックコンピュータ上のディスクドライブの容量を特定しても良い。ローカルキャッシュ225に格納されたデータを、仮想マシンが誤りの有るデータを使用することを防止するために、サイクリックリダンダンシーチェック(CRチェックされ)してもよい。
或る実施形態において、ローカルキャッシュ225はVHDの対応するブロブと同期している。ドライバ224はローカルキャッシュ225を管理しても良い。ドライバ224はブロブストア230内のブロブからアクノリッジが受信されるまでローカルキャッシュ225への書き込みを停止するように構成されても良い。あるいは、ドライバ224はローカルキャッシュ225とブロブストア230の両方に平行して並行して書き込んでも良い。もしブロブストア230に並行して書き込んでいる間に仮想マシン220が破損してリセットすると、仮想マシン220は仮想ハードドライブを再度マウントして対応するローカルキャッシュ225を再度使用することを試みても良い。仮想マシン220はどのデータブロックがブロブストア230からのアクノリッジ無しにローカルキャッシュ225に書き込まれたと推測されるか判別するためにローカルキャッシュ225をチェックしても良い。一方、仮想マシン220はアクノリッジが返されないデータブロックのローカルキャッシュ225をクリアしても良い。他の実施形態において、仮想マシン220はローカルキャッシュ225の全体又はローカルキャッシュ225の選択された部分をクリアしても良い。ローカルキャッシュ225はファブリックコンピュータ210上の仮想マシン220によってしばしば使用されるデータを格納する。ローカルキャッシュ225はブロブストア230から要求された読み出しの数を減少させ、それによって、ネットワーク帯域幅が節約され、ネットワークの競合が減少する。加えて、仮想マシン220はローカルキャッシュ225から読み取りデータを取り込むことによって得られる待ち時間の減少による性能の改善が得られる可能性が有る。幾つかの実施形態において、ブロブストア230への高い接続性(例えば10Gps)を有する仮想マシンはローカルキャッシュ225を使用しない可能性が有る。
ブロブストア230はファブリックコンピュータ210に接続されている。ファブリックコンピュータ210はIPアドレスを介してブロブストア230にアクセスする。ブロブストア230はブロブサーバー233を含んでいる。ブロブサーバー233はファブリックコンピュータ210とインターフェースで繋がり、ブロブへのアクセスを制御し、ブロブ上のブロブ指令を実装する。ブロブサーバー233は複製されたブロブストレージシステムの一部であり、そこでは格納されたブロブは幾つかのサーバーを介して複製され、ドライブ、ノード、又はラックにおいて故障があった場合にも別々に維持されるブロブのコピーが作られる。これによって故障が有った場合にもブロブが利用でき、耐久性を有することが確実化される。
ブロブにアクセスしたときにドライバ224、又はクラウドアプリケーション221から受取ったブロブ指令には、リースブロブ(Lease Blob)、スナップショットブロブ(Snapshot Blob)、プットページ(Put Page)、クリアページ(Clear Page)及びゲットブロブ(Get Blob)が含まれる。
リースブロブ指令はブロブストア230にブロブストア230上に格納されたブロブにリースを作成させる。幾つかの実施形態において、リースは排他的書き込みリースであり、一つのクラウドアプリケーション221のみにブロブに書き込むことを許す。排他的書き込みリースを取得するとき、リース識別子(ID)がブロブサーバー233によって作成され、クラウドアプリケーション221に返される。ドライバ224はリースIDを格納し、リースIDをブロブストア230に送出されたどのような書き込みと共に含める。リースブロブ指令はまた排他的読み出し書き込みリース及び他のタイプのリースをサポートする。幾つかの実施形態においてリースブロブ指令はドライバ224がリースの持続時間を指定することを許可する。リースを更新し又はリースを終了するためにドライバ224によってリースブロブ指令が使用されても良い。
スナップショットブロブ指令はブロブストアにブロブ内のデータのスナップショットを作成させる。スナップショットは読み出し専用である。ドライバ224はブロブの内容に同時にアクセスすることを可能にするためにこの指令を用いても良い。同一のブロブの1以上のスナップショットが2以上のクラウドアプリケーションによって同時にアクセスされても良い。スナップショットはブロブのためにバージョン化を提供しても良い。ブロブのためのスナップショットはブロブの名前と(複数のバージョンの場合)ブロブサーバー233によって自動作成されたバージョンタイムスタンプに基づいてアクセスされる。換言すれば、ブロブが更新されたときにブロブの更新の前と後に生成されたスナップショットは異なるバージョンタイムスタンプを含む。或る実施形態において、クラウドアプリケーションはドライバ224にスナップショットのためにブロブストアにメタデータを送出させても良い。メタデータはスナップショットを記述するため又は瞬時にスナップショットの位置を決定するために使用されても良い。
プットページ指令はブロブサーバー233にブロブストア230内の指定されたアドレスにおけるページの範囲を格納させる。各ページはプライマリーストレージ装置内のメモリーブロック範囲によって構成されても良い。プットページ指令はブロブストアにデータを書き込むためにドライバ224によって使用されても良い。ブロブストア230内の有効なアドレス内に格納することを可能にするためにオフセットが指定されても良い。ページは順番に書き込まれる必要はなく、ブロブのアドレス空間内でギャップ(例えば空のブロック)が有っても良い。例えばドライバ224はブロブストア230内で4KBのページをオフセット0でプットし、他のページをオフセット4KB*1百万のオフセットでプットしても良い。ブロブストア230はこれらの2つのページを指定されたアドレスに格納しても良い。これらのページはプットページ指令が成功した後にブロブストア230に深く関係付られる。一方、ブロブストア230はドライバ224に成功したことのアクノリッジを行う。プットページ指令はブロブサーバー233にブロブを更新する前にリースIDをチェックさせる。ブロブのために排他的書き込みリースが指定されたとき、ドライバによってブロブに更新を要求している間に有効なリースIDが指定されたときにプットページ指令は成功となる。リースが終了したとき、プットページ指令は不成功になり、ブロブサーバー233は終了したリースIDを除去しても良い。
クリアページ指令はブロブサーバー233にブロブストア230から特定のページ又はページ範囲をクリアさせる。ドライバ224はクラウドアプリケーション221の仮想ハードドライブからデータを消去する要求に応答してブロブからページを除去するクリアページ指令を送出する。クリアページ指令はブロブサーバー233に消去要求の対象であるデータを有するページを除去する前にVHDに関係したブロブのために有効なリースIDが指定されていることを確認させる。リースが終了したとき、クリアページ指令は不成功になり、ブロブサーバー233は終了したリースIDを除去しても良い。
ゲットブロブ指令はブロブサーバー233に指定されたブロブのためにブロブ全体又はページの範囲(例えばバイト)を取り込ませる。ドライバ224はクラウドアプリケーション221の仮想ハードドライブからデータを取得する要求に応答してゲットブロブ指令を送出する。ゲットブロブ指令はブロブサーバー233にページを取得する前にVHDに関連づけられたブロブに有効なリースIDが指定されていることを確認させる。リースが終了したとき、ゲットブロブ指令は不成功となり、ブロブサーバー233は終了したリースIDをク除去しても良い。
ドライバ224はクラウドアプリケーション221からドライブ指令及びI/O要求を受け取る。一方、ドライバ224はクラウド指令及びI/O要求をブロブ指令に翻訳する。ドライブ指令はクラウドアプリケーションによってVHDを管理するために使用され、I/O要求はVHDに格納されたデータにアクセスするために用いられる。ドライブ指令にはとりわけクリエイトドライブ(Create Drive)、マウントドライブ(Mount Drive)、アンマウントドライブ(UnMount Drive)、デリートドライブ(Delete Drive)、リストドライブ(List Drive)、及びスナップショットドライブ(Snapshot Drive)が含まれる。
クリエイトドライブ指令はクラウドアプリケーション221によって仮想ハードドライブを作成するために使用される。クラウドアプリケーション221は仮想ハードドライブのためにサイズとフォーマットを指定する。例えば、クラウドアプリケーション221は仮想ハードドライブをウインドウズ(R)NTFSファイルシステムを使用して単一パーティション単一ボリュームとしてフォーマットしても良い。一方、ドライバ224はドライブ指令をブロブ名前空間で利用できる適切なブロブ指令に翻訳する。ドライバは次にブロブストア230に、ブロブ指令、例えばVHDにブロブを作成するプットページ、リースブロブ等を送出しても良い。
マウントドライブ指令はクラウドアプリケーション221によってVHDをマウントするために使用される。VHDをマウントするとき、クラウドアプリケーション221はマウントされたVHDのためのローカルキャッシュ225として使用するローカルディスクスペースの量を指定しても良い。クラウドアプリケーション221はまた排他的書き込みVHD、書き込みVHD、共用読み出し専用VHD、等を要求しても良い。
排他的書き込みVHDはクラウドアプリケーション221のみがVHDを更新しても良いことを意味している。書き込みVHDはクラウドアプリケーション221がVHDを更新してもよく、また順次他のクラウドアプリケーションがVHDを更新しても良いことを意味している。共用読み出し専用VHDはVHDが読み出し専用であり、他の仮想マシン220が同一のVHDから同時に読み出しても良いことを意味している。ドライバ224はリースIDがVHDの対応したブロブに関連していないかも知れないため読み出し専用VHDに書き込むことを阻止しても良い。一方、ドライバ224はマウントドライブ指令を適切なブロブ指令に翻訳する。例えば、ドライバ224ブロブストア230に対してVHDに対応したブロブ上のリースを取得し維持するリースブロブ指令を送出しても良い。加えて、ドライバはVHDへのアクセスを有するクラウドアプリケーション221を提供し続けるためにブロブ上のリースを日常的に更新しても良い。もしリースが更新されなければ、クラウドアプリケーション書き込み要求221は不成功になる可能性がある。
アンマウントドライブ指令は指定されたVHDをマウント解除するためにクラウドアプリケーション221によって用いられる。アンマウントドライブ指令はドライバ224に、指定されたVHDに関連したブロブのためのリースを終了させることができる。ファブリックコンピュータ210又は仮想マシン220が故障したとき、ドライバ224はファブリックコンピュータ210又は仮想マシン220によって使用されているブロブのための如何なるリースも終了させるアンマウントドライブ指令を自動的に送出しても良い。
デリートドライブ指令は指定されたVHDを削除するためにクラウドアプリケーション221によって用いられる。デリートドライブ指令はドライバ224に指定されたVHDに関連したブロブのためのリースを終了させるブロブ指令を送出させるようにしても良い。幾つかの実施形態において、ドライバ224は指定されたVHDに関連したブロブのための全てのページを除去するクリアページ指令を送出しても良い。VHDを除去した後、ブロブ内のデータはクラウドコンピューティングプラットフォーム又はクラウドアプリケーション221には利用できない。
リストドライブ指令はクラウドアプリケーション221に関連したすべてのVHDをリストするためにクラウドアプリケーション221によって使用される。リストドライブ指令はドライバ224にクラウドアプリケーション221に関連した各リースIDの場所を検索させても良い。幾つかの実施形態において、ドライバ224は、クラウドアプリケーション221が利用可能な各リースIDに対応した文字又は数字をクラウドアプリケーション221送出しても良い。ドライバ224はまた、スナップショット又はリースIDの無い他のドライブに関連した数字又は文字を受け取っても良い。
スナップショットドライブ指令はクラウドアプリケーション221に関連した各VHDのスナップショットを得るためにクラウドアプリケーション221によって使用される。スナップショットドライブ指令はドライバ224にVHDに関連したプロブを検索させ、ブロブストアにスナップショットブロブ指令を送出させても良い。一方、ドライバ224はクラウドアプリケーション221にスナップショットの文字、数字、又は例えば日付及び時刻などのタイムスタンプを返す。ブロブのスナップショットはクラウドアプリケーション221によってVHDとしてアクセスされても良い。
或る実施形態において、クラウドアプリケーション221からのI/O要求はドライバ224によって処理される。クラウドアプリケーション221によってマウントされたVHDは格納されたデータにI/O要求を実行するためにアクセスされる。I/O要求は、特に、読み出し及び書き込み要求を含んでも良い。
例えば、VHDはクラウドアプリケーション221から読み出し要求を受け取ることができる。I/Oリダイレクション223が読み出し要求をドライバ224に迂回させるようにしても良い。一方、ドライバ221は読み出し要求をクラウドアプリケーション221から受け取った重なった前の書き込み要求とともに整理する。これによって、書き込み要求がブロブストア230内に格納された後にのみ、読み出しが処理中の更新を返すことが確実にされる。ドライバ224はバッファーにおいて要求されたデータについて最近書き込まれたデータをチェックする。もしバッファーが要求されたデータを含んでいなければ、ローカルキャッシュ225がチェックされる。データがローカルキャッシュ225で利用でき、ローカルキャッシュ225から読み出されたとき、ブロックのためのCRCがチェックされて、データの完全性が確認される。もしCRCの不一致があれば、データがキャッシュから除去され、データはブロブストア230から取り出される。
もしローカルキャッシュ225においてデータが見つからなければ、ドライバ224はブロブストア230からデータを読み出す。ブロブストア230からデータを読み出すためには、ドライバ224は要求されたデータに対応したページにアクセスするためにゲットブロブ指令を送出する。或る実施形態において、ブロブストア230からのデータ読み出しは有効なリースIDを有することが条件とされる。データが読み出されて有効にされた後にデータはクラウドアプリケーション221に返される。データがブロブストア230から取り出されたとき、ドライバー224はローカルキャッシュ225のサイズ、キャッシュ置換ポリシー等に基いてデータをキャッシュするか否かを決定する。もしデータがローカルキャッシュ225に格納すべきであれば、データが格納され、CRCコードが計算されて格納される。CRCはデータと共に格納することができ、又は後にファブリックコンピュータ210上の異なる位置に書き込んでも良い。
クラウドアプリケーション221はVHDにデータを書き込む。I/Oリダイレクションは書き込み要求ドライバ224を迂回させても良い。一方、ドライバ224は入力されたI/O要求を処理中の読み出し及び書き込み要求に対して順序付けても良い。ドライバ224は書き込み要求をブロブストア230に送出する。一実施形態において、ドライバ224はブロブストアへの全ての重なった書き込み要求を整理し、重ならない書き込み要求のみをブロブストア230に送出する。処理中の重なった読み出し又は書き込み要求があるとき、入力された書き込み要求は整理され、重なったI/O要求がブロブストア230に送出されてアクノリッジが返されるまで待たねばならない。
重なった要求が整理された後、入力された書き込みがブロブストア230に送出される。書き込みはマウントされたVHDに対応したブロブのための有効なリースIDに基づいた条件付きである。もしリースが終了していれば書き込み要求は失敗する。この場合、ドライバ224はリースの再取得を試みても良く、もしできなければ書き込みは依然として失敗する。書き込み要求が成功すると、書き込み要求をブロブストア230に格納すること及びクラウドアプリケーション221に成功のアクノリッジを返す前に書き込みを複製することによって耐久性がもたされる。
もし書き込み要求がタイムアウトしたとき、(例えば、ブロブストア230からアクノリッジが受け取られなかったとき)、ドライバ224は書き込み要求を取り込む。ドライバ224はまた、ブロブストアが「タイムアウト」又は「サーバービジー状態」を送出したときに書き込み要求を再試行しても良い。ドライバ224はブロブストア230において一旦再試行が成功すると成功を返す。他の実施形態において、ドライバ期限が過ぎた(stale)書き込み(例えば、ブロブストア230に送出されたアクノリッジされていない書き込み要求)が後の再試行を繰り返さないことを確実にする。期限が過ぎた書き込みはブロブサーバータイムアウトメッセージを取得することを待つか、又はブロブサーバータイムアウト期間を待つことによって廃棄することができる。従って、重なった書き込み要求を書き込み再試行の範囲で実行する前に、ドライバ224はそれらのブロブサーバータイムアウト期間が経過するのを待つことによって、システムを介して期限が過ぎた書き込みがクリアされることを確実にする。ブロブサーバー233は所定の時間が経過した後に期限が過ぎた書き込みを廃棄する。或いは、ドライバ224はブロブに関連したリース又はシーケンス番号をリセットしても良い。リースIDの変化によって期限が切れたリースIDを有する期限が過ぎた書き込みがブロブストア230を更新することを防止することもできる。任意選択で、ブロブに関連したシーケンス番号は、各々の成功した書き込み要求の後に増加させても良い。ドライバ224がブロブストア230からアクノリッジを取得しないとき、ドライバ224はシーケンス番号を増加させてブロブストア230に若いシーケンス番号を有する前の書き込みは廃棄すべきであること通知する。従って、ブロブストア230は期限が過ぎた書き込みを無視し、ドライバ224からの将来の書き込みは新しいリースID又はシーケンス番号を使用する。
ブロブサーバー233はブロブストア230内のブロブのためにシーケンス番号を格納する。シーケンス番号はブロブサーバー233によってブロブサーバーが期限が過ぎた書き込みを受け取ったときにブロブへのアクセスを拒否するために使用される。シーケンス番号を使用する際、各ページプット又はページクリアー指令はシーケンス番号を渡し、指令に含められたシーケンス番号はブロブストア内にブロブと共に格納されたシーケンス番号以上であるか否かがチェックされる。指令に含められたシーケンス番号がブロブストア内にブロブト共に格納されたシーケンス番号以上であるとき、指令が成功するようにすることができる。そうでなければ指令は失敗する。
一実施形態において、VHDをマウントする際に対応したブロブのためのシーケンス番号は0に設定される。VHD及びその対応したブロブへの全ての書き込みがシーケンス番号0に渡る。一方、ブロブサーバー233は渡されたシーケンス番号がブロブのために格納されたものと一致するため書き込みを許容する。もし書き込みの一つが期限切れであるとき、ドライバ224は書き込みが実行の待ち行列内に有るか否かを知らない。例えば10秒のタイムアウト期間の後、ドライバ224は処理中の書き込みを有するブロブに関連したシーケンス番号を増加させる要求をブロブサーバー233に送出する。ブロブサーバー233はブロブのシーケンス番号を1に増加させる。その後、ドライバ224はシーケンス番号が1のVHDのための書き込みをブロブサーバー233に送出し、ブロブサーバーは受け取った書き込みをブロブ内で実現する。シーケンス番号が更新された後にシーケンス番号が0の期限が過ぎた書き込みがブロブサーバー233に到着した場合、渡されたシーケンス番号がブロブのために格納された番号より小であるため、ブロブサーバー233は書き込みを廃棄する。
一実施形態において、クラウドコンピューティングプラットフォームはVHDを作成したクラウドアプリケーションを実行する。VHDはクラウドアプリケーションによって使用されるデータを格納する。一方、VHDを代表するブロブストアは本来のクラウドアプリケーション指令及びI/O要求をVHDに対応したブロブの為のブロブ指令として解釈するためにドライバによって管理される。
図3は仮想ハードドライブ(VHD)として公開されるブロブを作成するための模範的な方法を図示した論理図である。この方法ステップ310で初期化される。クラウドコンピューティングプラットフォームはステップ320においてVHDとして公開されるブロブをブロブストア内に作成する。一実施形態においてクラウドコンピューティングプラットフォームはVHDをN−T−F−Sファイルシステム又はF−A−Tファイルシステムの内の一つとしてフォーマットしても良い。一方、ステップ330においてVHDはクラウドコンピューティングプラットフォーム内の仮想マシン上で実行している1以上のアプリケーションによってマウントされる。ステップ340において、ドライバVHDへの読み出し及び書き込み要求を管理する。ドライバVHDへの全てのI/Oを遮り、I/Oをブロブストア内のブロブ宛に変更する。I/O要求内の書き込みはアクノリッジをアプリケーションに返す前にブロブストアに渡される。指定された期間の後に終了するブロブリースを介してクラウドアプリケーションのためのブロブに排他的書き込みアクセスが提供されても良い。ドライバはアプリケーションが動作していてそれを使用することを欲している限りVHDがマウントされ続けるためにリースを継続的に更新するスレッドを実行しても良い。他の実施形態において、ブロブに対する成功したアップデートが存在する毎にリースが更新するようにしても良い。一方、クラウドアプリケーションは他のクラウドアプリケーションがブロブからの読み出しを許可されている間、リースの有効性に基いて条件的にブロブへの書き込みを行う。
ブロブはドライバに利用できるブロブインターフェースを介してアクセスされ、操作される。ブロブのスナップショットが追加のアプリケーションがブロブに格納されたデータを同時に読み出すこを許可するためにブロブインターフェースを介して作成されても良い。或る実施形態において、ブロブはまた、クラウドコンピューティングプラットフォームによって実行されている幾つかのクラウドアプリケーションが利用可能なブロブインターフェースを介して、アップロードダウンロード、又はデバッグされても良い。クラウドアプリケーションはデータの整合性のある格納についてチェックするためにデバッガーを実行しても良い。ステップ350においてこの方法は終了する。
幾つかの実施形態において、ドライバはクラウドアプリケーションのためのI/O要求を管理する。ドライバはVHDに対するI/O要求をブロブストア内の対応したブロブに送出される適当なブロブ指令に翻訳する。一方、ブロブストアはブロブ指令を実現するためにブロブにアクセスする。
図4は仮想ハードドライブへのI/O要求を管理する模範的な方法を図示した論理図である。この方法はステップ410において初期化する。ステップ420において、クラウドコンピューティングプラットフォーム内の仮想マシン上で実行しているクラウドアプリケーションからI/O要求がVHDのために受け取られる。一実施形態において、ドライバは以前の書き込み要求が同一データへの最近の書き込み要求で上書きされるのを防止するためにシーケンス番号をI/O要求に関連づける。シーケンス番号はまた、期限が過ぎた書き込みが最近の書き込み要求を上書きすることを防止する。幾つかの実施形態において、ドライバはブロブのためにシーケンス番号を増加させ、シーケンス番号がブロブ指令に渡されて以前の書き込み要求がブロブストアによってアクノリッジされていないとき古いシーケンスを有する以前の書き込み要求を無視するようにしても良い。ステップ430において、ドライバがVHDへのI/O要求を管理する。ドライバはブロブストア内のブロブへの全ての重なったI/O要求を整理し、重ならないI/O要求をブロブストア内のVHDに対応したブロブに並行して送出する。他の実施形態において、仮想マシン上のローカルキャッシュは書き込み要求に応じてドライバにより更新され、ローカルキャッシュの更新はアクノリッジがブロブストアによって受け取られた後又はブロブストアヘの更新と並行して行われる。ローカルキャッシュ内の更新はアクノリッジがブロブストアから受信された後にのみ利用できる。クラウドアプリケーション又は仮想マシンを再起動させたときにキャッシュとブロブが不一致になったとき、ローカルキャッシュの全ての部分はクラウドアプリケーションの故障又は仮想マシンの故障の後にドライバによってクリアされても良い。ステップ440においてこの方法が終了する。
以上を要約すると、クラウドコンピューティングプラットフォームはブロブストア内のブロブを使用してVHDを提供する。例えば、クラウドコンピューティングプラットフォーム上でデータベースアプリケーションを実行することができる。データベースアプリケーションにおいて、時系列的にログが書き込まれる。ログは、例えばやり直し(Redo)/取り消し(Undo)記録、BTree変更記録、及びコミット記録等のかなり多数の書き込みについて用いられる。専用の「ログドライブ」がログアクセスとデータアクセスの競合を防止する。専用の「データベースドライブ」がデータベース内のデータにアクセス(書き込み及び読み出し)するために用いられる。「ログドライブ」の読み出しの割合は非常に低く、データベースドライブが読み出し及び書き込みの両方について高い割合を有している。
クラウドコンピューティングプラットフォームを実行するデータベースアプリケーションするは2つのVHD:「ログドライブ」と「データベースドライブ」を作成しても良い。一方、ブロブストアは「ログドライブ」及び「データベースドライブ」に夫々対応する2つのブロブを作成する。データベースアプリケーションは「ログドライブ」を"マウントし、トラフィックの多数はログ書き込みであるためキャッシングを設定しない。一方、クラウドアプリケーションは「データベースドライブ」をマウントし、100%のキャッシングを設定し、読み出し要求の殆どがローカルキャッシュによって出されるようにする。
以上の発明の実施形態の記述は説明的なものであり、構成及び実装の変更はこの記述の範囲内のものである。例えば、発明の実施形態は図1−4に関連して記述されてきたけれども、それらの記述は、例示的なものである。主題は構造的な特徴又は方法論的な作用に固有の言語によって記述されてきたけれども、添付の請求項によって画定された主題は必ずしも上述の特定の特徴又は作用に限定されないことが理解される。寧ろ上述の特定の特徴及び作用は請求の範囲を実現する形式の例として開示されたものである。従って、発明の実施形態の範囲は以下の請求項によってのみ限定される。

Claims (14)

  1. クラウドコンピューティングプラットフォームにおいてブロブとしての仮想ハードドライブを管理するコンピュータ実装方法であって:
    一つまたはそれ以上のアプリケーションに対して仮想ハードドライブとして公開されるブロブをブロブストア内に作成するステップと、
    前記仮想ハードドライブをマウントするステップであり、前記一つまたはそれ以上のアプリケーションから前記仮想ハードドライブに対する読み出し及び書き込み要求は、前記ブロブに対してコミットされる、ステップと、
    前記仮想ハードドライブへの読み出し及び書き込み要求を管理するステップと、を含み、
    前記管理は:
    アプリケーションプログラミングインターフェースを使用してアプリケーションによって生成された要求をインターセプトする段階であり、前記アプリケーションプログラミングインターフェースは、前記仮想ハードドライブへのアクセスをサポートする、段階と、
    前記アプリケーションによって生成された前記要求をブロブ指令に変換する段階であり、前記ブロブ指令は、ブロブインターフェースを介した前記ブロブへのアクセスをサポートする、段階と、
    前記ブロブ指令が前記ブロブストアで実行されるように、前記ブロブ指令を前記ブロブインターフェースに対して通信する段階と、
    に基づいて行われる、
    ことを特徴とするコンピュータ実装方法。
  2. 前記一つまたはそれ以上のアプリケーションは、仮想マシン上で実行され、かつ、
    前記読み出し及び書き込み要求は、レガシーアプリケーションである、
    請求項1に記載のコンピュータ実装方法。
  3. 前記レガシーアプリケーションは、
    N−T−F−SファイルシステムまたはF−A−Tファイルシステムの内の少なくとも一つを含んでいる、
    請求項に記載のコンピュータ実装方法。
  4. ブロブは、前記ブロブストアに対する前記ブロブインターフェースを介してアクセスされ、かつ、操作され
    前記ブロブストアはレプリケーションをサポートする耐久性クラウドストレージシステムである、
    請求項1に記載のコンピュータ実装方法。
  5. 前記一つまたはそれ以上のアプリケーションから選択された少なくとも一つのアプリケーションは、前記アプリケーションインターフェースと前記ブロブインターフェースの両方を介してブロブにアクセスし、前記ブロブは、前記ブロブインターフェースを介して、アップロード、ダウンロード、又は、デバッグされる、
    請求項1に記載のコンピュータ実装方法。
  6. 所定の期間後に終了するブロブリースを介して、アプリケーションのためのブロブに対して排他的書き込みアクセスが提供され、かつ、
    他のアプリケーションが前記ブロブから読み出すことが許可されている間、前記アプリケーションは、前記リースの有効性に基いて条件的に前記ブロブに書き込む、
    請求項1に記載のコンピュータ実装方法。
  7. クラウドコンピューティングプラットフォーム内で仮想ハードドライブをブロブとして管理する方法を実行する命令を格納した一つまたはそれ以上のコンピュータで読取り可能な媒体であって、前記方法は:
    前記クラウドコンピューティングプラットフォーム内の仮想マシン上で実行しているアプリケーションから、仮想ハードドライブに対するI/O要求を受け取るステップと、
    前記仮想ハードドライブに対するI/O要求をドライバによって管理するステップと、を含み、
    前記管理するステップは、前記仮想ハードドライブに関連するローカルキャッシュにアクセスする段階であり、前記ローカルキャッシュはブロブストア内のデータに対応するデータを保管している段階に基づき、
    読み出し要求が前記ローカルキャッシュに基づいて実行され、かつ、書き込み要求が、
    アプリケーションプログラミングインターフェースを使用してアプリケーションによって生成された前記書き込み要求をインターセプトする段階であり、前記アプリケーションプログラミングインターフェースは、前記仮想ハードドライブへのアクセスをサポートする、段階と、
    前記アプリケーションによって生成された前記書き込み要求をブロブ指令に変換する段階であり、前記ブロブ指令は、ブロブインターフェースを介した前記ブロブへのアクセスをサポートする、段階と、
    前記ブロブ指令が前記ブロブストアで実行されるように、前記ブロブ指令を前記ブロブインターフェースに対して通信する段階と、
    に基づいて実行される、
    ことを特徴とする媒体。
  8. 以前の書き込みを、前記クラウドコンピューティングプラットフォーム内に依然として残っている同一のデータに対する古い書き込みによって上書きすることを防止するために、シーケンス番号が前記I/O要求と関連付けられており、
    前記ドライバーは、前記ブロブストアによりアクノリッジされていない以前の書き込みを無視するために、前記シーケンス番号を増加させる、
    請求項7に記載のコンピュータで読取り可能な媒体。
  9. 前記ドライバーは、前記ブロブストア内の前記ブロブに対して重なった書き込み要求を命令し、かつ、並行して前記ブロブストア内の前記ブロブに対して重ならない書き込み要求を送付する、
    請求項8に記載のコンピュータで読取り可能な媒体。
  10. 前記ローカルキャッシュの更新は、前記ブロブストアからアクノリッジが受信された後、又は、前記ブロブストアへの書き込み要求と並行して、のいずれかに発生し、前記ブロブストアからアクノリッジが受信された後に前記更新が可能である
    請求項7に記載のコンピュータ読取り可能な媒体。
  11. 仮想ハードドライブをブロブとして管理するクラウドコンピューティングプラットフォームであって:
    データを読み出し、及び、書き込むために仮想ハードドライブにアクセスするアプリケーションを実装する仮想マシンを実行するように構成されたファブリックコンピュータと;
    仮想ハードドライブとして前記アプリケーションに公開されたブロブを格納するように構成されたブロブストアと、
    を含み、
    アプリケーションインターフェースとブロブインターフェースが、ブロブと仮想ハードドライブに対するアクセスを可能にし、
    ブロブにアクセスすることは、
    アプリケーションプログラミングインターフェースを使用してアプリケーションによって生成された要求をインターセプトする段階であり、前記アプリケーションプログラミングインターフェースは、前記仮想ハードドライブへのアクセスをサポートする、段階と、
    前記アプリケーションによって生成された前記要求をブロブ指令に変換する段階であり、前記ブロブ指令は、ブロブインターフェースを介した前記ブロブへのアクセスをサポートする、段階と、
    前記ブロブ指令が前記ブロブストアで実行されるように、前記ブロブ指令を前記ブロブインターフェースに対して通信する段階と、
    を含む、
    ことを特徴とするクラウドコンピューティングプラットフォーム。
  12. 前記ファブリックコンピュータは、
    ブロブデータをキャッシュするローカルキャッシュと、
    ブロブ指令を格納するブロブライブラリーと、
    仮想ハードドライブI/O命令をブロブ指令に翻訳するドライバと、を含む、
    請求項11に記載のクラウドコンピューティングプラットフォーム。
  13. 前記ローカルキャッシュは、各データブロックに対して前記データブロックを使用する前に前記データブロック内にエラーが存在するか否かを判別する巡回冗長検査コードを格納する、
    請求項12に記載のクラウドコンピューティングプラットフォーム。
  14. 前記アプリケーションが、前記ローカルキャッシュ内に格納されたデータを使用して要求を完結することが可能なように、前記ローカルキャッシュと前記ブロブが同期される、
    請求項13に記載のクラウドコンピューティングプラットフォーム。
JP2012539922A 2009-11-16 2010-10-29 ブロブとしての仮想ハードドライブ管理 Active JP5632010B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/619,307 US8516137B2 (en) 2009-11-16 2009-11-16 Managing virtual hard drives as blobs
US12/619,307 2009-11-16
PCT/US2010/054701 WO2011059811A2 (en) 2009-11-16 2010-10-29 Managing virtual hard drives as blobs

Publications (3)

Publication Number Publication Date
JP2013511104A JP2013511104A (ja) 2013-03-28
JP2013511104A5 JP2013511104A5 (ja) 2013-11-28
JP5632010B2 true JP5632010B2 (ja) 2014-11-26

Family

ID=43992327

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012539922A Active JP5632010B2 (ja) 2009-11-16 2010-10-29 ブロブとしての仮想ハードドライブ管理

Country Status (7)

Country Link
US (3) US8516137B2 (ja)
EP (1) EP2502149B1 (ja)
JP (1) JP5632010B2 (ja)
KR (1) KR101795087B1 (ja)
CN (1) CN102612686B (ja)
HK (1) HK1173527A1 (ja)
WO (1) WO2011059811A2 (ja)

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9842006B2 (en) 2009-12-01 2017-12-12 International Business Machines Corporation Application processing allocation in a computing system
US8429651B2 (en) * 2010-01-20 2013-04-23 International Business Machines Corporation Enablement and acceleration of live and near-live migration of virtual machines and their associated storage across networks
US9477531B2 (en) * 2010-01-27 2016-10-25 Vmware, Inc. Accessing virtual disk content of a virtual machine without running a virtual desktop
US9009219B2 (en) 2010-01-27 2015-04-14 Vmware, Inc. Native viewer use for service results from a remote desktop
US9274821B2 (en) * 2010-01-27 2016-03-01 Vmware, Inc. Independent access to virtual machine desktop content
US8392838B2 (en) * 2010-01-27 2013-03-05 Vmware, Inc. Accessing virtual disk content of a virtual machine using a control virtual machine
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US8122282B2 (en) * 2010-03-12 2012-02-21 International Business Machines Corporation Starting virtual instances within a cloud computing environment
US8306948B2 (en) * 2010-05-03 2012-11-06 Panzura, Inc. Global deduplication file system
US8477610B2 (en) * 2010-05-31 2013-07-02 Microsoft Corporation Applying policies to schedule network bandwidth among virtual machines
US8863117B2 (en) * 2010-07-19 2014-10-14 International Business Machines Corporation Optimizing a file system interface in a virtualized computing environment
CN103621145B (zh) 2011-04-20 2017-03-29 英派尔科技开发有限公司 移动内容体验质量的实时全参考计算方法、装置
WO2012167108A1 (en) * 2011-06-03 2012-12-06 Apple Inc. Cloud storage
US10983747B2 (en) 2011-07-15 2021-04-20 Vmware, Inc. Remote desktop mirroring
US10976981B2 (en) 2011-07-15 2021-04-13 Vmware, Inc. Remote desktop exporting
US9002790B2 (en) 2011-09-14 2015-04-07 Google Inc. Hosted storage locking
US8468138B1 (en) 2011-12-02 2013-06-18 International Business Machines Corporation Managing redundant immutable files using deduplication in storage clouds
KR101603290B1 (ko) 2011-12-14 2016-03-25 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 연결된 장치들을 위한 시맨틱 캐쉬 클라우드 서비스
US8694986B2 (en) 2011-12-15 2014-04-08 Microsoft Corporation Providing update notifications on distributed application objects
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9158568B2 (en) 2012-01-30 2015-10-13 Hewlett-Packard Development Company, L.P. Input/output operations at a virtual block device of a storage server
US20130219069A1 (en) * 2012-02-22 2013-08-22 Computer Associates Think, Inc. System and method for managing virtual hard disks in cloud environments
US9098325B2 (en) 2012-02-28 2015-08-04 Hewlett-Packard Development Company, L.P. Persistent volume at an offset of a virtual block device of a storage server
US9112935B2 (en) 2012-03-05 2015-08-18 Microsoft Technology Licensing, Llc Manipulating binary large objects
US9471591B2 (en) 2012-05-02 2016-10-18 Microsoft Technology Licensing, Llc Iterative disk upload based on differencing disk format
US8924969B2 (en) * 2012-06-07 2014-12-30 Microsoft Corporation Virtual machine image write leasing
US9830271B2 (en) * 2012-07-25 2017-11-28 Vmware, Inc. Transparent virtualization of cloud storage
US10002001B1 (en) * 2013-02-19 2018-06-19 Amazon Technologies, Inc. Importing a virtual disk image into a compute service environment
US9032402B2 (en) 2013-03-14 2015-05-12 Vmware, Inc. Managing an independent virtual disk
US9436494B2 (en) * 2013-03-14 2016-09-06 Vmware, Inc. Preserving an independent virtual disk
US9250809B2 (en) * 2013-03-18 2016-02-02 Hitachi, Ltd. Compound storage system and storage control method to configure change associated with an owner right to set the configuration change
US9747314B2 (en) * 2013-07-25 2017-08-29 Rackspace Us, Inc. Normalized searchable cloud layer
US9619248B2 (en) * 2013-08-30 2017-04-11 Bluedata Software, Inc. Configuration manager and method for configuring a host system for processing a processing job in a virtual data-processing environment
US9542216B2 (en) 2013-10-15 2017-01-10 At&T Intellectual Property I, L.P. Richer model of cloud app markets
WO2015094367A1 (en) * 2013-12-20 2015-06-25 Halliburton Energy Services Inc. Dynamic determination of a single equivalent circulating density ("ecd") using multiple ecds along a wellbore
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US11094015B2 (en) 2014-07-11 2021-08-17 BMLL Technologies, Ltd. Data access and processing system
CN104219290B (zh) * 2014-08-19 2017-05-31 南京邮电大学 一种多模块云应用弹性配置方法
JP2016057876A (ja) * 2014-09-10 2016-04-21 富士通株式会社 情報処理装置、入出力制御プログラム、及び入出力制御方法
US9413824B1 (en) 2015-01-30 2016-08-09 Dropbox, Inc. Storage constrained synchronization of content items based on predicted user access to shared content items using retention scoring
US10831715B2 (en) 2015-01-30 2020-11-10 Dropbox, Inc. Selective downloading of shared content items in a constrained synchronization system
US10248705B2 (en) 2015-01-30 2019-04-02 Dropbox, Inc. Storage constrained synchronization of shared content items
US9563638B2 (en) 2015-01-30 2017-02-07 Dropbox, Inc. Selective downloading of shared content items in a constrained synchronization system
US9185164B1 (en) 2015-01-30 2015-11-10 Dropbox, Inc. Idle state triggered constrained synchronization of shared content items
US9361349B1 (en) 2015-01-30 2016-06-07 Dropbox, Inc. Storage constrained synchronization of shared content items
US9891938B2 (en) 2015-06-26 2018-02-13 Vmware, Inc. Modifying an instance catalog to perform operations
US10282092B1 (en) * 2015-09-09 2019-05-07 Citigroup Technology, Inc. Methods and systems for creating and maintaining a library of virtual hard disks
CN105183382B (zh) * 2015-09-09 2018-06-12 浪潮(北京)电子信息产业有限公司 一种数据块保护方法及装置
US20170220592A1 (en) * 2016-02-01 2017-08-03 Microsoft Technology Licensing, Llc Modular data operations system
US11544049B2 (en) 2016-02-12 2023-01-03 Nutanix, Inc. Virtualized file server disaster recovery
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10049145B2 (en) 2016-04-25 2018-08-14 Dropbox, Inc. Storage constrained synchronization engine
US10719532B2 (en) 2016-04-25 2020-07-21 Dropbox, Inc. Storage constrained synchronization engine
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
US10178173B2 (en) * 2016-08-02 2019-01-08 International Business Machines Corporation Cloud service utilization
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10360057B1 (en) 2016-09-22 2019-07-23 Amazon Technologies, Inc. Network-accessible volume creation and leasing
US11562034B2 (en) * 2016-12-02 2023-01-24 Nutanix, Inc. Transparent referrals for distributed file servers
US11568073B2 (en) 2016-12-02 2023-01-31 Nutanix, Inc. Handling permissions for virtualized file servers
US11294777B2 (en) 2016-12-05 2022-04-05 Nutanix, Inc. Disaster recovery for distributed file servers, including metadata fixers
US11281484B2 (en) 2016-12-06 2022-03-22 Nutanix, Inc. Virtualized server systems and methods including scaling of file system virtual machines
US11288239B2 (en) 2016-12-06 2022-03-29 Nutanix, Inc. Cloning virtualized file servers
US10366104B2 (en) 2017-06-21 2019-07-30 Microsoft Technology Licensing, Llc Providing instant and distributed access to a source blob via copy-on-read blobs and link blobs
US10372371B2 (en) * 2017-09-14 2019-08-06 International Business Machines Corporation Dynamic data relocation using cloud based ranks
US10789135B2 (en) * 2018-02-07 2020-09-29 Microsoft Technology Licensing, Llc Protection of infrastructure-as-a-service workloads in public cloud
US11086826B2 (en) 2018-04-30 2021-08-10 Nutanix, Inc. Virtualized server systems and methods including domain joining techniques
US11221796B2 (en) * 2018-05-01 2022-01-11 Microsoft Technology Licensing, Llc Redirection of I/O requests from local to remote storage locations to improve network performance and data redundancy
US10802715B2 (en) 2018-09-21 2020-10-13 Microsoft Technology Licensing, Llc Mounting a drive to multiple computing systems
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
US10990315B2 (en) 2018-12-03 2021-04-27 International Business Machines Corporation Write transfer resource management in a data storage system
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up
KR20220071493A (ko) 2020-11-24 2022-05-31 삼성에스디에스 주식회사 로컬 캐시를 이용한 네트워크 드라이브 관리 방법 및 장치
US11397545B1 (en) 2021-01-20 2022-07-26 Pure Storage, Inc. Emulating persistent reservations in a cloud-based storage system
CN113946286A (zh) * 2021-08-17 2022-01-18 丝路信息港云计算科技有限公司 一种云节点块级缓存方法,存储装置及服务器
US12117972B2 (en) 2021-08-19 2024-10-15 Nutanix, Inc. File server managers and systems for managing virtualized file servers
US12072770B2 (en) 2021-08-19 2024-08-27 Nutanix, Inc. Share-based file server replication for disaster recovery

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3269849B2 (ja) * 1992-05-29 2002-04-02 株式会社日立製作所 並列データベース処理システムとその検索方法
US6181837B1 (en) 1994-11-18 2001-01-30 The Chase Manhattan Bank, N.A. Electronic check image storage and retrieval system
JP3703874B2 (ja) * 1995-03-17 2005-10-05 富士通株式会社 ファイル管理方法及びファイル管理装置
JPH10124437A (ja) * 1996-10-24 1998-05-15 Iiguruzu Kk インタフェース制御装置
US5999943A (en) * 1997-10-31 1999-12-07 Oracle Corporation Lob locators
US6061690A (en) * 1997-10-31 2000-05-09 Oracle Corporation Apparatus and method for storage of object collections in a database system
US6119123A (en) * 1997-12-02 2000-09-12 U.S. Philips Corporation Apparatus and method for optimizing keyframe and blob retrieval and storage
US6275831B1 (en) * 1997-12-16 2001-08-14 Starfish Software, Inc. Data processing environment with methods providing contemporaneous synchronization of two or more clients
US6415373B1 (en) * 1997-12-24 2002-07-02 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6484161B1 (en) * 1999-03-31 2002-11-19 Verizon Laboratories Inc. Method and system for performing online data queries in a distributed computer system
US6393415B1 (en) * 1999-03-31 2002-05-21 Verizon Laboratories Inc. Adaptive partitioning techniques in performing query requests and request routing
AU774090B2 (en) * 1999-08-05 2004-06-17 Oracle International Corporation Internet file system
US6571282B1 (en) * 1999-08-31 2003-05-27 Accenture Llp Block-based communication in a communication services patterns environment
US6615219B1 (en) * 1999-12-29 2003-09-02 Unisys Corporation Database management system and method for databases having large objects
US6714968B1 (en) * 2000-02-09 2004-03-30 Mitch Prust Method and system for seamless access to a remote storage server utilizing multiple access interfaces executing on the remote server
US6735623B1 (en) * 2000-02-09 2004-05-11 Mitch Prust Method and system for accessing a remote storage area
EP1232266A2 (en) * 2000-03-20 2002-08-21 Curagen Corporation Polypeptides and nucleic acids encoding same
US6523036B1 (en) * 2000-08-01 2003-02-18 Dantz Development Corporation Internet database system
JP4087072B2 (ja) * 2001-01-25 2008-05-14 株式会社日立製作所 ストレージシステム及び仮想プライベートボリューム制御方法
US7330717B2 (en) * 2001-02-23 2008-02-12 Lucent Technologies Inc. Rule-based system and method for managing the provisioning of user applications on limited-resource and/or wireless devices
US20030028640A1 (en) * 2001-07-30 2003-02-06 Vishal Malik Peer-to-peer distributed mechanism
US7139280B2 (en) * 2001-07-30 2006-11-21 Yishay Mansour Buffer management policy for shared memory switches
US7127507B1 (en) * 2001-09-27 2006-10-24 Sprint Communications Company L.P. Method and apparatus for network-level monitoring of queue-based messaging systems
US7158964B2 (en) * 2001-12-12 2007-01-02 Intel Corporation Queue management
US7046687B1 (en) * 2002-01-16 2006-05-16 Tau Networks Configurable virtual output queues in a scalable switching system
JP4036661B2 (ja) * 2002-03-01 2008-01-23 日本電信電話株式会社 複製データ管理方法、ノード、プログラム、記録媒体
US7082455B2 (en) * 2002-04-23 2006-07-25 International Business Machines Corporation Method and apparatus of parameter passing of structured data for stored procedures in a content management system
US7386530B2 (en) * 2002-12-19 2008-06-10 Mathon Systems, Inc. System and method for managing content including addressability features
US20040215724A1 (en) * 2003-04-28 2004-10-28 Microsoft Corporation Email service error recovery
US7673000B2 (en) * 2003-04-28 2010-03-02 Microsoft Corporation Email service
US6973654B1 (en) * 2003-05-27 2005-12-06 Microsoft Corporation Systems and methods for the repartitioning of data
WO2005001621A2 (en) * 2003-06-04 2005-01-06 The Trustees Of The University Of Pennsylvania Ndma scalable archive hardware/software architecture for load balancing, independent processing, and querying of records
JP2005070965A (ja) * 2003-08-21 2005-03-17 Fujitsu Ltd 情報処理方法、情報処理システム及び情報処理装置
US7199725B2 (en) * 2003-11-06 2007-04-03 International Business Machines Corporation Radio frequency identification aiding the visually impaired with synchronous sound skins
US9075851B2 (en) * 2003-12-09 2015-07-07 Emc Corporation Method and apparatus for data retention in a storage system
US7484210B2 (en) * 2004-02-17 2009-01-27 Intel Corporation Apparatus and method for a generic, extensible and efficient data manager for virtual peripheral component interconnect devices (VPCIDs)
US7366735B2 (en) * 2004-04-09 2008-04-29 Oracle International Corporation Efficient extraction of XML content stored in a LOB
US8185663B2 (en) * 2004-05-11 2012-05-22 Hewlett-Packard Development Company, L.P. Mirroring storage interface
JP2005346426A (ja) * 2004-06-03 2005-12-15 Hitachi Ltd データ共有ディスク装置
US20060155781A1 (en) * 2005-01-10 2006-07-13 Microsoft Corporation Systems and methods for structuring distributed fault-tolerant systems
US7814129B2 (en) * 2005-03-11 2010-10-12 Ross Neil Williams Method and apparatus for storing data with reduced redundancy using data clusters
US7730101B2 (en) * 2005-06-10 2010-06-01 Microsoft Corporation Implementing a tree data storage structure in a distributed environment
WO2007002412A2 (en) * 2005-06-22 2007-01-04 Affiniti, Inc. Systems and methods for retrieving data
US8270410B2 (en) * 2005-08-04 2012-09-18 Microsoft Corporation Sampling techniques
US7730099B2 (en) * 2005-08-19 2010-06-01 Opnet Technologies, Inc. Storage and retrieval of richly typed hierarchical network models
US8429630B2 (en) * 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
US7558859B2 (en) * 2005-10-17 2009-07-07 Microsoft Corporation Peer-to-peer auction based data distribution
JP2007219609A (ja) * 2006-02-14 2007-08-30 Hitachi Ltd スナップショット管理装置及び方法
JP4240062B2 (ja) * 2006-05-31 2009-03-18 日本電気株式会社 計算機システムおよび性能計測方法ならびに管理サーバ装置
US7698258B2 (en) * 2006-06-02 2010-04-13 Microsoft Corporation Searchable storage system
US7441113B2 (en) * 2006-07-10 2008-10-21 Devicevm, Inc. Method and apparatus for virtualization of appliances
US20080021865A1 (en) * 2006-07-20 2008-01-24 International Business Machines Corporation Method, system, and computer program product for dynamically determining data placement
US7552130B2 (en) * 2006-10-17 2009-06-23 International Business Machines Corporation Optimal data storage and access for clustered data in a relational database
US7945786B2 (en) * 2007-03-30 2011-05-17 Intel Corporation Method and apparatus to re-create trust model after sleep state
US7730044B2 (en) * 2007-04-02 2010-06-01 Bmc Software, Inc. Log data store and assembler for large objects in database system
US8706914B2 (en) * 2007-04-23 2014-04-22 David D. Duchesneau Computing infrastructure
US7849354B2 (en) * 2007-06-12 2010-12-07 Microsoft Corporation Gracefully degradable versioned storage systems
US8239479B2 (en) * 2007-06-22 2012-08-07 Microsoft Corporation Server-assisted and peer-to-peer synchronization
JP2009134601A (ja) 2007-11-30 2009-06-18 Fujitsu Ltd ディスクアクセス方式切替装置
US7991740B2 (en) * 2008-03-04 2011-08-02 Apple Inc. Synchronization server process
WO2009123630A1 (en) * 2008-04-02 2009-10-08 Hewlett-Packard Development Company, L.P. Disk drive data encryption
CN101272221B (zh) * 2008-05-04 2010-08-18 中兴通讯股份有限公司 一种文件数据的传输、接收方法及装置
US20100142445A1 (en) * 2008-09-04 2010-06-10 Ludger Schlicht Environments for a mobile, broadband, routable internet
US8307177B2 (en) * 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US8495036B2 (en) * 2008-10-24 2013-07-23 Microsoft Corporation Blob manipulation in an integrated structured storage system
US8620884B2 (en) * 2008-10-24 2013-12-31 Microsoft Corporation Scalable blob storage integrated with scalable structured storage

Also Published As

Publication number Publication date
US8516137B2 (en) 2013-08-20
US9639299B2 (en) 2017-05-02
EP2502149B1 (en) 2021-02-17
US20110119668A1 (en) 2011-05-19
EP2502149A4 (en) 2014-06-11
EP2502149A2 (en) 2012-09-26
WO2011059811A3 (en) 2011-08-18
US20170235525A1 (en) 2017-08-17
KR101795087B1 (ko) 2017-11-07
JP2013511104A (ja) 2013-03-28
WO2011059811A2 (en) 2011-05-19
US20130305005A1 (en) 2013-11-14
CN102612686B (zh) 2015-04-01
CN102612686A (zh) 2012-07-25
HK1173527A1 (en) 2013-05-16
US10628086B2 (en) 2020-04-21
KR20120104209A (ko) 2012-09-20

Similar Documents

Publication Publication Date Title
JP5632010B2 (ja) ブロブとしての仮想ハードドライブ管理
US8484161B2 (en) Live file system migration
US9996465B2 (en) Cached volumes at storage gateways
US10630772B2 (en) Maintaining global namespace consistency for a distributed filesystem
US10291705B2 (en) Sending interim notifications for namespace operations for a distributed filesystem
US9990372B2 (en) Managing the level of consistency for a file in a distributed filesystem
US9274956B1 (en) Intelligent cache eviction at storage gateways
US10831721B2 (en) Virtualized data storage system architecture
US9268651B1 (en) Efficient recovery of storage gateway cached volumes
US9559889B1 (en) Cache population optimization for storage gateways
US20120084261A1 (en) Cloud-based disaster recovery of backup data and metadata
US9817587B1 (en) Memory-based on-demand data page generation
US20190132415A1 (en) Active data management by flexible routing system and methods of an accelerated application-oriented middleware layer
US11983438B2 (en) Technique for improving operations log indexing
US9934110B2 (en) Methods for detecting out-of-order sequencing during journal recovery and devices thereof
CN109254958A (zh) 分布式数据读写方法、设备及系统
US20200183912A1 (en) Checking data integrity in incremental journaling
US20230169093A1 (en) Fast database scaling utilizing a decoupled storage and compute architecture
WO2019143967A1 (en) Methods for automated artifact storage management and devices thereof
US11886439B1 (en) Asynchronous change data capture for direct external transmission
US11038960B1 (en) Stream-based shared storage system
US11341163B1 (en) Multi-level replication filtering for a distributed database
US11853319B1 (en) Caching updates appended to an immutable log for handling reads to the immutable log
JP6589500B2 (ja) 情報処理端末、共有ファイルシステム、共有ファイル方法および共有ファイルプログラム

Legal Events

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

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130712

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131008

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131008

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140813

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140909

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141008

R150 Certificate of patent or registration of utility model

Ref document number: 5632010

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250