(58)【調査した分野】(Int.Cl.,DB名)
前記複数のストレージノードを結合する第2経路を備え、前記複数のストレージノードの各々が第2経路を経て前記複数のストレージノードの各他のストレージユニットと通信できるようにする、請求項1に記載のストレージシステム。
前記第1経路は、前記複数のストレージユニットの第1及び第2のストレージユニットを互いに且つ前記複数のストレージノードの第1ストレージノードに結合する第1バスを含み、
前記第1経路は、前記複数のストレージユニットの第3及び第4のストレージユニットを互いに且つ前記複数のストレージノードの第2ストレージノードに結合する第2バスを含む、
請求項14に記載のストレージシステム。
前記第1経路は、前記複数のストレージユニットを結合するバスを備え、このバスは、前記複数のストレージユニットを通ることを除いて前記複数のストレージノードに結合されていない、
請求項14に記載のストレージシステム。
前記複数のストレージユニットの各々は、前記第1経路を経て前記複数のストレージユニットの各他のストレージユニットと通信するように結合され、前記ストレージノードは、それらストレージユニット間のそのような直接的通信には関与しない、請求項14に記載のストレージシステム。
【発明を実施するための形態】
【0009】
以下の実施形態は、ユーザデータ、例えば、1人以上のユーザ、又はクライアントシステム、或いはストレージクラスターの外部の他のソースから発生するユーザデータを記憶するストレージクラスターについて述べる。ストレージクラスターは、消去コーディング及びメタデータの冗長コピーを使用してシャーシ内に収容されたストレージノードにわたりユーザデータを分散する。消去コーディングとは、ディスク、ストレージノード又は地理的位置のような異なる位置のセットにわたりデータが記憶されるデータ保護又は再構成の方法を指す。フラッシュメモリは、本実施形態に一体化されるソリッドステートメモリの1つのタイプであるが、本実施形態は、非ソリッドステートメモリを含む他のタイプのソリッドステートメモリ又は他のストレージ媒体へと拡張することができる。ストレージ位置及びワークロードの制御は、クラスター化ピア・ツー・ピアシステムのストレージ位置にわたって分散される。種々のストレージノード間の通信を仲裁し、ストレージノードが利用できなくなるときを検出し、そして種々のストレージノードにわたりI/O(入力及び出力)をバランシングするようなタスクは、全て、分散ベースで取り扱われる。ある実施形態では、データは、データ回復をサポートするデータ断片又はストライプで多数のストレージノードにわたってレイアウト又は分散される。データの所有権は、入力及び出力パターンに関わりなくクラスター内で再指定することができる。以下に詳細に述べるこのアーキテクチャーは、システムが動作したまま、クラスターのストレージノードが失敗となるのを許す。というのは、データは、他のストレージノードから再構成することができ、従って、入力及び出力動作について利用可能に保たれるからである。種々の実施形態において、ストレージノードは、クラスターノード、ブレード、又はサーバーとも称される。
【0010】
ストレージクラスターは、シャーシ内、即ち1つ以上のストレージノードを収容するエンクロージャー内に収容される。各ストレージノードに電力を供給するメカニズム、例えば、配電バス、並びに通信メカニズム、例えば、ストレージノード間の通信を可能にする通信バスは、シャーシ内に含まれる。ある実施形態によれば、ストレージクラスターは、1つの位置において独立システムとして実行することができる。ある実施形態において、シャーシは、独立してイネーブル又はディスエイブルされる配電及び通信の両バスの少なくとも2つのインスタンスを収容する。内部通信バスは、イーサネットバスであるが、ペリフェラルコンポーネントインターコネクト(PCI)エクスプレス、インフィニバンド、等の他のテクノロジーも等しく適当である。シャーシは、多数のシャーシ間の通信を、直接的に、又はスイッチを通して、及びクライアントシステムと共に、可能にするための外部通信バスのポートを与える。外部通信は、イーサネット(登録商標)、インフィニバンド、ファイバーチャンネル、等のテクノロジーを使用する。ある実施形態では、外部通信バスは、シャーシ間及びクライアント間通信に対して異なる通信バステクノロジーを使用する。シャーシ内又はシャーシ間にスイッチが配備される場合には、スイッチは、多数のプロトコル又はテクノロジー間の変換体として働く。ストレージクラスターを画成するために多数のシャーシが接続されるときには、ストレージクラスターは、ネットワークファイルシステム(NFS)、普通のインターネットファイルシステム(CIFS)、小型コンピュータシステムインターフェイス(SCSI)又はハイパーテキスト転送プロトコル(HTTP)のような独占的インターフェイス又は標準的インターフェイスを使用してクライアントによりアクセスすることができる。クライアントプロトコルからの変換は、スイッチ、シャーシ外部通信又は各ストレージノード内において行われる。
【0011】
各ストレージノードは、1つ以上のストレージサーバーであり、そして各ストレージサーバーは、ストレージユニットと称される1つ以上の不揮発性ソリッドステートメモリユニットに接続される。1つの実施形態では、各ストレージノードに及び1つないし8つの不揮発性ソリッドステートメモリユニット間に単一のストレージサーバーが含まれるが、この一例に限定されない。ストレージサーバーは、プロセッサ、ダイナミックランダムアクセスメモリ(DRAM)、並びにインターネット通信バス及び各電力バスの配電のためのインターフェイスを備えている。ストレージノード内では、インターフェイス及びストレージユニットは、通信バス、例えば、ある実施形態では、PCIエクスプレスを共有する。不揮発性ソリッドステートメモリユニットは、ストレージノード通信バスを経て内部通信バスインターフェイスに直接アクセスするか、又はバスインターフェイスにアクセスするようストレージノードに要求する。不揮発性ソリッドステートメモリユニットは、埋め込み型中央処理ユニット(CPU)、ソリッドステートストレージコントローラ、及びある実施形態では例えば2−32テラバイト(TB)のソリッドステート大量ストレージの量を含む。DRAMのような埋め込み型揮発性ストレージ媒体及びエネルギー貯蔵装置が不揮発性ソリッドステートメモリユニットに含まれる。ある実施形態では、エネルギー貯蔵装置は、停電の場合にDRAMコンテンツのサブセットを安定なストレージ媒体に転送できるキャパシタ、スーパーキャパシタ又はバッテリである。ある実施形態では、不揮発性ソリッドステートメモリユニットは、ストレージクラスメモリ、例えば、DRAMに取って代わるもので減少電力保持装置を可能にする相変化又は磁気抵抗ランダムアクセスメモリ(MRAM)と共に構成される。
【0012】
ストレージノード及び不揮発性ソリッドステートストレージの多数の特徴の1つは、ストレージクラスターにおいてデータを先験的に再構築する能力である。ストレージノード及び不揮発性ソリッドステートストレージは、ストレージノード又は不揮発性ソリッドステートストレージに関するデータを読み取る試みがあるかどうかに関わらず、ストレージクラスターのストレージノード又は不揮発性ソリッドステートストレージに到達できないときを決定することができる。ストレージノード及び不揮発性ソリッドステートストレージは、次いで、少なくとも部分的に新たな位置においてデータを回復し且つ再構築するように協働する。これは、ストレージクラスターを使用するクライアントシステムから開始された読み取りアクセスに対してデータが必要になるまで待機することなくシステムがデータを再構築するという点で先見的再構築を構成する。ストレージメモリ及びその動作のこれら及び更に別の細部を以下に述べる。
【0013】
図1は、ある実施形態によりネットワークアタッチ型ストレージ又はストレージエリアネットワークを形成するために多数のストレージノード150及び各ストレージノードに結合された内部ソリッドステートメモリを伴うストレージクラスター160の斜視図である。ネットワークアタッチ型ストレージ、ストレージエリアネットワーク又はストレージクラスター或いは他のストレージメモリは、1つ以上のストレージノード150を各々有する1つ以上のストレージクラスター160を、物理的コンポーネント及びそれにより与えられる量のストレージメモリの両方の柔軟で且つ再構成可能な配列で備えることができる。ストレージクラスター160は、ラックに適合するように設計され、そして1つ以上のラックをストレージメモリとして必要に応じて設定し且存在させることができる。ストレージクラスター160は、多数のスロット142を有するシャーシ138を含む。シャーシ138は、ハウジング、エンクロージャー、又はラックユニットとも称されることが明らかである。1つの実施形態において、シャーシ138は、14個のスロット142を有するが、他の数のスロットも容易に案出される。例えば、ある実施形態では、4個のスロット、8個のスロット、16個のスロット、32個のスロット、又は他の数のスロットがある。ある実施形態において、各スロット142は、1つのストレージノード150を収容することができる。シャーシ138は、シャーシ138をラックにマウントするのに使用できるフラップ148を備えている。ファン144は、ストレージノード150及びそのコンポーネントを冷却するための空気循環を与えるが、他の冷却コンポーネントを使用することもでき、或いは冷却コンポーネントをもたない実施形態も案出できる。スイッチファブリック146は、シャーシ138内のストレージノード150を一緒に結合しそしてメモリへの通信のためにネットワークに結合する。
図1に示す実施形態では、スイッチファブリック146及びファン144の左のスロット142は、ストレージノード150により占有されて示されているが、スイッチファブリック146及びファン144の右のスロット142は、例示の目的で、空であり、ストレージノード150を挿入するのに利用できる。この構成は一例に過ぎず、そして種々の更に別の配列では、1つ以上のストレージノード150がスロット142を占有する。ストレージノードの配列は、ある実施形態では、連続的又は隣接である必要はない。ストレージノード150は、ホットプラグ型であり、これは、システムを停止又はパワーダウンせずに、ストレージノード150をシャーシ138のスロット142に挿入し又はスロット142から除去できることを意味する。ストレージノード150をスロット142に挿入し又はそこから除去するときに、システムは、その変化を認識し且つそれに適応するために自動的に再構成する。ある実施形態では、再構成は、冗長性の回復及び/又はデータ又は負荷の再バランシングを含む。
【0014】
各ストレージノード150は、多数のコンポーネントを有することができる。ここに示す実施形態では、ストレージノード150は、CPU156、即ちプロセッサ、CPU156に結合されたメモリ154、及びCPU156に結合された不揮発性ソリッドステートストレージ152が存在するプリント回路板158を備えているが、更に別の実施形態では、他のマウンティング及び/又はコンポーネントを使用することができる。メモリ154は、CPU156により実行されるインストラクション及び/又はCPU156により操作されるデータを有する。以下に詳細に述べるように、不揮発性ソリッドステートストレージ152は、フラッシュを含み、又は更に別の実施形態では、他のタイプのソリッドステートメモリを含む。
【0015】
図2は、ストレージリソース108として
図1のストレージノード、ストレージクラスター及び/又は不揮発性ソリッドステートストレージの1つ以上を使用できる企業用コンピューティングシステム102のシステム図である。例えば、
図2のフラッシュストレージ128は、ある実施形態において、
図1のストレージノード、ストレージクラスター、及び/又は不揮発性ソリッドステートストレージを一体化したものでよい。企業用コンピューティングシステム102は、処理リソース104、ネットワークリソース106、及びフラッシュストレージ128を含むストレージリソース108を有する。フラッシュストレージ128には、フラッシュコントローラ130及びフラッシュメモリ132が含まれる。種々の実施形態において、フラッシュストレージ128は、CPUを含むフラッシュコントローラ130、及びストレージノードの不揮発性ソリッドステートストレージを含むフラッシュメモリ132と共に、1つ以上のストレージノード又はストレージクラスターを含むことができる。ある実施形態において、フラッシュメモリ132は、異なるタイプのフラッシュメモリ又は同じタイプのフラッシュメモリを含んでもよい。企業用コンピューティングシステム102は、フラッシュストレージ128を配備するのに適した環境を示すが、フラッシュストレージ128は、より大きな又はより小さな他のコンピューティングシステム又は装置に、或いはより少数の又は付加的なリソースを伴う企業用コンピューティングシステム102の変形形態に使用することができる。企業用コンピューティングシステム102は、サービスを提供するか又は利用するためにインターネットのようなネットワーク140に結合される。例えば、企業用コンピューティングシステム102は、クラウドサービス、物理的コンピューティングリソース、又はバーチャルコンピューティングサービスを提供することができる。
【0016】
企業用コンピューティングシステム102では、種々のリソースが種々のコントローラにより配列及び管理される。処理コントローラ110は、プロセッサ116及びランダムアクセスメモリ(RAM)118を含む処理リソース104を管理する。ネットワークコントローラ112は、ルーター120、スイッチ122及びサーバー124を含むネットワークリソース106を管理する。ストレージコントローラ114は、ハードドライブ126及びフラッシュストレージ128を含むストレージリソース108を管理する。これら実施形態には、他のタイプの処理リソース、ネットワークリソース及びストレージリソースが含まれてもよい。ある実施形態では、フラッシュストレージ128がハードドライブ126に完全に置き換わる。企業用コンピューティングシステム102は、種々のリソースを、物理的コンピューティングリソースとして、或いは変形例では、物理的コンピューティングリソースによりサポートされたバーチャルコンピューティングリソースとして与え又は割り当てることができる。例えば、種々のリソースは、ソフトウェアを実行する1つ以上のサーバーを使用して実施することができる。ファイル又は他のオブジェクト、或いは他の形態のデータは、ストレージリソース108に記憶される。
【0017】
種々の実施形態において、企業用コンピューティングシステム102は、ストレージクラスターが存在する多数のラックを備え、それらは、クラスター又はサーバーファームのような単一の物理的位置に配置される。他の実施形態では、多数のラックは、ネットワークで結ばれた種々の都市、州又は国々のような多数の物理的位置に配置される。各ラック、各ストレージクラスター、各ストレージノード及び各不揮発性ソリッドステートストレージは、各量のストレージスペースと共に個々に構成され、これは、次いで、他のものに関わりなく再構成することができる。従って、ストレージ容量は、不揮発性ソリッドステートストレージの各々において、柔軟に追加でき、アップグレードでき、差し引きでき、回復でき及び/又は再構成できる。上述したように、各ストレージノードは、ある実施形態において1つ以上のサーバーを実施することができる。
【0018】
図3は、
図1のシャーシに使用するのに適した異なる容量をもつ多数のストレージノード150及び不揮発性ソリッドステートストレージ152を示すブロック図である。各ストレージノード150は、不揮発性ソリッドステートストレージ152の1つ以上のユニットを有する。各不揮発性ソリッドステートストレージ152は、ある実施形態では、ストレージノード150又は他のストレージノード150における他の不揮発性ソリッドステートストレージ152からの異なる容量を含んでもよい。或いは又、ストレージノード又は多数のストレージノードにおける全ての不揮発性ソリッドステートストレージ152は、同じ容量を有してもよいし、又は同じ及び/又は異なる容量の組み合せを有してもよい。この融通性が
図3に示されており、
図3は、4、8及び32TB容量の混合不揮発性ソリッドステートストレージ152を有する1つのストレージノード150、各々32TB容量の不揮発性ソリッドステートストレージ152を有する別のストレージノード150、及び各々8TB容量の不揮発性ソリッドステートストレージ152を有する更に別のストレージノードの一例を示す。ここに述べる教示に従って更に別の種々の組み合せ及び容量が容易に案出される。クラスター化、例えば、ストレージクラスターを形成するためのクラスター化ストレージの状況において、ストレージノードは、不揮発性ソリッドステートストレージ152であるか又はそれを含む。不揮発性ソリッドステートストレージ152は、以下に更に述べるように、不揮発性ソリッドステートストレージ152が不揮発性ランダムアクセスメモリ(NVRAM)コンポーネントを含むので、便利なクラスター化ポイントである。
【0019】
図1及び3を参照すれば、ストレージクラスター160は、拡張可能であり、これは、上述したように、非均一のストレージサイズを伴うストレージ容量が容易に追加されることを意味する。1つ以上のストレージノード150を各シャーシに差し込んだり除去したりすることができ、そしてある実施形態では、ストレージクラスターが自己構成である。プラグインストレージノード150は、納入時にシャーシに設置されたものでも、後から追加されるものでも、異なるサイズをもつことができる。例えば、ある実施形態では、ストレージノード150は、4TBの倍数をもつことができ、例えば、8TB、12TB、16TB、32TB、等である。更に別の実施形態では、ストレージノード150は、他のストレージ量又は容量の倍数でもよい。各ストレージノード150のストレージ容量がブロードキャストされ、データをどのようにストライプ化するかの判断に影響を及ぼす。最大ストレージ効率のため、一実施形態では、ストライプをできるだけ広く自己構成することができ、これは、シャーシ内の不揮発性ソリッドステートストレージユニット152又はストレージノード150が1個まで又は2個まで失われる連続動作という所定条件を受ける。
【0020】
図4は、多数のストレージノード150を結合する通信相互接続170及び配電バス172を示すブロック図である。
図1に戻ると、通信相互接続170は、ある実施形態では、スイッチファブリック146に含まれるか又はそれで実施される。多数のストレージクラスター160がラックを占有するところでは、通信相互接続170は、ある実施形態では、ラックスイッチの頂部に含まれるか又はそれで実施される。
図4に示すように、ストレージクラスター160は、単一シャーシ138内に収容される。外部ポート176は、通信相互接続170を通してストレージノード150へ結合され、一方、外部ポート174は、ストレージノードへ直結される。外部電力ポート178は、配電バス172に結合される。ストレージノード150は、
図3を参照して述べたように、変化する量及び異なる容量の不揮発性ソリッドステートストレージ152を含む。加えて、1つ以上のストレージノード150は、
図4に示すように、計算専用のストレージノードである。計算専用のストレージノード150は、ストレージクラスター160の計算機能を遂行するか、又は計算ノードとして機能して計算機能を遂行し及び/又はアプリケーションを実行し、これは、種々の実施形態において、ストレージクラスター160の不揮発性ソリッドステートストレージ152を行先とするか又はそれに記憶されるか又はそこから検索されるユーザデータを使用する。オーソリティ168は、不揮発性ソリッドステートストレージ152において、例えば、メモリに記憶されたリスト又は他のデータ構造体として実施される。ある実施形態では、オーソリティは、不揮発性ソリッドステートストレージ152内に記憶され、そして不揮発性ソリッドステートストレージ152のコントローラ又は他のプロセッサで実行されるソフトウェアによりサポートされる。更に別の実施形態では、オーソリティ168は、ストレージノード150において、例えば、メモリ154に記憶されたリスト又は他のデータ構造体として実施され、そしてストレージノード150のCPU156で実行されるソフトウェアによりサポートされる。オーソリティ168は、ある実施形態では、不揮発性ソリッドステートストレージ152においてどのようにそしてどこにデータが記憶されるかを制御する。この制御は、どのタイプの消去コーディングスキムをデータに適用するかそしてどのストレージノード150がデータのどの部分を有するか決定する上で助けとなる。各オーソリティ168は、不揮発性ソリッドステートストレージ152に指定される。各オーソリティは、種々の実施形態において、iノード番号の範囲、セグメント番号、又はデータに指定される他のデータ識別子を、ファイルシステムにより、又はストレージノード150により、又は不揮発性ソリッドステートストレージ152により制御する。
【0021】
各データ断片及び各メタデータ断片は、ある実施形態では、システムにおいて冗長性を有する。加えて、各データ断片及び各メタデータ断片は、オーソリティと称されるか又はある変形例ではワード(ward)と称される所有者を有し、オーソリティは、ワードのグループ又はセットである。例えば、ストレージノードの失敗によりそのオーソリティに到達できない場合には、そのデータ又はそのメタデータをどのように見出すかについての成功のプランがある。種々の実施形態において、オーソリティ168の冗長コピーがある。オーソリティ168は、ある実施形態では、ストレージノード150及び不揮発性ソリッドステートストレージ152に対してある関係を有する。ある範囲のデータセグメント番号又は他のデータ識別子をカバーする各オーソリティ168(従って、オーソリティがワードのグループである実施形態では、ワードの各グループ)が、特定の不揮発性ソリッドステートストレージ152に指定される。ある実施形態において、全てのそのような範囲に対するオーソリティ168は、ストレージクラスターの不揮発性ソリッドステートストレージ152にわたって分散される。各ストレージノード150は、そのストレージノード150の不揮発性ソリッドステートストレージ152へのアクセスを与えるネットワークポートを有する。データは、セグメント番号に関連したセグメントに記憶され、そしてそのセグメント番号は、ある実施形態では、RAID(独立ディスクの冗長アレイ)ストライプの構成に対する間接参照(indirection)である。従って、オーソリティ168(及びもし該当する場合には、ワード)の指定及び使用は、データへの間接参照を確立する。間接参照は、ある実施形態によれば、データを間接的に、このケースでは、オーソリティ168を経て、参照する能力とも称される。セグメントは、不揮発性ソリッドステートストレージ152のセットを識別し、データを含む不揮発性ソリッドステートストレージ152のセットに対する位置識別子である。ある実施形態では、位置識別子は、装置に対するオフセットであり、多数のセグメントにより順次に再使用される。他の実施形態では、位置識別子は、特定のセグメントに対して独特のもので、決して再使用されない。不揮発性ソリッドステートストレージ152におけるオフセットは、(RAIDストライプの形態において)不揮発性ソリッドステートストレージ152に書き込み又はそこから読み取るために位置データに適用される。データは、不揮発性ソリッドステートストレージ152の多数のユニットにわたってストライプ化され、これは、特定のデータセグメントに対してオーソリティ168を有する不揮発性ソリッドステートストレージ152を含んでもよいし又はそれとは異なってもよい。
【0022】
例えば、データの移動中又はデータの再構成中にデータの特定セグメントが位置する場所が変化する場合は、そのデータセグメントに対するオーソリティ168を、そのオーソリティ168を有する不揮発性ソリッドステートストレージ152又はストレージノード150において協議しなければならない。データの特定断片を位置決めするため、これら実施形態では、データセグメントに対するハッシュ値を計算するか、或いはiノード番号又はデータセグメント番号を適用する。この動作の出力は、その特定のデータ断片に対してオーソリティ168を有する不揮発性ソリッドステートストレージ152を指す。ある実施形態では、このオペレーションに対して2つの段階がある。第1の段階は、エンティティ識別子(ID)、例えば、セグメント番号、iノード番号、又はディレクトリ番号をオーソリティ識別子へマップする。このマッピングは、ハッシュ又はビットマスクのような計算を含む。第2の段階は、オーソリティ識別子を特定の不揮発性ソリッドステートストレージ152へマッピングし、これは、明確なマッピングを通して行われる。オペレーションは、繰り返し可能であり、計算が遂行されるときに、計算の結果は、オーソリティ168を有する特定の不揮発性ソリッドステートストレージ152を繰り返し且つ確実に指す。オペレーションは、到達可能なストレージノードを入力として含む。到達可能な不揮発性ソリッドステートストレージユニットのセットが変化する場合には、最適なセットが変化する。ある実施形態において、持続される値は、現在指定であり(これは常に真であり)、そして計算された値は、クラスターが再構成を試みるターゲット指定である。この計算は、到達可能で且つ同じくラスターを構成する不揮発性ソリッドステートストレージ152のセットの存在中にオーソリティに対して最適な不揮発性ソリッドステートストレージ152を決定するのに使用される。又、この計算は、不揮発性ソリッドステートストレージのマッピングに対してオーソリティを記録するピア不揮発性ソリッドステートストレージ152の順序付けされたセットも決定し、指定の不揮発性ソリッドステートストレージが到達不能であってもオーソリティを決定できるようにする。ある実施形態において特定のオーソリティ168が利用できない場合には複写又は代用オーソリティ168が協議される。
【0023】
図1ないし4を参照すれば、ストレージノード150におけるCPU156の多数のタスクのうちの2つは、書き込みデータの解体、及び読み取りデータの再アッセンブルである。データを書き込むべきであるとシステムが決定すると、そのデータに対するオーソリティ168が上述したように位置される。データのセグメントIDが既に決定されているときに、セグメントから決定されたオーソリティ168のホストであると現在決定されている不揮発性ソリッドステートストレージ152へ書き込み要求が転送される。不揮発性ソリッドステートストレージ152及びそれに対応するオーソリティ168が存在するストレージノード150のホストCPU156は、データを解体又は共有し、そしてデータを種々の不揮発性ソリッドステートストレージ152へ送信する。送信されたデータは、消去コードスキームに従ってデータストライプとして書き込まれる。ある実施形態では、データをプルすることが要求され、そして他の実施形態では、データがプッシュされる。逆に、データが読み取られるときは、データを含むセグメントIDに対するオーソリティ168が上述したように位置される。不揮発性ソリッドステートストレージ152及びそれに対応するオーソリティ168が存在するストレージノード150のホストCPU156は、オーソリティにより指摘された不揮発性ソリッドステートストレージ及びそれに対応するストレージノードからデータを要求する。ある実施形態では、データは、フラッシュストレージからデータストライプとして読み取られる。ストレージノード150のホストCPU156は、次いで、読み取ったデータを再アッセンブルし、エラー(もしあれば)を適当な消去コードスキームに従って修正し、そしてその再アッセンブルされたデータをネットワークに転送する。更に別の実施形態では、これらタスクの幾つか又は全部を不揮発性ソリッドステートストレージ152において取り扱うことができる。ある実施形態では、セグメントホストが、ストレージからページを要求し、次いで、オリジナルの要求をしたストレージノードへデータを送信することにより、ストレージノード150へ送信されるべきデータを要求する。
【0024】
あるシステム、例えば、UNIXスタイルのファイルシステムでは、データがインデックスノード又はiノードで取り扱われ、これは、ファイルシステムにおけるオブジェクトを表わすデータ構造体を特定する。オブジェクトは、例えば、ファイル又はディレクトリである。メタデータは、オブジェクトを、他の属性の中で、許可データ及び生成タイムスタンプのような属性として付随する。ファイルシステムにおけるそのようなオブジェクトの全部又は一部分にセグメント番号を指定することができる。他のシステムでは、データセグメントは、どこかで指定されたセグメント番号で取り扱われる。説明上、配布の単位はエンティティであり、そしてエンティティは、ファイル、ディレクトリ又はセグメントである。即ち、エンティティは、ストレージシステムにより記憶されるデータ又はメタデータの単位である。エンティティは、オーソリティと称されるセットにグループ化される。各オーソリティは、オーソリティ所有者を有し、これは、オーソリティにおけるエンティティを更新する排他的権利を有するストレージノードである。換言すれば、ストレージノードは、オーソリティを含み、そしてオーソリティは、次いで、エンティティを含む。
【0025】
ある実施形態によれば、セグメントは、データの論理的コンテナである。セグメントは、媒体アドレススペースと物理的フラッシュ位置との間のアドレススペースであり、即ちデータセグメント番号は、このアドレススペースにおけるものである。又、セグメントは、メタデータも含み、これは、高レベルソフトウェアを伴わずにデータ冗長性を回復できるようにする(異なるフラッシュ位置又は装置への再書き込み)。1つの実施形態では、セグメントの内部フォーマットは、クライアントデータ、及びそのデータの位置を決定するための媒体マッピングを含む。各データセグメントは、例えば、セグメントを多数のデータ及びパリティ断片(shard)に適宜分断することにより、例えば、メモリ及び他の欠陥から保護される。データ及びパリティ断片は、消去コードスキームに従ってホストCPU156(
図5を参照)に結合された不揮発性ソリッドステートストレージ152にわたって分散され、即ちストライプされる。セグメントという語の使用は、ある実施形態では、コンテナ、及びセグメントのアドレススペースにおけるその位置を指す。ストライプという語の使用は、セグメントと同じ断片セットを指し、そしてある実施形態によれば、断片が冗長性又はパリティ情報と共にどのように分散されるかを含む。
【0026】
ストレージシステム全体にわたって一連のアドレススペース変換が行われる。最上部には、iノードにリンクするディレクトリ入力(ファイル名)がある。iノードは、データが論理的に記憶されている媒体アドレススペースを指す。媒体アドレスは、大きなファイルの負荷を分散させるか、或いは複写排除又はスナップショットのようなデータサービスを実施するために、一連の間接的媒体を通してマップされる。媒体アドレスは、大きなファイルの負荷を分散させるか、或いは複写排除又はスナップショットのようなデータサービスを実施するために、一連の間接的媒体を通してマップされる。次いで、セグメントアドレスが物理的フラッシュ位置に変換される。物理的フラッシュ位置は、ある実施形態によれば、システム内のフラッシュの量により限定されるアドレス範囲を有する。媒体アドレス及びセグメントアドレスは、論理的コンテナであり、ある実施形態では、128ビット以上の識別子を使用して実際上無限であるようにするが、おそらく、再使用は、システムの予想寿命より長いと計算される。論理的コンテナからのアドレスは、ある実施形態では、ハイアラーキー形態で割り当てられる。最初、各不揮発性ソリッドステートストレージ152には、ある範囲のアドレススペースが指定される。この指定の範囲内で、不揮発性ソリッドステートストレージ152は、他の不揮発性ソリッドステートストレージ152と同期せずに、アドレスを割り当てることができる。
【0027】
データ及びメタデータは、変化するワークロードパターン及びストレージ装置に対して最適化された基本的ストレージレイアウトのセットにより記憶される。これらのレイアウトは、多数の冗長性スキーム、圧縮フォーマット、及びインデックスアルゴリズムを合体する。これらレイアウトのあるものは、オーソリティ及びオーソリティマスターに関する情報を記憶し、一方、他のものは、ファイルメタデータ及びファイルデータを記憶する。冗長性スキームは、(NANDフラッシュチップのような)単一ストレージ装置内の崩壊ビットを許容するエラー修正コード、多数のストレージノードの欠陥を許容する消去コード、及びデータセンター又は領域欠陥を許容する複写スキームを含む。ある実施形態において、低密度パリティチェック(LDPC)コードが単一のストレージユニット内に使用される。ある実施形態において、リードソロモンエンコーディングがストレージクラスター内に使用され、そしてミラーリングがストレージグリッド内に使用される。メタデータは、(ログ構造化合併ツリーのような)順序付けされたログ構造化インデックスを使用して記憶され、そして大きなデータは、ログ構造化レイアウトには記憶されない。
【0028】
エンティティの多数のコピーにわたって一貫性を維持するために、ストレージノードは、計算を通して次の2つのことに暗示的に合意する。(1)エンティティを含むオーソリティ、及び(2)オーソリティを含むストレージノード。オーソリティへのエンティティの指定は、オーソリティにエンティティを擬似ランダムに指定するか、外部で生成されたキーに基づいてエンティティを範囲に分割するか、又は単一エンティティを各オーソリティに入れることにより、実行できる。擬似ランダムスキームの例は、リニアハッシング、及びハッシュのレプリケーションアンダースケーラブルハッシング(RUSH)ファミリーであり、これは、コントロールドレプリケーションアンダースケーラブルハッシング(CRUSH)を含む。ある実施形態において、擬似ランダム指定は、ノードのセットが変化するのでノードにオーソリティを指定するためにのみ使用される。オーソリティのセットは変化せず、従って、これらの実施形態では、主観的な機能が適用される。ある配置スキームは、オーソリティをストレージノードに自動的に配置するが、他の配置スキームは、オーソリティをストレージノードに明確にマッピングすることに依存する。ある実施形態では、擬似ランダムスキームは、各オーソリティから候補オーソリティ所有者のセットへマップするために使用される。CRUSHに関連した擬似ランダムデータ配布機能は、ストレージノードにオーソリティを指定し、そしてどこにオーソリティが指定されるかのリストを生成する。各ストレージノードは、擬似ランダムデータ配布機能のコピーを有し、配布のための同じ計算に到達し、そしてその後に、オーソリティを見つけ又は位置付けする。擬似ランダムスキームの各々は、同じターゲットノードを結論とするために、ある実施形態では、ストレージノードの到達可能なセットを入力として要求する。エンティティがオーソリティに入れられると、そのエンティティが物理的装置に記憶され、予想される欠陥が予期せぬデータロスを招くことがないようにする。ある実施形態では、再バランシングアルゴリズムが全てのエンティティのコピーを同じレイアウトのオーソリティ内に及び同じマシンセットに記憶するように試みる。
【0029】
予想される欠陥は、例えば、装置の欠陥、盗難マシン、データセンターの火災、及び地域的大災害、例えば、原子力事故又は地域的事故を含む。異なる欠陥は、異なるレベルの許容データロスを招く。ある実施形態において、盗難のストレージノードは、システムのセキュリティにも信頼性にも影響しないが、システムの構成によっては、地域的事故は、データのロスを生じないか、数秒又は数分のロストアップデートを生じるか、又は完全なデータロスを生じる。
【0030】
これら実施形態において、ストレージ冗長性のためのデータの配置は、データ一貫性のためのオーソリティの配置とは独立している。ある実施形態において、オーソリティを含むストレージノードは、持続的なストレージを含まない。むしろ、ストレージノードは、オーソリティを含まない不揮発性ソリッドステートストレージユニットに接続される。ストレージノードと、不揮発性ソリッドステートストレージユニットとの間の通信相互接続は、多数の通信テクノロジーより成り、そして非均一性能及び欠陥許容特性を有する。ある実施形態では、上述したように、不揮発性ソリッドステートストレージユニットは、PCIエクスプレスを経てストレージノードに接続され、ストレージノードは、イーサネットバックプレーンを使用して単一シャーシ内で一緒に接続され、そしてシャーシは、ストレージクラスターを形成するように一緒に接続される。ストレージクラスターは、ある実施形態では、イーサネット又はファイバーチャンネルを使用してクライアントに接続される。多数のストレージクラスターがストレージグリッドへと構成される場合には、多数のストレージクラスターは、インターネット又は他の長距離ネットワークリンク、例えば、インターネットを横断しない「メトロスケール」リンク又はプライベートリンクを使用して接続される。
【0031】
オーソリティ所有者は、ある不揮発性ソリッドステートストレージユニットから別の不揮発性ソリッドステートストレージユニットへエンティティを移動しそしてエンティティのコピーを追加及び除去するようにエンティティを変更するための排他的権利を有する。これは、基礎的データの冗長性を維持することを許す。オーソリティ所有者が失敗となるか、閉鎖されるか又は過負荷になったときは、オーソリティが新たなストレージノードへ移行される。一時的な欠陥は、全ての非欠陥マシンが新たなオーソリティ位置に合意することを保証するためには些細なことではない。一時的な欠陥により生じる曖昧さは、Paxos、ホット−ウオームフェイルオーバースキームのようなコンセンサスプロトコルにより、又はリモートシステムアドミニストレータによる手動介入を経て、又はローカルハードウェアアドミニストレータにより(例えば、クラスターから欠陥マシンを物理的に除去するか又は欠陥マシンのボタンを押すことにより)自動的に達成できる。ある実施形態では、コンセンサスプロトコルが使用され、そしてフェイルオーバーは、自動的である。あまりに多数の欠陥又は複写事故があまりに短い期間内に生じる場合には、システムは、ある実施形態によれば、自己保存モードに入り、そして複写及びデータ移動アクティビティを、アドミニストレータが介入するまで、停止する。
【0032】
オーソリティがストレージノード間で転送され、そしてオーソリティ所有者がオーソリティにおけるエンティティを更新するときには、システムは、ストレージノードと不揮発性ソリッドステートストレージユニットとの間でメッセージを転送する。持続性メッセージに関しては、目的の異なるメッセージは、タイプが異なる。メッセージのタイプに基づき、システムは、異なる順序及び耐久性の保証を維持する。持続性メッセージが処理されるときに、メッセージは、多数の耐久性及び非耐久性ストレージハードウェアテクノロジーにおいて一時的に記憶される。ある実施形態では、メッセージは、RAM、NVRAM及びNANDフラッシュ装置に記憶され、そして各ストレージ媒体を効率的に使用するために様々なプロトコルが使用される。レイテンシーに敏感なクライアント要求は、複写型NVRAMに、その後、NANDに持続されるが、バックグランド再バランシングオペレーションは、直接、NANDに持続される。
【0033】
持続メッセージは、複写される前に、持続的に記憶される。これは、システムが、欠陥及びコンポーネント交換にも関わらず、クライアント要求にサービスし続けられるようにする。多くのハードウェアコンポーネントは、システムアドミニストレータ、製造者、ハードウェア供給チェーン及び進行中の監視クオリティ制御インフラストラクチャーに見える独特の識別子を含むが、インフラストラクチャーアドレスの最上部で実行されるアプリケーションは、アドレスをバーチャル化する。それらのバーチャル化されたアドレスは、コンポーネントの欠陥及び交換にも関わらず、ストレージシステムの寿命にわたって変化しない。これは、クライアント要求処理を再構成又は中断せずに、ストレージシステムの各コンポーネントを時間と共に交換できるようにする。
【0034】
ある実施形態では、バーチャル化されたアドレスは、充分な冗長度で記憶される。連続監視システムは、ハードウェア及びソフトウェア状態とハードウェア識別子とを相関させる。これは、欠陥コンポーネント及び製造細部による故障を検出及び予想できるようにする。又、監視システムは、ある実施形態では、故障が生じる前に重要な経路からコンポーネントを除去することにより、オーソリティ及びエンティティを影響下の装置から先験的に転送できるようにする。
【0035】
図5は、ストレージノード150のコンテンツ及びストレージノード150の不揮発性ソリッドステートストレージ152のコンテンツを示す多レベルブロック図である。ある実施形態では、データは、ネットワークインターフェイスコントローラ(NIC)202によりストレージノード150へ及びストレージノード150から通信される。各ストレージノード150は、上述したように、CPU156、及び1つ以上の不揮発性ソリッドステートストレージ152を有する。
図5において1レベル下に移動すると、各不揮発性ソリッドステートストレージ152は、比較的高速の不揮発性ソリッドステートメモリ、例えば、不揮発性ランダムアクセスメモリ(NVRAM)204及びフラッシュメモリ206を有する。ある実施形態では、NVRAM204は、プログラム/消去サイクルを要求しないコンポーネント(DRAM、MRAM、PCM)であり、且つメモリが読み取られるより著しく頻繁に書き込まれるようサポートされるメモリである。
図5において別のレベル下に移動すると、NVRAM204は、1つの実施形態では、エネルギー貯蔵器218によりバックアップされるダイナミックランダムアクセスメモリ(DRAM)216のような高速揮発性メモリとして実施される。エネルギー貯蔵器218は、停電の場合にフラッシュメモリ206へコンテンツを転送するに充分なほど長くDRAM216を通電状態に保持するのに充分な電力を供給する。ある実施形態では、エネルギー貯蔵器218は、停電の場合に安定したストレージ媒体にDRAM216のコンテンツを転送できるに充分な適度なエネルギーを供給するキャパシタ、スーパーキャパシタ、バッテリ又は他の装置である。フラッシュメモリ206は、多数のフラッシュダイ222として実施され、これは、フラッシュダイ222のパッケージ又はフラッシュダイ222のアレイとも称される。フラッシュダイ222は、多数の仕方でパッケージでき、例えば、パッケージ当たり1つのダイで、又はパッケージ当たり多数のダイで(即ち、マルチチップパッケージ)、ハイブリッドパッケージで、プリント回路板又は他の基板上の裸のダイとして、カプセル型ダイとして、等々でパッケージできることが明らかである。ここに示す実施形態では、不揮発性ソリッドステートストレージ152は、コントローラ212又は他のプロセッサと、コントローラ212に結合された入力/出力(I/O)ポート210とを有する。I/Oポート210は、フラッシュストレージノード150のCPU156及び/又はネットワークインターフェイスコントローラ202に結合される。フラッシュ入力/出力(I/O)ポート220は、フラッシュダイ222に結合され、そして直接メモリアクセスユニット(DMA)214は、コントローラ212、DRAM216及びフラッシュダイ222に結合される。ここに示す実施形態では、I/Oポート210、コントローラ212、DMAユニット214、及びフラッシュI/Oポート220は、プログラマブルロジック装置(PLD)208、例えば、フィールドプログラマブルゲートアレイ(FPGA)において実施される。この実施形態では、各フラッシュダイ222は、16kB(キロバイト)ページ224として編成されたページ、及びフラッシュダイ222へデータを書き込んだり又はそこからデータを読み取ったりするときに通るレジスタ226を有する。更に別の実施形態では、フラッシュダイ222内に示されたフラッシュメモリに代って、又はそれに加えて、他のタイプのソリッドステートメモリが使用される。
【0036】
図6Aは、
図1ないし5のストレージクラスター160の更なる実施形態のブロック図である。この実施形態では、
図1に示す多数のスロットを伴うシャーシ138のようなシャーシ138にコンポーネントが設けられる。配電バス172(
図2に見られる)を伴う電源606は、シャーシ138内の種々のコンポーネントへ電力を供給する。2つのストレージノード150が、1つの実施形態において、ネットワークスイッチ620のような経路604に結合されて示されている。更に別の経路が容易に案出される。経路604は、ストレージノード150を互いに結合すると共に、ストレージノード150をシャーシ138の外部のネットワークにも結合して、外部装置、システム又はネットワークに接続できるようにする。
【0037】
多数のストレージユニット152が、ストレージノード150を結合するネットワークスイッチ620又は他の経路604とは個別の別の経路602により、互いに且つストレージノード150に結合される。1つの実施形態では、ストレージユニット152及びストレージノード150を結合する経路602は、PCIエクスプレスバス(PCIe)であるが、他のバス、ネットワーク及び種々の更に別のカップリングを使用することができる。ある実施形態では、ストレージノード150を経路602、例えば、PCIエクスプレスバスに結合するための透過的ブリッジが設けられる。
【0038】
2つの経路602、604に接続するために、各ストレージノード150は、2つのポート608、610を有する。各ストレージノード150のポート610の1つは、経路604の1つに結合され、各ストレージノード150の他のポート608は、他の経路602に結合される。
【0039】
ある実施形態では、ストレージノード150の各々は、計算ノードとして計算機能を遂行する。例えば、ストレージノード150は、1つ以上のアプリケーションを実行することができる。更に、ストレージノード150は、経路602を経てストレージユニット152と通信し、
図1ないし3を参照して上述したように、ユーザデータの書き込み及び読み取りを行う(例えば、消去コードを使用して)。別の例として、1つ以上のアプリケーションを実行するストレージノード150は、ユーザデータを使用し、ストレージユニット152に記憶するためにユーザデータを発生し、ストレージユニット152からユーザデータを読み取って処理し、等々を行うことができる。ストレージユニット152の1つが失われても、又はある実施形態では、ストレージユニット152の2つが失われても、ストレージノード150及び/又は残りのストレージユニット152が依然ユーザデータを読み取ることができる。
【0040】
ある実施形態では、消去コード機能がストレージユニット152においてほとんど又は完全に遂行され、これは、ストレージノード150の計算能力を解放する。これは、ストレージノード150が1つ以上のアプリケーションを実行するといった計算ノードの任務により多く集中できるようにする。ある実施形態では、消去コード機能は、ストレージノード150においてほとんど又は完全に遂行される。これは、ストレージノード150がストレージノードの任務により多く集中できるようにする。ある実施形態では、消去コード機能は、ストレージノード150及びストレージユニット152にわたって分担される。これは、ストレージノード150が利用可能な計算帯域巾を計算ノードの任務とストレージノードの任務との間で分担させることができる。
【0041】
2つの経路602、604が互いに個別である状態で、多数の効果が明らかとなる。いずれの経路602、604も、ストレージノード150及びストレージユニット152を互いに且つ外部ネットワークに結合する経路が1つしかない場合に生じるボトルネックとはならない。1つの経路しかない状態では、敵意のあるものが、ストレージノード150を通して進む必要なく、ストレージユニット152への直接的なアクセスを得ることができる。2つの経路602、604がある状態では、ストレージノード150は、例えば、マルチプロセスアプリケーション又はプロセッサ間通信に対して1つの経路604を通して互いに結合することができる。他方の経路602は、ストレージユニット152におけるデータアクセスに対してストレージノード150の各々により使用することができる。従って、
図6Aに示すアーキテクチャーは、種々のストレージ及び計算機能並びにシナリオをサポートする。特に、
図6Aに示す1つの実施形態は、単一シャーシ138におけるストレージ及び計算システムである。1つ以上のストレージノード150の形態の処理能力、及び1つ以上のストレージユニット152の形態のストレージ容量は、ストレージ及び/又は計算が変更を必要とするとき、シャーシ138に容易に追加することができる。
【0042】
図6Bは、
図6Aのストレージクラスター160の変形例である。この変形例では、経路612は、各ストレージノード150に含まれたストレージユニット152特有の部分を有する。1つの実施形態において、経路612は、ストレージユニット152及びストレージノード150を一緒に結合するPCIエクスプレスバスとして実施される。即ち、ある実施形態では、1つのブレードにおけるストレージノード150及びストレージユニット152がPCIエクスプレスバスを共有する。PCIエクスプレスバスは、ブレード特有であり、別のブレードのPCIエクスプレスバスには直接結合されない。従って、あるブレードのストレージユニット152は、互いに且つそのブレードのストレージノード150と通信することができる。あるブレードのストレージユニット152又はストレージノード150から別のブレードのストレージノード150又はストレージユニット152への通信は、ネットワークスイッチ620、例えば、経路614を経て行われる。
【0043】
図7は、データストレージ、又はデータストレージと計算との組み合せに適した、
図1ないし5のストレージクラスター160の更に別の実施形態のブロック図である。
図7の変形例は、他の可能性の中でも、バス、ネットワーク、又はハードワイヤードメッシュである第1経路616により一緒に結合された全てのストレージユニット152を有する。2つのストレージユニット152の各々に1つのストレージノード150が結合される。2つの更に別のストレージユニット152の各々には、別のストレージユニット152が結合される。ストレージノード150からストレージユニット152への結合は、第2の経路618を示す。
【0044】
図8Aは、スイッチ620を伴う、
図1ないし5のストレージクラスター160の更に別の実施形態のブロック図である。1つのスイッチ620が全てのストレージノード150を互いに結合する。別のスイッチ620も全てのストレージノード150を互いに結合する。この実施形態では、各ストレージノード150が2つのポートを有し、各ポートはスイッチ620の1つに接続される。ポート及びスイッチ620のこの配列は、各ストレージノード150を他のストレージノード150に接続するための2つの経路を与える。例えば、最も左のストレージノード150は、第1スイッチ620又は第2スイッチ620のいずれかを選択することで最も右のストレージノード150(又はストレージクラスター160における他のストレージノード150)に接続することができる。このアーキテクチャーは、通信ボトルネックを緩和させることを理解されたい。1つのスイッチ620、互いに結合された2つのスイッチ620、3つ以上のスイッチ620、及び他の数のポート又はネットワークを伴う更に別の実施形態が、ここに述べる教示を踏まえて、容易に案出される。
【0045】
図8Bは、ストレージユニット152を結合するスイッチ620を伴う、
図8Aのストレージクラスター160の変形例を示す。
図8Aの実施形態と同様に、スイッチ620は、ストレージノード150を結合し、各ストレージノード150に対して他のストレージノード150と通信するための2つの経路を与える。更に、スイッチ620は、ストレージユニット152を結合する。各ストレージノード150におけるストレージユニット152の2つがスイッチ620の1つに結合され、そして各ストレージノード150におけるストレージユニット152の1つ以上がスイッチ620の別の1つに結合される。このように、各ストレージユニット152は、スイッチ620の1つを経てストレージクラスターにおける他のストレージユニット152のほぼ半分に接続される。変形例では、スイッチ620が互いに結合され(
図8Bに破線で示すように)、そして各ストレージユニットは、スイッチ620を経て他のストレージユニット152へ接続される。1つのスイッチ620、又は他の数のスイッチ620及び接続の配列、並びに接続されるコンポーネントの数を伴う更に別の実施形態も、ここに述べる教示を踏まえて、容易に案出される。
【0046】
図9Aは、ストレージクラスター160に対して一緒に結合される計算ノード626のブロック図である。スイッチ620が全ての計算ノード626を一緒に結合し、各計算ノード626がスイッチ620を経て他の計算ノード626と通信できるようにする。種々の実施形態では、各計算ノード626が、計算専用のストレージノード150又は特殊な計算ノード626である。ここに示す実施形態では、計算ノード626は、3つのプロセッサ複合体628を有する。各プロセッサ複合体628は、ポート630を有し、そしてローカルメモリ及び更に別のサポート(例えば、デジタル信号処理、直接メモリアクセス、I/Oの種々の形態、グラフィック加速度計、1つ以上のプロセッサ、等)も有する。各ポート630は、スイッチ620に結合される。従って、各プロセッサ複合体628は、このアーキテクチャーでは、関連ポート630及びスイッチ620を経て他の各プロセッサ複合体628と通信することができる。ある実施形態では、各プロセッサ複合体628は、ハートビート(進行中のオペレーションの指示子として観察できる規則的な通信であって、計算ノード又はプロセッサの考えられる欠陥又は非利用性を知らせるハートビートはない)を発生する。ある実施形態では、各計算ノード626は、ハートビートを発生する。更に別の実施形態において、ストレージノード150及び/又はストレージユニット152もハートビートを発生する。
【0047】
図9Bは、
図9Aの計算ノード626を伴う、
図1ないし5のストレージクラスター160の更に別の実施形態のブロック図である。この実施形態も、ストレージノード150と共に示されている。スイッチ620は、全てのストレージノード150の全てのポート、全ての計算ノード626の全てのポート(例えば、全ての計算ノード626の全てのプロセッサ複合体628)、及びすべてのストレージユニット152を結合する。変形例において、より少数又はより多数のストレージノード150、より少数又はより多数の計算ノード626、より少数又はより多数のストレージユニット152、及びより少数又はより多数のプロセッサ複合体628をシャーシ138に設置することができる。各ストレージノード150、ストレージユニット152又は計算ノード626は、シャーシ138の1つ以上のスロット142(
図1を参照)を占有する。
図9A及び9Bは、1つの例に過ぎず、これに限定されないことを理解されたい。ある実施形態では、多数のスイッチ620がシャーシ138に一体化され、そして計算ノード626は、
図8A及び8Bの実施形態と同様に、ここに述べる実施形態により提供される通信の融通性を達成するために多数のスイッチに結合される。
【0048】
図9Cは、
図9Bの計算ノード626を伴うストレージクラスター160の変形を示すブロック図で、多数のシャーシ138内のストレージノード150、ストレージユニット152及び計算ノード626を示し、これらは、全て1つ以上のストレージクラスター160として一緒に結合される。多数のシャーシ138は、ストレージクラスター160の拡張のために、ラックマウント型で、ここに示すように一緒に結合することができる。この実施形態では、各シャーシ138のスイッチ620(1つ又は複数)は、シャーシ138のコンポーネントを、
図9Bを参照して上述したように結合し、そして全てのシャーシ138のスイッチ620(1つ又は複数)は、全てのシャーシ138にわたって一緒に結合される。ストレージノード150及び/又は計算ノード626の種々の組み合せで、ストレージ容量及び/又は計算容量(例えば、アプリケーション、オペレーティングシステム、等を実行するための)が容易に構成され、拡張又は収縮され、或いはバーチャル計算環境においてバーチャル化される。スイッチ620の使用で、多くの他のラックマウントシステムに見られる通常のパッチ配線が減少され又は排除される。
【0049】
ストレージクラスター160のこの及び他の形態の幾つかの実施形態は、1つのシャーシ138、2つのシャーシ138又は多数のシャーシ138において2つ以上の独立したストレージクラスターをサポートすることができる。多ストレージクラスター環境における各ストレージクラスター160は、ストレージノード150、ストレージユニット152及び/又は計算ノード626を、1つの、別の又は両方の、或いはそれ以上のシャーシ138において、種々の組み合せで、有することができる。例えば、第1のストレージクラスター160は、あるシャーシ138に多数のストレージノード150を有し、そして別のシャーシ138に1つ以上のストレージノード150を有することができる。第2のストレージクラスター160は、第1シャーシ138に1つ以上のストレージノード150を、そして第2シャーシ138に1つ以上のストレージノード150を有することができる。これらストレージクラスター160のいずれかは、シャーシ138のいずれか又は両方に計算ノード626を有することができる。各ストレージクラスター160は、それ自身のオペレーティングシステムを有し、且つ他のストレージクラスター160とは独立して実行するそれ自身のアプリケーションを有する。
【0050】
図6A−9Cに示す実施形態の幾つか又は全部において多数の特徴が明らかである。多くの実施形態は、各ストレージユニット152がストレージノード150からの支援なしに1つ以上の他のストレージユニット152と直接通信できるような経路を提供する。即ち、ストレージユニット152は、その経路を経て別のストレージユニット152と通信することができ、ストレージノード150は、そのような通信に関わることがない。この直接的経路を経てあるストレージユニット152から別のストレージユニット152への通信に介入し又はそれを支援するストレージノード150はない。ある実施形態では、ストレージユニット152から他のストレージユニット152へ通信するためのそのような直接的経路が設けられる。ある実施形態では、各ストレージユニット152から1つ又は多数の他のストレージユニット152へのそのような直接的経路が設けられるが、必ずしも、他の全てのストレージユニット152ではない。これらの場合に、ストレージユニット152は、1つ以上のストレージノード150及び別の経路を経て、即ちストレージノード150からの支援を得て、別のストレージユニット152と通信することができる。
【0051】
ある実施形態において、あるストレージユニット152から他のストレージユニット152への直接的通信のための経路は、ストレージクラスター160の他のコンポーネントのカップリングに含まれる。ある実施形態では、各ストレージノード150は、全ストレージクラスター160の各ストレージユニット152と直接通信することができる。ある実施形態では、各ストレージノード150は、ストレージユニット152の幾つかと直接的に通信し、そして別のストレージノード150を経て他のストレージユニット152と通信することができる。ある実施形態では、ストレージノード150間の通信及びストレージユニット152間の通信のための経路が分離され、他の実施形態では、それら経路が組み合わされる。ある実施形態では、ストレージノード150とストレージユニット152との間の通信、及びストレージユニット152間の通信のための経路が分離され、そして他の実施形態では、それら経路が組み合わされる。
【0052】
ストレージノード150のある態様は、2つのポート608、610を有する。両ポート608、610は、ある実施形態では、2つの異なる経路の選択を経て他のストレージノード150へ通信するのに使用される。ある実施形態では、一方のポート610は、一方の経路を経て他のストレージノード150へ通信するのに使用され、そして別のポート608は、別の経路を経てストレージユニット152と通信するのに使用される。両ポート608、610は、ある実施形態では、ストレージノード150及びストレージユニット152と通信するのに使用される。ストレージユニット152間の直接的な通信をサポートすることにより、これらの種々のアーキテクチャーは、通信ボトルネックを減少することができる。ストレージノード150、並びに処理及び通信帯域巾は、ストレージユニット152間の通信をサポートする上でタイアップされない。このオフロード化の結果として、ユーザデータに対する高速オペレーションのためにストレージノード150は、それらの機能をストレージユニット152へ移行させることができる。
【0053】
ストレージユニット152間の通信は、ストレージユニット152が生きていて、健康で、及び/又は状態情報、等であることを確認するために、データ、メタデータ、メッセージを含むことができる。ストレージユニット152が他のストレージユニット152と直接通信する状態で、ストレージノード150(又はストレージノード150のプロセッサ又はコントローラ)が介入せずに、ストレージノード150は、他のプロセスを自由に管理する。ストレージノード150とストレージユニット152との間の通信、又はストレージノード150の幾つかの機能を引き継ぐときのストレージユニット152間の通信は、データ、メタデータ(例えば、データに関する及びデータに関連した情報)、並びにメタメタデータ(例えば、メタデータに関するメタデータ)を伴うデータ断片を含むことができる。又、そのような通信は、パリティ断片、ヘルス、状態及び性能情報を含むこともできる。ストレージユニット152を他のストレージユニット152又はストレージノード150(例えば、ストレージノード150のプロセッサ)によりアクセスできるようにすることで、データ所有権の区別を可変度合でストレージノード150からストレージユニット152へシフトすることができる。これは、ある実施形態では、オーソリティ168又はワードをストレージノード150及びストレージユニット152間でシフトすることを含む。
【0054】
ネットワーク上のストレージユニット152では、ストレージユニット152が計算ノード626と直接的に通信することができる。そのような通信は、計算ノードの識別子を要求に埋め込み、そしてストレージユニット152が、データをストレージノード150へ、次いで、計算ノード626へ返送するのではなく、データを計算ノード626へ直接返送するようにさせることを含む。データの直接的接続、及びデータのキャッシングは、ストレージユニット152においてデータを見つけるためのインテリジェンスを有する計算ノード626について可能とされる。又、計算ノード626は、ストレージユニット152へ進むか又はそこから到来するデータに対して、フィルタリング、変換、等を実施するデータパイプラインにおける特殊な処理に使用することができる。従って、
図6A−9Cに示したアーキテクチャーは、ストレージシステム並びにストレージ及び計算システムにおけるコンポーネントの配列及びコンポーネント間の通信についての融通性を示している。データスループット及び通信スループット、そして絶対的又は相対的量のデータ及び計算機能のニーズ並びに予想成長に基づき、あるアーキテクチャーが別のアーキテクチャーより適当となる。ストレージ容量及び計算容量は、種々の実施形態において、調整可能であり、拡張可能であり、そして増減可能である。更に、実施形態は、負荷バランシングのためにより大きな融通性を与える。
【0055】
ストレージクラスター160は、ここに開示する種々の実施形態において、一般的に、ストレージアレイと対照的である。ストレージノード150は、ストレージクラスター160を生成する集合の一部分である。各ストレージノード150は、データのスライスを所有しそしてデータを与えるために要求される計算を行う。データを記憶及び検索するよう協働するために多数のストレージノード150が要求される。一般的に、ストレージアレイに使用されるストレージメモリ又はストレージ装置は、データの処理及び操作があまり含まれない。ストレージアレイにおけるストレージメモリ又はストレージ装置は、データを読み取り、書き込み又は消去するためのコマンドを受け取る。ストレージアレイにおけるストレージメモリ又はストレージ装置は、それらが埋め込まれた大きなシステム又はデータが何を意味するかについて知らない。ストレージアレイにおけるストレージメモリ又はストレージ装置は、種々のタイプのストレージメモリ、例えば、RAM、ソリッドステートドライブ、ハードディスクドライブ、等を含む。ここに述べるストレージユニット152は、同時にアクティブで且つ多数の目的を果たす多数のインターフェイスを有する。ある実施形態では、ストレージノード150の機能の幾つかがストレージユニット152へシフトされ、ストレージユニット152をストレージユニット152及びストレージノード150の組み合せへと変換する。(ストレージデータに対して)計算をストレージユニット152に入れることで、この計算をデータそれ自体により近いものにする。種々のシステム実施形態は、異なる能力をもつストレージノードレイヤのハイアラーキーを有する。対照的に、ストレージアレイでは、コントローラは、コントローラがシェルフ又はストレージ装置において管理する全てのデータに関して何でも所有し且つ知っている。ここに述べるストレージクラスター160において、多数のストレージユニット152及び/又はストレージノード150の多数のコントローラが種々の仕方で(例えば、消去コーディング、データ断片化、メタデータ通信及び冗長性、ストレージ容量拡張又は収縮、データ回復、等のために)協働する。
【0056】
図10は、ある実施形態によりストレージクラスター、ストレージノード及び/又は不揮発性ソリッドステートストレージ又はストレージユニットの実施形態において又は実施形態により実施できるストレージクラスター動作方法のフローチャートである。アクション1002において、第1のストレージユニットは、メタデータに関する指示又はユーザデータの一部分をストレージクラスターのストレージノードから受信する。例えば、その指示は、ユーザデータの一部分又はデータ断片を記憶し、ユーザデータの一部分又はデータ断片を読み取り、データ断片からデータを構成し、パリティ断片を読み取り又は書き込むための指示、ヘルス、状態又は性能に関して応答するための指示、等を含む。
【0057】
アクション1004において、第1のストレージユニットは、ストレージノード(1つ又は複数)からの支援を要求しない経路を経て第2のストレージユニットと直接通信する。この通信は、ユーザデータの一部分又はメタデータに関する通信を含む。メタデータに関する通信の適当な一例は、ハートビートの通信である(これは、ヘルス、状態又は性能について応答する指示に関連している)。ユーザデータの一部分に関する通信の例は、別のストレージユニットからデータ断片を要求するか、又はそのストレージユニットのフラッシュメモリに書き込むために別のストレージユニットへパリティ断片を送信することである。更に別の例は、ここに述べる教示を踏まえて、容易に案出される。アクション1006において、第2のストレージユニットは、第1のストレージユニットから経路を経て通信を受信する。より詳細には、第2のストレージユニットは、ストレージノードからではなく、第1のストレージユニットから直接通信を受け取る。
【0058】
アクション1008において、第2のストレージユニットは、第1のストレージユニットからの通信に基づいてアクションを決定する。通信のコンテンツに基づき、第2のストレージユニットは、データを記憶し、メタデータを記憶し、データ又はメタデータを読み取り、そしてそれを第1のストレージユニットへ返送し、第1のストレージユニットからの質問に応答し、等である。適当である場合には、応答が、第2のストレージユニットから第1のストレージユニットへ送信されるか、又はストレージノード(1つ又は複数)からの支援を要求しない経路を経て別のストレージユニットへ送信される。或いは、第2のストレージユニットに対して、ストレージノードの1つ又は計算ノードと通信するアクションが取られる。アクションの更に別の例は、ここに述べる教示を踏まえて、容易に案出される。
【0059】
ここに述べる方法は、従来の汎用コンピュータシステムのようなデジタル処理システムで遂行されることが明らかである。1つの機能だけを遂行するように設計又はプログラムされた特殊目的コンピュータを代替的に使用してもよい。
図11は、ここに述べる実施形態を具現化する規範的コンピューティング装置を示す図である。
図11のコンピューティング装置は、ある実施形態によりストレージノード又は不揮発性ソリッドステートストレージユニットの機能の実施形態を遂行するのに使用される。コンピューティング装置は、中央処理ユニット(CPU)1101を備え、これは、バス1105を通してメモリ1103及び大量ストレージ装置1107に結合される。大量ストレージ装置1107は、ある実施形態においてローカル又はリモートであるディスクドライブのような持続的データストレージ装置を表わす。大量ストレージ装置1107は、ある実施形態では、バックアップストレージを実施することができる。メモリ1103は、リードオンリメモリ、ランダムアクセスメモリ、等を含む。コンピューティング装置に常駐するアプリケーションは、ある実施形態では、メモリ1103又は大量ストレージ装置1107のようなコンピュータ読み取り可能な媒体を経て記憶又はアクセスされる。又、アプリケーションは、ネットワークモデム又はコンピューティング装置の他のネットワークインターフェイスを経てアクセスされる変調型電子信号の形態でもよい。CPU1101は、ある実施形態では、汎用プロセッサ、特殊目的プロセッサ又は特殊プログラムのロジック装置で実施されてもよいことが明らかである。
【0060】
ディスプレイ1111は、バス1105を通して、CPU1101、メモリ1103、及び大量ストレージ装置1107と通信する。ディスプレイ1111は、ここに述べるシステムに関連した視覚化ツール又はレポートを表示するよう構成される。入力/出力装置1109は、コマンド選択の情報をCPU1101へ通信するためにバス505に結合される。外部装置へ及び外部装置からのデータは、入力/出力装置1109を通して通信される。CPU1101は、
図1ないし6を参照して述べた機能を可能とするためにここに述べる機能を実行することが定義される。この機能を実施するコードは、ある実施形態では、CPU1101のようなプロセッサにより実行するためにメモリ1103又は大量ストレージ装置1107内に記憶される。コンピューティング装置のオペレーティングシステムは、MS−WINDOWS
TM、UNIX
TM、LINUX
TM、iOS
TM、CentOS
TM、Android
TM、Redhat Linux
TM、z/OS
TM、又は他の既知のオペレーティングシステムである。ここに述べる実施形態は、バーチャル化コンピューティングシステムとも一体化できることが明らかである。
【0061】
詳細な規範的な実施形態がここに開示された。しかしながら、ここに開示された特定の機能は、実施形態を説明するためのものに過ぎない。しかしながら、それら実施形態は、多数の別の形態で実施されてもよく、ここに述べた実施形態のみに限定されない。
【0062】
第1、第2、等の語は、ここでは、種々のステップ又は計算を説明するために使用されるが、それらのステップ又は計算は、それらの語によって限定されないことを理解されたい。それらの語は、あるステップ又は計算を別のステップ又は計算と区別するためにのみ使用される。本開示の範囲から逸脱せずに、例えば、第1の計算は、第2の計算と称することができ、そして同様に、第2のステップは、第1のステップと称することができる。ここで使用する「及び/又は」という語及び「/」記号は、1つ以上の関連リスト項目のいずれか及び全ての組み合せを含む。
【0063】
ここで使用する単数形“a”、“an”及び“the”は、文脈が明確に指示しない限り、複数形も包含するものとする。“comprises(備える)”、“comprising(備えている)”、“includes(含む)”及び/又は“including(含んでいる)”は、ここで使用されるとき、述べた特徴、整数、ステップ、オペレーション、要素、及び/又はコンポーネントの存在を特定するが、1つ以上の他の特徴、整数、ステップ、オペレーション、要素、コンポーネント、及び/又はそのグループの存在又は追加を除外するものではないことを更に理解されたい。それ故、ここで使用する用語は、特定の実施形態を説明するものに過ぎず、それに限定されない。
【0064】
又、別の実施形態において、ここに述べる機能/行為は、図示されたのとは異なる順序で行われてもよいことに注意されたい。例えば、連続的に示される2つの図は、含まれる機能/行為に基づいて、実際上、実質的に同時に実行されてもよいし、或いは時には逆の順序で実行されてもよい。
【0065】
以上の実施形態に念頭に置いて、それらの実施形態は、コンピュータシステムに記憶されたデータを伴う種々のコンピュータ実施オペレーションを使用できることを理解されたい。それらのオペレーションは、物理量の物理的操作を要求するものである。通常、必ずしもそうではないが、それらの量は、記憶、転送、合成、比較、及びその他、操作することのできる電気的又は磁気的信号の形態をとる。更に、遂行される操作は、生成、識別、又は比較という語でしばしば表わされる。実施形態の一部分を形成するここに述べるオペレーションは、いずれも、有用なマシンオペレーションである。又、実施形態は、それらのオペレーションを遂行するためのデバイス又は装置にも関連する。装置は、要求された目的のために特別に構成されてもよいし、或いは装置は、コンピュータに記憶されたコンピュータプログラムにより選択的にアクチベート又は構成される汎用コンピュータでもよい。特に、種々の汎用マシンは、ここに述べる教示に従って書かれたコンピュータプログラムと共に使用されてもよいし、或いは要求されたオペレーションを遂行するための特殊な装置を構成するのがより便利である。
【0066】
モジュール、アプリケーション、レイヤ、エージェント、又は他の方法−動作可能なエンティティは、ハードウェア、ファームウェア、又はプロセッサ実行ソフトウェア、或いはその組み合せとして実施することができる。又、ソフトウェアベースの実施形態がここに開示されたが、ソフトウェアは、コントローラのような物理的マシンで実施できることが明らかである。例えば、コントローラは、第1モジュール及び第2モジュールを備えている。コントローラは、例えば、方法、アプリケーション、レイヤ、又はエージェントの種々のアクションを遂行するように構成できる。
【0067】
又、実施形態は、非一時的コンピュータ読み取り可能な媒体上のコンピュータ読み取り可能なコードとして実施することができる。コンピュータ読み取り可能な媒体は、データを記憶し、その後、コンピュータシステムにより読み取られるデータストレージ装置である。コンピュータ読み取り可能な媒体は、例えば、ハードドライブ、ネットワークアタッチ型ストレージ(NAS)、リードオンリメモリ、ランダムアクセスメモリ、CD−ROM、CD−R、CD−RW、磁気テープ、並びに他の光学的及び非光学的データストレージ装置を含む。又、コンピュータ読み取り可能な媒体は、ネットワーク結合のコンピュータシステムにわたって分散されて、コンピュータ読み取り可能なコードが分散形態で記憶され且つ実行されるようにすることができる。ここに述べる実施形態は、ハンドヘルド装置、タブレット、マイクロプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な消費者電子装置、ミニコンピュータ、メインフレームコンピュータ、等を含む種々のコンピュータシステム構成で実施できる。又、実施形態は、ワイヤベースのネットワーク又はワイヤレスネットワークを通してリンクされるリモート処理装置によりタスクが遂行される分散型コンピューティング環境でも実施できる。
【0068】
方法のオペレーションは、特定の順序で説明したが、ここに述べたオペレーションとオペレーションとの間に他のオペレーションが遂行されてもよく、ここに述べたオペレーションは、それらが若干異なる時間に行われるように調整されてもよく、或いはここに述べるオペレーションは、処理に関連した種々の間隔で処理オペレーションを行えるようにするシステムにおいて分散されてもよい。
【0069】
種々の実施形態において、ここに述べる方法及びメカニズムの1つ以上の部分は、クラウドコンピューティング環境の一部分を形成してもよい。そのような実施形態では、1つ以上の種々のモデルによるサービスとしてインターネットを経てリソースが提供される。そのようなモデルは、インフラストラクチャーをサービス(IaaS)として含み、プラットホームをサービス(PaaS)として含み、そしてソフトウェアをサービス(SaaS)として含む。IaaSでは、コンピュータインフラストラクチャーがサービスとして与えられる。そのようなケースでは、コンピューティング装置は、一般的に、サービスプロバイダーにより所有されそして動作される。PaaSモデルでは、ソフトウェア解決策を開発するために開発者により使用されるソフトウェアツール及び基本的な装置は、サービスプロバイダーによりサービスとして提供されそしてホストされる。SaaSは、典型的に、ソフトウェアをオンデマンドでサービスとして使用許諾するサービスプロバイダーを含む。サービスプロバイダーは、ソフトウェアをホストしてもよいし、又は所与の期間中に顧客にソフトウェアを配備してもよい。以上のモデルの多数の組み合せが考えられ、そして意図される。
【0070】
種々のユニット、回路又は他のコンポーネントは、タスク(1つ又は複数)を遂行するように「構成される」として記述され又は請求項に述べられる。そのような文脈では、「構成される」という句は、ユニット/回路/コンポーネントがオペレーション中にタスク(1つ又は複数)を遂行する構造体(例えば、回路)を含むことを指示することにより、構造体を暗示するのに使用される。従って、ユニット/回路/コンポーネントは、特定のユニット/回路/コンポーネントが現在動作していなくても(例えば、オンでなくても)タスクを遂行するように構成されると言うことができる。「構成される」という語と共に使用されるユニット/回路/コンポーネントは、ハードウェアを含み、例えば、オペレーション等を具現化するために実行可能なプログラムインストラクションを記憶するメモリ、回路を含む。1つ以上のタスクを遂行するようにユニット/回路/コンポーネントが「構成される」ことを述べることは、そのユニット/回路/コンポーネントに対して、35U.S.C.112、第6節を引用しないことが明確に意図される。更に、「構成される」は、論争中のタスク(1つ又は複数)を遂行できるように動作するためにソフトウェア及び/又はファームウェア(例えば、FPGA又は汎用プロセッサ実行ソフトウェア)により操作される一般的構造(例えば、一般的回路)を含む。又、「構成される」は、1つ以上のタスクを実施又は遂行するための装置(例えば、集積回路)を製造するように製造プロセス(例えば、半導体製造ファシリティ)を適応させることも含む。
【0071】
以上、特定の実施形態を参照して、本発明を説明した。しかしながら、以上の説明は、余すところのないものでもないし、ここに開示する正確な形態に本発明を限定するものでもない。前記教示に鑑み多数の変更や修正が考えられる。前記実施形態は、それら実施形態の原理及びその実際の応用を最良に説明するために選択され記述されたもので、当業者が、意図された特定の使用に適するように実施形態及び種々の変更を最良に利用できるようにする。従って、本発明の実施形態は、例示であって、これに限定されず、本発明は、ここに述べた詳細に限定されず、特許請求の範囲及びその等効物内で変更されてもよい。