(57)【要約】  ストレージ・システム内で処理能力を管理する方法が提供される。この方法は、複数のブレードを提供することであって、第１のサブセットのそれぞれは、ストレージ・ノードおよびストレージ・メモリを有し、第２の異なるサブセットのそれぞれは、コンピュート専用ノードを有する、提供することを含む。この方法は、複数のブレードにまたがって、少なくとも１つのコンピュート専用ノードを含む複数のノードにオーソリティを分配することであって、各オーソリティは、ある範囲のユーザ・データの所有権を有する、分配することを含む。【選択図】図５
2019517063.tif 000002
【特許請求の範囲】
【請求項１】
複数のブレードを提供することであって、第１のサブセットのそれぞれは、ストレージ・ノードおよびストレージ・メモリを有し、第２の異なるサブセットのそれぞれは、コンピュート専用ノードを有する、提供することと、
前記複数のブレードにまたがって、少なくとも１つのコンピュート専用ノードを含む複数のノードにオーソリティを分配することであって、各オーソリティは、ある範囲のユーザ・データのオーナーシップを有する、分配することと
を含む、ストレージ・システム内で処理能力を管理する方法。
【請求項２】
コンピュート専用ノードを有する別のブレードを追加することと、
前記複数のブレードおよび前記別のブレードにまたがって前記オーソリティを再分配することと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記オーソリティの前記分配は、
前記ストレージ・システムへの前記複数のブレードのうちのさらなる１つの追加に応答して、前記複数のブレードのうちの１つまたは複数から前記複数のブレードのうちの前記さらなる１つへ１つまたは複数のオーソリティを移動すること
を含む、請求項１に記載の方法。
【請求項４】
前記オーソリティの前記分配は、前記複数のブレードのそれぞれについて、前記オーソリティにまたがるコンピューティング・リソースの平衡化に従う、請求項１に記載の方法。
【請求項５】
サービスの複数のクラスのそれぞれの入出力処理が個々のサービス・クラスに基づいて１つまたは複数のストレージ・ノードまたはコンピュート・ノードに割り当てられるようにするために、前記複数のブレードにまたがって外部Ｉ／Ｏ（入出力）処理のコンピューティング・タスクを分配すること
をさらに含む、請求項１に記載の方法。
【請求項６】
前記複数のブレードは、ランダム・アクセス・メモリ（ＲＡＭ）の量、プロセッサ速度、またはプロセッサ・コアの個数を含む処理特性の第１のセットを有する第１のブレードと、ＲＡＭの量、プロセッサ速度、またはプロセッサ・コアの個数を含む処理特性の第２のセットを有する第２のブレードとを含み、
前記第１のブレードのオーソリティおよび前記第２のブレードのオーソリティから使用可能な前記処理特性を平衡化するために、前記第１のブレードより多数のオーソリティが、前記第２のブレードに分配される
請求項１に記載の方法。
【請求項７】
アプリケーション・レイヤ内の１つまたは複数のアプリケーションのコンピューティング・タスクは、前記複数のブレードのうちの少なくとも１つにまたがって分配され、
前記オーソリティの前記分配は、前記複数のブレードのそれぞれで使用可能な処理能力の相対量に比例する
請求項１に記載の方法。
【請求項８】
プロセッサによって実行される時に、前記プロセッサに、
複数のブレードを提供することであって、第１のサブセットのそれぞれは、ストレージ・ノードおよびストレージ・メモリを有し、第２の異なるサブセットのそれぞれは、コンピュート専用ノードを有する、提供することと、
前記複数のブレードにまたがって、少なくとも１つのコンピュート専用ノードを含む複数のノードにオーソリティを分配することであって、各オーソリティは、ある範囲のユーザ・データのオーナーシップを有する、分配することと
を含む方法を実行させる命令を有する有形の非一時的コンピュータ可読媒体。
【請求項９】
前記方法は、
コンピュート専用ノードを有する別のブレードを追加することと、
前記複数のブレードおよび前記別のブレードにまたがって前記オーソリティを再分配することと
をさらに含む、請求項８に記載のコンピュータ可読媒体。
【請求項１０】
前記オーソリティの前記分配は、
前記ストレージ・システムへの前記複数のブレードのうちのさらなる１つの追加に応答して、前記複数のブレードのうちの１つまたは複数から前記複数のブレードのうちの前記さらなる１つへ１つまたは複数のオーソリティを移動すること
を含む、請求項８に記載のコンピュータ可読媒体。
【請求項１１】
前記オーソリティの前記分配は、前記複数のブレードのそれぞれについて、前記オーソリティにまたがるコンピューティング・リソースの平衡化に従う、請求項８に記載のコンピュータ可読媒体。
【請求項１２】
前記方法は、
サービスの複数のクラスのそれぞれの入出力処理が個々のサービス・クラスに基づいて１つまたは複数のストレージ・ノードまたはコンピュート・ノードに割り当てられるようにするために、前記複数のブレードにまたがって外部Ｉ／Ｏ（入出力）処理のコンピューティング・タスクを分配すること
をさらに含む、請求項８に記載のコンピュータ可読媒体。
【請求項１３】
前記複数のブレードは、ランダム・アクセス・メモリ（ＲＡＭ）の量、プロセッサ速度、またはプロセッサ・コアの個数を含む処理特性の第１のセットを有する第１のブレードと、ＲＡＭの量、プロセッサ速度、またはプロセッサ・コアの個数を含む処理特性の第２のセットを有する第２のブレードとを含み、
前記第１のブレードのオーソリティおよび前記第２のブレードのオーソリティから使用可能な前記処理特性を平衡化するために、前記第１のブレードより多数のオーソリティが、前記第２のブレードに分配される
請求項８に記載のコンピュータ可読媒体。
【請求項１４】
ストレージ・システムであって、
複数のブレードであって、第１のサブセットのそれぞれは、ストレージ・ノードおよびストレージ・メモリを有し、第２の異なるサブセットのそれぞれは、コンピュート専用ノードを有する、複数のブレード
を含み、前記複数のブレードは、前記ストレージ・システムを形成し、オーソリティは、前記複数のブレードにまたがって、少なくとも１つのコンピュート専用ノードを含む複数のノードに分配され、各オーソリティは、ある範囲のユーザ・データのオーナーシップを有する
ストレージ・システム。
【請求項１５】
コンピュート専用ノードを有する別のブレードを追加し、
前記複数のブレードおよび前記別のブレードにまたがって前記オーソリティを再分配する
ように構成される、請求項１４に記載のストレージ・システム。
【請求項１６】
前記複数のブレードは、前記ストレージ・システムへの前記複数のブレードのうちのさらなる１つの追加に応答して、前記複数のブレードのうちの１つまたは複数から前記複数のブレードのうちの前記さらなる１つへ１つまたは複数のオーソリティを移動することによって前記オーソリティを分配するように構成される、請求項１４に記載のストレージ・システム。
【請求項１７】
前記オーソリティは、前記複数のブレードのそれぞれについて、前記オーソリティにまたがるコンピューティング・リソースの平衡化に従って分配される、請求項１４に記載のストレージ・システム。
【請求項１８】
外部Ｉ／Ｏ（入出力）処理のコンピューティング・タスクは、サービスの複数のクラスのそれぞれの入出力処理が個々のサービス・クラスに基づいて１つまたは複数のストレージ・ノードまたはコンピュート・ノードに割り当てられるようにするために、前記複数のブレードにまたがって分配される
請求項１４に記載のストレージ・システム。
【請求項１９】
前記複数のブレードは、ランダム・アクセス・メモリ（ＲＡＭ）の量、プロセッサ速度、またはプロセッサ・コアの個数を含む処理特性の第１のセットを有する第１のブレードと、ＲＡＭの量、プロセッサ速度、またはプロセッサ・コアの個数を含む処理特性の第２のセットを有する第２のブレードとを含み、
前記第１のブレードのオーソリティおよび前記第２のブレードのオーソリティから使用可能な前記処理特性を平衡化するために、前記第１のブレードより多数のオーソリティが、前記第２のブレードに分配される
請求項１４に記載のストレージ・システム。
【請求項２０】
アプリケーション・レイヤ内の１つまたは複数のアプリケーションのコンピューティング・タスクは、前記複数のブレードのうちの少なくとも１つにまたがって分配され、
前記オーソリティの前記分配は、前記複数のブレードのそれぞれで使用可能な処理能力の相対量に比例する
請求項１４に記載のストレージ・システム。
【発明の詳細な説明】
【背景技術】
【０００１】
［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］  様々な実施形態では、エンタープライズ・コンピューティング・システム１０２は、ストレージ・クラスタを投入された複数のラックを含むことができ、これらは、クラスタまたはサーバ・ファーム内などの単一の物理位置に配置され得る。他の実施形態では、複数のラックが、ネットワークによって接続された、様々な都市、州、または国などの複数の物理位置に配置され得る。ラックのそれぞれ、ストレージ・クラスタのそれぞれ、ストレージ・ノードのそれぞれ、および不揮発性ソリッド・ステート・ストレージのそれぞれは、他のものとは独立に再構成可能であるストレージ空間のそれぞれの量を伴って個別に構成され得る。したがって、ストレージ容量は、不揮発性ソリッド・ステート・ストレージのそれぞれで柔軟に追加され、アップグレードされ、取り去られ、復元され、かつ／または再構成され得る。前に言及したように、各ストレージ・ノードは、いくつかの実施形態で１つまたは複数のサーバを実施することができる。
【００１８】
［0027］  図３は、図１のシャーシ内での使用に適する、異なる容量を有する複数のストレージ・ノード１５０および不揮発性ソリッド・ステート・ストレージ１５２を示すブロック図である。各ストレージ・ノード１５０は、不揮発性ソリッド・ステート・ストレージ１５２の１つまたは複数のユニットを有することができる。各不揮発性ソリッド・ステート・ストレージ１５２は、いくつかの実施形態で、ストレージ・ノード１５０上または他のストレージ・ノード１５０内の他の不揮発性ソリッド・ステート・ストレージ１５２とは異なる容量を含むことができる。代替案では、１つのストレージ・ノード上または複数のストレージ・ノード上の不揮発性ソリッド・ステート・ストレージ１５２のすべてが、同一の容量または同一容量および／もしくは異なる容量の組合せを有することができる。この柔軟性が、図３に示されており、図３は、４ＴＢ容量、８ＴＢ容量、および３２ＴＢ容量の混合された不揮発性ソリッド・ステート・ストレージ１５２を有する１つのストレージ・ノード１５０と、それぞれ３２ＴＢ容量の不揮発性ソリッド・ステート・ストレージ１５２を有するもう１つのストレージ・ノード１５０と、それぞれ８ＴＢ容量の不揮発性ソリッド・ステート・ストレージ１５２を有するさらに別のストレージ・ノード１５０との例を示す。様々なさらなる組合せおよび容量が、本明細書の教示に従ってたやすく案出される。クラスタリング、たとえばストレージ・クラスタを形成するためのストレージのクラスタリングの文脈では、ストレージ・ノードは、不揮発性ソリッド・ステート・ストレージ１５２とされるか、これを含むことができる。不揮発性ソリッド・ステート・ストレージ１５２は、以下でさらに説明するように、不揮発性ソリッド・ステート・ストレージ１５２が不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）構成要素を含み得るので、便利なクラスタリング・ポイントである。
【００１９】
［0028］  図１および図３を参照すると、ストレージ・クラスタ１６０はスケーラブルであり、これは、上で説明したように、不均一なストレージ・サイズを有するストレージ容量がたやすく追加されることを意味する。１つまたは複数のストレージ・ノード１５０が、各シャーシに差し込まれ、除去され得、ストレージ・クラスタは、いくつかの実施形態で自己構成する。プラグイン・ストレージ・ノード１５０は、配達時にシャーシに設置済みであれ後に追加されるのであれ、異なるサイズを有することができる。たとえば、一実施形態では、ストレージ・ノード１５０は、４ＴＢの任意の倍数、たとえば８ＴＢ、１２ＴＢ、１６ＴＢ、３２ＴＢなどを有することができる。さらなる実施形態では、ストレージ・ノード１５０は、他のストレージ量またはストレージ容量の任意の倍数を有することができる。各ストレージ・ノード１５０のストレージ容量は、ブロードキャストされ、データをどのようにストライピングするべきかの判断に影響する。最大のストレージ効率のために、一実施形態は、シャーシ内の１つまでまたは２つまでの不揮発性ソリッド・ステート・ストレージ・ユニット１５２またはストレージ・ノード１５０の消失を伴う継続動作という所定の要件の支配下で、ストライプにおいてできる限り幅広く自己構成することができる。
【００２０】
［0029］  図４は、複数のストレージ・ノード１５０を結合する、通信相互接続１７０および配電バス１７２を示すブロック図である。戻って図１を参照すると、通信相互接続１７０は、いくつかの実施形態でスイッチ・ファブリック１４６内に含まれまたはこれを用いて実施され得る。複数のストレージ・クラスタ１６０がラックを占有する場合に、通信相互接続１７０は、いくつかの実施形態で、ラック・スイッチの最上部に含まれ、またはこれを用いて実施され得る。図４に示されているように、ストレージ・クラスタ１６０は、単一のシャーシ１３８内に閉じこめられる。外部ポート１７６は、通信相互接続１７０を介してストレージ・ノード１５０に結合され、外部ポート１７４は、ストレージ・ノードに直接に結合される。外部電力ポート１７８は、配電バス１７２に結合される。ストレージ・ノード１５０は、図３を参照して説明したように、不揮発性ソリッド・ステート・ストレージ１５２の変化する量および異なる容量を含むことができる。さらに、１つまたは複数のストレージ・ノード１５０は、図４に示されているようにコンピュート専用のストレージ・ノードとされ得る。オーソリティ１６８が、たとえばメモリ内に記憶されるリストまたは他のデータ構造として、不揮発性ソリッド・ステート・ストレージ１５２上で実施される。いくつかの実施形態では、オーソリティは、不揮発性ソリッド・ステート・ストレージ１５２内に記憶され、不揮発性ソリッド・ステート・ストレージ１５２のコントローラまたは他のプロセッサ上で実行するソフトウェアによってサポートされる。さらなる実施形態では、オーソリティ１６８は、たとえばメモリ１５４内に記憶されるリストまたは他のデータ構造として、ストレージ・ノード１５０上で実施され、ストレージ・ノード１５０のＣＰＵ  １５６上で実行するソフトウェアによってサポートされる。オーソリティ１６８は、いくつかの実施形態で、データが不揮発性ソリッド・ステート・ストレージ１５２内でどのようにどこに記憶されるのかを制御する。この制御は、どのタイプのイレージャ・コーディング方式がデータに適用されるのかと、どのストレージ・ノード１５０がデータのどの部分を有するのかと、を判定するのを援助する。各オーソリティ１６８は、不揮発性ソリッド・ステート・ストレージ１５２に割り当てられ得る。各オーソリティは、様々な実施形態で、ｉｎｏｄｅ番号、セグメント番号、または、ファイル・システム、ストレージ・ノード１５０、もしくは不揮発性ソリッド・ステート・ストレージ１５２によってデータに割り当てられる他のデータ識別子の範囲を制御することができる。
【００２１】
［0030］  データのすべての片およびメタデータのすべての片は、いくつかの実施形態で、システム内で冗長性を有する。さらに、データのすべての片およびメタデータのすべての片は、オーソリティと呼ばれる場合もある所有者を有する。そのオーソリティが、たとえばストレージ・ノードの障害を介して、到達不能である場合には、そのデータまたはメタデータをどのようにして見つけるべきかに関する継続のプランがある。様々な実施形態では、オーソリティ１６８の冗長なコピーがある。オーソリティ１６８は、いくつかの実施形態ではストレージ・ノード１５０および不揮発性ソリッド・ステート・ストレージ１５２に対する関係を有する。データ・セグメント番号またはデータの他の識別子の範囲をカバーする各オーソリティ１６８は、特定の不揮発性ソリッド・ステート・ストレージ１５２に割り当てられ得る。いくつかの実施形態では、そのような範囲のすべてに関するオーソリティ１６８が、ストレージ・クラスタの不揮発性ソリッド・ステート・ストレージ１５２にわたって分配される。各ストレージ・ノード１５０は、そのストレージ・ノード１５０の不揮発性ソリッド・ステート・ストレージ１５２へのアクセスを提供するネットワーク・ポートを有する。データは、セグメント内に記憶され得、このセグメントは、セグメント番号を関連付けられ、そのセグメント番号は、いくつかの実施形態ではＲＡＩＤ（ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋ）ストライプの構成の間接参照である。したがって、オーソリティ１６８の割当および使用は、データへの間接参照を確立する。間接参照は、いくつかの実施形態によれば、間接的に、この場合にはオーソリティ１６８を介して、データを参照する能力と呼ばれる場合がある。セグメントは、不揮発性ソリッド・ステート・ストレージ１５２のセットと、データを含む可能性がある不揮発性ソリッド・ステート・ストレージ１５２のセットへのローカル識別子とを識別する。いくつかの実施形態では、ローカル識別子は、デバイスへのオフセットであり、複数のセグメントによって順次再利用され得る。他の実施形態では、ローカル識別子は、特性のセグメントに関して一意であり、絶対に再利用されない。不揮発性ソリッド・ステート・ストレージ１５２内のオフセットは、不揮発性ソリッド・ステート・ストレージ１５２（ＲＡＩＤストライプの形の）に書き込むかこれから読み取るためにデータを突き止めることに適用される。データは、不揮発性ソリッド・ステート・ストレージ１５２の複数のユニットにまたがってストライピングされ、この不揮発性ソリッド・ステート・ストレージ１５２は、特定のデータ・セグメントのオーソリティ１６８を有する不揮発性ソリッド・ステート・ストレージ１５２を含み、またはこれとは異なるものとされ得る。
【００２２】
［0031］  たとえばデータ移動中またはデータ再構成中に、データの特定のセグメントが配置される場所に変化がある場合には、その不揮発性ソリッド・ステート・ストレージ１５２またはそのオーソリティ１６８を有するストレージ・ノード１５０にある、そのデータ・セグメントのオーソリティ１６８が相談されなければならない。データの特定の片を突き止めるために、諸実施形態は、データ・セグメントのハッシュ値を計算し、またはｉｎｏｄｅ番号もしくはデータ・セグメント番号を適用する。この動作の出力は、データのその特定の片のオーソリティ１６８を有する不揮発性ソリッド・ステート・ストレージ１５２をポイントする。いくつかの実施形態では、この動作に対して２つのステージがある。第１のステージは、エンティティ識別子（ＩＤ）、たとえば、セグメント番号、ｉｎｏｄｅ番号、またはディレクトリ番号をオーソリティ識別子にマッピングする。このマッピングは、ハッシュまたはビット・マスクなどの計算を含むことができる。第２のステージは、オーソリティ識別子を特定の不揮発性ソリッド・ステート・ストレージ１５２にマッピングすることであり、これは、明示的なマッピングを介して行われ得る。動作は、反復可能であり、その結果、計算が実行される時に、計算の結果は、そのオーソリティ１６８を有する特定の不揮発性ソリッド・ステート・ストレージ１５２を繰り返して信頼できる形でポイントするようになる。動作は、入力として到達可能なストレージ・ノードのセットを含むことができる。到達可能な不揮発性ソリッド・ステート・ストレージ・ユニットのセットが変化する場合には、最適セットが変化する。いくつかの実施形態では、永続される値は、現在の割当（常に真である）であり、計算される値は、クラスタがそれに向かう再構成を試みるターゲット割当である。この計算は、到達可能であり同一のクラスタを構成する不揮発性ソリッド・ステート・ストレージ１５２のセットの存在下でオーソリティの最適不揮発性ソリッド・ステート・ストレージ１５２を判定するのに使用され得る。この計算は、割り当てられた不揮発性ソリッド・ステート・ストレージが到達不能である場合であってもオーソリティが判定され得るようにするために、オーソリティを不揮発性ソリッド・ステート・ストレージ・マッピングに記録もするピア不揮発性ソリッド・ステート・ストレージ１５２の順序集合をも判定する。いくつかの実施形態では、特定のオーソリティ１６８が使用不能である場合に、複製オーソリティ１６８または代理オーソリティ１６８が相談され得る。
【００２３】
［0032］  図１〜図４を参照すると、ストレージ・ノード１５０上のＣＰＵ  １５６の多数のタスクのうちの２つは、書込データを分解することおよび読取データを再アセンブルすることである。システムが、データが書き込まれなければならないと判定した時に、そのデータのオーソリティ１６８が、上記のように突き止められる。データのセグメントＩＤが既に判定されている時には、書き込む要求が、セグメントから判定されたオーソリティ１６８のホストであると現在判定されている不揮発性ソリッド・ステート・ストレージ１５２に転送される。不揮発性ソリッド・ステート・ストレージ１５２および対応するオーソリティ１６８が存在するストレージ・ノード１５０のホストＣＰＵ  １５６は、データを分解しまたはシャードし、様々な不揮発性ソリッド・ステート・ストレージ１５２にデータを送信する。送信されたデータは、イレージャ・コーディング方式に従ってデータ・ストライプとして書き込まれる。いくつかの実施形態では、データがプルされることが要求され、他の実施形態では、データはプッシュされる。逆に、データが読み取られる時には、データを含むセグメントＩＤのオーソリティ１６８が、上で説明したように突き止められる。不揮発性ソリッド・ステート・ストレージ１５２および対応するオーソリティ１６８が存在するストレージ・ノード１５０のホストＣＰＵ  １５６は、不揮発性ソリッド・ステート・ストレージとそのオーソリティによってポイントされる対応するストレージ・ノードとにデータを要求する。いくつかの実施形態では、データは、データ・ストライプとしてフラッシュ・ストレージから読み取られる。次に、ストレージ・ノード１５０のホストＣＰＵ  １５６は、読み取られたデータを再アセンブルし、適当なイレージャ・コーディング方式に従ってすべてのエラー（存在する場合に）を訂正し、再アセンブルされたデータをネットワークに転送する。さらなる実施形態では、これらのタスクの一部またはすべてが、不揮発性ソリッド・ステート・ストレージ１５２内で処理され得る。いくつかの実施形態では、セグメント・ホストは、ストレージにページを要求することと、その後、元々の要求を行っているストレージ・ノードにデータを送信することとによって、データがストレージ・ノード１５０に送信されることを要求する。
【００２４】
［0033］  一部のシステム、たとえばＵＮＩＸスタイルのファイル・システムでは、データは、インデックス・ノードすなわちｉｎｏｄｅを用いて処理され、ｉｎｏｄｅは、ファイル・システム内のオブジェクトを表現するデータ構造を指定する。オブジェクトは、たとえばファイルまたはディレクトリとすることができる。メタデータが、他の属性の中でもパミッション・データおよび作成タイムスタンプなどの属性としてオブジェクトに付随することができる。セグメント番号は、ファイル・システム内のそのようなオブジェクトのすべてまたは一部に割り当てられ得る。他のシステムでは、データ・セグメントは、他所で割り当てられたセグメント番号を用いて処理される。議論において、分配の単位はエンティティであり、エンティティは、ファイル、ディレクトリ、またはセグメントとすることができる。すなわち、エンティティは、ストレージ・システムによって記憶されるデータまたはメタデータの単位である。エンティティは、オーソリティと呼ばれるセットにグループ化される。各オーソリティは、オーソリティ内のエンティティを更新するための排他的権利を有するストレージ・ノードであるオーソリティ所有者を有する。言い換えると、ストレージ・ノードはオーソリティを含み、そのオーソリティはエンティティを含む。
【００２５】
［0034］  いくつかの実施形態によれば、セグメントは、データの論理コンテナである。セグメントは、媒体アドレス空間と物理フラッシュ位置との間のアドレス空間である、すなわち、データ・セグメント番号は、このアドレス空間内にある。セグメントは、メタデータをも含むことができ、メタデータは、より上のレベルのソフトウェアの介入なしでデータ冗長性を回復する（異なるフラッシュ位置またはデバイスに再書込される）ことを可能にする。一実施形態では、セグメントの内部フォーマットは、クライアント・データと、そのデータの位置を判定するための媒体マッピングとを含む。各データ・セグメントは、セグメントを複数のデータおよび適用可能な場合にパリティ・シャードに分解することによって、たとえばメモリ障害および他の障害から保護される。データおよびパリティ・シャードは、イレージャ・コーディング方式に従って、ホストＣＰＵ  １５６に結合された不揮発性ソリッド・ステート・ストレージ１５２にまたがって分配される、すなわちストライピングされる（図５を参照されたい）。用語セグメントの使用は、いくつかの実施形態で、コンテナと、セグメントのアドレス空間内でのその場所とを指す。いくつかの実施形態によれば、用語ストライプの使用は、シャードの、セグメントと同一のセットを指し、シャードが冗長性情報またはパリティ情報と一緒にどのように分配されるのかを含む。
【００２６】
［0035］  一連のアドレス空間変換が、ストレージ・システム全体にまたがって行われる。最上部には、ｉｎｏｄｅにリンクするディレクトリ・エントリ（ファイル名）がある。ｉｎｏｄｅは、データが論理的に記憶される媒体アドレス空間をポイントする。媒体アドレスは、大きいファイルの負荷を拡散するために一連の間接媒体を介してマッピングされ、または複製もしくはスナップショットなどのデータ・サービスを実施することができる。媒体アドレスは、大きいファイルの負荷を拡散するために一連の間接媒体を介してマッピングされ、または複製もしくはスナップショットなどのデータ・サービスを実施することができる。その後、セグメント・アドレスが、物理フラッシュ位置に変換される。物理フラッシュ位置は、いくつかの実施形態によれば、システム内のフラッシュの量によって境界を定められるアドレス範囲を有する。媒体アドレスおよびセグメント・アドレスは、論理コンテナであり、いくつかの実施形態では、実用上無限になるために１２８ビット以上の識別子を使用し、再利用の見込みは、システムの期待される寿命より長いものとして計算される。論理コンテナからのアドレスは、いくつかの実施形態では階層的な形で割り振られる。当初に、各不揮発性ソリッド・ステート・ストレージ１５２は、アドレス空間の範囲を割り当てられ得る。この割り当てられた範囲内で、不揮発性ソリッド・ステート・ストレージ１５２は、他の不揮発性ソリッド・ステート・ストレージ１５２との同期化なしにアドレスを割り振ることができる。
【００２７】
［0036］  データおよびメタデータは、変化する作業負荷パターンおよびストレージ・デバイスに関して最適化される、基礎になるストレージ・レイアウトのセットによって記憶される。これらのレイアウトは、複数の冗長性方式、圧縮フォーマット、およびインデックス・アルゴリズムを組み込む。これらのレイアウトの一部は、オーソリティおよびオーソリティ・マスタに関する情報を記憶し、他のレイアウトは、ファイル・メタデータおよびファイル・データを記憶する。冗長性方式は、単一のストレージ・デバイス（ＮＡＮＤフラッシュ・チップなど）内の破壊されたビットを許容する誤り訂正符号と、複数のストレージ・ノードの障害を許容するイレージャ符号と、データセンタ障害または地域の障害を許容する複製方式とを含む。いくつかの実施形態では、低密度パリティ検査（ＬＤＰＣ）符号が、単一のストレージ・ユニット内で使用される。いくつかの実施形態では、リード−ソロモン符号化が、ストレージ・クラスタ内で使用され、ミラーリングが、ストレージ・グリッド内で使用される。メタデータは、順序付きログ構造化インデックス（Ｌｏｇ  Ｓｔｒｕｃｔｕｒｅｄ  Ｍｅｒｇｅ  Ｔｒｅｅなど）を使用して記憶され得、大きいデータは、ログ構造化レイアウト内では記憶されない場合がある。
【００２８】
［0037］  あるエンティティの複数のコピーにまたがって一貫性を維持するために、ストレージ・ノードは、計算を介して２つのことすなわち（１）そのエンティティを含むオーソリティおよび（２）そのオーソリティを含むストレージ・ノードについて暗黙のうちに合意する。オーソリティへのエンティティの割当は、エンティティをオーソリティに擬似ランダムに割り当てることによって、外部で作られる鍵に基づいてエンティティを範囲に分割することによって、または単一のエンティティを各オーソリティ内に配置することによって、行われ得る。擬似ランダム方式の例は、線形ハッシュ化と、Ｃｏｎｔｒｏｌｌｅｄ  Ｒｅｐｌｉｃａｔｉｏｎ  Ｕｎｄｅｒ  Ｓｃａｌａｂｌｅ  Ｈａｓｈｉｎｇ（ＣＲＵＳＨ）を含む、ハッシュのＲｅｐｌｉｃａｔｉｏｎ  Ｕｎｄｅｒ  Ｓｃａｌａｂｌｅ  Ｈａｓｈｉｎｇ（ＲＵＳＨ）ファミリとである。いくつかの実施形態では、擬似ランダム割当は、ノードのセットが変化する可能性があるので、ノードへのオーソリティの割当だけに関して利用される。オーソリティのセットは、変化することができず、したがって、この実施形態では、任意の全射関数が適用され得る。一部の配置方式は、オーソリティをストレージ・ノード上に自動的に配置するが、他の配置方式は、ストレージ・ノードへのオーソリティの明示的なマッピングに頼る。いくつかの実施形態では、擬似ランダム方式が、各オーソリティから候補オーソリティ所有者のセットにマッピングするのに利用される。ＣＲＵＳＨに関係する擬似ランダム・データ分配関数は、オーソリティをストレージ・ノードに割り当て、オーソリティがどこに割り当てられるのかのリストを作成することができる。各ストレージ・ノードは、擬似ランダム・データ分配関数のコピーを有し、分配の同一の計算と、その後のオーソリティの発見または突き止めに達することができる。擬似ランダム方式のそれぞれは、いくつかの実施形態で、同一のターゲット・ノードを推断するために、入力としてストレージ・ノードの到達可能なセットを必要とする。エンティティがオーソリティ内に配置された後に、そのエンティティは、物理デバイス上で記憶され得、その結果、予期される障害が予期されないデータ消失につながることがなくなる。いくつかの実施形態では、再平衡化アルゴリズムが、マシンの同一のセット上の同一のレイアウトのオーソリティ内のすべてのエントリのコピーを記憶することを試みる。
【００２９】
［0038］  予期される障害の例は、デバイス障害、マシンの盗難、データセンタ火災、および、原子力事故または地質学的イベントなどの地域災害を含む。異なる障害は、異なるレベルの許容可能なデータ消失につながる。いくつかの実施形態では、盗まれたストレージ・ノードは、システムのセキュリティにも信頼性にも影響しないが、システム構成に応じて、地域イベントが、データの消失なし、数秒もしくは数分の失われた更新、または完全なデータ消失にさえつながる可能性がある。
【００３０】
［0039］  諸実施形態では、ストレージ冗長性のためのデータの配置は、データ一貫性のためのオーソリティの配置とは独立である。いくつかの実施形態では、オーソリティを含むストレージ・ノードは、永続ストレージを全く含まない。その代わりに、それらのストレージ・ノードは、オーソリティを含まない不揮発性ソリッド・ステート・ストレージ・ユニットに接続される。ストレージ・ノードと不揮発性ソリッド・ステート・ストレージ・ユニットとの間の通信相互接続は、複数の通信技術からなり、不均一な性能特性およびフォールト・トレランス特性を有する。いくつかの実施形態では、上で言及したように、不揮発性ソリッド・ステート・ストレージ・ユニットは、ＰＣＩ  ｅｘｐｒｅｓｓを介してストレージ・ノードに接続され、ストレージ・ノードは、イーサネット・バックプレーンを使用して単一のシャーシ内で一緒に接続され、シャーシは、ストレージ・クラスタを形成するために一緒に接続される。ストレージ・クラスタは、いくつかの実施形態ではイーサネットまたはファイバ・チャネルを使用してクライアントに接続される。複数のストレージ・クラスタが、ストレージ・グリッドに構成される場合に、複数のストレージ・クラスタは、インターネットまたは、「メトロ・スケール」リンクもしくはインターネットをトラバースしないプライベート・リンクなどの他の長距離ネットワーキング・リンクを使用して接続される。
【００３１】
［0040］  オーソリティ所有者は、エンティティを変更し、ある不揮発性ソリッド・ステート・ストレージ・ユニットから別の不揮発性ソリッド・ステート・ストレージ・ユニットへエンティティを移植し、エンティティのコピーを追加し、除去する、排他的な権利を有する。これは、基礎になるデータの冗長性を維持することを可能にする。オーソリティ所有者が障害を発生し、任を解かれようとしており、または過負荷である時に、オーソリティは、新しいストレージ・ユニットに転送される。過渡的障害は、すべての欠陥のないマシンが新しいオーソリティ位置に合意することを保証することを非自明にする。過渡的障害に起因して生じる曖昧さは、Ｐａｘｏｓ、ホット−ウォーム・フェイルオーバ（ｈｏｔ−ｗａｒｍ  ｆａｉｌｏｖｅｒ）方式などのコンセンサス・プロトコルによって、リモート・システム管理者による手動介入を介して、またはローカル・ハードウェア管理者によって（障害を発生したマシンをクラスタから物理的に除去すること、または障害を発生したマシンのボタンを押すことなどによって）、自動的に達成され得る。いくつかの実施形態では、コンセンサス・プロトコルが使用され、フェイルオーバは自動的である。いくつかの実施形態によれば、多すぎる障害または複製イベントが短すぎる時間期間内に発生する場合には、システムは、自己保存モードに入り、管理者が介入するまで複製アクティビティおよびデータ移動アクティビティを停止する。
【００３２】
［0041］  オーソリティがストレージ・ノードの間で転送され、オーソリティ所有者がそのオーソリティ内のエンティティを更新する時に、システムは、ストレージ・ノードと不揮発性ソリッド・ステート・ストレージ・ユニットとの間でメッセージを転送する。永続メッセージに関して、異なる目的を有するメッセージは、異なるタイプを有する。メッセージのタイプに応じて、システムは、異なる順序付け保証および異なる耐久性保証を維持する。永続メッセージが処理されつつある時に、それらのメッセージは、複数の耐久性のあるストレージ・ハードウェア技術および耐久性のないストレージ・ハードウェア技術内で一時的に記憶される。いくつかの実施形態では、メッセージは、ＲＡＭ内、ＮＶＲＡＭ内、およびＮＡＮＤフラッシュ・デバイス上で記憶され、様々なプロトコルが、各記憶媒体を効率的に利用するために使用される。待ち時間に敏感なクライアント要求は、複製されたＮＶＲＡＭ内で、その後にＮＡＮＤ内で永続化され得るが、バックグラウンドの再平衡化動作は、ＮＡＮＤに直接に永続化される。
【００３３】
［0042］  永続メッセージは、送信される前に永続的に記憶される。これは、システムが、障害および構成要素交換にもかかわらずクライアント要求のために働き続けることを可能にする。多数のハードウェア構成要素が、システム管理者、製造業者、ハードウェア・サプライ・チェーン、および進行中の品質管理監視インフラストラクチャに可視の一意識別子を含むが、そのインフラストラクチャ・アドレスの上で走行するアプリケーションは、アドレスを仮想化する。これらの仮想化されたアドレスは、構成要素の障害および交換にかかわりなく、ストレージ・システムの寿命の間に変化しない。これは、ストレージ・システムの各構成要素が、再構成またはクライアント要求処理の混乱を伴わずに経時的に交換されることを可能にする。
【００３４】
［0043］  いくつかの実施形態では、仮想化されたアドレスは、十分な冗長性を伴って記憶される。連続監視システムは、ハードウェア状況、ソフトウェア状況、およびハードウェア識別子を相関させる。これは、欠陥のある構成要素および製造詳細に起因する障害の検出および予測を可能にする。いくつかの実施形態で、監視システムは、構成要素をクリティカル・パスから除去することによって、障害が発生する前の、影響を受けるデバイスからのオーソリティおよびエンティティの先を見越した転送をも可能にする。
【００３５】
［0044］  図５は、ストレージ・ノード１５０の内容およびストレージ・ノード１５０の不揮発性ソリッド・ステート・ストレージ１５２の内容を示す複数レベルのブロック図である。いくつかの実施形態で、データは、ネットワーク・インターフェース・コントローラ（ＮＩＣ）２０２によってストレージ・ノード１５０との間で通信される。各ストレージ・ノード１５０は、上で議論したように、ＣＰＵ  １５６と１つまたは複数の不揮発性ソリッド・ステート・ストレージ１５２とを有する。図５内で１レベル下に移動すると、各不揮発性ソリッド・ステート・ストレージ１５２は、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）２０４およびフラッシュ・メモリ２０６などの相対的に高速の不揮発性ソリッド・ステート・メモリを有する。いくつかの実施形態では、ＮＶＲＡＭ  ２０４は、プログラム／消去サイクルを必要としない構成要素（ＤＲＡＭ、ＭＲＡＭ、ＰＣＭ）とすることができ、メモリが読み取られるよりはるかに頻繁に書き込まれることをサポートできるメモリとすることができる。図５内の別のレベルに下に移動すると、一実施形態では、ＮＶＲＡＭ  ２０４は、エネルギー貯蔵２１８によってバック・アップされる、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）２１６などの高速揮発性メモリとして実施される。エネルギー貯蔵２１８は、電源障害の場合に、ＤＲＡＭ  ２１６を内容がフラッシュ・メモリ２０６に転送されるのに十分に長く電力を供給される状態に保つのに十分な電力を供給する。いくつかの実施形態で、エネルギー貯蔵２１８は、電力消失の場合にＤＲＡＭ  ２１６の内容を安定した記憶媒体に転送することを可能にするのに十分なエネルギーの適切な供給を供給する、キャパシタ、スーパーキャパシタ、バッテリ、または他のデバイスである。フラッシュ・メモリ２０６は、複数のフラッシュ・ダイ２２２として実施され、複数のフラッシュ・ダイ２２２は、フラッシュ・ダイ２２２のパッケージまたはフラッシュ・ダイ２２２のアレイと呼ばれる場合がある。フラッシュ・ダイ２２２が、１パッケージあたり単一のダイを用いて、１パッケージあたり複数のダイ（すなわち、マルチチップ・パッケージ）を用いて、ハイブリッド・パッケージ内で、プリント回路基板または他の基板上の裸のダイとして、カプセル化されたダイとして、その他、任意の個数の形でパッケージ化され得ることを了解されたい。図示の実施形態では、不揮発性ソリッド・ステート・ストレージ１５２は、コントローラ２１２または他のプロセッサと、コントローラ２１２に結合された入出力（Ｉ／Ｏ）ポート２１０とを有する。Ｉ／Ｏポート２１０は、ＣＰＵ  １５６および／またはストレージ・ノード１５０のネットワーク・インターフェース・コントローラ２０２に結合される。フラッシュ入出力（Ｉ／Ｏ）ポート２２０が、フラッシュ・ダイ２２２に結合され、直接メモリ・アクセス・ユニット（ＤＭＡ）２１４が、コントローラ２１２、ＤＲＡＭ  ２１６、およびフラッシュ・ダイ２２２に結合される。図示の実施形態では、Ｉ／Ｏポート２１０、コントローラ２１２、ＤＭＡユニット２１４、およびフラッシュＩ／Ｏポート２２０は、プログラマブル論理デバイス（ＰＬＤ）２���８、たとえばフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）上で実施される。この実施形態では、各フラッシュ・ダイ２２２は、１６ｋＢ（キロバイト）ページ２２４として編成されたページと、それを介してデータがフラッシュ・ダイ２２２に書き込まれまたは読み取られ得るレジスタ２２６とを有する。さらなる実施形態では、他のタイプのソリッド・ステート・メモリが、フラッシュ・ダイ２２２内に示されたフラッシュ・メモリの代わりにまたはそれに加えて使用される。
【００３６】
［0045］  ストレージ・クラスタ１６０は、本明細書で開示される様々な実施形態で、一般にストレージ・アレイと対比され得る。ストレージ・ノード１５０は、ストレージ・クラスタ１６０を作成するコレクションの一部である。各ストレージ・ノード１５０は、データを提供するのに必要なデータのスライスおよびコンピューティングを所有する。複数のストレージ・ノード１５０が、データを記憶し、取り出すために協力する。ストレージ・メモリまたはストレージ・デバイスは、一般にストレージ・アレイ内で使用される時に、データの処理および操作との関連がより少ない。ストレージ・アレイ内のストレージ・メモリまたはストレージ・デバイスは、データを読み取り、書き込み、または消去するコマンドを受け取る。ストレージ・アレイ内のストレージ・メモリまたはストレージ・デバイスは、それらがその中に組み込まれる、より大きいシステム、またはデータの意味を知らない。ストレージ・アレイ内のストレージ・メモリまたはストレージ・デバイスは、ＲＡＭ、ソリッド・ステート・ドライブ、ハード・ディスク・ドライブ、その他など、様々なタイプのストレージ・メモリを含むことができる。本明細書で説明される不揮発性ソリッド・ステート・ストレージ１５２は、同時にアクティブになる、複数の目的のために働く複数のインターフェースを有する。いくつかの実施形態では、ストレージ・ノード１５０の機能性の一部が、不揮発性ソリッド・ステート・ストレージ１５２にシフトされ、不揮発性ソリッド・ステート・ストレージ１５２を不揮発性ソリッド・ステート・ストレージ１５２とストレージ・ノード１５０との組合せに変形する。コンピューティング（ストレージ・データに関する）を不揮発性ソリッド・ステート・ストレージ１５２内に配置することは、このコンピューティングをデータ自体のより近くに配置する。様々なシステム実施形態は、異なる能力を有するストレージ・ノード・レイヤの階層を有する。対照的に、ストレージ・アレイでは、コントローラが、棚またはストレージ・デバイス内で管理するデータのすべてに関するあらゆるものを所有し、知っている。ストレージ・クラスタ１６０内では、本明細書で説明するように、複数の不揮発性ソリッド・ステート・ストレージ・ユニット１５２および／またはストレージ・ノード１５０内の複数のコントローラが、様々な形で協力する（たとえば、イレージャ・コーディング、データ・シャーディング、メタデータの通信および冗長性、記憶容量の増減、データ復元、その他のため）。
【００３７】
［0046］  図６は、ハイブリッド・ブレード６０２および１つまたは複数のコンピュート・ブレード６０４にまたがって分配された、データを所有するオーソリティ１６８を有する、図１〜図５のストレージ・クラスタ１６０の実施形態を使用するストレージ・システムの図である。ブレードは、回路網、プロセッサ、および関連するハードウェアを有する物理構成である。各ハイブリッド・ブレード６０２は、ユーザ・データを記憶するストレージ・メモリを有し、このストレージ・メモリは、この実施形態ではフラッシュ・メモリ２０６であるが、さらなる実施形態では他のタイプのストレージ・メモリとすることができ、各ハイブリッド・ブレード６０２は、ＣＰＵ  １５６およびＤＲＡＭ  ２１６を含む処理リソースを有する。各コンピュート・ブレード６０４は、ＣＰＵ  １５６およびＤＲＡＭ  ２１６を含む処理リソースを有するが、ハイブリッド・ブレード６０２とは異なって、ユーザ・データを記憶するストレージ・メモリを有しない。すなわち、ハイブリッド・ブレード６０２とは異なって、コンピュート・ブレード６０４は、コンピュート・ブレード６０４自体の上ではユーザ・データを記憶しない。ハイブリッド・ブレード６０２およびコンピュート・ブレード６０４は、プログラム・メモリ用のＲＯＭ（読取専用メモリ）など、他のタイプのメモリを有することができ、あるいは、プログラム・メモリおよび動作パラメータ用のＤＲＡＭ  ２１６または他のタイプのＲＡＭすなわちシステム・メモリを使用することができる。各ブレード６０２、６０４は、ネットワーク・モジュール６０６（たとえば、図５のネットワーク・インターフェース・コントローラ２０２を参照されたい）を有し、ブレード６０２、６０４は、一緒に結合されてストレージ・クラスタ１６０を形成する。すべてのユーザ・データは、図１〜図５を参照して説明したように、ハイブリッド・ブレード６０２上のストレージ・メモリ内に記憶される。ストレージ・システム内での様々な個数のハイブリッド・ブレード６０２またはハイブリッド・ブレード６０２とコンピュート・ブレード６０４との混合の使用は、ストレージ・メモリの量および処理能力をシステムおよびクライアントの必要に合わせて調整することを可能にし、システム性能のこれらの態様のそれぞれまたは両方の交換およびアップグレードを可能にする。
【００３８】
［0047］  図１〜図５内のストレージ・クラスタ１６０の実施形態と同様に、各ブレード６０２、６０４は、ブレード６０２、６０４のすべてがストレージ・クラスタ１６０の動作の少なくとも一部に参加するという意味で、ストレージ・ノード１５０をホスティングしまたはストレージ・ノード１５０とすることができる。ノードは、ストレージ・システム内の論理構成であり、ストレージ・システム内の挙動、インテリジェンス、プロトコル、その他の責任を負う。ノードは、ブレード内に存在し、物理ブレード内の物理リソースを利用することができる。ハイブリッド・ブレード６０２は、ストレージ・メモリを有するストレージ・ノードであり、またはそのようなノードをその中に有し、コンピュート・ブレード６０４は、ストレージ・メモリを有しないコンピュート専用ノードであり、またはそのようなノードをその中に有する。すなわち、ハイブリッド・ブレード６０２上のストレージ・ノード１５０は、ハイブリッド・ブレード６０２上のコンピューティング・リソースとストレージ・メモリとの両方を使用することができ、ユーザ・データの読み書きおよび他のストレージ・ノード・タスクの実行の際に他のハイブリッド・ブレード６０２上のストレージ・メモリを使用することができる。コンピュート・ブレード６０４上のコンピュート専用ノードは、コンピュート・ブレード６０４上のコンピューティング・リソースを使用することができるが、コンピュート・ブレード６０４にストレージ・メモリが欠けているので、ハイブリッド・ブレード６０２上のストレージ・メモリを使用することができる。コンピュート・ブレード６０４上のコンピュート専用ノードは、コンピュート・ブレード６０４上のコンピューティング・リソース（ローカル・メモリ、たとえばＲＯＭおよびＤＲＡＭ  ２１６を含む）を使用するが、ストレージ・ノード１５０によって実行されるストレージ・タスクではなくコンピューティング・タスクを実行し、したがって、ストレージ・ノード１５０と同一の形でハイブリッド・ブレード６０４のいずれかのストレージ・メモリを使用することはしない。たとえば診断、修理、またはストレージ・ノード１５０の通常のタスクの外部の他の目的もしくは機能のために、コンピュート専用ノードがハイブリッド・ブレード６０２上のストレージ・メモリにアクセスする可能性があるアプリケーションがある可能性がある。本明細書で説明されるコンピュート専用ノードは、いくつかの実施形態でコンピュート・ノードと呼ばれる場合がある。オーソリティ１６８は、任意のストレージ・ノード内に存在することができ、したがって、ハイブリッド・ブレード６０２および／またはコンピュート・ブレード６０４内に存在することができる。各ストレージ・ノードは、１つまたは複数のオーソリティ１６８を保持することができる。各オーソリティ１６８は、すべての他のオーソリティ１６８によって所有されるユーザ・データの範囲とオーバーラップしない範囲のユーザ・データを所有し、他のオーソリティ１６８とは独立に、その範囲のユーザ・データのイレージャ・コーディングおよび配置を選択し、制御する。図６に示された例では、左端のハイブリッド・ブレード６０２は４つのオー���リティ１６８を有し、右端のハイブリッド・ブレード６０２は４つのオーソリティ１６８を有し、左端のコンピュート・ブレード６０４は２つのオーソリティ１６８を有し、右端のコンピュート・ブレード６０４は４つのオーソリティ１６８を有する。これは例にすぎず、ブレード６０２、６０４のそれぞれは、様々な個数のオーソリティ１６８を有することができ、この個数がブレード６０２、６０４のそれぞれにおいて同一である必要はない。
【００３９】
［0048］  オーソリティ１６８は、様々な個数および方向で、あるブレード６０２、６０４から別のブレード６０２、６０４に移動され得る。図６のこの例では、オーソリティ１６８のうちの１つが、左端のハイブリッド・ブレード６０２から左端のコンピュート・ブレード６０４に移動されるが、その代わりに、右端のコンピュート・ブレード６０４（またはシステム内の任意の他のコンピュート・ブレード６０４もしくは別のハイブリッド・ブレード６０２）に移動され得る。オーソリティ１６８のうちの１つは、右端のハイブリッド・ブレード６０２から左端のコンピュート・ブレード６０４に移動される。コンピュート・ブレード６０４上のオーソリティは、同様に、別のコンピュート・ブレード６０４またはハイブリッド・ブレード６０２などに移動され得る。
【００４０】
［0049］  オーソリティ１６８を突き止め、かつ／または移動する様々な機構が、本教示に従って当業者によって開発され得る。たとえば、オーソリティ１６８が、様々なブレード６０２、６０４内のＤＲＡＭ  ２１６内に示されている。いくつかの実施形態では、様々なパラメータ、マップ、アカウンティング、レコード、ポインタ、その他、および／またはオーソリティ１６８を実施するデータ構造は、ブレード６０２、６０４のうちの１つのＤＲＡＭ  ２１６内に存在し、あるブレード６０２、６０４のＤＲＡＭ  ２１６から別のブレード６０２、６０４のＤＲＡＭ  ２１６にこの情報をコピーすることによって移動され得る。オーソリティ１６８のアクションを実行するために実行されるソフトウェア・コードは、ＤＲＡＭ  ２１６内に存在し、同様に移動され得る。代替案では、ソフトウェア・コードは、不揮発性メモリなどの別のメモリまたはブレード６０２、６０４のファームウェア内に存在し、ＣＰＵ  １５６によって実行されるが、マルチスレッディング・システム内の１つもしくは複数のパラメータまたは１つもしくは複数の実行スレッドに従ってアクティブ化されまたは非アクティブ化され得る。一実施形態では、オーソリティ１６８の様々なパラメータは、あるブレード６０２、６０４から別のブレード６０２、６０４に移動され、ブレード６０２、６０４のそれぞれのメモリ内のソフトウェア・コードは、ブレード６０２内のメモリ内に存在するオーソリティ１６８のパラメータに従って動作する。
【００４１】
［0050］  ブレードおよび６０２、６０４は、異なる量のコンピューティング能力もしくは処理能力、処理特性、またはコンピューティング・リソースを有することができる。たとえば、ある製品の異なるモデルまたは異なるバージョンが提供され得、あるいは、より後のバージョンが、より新しい、より高速の、より高密度のプロセッサもしくはメモリ、またはより多数のプロセッサ・コア６０８などを有することができる。一例では、左端のコンピュート・ブレード６０４内に示されているように、あるＣＰＵ  １５６が、４つのコア６０８を有し、右端のコンピュート・ブレード６０４内に示されているように、別のＣＰＵ  １５６が、８つのコア６０８を有する。一方のＣＰＵ  １５６は、別のＣＰＵ  １５６より高速のクロック速度を有することができる。一方のＤＲＡＭ  ２１６は、別のＤＲＡＭ  ２１６より多数のメガバイト、ギガバイト、もしくはテラバイト、またはより高速のアクセス時間を有することができる。これらの要因は、ハイブリッド・ブレード６０２およびコンピュート・ブレード６０４に影響する可能性がある。複数のハイブリッド・ブレード６０２を有するストレージ・クラスタ１６０に単一のコンピュート・ブレード６０４を追加することさえもが、システムの性能を高めることができ、複数のコンピュート・ブレード６０２の追加は、性能をさらに高めることができる。ストレージ・リソースとコンピュート・リソースとの両方を有する、ある個数のハイブリッド・ブレード６０２と、コンピュート専用ノードを有する、別の個数のコンピュート・ブレード６０４とを有する異種システムは、ハイブリッド・ブレード６０２だけを有する同種システムとは異なって平衡化され得る。諸実施形態は、コンピューティング能力またはコンピューティング・リソースを同一のブレード６０４上でのストレージにささげる必要がないコンピュート専用ノード上のコンピューティング能力またはコンピューティング・リソースを利用することができる。処理制限されているストレージ・システムにあまりに多数のオーソリティ１６８を追加することが、性能を低下させる可能性が高いことに留意する価値がある。処理能力７２０をも追加する（たとえば、１つまたは複数のハイブリッド・ブレード６０２および／またはコンピュート・ブレード６０４を追加することによって）のと同時にオーソリティ１６８を追加する（たとえば、データのより多くの総量を処理するために）ことは、性能を所与のレベルに保つようにシステムをスケーリングする。他の例が、たやすく考案される。
【００４２】
［0051］  図７は、ハイブリッド・ブレード６０２およびコンピュート・ブレード６０４にまたがって外部Ｉ／Ｏ処理用のフロントフェーシング・ティア７１４、オーソリティ１６８用のオーソリティ・ティア７１６、およびストレージ・メモリ（たとえば、フラッシュ・メモリ２０６または他のタイプのストレージ・メモリ）用のストレージ・ティア７１８に分配される処理能力７２０を示す、図６のストレージ・システムの図である。処理能力７２０の分配とは、作業、処理タスク、コンピューティング、コンピューティング・タスク、処理アクティビティまたはコンピューティング・アクティビティ、Ｉ／Ｏ処理（外部または内部）、その他が、様々なティア７１４、７１６、７１８内のデバイスおよびプロセスに配置され、専用にされ、割り当てられ、そのために提供され、スケジューリングされ、割り振られ、使用可能にされ、その他が行われることを意味する。たとえば、フロントフェーシング・ティア７１４への処理能力７２０の分配は、フロントフェーシング・ティア７１４内のリソースが、処理能力７２０の一部を用いて外部Ｉ／Ｏ処理を実行できることを意味する。オーソリティ・ティア７１６への処理能力７２０の分配は、オーソリティ１６８が、処理能力７２０の一部を用いてオーソリティ１６８に固有の責務を実行できることを意味する。ストレージ・ティア７１８への処理能力７２０の分配は、ストレージ・ティア７１８内のデバイスおよびプロセスが、処理能力７２０の一部を用いてストレージ責務を実行できることを意味する。この例は様々なティアを議論するが、これは、限定的であることを意図されたものではない。というのは、この例が、例示のために利用される一例であるからである。処理能力は、プロセスまたはスレッドを特定のプロセッサにまたはその逆に割り当てることによって、プロセスまたはスレッドの優先順位を配置することによって、およびコンピューティング・システム内でたやすく案出されるさらなる形で、分配され得る。
【００４３】
［0052］  複数のテナント７０２が、入出力要求を行っており、この入出力要求を、ストレージ・クラスタ１６０が、外部Ｉ／Ｏ処理７０４として処理し、サービスしつつある。様々なポリシおよび合意７０６、７０８、７１０が、ストレージ・システム内の所定の位置にある。システム内にコンピュート・ブレード６０４がない時にハイブリッド・ブレード６０２にまたがる、または両方のタイプのブレード６０２、６０４がシステム内に存在する時にハイブリッド・ブレード６０２およびコンピュート・ブレード６０４にまたがる、処理能力７２０は、オペレーション・ティア７１２、たとえばフロントフェーシング・ティア７１４、オーソリティ・ティア７１６、およびストレージ・ティア７１８に分配される。これが、以下で説明するように様々な形、組合せ、およびシナリオにおいて発生する可能性があることを了解されたい。
【００４４】
［0053］  外部Ｉ／Ｏに関するクライアントからの要求の受信専用であるフロントフェーシング・ティア７１４は、Ｉ／Ｏ要求を復号し、要求がどこに行くのか、すなわち、各要求がどのオーソリティ１６８に送られるべきなのかを見つけ出す。これは、様々な計算およびマップを必要とし、処理能力７２０の一部を要する。いくつかの実施形態では、外部Ｉ／Ｏ処理に関するクライアントからのＩ／Ｏ要求は、任意のストレージ・ノードすなわち、任意のハイブリッド・ブレード６０２または任意のコンピュート・ブレード６０４で受信される可能性がある。いくつかの実施形態では、Ｉ／Ｏ要求は、１つまたは複数の特定のブレード６０２、６０４にルーティングされ得る。この実施形態での外部Ｉ／Ｏ要求処理およびスループットは、フロントフェーシング・ティア７１４への処理能力７２０の分配に従って決定される。
【００４５】
［0054］  次に、フロントフェーシング・ティア７１４から下って、オーソリティ・ティア７１６は、オーソリティ１６８が要求する様々なタスクを実行する。オーソリティ・ティア７１６でのシステムの挙動は、各オーソリティ１６８が仮想コントローラまたは仮想プロセッサであるかのようなものであり、これは、処理能力７２０のさらなる部分を要する。オーソリティ・ティア７１６へのおよびオーソリティ・ティア７１６内での処理能力７２０の分配は、様々な実施形態でオーソリティ１６８ごとにまたはブレード６０２、６０４ごとに行われ得、オーソリティ１６８にまたがって等しくまたは均等に分配されるか、所与のブレード６０２、６０４内のオーソリティ１６８にまたがって変化することができる。
【００４６】
［0055］  オーソリティ・ティア７１６の下のストレージ・ティア７１８は、ストレージ・メモリが責任を負うタスクの世話をし、これは、処理能力７２０の別の部分を要する。さらに、ストレージ・メモリ用のコンピューティング能力は、ストレージ・ユニット１５２のそれぞれで、たとえばコントローラ２１２から使用可能である。処理能力がティア７１４、７１６、７１８のそれぞれにどのように分配され、処理能力が所与のティア７１４、７１６、７１８内でどのように分配されるのかは、柔軟であり、ストレージ・クラスタ１６０によって、および／またはユーザ、たとえば管理者によって決定され得る。
【００４７】
［0056］  あるシナリオでは、当初にストレージ・クラスタ１６０内にハイブリッド・ブレード６０２だけがあり、１つまたは複数のコンピュート・ブレード６０４が、たとえばアップグレードまたは改善として、追加される。これは、システムが使用可能な処理能力７２０を増大させる。このシナリオでは、ストレージ・メモリの総量は変化しない（ストレージ・メモリを有するハイブリッド・ブレード６０２が追加されないので）が、システム内のプロセッサの総数および処理能力７２０の総量は、コンピュート・ブレード６０４の追加の結果として増やされる。オーソリティ１６８は、どれほどの処理能力７２０が各ブレード６０２、６０４上で使用可能であるのかに従って、分配されまたは再分配され得る。たとえば、ＣＰＵ  １５６のすべてが処理速度およびコア６０８の個数において同等である場合に、ブレード６０２、６０４のそれぞれは、等しい個数のオーソリティ１６８を受け取ることができる。いくつかの実施形態では、ハイブリッド・ブレード６０２であれコンピュート・ブレード６０４であれ、ブレードのうちの１つが、より強力なプロセッサ（すなわち、より多くの処理能力７２０）を有する場合に、そのブレード６０２、６０４は、より多数のオーソリティ１６８を割り当てられる可能性がある。オーソリティ１６８を分配する１つの形は、各ブレード６０２、６０４の処理能力７２０の相対的な量に比例して各ブレード６０２、６０４にオーソリティを割り当てまたは割り振ることである。それを行うことは、各オーソリティ１６８が、そのオーソリティ１６８が存在するブレード６０２、６０４上でそのオーソリティ１６８からアクセス可能な処理能力７２０の同等な量を有するように、オーソリティ１６８にまたがって処理能力７２０を平衡化する。これは、ブレード６０２、６０４のうちの１つまたは複数に新しいオーソリティ１６８を追加すること、または１つもしくは複数のオーソリティ１６８をあるブレード６０２、６０４から別のブレード６０２、６０４に移動することのいずれかを必然的に伴う可能性がある。図６に示された実施形態および例を戻って参照すると、これは、１つまたは複数のコンピュート・ブレード６０４がストレージ・クラスタに追加され、これが１つまたは複数のオーソリティ１６８の再配置をトリガする時にあてはまる可能性がある。
【００４８】
［0057］  関連するシナリオでは、オーソリティは、ブレード６０２、６０４のそれぞれで使用可能な、ＤＲＡＭ  ２０６（または他のタイプのＲＡＭもしくはメモリ）の量またはＤＲＡＭ  ２０６の性能（たとえば、読取アクセス速度および書込アクセス速度）に比例して、様々なブレード６０２、６０４に割り当てられ、分配され、再分配され、または再配置される。より大量のＤＲＡＭ  ２０６を有するブレード６０２、６０４は、より少量のＤＲＡＭ  ２０６を有するブレード６０２、６０４より多数のオーソリティを受け取りまたは有するはずである。それを行うことは、オーソリティ１６８が存在するブレード６０２、６０４上でオーソリティ１６８からアクセス可能な同等な量のメモリとしての各オーソリティ１６８なるように、オーソリティ１６８にまたがってＲＡＭを平衡化する。
【００４９】
［0058］  別のシナリオでは、ストレージ・クラスタ１６０のブレード６０２、６０４のすべての処理能力７２０の総量の諸部分が、サービス品質（ＱＯＳ）ポリシ７０６、サービス水準合意（ｓｅｒｖｉｃｅ  ｌｅｖｅｌ  ａｇｒｅｅｍｅｎｔ）７０８、サービス・クラスおよび／またはマルチテナント・サービス７１０に従ってオペレーション・ティア７１２に分配される。たとえば、ポリシ、合意、またはサービス・クラスが、より高いレベルの外部Ｉ／Ｏ処理、たとえば、データ・ストレージへのおよび／またはデータ・ストレージからあるテナント７０２、サービスのクラス、ＩＰアドレスもしくはＩＰアドレスの範囲、データの範囲、データのタイプ、その他への、別のものより高いデータ・スループットを提供することである場合に、フロントフェーシング・ティア７１４および／またはオーソリティ・ティア７１６内で、他のテナント７０２、サービスのクラス、その他と比較して、より大量の処理能力７２０が、そのテナント７０２、サービスのクラス、その他に割り振られる。外部Ｉ／Ｏ処理のコンピューティング・タスクは、ブレード６０２、６０４にまたがって分配され得、その結果、各テナント７０２、サービスのクラス、その他のＩ／Ｏ処理が、１つまたは複数のストレージ・ノードに割り当てられるようになり、これらのストレージ・ノードは、個々のテナント、クライアント、アプリケーション、サービス・クラス、その他に基づいて様々な組合せのハイブリッド・ブレード６０２および／またはコンピュート・ブレード６０４上に存在することができる。アプリケーション・レイヤ内のアプリケーション（すなわち、ストレージ・クラスタ１６０を動作させるソフトウェアとは別個のアプリケーション・ソフトウェア）のコンピューティング・タスクは、様々な組合せの、個々のアプリケーションまたはアプリケーションのグループと個々のブレードまたはブレード６０２、６０４のグループとに基づいて、ブレード６０２、６０４のうちの１つまたは複数にまたがって分配され得る。たとえば、アプリケーションのあるセットのコンピューティング・タスクが、ブレード６０２、６０４のあるグループに割り当てられる可能性があり、アプリケーションの別のセットのコンピューティング・タスクが、ブレード６０２、６０４の別のグループに割り当てられる可能性があり、これらが、オーバーラップするグループまたはオーバーラップしないグループである可能性がある。テナント７０２、サービスのクラス、その他に属するデータのｉｎｏｄｅのオーソリティ１６８は、たとえばオーソリティ１６８を適当に移動することによって、他のテナント７０２、サービスのクラス、その他と比較したクロック周波数またはプロセッサ速度によって重みを付けられて、プロセッサ・コア６０８のより大きい比率を割り当てられ得る。システムは、たとえば起動されるスレッドの個数を制御することまたは優先順位に関してスレッドに重みを付けることによって、ストレージ・メモリに対して、オーソリティ１６８のためにどれほどの処理能力７２０が使用可能であるのかを平衡化することができる。テナント７０２およびサービス品質（たとえば、スループット、待ち時間、応答性）に対して保証され��ストレージの量は、直交的に（すなわち、独立に）、定常的に、弾力的に、または需要に基づいて、システム内で調整され得る。いくつかの実施形態では、ヒューリスティックが、システムの上記および他の態様の測定および調整に適用され得る。ポリシ、合意、またはテナントに対する変更は、１つまたは複数のオーソリティ１６８の再配置をトリガすることもできる。
【００５０】
［0059］  図８は、ストレージ・システム内で処理能力を管理する方法の流れ図である。この方法は、本明細書で説明されるストレージ・クラスタおよびストレージ・ノードの様々な実施形態上でまたはそれによって実践され得る。この方法の様々なステップは、ストレージ・クラスタ内のプロセッサまたはストレージ・ノード内のプロセッサなどのプロセッサによって実行され得る。この方法の一部またはすべては、ソフトウェア、ハードウェア、ファームウェア、またはその組合せで実施され得る。この方法は、アクション８０２で開始し、アクション８０２では、ハイブリッド・ブレードが提供される。各ハイブリッド・ブレードは、ストレージ・ノードおよびストレージ・メモリを含む。アクション８０４では、コンピュート・ブレードが提供される。各コンピュート・ブレードは、コンピュート専用ノードを含み、ストレージ・メモリを含まない。コンピュート・ブレードは、ＤＲＡＭまたは他のＲＡＭなどのシステム・メモリを有するが、コンピュート・ブレード自体の上にソリッドスレート・ストレージ・メモリまたはディスクベースのストレージ・メモリを有しない。アクション８０６では、オーソリティがブレードにまたがって分配される。すなわち、オーソリティは、ハイブリッド・ブレードおよびコンピュート・ブレード上に配置され、これらに移動され、またはこれらの上で他の形で確立される。
【００５１】
［0060］  アクション８０８では、処理能力が、上で言及した合意および／またはポリシに従って、ブレードにまたがってティアに、たとえば、フロントフェーシング・ティア、オーソリティ・ティア、およびストレージ・ティアに分配される。合意またはポリシに含まれるものに応じて、処理能力は、固定された量または可変量でティアのそれぞれに分配され得る。この実施形態では、フロントフェーシング・ティアは、外部Ｉ／Ｏ要求をサービスする、すなわち、外部Ｉ／Ｏ処理用であり、オーソリティ・ティアは、オーソリティへのサービス用であり、ストレージ・ティアは、ストレージ・メモリへのサービス用である。
【００５２】
［0061］  アクション８１０では、外部Ｉ／Ｏ処理が、フロントフェーシング・ティア内で実行され、内部Ｉ／Ｏ処理（すなわち、ストレージ・システム内の様々なリソースに関する内部Ｉ／Ｏ動作の処理）が、オーソリティ・ティアおよびストレージ・ティア内で実行される。判断アクション８１２では、処理能力をオーソリティ・ティア内で再分配すべきかどうかと言う質問が尋ねられる。回答が否定である場合には、処理能力をオーソリティ・ティア内で再分配する必要はなく、流れはアクション８１０に戻って分岐して、外部および内部のＩ／Ｏ処理の実行を継続する。回答が肯定である場合には、処理能力をオーソリティ・ティア内で再分配しなければならず、流れはアクション８１４に進む。これは、たとえば、ストレージ・クラスタへのコンピュート・ブレードの挿入、ハイブリッド・ブレードの挿入、またはポリシ、合意、もしくはマルチテナント・サービスに対する変更によってトリガされ得る。
【００５３】
［0062］  アクション８１４では、オーソリティが、あるブレードから別のブレードに移動される（たとえば、ハイブリッド・ブレードからコンピュート・ブレードに、ハイブリッド・ブレードから別のハイブリッド・ブレードに、コンピュート・ブレードから別のコンピュート・ブレードに、またはコンピュート・ブレードからハイブリッド・ブレードにさえ）。いくつかの実施形態では、複数のオーソリティがブレードの間で移動される。変形形態では、ティアの間またはティアのうちの１つの中の処理能力が、合意もしくはポリシの変化またはブレードの挿入に応答して再分配され得る。その後、流れはアクション８１０に戻って、外部および内部のＩ／Ｏ処理の実行を継続する。変形形態では、流れは、他所に進んでさらなるアクションを実行することができる。
【００５４】
［0063］  図９は、いくつかの実施形態によるストレージ・クラスタ、ストレージ・ノード、および／または不揮発性ソリッド・ステート・ストレージの実施形態上でまたはそれによって実践され得る、ブレードの追加時にストレージ・システム内で処理能力を管理する方法の流れ図である。この方法は、図８の方法に関し、変形形態では、図８を参照して説明した方法と組み合わされまたはその諸部分を置換することができる。この方法は、判断アクション９０２で始まり、判断アクション９０２では、ストレージ・システムにブレードを追加すべきかどうかが判定される。回答が否定である場合には、ブレードが追加されてはならないか追加されず、いくつかの実施形態では、この方法は、ある時間期間だけ待機し、ブレードが追加されるべきかどうかをチェックする。回答が肯定である場合には、ブレードが追加され、流れは判断アクション９０４に進む。判断アクション９０４では、新たに追加されるブレードがオーソリティ・ティアに参加するかどうか  判定される。たとえば、新たに追加されるブレードが、コンピュート専用ノードを有するが、オーソリティ・ティアに参加しないことが判断され得る。あるいは、新たに追加されるブレードが、コンピュート専用ストレージ・ノードを有し、オーソリティ・ティアへの参加としてオーソリティによってまたはオーソリティの代わりに実行されるアクションに参加することが判断され得る。回答が否定である場合には、新たに追加されるブレードは、オーソリティ・ティアに参加せず、流れは、判断アクション９０２に進む。回答が肯定である場合には、新たに追加されるブレードは、オーソリティ・ティアに参加し、流れは、判断アクション９０６に進む。
【００５５】
［0064］  判断アクション９０６では、新しいオーソリティを新たに追加されたブレードに移動すべきかどうかが判定される。回答が肯定である場合には、流れはアクション９０８に進み、アクション９０８では、新しいオーソリティが、新たに追加されたブレードに移動されまたは追加される。上で言及したように、１つまたは複数のブレードから１つまたは複数のさらなるブレードへのオーソリティの移動は、望み通りに処理能力を再分配する。流れは、アクション９０２に戻って分岐して、ブレードが追加されつつありまたは追加されるのかどうかを調べる。変形形態では、流れは、他所に分岐してさらなるタスクを実行することができる。判断アクション９０４が、新たに追加されるブレードがオーソリティ・ティアに参加しないと判定した場合には、新たに追加されるブレードは、移動されるオーソリティのいずれの受取からも除外され得、あるいは、判断が再訪問され得、この場合には、新たに追加されるブレードは、移動されるオーソリティのうちの１つまたは複数を受け取ることができる。オーソリティが移動された後に、流れは、アクション９０２に戻って進み、あるいは、変形形態では、他所に分岐してさらなるタスクを実行する。
【００５６】
［0065］  本明細書で説明される方法が、従来の汎用コンピュータ・システムなどのデジタル処理システムを用いて実行され得ることを了解されたい。代替案では、１つの機能だけを実行するように設計されまたはプログラムされる特殊目的コンピュータが使用され得る。図１０は、本明細書で説明される実施形態を実施することのできる例示的なコンピューティング・デバイスを示す図である。図１０のコンピューティング・デバイスは、いくつかの実施形態によるストレージ・システム内で処理能力を管理する機能性の実施形態を実行するのに使用され得る。このコンピューティング・デバイスは、バス１００５を介してメモリ１００３およびマス・ストレージ・デバイス１００７に結合される中央処理装置（ＣＰＵ）１００１を含む。マス・ストレージ・デバイス１００７は、いくつかの実施形態でローカルまたはリモートとすることのできる、フロッピ・ディスク・ドライブまたは固定ディスク・ドライブなどの永続データ・ストレージ・デバイスを表す。メモリ１００３は、読取専用メモリ、ランダム・アクセス・メモリ、その他を含むことができる。コンピューティング・デバイス上に存在するアプリケーションは、いくつかの実施形態で、メモリ１００３またはマス・ストレージ・デバイス１００７などのコンピュータ可読媒体上に記憶されまたはこれを介してアクセスされ得る。アプリケーションは、コンピューティング・デバイスのネットワーク・モデムまたは他のネットワーク・インターフェースを介してアクセスされる変調された変調された電子信号の形であるものとすることもできる。ＣＰＵ  １００１が、いくつかの実施形態で、汎用プロセッサ、専用プロセッサ、または特別にプログラムされた論理デバイス内で実施され得ることを了解されたい。
【００５７】
［0066］  ディスプレイ１０１１は、バス１００５を介してＣＰＵ  １００１、メモリ１００３、およびマス・ストレージ・デバイス１００７と通信している。ディスプレイ１０１１は、本明細書で説明されるシステムに関連する任意の視覚化ツールまたはレポートを表示するように構成される。入出力デバイス１００９は、コマンド選択内の情報をＣＰＵ  １００１に通信するためにバス１００５に結合される。外部デバイスへおよび外部デバイスからのデータが、入出力デバイス１００９を介して通信され得ることを了解されたい。ＣＰＵ  １００１は、図１〜図９を参照して説明した機能性を使用可能にするために本明細書で説明する機能性を実行するように定義され得る。この機能性を実施するコードは、いくつかの実施形態で、ＣＰＵ  １００１などのプロセッサによる実行のためにメモリ１００３またはマス・ストレージ・デバイス１００７内に記憶され得る。コンピューティング・デバイス上のオペレーティング・システムは、ＭＳ  ＤＯＳ（商標）、ＭＳ−ＷＩＮＤＯＷＳ（商標）、ＯＳ／２（商標）、ＵＮＩＸ（商標）、ＬＩＮＵＸ（商標）、または他の既知のオペレーティング・システムとすることができる。本明細書で説明される実施形態が、物理コンピューティング・リソースを用いて実施される仮想化されたコンピューティング・システムと統合されることも可能であることを了解されたい。
【００５８】
［0067］  詳細な例示的実施形態が、本明細書で開示される。しかし、本明細書で開示される特定の機能的詳細は、実施形態の説明において単に典型的なものである。しかし、諸実施形態は、多数の代替形態で実施され得、本明細書で示される実施形態のみに限定されると解釈してはならない。
【００５９】
［0068］  用語第１、第２、その他が、様々なステップまたは計算を記述するために本明細書で使用される場合があるが、これらのステップまたは計算が、これらの用語によって限定されてはならないことを理解されたい。これらの用語は、あるステップまたは計算を別のステップまたは計算から区別するためにのみ使用される。たとえば、本開示の範囲から逸脱せずに、第１の計算が第２の計算と呼ばれ得、同様に、第２のステップが第１のステップと呼ばれ得る。本明細書で使用される時に、用語「および／または」および「／」記号は、関連するリストされた項目のうちの１つまたは複数の任意のすべての組合せを含む。
【００６０】
［0069］  本明細書で使用される時に、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈がそうではないことを明瞭に示さない限り、複数形をも含むことが意図されている。用語「含む」（「ｃｏｍｐｒｉｓｅｓ」、「cｏｍｐｒｉｓｉｎｇ」、「ｉｎｃｌｕｄｅｓ」、および／または「ｉｎｃｌｕｄｉｎｇ」）は、本明細書で使用される時に、述べられた特徴、整数、ステップ、動作、要素、および／または構成要素の存在を指定するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および／またはその群の存在または追加を除外しないことをさらに理解されたい。したがって、本明細書で使用される用語法は、特定の実施形態を説明するためのみのものであって、限定的であることは意図されていない。
【００６１】
［0070］  いくつかの代替実施態様では、注記された機能／行為が、図に示された順序から外れて発生する可能性があることにも留意されたい。たとえば、関係する機能性／行為に依存して、連続して示される２つの図が、実際には実質的に同時に実行される場合があり、あるいは、時には逆の順序で実行される場合がある。
【００６２】
［0071］  上の実施形態を念頭において、諸実施形態が、コンピュータ・システム内に記憶されたデータを用いる様々なコンピュータ実施される動作を使用することができることを理解されたい。これらの動作は、物理量の物理的操作を必要とする動作である。必ずではないが通常、これらの量は、記憶され、転送され、組み合わされ、比較され、他の形で操作されることが可能な電気信号または磁気信号の形をとる。さらに、実行される操作は、しばしば、作る、識別する、判定する、または比較するなどの言葉で参照される。諸実施形態の一部を形成する、本明細書で説明される動作のいずれもが、有用な機械動作である。諸実施形態は、これらの動作を実行するためのデバイスまたは装置にも関する。装置は、要求される目的のために特に構成され得、あるいは、装置は、コンピュータ内に記憶されたコンピュータ・プログラムによって選択的にアクティブ化されまたは構成される汎用コンピュータとされ得る。具体的には、様々な汎用マシンが、本明細書の教示に従って記述されたコンピュータ・プログラムと共に使用され得、あるいは、要求される動作を実行するように、より特殊化された装置を構成することが、より便利である場合がある。
【００６３】
［0072］  モジュール、アプリケーション、レイヤ、エージェント、または他の方法実施可能なエンティティは、ハードウェア、ファームウェア、もしくはソフトウェアを実行するプロセッサ、またはその組合せとして実施され得る。ソフトウェアベースの実施形態が本明細書で開示される場合に、そのソフトウェアが、コントローラなどの物理機械内で実施され得ることを了解されたい。たとえば、コントローラが、第１のモジュールおよび第２のモジュールを含む可能性がある。コントローラは、たとえば方法、アプリケーション、レイヤ、またはエージェントの、様々なアクションを実行するように構成され得る。
【００６４】
［0073］  諸実施形態は、非一時的コンピュータ可読媒体上のコンピュータ可読コードとして実施されることも可能である。コンピュータ可読媒体は、その後にコンピュータ・システムによって読み取られ得るデータを記憶することのできる任意のデータ・ストレージ・デバイスである。コンピュータ可読媒体の例は、ハード・ドライブ、ネットワーク・アタッチト・ストレージ（ＮＡＳ）、読取専用メモリ、ランダム・アクセス・メモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、ならびに他の光学的および非光学的なデータ・ストレージ・デバイスを含む。コンピュータ可読媒体は、コンピュータ可読コードが分散された形で記憶され、実行されるようにするために、ネットワーク結合されたコンピュータ・システムを介して分散もされ得る。本明細書で説明される実施形態は、ハンドヘルド・デバイス、タブレット、マイクロプロセッサ・システム、マイクロプロセッサベースのまたはプログラム可能な消費者エレクトロニクス、ミニコンピュータ、メインフレーム・コンピュータ、および類似物を含む様々なコンピュータ・システム構成を用いて実践され得る。諸実施形態は、有線ベースのネットワークまたは無線ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境内でも実践され得る。
【００６５】
［0074］  方法動作が、特定の順序で説明されたが、他の動作が、説明された動作の間に実行され得、説明された動作が、それらがわずかに異なる時に行われるようにするために調整され得、あるいは、説明された動作が、処理に関連する様々なインターバルでの処理動作の発生を可能にするシステム内で分散され得ることを理解されたい。
【００６６】
［0075］  様々な実施形態では、本明細書で説明される方法および機構の１つまたは複数の部分が、クラウドコンピューティング環境の一部を形成することができる。そのような実施形態では、リソースは、１つまたは複数の様々なモデルに従うサービスとしてインターネットを介して提供され得る。そのようなモデルは、インフラストラクチャ・アズ・ア・サービス（ＩａａＳ）、プラットフォーム・アズ・ア・サービス（ＰａａＳ）、およびソフトウェア・アズ・ア・サービス（ＳａａＳ）を含むことができる。ＩａａＳでは、コンピュータ・インフラストラクチャが、サービスとして配信される。その場合に、コンピューティング機器は、一般に、サービス・プロバイダによって所有され、運営される。ＰａａＳモデルでは、ソフトウェア・ソリューションを開発するために開発者によって使用されるソフトウェア・ツールおよび基礎になる機器が、サービス・プロバイダによってサービスとして提供され、ホスティングされ得る。ＳａａＳは、通常、サービス・プロバイダがサービスとしてオン・デマンドでソフトウェアのライセンスを発行することを含む。サービス・プロバイダは、ソフトウェアをホスティングすることができ、あるいは、所与の時間期間の間に顧客にソフトウェアを展開することができる。上記モデルの多数の組合せが、可能であり、企図されている。
【００６７】
［0076］  様々なユニット、回路、または他の構成要素が、１つまたは複数のタスクを実行する「ように構成される」ものとして説明され、または請求される場合がある。そのような文脈では、句「ように構成される」は、ユニット／回路／構成要素が、動作中に１つまたは複数のタスクを実行する構造（たとえば、回路網）を含むことを示すことによって、構造を暗示するのに使用される。したがって、ユニット／回路／構成要素は、指定されたユニット／回路／構成要素が現在は動作していない（すなわち、オンではない）時であってもタスクを実行するように構成されると言われ得る。「ように構成される」という言語と共に使用されるユニット／回路／構成要素は、ハードウェア、たとえば、回路、動作を実施するために実行可能なプログラム命令を記憶するメモリ、その他を含む。ユニット／回路／構成要素が１つまたは複数のタスクを実行する「ように構成される」と具陳することは、そのユニット／回路／構成要素に関して米国特許法第１１２条第６段落に頼らないことが特に意図されている。さらに、「ように構成される」は、問題のタスク（１つまたは複数）を実行することのできる形で動作するためにソフトウェアおよび／またはファームウェアによって操作される包括的構造（たとえば、包括的回路網）（たとえば、ソフトウェアを実行するＦＰＧＡまたは汎用プロセッサ）を含むことができる。「ように構成される」は、１つまたは複数のタスクを実施しまたは実行するように適合されたデバイス（たとえば、集積回路）を製造するために製造プロセス（たとえば、半導体製造施設）を適合させることをも含むことができる。
【００６８】
［0077］  前述の記述は、説明のために、特定の実施形態を参照して記述された。しかし、上の例示的な議論は、網羅的であることまたは開示された正確な形態に本発明を限定することを意図されたものではない。多数の変更および変形が、上記教示に鑑みて可能である。諸実施形態は、諸実施形態の原理およびその実用的応用を最もよく説明し、これによって、企図される特定の使用に適するものになることができるものとして諸実施形態および様々な変更を当業者が最もよく利用することを可能にするために選択され、説明された。したがって、本実施形態は、制限的ではなく例示的と考えられなければならず、本発明は、本明細書で与えられる詳細に限定されてはならず、添付の特許請求の範囲の範囲および同等物の中で変更され得る。
【図１】
2019517063.tif 000003
【図２】
2019517063.tif 000004
【図３】
2019517063.tif 000005
【図４】
2019517063.tif 000006
【図５】
2019517063.tif 000007
【図６】
2019517063.tif 000008
【図７】
2019517063.tif 000009
【図８】
2019517063.tif 000010
【図９】
2019517063.tif 000011
【図１０】
2019517063.tif 000012
【国際調査報告】
2019517063.tif 000013
2019517063.tif 000014