(57)【特許請求の範囲】
【請求項１】
方法のためのコンピュータ実行可能命令を実行する際に、１つまたは複数のプロセッサによって実行される方法であって、
ストレージ階層における故障領域およびデータストレージプールにおける利用可能なストレージリソースを記述するデータを１つまたは複数のコンピューティングデバイスによって取得するステップと、
前記ストレージ階層の１つまたは複数のレベル内の前記利用可能なストレージリソースに関連するデバイスの動作特性を、１つまたは複数のコンピューティングデバイスによって確認するステップと、
記述された前記故障領域と、前記ストレージ階層の１つまたは複数のレベル内のデバイスの確認された前記動作特性とに基づいて、前記データストレージプール内の１つまたは複数の特定のデータストレージデバイスに、前記１つまたは複数のコンピューティングデバイスによるメタデータの分配を割り当てるステップと
を含み、
前記割り当ては、前記メタデータの少なくとも一部を受信するように構成されたデータストレージプール内の特定数のデータストレージデバイスに対する、故障領域の使用の数を最大化するように実行される方法。
【請求項２】
前記メタデータは、データがデータストレージプールに記憶される、対応する位置を見つけるために使用可能である、請求項１に記載の方法。
【請求項３】
前記動作特性は、正常性、データ接続タイプ、メディアタイプ、または現在のメタデータステータスを含む、請求項１に記載の方法。
【請求項４】
割り当てられたメタデータを受信するために使用される、前記データストレージプール内の１つまたは複数の特定のデータストレージデバイスの数は、前記データストレージプールについて指定された１つまたは複数の弾力的制約条件に少なくとも部分的に基づいている、請求項１に記載の方法。
【請求項５】
前記弾力的制約条件は、動作可能のまま前記データストレージプールによって容認されるデバイス障害の数を特定する、請求項４に記載の方法。
【請求項６】
前記故障領域がデータセンター、ラック、筐体、データストレージデバイス、およびストレージ階層におけるストレージユニットレベルを含む、請求項１に記載の方法。
【請求項７】
指定された数のデータストレージデバイスは、データストレージプールについて指定された１つまたは複数の弾力的制約条件に少なくとも部分的に基づいている、請求項１に記載の方法。
【請求項８】
少なくとも部分的にハードウェアに実装された１つまたは複数のモジュールを備えるシステムであって、前記１つまたは複数のモジュールは、
複数の並列スレッドを使用して複数のデータストレージデバイスを同時にフォーマットするステップと、
同時フォーマットされた前記複数のデータストレージデバイスを単一のトランザクションを介してデータストレージプールに追加するステップと、
前記追加に応じて、前記データストレージプール内の各データストレージデバイスの動作特性に基づいて、前記データストレージプールにおけるメタデータの分配を割り当てるステップと、
前記複数の並列スレッドを使用して前記データストレージプールから少なくとも１つまたは複数の、他のデータストレージデバイスを除去するステップと、
前記データストレージプール内に残っている各データストレージデバイスの動作特性に基づいて、前記データストレージプール内のメタデータの分配の再均衡化するステップと
を含む動作を実行するように構成されている、システム。
【請求項９】
前記動作特性は、正常性、データ接続タイプ、メディアタイプ、または現在のメタデータステータスを含む、請求項８に記載のシステム。
【請求項１０】
前記割り当ては、前記データストレージプール内の利用可能なストレージリソースのストレージ階層における故障領域に少なくとも部分的に基づく、請求項８に記載のシステム。
【請求項１１】
前記割り当ては、前記メタデータの少なくとも一部を受信するように構成されたデータストレージプール内の特定数のデータストレージデバイスに対する、故障領域の使用の数を最大化するように実行される、請求項１０に記載のシステム。
【請求項１２】
複数のデータストレージデバイスのデータストレージプールへの追加に応答して、データストレージプール単一データストレージデバイス内のメタデータを更新するステップをさらに含む、請求項８に記載のシステム。
【請求項１３】
少なくとも部分的にハードウェアに実装された１つまたは複数のモジュールを備えるシステムであって、前記１つまたは複数のモジュールは、
データストレージプール内のメタデータの分配を再均衡化するための指示を受信するステップと、
前記データストレージプールについて指定された弾力的制約条件を記述するデータを取得するステップと、
記述された前記弾力的制約条件に基づいて、前記データストレージプール内の１つまたは複数の特定のデータストレージデバイスへのメタデータの再分配を割り当てるステップと
を含む動作を実行するように構成されており、
前記割り当ては、前記データストレージプール内の利用可能なストレージリソースのストレージ階層における故障領域に少なくとも部分的に基づき、
前記割り当ては、メタデータの少なくとも一部を受信するように構成されたデータストレージプール内の特定数のデータストレージデバイスのための故障領域の使用の数を最大にするように実行される、システム。
【請求項１４】
前記弾力的制約条件は、動作可能のまま前記データストレージプールによって容認されるデバイス障害の数を特定する、請求項１３に記載のシステム。
【請求項１５】
データストレージプール内のメタデータの割り当て再分配は、データストレージプール内のデバイスの動作特性に少なくとも部分的に基づく、請求項１３に記載のシステム。
【請求項１６】
前記動作特性は、正常性、データ接続タイプ、メディアタイプ、または現在のメタデータステータスを含む、請求項１５に記載のシステム。
【請求項１７】
前記複数の並列スレッドを使用して前記データストレージプールから少なくとも１つまたは複数の、他のデータストレージデバイスを除去するステップと、
前記データストレージプール内に残っている各データストレージデバイスの動作特性に基づいて、前記データストレージプール内のメタデータの分配の再均衡化するステップと
をさらに含む、請求項１３に記載のシステム。
【請求項１８】
メタデータは、データがデータストレージプールに記憶される対応する位置を見つけるために使用可能である、請求項１３に記載のシステム。
【請求項１９】
前記故障領域がデータセンター、ラック、筐体、データストレージデバイス、およびストレージ階層におけるストレージユニットレベルを含む、請求項１３に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  データセンタによる「クラウドにおける」データストレージの普及は、増加し続けている。たとえば、ウェブサービスは、ウェブサービスの動作をサポートするため、そしてさらには、ウェブサービスのための単一の目的として機能するため、このデータが様々な異なるデバイスによって容易にアクセスされ得るように、ネットワークの一部としてデータを遠隔的に記憶するように構成され得る。
【０００２】
[0002]  データストレージプールの使用を通じてデータセンタにおけるデータを管理するための技術が、開発されてきている。データストレージプールは、典型的には、たとえば、データセンタの特定の消費者のための、特定のデータストレージタスクのために構成されているデータストレージデバイスの集合体として、形成される。しかし、これらのデータストレージプールを形成し管理するのに用いられる従来型の技術は、データストレージプールの一部としてのメタデータストレージの従来型の制限のために、スケーラブルでない。
【発明の概要】
【課題を解決するための手段】
【０００３】
[0003]  スケーラブルなデータストレージ技術を説明する。１つまたは複数の実現において、ストレージ階層における故障領域とデータストレージプールにおける利用可能なストレージリソースとを記述するデータが、１つまたは複数のコンピューティングデバイスによって、取得される。ストレージ階層の１つまたは複数のレベル内で利用可能なストレージリソースと関連するデバイスの動作特性が、１つまたは複数のコンピューティングデバイスによって、確認される。記述された故障領域とストレージ階層の１つまたは複数のレベル内のデバイスの確認された動作特性とに基づき、１つまたは複数のコンピューティングデバイスによって、メタデータの分配が、データストレージプール内の１つまたは複数の特定のデータストレージデバイスに割り当てられる。
【０００４】
[0004]  １つまたは複数の実現において、システムは、少なくとも部分的にはハードウェアとして実現された１つまたは複数のモジュールを含む。この１つまたは複数のモジュールは、複数のデータストレージデバイスを、単一のトランザクションを経由して、データストレージプールに追加することを含む動作を実行するように構成されている。追加したことに応答して、データストレージプール内の各データストレージデバイスの動作特性に基づき、データストレージプール内のメタデータの分配が、割り当てられる。
【０００５】
[0005]  １つまたは複数の実現において、システムは、少なくとも部分的にはハードウェアとして実現された１つまたは複数のモジュールを含む。１つまたは複数のモジュールは、データストレージプールにおけるメタデータの分配を再均衡化するための指示を受け取ることと、データストレージプールに対して特定された弾力的制約条件を記述するデータを取得することとを含む動作を実行するように構成されている。メタデータの再分配は、記述された弾力的制約条件に基づき、データストレージプール内の１つまたは複数の特定のデータストレージデバイスに、割り当てられる。
【０００６】
[0006]  この発明の概要は、下記の発明を実施するための形態でさらに述べられる概念の抜粋を単純化された形式で紹介するために、提供されている。この発明の概要は、特許請求される主題の鍵となる特徴または必要不可欠な特徴を識別するものとして意図されず、また特許請求される主題の範囲を決定する際に役立つものとして用いられることも意図されていない。
【０００７】
[0007]  添付の図面を参照しながら、詳細な説明を記述する。図面では、参照番号の最も左の桁は、その参照番号が最初に現れる図面を表す。説明および図面の異なる箇所で同じ参照番号が用いられる場合には、同様または同一の項目を示すことがある。図面に表されているものは、１つまたは複数のものを示すことがあり得るので、論じられている単数または複数の形態のものを、相互交換可能な態様で参照することがある。
【図面の簡単な説明】
【０００８】
【図１】[0008]スケーラブルなデータストレージプール技術を用いるように動作可能な例示的な実現における環境の図解である。
【図２】[0009]ある例示的な実現における、図１のデータストレージプールが実現され得るストレージ階層を示すシステムの図である。
【図３】[0010]データストレージプール内の故障領域に関する知識を活用することによって、メタデータをストレージ階層内のストレージデバイスに割り当てるための技術が説明されている、例示的な実現における手順を示す流れ図である。
【図４】[0011]データストレージプール内のデータストレージデバイスの管理においてプールマネジャモジュールによって並列処理が用いられる、例示的な実現におけるシステムの図である。
【図５】[0012]メタデータが割り当てられデータストレージプールにデータストレージデバイスが追加される例におけるシステムの図である。
【図６】[0013]メタデータが割り当てられデータストレージプールにデータストレージデバイスが追加される例示的な実現における手順を示す流れ図である。
【図７】[0014]指示に応答してメタデータがデータストレージプールにおいて再均衡化される例におけるシステムの図である。
【図８】[0015]メタデータがデータストレージプールにおいて再均衡化される例示的な実現における手順の流れ図である。
【図９】[0016]本明細書で説明される技術の実施形態を実現するために、図１〜図８を参照して説明されるいずれかのタイプのコンピューティングデバイスとして実現され得る例示的なデバイスの様々なコンポーネントを含む例示的なシステムの図解である。
【発明を実施するための形態】
【０００９】
概観
[0017]  スケーラブルなデータストレージ技術が、説明される。１つまたは複数の実現において、データストレージプールにおけるデータストレージデバイス（たとえば、ハードドライブ）の最大の個数が、それらのデータストレージデバイスの部分集合におけるデータストレージプールにおいて「どこで」データが見出され得るかを記述するメタデータを配置することによって、増加させる技術が説明される。
【００１０】
[0018]  どのデータストレージデバイスが、メタデータを受け取るように割り当てるのかは、様々な考察に基づく。たとえば、この割り当ては、データストレージデバイスの正常性、データ接続タイプ、媒体タイプ、データストレージプール内のどこで用いられるか、または現在のメタデータ状態に基づく。さらに、データストレージデバイスによってデータがいかにして記憶されるのか、データセンタ、ラック、およびエンクロージャの全体におけるデータストレージデバイスの分配など、データストレージ階層内の故障領域も、考察される場合がある。このように、データストレージプールは、データストレージプールのストレージ階層内の異なるレベルにおけるデバイスの故障に対する保護を与える。さらに、データストレージデバイスの個数も、用いられるべき故障領域の個数などの考察も、同じように、そのデータストレージプールに対して特定される弾力的制約条件によって、特定される。
【００１１】
[0019]  さらにまた、データストレージプールの管理は、データストレージデバイスをデータストレージプールに追加する、または、データストレージデバイスをデータストレージプールから削除することの一部として並列処理が用いられる技術を、利用する場合がある。たとえば、複数のスレッドを用いて、複数のデータストレージデバイスが、並列的にフォーマットされ、次に、単一のトランザクションとしてデータストレージプールに追加されることがある。同様の技術が、データストレージデバイスをデータストレージプールから削除するために、用いられることもある。
【００１２】
[0020]  メタデータの割り当てのための再均衡化技術も、データストレージプールによって用いられることがある。たとえば、メタデータの分配における変更がなされるべきだという指示が、ユーザなどから、ストレージ階層におけるデータストレージデバイスまたは他のデバイスの追加、除去、故障などに起因して、受け取られることがある。それに応答して、メタデータが、データストレージプールの弾力的制約条件と同様に、動作特性や故障領域などの他の上述した考察に基づいて、再均衡化されることがある。これらおよび他の技術に関するさらなる説明は、以下のセクションとの関係で見出される。
【００１３】
[0021]  以下の説明では、本明細書で説明されるスケーラブルなデータストレージプール技術を用い得る例示的な環境が、先に説明される。次に、例示的な環境でも他の環境でも同じように実行され得る例示的な手順が、説明される。その結果として、例示的な手順のパフォーマンスは例示的な環境に限定されることはなく、例示的な環境は例示的手順のパフォーマンスに限定されることはない。
【００１４】
[0022]  以下の説明は、先に述べたシステムおよびデバイスを用いて実現されるスケーラブルなデータストレージプール技術について、説明するものである。各手順の諸態様は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せとして実現される。これらの手順は、１つまたは複数のデバイスによって実行される動作を特定するブロックの組として示されており、それぞれのブロックによる動作を実行するためには、示されている順序に必ずしも限定されない。以下の説明のいくつかの部分では、上述した図面が参照される。
【００１５】
[0023]  図１〜図８の例と関係して説明される機能、特徴、および概念は、本明細書において説明される手順の文脈において、用いられ得る。さらに、下記の異なる手順と関係して説明される機能、特徴、および概念は、それらの異なる手順の間で相互に交換され得るのであって、ある個別の手順の文脈における実現に限定されることはない。さらに、本明細書における異なる代表的な手順および対応する図面と関連する複数のブロックは、全体として適用される、および／または、異なる方法で組み合わされることがあり得る。このように、本明細書における異なる例示的な環境、デバイス、コンポーネント、および手順と関係して説明される個別的な機能、特徴、および概念は、いずれかの適切な組合せで用いられ得るのであって、列挙されている例によって表されている特定の組合せには限定されない。
【００１６】
例示的な環境
[0024]  図１は、本明細書で説明される技術を用いるように動作可能な例示的な実現における環境１００の図解である。図示された環境１００は、ネットワーク１０６を経由して通信可能に結合されるストレージサービスプロバイダ１０２と消費者１０４を含む。ストレージサービスプロバイダ１０２を実現し得るコンピューティングデバイス１０８、１１０と、消費者１０４とは、様々な方法で構成される。
【００１７】
[0025]  たとえば、コンピューティングデバイス１１０は、デスクトップコンピュータ、モバイルステーション、娯楽機器、表示デバイスと通信可能に結合されたセットトップボックス、ワイヤレス電話、ゲームコンソールなどのような、ネットワーク１０６を経由して通信することが可能なコンピュータとして、構成される。このように、コンピューティングデバイス１１０は、実質的なメモリとプロセッサリソースとを有するフルリソースのデバイス（たとえば、パーソナルコンピュータ、ゲームコンソール）から、限定されたメモリおよび／または処理リソースを有する低リソースのデバイス（たとえば、伝統的なセットトップボックス、ハンドヘルド型のゲームコンソール）までの範囲を有し得る。さらに、コンピューティングデバイスは、ストレージサービスプロバイダなどのコンピューティングデバイス１０８による場合などのように業務によって動作を実行するのに用いられる複数のサーバなど、複数の異なるデバイスを表す場合もある。
【００１８】
[0026]  ネットワーク１０６はインターネットとして図示されているが、このネットワークは、広い範囲の構成を想定し得る。たとえば、ネットワーク１０６は、ワイドエリアネットワーク（WAN）、ローカルエリアネットワーク（LAN）、ワイヤレスネットワーク、公衆電話ネットワーク、イントラネットなどを含み得る。さらに、単一のネットワーク１０６が示されているが、ネットワーク１０６は、複数のネットワークを含むように構成される。
【００１９】
[0027]  ストレージサービスプロバイダ１０２は、たとえば、ソーシャルネットワークサービスの写真を記憶するなどのウェブサービスの一部として実現されるときなど、消費者１０４および／またはストレージサービスプロバイダ１０２自体のデータを記憶するのに用いられ得る複数のデータストレージプール１１２を含むものとして、図示されている。データストレージプールの管理を含む機能は、プールマネジャモジュール１１４によって表される。先に述べたように、この管理は、データストレージプール１１２におけるどのデータストレージデバイスがメタデータを含むべきかという選択を含み、これに関するさらなる説明は、図２および図３との関係で、見出される。データストレージプール１１２の管理は、また、データストレージデバイスを同時にフォーマットおよび再フォーマットするなどの並列処理を用い、これに関するさらなる説明は、図４〜図６との関係で見出される。さらに、プールマネジャモジュール１１４は、ユーザ入力やデータストレージ階層におけるデバイスの故障に応答してデータストレージデバイスの追加または削除など、メタデータの再均衡化技術をサポートでき、これについては、図７および図８との関係でさらに説明される。
【００２０】
[0028]  図２は、図１のデータストレージプール１１２が実現され得るストレージ階層を示す例示的な実現におけるシステムを示す。この例におけるプールマネジャモジュール１１４は、メタデータがどのようにデータストレージプールに割り当てられるかを選択するための機能を表すメタデータマネジャモジュール２０２を含むものとして、図示されている。
【００２１】
[0029]  システム２００は、異なる地理的位置に配置される１つまたは複数のデータセンタ２０４を含むストレージ階層の例を含んでおり、よって、各データセンタ２０４は、ある地理的位置におけるデータセンタ２０４のデバイスの故障（たとえば、設備全体への電力の損失）が別の地理的位置におけるデータセンタの利用可能性によって克服される故障領域を提供する。
【００２２】
[0030]  データセンタ２０４の各々は、複数のラック２０６を含む。ラック２０６は、たとえば、エンクロージャ２０８を包囲する電力およびスイッチングを含むように構成され、エンクロージャ２０８はまた、データストレージデバイス２１０を包囲する電力およびスイッチングを含む。よって、ラック２０６は、また、ラック２０６の１つにおける故障（たとえば、そのラックにおけるスイッチ）が別のラックによって克服される故障領域を提供し得る。同様に、ラック内のエンクロージャ２０８も、データが複数のエンクロージャを経由して提供される場合にはこれらのコピーが故障を容認するように用いられるように、あるエンクロージャの故障は別のエンクロージャを用いて克服される故障領域を提供する。またさらに、データストレージデバイス２１０も、複数のデータストレージデバイス２１０におけるデータのコピーを通じて同様に故障領域を提供する。ストレージ階層における他のレベルは、たとえばノードなどのストレージユニットのように故障領域を提供することも考えられる。
【００２３】
[0031]  このように、ストレージ階層内のデバイスは、それらの領域内でデバイスの故障に対する保護を与えるために使用可能な故障領域を提供する。さらに、故障領域は、また、デバイスの故障に対してさらなる保護を与えるために、階層的に用いられることもある。したがって、メタデータマネジャモジュール２０２は、データストレージプール１１２のどこにデータが記憶されるのかを記述するメタデータをどのデバイスが受け取るべきかを選択するために、図２のデータストレージプール１１２のストレージ階層内の故障領域に関する知識を利用する。たとえば、メタデータマネジャモジュール２０２は、特定の弾力的制約条件（たとえば、容認され得る故障の個数）を用いて、この弾力的制約条件を満たしストレージ階層内で利用可能なリソースの故障領域の使用を最大化するメタデータを、いくつかのデバイスに拡大する。この技術に関するさらなる説明は、以下の手順との関係で見出される。
【００２４】
[0032]  図３は、データストレージプール内の故障領域に関する知識を活用することによって、メタデータを、ストレージ階層内のストレージデバイスに割り当てるための技術が説明されている、例示的な実現における手順を示している。ストレージ階層における故障領域とデータストレージプールにおける利用可能なストレージリソースとを記述するデータが、プールマネジャモジュール１１４によって、獲得される（ブロック３０２）。プールマネジャモジュール１１４は、たとえば、図１のデータストレージプール１１２の管理の一部として、データストレージプール１１２にデータを記憶するために、どのデータストレージデバイス２１０が用いられるかを決定する。プールマネジャモジュール１１４は、また、データストレージプール１１２の一部として用いられるストレージ階層における他のデバイスを決定することがあり、この対応する故障領域から、データストレージプール１１２を実現するのに用いられるエンクロージャ２０８、ラック２０６および異なるデータセンタ２０４などさえも、決定できる。
【００２５】
[0033]  プールマネジャモジュール１１４は、また、ストレージ階層の１つまたは複数のレベル内で利用可能なストレージリソースと関連するデバイスの動作特性を確認する（ブロック３０４）。これは、ストレージ階層の他のレベルと関連するデバイスに加えて、データストレージデバイス２１０の動作特性を確認することを含むのであって、すなわち、エンクロージャ２０８、ラック２０６、およびデータセンタ２０４のレベルにおける場合など、異なる故障境界を超える場合もある。
【００２６】
[0034]  様々な異なる動作特性が、プールマネジャモジュール１１４によって、確認される。たとえば、デバイスの正常性（ブロック３０６）が確認される場合があり、それによって、非正常なデバイスではなく正常なデバイスを選択するのに、この知識が活用される。特定のタイプのデータストレージデバイス２１０のバスにより大きな重み（たとえば、他のバスタイプではなくNVMe）、エンクロージャ２０８とラック２０６との間やラック２０６とデータセンタ２０４との間のデータ接続のタイプなど、を与えるなどのために、データ接続タイプ（ブロック３０８）が確認されることもある。たとえば、より大きな重みを、よって、ＨＤＤではなくＳＳＤを選択する蓋然性を与えるなどのために、データストレージデバイス２１０のための媒体タイプ（ブロック３１０）が確認される場合もある。
【００２７】
[0035]  プールマネジャモジュール１１４も、ストレージ階層におけるデバイスがどのように用いられているかを確認する場合があり得る（ブロック３１２）。たとえば、データストレージデバイス２１０については、使用のタイプは、マニュアルタイプ、ジャーナルタイプ、ホットスペアタイプなどとは異なり、一般に、データストレージプール１１２の一部としてデータを受け取り記憶するのにデータストレージデバイス２１０が利用可能である自動配分を含み得る。１つまたは複数の実現においては、他の各タイプには、もはや用いられないタイプに対する優先性が与えられるのであって、たとえば、データストレージデバイス２１０は、データストレージプール１１２からの除去のための印が付される。現在のメタデータ状態（ブロック３１４）も確認され、それによって、プールマネジャモジュール１１４が、より大きな重みを（およびしたがって、優先性を）、データストレージデバイス２１０と、メタデータを記憶するための現在用いられているストレージ階層における関連のデバイスとに与えることがある。
【００２８】
[0036]  メタデータの分配は、記述された故障領域と、ストレージ階層の１つまたは複数のレベル内のデバイスの確認された動作特性とに基づいて、データストレージプール内の１つまたは複数の特定のデータストレージデバイスに割り当てられる（ブロック３１６）。たとえば、プールマネジャモジュール３０４は、たとえば、正常性の次にデータ接続タイプ、その次に媒体タイプ、その次にどのように用いられているか、その次に現在のメタデータ状態などのリスト化された順序で、これらの動作特性により大きな重みを与えるように構成され得る。これらの動作特性の各々がデータストレージデバイス２１０に対して等しい場合には、メタデータのためにどのデータストレージデバイス２１０が用いられるべきかという割り当ては、その集合から、ランダムに選択される。さらに、故障領域が、また、たとえば、利用可能であるときの、異なるエンクロージャ２０８、ラック２０６、データセンタ２０４などにおけるデータストレージデバイス２１０の利用など、データストレージプール１２２の利用可能なリソースに基づいて、故障境界の個数が最大化されるように、考慮される。
【００２９】
[0037]  メタデータを記憶するのに用いられるべきデータストレージデバイス２１０の個数は、様々な方法で決定され得る。たとえば、容認されるべき故障の個数など、弾力的制約条件が特定され、上述したストレージ階層にも基づき得るこれらの制約条件に基づいて、データストレージデバイス２１０の個数が選択される。たとえば、１つのエンクロージャの場合には、そのエンクロージャに対して６つのメタデータドライブが特定され得、２つから４つのエンクロージャの場合には、１エンクロージャ当たり３つのメタデータドライブが特定され、５つから１６のエンクロージャの場合には、１エンクロージャ当たり２つのエンクロージャが特定され、１６よりも多いエンクロージャの場合には、１エンクロージャ当たり１つのエンクロージャが特定される、などである。各エンクロージャ（または、より高い故障領域）では、最も適格なデバイスから開始するメタデータを有するために、適切なデータストレージデバイス２１０が、選択される。希望する個数の適格なデバイスが見つからない場合には、適格なデバイスを可能な限り多く含むような選択が行われる。さらに、これらの技術は、データストレージデバイス２１０が既にメタデータを有する場合には、それは引き続きメタデータを有し続けるという点で、適切である。
【００３０】
[0038]  このようにして、ストレージ階層に表現されたストレージトポロジとその階層におけるデバイスの動作特性とに関する知識が、データストレージプール１１２の弾力的制約条件によって特定される信頼性の保証に影響を与えないような方法で、データストレージデバイス２１０の特定の部分集合に、メタデータストレージの範囲を定めるのに用いられる。これらの特徴は、さらに後述されるメタデータの再均衡化を含めて、データストレージデバイス２１０の追加と削除との一部としても用いられる。
【００３１】
[0039]  図４は、データストレージプール内のデータストレージデバイスの管理において、プールマネジャモジュール１１４による並列処理が用いられる、例示的な実現におけるシステム４００を示す。従来型の技術を用いて、データストレージプール１１２を作成する、または、データストレージデバイス２１０を既存のデータストレージプールに追加するときには、時間の大半は、データストレージデバイス２１０をフォーマットすること、そして、データストレージデバイス２１０の各々をデータストレージプール１１２に追加するためのトランザクションを実行することに費やされる。しかし、この例では、複数のデータストレージデバイスのためのフォーマットを並列的に実行し、次に、単一のトランザクションを経由してこれらのデバイスをデータストレージプールに追加するために、並列処理を用いられて、それにより、データストレージデバイス２１０を作成してデータストレージプール１１２に追加するのに要する時間量を短縮できる。
【００３２】
[0040]  たとえば、図４のシステム４００は、第１の段階４０２、第２の段階４０４、および第３の段階４０６を用いて、図示されている。第１の段階４０２では、リクエスト４０８が、ストレージサービスプロバイダ１０２のプールマネジャモジュール１１４によって、受け取られる。リクエスト４０６は、たとえば、ネットワーク１０６を経由してアクセスを求めるために通信モジュール１１６を用いている消費者１０４、ストレージサービスプロバイダ１０２と関連する技術者などにより生じる。さらに、リクエスト４０６は、データストレージプール１１２の作成を生じさせ、既存のデータストレージプール１１２にデータストレージデバイス２１０を追加するなどのように構成される。
【００３３】
[0041]  第２の段階４０４では、プールマネジャモジュール１１４が、複数のデータストレージデバイス２１０（１）〜２１０（Ｎ）を並列にフォーマットするために、並列処理を用いる。たとえば、プールマネジャ１１４は、対応するデータストレージデバイス２１０（１）〜２１０（Ｎ）を同時にフォーマットするために各スレッドが用いられるように、複数のスレッド４１０（１）〜４１０（Ｎ）を用いる。これは、デバイスの各々に対する安全な分割などのフォーマットを含む。フォーマットされるべきデータストレージデバイスの個数が利用可能なスレッドの個数よりも少ない場合には、これは、１回のパスで実行される。
【００３４】
[0042]  そうでない場合には、いったんスレッドによるフォーマットが完了されると、別のデータストレージデバイスがフォーマットのためにキューから選択されるように、ワークキューが用いられる。たとえば、３２のスレッドが利用可能であるが、６４のデータストレージデバイスがフォーマットされなければならない場合には、３２のスレッドの各々が、フォーマットを実行するために、同時に、そして、連続的に、用いられることがある。しかし、スレッドの方が先にフォーマットを終了する場合には、そのスレッドは、フォーマットのタスクが実行されなければならない場合にはどのスレッドもアイドル状態ではないように、直ちにキューからデータストレージデバイスを選択することもある。このようにして、スレッドのグループは、希望通りに、フォーマットを反復する。
【００３５】
[0043]  第３の段階４０６では、第２の段階４０４からの、フォーマットされたデータストレージデバイス２１０（１）〜２１０（Ｎ）が、従来型の技術を用いて実行される場合のように各個別的なデータストレージデバイス２１０（１）から２１０（Ｎ）のために別個のトランザクションを用いるというよりむしろ単一のトランザクションで、データストレージプール１１２に追加される。こうして、この例示的な並列処理では、単一のトランザクションの使用は、データストレージデバイス２１０を作成またはデータストレージプール１１２に追加するのに要する時間量を、短縮するのに用いられる。この並列処理は、また、メタデータの割り当てと共に実行され、それについてのさらなる説明は、以下に見出され、対応する図面において示されている。
【００３６】
[0044]  図５は、メタデータが割り当てられ、データストレージプールにデータストレージデバイスが追加される例におけるシステム５００を示している。図６は、メタデータが割り当てられ、データストレージプールにデータストレージデバイスが追加される例示的な実現における手順６００を示している。したがって、以下の説明は、図５および図６の両方を交換可能に参照する。複数のデータストレージデバイスが、複数のスレッドを同時に用いて、１つまたは複数のコンピューティングデバイスにより、フォーマットされる（ブロック６０２）。プールマネジャモジュール１１４を実現するコンピューティングデバイスは、たとえば、図３との関係で上述されたように、複数のデータストレージデバイス２１０（１）〜２１０（Ｎ）をフォーマットするために、複数のスレッドを用いる。
【００３７】
[0045]  第１の段階５０２、第２の段階５０４、第３の段階５０６、および第４の段階５０８が、図５のシステム５００において図示されている。第１の段階５０２では、新たなストレージプールを作成するときに、そのストレージプールの１つまたは複数のデータストレージデバイスが、データストレージプール１１２のためのメタデータを記憶するのに用いられるために、選択される。たとえば、１００のデータストレージデバイスをデータストレージプール１１２に追加するためのリクエストが行われる。したがって、これらのデバイスの１つまたは複数は、これらの追加的なデバイスのためのメタデータを記憶するように構成され、データストレージプール１１２に追加される。
【００３８】
[0046]  次に、第２の段階５０４では、複数のデータストレージデバイス２１０（２）〜２１０（１００）が、単一のトランザクションを経由して、１つまたは複数のコンピューティングデバイスにより、データストレージプールに追加される（ブロック６０６）。先の例を継続すると、単一のトランザクションは、プールを作成し、メタデータを選択されたドライブに書き込むために用いられ得る。
【００３９】
[0047]  データストレージデバイスが既存のデータストレージプールに追加される別の例では、単一のトランザクションは、これらのデバイスをデータストレージプールに追加するためのメタデータを記憶するのに用いられる既存のデータストレージデバイスに向かう。したがって、第３の段階５０６におけるそのような例では、メタデータの更新５１２は、これらの追加的なデータストレージデバイス２１０（２）〜２１０（１００）もメタデータストレージデバイス５０８自体も同様に、データストレージプール１１２の一部として含まれるように、単一のトランザクションでデータストレージプール１１２のメタデータストレージデバイス５０８に提供される。
【００４０】
[0048]  第４の段階５０８では、メタデータの更新された割り当て５１４が、これらの追加的なデータストレージデバイスと、関連するデバイスとをストレージ階層においてアドレス指定するために、データストレージプール１１２に対して実行される。たとえば、データストレージプール１１２内の１つまたは複数の特定のデータストレージデバイスへのメタデータの分配は、データストレージプール内のデータストレージデバイスの確認された動作特性に基づいて、割り当てられる（ブロック６１０）。データストレージデバイスが既存のプールに追加されるシナリオについては、これは、データストレージプール１１２に先に含まれていたデータストレージデバイスと同様にデータストレージプール１１２に追加された追加的なデータストレージデバイスの動作特性を含み得る。この割り当ては、図２および図３との関係で先に述べた技術を用いるなど、様々な方法で、実行される。
【００４１】
[0049]  メタデータは、次に、割り当てられた分配に従って、シーケンシャルに、一度に１つずつ、１つまたは複数の特定のデータストレージデバイスに分配される（ブロック６１２）。上述のシナリオに従い、データストレージデバイスが既存のデータストレージプールに追加される場合には、この分配は、故障に対する保護を与えるために、割り当てられた特定のデータストレージデバイスに対して、シーケンシャルに、実行される。
【００４２】
[0050]  たとえば、メタデータの分配の間に故障に遭遇する場合の「過半数が勝利する」アプローチにおいては、データストレージプールにおけるデータストレージデバイスを、たとえば「ロールバック」、すなわち、新たな割り当てに向かう移動、に設定する状態を決定するために、投票技術が実行される。このようにして、デバイスをシーケンシャルに追加することによって、過半数が維持される。しかし、データストレージプール１１４が作成されているシナリオでは、そのような関心は、どれも妥当ではなく、したがって、割り当てられた特定のデータストレージデバイスが、たとえば、上述した並列処理を通じて、メタデータの分配を同時に受け取る。
【００４３】
[0051]  データストレージプール１１２へのデータストレージデバイス２１０の追加について説明してきたが、並列処理および単一トランザクションに関するこれらの技術は、複数のデータストレージデバイスのデータストレージプールからの除去にも等しく適用可能であることは、容易に明らかなはずである。先の例を継続すると、追加されたデータストレージデバイスは、データストレージプール１１２において、既存のデータストレージデバイスを置き換えるために用いられ得る。その結果として、新たなデバイスが最初に追加され、メタデータが再分配される。除去されるべきデバイスが、次に、排除されたものとして印が付され、その次には、これらの印が付されたデバイスからメタデータが除去されるように、メタデータの割り当てが実行され、スレッドの使用を通じた並列処理が、排除されるデバイスをデータストレージプール１１２から除去するのに用いられることになり、それらのデバイスの再フォーマットなどがなされる。このように、並列処理と単一トランザクションとの使用が、データストレージプール１１２とプールマネジャモジュール１１４とにより、従来型の技術と比較して効率とリソース消費とを向上させるために、用いられる。
【００４４】
[0052]  図７は、指示に応答してメタデータがデータストレージプールにおいて再均衡化される例におけるシステム７００を、示している。図８は、メタデータがデータストレージプールにおいて再均衡化される例示的な実現における手順８００を示している。したがって、以下の説明は、図７および図８の両方を、交換可能に、参照する。
【００４５】
[0053]  指示が、１つまたは複数のコンピューティングデバイスによって、データストレージプールにおけるメタデータの分配を再均衡化するために、受け取られる（ブロック８０２）。第１の段階７０２では、たとえば、再均衡化の指示７０８が、ストレージサービスプロバイダ１１２のプールマネジャモジュール１１４によって受け取られる。再均衡化の指示７０８は、先に述べたように、消費者１０４または技術者から生じ得、データストレージプール１１２のストレージ階層内のデバイスの故障、追加、または削除の検出に応答して、プールマネジャモジュール１１４によって自動的に生成され得る、などである。
【００４６】
[0054]  容認される故障の個数やデフォルトで特定されるものなど、データストレージプールに対して特定された弾力的制約条件を記述するデータが、取得される（ブロック８０４）。したがって、メタデータの再分配は、記述された弾力的制約条件に基づいて、データストレージプール内の１つまたは複数の特定のデータストレージデバイスに割り当てられ得る（ブロック８０６）。たとえば、図２〜図６との関係で上述したように、メタデータ選択７１０技術は、動作特性、故障境界などに基づいて、データストレージプール１１２内の特定のデータストレージデバイス２１０（１）〜２１０（Ｎ）上のストレージにメタデータを割り当てるのに用いられ得る。さらに、弾力的制約条件７１２は、また、たとえば、いくつかの故障をサポートするいくつかのデータストレージデバイスを特定するためなど、この割り当ての一部としても、用いられ得る。
【００４７】
[0055]  第３の段階７０６では、再均衡化動作７１４が実行され、これは、複数のトランザクションの使用や並列処理などを含み得るのであって、上述したように、それは、データストレージプール１１２におけるメタデータを、再び割り当てる。このようにして、データストレージプール１１２のプールマネジャモジュール１１４による管理は、スケーラビリティとパフォーマンスとのゴールをサポートするために、複数の異なる考察のうちの１つまたは複数を扱うことになる。
【００４８】
例示的なシステムおよびデバイス
[0056]  図９は、本明細書で説明される様々な技術を実現し得る１つもしくは複数のコンピューティングシステムおよび／またはデバイスを表す例示的なコンピューティングデバイス９０２を含む例示的なシステムを、全体として９００において図示している。これは、プラットフォームによって抽象化されたリソースの一部としてプールマネジャモジュール１１４を含むことを通じて、図示されている。たとえば、コンピューティングデバイス９０２は、サービスプロバイダのサーバ、クライアントと関連するデバイス（たとえば、クライアントデバイス）、オンチップシステム、および／または任意の他の適切なコンピューティングデバイスもしくはコンピューティングシステムであり得る。
【００４９】
[0057]  図示されている例示的なコンピューティングデバイス９０２は、処理システム９０４、１つまたは複数のコンピュータ可読媒体９０６、および相互通信可能に結合されている１つまたは複数のＩ／Ｏインタフェース９０８を含む。図示されていないが、コンピューティングデバイス９０２は、様々なコンポーネントを相互に結合するシステムバスまたは他のデータおよびコマンド転送システムを、さらに含み得る。システムバスは、メモリバスもしくはメモリコントローラ、周辺バス、ユニバーサルシリアルバス、および／または、様々なバスアーキテクチャのうちのいずれかを用いるプロセッサバスもしくはローカルバスなど、異なるバス構造のいずれか１つまたはそれらの組合せを含み得る。制御線およびデータ線など、多様な他の例も、考察される。
【００５０】
[0058]  処理システム９０４は、ハードウェアを用いて１つまたは複数の動作を実行する機能を表す。したがって、処理システム９０４は、プロセッサ、機能ブロックなどとして構成され得るハードウェア要素９１０を含むものとして、図示されている。これは、特定用途向け集積回路、または、１つまたは複数の半導体を用いて形成される他のロジックデバイスとしての、ハードウェアによる実現を含む。ハードウェア要素９１０は、ハードウェア要素９１０がそれによって形成される材料によって、または、ハードウェア要素９１０において用いられる処理機構によって、限定されることはない。たとえば、プロセッサは、１つまたは複数の半導体および／またはトランジスタ（たとえば、電子集積回路（IC））から構成され得る。そのような文脈では、プロセッサ実行可能な命令とは、電子的に実行可能な命令である。
【００５１】
[0059]  コンピュータ可読媒体９０６は、メモリ／ストレージ９１２を含むものとして、図示されている。メモリ／ストレージ９１２は、１つまたは複数のコンピュータ可読媒体と関連するメモリ／ストレージ能力を表す。メモリ／ストレージ９１２は、揮発性媒体（ランダムアクセスメモリ（RAM）など）および／または不揮発性媒体（リードオンリメモリ（ROM）、フラッシュメモリ、光ディスク、磁気ディスクなど）を含む。メモリ／ストレージコンポーネント９１２は、固定された媒体（たとえば、ＲＡＭ、ＲＯＭ、固定ハードドライブなど）と同様に着脱可能な媒体（たとえば、フラッシュメモリ、着脱可能なハードドライブ、光ディスクなど）も含む。コンピュータ可読媒体９０６は、さらに後述されるように、様々な他の方法で構成されることもある。
【００５２】
[0060]  １つまたは複数の入力／出力インタフェース９０８は、ユーザが様々な入力デバイスを用いて、コマンドおよび情報をコンピューティングデバイス９０２に入力することを可能にすると共に、様々な出力デバイスを用いて、情報をユーザおよび／または他のコンポーネントもしくはデバイスに提示することを可能にする機能を表す。入力デバイスの例は、キーボード、カーソル制御デバイス（たとえば、マウス）、マイクロフォン、スキャナ、タッチ機能（たとえば、物理的タッチを検出するように構成される静電容量式センサまたは他のセンサ）、（たとえば、タッチを含まないジェスチャとしての動きを認識するために、赤外線周波数などの可視波長または非可視波長を用いる）カメラなどを含む。出力デバイスの例は、ディスプレイデバイス（たとえば、モニタやプロジェクタ）、スピーカ、プリンタ、ネットワークカード、触覚応答デバイスなどを含む。したがって、コンピューティングデバイス９０２は、ユーザとの対話をサポートするために、さらに後述されるように、多様な方法で構成さる。
【００５３】
[0061]  様々な技術が、ソフトウェア、ハードウェア要素、またはプログラムモジュールの一般的な文脈において、本明細書で説明される。一般に、そのようなモジュールは、特定のタスクを実行するまたは特定の抽象的なデータタイプを実現するルーチン、プログラム、オブジェクト、要素、コンポーネント、データ構造などを含む。本明細書で用いられる「モジュール」、「機能」、および「コンポーネント」という用語は、一般に、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せを表す。本明細書で説明される技術の特徴は、プラットフォームには依存することはなく、つまり、その技術が、多様なプロセッサを有する多様な商用コンピューティングプラットフォームにおいて実現され得る、ということを意味している。
【００５４】
[0062]  説明されているモジュールおよび技術の実現は、何らかの形態のコンピュータ可読媒体に記憶され得る、または、何らかの形態のコンピュータ可読媒体を経由して伝送され得る。コンピュータ可読媒体は、コンピューティングデバイス９０２によってアクセスされ得る多様な媒体を含み得る。限定ではなく例として、コンピュータ可読媒体は、「コンピュータ可読記憶媒体」と「コンピュータ可読信号媒体」とを含む。
【００５５】
[0063]  「コンピュータ可読記憶媒体」とは、単なる信号伝送、搬送波、または信号自体とは対照的に、情報の永続的および／もしくは非一時的な記憶を可能にする媒体ならびに／またはデバイスを指し得る。したがって、コンピュータ可読記憶媒体とは、非信号伝送媒体を指す。コンピュータ可読記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、ロジック要素／回路、または他のデータなどの情報を記憶するのに適した方法または技術により実現された、揮発性および不揮発性の着脱可能および着脱不可能な媒体および／またはストレージデバイスなどのハードウェアを含む。コンピュータ可読記憶媒体の例は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（DVD）、もしくは他の光ストレージ、ハードディスク、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気記憶デバイス、もしくは、所望の情報を記憶するのに適した、コンピュータがアクセスできる他の記憶デバイス、有体物である媒体、または製品を含み得るが、これらには限定されない。
【００５６】
[0064]  「コンピュータ可読信号媒体」とは、ネットワークを経由してなど、コンピューティングデバイス９０２のハードウェアに命令を伝送するよう構成された信号伝送媒体を指してもよい。信号媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波、データ信号、または他の伝送機構などの変調されたデータ信号において具現化できる。信号媒体は、任意の情報配信媒体も含む。「変調されたデータ信号」という用語は、信号における情報をエンコードするように設定もしくは変更されたその特性セットのうちの１つまたは複数の特性を有する信号を意味する。限定ではなく例として、通信媒体は、ワイアードネットワークまたは直接配線接続などの有線媒体と、音響、無線周波数（RF）、赤外線、および他の無線媒体などの無線媒体と、を含む。
【００５７】
[0065]  前述したように、ハードウェア要素９１０およびコンピュータ可読媒体９０６は、１つまたは複数の命令を実行するなどの、本明細書で説明される技術の少なくともいくつかの態様を実現するためにいくつかの実施形態において用いられ得る、ハードウェアとして実現された、モジュール、プログラマブルデバイスロジック、および／または固定デバイスロジックを表す。ハードウェアは、集積回路もしくはオンチップシステムのコンポーネント、特定用途向け集積回路（ASIC）、フィールドプログラマブルゲートアレイ（FPGA）、コンプレックスプログラマブルロジックデバイス（CPLD）、および、シリコンによる他の実現物または他のハードウェアを含み得る。この文脈では、ハードウェアは、そのハードウェアにより具現化される命令および／またはロジックにより定義されるプログラムタスクを実行する処理デバイスとして、また同様に、たとえば前述したコンピュータ可読記憶媒体なども、実行のための命令を記憶するために利用されるハードウェアとして動作できる。
【００５８】
[0066]  前述したものの組合せは、本明細書で説明される様々な技術を実現するためにも用いられる。したがって、ソフトウェア、ハードウェア、または実行可能なモジュールは、何らかの形態のコンピュータ可読記憶媒体上で具現化されるおよび／または１つまたは複数のハードウェア要素９１０により具現化される１つまたは複数の命令および／またはロジックとして実現される。コンピューティングデバイス９０２は、ソフトウェアモジュールおよび／またはハードウェアモジュールに対応する特定の命令および／または機能を実現するように構成され得る。したがって、ソフトウェアとしてコンピューティングデバイス９０２により実行可能なモジュールの実現は、たとえば、処理システム９０４のコンピュータ可読記憶媒体および／またはハードウェア要素９１０の使用を通じて、ハードウェアとして少なくとも部分的に実現され得る。命令および／または機能は、本明細書で説明される技術、モジュール、および例を実現する１つまたは複数の製品（たとえば、１つまたは複数のコンピューティングデバイス９０２および／または処理システム９０４）により、実行可能／動作可能である。
【００５９】
[0067]  図９にさらに図示されているように、例示的なシステム９００は、パーソナルコンピュータ（PC）、テレビジョンデバイス、および／またはモバイルデバイス上でアプリケーションを実行する際に、シームレスなユーザエキスペリエンスのためのユビキタス環境を可能にする。サービスおよびアプリケーションは、アプリケーションを利用している間、ビデオゲームをプレイしている間、ビデオを見ている間などに、あるデバイスから次のデバイスに移る際の共通のユーザエキスペリエンスのために、３つすべての環境において実質的に同様に動作する。
【００６０】
[0068]  例示的なシステム９００では、複数のデバイスが、中央コンピューティングデバイスを通じて、相互接続される。中央コンピューティングデバイスは、複数のデバイスに対してローカルな場合があり得、または、複数のデバイスからリモートに位置する場合もあり得る。ある実施形態では、中央コンピューティングデバイスは、ネットワーク、インターネット、または他のデータ通信リンクを通じて複数のデバイスに接続されている１つまたは複数のサーバコンピュータのクラウドである。
【００６１】
[0069]  ある実施形態では、この相互接続アーキテクチャは、複数のデバイスのユーザに共通でシームレスなエキスペリエンスを提供するように、複数のデバイスにわたって機能を配信することを可能にする。複数のデバイスの各々は、異なる物理的要件および能力を有し得、中央コンピューティングデバイスは、各デバイス向けにテイラーメイドに作成されながらもすべてのデバイスに共通なエキスペリエンスを各デバイスに提供することを可能にするプラットフォームを用いる。ある実施形態において、ターゲットデバイスのクラスが作成され、エキスペリエンスが、デバイスの一般的なクラスに向けてテイラーメイドされる。デバイスのクラスは、デバイスの物理的特徴、使用のタイプ、または他の共通な特性により定義される。
【００６２】
[0070]  様々な実現において、コンピューティングデバイス９０２は、コンピュータ９１４、モバイル９１６、およびテレビジョン９１８の使用のためなど、様々な異なる構成を想定し得る。これらの構成の各々は、一般に異なる構成および能力を有するデバイスを含んでおり、したがって、コンピューティングデバイス９０２は、異なるデバイスクラスのうちの１つまたは複数に従って構成される。たとえば、コンピューティングデバイス９０２は、パーソナルコンピュータ、デスクトップコンピュータ、マルチスクリーンコンピュータ、ラップトップコンピュータ、ネットブックなどを含むデバイスのコンピュータ９１４クラスとして実現される。
【００６３】
[0071]  コンピューティングデバイス９０２は、また、携帯電話機、ポータブル音楽プレーヤ、ポータブルゲームデバイス、タブレットコンピュータ、マルチスクリーンコンピュータなどのモバイルデバイスを含む、デバイスのモバイル９１６クラスとしても実現され得る。コンピューティングデバイス９０２は、また、一般に、くつろいだ視聴環境において、より大型のスクリーンを有するデバイスまたはより大型のスクリーンに接続されるデバイスを含むデバイスのテレビジョン９１８クラスとしても、実現され得る。これらのデバイスは、テレビジョン、セットトップボックス、ゲームコンソールなどを含む。
【００６４】
[0072]  本明細書で説明される技術は、コンピューティングデバイス９０２のこれら様々な構成によりサポートされ、本明細書で説明される技術の特定の例に限定されることはない。この機能は、後述されるように、プラットフォーム９２２を経由して「クラウド」９２０における分散システムの使用により、全部または一部が実現される。
【００６５】
[0073]  クラウド９２０は、リソース９２４のためのプラットフォーム９２２を含む、および／または、そのようなプラットフォーム９２２を表す。プラットフォーム９２２は、クラウド９２０のハードウェアリソース（たとえば、サーバ）とソフトウェアリソースの基礎的な機能を、抽象化している。リソース９２４は、コンピューティングデバイス９０２からリモートにあるサーバ上でコンピュータ処理が実行されている間に用いることが可能なアプリケーションおよび／またはデータを含み得る。リソース９２４は、また、インターネット、および／または、セルラネットワークもしくはＷｉ−Ｆｉネットワークなどの加入者ネットワークを通じて提供されるサービスも含む。
【００６６】
[0074]  プラットフォーム９２２は、コンピューティングデバイス９０２と他のコンピューティングデバイスとを接続するためのリソースおよび機能を抽象化し得る。プラットフォーム９２２は、また、リソースのスケーリングを抽象化し、プラットフォーム９２２を経由して実現されるリソース９２４を求める直面されている要求に、対応するレベルのスケールを提供するように、機能する。したがって、相互接続されたデバイスの実施形態では、本明細書で説明される機能の実現は、システム９００の全体に、分散される。たとえば、本明細書で説明される機能は、コンピューティングデバイス９０２において部分的に実現されると共に、クラウド９２０の機能を抽象化するプラットフォーム９２２を経由しても実現される。
【００６７】
結論
[0075]  以上では、例示的な実現を、構造上の特徴および／または方法論的な動作に特有の言葉を用いて説明してきたが、添付の特許請求の範囲において定義される実現は、説明された特定の特徴または動作には必ずしも限定されない、ということが理解されるべきである。むしろ、特定の特徴および動作は、特許請求されている特徴を実現する例示的な形態として、開示されている。
【図１】
0006616827.tif 000002
【図２】
0006616827.tif 000003
【図３】
0006616827.tif 000004
【図４】
0006616827.tif 000005
【図５】
0006616827.tif 000006
【図６】
0006616827.tif 000007
【図７】
0006616827.tif 000008
【図８】
0006616827.tif 000009
【図９】
0006616827.tif 000010