(57)【特許請求の範囲】
【請求項１】
ストレージシステムにおいて、
複数のストレージユニットを備え、それら複数のストレージユニットの各々は、ユーザデータのためのストレージメモリを有し、
複数のストレージノードを更に備え、それら複数のストレージノードの各々は、ユーザデータの一部分の所有権を有するように構成され、及び
前記複数のストレージユニットを結合する第１経路を備え、前記複数のストレージユニットの各々が前記複数のストレージノードからの支援なしに第１経路を経て前記複数のストレージユニットの少なくとも１つの他のストレージユニットと通信できるようにされ、前記第１経路は、ネットワークスイッチを含む、
ストレージシステム。
【請求項２】
前記複数のストレージノードを結合する第２経路を備え、前記複数のストレージノードの各々が第２経路を経て前記複数のストレージノードの各他のストレージユニットと通信できるようにする、請求項１に記載のストレージシステム。
【請求項３】
前記複数のストレージユニットの第１サブセットを結合する前記第１経路の第１部分
を更に備えた、請求項１に記載のストレージシステム。
【請求項４】
前記複数のストレージノードを結合する第２経路を備え、
前記第１経路は、前記複数のストレージユニットの各々を前記複数のストレージユニットの各他のストレージユニットに結合する請求項１に記載のストレージシステム。
【請求項５】
前記複数のストレージユニットの第２サブセットを結合する前記第１経路の第２部分を更に備える、請求項３に記載のストレージシステム。
【請求項６】
前記ストレージメモリは、ソリッドステートストレージメモリを含む、請求項１に記載のストレージシステム。
【請求項７】
互いに結合され、かつ、前記第１経路を通って前記複数のストレージノードを結合する複数の計算ノードを更に備える、
請求項１に記載のストレージシステム。
【請求項８】
ストレージクラスターにおいて、
複数のスロットを備え、各スロットは、ストレージノード又はストレージユニットを受け入れるよう構成され、その各々は、前記複数のスロットの１つ以上を占有することができ、
複数のストレージユニットを備え、
前記複数のストレージユニットの各々は、ユーザデータのためのソリッドステートストレージメモリを有し、
第１経路を備え、この第１経路は、この第１経路を経て前記複数のストレージユニットの第１ストレージユニットから前記複数のストレージユニットの第２ストレージユニットへの通信に介入するか又はそれを支援するストレージノードがないように前記複数のストレージユニットを結合し、
少なくとも１つのネットワークスイッチを備え、この少なくとも１つのネットワークスイッチは、前記第１経路を含み、
複数のストレージノードを備え、前記少なくとも１つのネットワークスイッチは、前記複数のストレージノードを結合する、
ストレージクラスター。
【請求項９】
前記複数のストレージノードに結合する第２経路を更に備える、
請求項８に記載のストレージクラスター。
【請求項１０】
前記第１経路は、前記複数のストレージユニットの各々を前記複数のストレージユニットの各他のストレージユニットに結合する、
請求項８に記載のストレージクラスター。
【請求項１１】
１つ以上の計算ノードを更に備え、
前記１つ以上の計算ノードの各々は、１つ以上のプロセッサ複合体を有する、
請求項８に記載のストレージクラスター。
【請求項１２】
１つ以上の計算ノードを更に備え、
前記ネットワークスイッチは、前記１つ以上の計算ノードの各々、前記ストレージノードの各々、
及び前記複数のストレージユニットの各々を一緒に結合する、
請求項８に記載のストレージクラスター。
【請求項１３】
前記第１経路は、前記１つ以上の計算ノードの各々の前記１つ以上のプロセッサ複合体の各々を一緒に結合する、
請求項１２に記載のストレージクラスター。
【請求項１４】
ストレージシステムにおいて、
複数のストレージユニットを備え、
前記複数のストレージユニットの各々は、ユーザデータのためのソリッドステートストレージメモリを有し、
第１経路を更に備え、前記複数のストレージユニットの各々は、前記第１経路を経て前記複数のストレージユニットの少なくとも１つの他のストレージユニットと通信するように結合され、
複数のストレージノードを更に備え、それら複数のストレージノードの各々は、その中に複数のストレージユニットのサブセットを有すると共に、ユーザデータの一部分の所有権を有し、前記複数のストレージノードは、ストレージユニット間の直接的通信には関与せず、
前記複数のストレージノードを結合する第２経路を更に備え、
及び
少なくとも１つのネットワークスイッチであって、前記第１経路及び前記第２経路は、その少なくとも１つのネットワークスイッチに含まれる、
ストレージシステム。
【請求項１５】
前記第１経路は、前記複数のストレージユニットの第１及び第２のストレージユニットを互いに且つ前記複数のストレージノードの第１ストレージノードに結合する第１バスを含み、
前記第１経路は、前記複数のストレージユニットの第３及び第４のストレージユニットを互いに且つ前記複数のストレージノードの第２ストレージノードに結合する第２バスを含む、
請求項１４に記載のストレージシステム。
【請求項１６】
前記第１経路は、前記複数のストレージユニットを結合するバスを備え、このバスは、前記複数のストレージユニットを通ることを除いて前記複数のストレージノードに結合されていない、
請求項１４に記載のストレージシステム。
【請求項１７】
前記複数のストレージユニットの各々は、前記第１経路を経て前記複数のストレージユニットの各他のストレージユニットと通信するように結合され、前記ストレージノードは、それらストレージユニット間のそのような直接的通信には関与しない、請求項１４に記載のストレージシステム。
【請求項１８】
少なくとも１つのネットワークスイッチを更に備え、前記第１経路及び前記第２経路は、その少なくとも１つのネットワークスイッチに含まれる、請求項１４に記載のストレージシステム。
【請求項１９】
１つ以上の計算ノードを更に備え、その各々は、１つ以上のプロセッサ複合体を有する、請求項１４に記載のストレージシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
総体的にスピン媒体として知られている従来のハードディスクドライブ（ＨＤＤ）、書き込み可能なＣＤ（コンパクトディスク）又は書き込み可能なＤＶＤ（デジタル多様性ディスク）ドライブ、及び大量のデータを記憶するためのテープドライブを増強し又はそれに置き換わるソリッドステートドライブ（ＳＳＤ）には、現在、フラッシュのようなソリッドステートメモリが使用されている。フラッシュ及び他のソリッドステートメモリは、スピン媒体とは異なる特性を有する。更に、多くのソリッドステートドライブは、互換性の理由でハードディスクドライブ規格に合致するよう設計され、これは、フラッシュ及び他のソリッドステートメモリの独特の観点の利点を取り入れるか又は改善された特徴を与えるのを困難にする。スピン媒体は、従来のストレージアレイのストレージユニット又はストレージノード間の接続通信経路の融通性又は多様性に限度がある。
【０００２】
本実施形態は、このような状況において得られたものである。
【発明の概要】
【０００３】
ある実施形態において、ストレージシステムが提供される。該ストレージシステムは、複数のストレージユニットを備え、それら複数のストレージユニットの各々は、ユーザデータのためのストレージメモリを有し、更に、複数のストレージノードを備え、それら複数のストレージノードの各々は、ユーザデータの一部分の所有権を有するように構成される。又、ストレージシステムは、複数のストレージユニットを結合する第１経路を備え、複数のストレージユニットの各々が複数のストレージノードからの支援なしに第１経路を経て複数のストレージユニットの少なくとも１つの他のストレージユニットと通信できるようにする。
【０００４】
ある実施形態において、ストレージクラスターが提供される。該ストレージクラスターは、複数のスロットを有する単一シャーシを備え、各スロットは、ストレージノード又はストレージユニットを受け入れるように構成され、その各々は、複数のスロットのうちの１つ以上を占有することができる。ストレージクラスターは、単一シャーシに複数のストレージユニットを備え、それら複数のストレージユニットの各々は、ユーザデータのためのソリッドステートストレージメモリを有する。ストレージクラスターは、複数のストレージユニットを結合する第１経路を単一シャーシに備え、複数のストレージユニットのうちの第１ストレージユニットから第１経路を経て複数のストレージユニットのうちの第２ストレージユニットへの通信に介入したり又はそれを支援したりするストレージノードがないようにする。
【０００５】
ある実施形態において、単一シャーシのストレージシステムが提供される。該ストレージシステムは、単一シャーシに複数のストレージユニットを備え、それら複数のストレージユニットの各々は、ユーザデータのためのソリッドステートストレージメモリを有する。又、ストレージシステムは、単一シャーシに第１経路を備え、複数のストレージユニットの各々は、その第１経路を経て複数のストレージユニットのうちの少なくとも１つの他のストレージユニットと通信するように結合される。又、ストレージシステムは、単一シャーシに複数のストレージノードを備え、それら複数のストレージノードの各々は、複数のストレージユニットのサブセットを有し且つユーザデータの一部分の所有権を有し、ここで、複数のストレージノードは、ストレージユニット間の直接的な通信に関与しない。又、ストレージシステムは、複数のストレージノードを結合する第２経路を単一シャーシに備えている。
【０００６】
本実施形態の他の観点及び効果は、ここに述べる実施形態の原理を一例として示す添付図面に関連した以下の詳細な説明から明らかとなろう。
【０００７】
ここに述べる実施形態及びその効果は、添付図面を参照した以下の説明から最も良く理解されるであろう。それらの図面は、ここに述べる実施形態の精神及び範囲から逸脱せずに当業者によりここに述べる実施形態に対してなされる形態及び細部の変更を何ら限定するものではない。
【図面の簡単な説明】
【０００８】
【図１】ある実施形態によりネットワークアタッチ型ストレージを形成するために多数のストレージノード及び各ストレージノードに結合された内部ストレージを伴うストレージクラスターの斜視図である。
【図２】ある実施形態においてストレージリソースとして図１のストレージクラスターの１つ以上を使用できる企業用コンピューティングシステムのシステム図である。
【図３】ある実施形態により図１のストレージクラスターに使用するのに適した異なる容量をもつ多数のストレージノード及び不揮発性ソリッドステートストレージを示すブロック図である。
【図４】ある実施形態により多数のストレージノードを結合する相互接続スイッチを示すブロック図である。
【図５】ある実施形態によりストレージノードのコンテンツ及び１つの不揮発性ソリッドステートストレージユニットのコンテンツを示すマルチレベルブロック図である。
【図６Ａ】ある実施形態によりストレージノードとストレージユニットとの間及びそれらの中での接続を一例として有するストレージクラスターの更に別の実施形態のブロック図である。
【図６Ｂ】ある実施形態による図６Ａのストレージクラスター内での接続の変形例である。
【図７】ある実施形態によりデータストレージ又はデータストレージとコンピューティングとの組み合せに適した図１ないし５のストレージクラスターの更に別の実施形態のブロック図である。
【図８Ａ】ある実施形態によりスイッチを伴う図１ないし５のストレージクラスター内の接続の更に別の実施形態のブロック図である。
【図８Ｂ】ある実施形態によりストレージユニットを結合するスイッチを伴う図８Ａのストレージクラスター内の接続の変形例を示す。
【図９Ａ】ある実施形態によりストレージクラスターに対して一緒に結合されたコンピュータノードのアーキテクチャーの一例のブロック図である。
【図９Ｂ】ある実施形態により図９Ａのコンピュータノードを伴う図１ないし５のストレージクラスターの更に別の実施形態のブロック図である。
【図９Ｃ】ある実施形態により図９Ｂのコンピュータノードを伴うストレージクラスターの変形例のブロック図で、多数のシャーシにおいて１つ以上のストレージクラスターとして全てが一緒に結合されたストレージノード、ストレージユニット及びコンピュータノードと、シャーシ内及びシャーシ間の接続の変形例とを示す図である。
【図１０】ある実施形態によりストレージクラスター、ストレージノード及び／又は不揮発性ソリッドステートストレージ又はストレージユニットの実施形態において又は実施形態により実施できるストレージクラスター動作方法のフローチャートである。
【図１１】ここに述べる実施形態を具現化する規範的なコンピューティング装置を示す図である。
【発明を実施するための形態】
【０００９】
以下の実施形態は、ユーザデータ、例えば、１人以上のユーザ、又はクライアントシステム、或いはストレージクラスターの外部の他のソースから発生するユーザデータを記憶するストレージクラスターについて述べる。ストレージクラスターは、消去コーディング及びメタデータの冗長コピーを使用してシャーシ内に収容されたストレージノードにわたりユーザデータを分散する。消去コーディングとは、ディスク、ストレージノード又は地理的位置のような異なる位置のセットにわたりデータが記憶されるデータ保護又は再構成の方法を指す。フラッシュメモリは、本実施形態に一体化されるソリッドステートメモリの１つのタイプであるが、本実施形態は、非ソリッドステートメモリを含む他のタイプのソリッドステートメモリ又は他のストレージ媒体へと拡張することができる。ストレージ位置及びワークロードの制御は、クラスター化ピア・ツー・ピアシステムのストレージ位置にわたって分散される。種々のストレージノード間の通信を仲裁し、ストレージノードが利用できなくなるときを検出し、そして種々のストレージノードにわたりＩ／Ｏ（入力及び出力）をバランシングするようなタスクは、全て、分散ベースで取り扱われる。ある実施形態では、データは、データ回復をサポートするデータ断片又はストライプで多数のストレージノードにわたってレイアウト又は分散される。データの所有権は、入力及び出力パターンに関わりなくクラスター内で再指定することができる。以下に詳細に述べるこのアーキテクチャーは、システムが動作したまま、クラスターのストレージノードが失敗となるのを許す。というのは、データは、他のストレージノードから再構成することができ、従って、入力及び出力動作について利用可能に保たれるからである。種々の実施形態において、ストレージノードは、クラスターノード、ブレード、又はサーバーとも称される。
【００１０】
ストレージクラスターは、シャーシ内、即ち１つ以上のストレージノードを収容するエンクロージャー内に収容される。各ストレージノードに電力を供給するメカニズム、例えば、配電バス、並びに通信メカニズム、例えば、ストレージノード間の通信を可能にする通信バスは、シャーシ内に含まれる。ある実施形態によれば、ストレージクラスターは、１つの位置において独立システムとして実行することができる。ある実施形態において、シャーシは、独立してイネーブル又はディスエイブルされる配電及び通信の両バスの少なくとも２つのインスタンスを収容する。内部通信バスは、イーサネットバスであるが、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）エクスプレス、インフィニバンド、等の他のテクノロジーも等しく適当である。シャーシは、多数のシャーシ間の通信を、直接的に、又はスイッチを通して、及びクライアントシステムと共に、可能にするための外部通信バスのポートを与える。外部通信は、イーサネット（登録商標）、インフィニバンド、ファイバーチャンネル、等のテクノロジーを使用する。ある実施形態では、外部通信バスは、シャーシ間及びクライアント間通信に対して異なる通信バステクノロジーを使用する。シャーシ内又はシャーシ間にスイッチが配備される場合には、スイッチは、多数のプロトコル又はテクノロジー間の変換体として働く。ストレージクラスターを画成するために多数のシャーシが接続されるときには、ストレージクラスターは、ネットワークファイルシステム（ＮＦＳ）、普通のインターネットファイルシステム（ＣＩＦＳ）、小型コンピュータシステムインターフェイス（ＳＣＳＩ）又はハイパーテキスト転送プロトコル（ＨＴＴＰ）のような独占的インターフェイス又は標準的インターフェイスを使用してクライアントによりアクセスすることができる。クライアントプロトコルからの変換は、スイッチ、シャーシ外部通信又は各ストレージノード内において行われる。
【００１１】
各ストレージノードは、１つ以上のストレージサーバーであり、そして各ストレージサーバーは、ストレージユニットと称される１つ以上の不揮発性ソリッドステートメモリユニットに接続される。１つの実施形態では、各ストレージノードに及び１つないし８つの不揮発性ソリッドステートメモリユニット間に単一のストレージサーバーが含まれるが、この一例に限定されない。ストレージサーバーは、プロセッサ、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、並びにインターネット通信バス及び各電力バスの配電のためのインターフェイスを備えている。ストレージノード内では、インターフェイス及びストレージユニットは、通信バス、例えば、ある実施形態では、ＰＣＩエクスプレスを共有する。不揮発性ソリッドステートメモリユニットは、ストレージノード通信バスを経て内部通信バスインターフェイスに直接アクセスするか、又はバスインターフェイスにアクセスするようストレージノードに要求する。不揮発性ソリッドステートメモリユニットは、埋め込み型中央処理ユニット（ＣＰＵ）、ソリッドステートストレージコントローラ、及びある実施形態では例えば２−３２テラバイト（ＴＢ）のソリッドステート大量ストレージの量を含む。ＤＲＡＭのような埋め込み型揮発性ストレージ媒体及びエネルギー貯蔵装置が不揮発性ソリッドステートメモリユニットに含まれる。ある実施形態では、エネルギー貯蔵装置は、停電の場合にＤＲＡＭコンテンツのサブセットを安定なストレージ媒体に転送できるキャパシタ、スーパーキャパシタ又はバッテリである。ある実施形態では、不揮発性ソリッドステートメモリユニットは、ストレージクラスメモリ、例えば、ＤＲＡＭに取って代わるもので減少電力保持装置を可能にする相変化又は磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）と共に構成される。
【００１２】
ストレージノード及び不揮発性ソリッドステートストレージの多数の特徴の１つは、ストレージクラスターにおいてデータを先験的に再構築する能力である。ストレージノード及び不揮発性ソリッドステートストレージは、ストレージノード又は不揮発性ソリッドステートストレージに関するデータを読み取る試みがあるかどうかに関わらず、ストレージクラスターのストレージノード又は不揮発性ソリッドステートストレージに到達できないときを決定することができる。ストレージノード及び不揮発性ソリッドステートストレージは、次いで、少なくとも部分的に新たな位置においてデータを回復し且つ再構築するように協働する。これは、ストレージクラスターを使用するクライアントシステムから開始された読み取りアクセスに対してデータが必要になるまで待機することなくシステムがデータを再構築するという点で先見的再構築を構成する。ストレージメモリ及びその動作のこれら及び更に別の細部を以下に述べる。
【００１３】
図１は、ある実施形態によりネットワークアタッチ型ストレージ又はストレージエリアネットワークを形成するために多数のストレージノード１５０及び各ストレージノードに結合された内部ソリッドステートメモリを伴うストレージクラスター１６０の斜視図である。ネットワークアタッチ型ストレージ、ストレージエリアネットワーク又はストレージクラスター或いは他のストレージメモリは、１つ以上のストレージノード１５０を各々有する１つ以上のストレージクラスター１６０を、物理的コンポーネント及びそれにより与えられる量のストレージメモリの両方の柔軟で且つ再構成可能な配列で備えることができる。ストレージクラスター１６０は、ラックに適合するように設計され、そして１つ以上のラックをストレージメモリとして必要に応じて設定し且存在させることができる。ストレージクラスター１６０は、多数のスロット１４２を有するシャーシ１３８を含む。シャーシ１３８は、ハウジング、エンクロージャー、又はラックユニットとも称されることが明らかである。１つの実施形態において、シャーシ１３８は、１４個のスロット１４２を有するが、他の数のスロットも容易に案出される。例えば、ある実施形態では、４個のスロット、８個のスロット、１６個のスロット、３２個のスロット、又は他の数のスロットがある。ある実施形態において、各スロット１４２は、１つのストレージノード１５０を収容することができる。シャーシ１３８は、シャーシ１３８をラックにマウントするのに使用できるフラップ１４８を備えている。ファン１４４は、ストレージノード１５０及びそのコンポーネントを冷却するための空気循環を与えるが、他の冷却コンポーネントを使用することもでき、或いは冷却コンポーネントをもたない実施形態も案出できる。スイッチファブリック１４６は、シャーシ１３８内のストレージノード１５０を一緒に結合しそしてメモリへの通信のためにネットワークに結合する。図１に示す実施形態では、スイッチファブリック１４６及びファン１４４の左のスロット１４２は、ストレージノード１５０により占有されて示されているが、スイッチファブリック１４６及びファン１４４の右のスロット１４２は、例示の目的で、空であり、ストレージノード１５０を挿入するのに利用できる。この構成は一例に過ぎず、そして種々の更に別の配列では、１つ以上のストレージノード１５０がスロット１４２を占有する。ストレージノードの配列は、ある実施形態では、連続的又は隣接である必要はない。ストレージノード１５０は、ホットプラグ型であり、これは、システムを停止又はパワーダウンせずに、ストレージノード１５０をシャーシ１３８のスロット１４２に挿入し又はスロット１４２から除去できることを意味する。ストレージノード１５０をスロット１４２に挿入し又はそこから除去するときに、システムは、その変化を認識し且つそれに適応するために自動的に再構成する。ある実施形態では、再構成は、冗長性の回復及び／又はデータ又は負荷の再バランシングを含む。
【００１４】
各ストレージノード１５０は、多数のコンポーネントを有することができる。ここに示す実施形態では、ストレージノード１５０は、ＣＰＵ１５６、即ちプロセッサ、ＣＰＵ１５６に結合されたメモリ１５４、及びＣＰＵ１５６に結合された不揮発性ソリッドステートストレージ１５２が存在するプリント回路板１５８を備えているが、更に別の実施形態では、他のマウンティング及び／又はコンポーネントを使用することができる。メモリ１５４は、ＣＰＵ１５６により実行されるインストラクション及び／又はＣＰＵ１５６により操作されるデータを有する。以下に詳細に述べるように、不揮発性ソリッドステートストレージ１５２は、フラッシュを含み、又は更に別の実施形態では、他のタイプのソリッドステートメモリを含む。
【００１５】
図２は、ストレージリソース１０８として図１のストレージノード、ストレージクラスター及び／又は不揮発性ソリッドステートストレージの１つ以上を使用できる企業用コンピューティングシステム１０２のシステム図である。例えば、図２のフラッシュストレージ１２８は、ある実施形態において、図１のストレージノード、ストレージクラスター、及び／又は不揮発性ソリッドステートストレージを一体化したものでよい。企業用コンピューティングシステム１０２は、処理リソース１０４、ネットワークリソース１０６、及びフラッシュストレージ１２８を含むストレージリソース１０８を有する。フラッシュストレージ１２８には、フラッシュコントローラ１３０及びフラッシュメモリ１３２が含まれる。種々の実施形態において、フラッシュストレージ１２８は、ＣＰＵを含むフラッシュコントローラ１３０、及びストレージノードの不揮発性ソリッドステートストレージを含むフラッシュメモリ１３２と共に、１つ以上のストレージノード又はストレージクラスターを含むことができる。ある実施形態において、フラッシュメモリ１３２は、異なるタイプのフラッシュメモリ又は同じタイプのフラッシュメモリを含んでもよい。企業用コンピューティングシステム１０２は、フラッシュストレージ１２８を配備するのに適した環境を示すが、フラッシュストレージ１２８は、より大きな又はより小さな他のコンピューティングシステム又は装置に、或いはより少数の又は付加的なリソースを伴う企業用コンピューティングシステム１０２の変形形態に使用することができる。企業用コンピューティングシステム１０２は、サービスを提供するか又は利用するためにインターネットのようなネットワーク１４０に結合される。例えば、企業用コンピューティングシステム１０２は、クラウドサービス、物理的コンピューティングリソース、又はバーチャルコンピューティングサービスを提供することができる。
【００１６】
企業用コンピューティングシステム１０２では、種々のリソースが種々のコントローラにより配列及び管理される。処理コントローラ１１０は、プロセッサ１１６及びランダムアクセスメモリ（ＲＡＭ）１１８を含む処理リソース１０４を管理する。ネットワークコントローラ１１２は、ルーター１２０、スイッチ１２２及びサーバー１２４を含むネットワークリソース１０６を管理する。ストレージコントローラ１１４は、ハードドライブ１２６及びフラッシュストレージ１２８を含むストレージリソース１０８を管理する。これら実施形態には、他のタイプの処理リソース、ネットワークリソース及びストレージリソースが含まれてもよい。ある実施形態では、フラッシュストレージ１２８がハードドライブ１２６に完全に置き換わる。企業用コンピューティングシステム１０２は、種々のリソースを、物理的コンピューティングリソースとして、或いは変形例では、物理的コンピューティングリソースによりサポートされたバーチャルコンピューティングリソースとして与え又は割り当てることができる。例えば、種々のリソースは、ソフトウェアを実行する１つ以上のサーバーを使用して実施することができる。ファイル又は他のオブジェクト、或いは他の形態のデータは、ストレージリソース１０８に記憶される。
【００１７】
種々の実施形態において、企業用コンピューティングシステム１０２は、ストレージクラスターが存在する多数のラックを備え、それらは、クラスター又はサーバーファームのような単一の物理的位置に配置される。他の実施形態では、多数のラックは、ネットワークで結ばれた種々の都市、州又は国々のような多数の物理的位置に配置される。各ラック、各ストレージクラスター、各ストレージノード及び各不揮発性ソリッドステートストレージは、各量のストレージスペースと共に個々に構成され、これは、次いで、他のものに関わりなく再構成することができる。従って、ストレージ容量は、不揮発性ソリッドステートストレージの各々において、柔軟に追加でき、アップグレードでき、差し引きでき、回復でき及び／又は再構成できる。上述したように、各ストレージノードは、ある実施形態において１つ以上のサーバーを実施することができる。
【００１８】
図３は、図１のシャーシに使用するのに適した異なる容量をもつ多数のストレージノード１５０及び不揮発性ソリッドステートストレージ１５２を示すブロック図である。各ストレージノード１５０は、不揮発性ソリッドステートストレージ１５２の１つ以上のユニットを有する。各不揮発性ソリッドステートストレージ１５２は、ある実施形態では、ストレージノード１５０又は他のストレージノード１５０における他の不揮発性ソリッドステートストレージ１５２からの異なる容量を含んでもよい。或いは又、ストレージノード又は多数のストレージノードにおける全ての不揮発性ソリッドステートストレージ１５２は、同じ容量を有してもよいし、又は同じ及び／又は異なる容量の組み合せを有してもよい。この融通性が図３に示されており、図３は、４、８及び３２ＴＢ容量の混合不揮発性ソリッドステートストレージ１５２を有する１つのストレージノード１５０、各々３２ＴＢ容量の不揮発性ソリッドステートストレージ１５２を有する別のストレージノード１５０、及び各々８ＴＢ容量の不揮発性ソリッドステートストレージ１５２を有する更に別のストレージノードの一例を示す。ここに述べる教示に従って更に別の種々の組み合せ及び容量が容易に案出される。クラスター化、例えば、ストレージクラスターを形成するためのクラスター化ストレージの状況において、ストレージノードは、不揮発性ソリッドステートストレージ１５２であるか又はそれを含む。不揮発性ソリッドステートストレージ１５２は、以下に更に述べるように、不揮発性ソリッドステートストレージ１５２が不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）コンポーネントを含むので、便利なクラスター化ポイントである。
【００１９】
図１及び３を参照すれば、ストレージクラスター１６０は、拡張可能であり、これは、上述したように、非均一のストレージサイズを伴うストレージ容量が容易に追加されることを意味する。１つ以上のストレージノード１５０を各シャーシに差し込んだり除去したりすることができ、そしてある実施形態では、ストレージクラスターが自己構成である。プラグインストレージノード１５０は、納入時にシャーシに設置されたものでも、後から追加されるものでも、異なるサイズをもつことができる。例えば、ある実施形態では、ストレージノード１５０は、４ＴＢの倍数をもつことができ、例えば、８ＴＢ、１２ＴＢ、１６ＴＢ、３２ＴＢ、等である。更に別の実施形態では、ストレージノード１５０は、他のストレージ量又は容量の倍数でもよい。各ストレージノード１５０のストレージ容量がブロードキャストされ、データをどのようにストライプ化するかの判断に影響を及ぼす。最大ストレージ効率のため、一実施形態では、ストライプをできるだけ広く自己構成することができ、これは、シャーシ内の不揮発性ソリッドステートストレージユニット１５２又はストレージノード１５０が１個まで又は２個まで失われる連続動作という所定条件を受ける。
【００２０】
図４は、多数のストレージノード１５０を結合する通信相互接続１７０及び配電バス１７２を示すブロック図である。図１に戻ると、通信相互接続１７０は、ある実施形態では、スイッチファブリック１４６に含まれるか又はそれで実施される。多数のストレージクラスター１６０がラックを占有するところでは、通信相互接続１７０は、ある実施形態では、ラックスイッチの頂部に含まれるか又はそれで実施される。図４に示すように、ストレージクラスター１６０は、単一シャーシ１３８内に収容される。外部ポート１７６は、通信相互接続１７０を通してストレージノード１５０へ結合され、一方、外部ポート１７４は、ストレージノードへ直結される。外部電力ポート１７８は、配電バス１７２に結合される。ストレージノード１５０は、図３を参照して述べたように、変化する量及び異なる容量の不揮発性ソリッドステートストレージ１５２を含む。加えて、１つ以上のストレージノード１５０は、図４に示すように、計算専用のストレージノードである。計算専用のストレージノード１５０は、ストレージクラスター１６０の計算機能を遂行するか、又は計算ノードとして機能して計算機能を遂行し及び／又はアプリケーションを実行し、これは、種々の実施形態において、ストレージクラスター１６０の不揮発性ソリッドステートストレージ１５２を行先とするか又はそれに記憶されるか又はそこから検索されるユーザデータを使用する。オーソリティ１６８は、不揮発性ソリッドステートストレージ１５２において、例えば、メモリに記憶されたリスト又は他のデータ構造体として実施される。ある実施形態では、オーソリティは、不揮発性ソリッドステートストレージ１５２内に記憶され、そして不揮発性ソリッドステートストレージ１５２のコントローラ又は他のプロセッサで実行されるソフトウェアによりサポートされる。更に別の実施形態では、オーソリティ１６８は、ストレージノード１５０において、例えば、メモリ１５４に記憶されたリスト又は他のデータ構造体として実施され、そしてストレージノード１５０のＣＰＵ１５６で実行されるソフトウェアによりサポートされる。オーソリティ１６８は、ある実施形態では、不揮発性ソリッドステートストレージ１５２においてどのようにそしてどこにデータが記憶されるかを制御する。この制御は、どのタイプの消去コーディングスキムをデータに適用するかそしてどのストレージノード１５０がデータのどの部分を有するか決定する上で助けとなる。各オーソリティ１６８は、不揮発性ソリッドステートストレージ１５２に指定される。各オーソリティは、種々の実施形態において、ｉノード番号の範囲、セグメント番号、又はデータに指定される他のデータ識別子を、ファイルシステムにより、又はストレージノード１５０により、又は不揮発性ソリッドステートストレージ１５２により制御する。
【００２１】
各データ断片及び各メタデータ断片は、ある実施形態では、システムにおいて冗長性を有する。加えて、各データ断片及び各メタデータ断片は、オーソリティと称されるか又はある変形例ではワード(ward)と称される所有者を有し、オーソリティは、ワードのグループ又はセットである。例えば、ストレージノードの失敗によりそのオーソリティに到達できない場合には、そのデータ又はそのメタデータをどのように見出すかについての成功のプランがある。種々の実施形態において、オーソリティ１６８の冗長コピーがある。オーソリティ１６８は、ある実施形態では、ストレージノード１５０及び不揮発性ソリッドステートストレージ１５２に対してある関係を有する。ある範囲のデータセグメント番号又は他のデータ識別子をカバーする各オーソリティ１６８（従って、オーソリティがワードのグループである実施形態では、ワードの各グループ）が、特定の不揮発性ソリッドステートストレージ１５２に指定される。ある実施形態において、全てのそのような範囲に対するオーソリティ１６８は、ストレージクラスターの不揮発性ソリッドステートストレージ１５２にわたって分散される。各ストレージノード１５０は、そのストレージノード１５０の不揮発性ソリッドステートストレージ１５２へのアクセスを与えるネットワークポートを有する。データは、セグメント番号に関連したセグメントに記憶され、そしてそのセグメント番号は、ある実施形態では、ＲＡＩＤ（独立ディスクの冗長アレイ）ストライプの構成に対する間接参照(indirection)である。従って、オーソリティ１６８（及びもし該当する場合には、ワード）の指定及び使用は、データへの間接参照を確立する。間接参照は、ある実施形態によれば、データを間接的に、このケースでは、オーソリティ１６８を経て、参照する能力とも称される。セグメントは、不揮発性ソリッドステートストレージ１５２のセットを識別し、データを含む不揮発性ソリッドステートストレージ１５２のセットに対する位置識別子である。ある実施形態では、位置識別子は、装置に対するオフセットであり、多数のセグメントにより順次に再使用される。他の実施形態では、位置識別子は、特定のセグメントに対して独特のもので、決して再使用されない。不揮発性ソリッドステートストレージ１５２におけるオフセットは、（ＲＡＩＤストライプの形態において）不揮発性ソリッドステートストレージ１５２に書き込み又はそこから読み取るために位置データに適用される。データは、不揮発性ソリッドステートストレージ１５２の多数のユニットにわたってストライプ化され、これは、特定のデータセグメントに対してオーソリティ１６８を有する不揮発性ソリッドステートストレージ１５２を含んでもよいし又はそれとは異なってもよい。
【００２２】
例えば、データの移動中又はデータの再構成中にデータの特定セグメントが位置する場所が変化する場合は、そのデータセグメントに対するオーソリティ１６８を、そのオーソリティ１６８を有する不揮発性ソリッドステートストレージ１５２又はストレージノード１５０において協議しなければならない。データの特定断片を位置決めするため、これら実施形態では、データセグメントに対するハッシュ値を計算するか、或いはｉノード番号又はデータセグメント番号を適用する。この動作の出力は、その特定のデータ断片に対してオーソリティ１６８を有する不揮発性ソリッドステートストレージ１５２を指す。ある実施形態では、このオペレーションに対して２つの段階がある。第１の段階は、エンティティ識別子（ＩＤ）、例えば、セグメント番号、ｉノード番号、又はディレクトリ番号をオーソリティ識別子へマップする。このマッピングは、ハッシュ又はビットマスクのような計算を含む。第２の段階は、オーソリティ識別子を特定の不揮発性ソリッドステートストレージ１５２へマッピングし、これは、明確なマッピングを通して行われる。オペレーションは、繰り返し可能であり、計算が遂行されるときに、計算の結果は、オーソリティ１６８を有する特定の不揮発性ソリッドステートストレージ１５２を繰り返し且つ確実に指す。オペレーションは、到達可能なストレージノードを入力として含む。到達可能な不揮発性ソリッドステートストレージユニットのセットが変化する場合には、最適なセットが変化する。ある実施形態において、持続される値は、現在指定であり（これは常に真であり）、そして計算された値は、クラスターが再構成を試みるターゲット指定である。この計算は、到達可能で且つ同じくラスターを構成する不揮発性ソリッドステートストレージ１５２のセットの存在中にオーソリティに対して最適な不揮発性ソリッドステートストレージ１５２を決定するのに使用される。又、この計算は、不揮発性ソリッドステートストレージのマッピングに対してオーソリティを記録するピア不揮発性ソリッドステートストレージ１５２の順序付けされたセットも決定し、指定の不揮発性ソリッドステートストレージが到達不能であってもオーソリティを決定できるようにする。ある実施形態において特定のオーソリティ１６８が利用できない場合には複写又は代用オーソリティ１６８が協議される。
【００２３】
図１ないし４を参照すれば、ストレージノード１５０におけるＣＰＵ１５６の多数のタスクのうちの２つは、書き込みデータの解体、及び読み取りデータの再アッセンブルである。データを書き込むべきであるとシステムが決定すると、そのデータに対するオーソリティ１６８が上述したように位置される。データのセグメントＩＤが既に決定されているときに、セグメントから決定されたオーソリティ１６８のホストであると現在決定されている不揮発性ソリッドステートストレージ１５２へ書き込み要求が転送される。不揮発性ソリッドステートストレージ１５２及びそれに対応するオーソリティ１６８が存在するストレージノード１５０のホストＣＰＵ１５６は、データを解体又は共有し、そしてデータを種々の不揮発性ソリッドステートストレージ１５２へ送信する。送信されたデータは、消去コードスキームに従ってデータストライプとして書き込まれる。ある実施形態では、データをプルすることが要求され、そして他の実施形態では、データがプッシュされる。逆に、データが読み取られるときは、データを含むセグメントＩＤに対するオーソリティ１６８が上述したように位置される。不揮発性ソリッドステートストレージ１５２及びそれに対応するオーソリティ１６８が存在するストレージノード１５０のホストＣＰＵ１５６は、オーソリティにより指摘された不揮発性ソリッドステートストレージ及びそれに対応するストレージノードからデータを要求する。ある実施形態では、データは、フラッシュストレージからデータストライプとして読み取られる。ストレージノード１５０のホストＣＰＵ１５６は、次いで、読み取ったデータを再アッセンブルし、エラー（もしあれば）を適当な消去コードスキームに従って修正し、そしてその再アッセンブルされたデータをネットワークに転送する。更に別の実施形態では、これらタスクの幾つか又は全部を不揮発性ソリッドステートストレージ１５２において取り扱うことができる。ある実施形態では、セグメントホストが、ストレージからページを要求し、次いで、オリジナルの要求をしたストレージノードへデータを送信することにより、ストレージノード１５０へ送信されるべきデータを要求する。
【００２４】
あるシステム、例えば、ＵＮＩＸスタイルのファイルシステムでは、データがインデックスノード又はｉノードで取り扱われ、これは、ファイルシステムにおけるオブジェクトを表わすデータ構造体を特定する。オブジェクトは、例えば、ファイル又はディレクトリである。メタデータは、オブジェクトを、他の属性の中で、許可データ及び生成タイムスタンプのような属性として付随する。ファイルシステムにおけるそのようなオブジェクトの全部又は一部分にセグメント番号を指定することができる。他のシステムでは、データセグメントは、どこかで指定されたセグメント番号で取り扱われる。説明上、配布の単位はエンティティであり、そしてエンティティは、ファイル、ディレクトリ又はセグメントである。即ち、エンティティは、ストレージシステムにより記憶されるデータ又はメタデータの単位である。エンティティは、オーソリティと称されるセットにグループ化される。各オーソリティは、オーソリティ所有者を有し、これは、オーソリティにおけるエンティティを更新する排他的権利を有するストレージノードである。換言すれば、ストレージノードは、オーソリティを含み、そしてオーソリティは、次いで、エンティティを含む。
【００２５】
ある実施形態によれば、セグメントは、データの論理的コンテナである。セグメントは、媒体アドレススペースと物理的フラッシュ位置との間のアドレススペースであり、即ちデータセグメント番号は、このアドレススペースにおけるものである。又、セグメントは、メタデータも含み、これは、高レベルソフトウェアを伴わずにデータ冗長性を回復できるようにする（異なるフラッシュ位置又は装置への再書き込み）。１つの実施形態では、セグメントの内部フォーマットは、クライアントデータ、及びそのデータの位置を決定するための媒体マッピングを含む。各データセグメントは、例えば、セグメントを多数のデータ及びパリティ断片(shard)に適宜分断することにより、例えば、メモリ及び他の欠陥から保護される。データ及びパリティ断片は、消去コードスキームに従ってホストＣＰＵ１５６（図５を参照）に結合された不揮発性ソリッドステートストレージ１５２にわたって分散され、即ちストライプされる。セグメントという語の使用は、ある実施形態では、コンテナ、及びセグメントのアドレススペースにおけるその位置を指す。ストライプという語の使用は、セグメントと同じ断片セットを指し、そしてある実施形態によれば、断片が冗長性又はパリティ情報と共にどのように分散されるかを含む。
【００２６】
ストレージシステム全体にわたって一連のアドレススペース変換が行われる。最上部には、ｉノードにリンクするディレクトリ入力（ファイル名）がある。ｉノードは、データが論理的に記憶されている媒体アドレススペースを指す。媒体アドレスは、大きなファイルの負荷を分散させるか、或いは複写排除又はスナップショットのようなデータサービスを実施するために、一連の間接的媒体を通してマップされる。媒体アドレスは、大きなファイルの負荷を分散させるか、或いは複写排除又はスナップショットのようなデータサービスを実施するために、一連の間接的媒体を通してマップされる。次いで、セグメントアドレスが物理的フラッシュ位置に変換される。物理的フラッシュ位置は、ある実施形態によれば、システム内のフラッシュの量により限定されるアドレス範囲を有する。媒体アドレス及びセグメントアドレスは、論理的コンテナであり、ある実施形態では、１２８ビット以上の識別子を使用して実際上無限であるようにするが、おそらく、再使用は、システムの予想寿命より長いと計算される。論理的コンテナからのアドレスは、ある実施形態では、ハイアラーキー形態で割り当てられる。最初、各不揮発性ソリッドステートストレージ１５２には、ある範囲のアドレススペースが指定される。この指定の範囲内で、不揮発性ソリッドステートストレージ１５２は、他の不揮発性ソリッドステートストレージ１５２と同期せずに、アドレスを割り当てることができる。
【００２７】
データ及びメタデータは、変化するワークロードパターン及びストレージ装置に対して最適化された基本的ストレージレイアウトのセットにより記憶される。これらのレイアウトは、多数の冗長性スキーム、圧縮フォーマット、及びインデックスアルゴリズムを合体する。これらレイアウトのあるものは、オーソリティ及びオーソリティマスターに関する情報を記憶し、一方、他のものは、ファイルメタデータ及びファイルデータを記憶する。冗長性スキームは、（ＮＡＮＤフラッシュチップのような）単一ストレージ装置内の崩壊ビットを許容するエラー修正コード、多数のストレージノードの欠陥を許容する消去コード、及びデータセンター又は領域欠陥を許容する複写スキームを含む。ある実施形態において、低密度パリティチェック（ＬＤＰＣ）コードが単一のストレージユニット内に使用される。ある実施形態において、リードソロモンエンコーディングがストレージクラスター内に使用され、そしてミラーリングがストレージグリッド内に使用される。メタデータは、（ログ構造化合併ツリーのような）順序付けされたログ構造化インデックスを使用して記憶され、そして大きなデータは、ログ構造化レイアウトには記憶されない。
【００２８】
エンティティの多数のコピーにわたって一貫性を維持するために、ストレージノードは、計算を通して次の２つのことに暗示的に合意する。（１）エンティティを含むオーソリティ、及び（２）オーソリティを含むストレージノード。オーソリティへのエンティティの指定は、オーソリティにエンティティを擬似ランダムに指定するか、外部で生成されたキーに基づいてエンティティを範囲に分割するか、又は単一エンティティを各オーソリティに入れることにより、実行できる。擬似ランダムスキームの例は、リニアハッシング、及びハッシュのレプリケーションアンダースケーラブルハッシング（ＲＵＳＨ）ファミリーであり、これは、コントロールドレプリケーションアンダースケーラブルハッシング（ＣＲＵＳＨ）を含む。ある実施形態において、擬似ランダム指定は、ノードのセットが変化するのでノードにオーソリティを指定するためにのみ使用される。オーソリティのセットは変化せず、従って、これらの実施形態では、主観的な機能が適用される。ある配置スキームは、オーソリティをストレージノードに自動的に配置するが、他の配置スキームは、オーソリティをストレージノードに明確にマッピングすることに依存する。ある実施形態では、擬似ランダムスキームは、各オーソリティから候補オーソリティ所有者のセットへマップするために使用される。ＣＲＵＳＨに関連した擬似ランダムデータ配布機能は、ストレージノードにオーソリティを指定し、そしてどこにオーソリティが指定されるかのリストを生成する。各ストレージノードは、擬似ランダムデータ配布機能のコピーを有し、配布のための同じ計算に到達し、そしてその後に、オーソリティを見つけ又は位置付けする。擬似ランダムスキームの各々は、同じターゲットノードを結論とするために、ある実施形態では、ストレージノードの到達可能なセットを入力として要求する。エンティティがオーソリティに入れられると、そのエンティティが物理的装置に記憶され、予想される欠陥が予期せぬデータロスを招くことがないようにする。ある実施形態では、再バランシングアルゴリズムが全てのエンティティのコピーを同じレイアウトのオーソリティ内に及び同じマシンセットに記憶するように試みる。
【００２９】
予想される欠陥は、例えば、装置の欠陥、盗難マシン、データセンターの火災、及び地域的大災害、例えば、原子力事故又は地域的事故を含む。異なる欠陥は、異なるレベルの許容データロスを招く。ある実施形態において、盗難のストレージノードは、システムのセキュリティにも信頼性にも影響しないが、システムの構成によっては、地域的事故は、データのロスを生じないか、数秒又は数分のロストアップデートを生じるか、又は完全なデータロスを生じる。
【００３０】
これら実施形態において、ストレージ冗長性のためのデータの配置は、データ一貫性のためのオーソリティの配置とは独立している。ある実施形態において、オーソリティを含むストレージノードは、持続的なストレージを含まない。むしろ、ストレージノードは、オーソリティを含まない不揮発性ソリッドステートストレージユニットに接続される。ストレージノードと、不揮発性ソリッドステートストレージユニットとの間の通信相互接続は、多数の通信テクノロジーより成り、そして非均一性能及び欠陥許容特性を有する。ある実施形態では、上述したように、不揮発性ソリッドステートストレージユニットは、ＰＣＩエクスプレスを経てストレージノードに接続され、ストレージノードは、イーサネットバックプレーンを使用して単一シャーシ内で一緒に接続され、そしてシャーシは、ストレージクラスターを形成するように一緒に接続される。ストレージクラスターは、ある実施形態では、イーサネット又はファイバーチャンネルを使用してクライアントに接続される。多数のストレージクラスターがストレージグリッドへと構成される場合には、多数のストレージクラスターは、インターネット又は他の長距離ネットワークリンク、例えば、インターネットを横断しない「メトロスケール」リンク又はプライベートリンクを使用して接続される。
【００３１】
オーソリティ所有者は、ある不揮発性ソリッドステートストレージユニットから別の不揮発性ソリッドステートストレージユニットへエンティティを移動しそしてエンティティのコピーを追加及び除去するようにエンティティを変更するための排他的権利を有する。これは、基礎的データの冗長性を維持することを許す。オーソリティ所有者が失敗となるか、閉鎖されるか又は過負荷になったときは、オーソリティが新たなストレージノードへ移行される。一時的な欠陥は、全ての非欠陥マシンが新たなオーソリティ位置に合意することを保証するためには些細なことではない。一時的な欠陥により生じる曖昧さは、Ｐａｘｏｓ、ホット−ウオームフェイルオーバースキームのようなコンセンサスプロトコルにより、又はリモートシステムアドミニストレータによる手動介入を経て、又はローカルハードウェアアドミニストレータにより（例えば、クラスターから欠陥マシンを物理的に除去するか又は欠陥マシンのボタンを押すことにより）自動的に達成できる。ある実施形態では、コンセンサスプロトコルが使用され、そしてフェイルオーバーは、自動的である。あまりに多数の欠陥又は複写事故があまりに短い期間内に生じる場合には、システムは、ある実施形態によれば、自己保存モードに入り、そして複写及びデータ移動アクティビティを、アドミニストレータが介入するまで、停止する。
【００３２】
オーソリティがストレージノード間で転送され、そしてオーソリティ所有者がオーソリティにおけるエンティティを更新するときには、システムは、ストレージノードと不揮発性ソリッドステートストレージユニットとの間でメッセージを転送する。持続性メッセージに関しては、目的の異なるメッセージは、タイプが異なる。メッセージのタイプに基づき、システムは、異なる順序及び耐久性の保証を維持する。持続性メッセージが処理されるときに、メッセージは、多数の耐久性及び非耐久性ストレージハードウェアテクノロジーにおいて一時的に記憶される。ある実施形態では、メッセージは、ＲＡＭ、ＮＶＲＡＭ及びＮＡＮＤフラッシュ装置に記憶され、そして各ストレージ媒体を効率的に使用するために様々なプロトコルが使用される。レイテンシーに敏感なクライアント要求は、複写型ＮＶＲＡＭに、その後、ＮＡＮＤに持続されるが、バックグランド再バランシングオペレーションは、直接、ＮＡＮＤに持続される。
【００３３】
持続メッセージは、複写される前に、持続的に記憶される。これは、システムが、欠陥及びコンポーネント交換にも関わらず、クライアント要求にサービスし続けられるようにする。多くのハードウェアコンポーネントは、システムアドミニストレータ、製造者、ハードウェア供給チェーン及び進行中の監視クオリティ制御インフラストラクチャーに見える独特の識別子を含むが、インフラストラクチャーアドレスの最上部で実行されるアプリケーションは、アドレスをバーチャル化する。それらのバーチャル化されたアドレスは、コンポーネントの欠陥及び交換にも関わらず、ストレージシステムの寿命にわたって変化しない。これは、クライアント要求処理を再構成又は中断せずに、ストレージシステムの各コンポーネントを時間と共に交換できるようにする。
【００３４】
ある実施形態では、バーチャル化されたアドレスは、充分な冗長度で記憶される。連続監視システムは、ハードウェア及びソフトウェア状態とハードウェア識別子とを相関させる。これは、欠陥コンポーネント及び製造細部による故障を検出及び予想できるようにする。又、監視システムは、ある実施形態では、故障が生じる前に重要な経路からコンポーネントを除去することにより、オーソリティ及びエンティティを影響下の装置から先験的に転送できるようにする。
【００３５】
図５は、ストレージノード１５０のコンテンツ及びストレージノード１５０の不揮発性ソリッドステートストレージ１５２のコンテンツを示す多レベルブロック図である。ある実施形態では、データは、ネットワークインターフェイスコントローラ（ＮＩＣ）２０２によりストレージノード１５０へ及びストレージノード１５０から通信される。各ストレージノード１５０は、上述したように、ＣＰＵ１５６、及び１つ以上の不揮発性ソリッドステートストレージ１５２を有する。図５において１レベル下に移動すると、各不揮発性ソリッドステートストレージ１５２は、比較的高速の不揮発性ソリッドステートメモリ、例えば、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）２０４及びフラッシュメモリ２０６を有する。ある実施形態では、ＮＶＲＡＭ２０４は、プログラム／消去サイクルを要求しないコンポーネント（ＤＲＡＭ、ＭＲＡＭ、ＰＣＭ）であり、且つメモリが読み取られるより著しく頻繁に書き込まれるようサポートされるメモリである。図５において別のレベル下に移動すると、ＮＶＲＡＭ２０４は、１つの実施形態では、エネルギー貯蔵器２１８によりバックアップされるダイナミックランダムアクセスメモリ（ＤＲＡＭ）２１６のような高速揮発性メモリとして実施される。エネルギー貯蔵器２１８は、停電の場合にフラッシュメモリ２０６へコンテンツを転送するに充分なほど長くＤＲＡＭ２１６を通電状態に保持するのに充分な電力を供給する。ある実施形態では、エネルギー貯蔵器２１８は、停電の場合に安定したストレージ媒体にＤＲＡＭ２１６のコンテンツを転送できるに充分な適度なエネルギーを供給するキャパシタ、スーパーキャパシタ、バッテリ又は他の装置である。フラッシュメモリ２０６は、多数のフラッシュダイ２２２として実施され、これは、フラッシュダイ２２２のパッケージ又はフラッシュダイ２２２のアレイとも称される。フラッシュダイ２２２は、多数の仕方でパッケージでき、例えば、パッケージ当たり１つのダイで、又はパッケージ当たり多数のダイで（即ち、マルチチップパッケージ）、ハイブリッドパッケージで、プリント回路板又は他の基板上の裸のダイとして、カプセル型ダイとして、等々でパッケージできることが明らかである。ここに示す実施形態では、不揮発性ソリッドステートストレージ１５２は、コントローラ２１２又は他のプロセッサと、コントローラ２１２に結合された入力／出力（Ｉ／Ｏ）ポート２１０とを有する。Ｉ／Ｏポート２１０は、フラッシュストレージノード１５０のＣＰＵ１５６及び／又はネットワークインターフェイスコントローラ２０２に結合される。フラッシュ入力／出力（Ｉ／Ｏ）ポート２２０は、フラッシュダイ２２２に結合され、そして直接メモリアクセスユニット（ＤＭＡ）２１４は、コントローラ２１２、ＤＲＡＭ２１６及びフラッシュダイ２２２に結合される。ここに示す実施形態では、Ｉ／Ｏポート２１０、コントローラ２１２、ＤＭＡユニット２１４、及びフラッシュＩ／Ｏポート２２０は、プログラマブルロジック装置（ＰＬＤ）２０８、例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）において実施される。この実施形態では、各フラッシュダイ２２２は、１６ｋＢ（キロバイト）ページ２２４として編成されたページ、及びフラッシュダイ２２２へデータを書き込んだり又はそこからデータを読み取ったりするときに通るレジスタ２２６を有する。更に別の実施形態では、フラッシュダイ２２２内に示されたフラッシュメモリに代って、又はそれに加えて、他のタイプのソリッドステートメモリが使用される。
【００３６】
図６Ａは、図１ないし５のストレージクラスター１６０の更なる実施形態のブロック図である。この実施形態では、図１に示す多数のスロットを伴うシャーシ１３８のようなシャーシ１３８にコンポーネントが設けられる。配電バス１７２（図２に見られる）を伴う電源６０６は、シャーシ１３８内の種々のコンポーネントへ電力を供給する。２つのストレージノード１５０が、１つの実施形態において、ネットワークスイッチ６２０のような経路６０４に結合されて示されている。更に別の経路が容易に案出される。経路６０４は、ストレージノード１５０を互いに結合すると共に、ストレージノード１５０をシャーシ１３８の外部のネットワークにも結合して、外部装置、システム又はネットワークに接続できるようにする。
【００３７】
多数のストレージユニット１５２が、ストレージノード１５０を結合するネットワークスイッチ６２０又は他の経路６０４とは個別の別の経路６０２により、互いに且つストレージノード１５０に結合される。１つの実施形態では、ストレージユニット１５２及びストレージノード１５０を結合する経路６０２は、ＰＣＩエクスプレスバス（ＰＣＩｅ）であるが、他のバス、ネットワーク及び種々の更に別のカップリングを使用することができる。ある実施形態では、ストレージノード１５０を経路６０２、例えば、ＰＣＩエクスプレスバスに結合するための透過的ブリッジが設けられる。
【００３８】
２つの経路６０２、６０４に接続するために、各ストレージノード１５０は、２つのポート６０８、６１０を有する。各ストレージノード１５０のポート６１０の１つは、経路６０４の１つに結合され、各ストレージノード１５０の他のポート６０８は、他の経路６０２に結合される。
【００３９】
ある実施形態では、ストレージノード１５０の各々は、計算ノードとして計算機能を遂行する。例えば、ストレージノード１５０は、１つ以上のアプリケーションを実行することができる。更に、ストレージノード１５０は、経路６０２を経てストレージユニット１５２と通信し、図１ないし３を参照して上述したように、ユーザデータの書き込み及び読み取りを行う（例えば、消去コードを使用して）。別の例として、１つ以上のアプリケーションを実行するストレージノード１５０は、ユーザデータを使用し、ストレージユニット１５２に記憶するためにユーザデータを発生し、ストレージユニット１５２からユーザデータを読み取って処理し、等々を行うことができる。ストレージユニット１５２の１つが失われても、又はある実施形態では、ストレージユニット１５２の２つが失われても、ストレージノード１５０及び／又は残りのストレージユニット１５２が依然ユーザデータを読み取ることができる。
【００４０】
ある実施形態では、消去コード機能がストレージユニット１５２においてほとんど又は完全に遂行され、これは、ストレージノード１５０の計算能力を解放する。これは、ストレージノード１５０が１つ以上のアプリケーションを実行するといった計算ノードの任務により多く集中できるようにする。ある実施形態では、消去コード機能は、ストレージノード１５０においてほとんど又は完全に遂行される。これは、ストレージノード１５０がストレージノードの任務により多く集中できるようにする。ある実施形態では、消去コード機能は、ストレージノード１５０及びストレージユニット１５２にわたって分担される。これは、ストレージノード１５０が利用可能な計算帯域巾を計算ノードの任務とストレージノードの任務との間で分担させることができる。
【００４１】
２つの経路６０２、６０４が互いに個別である状態で、多数の効果が明らかとなる。いずれの経路６０２、６０４も、ストレージノード１５０及びストレージユニット１５２を互いに且つ外部ネットワークに結合する経路が１つしかない場合に生じるボトルネックとはならない。１つの経路しかない状態では、敵意のあるものが、ストレージノード１５０を通して進む必要なく、ストレージユニット１５２への直接的なアクセスを得ることができる。２つの経路６０２、６０４がある状態では、ストレージノード１５０は、例えば、マルチプロセスアプリケーション又はプロセッサ間通信に対して１つの経路６０４を通して互いに結合することができる。他方の経路６０２は、ストレージユニット１５２におけるデータアクセスに対してストレージノード１５０の各々により使用することができる。従って、図６Ａに示すアーキテクチャーは、種々のストレージ及び計算機能並びにシナリオをサポートする。特に、図６Ａに示す１つの実施形態は、単一シャーシ１３８におけるストレージ及び計算システムである。１つ以上のストレージノード１５０の形態の処理能力、及び１つ以上のストレージユニット１５２の形態のストレージ容量は、ストレージ及び／又は計算が変更を必要とするとき、シャーシ１３８に容易に追加することができる。
【００４２】
図６Ｂは、図６Ａのストレージクラスター１６０の変形例である。この変形例では、経路６１２は、各ストレージノード１５０に含まれたストレージユニット１５２特有の部分を有する。１つの実施形態において、経路６１２は、ストレージユニット１５２及びストレージノード１５０を一緒に結合するＰＣＩエクスプレスバスとして実施される。即ち、ある実施形態では、１つのブレードにおけるストレージノード１５０及びストレージユニット１５２がＰＣＩエクスプレスバスを共有する。ＰＣＩエクスプレスバスは、ブレード特有であり、別のブレードのＰＣＩエクスプレスバスには直接結合されない。従って、あるブレードのストレージユニット１５２は、互いに且つそのブレードのストレージノード１５０と通信することができる。あるブレードのストレージユニット１５２又はストレージノード１５０から別のブレードのストレージノード１５０又はストレージユニット１５２への通信は、ネットワークスイッチ６２０、例えば、経路６１４を経て行われる。
【００４３】
図７は、データストレージ、又はデータストレージと計算との組み合せに適した、図１ないし５のストレージクラスター１６０の更に別の実施形態のブロック図である。図７の変形例は、他の可能性の中でも、バス、ネットワーク、又はハードワイヤードメッシュである第１経路６１６により一緒に結合された全てのストレージユニット１５２を有する。２つのストレージユニット１５２の各々に１つのストレージノード１５０が結合される。２つの更に別のストレージユニット１５２の各々には、別のストレージユニット１５２が結合される。ストレージノード１５０からストレージユニット１５２への結合は、第２の経路６１８を示す。
【００４４】
図８Ａは、スイッチ６２０を伴う、図１ないし５のストレージクラスター１６０の更に別の実施形態のブロック図である。１つのスイッチ６２０が全てのストレージノード１５０を互いに結合する。別のスイッチ６２０も全てのストレージノード１５０を互いに結合する。この実施形態では、各ストレージノード１５０が２つのポートを有し、各ポートはスイッチ６２０の１つに接続される。ポート及びスイッチ６２０のこの配列は、各ストレージノード１５０を他のストレージノード１５０に接続するための２つの経路を与える。例えば、最も左のストレージノード１５０は、第１スイッチ６２０又は第２スイッチ６２０のいずれかを選択することで最も右のストレージノード１５０（又はストレージクラスター１６０における他のストレージノード１５０）に接続することができる。このアーキテクチャーは、通信ボトルネックを緩和させることを理解されたい。１つのスイッチ６２０、互いに結合された２つのスイッチ６２０、３つ以上のスイッチ６２０、及び他の数のポート又はネットワークを伴う更に別の実施形態が、ここに述べる教示を踏まえて、容易に案出される。
【００４５】
図８Ｂは、ストレージユニット１５２を結合するスイッチ６２０を伴う、図８Ａのストレージクラスター１６０の変形例を示す。図８Ａの実施形態と同様に、スイッチ６２０は、ストレージノード１５０を結合し、各ストレージノード１５０に対して他のストレージノード１５０と通信するための２つの経路を与える。更に、スイッチ６２０は、ストレージユニット１５２を結合する。各ストレージノード１５０におけるストレージユニット１５２の２つがスイッチ６２０の１つに結合され、そして各ストレージノード１５０におけるストレージユニット１５２の１つ以上がスイッチ６２０の別の１つに結合される。このように、各ストレージユニット１５２は、スイッチ６２０の１つを経てストレージクラスターにおける他のストレージユニット１５２のほぼ半分に接続される。変形例では、スイッチ６２０が互いに結合され（図８Ｂに破線で示すように）、そして各ストレージユニットは、スイッチ６２０を経て他のストレージユニット１５２へ接続される。１つのスイッチ６２０、又は他の数のスイッチ６２０及び接続の配列、並びに接続されるコンポーネントの数を伴う更に別の実施形態も、ここに述べる教示を踏まえて、容易に案出される。
【００４６】
図９Ａは、ストレージクラスター１６０に対して一緒に結合される計算ノード６２６のブロック図である。スイッチ６２０が全ての計算ノード６２６を一緒に結合し、各計算ノード６２６がスイッチ６２０を経て他の計算ノード６２６と通信できるようにする。種々の実施形態では、各計算ノード６２６が、計算専用のストレージノード１５０又は特殊な計算ノード６２６である。ここに示す実施形態では、計算ノード６２６は、３つのプロセッサ複合体６２８を有する。各プロセッサ複合体６２８は、ポート６３０を有し、そしてローカルメモリ及び更に別のサポート（例えば、デジタル信号処理、直接メモリアクセス、Ｉ／Ｏの種々の形態、グラフィック加速度計、１つ以上のプロセッサ、等）も有する。各ポート６３０は、スイッチ６２０に結合される。従って、各プロセッサ複合体６２８は、このアーキテクチャーでは、関連ポート６３０及びスイッチ６２０を経て他の各プロセッサ複合体６２８と通信することができる。ある実施形態では、各プロセッサ複合体６２８は、ハートビート（進行中のオペレーションの指示子として観察できる規則的な通信であって、計算ノード又はプロセッサの考えられる欠陥又は非利用性を知らせるハートビートはない）を発生する。ある実施形態では、各計算ノード６２６は、ハートビートを発生する。更に別の実施形態において、ストレージノード１５０及び／又はストレージユニット１５２もハートビートを発生する。
【００４７】
図９Ｂは、図９Ａの計算ノード６２６を伴う、図１ないし５のストレージクラスター１６０の更に別の実施形態のブロック図である。この実施形態も、ストレージノード１５０と共に示されている。スイッチ６２０は、全てのストレージノード１５０の全てのポート、全ての計算ノード６２６の全てのポート（例えば、全ての計算ノード６２６の全てのプロセッサ複合体６２８）、及びすべてのストレージユニット１５２を結合する。変形例において、より少数又はより多数のストレージノード１５０、より少数又はより多数の計算ノード６２６、より少数又はより多数のストレージユニット１５２、及びより少数又はより多数のプロセッサ複合体６２８をシャーシ１３８に設置することができる。各ストレージノード１５０、ストレージユニット１５２又は計算ノード６２６は、シャーシ１３８の１つ以上のスロット１４２（図１を参照）を占有する。図９Ａ及び９Ｂは、１つの例に過ぎず、これに限定されないことを理解されたい。ある実施形態では、多数のスイッチ６２０がシャーシ１３８に一体化され、そして計算ノード６２６は、図８Ａ及び８Ｂの実施形態と同様に、ここに述べる実施形態により提供される通信の融通性を達成するために多数のスイッチに結合される。
【００４８】
図９Ｃは、図９Ｂの計算ノード６２６を伴うストレージクラスター１６０の変形を示すブロック図で、多数のシャーシ１３８内のストレージノード１５０、ストレージユニット１５２及び計算ノード６２６を示し、これらは、全て１つ以上のストレージクラスター１６０として一緒に結合される。多数のシャーシ１３８は、ストレージクラスター１６０の拡張のために、ラックマウント型で、ここに示すように一緒に結合することができる。この実施形態では、各シャーシ１３８のスイッチ６２０（１つ又は複数）は、シャーシ１３８のコンポーネントを、図９Ｂを参照して上述したように結合し、そして全てのシャーシ１３８のスイッチ６２０（１つ又は複数）は、全てのシャーシ１３８にわたって一緒に結合される。ストレージノード１５０及び／又は計算ノード６２６の種々の組み合せで、ストレージ容量及び／又は計算容量（例えば、アプリケーション、オペレーティングシステム、等を実行するための）が容易に構成され、拡張又は収縮され、或いはバーチャル計算環境においてバーチャル化される。スイッチ６２０の使用で、多くの他のラックマウントシステムに見られる通常のパッチ配線が減少され又は排除される。
【００４９】
ストレージクラスター１６０のこの及び他の形態の幾つかの実施形態は、１つのシャーシ１３８、２つのシャーシ１３８又は多数のシャーシ１３８において２つ以上の独立したストレージクラスターをサポートすることができる。多ストレージクラスター環境における各ストレージクラスター１６０は、ストレージノード１５０、ストレージユニット１５２及び／又は計算ノード６２６を、１つの、別の又は両方の、或いはそれ以上のシャーシ１３８において、種々の組み合せで、有することができる。例えば、第１のストレージクラスター１６０は、あるシャーシ１３８に多数のストレージノード１５０を有し、そして別のシャーシ１３８に１つ以上のストレージノード１５０を有することができる。第２のストレージクラスター１６０は、第１シャーシ１３８に１つ以上のストレージノード１５０を、そして第２シャーシ１３８に１つ以上のストレージノード１５０を有することができる。これらストレージクラスター１６０のいずれかは、シャーシ１３８のいずれか又は両方に計算ノード６２６を有することができる。各ストレージクラスター１６０は、それ自身のオペレーティングシステムを有し、且つ他のストレージクラスター１６０とは独立して実行するそれ自身のアプリケーションを有する。
【００５０】
図６Ａ−９Ｃに示す実施形態の幾つか又は全部において多数の特徴が明らかである。多くの実施形態は、各ストレージユニット１５２がストレージノード１５０からの支援なしに１つ以上の他のストレージユニット１５２と直接通信できるような経路を提供する。即ち、ストレージユニット１５２は、その経路を経て別のストレージユニット１５２と通信することができ、ストレージノード１５０は、そのような通信に関わることがない。この直接的経路を経てあるストレージユニット１５２から別のストレージユニット１５２への通信に介入し又はそれを支援するストレージノード１５０はない。ある実施形態では、ストレージユニット１５２から他のストレージユニット１５２へ通信するためのそのような直接的経路が設けられる。ある実施形態では、各ストレージユニット１５２から１つ又は多数の他のストレージユニット１５２へのそのような直接的経路が設けられるが、必ずしも、他の全てのストレージユニット１５２ではない。これらの場合に、ストレージユニット１５２は、１つ以上のストレージノード１５０及び別の経路を経て、即ちストレージノード１５０からの支援を得て、別のストレージユニット１５２と通信することができる。
【００５１】
ある実施形態において、あるストレージユニット１５２から他のストレージユニット１５２への直接的通信のための経路は、ストレージクラスター１６０の他のコンポーネントのカップリングに含まれる。ある実施形態では、各ストレージノード１５０は、全ストレージクラスター１６０の各ストレージユニット１５２と直接通信することができる。ある実施形態では、各ストレージノード１５０は、ストレージユニット１５２の幾つかと直接的に通信し、そして別のストレージノード１５０を経て他のストレージユニット１５２と通信することができる。ある実施形態では、ストレージノード１５０間の通信及びストレージユニット１５２間の通信のための経路が分離され、他の実施形態では、それら経路が組み合わされる。ある実施形態では、ストレージノード１５０とストレージユニット１５２との間の通信、及びストレージユニット１５２間の通信のための経路が分離され、そして他の実施形態では、それら経路が組み合わされる。
【００５２】
ストレージノード１５０のある態様は、２つのポート６０８、６１０を有する。両ポート６０８、６１０は、ある実施形態では、２つの異なる経路の選択を経て他のストレージノード１５０へ通信するのに使用される。ある実施形態では、一方のポート６１０は、一方の経路を経て他のストレージノード１５０へ通信するのに使用され、そして別のポート６０８は、別の経路を経てストレージユニット１５２と通信するのに使用される。両ポート６０８、６１０は、ある実施形態では、ストレージノード１５０及びストレージユニット１５２と通信するのに使用される。ストレージユニット１５２間の直接的な通信をサポートすることにより、これらの種々のアーキテクチャーは、通信ボトルネックを減少することができる。ストレージノード１５０、並びに処理及び通信帯域巾は、ストレージユニット１５２間の通信をサポートする上でタイアップされない。このオフロード化の結果として、ユーザデータに対する高速オペレーションのためにストレージノード１５０は、それらの機能をストレージユニット１５２へ移行させることができる。
【００５３】
ストレージユニット１５２間の通信は、ストレージユニット１５２が生きていて、健康で、及び／又は状態情報、等であることを確認するために、データ、メタデータ、メッセージを含むことができる。ストレージユニット１５２が他のストレージユニット１５２と直接通信する状態で、ストレージノード１５０（又はストレージノード１５０のプロセッサ又はコントローラ）が介入せずに、ストレージノード１５０は、他のプロセスを自由に管理する。ストレージノード１５０とストレージユニット１５２との間の通信、又はストレージノード１５０の幾つかの機能を引き継ぐときのストレージユニット１５２間の通信は、データ、メタデータ（例えば、データに関する及びデータに関連した情報）、並びにメタメタデータ（例えば、メタデータに関するメタデータ）を伴うデータ断片を含むことができる。又、そのような通信は、パリティ断片、ヘルス、状態及び性能情報を含むこともできる。ストレージユニット１５２を他のストレージユニット１５２又はストレージノード１５０（例えば、ストレージノード１５０のプロセッサ）によりアクセスできるようにすることで、データ所有権の区別を可変度合でストレージノード１５０からストレージユニット１５２へシフトすることができる。これは、ある実施形態では、オーソリティ１６８又はワードをストレージノード１５０及びストレージユニット１５２間でシフトすることを含む。
【００５４】
ネットワーク上のストレージユニット１５２では、ストレージユニット１５２が計算ノード６２６と直接的に通信することができる。そのような通信は、計算ノードの識別子を要求に埋め込み、そしてストレージユニット１５２が、データをストレージノード１５０へ、次いで、計算ノード６２６へ返送するのではなく、データを計算ノード６２６へ直接返送するようにさせることを含む。データの直接的接続、及びデータのキャッシングは、ストレージユニット１５２においてデータを見つけるためのインテリジェンスを有する計算ノード６２６について可能とされる。又、計算ノード６２６は、ストレージユニット１５２へ進むか又はそこから到来するデータに対して、フィルタリング、変換、等を実施するデータパイプラインにおける特殊な処理に使用することができる。従って、図６Ａ−９Ｃに示したアーキテクチャーは、ストレージシステム並びにストレージ及び計算システムにおけるコンポーネントの配列及びコンポーネント間の通信についての融通性を示している。データスループット及び通信スループット、そして絶対的又は相対的量のデータ及び計算機能のニーズ並びに予想成長に基づき、あるアーキテクチャーが別のアーキテクチャーより適当となる。ストレージ容量及び計算容量は、種々の実施形態において、調整可能であり、拡張可能であり、そして増減可能である。更に、実施形態は、負荷バランシングのためにより大きな融通性を与える。
【００５５】
ストレージクラスター１６０は、ここに開示する種々の実施形態において、一般的に、ストレージアレイと対照的である。ストレージノード１５０は、ストレージクラスター１６０を生成する集合の一部分である。各ストレージノード１５０は、データのスライスを所有しそしてデータを与えるために要求される計算を行う。データを記憶及び検索するよう協働するために多数のストレージノード１５０が要求される。一般的に、ストレージアレイに使用されるストレージメモリ又はストレージ装置は、データの処理及び操作があまり含まれない。ストレージアレイにおけるストレージメモリ又はストレージ装置は、データを読み取り、書き込み又は消去するためのコマンドを受け取る。ストレージアレイにおけるストレージメモリ又はストレージ装置は、それらが埋め込まれた大きなシステム又はデータが何を意味するかについて知らない。ストレージアレイにおけるストレージメモリ又はストレージ装置は、種々のタイプのストレージメモリ、例えば、ＲＡＭ、ソリッドステートドライブ、ハードディスクドライブ、等を含む。ここに述べるストレージユニット１５２は、同時にアクティブで且つ多数の目的を果たす多数のインターフェイスを有する。ある実施形態では、ストレージノード１５０の機能の幾つかがストレージユニット１５２へシフトされ、ストレージユニット１５２をストレージユニット１５２及びストレージノード１５０の組み合せへと変換する。（ストレージデータに対して）計算をストレージユニット１５２に入れることで、この計算をデータそれ自体により近いものにする。種々のシステム実施形態は、異なる能力をもつストレージノードレイヤのハイアラーキーを有する。対照的に、ストレージアレイでは、コントローラは、コントローラがシェルフ又はストレージ装置において管理する全てのデータに関して何でも所有し且つ知っている。ここに述べるストレージクラスター１６０において、多数のストレージユニット１５２及び／又はストレージノード１５０の多数のコントローラが種々の仕方で（例えば、消去コーディング、データ断片化、メタデータ通信及び冗長性、ストレージ容量拡張又は収縮、データ回復、等のために）協働する。
【００５６】
図１０は、ある実施形態によりストレージクラスター、ストレージノード及び／又は不揮発性ソリッドステートストレージ又はストレージユニットの実施形態において又は実施形態により実施できるストレージクラスター動作方法のフローチャートである。アクション１００２において、第１のストレージユニットは、メタデータに関する指示又はユーザデータの一部分をストレージクラスターのストレージノードから受信する。例えば、その指示は、ユーザデータの一部分又はデータ断片を記憶し、ユーザデータの一部分又はデータ断片を読み取り、データ断片からデータを構成し、パリティ断片を読み取り又は書き込むための指示、ヘルス、状態又は性能に関して応答するための指示、等を含む。
【００５７】
アクション１００４において、第１のストレージユニットは、ストレージノード（１つ又は複数）からの支援を要求しない経路を経て第２のストレージユニットと直接通信する。この通信は、ユーザデータの一部分又はメタデータに関する通信を含む。メタデータに関する通信の適当な一例は、ハートビートの通信である（これは、ヘルス、状態又は性能について応答する指示に関連している）。ユーザデータの一部分に関する通信の例は、別のストレージユニットからデータ断片を要求するか、又はそのストレージユニットのフラッシュメモリに書き込むために別のストレージユニットへパリティ断片を送信することである。更に別の例は、ここに述べる教示を踏まえて、容易に案出される。アクション１００６において、第２のストレージユニットは、第１のストレージユニットから経路を経て通信を受信する。より詳細には、第２のストレージユニットは、ストレージノードからではなく、第１のストレージユニットから直接通信を受け取る。
【００５８】
アクション１００８において、第２のストレージユニットは、第１のストレージユニットからの通信に基づいてアクションを決定する。通信のコンテンツに基づき、第２のストレージユニットは、データを記憶し、メタデータを記憶し、データ又はメタデータを読み取り、そしてそれを第１のストレージユニットへ返送し、第１のストレージユニットからの質問に応答し、等である。適当である場合には、応答が、第２のストレージユニットから第１のストレージユニットへ送信されるか、又はストレージノード（１つ又は複数）からの支援を要求しない経路を経て別のストレージユニットへ送信される。或いは、第２のストレージユニットに対して、ストレージノードの１つ又は計算ノードと通信するアクションが取られる。アクションの更に別の例は、ここに述べる教示を踏まえて、容易に案出される。
【００５９】
ここに述べる方法は、従来の汎用コンピュータシステムのようなデジタル処理システムで遂行されることが明らかである。１つの機能だけを遂行するように設計又はプログラムされた特殊目的コンピュータを代替的に使用してもよい。図１１は、ここに述べる実施形態を具現化する規範的コンピューティング装置を示す図である。図１１のコンピューティング装置は、ある実施形態によりストレージノード又は不揮発性ソリッドステートストレージユニットの機能の実施形態を遂行するのに使用される。コンピューティング装置は、中央処理ユニット（ＣＰＵ）１１０１を備え、これは、バス１１０５を通してメモリ１１０３及び大量ストレージ装置１１０７に結合される。大量ストレージ装置１１０７は、ある実施形態においてローカル又はリモートであるディスクドライブのような持続的データストレージ装置を表わす。大量ストレージ装置１１０７は、ある実施形態では、バックアップストレージを実施することができる。メモリ１１０３は、リードオンリメモリ、ランダムアクセスメモリ、等を含む。コンピューティング装置に常駐するアプリケーションは、ある実施形態では、メモリ１１０３又は大量ストレージ装置１１０７のようなコンピュータ読み取り可能な媒体を経て記憶又はアクセスされる。又、アプリケーションは、ネットワークモデム又はコンピューティング装置の他のネットワークインターフェイスを経てアクセスされる変調型電子信号の形態でもよい。ＣＰＵ１１０１は、ある実施形態では、汎用プロセッサ、特殊目的プロセッサ又は特殊プログラムのロジック装置で実施されてもよいことが明らかである。
【００６０】
ディスプレイ１１１１は、バス１１０５を通して、ＣＰＵ１１０１、メモリ１１０３、及び大量ストレージ装置１１０７と通信する。ディスプレイ１１１１は、ここに述べるシステムに関連した視覚化ツール又はレポートを表示するよう構成される。入力／出力装置１１０９は、コマンド選択の情報をＣＰＵ１１０１へ通信するためにバス５０５に結合される。外部装置へ及び外部装置からのデータは、入力／出力装置１１０９を通して通信される。ＣＰＵ１１０１は、図１ないし６を参照して述べた機能を可能とするためにここに述べる機能を実行することが定義される。この機能を実施するコードは、ある実施形態では、ＣＰＵ１１０１のようなプロセッサにより実行するためにメモリ１１０３又は大量ストレージ装置１１０７内に記憶される。コンピューティング装置のオペレーティングシステムは、ＭＳ−ＷＩＮＤＯＷＳTM、ＵＮＩＸTM、ＬＩＮＵＸTM、ｉＯＳTM、ＣｅｎｔＯＳTM、ＡｎｄｒｏｉｄTM、Ｒｅｄｈａｔ  ＬｉｎｕｘTM、ｚ／ＯＳTM、又は他の既知のオペレーティングシステムである。ここに述べる実施形態は、バーチャル化コンピューティングシステムとも一体化できることが明らかである。
【００６１】
詳細な規範的な実施形態がここに開示された。しかしながら、ここに開示された特定の機能は、実施形態を説明するためのものに過ぎない。しかしながら、それら実施形態は、多数の別の形態で実施されてもよく、ここに述べた実施形態のみに限定されない。
【００６２】
第１、第２、等の語は、ここでは、種々のステップ又は計算を説明するために使用されるが、それらのステップ又は計算は、それらの語によって限定されないことを理解されたい。それらの語は、あるステップ又は計算を別のステップ又は計算と区別するためにのみ使用される。本開示の範囲から逸脱せずに、例えば、第１の計算は、第２の計算と称することができ、そして同様に、第２のステップは、第１のステップと称することができる。ここで使用する「及び／又は」という語及び「／」記号は、１つ以上の関連リスト項目のいずれか及び全ての組み合せを含む。
【００６３】
ここで使用する単数形“ａ”、“an”及び“the”は、文脈が明確に指示しない限り、複数形も包含するものとする。“comprises(備える)”、“comprising(備えている)”、“includes(含む)”及び／又は“including(含んでいる)”は、ここで使用されるとき、述べた特徴、整数、ステップ、オペレーション、要素、及び／又はコンポーネントの存在を特定するが、１つ以上の他の特徴、整数、ステップ、オペレーション、要素、コンポーネント、及び／又はそのグループの存在又は追加を除外するものではないことを更に理解されたい。それ故、ここで使用する用語は、特定の実施形態を説明するものに過ぎず、それに限定されない。
【００６４】
又、別の実施形態において、ここに述べる機能／行為は、図示されたのとは異なる順序で行われてもよいことに注意されたい。例えば、連続的に示される２つの図は、含まれる機能／行為に基づいて、実際上、実質的に同時に実行されてもよいし、或いは時には逆の順序で実行されてもよい。
【００６５】
以上の実施形態に念頭に置いて、それらの実施形態は、コンピュータシステムに記憶されたデータを伴う種々のコンピュータ実施オペレーションを使用できることを理解されたい。それらのオペレーションは、物理量の物理的操作を要求するものである。通常、必ずしもそうではないが、それらの量は、記憶、転送、合成、比較、及びその他、操作することのできる電気的又は磁気的信号の形態をとる。更に、遂行される操作は、生成、識別、又は比較という語でしばしば表わされる。実施形態の一部分を形成するここに述べるオペレーションは、いずれも、有用なマシンオペレーションである。又、実施形態は、それらのオペレーションを遂行するためのデバイス又は装置にも関連する。装置は、要求された目的のために特別に構成されてもよいし、或いは装置は、コンピュータに記憶されたコンピュータプログラムにより選択的にアクチベート又は構成される汎用コンピュータでもよい。特に、種々の汎用マシンは、ここに述べる教示に従って書かれたコンピュータプログラムと共に使用されてもよいし、或いは要求されたオペレーションを遂行するための特殊な装置を構成するのがより便利である。
【００６６】
モジュール、アプリケーション、レイヤ、エージェント、又は他の方法−動作可能なエンティティは、ハードウェア、ファームウェア、又はプロセッサ実行ソフトウェア、或いはその組み合せとして実施することができる。又、ソフトウェアベースの実施形態がここに開示されたが、ソフトウェアは、コントローラのような物理的マシンで実施できることが明らかである。例えば、コントローラは、第１モジュール及び第２モジュールを備えている。コントローラは、例えば、方法、アプリケーション、レイヤ、又はエージェントの種々のアクションを遂行するように構成できる。
【００６７】
又、実施形態は、非一時的コンピュータ読み取り可能な媒体上のコンピュータ読み取り可能なコードとして実施することができる。コンピュータ読み取り可能な媒体は、データを記憶し、その後、コンピュータシステムにより読み取られるデータストレージ装置である。コンピュータ読み取り可能な媒体は、例えば、ハードドライブ、ネットワークアタッチ型ストレージ（ＮＡＳ）、リードオンリメモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、並びに他の光学的及び非光学的データストレージ装置を含む。又、コンピュータ読み取り可能な媒体は、ネットワーク結合のコンピュータシステムにわたって分散されて、コンピュータ読み取り可能なコードが分散形態で記憶され且つ実行されるようにすることができる。ここに述べる実施形態は、ハンドヘルド装置、タブレット、マイクロプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な消費者電子装置、ミニコンピュータ、メインフレームコンピュータ、等を含む種々のコンピュータシステム構成で実施できる。又、実施形態は、ワイヤベースのネットワーク又はワイヤレスネットワークを通してリンクされるリモート処理装置によりタスクが遂行される分散型コンピューティング環境でも実施できる。
【００６８】
方法のオペレーションは、特定の順序で説明したが、ここに述べたオペレーションとオペレーションとの間に他のオペレーションが遂行されてもよく、ここに述べたオペレーションは、それらが若干異なる時間に行われるように調整されてもよく、或いはここに述べるオペレーションは、処理に関連した種々の間隔で処理オペレーションを行えるようにするシステムにおいて分散されてもよい。
【００６９】
種々の実施形態において、ここに述べる方法及びメカニズムの１つ以上の部分は、クラウドコンピューティング環境の一部分を形成してもよい。そのような実施形態では、１つ以上の種々のモデルによるサービスとしてインターネットを経てリソースが提供される。そのようなモデルは、インフラストラクチャーをサービス（ＩａａＳ）として含み、プラットホームをサービス（ＰａａＳ）として含み、そしてソフトウェアをサービス（ＳａａＳ）として含む。ＩａａＳでは、コンピュータインフラストラクチャーがサービスとして与えられる。そのようなケースでは、コンピューティング装置は、一般的に、サービスプロバイダーにより所有されそして動作される。ＰａａＳモデルでは、ソフトウェア解決策を開発するために開発者により使用されるソフトウェアツール及び基本的な装置は、サービスプロバイダーによりサービスとして提供されそしてホストされる。ＳａａＳは、典型的に、ソフトウェアをオンデマンドでサービスとして使用許諾するサービスプロバイダーを含む。サービスプロバイダーは、ソフトウェアをホストしてもよいし、又は所与の期間中に顧客にソフトウェアを配備してもよい。以上のモデルの多数の組み合せが考えられ、そして意図される。
【００７０】
種々のユニット、回路又は他のコンポーネントは、タスク（１つ又は複数）を遂行するように「構成される」として記述され又は請求項に述べられる。そのような文脈では、「構成される」という句は、ユニット／回路／コンポーネントがオペレーション中にタスク（１つ又は複数）を遂行する構造体（例えば、回路）を含むことを指示することにより、構造体を暗示するのに使用される。従って、ユニット／回路／コンポーネントは、特定のユニット／回路／コンポーネントが現在動作していなくても（例えば、オンでなくても）タスクを遂行するように構成されると言うことができる。「構成される」という語と共に使用されるユニット／回路／コンポーネントは、ハードウェアを含み、例えば、オペレーション等を具現化するために実行可能なプログラムインストラクションを記憶するメモリ、回路を含む。１つ以上のタスクを遂行するようにユニット／回路／コンポーネントが「構成される」ことを述べることは、そのユニット／回路／コンポーネントに対して、３５Ｕ．Ｓ．Ｃ．１１２、第６節を引用しないことが明確に意図される。更に、「構成される」は、論争中のタスク（１つ又は複数）を遂行できるように動作するためにソフトウェア及び／又はファームウェア（例えば、ＦＰＧＡ又は汎用プロセッサ実行ソフトウェア）により操作される一般的構造（例えば、一般的回路）を含む。又、「構成される」は、１つ以上のタスクを実施又は遂行するための装置（例えば、集積回路）を製造するように製造プロセス（例えば、半導体製造ファシリティ）を適応させることも含む。
【００７１】
以上、特定の実施形態を参照して、本発明を説明した。しかしながら、以上の説明は、余すところのないものでもないし、ここに開示する正確な形態に本発明を限定するものでもない。前記教示に鑑み多数の変更や修正が考えられる。前記実施形態は、それら実施形態の原理及びその実際の応用を最良に説明するために選択され記述されたもので、当業者が、意図された特定の使用に適するように実施形態及び種々の変更を最良に利用できるようにする。従って、本発明の実施形態は、例示であって、これに限定されず、本発明は、ここに述べた詳細に限定されず、特許請求の範囲及びその等効物内で変更されてもよい。
【符号の説明】
【００７２】
１０２：企業用コンピューティングシステム
１０４：処理リソース
１０６：ネットワークリソース
１０８：ストレージリソース
１１０：処理コントローラ
１１２：ネットワークコントローラ
１１４：ストレージコントローラ
１１６：プロセッサ
１１８：ＲＡＭ
１２０：ルーター
１２２：スイッチ
１２４：サーバー
１２６：ハードドライブ
１２８：フラッシュストレージ
１３０：フラッシュコントローラ
１３２：フラッシュメモリ
１３８：シャーシ
１４０：ネットワーク
１４２：スロット
１４４：ファン
１４６：スイッチファブリック
１４８：フラップ
１５０：ストレージノード
１５２：不揮発性ソリッドステートストレージ
１５４：メモリ
１５６：ＣＰＵ
１５８：プリント回路板
１６０：ストレージクラスター
１６８：オーソリティ
１７０：通信相互接続
１７２：配電
１７４、１７６：外部ポート
１７８：外部電源
２０４：不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）
２０６：フラッシュメモリ
２０８：プログラマブルロジック装置（ＰＬＤ）
２１０：入力／出力（Ｉ／Ｏ）ポート
２１２：コントローラ
２１４：直接メモリアクセスユニット（ＤＭＡ）
２１６：ダイナミックランダムアクセスメモリ（ＤＲＡＭ）
２１８：エネルギー貯蔵器
２２２：フラッシュダイ
２２６：レジスタ
６０２、６０４、６１２、６１４：経路
６０６：電源
６１６：第１経路
６１８：第２経路
６２０：ネットワークスイッチ
６２２、６２４：経路
６２６：計算ノード
６２８：プロセッサ複合体
６３０：ポート
１１０１：ＣＰＵ
１１０３：メモリ
１１０５：バス
１１０７：大量ストレージ装置
１１０９：入力／出力装置
１１１１：ディスプレイ
【図１】
0006796589.tif 000002
【図２】
0006796589.tif 000003
【図３】
0006796589.tif 000004
【図４】
0006796589.tif 000005
【図５】
0006796589.tif 000006
【図６Ａ】
0006796589.tif 000007
【図６Ｂ】
0006796589.tif 000008
【図７】
0006796589.tif 000009
【図８Ａ】
0006796589.tif 000010
【図８Ｂ】
0006796589.tif 000011
【図９Ａ】
0006796589.tif 000012
【図９Ｂ】
0006796589.tif 000013
【図９Ｃ】
0006796589.tif 000014
【図１０】
0006796589.tif 000015
【図１１】
0006796589.tif 000016