(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0018】
上述のように、データセンターは、他の潜在的な特徴及び機能の中でも、ハードウェアデバイス、ソフトウェア構成要素、アプリケーションインスタンス、及びビジネスアプリケーションを含むエンティティとして見ることができる。このようなエンティティ間には、相互依存性が存在する。このような相互依存性は、直接的な相互依存性又は間接的な相互依存性であり得る。これらの相互依存性は、エンティティ及びそれらの間の関係の複雑なグラフ(本明細書では「属性グラフ」と称される)として可視化することができる。このようなエンティティ間の関係は動的である。したがって、これらのエンティティに対するいかなる更新、修正、追加、削除、又は他の変更(総称的に、「変更」及びその同語源のもの)も、データセンター内の他のエンティティ、特にこれに限定されないが変更されるエンティティに直接関係するエンティティ、の挙動及び要件に影響を及ぼし得る。このような機能を使用することによって生じる問題の1つは、汎用的な、したがってデータセンター又はネットワーク内の種々のタイプのエンティティから独立した(ただしそれらによって依然として)様式で、このようなエンティティ間で情報を効率的に伝播する方法の必要性である。
【0019】
本明細書に開示されるシステム及び方法は、データセンター及び同様のシステムに対する種々の利益及び改善を提供する。例えば、本開示は、新しいエンティティがシステムに導入されるときに、エンティティの動的な修正を可能にする。更に、本明細書に開示される方法で情報を伝播することは、ソースエンティティとターゲットエンティティとの間の経路(又はそれに接続されたデバイス)のいかなる変更にも依存しない。更に、ソースエンティティからターゲットエンティティへの伝播は、1つ以上の新たなエンティティの追加が、ソースエンティティとターゲットエンティティとの間の新しい経路をもたらすときに自動的に発生するように構成することができる。別の例として、本明細書で提供される開示は、その情報を、影響を受けるエンティティに自動的に伝播することによって、エンティティに対する変更の効率的な評価を可能にする。
【0020】
本明細書に記載される機能は、少なくとも部分的に、伝播ルールの使用によって達成される。伝播ルールは、以下でより詳細に説明し論じる
図1Bに示される経路などの、ソースエンティティからターゲットエンティティへの1つ以上の伝播経路に関する情報を提供する。一実施形態では、システムは、ソースエンティティとターゲットエンティティとの間の経路を定義する伝播ルールセットをロードすることができる。一実施形態では、このような情報はルックアップテーブル内に記憶され得る。このようなルールは、エンティティ及び関係への更新を評価するために、並びにそのような情報が伝播されるべき経路が存在するかどうかをチェックするために、システム(又はその構成要素)によって使用することができる。評価されるべき複数の経路が存在する種々の実施形態では、システムは、各経路が完全にかつ適切に評価され得るまで、一時的キュー内に種々の経路を記憶することができる。
【0021】
図1Aは、コンピューティング環境100のブロック図である。本明細書での論述目的のために1つの例示的な実施形態が提供されているが、代替的な実施形態は、異なる数の物理マシン、異なる数の物理マシンごとの仮想マシンを実装することができ、同じシステムは、同じ環境内の他の物理マシンとは異なる数の仮想マシンをそれぞれ実装する1つ以上の物理マシンを含むことができる。
【0022】
示すように、コンピューティング環境100は、いくつかの物理マシン110(1)〜110(n)(コンピューティングシステム)を含む。物理マシン110は、コンピューティングデバイス又はコンピューティングデバイスの一部であり、パーソナルコンピュータ、ラップトップコンピュータ、サーバ、携帯情報端末、携帯電話などの任意の種類のコンピューティングデバイスであり得る。いくつかの実施形態では、そのような物理マシンは、メモリ及びプロセッササイクルなどの物理コンピューティングリソースが必要に応じて及び/又は契約に応じて割り当てられるクラウドコンピューティング環境に含まれる。物理マシン110のリソースは、物理マシン上に実装された仮想マシンによって共有される。物理マシン110はそれぞれ、メモリ112を含む。メモリ112は、一実施形態では、ランダムアクセスメモリ(random access memory、RAM)である。メモリ112は、いくつかのページに編成される。ページは、一般に、メモリの固定サイズ部分、例えばメモリの4キロバイト(kilobyte、Kb)部分である。物理マシン110は、ネットワーク140によって管理サーバ120及びいくつかの記憶デバイス150(1)〜150(4)に連結されている。ネットワーク140としては、他のそのような構造体及びシステムの中でも、インターネットなどのWAN(広域ネットワーク、Wide Area Network)、1つ以上のLAN(ローカルエリアネットワーク、Local Area Network)、及び/又は1つ以上のSAN(ストレージエリアネットワーク、Storage Area Network)を挙げることができる。
【0023】
本開示全体にわたって使用されるように、文字n及びiは、可変数のデバイス又は構成要素を示すために使用される。文字n及びiは、これらの異なるデバイス及び構成要素のそれぞれの可変数のインスタンスを記述するのに使用されるが、文字n及びiの繰り返し使用は、必ずしも、各デバイス及び構成要素が、本明細書で論じられる例示的なシステムにおいて、又は本発明のいかなる他の実施形態においても、実装された同じ数のn又はiインスタンスを有することを必ずしも示すものではない。むしろ、これらの変数識別子は、一連の関係又は類似する要素(例えば、物理マシン)の最終要素(例えば、物理マシン110(n))をより単純に指定するために使用される。そのような変数識別子の繰り返し使用は、そのような一連の要素のサイズ間の相関関係を暗示することを意図するものではないが、そのような相関関係が存在してもよい。
【0024】
各物理マシン110は、いくつかの仮想マシン115(1)〜115(i)をホストする。仮想マシン115は、例えば、組織に関連付けられたユーザにコンピューティングリソースを提供するために使用することができる。ユーザ、例えばある組織の情報技術(information technology、IT)専門家が追加のリソースを要求する場合、クラウドベンダーの管理者(例えば、IT専門家)は、追加のリソースの要求を満たすために1つ以上の追加の仮想マシンをプロビジョニングすることができる。
【0025】
管理サーバ120は、例えば、パーソナルコンピュータ、ラップトップコンピュータ、サーバ、携帯情報端末、携帯電話などのコンピューティングデバイス又はコンピューティングデバイスの一部であってもよい。管理サーバ120は、新たな又はマイグレーションされた仮想マシンをホストするためのターゲット物理マシンを選択することができる。管理サーバ120は、プロビジョニングモジュール121及びプロビジョニングデータ122を含む。管理サーバ120は、以下で
図1Bに関連してより詳細に論じられる属性グラフ130などの属性グラフを作成、更新、及び維持するために使用することができる。管理サーバ120はまた、このような機能を属性グラフ130上で実行するために使用することができる多数の構成要素を含む。
【0026】
一実施形態では、プロビジョニングモジュール121を用いて、コンピューティングリソースの要求においてユーザによって指定された要件を検出することができる。プロビジョニングデータ122を使用してその機能を実行するプロビジョニングモジュール121は、要求に応答して仮想マシンを自動的に作成又は配置し、仮想マシンを物理マシン110のうちの1つ上にプロビジョニングさせることができる。見られるように、プロビジョニングモジュール121(及びそれに関連付けられたプロビジョニングデータ122)、並びに属性グラフ作成モジュール125及び属性グラフ分析モジュール126(及び関連付けられた属性グラフデータ127)は、管理サーバ120によってサポートされるモジュールに数えられる(これらのモジュールは、
図1Aでは、例として、管理モジュール129として描写されている)。属性グラフ作成モジュール125及び属性グラフ分析モジュール126などのシステムの動作を、以下で説明する。
【0027】
管理者(又は自動化されたプロセス)はまた、1つ以上の仮想マシンを第1の物理マシンから代替の物理マシンに移動させることもできる。例えば、管理者(又は自動化されたプロセス)は、物理マシンで障害が発生しつつある、障害が発生した、若しくは過負荷状態にあること、又は1つ以上の仮想マシンを現在ホストしている物理マシンとは異なる物理マシン上で追加のリソースが利用可能であることを検出したことに応答して、1つ以上の仮想マシンを異なる(ターゲット)物理マシンに移動(マイグレーション)することができる。一実施形態では、プロビジョニングモジュール121は、物理マシンで障害が発生しつつある、障害が発生した、若しくは過負荷状態にあること、又は1つ以上の仮想マシンを現在ホストしている物理マシンとは異なる物理マシン上で追加のリソースが利用可能であることを検出するなど、仮想マシンがマイグレーションされるべきであることを示す状態を自動的に検出することができる。プロビジョニングモジュール121は、オーケストレーションサービスを提供することの一環として、そのような条件を検出したことに応じて、1つ以上の仮想マシンを自動的にマイグレーションさせることができる。
【0028】
プロビジョニングモジュール121は、新しい仮想マシン(又はある物理マシンから別の物理マシンにマイグレーションされる仮想マシン)がターゲット物理マシンのリソース(例えばメモリ)をより効果的に利用することになる(例えば、ターゲット物理マシンによってホストされているか又はホストされることになる1つ以上の仮想マシンとより多くの数のメモリページを共有することによって)可能性に基づいて、ターゲット物理マシンを選択することができる。更に、そのような動作は、管理サーバ120の管理のために提示されるグラフィカルユーザインターフェース(graphical user interface、GUI)を使用して、直感的かつ効率的な様式で実行することができる。
【0029】
プロビジョニングモジュール121は、プロビジョニングデータ122を使用してプロビジョニングに関する情報を収集及び維持し、利用可能なリソースの適切な(又は少なくとも許容可能な)使用を行うために1つ以上の仮想マシン、それらに関連付けられた記憶構成要素(仮想マシンディスク(virtual machine disk、VMDK))、関連付けられた機能などをプロビジョニングする様式を決定することができる。これは、例えば、所与のVMを受け入れる決定であってもよい(例えば、どの物理マシンが所与の仮想マシンと最大数の共有メモリページを共有する可能性が高いかを示し、その情報をプロビジョニングデータ122内に記憶する)。プロビジョニングモジュール121は、プロビジョニングデータ122を分析して、どの物理マシンが仮想マシンをホストするかを選択することができる。プロビジョニングモジュール121は、種々のソースから種々の形式でプロビジョニングデータ122を収集することができる。プロビジョニングモジュール121はまた、各物理マシンのメモリに維持されているデータを追跡することができる。一実施形態では、各物理マシンは、物理マシンのメモリに記憶されたページに関する情報をプロビジョニングモジュール121に定期的に送信する。あるいは、当該の物理マシンは、他の可能性の中でも、新しいページをメモリに追加することに応答して、新しい仮想マシンが物理マシン上にプロビジョニングされたことに応答して、及び/又はエントリのリストを求めるプロビジョニングモジュール121による要求に応答して、このような情報のリストを送信することができる。一実施形態では、各エントリは、アドレス、例えばページのアドレスを含む。一実施形態では、そのような情報は、物理マシンによってホストされる仮想マシンによって使用されるオペレーティングシステム又はアプリケーションなどの、物理マシンによってホストされる1つ以上の仮想マシンの特性を識別するタグを含むことができる。
【0030】
仮想マシンが物理マシン上で実行されており、別の物理マシンにマイグレーションされる実施形態では、プロビジョニングモジュール121は、仮想マシンが実行されている物理マシンからのリソース情報(例えば、メモリ情報)を使用して、複数の利用可能な物理マシン(ターゲット物理マシン)のうちのどれに仮想マシンをマイグレーションさせるべきかを決定することができる。本例を使用して、プロビジョニングモジュール121は、所与の仮想マシンがマイグレーションされ得る1つ以上の候補を識別するために、仮想マシンに関する情報(仮想マシンをホストする物理マシンから受信したもの)と、ターゲット物理マシンのそれぞれの情報とを比較することができる。
【0031】
新しい仮想マシンがプロビジョニングされるときなど、仮想マシンが物理マシン上で既に実行されていない場合、管理サーバ120は、プロビジョニングされる仮想マシンが必要とするコンピューティングリソースを決定することを含む、仮想マシンをプロビジョニングする動作を実行することができる。一実施形態では、プロビジョニングモジュール121は、物理マシンから受信する代わりに、及び/又はそれに加えて、記憶デバイス150のうちの1つなどの記憶デバイスから仮想マシン情報を受信する。記憶デバイス150は、記憶デバイスが電源オフされた後であっても、そのような記憶デバイス上に記憶されたデータが記憶されたままになるように、永続的データ記憶を提供する。そのような記憶デバイスは、例えば、ハードディスク、コンパクトディスク(compact disc、CD)、デジタル多用途ディスク(digital versatile disc、DVD)、若しくは他の大量記憶デバイス、又はそのような記憶デバイスのアレイを含む記憶システム(例えば、独立ディスクの冗長アレイ(redundant array of independent disks、RAID)システム若しくは光学記憶ジュークボックス)であってもよい。そのような記憶デバイスはまた、そのような物理記憶デバイス及び/又は記憶システム上に実装される仮想又は論理記憶デバイスであってもよい。例えば、そのような記憶デバイスは、RAID記憶システム上に実装される論理ボリュームであり得る。加えて、そのような記憶デバイスは、1つ以上の記憶デバイスを含むことができる。記憶デバイスはまた、ソリッドステート媒体(例えば、フラッシュドライブ)、光学媒体(例えば、CD及びDVD)、並びに磁気媒体(例えば、ハードディスク又は磁気テープ)を含む1つ以上のタイプの記憶媒体を含むことができる。いくつかの実施形態では、そのような記憶デバイスは、クラウドストレージを使用して実装することができ、クラウドストレージでは、記憶デバイスは、必要に応じて及び/又は契約に応じて物理記憶デバイス(複数可)が割り当てられる論理記憶デバイスである。
【0032】
いくつかの仮想マシン(例えば、VM156(1)〜(3)、166(1)〜(3)、及び176(1)(3))は、1つ以上のVMDK(例えば、記憶デバイス150(4)に記憶されたVMDK180(1)〜(n))と同様に、記憶デバイス150のうちの1つ以上(例えば、記憶デバイス150(1)〜(3))に記憶することができる。プロビジョニングモジュール121は、これらの仮想マシンのうちの1つ以上に関する情報を取得し、当該の仮想マシン(複数可)をプロビジョニングすることができる。プロビジョニングモジュール121はまた、当該の仮想マシン(複数可)を記憶するために、仮想マシン115のうちの1つ以上に関する情報を取得することができる。
図1Aに描写するように、記憶デバイス150(1)は、重複排除モジュール154を含むファイルシステム152を実装する。ファイルシステム152は、仮想マシン156を含む、内部に記憶されたデータの重複排除をサポートする。この例では、仮想マシン156(1)〜156(3)が重複排除される。すなわち、各仮想マシン156は、一組のデータから形成される。特定の実施形態では、仮想マシン156は、仮想マシン156の別のデータと同一のデータを含む。この状況は、2つ以上の仮想マシン156が同一のアプリケーション及び/又はオペレーティングシステムを含む場合に起こり得る。複数の仮想マシン156が同一のデータを含む場合、記憶デバイス150(1)は、同一のデータの単一のコピーのみを記憶する。したがって、重複排除データ158は、仮想マシン156を構成するデータのどの部分が仮想マシン間で共有されているか、例えば、2つ以上の仮想マシン156間で同一であるかを識別する情報を含む。プロビジョニングモジュール121は、重複排除データ158を使用して、仮想マシン156のうちの1つをホストするための物理マシンを選択することができる。
【0033】
そのような記憶デバイスはまた、記憶された仮想マシンの指紋を計算し、このようにして生成された指紋を指紋データとして記憶デバイス150のうちの1つ以上に記憶することができる1つ以上の指紋モジュールを含むことができる。仮想マシンの指紋を計算することは、仮想マシンイメージ及び仮想マシンに関係するデータをチャンクに分割することと、各チャンクの指紋を計算することと、を伴う。チャンクは、データの固定又は可変長の部分である。指紋モジュール162は、各チャンクの署名又は指紋を生成するために種々の機能を利用することができる。そのような機能としては、例えば、セキュアハッシュアルゴリズム(Secure Hash Algorithm、SHA)、メッセージダイジェストアルゴリズム5(Message-Digest Algorithm5、MD5)、ラビンハッシュ、巡回冗長検査(Cyclic Redundancy Check、CRC)などのうちの1つ以上を挙げることができる。例えば、署名は、特定のチャンクを処理し、それに応答してハッシュ(例えば、SISレベル署名)を計算するSHA−1などのハッシュ関数によって生成されるハッシュであってもよい。
【0034】
そのようなシナリオでは、プロビジョニングモジュール121は、得られた指紋データにどのような指紋が記憶されているかに関する情報を記憶デバイス150から受信する。記憶デバイス150のうちの1つ以上は、新しい指紋の追加に応答して(例えば、新しい仮想マシンが記憶デバイス150のうちの1つに記憶される場合)、及び/又はプロビジョニングモジュール121による要求に応答して、指紋に関する情報をプロビジョニングモジュール121に定期的に送信することができる。そのような要求は、指紋データがプロビジョニングモジュール121に送信されるべき1つ以上の仮想マシンを指定することができる。
【0035】
コンピューティング環境100などの環境では、本明細書に記載されるものなどの方法及びシステムは、上述のように、管理モジュール120を構成する管理モジュールのうちの1つ以上によって提供されるオーケストレーション機能をサポートするために、属性グラフ作成モジュール125及び属性グラフ分析モジュール126、並びに作成/分析された属性グラフデータ(例えば、属性グラフデータ127)を含む。本開示に照らして理解されるように、属性グラフ作成モジュール125は、属性グラフデータ127などの属性グラフデータの作成を容易にする機能を提供する。属性グラフ分析モジュール126は、そのような属性グラフデータの分析を容易にする機能を提供し、並びに1つ以上のオーケストレーションシステムによる使用に適した形式の情報を生成する。
【0036】
図1Bは、属性グラフ130などの例示的な属性グラフの更なる詳細を提供するブロック図である。本明細書での論述目的のために1つの例示的な実施形態が提供されているが、代替的な実施形態は、異なる数の物理マシン、異なる数の物理マシンごとの仮想マシンを実装することができ、同じシステムは、同じ環境内の他の物理マシンとは異なる数の仮想マシンをそれぞれ実装する1つ以上の物理マシンを含むことができる。
【0037】
示すように、属性グラフ130は、ソースノード131、整合性グループ132、及びディスク133を含む。これらのエンティティ間、及び
図1Bの他のエンティティ間の矢印は、これらのノード間の一般的な「内」方向の流れを示し、これについては以下でより詳細に論じる。属性グラフ130はまた、種々のノード134(1)〜134(n)を含む。これらのノードは、本明細書の他の箇所に記載されるタイプのコンピューティングデバイスなどの、任意のタイプのコンピューティングデバイスであり得る。本明細書の他の箇所に記載される機能の1つの重要な特徴は、これらの方法が、ディスク133とデータベース135との間にあるノード134などの特定のエンティティに依存しないことである。したがって、本明細書に記載される伝播ルールは、ノード134のタイプに使用することができる。最後に、属性グラフ120はまた、この例示的な属性グラフが完結するターゲットノード136を示す。
【0038】
図2は、本明細書に開示されるシステム及び技術の一実施形態に関連して実行される種々のアクションを例示する方法200のフロー図である。本開示に照らして理解されるように、この方法は、代替的な実施形態を導出するために修正されてもよい。更に、本実施形態のステップは連続的な順序で示されているが、特定のステップは、示されている順序とは異なる順序で行われてもよく、特定のステップは同時に実行されてもよく、特定のステップは他のステップと組み合わされてもよく、特定のステップは、別の実施形態では省略されてもよい。方法200を、
図1A及び
図1Bに関連して説明した要素などの要素を参照して説明する。一実施形態では、方法200は、例えば管理サーバ120などの管理サーバによって実行される。更に、方法200の論述は、
図1B及び属性グラフ130と併せて読むと、最も良く理解されるであろう。
【0039】
方法200は、本開示の個々の、しかし関係する部分である種々の動作を実施するために実行することができる動作の概要を提供する。
図200は、線形様式で発生する方法200の種々の動作を描写するが、このような線形機能は、実務では必ずしも必要とされない。むしろ、個々のステップは、動作が必ずこの順序で実行されなければならないという基礎要件のためではなく、本明細書における論理的論述を容易にするために、このように示されている。
【0040】
前述の事項を条件として、方法200は、一般に、システムが伝播ルールを決定する210で始まる。伝播ルールは、本明細書に記載されるシステムなどのシステム全体にわたる情報の伝播を管理する種々の条件又は他の変数を定義する。一実施形態では、これらの伝播ルールは、少なくとも以下の5つの因子を含み得る:(1)開始条件、(2)伝播の方向、(3)スキップ条件、(4)反転条件、及び(5)終了条件。本明細書の他の箇所でより詳細に記載されるように、これらの因子は、新しい、修正された、又は削除された情報をそのシステム全体にわたっていつ、どのように伝播するかを決定するために、システムによって使用ことができる。
【0041】
「開始条件」は、伝播をトリガすることができる値又は条件である。開始条件は、2つ以上のパラメータをとることができる。例えば、一実施形態では、開始条件は文字列値及びブール値をとる。この実施形態では、文字列値は、ルールが適用する情報のタイプを指定することができる「タイプ」属性である。例えば、いくつかの潜在的なタイプは、「バックアップ_ポリシー」、「ファイル」、及び「整合性グループ」である。(明確にすると、本明細書に列挙される潜在的なタイプは、単なる例である。更に、略称などの他の名前付け慣行を使用することができる。)一実施形態では、ブール値は、所与のノード又は他のエンティティが複製されたかどうかを示すために使用され得る「複製」属性とすることができる。他の実施形態では、他の値が可能である。更に、本明細書の論述を容易にするために特定の例が提供されているが、開始条件の正確な意味及びパラメータは、本開示全体に影響を及ぼすことなく、実装ごとに変更することができる。同じことは、本明細書で論じられる条件(例えば、因子)のそれぞれについても、本開示の種々の実装において追加、変更、除去などをすることができる条件(例えば、因子)自体に関しても、当てはまる。
【0042】
「伝播の方向」は、システム100などのシステム全体にわたって情報が伝播される方向を示す。他の可能性が存在するが、この因子は、一般に単一のパラメータをとる。一実施形態では、パラメータは、方向が「内」又は「外」であるかどうかを示し、それによって、情報がネットワーク内又はネットワーク外に伝播されるべきかどうかを示す。「内」に設定されると、情報は、
図1Bに示されるように、情報が一般にソース110からターゲット160に流れるように、ネットワーク内に伝播される。「外」に設定されると、情報は、
図1Bに示されるように、情報が一般にターゲット160からソース110に流れるように、ネットワーク外に伝播される。他の実施形態では、他の値(例えば、多くの他の選択肢の中でも1及び0)を使用して、伝播の方向を示すことができる。更に、本明細書の論述を容易にするために特定の例が提供されているが、この因子の正確な意味及びパラメータは、本開示全体に影響を及ぼすことなく、実装ごとに変更することができる。
【0043】
「スキップ条件」は、条件が満たされると、伝播に所与のノードをスキップさせる条件を示す。他の可能性が存在するが、この因子は、一般に複数のパラメータをとる。例えば、一実施形態では、この条件は、「タイプ」を示すパラメータ及び「ハイパーバイザ」が存在するか又は別の方法で使用されているかを示すブール値をとる。他の実施形態では、この条件は、2つ以上の「タイプ」パラメータを受け入れることができる。特定の実施形態では、この条件は、「タイプ」が仮想マシンを指す場合、「ハイパーバイザ」ブール値のみを必要とする。当然ながら、他の可能なパラメータ及び値も可能である。いずれにしても、ルールによって定義された条件が満たされると、伝播は、関連するノードをスキップする。上記のパラメータの場合と同様に、本明細書の論述を容易にするために特定の例が提供されているが、この因子の正確な意味及びパラメータは、本開示全体に影響を及ぼすことなく、実装ごとに変更することができる。
【0044】
「反転条件」は、条件が満たされると、システムに伝播の方向を反転させる条件を示す。他の可能性が存在するが、この因子は、一般に1つのパラメータをとる。一実施形態では、パラメータは、「整合性グループ」の略語である「cg」又は「バックアップ_ポリシー」など、伝播が終了するノードの「タイプ」を示す。当然ながら、他の可能なパラメータ及び値も可能である。いずれにしても、ルールによって定義された条件が満たされると、伝播の方向はその時点で反転される。上記のパラメータの場合と同様に、本明細書の論述を容易にするために特定の例が提供されているが、この因子の正確な意味及びパラメータは、本開示全体に影響を及ぼすことなく、実装ごとに変更することができる。
【0045】
「終了条件」は、条件が満たされると、伝播を終了させる条件を示す。他の可能性が存在するが、この因子は、一般に単一のパラメータをとる。一実施形態では、パラメータは、「アプリケーション」又は「仮想マシン」など、伝播が終了するノードの「タイプ」を示す。当然ながら、他の可能なパラメータ及び値も可能である。上記のパラメータの場合と同様に、本明細書の論述を容易にするために特定の例が提供されているが、この因子の正確な意味及びパラメータは、本開示全体に影響を及ぼすことなく、実装ごとに変更することができる。
【0046】
いくつかの例を提供すると、1つの潜在的な伝播ルールを、「isApplicationReplicatedRule」と呼ぶことができる。この例のために、isApplicationReplicatedRuleは、「タイプ」パラメータ及び「複製」ブールパラメータを必要とする開始条件と;単一のパラメータをとる方向と;単一の「タイプ」パラメータをとる反転条件と;「ハイパーバイザ」ブールパラメータとペアリングされた「タイプ」パラメータを、第1の「タイプ」パラメータ及び「ハイパーバイザ」ブールパラメータに必ずしも関係しない第2の「タイプ」パラメータと共にとるスキップ条件と;単一の「タイプ」パラメータをとる終了条件と、を有し得る。この伝播ルールはまた、「終了アクション」を含んでもよい。
【0047】
この例示的な伝播ルールを続けると、ルールは、前述の値に関連付けられた以下の値を有してもよい:開始条件の「タイプ」は「整合性グループ」を示してもよく、「複製」ブールパラメータは「真」の値を有してもよく、方向は、「内」に設定された値を有するパラメータを有してもよく、反転条件の「タイプ」パラメータは、「整合性グループ」も示す値を有してもよく、スキップ条件のパラメータペア(「タイプ」パラメータ及び「ハイパーバイザ」ブールパラメータ)は、「クラスタ」を示す値を有する第2の「タイプ」パラメータと共に、それぞれ「ホスト」及び「真」に設定された値を有してもよく、終了条件の「タイプ」パラメータは、「アプリケーション」の値を有してもよく、終了アクションは、「$entity.replicated=true」などの値を有してもよい。(上述のように、これらのパラメータ及び値は、単なる例として提供されており、いかなる方法でも限定することを意図するものではない。)
【0048】
上記の例を続けると、必要な場合は
図1A及び
図1Bを参照すると、前述の例示的な伝播ルールは、この例示的な伝播ルールによって必要とされるように、整合性グループが複製としてマーキングされていると仮定すると、整合性グループ120から情報の伝播を開始する。次いで、関連する情報は、ネットワーク「内」に、すなわちディスク130の方向に、次いでノード140(1)などへ伝播される。他の条件は、各後続ノード(又はより一般的に他のエンティティ)において、又はそれに対して評価され、「アプリケーション」に到達したときに伝播は最終的に停止する。その時点で、終了アクションを実行することができる。
【0049】
図2及び方法200の論述を続けると、伝播ルールの初期伝播は、220で実行される。この方法の第1のパスでは、伝播ルールそれ自体を、必要に応じてシステム全体にわたって伝播することができる。管理サーバが使用される場合などの他の実施形態では、管理サーバは、伝播ルールの開始条件の効率的なキャッシュを維持し、伝播ルールの全てを効率的なキャッシュ内又は別のメモリ構造内に記憶することができる。したがって、ルールを常にシステム全体にわたって伝播する必要はないので、ステップ220は必ずしも実行される必要はない(多くの場合、実行されない)。しかしながら、このような実施形態では、ルールは、必要に応じて後でアクセス及び使用するために利用可能であるように、適切な場所に、ある様式又は別の様式で記憶される。それらの初期の記憶又は伝播の後、伝播ルールは、サービスインターフェースとしてその場で追加、修正、削除、又は他の方法で変更することができる。修正及び削除は、既存のルール(複数可)を無効にすることができる。このような機能については、以下でより詳細に論じる。
【0050】
ステップ230において、方法200は、エンティティに対する更新を処理する。この機能は、
図3及び方法300の論述において、以下ではるかに詳細に論じられており、したがってここでは繰り返さない。ステップ240において、方法200は、伝播メタデータに対する更新を処理する。この機能は、
図4及び方法400の論述において、以下ではるかに詳細に論じられており、したがってここでは繰り返さない。ステップ250において、方法200は、新しい関係の作成を処理する。この機能は、
図5及び方法500の論述において、以下ではるかに詳細に論じられており、したがってここでは繰り返さない。ステップ260において、方法200は、オブジェクト及び/又は関係の削除を処理する。この機能は、
図6及び方法600の論述において、以下ではるかに詳細に論じられており、したがってここでは繰り返さない。
【0051】
上述したように、方法200は、本開示の個々の、しかし関係する部分である種々の動作を実施するために実行することができる動作の概要を提供する。
図200は、線形様式で発生する方法200の種々の動作を描写するが、このような線形機能は、実務では必ずしも必要とされない。むしろ、個々のステップは、動作が必ずこの順序で実行されなければならないという基礎要件のためではなく、本明細書における論理的論述を容易にするために、このように示されている。これは、概ね互いから独立したはっきり異なる方法である230、240、250、及び260に特に当てはまる。これらの方法のそれぞれを、以下でより詳細に論じる。
【0052】
図3は、本明細書に開示されるシステム及び技術の一実施形態に関連して実行される種々のアクションを例示する方法300のフロー図である。本開示に照らして理解されるように、この方法は、代替的な実施形態を導出するために修正されてもよい。更に、本実施形態のステップは連続的な順序で示されているが、特定のステップは、示されている順序とは異なる順序で行われてもよく、特定のステップは同時に実行されてもよく、特定のステップは他のステップと組み合わされてもよく、特定のステップは、別の実施形態では省略されてもよい。方法300を、
図1A、
図1B、及び
図2に関連して説明した要素などの要素を参照して説明する。一実施形態では、方法300は、例えば管理サーバ120などの管理サーバによって実行される。他の実施形態では、方法300は、
図1A及び
図1Bに示される他の個々の要素のうちの種々のもの上に局在化することができるように、管理サーバ120とははっきり異なる1つ以上のスレッド、デーモン、プロセス、又は他のそのような構造体(総称的に「スレッド」)によって実行される。更に、方法300の論述は、
図1B及び属性グラフ130と併せて読むと、最も良く理解されるであろう。
【0053】
方法300を始める前に、典型的な実施形態では少なくともステップ210が実行され、伝播ルールは、システム又はネットワーク内の少なくとも1つの場所に記憶されている。したがって、管理サーバ(又は何らかの他のシステム有能な)は、一般に、方法300を始める前にルールのベースラインバージョンを有する。システムはまた、一般に、方法300を始める前に、例えば属性グラフ130などの属性グラフのベースラインバージョンを有する。
【0054】
方法300は、ステップ310で始まり、方法は、エンティティに対する更新及び/又は追加(総称的に「更新(複数可)」)をリッスンする。方法300は、320において、そのような更新が受信されたかどうかを判定する。方法300が、320において、更新がまだ受信されていないと判定した場合、方法300は、330に進み、更新を引き続きリッスンする。方法300が、320において、更新が受信されたと判定した場合、方法300は、340に進む。
【0055】
340において、方法300は、更新を評価して、1つ以上の伝播ルールの開始条件が満たされたかどうかを判定する。所与の伝播ルールの開始条件が任意の所与のオブジェクトに関して満たされていない場合、方法300は、350に進み、将来のイベントを待機する。示される実施形態では、将来のイベントを待機することは、350に示すように、更新を引き続きリッスンすることを含む。
図3に明示的に示されていない別の実施形態では、将来のイベントを待機することは、そのようなイベントが発生した場合に350に直接戻ることを含み得る。特定の実施形態では、方法300は、この時点で終了するか、又はオブジェクトに関して異なる伝播ルールを評価することに移行することもできる。所与の伝播ルールの開始条件が任意の所与のオブジェクトに関して満たされている場合、方法300は、360において、伝播メタデータ(propagation metadata、PMD)をそのオブジェクトに追加する。種々の実施形態において、伝播メタデータは、少なくとも以下の情報を含む:伝播を引き起こしたか又はもたらしたルールの識別、開始エンティティの識別、及び伝播を引き起こしたか又はもたらした兄弟の識別リスト。いくつかの例として、そのような伝播メタデータは、仮想マシンのバックアップポリシーが無効化されたときに「リスクがある」として仮想マシン内のアプリケーションをマーキングするために、又はビジネスアプリケーションの文脈における任意の記憶媒体の分類に基づいて所与の分類タイプ内のビジネスアプリケーションをマーキングするために、使用することができる。伝播ルールは、(伝播を引き起こす又は制御するために人間の相互作用の必要がないことに関して)自動的及び(基盤となるタイプのエンティティ及び他のインフラストラクチャ構成要素に関して)非依存的の両方であるような様式で、データセンター(又は他のシステム)全体にわたって種々の形式の情報をリアルタイムで伝播するために使用することもできる。
【0056】
図4は、本明細書に開示されるシステム及び技術の一実施形態に関連して実行される種々のアクションを例示する方法400のフロー図である。本開示に照らして理解されるように、この方法は、代替的な実施形態を導出するために修正されてもよい。更に、本実施形態のステップは連続的な順序で示されているが、特定のステップは、示されている順序とは異なる順序で行われてもよく、特定のステップは同時に実行されてもよく、特定のステップは他のステップと組み合わされてもよく、特定のステップは、別の実施形態では省略されてもよい。方法400を、
図1A、
図1B、及び
図2に関連して説明した要素などの要素を参照して説明する。一実施形態では、方法400は、例えば管理サーバ120などの管理サーバによって実行される。他の実施形態では、方法400は、
図1A及び
図1Bに示される他の個々の要素のうちの種々のもの上に局在化することができるように、管理サーバ120とははっきり異なる1つ以上のスレッド、デーモン、プロセス、又は他のそのような構造体(総称的に「スレッド」)によって実行される。更に、方法400の論述は、
図1B及び属性グラフ130と併せて読むと、最も良く理解されるであろう。
【0057】
方法400は、410で始まり、方法は、オブジェクト上の伝播メタデータ(「PMD」)に対する更新及び/又は追加(総称的に「更新(複数可)」)をリッスンする。動作中のこの方法の例示的な例示を提供するために、ノード134(1)の観点から、この方法のステップを考察する。方法400は、420において、例えばノード134(1)などにおいてそのような更新が受信されたかどうかを判定する。方法400が、420において、評価されている所与のノードで更新がまだ受信されていないと判定した場合、方法400は、430に進み、更新を引き続きリッスンする。方法400が、420において、評価されている所与のノードで更新が受信されたと判定した場合、方法400は、440に進む。
【0058】
440において、方法400は、更新を評価して、オブジェクトが1つ以上の伝播ルールの終了条件を満たすかどうかを判定する。所与の伝播ルールの終了条件が任意の所与のオブジェクトに関して満たされていない場合、方法400は、430に進み、更新を引き続きリッスンする。特定の実施形態では、方法400は、この時点で終了するか、又はオブジェクトに関して異なる伝播ルールを評価することに移行することもできる。所与の伝播ルールの終了条件が任意の所与のオブジェクトに関して満たされている場合、方法400は、450内の任意の適格な兄弟ノードを識別する。この例のために、ノード134(1)はアプリケーションではないと仮定する。したがって、本明細書で提供されている例示のために、ノード134(1)の観点から、終了条件はこの時点では満たされず、方法400は、450に進み、ノード134(1)の適格な兄弟を識別する。
【0059】
用語「兄弟」が本明細書で使用されるとき、「兄弟」は、任意の所与のノードに直接接続されたノードを意味することを意図する。例えば、
図1Bに示される例示的な伝播グラフを使用すると、ディスク133、ノード134(2)、及びノード134(3)は、ノード134(1)の兄弟であり、ノード134(1)及びノード134(4)は、ノード134(2)の兄弟であり、ノード134(1)及びノード134(4)は、ノード134(3)の兄弟であり、ノード134(2)、ノード134(3)、及びノード134(n)は、ノード134(4)の兄弟であり、以下同様である。所与の属性グラフ内の他のエンティティはまた、エンティティを有することができる。例えば、
図1Bに示される例示的な伝播グラフを使用すると、整合性グループ132及びノード134(1)は、ディスク133の兄弟であり、属性グラフ130を通じて以下同様である。
【0060】
適格な兄弟は、2つの条件に関して任意の所与のノードの兄弟を評価することによって決定される:第1に、兄弟は、ルールの「伝播の方向」基準に関して評価される。第2に、兄弟は、スキップ条件の基準に関して評価され、その結果、1つ以上の適格な兄弟がスキップされる結果をもたらし得る。そのため、上記に提供された例示的なルールを使用し、ノード134(1)の観点からそのルールの適用を考察すると、ディスク133、ノード134(2)、及びノード134(3)は全てノード134(1)の兄弟であることを我々は既に示している。しかしながら、ノード134(2)及びノード134(3)のみが、方向が「内」に設定されたときに「伝播の方向」条件を満たす。したがって、ノード134(2)及びノード134(3)のみが、ノード134(1)の潜在的に適格な兄弟であり、それらのノードの両方は、それらのノードの各々がスキップ条件によって除外されない限り、適格な兄弟として識別される。しかしながら、この例のために、ノード134(2)はスキップ条件の基準を満たし、ノード134(1)はスキップ条件の基準を満たさないと仮定する。そのシナリオでは、ノード134(2)は適格な兄弟ではなく、それによってノード134(3)がノード134(1)の唯一の適格な兄弟となる。
【0061】
方法400が、450において所与のノードの適格な兄弟(複数可)を識別した後、方法400は、460に進む。460では、方法400は、識別された適格な兄弟上の伝播メタデータ(「PMD」)を更新する。したがって、上記で提供された例を続けると、方法400は、ノード134(3)上のPMDを更新する。この時点で、方法400は、470において、処理を継続するかどうか、例えば更なる更新を引き続きリッスンするかどうかを判定する。方法400が処理を継続しないことを決定した場合、方法400はこの時点で終了する。しかしながら、方法400が470において処理を継続することを決定する通常の状況では、方法400は410に戻る。上記の特定の例を続けると、ノード134(3)は460に従って更新され、これは、今度はノード134(3)の観点から、方法400の別の反復をトリガする。
【0062】
図5は、本明細書に開示されるシステム及び技術の一実施形態に関連して実行される種々のアクションを例示する方法500のフロー図である。本開示に照らして理解されるように、この方法は、代替的な実施形態を導出するために修正されてもよい。更に、本実施形態のステップは連続的な順序で示されているが、特定のステップは、示されている順序とは異なる順序で行われてもよく、特定のステップは同時に実行されてもよく、特定のステップは他のステップと組み合わされてもよく、特定のステップは、別の実施形態では省略されてもよい。方法500を、
図1A、
図1B、及び
図2に関連して説明した要素などの要素を参照して説明する。一実施形態では、方法500は、例えば管理サーバ120などの管理サーバによって実行される。他の実施形態では、方法500は、
図1A及び
図1Bに示される他の個々の要素のうちの種々のもの上に局在化することができるように、管理サーバ120とははっきり異なる1つ以上のスレッド、デーモン、プロセス、又は他のそのような構造体(総称的に「スレッド」)によって実行される。更に、方法500の論述は、
図1B及び属性グラフ130と併せて読むと、最も良く理解されるであろう。
【0063】
方法500は、510で始まり、方法は、ノード(又は他のエンティティ)間の新しい関係の作成をリッスンする。方法500は、属性グラフによって表されるネットワーク内で新しい関係が作成されたかどうかを判定する(520)。方法500が、520において、属性グラフによって表されるネットワーク内で新しい関係が作成されていないと判定した場合、方法500は、530に進み、新しい関係の作成を引き続きリッスンする。方法500が、520において、新しい関係が最近作成されたと判定した場合、方法500は、540に進む。方法500を例示するために、ノード134(3)は、以前は属性グラフ130の一部ではなかったが、新たに追加された(属性グラフ130内の現在位置においてであるが)と仮定する。この例では、方法500は、520において、2つの新しい関係、すなわち、(1)ノード134(3)とノード134(1)との間の関係、及び(2)ノード134(3)とノード134(4)との間の関係が追加されたことを判定する。したがって、この例では、方法500は540に進む。
【0064】
540では、方法500は、新しいオブジェクトが伝播メタデータ又は「PMD」を有するかどうかを判定する。方法500が、540において、新しいオブジェクトがPMDを有していないと判定した場合、方法500は、530に進み、新しい関係の作成を引き続きリッスンする。方法500が、540において、新しいオブジェクトがPMDを有すると判定した場合、方法500は、550に進む。
【0065】
550では、方法500は、適格な兄弟ノードを識別する。ノード134(3)の作成及び上記定義に基づいて例を続けると、方法500は、この時点でノード134(3)の適格な兄弟を識別する。方法400の場合と同様に、適格な兄弟は、2つの条件に関して任意の所与のノードの兄弟を評価することによって決定される:第1に、兄弟は、ルールの「伝播の方向」基準に関して評価される。第2に、兄弟は、スキップ条件の基準に関して評価され、その結果、1つ以上の適格な兄弟がスキップされる結果をもたらし得る。そのため、上記に提供された例示的なルールを使用し、ノード134(3)の観点からそのルールの適用を考察すると、ノード134(1)、及びノード134(4)はノード134(3)の兄弟であることを我々は既に示している。しかしながら、ノード134(4)のみが、方向が「内」に設定されるとき、「伝播の方向」条件を満たす。したがって、ノード134(4)は、再びこの例で新たに追加されたノードであるノード134(3)の唯一の潜在的に適格な兄弟である。その結果、ノード134(4)は、ノード134(4)がスキップ条件によって除外されない限り、適格な兄弟として識別される。しかしながら、この例のために、ノード134(4)はスキップ条件の基準を満たさないと仮定する。そのシナリオでは、ノード134(4)は、この例の例示のために再び我々がネットワーク及び/又は属性グラフに新たに追加されたものとして取り扱っているノード134(3)の適格な兄弟として識別される。
【0066】
方法500が、550において所与のノードの適格な兄弟(複数可)を識別した後、方法500は、560に進む。560では、方法500は、識別された適格な兄弟上の伝播メタデータ(「PMD」)を更新する。したがって、上記で提供された例を続けると、方法500は、ノード134(4)上のPMDを更新する。この時点で、方法500は、570において、処理を継続するかどうか、例えば更なる処理が必要かどうかを判定する。方法500がこの時点で処理を継続しないことを決定した場合、方法500はこの時点で終了する。しかしながら、方法500が570において処理を継続することを決定する通常の状況では、方法500は510に戻る。更に、
図4又は
図5に明示的に示されていないが、ステップ560において適格な兄弟上のPMDが更新されるとき、その更新は、次いで一般に、その更新された情報もノード134(4)の任意の他の適格な兄弟に伝播されるべきかどうかを判定するように、新たに更新されたノード(この例では、ノード134(4))に関して
図4及び方法400の別のパスをトリガする。
【0067】
図6は、本明細書に開示されるシステム及び技術の一実施形態に関連して実行される種々のアクションを例示する方法600のフロー図である。本開示に照らして理解されるように、この方法は、代替的な実施形態を導出するために修正されてもよい。更に、本実施形態のステップは連続的な順序で示されているが、特定のステップは、示されている順序とは異なる順序で行われてもよく、特定のステップは同時に実行されてもよく、特定のステップは他のステップと組み合わされてもよく、特定のステップは、別の実施形態では省略されてもよい。方法600を、
図1A、
図1B、及び
図2に関連して説明した要素などの要素を参照して説明する。一実施形態では、方法600は、例えば管理サーバ120などの管理サーバによって実行される。他の実施形態では、方法600は、
図1A及び
図1Bに示される他の個々の要素のうちの種々のもの上に局在化することができるように、管理サーバ120とははっきり異なる1つ以上のスレッド、デーモン、プロセス、又は他のそのような構造体(総称的に「スレッド」)によって実行される。更に、方法600の論述は、
図1B及び属性グラフ130と併せて読むと、最も良く理解されるであろう。
【0068】
方法600は、610で始まり、方法は、オブジェクト及び/又は関係(総称的に「オブジェクト(複数可)」)の削除又は除去(総称的に「削除」及びその活用形)をリッスンする。方法600は、620において、削除されたオブジェクトが伝播メタデータ、又は「PMD」を有していたかどうかを判定する。方法600が、620において、削除されたオブジェクトがPMDを有さなかったと判定した場合、方法600は、630に進み、別のオブジェクトの削除を引き続きリッスンする。方法600が、620において、削除されたオブジェクトがPMDを有していたと判定した場合、方法600は、640に進む。方法600を例示するために、ノード134(3)が削除されたと仮定する。ノード134(3)がPMDを含んでいたと更に仮定する。この例では、方法600は、620において、ノード134(3)がPMDを有していたと判定し、したがって、方法600は、この例では640に進む。
【0069】
640では、方法600は、適格な兄弟ノードを識別する。ノード134(3)の削除及び上記に提供された定義に基づいて例を続けると、方法600は、この時点でノード134(3)の適格な兄弟を識別する。方法400及び500の場合と同様に、適格な兄弟は、2つの条件に関して任意の所与のノードの兄弟を評価することによって決定される:第1に、兄弟は、ルールの「伝播の方向」基準に関して評価される。第2に、兄弟は、スキップ条件の基準に関して評価され、その結果、1つ以上の適格な兄弟がスキップされる結果をもたらし得る。そのため、上記に提供された例示的なルールを使用し、ノード134(3)の観点からそのルールの適用を考察すると、ノード134(1)、及びノード134(4)はノード134(3)の兄弟であることを我々は既に示している。しかしながら、ノード134(4)のみが、方向が「内」に設定されるとき、「伝播の方向」条件を満たす。したがって、ノード134(4)は、再びこの例で新たに追加されたノードであるノード134(3)の唯一の潜在的に適格な兄弟である。その結果、ノード134(4)は、ノード134(4)がスキップ条件によって除外されない限り、適格な兄弟として識別される。しかしながら、この例のために、ノード134(4)はスキップ条件の基準を満たさないと仮定する。そのシナリオでは、ノード134(4)は、この例の例示のために再び我々がネットワーク及び/又は属性グラフから最近削除されたものとして取り扱っているノード134(3)の適格な兄弟として識別される。
【0070】
方法600が、640において所与のノードの適格な兄弟(複数可)を識別した後、方法600は、650に進む。650では、方法600は、識別された適格な兄弟上の伝播メタデータ(「PMD」)を消去する。したがって、上記で提供された例を続けると、方法600は、ノード134(4)上のPMDを消去する。この時点で、方法600は、660において、処理を継続するかどうか、例えば更なる処理が必要かどうかを判定する。方法600がこの時点で処理を継続しないことを決定した場合、方法600はこの時点で終了する。しかしながら、方法600が660において処理を継続することを決定する通常の状況では、方法600は610に戻る。
【0071】
図7は、上述の動作の1つ以上を実行することができるコンピューティングシステム700のブロック図である。コンピューティングシステム700は、コンピュータ可読命令を実行することができる任意のシングル又はマルチプロセッサコンピューティングデバイスあるいはシステムを広く表す。コンピューティングシステム700の例としては、限定することなく、ワークステーション、パーソナルコンピュータ、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、携帯用デバイス(例えば、携帯情報端末及び携帯電話)、ネットワーク機器、ストレージコントローラ(例えば、アレイコントローラ、テープドライブコントローラ、又はハードディスクコントローラ)などを含む様々なデバイスのうちの1つ以上が挙げられる。その最も基本的な構成において、コンピューティングシステム700は、少なくとも1つのプロセッサ714と、メモリ716と、を含んでもよい。管理モジュール129若しくは属性グラフ130のうちの1つ以上又は本開示と整合するそれらの任意の修正を呼び出すソフトウェアを実行することによって、コンピューティングシステム700は、上述の様式で動作を実行するように構成された専用コンピューティングデバイスになる。
【0072】
プロセッサ714は、データの処理、又は命令の解釈及び実行が可能な任意のタイプ又は形式の処理ユニットを概して表す。特定の実施形態では、プロセッサ714は、ソフトウェアアプリケーション又はモジュールから命令を受信してもよい。これらの命令は、プロセッサ714に、本明細書に記載及び/又は例示する実施形態のうちの1つ以上の機能を実行させてもよい。例えば、プロセッサ714は、本明細書に記載する動作を実行してもよく、及び/又は実行するための手段であってもよい。プロセッサ714はまた、本明細書に記載若しくは例示する任意の他の動作、方法、若しくはプロセスを実行してもよく、及び/又は実行するための手段であってもよい。
【0073】
メモリ716は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は不揮発性記憶デバイス又は媒体を概して表す。例としては、限定することなく、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(read only memory、ROM)、フラッシュメモリ、ハードディスクドライブ、又は任意の他の好適なメモリデバイスが挙げられる。必須でないが、特定の実施形態では、コンピューティングシステム700は、揮発性メモリユニット及び不揮発性記憶デバイスの両方を含んでもよい。一例では、に実装するプログラム命令又は本明細書に記載される更なる動作を実装が、メモリ710にロードされてもよい。
【0074】
特定の実施形態では、コンピューティングシステム700はまた、プロセッサ714及びメモリ716に加えて、1つ以上の構成要素又は要素を含んでもよい。例えば、
図7に例示するように、コンピューティングシステム700は、メモリコントローラ718、入力/出力(Input/Output、I/O)コントローラ720、及び通信インターフェース722を含んでもよく、これらの各々は、通信インフラストラクチャ712を介して相互接続されてもよい。通信インフラストラクチャ712は、コンピューティングデバイスの1つ以上の構成要素間の通信を容易にすることが可能な任意のタイプ又は形式のインフラストラクチャを概して表す。通信インフラストラクチャ712の例としては、限定することなく、通信バス(業界標準アーキテクチャ(Industry Standard Architecture、ISA)、周辺構成要素相互接続(Peripheral Component Interconnect、PCI)、PCIエクスプレス(PCI express、PCIe)、又は類似のバスなど)、及びネットワークが挙げられる。
【0075】
メモリコントローラ718は、メモリ若しくはデータを取り扱うことが可能な、又はコンピューティングシステム700の1つ以上の構成要素間の通信を制御することが可能な任意のタイプ又は形式のデバイスを概して表す。例えば、特定の実施形態では、メモリコントローラ718は、通信インフラストラクチャ712を介して、プロセッサ714、メモリ716、及びI/Oコントローラ720間の通信を制御してもよい。特定の実施形態では、メモリコントローラ718は、本明細書に記載及び/又は例示する1つ以上の動作又は機能を単独又は他の要素との組み合わせのいずれかで実行してもよく、及び/又は実行するための手段であってもよい。
【0076】
I/Oコントローラ720は、コンピューティングデバイスの入出力機能を調整及び/又は制御することが可能な任意のタイプ又は形式のモジュールを概して表す。例えば、特定の実施形態では、I/Oコントローラ720は、プロセッサ714、メモリ716、通信インターフェース722、ディスプレイアダプタ726、入力インターフェース730、及びストレージインターフェース734などのコンピューティングシステム700の1つ以上の要素間のデータの転送を制御してもよく、又はそれを容易にしてもよい。
【0077】
通信インターフェース722は、コンピューティングシステム700と、1つ以上の追加のデバイスとの間の通信を容易にすることが可能な任意のタイプ又は形式の通信デバイス又はアダプタを広く表す。例えば、特定の実施形態において通信インターフェース722は、コンピューティングシステム700と追加のコンピューティングシステムを含むプライベート又は公衆ネットワークとの間の通信を容易にしてもよい。通信インターフェース722の例としては、限定することなく、有線ネットワークインターフェース(ネットワークインターフェースカードなど)、無線ネットワークインターフェース(無線ネットワークインターフェースカードなど)、モデム、及び任意の他の好適なインターフェースが挙げられる。少なくとも1つの実施形態では、通信インターフェース722は、インターネットなどのネットワークへの直接的なリンクを介して、遠隔サーバへの直接的な接続を提供してもよい。通信インターフェース722はまた、例えば、ローカルエリアネットワーク(イーサネット(登録商標)ネットワークなど)、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラ電話接続、衛星データ接続、又は任意の他の好適な接続を通じて、かかる接続を間接的に提供してもよい。
【0078】
特定の実施形態では、通信インターフェース722はまた、外部バス又は通信チャネルを介して、コンピューティングシステム700と、1つ以上の追加のネットワーク又は記憶デバイスとの間の通信を容易にするように構成されたホストアダプタを表してもよい。ホストアダプタの例としては、限定することなく、スモールコンピュータシステムインターフェース(Small Computer System Interface、SCSI)ホストアダプタ、ユニバーサルシリアルバス(Universal Serial Bus、USB)ホストアダプタ、米国電気電子技術者協会(Institute of Electrical and Electronics Engineers、IEEE)1894ホストアダプタ、シリアルアドバンストテクノロジーアタッチメント(Serial Advanced Technology Attachment、SATA)及びエクスターナルSATA(external SATA、eSATA)ホストアダプタ、アドバンスドテクノロジーアタッチメント(Advanced Technology Attachment、ATA)、及びパラレルATA(Parallel ATA、PATA)ホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネット(登録商標)アダプターなどが挙げられる。
【0079】
通信インターフェース722はまた、コンピューティングシステム700が分散又は遠隔コンピューティングに関与することを可能にしてもよい。例えば、通信インターフェース722は、実行のために、遠隔デバイスから命令を受信するか、又は遠隔デバイスに命令を送信してもよい。
【0080】
図7に例示するように、コンピューティングシステム700はまた、ディスプレイアダプタ726を介して通信インフラストラクチャ712に連結されている少なくとも1つのディスプレイデバイス724を含んでもよい。ディスプレイデバイス724は、ディスプレイアダプタ726によって転送された情報を視覚的に表示することが可能な任意のタイプ又は形式のデバイスを概して表す。同様に、ディスプレイアダプタ726は、ディスプレイデバイス724上に表示するために、通信インフラストラクチャ712から(又はフレームバッファから)、グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形式のデバイスを概して表す。
【0081】
図7に例示するように、コンピューティングシステム700はまた、入力インターフェース730を介して通信インフラストラクチャ712に連結されている少なくとも1つの入力デバイス728を含んでもよい。入力デバイス728は、コンピュータ又は人間のいずれかによって生成された入力を、コンピューティングシステム700に提供することが可能な任意のタイプ又は形式の入力デバイスを概して表す。入力デバイス728の例としては、限定することなく、キーボード、ポインティングデバイス、音声認識デバイス、又は任意の他の入力デバイスが挙げられる。
【0082】
図7に例示するように、コンピューティングシステム700はまた、ストレージインターフェース734を介して通信インフラストラクチャ712に連結されている記憶デバイス732を含んでもよい。記憶デバイス732は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の記憶デバイス又は媒体を概して表す。例えば、記憶デバイス732は、磁気ディスクドライブ(例えば、いわゆるハードドライブ)、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどであってもよい。記憶インターフェース734は、コンピューティングシステム700の記憶デバイス732と他の構成要素との間でデータを転送するための任意のタイプ又は形式のインターフェース又はデバイスを概して表す。記憶デバイス732のような記憶デバイスは、本明細書に記載されるデータ構造、並びにコンピュータシステムに本明細書に記載される動作のうちの1つ以上を実行させることが可能な1つ以上のコンピュータ可読プログラミング命令などの情報を記憶することができる。
【0083】
特定の実施形態では、記憶デバイス732は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能なストレージユニットから読み取るように、及び/又はそれに書き込むように構成されてもよい。好適な取り外し可能なストレージユニットの例としては、限定することなく、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。記憶デバイス732はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム700にロードされることを可能にするための他の類似の構造又はデバイスを含んでもよい。例えば、記憶デバイス732は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み取り、及び書き込むように構成されてもよい。記憶デバイス732はまた、コンピューティングシステム500の一部であってもよく、又は他のインターフェースシステムを通じてアクセスされる別個のデバイスであってもよい。
【0084】
多くの他のデバイス又はサブシステムは、コンピューティングシステム700に接続されてもよい。逆に、
図7に例示する構成要素及びデバイスの全てが、本明細書において説明及び/又は例示される実施形態を実践するために存在する必要があるわけではない。上記で述べたデバイス及びサブシステムはまた、
図7に示すものとは異なる方法で相互接続されてもよい。
【0085】
コンピューティングシステム700はまた、任意の数のソフトウェア、ファームウェア、及び/又はハードウェア構成を採用してもよい。例えば、本明細書において開示される実施形態のうちの1つ以上は、非一過性コンピュータ可読記憶媒体上にコンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される)としてコード化され得る。非一過性コンピュータ可読記憶媒体の例としては、磁気記憶媒体(例えば、ハードディスクドライブ及びフロッピーディスク)、光学的記憶媒体(例えば、CD−、又はDVD−ROM)、電子記憶媒体(例えば、ソリッドステートドライブ及びフラッシュメディア)などが挙げられる。そのようなコンピュータプログラムはまた、インターネットなどのネットワークを介してメモリに又はキャリア媒体に記憶するためにコンピューティングシステム700に転送されてもよい。
【0086】
コンピュータプログラミング命令を含む非一過性コンピュータ可読記憶媒体は、コンピューティングシステム700にロードされてもよい。非一過性コンピュータ可読記憶媒体上に記憶されたコンピュータプログラミング命令の全部又は一部分は、次いで、メモリ716及び/又は記憶デバイス732の種々の部分に記憶されてもよい。プロセッサ714によって実行されるとき、コンピューティングシステム700にロードされたコンピュータプログラムは、本明細書において説明及び/又は例示する実施形態のうちの1つ以上の機能をプロセッサ714に実行させてもよく、及び/又はそれらを実行するための手段であってもよい。付加的に又は代替的に、本明細書に説明及び/又は例示される例示的な実施形態のうちの1つ以上は、ファームウェア及び/又はハードウェアに実装され得る。例えば、コンピューティングシステム700は、本明細書において開示される実施形態のうちの1つ以上を実装するように適合された特定用途向け集積回路(application specific integrated circuit、ASIC)として構成されてもよい。
【0087】
図8は、クライアントシステム810、820、及び830、並びにサーバ840及び845がネットワーク850に連結されてもよいネットワークアーキテクチャ800のブロック図である。クライアントシステム810、820、及び830は、
図7のコンピューティングシステム700などの任意のタイプ又は形式のコンピューティングデバイス又はシステムを概して表す。
【0088】
同様に、サーバ840及び845は、種々のデータベースサービスを提供するように、及び/又は特定のソフトウェアアプリケーションを実行するように構成されたアプリケーションサーバ又はデータベースサーバなどのコンピューティングデバイス又はシステムを概して表す。ネットワーク850は、例えば、イントラネット、広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(personal area network、PAN)、又はインターネットを含む、任意の電気通信又はコンピュータネットワークを概して表す。一実施例では、クライアントシステム810、820、及び/又は830のうちの1つ以上は、管理モジュール129及び/若しくは属性グラフ130、並びに/又はそれらの1つ以上の構成要素若しくはスレッドのうちの1つ以上を実行するように構成されたソフトウェアを含んでもよい。
【0089】
図8に例示するように、1つ以上の記憶デバイス860(1)〜(N)は、サーバ840に直接取設されてもよい。同様に、1つ以上の記憶デバイス870(1)〜(N)は、サーバ845に直接取設されてもよい。記憶デバイス860(1)〜(N)及び記憶デバイス870(1)〜(N)は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の記憶デバイス又は媒体を概して表す。特定の実施形態では、記憶デバイス860(1)〜(N)及び記憶デバイス870(1)〜(N)は、ネットワークファイルシステム(Network File System、NFS)、サーバメッセージブロック(Server Message Block、SMB)、又は共通インターネットファイルシステム(Common Internet File System、CIFS)など種々のプロトコルを使用して、サーバ840及び845と通信するように構成されたネットワーク接続型記憶(network-attached storage、NAS)デバイスを表してもよい。このような記憶デバイスは、上述のようにバックアップ情報及び記憶構成情報を記憶することができる。
【0090】
サーバ840及び845はまた、ストレージエリアネットワーク(SAN)ファブリック880に接続されてもよい。SANファブリック880は、複数の記憶デバイス間の通信を容易にすることが可能な任意のタイプ又は形式のコンピュータネットワーク又はアーキテクチャを概して表す。SANファブリック880は、サーバ840及び845と、複数の記憶デバイス890(1)〜(N)及び/又はインテリジェント記憶アレイ895との間の通信を容易にしてもよい。SANファブリック880はまた、デバイス890(1)〜(N)及びアレイ895が、クライアントシステム810、820、及び830にローカルに取設されたデバイスとして見えるような様式で、ネットワーク850並びにサーバ840及び845を介して、クライアントシステム810、820、及び830と、記憶デバイス890(1)〜(N)及び/又はインテリジェント記憶アレイ895との間の通信を容易にしてもよい。記憶デバイス860(1)〜(N)及び記憶デバイス870(1)〜(N)と同様に、記憶デバイス890(1)〜(N)及びインテリジェント記憶アレイ895は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の記憶デバイス又は媒体を概して表す。
【0091】
特定の実施形態では、
図7のコンピューティングシステム700を参照すると、
図7の通信インターフェース722などの通信インターフェースは、それぞれのクライアントシステム810、820、及び830と、ネットワーク850との間の接続性を提供するために使用されてもよい。クライアントシステム810、820、及び830は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバ840又は845上の情報にアクセスすることが可能であってもよい。かかるソフトウェアは、クライアントシステム810、820、及び830が、サーバ840、サーバ845、記憶デバイス860(1)〜(N)、記憶デバイス870(1)〜(N)、記憶デバイス890(1)〜(N)、又はインテリジェント記憶アレイ895によってホストされるデータにアクセスすることを可能にしてもよい。
図8は、データを交換するためのネットワーク(インターネットなど)の使用を描写するが、本明細書において説明及び/又は例示する実施形態は、インターネット又はいずれの特定のネットワークベースの環境にも限定されない。
【0092】
少なくとも1つの実施形態において、本明細書において開示される実施形態のうちの1つ以上の全て又は一部分は、コンピュータプログラムとしてコード化されてもよく、サーバ840、サーバ845、記憶デバイス840(1)〜(N)、記憶デバイス870(1)〜(N)、記憶デバイス890(1)〜(N)、インテリジェント記憶アレイ895、又はこれらの任意の組み合わせにロードされ、これらによって実行されてもよい。本明細書において開示される実施形態のうちの1つ以上の全て又は一部分はまた、コンピュータプログラムとしてコード化され、サーバ840内に記憶され、サーバ845によって実行され、ネットワーク850を通じてクライアントシステム810、820、及び830に分散されてもよい。
【0093】
いくつかの例では、
図1A、
図1B、
図7、及び
図8のシステムのうちの1つの全部又は一部分は、クラウドコンピューティング又はネットワークベースの環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど)は、ウェブブラウザ又は他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
【0094】
加えて、本明細書に記載の構成要素のうちの1つ以上は、データ、物理的デバイス、及び/又は物理的デバイスの表現を、ある形式から他の形式に変換し得る。例えば、本明細書に記載される動作のうちの1つ以上は、本明細書に記載される種々の動作を実行することができるように、コンピュータシステムの挙動を変換することができる。
【0095】
本発明をいくつかの実施形態と関連して説明してきたが、本発明は、本明細書で述べた特定の形式に限定されることを意図しない。逆に、本発明は、添付の特許請求の範囲によって規定されるような本発明の範囲内に合理的に含まれ得るような代替形態、修正形態、及び等価物を包含することを意図する。