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