(57)【要約】  実施例は、複数の仮想マシンの中でストレージを共有するための方法およびシステムを提供する。特定的に、一つまたはそれ以上の実施例は、一つの仮想ハードディスクを仮想マシンクラスタにおける種々の仮想マシンと共有することに関する。実施例においては、コマンドが仮想マシンからローカルサーバーへ送付される。パーサはファイルシステムプロトコルにわたりコマンドを伝送するために備える。コマンドはファイルシステムプロトコルを使用してリモートファイルサーバーへ送付される。ファイルサーバーによってコマンドが受信されると、ファイルサーバーは、コマンドに関する特徴を決定し、仮想共有ストレージ上でコマンドを実行するフォーマットへとコマンドを変換する。
2016524762.tif 000002
【特許請求の範囲】
【請求項１】
リモートコンピューティングデバイス上の共有ストレージにアクセスするための方法であって、
ファイルシステムプロトコルによって確立された通信セッションにわたり、コンピューティングデバイス上に在る仮想マシンからコマンドを受信するステップであり、前記コマンドは、前記ファイルシステムプロトコルに関連付けされた第１のフォーマットである、ステップと、
前記コマンドを受信すると、前記コマンドを前記第１のフォーマットから第２のフォーマットへ自動的に変換するステップであり、前記第２のフォーマットは、前記第１のフォーマットとは異なり、かつ、前記仮想マシンに関連付けされたフォーマットと同等である、ステップと、
前記コマンドを前記第２のフォーマットから第３のフォーマットへ自動的に変換するステップと、
前記第３のフォーマットに従って、前記共有ストレージ上で前記コマンドを実行するステップであり、前記第３のフォーマットは、前記第１のフォーマットおよび前記第２のフォーマットとは異なる、ステップと、
を含む、方法。
【請求項２】
前記方法は、さらに、
前記コマンドが前記第２のフォーマットである場合に、前記コマンドに関連付けされた一つまたはそれ以上の特性を決定するステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記第１のフォーマットは、前記共有ストレージを共有することができるようするための少なくとも一つのコマンドを含む、
請求項１に記載の方法。
【請求項４】
前記第１のフォーマットは、フィルタを使用して前記第２のフォーマットからコマンドをトンネル化する、変換されたファイルハンドルを含む、
請求項１に記載の方法。
【請求項５】
一つまたはそれ以上のプロセッサによって実行されると、リモートコンピューティングデバイス上の共有ストレージにアクセスする方法を実行する、コンピュータで実行可能なインストラクションをエンコードしているコンピュータで読取り可能なストレージ媒体であって、
前記方法は、
ファイルシステムプロトコルによって確立された通信セッションにわたり、コンピューティングデバイス上に在る仮想マシンからコマンドを受信するステップであり、前記コマンドは、前記ファイルシステムプロトコルに関連付けされた第１のフォーマットである、ステップと、
前記コマンドを受信すると、前記コマンドを前記第１のフォーマットから第２のフォーマットへ自動的に変換するステップであり、前記第２のフォーマットは、前記第１のフォーマットとは異なり、かつ、前記仮想マシンに関連付けされたフォーマットと同等である、ステップと、
前記コマンドを前記第２のフォーマットから第３のフォーマットへ自動的に変換するステップと、
前記第３のフォーマットに従って、前記共有ストレージ上で前記コマンドを実行するステップであり、前記第３のフォーマットは、前記第１のフォーマットおよび前記第２のフォーマットとは異なる、ステップと、
を含む、
コンピュータで読取り可能なストレージ媒体。
【請求項６】
前記コンピュータで読取り可能なストレージ媒体は、さらに、
前記コマンドが前記第２のフォーマットである場合に、前記コマンドに関連付けされた一つまたはそれ以上の特性を決定するためのインストラクション、を含む、
請求項５に記載のコンピュータで読取り可能なストレージ媒体。
【請求項７】
前記第１のフォーマットは、前記共有ストレージを共有することができるようするための少なくとも一つのコマンドを含む、
請求項５に記載のコンピュータで読取り可能なストレージ媒体。
【請求項８】
前記第１のフォーマットは、フィルタを使用して前記第２のフォーマットからコマンドをトンネル化する、変換されたファイルハンドルを含む、
請求項５に記載のコンピュータで読取り可能なストレージ媒体。
【請求項９】
一つまたはそれ以上のプロセッサと、
前記一つまたはそれ以上のプロセッサに接続されたメモリであり、前記メモリはインストラクションを保管するためのものである、メモリと、
を含む、システムであって、
前記インストラクションは、前記一つまたはそれ以上のプロセッサによって実行されると、リモートコンピューティングデバイス上の共有仮想ストレージにアクセスするための方法を実行し、
前記方法は、
ファイルシステムプロトコルによって確立された通信セッションにわたり、コンピューティングデバイス上に在る仮想マシンからコマンドを受信するステップであり、前記コマンドは、前記ファイルシステムプロトコルに関連付けされたトンネル化フォーマットである、ステップと、
前記コマンドを受信すると、前記コマンドを前記トンネル化フォーマットからブロックオペレーションフォーマットへ自動的に変換するステップであり、前記ブロックオペレーションフォーマットは、前記仮想マシンに関連付けされている、ステップと、
前記コマンドに関連付けされた一つまたはそれ以上の特性に従って、前記共有仮想ストレージ上で前記コマンドを実行するステップと、
を含む、
システム。
【請求項１０】
前記方法は、さらに、
前記共有仮想ストレージ上で前記コマンドを実行する以前に、前記コマンドを前記ブロックオペレーションフォーマットから第３のフォーマットへ変換するステップと、
前記第３のフォーマットに従って、前記共有ストレージ上で前記コマンドを実行するステップと、
を含む、
請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の仮想マシンにわたる仮想ハードディスクの共有に関する。
【背景技術】
【０００２】
高度に利用可能なコンピューティングの領域においてで、しばしばサーバーはクラスタ化される（ｃｌｕｓｔｅｒｅｄ）。つまり、それらは一緒にグループとして作業する。そうしたコンフィグレーションにおいては、一つのサーバーが故障した場合、他のサービスが作業を継続する。結果として、サーバーに接続された一つまたはそれ以上のクライアントは、サービスにおける中断をみることがないか、非常に最小限のインパクトを伴う中断をみるか、のいずれかである。これらサーバーのクラスタが仮想化される場合、それらは共有されるディスクをなお必要とする。現在の実施においては、クラスタの全てのメンバーに対して対称的に利用可能であるディスクドライブが使用されている。
【０００３】
実施例がなされてきたのは、それらの及び他の一般的な考察に関するものである。比較的に所定の問題が議論されてきたが、実施例は、背景技術において特定された所定の問題を解決することに限定されるものではないことも理解されるべきである。
【発明の概要】
【０００４】
この概要は、以下の詳細な説明部分においてさらに記述されるコンセプトの選択を簡素化された形式において紹介するために提供されるものである。この概要は、請求される技術的事項の主要な特徴または本質的な特徴を特定するように意図されたものではなく、また、請求される技術的事項の範囲を決定することにおける補助として使用されるように意図されたものでもない。
【０００５】
実施例は、複数の仮想マシンの間でストレージを共有するための方法およびシステムを提供する。特定的に、一つまたはそれ以上の実施例は、複数の仮想マシンから共有ストレージ（ｓｈａｒｅｄ  ｓｔｏｒａｇｅ）へコマンドを送付することに関する。実施例において、共有ストレージは、一つまたはそれ以上の仮想ハードディスクであってよい。ここにおいて提供される方法およびシステムは、ファイルシステムプロトコルによって確立された通信セッションにわたり、仮想マシンからファイルサーバーへコマンドを送付することを開示する。所定の実施例において、コマンドは、第１フォーマットにおいて仮想マシンから発行される。ファイルシステムプロトコルにわたりファイルサーバーと通信する以前に、コマンドは、第１フォーマットから第２フォーマットへと変換される。以降で説明されるように、第２フォーマットは、第１システムプロトコルによって定められるプリファレンス（ｐｒｅｆｅｒｅｎｃｅ）に基づくものである。コマンドが第１サーバーにおいて受信されると、フィルタが自動的にコマンドを第２フォーマットから第１フォーマットへ戻すように変換する。フィルタは、次に、コマンドを第１フォーマットから第３フォーマットへと変換するパーサ（ｐａｒｓｅｒ）へコマンドを渡す。パーサは、次に、共有ストレージにおいてコマンドを実行する。
【図面の簡単な説明】
【０００６】
限定的でなく、かつ、包括的でない実施例が、以下の図面に関して説明される。
【図１】図１は、本発明開示の一つまたはそれ以上の実施例に従って、複数の仮想マシン間でストレージを共有するためのシステムを示している。
【図２】図２は、本発明開示の一つまたはそれ以上の実施例に従って、複数の仮想マシン間でストレージを共有するための方法を示している。
【図３】図３は、本発明開示の一つまたはそれ以上の実施例に従って、共有ディスクにおいて実行される受信されたコマンドをフィルタリングするための方法を示している。
【図４】図４は、本発明開示の一つまたはそれ以上の実施例と共に使用され得るコンピューティングデバイスの物理的コンポーネントの例を示しているブロックダイヤグラムである。
【図５Ａ】図５Ａは、本発明開示の一つまたはそれ以上の実施例と共に使用され得るモバイルコンピューティングデバイスの簡素化されたブロックダイヤグラムである。
【図５Ｂ】図５Ｂは、本発明開示の一つまたはそれ以上の実施例と共に使用され得るモバイルコンピューティングデバイスの簡素化されたブロックダイヤグラムである。
【図６】図６は、本発明開示の一つまたはそれ以上の実施例と共に使用され得る分散コンピューティングシステムの簡素化されたブロックダイヤグラムである。
【発明を実施するための形態】
【０００７】
種々の実施例が、以下に添付の図面に関してより完全に説明される。図面は、実施例の一部を形成し、かつ、所定の典型的な実施例を示している。しかしながら、実施例は多くの異なる形式において実施され得るものであり、ここにおいて明らかにされる実施例に限定されるものと理解されるべきではない。むしろ、これらの実施例は、この発明開示が、徹底的に完成するように、かつ、当業者に対して実施の範囲を十分に伝達するように提供されるものである。実施例は、方法、システム、またはデバイスとして実践されてよい。従って、実施例は、ハードウェアの実施、完全なソフトウェアの実施、または、ソフトウェアとハードウェアの組合せ態様の実施、の形式をとり得る。以下の詳細な説明は、従って、限定する意味に理解されるべきではない。
【０００８】
以下に詳細に説明されるように、ここにおいて記述される方法およびシステムにより、複数の仮想マシンが、コンピューティング環境において、中央ストレージデバイスに対して、接続し、データを読出し、または、データを書込むことができる。図１は、本発明開示の一つまたはそれ以上の実施例に従って、複数の仮想マシン間でストレージを共有するためのシステム１００を示している。一つまたはそれ以上の実施例は、共有ストレージが、一つまたはそれ以上の仮想ディスクであり、一つの物理的ハードディスクにおける一つまたはそれ以上のロケーションであり、または、それらの組合せであってよいことを示している。
【０００９】
所定の実施例において、仮想マシンは、ブロックストレージプロトコルを使用して、データを保管し、かつ、アクセスするように構成されてよい。仮想マシンが、ブロックストレージから成る仮想ハードディスクへのアクセスを有し得るので、仮想マシンは、ブロックストレージオペレーションを実行することによって、その仮想ハードディスクとインタラクションするように構成され得る。これらのオペレーションは、読出しオペレーション、書込みオペレーション、ジオメトリ（ｇｅｏｍｅｔｒｙ）オペレーション、または、スモールコンピュータシステムインターフェイス（ＳＣＳＩ）又はインターネットスモールコンピュータシステムインターフェイス（ＩＳＣＳＩ）コマンド、であってよい。
【００１０】
しかしながら、ＳＡＮといった、複数のサービスによって共有されることができるブロックストレージデバイスに対する直接的なアクセスをそれぞれの仮想マシンに与える代わりに、ここにおいて開示される一つまたはそれ以上の実施例は、仮想マシンが、仮想ハードディスクファイルによって裏打ちされた仮想ハードディスクにアクセスし得ることを提供する。仮想ハードディスクが、他の仮想マシンによって同時に共有され得るといったやり方におけるものである。そうした実施例において、それぞれの仮想マシンは、ファイルによって裏打ちされた同一の仮想ディスクを観察し、かつ、インタラクションする。従って、それぞれのブロックストレージオペレーションは、仮想マシンをもたらしている物理的ホストから中央ストレージデバイスにおけるストレージへ、ネットワークにわたり送信される必要があり得る。しかしながら、これら同時の交替がお互いに干渉しないか、コンフリクト（ｃｏｎｆｌｉｃｔ）しないことを保証するために、実施例は、ブロックコマンドが、ファイルシステムまたはファイルシステムプロトコルにわたり、中央ストレージデバイスへ送信されることを提供する。特に、一つまたはそれ以上のブロックストレージコマンドは、ファイルシステムプロトコルを通じてブロックストレージコマンドが通信できるようにするために、トンネル化（ｔｕｎｎｅｌｉｎｇ）メカニズムを利用して、リモートファイルサーバーと通信する。
【００１１】
図１を参照すると、システム１００は、複数のノードを含んでよく、それぞれのノードは、仮想マシンクラスタを形成している一つまたはそれ以上の仮想マシンを有している。例えば、図１に示されるように、ノードＡ１１０は、仮想マシンＡ１１１と仮想マシンＢ１１２を有し、仮想マシンクラスタを形成している。同様に、ノードＢ１１５は、仮想マシンＣ１１６と仮想マシンＤ１１７を有し、仮想マシンクラスタを形成している。所定の実施例において、一つの仮想マシン（例えば、仮想マシンＡ１１１）は、アクティブに、コマンドを実行し、かつ、リモートファイルサーバー１２０へコマンドを送付してよく、一方で、他の仮想マシン（例えば、仮想マシンＢ１１２１）は、バックアップとして働いている。従って、仮想マシンＡ１１１が故障した場合、仮想マシンＡ１１１のワークロードが仮想マシンＢ１１２へフェイルオーバー（ｆａｉｌｏｖｅｒ）され、そして、仮想マシンＢ１１２が、必要なコマンドの実行、および、必要とされるようにリモートファイルサーバー１２０へのアクセスを開始するであろう。仮想マシンＢは、仮想マシンＡと同一のリモートファイルサーバーにアクセスできるので、ノードＡ１１０は、仮想マシンＡ１１１がリセットまたはリブートされるのを待つ必要がない。結果として、仮想マシンＡ１１１がオンラインに戻るのを待つために、仮にあったとしても、ほとんど時間およびリソースが費やされることがない。
【００１２】
図１は、２つのノード、仮想マシンＡ１１１と仮想マシンＢ１１２、を示しているが、システム１００は、より少ないか、または、追加のノードから成ってもよいことが理解される。加えて、図１は、２つの仮想マシンを実行しているノードＡ１１０とノードＢ１１５を示しているが、それぞれのノードは、実行されており、かつ、クラスタを形成している、より少ないか、または、追加の仮想マシンを有してもよいことが理解される。
【００１３】
所定の実施例において、ノードＡ１１０とノードＢ１１５は、サーバーコンピュータであってよい。他の実施例において、仮想マシンＡ１１１と仮想マシンＢ１１２は、クライアントコンピュータであってよい。例えば、パーソナルコンピュータ、タブレット、ラップトップ、スマートフォン、パーソナルデジタルアシスタント、等といったものである。そのように、所定の実施例において、ノードＡ１１０とノードＢ１１５のそれぞれは、ハイパーバイザ（ｈｙｐｅｒｖｉｓｏｒ）として構成されてよい。つまり、ノードＡ１１０とノードＢ１１５は、仮想マシンを作成し、かつ、モニタするために使用されるソフトウェア、ハードウェア、またはファームウェアを用いて構成されてよい。そのように、ノードＡ１１０とノードＢ１１５は、ホストマシンとして参照され得る。一方で、仮想マシンＡ１１１、仮想マシンＢ１１２、仮想マシンＣ１１６、および仮想マシンＤ１１７は、ゲスト仮想マシンと呼ばれる。
【００１４】
一つまたはそれ以上の実施例において、ノードＡ１１０とノードＢ１１５は、それぞれの仮想マシンのオペレーティングシステムに仮想オペレーティングプラットフォームを提供する。加えて、ノードＡ１１０とノードＢ１１５は、それぞれのオペレーティングシステムの実行を管理する。所定の実施例において、ノードＡ１１０とノードＢ１１５は、ワシントン州レッドモンドのＭＩＣＲＯＳＯＦＴ社によって頒布されるＨＹＰＥＲ−Ｖサーバーである。
【００１５】
検討されるように、本発明開示に係る実施例は、仮想マシンに対して仮想ハードディスクを公開する方法、および、仮想マシンによって書込まれたデータを読出し、かつ、仮想マシンにわたり共有され得る仮想ハードディスクに保管する方法を説明する。例として、仮想マシン、例えば仮想マシンＡ１１１が、ディスクにおけるブロックを要求する場合に、データは、仮想ハードディスクファイルからの対応するブロックから読み出されて、仮想マシンに対してデータが戻される。同様に、仮想マシンＤ１１７がブロック上のデータ書込みをリクエストする場合、データが、仮想ハードディスクファイルへ送信される。説明されるように、仮想ハードディスクが共有されているときは、物理的ホスト上の仮想ディスクパーサを使用して仮想ハードディスクを設置する代わりに、リモートファイルシステムにおいて仮想ハードディスクに対するファイルハンドルがオープンされる。このアプローチの一つの利点は、仮想マシンアドミニストレータが、他のあらゆるファイルのように仮想ディスクを取扱うことができることである。ファイル履歴を伴い、監査ログ、ファイルベースのバックアップ、等と共にアクセスコントロールリストとして表現される許可（ｐｅｒｍｉｓｓｉｏｎ）を伴うものである。
【００１６】
加えて、リモートファイルシステムは、リモートファイルシステム上の仮想ハードディスクに対してファイルベースのプロトコルよりむしろブロックプロトコルを使用する能力を提供するように構成されている。ブロックコマンドは、（非共有の仮想ディスクシナリオにおいて一般的に発生するような）物理的ホスト上でインタープリート（ｉｎｔｅｒｐｒｅｔｅ）されるコマンドなしに、ファイルハンドルを通じて仮想マシンからリモートファイルシステムへ渡される。
【００１７】
実施例は、また、共有仮想ハードディスクにおいて保管されている仮想ディスクをリモートファイルシステム上に設置すること、および、仮想ディスクへブロックコマンドを渡すこと、を開示する。コマンドが、例えばリモートファイルシステムに置かれた、仮想ハードディスクに到達したとき、仮想ハードディスクパーサは、ブロックコマンドをファイルベースのオペレーティングシステムへ変換する。それにより、仮想ハードディスクからデータを読出し、または、書込むことができる。所定の実施例において、フィルタは、どの仮想マシンが共有仮想ハードディスクの領域に対して書込む権限を有するかに関する情報をトラックする。これらの権限は、パーシステントリザベーションによって定められてよい。例えば、ＳＣＳＩ−３Ｐｅｒｓｉｓｔｅｎｔ  Ｒｅｓｅｒｖａｔｉｏｎによる、といったものである。所定の実施例において、仮想マシンが一つのホストから別のホストへ移動するときに、これらの権限（つまり、リザベーション）は、一緒に移動する。
【００１８】
図１に戻って参照すると、一つまたはそれ以上の実施例は、ノードＡ１１０とノードＢ１１５のそれぞれが、そこで実行され、仮想マシンクラスタを形成している複数の仮想マシンを有することを提供する。所定の実施例において、それぞれの仮想マシンと仮想マシンクラスタはリモートファイルサーバー１２０上に保管された中央ストレージデバイス１２３にアクセスする。システム１００におけるそれぞれの仮想マシンがリモートファイルサーバー１２０上の中央ストレージデバイス１２３に対するアクセスを有するので、それぞれの仮想マシンは、ローカルハードディスクに対するアクセスを与えられなくてよい。しかしながら、いくつかの実施例において、仮想マシンクラスタにおける一つまたはそれ以上の仮想マシンは、ローカルハードディスクに対するアクセスが提供され、または、与えられてよい。リモートファイルサーバー１２０上に保管された中央ストレージデバイス１２３に対するアクセスと同様にである。
【００１９】
所定の実施例において、中央ストレージデバイス１２３は、複数のストレージデバイスで構成されてよい。所定の実施例において、中央ストレージデバイス１２３は、物理的ストレージ、仮想ストレージ、または、それらの組合せで構成されてよい。中央ストレージデバイス１２３が仮想ストレージで構成されている実施において、仮想ストレージは、一つまたはそれ以上の物理的ディスクによって裏打ちされ（ｂａｃｋｅｄ  ｂｙ）ている。
【００２０】
図１に示されるように、リモートファイルサーバー１２０は、また、ノードＡ１１０とノードＢ１１５から受け取る一つまたはそれ以上のコマンドを受信し、アンパック（ｕｎｐａｃｋ）し、そして、ソートするように構成されているフィルタ１２１を含んでよい。実施例において、フィルタは、ファイルサーバー１２０の一つのコンポーネントとして示されているが、フィルタ１２１は、ファイルサーバーの機能の中に統合されてよいことが理解される。従って、ファイルサーバー１２０自身は、システム１００の実際に一部であるフィルタ１２１なしに、フィルタ１２１に関して以下に説明する機能を実行するであろう。
【００２１】
所定の実施例において、コマンドは、ファイルシステムプロトコルによって確立されたファイルシステムセッション１３０上でノードＡ１０１とノードＢ１１５から通信される。コマンドがアンパックされて保管されるとき、フィルタ１２１は、仮想ハードディスク（Ｖｉｒｔｕａｌ  Ｈａｒｄ  Ｄｉｓｋ（ＶＨＤ））パーサ１２２へ送信される。ＶＨＤパーサは、コマンドを、ブロックコマンドから、中央ストレージデバイス１２３上で実行されるファイルベースのオペレーティングシステムへ変換するように構成されている。
【００２２】
所定の実施例において、仮想マシン、例えば、ノードＡ１１０上の仮想マシンＡ１１１といったものは、コマンドを発行してよい。上述のように、コマンドは、ブロックストレージオペレーションフォーマットにおけるものであってよい。例えば、ＳＣＳＩフォーマット、ＩＳＣＳＩフォーマット、等といったものである。特定のフォーマットが与えられているが、仮想マシンから発行されるコマンドは、こうした特定的にリストされたものと異なるフォーマットにおけるものであってよいことが理解される。
【００２３】
一旦、仮想マシンＡ１１０からコマンドが発行されると、仮想マシンＡ、または、そのホスト、ノードＡ１１０のいずれかによって、ローカルパーサ（例えば、パーサプロキシＡ１１３）へ、コマンドが渡される。図１に示されるように、システム１００におけるそれぞれのノードは、ローカルパーサを有している。例えば、ノードＡ１１０はパーサプロキシＡ１１３を有し、そして、ノードＢ１１５はパーサプロキシＢ１１８を有している。図１は、それぞれの仮想マシンクラスタが一つのローカルパーサを有することを示しているが、異なるノード上の仮想マシンが、一つの仮想マシンクラスタを構成し得ることが理解される。
【００２４】
例えば、仮想マシンＡ１１１、仮想マシンＢ１１２、仮想マシンＣ１１６、および仮想マシンＤ１１７は、それらが２つの異なるノードによってホストされているにもかかわらず、単一の仮想マシンを形成するように構成され得る。そうした事例において、仮想マシンクラスタは、単一のパーサ（例えば、パーサプロキシＡ１１３）を有し得る。パーサは、仮想マシンそれぞれが中央ストレージデバイス１２３へのアクセスを試みるときに、仮想マシンクラスタにおけるそれぞれの仮想マシンによってアクセス可能なものである。代替的または追加的に、仮想マシンクラスタが、同一のホスト上または異なるホスト上いずれかの仮想マシンで構成されていても、いまだにそれぞれのホストは、共有されていない仮想ディスクに対するローカルパーサを有し得る。共有ディスクに対するパーサが、ノードＡ１１０及び/又はノードＢ１１５上に配置されるだろうことも可能である。ホストが、中央ストレージデバイス１２３へのアクセスを調整できるようにである。
【００２５】
図１に戻り、かつ、上記の実施例を参照すると、一旦、ノードＡ１１０によってコマンドが発行されると、コマンドは、パーサプロキシＡ１１３へ通信される。パーサプロキシＡ１１３は、ノードＡ１１０のレイアウトを決定するためにコマンドを分析する。加えて、パーサプロキシＡ１１３は、コマンドを、ブロックストレージオペレーションフォーマットから、ファイルシステムプロトコルによって確立されたファイルシステムセッション１３０にわたりノードＡ１１０からリモートファイルサーバー１２０へ送信されることが可能であるフォーマットへと変換する。所定の実施例において、ファイルシステムプロトコルは、ワシントン州レッドモンドのＭＩＣＲＯＳＯＦＴ社によるＳｅｒｖｅｒ  Ｍｅｓｓａｇｅ  Ｂｌｏｃｋ  Ｐｒｏｔｏｃｏｌ（ＳＭＢ）、Ｎｅｔｏｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ  Ｐｒｏｔｏｃｏｌ（ＮＦＳ）プロトコル、または、ローカルプロトコルのうちの一つのバージョンであってよい。
【００２６】
例えば、ノードＡ１１０は、ブロックストレージオペレーションを発行し、そして、パーサプロキシＡ１１３へブロックストレージオペレーションを通信してよい。ブロックストレージオペレーションを受信すると、パーサプロキシＡ１１３は、ブロックストレージコマンドを自動的にフォーマットする。ブロックストレージオペレーションが、ファイルシステムプロトコル（例えば、ＳＭＢプロトコルの一つのバージョン）によって確立されたファイルシステムセッション１３０にわたり、リモートファイルサーバー１２０へ送信され得るような方法におけるものである。所定の実施例において、パーサプロキシＡ１１３は、ブロックストレージコマンドが、ファイルシステムセッション１３０を通じてトンネル化され得るような方法においてブロックストレージコマンドをフォーマットする。
【００２７】
ＳＭＢプロトコルの一つのバージョンが使用される実施例においては、パーサプロキシＡ１１３がブロックストレージオペレーションをリモートファイルサーバー１２０へ送付する以前のあらゆる時点で、ＳＭＢセッションが確立され得る。例として、ノードＡ１１０とリモートファイルサーバー１２０との間でのＳＭＢセッションの確立の最中に、ノードＡ１１０とリモートファイルサーバー１２０の両方がＳＭＢセッションの中で複数の接続をサポートすることを示すためのネゴシエーション（ｎｇｏｔｉａｔｉｏｎ）が発生し得る。このことは、ＳＭＢプロトコルのバージョンのネゴシエーションを含んでよい。加えて、ノードＡ１１０とリモートファイルサーバー１２０は、また、ノードＡ１１０とリモートファイルサーバー１２０との間の種々のインターフェイスおよび接続に関する情報を決定することもできる。これは、接続またはチャンネルのタイプ、および、接続またはチャンネルのスピードを含んでいる。さらに、ノードＡ１１０とリモートファイルサーバー１２０のいずれも、トップインターフェイスを決定するために、タイプとスピードによって、インターフェイスおよび接続をソートすることができる。従って、ノードＡ１１０とリモートファイルサーバー１２０は、さらに、データを転送するために追加のチャンネルが確立されたときに、どのインターフェイスまたはチャンネルが使用されるべきかを決定することができる。
【００２８】
より特定的には、ノードＡ１１０とリモートファイルサーバー１２０との間で、一つまたはそれ以上の接続トランスポート（ｔｒａｎｓｐｏｒｔ）が利用可能であり得る。例えば、ノードＡ１１０とリモートファイルサーバー１２０は、イーサネット（登録商標）およびＷｉ−Ｆｉといった、種々のトランスポートによって接続されてよい。マルチネットワークインターフェイスカード（ＮＩＣ）といった、同一のトランスポートの冗長な接続も同様である。加えて、いくつかの接続は、別の接続にわたる一つの接続トランスポートのスピードに影響するリモートダイレクトメモリアクセス（ＲＤＭＡ）といった機能をサポートし得る。
【００２９】
図１に戻って参照すると、一旦、ブロックストレージオペレーションがファイルシステムセッション１３０を通じてトンネル化されると、ブロックストレージオペレーションは、リモートファイルサーバー１２０上のフィルタ１２１において受信される。所定の実施例において、フィルタ１２１は、「トンネル化された（”ｔｕｎｎｅｌｅｄ”）」ブロックストレージオペレーションをアンパックして、トンネル化されたブロックストレージオペレーションをオリジナルのブロックストレージオペレーションフォーマットへと戻すよう変換するように構成されている。所定の実施例において、フィルタ１２１は、ブロックストレージコマンドが、読出しコマンド、書込みコマンド、オープンコマンド、またはクローズコマンドのどれかを決定するように構成されている。加えて、フィルタ１２１は、コマンドが、リモートファイルサーバー１２０の物理的ファイル上か、または、ファイルによって裏打ちされた仮想ハードディスク（例として、例えばニューテクノロジーファイルシステム（ＮＴＦＳ）フォーマットに従って、フォーマットされたディスク）上で実行されるべきかを決定するように構成されている。
【００３０】
一旦、フィルタ１２１がブロックストレージオペレーションをオリジナルのフォーマットへと回復すると、フィルタ１２１は、ブロックストレージオペレーションをＶＨＤフィルタ１２２へ渡す。ＶＨＤフィルタ１２２は、次に、ブロックストレージオペレーションを、異なるフォーマットへとフォーマットし得る。例えば、ファイルシステムオペレータフォーマットといったもので、中央ストレージデバイス１２３において実行され得るものである。一旦、ブロックストレージオペレーションがファイルシステムオペレータフォーマットへと変換されると、リクエストされたオペレーションが中央ストレージデバイス１２において実行される。
【００３１】
フィルタ１２１に戻って参照すると、所定の実施例において、フィルタ１２１は、また、受信したブロックストレージオペレーション（例えば、読出し、書込み、オープン、クローズ、等）に応じて、追加の情報をＶＨＤパーサへ渡してよい。例えば、受信したブロックストレージオペレーションが読出しコマンドである場合、フィルタ１２１は、また、以下に関する情報を送付してよい。（ｉ）共有仮想ディスクファイルのアイデンティティ（ｉｄｅｎｔｉｔｙ）、ハンドル（ｈａｎｄｌｅ）の形式のもの、（ｉｉ）データを読出すための仮想ディスクファイルの開始からのオフセット、バイト（ｂｙｔｅ）でのもの、（ｉｉｉ）読出すバイト数量、（ｉｖ）読出すべきバイトの最少数量、および（ｖ）読出されたデータを受け取るためのバッファー、である。同様に、受信したブロックストレージオペレーションが書込みコマンドである場合、フィルタ１２１は、また、以下を規定してよい。（ｉ）共有仮想ディスクファイルのアイデンティティ（ｉｄｅｎｔｉｔｙ）、ハンドル（ｈａｎｄｌｅ）の形式のもの、（ｉｉ）データが書込まれるべき仮想ディスクファイルの開始からのオフセット、バイト（ｂｙｔｅ）でのもの、（ｉｉｉ）書込むバイト数量、および（ｉｖ）書込まれるバイトを含んでいるバッファー、である。
【００３２】
図２は、本発明開示の一つまたはそれ以上の実施例に従って、複数の仮想マシン間でストレージを共有するための方法２００を示している。所定の実施例において、方法２００は、例えば、システム１００（図１）といった、システムの異なるコンポーネントを通じてコマンドが渡されると、移動的に、及び/又は、オンザフライ（ｏｎ  ｔｈｅ  ｆｌｙ）で実行され得る。例えば、ノードＡ１１０の仮想マシン１１は、コマンド（例えば、ブロックストレージオペレーション）を発行してよく、以下に説明されるオペレーションが、システム１００を通じて移動する発行されたコマンドとして実施され得る。
【００３３】
方法２００は、パーサ（例えば、パーサプロキシＡ１１３（図１））が、一つまたはそれ以上の仮想マシンによって発行されたコマンドを受信するときに始まる。所定の実施例において、仮想マシンは、ハイパーバイザ（ｈｙｐｅｒｖｉｓｏｒ）として構成されたホストコンピュータによってホストされている仮想マシンクラスタの一部分であってよい。所定の実施例において、コマンドは、例えば、ブロックストレージオペレーションといった、第１のフォーマットにおけるものでよい。所定の実施例において、ブロックストレージオペレーションフォーマットは、読出しコマンド、書込みコマンド、オープンコマンド、クローズコマンドを含んでよい。ＳＣＳＩまたはＩＳＣＳＩコマンドも同様である。
【００３４】
一旦、パーサがコマンドを受信すると、パーサは、コマンドのフォーマットを、第１のフォーマットから第２のフォーマットへと変換する２２０。所定の実施例において、第２のフォーマットは、例えば、ＳＣＳＩ−３Ｐｅｒｓｉｓｔｅｎｔ  Ｒｅｓｅｒｖａｔｉｏｎコマンドといった、ディスク共有ができるようにするコマンドを含んでいる。実施例において、ＳＣＳＩ−３Ｐｅｒｓｉｓｔｅｎｔ  Ｒｅｓｅｒｖａｔｉｏｎは、例えば、仮想ハードディスクファイルといった中に、耐久的に保管されてよい。加えて、第２のフォーマットは、コマンドを送付した仮想マシンに関する識別子（ｉｄｅｎｔｉｆｉｅｒ）を含んでよい。従って、仮想マシンのパーシステントリザベーション（ｐｅｒｓｉｓｔｅｎｔ  ｒｅｓｅｒｖａｔｉｏｎ）は、仮想マシンが一つの物理的ホストから別の物理的ホストへ移動された場合でさえ、維持され得る。所定の実施例において、変換プロセスは、例えば、ＳＭＢプロトコル（例として、ＳＭＢファイルハンドル及び/又はＳＭＢ  ＦＳＣＴＬコードを使用しているもの）の一つのバージョンといった、ファイルシステムプロトコルにわたり、パーサがコマンドを送付できるようにするために発生する。
【００３５】
所定の実施例においては、ファイルシステムプロトコルが第１のフォーマットを有するデータを伝送しないので、第１のフォーマットから第２のフォーマットへの変換が発生し得る。他の実施例においては、第１のフォーマットと第２のフォーマットとの間のフォーマット変換が、ホストコンピュータとリモートファイルサーバーとの間でコマンドが通信できるようにするために発生する。ファイルシステムプロトコルの一つまたはそれ以上の機能を利用する方法におけるものである。
【００３６】
例えば、ファイルシステムプロトコルがＳＭＢプロトコルの一つのバージョンである実施において、コマンドは、ＳＭＢプロトコルの特性を使用して、リモートファイルサーバー（例えば、リモートファイルサーバー１２０（図１））へ通信され得る。特性は、自動ディスカバリ、認証、承諾、バンド幅集約、ＲＤＭＡおよびＴＣＰのサポート、ＲＤＭＡにわたるゼロコピー、等を含んでいる。所定の実施例において、第１のフォーマットから第２のフォーマットへの変換コマンドは、リモートサーバーへのファイルシステムプロトコルセッションを通じてコマンドがトンネル化できるように、トンネル化プロセスを用いて、コマンドを準備することを含んでいる。
【００３７】
一旦、第１のフォーマットから第２のフォーマットへコマンドが変換されると、フローは、次に、オペレーション２３０へ進む。そこで、コマンドは、ファイルシステムセッションにわたり、リモートファイルサーバーへ通信される。上述のように、コマンドは、ファイルシステムプロトコルを通じてブロックコマンドをトンネル化することにより、ファイルシステムプロトコルセッションにわたりリモートファイルサーバーへ通信され得る。
【００３８】
一旦、コマンドが、リモートファイルサーバーによって受信されると、リモートファイルサーバー上のフィルタは、コマンドを第２のフォーマットから第１のフォーマットへと戻すよう変換する２４０。例えば、フィルタ（フィルタ１２１（図１））は、フォーマットされたコマンドを受信し、かつ、フォーマットされたコマンドをアンパック及び/又はデコードするように、構成されてよい。アンパック及び/又はデコードが終了すると、コマンドは、仮想マシンによって発行されたときにそうであったものと同一のフォーマットになる。例えば、コマンドがＳＭＢプロトコルを通じてトンネル化されたＳＣＳＩコマンドである場合、フィルタは、コマンドの受信の際にＳＣＳＩコマンドを抽出するであろう。
【００３９】
フローは、次に、オペレーション２５０へ進む。そこで、コマンドは、フィルタからパーサ（例えば、ＶＨＤパーサ１２２（図１））へ渡され、そして、第１のフォーマットから第３のフォーマットへ変換される。所定の実施例において、第１のフォーマット、第２のフォーマット、および第３のフォーマットは、全て異なるフォーマットである。説明されたように、所定の実施例において、第１のフォーマットはＳＣＳＩコマンドであってよく、第２のフォーマットはトンネル化フォーマットであってよい。同様に、第３のフォーマットはＩ／Ｏリクエストパケット（ＩＲＰ）であってよい。所定の実施例において、コマンドは、より高くより効率的なレートにおいてコマンドを処理するために、第３のフォーマットへ変換されてよい。
【００４０】
データが第３のフォーマットへと変換されるとき、オペレーション２６０は、コマンドが、ストレージデバイス（例えば、中央ストレージデバイス１２３（図１））上でパーサによって実行されることを提供する。例えば、ＶＨＤパーサ１２２は、コマンドを読出し、かつ、ファイルサーバーにおいて保管された仮想ハードディスク上のコマンドによって、明らかにされたＩ／Ｏオペレーションを実行する。
【００４１】
図３は、本発明開示の一つまたはそれ以上の実施例に従って、受信されたコマンドをフィルタリングするための方法３００を示している。所定の実施例において、例えば、フィルタ１２１（図１）といったフィルタは、ファイルシステムプロトコルからコマンド（例えば、ブロックストレージオペレーション）が受信されたときに、方法３００を実行する。説明されたように、コマンドは、トンネル化メカニズムを介してファイルシステムプロトコルを通じて伝送されてよい。結果として、フィルタは、受信されたコマンドをアンパックし、かつ、コマンドに関する一つまたはそれ以上の特性を決定するように構成されてよい。
【００４２】
方法３００は、リモートファイルサーバー（例えば、リモートファイルサーバー１２０（図１））におけるフィルタが、ファイルシステムプロトコルによって確立されたファイルシステムセッション（例えば、ファイルシステムセッション１３０）からコマンドを受信するときに始まる。所定の実施例において、ファイルシステムプロトコルは、ＳＭＢプロトコルの一つのバージョンであってよい。他の実施例において、ファイルシステムプロトコルは、ＮＦＳプロトコル、または、ローカルに知られたプロトコルであってよい。
【００４３】
一旦受信されると、コマンドは、フィルタによってデコードされる３２０。所定の実施例において、デコードプロセスは、受信されたコマンドが、それが仮想マシンから最初に発行されたのと同一のフォーマットであるように、ファイルシステムプロトコルを介して受信されたデータからの一つまたはそれ以上のコマンドをアンパックすること、及び/又は、抽出することを含んでいる。例えば、コマンドが、ファイルシステムプロトコル伝送メカニズムの中でトンネル化されたＳＣＳＩコマンドである場合に、オペレーション３２９は、コマンドがアンパックされ、そして、オリジナル状態（例えば、ＳＣＳＩコマンド）へ回復される。
【００４４】
フローは、次に、オペレーション３３０へ進む。そこで、フィルタは、デコードされたコマンドに関する一つまたはそれ以上の特性を決定する。所定の実施例において、ファイルシステムプロトコル、またはパーサ（例えば、図１のパーサ１１３）は、関連するオペレーションが仮想ハードディスク上または物理的ハードディスク上のいずれで発生するかを、リモートファイルサーバー上に在るフィルタが決定することができるような方法において、コマンドをマーク付けしてよい。
【００４５】
オペレーションが仮想ハードディスク上で実行されるべきであることが決定される場合、フィルタは、また、仮想ハードディスクに関連するハンドル、仮想ハードディスクへのオフセット、等を決定してよい。コマンドがオープンコマンドである実施において、フィルタは、仮想ハードディスクが、パーシステントリザベーション（例えば、仮想ハードディスクまたは仮想ハードディスクが在るファイルサーバーが、オフラインまたはリブートされる場合でさえ仮想ハードディスクをリザーブすること）によってサーフェスされること（例えば、どのパスが、物理的またはリモートのいずれでも、仮想ハードディスクに対して接続される必要があるか）、かつ、ハンドルを使用して将来のコマンドが仮想ハードディスクを参照できるようにハンドルが与えられること、を決定してよい。
【００４６】
一旦、コマンドがオリジナルのフォーマットに戻るよう変換され、かつ、コマンドに関する一つまたはそれ以上の特性が発見されると、コマンドは、ファイルＩ／Ｏオペレーションのためにパーサに対して通信される。上述のように、パーサは、コマンドの受信の際に、自動的にコマンドを第３のフォーマットへと変換するように構成されてよい。所定の実施例において、第３のフォーマットは、ＩＲＰフォーマットであってよい。従って、例えば、パーサは、ＳＣＳＩコマンドフォーマットをＩＲＰフォーマットへ変換してよい。一旦変換されると、パーサは、中央ストレージデバイスにおいてリクエストオペレーションを実行する。
【００４７】
ここにおいて説明される実施例および機能性は、限定することなく、以下のものを含んでいる多数のコンピューティングシステムを介して動作し得る。デスクトップコンピュータシステム、有線または無線コンピューティングシステム、モバイルコンピューティングシステム（例えば、携帯電話、ネットブック、タブレットまたはスレートタイプのコンピュータ、ノートブックコンピュータ、およびラップトップコンピュータ）、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家電、マイクロコンピュータ、およびメインフレームコンピュータ、である。
【００４８】
加えて、ここにおいて説明される実施例と機能性は、分散システム（例えば、クラウドベースのコンピューティングシステム）上で動作し得る。そこでは、インターネットまたはイントラネットといった、分散コンピューティングネットワークにわたり、アプリケーション機能性、メモリ、データストレージと検索、および種々の処理機能がリモートでお互いに動作され得る。ユーザインターフェイスと種々のタイプの情報は、オンボードのコンピューティングデバイスディスプレイを介して、または、一つまたはそれ以上のコンピューティングデバイスと関連するリモートのディスプレイユニットを介して表示され得る。例えば、ユーザインターフェイスと種々のタイプの情報は、ユーザインターフェイスと種々のタイプの情報が投射される壁の表面上に表示され、相互作用されてよい。本発明開示の実施例が実施され得る多数のコンピューティングシステムとのインタラクションは、キーストローク入力、タッチスクリーン入力、音声または他の音響入力、ジェスチャ入力、等であってよい。ジェスチャ入力では、関連するコンピューティングデバイスは、コンピューティングデバイスの機能性をコントロールするためにユーザのジェスチャをキャプチャして翻訳するための検出機能性（例えば、カメラ）を備えている。
【００４９】
図４−６および関連する記載は、本発明の実施例が実施され得る種々の動作環境に係る説明を提供する。しかしながら、図４−６に関して図示され、説明されるデバイスおよびシステムは、例示と説明目的のためのものであり、ここにおいて説明される実施例の実施のために利用され得る膨大な数のコンピューティングデバイス構成を限定するものではない。
【００５０】
図４は、本発明開示の実施例と共に実施され得るコンピューティングデバイス１１００の物理的コンポーネント（例えば、ハードウェア）を示しているブロックダイヤグラムである。以下に説明されるコンピューティングデバイスは、ノードＡ１１０とノードＢ１１５を含んでいる上記のコンピューティングデバイスに対して適切なものであり得る。基本的構成において、コンピューティングデバイス１１００は、少なくとも一つの処理装置４０２とシステムメモリ４０４を含んでよい。コンピューティングデバイスの構成およびタイプに応じて、システムメモリ４０４は、これらに限定されるわけではないが、揮発性ストレージ（例えば、ランダムアクセスメモリ）、不揮発性ストレージ（例えば、読出し専用メモリ）、フラッシュメモリ、または、そうしたメモリのあらゆる組合せ、を含んでよい。システムメモリ４０４は、オペレーティングシステム４０５およびソフトウェアアプリケーション４２０を実行するのに適切な一つまたはそれ以上のプログラムモジュール４０６を含んでよい。オペレーティングシステム４０５は、例えば、コンピューティングデバイス１１００のオペレーションをコントロールするのに適切なものであり得る。さらに、本発明開示の実施例は、グラフィクスライブラリ、他のオペレーティングシステム、または、あらゆる他のアプリケーションプログラムと共同して実施されてよい。あらゆる特定のアプリケーションまたはシステムに限定されるものではない。この基本的構成は、破線４０８の中のそうしたコンポーネントによって図４において図示されている。コンピューティングデバイス１１００は、追加の特性または機能性を有し得る。例えば、コンピューティングデバイス１１００は、また、例えば、磁気ディスク、光ディスク、またはテープといった、追加のデータストレージデバイス（リムーバブル及び/又は非リムーバブルなもの）を含んでよい。そうした追加のストレージは、リムーバブルストレージデバイス４０９と非リムーバブルストレージデバイス４１０によって図４において図示されている。
【００５１】
上述のように、多数のプログラムモジュールとデータファイルが、システムメモリ４０４の中に保管され得る。処理装置４０２において実行しながら、プログラムモジュール４０６は、プロセスを実行し得る。プロセスは、これらに限定されるわけではないが、図２−３において説明された方法２００および３００に係る一つまたはそれ以上のステージを含んでいる。本発明開示の実施例に従って使用され得る他のプログラムモジュールは、電子メールとコンタクトアプリケーション、ワードプロセッサアプリケーション、スプレッドシートアプリケーション、データベースアプリケーション、スライドプレゼンテーションアプリケーション、製図、または、コンピュータ支援アプリケーションプログラム、等を含んでよい。
【００５２】
さらに、本発明開示の実施例は、専用の電子エレメント、ロジックゲートを含んでいるパックまたは統合された電子チップ、マイクロプロセッサを利用している回路、を含んでいる電気回路において、または、電子的エレメントまたはマイクロプロセッサを含んでいる単一のチップにおいて実施され得る。例えば、本発明開示の実施例は、システムオンチップ（ＳＯＣ）を介して実施されてよい。ＳＯＣには、図４において図示されたそれぞれ又は多くのコンポーネントが単一つの集積回路上に統合され得る。そうしたＳＯＣデバイスは、一つまたはそれ以上の処理装置、グラフィクス装置、通信装置、システム仮想化装置、および種々のアプリケーション機能性を含んでよく、それらの全ては、単一の集積回路としてチップサブストレート上に統合（または、「焼き付け（”ｂｕｒｎｅｄ”）」）されている。ＳＯＣを介したオペレーションの場合に、ここにおいて説明された機能性は、単一の集積回路（チップ）上のコンピューティングデバイス１１００の他のコンポーネントと統合されたアプリケーション特定ロジックを介して動作され得る。本発明開示の実施例は、また、ロジカルなオペレーションを実行することができる他の技術を使用して実施され得る。例えば、ＡＮＤ、ＯＲ、およびＮＯＴといったものであり、これらに限定されるわけではないが、機械、光学、流体、および量子技術を含んでいる。加えて、本発明開示の実施例は、汎用コンピュータの中で、もしくは、あらゆる他の回路またはシステムにおいて実施され得る。
【００５３】
コンピューティングデバイス１１００は、また、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス、等といった、一つまたはそれ以上の入力デバイス４１２を有してよい。ディスプレイ、スピーカー、プリンター、等といった、出力デバイス４１４も、また、含まれてよい。上記のデバイスは例示であり、他の物が使用されてよい。コンピューティングデバイス１０４は、他のコンピューティングデバイス４１８と通信できるようにする一つまたはそれ以上の通信接続４１６を含んでよい。適切な通信接続４１６の実施例は、これらに限定されるわけではないが、ＲＦ送信器、受信器、及び/又は、トランシーバ回路、ユニバーサルシリアルバス（ＵＳＢ）、パラレル及び/又はシリアルポート、を含んでいる。
【００５４】
ここにおいて使用される用語であるコンピュータで読取り可能な媒体は、コンピュータストレージ媒体を含んでよい。コンピュータストレージ媒体は、情報ストレージのためのアルゴリズム方法または技術において実施される揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体を含んでよい。コンピュータで読取り可能なインストラクション、データ構造、またはプログラムモジュール、といったものである。システムメモリ４０４、リムーバブルストレージデバイス４０９、および非リムーバブルストレージデバイス４１０は、全てがコンピュータストレージ媒体の実施例である（つまり、メモリストレージ）。コンピュータストレージは、以下のものを含んでよい。ＲＡＭ、ＲＯＭ、電気的に消去可能な読出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多目的ディスク（ＤＶＤ）又は他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又は他の磁気ストレージデバイス、または、情報を保管するために使用され、かつ、コンピューティングデバイス１１００によってアクセスされ得るあらゆる他の工業製品、である。あらゆるそうしたコンピュータストレージ媒体は、コンピューティングデバイス１１００の一部であってよい。コンピュータストレージ媒体は、搬送波、または、他のプロパゲーション（ｐｒｏｐａｇａｔｅｄ）またはモジュレーションされた（ｍｏｊｕｌａｔｅｄ）データ信号を含まない。
【００５５】
通信媒体は、コンピュータで読取り可能なインストラクション、データ構造、プログラムモジュール、または、搬送波又は他の伝送メカニズムといった、モジュレーションされたデータ信号における他のデータによって具現化されてよく、そして、あらゆる情報伝達媒体を含んでいる。用語「モジュレーションされたデータ信号（”ｍｏｄｕｌａｔｅｄ  ｄａｔａ  ｓｉｇｎａｌ”）」は、一つまたはそれ以上の特性セットを有し、または、信号の中の情報をエンコード（ｅｎｃｏｄｅ）するように変換された信号を示してよい。例として、かつ、限定するものではなく、通信媒体は、有線ネットワークまたは直接的有線接続（ｄｉｒｅｃｔ−ｗｉｒｅｄ  ｃｏｎｎｅｃｔｉｏｎ）といった有線媒体、および、音響、ラジオ周波数（ＲＦ）、そして他の無線媒体といった無線媒体を含んでよい。
【００５６】
図５Ａと５Ｂは、本発明開示の実施例と共に使用され得るモバイルコンピューティングデバイス５００を示している。モバイルコンピューティングデバイスは、例えば、携帯電話、スマートフォン、タブレットパーソナルコンピュータ、ラップトップコンピュータ、等である。図５Ａを参照すると、実施例を実施するためのモバイルコンピューティングデバイス５００の一つの実施例が図示されている。基本構成において、モバイルコンピューティングデバイス５００は、入力エレメントと出力エレメントの両方を有しているハンドヘルドコンピュータである。モバイルコンピューティングデバイス５００は、典型的に、ディスプレイ５０５と、モバイルコンピューティングデバイス５００の中にユーザが情報を入力できるようにする一つまたはそれ以上の入力ボタン５１０を含んでいる。モバイルコンピューティングデバイス５００のディスプレイ５０５は、また、入力デバイス（例えば、タッチスクリーンディスプレイ）としても機能し得る。含まれるのであれば、任意のサイド入力エレメント５１５により、さらに、ユーザは入力することができる。サイド入力エレメント５１５は、ロータリースイッチ、ボタン、または、あらゆる他のタイプの手動入力エレメントであってよい。代替的な実施例において、モバイルコンピューティングデバイス５００は、より多く又は少ない入力エレメントを組込んでよい。例えば、ディスプレイ５０５は、いくつかの実施例において、タッチスクリーンでなくてよい。さらに別の実施例において、モバイルコンピューティングデバイス５００は、携帯電話といった、ポータブル電話システムである。モバイルコンピューティングデバイス５００は、また、光キーパッド５３５を含んでよい。光キーパッド５３５は、物理的キーパッド、または、タッチスクリーンディスプレイ上に生成された「ソフト（”ｓｏｆｔ”）」キーパッドであってよい。種々の実施例において、出力エレメントは、グラフィカルユーザインターフェイス（ＧＵＩ）を表示するためのディスプレイ５０５、ビジュアルインジケータ５２０（例えば、発光ダイオード）、及び/又は、オーディオトランスデューサ５２５（例えば、スピーカー）を含んでいる。いくつかの実施例において、モバイルコンピューティングデバイス５００は、ユーザに触覚的フィードバックを提供するための振動トランスデューサを含んでいる。さらに別の実施例において、モバイルコンピューティングデバイス５００は、入力、及び/又は、出力ポートを含んでいる。外部デバイスへ信号を送付または外部デバイスから信号を受信するための、オーディオ入力（例えば、マイクロフォンジャック）、オーディオ出力（例えば、ヘッドフォンジャック）、ビデオ出力（例えば、ＨＤＭＩ（登録商標）ポート）、といったものである。
【００５７】
図５Ｂは、モバイルコンピューティングデバイスの一つの実施例に係るアーキテクチャを示しているブロックダイヤグラムである。つまり、モバイルコンピューティングデバイス５００は、いくつかの実施例を実施するためのシステム（つまり、アーキテクチャ）を組込むことができる。一つの実施例において、システム５０２は、一つまたはそれ以上のアプリケーション（例えば、ブラウザ、ｅメール、カレンダー、コンタクトマネージャ、メッセージクライアント、ゲーム、およびメディアククライアント／プレーヤ）を実行することができる「スマートフォン（”ｓｍａｒｔ  ｐｈｏｎｅ”）」として実施される。いくつかの実施例において、システム５０２は、統合されたパーソナルコンピュータデジタルアシスタント（ＰＤＡ）および無線電話といった、コンピューティングデバイスとして統合されている。
【００５８】
一つまたはそれ以上のアプリケーションプログラム５６６がメモリ５６２の中にロードされて、オペレーティングシステム上で、又は、関連して実行され得る。アプリケーションプログラムの実施例は、電話ダイアルプログラム、ｅメールプログラム、パーソナルインフォメーションマネジメント（ＰＩＭ）プログラム、ワードプロセッサプログラム、スプレッドシートプログラム、インターネットブラウザプログラム、メッセージプログラム、等を含んでいる。システム５０２は、また、メモリ５６２の中に不揮発性ストレージ領域６５８を含んでいる。不揮発性ストレージ領域５６８は、システム５０２がパワーダウンした場合にも消失されるべきでない永続的な情報を保管するために使用されてよい。アプリケーションプログラム５６６は、不揮発性ストレージ領域５６８において情報を使用し、かつ、保管してよい。ｅメールまたはｅメールアプリケーションで使用される他のメッセージ、等といったものである。同期アプリケーション（図示なし）も、また、システム５０２に存在してよく、不揮発性ストレージ領域５６８に保管された情報とホストコンピュータで保管された対応する情報との同期を保つために、ホストコンピュータに在る対応する同期アプリケーションとインタラクションするようにプログラムされている。正しく理解されるように、他のアプリケーションが、メモリ５６２の中にロードされ、ここにおいて説明されるモバイルコンピューティングデバイス５００上で実行されてよい。
【００５９】
システム５０２は、電源５７０を有しており、一つまたはそれ以上のバッテリーとして実施されてよい。電源５７０は、さらに外部電源を含んでよい。ＡＣアダプタ、または、バッテリーを補充または再充電する電気供給されたドッキングクラドル、といったものである。
【００６０】
システム５０２は、また、ラジオ周波数通信の送信および受信に係る機能を実行するラジオ５７２を含んでよい。ラジオ５７２は、通信キャリアまたはサービスプロバイダを介して、システム５０２と「外界（”ｏｕｔｓｉｄｅ  ｗｏｒｌｄ”）」との間の無線接続性を促進する。ラジオ５７２へ及びラジオからの送信は、オペレーティングシステム５６４のコントロールの下で行われる。別の言葉で言えば、ラジオ５７２によって受信された通信は、オペレーティングシステム５６４を介してアプリケーションプログラム５６６に対して知らされてよく、その逆もまた同様である。
【００６１】
ビジュアルインジケータ５２０が、視覚的な通知を提供するために使用されてよく、及び/又は、オーディオインターフェイス５７４が、オーディオトランスデューサ５２５を介して可聴的な通知を提供するために使用されてよい。図示された実施例において、ビジュアルインジケータ５２０は発光ダイオード（ＬＥＤ）であり、そして、オーディオトランスデューサ５２５はスピーカーである。これらのデバイスは、直接的に電源５７０に接続されてよい。動作化された場合、バッテリーパワーを温存するためにプロセッサ５６０および他のコンポーネントがシャットダウンされたとしても、それらが、通知メカニズムによって指示されたデュレーションにとどまるようにである。ＬＥＤは、ユーザがデバイスの電源オン状態を示すアクションを起こすまで、無期限にそのままとどまるようにプログラムされてよい。オーディオインターフェイス５７４は、可聴的なオーディオ信号を提供し、かつ、ユーザからの可聴的な信号を受信するために使用される。例えば、オーディオトランスデューサ５２５に接続されていることに加えて、オーディオインターフェイス５７４は、また、可聴的な入力を受信するためにマイクロフォンに接続されてもよい。電話の会話を促進するためである。本発明開示の実施例に従って、マイクロフォンは、また、以下に説明されるように、通知のコントロールを促進するためのオーディオセンサとしても役に立ち得る。システム５０２は、さらに、静止画像、ビデオストリーム、等を記録するためのオンボードカメラ５３０が動作できるようにするビデオインターフェイス５７６を含んでよい。
【００６２】
システム５０２を実施しているモバイルコンピューティングデバイス５００は、追加の特性または機能性を有し得る。例えば、モバイルコンピューティングデバイス５００は、また、磁気ディスク、光ディスク、またはテープといった、追加のデータストレージデバイス（リムーバブル及び/又は非リムーバブルなもの）を含んでよい。そうした追加のストレージは、図５Ｂにおいて不揮発性ストレージ領域５６８によって示されている。
【００６３】
モバイルコンピューティングデバイス５００によって生成及び/又は獲得され、かつ、システム５０２を介して保管されたデータ／情報は、上述のように、モバイルコンピューティングデバイス５００上にローカルに保管されてよい。もしくは、データは、ラジオ５７２を介して、または、モバイルコンピューティングデバイス５００とモバイルコンピューティングデバイス５００に関連する別途のコンピューティングデバイスとの間の有線接続を介してアクセスされ得るあらゆる数量のストレージ媒体上に保管されてよい。別途のコンピューティングデバイスは、例えば、インターネットといった、分散コンピューティングネットワークにおけるサーバーコンピュータである。正しく理解されるように、そうしたデータ／情報は、ラジオ５７２を介して、または、分散コンピューティングネットワークを介して、モバイルコンピューティングデバイス５００を介してアクセスされ得る。同様に、そうしたデータ／情報は、保管および使用のためにコンピューティング間で直ちに転送されてよい。よく知られたデータ／情報の転送および保管手段に従ったものであり、電子メールおよび協同的なデータ／情報共有システムを含んでいる。
【００６４】
図６は、上述のように、異なるコンピューティングデバイス間でデータを転送するためにシステムに係るアーキテクチャの一つの実施例を示している。ノードＡ１１０、ノードＢ１１５、およびリモートファイルサーバー１２０の間で転送されたデータは、異なる通信チャンネルまたは他のストレージタイプにおいて保管されてよい。例えば、種々のドキュメントが、ディレクトリサービス６２２、ウェブポータル６２４、メールボックスサーバー６２６、インスタントメッセージストア６２８、またはソーシャルネットワークサイト６３０を使用して保管されてよい。サーバー２０は、ノードＡ１１０、とノードＢ１１５に対して、又は、そこからデータを提供してよい。一つの実施例として、サーバー６２０は、ウェブサーバーであってよい。サーバー６２０は、ネットワーク６１５を介してウェブ上でノードＡ１１０またはノードＢ１１５のいずれかに対してデータを提供し得る。例として、ノードＡ１１０またはノードＢ１１５は、パーソナルコンピュータ、タブレットコンピューティングデバイス、及び/又は、モバイルコンピューティングデバイス５００（例えば、スマートフォン）において具現化されてよい。これらの実施例のあらゆるものが、ストア６１６からコンテンツを取得することができる。
【００６５】
本発明開示の実施例は、例えば、本発明開示の実施例に従った方法、システム、およびコンピュータプログラムプロダクトに係るブロックダイヤグラム及び/又は動作説明図を参照して上記に説明されている。ブロックにおいて示された機能／アクトは、あらゆるフローチャートにおいて示されたような順序以外で発生してよい。例えば、連続して示された２つのブロックは、包含された機能／アクトに応じて、事実上は実質的に同時に実行されてよく、または、ブロックは、ときどき、逆の順序で実行されてよい。
【００６６】
この特許申請において提供される一つまたはそれ以上の実施例に係る記述および説明は、請求される本発明開示の範囲を、いかなるようにも、制限または限定するように意図されたものではない。この特許申請において提供される実施例、例示、および詳細は、占有（ｐｏｓｓｅｓｉｏｎ）を伝達するのに十分であると考えられ、かつ、請求される実施例のベストモードを他人が作成し、使用できるようにする。請求される実施例は、この特許申請において提供されるあらゆる実施例、例示、または詳細を限定するものとして解釈されるべきではない。組合せ又は別個のいずれで示され、説明されたかに関わらず、種々の機能（構造的および方法論的の両方のもの）は、特定の機能セットを用いて一つの実施例を作り出すために、選択的に取り込まれ、または、省略されるように意図されている。本特許申請に係る記述と説明が提供されてきたが、当業者であれば、請求される実施例の境界範囲から逸脱することなく、この特許申請において実施される一般に発明的なコンセプトのより広い態様に係る真意の中に収まる、変形、変更、および代替の実施例を想起することができる。
【図１】
2016524762.tif 000003
【図２】
2016524762.tif 000004
【図３】
2016524762.tif 000005
【図４】
2016524762.tif 000006
【図５Ａ】
2016524762.tif 000007
【図５Ｂ】
2016524762.tif 000008
【図６】
2016524762.tif 000009
【国際調査報告】
2016524762.tif 000010
2016524762.tif 000011
2016524762.tif 000012