(58)【調査した分野】(Int.Cl.,DB名)
割り当てられたメタデータを受信するために使用される、前記データストレージプール内の1つまたは複数の特定のデータストレージデバイスの数は、前記データストレージプールについて指定された1つまたは複数の弾力的制約条件に少なくとも部分的に基づいている、請求項1に記載の方法。
指定された数のデータストレージデバイスは、データストレージプールについて指定された1つまたは複数の弾力的制約条件に少なくとも部分的に基づいている、請求項1に記載の方法。
前記割り当ては、前記データストレージプール内の利用可能なストレージリソースのストレージ階層における故障領域に少なくとも部分的に基づく、請求項8に記載のシステム。
前記割り当ては、前記メタデータの少なくとも一部を受信するように構成されたデータストレージプール内の特定数のデータストレージデバイスに対する、故障領域の使用の数を最大化するように実行される、請求項10に記載のシステム。
複数のデータストレージデバイスのデータストレージプールへの追加に応答して、データストレージプール単一データストレージデバイス内のメタデータを更新するステップをさらに含む、請求項8に記載のシステム。
前記故障領域がデータセンター、ラック、筐体、データストレージデバイス、およびストレージ階層におけるストレージユニットレベルを含む、請求項13に記載のシステム。
【発明を実施するための形態】
【0009】
概観
[0017] スケーラブルなデータストレージ技術が、説明される。1つまたは複数の実現において、データストレージプールにおけるデータストレージデバイス(たとえば、ハードドライブ)の最大の個数が、それらのデータストレージデバイスの部分集合におけるデータストレージプールにおいて「どこで」データが見出され得るかを記述するメタデータを配置することによって、増加させる技術が説明される。
【0010】
[0018] どのデータストレージデバイスが、メタデータを受け取るように割り当てるのかは、様々な考察に基づく。たとえば、この割り当ては、データストレージデバイスの正常性、データ接続タイプ、媒体タイプ、データストレージプール内のどこで用いられるか、または現在のメタデータ状態に基づく。さらに、データストレージデバイスによってデータがいかにして記憶されるのか、データセンタ、ラック、およびエンクロージャの全体におけるデータストレージデバイスの分配など、データストレージ階層内の故障領域も、考察される場合がある。このように、データストレージプールは、データストレージプールのストレージ階層内の異なるレベルにおけるデバイスの故障に対する保護を与える。さらに、データストレージデバイスの個数も、用いられるべき故障領域の個数などの考察も、同じように、そのデータストレージプールに対して特定される弾力的制約条件によって、特定される。
【0011】
[0019] さらにまた、データストレージプールの管理は、データストレージデバイスをデータストレージプールに追加する、または、データストレージデバイスをデータストレージプールから削除することの一部として並列処理が用いられる技術を、利用する場合がある。たとえば、複数のスレッドを用いて、複数のデータストレージデバイスが、並列的にフォーマットされ、次に、単一のトランザクションとしてデータストレージプールに追加されることがある。同様の技術が、データストレージデバイスをデータストレージプールから削除するために、用いられることもある。
【0012】
[0020] メタデータの割り当てのための再均衡化技術も、データストレージプールによって用いられることがある。たとえば、メタデータの分配における変更がなされるべきだという指示が、ユーザなどから、ストレージ階層におけるデータストレージデバイスまたは他のデバイスの追加、除去、故障などに起因して、受け取られることがある。それに応答して、メタデータが、データストレージプールの弾力的制約条件と同様に、動作特性や故障領域などの他の上述した考察に基づいて、再均衡化されることがある。これらおよび他の技術に関するさらなる説明は、以下のセクションとの関係で見出される。
【0013】
[0021] 以下の説明では、本明細書で説明されるスケーラブルなデータストレージプール技術を用い得る例示的な環境が、先に説明される。次に、例示的な環境でも他の環境でも同じように実行され得る例示的な手順が、説明される。その結果として、例示的な手順のパフォーマンスは例示的な環境に限定されることはなく、例示的な環境は例示的手順のパフォーマンスに限定されることはない。
【0014】
[0022] 以下の説明は、先に述べたシステムおよびデバイスを用いて実現されるスケーラブルなデータストレージプール技術について、説明するものである。各手順の諸態様は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せとして実現される。これらの手順は、1つまたは複数のデバイスによって実行される動作を特定するブロックの組として示されており、それぞれのブロックによる動作を実行するためには、示されている順序に必ずしも限定されない。以下の説明のいくつかの部分では、上述した図面が参照される。
【0015】
[0023]
図1〜
図8の例と関係して説明される機能、特徴、および概念は、本明細書において説明される手順の文脈において、用いられ得る。さらに、下記の異なる手順と関係して説明される機能、特徴、および概念は、それらの異なる手順の間で相互に交換され得るのであって、ある個別の手順の文脈における実現に限定されることはない。さらに、本明細書における異なる代表的な手順および対応する図面と関連する複数のブロックは、全体として適用される、および/または、異なる方法で組み合わされることがあり得る。このように、本明細書における異なる例示的な環境、デバイス、コンポーネント、および手順と関係して説明される個別的な機能、特徴、および概念は、いずれかの適切な組合せで用いられ得るのであって、列挙されている例によって表されている特定の組合せには限定されない。
【0016】
例示的な環境
[0024]
図1は、本明細書で説明される技術を用いるように動作可能な例示的な実現における環境100の図解である。図示された環境100は、ネットワーク106を経由して通信可能に結合されるストレージサービスプロバイダ102と消費者104を含む。ストレージサービスプロバイダ102を実現し得るコンピューティングデバイス108、110と、消費者104とは、様々な方法で構成される。
【0017】
[0025] たとえば、コンピューティングデバイス110は、デスクトップコンピュータ、モバイルステーション、娯楽機器、表示デバイスと通信可能に結合されたセットトップボックス、ワイヤレス電話、ゲームコンソールなどのような、ネットワーク106を経由して通信することが可能なコンピュータとして、構成される。このように、コンピューティングデバイス110は、実質的なメモリとプロセッサリソースとを有するフルリソースのデバイス(たとえば、パーソナルコンピュータ、ゲームコンソール)から、限定されたメモリおよび/または処理リソースを有する低リソースのデバイス(たとえば、伝統的なセットトップボックス、ハンドヘルド型のゲームコンソール)までの範囲を有し得る。さらに、コンピューティングデバイスは、ストレージサービスプロバイダなどのコンピューティングデバイス108による場合などのように業務によって動作を実行するのに用いられる複数のサーバなど、複数の異なるデバイスを表す場合もある。
【0018】
[0026] ネットワーク106はインターネットとして図示されているが、このネットワークは、広い範囲の構成を想定し得る。たとえば、ネットワーク106は、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、ワイヤレスネットワーク、公衆電話ネットワーク、イントラネットなどを含み得る。さらに、単一のネットワーク106が示されているが、ネットワーク106は、複数のネットワークを含むように構成される。
【0019】
[0027] ストレージサービスプロバイダ102は、たとえば、ソーシャルネットワークサービスの写真を記憶するなどのウェブサービスの一部として実現されるときなど、消費者104および/またはストレージサービスプロバイダ102自体のデータを記憶するのに用いられ得る複数のデータストレージプール112を含むものとして、図示されている。データストレージプールの管理を含む機能は、プールマネジャモジュール114によって表される。先に述べたように、この管理は、データストレージプール112におけるどのデータストレージデバイスがメタデータを含むべきかという選択を含み、これに関するさらなる説明は、
図2および
図3との関係で、見出される。データストレージプール112の管理は、また、データストレージデバイスを同時にフォーマットおよび再フォーマットするなどの並列処理を用い、これに関するさらなる説明は、
図4〜
図6との関係で見出される。さらに、プールマネジャモジュール114は、ユーザ入力やデータストレージ階層におけるデバイスの故障に応答してデータストレージデバイスの追加または削除など、メタデータの再均衡化技術をサポートでき、これについては、
図7および
図8との関係でさらに説明される。
【0020】
[0028]
図2は、
図1のデータストレージプール112が実現され得るストレージ階層を示す例示的な実現におけるシステムを示す。この例におけるプールマネジャモジュール114は、メタデータがどのようにデータストレージプールに割り当てられるかを選択するための機能を表すメタデータマネジャモジュール202を含むものとして、図示されている。
【0021】
[0029] システム200は、異なる地理的位置に配置される1つまたは複数のデータセンタ204を含むストレージ階層の例を含んでおり、よって、各データセンタ204は、ある地理的位置におけるデータセンタ204のデバイスの故障(たとえば、設備全体への電力の損失)が別の地理的位置におけるデータセンタの利用可能性によって克服される故障領域を提供する。
【0022】
[0030] データセンタ204の各々は、複数のラック206を含む。ラック206は、たとえば、エンクロージャ208を包囲する電力およびスイッチングを含むように構成され、エンクロージャ208はまた、データストレージデバイス210を包囲する電力およびスイッチングを含む。よって、ラック206は、また、ラック206の1つにおける故障(たとえば、そのラックにおけるスイッチ)が別のラックによって克服される故障領域を提供し得る。同様に、ラック内のエンクロージャ208も、データが複数のエンクロージャを経由して提供される場合にはこれらのコピーが故障を容認するように用いられるように、あるエンクロージャの故障は別のエンクロージャを用いて克服される故障領域を提供する。またさらに、データストレージデバイス210も、複数のデータストレージデバイス210におけるデータのコピーを通じて同様に故障領域を提供する。ストレージ階層における他のレベルは、たとえばノードなどのストレージユニットのように故障領域を提供することも考えられる。
【0023】
[0031] このように、ストレージ階層内のデバイスは、それらの領域内でデバイスの故障に対する保護を与えるために使用可能な故障領域を提供する。さらに、故障領域は、また、デバイスの故障に対してさらなる保護を与えるために、階層的に用いられることもある。したがって、メタデータマネジャモジュール202は、データストレージプール112のどこにデータが記憶されるのかを記述するメタデータをどのデバイスが受け取るべきかを選択するために、
図2のデータストレージプール112のストレージ階層内の故障領域に関する知識を利用する。たとえば、メタデータマネジャモジュール202は、特定の弾力的制約条件(たとえば、容認され得る故障の個数)を用いて、この弾力的制約条件を満たしストレージ階層内で利用可能なリソースの故障領域の使用を最大化するメタデータを、いくつかのデバイスに拡大する。この技術に関するさらなる説明は、以下の手順との関係で見出される。
【0024】
[0032]
図3は、データストレージプール内の故障領域に関する知識を活用することによって、メタデータを、ストレージ階層内のストレージデバイスに割り当てるための技術が説明されている、例示的な実現における手順を示している。ストレージ階層における故障領域とデータストレージプールにおける利用可能なストレージリソースとを記述するデータが、プールマネジャモジュール114によって、獲得される(ブロック302)。プールマネジャモジュール114は、たとえば、
図1のデータストレージプール112の管理の一部として、データストレージプール112にデータを記憶するために、どのデータストレージデバイス210が用いられるかを決定する。プールマネジャモジュール114は、また、データストレージプール112の一部として用いられるストレージ階層における他のデバイスを決定することがあり、この対応する故障領域から、データストレージプール112を実現するのに用いられるエンクロージャ208、ラック206および異なるデータセンタ204などさえも、決定できる。
【0025】
[0033] プールマネジャモジュール114は、また、ストレージ階層の1つまたは複数のレベル内で利用可能なストレージリソースと関連するデバイスの動作特性を確認する(ブロック304)。これは、ストレージ階層の他のレベルと関連するデバイスに加えて、データストレージデバイス210の動作特性を確認することを含むのであって、すなわち、エンクロージャ208、ラック206、およびデータセンタ204のレベルにおける場合など、異なる故障境界を超える場合もある。
【0026】
[0034] 様々な異なる動作特性が、プールマネジャモジュール114によって、確認される。たとえば、デバイスの正常性(ブロック306)が確認される場合があり、それによって、非正常なデバイスではなく正常なデバイスを選択するのに、この知識が活用される。特定のタイプのデータストレージデバイス210のバスにより大きな重み(たとえば、他のバスタイプではなくNVMe)、エンクロージャ208とラック206との間やラック206とデータセンタ204との間のデータ接続のタイプなど、を与えるなどのために、データ接続タイプ(ブロック308)が確認されることもある。たとえば、より大きな重みを、よって、HDDではなくSSDを選択する蓋然性を与えるなどのために、データストレージデバイス210のための媒体タイプ(ブロック310)が確認される場合もある。
【0027】
[0035] プールマネジャモジュール114も、ストレージ階層におけるデバイスがどのように用いられているかを確認する場合があり得る(ブロック312)。たとえば、データストレージデバイス210については、使用のタイプは、マニュアルタイプ、ジャーナルタイプ、ホットスペアタイプなどとは異なり、一般に、データストレージプール112の一部としてデータを受け取り記憶するのにデータストレージデバイス210が利用可能である自動配分を含み得る。1つまたは複数の実現においては、他の各タイプには、もはや用いられないタイプに対する優先性が与えられるのであって、たとえば、データストレージデバイス210は、データストレージプール112からの除去のための印が付される。現在のメタデータ状態(ブロック314)も確認され、それによって、プールマネジャモジュール114が、より大きな重みを(およびしたがって、優先性を)、データストレージデバイス210と、メタデータを記憶するための現在用いられているストレージ階層における関連のデバイスとに与えることがある。
【0028】
[0036] メタデータの分配は、記述された故障領域と、ストレージ階層の1つまたは複数のレベル内のデバイスの確認された動作特性とに基づいて、データストレージプール内の1つまたは複数の特定のデータストレージデバイスに割り当てられる(ブロック316)。たとえば、プールマネジャモジュール304は、たとえば、正常性の次にデータ接続タイプ、その次に媒体タイプ、その次にどのように用いられているか、その次に現在のメタデータ状態などのリスト化された順序で、これらの動作特性により大きな重みを与えるように構成され得る。これらの動作特性の各々がデータストレージデバイス210に対して等しい場合には、メタデータのためにどのデータストレージデバイス210が用いられるべきかという割り当ては、その集合から、ランダムに選択される。さらに、故障領域が、また、たとえば、利用可能であるときの、異なるエンクロージャ208、ラック206、データセンタ204などにおけるデータストレージデバイス210の利用など、データストレージプール122の利用可能なリソースに基づいて、故障境界の個数が最大化されるように、考慮される。
【0029】
[0037] メタデータを記憶するのに用いられるべきデータストレージデバイス210の個数は、様々な方法で決定され得る。たとえば、容認されるべき故障の個数など、弾力的制約条件が特定され、上述したストレージ階層にも基づき得るこれらの制約条件に基づいて、データストレージデバイス210の個数が選択される。たとえば、1つのエンクロージャの場合には、そのエンクロージャに対して6つのメタデータドライブが特定され得、2つから4つのエンクロージャの場合には、1エンクロージャ当たり3つのメタデータドライブが特定され、5つから16のエンクロージャの場合には、1エンクロージャ当たり2つのエンクロージャが特定され、16よりも多いエンクロージャの場合には、1エンクロージャ当たり1つのエンクロージャが特定される、などである。各エンクロージャ(または、より高い故障領域)では、最も適格なデバイスから開始するメタデータを有するために、適切なデータストレージデバイス210が、選択される。希望する個数の適格なデバイスが見つからない場合には、適格なデバイスを可能な限り多く含むような選択が行われる。さらに、これらの技術は、データストレージデバイス210が既にメタデータを有する場合には、それは引き続きメタデータを有し続けるという点で、適切である。
【0030】
[0038] このようにして、ストレージ階層に表現されたストレージトポロジとその階層におけるデバイスの動作特性とに関する知識が、データストレージプール112の弾力的制約条件によって特定される信頼性の保証に影響を与えないような方法で、データストレージデバイス210の特定の部分集合に、メタデータストレージの範囲を定めるのに用いられる。これらの特徴は、さらに後述されるメタデータの再均衡化を含めて、データストレージデバイス210の追加と削除との一部としても用いられる。
【0031】
[0039]
図4は、データストレージプール内のデータストレージデバイスの管理において、プールマネジャモジュール114による並列処理が用いられる、例示的な実現におけるシステム400を示す。従来型の技術を用いて、データストレージプール112を作成する、または、データストレージデバイス210を既存のデータストレージプールに追加するときには、時間の大半は、データストレージデバイス210をフォーマットすること、そして、データストレージデバイス210の各々をデータストレージプール112に追加するためのトランザクションを実行することに費やされる。しかし、この例では、複数のデータストレージデバイスのためのフォーマットを並列的に実行し、次に、単一のトランザクションを経由してこれらのデバイスをデータストレージプールに追加するために、並列処理を用いられて、それにより、データストレージデバイス210を作成してデータストレージプール112に追加するのに要する時間量を短縮できる。
【0032】
[0040] たとえば、
図4のシステム400は、第1の段階402、第2の段階404、および第3の段階406を用いて、図示されている。第1の段階402では、リクエスト408が、ストレージサービスプロバイダ102のプールマネジャモジュール114によって、受け取られる。リクエスト406は、たとえば、ネットワーク106を経由してアクセスを求めるために通信モジュール116を用いている消費者104、ストレージサービスプロバイダ102と関連する技術者などにより生じる。さらに、リクエスト406は、データストレージプール112の作成を生じさせ、既存のデータストレージプール112にデータストレージデバイス210を追加するなどのように構成される。
【0033】
[0041] 第2の段階404では、プールマネジャモジュール114が、複数のデータストレージデバイス210(1)〜210(N)を並列にフォーマットするために、並列処理を用いる。たとえば、プールマネジャ114は、対応するデータストレージデバイス210(1)〜210(N)を同時にフォーマットするために各スレッドが用いられるように、複数のスレッド410(1)〜410(N)を用いる。これは、デバイスの各々に対する安全な分割などのフォーマットを含む。フォーマットされるべきデータストレージデバイスの個数が利用可能なスレッドの個数よりも少ない場合には、これは、1回のパスで実行される。
【0034】
[0042] そうでない場合には、いったんスレッドによるフォーマットが完了されると、別のデータストレージデバイスがフォーマットのためにキューから選択されるように、ワークキューが用いられる。たとえば、32のスレッドが利用可能であるが、64のデータストレージデバイスがフォーマットされなければならない場合には、32のスレッドの各々が、フォーマットを実行するために、同時に、そして、連続的に、用いられることがある。しかし、スレッドの方が先にフォーマットを終了する場合には、そのスレッドは、フォーマットのタスクが実行されなければならない場合にはどのスレッドもアイドル状態ではないように、直ちにキューからデータストレージデバイスを選択することもある。このようにして、スレッドのグループは、希望通りに、フォーマットを反復する。
【0035】
[0043] 第3の段階406では、第2の段階404からの、フォーマットされたデータストレージデバイス210(1)〜210(N)が、従来型の技術を用いて実行される場合のように各個別的なデータストレージデバイス210(1)から210(N)のために別個のトランザクションを用いるというよりむしろ単一のトランザクションで、データストレージプール112に追加される。こうして、この例示的な並列処理では、単一のトランザクションの使用は、データストレージデバイス210を作成またはデータストレージプール112に追加するのに要する時間量を、短縮するのに用いられる。この並列処理は、また、メタデータの割り当てと共に実行され、それについてのさらなる説明は、以下に見出され、対応する図面において示されている。
【0036】
[0044]
図5は、メタデータが割り当てられ、データストレージプールにデータストレージデバイスが追加される例におけるシステム500を示している。
図6は、メタデータが割り当てられ、データストレージプールにデータストレージデバイスが追加される例示的な実現における手順600を示している。したがって、以下の説明は、
図5および
図6の両方を交換可能に参照する。複数のデータストレージデバイスが、複数のスレッドを同時に用いて、1つまたは複数のコンピューティングデバイスにより、フォーマットされる(ブロック602)。プールマネジャモジュール114を実現するコンピューティングデバイスは、たとえば、
図3との関係で上述されたように、複数のデータストレージデバイス210(1)〜210(N)をフォーマットするために、複数のスレッドを用いる。
【0037】
[0045] 第1の段階502、第2の段階504、第3の段階506、および第4の段階508が、
図5のシステム500において図示されている。第1の段階502では、新たなストレージプールを作成するときに、そのストレージプールの1つまたは複数のデータストレージデバイスが、データストレージプール112のためのメタデータを記憶するのに用いられるために、選択される。たとえば、100のデータストレージデバイスをデータストレージプール112に追加するためのリクエストが行われる。したがって、これらのデバイスの1つまたは複数は、これらの追加的なデバイスのためのメタデータを記憶するように構成され、データストレージプール112に追加される。
【0038】
[0046] 次に、第2の段階504では、複数のデータストレージデバイス210(2)〜210(100)が、単一のトランザクションを経由して、1つまたは複数のコンピューティングデバイスにより、データストレージプールに追加される(ブロック606)。先の例を継続すると、単一のトランザクションは、プールを作成し、メタデータを選択されたドライブに書き込むために用いられ得る。
【0039】
[0047] データストレージデバイスが既存のデータストレージプールに追加される別の例では、単一のトランザクションは、これらのデバイスをデータストレージプールに追加するためのメタデータを記憶するのに用いられる既存のデータストレージデバイスに向かう。したがって、第3の段階506におけるそのような例では、メタデータの更新512は、これらの追加的なデータストレージデバイス210(2)〜210(100)もメタデータストレージデバイス508自体も同様に、データストレージプール112の一部として含まれるように、単一のトランザクションでデータストレージプール112のメタデータストレージデバイス508に提供される。
【0040】
[0048] 第4の段階508では、メタデータの更新された割り当て514が、これらの追加的なデータストレージデバイスと、関連するデバイスとをストレージ階層においてアドレス指定するために、データストレージプール112に対して実行される。たとえば、データストレージプール112内の1つまたは複数の特定のデータストレージデバイスへのメタデータの分配は、データストレージプール内のデータストレージデバイスの確認された動作特性に基づいて、割り当てられる(ブロック610)。データストレージデバイスが既存のプールに追加されるシナリオについては、これは、データストレージプール112に先に含まれていたデータストレージデバイスと同様にデータストレージプール112に追加された追加的なデータストレージデバイスの動作特性を含み得る。この割り当ては、
図2および
図3との関係で先に述べた技術を用いるなど、様々な方法で、実行される。
【0041】
[0049] メタデータは、次に、割り当てられた分配に従って、シーケンシャルに、一度に1つずつ、1つまたは複数の特定のデータストレージデバイスに分配される(ブロック612)。上述のシナリオに従い、データストレージデバイスが既存のデータストレージプールに追加される場合には、この分配は、故障に対する保護を与えるために、割り当てられた特定のデータストレージデバイスに対して、シーケンシャルに、実行される。
【0042】
[0050] たとえば、メタデータの分配の間に故障に遭遇する場合の「過半数が勝利する」アプローチにおいては、データストレージプールにおけるデータストレージデバイスを、たとえば「ロールバック」、すなわち、新たな割り当てに向かう移動、に設定する状態を決定するために、投票技術が実行される。このようにして、デバイスをシーケンシャルに追加することによって、過半数が維持される。しかし、データストレージプール114が作成されているシナリオでは、そのような関心は、どれも妥当ではなく、したがって、割り当てられた特定のデータストレージデバイスが、たとえば、上述した並列処理を通じて、メタデータの分配を同時に受け取る。
【0043】
[0051] データストレージプール112へのデータストレージデバイス210の追加について説明してきたが、並列処理および単一トランザクションに関するこれらの技術は、複数のデータストレージデバイスのデータストレージプールからの除去にも等しく適用可能であることは、容易に明らかなはずである。先の例を継続すると、追加されたデータストレージデバイスは、データストレージプール112において、既存のデータストレージデバイスを置き換えるために用いられ得る。その結果として、新たなデバイスが最初に追加され、メタデータが再分配される。除去されるべきデバイスが、次に、排除されたものとして印が付され、その次には、これらの印が付されたデバイスからメタデータが除去されるように、メタデータの割り当てが実行され、スレッドの使用を通じた並列処理が、排除されるデバイスをデータストレージプール112から除去するのに用いられることになり、それらのデバイスの再フォーマットなどがなされる。このように、並列処理と単一トランザクションとの使用が、データストレージプール112とプールマネジャモジュール114とにより、従来型の技術と比較して効率とリソース消費とを向上させるために、用いられる。
【0044】
[0052]
図7は、指示に応答してメタデータがデータストレージプールにおいて再均衡化される例におけるシステム700を、示している。
図8は、メタデータがデータストレージプールにおいて再均衡化される例示的な実現における手順800を示している。したがって、以下の説明は、
図7および
図8の両方を、交換可能に、参照する。
【0045】
[0053] 指示が、1つまたは複数のコンピューティングデバイスによって、データストレージプールにおけるメタデータの分配を再均衡化するために、受け取られる(ブロック802)。第1の段階702では、たとえば、再均衡化の指示708が、ストレージサービスプロバイダ112のプールマネジャモジュール114によって受け取られる。再均衡化の指示708は、先に述べたように、消費者104または技術者から生じ得、データストレージプール112のストレージ階層内のデバイスの故障、追加、または削除の検出に応答して、プールマネジャモジュール114によって自動的に生成され得る、などである。
【0046】
[0054] 容認される故障の個数やデフォルトで特定されるものなど、データストレージプールに対して特定された弾力的制約条件を記述するデータが、取得される(ブロック804)。したがって、メタデータの再分配は、記述された弾力的制約条件に基づいて、データストレージプール内の1つまたは複数の特定のデータストレージデバイスに割り当てられ得る(ブロック806)。たとえば、
図2〜
図6との関係で上述したように、メタデータ選択710技術は、動作特性、故障境界などに基づいて、データストレージプール112内の特定のデータストレージデバイス210(1)〜210(N)上のストレージにメタデータを割り当てるのに用いられ得る。さらに、弾力的制約条件712は、また、たとえば、いくつかの故障をサポートするいくつかのデータストレージデバイスを特定するためなど、この割り当ての一部としても、用いられ得る。
【0047】
[0055] 第3の段階706では、再均衡化動作714が実行され、これは、複数のトランザクションの使用や並列処理などを含み得るのであって、上述したように、それは、データストレージプール112におけるメタデータを、再び割り当てる。このようにして、データストレージプール112のプールマネジャモジュール114による管理は、スケーラビリティとパフォーマンスとのゴールをサポートするために、複数の異なる考察のうちの1つまたは複数を扱うことになる。
【0048】
例示的なシステムおよびデバイス
[0056]
図9は、本明細書で説明される様々な技術を実現し得る1つもしくは複数のコンピューティングシステムおよび/またはデバイスを表す例示的なコンピューティングデバイス902を含む例示的なシステムを、全体として900において図示している。これは、プラットフォームによって抽象化されたリソースの一部としてプールマネジャモジュール114を含むことを通じて、図示されている。たとえば、コンピューティングデバイス902は、サービスプロバイダのサーバ、クライアントと関連するデバイス(たとえば、クライアントデバイス)、オンチップシステム、および/または任意の他の適切なコンピューティングデバイスもしくはコンピューティングシステムであり得る。
【0049】
[0057] 図示されている例示的なコンピューティングデバイス902は、処理システム904、1つまたは複数のコンピュータ可読媒体906、および相互通信可能に結合されている1つまたは複数のI/Oインタフェース908を含む。図示されていないが、コンピューティングデバイス902は、様々なコンポーネントを相互に結合するシステムバスまたは他のデータおよびコマンド転送システムを、さらに含み得る。システムバスは、メモリバスもしくはメモリコントローラ、周辺バス、ユニバーサルシリアルバス、および/または、様々なバスアーキテクチャのうちのいずれかを用いるプロセッサバスもしくはローカルバスなど、異なるバス構造のいずれか1つまたはそれらの組合せを含み得る。制御線およびデータ線など、多様な他の例も、考察される。
【0050】
[0058] 処理システム904は、ハードウェアを用いて1つまたは複数の動作を実行する機能を表す。したがって、処理システム904は、プロセッサ、機能ブロックなどとして構成され得るハードウェア要素910を含むものとして、図示されている。これは、特定用途向け集積回路、または、1つまたは複数の半導体を用いて形成される他のロジックデバイスとしての、ハードウェアによる実現を含む。ハードウェア要素910は、ハードウェア要素910がそれによって形成される材料によって、または、ハードウェア要素910において用いられる処理機構によって、限定されることはない。たとえば、プロセッサは、1つまたは複数の半導体および/またはトランジスタ(たとえば、電子集積回路(IC))から構成され得る。そのような文脈では、プロセッサ実行可能な命令とは、電子的に実行可能な命令である。
【0051】
[0059] コンピュータ可読媒体906は、メモリ/ストレージ912を含むものとして、図示されている。メモリ/ストレージ912は、1つまたは複数のコンピュータ可読媒体と関連するメモリ/ストレージ能力を表す。メモリ/ストレージ912は、揮発性媒体(ランダムアクセスメモリ(RAM)など)および/または不揮発性媒体(リードオンリメモリ(ROM)、フラッシュメモリ、光ディスク、磁気ディスクなど)を含む。メモリ/ストレージコンポーネント912は、固定された媒体(たとえば、RAM、ROM、固定ハードドライブなど)と同様に着脱可能な媒体(たとえば、フラッシュメモリ、着脱可能なハードドライブ、光ディスクなど)も含む。コンピュータ可読媒体906は、さらに後述されるように、様々な他の方法で構成されることもある。
【0052】
[0060] 1つまたは複数の入力/出力インタフェース908は、ユーザが様々な入力デバイスを用いて、コマンドおよび情報をコンピューティングデバイス902に入力することを可能にすると共に、様々な出力デバイスを用いて、情報をユーザおよび/または他のコンポーネントもしくはデバイスに提示することを可能にする機能を表す。入力デバイスの例は、キーボード、カーソル制御デバイス(たとえば、マウス)、マイクロフォン、スキャナ、タッチ機能(たとえば、物理的タッチを検出するように構成される静電容量式センサまたは他のセンサ)、(たとえば、タッチを含まないジェスチャとしての動きを認識するために、赤外線周波数などの可視波長または非可視波長を用いる)カメラなどを含む。出力デバイスの例は、ディスプレイデバイス(たとえば、モニタやプロジェクタ)、スピーカ、プリンタ、ネットワークカード、触覚応答デバイスなどを含む。したがって、コンピューティングデバイス902は、ユーザとの対話をサポートするために、さらに後述されるように、多様な方法で構成さる。
【0053】
[0061] 様々な技術が、ソフトウェア、ハードウェア要素、またはプログラムモジュールの一般的な文脈において、本明細書で説明される。一般に、そのようなモジュールは、特定のタスクを実行するまたは特定の抽象的なデータタイプを実現するルーチン、プログラム、オブジェクト、要素、コンポーネント、データ構造などを含む。本明細書で用いられる「モジュール」、「機能」、および「コンポーネント」という用語は、一般に、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せを表す。本明細書で説明される技術の特徴は、プラットフォームには依存することはなく、つまり、その技術が、多様なプロセッサを有する多様な商用コンピューティングプラットフォームにおいて実現され得る、ということを意味している。
【0054】
[0062] 説明されているモジュールおよび技術の実現は、何らかの形態のコンピュータ可読媒体に記憶され得る、または、何らかの形態のコンピュータ可読媒体を経由して伝送され得る。コンピュータ可読媒体は、コンピューティングデバイス902によってアクセスされ得る多様な媒体を含み得る。限定ではなく例として、コンピュータ可読媒体は、「コンピュータ可読記憶媒体」と「コンピュータ可読信号媒体」とを含む。
【0055】
[0063] 「コンピュータ可読記憶媒体」とは、単なる信号伝送、搬送波、または信号自体とは対照的に、情報の永続的および/もしくは非一時的な記憶を可能にする媒体ならびに/またはデバイスを指し得る。したがって、コンピュータ可読記憶媒体とは、非信号伝送媒体を指す。コンピュータ可読記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、ロジック要素/回路、または他のデータなどの情報を記憶するのに適した方法または技術により実現された、揮発性および不揮発性の着脱可能および着脱不可能な媒体および/またはストレージデバイスなどのハードウェアを含む。コンピュータ可読記憶媒体の例は、RAM、ROM、EEPROM、フラッシュメモリ、もしくは他のメモリ技術、CD−ROM、デジタルバーサタイルディスク(DVD)、もしくは他の光ストレージ、ハードディスク、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気記憶デバイス、もしくは、所望の情報を記憶するのに適した、コンピュータがアクセスできる他の記憶デバイス、有体物である媒体、または製品を含み得るが、これらには限定されない。
【0056】
[0064] 「コンピュータ可読信号媒体」とは、ネットワークを経由してなど、コンピューティングデバイス902のハードウェアに命令を伝送するよう構成された信号伝送媒体を指してもよい。信号媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波、データ信号、または他の伝送機構などの変調されたデータ信号において具現化できる。信号媒体は、任意の情報配信媒体も含む。「変調されたデータ信号」という用語は、信号における情報をエンコードするように設定もしくは変更されたその特性セットのうちの1つまたは複数の特性を有する信号を意味する。限定ではなく例として、通信媒体は、ワイアードネットワークまたは直接配線接続などの有線媒体と、音響、無線周波数(RF)、赤外線、および他の無線媒体などの無線媒体と、を含む。
【0057】
[0065] 前述したように、ハードウェア要素910およびコンピュータ可読媒体906は、1つまたは複数の命令を実行するなどの、本明細書で説明される技術の少なくともいくつかの態様を実現するためにいくつかの実施形態において用いられ得る、ハードウェアとして実現された、モジュール、プログラマブルデバイスロジック、および/または固定デバイスロジックを表す。ハードウェアは、集積回路もしくはオンチップシステムのコンポーネント、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)、および、シリコンによる他の実現物または他のハードウェアを含み得る。この文脈では、ハードウェアは、そのハードウェアにより具現化される命令および/またはロジックにより定義されるプログラムタスクを実行する処理デバイスとして、また同様に、たとえば前述したコンピュータ可読記憶媒体なども、実行のための命令を記憶するために利用されるハードウェアとして動作できる。
【0058】
[0066] 前述したものの組合せは、本明細書で説明される様々な技術を実現するためにも用いられる。したがって、ソフトウェア、ハードウェア、または実行可能なモジュールは、何らかの形態のコンピュータ可読記憶媒体上で具現化されるおよび/または1つまたは複数のハードウェア要素910により具現化される1つまたは複数の命令および/またはロジックとして実現される。コンピューティングデバイス902は、ソフトウェアモジュールおよび/またはハードウェアモジュールに対応する特定の命令および/または機能を実現するように構成され得る。したがって、ソフトウェアとしてコンピューティングデバイス902により実行可能なモジュールの実現は、たとえば、処理システム904のコンピュータ可読記憶媒体および/またはハードウェア要素910の使用を通じて、ハードウェアとして少なくとも部分的に実現され得る。命令および/または機能は、本明細書で説明される技術、モジュール、および例を実現する1つまたは複数の製品(たとえば、1つまたは複数のコンピューティングデバイス902および/または処理システム904)により、実行可能/動作可能である。
【0059】
[0067]
図9にさらに図示されているように、例示的なシステム900は、パーソナルコンピュータ(PC)、テレビジョンデバイス、および/またはモバイルデバイス上でアプリケーションを実行する際に、シームレスなユーザエキスペリエンスのためのユビキタス環境を可能にする。サービスおよびアプリケーションは、アプリケーションを利用している間、ビデオゲームをプレイしている間、ビデオを見ている間などに、あるデバイスから次のデバイスに移る際の共通のユーザエキスペリエンスのために、3つすべての環境において実質的に同様に動作する。
【0060】
[0068] 例示的なシステム900では、複数のデバイスが、中央コンピューティングデバイスを通じて、相互接続される。中央コンピューティングデバイスは、複数のデバイスに対してローカルな場合があり得、または、複数のデバイスからリモートに位置する場合もあり得る。ある実施形態では、中央コンピューティングデバイスは、ネットワーク、インターネット、または他のデータ通信リンクを通じて複数のデバイスに接続されている1つまたは複数のサーバコンピュータのクラウドである。
【0061】
[0069] ある実施形態では、この相互接続アーキテクチャは、複数のデバイスのユーザに共通でシームレスなエキスペリエンスを提供するように、複数のデバイスにわたって機能を配信することを可能にする。複数のデバイスの各々は、異なる物理的要件および能力を有し得、中央コンピューティングデバイスは、各デバイス向けにテイラーメイドに作成されながらもすべてのデバイスに共通なエキスペリエンスを各デバイスに提供することを可能にするプラットフォームを用いる。ある実施形態において、ターゲットデバイスのクラスが作成され、エキスペリエンスが、デバイスの一般的なクラスに向けてテイラーメイドされる。デバイスのクラスは、デバイスの物理的特徴、使用のタイプ、または他の共通な特性により定義される。
【0062】
[0070] 様々な実現において、コンピューティングデバイス902は、コンピュータ914、モバイル916、およびテレビジョン918の使用のためなど、様々な異なる構成を想定し得る。これらの構成の各々は、一般に異なる構成および能力を有するデバイスを含んでおり、したがって、コンピューティングデバイス902は、異なるデバイスクラスのうちの1つまたは複数に従って構成される。たとえば、コンピューティングデバイス902は、パーソナルコンピュータ、デスクトップコンピュータ、マルチスクリーンコンピュータ、ラップトップコンピュータ、ネットブックなどを含むデバイスのコンピュータ914クラスとして実現される。
【0063】
[0071] コンピューティングデバイス902は、また、携帯電話機、ポータブル音楽プレーヤ、ポータブルゲームデバイス、タブレットコンピュータ、マルチスクリーンコンピュータなどのモバイルデバイスを含む、デバイスのモバイル916クラスとしても実現され得る。コンピューティングデバイス902は、また、一般に、くつろいだ視聴環境において、より大型のスクリーンを有するデバイスまたはより大型のスクリーンに接続されるデバイスを含むデバイスのテレビジョン918クラスとしても、実現され得る。これらのデバイスは、テレビジョン、セットトップボックス、ゲームコンソールなどを含む。
【0064】
[0072] 本明細書で説明される技術は、コンピューティングデバイス902のこれら様々な構成によりサポートされ、本明細書で説明される技術の特定の例に限定されることはない。この機能は、後述されるように、プラットフォーム922を経由して「クラウド」920における分散システムの使用により、全部または一部が実現される。
【0065】
[0073] クラウド920は、リソース924のためのプラットフォーム922を含む、および/または、そのようなプラットフォーム922を表す。プラットフォーム922は、クラウド920のハードウェアリソース(たとえば、サーバ)とソフトウェアリソースの基礎的な機能を、抽象化している。リソース924は、コンピューティングデバイス902からリモートにあるサーバ上でコンピュータ処理が実行されている間に用いることが可能なアプリケーションおよび/またはデータを含み得る。リソース924は、また、インターネット、および/または、セルラネットワークもしくはWi−Fiネットワークなどの加入者ネットワークを通じて提供されるサービスも含む。
【0066】
[0074] プラットフォーム922は、コンピューティングデバイス902と他のコンピューティングデバイスとを接続するためのリソースおよび機能を抽象化し得る。プラットフォーム922は、また、リソースのスケーリングを抽象化し、プラットフォーム922を経由して実現されるリソース924を求める直面されている要求に、対応するレベルのスケールを提供するように、機能する。したがって、相互接続されたデバイスの実施形態では、本明細書で説明される機能の実現は、システム900の全体に、分散される。たとえば、本明細書で説明される機能は、コンピューティングデバイス902において部分的に実現されると共に、クラウド920の機能を抽象化するプラットフォーム922を経由しても実現される。
【0067】
結論
[0075] 以上では、例示的な実現を、構造上の特徴および/または方法論的な動作に特有の言葉を用いて説明してきたが、添付の特許請求の範囲において定義される実現は、説明された特定の特徴または動作には必ずしも限定されない、ということが理解されるべきである。むしろ、特定の特徴および動作は、特許請求されている特徴を実現する例示的な形態として、開示されている。