JP6616827B2 - スケーラブルなデータストレージプール - Google Patents

スケーラブルなデータストレージプール Download PDF

Info

Publication number
JP6616827B2
JP6616827B2 JP2017511880A JP2017511880A JP6616827B2 JP 6616827 B2 JP6616827 B2 JP 6616827B2 JP 2017511880 A JP2017511880 A JP 2017511880A JP 2017511880 A JP2017511880 A JP 2017511880A JP 6616827 B2 JP6616827 B2 JP 6616827B2
Authority
JP
Japan
Prior art keywords
data storage
storage pool
metadata
devices
pool
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017511880A
Other languages
English (en)
Other versions
JP2017527911A5 (ja
JP2017527911A (ja
Inventor
ピー. ベンチュラ,アシュリー
ラマニ,タルン
メーラ,カラン
クマー ラジパル,シブ
シー. ハベワラ,サロシュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2017527911A publication Critical patent/JP2017527911A/ja
Publication of JP2017527911A5 publication Critical patent/JP2017527911A5/ja
Application granted granted Critical
Publication of JP6616827B2 publication Critical patent/JP6616827B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • G06F11/201Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media between storage system components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/85Active fault masking without idle spares

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Description

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

Claims (19)

  1. 方法のためのコンピュータ実行可能命令を実行する際に、1つまたは複数のプロセッサによって実行される方法であって、
    ストレージ階層における故障領域およびデータストレージプールにおける利用可能なストレージリソースを記述するデータを1つまたは複数のコンピューティングデバイスによって取得するステップと、
    前記ストレージ階層の1つまたは複数のレベル内の前記利用可能なストレージリソースに関連するデバイスの動作特性を、1つまたは複数のコンピューティングデバイスによって確認するステップと、
    記述された前記故障領域と、前記ストレージ階層の1つまたは複数のレベル内のデバイスの確認された前記動作特性とに基づいて、前記データストレージプール内の1つまたは複数の特定のデータストレージデバイスに、前記1つまたは複数のコンピューティングデバイスによるメタデータの分配を割り当てるステップと
    を含み、
    前記割り当ては、前記メタデータの少なくとも一部を受信するように構成されたデータストレージプール内の特定数のデータストレージデバイスに対する、故障領域の使用の数を最大化するように実行される方法。
  2. 前記メタデータは、データがデータストレージプールに記憶される、対応する位置を見つけるために使用可能である、請求項1に記載の方法。
  3. 前記動作特性は、正常性、データ接続タイプ、メディアタイプ、または現在のメタデータステータスを含む、請求項1に記載の方法。
  4. 割り当てられたメタデータを受信するために使用される、前記データストレージプール内の1つまたは複数の特定のデータストレージデバイスの数は、前記データストレージプールについて指定された1つまたは複数の弾力的制約条件に少なくとも部分的に基づいている、請求項1に記載の方法。
  5. 前記弾力的制約条件は、動作可能のまま前記データストレージプールによって容認されるデバイス障害の数を特定する、請求項4に記載の方法。
  6. 前記故障領域がデータセンター、ラック、筐体、データストレージデバイス、およびストレージ階層におけるストレージユニットレベルを含む、請求項1に記載の方法。
  7. 指定された数のデータストレージデバイスは、データストレージプールについて指定された1つまたは複数の弾力的制約条件に少なくとも部分的に基づいている、請求項1に記載の方法。
  8. 少なくとも部分的にハードウェアに実装された1つまたは複数のモジュールを備えるシステムであって、前記1つまたは複数のモジュールは、
    複数の並列スレッドを使用して複数のデータストレージデバイスを同時にフォーマットするステップと、
    同時フォーマットされた前記複数のデータストレージデバイスを単一のトランザクションを介してデータストレージプールに追加するステップと、
    前記追加に応じて、前記データストレージプール内の各データストレージデバイスの動作特性に基づいて、前記データストレージプールにおけるメタデータの分配を割り当てるステップと、
    前記複数の並列スレッドを使用して前記データストレージプールから少なくとも1つまたは複数の、他のデータストレージデバイスを除去するステップと、
    前記データストレージプール内に残っている各データストレージデバイスの動作特性に基づいて、前記データストレージプール内のメタデータの分配の再均衡化するステップと
    を含む動作を実行するように構成されている、システム。
  9. 前記動作特性は、正常性、データ接続タイプ、メディアタイプ、または現在のメタデータステータスを含む、請求項8に記載のシステム。
  10. 前記割り当ては、前記データストレージプール内の利用可能なストレージリソースのストレージ階層における故障領域に少なくとも部分的に基づく、請求項8に記載のシステム。
  11. 前記割り当ては、前記メタデータの少なくとも一部を受信するように構成されたデータストレージプール内の特定数のデータストレージデバイスに対する、故障領域の使用の数を最大化するように実行される、請求項10に記載のシステム。
  12. 複数のデータストレージデバイスのデータストレージプールへの追加に応答して、データストレージプール単一データストレージデバイス内のメタデータを更新するステップをさらに含む、請求項8に記載のシステム。
  13. 少なくとも部分的にハードウェアに実装された1つまたは複数のモジュールを備えるシステムであって、前記1つまたは複数のモジュールは、
    データストレージプール内のメタデータの分配を再均衡化するための指示を受信するステップと、
    前記データストレージプールについて指定された弾力的制約条件を記述するデータを取得するステップと、
    記述された前記弾力的制約条件に基づいて、前記データストレージプール内の1つまたは複数の特定のデータストレージデバイスへのメタデータの再分配を割り当てるステップと
    を含む動作を実行するように構成されており、
    前記割り当ては、前記データストレージプール内の利用可能なストレージリソースのストレージ階層における故障領域に少なくとも部分的に基づき、
    前記割り当ては、メタデータの少なくとも一部を受信するように構成されたデータストレージプール内の特定数のデータストレージデバイスのための故障領域の使用の数を最大にするように実行される、システム。
  14. 前記弾力的制約条件は、動作可能のまま前記データストレージプールによって容認されるデバイス障害の数を特定する、請求項13に記載のシステム。
  15. データストレージプール内のメタデータの割り当て再分配は、データストレージプール内のデバイスの動作特性に少なくとも部分的に基づく、請求項13に記載のシステム。
  16. 前記動作特性は、正常性、データ接続タイプ、メディアタイプ、または現在のメタデータステータスを含む、請求項15に記載のシステム。
  17. 前記複数の並列スレッドを使用して前記データストレージプールから少なくとも1つまたは複数の、他のデータストレージデバイスを除去するステップと、
    前記データストレージプール内に残っている各データストレージデバイスの動作特性に基づいて、前記データストレージプール内のメタデータの分配の再均衡化するステップと
    をさらに含む、請求項13に記載のシステム。
  18. メタデータは、データがデータストレージプールに記憶される対応する位置を見つけるために使用可能である、請求項13に記載のシステム。
  19. 前記故障領域がデータセンター、ラック、筐体、データストレージデバイス、およびストレージ階層におけるストレージユニットレベルを含む、請求項13に記載のシステム。
JP2017511880A 2014-09-12 2015-09-11 スケーラブルなデータストレージプール Active JP6616827B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/485,497 2014-09-12
US14/485,497 US9678839B2 (en) 2014-09-12 2014-09-12 Scalable data storage pools
PCT/US2015/049548 WO2016040722A1 (en) 2014-09-12 2015-09-11 Scalable data storage pools

Publications (3)

Publication Number Publication Date
JP2017527911A JP2017527911A (ja) 2017-09-21
JP2017527911A5 JP2017527911A5 (ja) 2018-09-13
JP6616827B2 true JP6616827B2 (ja) 2019-12-04

Family

ID=54251725

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017511880A Active JP6616827B2 (ja) 2014-09-12 2015-09-11 スケーラブルなデータストレージプール

Country Status (7)

Country Link
US (2) US9678839B2 (ja)
EP (1) EP3191959B1 (ja)
JP (1) JP6616827B2 (ja)
CN (1) CN106663042B (ja)
BR (1) BR112017003660B1 (ja)
RU (1) RU2702268C2 (ja)
WO (1) WO2016040722A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9934389B2 (en) 2015-12-18 2018-04-03 Amazon Technologies, Inc. Provisioning of a shippable storage device and ingesting data from the shippable storage device
US11188564B1 (en) * 2016-06-27 2021-11-30 Amazon Technologies, Inc. Shippable storage devices for bulk data transfer, storage, and remote synchronization
JP7053399B2 (ja) 2018-07-31 2022-04-12 キオクシア株式会社 情報処理システム
US11442642B2 (en) 2019-01-29 2022-09-13 Dell Products L.P. Method and system for inline deduplication using erasure coding to minimize read and write operations
US20200241781A1 (en) 2019-01-29 2020-07-30 Dell Products L.P. Method and system for inline deduplication using erasure coding
US11023324B2 (en) * 2019-01-31 2021-06-01 EMC IP Holding Company LLC Harmonization of failure domains in a distributed system
US11157482B2 (en) * 2019-02-05 2021-10-26 Seagate Technology Llc Data distribution within a failure domain tree
CN112068976A (zh) * 2019-06-10 2020-12-11 北京京东尚科信息技术有限公司 数据备份存储方法及装置、电子设备和存储介质
US11372730B2 (en) 2019-07-31 2022-06-28 Dell Products L.P. Method and system for offloading a continuous health-check and reconstruction of data in a non-accelerator pool
US11328071B2 (en) 2019-07-31 2022-05-10 Dell Products L.P. Method and system for identifying actor of a fraudulent action during legal hold and litigation
US11609820B2 (en) 2019-07-31 2023-03-21 Dell Products L.P. Method and system for redundant distribution and reconstruction of storage metadata
US11775193B2 (en) 2019-08-01 2023-10-03 Dell Products L.P. System and method for indirect data classification in a storage system operations
US11416357B2 (en) * 2020-03-06 2022-08-16 Dell Products L.P. Method and system for managing a spare fault domain in a multi-fault domain data cluster
US11301327B2 (en) 2020-03-06 2022-04-12 Dell Products L.P. Method and system for managing a spare persistent storage device and a spare node in a multi-node data cluster
US11281535B2 (en) 2020-03-06 2022-03-22 Dell Products L.P. Method and system for performing a checkpoint zone operation for a spare persistent storage
US11418326B2 (en) 2020-05-21 2022-08-16 Dell Products L.P. Method and system for performing secure data transactions in a data cluster
US11886728B2 (en) * 2021-08-13 2024-01-30 Micron Technology, Inc. Undo capability for memory devices

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7865596B2 (en) 2000-11-02 2011-01-04 Oracle America, Inc. Switching system for managing storage in digital networks
US8671132B2 (en) 2003-03-14 2014-03-11 International Business Machines Corporation System, method, and apparatus for policy-based data management
WO2005043323A2 (en) * 2003-10-27 2005-05-12 Archivas, Inc. Policy-based management of a redundant array of independent nodes
JP4483342B2 (ja) * 2004-02-27 2010-06-16 株式会社日立製作所 システム復旧方法
US7657581B2 (en) * 2004-07-29 2010-02-02 Archivas, Inc. Metadata management for fixed content distributed data storage
US7444360B2 (en) * 2004-11-17 2008-10-28 International Business Machines Corporation Method, system, and program for storing and using metadata in multiple storage locations
US8495010B2 (en) 2005-11-04 2013-07-23 Oracle America, Inc. Method and system for adaptive metadata replication
US7574560B2 (en) * 2006-01-03 2009-08-11 Emc Corporation Methods, systems, and computer program products for dynamic mapping of logical units in a redundant array of inexpensive disks (RAID) environment
US20070214105A1 (en) * 2006-03-08 2007-09-13 Omneon Video Networks Network topology for a scalable data storage system
US7640278B2 (en) * 2006-06-28 2009-12-29 International Business Machines Corporation System and method for implementing a partial-blocking consistency point in a database
US7933875B2 (en) * 2006-08-24 2011-04-26 Sun Microsystems, Inc. File system with distributed components
US7698519B2 (en) 2006-08-31 2010-04-13 International Business Machines Corporation Backup of hierarchically structured storage pools
US8090792B2 (en) * 2007-03-08 2012-01-03 Nec Laboratories America, Inc. Method and system for a self managing and scalable grid storage
US8495111B1 (en) * 2007-09-28 2013-07-23 Symantec Corporation System and method of hierarchical space management for storage systems
JP2009163664A (ja) * 2008-01-10 2009-07-23 Nippon Telegr & Teleph Corp <Ntt> 障害耐性を備えた情報検索装置、障害耐性を備えた情報検索方法、障害耐性を備えた情報検索プログラムおよびそのプログラムを記録した記録媒体
US8583893B2 (en) 2009-05-28 2013-11-12 Marvell World Trade Ltd. Metadata management for virtual volumes
US8589554B2 (en) 2009-12-30 2013-11-19 Bmc Software, Inc. Intelligent and elastic resource pools for heterogeneous datacenter environments
US8793290B1 (en) 2010-02-24 2014-07-29 Toshiba Corporation Metadata management for pools of storage disks
US8595184B2 (en) * 2010-05-19 2013-11-26 Microsoft Corporation Scaleable fault-tolerant metadata service
US9244976B1 (en) * 2010-12-16 2016-01-26 The George Washington University and Board of Regents Just-in-time analytics on large file systems and hidden databases
US8706946B2 (en) 2011-02-11 2014-04-22 International Business Machines Corporation Extender storage pool system
RU108662U1 (ru) * 2011-04-27 2011-09-20 Учреждение Российской академии наук Институт программных систем им. А.К. Айламазяна РАН (ИПС им. А.К. Айламазяна РАН) Система хранения данных с параллельным доступом
US8806154B1 (en) 2011-05-06 2014-08-12 Chelsio Communications, Inc. Thin provisioning row snapshot with reference count map
US20130067346A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Content User Experience
CN102521063B (zh) * 2011-11-30 2013-12-25 广东电子工业研究院有限公司 一种适用于虚拟机迁移和容错的共享存储方法
US9015411B2 (en) * 2011-12-02 2015-04-21 Compellent Technologies System and method for unbalanced raid management
US20140149663A1 (en) 2012-11-25 2014-05-29 Tonian Inc. Storage pools management and/or presentation
US9152642B2 (en) * 2012-12-21 2015-10-06 Zetta, Inc. Systems and methods for on-demand data storage
US8949655B2 (en) * 2013-01-31 2015-02-03 Alcatel Lucent Preventing extreme coresidency hazards in cloud computing
US10671500B2 (en) * 2014-06-09 2020-06-02 Oracle International Corporation Sequential resilvering of storage devices with reduced restarts

Also Published As

Publication number Publication date
CN106663042A (zh) 2017-05-10
JP2017527911A (ja) 2017-09-21
BR112017003660A2 (pt) 2017-12-12
RU2017107276A (ru) 2018-09-07
US9678839B2 (en) 2017-06-13
BR112017003660B1 (pt) 2022-12-20
EP3191959A1 (en) 2017-07-19
WO2016040722A1 (en) 2016-03-17
RU2702268C2 (ru) 2019-10-07
EP3191959B1 (en) 2018-07-25
CN106663042B (zh) 2019-11-22
RU2017107276A3 (ja) 2019-04-11
US20180067829A1 (en) 2018-03-08
US20160077933A1 (en) 2016-03-17
US10409696B2 (en) 2019-09-10

Similar Documents

Publication Publication Date Title
JP6616827B2 (ja) スケーラブルなデータストレージプール
US10360199B2 (en) Partitioning and rebalancing data storage
US10601680B2 (en) Application resiliency using APIs
CN105027068A (zh) 在存储系统中执行复制
US20150236974A1 (en) Computer system and load balancing method
US9854037B2 (en) Identifying workload and sizing of buffers for the purpose of volume replication
US20170147452A1 (en) Host swap hypervisor that provides high availability for a host of virtual machines
EP3731093B1 (en) Service location management in computing systems
US10019182B2 (en) Management system and management method of computer system
JP5632820B2 (ja) 広域分散構成変更システム
JP2023547895A (ja) データセンタ内で障害ドメインを電気的に絶縁するための構成を生成するための技術
US9875373B2 (en) Prioritization of users during disaster recovery
US10942779B1 (en) Method and system for compliance map engine
US10756953B1 (en) Method and system of seamlessly reconfiguring a data center after a failure
US20210141538A1 (en) Storage management apparatus, storage management method, and storage management program
JP6030757B2 (ja) 仮想環境と非仮想環境が混在するクラウドシステムにおける監視項目制御方法、管理計算機及び計算機システム
Salapura et al. Enabling enterprise-level workloads in the enterprise-class cloud
CN116166432A (zh) 基于Jenkins的负载均衡方法及高可用系统
JP2017102818A (ja) 仮想計算機管理システム

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20170428

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180801

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180801

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190627

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190703

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191001

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191010

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191108

R150 Certificate of patent or registration of utility model

Ref document number: 6616827

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250