(57)【要約】  【解決手段】  説明されるこのテクノロジーは一般的に、特にウェブスケールのコンピュータサービス、データの記憶、およびデータの提示を実現するように構成されたデータ管理システムに関する。【選択図】      なし
2015532985.tif 000002
【特許請求の範囲】
【請求項１】
データ・ストレージ・アレイであって、
複数のコンピューティングデバイスに動作可能に結合された少なくとも１つのアレイ・アクセス・モジュールであって、
前記複数のコンピューティングデバイスから読み出し要求と書き込み要求とを有するデータ要求を受信し、
前記データ要求をフォーマットしてキャッシュ・ストレージ・コンポーネントと永続ストレージコンポーネントとを有するデータ・ストレージ・システムに送信し、
データ要求に応答する出力データをフォーマットして前記複数のコンピューティングデバイスに提示するように構成されているものである、
前記少なくとも１つのアレイ・アクセス・モジュールと、
前記少なくとも１つのアレイ・アクセス・モジュールおよび前記永続ストレージコンポーネントに動作可能に結合された少なくとも１つのキャッシュ・ルックアップ・モジュールであって、内部に前記キャッシュ・ストレージ・コンポーネントの少なくとも一部が配置されているものであり、
前記少なくとも１つのアレイ・アクセス・モジュールから前記データ要求を受信し、
前記データ・ストレージ・システムにおいて前記データ要求に関連づけられたメタデータを検索し、
前記データ・ストレージ・システムからデータ読み出し要求に関連づけられた出力データを読み出して前記少なくとも１つのアレイ・アクセス・モジュールに送信し、
前記データ書き込み要求に関連づけられた入力データを前記データ・ストレージ・システムに記憶するように構成されているものである、
前記少なくとも１つのキャッシュ・ルックアップ・モジュールと
を有するデータ・ストレージ・アレイ。
【請求項２】
請求項１記載のデータ・ストレージ・アレイにおいて、前記少なくとも１つのアレイ・アクセス・モジュールは少なくとも１つのプロセッサを有するものであるデータ・ストレージ・アレイ。
【請求項３】
請求項１記載のデータ・ストレージ・アレイにおいて、前記少なくとも１つのアレイ・アクセス・モジュールは少なくとも１つの集積回路を有するものであるデータ・ストレージ・アレイ。
【請求項４】
請求項３記載のデータ・ストレージ・アレイにおいて、前記少なくとも１つの集積回路はフィールドプログラマブル・ゲート・アレイを有するものであるデータ・ストレージ・アレイ。
【請求項５】
請求項３記載のデータ・ストレージ・アレイにおいて、前記集積回路は前記データ要求についてデータの冗長性およびエラー検査を提供するように構成されているものであるデータ・ストレージ・アレイ。
【請求項６】
請求項１記載のデータ・ストレージ・アレイにおいて、前記少なくとも１つのアレイ・アクセス・モジュールは、前記複数のコンピューティングデバイスに動作可能に結合されたプロセッサを有し、このプロセッサは、前記複数のコンピューティングデバイスから前記データ要求を受信し、前記出力データをフォーマットして前記複数のコンピューティングデバイスへの提示するように構成されているものであるデータ・ストレージ・アレイ。
【請求項７】
請求項６記載のデータ・ストレージ・アレイにおいて、前記少なくとも１つのアレイ・アクセス・モジュールは、前記プロセッサに動作可能に結合された集積回路を有し、この集積回路は、
前記プロセッサからデータ要求を受信し、
前記データ要求をフォーマットして前記少なくとも１つのキャッシュ・ルックアップ・モジュールに提示するように構成されているものであるデータ・ストレージ・アレイ。
【請求項８】
請求項７記載のデータ・ストレージ・アレイにおいて、前記集積回路は、さらに、前記少なくとも１つのキャッシュ・ルックアップ・モジュールから受信された出力データをフォーマットするように構成されているものであるデータ・ストレージ・アレイ。
【請求項９】
請求項１記載のデータ・ストレージ・アレイにおいて、前記キャッシュ・ストレージ・コンポーネントは少なくとも１つのデュアル・インライン・メモリ・モジュールを有するものであるデータ・ストレージ・アレイ。
【請求項１０】
請求項１記載のデータ・ストレージ・アレイにおいて、前記キャッシュ・ストレージ・コンポーネントは少なくとも１つのフラッシュ・メモリ・モジュールを有するものであるデータ・ストレージ・アレイ。
【請求項１１】
請求項１記載のデータ・ストレージ・アレイにおいて、前記少なくとも１つのキャッシュ・ルックアップ・モジュールは、前記キャッシュ・ストレージ・コンポーネント内のデータを検索するように構成されたプロセッサを有するものであるデータ・ストレージ・アレイ。
【請求項１２】
請求項１記載のデータ・ストレージ・アレイにおいて、前記少なくとも１つのキャッシュ・ルックアップ・モジュールは、さらに、要求されたデータが前記キャッシュ・ストレージ・コンポーネントに記憶されていないことに応答して、前記永続ストレージコンポーネントから前記要求されたデータを読み出すように構成されているものであるデータ・ストレージ・アレイ。
【請求項１３】
請求項１２記載のデータ・ストレージ・アレイにおいて、前記少なくとも１つのキャッシュ・ルックアップ・モジュールは、さらに、前記要求されたデータを前記少なくとも１つのアレイ・アクセス・モジュールに送信する前に、前記永続ストレージコンポーネントからの前記要求されたデータを前記キャッシュ・ストレージ・コンポーネントに記憶するように構成されているものであるデータ・ストレージ・アレイ。
【請求項１４】
請求項１記載のデータ・ストレージ・アレイにおいて、前記永続ストレージコンポーネントは複数のフラッシュカードを有するものであるデータ・ストレージ・アレイ。
【請求項１５】
請求項１４記載のデータ・ストレージ・アレイにおいて、前記複数のフラッシュカードの各々は、データを記憶するように構成された複数のフラッシュチップを有するものであるデータ・ストレージ・アレイ。
【請求項１６】
請求項１記載のデータ・ストレージ・アレイにおいて、当該データ・ストレージ・アレイは、少なくとも４つのアレイ・アクセス・モジュールと、少なくとも６つのキャッシュ・ルックアップ・モジュールとを有するものであるデータ・ストレージ・アレイ。
【請求項１７】
請求項１６記載のデータ・ストレージ・アレイにおいて、前記少なくとも４つのアレイ・アクセス・モジュールの各々は、前記少なくとも６つのキャッシュ・ルックアップ・モジュールの各々に動作可能に結合されるものであるデータ・ストレージ・アレイ。
【請求項１８】
請求項１記載のデータ・ストレージ・アレイにおいて、前記少なくとも１つのアレイ・アクセス・モジュールは、トップオブラックスイッチ（ｔｏｐ−ｏｆ−ｒａｃｋ  ｓｗｉｔｃｈ）を介して前記複数のコンピューティングデバイスに動作可能に結合されるものであるデータ・ストレージ・アレイ。
【請求項１９】
請求項１記載のデータ・ストレージ・アレイにおいて、イーサネット（登録商標）が制御パス通信のために使用されるものであるデータ・ストレージ・アレイ。
【請求項２０】
請求項１記載のデータ・ストレージ・アレイにおいて、ペリフェラル・コンポーネント・インターコネクト（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ：ＰＣＩ）エクスプレスがデータパス通信のために使用されるものであるデータ・ストレージ・アレイ。
【請求項２１】
データ・ストレージ・アレイを製造する方法であって、
複数のコンピューティングデバイスに動作可能に結合されるように構成された少なくとも１つのアレイ・アクセス・モジュールを提供する工程と、
前記少なくとも１つのアレイ・アクセス・モジュールを、
前記複数のコンピューティングデバイスから読み出し要求と書き込み要求とを有するデータ要求を受信し、
前記データ要求をフォーマットしてキャッシュ・ストレージ・コンポーネントと永続ストレージコンポーネントとを有するデータ・ストレージ・システムに送信し、
データ要求に応答する出力データをフォーマットして前記複数のコンピューティングデバイスに提示するように構成する工程と、
前記少なくとも１つのアレイ・アクセス・モジュールおよび前記永続ストレージコンポーネントに動作可能に結合されるように構成された少なくとも１つのキャッシュ・ルックアップ・モジュールを提供する工程と、
前記キャッシュ・ストレージ・コンポーネントの少なくとも一部を前記少なくとも１つのキャッシュ・ルックアップ・モジュールの内部に配置する工程と、
前記少なくとも１つのキャッシュ・ルックアップ・モジュールを、
前記少なくとも１つのアレイ・アクセス・モジュールから前記データ要求を受信し、
前記データ・ストレージ・システムにおいて前記データ要求に関連づけられたメタデータを検索し、
前記データ・ストレージ・システムからデータ読み出し要求に関連づけられた出力データを読み出して前記少なくとも１つのアレイ・アクセス・モジュールに送信し、
前記データ書き込み要求に関連づけられた入力データを前記データ・ストレージ・システムに記憶するように構成する工程と
を有する方法。
【請求項２２】
請求項２１記載の方法において、さらに、
前記少なくとも１つのアレイ・アクセス・モジュールをプロセッサを介して前記複数のコンピューティングデバイスに動作可能に結合されるように構成する工程を有し、
前記プロセッサは、前記複数のコンピューティングデバイスから前記データ要求を受信し、前記出力データをフォーマットして前記複数のコンピューティングデバイスに提示するように構成されているものである方法。
【請求項２３】
請求項２２記載の方法において、さらに、
前記少なくとも１つのアレイ・アクセス・モジュール内に存在し、前記プロセッサに動作可能に結合された集積回路を提供する工程を有し、前記集積回路は、
前記プロセッサからデータ要求を受信し、
前記データ要求をフォーマットして前記少なくとも１つのキャッシュ・ルックアップ・モジュールに提示するように構成されているものである方法。
【請求項２４】
請求項２３記載の方法において、さらに、
前記集積回路を前記少なくとも１つのキャッシュ・ルックアップ・モジュールから受信された出力データをフォーマットするように構成する工程を有するものである方法。
【請求項２５】
請求項２３記載の方法において、さらに、
前記集積回路を前記データ要求についてデータの冗長性およびエラー検査を提供するように構成する工程を有するものである方法。
【請求項２６】
請求項２１記載の方法において、さらに、
前記キャッシュ・ストレージ・コンポーネントを少なくとも１つのデュアル・インライン・メモリ・モジュールを使用してデータを記憶するように構成する工程を有するものである方法。
【請求項２７】
請求項２１記載の方法において、さらに、
前記キャッシュ・ストレージ・コンポーネントを少なくとも１つのフラッシュ・メモリ・モジュールを使用してデータを記憶するように構成する工程を有するものである方法。
【請求項２８】
請求項２１記載の方法において、さらに、
前記少なくとも１つのキャッシュ・ルックアップ・モジュール内に存在し、前記キャッシュ・ストレージ・コンポーネント内のデータを検索するプロセッサを提供する工程を有するものである方法。
【請求項２９】
請求項２１記載の方法において、さらに、
前記永続ストレージコンポーネントにデータを記憶するための複数のフラッシュカードを前記永続ストレージコンポーネント内に配置する工程を有するものである方法。
【請求項３０】
請求項２９記載の方法において、さらに、
前記複数のフラッシュカードにデータを記憶するための複数のフラッシュチップを前記フラッシュカード上に配置する工程を有するものである方法。
【請求項３１】
複数のコンピューティングデバイスのためのデータ・ストレージ・アレイに記憶されたデータへのアクセスを管理する方法であって、
少なくとも１つのアレイ・アクセス・モジュールを複数のコンピューティングデバイスに動作可能に結合する工程と、
前記少なくとも１つのアレイ・アクセス・モジュールで、前記複数のコンピューティングデバイスから読み出し要求と書き込み要求とを有するデータ要求を受信する工程と、
前記少なくとも１つのアレイ・アクセス・モジュールにより、前記データ要求をフォーマットしてキャッシュ・ストレージ・コンポーネントと永続ストレージコンポーネントとを有するデータ・ストレージ・システムに送信する工程と、
前記少なくとも１つのアレイ・アクセス・モジュールにより、データ要求に応答する出力データをフォーマットして前記複数のコンピューティングデバイスに提示する工程と、
少なくとも１つのキャッシュ・ルックアップ・モジュールを前記少なくとも１つのアレイ・アクセス・モジュールおよび前記永続ストレージコンポーネントに動作可能に結合する工程であって、前記少なくとも１つのキャッシュ・ルックアップ・モジュールは、内部に前記キャッシュ・ストレージ・コンポーネントの少なくとも一部が配置されているものである、前記結合する工程と、
前記少なくとも１つのキャッシュ・ルックアップ・モジュールで、前記少なくとも１つのアレイ・アクセス・モジュールからの前記データ要求を受信する工程と、
前記少なくとも１つのキャッシュ・ルックアップ・モジュールにより、前記データ・ストレージ・システムにおいて前記データ要求に関連づけられたメタデータを検索する工程と、
前記少なくとも１つのキャッシュ・ルックアップ・モジュールにより、前記データ・ストレージ・システムからデータ読み出し要求に関連づけられた出力データを読み出して前記少なくとも１つのアレイ・アクセス・モジュールに送信する工程と、
前記少なくとも１つのキャッシュ・ルックアップ・モジュールにより、前記データ書き込み要求に関連づけられた入力データを前記データ・ストレージ・システムに記憶する工程と
を有する方法。
【請求項３２】
請求項３１記載の方法において、前記少なくとも１つのキャッシュ・ルックアップ・モジュールは、前記入力データを前記キャッシュ・ストレージ・コンポーネントに記憶するものである方法。
【請求項３３】
請求項３１記載の方法において、前記少なくとも１つのキャッシュ・ルックアップ・モジュールは、パリティ方式を使用して前記入力データを記憶するものである方法。
【請求項３４】
請求項３３記載の方法において、前記データ・ストレージ・アレイは、少なくとも６つのキャッシュ・ルックアップ・モジュールを有し、前記パリティ方式は、４＋１のパリティ方式を有するものである方法。
【請求項３５】
請求項３１記載の方法において、前記少なくとも１つのアレイ・アクセス・モジュールは、前記データ要求を論理バイトアドレス指定単位（ｌｏｇｉｃａｌ  ｂｙｔｅ  ａｄｄｒｅｓｓｉｎｇ  ｕｎｉｔ）に集約することにより、前記データ要求をフォーマットするものである方法。
【請求項３６】
請求項３１記載の方法において、さらに、
前記少なくとも１つのキャッシュ・ルックアップ・モジュールにより、使用頻度の低いデータを前記キャッシュ・ストレージ・コンポーネントから前記永続ストレージコンポーネントにデステージする工程を有するのものである方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１２年９月６日に出願された米国仮出願番号第６１／６９７，７１１号および２０１３年３月１５日に出願された第６１／７９９，４８７号の恩典を主張し、その内容は、本明細書に完全に記載されているかのごとくそれらの全内容が参照により組み込まれる。
【背景技術】
【０００２】
ウェブスケールのコンピューティングサービスは、コンピューティングテクノロジーおよびサービス業界の最も急速に成長している分野である。一般的に、ウェブスケールとは、信頼性が高く、トランスペアレントで、スケーラブルであり、安全で、コスト効率の高いコンピューティングプラットフォームを指す。例示的なウェブスケールのプラットフォームは、ユーティリティコンピューティング、オンデマンドインフラストラクチャ、クラウドコンピューティング、サービス型ソフトウェア（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  
Ｓｅｒｖｉｃｅ：ＳａａＳ）、およびサービス型プラットフォーム（Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ：ＰａａＳ）を含む。消費者は、そのようなウェブスケールのサービス、特に、クラウドコンピューティングサービスにますます依拠しつつあり、企業は、ウェブスケールのプラットフォームによって動作するアプリケーションへと次第に移行しつつある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
需要のこの増加は、コンピューティングデバイスおよびネットワークをウェブスケールのアプリケーションおよびデータ要求に対処するようにスケーリングする結果として生じる難題を露顕させている。たとえば、ウェブスケールのデータセンターは典型的に、キャッシュコヒーレンシの問題を有し、同時の整合性、利用可能性、および区分化が不可能である。コスト効率の高い手法でそのような大規模についてのこれらの問題を管理しようとする試みは、効果的でないことが証明されている。たとえば、現在のソリューションは典型的に、資本コストと運用コスト間のトレードオフを招きながら、既存の消費者または企業の機器およびデバイスを使用する。たとえば、企業の機器が典型的に、より高い資本コストとより低い運用コストを有するシステムを招く一方で、消費者の機器は典型的に、より低い資本コストとより高い運用コストを有するシステムを招く。現在の技術環境では、コストの小さな差が、ウェブベースのサービスの成功と失敗の差であり得る。したがって、ウェブスケールのサービスの需要を満たすことができるアプリケーションおよびデータ管理のコスト効率の高いスケーリングを可能にする特注の機器およびデバイスを提供することに対するニーズが存在する。  
【課題を解決するための手段】
【０００４】
システム、デバイス、および方法は多様であり得るので、本開示は、説明される特定のシステム、デバイス、および方法に限定されない。説明の中で使用される専門用語は、特定のバージョンまたは１実施形態を説明する目的のものであるにすぎず、範囲を限定するように意図されるものではない。
【０００５】
本明細書において使用される場合、「ａ」、「ａｎ」、および「ｔｈｅ」といった単数形は、文脈がそうでないと明確に規定しない限り、複数形への言及を含む。そうでないと定義されない限り、本明細書において使用されるすべての技術用語および科学用語は、当業者によって一般に理解されるのと同一の意味を有する。本開示におけるいかなるものも、本開示において説明される実施形態が従前の発明のおかげでそのような開示に先行する権利を有しないことを認めるものとして解釈されるべきではない。本明細書において使用される場合、「有する」という用語は、「〜を含むが、〜に限定されない」ことを意味する。
【０００６】
１実施形態において、データ・ストレージ・アレイは、複数のコンピューティングデバイスに動作可能に結合された少なくとも１つのアレイ・アクセス・モジュールであって、複数のコンピューティングデバイスから読み出し要求と書き込み要求とを有するデータ要求を受信し、前記データ要求をフォーマットしてキャッシュ・ストレージ・コンポーネントと永続ストレージコンポーネントとを有するデータ・ストレージ・システムに送信し、データ要求に応答する出力データをフォーマットして前記複数のコンピューティングデバイスに提示するように構成されているものである、前記少なくとも１つのアレイ・アクセス・モジュールと、少なくとも１つのアレイ・アクセス・モジュールと永続ストレージコンポーネントとに動作可能に結合された少なくとも１つのキャッシュ・ルックアップ・モジュールであって、内部に前記キャッシュ・ストレージ・コンポーネントの少なくとも一部が配置され、前記少なくとも１つのアレイ・アクセス・モジュールから前記データ要求を受信し、前記データ・ストレージ・システムにおいてデータ要求に関連づけられたメタデータを検索し、前記データ・ストレージ・システムから前記データ読み出し要求に関連づけられた出力データを読み出して前記少なくとも１つのアレイ・アクセス・モジュールに送信し、前記データ書き込み要求に関連づけられた入力データを前記データ・ストレージ・システムに記憶するように構成されているものである、前記少なくとも１つのキャッシュ・ルックアップ・モジュールとを有する。
【０００７】
１実施形態において、複数のコンピューティングデバイスのためのデータ・ストレージ・アレイに記憶されたデータへのアクセスを管理する方法は、少なくとも１つのアレイ・アクセス・モジュールを複数のコンピューティングデバイスに動作可能に結合する工程と、前記少なくとも１つのアレイ・アクセス・モジュールで、前記複数のコンピューティングデバイスから読み出し要求と書き込み要求とを有するデータ要求を受信する工程と、前記少なくとも１つのアレイ・アクセス・モジュールにより、前記データ要求をフォーマットしてキャッシュ・ストレージ・コンポーネントと永続ストレージコンポーネントとを有するデータ・ストレージ・システムに送信する工程と、前記少なくとも１つのアレイ・アクセス・モジュールにより、データ要求に応答する出力データをフォーマットして前記複数のコンピューティングデバイスに提示する工程と、少なくとも１つのキャッシュ・ルックアップ・モジュールを前記少なくとも１つのアレイ・アクセス・モジュールおよび前記永続ストレージコンポーネントに動作可能に結合する工程であって、前記少なくとも１つのキャッシュ・ルックアップ・モジュールは、内部に前記キャッシュ・ストレージ・コンポーネントの少なくとも一部が配置されているものである、前記結合する工程と、前記少なくとも１つのキャッシュ・ルックアップ・モジュールで、前記少なくとも１つのアレイ・アクセス・モジュールから前記データ要求を受信する工程と、前記少なくとも１つのキャッシュ・ルックアップ・モジュールにより、前記データ・ストレージ・システムにおいてデータ要求に関連づけられたメタデータを検索する工程と、前記少なくとも１つのキャッシュ・ルックアップ・モジュールにより、前記データ・ストレージ・システムからデータ読み出し要求に関連づけられた出力データを読み出して少なくとも１つのアレイ・アクセス・モジュールに送信する工程と、前記少なくとも１つのキャッシュ・ルックアップ・モジュールにより、前記データ書き込み要求に関連づけられた入力データをデータ・ストレージ・システムに記憶する工程とを有する。
【図面の簡単な説明】
【０００８】
【図１Ａ】図１Ａは、いくつかの実施形態に係る例示的なデータ管理システムを図示した図である。
【図１Ｂ】図１Ｂは、いくつかの実施形態に係る例示的なデータ管理システムを図示した図である。
【図２Ａ】図２Ａは、複数の実施形態に係る例示的なアレイ・アクセス・モジュール（ａｒｒａｙ  ａｃｃｅｓｓ  ｍｏｄｕｌｅ：ＡＡＭ）を図示した図である。
【図２Ｂ】図２Ｂは、複数の実施形態に係る例示的なアレイ・アクセス・モジュール（ａｒｒａｙ  ａｃｃｅｓｓ  ｍｏｄｕｌｅ：ＡＡＭ）を図示した図である。
【図２Ｃ】図２Ｃは、複数の実施形態に係る例示的なアレイ・アクセス・モジュール（ａｒｒａｙ  ａｃｃｅｓｓ  ｍｏｄｕｌｅ：ＡＡＭ）を図示した図である。
【図２Ｄ】図２Ｄは、複数の実施形態に係る例示的なアレイ・アクセス・モジュール（ａｒｒａｙ  ａｃｃｅｓｓ  ｍｏｄｕｌｅ：ＡＡＭ）を図示した図である。
【図２Ｅ】図２Ｅは、複数の実施形態に係る例示的なアレイ・アクセス・モジュール（ａｒｒａｙ  ａｃｃｅｓｓ  ｍｏｄｕｌｅ：ＡＡＭ）を図示した図である。
【図２Ｆ】図２Ｆは、複数の実施形態に係る例示的なアレイ・アクセス・モジュール（ａｒｒａｙ  ａｃｃｅｓｓ  ｍｏｄｕｌｅ：ＡＡＭ）を図示した図である。
【図２Ｇ】図２Ｇは、複数の実施形態に係る例示的なアレイ・アクセス・モジュール（ａｒｒａｙ  ａｃｃｅｓｓ  ｍｏｄｕｌｅ：ＡＡＭ）を図示した図である。
【図３Ａ】図３Ａは、複数の実施形態に係る例示的なキャッシュ・ルックアップ・モジュール（ｃａｃｈｅ  ｌｏｏｋｕｐ  ｍｏｄｕｌｅ：ＣＬＭ）を図示した図である。
【図３Ｂ】図３Ｂは、複数の実施形態に係る例示的なキャッシュ・ルックアップ・モジュール（ｃａｃｈｅ  ｌｏｏｋｕｐ  ｍｏｄｕｌｅ：ＣＬＭ）を図示した図である。
【図３Ｃ】図３Ｃは、複数の実施形態に係る例示的なキャッシュ・ルックアップ・モジュール（ｃａｃｈｅ  ｌｏｏｋｕｐ  ｍｏｄｕｌｅ：ＣＬＭ）を図示した図である。
【図３Ｄ】図３Ｄは、複数の実施形態に係る例示的なキャッシュ・ルックアップ・モジュール（ｃａｃｈｅ  ｌｏｏｋｕｐ  ｍｏｄｕｌｅ：ＣＬＭ）を図示した図である。
【図４Ａ】図４Ａは、第１の実施形態に係る例示的なデータ・ストレージ・アレイの一部の上面図である。
【図４Ｂ】図４Ｂは、第１の実施形態に係る例示的なデータ・ストレージ・アレイの一部の媒体側面図である。
【図４Ｃ】図４Ｃは、第１の実施形態に係る例示的なデータ・ストレージ・アレイの一部のケーブル側面図である。
【図４Ｄ】図４Ｄは、第１の実施形態に係る例示的なデータ・ストレージ・アレイの一部の側面図である。
【図４Ｅ】図４Ｅは、第２の実施形態に係る例示的なデータ・ストレージ・アレイの一部の上面図である。
【図４Ｆ】図４Ｆは、第３の実施形態に係る例示的なデータ・ストレージ・アレイの一部の上面図である。
【図４Ｇ】図４Ｇは、第４の実施形態に係る例示的なデータ・ストレージ・アレイの一部の上面図である。
【図４Ｈ】図４Ｈは、いくつかの実施形態に係る例示的なシステム制御モジュールを図示した図である。
【図５Ａ】図５Ａは、第１の実施形態に係る例示的な永続ストレージエレメントを図示した図である。
【図５Ｂ】図５Ｂは、第２の実施形態に係る例示的な永続ストレージエレメントを図示した図である。
【図５Ｃ】図５Ｃは、第３の実施形態に係る例示的な永続ストレージエレメントを図示した図である。
【図６Ａ】図６Ａは、第１の実施形態に係る例示的なフラッシュカードを図示した図である。
【図６Ｂ】図６Ｂは、第２の実施形態に係る例示的なフラッシュカードを図示した図である。
【図６Ｃ】図６Ｃは、第３の実施形態に係る例示的なフラッシュカードを図示した図である。
【図７Ａ】図７Ａは、１実施形態に係るＡＡＭｓとＣＬＭｓ間の接続を図示した図である。
【図７Ｂ】図７Ｂは、１実施形態に係る例示的なＣＬＭを図示した図である。
【図７Ｃ】図７Ｃは、１実施形態に係る例示的なＡＡＭを図示した図である。
【図７Ｄ】図７Ｄは、１実施形態に係る例示的なＣＬＭを図示した図である。
【図７Ｅ】図７Ｅは、ＣＬＭと複数の永続ストレージデバイス間の例示的な接続を図示した図である。
【図７Ｆ】図７Ｆは、１実施形態に係るＣＬＭｓ、ＡＡＭｓ、および永続ストレージ間の例示的な接続を図示した図である。
【図７Ｇ】図７Ｇは、１実施形態に係るＣＬＭｓと永続ストレージ間の例示的な接続を図示した図である。
【図８Ａ】図８Ａは、１実施形態に係る読み出し入力／出力（ＩＯ）要求を実行する例示的な方法のための流れ図である。
【図８Ｂ】図８Ｂは、１実施形態に係る読み出し入力／出力（ＩＯ）要求を実行する例示的な方法のための流れ図である。
【図９Ａ】図９Ａは、１実施形態に係る書き込みＩＯ要求を実行する例示的な方法のための流れ図である。
【図９Ｂ】図９Ｂは、１実施形態に係る書き込みＩＯ要求を実行する例示的な方法のための流れ図である。
【図９Ｃ】図９Ｃは、１実施形態に係る書き込みＩＯ要求を実行する例示的な方法のための流れ図である。
【図１０】図１０は、１実施形態に係るコンペア・アンド・スワップ（ｃｏｍｐａｒｅ  ａｎｄ  ｓｗａｐ：ＣＡＳ）ＩＯ要求を実行する例示的な方法のための流れ図である。
【図１１】図１１は、第２の実施形態に係る永続ストレージからデータを検索する例示的な方法のための流れ図である。
【図１２】図１２は、いくつかの実施形態に係る例示的な直交ＲＡＩＤ（ランダム・アレイ・オブ・インディペンデント・ディスク）構成を図示した図である。
【図１３Ａ】図１３Ａは、１実施形態に係る直交ＲＡＩＤ構成における例示的な非障害書き込み（ｎｏｎ−ｆａｕｌｔ  ｗｒｉｔｅ）を図示した図である。
【図１３Ｂ】図１３Ｂは、１実施形態に係るパリティモジュールを使用した例示的なデータ書き込みを図示した図である。
【図１３Ｃ】図１３Ｃは、１実施形態に係るデータ書き込みをキャッシュするための例示的なセルページを図示した図である。
【図１４Ａ】図１４Ａは、いくつかの実施形態に係るロジカル・ブロック・アドレッシング（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓｉｎｇ：ＬＢＡ）を使用した例示的なデータストレージ構成を図示した図である。
【図１４Ｂ】図１４Ｂは、いくつかの実施形態に係るロジカル・ブロック・アドレッシング（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓｉｎｇ：ＬＢＡ）を使用した例示的なデータストレージ構成を図示した図である。
【図１４Ｃ】図１４Ｃは、１実施形態に係る例示的なＬＢＡマッピング構成１４１０を図示した図である。
【図１５】図１５は、１実施形態に係るＡＡＭｓから永続ストレージへのデータの流れ図である。
【図１６】図１６は、いくつかの実施形態に係るアドレスマッピングを図示した図である。
【図１７】図１７は、いくつかの実施形態に係る例示的な永続ストレージエレメントの少なくとも一部を図示した図である。
【図１８】図１８は、ＣＬＭｓから永続ストレージデバイス（ｐｅｒｓｉｓｔｅｎｔ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅｓ：ＰＳＭｓ）への、およびＰＳＭｓからＣＬＭｓへの、ＲＡＩＤの例示的な構成を図示した図である。
【図１９】図１９は、１実施形態に係る例示的な電力分配保持ユニット（ｐｏｗｅｒ  ｄｉｓｔｒｉｂｕｔｉｏｎ  ａｎｄ  ｈｏｌｄ  ｕｎｉｔ：ＰＤＨＵ）を図示した図である。
【図２０】図２０は、１実施形態に係る例示的なシステムスタックを図示した図である。
【図２１Ａ】図２１Ａは、１実施形態に係る例示的なデータ接続プレーンを図示した図である。
【図２１Ｂ】図２１Ｂは、第２の実施形態に係る例示的な制御接続プレーンを図示した図である。
【図２２Ａ】図２２Ａは、１実施形態に係る永続ストレージデバイス上の例示的なデータインフライト（ｄａｔａ−ｉｎ−ｆｌｉｇｈｔ）のデータフローを図示した図である。
【図２２Ｂ】図２２Ｂは、第２の実施形態に係る永続ストレージデバイス上の例示的なデータインフライトのデータフローを図示した図である。
【図２３】図２３は、１実施形態に係る例示的なデータ信頼性符号化フレームワークを図示した図である。
【図２４Ａ】図２４Ａ〜Ｂは、いくつかの実施形態に係る例示的なデータ読み出しおよび書き込み動作を図示した図である。
【図２４Ｂ】図２４Ａ〜Ｂは、いくつかの実施形態に係る例示的なデータ読み出しおよび書き込み動作を図示した図である。
【図２４Ｃ】図２４Ａ〜Ｂは、いくつかの実施形態に係る例示的なデータ読み出しおよび書き込み動作を図示した図である。
【図２５】図２５は、いくつかの実施形態に係るメールボックス／ドアベル領域へのアドレシングを再マッピングするための非トランスペアレントなブリッジングを図示した図である。
【図２６】図２６は、いくつかの実施形態に係るＣＬＭからＰＳＭへの書き込みの例示的なアドレッシング方法を図示した図である。
【図２７Ａ】図２７Ａは、読み出しトランザクションの第１の部分の例示的な流れ図である。
【図２７Ｂ】図２７Ｂは、読み出しトランザクションの第２の部分の例示的な流れ図である。
【図２７Ｃ】図２７Ｃは、いくつかの実施形態に係る書き込みトランザクションの例示的な流れ図を図示した図である。
【図２８Ａ】図２８Ａは、いくつかの実施形態に係る例示的なデータ管理システムユニットを図示した図である。
【図２８Ｂ】図２８Ｂは、いくつかの実施形態に係る例示的なデータ管理システムユニットを図示した図である。
【図２９】図２９は、実施形態に係る例示的なウェブスケールのデータ管理システムを図示した図である。
【図３０】図３０は、ある特定の実施形態に係るデータ管理システム内のデータアクセスの例示的な流れ図である。
【図３１】図３１は、１実施形態に係る例示的な再分配レイヤを図示した図である。
【図３２Ａ】図３２Ａは、１実施形態に係る大規模データ管理システムのための例示的な書き込みトランザクションを図示した図である。
【図３２Ｂ】図３２Ｂは、１実施形態に係る大規模データ管理システムのための例示的な読み出しトランザクションを図示した図である。
【図３２Ｃ】図３２Ｃは、１実施形態に係る大規模データ管理システムのための例示的なコンペア・アンド・スワップ（ｃｏｍａｐｒｅ−ａｎｄ−ｓｗａｐ：ＣＡＳ）トランザクションの第１の部分を図示した図である。
【図３２Ｄ】図３２Ｄは、１実施形態に係る大規模データ管理システムのための例示的なコンペア・アンド・スワップ（ｃｏｍｐａｒｅ  ａｎｄ  ｓｗａｐ：ＣＡＳ）トランザクションの第２の部分を図示した図である。
【図３３Ａ】図３３Ａは、第１の実施形態に係る例示的なストレージ・マガジン・チャンバを図示した図である。
【図３３Ｂ】図３３Ｂは、第１の実施形態に係る例示的なストレージ・マガジン・チャンバを図示した図である。
【図３４】図３４は、セカンダリストレージをキャッシュに接続するための例示的なシステムを図示した図である。
【図３５Ａ】図３５Ａは、１実施形態に係る例示的なストレージマガジンの上面図である。
【図３５Ｂ】図３５Ｂは、１実施形態に係る例示的なストレージマガジンの媒体の側面図である。
【図３５Ｃ】図３５Ｃは、１実施形態に係る例示的なストレージマガジンのケーブルの側面図である。
【図３６Ａ】図３６Ａは、１実施形態に係る例示的なデータ・サービス・コアの上面図である。
【図３６Ｂ】図３６Ｂは、１実施形態に係る例示的なデータ・サービス・コアの媒体サイドである。
【図３６Ｃ】図３６Ｃは、１実施形態に係る例示的なデータ・サービス・コアのケーブルの側面図である。
【図３７】図３７は、１実施形態に係る例示的なチャンバ制御ボードを図示した図である。
【図３８】図３８は、１実施形態に係る例示的なＲＸブレードを図示した図である。
【発明を実施するための形態】
【０００９】
以下の詳細な説明では、本明細書の一部を形成する添付図面を参照する。図面において、同様のシンボルは典型的に、文脈がそうでないと規定しない限り同様のコンポーネントを識別する。詳細な説明、図面、および請求項において説明される例示的な実施形態は、限定を意味するものではない。本明細書に提示される主題の精神または範囲から逸脱せずに、他の実施形態が利用されることができ、他の変更が行われることができる。本明細書に一般的に説明され、図面に示される本開示の態様は、広範な異なる構成で配列され、代用され、組み合わせられ、分離させられ、設計されることができ、そのすべてが本明細書において明示的に意図される、ということが容易に理解されるであろう。
【００１０】
本明細書において説明されるシステムは、以下を可能にする。
【００１１】
Ａ．特注の構造およびソフトウェアソリューションの使用による、任意の既存のソリューションの１０倍を超えるほど大きいＤＲＡＭキャッシングレイヤの構築を可能にしながら、その構築に商用オフ・ザ・シェルフ・コンポーネントを活用する、単一の物理ストレージシャーシ。このシステムは、外部のクライアント（ユーザ）からの数十秒から数分の見込まれるアクセスを含むキャッシュサイズを可能にする非常に大きい（内部オーバーヘッド後の１００個のＤＩＭＭ＋有効ＤＲＡＭキャッシュ）を活用することにより、任意のバックエンドストレージシステムに対するＩＯ動作の著しい減少を可能にする。キャッシュサイズが非常に大きいものであり得るので、外部アクセスの空間的局所性は、コンテンツがＤＲＡＭキャッシュの中にあるであろう時間的期間によって、はるかに多く獲得されやすい。相対的に小さなジャーナルまたは同期構造といった、頻繁にオーバーライトされるデータは、ＤＲＡＭキャッシュレイヤ内に純然と存在する可能性が高い。
【００１２】
Ｂ．キャッシュ内で用いられる多数のメモリモジュールが、所望のキャッシング能力に依存して、大容量ＤＲＡＭモジュール、または、単に多数のメインストリーム密度ＤＲＡＭモジュールを可能にする。
【００１３】
Ｃ．ＤＲＡＭキャッシュの規模と、そうして提供される時間的カバレッジは、より精細な粒度のコンポーネントが、バックエンドストレージにネイティブに動作することを何ら必要とせずに完全にキャッシュ内で動作されるので、データがより大きなエレメントで表現されるはるかにより効率的なルックアップテーブルシステムを可能にする。ルックアップテーブルにおけるエレメントの数が、このシステムにおける１６ＫＢ＋に対し１ＫＢ〜４ＫＢの粒度を用いる従来のフラッシュストレージシステムから著しく減じられる点で、ルックアップテーブルのサイズの減少が、ＤＲＡＭキャッシュのサイズを補償する。エレメントの建設的な減少は、テーブルサイズを減じることによって粒状化された空間にキャッシュが保たれることを可能にする。結果は、ＤＲＡＭのはるかにより効率的な使用と同時に並列処理によるより高い性能を提供するシステムである。
【００１４】
Ｄ．使用可能なＤＲＡＭキャッシュのサイズは、メカニカルディスクベースのストレージを用いるこのようなシステムが、フラッシュＳＳＤを使用するストレージアレイアーキテクチャよりも建設的に性能が優れていることを可能にするために使用されるので、そのようなＤＲＡＭキャッシングシステムをフラッシュソリューションと共に適用することは、超並列共有ＤＲＡＭキャッシュへの非常に少ないレイテンシと高い帯域幅を可能にしながら、ＤＲＡＭキャッシュでは見出されなかったデータへのサブミリ秒アクセスを保つ。
【００１５】
Ｅ．キャッシュミスの際、データのＲＡＩＤ保護の損失なしにバックエンドフラッシュストレージへのシングルアクセスによって、通常４Ｋの外部読み出し動作のサービスを提供するシステム。
【００１６】
Ｆ．既存のＤＲＡＭキャッシングソリューションのサイズの制限が少数のＤＲＡＭ  ＤＩＭＭｓしか使用されることができない点で良く知られているが、これらの既存のソリューションは一般的に、コンテンツを格納するための「局所的にパワーバックされた」デバイスおよび媒体を活用するので、それらは、コンピューティングサーバのために利用可能な高容量ＤＲＡＭ  ＤＩＭＭｓよりはるかに小さい。このシステムは、（単一のキャッシングレイヤの一部として動作するより多くのサーバによって）５倍を超えるメモリモジュールの数と、（パワーバックアップを別個のサービス可能な単位に移動させることによって）４倍を超えるモジュール密度の増加とを可能にする。
【００１７】
Ｇ．システムにおいてデータまたはＤＲＡＭキャッシュのいずれかへの対称アクセスをすべてが有する複数のアクティブ−アクティブコントローラにわたって共有されるキャッシングレイヤの増大した容量と性能の両方を容易にするためにＲＡＩＤアレイとして機能する商用オフ・ザ・シェルフ・コンポーネントの使用による大きなキャッシングシステムを構築するためのシステム。
【００１８】
Ｈ．サーバのセットにわたって格納されたデータがデータを記述するメタデータから異なるＲＡＩＤ配列に格納されるリダンダント・アレイ・オブ・インディペンデント・デバイス・アプローチの使用によりサーバのセットの信頼性を向上させるためのシステム。処理を実行するサーバが動作し、各々がタスクを選択するためのマスター（プライマリサーバ）と他のタスクのためのスレーブ（バックアップコピー）としての役割を果たす。任意のサーバが故障した場合、タスクは、アレイの残りのメンバーによってピックアップされることができ、それにより、１つのサーバにおけるソフトウェアにおける障害がシステムダウンを起こすことを防止する。
【００１９】
Ｉ．サーバ上のソフトウェアがすべての動作についてＡＰＩｓを通じて通信するので、サーバの各々におけるソフトウェアのバージョンは異なってもよく、それによって、サーバ内のソフトウェアのアップグレードにせよシステムにおける１つのサーバの新たなサーバによる置き換えにせよ、能力のインサービスアップグレードを可能にする。
【００２０】
Ｊ．複数のすべてのフロントエンドコントローラがシステムにわたって格納された任意のデータへの対称アクセスを有すると同時にフルアクセスを有するよう、複数のパラレルなコントローラにわたりストレージコンプレックスのためのメタデータを分散させるための方法。
【００２１】
Ｋ．フラッシュメモリによる使用のために設計されたストレージアレイが、コントローラにおけるＤＲＡＭを最小化し、基礎をなすフラッシュ媒体のバックエンド性能に主に依拠する一方で、このシステムは、フラッシュ媒体によって可能であるよりもはるかに少ないレイテンシでキャッシュにおけるデータへのはるかに高いスループットを供給することをＤＲＡＭに可能にさせる、非常に大きい（１００個のＤＩＭＭ＋有効キャッシュ）を活用する。
【００２２】
説明されるこのテクノロジーは一般的に、特にウェブスケールのコンピュータサービス、データの記憶、およびデータの提示を実現するように構成されたデータ管理システムに関する。特に、１実施形態は、データがデータ・ストレージ・アレイに格納されるデータ管理システムを提供する。データ・ストレージ・アレイ内に格納されたデータは、アレイ・アクセス・モジュール（ａｒｒａｙ  ａｃｃｅｓｓ  ｍｏｄｕｌｅｓ：ＡＡＭｓ）として用いられる１つまたは複数のロジックまたはコンピューティングエレメントによってアクセスされる。ＡＡＭは、データの読み出し、データの書き込み、および／または、データのコンペア・アンド・スワップ（たとえば、値が現在格納されている値との比較のために送信され、値が一致した場合、現在格納されている値が提供された値と置き換えられる）の要求を含む、クライアントデータ入力／出力（Ｉ／ＯまたはＩＯ）要求を受信する。要求は、特に、要求に関連づけられたデータについてのアドレスを含む。ＡＡＭｓは、データ・ストレージ・アレイのための検索サービスを提供するように構成されるルックアップモジュール（ｌｏｏｋｕｐ  ｍｏｄｕｌｅｓ：ＬＭｓ）として用いられる複数のコンピュータを使用したデータ・ストレージ・アレイのストレージコンポーネントへの提示のために要求をフォーマットする。
【００２３】
データは、キャッシュストレージまたは永続ストレージにおけるデータ・ストレージ・アレイ内に格納される。キャッシュストレージは、キャッシュモジュール（ｃａｃｈｅ  ｍｏｄｕｌｅｓ：ＣＭｓ）として構成された１若しくはそれ以上のコンピューティングエレメントを使用したキャッシュストレージレイヤとして、および永続ストレージモジュール（ｐｅｒｓｉｓｔｅｎｔ  ｓｔｏｒａｇｅ  ｍｏｄｕｌｅ：ＰＳＭまたは「クリップ」）として構成された１若しくはそれ以上のコンピューティングエレメントを使用して実装された永続ストレージとして、実装される。いくつかの実施形態によると、ＬＭおよびＣＭは、ルックアップ機能とキャッシュ機能との両方を行うように構成された共有または共設モジュール（キャッシュ・ルックアップ・モジュール（ｃａｃｈｅ  ｌｏｏｋｕｐ  ｍｏｄｕｌｅ：ＣＬＭ））として構成される。そのようなものとして、この説明におけるＬＭおよび／またはＣＭという用語の使用は、ＬＭ、ＣＭ、および／またはＣＬＭに言及する。たとえば、ＬＭは、ＣＬＭのルックアップ機能に言及し、および／または、ＣＭは、ＣＬＭのキャッシュ機能に言及する。実施形態において、内部テーブル（たとえば、アドレステーブル、論理アドレステーブル、物理アドレステーブル、等）は、ＬＭｓおよび／またはＣＬＭｓにわたってミラーリングされ、ＣＭｓおよび／またはＣＬＭｓは、個々のＬＭ、ＣＭ、および／またはＣＬＭの故障からデータ・ストレージ・アレイとそのテーブルを保護するように保護されたＲＡＩＤ（ランダム・アレイ・オブ・インディペンデント・ディスク）であり得る。
【００２４】
各々のＣＬＭは、ソフトウェアのための標準サーバボードにしたがって構成することができるが、本明細書におけるいくつかの実施形態にしたがって説明される場合、キャッシュおよびルックアップエンジンの両方として機能する。キャッシュエントリは、ルックアップテーブルエントリとの比較において大きいものであり得る。そのようなものとして、いくつかの実施形態は、複数のＣＭｓおよび／またはＣＬＭｓにわたるＲＡＩＤパリティを用い得る。たとえば、４＋１個のパリティにより、ＣＭおよび／またはＣＬＭにキャッシュからデータの損失なしにサービスが提供されることが可能となる。ルックアップテーブルエントリは、ＬＭｓおよび／またはＣＬＭｓにわたってミラーリングされる。ルックアップテーブルデータは、各々のＬＭ、ＣＭ、および／またはＣＬＭがそのミラーデータをシステムにおける他のＬＭｓ、ＣＭｓ、および／またはＣＬＭｓの間でほぼ平等に分散させるように配列されるので、ＬＭ、ＣＭ、および／またはＣＬＭ  ＣＬＭの障害時に、すべての残りのＬＭｓ、ＣＭｓ、および／またはＣＬＭｓは、（たとえば、負荷の倍増とは対照的に）負荷の適度な増加を被るのみであり得る。
【００２５】
いくつかの実施形態によると、ストレージ・アレイ・システム・コントローラ（「アレイコントローラ」または「アレイ・システム・コントローラ」）における内部システムメタデータは、システムメタデータの各々のコンポーネントのための「マスター」および「スレーブ」ＣＬＭによる１＋１の（ミラーリングされた）構成に格納される。１実施形態において、システムメタデータの少なくとも一部はまず、論理物理テーブル（Ｌｏｇｉｃａｌ  ｔｏ  Ｐｈｙｓｉｃａｌ  Ｔａｂｌｅｓ：ＬＰＴ）を備える。たとえば、ＬＰＴデータは、マスターＣＬＭとスレーブＣＬＭとの両方を含む、すべてのまたは実質的にすべてのＣＬＭｓが、ＬＰＴイベントのための等しいローディングに遭遇するように分散させられる。
【００２６】
いくつかの実施形態によると、ＬＰＴテーブルは、たとえば、書き込みのコミットにより、データがコミットされて永続ストレージ（フラッシュ）に書き込まれる場合、アクセスを同期させるために使用される。たとえば、各々のＬＰＴは、単一のマスター（ＣＬＭおよび／またはＰＳＭ）および単一のスレーブ（ＣＬＭおよび／またはＰＳＭ）に関連づけられる。１実施形態において、マスター（ＣＬＭおよび／またはＰＳＭ）とスレーブ（ＣＬＭおよび／またはＰＳＭ）との間のアップデートを同期させるためのコマンドが、ＰＣＩｅスイッチを使用してメールボックス／ドアベルメカニズムにより行われる。
【００２７】
いくつかの実施形態によると、潜在的な「ホットスポット」が、「マスター／スレーブ」を分散させることによって回避される。非限定的な例は、論理アドレス空間の一部を得ることとそれを使用してマスターとスレーブの両方のためのマッピングを定義することとを提供する。たとえば、６つの低位ＬＢＡアドレスビットを使用することによって、マッピングテーブルを参照する。６ｉＣＬＭｓにわたりマップテーブルを分割するために６ビット（６４個のエントリ）を使用することは、各々の分割で平均１０と２／３のエントリを提供する。そのようなものとして、４つのＣＬＭｓは、１１個のエントリを有し、２つは１０個を有し、ＣＬＭｓ間の約１０％の差という結果を生じる。各々のＬＰＴがミラーリングされるので、セットからの２２個の「エントリ」を有する２つのＣＬＭｓの収量および２１個の「エントリ」を有する４つが生成される。そのようなものとして、ＣＬＭｓのための合計有効負荷間の約５％の差が達成される。
【００２８】
いくつかの実施形態によると、ＣＬＭｓは、「フラッシュＲＡＩＤ」のために構成される。非限定的な例は、モジュラー「パリティ」（たとえば、シングル、ダブル、トリプル、等）を提供する。別の非限定的な例において、シングルパリティは、ＸＯＲパリティであり得る。より高い位は、ワイヤレス通信におけるＦＥＣと同様に構成される。さらなる非限定的な例において、コンプレックスパリティは最初、シングルパリティがシステムを動作可能にするために使用されるようバイパスされる。
【００２９】
１実施形態において、対応するルックアップテーブルを有するＬＭ、ＣＭ、および／またはＣＬＭへの論理アドレスのマッピングは、たとえば、サービス要求のためのレイテンシを減じるために、固定でありかつデータ管理システム中央コントローラによって既知であり得る。１実施形態において、ＬＭｓ、ＣＭｓ、および／またはＣＬＭｓは、たとえば、経時的な１若しくはそれ以上の全カードおよび／またはメモリ容量増大の置き換えを提供しながら、ホットサービスされる。加えて、ＣＬＭｓ上のソフトウェアは、適所でのアップグレードを容易にするように構成される。
【００３０】
データアクセス要求に応答する際、ＡＡＭｓは、データアクセス要求においてアクセスされているアドレスのためのマスター位置として動作する、ＬＭｓからのアクセスのために使用されるキャッシュストレージの位置を取得する。続いて、ＣＭキャッシングレイヤを介してデータアクセス要求にサービスを提供することができる。したがって、ＡＡＭは、ＬＭを介してサービス要求において要求されたデータの位置を受信し、ＣＭを介して要求にサービスを提供することができる。データがＣＭの中に位置していない場合、データ・ストレージ・アレイは、要求しているクライアントへの読み出しパスに沿ってデータを送信する前にＰＳＭからＣＭの中にデータを読み出す。
【００３１】
１実施形態において、ＡＡＭｓ、ＬＭｓ、ＣＭｓ、ＣＬＭｓ、および／またはＰＳＭｓ（「ストレージ・アレイ・モジュール」または「ストレージ・アレイ・カード」）は、別個のロジック、または別個のボードを含むコンピューティングエレメント（たとえば、プリント回路板（ＰＣＢ）、カード、ブレード、または他の同様の形態）、別個のアセンブリ（たとえば、サーバブレード）、またはそれらの任意の組み合わせとして実装される。他の実施形態において、ストレージ・アレイ・モジュールの１若しくはそれ以上は、シングルボード、サーバ、アセンブリ、等に実装される。各々のストレージ・アレイ・モジュールは、別個のオペレーティングシステム（ＯＳ）イメージを実行する。たとえば、各々のＡＡＭ、ＣＬＭ、およびＰＳＭは、別個のボード上で構成され、各々のボードは、別個のＯＳイメージの下で動作する。
【００３２】
実施形態において、各々のストレージ・アレイ・モジュールは、サーバ・コンピューティング・デバイス内に位置している別個のボードを含む。別の実施形態において、ストレージ・アレイ・モジュールは、複数のサーバ・コンピューティング・デバイス内に配列された別個のボードを含む。サーバ・コンピューティング・デバイスは、オペレーティングシステムおよびデータ管理システム制御ソフトウェアのようなソフトウェアを実行するように構成された少なくとも１つのプロセッサを含む。データ管理システム制御ソフトウェアは、データ管理システムのさまざまな機能および／またはそのコンポーネント（「データ管理システム機能」）、たとえば、いくつかの実施形態にしたがって説明されるＬＭｓ、ＣＬＭｓ、ＡＡＭｓ、および／またはＰＳＭｓを実行し、管理し、またはそうでなければ制御するように構成される。いくつかの実施形態によると、データ管理システム機能は、ソフトウェア（たとえば、データ管理システム制御ソフトウェア、ファームウェア、またはその組み合わせ）、ハードウェア、またはそれらの任意の組み合わせによって実行される。
【００３３】
ストレージ・アレイ・モジュールは、さまざまな通信エレメント、および／または、イーサネット（登録商標）ファブリックによるインターネット・スモール・コンピュータ・システム・インターフェース（ｉＳＣＳＩ）、Ｉｎｆｉｎｉｂａｎｄファブリックによるインターネット・スモール・コンピュータ・システム・インターフェース（ｉＳＣＳＩ）、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）、ＰＣＩエクスプレス（ＰＣＩｅ）、ＰＣＩエクスプレスファブリックによる不揮発性メモリエクスプレス（ＮＶＭｅ）、イーサネット（登録商標）ファブリックによる不揮発性メモリエクスプレス（ＮＶＭｅ）、およびＩｎｆｉｎｉｂａｎｄファブリックによる不揮発性メモリエクスプレス（ＮＶＭｅ）を含むがこれに限定されない、プロトコルを使用して接続される。
【００３４】
データ・ストレージ・アレイは、データを保護するためのさまざまな方法を使用する。いくつかの実施形態によると、データ管理システムは、ストレージコンポーネント（たとえば、ＣＭのようなデータストレージカード）が、たとえば、アップグレードまたはリペアのために、ホットサービスを提供することを可能にするように構成されたデータ保護システムを含む。１実施形態において、データ管理システムは、外部電力故障後の時間期間にわたって電力を保持するように構成された１若しくはそれ以上の電力保持ユニット（ＰＨＵｓ）を含む。１実施形態において、ＰＨＵｓは、ＣＬＭｓおよび／またはＰＳＭｓのための電力を保持するように構成される。このように、データ管理システムの動作は、データ動作およびデータ整合性が外部電力の損失中に維持されるよう、ＰＨＵｓによって提供される内部電力供給によって電力供給される。１実施形態において、ＣＳＭｓにおいて維持される「ダーティ」または変更データの量は、たとえば、電力故障または他のシステム故障のケースで、ＰＳＭｓに格納される量未満であり得る。
【００３５】
１実施形態において、キャッシュストレージレイヤは、ＲＡＩＤ（ランダム・アレイ・オブ・インディペンデント・ディスク）保護のさまざまな形態を使用するように構成される。ＲＡＩＤの非限定的な例は、ミラーリング、シングルパリティ、デュアルパリティ（Ｐ／Ｑ）、および抹消符号を含む。たとえば、複数のＣＭｓおよび／またはＰＳＭｓにわたるミラーリングの場合、ミラーの数は、システムが同時に耐え得る障害の数よりも１つ多いように構成される。たとえば、データは２つのミラーによって維持され、ミラーのいずれか１つは、障害の場合にカバーする。３つのミラー（「コピー」）が使用される場合には、任意の２つがデータ損失なしに障害を有する。いくつかの実施形態によると、ＣＭｓおよびＰＳＭｓは、ＲＡＩＤの異なる形態を使用するように構成される。
【００３６】
１実施形態において、ＲＡＩＤデータ符号化が使用され、ここで、データ符号化は、全く均一であり得、読み出し応答の任意の最小セットは、ほぼ均一な計算負荷により確実に送信データを生成する。たとえば、電力負荷は、データアクセスのためにより均一であり得、オペレータは、ストレージ冗長性の所望のレベル（たとえば、シングル、デュアル、トリプル、等）を決定する能力を有する。
【００３７】
データ・ストレージ・アレイは、さまざまなタイプのパリティベースのＲＡＩＤ構成を使用するように構成される。たとえば、データを保持するＮ個のモジュールは、データモジュールに格納されているデータのパリティを維持する単一のモジュールによって保護される。別の例において、第２のモジュールがエラーリカバリのために用いられることができ、任意の２つの他のモジュールの損失からのリカバリを可能にする「Ｑ」符号化にしたがってデータを格納するように構成される。さらなる例において、より多くの数の故障に対処するためにエラー訂正モジュールの数Ｍが増大させられるアルゴリズムのクラスを含む抹消符号が使用される。１実施形態において、抹消符号アルゴリズムは、エラー訂正モジュールの数Ｍが２つよりも多くかつデータを保持するモジュールの数Ｎ未満であるように、構成される。
【００３８】
いくつかの実施形態によると、データは、メモリクラス内で移動させられる。たとえば、データは、「再符号化」され、「再符号化」されるデータは、「キャッシュサイド」から「フラッシュサイド」に移行させられる。「フラッシュへの書き込み待ち状態」のデータは、フラッシュへの実際のコミットメント待ち状態でメモリ内の別の場所に置かれる。
【００３９】
いくつかの実施形態によると、データ・ストレージ・アレイは、内部システム動作のさまざまな態様のためのメタデータを使用するように構成される。このメタデータは、データ・ストレージ・アレイ自体に格納されたデータのために使用される任意のデータ保護方法と異なるかまたはそれに加えられたさまざまなエラー訂正メカニズムを使用して保護される。たとえば、メタデータがミラーリングされる一方で、データは、４＋１個のパリティＲＡＩＤによって保護される。
【００４０】
いくつかの実施形態によると、本明細書において説明されるストレージ・アレイ・システムは、基礎をなす媒体におけるフルページであるデータの単位で動作する。たとえば、フラッシュデバイスは、システムがこの粒度でまたはその複数でデータにアクセスするよう、最大約１６キロバイトページまで（たとえば、デバイスが任意の読み出しまたは書き込みをネイティブに行う場合の内部サイズ）を移動させることができる。１実施形態において、システムメタデータは、たとえば、低レベルコントローラの生成を必要としないように、記憶媒体における「ユーザ」アドレス指定可能空間によって提示された記憶空間内に格納される。１実施形態では、キャッシュが、フルページよりも小さい任意のアクセスサイズまでのアクセス（たとえば、読み出し、書き込み、コンペア・アンド・スワップ、等）を可能にするために用いられる。読み出しは、データが以前に全く書き込みされていない限り、データがクライアントに提供される前にデータを永久ストレージからキャッシュへとプルし、そのポイントで何らかのデフォルト値（たとえば、ゼロ）が返される。書き込みは、永久ストレージに保持されたデータストレージユニットのフラクションのためのキャッシュに入れられる。ユーザがデータブロックにおけるセクタのすべてを書き込み（再書き込み）する前にデータが永久ストレージにデステージされるべきである場合、システムは、永久ストレージから以前のコンテンツを読み出し、当該コンテンツを統合して、データを永久ストレージにポストバックする。
【００４１】
いくつかの実施形態によると、ＡＡＭｓは、ＩＯ要求を特定の論理バイトアドレス指定（ｌｏｇｉｃａｌ  ｂｙｔｅ  ａｄｄｒｅｓｓｉｎｇ：ＬＢＡ）単位の粒度（たとえば、２５６個のＬＢＡ（約１２８キロバイト））へと集約し、および／または、ＩＯ要求を１若しくはそれ以上の特定のデータサイズユニット（たとえば、１６キロバイト）にフォーマットする。特に、ある特定の実施形態は、追加のストレージレイヤが存在しないか、またはある特定の「論理ボリューム／ドライブ」がさらなるストレージレイヤに格納されたそれらのデータを有しないか、のいずれかであるデータ・ストレージ・アレイを提供する。「論理ボリューム／ドライブ」の実施形態のために、さらなるストレージレイヤは存在しない。キャッシュの速度でサービスされなくてはならないデータを要求するアプリケーションおよび／またはシステムシャットダウン時にデータがさらなるおよび一般的により遅いストレージレイヤに格納されることを要求しないアプリケーションは、たとえば、「論理ボリューム／ドライブ」ストレージ構成を使用する。
【００４２】
上述されたように、いくつかの実施形態にしたがって構成されたデータ・ストレージ・アレイは、キャッシュストレージに加えて、１若しくはそれ以上のＰＳＭｓによって実装された「永続」ストレージレイヤを含む。そのような実施形態において、データ書き込みは、キャッシュストレージ（たとえば、ＣＭ）にポストされ、必要であれば永続メモリ（たとえば、ＰＳＭ）にデステージされる。別の例において、データは、キャッシュストレージから直接読み出しされるか、または、データがキャッシュストレージにない場合には、データ・ストレージ・アレイは、要求しているクライアントへの読み出しパスに沿ってデータを送信する前に、永続メモリからキャッシュへとデータを読み出する。「永続ストレージエレメント」、「永続ストレージコンポーネント」、ＰＳＭ、またはそれらの同様のバリエーションは、永続データ記憶ができる、電子、磁気、および光学データストレージおよびプロセッシングエレメント、デバイスおよびコンポーネントを含む、任意のデータソースまたは宛先エレメント、デバイス、またはコンポーネントに言及する。
【００４３】
永続ストレージレイヤは、複数のＰＳＭｓにわたってさまざまな形態のＲＡＩＤ保護を使用する。ＰＳＭｓに格納されたデータは、ＣＭｓに格納されたデータのために用いられるものとは異なるＲＡＩＤ保護によって格納される。１実施形態において、ＰＳＭｓは、１若しくはそれ以上のＲＡＩＤディスクストリングにおいてデータを記憶する。別の実施形態において、データは、それが永久ストレージの中（たとえば、ＰＳＭの中）に格納される場合と比較して、それがキャッシュの中にある（たとえば、ＣＭに格納される）場合には、直交手法で保護される。いくつかの実施形態によると、データは、ＰＳＭｓに格納されたデータに直交して保護されたＣＭ  ＲＡＩＤに格納される。このように、コストと性能のトレードオフは、各々のそれぞれのストレージティアで実現される一方で、たとえば、いずれかまたは両方のレイヤにおけるコンポーネントが障害状態にある期間中、ＣＭｓとＰＳＭｓ間のリンク上で同様の帯域幅を有する。
【００４４】
いくつかの実施形態によると、データ管理システムは、ＬＭからデータの位置を取得するように構成されたＡＡＭからデータにアクセスする要求を受信することを含む、データを格納（書き込み）および検索（読み出し）するための方法を実現するように構成される。読み出し動作中、ＬＭは、ＡＡＭからデータ要求を受信し、ＣＭｓのセットから形成された保護されたキャッシュにおいてデータを位置特定するように動作する。１実施形態において、保護されたキャッシュは、ＲＡＩＤ保護されたキャッシュであり得る。別の実施形態において、保護されたキャッシュは、ダイナミック・ランダム・アクセス・メモリ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＤＲＡＭ）キャッシュであり得る。ＬＭが保護されたキャッシュにおいてデータを位置特定した場合、ＡＡＭは、データを格納する１つのＣＭまたは複数のＣＭｓからデータを読み出す。ＬＭがキャッシュにおいてデータを見出さなかった場合、ＬＭは、トランザクションをサービスを提供する前に、ＰＳＭｓのセットによって実装された永続ストレージから１つのＣＭまたは複数のＣＭｓにデータをロードするように動作する。ＡＡＭは続いて、１つのＣＭまたは複数のＣＭｓからデータを読み出す。書き込みトランザクションのために、ＡＡＭは、ＣＭにおける保護されたキャッシュに書き込みをポストする。
【００４５】
いくつかの実施形態によると、ＣＭｓにおけるデータは、ＰＳＭｓに直交して格納される。そのようなものとして、複数のＣＭｓは、あらゆる要求のために使用され、単一のＰＳＭは、より小さい読み出しアクセスのために使用される。
【００４６】
１実施形態において、データ管理システムコンポーネント間のデータ転送の全部または一部は、「ポストされた」書き込みの形態で行われる。たとえば、入ってくるメッセージを受け渡すために「メールボックス」および「ドアベル」を使用すること、読み出しとしてそれらが到着したとのメッセージにフラグを立てることは、応答をまた含むコンポジット動作である。読み出し動作に固有のアドレス指定条件は、ポストされた書き込みのために要求されない。このように、データ転送は、読み出しがデータ管理システム通信コンプレックス（たとえば、ＰＣＩｅコンプレックス）にわたって用いられない場合、より単純でより効率的である。１実施形態において、読み出しは、後に果たされる応答を要求するメッセージを送ることによって行われる。
【００４７】
図１Ａおよび図１Ｂは、いくつかの実施形態に係る例示的なデータ管理システムを図示する。図１Ａに示されているように、データ管理システムは、データ・ストレージ・アレイ１０５と動作可能に通信する１若しくはそれ以上のクライアント１１０を含む。クライアント１１０は、さまざまなコンピューティングデバイス、ネットワーク、および他のデータ消費者を含む。たとえば、クライアント１１０は、サーバ、パーソナルコンピュータ（ＰＣｓ）、ラップトップ、モバイル・コンピューティング・デバイス（たとえば、タブレット・コンピューティング・デバイス、スマートフォン、等）、ストレージ・エリア・ネットワーク（ｓｔｏｒａｇｅ  ａｒｅａ  ｎｅｔｗｏｒｋｓ：ＳＡＮｓ）、および他のデータ・ストレージ・アレイ１０５を含むが、これに限定されない。クライアント１１０は、さまざまな接続プロトコル、トポロジー、および通信機器を使用して、データ・ストレージ・アレイ１０５と動作可能に通信する。たとえば、図１Ａに示されているように、クライアント１１０は、スイッチファブリック１０２ａによってデータ・ストレージ・アレイ１０５に接続される。１実施形態において、スイッチファブリック１０２ａは、ネットワークにおいて配列された１若しくはそれ以上の物理スイッチを含み、および／または、ストレージアレイ１０５の接続の１若しくはそれ以上に直接接続される。
【００４８】
本明細書において使用される「ａ」、「ｂ」、「ｃ」、および同様の指示子は、任意の正の整数を表現する変数であるように意図される、ということは注目に値する。かくして、たとえば、実現がｎ＝６個のＣＬＭｓ１３０のための値を設定する場合には、ＣＬＭｓ１３０の完全なセットは、ＣＬＭｓ１３０−１、１３０−２、１３０−３、１３０−４、１３０−５、および１３０−６を含む。１実施形態は、この文脈に限定されない。
【００４９】
１実施形態において、クライアント１１０は、書き込み要求、読み出し要求、コンペア・アンド・スワップ要求、等を含む、データ・ストレージ・アレイ１０５へのデータ要求を発行する機能を有する任意のシステムおよび／またはデバイスを含む。１実施形態において、クライアント１１０は、以下の通信プロトコルおよび／またはトポロジー、すなわち、イーサネット（登録商標）ファブリックによるインターネット・スモール・コンピュータ・システム・インターフェース（ｉＳＣＳＩ）、Ｉｎｆｉｎｉｂａｎｄファブリックによるインターネット・スモール・コンピュータ・システム・インターフェース（ｉＳＣＳＩ）、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）、ＰＣＩエクスプレス（ＰＣＩｅ）、ＰＣＩエクスプレスファブリックによる不揮発性メモリエクスプレス（ＮＶＭｅ）、イーサネット（登録商標）ファブリックによる不揮発性メモリエクスプレス（ＮＶＭｅ）、およびＩｎｆｉｎｉｂａｎｄファブリックによる不揮発性メモリエクスプレス（ＮＶＭｅ）、の１若しくはそれ以上を使用してデータ・ストレージ・アレイ１０５と通信するように構成される。当業者は、本発明が上述したプロトコルおよび／またはファブリックに限定されないことを理解するであろう。
【００５０】
データ・ストレージ・アレイ１０５は、１若しくはそれ以上のＡＡＭｓ１２５ａ〜１２５ｎを含む。ＡＡＭｓ１２５ａ〜１２５ｎは、上述したプロトコルおよび／またはトポロジーの１若しくはそれ以上を使用してさまざまなクライアント１１０とインターフェースするように構成される。ＡＡＭｓ１２５ａ〜１２５ｎは、キャッシュストレージレイヤ１４０において配列された１若しくはそれ以上のＣＬＭｓ１３０ａ〜１３０ｎに動作可能に結合される。ＣＬＭｓ１３０ａ〜１３０ｎは、別個のＣＭｓ、ＬＭｓ、ＣＬＭｓ、およびそれらの任意の組み合わせを含む。
【００５１】
ＣＬＭｓ１３０ａ〜１３０ｎは、特に、キャッシュストレージレイヤ１４０にデータおよび／またはメタデータを格納し、メタデータルックアップサービスのようなデータルックアップサービスを提供するように構成される。メタデータは、ブロックメタデータ、ファイルメタデータ、構造メタデータ、および／またはオブジェクトメタデータを含むが、これに限定されない。ＣＬＭｓ１３０ａ〜１３０ｎは、デュアルインラインメモリモジュール（ＤＩＭＭｓ）、ダイナミック・ランダム・アクセス・メモリ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＤＲＡＭ）および／または他のメモリタイプを含むＤＩＭＭｓ、フラッシュベースのメモリエレメント、ハード・ディスク・ドライブ（ＨＤＤ）、および、ＩＯ要求とデータ格納処理とに対処するように動作可能なプロセッサコアを含むが、これに限定されない、さまざまなメモリおよびデータ・ストレージ・エレメントを含む。ＣＬＭｓ１３０ａ〜１３０ｎは、ボード（たとえば、プリント回路板（ＰＣＢ）、カード、ブレード、または他の同様の形態）として、別個のアセンブリ（たとえば、サーバブレード）として、またはそれらの任意の組み合わせとして、構成される。いくつかの実施形態によると、ＣＬＭｓ１３０ａ〜１３０ｎにおける１若しくはそれ以上のメモリエレメントは、データ・ストレージ・アレイ１０５内のキャッシュストレージを提供するように動作する。１実施形態において、キャッシュストレージレイヤ１４０内のキャッシュエントリは、複数のＣＬＭｓ１３０ａ〜１３０ｎにわたってまたがる。そのような実施形態において、テーブルエントリは、６つのＣＬＭｓのような複数のＣＬＭｓ１３０ａ〜１３０ｎにわたって分割されるので、キャッシュエントリが他の５つのＣＬＭＳの中にある場合、キャッシュエントリの１／６は特定のＣＬＭの中にない。別の実施形態において、テーブル（たとえば、アドレステーブル、ＬＰＴテーブル、等）は、「マスター」および「スレーブ」ＣＬＭｓ１３０ａ〜１３０ｎにおいて維持される。
【００５２】
図１Ｂに示されているように、各々のＡＡＭ１２５ａ〜１２５ｎは、一部または全部のＣＬＭｓ１３０ａ〜１３０ｎに動作可能に結合され、各々のＣＬＭは、一部または全部のＰＳＭｓ１２０ａ〜１２０ｎに動作可能に結合される。したがって、ＣＬＭｓ１３０ａ〜１３０ｎは、ＡＡＭｓ１２５ａ〜１２５ｎと永続ストレージレイヤ１５０内に格納されたデータとの間のインターフェースとして動作する。いくつかの実施形態によると、データ・ストレージ・アレイ１０５は、ストレージＰＳＭｓ１２０ａ〜１２０ｎ内の永続ストレージレイヤ１５０に格納された任意のデータがキャッシュストレージレイヤ１４０を通じてアクセスされるように構成される。
【００５３】
１実施形態において、データ書き込みは、データの年齢、データの使用の頻度、データに関連づけられたクライアントコンピューティングデバイス、データのタイプ（たとえば、ファイルタイプ、データの典型的な使用、等）、データのサイズ、および／またはそれらの任意の組み合わせを含むが、これに限定されない、１若しくはそれ以上のファクターに基づいて、キャッシュストレージレイヤ１４０にポストされ、永続ストレージレイヤ１５０にデステージされる。別の実施形態において、永続ストレージレイヤ１５０に格納されるがキャッシュストレージレイヤ１４０に格納されていないデータの読み出し要求は、データがクライアント１１０に提供される前に、ＰＳＭｓ１２０ａ〜１２０ｎにおける永続ストレージから取得され、ＣＬＭｓ１３０ａ〜１３０ｎに書き込まれる。そのようなものとして、いくつかの実施形態では、キャッシュストレージレイヤ１４０に少なくとも一時的に格納されているデータがない状態では、データが直接、永続ストレージレイヤ１５０へのデータの直接の書き込みまたは永続ストレージレイヤ１５０からのデータの直接の読み出しは行われない。ＡＡＭｓ１２５ａ〜１２５ｎのようなデータ・ストレージ・アレイ・コンポーネントは、ＰＳＭｓ１２０ａ〜１２０ｎとのインタラクションに対処するＣＬＭｓ１３０ａ〜１３０ｎとインタラクトする。このようにキャッシュストレージを使用することは特に、キャッシュストレージレイヤ１４０におけるデータへのアクセスのためのより短いレイテンシ時間を提供しながら、システムデータ・ストレージ・アレイ１０５の内部のＡＡＭｓ１２５ａ〜１２５ｎのようなより高いレベルのコンポーネントとデータ・ストレージ・アレイの外部のクライアント１１０とがキャッシュストレージおよび／またはその特定の動作を認識することなく動作することが可能である場合に、統一された制御を提供する。
【００５４】
ＡＡＭｓ１２５ａ〜１２５ｎは、１若しくはそれ以上のデータポートを通じてクライアントコンピューティングデバイス１１０と通信するように構成される。たとえば、ＡＡＭｓ１２５ａ〜１２５ｎは、トップオブラック（ＴＯＲ）スイッチのような１若しくはそれ以上のイーサネット（登録商標）スイッチ（図示せず）に動作可能に結合される。ＡＡＭｓ１２５ａ〜１２５ｎは、クライアントコンピューティングデバイス１１０からＩＯ要求を受信し、ＩＯトランザクションを完了させるためにデータ・ストレージ・アレイ１０５の他のハードウェアコンポーネントとの低レベルデータ動作に対処するように動作する。たとえば、ＡＡＭｓ１２５ａ〜１２５ｎは、読み出し要求に応答してＣＬＭ１３０ａ〜１３０ｎから受信されたデータを、クライアントコンピューティングデバイス１１０への提示のためにフォーマットする。別の例において、ＡＡＭｓ１２５ａ〜１２５ｎは、クライアントＩＯ要求を、２５６個の論理ブロックアドレス（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓｉｎｇ：ＬＢＡ）（約１２８キロバイト）ユニット動作のようなある特定のサイズのユニット動作へと集約するように動作する。以下においてより詳細に説明されるように、ＡＡＭｓ１２５ａ〜１２５ｎは、クライアントコンピューティングデバイス１１０へのデータ提示を管理するように構成されたプロセッサベースのコンポーネントと、ＰＳＭｓ１２０ａ〜１２０ｎのようなデータ・ストレージ・アレイ１０５の他のコンポーネントとインターフェースするように構成された集積回路ベースのコンポーネントとを含む。
【００５５】
いくつかの実施形態によると、ＡＡＭ１２５ａ〜１２５ｎ、ＣＬＭ１３０ａ〜１３０ｎ、および／またはＰＳＭ１２０ａ〜１２０ｎのような、プロセッサを有する各々のデータ・ストレージ・アレイ１０５モジュール（「プロセッサモジュール」）は、プロセッサモジュールの各々のペア間の通信のための少なくとも１つのＰＣＩｅ通信ポートを含む。１実施形態において、これらのプロセッサモジュールＰＣＩｅ通信ポートは、当業者に公知の非トランスペアレント（ｎｏｎ−ｔｒａｎｓｐａｒｅｎｔ：ＮＴ）モードで構成される。たとえば、ＮＴポートは、２つのプロセッサモジュール間のＮＴ通信ブリッジ（ＮＴ  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｂｒｉｄｇｅ：ＮＴＢ）を提供し、ブリッジの両サイドは、それら独自の独立アドレスドメインを有する。ブリッジの一方のサイドのプロセッサモジュールは、ブリッジのもう一方のサイドのプロセッサモジュールのメモリまたはＩＯ空間へのアクセスまたは可視性を有さない。ＮＴＢにわたる通信を実現するために、各々のエンドポイント（プロセッサモジュール）は、それらのローカルシステム（たとえば、レジスタ、メモリ位置、等）の一部にさらされた開放部を有する。１実施形態において、アドレスマッピングは、送信を行う各プロセッサが受信を行う各プロセッサの専用メモリ空間に書き込みを行なうように構成することができる。
【００５６】
さまざまな形態のデータ保護がデータ・ストレージ・アレイ１０５内で使用される。たとえば、ＣＬＭ１３０ａ〜１３０ｎ内に格納されたメタデータは、内部でミラーリングされる。１実施形態において、永続ストレージは、データ・ストレージ・アレイ１０５が、特に永続ストレージコンポーネント（たとえば、ＰＳＭｓおよび／またはそのコンポーネント）の多数の故障に耐えることを可能にするＮ＋Ｍ個のＲＡＩＤ保護を使用する。たとえば、Ｎ＋Ｍ個の保護は、９＋２個のＲＡＩＤ保護として構成される。１実施形態において、キャッシュストレージは、構成の単純さ、速度、およびコストを含む理由のために、Ｎ＋１個のＲＡＩＤ保護を使用する。Ｎ＋１個のＲＡＩＤ構成により、データ・ストレージ・アレイ１０５が１つのＣＬＭ１３０ａ〜１３０ｎの損失に耐えることが可能となる。
【００５７】
図２Ａは、第１の実施形態に係る例示的なＡＡＭを図示する。ＡＡＭ２０５は、データ・ストレージ・アレイに統合されるボード（たとえば、プリント回路板（ｐｒｉｎｔｅｄ  ｃｉｒｃｕｉｔ  ｂｏａｒｄ：ＰＣＢ）、カード、ブレード、または他の同様の形態）として構成される。図２Ａに示されているように、ＡＡＭは、ＡＡＭと、外部コンピューティングデバイスまたはネットワークデバイス（たとえば、外部コンピューティングデバイスに動作可能に結合されたネットワークスイッチ）のようなさまざまな外部デバイスおよびネットワークレイヤと、の間の通信を提供するように構成された通信ポート２２０ａ〜２２０ｎを含む。通信ポート２２０ａ〜２２０ｎは、ホストバスアダプタ（ｈｏｓｔ  ｂｕｓ  ａｄａｐｔｅｒ：ＨＢＡ）ポートまたはネットワーク・インターフェース・カード（ｎｅｔｗｏｒｋ  ｉｎｔｅｒｆａｃｅ  ｃａｒｄｓ：ＮＩＣ）ポートのような当業者に公知のさまざまな通信ポートを含む。例示的なＨＢＡポートは、ＱＬｏｇｉｃ  Ｃｏｒｐｏｔａｔｉｏｎ、Ｅｍｕｌｅｘ  Ｃｏｒｐｏｒａｔｉｏｎ、およびＢｒｏｃａｄｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．によって製造されたＨＢＡポートを含む。通信ポート２２０ａ〜２２０ｎの非限定的な例は、イーサネット（登録商標）、ファイバーチャネル、ファイバー・チャネル・オーバー・イーサネット（登録商標）（ｂｉｂｅｒ  ｃｈａｎｎｅｌ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ（登録商標）：ＦＣｏＥ）、ハイパーテキスト・トランスファー・プロトコル（ｈｙｐｅｒｔｅｘｔ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ：ＨＴＴＰ）、ＨＴＴＰオーバーイーサネット（登録商標）、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ：ＰＣＩｅ）（非トランスペアレントなＰＣＩｅポートを含む）、ＩｎｆｉｎｉＢａｎｄ、集積ドライブエレクトロニクス（ｉｎｔｅｇｒａｔｅｄ  ｄｒｉｖｅ  ｅｌｅｃｔｒｏｎｉｃｓ：ＩＤＥ）、シリアルＡＴアタッチメント（ｓｅｒｉａｌ  ＡＴ  ａｔｔａｃｈｍｅｎｔ：ＳＡＴＡ）、エクスプレスＳＡＴＡ（ｅｘｐｒｅｓｓ  ＳＡＴＡ：ｅＳＡＴＡ）、スモール・コンピュータ・システム・インターフェース（ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ：ＳＣＳＩ）、およびインターネットＳＣＳＩ（Ｉｎｔｅｒｎｅｔ  ＳＣＳＩ：ｉＳＣＳＩ）を含む。
【００５８】
１実施形態において、通信ポート２２０ａ〜２２０ｎの数は、必要とされる外部帯域幅に基づいて決定される。いくつかの実施形態によると、ＰＣＩｅは、データパス接続のために使用することができ、イーサネット（登録商標）は、データ・ストレージ・アレイ内の制御パス命令のために使用される。非限定的な例において、イーサネット（登録商標）は、ブート、診断、統計収集、更新、および／または他の制御機能のために使用される。イーサネット（登録商標）デバイスは、生成にわたりリンク速度を自動ネゴシエートすることができ、ＰＣＩｅ接続は、リンク速度およびデバイスレーン幅を自動ネゴシエートする。ＰＣＩｅおよびイーサネット（登録商標）が本明細書におけるデータ通信を提供するものとして説明されるが、１実施形態にしたがって動作することができる、現存するまたは将来開発される任意のデータ通信規格および／またはデバイスが本明細書において意図されるので、それらは例示目的であるに過ぎない。
【００５９】
イーサネット（登録商標）スイッチ、バス、および他の通信エレメントのようなイーサネット（登録商標）デバイスは、内部トラフィック（たとえば、内部データ・ストレージ・アレイ、ＡＡＭｓ、ＬＭｓ、ＣＭｓ、ＣＬＭｓ、ＰＳＭｓ、等）のためのトラフィックが特定のシステムの外に拡大しないよう、隔離される。したがって、内部インターネットプロトコル（Ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ：ＩＰ）アドレスは、可視であるよう特に構成されない限り、各々のそれぞれのコンポーネントの外に可視でない可能性がある。１実施形態において、通信ポート２２０ａ〜２２０ｎは、通信トラフィックをセグメント化するように構成される。
【００６０】
ＡＡＭ２０５は、特に、通信ポート２２０ａ、２２０ｎから受信されたＩＯ要求の通信を容易にし、および／または、ストレージ・エリア・ネットワーク（ｓｔｏｒａｇｅ  ａｒｅａ  ｎｅｔｗｏｒｋ：ＳＡＮ）プレゼンテーションレイヤに対処するように構成された、少なくとも１つのプロセッサ２１０を含む。プロセッサ２１０は、Ｉｎｔｅｌ（登録商標）Ｃｏｒｐｏｒａｔｉｏｎ、ＡＭＤ、等によって製造されたカスタム構成された１つのプロセッサまたは複数のプロセッサのような、さまざまなタイプのプロセッサを含む。１実施形態において、プロセッサ２１０は、ＩＡ−６４、すなわち、「Ｉｎｔｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ６４−ｂｉｔ」と時に呼ばれる、Ｉｎｔｅｌ（登録商標）のＥ５−２６００シリーズのサーバプロセッサとして構成される。
【００６１】
プロセッサ２１０は、たとえば、内部システム通信のためのイーサネット（登録商標）によって、１若しくはそれ以上のデータ・ストレージ・アレイ制御プレーンエレメント２１６ａ、２１６ｂに動作可能に結合される。プロセッサ２１０は、データ・ストレージ・アレイの動作中、さまざまなメモリ要求のためのメモリエレメント２３０ａ〜２３０ｄへのアクセスを有する。１実施形態において、メモリエレメント２３０ａ〜２３０ｄは、ダイナミック・ランダム・アクセス・メモリ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＤＲＡＭ）メモリエレメントを備える。いくつかの実施形態によると、プロセッサ２１０は、６４バイトのデータと、８バイトのエラー検査コード（ｅｒｒｏｒ  ｃｈｅｃｋｉｎｇ  ｃｏｄｅ：ＥＣＣ）またはシングル・エラー・コレクト、ダブル・エラー・ディテクト（ｓｉｎｇｌｅ  ｅｒｒｏｒ  ｃｏｒｒｅｃｔ，ｄｏｕｂｌｅ  ｅｒｒｏｒ  ｄｅｔｅｃｔ：ＳＥＣＤＥＤ）エラー検査を含むように構成されたＤＲＡＭを含む。
【００６２】
集積回路２１５ベースのコアが、プロセッサ２１０およびＣＬＭｓ（たとえば、図１における１３０ａ、１３０ｎ）のような内部ストレージシステムとの通信を容易にするためにＡＡＭ２０５内に配列される。いくつかの実施形態によると、集積回路２１５は、本明細書において説明される実施形態にしたがって動作するように構成されたフィールドプログラマブル・ゲート・アレイ（ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ：ＦＰＧＡ）を含む。集積回路２１５は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ：ＰＣＩｅ）または不揮発性メモリエクスプレス（ＮＶＭエクスプレスまたはｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ：ＮＶＭｅ）のようなさまざまな通信バス２１２を通じてプロセッサ２１０に動作可能に結合される。１実施形態において、通信バス２１２は、たとえば、少なくとも１００ギガバイト／秒のデータ送信速度をサポートすることができる８または１６レーンワイドなＰＣＩｅ接続を備える。
【００６３】
集積回路２１５は、データおよび／またはメタデータの読み出しおよび書き込み要求を含むＩＯ要求に関連づけられたデータのようなプロセッサ２１０からのデータを受信するように構成される。１実施形態において、集積回路２１５は、プロセッサ２１０からのデータをフォーマットするように動作する。集積回路２１５によって実行されるデータフォーマット機能の非限定的な例は、ストレージコンポーネントへの提示のためのプロセッサ２１０から受信されたデータのアラインメント、パディング（たとえば、Ｔ１０データインテグリティ特徴（Ｔ１０−ＤＩＦ）機能）、および／または、サイクリック冗長検査（ｃｙｃｌｉｃ  ｒｅｄｕｎｄａｎｃｙ  ｃｈｅｃｋｓ：ＣＲＣｓ）を生成することおよび／または検査することといったエラー検査特徴を含む。集積回路２１５は、Ｘｉｌｉｎｘ（登録商標），Ｉｎｃ．によって提供されるＦＰＧＡのＶｉｒｔｅｘ（登録商標）ファミリのような当業者に公知のさまざまなプログラマブルシステムを使用して実装される。
【００６４】
１若しくはそれ以上のトランシーバ２１４ａ〜２１４ｇは、ＡＡＭ２０５とＣＬＭのようなデータ・ストレージ・アレイのストレージコンポーネントとの間のリンクを提供するために集積回路２１５に動作可能に結合される。１実施形態において、ＡＡＭ２０５は、１若しくはそれ以上のトランシーバ２１４ａ〜２１４ｇを通じて、各々のストレージコンポーネント、たとえば、各々のＣＬＭ（たとえば、図１における１３０ａ、１３０ｎ）と通信する。トランシーバ２１４ａ〜２１４ｇは、各々のストレージコンポーネントへの約１つから約４つのリンクの８つのグループといったグループで配列される。
【００６５】
図２Ｂは、第２の実施形態に係る例示的なＡＡＭを図示する。図２Ｂに示されているように、ＡＡＭ２０５は、メモリエレメント２３０ａ〜２３０ｄ、たとえば、ＤＲＡＭメモリエレメントと動作可能に通信するプロセッサを含む。１実施形態によると、メモリエレメント２３０ａ〜２３０ｄの各々は、データチャネルとして構成され、たとえば、メモリエレメント２３０ａ〜２３０ｄはそれぞれ、データチャネルＡ〜Ｄとして構成される。プロセッサ２１０は、たとえば、通信ポート２２０（たとえば、ＨＢＡスロット）内に配列された１６レーンのＰＣＩｅバスを通じて、データ通信バスコネクタ２２５と動作可能に結合される。プロセッサ２１０はまた、外部デバイス、ネットワークレイヤ、等への通信を提供するように構成されたイーサネット（登録商標）ポート２６０に、イーサネット（登録商標）通信エレメント２４０を通じて動作可能に結合される。
【００６６】
ＡＡＭ２０５は、デュアル８レーンＰＣＩｅ通信バスを介してＰＣＩｅ通信スイッチまたはカード（たとえば、３２レーンのＰＣＩｅ通信スイッチ）といった通信スイッチ２３５を通じてプロセッサに動作可能に結合された集積回路２１５コアを含む。プロセッサ２１０は、１６レーンのＰＣＩｅ通信のような通信バスを通じて通信スイッチ２３５に動作可能に結合される。集積回路２１５はまた、１若しくはそれ以上のデータ通信パス２５０ａ〜２５０ｎを通じて、データ・ストレージ・エレメントのような外部エレメントに動作可能に結合される。
【００６７】
ＡＡＭ２０５およびそのコンポーネントの寸法は、空間、熱、コスト、および／またはエネルギーの制約のようなシステム要件および／または制約にしたがって構成される。たとえば、ＰＣＩｅカードのようなカードのタイプおよび使用されるプロセッサ２１０が、ＡＡＭ２０５のプロファイルに影響を有する。別の例において、いくつかの実施形態は、ＡＡＭ２０５が、ＡＡＭを冷却するための１若しくはそれ以上のファン２４５ａ〜２４５ｎおよび／またはデュアル・インライン・カウンタ回転（ｄｕａｌ  ｉｎ−ｌｉｎｅ  ｃｏｕｎｔｅｒ−ｒｏｔａｔｉｎｇ：ＤＩＣＲ）ファンのようなタイプのファンを含むことを提供する。ファンの数およびタイプは、ＡＡＭ２０５のプロファイルに影響を有する。
【００６８】
１実施形態において、ＡＡＭ２０５は、約３５０ミリメートル、約３７５ミリメートル、約４００ミリメートル、約４２５ミリメートル、約４５０ミリメートル、約５００ミリメートル、およびこれらの値の任意の２つの間の範囲（エンドポイントを含む）の長さ２１７を有する。１実施形態において、ＡＡＭ２０５は、約２５０ミリメートル、約２７５ミリメートル、約３００ミリメートル、約３１０ミリメートル、約３２５ミリメートル、約３５０ミリメートル、約４００ミリメートル、およびこれらの値の任意の２つの間の範囲（エンドポイントを含む）の高さ２１９を有する。１実施形態において、通信ポート２２０は、約１００ミリメートル、約１２５ミリメートル、約１５０ミリメートル、およびこれらの値の任意の２つの間の範囲（エンドポイントを含む）の高さ２２１を有する。
【００６９】
図２Ｃは、第３の実施形態に係る例示的なＡＡＭを図示する。図２Ｃに示されているように、ＡＡＭ２０５は、データ通信バスコネクタ２２５と通信するために通信スイッチ２９５を使用する。１実施形態において、通信スイッチ２９５は、プロセッサ２１０と通信スイッチ２９５間の１６レーン通信バスを有する３２レーンＰＣＩｅスイッチを備える。通信スイッチ２８５は、デュアル８レーン通信バスのような１若しくはそれ以上の通信バスを通じてデータ通信バスコネクタ２２５に動作可能に結合される。
【００７０】
図２Ｄは、第４の実施形態に係る例示的なＡＡＭを図示する。図２Ｄに示されているように、ＡＡＭ２０５は、さまざまな通信カードのための複数のライザー２８５ａ、２８５ｂを含む。１実施形態において、ライザー２８５ａ、２８５ｂは、ＰＣＩｅスロットのための少なくとも１つのライザーを含む。ライザー２８５ａ、２８５ｂの非限定的な例は、デュアルロープロファイルショートレングスのＰＣＩｅスロットのためのライザーを含む。ＡＡＭ２０５はまた、複数のデータ通信バスコネクタ２２５ａ、２２５ｂを含む。１実施形態において、データ通信バスコネクタ２２５ａ、２２５ｂは、ＰＣＩｅ第２世代（Ｇｅｎ２）規格を使用するように構成される。
【００７１】
図２Ｅは、第５の実施形態に係る例示的なＡＡＭを図示する。図２Ｅに示されているように、ＡＡＭ２０５は、１若しくはそれ以上のＣＬＭｓのようなストレージコンポーネントへの通信を提供するＰＣＩｅスイッチ２９５ａ〜２９５ｄのセットを備える。１実施形態において、ＰＣＩｅスイッチ２９５ａ〜２９５ｄのセットは、たとえば、４８レーンＰＣＩｅスイッチとしてのＰＣＩｅスイッチ２９５ａ、３２レーンＰＣＩｅスイッチとしてのＰＣＩｅスイッチ２９５ｂ、および２４レーンＰＣＩｅスイッチとしてのＰＣＩｅスイッチ２９５ｃによって構成された、ＰＣＩｅ第３世代（Ｇｅｎ３）スイッチを含む。図２Ｄに示されているように、ＰＣＩｅスイッチ２９５ｂは、プロセッサ２１０と集積回路２１５間の通信を容易にするように構成される。
【００７２】
いくつかの実施形態によると、ＰＣＩｅスイッチ２９５ａおよび２９５ｃは、コネクタ２７５を通じてストレージコンポーネントと通信し、特に、マルチプレクサ／デマルチプレクサ（ｍｕｘ／ｄｅｍｕｘ）機能を容易にするように構成される。１実施形態において、プロセッサ２１０は、８レーンＰＣＩｅ  Ｇｅｎ３規格バスを通じてイーサネット（登録商標）通信エレメント２４０と通信するように構成される。データ・ストレージ・アレイが複数のＡＡＭｓ２０５を含む実施形態のために、各々のＡＡＭの集積回路２１５は、少なくとも部分的には１若しくはそれ以上の専用制御／シグナリングチャネル２０１を通じて、他のＡＡＭに動作可能に結合される。
【００７３】
図２Ｆは、第６の実施形態に係る例示的なＡＡＭを図示する。図２Ｆに示されているように、ＡＡＭ２０５は、複数のプロセッサ２１０ａ、２１０ｂを含む。プロセッサツープロセッサ通信チャネル２０９が、プロセッサ２１０ａ、２１０ｂを相互接続する。プロセッサ２１０ａ、２１０ｂが、米国カリフォルニア州Ｓａｎｔａ  ＣｌａｒａのＩｎｔｅｌ（登録商標）  Ｃｏｒｐｏｒａｔｉｏｎによって製造されたＩＡ−６４アーキテクチャプロセッサのようなＩｎｔｅｌ（登録商標）プロセッサである実施形態において、プロセッサツープロセッサ通信チャネル２０９は、ＱｕｉｃｋＰａｔｈインターコネクト（ＱｕｉｃｋＰａｔｃｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ：ＱＰＩ）通信チャネルを備える。
【００７４】
プロセッサ２１０ａ、２１０ｂの各々は、メモリエレメント２３０ａ〜２３０ｈのセットと動作可能に接続する。メモリエレメント２３０ａ〜２３０ｈは、プロセッサ２１０ａ、２１０ｂのためのメモリチャネルとして構成される。たとえば、メモリエレメント２３０ａ〜２３０ｄは、プロセッサ２１０ｂのためのメモリチャネルＡ〜Ｄを形成する一方で、メモリエレメント２３０ｅ〜２３０ｈは、プロセッサ２１０ａのためのメモリチャネルＥ〜Ｈを形成し、各々のチャネルに対し１つのＤＩＭＭである。
【００７５】
いくつかの実施形態によると、ＡＡＭ２０５は、ソフトウェア制御ＡＡＭとして構成される。たとえば、プロセッサ２１０ｂは、プロセッサ２１０ａに通信される情報および／またはコマンドの転送によることを含む、本明細書において説明される実施形態に係るＡＡＭ２０５のさまざまな動作可能な機能を制御するように構成されたソフトウェアを実行する。
【００７６】
図２Ｆに示されているように、いくつかの実施形態は、ＡＡＭ２０５がＡＡＭボード上に電力回路２１３を直接的に含むことを提供する。複数の通信接続２０３、２０７ａ、２０７ｂが、ＡＡＭをさまざまなデータ・ストレージ・アレイ・コンポーネント、外部デバイス、および／またはネットワークレイヤに接続するために提供される。たとえば、通信接続２０７ａおよび２０７ｂは、イーサネット（登録商標）接続を提供し、通信接続２０３は、たとえば各々のＣＬＭへの、ＰＣＩｅ通信を提供する。
【００７７】
図２Ｇは、第７の実施形態に係る例示的なＡＡＭを図示する。図２ＧのＡＡＭ２０５は、図２Ａ〜図２Ｆにおける集積回路２１５のような集積回路なしに動作するソフトウェア制御ＡＡＭとして構成される。プロセッサ２１０ａは、通信接続２０７ａ、２０７ｂによるストレージコンポーネント（たとえば、ＬＭｓ、ＣＭｓ、および／またはＣＬＭｓ）との通信を容易にする１若しくはそれ以上の通信スイッチ２９５ｃ、２９５ｄに動作可能に結合される。１実施形態において、通信スイッチ２９５ｃ、２９５ｄは、１６レーンＰＣＩｅバス（たとえば、ＰＣＩｅ  Ｇｅｎ３規格を使用する）を通じてプロセッサ２１０ａに接続された３２レーンＰＣＩｅスイッチを含む。
【００７８】
図３Ａは、第１の実施形態に係る例示的なＣＬＭを図示する。ＣＬＭ３０５は、メモリエレメント３２０ａ〜３２０ｌに動作可能に結合されたプロセッサ３１０を含む。いくつかの実施形態によると、メモリエレメント３２０ａ〜３２０ｌは、プロセッサ３１０のための１若しくはそれ以上のメモリチャネルにおいて配列されたＤＩＭＭおよび／またはフラッシュ・メモリ・エレメントを含む。たとえば、メモリエレメント３２０ａ〜３２０ｃは、メモリチャネルＡを形成し、メモリエレメント３２０ｄ〜３２０ｆは、メモリチャネルＢを形成し、メモリエレメント３２０ｇ〜３２０ｉは、メモリチャネルＣを形成し、メモリエレメント３２０ｊ〜３２０ｌは、メモリチャネルＤを形成する。メモリエレメント３２０ａ〜３２０ｌは、ＣＬＭ３０５のためのキャッシュストレージとして構成され、したがって、データ・ストレージ・アレイにおけるＣＬＭｓの数に依存して、データ・ストレージ・アレイのためのキャッシュストレージの少なくとも一部を提供する。ＣＬＭ３０５のコンポーネントはハードウェアコンポーネントとして図示されるが、実施形態はそのように限定されない。実際、プロセッサ３１０のようなＣＬＭ３０５のコンポーネントは、ソフトウェア、ハードウェア、またはその組み合わせで実現される。
【００７９】
１実施形態において、メモリエレメント３２０ａ〜３２０ｃにおけるストレージエントリは、１６キロバイトのサイズで構成される。１実施形態において、ＣＬＭ３０５は、キャッシュ物理アドレス、フラッシュストレージ物理アドレス、および極めて重要な状態を示すように構成されたタグを格納する、論理物理テーブル（ｌｏｇｉｃａｌ  ｔｏ  ｐｈｙｓｉｃａｌ  ｔａｂｌｅ：ＬＰＴ）を格納する。各々のＬＰＴエントリは、６４ビットといったさまざまなサイズであり得る。
【００８０】
プロセッサ３１０は、イーサネット（登録商標）通信エレメント３１５と動作可能に結合されるように構成された、Ｉｎｔｅｌ（登録商標）ＩＡ−６４アーキテクチャプロセッサのようなさまざまなプロセッサを含む。イーサネット（登録商標）通信エレメント３１５が、たとえば、ブート、システム制御、等のための内部通信を提供するためにＣＬＭ３０５により使用される。プロセッサ３１０はまた、通信バス３２５、３３０を通じて他のストレージコンポーネントに動作可能に結合される。図３Ａに図示された実施形態において、通信バス３２５は、永続ストレージ（たとえば、図１Ａおよび図１Ｂの永続ストレージレイヤ１５０、いくつかの実施形態に係る例示的な永続ストレージについては図５Ａ〜図５Ｄを参照）への１６レーンＰＣＩｅ通信接続として構成される一方で、通信バス３３０は、ストレージコンポーネントへの８レーンＰＣＩｅ通信接続として構成される。１実施形態において、通信バス３２５、３３０は、ＰＣＩｅ  Ｇｅｎ３規格を使用する。接続エレメント３３５は、ＣＬＭ３０５のさまざまな通信パス（たとえば、３２５、３３０、およびイーサネット（登録商標））と外部デバイス、ネットワークレイヤ、等との間の接続を提供するために含まれる。
【００８１】
図２Ａ〜図２Ｆに図示されたＡＡＭ２０５のようなＡＡＭは、クライアントＩＯ要求を容易にするためにＣＬＭ３０５に動作可能に接続される（１実施形態に係るＡＡＭｓとＣＬＭｓ間の接続については図７Ａを参照、ＡＡＭとＣＬＭ間の読み出しおよび書き込みの動作のような動作については図９〜図１１を参照）。たとえば、ＡＡＭは、イーサネット（登録商標）通信エレメント３１５によってサポートされたイーサネット（登録商標）を通じてＣＬＭ３０５と通信する。
【００８２】
ＡＡＭと同様に、ＣＬＭ３０５は、空間要件および必要とされるコンポーネントのサイズといった１若しくはそれ以上のファクターに基づいてある特定の寸法を有する。１実施形態において、ＣＬＭ３０５の長さ３１７は、約３２８ミリメートルであり得る。別の実施形態において、ＣＬＭ３０５の長さ３１７は、約２７５ミリメートル、約３００ミリメートル、約３２５ミリメートル、約３５０ミリメートル、約３７５ミリメートル、約４００ミリメートル、約４２５ミリメートル、約４５０ミリメートル、約５００ミリメートル、約５５０ミリメートル、約６００ミリメートル、およびこれらの値の任意の２つの間の範囲（エンドポイントを含む）であり得る。１実施形態において、ＣＬＭ３０５の高さ３１９は、約１５０ミリメートル、約１７５ミリメートル、約２００ミリメートル、約２２５ミリメートル、約２５０ミリメートル、およびこれらの値の任意の２つの間の範囲（エンドポイントを含む）であり得る。
【００８３】
ＣＬＭ３０５のコンポーネントは、特に、サイズおよび動作要件に依存して、さまざまな寸法および間隔を有する。１実施形態において、メモリエレメント３３０ａ〜３３０ｂの各々は、約１６５ミリメートルの開放された長さ（たとえば、スロットにおいてメモリエレメントを保持するために使用されるクリップが、拡張された開放位置にある）および約１４８ミリメートルの閉鎖された長さを有するスロットまたはコネクタにおいて配列される。メモリエレメント３３０ａ〜３３０ｂ自体は、約１３３ミリメートルの長さを有する。スロットは、その縦方向の長さに沿って約６．４ミリメートル離される。１実施形態において、スロット３２１のチャネルエッジ間の距離は、プロセッサ３１０の冷却および通信ルーティングを提供するために約９２ミリメートルであり得る。
【００８４】
図３Ｂは、第２の実施形態に係る例示的なＣＬＭを図示する。図３Ｂに示されているように、ＣＬＭ３０５は、ある特定の動作機能を行うように構成された集積回路３４０を含む。ＣＬＭ３０５はまた、ＣＬＭを動作させるために必要とされる電力の少なくとも一部を提供するように構成された電力回路３４５を含む。
【００８５】
１実施形態において、集積回路３４０は、特に、データの冗長性および／またはエラー検査機能を提供するように構成されたＦＰＧＡを含む。たとえば、集積回路３４０は、永続ストレージおよび／またはメモリエレメント３３０ａ〜３３０ｂに格納されたデータのような、ＣＬＭ３０５に関連づけられたデータのためのＲＡＩＤおよび／または前方エラー検査（ｆｏｒｗａｒｄ  ｅｒｒｏｒ  ｃｈｅｃｋｉｎｇ：ＦＥＣ）機能を提供する。データの冗長性および／またはエラー検査機能は、さまざまなデータ保護技法にしたがって構成される。たとえば、９つの論理データ「列」が存在する実施形態において、集積回路３４０は、Ｘ個の追加の列を生成するように動作するので、９＋Ｘ個の列のうちのＸ個の列のいずれかが失われ、遅延し、またはそうでなければ利用不可能である場合に元の９列に格納されたデータが再構成される。シングルパリティのみが用いられる（たとえば、列の数Ｘ＝１である）ＣＬＭ３０５の初期ブート中、データは、プロセッサ３１０によって実行されるソフトウェアを使用して生成される。１実施形態において、ソフトウェアがまた、たとえばＣＬＭ３０５に関連づけられた永続ストレージのための、プロセッサ３１０によるＰ／Ｑパリティを実現するために提供される。
【００８６】
通信スイッチ３５０ａおよび３５０ｂが、ＣＬＭ３０５のコンポーネント間の通信を容易にするために含まれ、さまざまな通信プロトコルを使用し、さまざまなサイズ（たとえば、通信レーン、帯域幅、スループット、等）をサポートするように構成される。たとえば、通信スイッチ３５０ａおよび３５０ｂは、２４、３２、および／または４８レーンＰＣＩｅスイッチのようなＰＣＩｅスイッチを含む。通信スイッチ３０５ａおよび３５０ｂのサイズおよび構成は、要求されるデータスループット速度、電力消費、空間の制約、エネルギーの制約、および／または利用可能なリソースを含むがこれに限定されない、さまざまなファクターに依存する。
【００８７】
接続エレメント３３５ａは、ＣＬＭ３０５とＡＡＭ間の通信接続を提供する。１実施形態において、接続エレメント３３５ａは、ＰＣＩｅ  Ｇｅｎ３規格を使用するように構成された８レーンＰＣＩｅ接続を含む。接続エレメント３３５ｂおよび３３５ｃは、ＣＬＭ３０５と永続ストレージエレメント間の通信接続を提供する。１実施形態において、接続エレメント３３５ｂおよび３３５ｃは、各々が２つのレーンを有する８レーンＰＣＩｅ接続を含む。いくつかの実施形態は、ある特定の接続が、永続ストレージと通信するために使用されないが、たとえば、制御信号のために使用されることを提供する。
【００８８】
図３Ｃは、第３の実施形態に係る例示的なＣＬＭを図示する。ＣＬＭ３０５は、プロセッサツープロセッサ通信チャネル３５５を通じて互いに動作可能に結合された複数のプロセッサ３１０ａ、３１０ｂを含む。プロセッサ３１０ａ、３１０ｂがＩＡ−６４アーキテクチャプロセッサのようなＩｎｔｅｌ（登録商標）プロセッサである実施形態において、プロセッサツープロセッサ通信チャネル３５５は、ＱＰＩ通信チャネルを備える。１実施形態において、プロセッサ３１０ａ、３１０ｂは、より多くのプロセッシングおよびメモリリソースを提供するために同様の手法で動作するように構成される。別の実施形態において、プロセッサ３１０ａ、３１０ｂの１つは、他のプロセッサおよび／またはＣＬＭ３０５の他のコンポーネントのための少なくとも部分的なソフトウェア制御を提供するように構成される。
【００８９】
図３Ｄは、第４の実施形態に係る例示的なＣＬＭを図示する。図３Ｄに示されているように、ＣＬＭ３０５は、２つのプロセッサ３１０ａ、３１０ｂを含む。プロセッサ３１０ａは、通信接続３３５ａを通じて集積回路３４０とデータ・ストレージ・アレイ内のＡＡＭｓとに動作可能に結合される。プロセッサ３１０ｂは、通信接続３３５ｂおよび３３５ｃを通じて永続ストレージに動作可能に結合される。図３Ｄに示されたＣＬＭ３０５は、データ・ストレージ・アレイのＡＡＭｓがキャッシュ・ストレージ・サブシステムに対し有するように、永続ストレージへの増大した帯域幅（たとえば、２倍の帯域幅）を提供するように動作する。この構成は特に、たとえば、プライマリアクティブティがキャッシュ・ストレージ・サブシステムへのデータの読み出しと書き込みを含むのでデータ転送に起因する永続ストレージを含む動作のためのレイテンシを最小化するように動作する。
【００９０】
図４Ａは、第１の実施形態に係る例示的なデータ・ストレージ・アレイの一部の上面図を図示する。図４Ａに示されているように、データ・ストレージ・アレイ４００の一部の上面図４０５は、永続ストレージエレメント４１５ａ〜４１５ｊを含む。いくつかの実施形態によると、永続ストレージエレメント４１５ａ〜４１５ｊは、ＰＳＭｓ、フラッシュ・ストレージ・デバイス、ハード・ディスク・ドライブ・ストレージ・デバイス、および他の形態の永続ストレージ（いくつかの実施形態に係る例示的な形態の永続ストレージについては図５Ａ〜図５Ｄを参照）を含むが、これに限定されない。データ・ストレージ・アレイ４００は、さまざまな配列において構成された複数の永続ストレージエレメント４１５ａ〜４１５ｊを含む。１実施形態において、データ・ストレージ・アレイ４００は、少なくとも２０個の永続ストレージエレメント４１５ａ〜４１５ｊを含む。
【００９１】
データは、さまざまな方法にしたがって永続ストレージエレメント４１５ａ〜４１５ｊに格納される。１実施形態において、データは、未使用のストレージがシステム（たとえば、フラッシュメモリ）性能を改善する「シンプロビジョニング」を使用して格納され、生のストレージは、それがデータアドミニストレーションにおける効率をもたらす場合に「オーバーサブスクライブ」される。シンプロビジョニングは、部分的には、データスナップショットを得ることと、最も古いデータの少なくとも一部をプルーニングすることによって、実現される。
【００９２】
データ・ストレージ・アレイ４００は、永続ストレージエレメント４１５ａ〜４１５ｊに動作可能に結合された複数のＣＬＭ４１０ａ〜４１０ｆを含む（いくつかの実施形態に係るＣＬＭｓと永続ストレージエレメント間の例示的な接続については図６、図７Ｂ、および図７Ｃを参照）。永続ストレージエレメント４１５ａ〜４１５ｊは、ＣＬＭｓ４１０ａ〜４１０ｆのアクセスを協調し、その各々は、データが永続ストレージエレメント４１５ａ〜４１５ｊに書き込まれること、および／または、永続ストレージエレメント４１５ａ〜４１５ｊから読み出しされることを要求する。いくつかの実施形態によると、データ・ストレージ・アレイ４００は、永続ストレージエレメント４１５ａ〜４１５ｊを含まない場合があり、データストレージのためにＣＬＭｓ４１０ａ〜４１０ｆによって実現されるキャッシュストレージを使用する。
【００９３】
図４Ａ〜図４Ｄに図示されているように、各々のＣＬＭ４１０ａ〜４１０ｆは、データ・ストレージ・アレイ４００内にデータを格納するように構成されたメモリエレメントを含む。これらのメモリエレメントは、データ・ストレージ・アレイ４００のためのキャッシュストレージとして構成される。１実施形態において、データは、ＣＬＭｓ４１０ａ〜４１０ｆにわたりミラーリングされる。たとえば、データおよび／またはメタデータは、少なくとも２つのＣＬＭｓ４１０ａ〜４１０ｆにわたりミラーリングされる。１実施形態において、ミラーリングされたＣＬＭｓ４１０ａ〜４１０ｆの一方は、「パッシブ」でありる一方で、もう一方は、「アクティブ」である。１実施形態において、メタデータは、６４バイトのデータのようなデータのキャッシュラインとして構成された１若しくはそれ以上のメタデータテーブルに格納される。
【００９４】
いくつかの実施形態によると、データは、ＣＬＭｓ４１０ａ〜４１０ｆ内のさまざまなＲＡＩＤ構成にしたがって格納される。たとえば、キャッシュに格納されたデータは、すべてのＣＬＭｓ４１０ａ〜４１０ｆにわたるシングルパリティＲＡＩＤに格納される。６つのＣＬＭｓ４１０ａ〜４１０ｆが存在する実施形態では、４＋１個のＲＡＩＤが６つのＣＬＭｓのうちの５つにわたって使用される。このパリティ構成は、各々のＣＬＭ４１０ａ〜４１０ｆが少なくとも１つのミッシングＣＬＭ４１０ａ〜４１０ｆに耐えることが可能であり得るので、単純さ、速度、コストオーバーヘッドのために最適化される。
【００９５】
複数のＡＡＭｓ４２０ａ〜４２０ｄは、ＣＬＭｓ４１０ａ〜４１０ｆのいずれかのサイドのデータ・ストレージ・アレイ内に配列される。１実施形態において、ＡＡＭｓ４２０ａ〜４２０ｄは、フェデレーテッドクラスタとして構成される。ファン４２５ａ〜４２５ｊのセットが、データ・ストレージ・アレイを冷却するためにデータ・ストレージ・アレイ４００内に配置される。いくつかの実施形態によると、ファン４２５ａ〜４２５ｊは、データ・ストレージ・アレイの「アクティブゾーン」（たとえば、ハイ・ヒート・ゾーン）の少なくとも一部内に配置される。１実施形態において、ファンの制御および監視は、システム内のトレース長の影響を最小化しながら、非常に小さい制御ボードへの低速信号によって行われる。１実施形態は、図４Ａ〜図４Ｄにおけるコンポーネントの配列に限定されず、というのもこれらは例示目的であるに過ぎないからである。たとえば、ＡＡＭｓ４２０ａ〜４２０ｄの１若しくはそれ以上はＣＬＭｓ４１０ａ〜４１０ｆの１若しくはそれ以上の間に設置され、ＣＬＭｓはＡＡＭｓの外部に設置される、といった具合である。
【００９６】
永続ストレージエレメント４１５ａ〜４１５ｊ、ＣＬＭｓ４１０ａ〜４１０ｆ、およびＡＡＭｓ４２０ａ〜４２０ｄの数および／またはタイプは、データアクセス要件、コスト、効率、熱出力の制限、利用可能なリソース、空間の制約、および／またはエネルギーの制約といったさまざまなファクターに依存する。図４Ａに示されているように、データ・ストレージ・アレイ４００は、４つのＡＡＭｓ４２０ａ〜４２０ｄ間に設置された６つのＣＬＭ４１０ａ〜４１０ｆを含み、６つのＣＬＭｓの各々のサイドに２つのＡＡＭｓである。１実施形態において、データ・ストレージ・アレイは、４つのＡＡＭｓ４２０ａ〜４２０ｄ間に設置された６つのＣＬＭｓ４１０ａ〜４１０ｆを含み、永続ストレージエレメント４１５ａ〜４１５ｊを含まない。永続ストレージエレメント４１５ａ〜４１５ｊは、ＣＬＭｓ４１０ａ〜４１０ｆおよびＡＡＭｓ４２０ａ〜４２０ｄの反対のサイドに配置され、ファン４２５ａ〜４２５ｊがそれらの間に設置される。ミッドプレーン４７７のようなミッドプレーンが、ＡＡＭ４２０ａ〜４２０ｊ（図４Ｄでは４２０ａのみが可視である）とＣＬＭｓ４１０ａ〜４１０ｆ（図示せず）との間、および／または、ＣＬＭｓと永続ストレージエレメント４１５ａ〜４１５ｔとの間といった、さまざまなコンポーネント間のデータフローを容易にするために使用される。いくつかの実施形態によると、複数のミッドプレーンが、単一のミッドプレーンとして効率的に動作するように構成される。
【００９７】
いくつかの実施形態によると、各々のＣＬＭ４１０ａ〜４１０ｆは、その一部が「プライマリ」ＣＬＭを含むアドレス空間を有する。「マスター」ＣＬＭ４１０ａ〜４１０ｆがアクティブである場合、それが「プライマリ」であり、そうでなければ、アドレスのための「スレーブ」がプライマリである。ＣＬＭ４１０ａ〜４１０ｆは、特定のアドレス空間にわたって「プライマリ」ＣＬＭであり得、それは、静的であるか、または、データ・ストレージ・アレイ４００の動作条件に基づいて動的に変化する。
【００９８】
１実施形態において、キャッシュストレージにおけるデータが基礎をなす永続ストレージにおける全ページを無効にした場合、データおよび／またはページ「無効」メッセージが永続ストレージエレメント４１５ａ〜４１５ｊに送られる。データ「無効メッセージ」は、エントリを全体的にオーバーライトするクライアントデバイス、または、クライアントによる部分的な書き込みおよび永続ストレージから読み出しされた以前のデータによってドライブされ、ランダム・オーダリング・スキームを含むさまざまなオーダリングスキームにしたがって永続ストレージエレメント４１５ａ〜４１５ｊに進む。
【００９９】
データおよび／またはページ読み出し要求は、クライアントアクティビティによってドライブされ、ランダム・オーダリング・スキームを含むさまざまなオーダリングスキームにしたがって、ＣＬＭｓ４１０ａ〜４１０ｆおよび／または永続ストレージエレメント４１５ａ〜４１５ｊに進む。永続ストレージエレメント４１５ａ〜４１５ｊへのデータおよび／またはページの書き込みは、各々のＣＬＭ４１０ａ〜４１０ｆにより独立して、それが「プライマリ」ＣＬＭ４１０ａ〜４１０ｆであるアドレス空間にわたりドライブされる。永続ストレージエレメント４１５ａ〜４１５ｊのフラッシュカード（または「バレット」）に書き込まれているデータは、フラッシュカードおよび／または永続ストレージエレメントにバッファされる。
【０１００】
いくつかの実施形態によると、書き込みは、各々の永続ストレージエレメント４１５ａ〜４１５ｊの「論理ブロック」上で行われる。たとえば、各々の論理ブロックは、シーケンシャルに書き込まれる。各永続ストレージエレメント４１５ａ〜４１５ｊ上の複数の論理ブロックが、各ＣＬＭ４１０ａ〜４１０ｆからの書き込みのために同時および並列的に。空き状態になっていてもよい。書き込み要求は、論理ブロックに沿ったアドレスと、データが書き込まれるであろう論理ブロック内の意図されたページと、の両ＣＬＭ４１０ａ〜４１０ｆビューを指定するように構成される。「論理ページ」は、イニシャルの書き込みのための永続ストレージエレメント４１５ａ〜４１５ｊによる再マッピングを要求しないべきである。永続ストレージエレメント４１５ａ〜４１５ｊは、書き込み待ち状態のデータを、任意の「プライマリ」ＣＬＭ４１０ａ〜４１０ｆからそれが（最終的に）書き込まれるであろうフラッシュカードに直接転送する。したがって、永続ストレージエレメント４１５ａ〜４１５ｊにおけるバッファリングがフラッシュカードへの書き込みの前に必要とされない。
【０１０１】
各々のＣＬＭ４１０ａ〜４１０ｆは、永続ストレージエレメント４１５ａ〜４１５ｊにより提示された論理ブロックに、たとえば、すべての論理ブロック、または限定された部分にのみ書き込むことができる。ＣＬＭ４１０ａ〜４１０ｆは、処理中の各々の論理ブロックにおいて書き込みが可能なページ数を特定するように構成される。１実施形態において、ＣＬＭ４１０ａ〜４１０ｆは、それらのそれぞれのキャッシュストレージにおけるデータを保持するすべてのＣＬＭｓが永続ストレージ（たとえば、永続ストレージエレメント４１５ａ〜４１５ｆのフラッシュカード）に並行して送ると、書き込みを開始する。永続ストレージエレメント４１５ａ〜４１５ｊ（または、永続ストレージエレメントのフラッシュカード）への実際の書き込みのタイミングは、永続ストレージエレメント４１５ａ〜４１５ｊおよび／またはフラッシュカードおよび／またはそれに関連づけられたハード・ディスク・ドライブによって管理される。フラッシュカードは、異なるブロックにおける異なる数のページによって構成される。このように、永続ストレージエレメント４１５ａ〜４１５ｊが書き込まれる論理ブロックを割り当てると、永続ストレージエレメントは、永続ストレージエレメント４１５ａ〜４１５ｊによってそれぞれのフラッシュカードのために使用される論理ブロックにマッピングされた論理ブロックを提供する。永続ストレージエレメント４１５ａ〜４１５ｊまたはフラッシュカードは、いつ書き込みをコミットするかを決定する。１ブロックについて完全に書き込みされていないデータ（たとえば、３ｂ／ｃフラッシュの１フラッシュダイにおける１ブロックあたり６ページの書き込み）に、永続ストレージエレメント４１５ａ〜４１５ｊまたはフラッシュカード上のキャッシュによってサービスが提供される。
【０１０２】
いくつかの実施形態によると、ＣＬＭｓ４１０ａ〜４１０ｆとフラッシュカード間のテーブルの再マッピングが、論理または物理ブロックレベルで行われる。そのような実施形態において、再マッピングされたテーブルは、フラッシュカード上に残り、ページレベルの再マッピングは、フラッシュカード上の実際のフラッシュチップ上で要求されない（いくつかの実施形態に係るフラッシュチップを含むフラッシュカードの例示的な実施形態については図５Ｄ〜図５Ｆを参照）。
【０１０３】
１実施形態において、「ＣＬＭページ」が、特にガーベッジコレクションのようなメモリ管理機能を容易にするために、提供される。永続ストレージエレメント４１５ａ〜４１５ｊが物理メモリ（たとえば、物理フラッシュメモリ）におけるページのためのガーベッジ・コレクション・イベントに対処する場合、それは単に、たとえば、以前は位置Ｙにあった論理ページＸが現在は位置ＺにあることをＣＬＭ４１０ａ〜４１０ｆに通知する。加えて、永続ストレージエレメント４１５ａ〜４１５ｊが、ガーベッジ・コレクション・イベントによってどのデータが管理される（たとえば、削除されるまたは移動させられる）かをＣＬＭ４１０ａ〜４１０ｆに通知するので、ＣＬＭ４１０ａ〜４１０ｆは、それが「ダーティ」または変更されたデータ（データが再書き込みされる場合）の読み出しを所望することを任意の永続ストレージエレメント４１５ａ〜４１５ｊに通知する。１実施形態において、永続ストレージエレメント４１５ａ〜４１５ｊは、スレーブと同期するＣＬＭであるマスターＣＬＭ４１０ａ〜４１０ｆを更新する必要があるのみである。
【０１０４】
永続ストレージエレメント４１５ａ〜４１５ｊは、ガーベッジ・コレクション・ディシジョンをドライブするように構成されるデータおよび／またはページ「無効」メッセージを受信する。たとえば、永続ストレージエレメント４１５ａ〜４１５ｊは、ガーベッジコレクションをサポートするために「ページ有効」データを追跡するためのフラッシュカードを活用する。別の例において、無効メッセージは、必要とされる任意のブロック再マッピングを調節しながら、永続ストレージエレメント４１５ａ〜４１５ｊからフラッシュカードへと通過する。
【０１０５】
１実施形態において、永続ストレージエレメント４１５ａ〜４１５ｊは、読み出しおよび書き込みの両方がＣＬＭ４１０ａ〜４１０ｆによってドライブされないフラッシュカードから／フラッシュカードに行われる「ページレベルのガーベッジコレクション」を調整する。ページレベルのガーベッジコレクションにおいて、フリーブロックの数が所与のしきい値未満である場合、ガーベッジ・コレクション・イベントが開始される。ブロックが、ブロック上でガーベッジコレクションを行うためのコスト（たとえば、データがより有効でないと、空間をフリーにするコストがより低い）、ブロック上でガーベッジコレクションを行う利点（たとえば、利点が、より古いデータのためのより高い利点が存在するようデータの年齢に基づいて利点をスケーリングすることを含むさまざまな方法にしたがって測定される）、およびその組み合わせを含む、さまざまな処理にしたがってガーベッジコレクションのために選択される。
【０１０６】
１実施形態において、ガーベッジコレクションによる書き込みが、新たなブロック上で行われる。ガーベッジコレクションにより任意の時点で複数のブロックにおいて読み出しおよび書き込みの処理が進行中であってもよい。ガーベッジコレクションによる「移動」が完了したとき、永続ストレージエレメント４１５ａ〜４１５ｊは、以前位置Ｙにあった論理ページＸが現在は位置ＺにあることをＣＬＭ４１０ａ〜４１０ｆに通知する。移動が完了する前、ＣＬＭ４１０ａ〜４１０ｆは、データがそこで有効であった場合、「失効」位置に後の読み出し要求を送信する。ガーベッジ・コレクション・アイテムに送られる「ページ無効」メッセージは、「新たな」位置を除去するように管理される（たとえば、データが実際に書き込みされていた場合）。
【０１０７】
データ・ストレージ・アレイ４００は、さまざまなシーケンスにおいてブートアップするように構成される。いくつかの実施形態によると、データ・ストレージ・アレイは、以下のシーケンス、すなわち、（１）各々のＡＡＭ４２０ａ〜４２０ｄ、（２）各々のＣＬＭ４１０ａ〜４１０ｆ、および（３）各々の永続ストレージエレメント４１５ａ〜４１５ｊにおいてブートアップする。１実施形態において、各々のＡＡＭ４２０ａ〜４２０ｄは、それ独自のローカルストレージからブートするか、または、ローカルストレージが存在または機能しない場合、各々のＡＡＭ４２０ａ〜４２０ｄは、イーサネット（登録商標）を介して別のＡＡＭからブートする。１実施形態において、各々のＣＬＭ４１０ａ〜４１０ｆは、イーサネット（登録商標）を介してＡＡＭ４２０ａ〜４２０ｄからブートアップする。１実施形態において、各々の永続ストレージエレメント４１５ａ〜４１５ｊは、ＣＬＭｓ４１０ａ〜４１０ｆにおけるスイッチにより、イーサネット（登録商標）を介してＡＡＭ４２０ａ〜４２０ｄからブートアップする。
【０１０８】
１実施形態において、システムシャットダウン中、任意の「ダーティ」または変更されたデータおよびすべてのシステムメタデータは、永続ストレージエレメント４１５ａ〜４１５ｊに、たとえば、フラッシュカードまたはハード・ディスク・ドライブに書き込まれる。永続ストレージエレメント４１５ａ〜４１５ｊにデータを書き込むことは、たとえば、より高い書き込み帯域幅のための、「シングルレベル」ページとして維持された論理ブロック上で行われる。システムの再起動時、「シャットダウン」ブロックは、永続ストレージエレメント４１５ａ〜４１５ｊから再読み出しされる。１実施形態において、システムレベルのパワーダウンは、永続ストレージエレメント４１５ａ〜４１５ｊにおけるデータを、より高いパフォーマンスレベルで動作する「ＳＬＣブロック」に送るであろう。永続ストレージエレメント４１５ａ〜４１５ｊが（たとえば、電力の喪失に起因して）物理的に除去された場合、書き込まれていない任意のデータ、および、それ独自の任意のメタデータは、フラッシュカードに書き込まれる必要がある。システムのシャットダウンと同様に、このデータは、システムの復元のために使用されるＳＬＣブロックに書き込まれる。
【０１０９】
１実施形態は、永続ストレージエレメント４１５ａ〜４１５ｊ、ＣＬＭｓ４１０ａ〜４１０ｆ、ＡＡＭｓ４２０ａ〜４２０ｄ、および／またはファン４２５ａ〜４２５ｊの数および／またはポジショニングに限定されず、というのも、これらは例示目的で提供されているに過ぎないからである。これらのコンポーネントのより多くまたはより少なくが、本明細書に説明される実施形態にしたがって動作するように構成された１若しくはそれ以上の異なるポジションに配列される。
【０１１０】
図４Ｂは、第１の実施形態に係る例示的なデータ・ストレージ・アレイの一部の媒体の側面図を図示する。図４Ｂに示されているように、データ・ストレージ・アレイ４００の一部の媒体の側面図４３５は、永続ストレージエレメント４１５ａ〜４１５ｔを含む。この図が「媒体サイド」と呼ばれる所以は、それが、永続ストレージ媒体がたとえばメンテナンスまたは障害のあるコンポーネントのスワップのためにアクセスされる、データ・ストレージ・アレイ４００のサイドであるからである。１実施形態において、永続ストレージエレメント４１５ａ〜４１５ｔは、データ・ストレージ・アレイの動作をシャットダウンまたはそうでなければ制限する必要なしに、データ・ストレージ・アレイ４００の動作中に除去され、置き換えられることができる、フィールド・リプレイサブル・ユニット（ｆｉｅｌｄ  ｒｅｐｌａｃｅａｂｌｅ  ｕｎｉｔｓ：ＦＲＵｓ）として構成される。いくつかの実施形態によると、フィールド・リプレイサブル・ユニット（ｆｉｅｌｄ  ｒｅｐｌａｃｅａｂｌｅ  ｕｎｉｔｓ：ＦＲＵｓ）は、前、後、および／または横に使用可能である。
【０１１１】
電力ユニット４３０ａ〜４３０ｈは、永続ストレージエレメント４１５ａ〜４１５ｔのいずれかのサイドに設置される。電力ユニット４３０ａ〜４３０ｈは、たとえば、永続ストレージエレメント４１５ａ〜４１５ｔへの分配のための電力を保存することができる電力分配および保持ユニット（ｐｏｗｅｒ  ｄｉｓｔｒｉｂｕｔｉｏｎ  ａｎｄ  ｈｏｌｄ  ｕｎｉｔｓ：ＰＤＨＵｓ）として構成される。電力ユニット４３０ａ〜４３０ｈは、１若しくはそれ以上のメインパワーサプライから永続ストレージエレメント４１５ａ〜４１５ｔ（および他のＦＲＵｓ）に電力を分配し、および／または、電力故障または他の混乱時にストレージコンポーネントを安全にシャットダウンするためにある特定の量のスタンバイ電力を提供するように構成される。
【０１１２】
図４Ｃは、第１の実施形態に係る例示的なデータ・ストレージ・アレイの一部のケーブルの側面図を図示する。ケーブルの側面図４３５は、データ・ストレージ・アレイおよびそのコンポーネントに関連づけられたケーブルがアクセス可能なデータ・ストレージ・アレイ４００のサイドからの図を提示する。例示的なケーブルは、通信ケーブル（たとえば、イーサネット（登録商標）ケーブル）および電力ケーブルを含む。たとえば、オペレータは、ＡＡＭｓ４２０ａ〜４２０ｄが外部デバイスに接続するように配線された場合、ケーブルサイドからＡＡＭｓ４２０ａ〜４２０ｄにアクセスする。図４Ｃに示されているように、ケーブルの側面図４３５は、データ・ストレージ・アレイ４００およびそのコンポーネントのためのパワーサプライ４４５ａ〜４４５ｈへのアクセスを提示する。加えて、通信ポート４５０ａ〜４５０ｐは、ケーブルの側面図４３５からアクセス可能である。例示的な通信ポート４５０ａ〜４５０ｐは、ネットワーク・インターフェース・カード（ｎｅｔｗｏｒｋ  ｉｎｔｅｒｆａｃｅ  ｃａｒｄｓ：ＮＩＣｓ）および／またはＨＢＡｓを含むが、これに限定されない。
【０１１３】
図４Ｄは、第１の実施形態に係る例示的なデータ・ストレージ・アレイの一部の側面図を図示する。図４Ｄに示されているように、データ・ストレージ・アレイ４００の側面図４６０は、ある特定の永続ストレージエレメント４１５ａ、４１５ｋ、ファン４２５ａ〜４２５ｈ、ＡＡＭ（たとえば、一方の側面図からのＡＡＭ４２０ａおよび反対の側面図からのＡＡＭ４２０ｅ）、電力ユニット４３０ａ〜４３０ｅ、およびパワーサプライ４４５ａ〜４４５ｅの側面図を提供する。ミッドプレーン４７７ａ〜４７７ｃが、ＡＡＭ４２０ａ〜４２０ｊ（図４Ｄでは４２０ａのみが可視である）とＣＬＭｓ４１０ａ〜４１０ｆ（図示せず）との間、および／または、ＣＬＭと永続ストレージエレメント４１５ａ〜４１５ｔ間、といったさまざまなコンポーネント間のデータフローを容易にするために使用される。１実施形態において、ＣＬＭ４１０ａ〜４１０ｆの１若しくはそれ以上は、ＣＬＭが図４Ｄに図示されたＡＡＭ４２０ａのポジションに配置されるよう、外部に設置される。
【０１１４】
データ・ストレージ・アレイ４００は４列のファン４２５ａ〜４２５ｈを有するものとして図示されているが、実施形態はそのように限定されず、というのも、データ・ストレージ・アレイは、２列のファンまたは６列のファンといったより多いまたはより少ない列のファンを有するからである。データ・ストレージ・アレイ４００は、さまざまな寸法のファン４２５ａ〜４２５ｈを含む。たとえば、ファン４２５ａ〜４２５ｈは、約６０ミリメートルの直径を有する７つのファンまたは約４０ミリメートルの直径を有する約１０個のファンを含む。１実施形態において、より大きいファン４２５ａ〜４２５ｈは、直径約９２ミリメートルであり得る。
【０１１５】
図４Ｄに示されているように、データ・ストレージ・アレイ４００は、電力ユニット４３０ａ〜４３０ｅ、パワーサプライ４４５ａ〜４４５ｅ、ＰＤＨＵｓ（図示せず）、およびより低い列の永続ストレージデバイス４１５ａ〜４１５ｊの間で共通の電力プレーン４４７を含む。１実施形態において、電力は、永続ストレージデバイス４１５ａ〜４１５ｊの先頭行に電力供給するためのデータ・ストレージ・アレイ４００の先頭に接続される。１実施形態において、電力サブシステムまたはそのコンポーネント（たとえば、電力プレーン４４７、電力ユニット４３０ａ〜４３０ｅ、パワーサプライ４４５ａ〜４４５ｅ、および／またはＰＤＨＵｓ）は、たとえば、システムの上部で逆に複製される。１実施形態において、物理ケーブル接続が、電力サブシステムのために使用される。
【０１１６】
図４Ｅは、第２の実施形態に係る例示的なデータ・ストレージ・アレイの一部の上面図を図示する。図４Ｅに示されているように、データ・ストレージ・アレイ４００は、ＣＬＭｓ４１０ａ〜４１０ｆとＡＡＭｓ４２０ａ、４２０ｂとの間に配列されたシステム制御モジュール４５５を含む。システム制御モジュール４５５ａおよび４５５ｂは、システム画像の記憶、システム構成、システム監視、ジョイント・テスト・アクション・グループ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ：ＪＴＡＧ）（たとえば、ＩＥＥＥ１１４９．１規格テストアクセスポートおよびバウンダリスキャンアーキテクチャ）処理、電力サブシステム監視、冷却システム監視、および当業者に公知の他の監視を含むがこれに限定されない、データ・ストレージ・アレイ４００のある特定の動作態様を制御するように構成される。
【０１１７】
図４Ｆは、第３の実施形態に係る例示的なデータ・ストレージ・アレイの一部の上面図を図示する。図４Ｆに示されているように、データ・ストレージ・アレイ４００の上面図４７３は、ライト（たとえば、発光ダイオード（ｌｉｇｈｔ  ｅｍｉｔｔｉｎｇ  ｄｉｏｄｅ：ＬＥＤ）ライト）、テキストエレメント、等といった、さまざまなステータス表示エレメントを提供するように構成されたステータスディスプレイ４７１を含む。ステータス表示エレメントは、たとえば、永続ストレージエレメント４１５ａ〜４１５ｊが故障した場合にある特定の色でライトアップするＬＥＤによって、システム故障があるかどうかといったシステムの動作についての情報を提供するように構成される。上面図４７３はまた、通信ポート４５０ａ、４５０ｂ、またはその一部を含む。たとえば、通信ポート４５０ａ、４５０ｂは、ＨＢＡの一部（たとえば、「オーバーハング」）を含む。
【０１１８】
図４Ｇは、第４の実施形態に係る例示的なデータ・ストレージ・アレイの一部の上面図を図示する。図４Ｇに示されているように、データ・ストレージ・アレイ４００は、複数の永続ストレージエレメント４１５ａ〜４１５ｊとＰＤＨＵｓ４４９ａ〜４４９ｅ（たとえば、ファン４２５ａ〜４２５ｈが示されていないがゆえに図４Ｇにおいて可視）とを含む。たとえば、ファン４２５ａ〜４２５ｈは、図４Ｇに図示された図において永続ストレージエレメント４１５ａ〜４１５ｊとＰＤＨＵｓ４４９ａ〜４４９ｅとの背後に配置される。永続ストレージエレメント４１５ａ〜４１５ｊおよびＰＤＨＵｓ４４９ａ〜４４９ｅは、フェイスプレート（図示せず）の背後に配列され、シートメタル４５１ａ〜４５１ｄによって取り囲まれる。
【０１１９】
図４Ａ〜図４Ｇに図示されたデータ・ストレージ・アレイ４００は、データの損失のための故障のシングルポイントを有さず、永続およびキャッシュストレージ容量、システム制御モジュール、通信ポート（たとえば、ＰＣＩｅ、ＮＩＣｓ／ＨＢＡｓ）、および電力コンポーネントのような「ライブ」アップグレードされるコンポーネントを含む、データストレージを提供する。
【０１２０】
いくつかの実施形態によると、電力は、完全に別個のミッドプレーンに隔離される。第１のミッドプレーン構成において、電力への「ケーブル通路サイド」カードの接続は、「ボトム永続ストレージ・エレメント・ミッドプレーン」を介する。第２のミッドプレーン構成において、一番上の列の永続ストレージエレメント４１５ａ〜４１５ｊは、ケーブル通路サイドのカードに接続する「信号ミッドプレーン」と区別される「トップ電力ミッドプレーン」から電力を受け取る。第３のミッドプレーン構成において、一番下の列の永続ストレージエレメント４１５ａ〜４１５ｊは、「ボトム電力ミッドプレーン」から電力を受け取る。いくつかの実施形態によると、電力ミッドプレーンは、単一の連続したボードから形成される。いくつかの他の実施形態において、電力ミッドプレーンは、たとえば、前方の各々の永続ストレージエレメント４１５ａ〜４１５ｊと後方の「ケーブル通路サイド」カード（たとえば、ＣＬＭｓ、ＡＡＭｓ、システム制御カード、等）とを接続する、別個のボードから形成される。別個の電力ミッドプレーンの使用は、媒体通路サイドのモジュール（たとえば、永続ストレージエレメント４１５ａ〜４１５ｊ）が、１つのコーナーエッジでは高速信号を、別のコーナーエッジでは電力を、有することを可能にすることができ、信号を搬送するための物理ミッドプレーンの増大した数を可能にすることができ、高い電力を搬送するボードからの高速接続の最高密度とともにボードを完全に隔離する能力を提供することができ、高い電力を搬送するボードが、高速信号を搬送するカードと比較して、異なるボード材料、厚み、または他の特質から形成されることを可能にする。
【０１２１】
図４Ｈは、いくつかの実施形態に係る例示的なシステム制御モジュールを図示する。システム制御モジュール４５５は、プロセッサ４８５とメモリエレメント４７５ａ〜４７５ｄを含む。プロセッサ４８５は、Ｉｎｔｅｌ（登録商標）のＩＡ−６４アーキテクチャプロセッサのような当業者に公知のプロセッサを含む。１実施形態によると、メモリエレメント４７５ａ〜４７５ｄの各々は、データチャネルとして構成され、たとえば、メモリエレメントはそれぞれ、データチャネルＡ〜Ｄとして構成される。システム制御モジュール４５５は、そのさまざまなコンポーネントに電力供給するためのそれ独自の電力回路４８０を含む。イーサネット（登録商標）通信エレメント４９０ａおよび４９０ｂは、単独でまたはイーサネット（登録商標）スイッチ４９５との組み合わせで、通信接続４９７ａ〜４９７ｃを通じてさまざまな外部デバイスおよび／またはモジュールに通信するためにプロセッサ４８５によって使用される。外部デバイスおよび／またはモジュールは、ＡＡＭｓ、ＬＭｓ、ＣＭｓ、ＣＬＭｓ、および／または外部コンピューティングデバイスを含むが、これに限定されない。
【０１２２】
図５Ａおよび図５Ｂは、それぞれ、第１の実施形態および第２の実施形態に係る例示的な永続ストレージエレメントを図示する。永続ストレージエレメント５０５（たとえば、ＰＳＭ）は、（たとえば、ＣＬＭのメモリエレメント内に十分なストレージ空間が存在しないがゆえに）キャッシュストレージに格納されることができない、および／または、キャッシュストレージに加えて永続ストレージに冗長的に格納されている、データを格納するために使用される。いくつかの実施形態によると、永続ストレージエレメント５０５は、さまざまなメモリエレメント５２０、５３０ａ〜５３０ｆを含むＦＲＵ「ストレージクリップ」またはＰＳＭとして構成される。たとえば、メモリエレメント５２０は、特にデータ管理テーブルを格納するように構成されたＤＩＭＭメモリエレメントを含む。実際のデータは、ＰＣＩｅソケットのような補完スロット５２５ａ〜５２５ｆ内に配列された、フラッシュカード５３０ａ〜５３０ｆのセットのようなフラッシュメモリに格納される（いくつかの実施形態に係る例示的なフラッシュカードについては図５Ｄ〜図５Ｆを参照）。１実施形態において、永続ストレージエレメント５０５は、４０個のフラッシュカード５３０ａ〜５３０ｆを含むように構成される。
【０１２３】
１実施形態において、各々の永続ストレージエレメント５０５は、約６つのフラッシュカード５３０ａ〜５３０ｆを含む。１実施形態において、データは、デュアルパリティＲＡＩＤ（Ｐ／Ｑ９＋２）、抹消符号パリティ（９＋３）、等といったパリティ方法を使用して、永続ストレージエレメント５０５に格納される。このタイプのパリティは、システムが永続ストレージの複数のハード故障に耐えることを可能にする。
【０１２４】
プロセッサ５４０は、基本テーブル管理機能のような永続ストレージエレメント５０５のためのある特定の機能を実行するために含まれる。１実施形態において、プロセッサ５４０は、システムオンチップ（ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ：ＳｏＣ）集積回路を含む。例示的なＳｏＣは、Ｍａｒｖｅｌｌによって製造されたＡｒｍａｄａ（商標）のＸＰ  Ｓｏｃであり、他は、Ｉｎｔｅｌ（登録商標）のＥ５−２６００シリーズのサーバプロセッサである。通信スイッチ５５０がまた、永続ストレージエレメント５０５のための通信を容易にするために含まれる。１実施形態において、通信スイッチ５５０は、（たとえば、３２レーンＰＣＩｅ  Ｇｅｎ３スイッチのような）ＰＣＩｅスイッチを含む。通信スイッチ５５０は、フラッシュカード５３０ａ〜５３０ｆの１つを保持する各々のクリップおよびプロセッサ５４０への通信のために４レーンＰＣＩｅ接続を使用する。
【０１２５】
永続ストレージエレメント５０５は、データ・ストレージ・アレイ内の永続ストレージエレメント５０５に動作可能に結合するように構成されたコネクタ５５５を含む。ウルトラキャパシタおよび／またはバッテリー５７５ａ〜５７５ｂが、永続ストレージエレメント５０５のための電力管理機能を容易にするために含まれる。いくつかの実施形態によると、ウルトラキャパシタ５７５ａ〜５７５ｂは、たとえば、電力故障の場合に、揮発性メモリからの「ダーティ」データのデステージを可能にするのに十分な電力を提供する。
【０１２６】
フラッシュ（たとえば、フラッシュカード５３０ａ〜５３０ｆ）を使用するいくつかの実施形態によると、さまざまな状態が、どのページがガーベッジコレクションに有効なのかを示すためのテーブルを維持するように要求される。これらの機能は、たとえば、スタンダードコモディティＤＩＭＭ上の専用ＤＲＡＭを通じて、プロセッサ５４０および／またはそのＳｏＣを介して対処される。ＤＩＭＭ上に格納されたデータのための永続性は、永続ストレージエレメント５０５上のウルトラキャパシタおよび／またはバッテリー５７５ａ〜５７５ｂの配置によって保証される。永続ストレージエレメント５０５上の永続メモリエレメントを使用する実施形態において、ウルトラキャパシタおよび／またはバッテリー５７５ａ〜５７５ｂは、メモリの永続性のために必要とされないこともできる。例示的な永続メモリは、磁気抵抗ランダムアクセスメモリ（ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  ｒａｎｄｏｍ−ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＭＲＡＭ）および／またはパラメータ・ランダム・アクセス・メモリ（ｐａｒａｍｅｔｅｒ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＰＲＡＭ）を含む。いくつかの実施形態によると、ウルトラキャパシタおよび／またはバッテリー５７５ａ〜５７５ｂおよび／または永続メモリエレメントの使用により、永続ストレージエレメント５０５に、たとえばフラッシュカード５３０ａ〜５３０ｆのフラッシュ媒体に損害を与えることなく、サービスを提供することが可能となる。
【０１２７】
図５Ｃは、第３の実施形態に係る例示的な永続ストレージエレメントを図示する。プロセッサ５４０は、両方が、たとえば、一方向コネクタ５５５（送信）および５５６（受信）による、両方のストレージカード５３０への接続ならびに他のカードとの接続のための、複数の通信スイッチ５５０１−ｄを利用することができる。いくつかの実施形態によると、スイッチ５５０ａのようなある特定のスイッチは、ストレージデバイスに接続するのみである可能性がある一方で、スイッチ５５０ｃのような他のスイッチは、コネクタ５５５に接続するのみである可能性がある。回転媒体５８５ａ〜ｄは、プロセッサ５４０に直接的に接続され５８０ａ、例としてプロセッサのチップセットの機能でありるか、または、通信スイッチ５５０ｄを介して間接的に接続されるか、のいずれかであるデバイスコントローラ５８０ｂによって、そのようなシステムにおいて直接サポートされる。
【０１２８】
図６Ａは、第１の実施形態に係る例示的なフラッシュカードを図示する。図６Ａに示されているように、フラッシュカード６３０は、８Ｋ×１４ワードのプログラムメモリのような、１若しくはそれ以上の異なるメモリ容量を有するように構成された複数のフラッシュチップまたはダイ６６０ａ〜６６０ｇを含む。１実施形態において、フラッシュカード６３０は、エラー訂正コード（ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｏｎ  ｃｏｄｅ：ＥＣＣ）エンジンを有する「クリアノットアンド（ｎｏｔ−ａｎｄ：ＮＡＮＤ）」テクノロジー（たとえば、トリプルレベルセル（ｔｒｉｐｌｅ−ｌｅｖｅｌ  ｃｅｌｌ：ＴＬＣ）、３ｂ／ｃ、等）として構成される。たとえば、フラッシュカード６３０は、ＥＣＣ機能のようなある特定のフラッシュカード機能に対処するように構成された集積回路６９０を含む。いくつかの実施形態によると、フラッシュカード６３０は、データ・ストレージ・アレイ内である特定のコマンドを処理するために（たとえば、図６Ａ〜図６Ｃにおける通信スイッチ６５０を通じて）複数のＥＣＣエンジンをＰＣＩｅバスインターフェースに本質的に接続する永続ストレージエレメントのエキスパンダデバイスとして配列される。そのようなコマンドの非限定的な例は、永続ストレージエレメント６０５からのＩＯ要求およびガーベッジ・コレクション・コマンドを含む。１実施形態において、フラッシュカード６３０は、たとえばＣＬＭに、約４キロバイトのエントリにおいてデータを提供するように構成される。
【０１２９】
いくつかの実施形態によると、フラッシュカード６３０は、パラレル「マネージドＮＡＮＤ」ドライブとして使用される。そのような実施形態において、各々のインターフェースは、少なくとも部分的に独立して機能することができる。たとえば、フラッシュカード６３０は、外部システム要件の負担を軽減するために「不良」ブロックから「良好」ブロックへデータを移行させることといったさまざまな不良ブロック検出および管理機能を行い、より高いレベルのコンポーネントが不良ブロック検出および管理機能からの結果として生じた遅延を認識するよう外部シグナリングを提供することができる。別の例において、フラッシュカードは、ブロックレベルの論理物理再マッピングおよびブロックレベルのウェアレベリングを行うことができる。いくつかの実施形態によると、ブロックレベルのウェアレベリングをサポートするために、各々のフラッシュカードにおける各々の物理ブロックは、物理ブロックへの書き込みの数と等しいフラッシュカード６３０上で維持されたカウント値を保つことができる。いくつかの実施形態によると、フラッシュカードは、読み出し処理、フラッシュチップ６６０ａ〜６６０ｇへの書き込み処理の管理、フラッシュチップ上のＥＣＣ保護（たとえば、読み出しイベント中に見られるエラーのビットについてのデータを提供する）、読み出し妨害カウント監視、またはそれらの任意の組み合わせを行うことができる。
【０１３０】
テーブルおよび／または管理データのような任意のデータがフラッシュカード６３０の外部に保持される場合、集積回路６９０は、アグリゲータ集積回路（「アグリゲータ」）として構成される。１実施形態において、フラッシュカード６３０のためのエラー訂正ロジックは、アグリゲータ内、フラッシュパッケージ上、ボード上のどこか（たとえば、ＰＳＭボード、永続ストレージエレメント５０５、等）、またはそれらの何らかの組み合わせのいずれかに存在することができる。
【０１３１】
フラッシュメモリは、チップまたはパッケージの故障に先立って故障するコンテンツのブロックを有することができる。物理ブロックの論理的にアドレス指定されたブロックへの再マッピングは、複数の潜在レベルで行われる。１実施形態は、さまざまな再マッピング技法を提供する。第１の再マッピング技法は、たとえば、ＣＬＭｓにより、永続ストレージサブシステムの外部で行われる。１実施形態はまた、永続ストレージサブシステム内で行われる再マッピング技法を提供する。たとえば、再マッピングは、永続ストレージエレメント５０５のレベルで、たとえば、プロセッサ５４０（および／またはそのＳｏＣ）とフラッシュカード５３０ａ〜５３０ｆとの間で行われる通信を通じて、行われる。別の例において、再マッピングは、フラッシュカード５３０ａ〜５３０ｆ内で、たとえば、アグリゲータに対しアドレス指定可能なより少ない数のブロックを提示するフラッシュカードを通じて、行われる。さらなる例において、フラッシュカード５３０ａ〜５３０ｆは、不良ブロックと外部システムからそれらへの（たとえば、永続ストレージエレメント５０５、ＣＬＭ、等への）マッピングとを抽出するブロックデバイスとしてそれら自身を提示することができる。いくつかの実施形態によると、アグリゲータ６９０は、たとえば、永続ストレージエレメント５０５、ＣＬＭによって、それらの外部のアドレス指定された独自のブロックマッピングを維持することができる。データの再マッピングは、永続ストレージエレメント５０５が、メモリのためのそれ独自のポインタを維持するために必要とされるのみであることを可能にすることができる、また、メモリが、「不良ブロック」を抽出することと基礎をなす媒体のウェアレベリングを行うこととの両方のために使用される追加のアドレス空間の維持を必要とすることもなくデータ・ストレージ・アレイ・システムによって使用可能であることを可能にすることができる。
【０１３２】
いくつかの実施形態によると、フラッシュカード６３０は、データが有効かどうか、または、それがデータ管理システムによってその全体をオーバーライトまたはフリードされているかどうかを示すために各々の論理ページのためのビットを維持することができる。たとえば、キャッシュにおいて部分的にオーバーライトされるページは、それが永続ストレージに残っている何らかの有効なデータを有することができるので、このレベルでフリードされないべきである。永続ストレージエレメント５０５は、いつどのようにガーベッジ・コレクション・タスクを行うかどうかを決定するためにデータ管理システムから非常に自律的に動作するように構成される。ガーベッジコレクションは先立って行われる。いくつかの実施形態によると、ガーベッジコレクションが電力故障イベント中に要求されないよう、十分な余剰ブロックが維持される。
【０１３３】
プロセッサ５４０は、残りの有効なページを収集するためのブロックを選択し、書き込み位置を決定するためにブロックを監視するためのソフトウェアを実行するように構成される。転送は、フラッシュカード５３０ａ〜５３０ｆ内で、または共通の永続ストレージエレメント５０５上のカードにわたって、のいずれかで維持される。したがって、永続ストレージエレメント５０５とＣＬＭｓ間のアクセスを提供する分散ＰＣＩｅネットワークは、クリップを互いに直接接続するように要求されない。
【０１３４】
１実施形態において、永続ストレージエレメント５０５がページを移動させると、永続ストレージエレメント５０５は、データ移動の、論理アドレス物理アドレスマップ、および直接的または間接的にそのミラーを保持するＣＬＭに知らせる前にページのコピーを完了させることができる。データ移動中、元のページがフリードされる場合、（たとえば、データがＣＬＭによって別個に提供されるがゆえに）両方のページが無効であるとマーキングされる。永続ストレージエレメント５０５からＣＬＭキャッシュへと読み出されているデータは、データおよびパリティで提供され、パリティ生成は、永続ストレージエレメント５０５にローカルで、たとえば、プロセッサ５４０において、またはその何らかの組み合わせで、のいずれかで行われる。
【０１３５】
図６Ｂおよび図６Ｃはそれぞれ、第２および第３の実施形態に係る例示的なフラッシュカードを図示する。たとえば、図６Ｃは、外部ストレージデバイスを含む１若しくはそれ以上の外部デバイスにフラッシュカードを接続するように構成された外部接続エレメント６９５ａ、６９５ｂを含むフラッシュカード６３０を図示する。いくつかの実施形態によると、フラッシュカード６３０は、約８個から約１６個のフラッシュチップ６６０ａ〜６６０ｆを含むことができる。
【０１３６】
いくつかによると、データ管理システムは、パフォーマンスと１若しくはそれ以上のより低いティアのストレージ（たとえば、より低いコスト、より低いパフォーマンス、等、またはそれらの任意の組み合わせ）との間でデータをマッピングするように構成される。そのようなものとして、個々のストレージモジュールおよび／またはそのコンポーネントは、異なる容量のものであり、異なるアクセスレイテンシを有し、異なる基礎をなす媒体を使用し、および／または、ストレージモジュールおよび／またはコンポーネントのパフォーマンスおよび／またはコストに影響を及ぼす可能性がある任意の他の特性および／またはエレメントであってもよい。いくつかの実施形態によると、異なる媒体タイプが、データ管理システムにおいて使用され、ページ、ブロック、データ、等が、ある特定の属性によってメモリに格納されているのみであるとして指定される。そのような実施形態において、ページ、ブロック、データ等は、たとえば、永続ストレージエレメント５０５および／またはフラッシュカード６３０によってアクセス可能であるであろうメタデータによって指定された、ストレージ要件／属性を有することができる。たとえば、図６Ｃに示されているように、外部接続エレメント６９５ａ、６９５ｂの少なくとも１つは、シリアルアタッチドＳＣＳＩ（ｓｅｒｉａｌ  ａｔｔａｃｈｅｄ  ＳＣＳＩ：ＳＡＳ）および／またはＳＡＴＡ接続エレメントを含む。このように、データ・ストレージ・アレイは、データ、特にまれに使用されるデータを、フラッシュカード６３０からより低いティアのストレージへとデステージすることができる。データのデステージは、永続ストレージエレメント５０５および／または１若しくはそれ以上のＣＬＭｓによってサポートされる。
【０１３７】
図７Ａは、１実施形態に係るＡＡＭｓとＣＬＭｓ間の接続を図示する。図７Ａに示されているように、データ・ストレージ・アレイ７００は、ＡＡＭｓ７１５ａ〜７１５ｄと動作可能に結合されたＣＬＭｓ７１０ａ〜７１０ｆを含む。いくつかの実施形態によると、ＡＡＭｓ７１５ａ〜７１５ｄの各々は、互いに、および、ＣＬＭｓ７１０ａ〜７１０ｆの各々に、接続される。ＡＡＭｓ７１５ａ〜７１５ｄは、プロセッサ７４０ａ、７４０ｂ、通信スイッチ７３５ａ〜７３５ｅ（たとえば、ＰＣＩｅスイッチ）、および通信ポート１１３０ａ、１１３０ｂ（たとえば、ＮＩＣｓ／ＨＢＡｓ）のような、本明細書に説明されるさまざまなコンポーネントを含む。ＣＬＭｓ７１０ａ〜７１０ｆの各々は、本明細書において説明されるさまざまなコンポーネント、たとえば、プロセッサ７２５ａ、７２５ｂ、および通信スイッチ７２０ａ〜７２０ｅ（たとえば、ＰＣＩｅスイッチ）を含む。ＡＡＭｓ７１５ａ〜７１５ｄおよびＣＬＭｓ７１０ａ〜７１０ｆは、データ・ストレージ・アレイ７００のミッドプレーン７０５（たとえば、パッシブミッドプレーン）内に配列された通信バスを通じて接続される。
【０１３８】
通信スイッチ７２０ａ〜７２０ｅ、７３５ａ〜７３５ｅは、さまざまな通信パスを使用してプロセッサ７２５ａ、７２５ｂ、７４０ａ、７４０ｂに（たとえば、プロセッサソケットを通じて）接続される。１実施形態において、通信パスは、８および／または１６レーンワイドのＰＣＩｅ接続を含む。たとえば、カード上の複数（たとえば、２つ）のプロセッサソケットに接続された通信スイッチ７２０ａ〜７２０ｅ、７３５ａ〜７３５ｅは、８レーンワイドのＰＣＩｅ接続を使用することができ、カード上の１つのプロセッサソケットに接続された通信スイッチは、１６レーンワイドのＰＣＩｅ接続を使用することができる。
【０１３９】
いくつかの実施形態によると、ＡＡＭｓ７１５ａ〜７１５ｄとＣＬＭｓ７１０ａ〜７１０ｆの両方での相互接続は、プロセッサソケット間のＱＰＩ接続、各々のプロセッサソケットとそのソケットに接続されたＰＣＩｅスイッチとの間の１６レーンＰＣＩｅ、および両方のプロセッサソケットと両方のソケットに接続されたＰＣＩｅスイッチとの間の８レーンＰＣＩｅを含む。ＡＡＭｓ７１５ａ〜７１５ｄおよびＣＬＭｓ７１０ａ〜７１０ｆでのマルチソケットプロセッシングブレードの使用は、より高いスループットとより大きいメモリ構成とを提供するように動作することができる。図７Ａに図示された構成は、高帯域幅相互接続に任意の接続のための均一な帯域幅を提供する。いくつかの実施形態によると、８レーンＰＣＩｅ  Ｇｅｎ３相互接続は、各々のＡＡＭ７１５ａ〜７１５ｄとすべてのＣＬＭ７１０ａ〜７１０ｆとの間で使用され、４レーンＰＣＩｅ  Ｇｅｎ３相互接続は、各々のＣＬＭ７１０ａ〜７１０ｆとすべての永続ストレージデバイスとの間で使用される。しかしながら、これらのタイプの接続は例示目的のために提供されているに過ぎないので、１実施形態はこれらに限定されない。
【０１４０】
１実施形態において、ＡＡＭｓ７１５ａ〜７１５ｄとＣＬＭｓ７１０ａ〜７１０ｆとのミッドプレーン７０５相互接続は、少なくとも２つの異なるタイプの通信スイッチを含む。たとえば、通信スイッチ７３５ａ〜７３５ｅと通信スイッチ７２０ａ〜７２０ｅは、シングル１６レーン通信スイッチとデュアル８レーン通信スイッチとを含む。１実施形態において、ＡＡＭｓ７１５ａ〜７１５ｄをＣＬＭｓ７１０ａ〜７１０ｆに接続するために使用される接続タイプは、一方のカード上の各々のスイッチタイプが、もう一方のカード上の両方のスイッチタイプに接続されるよう、交互になる。
【０１４１】
１実施形態において、ＡＡＭｓ７１５ａおよび７１５ｂは、「上部」ソケット上のＣＬＭｓ７１０ａ〜７１０ｆに接続される一方で、ＡＡＭｓ７１５ｃおよび７１５ｄは、「底部」ソケット上のＣＬＭｓ７１０ａ〜７１０ｆに接続される。このように、キャッシュは、そのデータがある特定のＡＡＭｓ７１５ａ〜７１５ｄにより（たとえば、非障害処理における読み出し／書き込み要求を通じて）アクセスされるよう指定されたアドレスが、それが最も直接的に接続されるソケットにおいてデータをキャッシュされるように、論理的にパーティショニングされる。これは、ＣＬＭ７１０ａ〜７１０ｆのキャッシュ領域におけるデータがプロセッサソケット間のＱＰＩリンクを横断することに対する必要性を回避することができる。そのような構成は、特に、故障時のアクセス可能性の損失なしにパッシブミッドプレーンにおける単純なトポロジーによって、非障害動作中（たとえば、すべてのＡＡＭｓ７１５ａ〜７１５ｄが動作可能である場合）にソケット間の輻輳を軽減するように動作することができる。
【０１４２】
図７Ａに示されているように、ＣＬＭｓ７１０ａ〜７１０ｆ、ＡＡＭｓ７１５ａ〜７１５ｄ、および／またはそれらのコンポーネント間のある特定の接続は、ＮＴポート接続７７０を含む。図７Ａは複数のＮＴポート接続７７０を図示しているが、図を単純化するために１つのみがラベル付けされている。いくつかの実施形態によると、ＮＴポート接続７７０は、各々のＡＡＭ７１５ａ〜７１５ｄにおける任意のＰＣＩｅソケットがＰＣＩｅを介して合計利用可能ＣＬＭｓ７１０ａ〜７１０ｆのうちの任意のある特定の数（たとえば、図７Ａに示された６つのＣＬＭｓのうちの４つ）に直接接続することを可能にすることができ、各々のＣＬＭにおける任意のＰＣＩｅソケットが合計利用可能ＡＡＭｓのうちの任意のある特定の数（たとえば、図７Ａに示された４つのＡＡＭｓのうちの３つ）に接続することを可能にすることができる。直接接続は、ＡＡＭ７１５ａ〜７１５ｄおよび／またはＣＬＭ７１０ａ〜７１０ｆカード上のプロセッサツープロセッサ通信チャネル（たとえば、ＱＰＩ通信チャネル）ホップを必要としない接続を含む。このように、プロセッサツープロセッサ通信チャネルのデータ転送のオフローディングは、システム・データ・スループットを著しく改善することができる。
【０１４３】
図７Ｂは、１実施形態に係る例示的なＣＬＭを図示する。図７Ｂに示されたＣＬＭ７１０は、図７ＡのＣＬＭ７１０ａ〜７１０ｆの詳細な描写を表す。ＣＬＭ７１０は、ＣＬＭを永続ストレージデバイス（図示せず、図７Ｅを参照）に動作可能に結合するように構成された通信バス７４５ａ〜７４５ｄを含む。たとえば、通信バス７４５ａおよび７４５ｃは、ＣＬＭ７１０を３つの永続ストレージデバイスに接続することができる一方で、通信バス７４５ｂおよび７４５ｄは、ＣＬＭ７１０を７つの永続ストレージデバイスに接続することができる。
【０１４４】
図７Ｃは、１実施形態に係る例示的なＡＡＭを図示する。図７Ｃに図示されたＡＡＭ７１５は、ＡＡＭと１若しくはそれ以上のＣＬＭｓ７１０ａ〜７１０ｆとの間の通信を容易にするための通信エレメント７８０と通信する１若しくはそれ以上のプロセッサ７４０ａ、７４０ｂを含む。いくつかの実施形態によると、通信エレメント７８０は、ＰＣＩｅ通信エレメントを含む。１実施形態において、通信エレメントは、たとえば、９７レーンおよび１１の通信ポートを有する、ＰＣＩｅファブリックエレメントを含む。１実施形態において、通信スイッチ７３５ａ、７３５ｂは、３２レーンＰＣＩｅスイッチを含む。通信スイッチ７３５ａ、７３５ｂは、プロセッサ通信のために１６レーンを使用することができる。ＱＰＩ通信チャネルのようなプロセッサツープロセッサ通信チャネル７８５は、プロセッサ７４０ａ、７４０ｂ間に配列される。通信エレメント７８０は、各々のプロセッサ７４０ａ、７４０ｂのために１つの１６レーンのＰＣＩｅチャネルを、および／または、プロセッサとの通信のためにデュアル８レーンＰＣＩｅチャネルを使用することができる。加えて、通信エレメント７８０は、各々のＣＬＭ７１０ａ〜７１０ｆとの通信のために１つの８レーンＰＣＩｅチャネルを使用することができる。１実施形態において、１６レーンＰＣＩｅチャネルの１つは、共有コンポーネント間のＰＣＩｅエラーの構成および／または対処のために使用される。たとえば、ソケット「０」、ＡＡＭ７１５のための最も低いソケットが、ＰＣＩｅエラーの構成および／また対処のために使用される。
【０１４５】
図７Ｄは、１実施形態に係る例示的なＣＬＭを図示する。図７Ｃに示されているように、ＣＬＭ７１０は、１若しくはそれ以上の通信エレメント７９０と通信する１若しくはそれ以上のプロセッサ７２５ａ、７２５ｂを含む。いくつかの実施形態によると、通信エレメント７９０は、ＰＣＩｅファブリック通信エレメントを含む。たとえば、通信エレメント７９０ａは、５つの通信ポートを有する３３レーンＰＣＩｅファブリックを含む。別の例において、通信エレメント７９０ｂ、７９０ｃは、５つ（１４個）の通信ポートを有する８１レーンＰＣＩｅファブリックを含む。通信エレメント７９０ａは、接続されたＡＡＭｓ７１５ａ、７１５ｃおよびプロセッサ７２５ａ、７２５ｂへの通信のために８レーンＰＣＩｅチャネルを使用することができる。通信エレメント７９０ｂ、７９０ｃは、接続されたＰＳＭｓ７５０ａ〜７５０ｔへの通信のために４レーンＰＣＩｅチャネルを、各々のプロセッサ７２５ａ、７２５ｂへの通信のために１６レーンＰＣＩｅチャネルを、各々の接続されたＡＡＭ７１５ａ、７１５ｄへの通信のために８レーンＰＣＩｅチャネルを使用することができる。
【０１４６】
図７Ｅは、ＣＬＭと複数の永続ストレージデバイス間の例示的な接続を図示する。図７Ｅに示されているように、ＣＬＭ７１０は、複数の永続ストレージデバイス７５０ａ〜７５０ｔに接続される。いくつかの実施形態によると、各々の永続ストレージデバイス７５０ａ〜７５０ｔは、各々のＣＬＭ（たとえば、図７Ａに図示されたＣＬＭｓ７１０ａ〜７１０ｆ）への４レーンＰＣＩｅポートを含む。１実施形態において、仮想ローカルエリアネットワーク（ｖｉｒｔｕａｌ  ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ：ＶＬＡＮ）は、たとえば、イーサネット（登録商標）ファブリックにおけるループを回避するために、任意のＡＡＭツーＡＡＭリンクを使用しない各々のＣＬＭ７１０にルートされる。この実施形態において、各々の永続ストレージデバイス７５０ａ〜７５０ｔは、それが接続される１つのＣＬＭ７１０あたり１つの、３つのＶＬＡＮｓを見る。
【０１４７】
図７Ｆは、１実施形態に係るＣＬＭｓ、ＡＡＭｓ、および永続ストレージ（たとえば、ＰＳＭｓ）間の例示的な接続を図示する。図７Ｆに示されているように、ＡＡＭｓ７１５ａ〜７１５ｎは、ＨＢＡ通信ポートのようなさまざまな通信ポート７１６ａ〜７１６ｎを含む。各々のＡＡＭ７１５ａ〜７１５ｎは、各々のＣＬＭ７１０ａ〜７１０ｆと動作可能に結合される。ＣＬＭ７１０ａ〜７１０ｆは、永続ストレージ７５０と通信するためのさまざまな通信エレメント７０２ａ〜７０２ｆを含む。したがって、ＣＬＭｓ７１０ａ〜７１０ｆは、永続ストレージ７５０（およびＰＳＭｓのようなそのコンポーネント）に直接接続される。たとえば、通信エレメント７０２ａ〜７０２ｆは、４８レーンＧｅｎ３スイッチのようなＰＣＩｅスイッチを含む。データ・ストレージ・アレイは、カード、ボード、等の形態であるシステム制御モジュール７０４ａ〜７０４ｂを含む。システム制御モジュール７０４ａ〜７０４ｂは、ＣＬＭｓ７１０ａ〜７１０ｆに通信するための通信エレメント７０８ａ〜７０８ｂと、ＣＬＭｓの通信エレメント７０２ａ〜７０２ｆに直接通信するための通信エレメント７０６ａ〜７０６ｂとを含む。通信エレメント７０８ａ〜７０８ｂは、イーサネット（登録商標）スイッチを含み、通信エレメント７０６ａ〜７０６ｂは、ＰＣＩｅスイッチを含む。システム制御モジュール７０４ａ〜７０４ｂは、たとえば、内部イーサネット（登録商標）通信から隔離されたイーサネット（登録商標）接続のような外部通信エレメント７１４ａ〜７１４ｂと通信することができる。図７Ｆに示されているように、外部通信エレメント７１４ａ〜７１４ｂは、制御プレーン７１２ａ〜７１２ｂと通信することができる。
【０１４８】
図７Ｇは、１実施形態に係るＣＬＭｓと永続ストレージ（たとえば、ＰＳＭｓ）間の例示的な接続を図示する。図７に示されているように、ＣＬＭｓ７１５ａ〜７１５ｎは、ＰＳＭｓ７５０ａ〜７５０ｎに通信するための複数の通信エレメント７０２ａ〜７０２ｎを含む。１実施形態において、ＣＬＭｓ７１５ａ〜７１５ｎは、ミッドプレーンコネクタ７２２ａ〜７２２ｎによってＰＳＭｓ７５０ａ〜７５０ｎに接続される。各々のＣＬＭ７１５ａ〜７１５ｎが各々のＰＳＭｓ７５０ａ〜７５０ｎに接続されるが、すべてのＣＬＭｓが各々のＰＳＭに同様に接続されるので、ＣＬＭ７１５ａのための接続のみが図７Ｇを単純化するために図示されている。図７Ｇに示されているように、各々のＣＬＭ７１５ａ〜７１５ｎは、ＣＬＭをＰＳＭｓ７５０ａ〜７５０ｎの第１のセット（たとえば、ＰＳＭｓの最終行）に接続する第１の通信エレメント７０２ａと、ＣＬＭｓをＰＳＭｓの第２のセット（たとえば、ＰＳＭｓの先頭行）に接続する第２の通信エレメント７０２ｂとを有することができる。このように、ボードルーティングは、ＣＬＭ７１５ａ〜７１５ｎ上で単純化される。
【０１４９】
１実施形態において、通信エレメント７０２ａ〜７０２ｎは、ＰＣＩｅ通信スイッチ（たとえば、４８レーンＧｅｎ３スイッチ）を含む。ＰＳＭｓ７５０ａ〜７５０ｎは、それとＣＬＭｓ７１５ａ〜７１５ｎの各々との間の同一の２のべき乗の数のＰＣＩｅレーンを含む。１実施形態において、通信エレメント７０２ａ〜７０２ｎは、異なる通信ミッドプレーンを使用することができる。いくつかの実施形態によると、すべてのまたは実質的にすべてのＣＬＭｓ７１５ａ〜７１５ｎが、すべてのまたは実質的にすべてのＰＳＭｓ７５０ａ〜７５０ｎに接続される。
【０１５０】
いくつかの実施形態によると、ＰＳＭｓ７５０ａ〜７５０ｎからのイーサネット（登録商標）（制御プレーン）接続がＣＬＭｓ７１５ａ〜７１５ｎ上で分散させられる場合、各々のＣＬＭは、トラフィックがバランスをとられるように、同一の数または実質的に同一の数の接続を有するように構成される。６つのＣＬＭｓと上部および底部のミッドプレーン上のバランスをとられた接続とを含む非限定的な例において、ＣＬＭボードから各々のミッドプレーンへの４つの接続が確立される。別の非限定的な例において、配線は、最も外側のＣＬＭｓ７１５ａ〜７１５ｎ（たとえば、最も外側の２つのＣＬＭｓ）がある特定の数の接続（たとえば、約６つの接続）を有する一方で、最も内側のＣＬＭｓ（たとえば、最も内側の４つのＣＬＭｓ）が別のある特定の数の接続（たとえば、約７つの接続）を有するように構成される。
【０１５１】
１実施形態において、コネクタ７２２ａ〜７２２ｎ上の各々のＰＳＭ７５０ａ〜７５０ｎは、２つのＣＬＭといった１若しくはそれ以上のＣＬＭｓ７１５ａ〜７１５ｎへのイーサネット（登録商標）接続性を有する。ＣＬＭｓ７１５ａ〜７１５ｎは、制御プレーン通信（たとえば、図７Ｆの通信エレメント７０８ａ〜７０８ｂ）のためのイーサネット（登録商標）スイッチを含む。
【０１５２】
図７Ａ〜図７Ｇに示されているように、ＡＡＭｓ７１５ａ〜７１５ｄは、ＣＬＭｓ７１０ａ〜７１０ｆに、かつ、ＣＬＭｓを通じて間接的に永続ストレージデバイス７５０ａ〜７５０ｔに接続される。１実施形態において、ＰＣＩｅは、データ・プレーン・トラフィックのために使用される。１実施形態において、イーサネット（登録商標）は、制御プレーントラフィックのために使用される。
【０１５３】
いくつかの実施形態によると、ＡＡＭｓ７１５ａ〜７１５ｄは、ＣＬＭｓ７１０ａ〜７１０ｆと直接通信することができる。１実施形態において、ＣＬＭｓ７１０ａ〜７１０ｆは、有効にＲＡＩＤ保護されたＲＡＭとして構成される。キャッシュアクセスのためのシングルパリティがＡＡＭ上のソフトウェアにおいて対処される。システム制御モジュール７０４ａ〜７０４ｂは、ＡＡＭｓ７１５ａ〜７１５ｄにマージされるデータプレーンからシステム制御を分離するように構成される。１実施形態において、永続ストレージ７５０のコンポーネント（たとえば、ＰＳＭｓ７５０ａ〜７５０ｔ）は、システム制御モジュール７０４ａ〜７０４ｂおよび／またはＣＬＭｓ７１０ａ〜７１０ｆのペアに接続されたイーサネット（登録商標）ポートを有することができる。永続ストレージ７５０のコンポーネントは、システム制御モジュール上の通信接続を通じてシステム制御モジュール７０４ａ〜７０４ｂに接続される。永続ストレージ７５０のコンポーネントは、ＣＬＭｓ７１０〜７１０ｆを通じてシステム制御モジュール７０４ａ〜７０４ｂに接続される。たとえば、各々の永続ストレージ７５０のコンポーネントは、両方をローカルＣＬＭ７１０ａ〜７１０ｆとシステム制御モジュール７０４ａ〜７０４ｂの両方とに接続するイーサネット（登録商標）スイッチを含む、２つのＣＬＭｓ７１０ａ〜７１０ｆに接続することができる。
【０１５４】
図８は、１実施形態に係る例示的なシステムスタックを図示する。データ・ストレージ・アレイ８６５は、本明細書において説明されるように、アレイ・アクセス・コア８４５と少なくとも１つのデータ・ストレージ・コア８５０ａ〜８５０ｎとを含む。データ・ストレージ・アレイ８６５は、データ・ストレージ・アレイと外部クライアント・コンピューティング・デバイスとの間のインターフェースを提供するように構成されたホスト・インターフェース・スタック８７０と対話することができる。ホスト・インターフェース・スタック８７０は、オブジェクトストアおよび／またはキー値ストア（たとえば、ハイパーテキスト・トランスファー・プロトコル（ｈｙｐｅｒｔｅｘｔ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ：ＨＴＴＰ））アプリケーション８０５、マップ低減アプリケーション（たとえば、Ａｐａｃｈｅ（商標）によるＨａｄｏｏｐ（商標）ＭａｐＲｅｄｕｃｅ）、等といったアプリケーションを含む。最適化および仮想化アプリケーションは、ファイル・システム・アプリケーション８２５ａ〜８２５ｎを含む。例示的なファイル・システム・アプリケーションは、ＰＯＳＩＸファイルシステムとＡｐａｃｈｅ（商標）によるＨａｄｏｏｐ（商標）分散ファイルシステム（Ｈａｄｏｏｐ  ｄｉｓｔｒｉｂｕｔｅｄ  ｆｉｌｅ  ｓｙｓｔｅｍ：ＨＤＦＳ）とを含む。
【０１５５】
ホスト・インターフェース・スタック８７０は、ＮＩＣｓ、ＨＢＡｓ、および他の通信コンポーネントのためのドライバのような、（たとえば、ＡＡＭ８４５を通じた）データ・ストレージ・アレイ間の通信を容易にするように構成されたさまざまな通信ドライバ８３５ａ〜８３５ｎを含む。物理サーバ８３５ａ〜８３５ｎが、ホスト・インターフェース・スタック８７０内のクライアントＩＯを処理および／またはルーティングするように配列される。クライアントＩＯは、ネットワークスイッチのような物理ネットワークデバイス８４０によってデータ・ストレージ・アレイ８６０に送信される。ネットワークスイッチの例示的で非限定的な例は、ＴＯＲ、コンバージド・ネットワーク・アダプタ（ｃｏｎｖｅｒｇｅｄ  ｎｅｔｗｏｒｋ  ａｄａｐｔｅｒ：ＣＮＡ）、ＦＣｏＥ、ＩｎｆｉｎｉＢａｎｄ、等を含む。
【０１５６】
データ・ストレージ・アレイは、データに対するさまざまな動作を行うように、たとえば、クライアントの読み出し、書き込み、および／またはコンペア・アンド・スワップ（ｃｏｍｐａｒｅ  ａｎｄ  ｓｗａｐ：ＣＡＳ）ＩＯ要求に応答するように構成される。図８Ａおよび図８Ｂは、第１の実施形態に係る読み出しＩＯ要求を行う例示的な方法のための流れ図を図示する。図８Ａに示されているように、データ・ストレージ・アレイは、アドレスからのデータの読み出し要求をクライアントから受信する８００。たとえば、キャッシュストレージまたは永続ストレージにおけるデータの物理的位置が決定される８０１。データがキャッシュストレージ８０２内にある場合、キャッシュ・ストレージ・エントリからデータを取得するための処理が呼び出され８０３、ＡＡＭによって提示されたデータが、クライアントに送信される８０４。
【０１５７】
データがキャッシュストレージ８０２内にない場合、キャッシュストレージにデータ用のエントリが割り当てられているかどうかが決定される８０５。エントリがないと決定された場合８０５、キャッシュストレージにおいてエントリが割り当てられる８０６。永続ストレージから待ち状態の読み出しがマーキングされ８０７、永続ストレージからのデータ読み出し要求が開始される８０８。
【０１５８】
エントリがあると決定された場合８０５、永続ストレージからの待ち状態の読み出し要求がアクティブであるかどうかが決定される８１０。永続ストレージからの待ち状態の読み出し要求がアクティブであることが決定された場合８１０、永続ストレージからの応答に応じてサービス用待ち行列に読み出し要求が追加される８０９。永続ストレージからの待ち状態の読み出し要求がアクティブでないと決定された場合８１０、待ち状態の読み出しが永続ストレージからマーキングされ８０７、永続ストレージからのデータ読み出し要求が開始され８０８、読み出し要求が、永続ストレージからの応答に応じてサービス用待ち行列に読み出し要求が追加される８０９。
【０１５９】
図８Ｂは、キャッシュ・ストレージ・エントリからデータを取得するための例示的な方法の流れ図を図示する。図８Ｂに示されているように、キャッシュストレージの指定されたエントリからデータが読み出され８１２、キャッシュ・ストレージ・エントリの「基準時間」が現在のシステム・クロック・タイムによって更新される８１５。
【０１６０】
図９Ａは、１実施形態に係るクライアントからデータ・ストレージ・アレイにデータを書き込む例示的な方法のための流れ図を図示する。図９Ａに示されているように、データ・ストレージ・アレイは、アドレスへのデータの書き込み要求をクライアントから受信する９００。永続ストレージおよび／またはキャッシュストレージにおけるデータの物理的位置が決定される９０１。キャッシュストレージにデータ用のエントリが割り当てられているかどうかが決定される９０２。エントリがないと決定された場合９０２、キャッシュストレージにおいてデータ用にエントリを割り当てる９０３。キャッシュ・ストレージ・エントリにデータを格納するための処理が呼び出され９０４、書き込みの確認応答をクライアントに送信する９０５。エントリがあると決定された場合９０２、データがキャッシュストレージにあるかどうかが決定される９０６。データがキャッシュストレージにあると決定された場合９０６、データをキャッシュ・ストレージ・エントリに格納するための処理が呼び出され９０４、書き込みの確認応答をクライアントに送信する９０５。
【０１６１】
データがキャッシュストレージにないと決定された場合９０６、キャッシュ・ストレージ・エントリにデータを格納するための処理が呼び出され９０７、書き込みの確認応答がクライアントに送信される９０８。永続ストレージが有効であるかどうかが決定される９０９。永続ストレージが有効であると決定された場合９０９、キャッシュ・ストレージ・エントリにおけるすべてのコンポーネントが有効であるかどうかが決定される９１０。キャッシュストレージにおけるすべてのコンポーネントが有効であると決定された場合は９１０、データエントリは失効および／または無効であるとして永続ストレージにおいてマーキングされる９１１。
【０１６２】
図９Ｂは、データをキャッシュ・ストレージ・エントリに格納する例示的な方法のための流れ図を図示する。図９Ｂに示されているように、データ・ストレージ・アレイのコンポーネントは、キャッシュストレージの指定されたエントリへのデータの書き込みを指定することができる９１２。キャッシュ・ストレージ・エントリに書き込まれたコンテンツが有効なものとしてマーキングする９１３。キャッシュ・ストレージ・エントリがダーティであるとしてマーキングされているかどうかが決定される９１４。キャッシュ・ストレージ・エントリがダーティであるとしてマーキングされていることが決定された場合９１４、キャッシュ・ストレージ・エントリの「基準時間」が現在のシステム時間によって更新される９１５。キャッシュ・ストレージ・エントリがダーティであるとしてマーキングされていないことが決定された場合９１４、キャッシュ・ストレージ・エントリがダーティであるとしてマーキングされ９１６、ダーティであるとしてマーキングされたキャッシュエントリの数が１だけ増加される９１７。
【０１６３】
図９Ｃは、コンペア・アンド・スワップ（ｃｏｍｐａｒｅ  ａｎｄ  ｓｗａｐ：ＣＡＳ）をサポートするクライアントからのデータを書き込む例示的な方法のための流れ図を図示する。図９Ｃに示されているように、データ・ストレージ・アレイは、アドレスへのデータの書き込み要求をクライアントから受信することができる９００。データの物理的位置が、永続ストレージおよび／またはキャッシュストレージにおいて決定される９０１。キャッシュストレージにデータ用のエントリが割り当てられているかどうかが決定される９０２。エントリがないと決定された場合９０２、キャッシュストレージにおいてデータ用にエントリが割り当てられる９０３。キャッシュ・ストレージ・エントリにデータを格納するための処理が呼び出され９０４、書き込みの確認応答をクライアントに送信する９０５。エントリがあると決定された場合９０２、データがキャッシュストレージにあるかどうかが決定される９０６。データがキャッシュストレージにあると決定された場合９０６、キャッシュ・ストレージ・エントリにデータを格納するための処理が呼び出され９０４、書き込みの確認応答をクライアントに送信する。
【０１６４】
データがキャッシュストレージにないと決定された場合９０６、ＣＡＳ要求が書き込みと共に共通アドレスへ順次処理される必要があるかどうかが決定される９１８。書き込みと共に共通アドレスへ順次処理される必要がないと決定された場合９１８、キャッシュ・ストレージ・エントリにデータを格納するための処理が呼び出され９０７、書き込みの確認応答がクライアントに送信される９０８。永続ストレージが有効であるかどうかが決定される９０９。永続ストレージが有効であると決定された場合９０９、キャッシュ・ストレージ・エントリにおけるすべてのコンポーネントが有効であるかどうかが決定される９１０。キャッシュストレージにおけるすべてのコンポーネントが有効であると決定された場合９１０、データエントリが失効および／または無効であるとして永続ストレージにおいてマーキングされる９１１。
【０１６５】
書き込みと共に共通アドレスへ順次処理される必要がないと決定された場合９１８、書き込み要求されたキャッシュラインのコンポーネントに対して待ち状態のＣＡＳ要求があるかどうかが決定される９１９。書き込み要求されたキャッシュラインのコンポーネントに対して待ち状態のＣＡＳ要求があると決定された場合９１９、永続ストレージからの応答に応じてサービス用待ち行列に書き込み要求が追加される１０２０。
【０１６６】
書き込み要求されたキャッシュラインのコンポーネントに対して待ち状態のＣＡＳ要求がないと決定された場合９１９、キャッシュ・ストレージ・エントリにデータを格納するための処理が呼び出され９０７、書き込みの確認応答がクライアントに送信される９０８。永続ストレージが有効であるかどうかが決定される９０９。永続ストレージが有効であると決定された場合９０９、キャッシュ・ストレージ・エントリにおけるすべてのコンポーネントが有効であるかどうかが決定される９１０。キャッシュストレージにおけるすべてのコンポーネントが有効であると決定された場合９１０、データエントリが、失効および／または無効であるとして永続ストレージにおいてマーキングされ９１１。
【０１６７】
図１０は、１実施形態に係るコンペア・アンド・スワップＩＯ要求のための例示的な方法のための流れ図を図示する。図１０に示されているように、データ・ストレージ・アレイは、ライアントから所定のアドレスにおけるＣＡＳデータに対する要求を受信することができる１０００。データの物理的位置が、永続ストレージおよび／またはキャッシュストレージにおいて決定される１００１。キャッシュストレージにデータ用のエントリが割り当てられているかが決定される１００２。エントリがないと決定された場合１００２、キャッシュ・ストレージ・エントリにデータを格納するための処理が呼び出される１００３。
【０１６８】
ＣＡＳ要求からの比較データがキャッシュストレージからのデータに一致するかどうかが決定される１００４。ＣＡＳ要求からの比較データがキャッシュストレージからのデータに一致すると決定された場合１００４、キャッシュ・ストレージ・エントリにデータを格納するための処理が呼び出され１００５、ＣＡＳ確認応答がクライアントに送信される１１０６。ＣＡＳ要求からの比較データがキャッシュストレージからのデータに一致しないと決定された場合１００４、「一致なし」応答がクライアントに送信される１１０６。
【０１６９】
エントリがあると決定された場合１００２、キャッシュストレージにデータ用のエントリが割り当てられているかどうかが決定される１００８。エントリがないと決定された場合１００８、キャッシュストレージにおいてデータ用にエントリが割り当てられる１００９。永続ストレージから待ち状態の読み出しがマーキングされ１０１０、永続ストレージからのデータ読み出し要求が開始される１０１１。
【０１７０】
エントリがあると決定された場合１００８、永続ストレージからの待ち状態の読み出し要求がアクティブであるかどうかが決定される１０１３。永続ストレージからの待ち状態の読み出し要求がアクティブであると決定された場合１０１３、永続ストレージからの応答に応じてサービス用待ち行列にＣＡＳ要求が追加される８０９。
【０１７１】
永続ストレージからの待ち状態の読み出し要求がアクティブでないと決定された場合１０１３、待ち状態の読み出しが永続ストレージからマーキングされ１０１０、永続ストレージからのデータ読み出し要求が開始され１０１１、永続ストレージからの応答に応じてサービス用待ち行列にＣＡＳ要求が追加される８０９。
【０１７２】
図１１は、永続ストレージからデータを検索する例示的な方法のための流れ図を図示する。図１１に示されているように、データが永続ストレージから検索され１２０１、キャッシュ・ストレージ・エントリがダーティであるかどうかが決定される１２０２。キャッシュ・ストレージ・エントリがダーティであると決定された場合１２０２、有効であるとマーキングされていないキャッシュ・ストレージ・エントリにおける全てのコンポーネントについて、永続ストレージから検索されたデータを書き込み１２０３、キャッシュ・ストレージ・エントリ内部で全てのコンポーネントを有効であるとしてマーキングし１２０４、永続ストレージにおけるデータエントリを失効／無効であるとしてマーキングする。
【０１７３】
キャッシュ・ストレージ・エントリがダーティでないと決定された場合１２０２、キャッシュ・ストレージ・エントリ内部で全てのコンポーネントを有効であるとしてマーキングする１２０６。要求待ち行列が検索されたデータのために空であると決定された場合１２０７、待ち行列からの最も長い待ち状態の要求を処理する。
【０１７４】
上述されたように、データは、さまざまな構成で、かつある特定のデータ保護処理にしたがって、データ・ストレージ・アレイ内に格納される。キャッシュストレージは、特に、永続ストレージからのキャッシュストレージの独立したサービス可能性を容易にするために、永続ストレージに直交してＲＡＩＤ保護される。
【０１７５】
図１２は、いくつかの実施形態に係る例示的な直交ｒａｉｄ構成を図示する。図１２は、データが、ストレージレイヤ（たとえば、キャッシュストレージレイヤおよび永続ストレージ）にわたり直交保護スキームにしたがって維持されることを示している。いくつかの実施形態によると、キャッシュストレージおよび永続ストレージは、複数のストレージデバイス、エレメント、アセンブリ、ＣＬＭｓ、ＣＭｓ、ＰＳＭｓ、フラッシュ・ストレージ・エレメント、ハード・ディスク・ドライブ、等にたわり実装される。１実施形態において、ストレージデバイスは、別個の故障ドメインの一部として構成され、たとえば、あるストレージレイヤにおけるデータ行／列エントリの一部を格納するデータコンポーネントが別のストレージレイヤにおける任意のデータ行／列エントリを格納しない。
【０１７６】
いくつかの実施形態によると、各々のストレージレイヤは、独立した保護スキームを実装する。たとえば、データがキャッシュストレージから永続ストレージに移動される場合、「永久ストレージへの書き込み」命令、コマンド、ルーチン、等は、たとえば、データ再構成を行う必要性を回避するために、データモジュール（たとえば、ＣＭｓ、ＣＬＭｓ、およびＰＳＭｓ）のみを使用することができる。データ管理システムは、さまざまなタイプおよび／またはレベルのＲＡＩＤを使用することができる。たとえば、パリティ（シングルパリティを使用する場合）またはＰ／Ｑ（障害リカバリのための２つの追加のユニットを使用する場合）を使用することができる。パリティおよび／またはＰ／Ｑパリティデータが永続ストレージへの書き込み時にキャッシュストレージから永続ストレージに読み出されてＲＡＩＤ一貫性についてデータの検証が行われてもよい。抹消符号を使用する実施形態において、２つより多い保護フィールドを可能にする抹消符号、または４つを超えるストレージコンポーネントが用いられる場合、パリティおよび／またはＰ／Ｑパリティデータがまた、永続ストレージへの書き込み時にキャッシュストレージから永続ストレージに読み出されてＲＡＩＤ一貫性についてデータの検証が行われてもよい。
【０１７７】
データがストレージレイヤにわたり直交して符号化されるので、各々のレイヤにおけるデータ・ストレージ・コンポーネントのサイズは異なる可能性がある。１実施形態において、永続ストレージのデータ・ストレージ・コンテナ・サイドは、少なくとも部分的にはデバイスのネイティブ・ストレージ・サイズに基づく。たとえば、ＮＡＮＤフラッシュメモリのケースにおいて、１つの永続ストレージエレメントあたり１６キロバイトのデータ・ストレージ・コンテナが使用される。
【０１７８】
いくつかの実施形態によると、キャッシュ・ストレージ・エントリのサイズは可変である可能性がある。１実施形態において、より大きなキャッシュ・ストレージ・エントリがキャッシュ・ストレージ・エントリのために使用される。追加の空間が内部メタデータおよび外部メタデータを保持するために利用可能であることを保証するために、いくつかの実施形態は、ＮＡＮＤフラッシュで構成された永続ストレージにわたるデータ保護の９＋２個の配列を用いることができ、たとえば、約１２８キロバイトの外部データと約１６キロバイトの合計システムメタデータおよび外部メタデータとを保持するために約１６キロバイトのページを用いる。そのような例において、キャッシュ・ストレージ・エントリは、１エントリあたり約３６キロバイトである可能性があり、それは、キャッシュエントリを参照するＣＬＭローカルメタデータを含まない。
【０１７９】
ＣＬＭｓにわたる各々の論理キャッシュアドレスは、データ列およびオプションのパリティおよびデュアルパリティ列を保持するＣＬＭｓの特定のセットを有することができる。ＣＬＭｓはまた、ミラーリングされてまたは他のデータ保護スキームで格納されたデータを有することができる。
【０１８０】
いくつかの実施形態によると、ＣＬＭｓにおけるキャッシュストレージからＰＳＭｓへの書き込みは、すべての受信者／ＰＳＭｓにデータを送るための協調動作において行われる。永続ストレージモジュールの各々は、より高いレベルのどのコンポーネント（たとえば、ＣＬＭまたはＡＡＭ）との協調もなしに、それ独自の裁量で、そのコンポーネントの各々にデータをいつ書き込むかを決定することができる。各々のＣＬＭは、システムにおける任意の他のデータモジュールと等しいまたは実質的に等しい量のデータおよび保護列を使用することができる。
【０１８１】
ＰＳＭｓは、システムにおける任意の他のものと等しいまたは実質的に等しい量のデータおよび保護行および／または列を用いることができる。したがって、いくつかの実施形態は、システム全体の演算負荷がデータ管理システムの動作中に相対的に一定または実質的に一定レベルに維持されることを提供する。
【０１８２】
いくつかの実施形態によると、データアクセスは、以下、すなわち、（ａ）ＡＡＭがマスター（複数）およびスレーブ（複数）のＬＭｓを決定することができる、（ｂ）ＡＡＭがＣＬＭからキャッシュストレージにおけるデータのアドレスを取得することができる、（ｄ）データがキャッシュにおいて利用可能である場合にＡＡＭによってアクセスされる、（ｅ）データがキャッシュにおいて直ちに利用可能でない場合、データへのアクセスが、データが永続ストレージに配置されキャッシュに書き込まれるまで延期される、の一部または全部を含む。
【０１８３】
いくつかの実施形態によると、マスターおよびスレーブＣＬＭｓにおけるアドレスが同期される。１実施形態において、この同期は、アクセスが要求されたＡＡＭによって提供されたＣＬＭｓ間のデータパス接続を介して行われる。永続ストレージにおけるデータのアドレスはＣＬＭにおいて維持される。永久ストレージアドレスは、データが書き込まれると変更される。キャッシュ・ストレージ・アドレスは、エントリが論理アドレスのために割り当てられた場合に変更される。
【０１８４】
特定のアドレスのためのデータを保持するＣＬＭのマスター（およびスレーブコピー）は、データを保持するキャッシュエントリのための追加のデータを維持することができる。そのような追加のデータは、キャッシュエントリのダーティまたは変更された状態、エントリにおけるどのＬＢＡｓが有効であるかを示す構造を含むが、これに限定されない。たとえば、エントリにおけるどのＬＢＡｓが有効であるかを示す構造は、ビットベクトルであり得、および／または、ＬＢＡｓは、この構造の目的のためにより大きいエントリに集約される。
【０１８５】
データアクセス制御の直交性は、システムにおける各々のＡＡＭが論理アドレス空間のある特定のセクションにアクセスすることまたは同セクションを担うことを含む。論理アドレス空間は、たとえば、キャッシュ・ストレージ・エントリのサイズに対応するデータエレメントのサイズ未満の、特定の粒度の単位にパーティショニングされる。１実施形態において、データエレメントのサイズは、ノーマルなユーザデータの約１２８キロバイトであり得る（約５２０バイトに対し各々約５１２バイトの２５６個のＬＢＡｓ）。このセクションより上のある特定の数のアドレスビットを得るマッピング機能が用いられる。これらのアドレスビットを選択するために使用されるセクションは、これらのアドレスビットのより低い次元のものであり得る。サイズ「キャッシュ・ストレージ・エントリ」の後のアクセスは、このアドレスにアクセスするための異なる「マスター」ＡＡＭを有することができる。クライアントは、どのＡＡＭが任意のアドレスのためのマスターであるか、および、どのＡＡＭが、そのアドレスのための「マスター」ＡＡＭが故障していた場合にカバーすることができるか、のマッピングを認識することができる。
【０１８６】
いくつかの実施形態によると、ＡＡＭｓおよびマスターＡＡＭｓの協調は、マルチパスＩＯ（ＭＰＩＯ）ドライバを使用してクライアントにより用いられる。データ管理システムは、アウェアなＭＰＩＯドライバを有することをクライアントに要求しない。ＭＰＩＯドライバなしの実施形態において、ＡＡＭは、任意のストレージ要求のために要求がＡＡＭがマスターであるものであるかどうかを識別することができる、その場合、マスターＡＡＭはクライアント要求を直接処理することができる。ＡＡＭが要求されたアドレスのためのマスターＡＡＭでない場合、ＡＡＭは、要求されたアドレスのためのマスターＡＡＭであるそのＡＡＭにストレージシステムの内部（または論理的に内部）の接続を通じて要求を送ることができる。マスターＡＡＭが続いて、データアクセス動作を行うことができる。
【０１８７】
いくつかの実施形態によると、要求からの結果は、（ａ）要求を行ったクライアントに直接返されるか、または、（ｂ）クライアントから要求が行われたＡＡＭに返されるのでＡＡＭがクライアントに直接応答することができるか、のいずれかであり得る。ＡＡＭが所与のアドレスのためのマスターである構成は、作業しているＡＡＭｓのセットが（たとえば、障害、新たなモジュールが挿入／リブートされること、等に起因して）変化した場合に変更されるのみである。したがって、複数のパラレルなＡＡＭｓが、各々のデータプレーン動作のために分解されることを必要とするコンフリクトなしに同一のストレージプールにアクセスすることができる。
【０１８８】
１実施形態において、ある特定の数のＡＡＭｓ（たとえば、４つ）が用いられ、複数のＡＡＭｓのすべてが、すべてのＣＬＭｓおよび制御プロセッサボードに同様に接続される。ＭＰＩＯドライバが、どのＬＢＡが非障害シナリオにおいて各々のＡＡＭを介してアクセスされるかの整合性のあるマッピングをサポートするように動作することができる。１つのＡＡＭに障害がある場合、残りのＡＡＭｓが、この例におけるすべてのデータアクセスのために使用される。１実施形態において、ストレージ・アレイ・システムに接続するＭＰＩＯドライバは、たとえば、ＡＡＭ０が偶数のために使用され、ＡＡＭ１が奇数のために使用されるよう、いずれかのＡＡＭ上の１２８ＫＢ（２５６セクタ）にアクセスすることができる。より大きいストライドサイズが、たとえば、ＬＢＡの２のべき乗の境界で、用いられる。
【０１８９】
図１３Ａは、１実施形態に係る直交ＲＡＩＤ構成における例示的な非障害書き込みを図示する。図１３に示されているように、ＣＬＭｓ１３０５ａ〜１３０５ｄは、それらのそれぞれのセルページ１３１５ａ〜１３１５ｄにデータを書き込むことができる。非障害の実施形態において、パリティモジュール１３１０は、永久ストレージにデータを書き込む場合に用いられない。
【０１９０】
データモジュールに障害があったケースでは、パリティモジュール１３１０が、セルページのためのデータを再構成するために用いられる。図１３Ｂは、１実施形態に係るパリティモジュールを使用した例示的なデータの書き込みを図示する。図１３Ｂに示されているように、パーシャルセルページ１３４０におけるパーシャルセル１３２０ａ〜１３２０ｄの１つ（たとえば、１３２０ｃ）といったデータ搬送モジュールに障害があった場合、パリティを搬送するパリティモジュール３１０が読み出される。データは、ＸＯＲ論理ゲートのような論理エレメント１３３５を通過し、障害のあるパーシャルセル（１３２０ｃ）に対応するセル１３１５ｃに書き込まれる。図１３Ｃは、１実施形態に係るデータの書き込みをキャッシュするための例示的なセルページを図示する。図１３Ｃに示されているように、パリティが論理エレメント１３３５を通じて生成され、続いて編成され、キャッシュモジュール１３１５ａ〜１３１５ｄに送られる。
【０１９１】
いくつかの実施形態によると、永続ストレージに書き込むための方法は、少なくとも部分的には、さまざまなストレージデバイスの制約に基づいて構成される。たとえば、フラッシュメモリは、１フラッシュページあたり１６キロバイトといったある特定のサイズを有するページで配列される。図１３に示されているように、４つの（４）ＣＬＭｓ１３０５ａ〜１３０５ｄがデータを記憶する場合、ＣＬＭｓの各々は、永続ストレージにおける基礎をなすセルページ１３０５ａ〜１３０５ｄにストレージの４分の１を与えるように構成される。
【０１９２】
実施形態において、ＣＬＭから永続ストレージコンポーネントへのデータ転送は、６４ビットプロセッサによって対処される。そのようなものとして、セルページ間のインターリービングの効果的な形態は、永続ストレージに書き込むために準備された各々のＣＬＭ「セルページ」からのビットワードを交互にすることである。
【０１９３】
図１４Ａおよび図１４Ｂは、いくつかの実施形態に係るＬＢＡを使用した例示的なデータストレージ構成を図示する。たとえば、図１４Ａは、Ｐ／Ｑパリティのために構成された５２０バイトを有する外部ＬＢＡｓを含むＬＢＡ１４０５へのデータの書き込みを図示する一方で、図１４Ｂは、Ｐ／Ｑパリティのために構成された５２８バイトを有する外部ＬＢＡｓを含むＬＢＡ１４０５へのデータの書き込みを図示する。より小さいＬＢＡサイズ（たとえば、５２０バイト）は、内部メタデータのためのより大きな空間を可能にするように動作することができる。１実施形態において、両方の符号化フォーマットは、内部メタデータの小さいほうの量が用いられる場合に符号化の差が必要とされないようにサポートされる。内部メタデータの異なる量が使用される場合には、論理ストレージユニットまたはプールが、どの符号化が用いられるかを示すモードを含むように構成される。図１４Ｃは、１実施形態に係る例示的なＬＢＡマッピング構成１４１０を図示する。
【０１９４】
図１５は、１実施形態に係るＡＡＭから永続ストレージへのデータフローの流れ図を図示する。図１５に示されているように、データは、ＡＡＭ１５０５ａ〜１５０５ｎからデータ管理システム内の任意の利用可能なＣＬＭ１５１０ａ〜１５１０ｎに送信される。１実施形態において、ＣＬＭ１５１０ａ〜１５１０ｎは、「マスター」ＣＬＭであり得る。データは、ストレージアドレス１５１５ａ〜１５１５ｎのストレージのために指定される。ストレージアドレス１５１５ａ〜１５１５ｎが分析され１５２０、データが、指定されたストレージアドレスの永続ストレージ１５３０に格納される。
【０１９５】
図１６は、いくつかの実施形態に係るアドレスマッピングを図示する。論理アドレス１６１０は、論理ブロックナンバー１６１５のセグメント（たとえば、ＬＯＧＩＣ＿ＢＬＯＣＫ＿ＮＵＭ［Ｎ−１．０］とラベル付けされ、Ｎは、論理ブロックナンバーである）と、ページナンバー１６２０のセグメント（たとえば、ＰＡＧＥ＿ＮＵＭ［Ｍ−１．０］とラベル付けされ、Ｍはページ番号である）とを含む。論理ブロックナンバー１６１５のセグメントは、物理ブロックナンバー１６２５（たとえば、ＰＨＹＳＩＣＡＬ＿ＢＬＯＣＫ＿ＮＵＭ［Ｐ−１．０］とラベル付けされ、Ｐは、物理ブロックナンバーである）を有するブロック・マップ・テーブル１６３０への論理ブロックナンバーの索引付けのために使用される。物理アドレス１６３５は、論理アドレス１６１０からの論理ブロックナンバー１６１５のセグメントとページナンバー１６２０のセグメントとに基づいて、ブロック・マップ・テーブル１６３０から検索された物理ブロックナンバー１６２５から形成される。
【０１９６】
図１７は、いくつかの実施形態に係る例示的な永続ストレージエレメントの少なくとも一部を図示する。ページ有効１７１０ポインタは、永続ストレージ１７１５における有効なページを指すように構成される。永続ストレージ１７１５は、特に永続ストレージ内に格納されたデータのブロックの位置を指定するための、論理アドレス１７２０ブロックを含む。
【０１９７】
図１８は、いくつかの実施形態に係る例示的なＣＬＭおよび永続ストレージインターフェースを図示する。図１８に示されているように、データ管理システムは、少なくとも１つのプロセッサ１８５０ａ〜１８５０ｎに関連づけられた１若しくはそれ以上のＰＳＭｓ１８１０ａ〜１８１０ｎを有する永続ストレージドメイン１８０５を含む。ＰＳＭｓ１８１０ａ〜１８１０ｎは、フラッシュ・メモリ・デバイスおよび／またはハード・ディスク・ドライブのようなデータ・ストレージ・エレメント１８２５ａ〜１８２５ｎを含み、ＰＣＩｅポートおよび／またはスイッチを含む１若しくはそれ以上のデータポート１８１５ａ〜１８１５ｎによって通信することができる。
【０１９８】
データ管理システムはまた、ユーザデータおよび／またはメタデータのようなデータ１８４０を格納するように構成されたＣＬＭｓ１８３０ａ〜１８３０ｅを有するＣＬＭドメイン１８１０を含む。各々のＣＬＭ１８３０ａ〜１８３０ｅは、１若しくはそれ以上のプロセッサ１８２０ａ〜１８２０ｃを含み、および／または、１若しくはそれ以上のプロセッサ１８２０ａ〜１８２０ｃに関連づけられる。ＣＬＭドメイン１８１０は、４つの（４）データストレージ構造（Ｄ００〜Ｄ３８）とパリティ構造（Ｐ０〜Ｐ８）とを有する、図１８に図示された４＋１個のＲＡＩＤ構成のようにＲＡＩＤ構成される。いくつかの実施形態によると、データは、ＲＡＩＤ構成されたＣＬＭドメイン１８１０から永続ストレージドメイン１８０５に、およびその逆に、流れることができる。
【０１９９】
１実施形態において、少なくとも１つのプロセッサ１８５０ａ〜１８５０ｎは、ＤＲＡＭメモリのようなメモリ（図示せず）と動作可能に結合される。別の実施形態において、少なくとも１つのプロセッサ１８５０ａ〜１８５０ｎは、米国カリフォルニア州Ｓａｎｔａ  ＣｌａｒａのＩｎｔｅｌ（登録商標）  Ｃｏｒｐｏｒａｔｉｏｎによって製造されたＩｎｔｅｌ（登録商標）Ｘｅｏｎ（登録商標）プロセッサを含む。
【０２００】
図１９は、１実施形態に係る例示的な電力分配保持ユニット（ｐｏｗｅｒ  ｄｉｓｔｒｉｂｕｔｉｏｎ  ａｎｄ  ｈｏｌｄ  ｕｎｉｔ：ＰＤＨＵ）を図示する。図１９に示されているように、ＰＤＨＵ１９０５は、１若しくはそれ以上のパワーサプライ１９１０と電気通信することができる。データ管理システムは、複数のＰＤＨＵｓ１９０５を含む。パワーサプライ１９１０は、２つ（２）、４つ（４）、６つ（６）、８つ（８）または１０個（１０）のリダンダント・パワー・サプライのようなリダンダント・パワー・サプライを含む。１実施形態において、パワーサプライ１９１０は、負荷の共有を容易にするように構成され、１２ボルトの供給出力／ＰＤＨＵ入力負荷として構成される。ＰＤＨＵ１９０５は、充電／バランスエレメント１９２０（「スーパーキャップ」）を含む。充電／バランスエレメント１９２０回路は、各々のレベルでのバランスのとれた充電／放電を有する２つの（２）レベルといった複数のレベルを含む。電力分配エレメント１９１５は、ＬＭｓ、ＣＭｓ、ＣＬＭｓ、ＰＳＭｓ、ＡＡＭｓ、ファン、コンピューティングデバイス、等を含むがこれに限定されない、さまざまなデータ管理システムコンポーネント１９４０ａ〜１９４０ｎに電力を分配するように構成される。ＰＤＨＵ１９０５の電力出力は、電力を受け取るコンポーネントのためのパワーサプライを準備するように構成されたコンバータまたは他のデバイスに供給される。１実施形態において、ＰＤＨＵ１９０５の電力出力は、約３．３ボルト〜約１２ボルトであり得る。
【０２０１】
１実施形態において、ＰＤＨＵｓ１９０５は、ＰＤＨＵｓが等しいまたは実質的に等しい割合で用いられるよう、コンポーネント１９４０ａ〜１９４０ｎへの「ロードバンランシング」パワーサプライを調整する。たとえば、電力故障の下、「ロードバランシング」構成は、ＰＤＨＵｓのための最大動作時間がシステム電力を保持することを可能にすることができるので、潜在的に揮発性のメモリが安全に対処される。１実施形態において、データ管理システムがその状態を永続ストレージ状態に変化させると、ＰＤＨＵｓ１９０５における残りの電力は、電力が復元するまでそれが低電力状態を保持するので、データ管理システムの電力部に使用される。電力の復元時、ＰＤＨＵｓ１９０５における充電のレベルは、その後の順序正しいシャットダウンを動作再開前に可能にするのに十分な充電がどのポイントで利用可能であるかを決定するように監視される。
【０２０２】
図２０は、１実施形態に係る例示的なシステムスタックを図示する。データ・ストレージ・アレイ２０６５は、本明細書において説明されるように、アレイ・アクセス・コア２０４５と少なくとも１つのデータ・ストレージ・コア２０５０ａ〜２０５０ｎとを含む。データ・ストレージ・アレイ２０６５は、データ・ストレージ・アレイと外部クライアント・コンピューティング・デバイスとの間のインターフェースを提供するように構成されたホスト・インターフェース・スタック２０７０と対話することができる。ホスト・インターフェース・スタック２０７０は、オブジェクトストアおよび／またはキー値ストア（たとえば、ハイパーテキスト・トランスファー・プロトコル（ｈｙｐｅｒｔｅｘｔ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ：ＨＴＴＰ））アプリケーション２００５、マップ低減アプリケーション（たとえば、Ａｐａｃｈｅ（商標）によるＨａｄｏｏｐ（商標）ＭａｐＲｅｄｕｃｅ）、等といったアプリケーションを含む。最適化および仮想化アプリケーションは、ファイル・システム・アプリケーション２０２５ａ〜２０２５ｎを含む。例示的なファイル・システム・アプリケーションは、ＰＯＳＩＸファイルシステムおよびＡｐａｃｈｅ（商標）によるＨａｄｏｏｐ（商標）分散ファイルシステム（Ｈａｄｏｏｐ  ｄｉｓｔｒｉｂｕｔｅｄ  ｆｉｌｅ  ｓｙｓｔｅｍ：ＨＤＦＳ）、ＭＰＩＯドライバ、（たとえば、ブロックストレージインターフェースを提示するように構成された）論理デバイスレイヤ、（たとえば、ＭＰＩＯドライバにおける）アレイ統合のためのＶＭｗａｒｅのＡＰＩ（ＶＭＷａｒｅ  ＡＰＩ  ｆｏｒ  ａｒｒａｙ  ｉｎｔｅｇｒａｔｉｏｎ：ＶＡＡＩ）に準拠したインターフェース、等を含む。
【０２０３】
ホスト・インターフェース・スタック２０７０は、（たとえば、アレイ・アクセス・モジュール２０４５を介した）データ・ストレージ・アレイ間の通信を容易にするように構成されたさまざまな通信ドライバ２０３５ａ〜２０３５ｎ、たとえば、ＮＩＣｓ、ＨＢＡｓ、および他の通信コンポーネントのためのドライバを含む。物理サーバ２０３５ａ〜２０３５ｎが、ホスト・インターフェース・スタック２０７０内でクライアントＩＯを処理および／またはルーティングするために配列される。クライアントＩＯは、ネットワークスイッチ（たとえば、ＴＯＲ、コンバージド・ネットワーク・アダプタ（ｃｏｎｖｅｒｇｅｄ  ｎｅｔｗｏｒｋ  ａｄａｐｔｅｒ：ＣＮＡ）、ＦＣｏＥ、ＩｎｆｉｎｉＢａｎｄ、等）のような物理ネットワークデバイス２０４０を介してデータ・ストレージ・アレイ２０６０に送信される。
【０２０４】
１実施形態において、コントローラは、すべてのクライアントにデータ管理システムの整合性のある単一の画像を提供するように構成される。１実施形態において、データ管理システム制御ソフトウェアは、オブジェクトストア、マップ低減アプリケーション、ファイルシステム（たとえば、ＰＯＳＩＸファイルシステム）といったシステムスタックのある特定の態様を含み、および／または、使用することができる。
【０２０５】
図２１Ａは、１実施形態に係る例示的なデータ接続プレーンを図示する。図２１Ａに示されているように、接続プレーン２１２５は、コネクタ２１４５ａ〜２１４５ｄおよび２１５０ａ〜２１５０ｆを通じてストレージ・アレイ・モジュール２１１５ａ〜２１１５ｄおよび２１２０ａ〜２１２０ｆと動作可能に接続することができる。１実施形態において、ストレージ・アレイ・モジュール２１１５ａ〜２１１５ｄは、ＡＡＭを含み、ストレージ・アレイ・モジュール２１２０ａ〜２１２０ｆは、ＣＭｓおよび／またはＣＬＭｓを含む。したがって、接続プレーン２１２５は、図２１Ａに図示された通信チャネル２１３０によるＡＡＭｓ２１１５ａ〜２１１５ｄとＣＬＭｓ２１２０ａ〜２１２０ｆとの間の通信を容易にするためのミッドプレーンとして構成される。接続プレーン２１２５は、ストレージ・アレイ・モジュール２１１５ａ〜２１１５ｄおよび２１２０ａ〜２１２０ｆ、通信チャネル２１３０、等の空間要件、材料、数に依存して、さまざまなプロファイル特性を有することができる。１実施形態において、接続プレーン２１２５は、約４４０ミリメートルの幅２１４０と約７５ミリメートルの高さ２１３５とを有することができる。
【０２０６】
接続プレーン２１２５は、１ユニットあたり（たとえば、１データ・ストレージ・アレイ・シャーシあたり）２（２つの）接続プレーンを有する、内部ミッドプレーンとして配列される。たとえば、１つの（１）接続プレーン２１２５は、送信接続プレーンとして動作することができる、他の接続プレーンは、受信接続プレーンとして動作することができる。１実施形態において、すべてのコネクタ２１４５ａ〜２１４５ｄおよび２１５０ａ〜２１５０ｆは、ＰＣＩｅ  Ｇｅｎ３×８（８つの差動ペア）として構成された送信（ＴＸ）接続であり得る。ＣＬＭ２１２０ａ〜２１２０ｆは、コネクタ２１４５ａ〜２１４５ｄに接続するための２つのＰＣＩｅスイッチを含む。コネクタ２１４５ａ〜２１４５ｄおよび２１５０ａ〜２１５０ｆは、本明細書において説明される実施形態にしたがって動作することができるさまざまなタイプの接続を含む。非限定的な例において、接続は、米国カリフォルニア州ＳｕｎｎｙｖａｌｅのＰＬＸ  Ｔｅｃｈｎｏｌｏｇｙ，Ｉｎｃ．によって製造されたＥｘｐｒｅｓｓＬａｎｅ（商標）ＰＬＸ  ＰＣＩｅスイッチのようなＰＣＩｅスイッチとして構成される。コネクタ２１４５ａ〜２１４５ｄの別の非限定的な例は、Ｍｏｌｅｘ（登録商標）Ｉｍｐａｃｔ  ｐａｒｔ  ｎｏ．７６２９０−３０２２のコネクタのような直交ダイレクトコネクタを含み、コネクタ２１５０ａ〜２１５０ｆの非限定的な例は、Ｍｏｌｅｘ（登録商標）Ｉｍａｐｃｔ  ｐａｒｔ  ｎｏ．７６９９０−３０２０のコネクタを含み、両者とも米国イリノイ州ＬｉｓｌｅのＭｏｌｅｘ（登録商標）製である。ミッドプレーン２１２５のペアは、ミッドプレーンに接続するカードがミッドプレーンに対し９０度または実質的に９０度の角度のところに位置するように、カード、ブレード、等の２つのセットに接続することができる。
【０２０７】
図２１Ｂは、第２の実施形態に係る例示的な制御接続プレーンである。接続プレーン２１２５は、通信チャネル２１３０を介したＡＡＭｓ２１１５ａ〜２１１５ｄとＣＬＭｓ２１２０ａ〜２１２０ｆとの間の通信を容易にするためのミッドプレーンとして構成される。接続２１４５ａ〜２１４５ｄおよび２１５０ａ〜２１５０ｆは、シリアルギガバイト（Ｇｂ）イーサネット（登録商標）を含む。
【０２０８】
いくつかの実施形態によると、ＣＬＭｓ２１２０ａ〜２１２０ｆからＡＡＭｓ２１１５ａ〜２１１５ｄへのＰＣＩｅ接続は、「上部」コネクタを介して送られ、これは、中央のコネクタの束がＰＳＭ−ＣＬＭ接続のために使用されることを可能にする。この構成は、信号を搬送するための本質的に３つのミッドプレーンが存在するので、ボードルーティングを単純化するように動作することができる。２つのＡＡＭｓ２１１５ａ〜２１１５ｄのためのデータパスは、各々のＡＡＭからＣＬＭｓ２１２０ａ〜２１２０ｆへの信号が、それ独自の接続が互いにクロスする必要がないようにレイアウトされ、それらが他のＡＡＭからの接続をパスする必要があるのみであるように、別個のカード上で構成される。したがって、最小レイヤを有するボードが、あたかも各々のＡＡＭ２１１５ａ〜２１１５ｄからの接続が、２つのそのようなレイヤのみが上部ミッドプレーン上で（各々のＡＡＭにつき１つ）必要とされるであろう単一の信号レイヤにおけるすべてのＣＬＭｓ２１２０ａ〜２１２０ｆにルーティングされるかのごとく、可能にされる。１実施形態において、高密度高速コネクタを「逃がす」のにいくつかのレイヤを要する場合、いくつかのレイヤが用いられる。別の実施形態において、接続およびトレースは、これらのカード間で搬送される既知のスループットを最大化するような手法で、たとえば、必要とされるレイヤの数を増大させて、行われる。
【０２０９】
図２２Ａは、１実施形態に係る永続ストレージデバイス（たとえば、ＰＳＭ）上の例示的なデータインフライトのデータフローを図示する。図２２Ａに示されているように、ＰＳＭ２２０５は、第１のＰＣＩｅスイッチ２２１５、プロセッサ２２２０、および第２のＰＣＩｅスイッチ２２２５を含む。第１のＰＣＩｅスイッチ２２１５は、フラッシュストレージ２２３０デバイスとプロセッサ２２２０と通信することができる。１実施形態において、プロセッサ２２２０は、ＳｏＣを含む。第２のＰＣＩｅスイッチ２２２５は、プロセッサ２２２０とＣＬＭｓ２２１０ａ〜２２１０ｎと通信することができる。プロセッサ２２２０はまた、メタデータおよび／または一時ストレージエレメント２２３５と通信するように構成される。ＰＳＭ２２０５上のデータフローは、データインフライトのためのプロセッサ２２２０２ＳｏＣのＤＲＡＭオフを使用して動作する。１実施形態において、データインフライトの量は、たとえば、ＳｏＣの中を移動するデータをバッファするために用いられる、ＳｏＣの外部のメモリを使用することによって、増大または最大化される。
【０２１０】
図２２Ｂは、第２の実施形態に係る永続ストレージデバイス（たとえば、ＰＳＭ）上の例示的なデータインフライトのデータフローを図示する。図２２Ｂに示されているように、プロセッサ２２２０ＳｏＣの内部のメモリは、データインフライトのために使用される。データインフライトのためのＳｏＣの内部のメモリを使用することは特に、たとえば、データインフライトがＳｏＣの内部メモリ内に保持される場合に、要求にサービスを提供するために必要とされる外部メモリ帯域幅の量を低減するように動作することができる。
【０２１１】
図２３は、１実施形態に係る例示的なデータ信頼度符号化フレームワークを図示する。図２３に図示された符号化フレームワーク２３０５は、たとえば、データを符号化するためのアレイコントローラによって使用される。アレイコントローラは、ある特定の実施形態によると、ＣＬＭ（キャッシュストレージ）および永続（フラッシュ）ストレージにわたる信頼度のためにデータを直交符号化するように構成される。非限定的な例において、データは、ストレージブロックにおける各々のＬＢＡのための４＋１個のパリティＲＡＩＤ３構成におけるＣＬＭｓのために（たとえば、データがＣＬＭｓに対し同時に書き込みまたは読み出されように）、符号化される。アレイコントローラのための永久ストレージブロックは、たとえば、以下の特性の１若しくはそれ以上にしたがって、大きなアレイと実質的に同様に構成される。すなわち、２５６個のＬＢＡｓ（たとえば、５１２バイトのＬＢＡｓによる１２８ＫＢ）のためのデータが、集合的なグループとして格納されるか、または、システムメタデータが、信頼度のために使用される追加のストレージエントリ（たとえば、ＦＥＣ／ＲＡＩＤ）とともに永久ストレージにおける各々１６キロバイトの約９つの（９）ストレージエントリを使用して、インラインに置かれる。
【０２１２】
１実施形態において、フラッシュメモリに書き込まれるデータは、１６キロバイトの約９つの（９）セットプラス各々のレベルの耐エラー／利用不可能性のための１つの（１）セットを含む。ＦＥＣ／ＲＡＩＤは、ストレートパリティであり得る１つ（１）から、少なくとも２つの（２）同時障害、および最大３つ（３）または４つ（４）までさえも、サポートするように動作することができる。いくつかの実施形態は、フラッシュサブシステム（単数または複数）上のデュアル障害カバレッジのために構成されたアカウントを提供する。
【０２１３】
図２３に図示された符号化フレームワーク２３０５に示されているように、フラッシュにおけるデータ「行」が各々１６キロバイトである場合、ＤＲＡＭ「列」は各々、「ノーマルデータ」における３２キロバイトと「メタデータ」における４キロバイトとを有する３６キロバイトの長さである。各々のＣＬＭキャッシュ列における論理「行」の各々は、１ＬＢＡあたり１２８バイトを有する３２個のＬＢＡのピースを有する、４キロバイトのデータを含む。１実施形態において、ＤＲＡＭキャッシュパリティは、（キャッシュエントリのためのパリティとしての役割を果たす指定されたＣＬＭが欠落していない限り）書き込むことができるが、（他のＣＬＭの１つが欠落していない限り）決して読み出されない。
【０２１４】
図２４Ａ〜図２５Ｂは、いくつかの実施形態に係る例示的なデータの読み出しおよび書き込み動作を図示する。図２４Ａに示されているように、ユーザのデータ２４０５への書き込みおよびユーザの読み出しは、フラッシュ２４１５にデステージされる。図２４Ｃは、ユーザの書き込みおよび後続する読み出しがフラッシュ２４１５にデステージされないことを示す。
【０２１５】
図２４Ｂに示されているように、いくつかの実施形態は、キャッシュ２４１０に部分的に書き込まれたデータ２４０５が、たとえば、多くのケースは読み出されずに書き込まれるデータ（たとえば、サーキュラーログ）を有するので、失効データを統合するためにシステムによって読み出される必要がないことを提供する。データ２４０５の、サイズとログまたはシステムメタデータといった性質とに依存して、いくつかのブロックは、データが再度デステージされる準備ができるまで、永久ストレージからデータのバランスを読み出す必要なく、媒体に頻繁に書き込まれる。１実施形態において、データ統合は、ユーザ／クライアントによって書き込まれたデータ２４０５が、最近のコピーであり、中間キャッシュデータ２４１５を完全にオーバーライトすることができるように、構成される。
【０２１６】
１実施形態において、データ２４０５がユーザによって書き込まれたことがない場合、「永久ストレージにおけるデータ」は存在していない。そのようなものとして、システムは、以前にデータが存在していないので、ユーザによって書き込まれたものからのデータ２４０５におけるギャップ／ホールに耐えることができる。非限定的な例において、システムは、データ２４０５が書き込まれていない空間を、デフォルト値（たとえば、１若しくはそれ以上のゼロのみまたは他のデフォルト値との組み合わせ）で置き換えることができる。これは、たとえば、第１のセクタがキャッシュ２４１０に書き込まれた場合、データ２４０５がデステージされそうな場合、間のポイント、またはそれらの何らかの組み合わせで、何度も行われる。非限定的かつ例示的な例は、置き換えがクリーンな決定点で行われることを提供する。非限定的な例は、キャッシュエントリが割り当てられる際にデータ２４０５がクリアにされる場合、システムはもはや、データが前の状態を有しなかったことを追跡する必要がない可能性がある、ということを提供する。別の非限定的な例において、データ２４０５がコミットされる際にそれが設定される場合、キャッシュ２４１０における有効なセクタのマップと、ブロックが永久ストレージにおいて有効でないという事実とは、たとえば、キャッシュにおけるデータがクリアにされる必要なく、データがデフォルトを使用することを示すように動作することができる。
【０２１７】
１実施形態において、システムは、それが永久ストレージにデステージされるポイントに近接するとみなされるデータ２４０５をスキャンし、システムがデータの欠如に起因して実際の書き込みを行う能力に時間を取られるリスクを冒さないよう任意の欠落しているコンポーネントを読み出す、「統合リーパー」処理を使用することができる。非限定的な例において、ライタースレッドは、統合を待っているアイテムをデステージするためにバイパスすることができる。そのようなものとして、１実施形態は、システムがクライアントからの動作がキャッシュアドレスにタッチした最後の時間の「リアル・タイム・クロック」を維持することができることを提供する。たとえば、最も長く使用されていないＬＲＵが、キャッシュエントリ削除のための適切な時間を決定するために用いられる。データが、部分的にキャッシュ２４１０にあるストレージユニットについて要求された場合、システムは、要求されているコンポーネントをキャッシュが有しない場合、不要な遅延を回避して、永久ストレージからデータを読み出すことができる。
【０２１８】
図２５は、いくつかの実施形態に係るメールボックス／ドアベル領域にアドレス指定する再マッピングのための非トランスペアレントなブリッジの例を図示する。図２５の非限定的な例において図示されているように、ストレージクリップ２５０５ａ〜２５０５ｉの各々は、たとえば、０〜５の番号を振られた、キャッシュ・ルックアップ・モジュール２５１０ａ〜２５１０ｆの各々のための「メールボックス」および「ドアベル」を有することができる。ＰＣＩｅスイッチを介して各々のキャッシュ・ルックアップ・モジュール２５１０ａ〜２５１０ｆのためのメモリ領域にメッセージを送る場合、アドレスは、各々のキャッシュ・ルックアップ・モジュール２５１０ａ〜２５１０ｆがストレージクリップ２５０５ａ〜２５０５ｉに一意のメモリ領域０〜１９におけるすべてのソースストレージクリップ２５０５ａ〜２５０５ｉからのメッセージを受信するように、再マッピングされるであろう。図１８は、図に示された各々のＰＣＩｅスイッチが１０個のストレージクリップ２５０５ａ〜２５０５ｉに接続する場合の１０個のストレージクリップ２５０５ａ〜２５０５ｉ、たとえば、各々の独立した（たとえば、それら独自のソースメモリ空間において作業する）スイッチにおいて別個に行われる同一の種類のマッピングを示す。すべてのストレージクリップ２５０５ａ〜２５０５ｉは、すべてのキャッシュ・ルックアップ・モジュール２５１０ａ〜２５１０ｆに対する同一のアドレス指定を有することができる、逆もまた然りである。ＰＣＩｅスイッチはさらに、すべてのクリップが「ＣＬＭ０」に書き込む場合にＣＬＭ０が各々のストレージクリップ２５０５ａ〜２５０５ｉからそのメールボックスにおいて一意にメッセージを受信できるように、アドレスを再マッピングするように動作することができる。
【０２１９】
図２６は、いくつかの実施形態に係るＣＬＭからＰＳＭへの書き込みの例示的なアドレス指定方法を図示する。図２６に示されているように、基本アドレス２６０５は、任意のＰＳＭへのデータのために構成され、基本アドレス２６１０は、任意のＣＬＭへのデータのために構成される。アドレス指定方法は、ＣＬＭのＰＣＩｅスイッチのイングレスポートを再マッピングするための非トランスペアレントモード２６１５を含む。宛先は、ＰＳＭおよびＣＬＭのＰＣＩｅポートのために指定される２６２０ａ、２６２０ｂ。アドレス指定方法は、ＰＳＭ上のＰＣＩｅスイッチのエグレスポートでの再マッピングのための非トランスペアレントモード２６２５を含む。
【０２２０】
逆のパスが、「ＰＳＭ」を「ＣＬＭ」で置き換えることにより、およびその逆により、図１９から決定される。アウトバウンドに送られているデータのための基本アドレスは、プロセッサの外部であり得る。１実施形態において、データ送信の受信のために使用されるメモリは、データインフライトへの外部メモリ参照の必要を回避するために各々のエンドポイントのオンチップメモリにおいてフィットするように構成される。受信機は、他のエンドポイントとの追加の通信のために通り道をあけるために受信エリアの外へのデータの移動に対処することができる。いくつかの実施形態は、（たとえば、アレイ・アクセス・モジュールＰＣＩｅスイッチを介して）アレイ・アクセス・モジュールおよび互いと通信するＣＬＭｓに適用されるのと同様のまたは実質的に同様の非トランスペアレントなブリッジの再マッピングを提供する。システムは、いくつかの実施形態によると、たとえば、ソースから到達可能なアドレスの許容される範囲を定義することまたは同様の技法によって、同様のデバイス間（たとえば、ＣＬＭからＣＬＭまたはＰＳＭからＰＳＭ）の通信を排除するように構成される。
【０２２１】
いくつかの実施形態によると、書き込みトランザクションは、少なくとも以下の２つのコンポーネント、すなわち、キャッシュへの書き込みと永久ストレージへのデステージとを含む。書き込みトランザクションは、新たに書き込まれたデータによってオーバーライトされなかった失効データの統合を含む。１実施形態において、「アクティブな」ＣＬＭは、すべてのまたは実質的にすべてのＣＬＭｓがマスターとスレーブとの両方を含むリード線に続くキャッシュのコンポーネントを保持することができるように、各々のＬＰＴエントリのためのキャッシュデータへのアクセスを制御することができる。図２７Ａは、読み出しトランザクションの第１の部分の例示的な流れ図を図示し、図２７Ｂは、いくつかの実施形態に係る読み出しトランザクションの第２の部分を図示する。図２７Ｃは、いくつかの実施形態に係る書き込みトランザクションの例示的な流れ図を図示する。図２７Ａ〜図２７Ｃは、データの読み出し／書き込みトランザクションはその中に図示されたものより多いまたは少ないステップを使用する実施形態にしたがって動作することができるので、非限定的であり、例示目的のためにのみ示されているに過ぎない。たとえば、不十分な確認応答を受信することを含む追加のステップおよび／またはブロックが、障害のようなイベントに対処するために追加され、コマンドが、処理を前の状態に沿ってまたは前の状態にステップバックするように移動させるために再生成される。
【０２２２】
大規模データ管理システム
本明細書において説明されるいくつかの実施形態は、特に、上述されたコンポーネントおよびシステムを含む、効果的で効率的なウェブスケール、クラウドスケール、またはラージスケール（「大規模」）のデータ管理システムを可能にするための技法を提供する。１実施形態において、階層的なアクセスアプローチが、ストレージユニットの分散システムのために使用される。別の実施形態において、ホストからの論理アドレスが、バックエンドストレージにデータ完全性を提供するコアノードのセットへのアクセス要求のハイレベルな分散のために使用される。そのような実施形態は、少なくとも部分的に、ＭＰＩＯドライバによって、実装される。マッピングは、たとえば、いくつかのより高位のアドレスビット上のアドレス指定に基づいて決定論的であり得、すべてのクライアントは、同一のマップを有するように構成される。コアノードの障害イベントに応答して、ＭＰＩＯドライバは、ストレージアクセスがどのようにコアノードの小さいほうの数で提供されるかを決定する代替のテーブルを使用することができる。
【０２２３】
大規模システムにおいて、クライアントは、中間スイッチレイヤを介して直接的または間接的に接続される。各々のコアノード内で、ＡＡＭｓは、たとえば、通信デバイス、サーバ、アセンブリ、ボード、等（「ＲＸ−ブレード」）を通じて、クライアントおよび複数のコンポーネント信頼度スケールに通信することができる。ノーマルまたは障害シナリオにおける複数のコアノードにわたりバランスを取るＭＰＩＯドライバと同様に、ＡＡＭは、より精細な粒度のアクセスがどのようにＲＸブレードにわたって分散されるかの決定論的なマップを使用することができる。ほとんどのアクセスのために、データは、ストレージユニットに書き込まれるかまたはストレージユニットから読み出されるかのいずれかで、パラレルにＲＸ−ブレードにわたって送られる。ＡＡＭおよびＲＸ−ブレードは、同一のデータのための後の要求にサービスを提供するために用いられるキャッシュを有することができず、たとえば、すべてのデータが、ストレージユニットからネイティブにアクセスされる。
【０２２４】
大規模システム内のストレージユニットは、たとえば、要求にサービスを提供することができる高性能ティアとより経済的なデータストレージのための低性能ティアとの１若しくはそれ以上を含む、ティアード・ストレージ・システムを内部で提供することができる。両方のティアにデータ投入された場合、高性能ティアが「キャッシュ」とみなされる。両者が存在する場合の高性能ティアと低性能ティア間のデータアクセスは、各々のそれぞれのティアの利点を最大化するように行われる。
【０２２５】
図２８Ａおよび図２８Ｂは、いくつかの実施形態に係る例示的なデータ管理システムユニットを図示する。いくつかの実施形態によると、データ管理システムは、ストレージマガジン２８１０ａ〜２８１０ｘに動作可能に結合されたデータ・サービス・コア２８０５ａ、２８０５ｂから形成されたユニット（または「ラック」）を含む。データ・サービス・コア２８０５ａ、２８０５ｂは、クライアントＩＯ要求にサービスを提供し、ストレージマガジン２８１０ａ〜２８１０ｘに格納されたデータにアクセスすることができる、ＡＡＭｓおよび他のコンポーネントを含む。図２Ａに示されているように、データ管理ユニット２８１５は、１つのデータ・サービス・コア２８０５ａと８つの（８）ストレージマガジン２８１０ａ〜２８１０ｈとを含む。データ管理システムは、１つ（１）から４つ（４）のユニットといった複数のデータ管理ユニット２８１５を含む。図２８Ｂは、ユニット２８２０、たとえば、データ・サービス・コア２８０５ｂと１６個の（１６）ストレージマガジン２８１０ｉ〜２８１０ｘとを含むより大きいフルスケールのデータ管理システムを図示する。１実施形態において、データ管理システムは、５つ（５）から８つ（８）のユニット２８２０を含む。１実施形態は、ユニット２８１５、２８２０、データ・サービス・コア２８０５ａ、２８０５ｂ、ストレージマガジン２８１０ａ〜２８１０ｘ、および／または任意の他のコンポーネントの数および／または配列に限定されず、というのも、これらは例示目的のために提供されているに過ぎないからである。実際、１実施形態にしたがって動作することができるユニットおよび／またはコンポーネントの任意の数および／または組み合わせが本明細書において意図される。
【０２２６】
図２９は、１実施形態に係る例示的なウェブスケールのデータ管理システムを図示する。図２９に示されているように、ウェブスケールのデータ管理システムは、サーバ２９１０を含むサーバラック２９０５ａ〜２９０５ｎと、データ管理システムとデータクライアント間の通信を容易にするためのトップオブラック（ｔｏｐ−ｏｆ−ｒａｃｋ：ＴＯＲ）スイッチのようなスイッチ２９１５と、を含む。通信ファブリック２９２０は、サーバラック２９０５ａ〜２９０５ｎをデータ・サービス・コア２９２５ａ〜２９２５ｄのようなデータ管理システムのコンポーネントと接続するように構成される。１実施形態において、通信ファブリック２９２０は、ＳＡＮ接続、ＦｉｂｒｅＣｈａｎｎｅｌ、イーサネット（登録商標）（たとえば、ＦＣｏＥ）、Ｉｎｆｉｎｉｂａｎｄ、またはそれらの組み合わせを含むが、これに限定されない。データ・サービス・コア２９２５ａ〜２９２５ｄ（「コア」）は、ＲＸ−ブレード２９４０、アレイ・アクセス・モジュール２９４５、および再分散レイヤ２９５０を含む。コアマガジンインターコネクト２９３０は、データ・サービス・コア２９２５ａ〜２９２５ｄとストレージマガジン２９３５との間の接続を提供するように構成される。
【０２２７】
データ・サービス・コア２９２５ａ〜２９２５ｄによる高いスループットのための最大並列処理を可能にするために、ある特定の実施形態は、データがＬＢＡによりＲＸ−ブレード２９４０にわたって分割されることを提供する。たとえば、各々のＬＢＡの断片が、バックエンドでの各々のコンポーネントマガジンに格納される。これは、基本動作に対処するために必要とされるスループットに参加するための複数のストレージマガジン２９３５および複数のＲＸ−ブレード２９４０を提供するように動作することができる。ストレージマガジン２９３５の内部では、単一のポインタグループが、各々のストレージマガジンにおける各々の論理マッピングされたデータ・ストレージ・ブロックのために用いられる。非限定的な例は、ポインタグループが、低性能ストレージポインタ、高性能ストレージポインタ、および／またはオブションのフラグビットの１若しくはそれ以上で構成されることを提供する。
【０２２８】
１実施形態において、各々のデータ・サービス・コア２９２５ａ〜２９２５ｄにおけるすべてのＲＸ−ブレード２９４０は、システムにおけるすべてのストレージマガジン２９３５に、論理的または物理的に接続される。これは、各々のマガジン２９３５からすべてのＲＸ−ブレード２９４０へのダイレクトケーブリング、たとえばパッシブであり得るパッチパネルを介して間接的に、および／または、アクティブなスイッチを介して間接的に、を含むがこれに限定されない、さまざまな方法にしたがって構成される。
【０２２９】
図３０は、ある特定の実施形態に係るデータ管理システム内のデータアクセスの例示的な流れ図を図示する。データ転送が、ＡＡＭｓ３００５とマガジン３０１５間で確立され、ＲＸ−ブレード３０１０は本質的に、ＲＡＩＤ機能を提供しながらデータ転送を容易にする。ＲＡＩＤ−エンジン（たとえば、ＲＸ−ブレード３０１０）がキャッシュを維持しない場合、デバイスは、ＡＡＭ３００５から（クライアントに向けて）（データが格納される）マガジン３０１５にデータおよび内部システム制御メッセージを確実に送信するためにそれらのＩＯピンの実質的にすべてを用いる。
【０２３０】
図３１は、１実施形態に係る例示的な再分散レイヤを図示する。いくつかの実施形態によると、再分散レイヤ３１００は、ＲＸ−ブレードとストレージマガジン間の接続（たとえば、論理接続）を提供するように構成される。図３１に示されているように、再分散レイヤ３１００は、ストレージチャンバ３１１０への再分散セット３１０５ａ〜３１０５ｎと、ＲＸ−ブレード３１３５への再分散セット３１２０ａ〜３１２０ｂとを含む。制御／管理再分散セット３１２５は、制御カード３１１５、３１３０のために構成される。
【０２３１】
いくつかの実施形態によると、再分散レイヤ３１００は、ストレージマガジン３１１０からＲＸ−ブレード３１３５への個々のファイバーの固定のクロスオーバーによってそのような接続を提供するように構成される。１実施形態において、このクロスオーバーは、少量の電力を必要とするかまたは実質的に何の電力も必要とせずに、パッシブであり得る（たとえば、パッシブな光クロスオーバーとして構成される）。１実施形態において、再分散レイヤ３１００は、ストレージマガジン３１１０から後方にケーブルを取り込み、ＲＸ−ブレード３１３５の正面にケーブルを有する、長いカードのセットを含む。
【０２３２】
ＲＸ−ブレードは、データが個々のストレージマガジンにわたってどのようにレイアウトされるかの整合性のあるマッピングにアクセスするように構成される。１実施形態において、データは、ストレージの位置を決定するためにテーブルを検索することを容易にするように、または、既知の長さの時間において計算によって決定可能であるように、レイアウトされる。テーブルを使用するいくつかの実施形態において、ルックアップテーブルは、直接的にまたはマッピング機能を介して、使用され、複数のビットは値を格納するテーブルエントリを見つけるためのものである。たとえば、マッピングに依存して、いくつかのエントリは、何のデータもそこに格納されないように構成され、もしそうであれば、マップ機能は、内部エラーを識別可能であるべきである。１実施形態において、テーブルは、どのマガジンが各々のＲＡＩＤ列を格納するかを示すためのインジケータを有する。効率的なパッキングは、このオフセットでのアクセスが特定のストレージマガジンを使用するかまたは使用しないかのいずれであるかどうかを示す単一のビットを有する。列が固定の順序で用いられるか、または、オフセットが、どの列が開始列を有するかを言うために格納される。すべてのビットが、列が用いられる順序でマーキングされるか、または、識別子が、各々のビットがどの列に対応するかを示すために使用される。たとえば、フィールドが、各々の連続するビットがその列を表すマーキングされたＮ個のビットの各々について言うテーブルを参照することができる。データは、コンテンツを保持するすべてのストレージマガジンがコンテンツを保持するすべての他のストレージマガジンを有するＲＡＩＤグループにおけるコンテンツの等しいまたは実質的に等しい量であり得るように配列される。これは、コンテンツを保持するストレージマガジンをアドミニストレータによって「ライブ／ホット」スペアとして用いられるように指定されるものから区別するように動作することができる。列に対するストレージマガジンの固定マッピングによると、ストレージマガジンの障害時に、そのＲＡＩＤグループにおけるそれらの他のマガジンのみが、ＲＡＩＤ再構成に参加することができる。非常に均一なデータ分散によると、任意のストレージマガジンの障害は、コンプレックスにおけるすべての他のアクティブなマガジンにわたって分散されるデータを再構成するために必要とされる作業負荷を有する。
【０２３３】
図３２Ａは、１実施形態に係る大規模データ管理システムのための例示的な書き込みトランザクションを図示する。図３２Ｂは、１実施形態に係る大規模データ管理システムのための例示的な読み出しトランザクションを図示する。図３２Ｃおよび図３２Ｄは、１実施形態に係る大規模データ管理システムのための例示的なコンペア・アンド・スワップ（ｃｏｍｐａｒｅ−ａｎｄ−ｓｗａｐ：ＣＡＳ）トランザクションの、それぞれ第１部分と第２の部分とを図示する。
【０２３４】
図３３Ａおよび図３３Ｂは、それぞれ、第１および第２の実施形態に係る例示的なストレージ・マガジン・チャンバを図示する。図３３Ａに示されているように、ストレージ・マガジン・チャンバ３３０５は、制御アクセスのために、メモリエレメント３３２０ａ〜３３２０ｂと、イーサネット（登録商標）通信エレメント３３３５ａ、３３３５ｂ、およびＰＣＩｅスイッチ３３４０ｇ（たとえば、４８個の（４８）レーンＧｅｎ３  ＰＣＩｅスイッチ）のようなさまざまな通信エレメントと、動作可能に通信するプロセッサ３３１０を含む。コアコントローラ３３１５は、上りリンク３３２５ａ〜３３２５ｄを介してデータ・サービス・コアに通信するように構成される。コネクタ３３１５ａ〜３３１５ｆのセットは、チャンバ３３０５をキャッシュ・ルックアップ・モジュールに接続するように構成される一方で、コネクタ３３４５ａ〜Ｖ４５ｅは、（たとえばライザーを介して）チャンバをストレージクリップに接続するように構成される。１実施形態において、コントローラ３３１５は、コネクタ３３１５ａ〜３３１５ｆによるキャッシュおよびルックアップのためにキャッシュ・ルックアップ・モジュールと通信するように構成される。さまざまな通信スイッチ３３４０ａ〜３３４０ｇ（たとえば、ＰＣＩｅスイッチ）がチャンバ内の通信を提供するように構成される。
【０２３５】
１実施形態において、すべてのデータは、たとえばデータ・サービス・コアを介して、データクライアントによって書き込みまたは読み出される場合に、キャッシュを通じて明示的に転送される。すべてのデータが、二次的なストレージに実際に書き込まれる必要があるとは限らない。たとえば、何らかのデータが一時的に作成され、コアによって書き込まれ、続いて「解放される」（たとえば、ＴＲＩＭのように、もはや使用されないものとしてマーキングされる）場合、データは実際、非常に一過性のものであり得るので、それは次のレベルのストレージには決して書き込まれない。そのようなイベントにおいて、「書き込み」は、「取り込まれた」またはバックエンドストレージへのいずれの影響を有することからも除去されたものとみなされる。ログファイルはしばしば、相対的に小さく、潜在的には、本明細書において提供されるある特定の実施形態にしたがって構成されるシステムのキャッシュの内部に全体的にフィットする。いくつかの実施形態において、ログは、他のストレージへの変化量よりも多くのデータがそれに書き込まれるので、バックエンドストレージに提示される潜在的な書き込みの負荷は、著しく、たとえば半分にカットされる。
【０２３６】
１実施形態において、ローカリティを有しないランダムな順序で非常に小さい位置にアクセスする作業負荷は、たとえば、小さい書き込みは、永続ストレージからのより大きいページの読み出しを生成し、続いて後に、キャッシュエントリが取り戻される場合に再書き込みされるので、バックエンドストレージへの増大する書き込みの負荷を見る可能性がある。より最近のアプリケーションは、より大きいアクセスとともによりコンテンツリッチな傾向にあり、および／または、よりローカリティを有する傾向にあるデータの分析を行う。真にランダムな作業負荷のために、いくつかの実施形態は、最小レイテンシとともに実際のストレージほどの大きさのキャッシュを使用するように構成される。
【０２３７】
加えて、システムは、任意の第２のレベルのストレージなしに動作するように構成される。例示的かつ非限定的な例において、永続性のために、キャッシュ・ルックアップ・モジュールは、磁気抵抗ランダムアクセスモリ（ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  ｒａｎｄｏｍ−ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＭＲＡＭ）、相変化メモリ（ｐｈａｓｅ−ｃｈａｎｇｅ  ｍｅｍｏｒｙ：ＰＲＡＭ）、キャパシタ／フラッシュバックＤＲＡＭ、またはそれらの組み合わせを含むがこれに限定されない永続メモリの形態によってデータ投入される。１実施形態において、キャッシュレイヤはセカンダリ・ストレージ・レイヤに直接インターフェースすることができるので、チャンバコントローラ３３１５から二次的なストレージへの直接的なデータ転送パスは必要とされない。
【０２３８】
図３４は、セカンダリストレージをキャッシュに接続するための例示的なシステムを図示する。ストレージマガジン内で、複数のＣＬＭｓ（たとえば、図３４におけるＣＬＭ０〜ＣＬＭ５）が、複数の永続ストレージノード（たとえば、ＰＳＭｓ）への接続を有する。キャッシュのＲＡＩＤストレージは、多数のプロセッサが外部からアクセスされる任意のデータのためのデータストレージを共有することを可能にする。これはまた、セカンダリ・ストレージ・ソリューションへの接続を構築するためのメカニズムを提供する。１実施形態において、ＰＣＩｅスイッチは、各々のＣＬＭに直接接続され、これらのほとんどは、バックエンド・ストレージ・ノード（または中央コントローラ）および１若しくはそれ以上の「トランジットスイッチ」に接続されたそれらのすべてにも接続する。
【０２３９】
永久ストレージにおけるデータがストレージマガジン内に一意に格納される一方で、非限定的な例は、ＣＬＭが、４＋１個のＲＡＩＤまたは８＋１個のＲＡＩＤを含むがこれに限定されないＲＡＩＤ配列で格納されたデータを有することを提供する。１実施形態において、システムにおけるデータ転送は、システムにおける各々の転送のために複数の「トランジットスイッチ」にわたってバランスを取られる。１実施形態において、ＸＯＲ関数が用いられ、セカンダリ・ストレージ・ノードＩＤおよびＣＬＭ  ＩＤのＸＯＲが、中間スイッチを決定するために使用される。ＲＡＩＤ配列における格納されたデータは、中間スイッチ間のデータ転送のバランスを取るように動作することができる。いくつかの実施形態によると、保護されたＲＡＩＤ、潜在的に揮発性のキャッシュを配備することは、キャッシュからＣＬＭｓに由来する可能性がある永続ストレージへの書き込みを使用することができる。たとえば、書き込みは、非障害シナリオにおけるリアルデータの一部を有するＣＬＭｓに由来する可能性があるが、というのも、これは宛先のパリティ演算を節約するからである。永続ストレージからキャッシュへの読み出しは、データコンポーネントおよびパリティが格納されるすべての５つのＣＬＭｓにデータを送ることができる。１実施形態において、ＣＬＭは、各々のキャッシュエントリのためのコンテンツを有しないように構成される。この実施形態において、キャッシュエントリを指すＬＰＴｓは、ＣＬＭｓのいずれか（たとえば、残りの５つのうちのいずれかにミラーリングされた図３４のＣＬＭ０〜ＣＬＭ５）に対するものである。
【０２４０】
大きいキャッシュが、本明細書において提供されるある特定の実施形態にしたがって形成される。非限定的な例は、６４ＧＢのＤＩＭＭｓを使用した６つのＣＬＭｓを有する各々のストレージマガジンが大規模キャッシュサイズを可能にすることができることを提供する。１実施形態において、各々のＬＰＴエントリは、たとえば、それがＤＲＡＭメモリにおける単一のワードライン（プロセッサによって対処される６４ビット＋８ビットのＥＣＣ）にフィットすることができるように、６４ビットであり得る。
【０２４１】
フラッシュデバイスが永久ストレージとして使用される実施形態において、大規模キャッシュは、これらのデバイスの寿命を向上させることができる。読み出しのためにフラッシュにアクセスする動作は、基礎をなすデバイスにマイナーな「乱れ」を引き起こす可能性がある。乱れを引き起こす可能性がある読み出しの数は一般的に、多くの数千ものアクセスにおいて測定されるが、アクセス間周波数に依存する可能性がある。平均的なキャッシュのターンオーバー時間が、フラッシュページへの効果的な最小アクセス間時間を決定することができる。そのようなものとして、大規模キャッシュを有することにより、任意の所与のページへの連続したアクセス間の時間は、デバイスの安定化を可能にする多くの秒において測定される。
【０２４２】
図３５Ａは、１実施形態に係る例示的なストレージマガジンの上面図を図示する。図３５Ａに示されているように、ストレージマガジン３５０５は、キャッシュ・ルックアップ・モジュール３５３０ａ〜３５３０ｆと動作可能に通信する永続ストレージエレメント５１５ａ〜５１５ｅ（ＰＳＭｓまたはストレージクリップ）を含む。リダンダント・パワー・サプライ３５３５ａ、３５３５ｂおよびウルトラキャパシタおよび／またはバッテリー３５２０ａ〜３５２０ｊが、ストレージマガジン３５０５のための電力管理機能に電力を供給し、および／または、同電力管理機能を容易にするために、含まれる。ファン３５２５ａ〜３５２５ｌのセットが、そのコンポーネントを冷却するためにストレージマガジン１４０５内に配列される。図３５Ｂは、ストレージマガジンのための電力分散および保持ユニット３５５５ａ〜３５５５ｅの配列を図示した、ストレージマガジン１４０５の例示的な媒体の側面図を図示する。図３５Ｃは、ストレージマガジン３５０５のケーブルの側面図を図示する。
【０２４３】
図３６Ａは、１実施形態に係る例示的なデータ・サービス・コアの上面図を図示する。図３６Ａに示されているように、データ・サービス・コア３６０５は、ミッドプレーンコネクタ３６２０ｇを通じて接続されたＲＸ−ブレード３６１５ａ〜３６１５ｈ、制御カード３６１０ａ、３６１０ｂ、およびＡＡＭｓ３６２０ｈを含む。再分散レイヤ３６２５ｄが、ＲＸ−ブレード３６１５ａ〜３６１５ｈとストレージマガジン間の接続を提供することができる。データ・サービス・コア３６０５は、電力分散ユニット３６３５およびパワーサプライ３６４０ａｂ、３６４０ｂといったさまざまなパワー・サプライ・エレメントを含む。図３６Ｂおよび図３６Ｃは、図３６Ａに示された例示的なデータ・サービス・コアの、それぞれ、媒体の側面図およびケーブルの側面図を図示する。１実施形態において、１若しくはそれ以上のＲＸ−ブレード３６１５ａ〜３６１５ｈは、たとえば、ミッドプレーンおよびＡＡＭｓへのＲＤＬを介したマガジンへの一方のサイドの接続により、信頼度レイヤの一部または全部を実装することができる。
【０２４４】
図３７は、１実施形態に係る例示的なチャンバ制御ボードを図示する。図３７に示されているように、チャンバ制御ボード３７０５は、メモリエレメント３７５０ａ〜３７５０ｈと動作可能に通信するプロセッサ３７５５ａ、３７５５ｂを含む。プロセッサツープロセッサ通信チャネル３７５５が、プロセッサ３７５５ａ、３７５５を相互接続することができる。チャンバ制御ボード３７０５は特に、たとえば、上りリンクモジュール３７１５による、チャンバとのデータ・サービス・コアのインターフェース接続に対処するように構成される。１実施形態において、上りリンクモジュール３７５は、イーサネット（登録商標）通信エレメント３７２５ａを介したデータ・サービス・コア制御３７６０ａ、３７６０ｂへの、および、ＰＣＩｅスイッチ３７２０ａを介したＲＸ−ブレード３７１０ａ〜３７１０ｎへの、上りリンクを有する光上りリンクモジュールとして構成される。１実施形態において、各々の信号は、パラレルリンクで（たとえば、波長分割多重（ｗａｖｅｌｅｎｇｔｈ  ｄｉｖｉｓｉｏｎ  ｍｕｌｔｉｐｌｅｘｉｎｇ：ＷＤＭ）によって）搬送される。１実施形態において、ＰＣＩｅエレメント３７２０ａ〜３７２０ｅは、カードの１つの生成でのリンクの幅が、システムの最大ケイパビリティに厳密にアラインメントされる必要がないように、データ送信のための生成としての幅のレーンの数（たとえば、ＰＣＩｅ  Ｇｅｎ１、Ｇｅｎ２、またはＧｅｎ３）を自動ネゴシエートすることができる。チャンバ制御ボード３７０５は、チャンバ制御ボードをキャッシュ・ルックアップ・モジュールに接続するためのＰＣＩｅコネクタ３７４０と、データ管理システムの制御通信ネットワークに接続するためのイーサネット（登録商標）コネクタ３７４５ａ、３７４５ｂと、を含む。
【０２４５】
図３８は、１実施形態に係る例示的なＲＸ−ブレードを図示する。図３８に示されているように、ＲＸ−ブレード３８０５は、メモリエレメント３８４０ａ〜３８４０ｄに動作可能に結合されたプロセッサ３８１０を含む。いくつかの実施形態によると、メモリエレメント３８４０ａ〜３８４０ｄは、プロセッサ３１０のための１若しくはそれ以上のメモリチャネルにおいて配列されたＤＩＭＭおよび／またはフラッシュ・メモリ・エレメントを含む。プロセッサ３８１０は、イーサネット（登録商標）スイッチ（８つの（８）レーン）といった通信エレメント３８３０と通信することができる。
【０２４６】
ＲＸ−ブレード３８０５は、ストレージマガジン３８２０ａ〜３８２０ｎをサポートするように構成された上りリンクモジュール３８２５ａ〜３８２５ｎを含む。１実施形態において、上りリンクモジュール３８２５ａ〜３８２５ｄは、光学的であり得る。別の実施形態において、上りリンクモジュール３８２５ａ〜３８２５ｄは、たとえば、ＲＤＬを介してコネクタに関連づけられている各々のセットを有する（８つの（８））セットにグループ分けされた、トランシーバを含む。
【０２４７】
１若しくはそれ以上のＦＥＣ／ＲＡＩＤコンポーネント３８１５ａ、３８１５ｂが、ＲＸ−ブレード３８０５上に配列される。１実施形態において、ＦＥＣ／ＲＡＩＤコンポーネント３８１５ａ、３８１５ｂは、エンドポイントとして構成される。非限定的な例は、ＦＥＣ／ＲＡＩＤコンポーネント３８１５ａ、３８１５ｂのための機能がＣＰＵ上のソフトウェアにおいて実装される場合、ノードがルートコンプレックスであり得ることを提供する。そのような例において、それをＦＥＣ／ＲＡＩＤコンポーネント３８１５ａ、３８１５ｂに接続するＰＣＩｅスイッチは、非トランスペアレントなブリッジを用いることができるので、いずれかのサイド（ストレージ・マガジン・チャンバまたはＡＡＭ）のプロセッサが、それらとより効率的に通信することができる。
【０２４８】
ＦＥＣ／ＲＡＩＤコンポーネント３８１５ａ、３８１５ｂは、さまざまな通信エレメント３８５ａ〜３８５ｅと通信することができる。１実施形態において、通信エレメント３８５ａ〜３８５ｅの少なくとも一部は、ＰＣＩｅスイッチを含む。ＦＥＣ／ＲＡＩＤコンポーネント３８１５ａ、３８１５ｂは、コネクタ３８５０ａ〜３８５０ｄを介して通信することができ、通信エレメント３８５ａ〜３８５ｅを通じて上りリンクモジュール３８２５ａ〜３８２５ｄおよび／またはそのコンポーネントと通信することができる。
【０２４９】
本開示は、さまざまな態様の例示として意図された本願において説明された特定の実施形態の観点で限定されない。さまざまな変更および変形が、当業者に明らかであるように、その精神および範囲から逸脱せずに行われる。本開示の範囲内の機能的に均等な方法および装置が、本明細書において挙げられたものに加えて、上記説明から当業者に明らかであろう。そのような変更および変形は、添付の請求項の範囲内に入るように意図される。本開示は、添付の請求項の観点によってのみ限定されるものではなく、そのような請求項が権利を有する均等物の完全な範囲を伴う。本開示が、特定の方法、試薬、化合物、合成物、または生物系に限定されず、それらは当然のことながら多様であり得る、ということが理解されるべきである。本明細書において使用される専門用語が、特定の実施形態を説明する目的のためのものであるにすぎず、限定を意図しないこともまた理解されるべきである。
【０２５０】
本明細書における実質的に任意の複数形および／または単数形の用語の使用に関し、当業者は、文脈および／または応用例にとって適切であるよう、複数形から単数形におよび／または単数形から複数形に翻訳する。さまざまな単数形／複数形の置換が、明確性のために本明細書において明確に記載される。
【０２５１】
一般的に、本明細書において、特に添付の請求項（たとえば、添付の請求項の本体部分）において使用される用語は一般的に、「オープンな」用語として意図される（たとえば、「含む」という用語は、「〜を含むが、〜に限定されない」と解釈されるべきであり、「有する」という用語は、「少なくとも〜を有する」と解釈されるべきであり、「含む」という用語は、「〜を含むが、〜に限定されない」と解釈されるべきである、といった具合である）ことが当業者によって理解されるであろう。さまざまな構成、方法、およびデバイスは、さまざまなコンポーネントまたはステップを（「含むが、〜に限定されない」という意味で解釈される）「備える」という用語で説明されるが、構成、方法、およびデバイスはまた、「本質的に」さまざまなコンポーネントおよびステップ「から成る」か、または、さまざまなコンポーネントおよびステップ「から成り」得、そのような専門用語は、本質的にクローズなメンバーのグループを定義するものとして解釈されるべきである。導入される請求項の列挙の特定の数が意図される場合、そのような意図は、請求項において明示的に列挙されるであろうこと、そのような列挙がない場合には、そのような意図は存在しないということが、当業者によってさらに理解されるであろう。たとえば、理解の援助として、以下の添付の請求項は、請求項の列挙を導入するための「少なくとも１つの」および「１若しくはそれ以上の」という導入句の使用を含む。しかしながら、そのような句の使用は、不定冠詞の「ａ」または「ａｎ」による請求項の列挙の導入が、たとえ同一の請求項が「１若しくはそれ以上の」または「少なくとも１つの」といった導入句および「ａ」または「ａｎ」といった不定冠詞を含む（たとえば、「ａ」および／または「ａｎ」は、「少なくとも１つの」または「１若しくはそれ以上の」を意味するように解釈されるべきである）場合であっても、そのような導入される請求項の列挙を含む任意の特定の請求項を、１つのそのような列挙のみを含む実施形態に限定することを暗示するように解釈されるべきではない。請求項の列挙を導入するために使用される定冠詞の使用についても同じことが言える。加えて、たとえ導入される請求項の列挙の特定の数が明示的に列挙されていたとしても、当業者は、そのような列挙が少なくとも１つの列挙される数を意味するように解釈されるべきである（たとえば、他の修飾成句なしの「２つの列挙」のありのままの列挙は、少なくとも２つの列挙または２若しくはそれ以上の列挙を意味する）ことを認識するであろう。さらに、「Ａ、Ｂ、およびＣ、等の少なくとも１つ」に例えられる規則が使用される例において、一般的にそのような構成は、当業者がその規則を理解するであろう意味合いに意図される（たとえば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、および／または、Ａ、Ｂ、およびＣを共に有する、といったシステムを含むが、これに限定されないであろう）。「Ａ、Ｂ、またはＣ、等の少なくとも１つ」に例えられる規則が使用される例において、一般的にそのような構成は、当業者がその規則を理解するであろう意味合いで意図される（たとえば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、および／または、Ａ、Ｂ、およびＣを共に有する、といったシステムを含むが、これに限定されないであろう）。明細書中にせよ、請求項中にせよ、または図中にせよ、２若しくはそれ以上の代替の用語を提示する事実上離接的な任意の語および／または句は、それらの用語の１つ、それらの用語のいずれか、または両方の用語を含む可能性を意図するものと理解されるべきである、ということが当業者によってさらに理解されるであろう。たとえば、「ＡまたはＢ」という句は、「Ａ」または「Ｂ」または「ＡおよびＢ」の可能性を含むように理解されるであろう。
【０２５２】
加えて、本開示の特徴または態様がマーカッシュグループの観点で説明される場合、当業者は、本開示がまた、それによってマーカッシュグループの任意の個々のメンバーまたはメンバーのサブグループの観点で説明されることを認識するであろう。
【０２５３】
当業者によって理解されるように、任意のおよびすべての目的のために、たとえば書面による明細書を提供する観点で、本明細書に開示されるすべての範囲はまた、任意のおよびすべての可能な部分範囲と、その部分範囲の組み合わせとを含む。任意のリストアップされた範囲は、同一の範囲を十分に説明し、同一の範囲を少なくとも半分、三分の一、四分の一、五分の一、十分の一、等に等しく分解されることを可能にするものと容易に認識される。非限定的な例として、本明細書において議論された各々の範囲は、下方の三分の一、中間の三分の一、上方の三分の一、等に容易に分解される。これもまた当業者によって理解されるように、「最大〜までの」、「少なくとも」、等といったすべての表現は、列挙された数を含み、上述された部分範囲に後に分解される範囲のことを言う。最後に、当業者によって理解されるように、範囲は、各々の個々のメンバーを含む。かくして、たとえば、１〜３つのセルを有するグループは、１、２、または３つのセルを有するグループのことを言う。同様に、１〜５つのセルを有するグループは、１、２、３、４、または５つのセル、等を有するグループのことを言う。
【０２５４】
上に開示されたおよび他のさまざまな特徴および機能、またはその代替物は、多くの他の異なるシステムまたはアプリケーションに組み合わせられることができる。現時点でそれに対し予期されないまたは予想されないさまざまな代替物、変更、バリエーション、または改善が、当業者によって後に行われることができ、その各々もまた、開示された実施形態に含まれるように意図される。
【０２５５】
【表１】
2015532985.tif 000003
【０２５６】
【表２】
2015532985.tif 000004
【０２５７】
【表３】
2015532985.tif 000005
【０２５８】
【表４】
2015532985.tif 000006
【０２５９】
【表５】
2015532985.tif 000007
【０２６０】
【表６】
2015532985.tif 000008
【０２６１】
【表７】
2015532985.tif 000009
【０２６２】
【表８】
2015532985.tif 000010
【図１Ａ】
2015532985.tif 000011
【図１Ｂ】
2015532985.tif 000012
【図２Ａ】
2015532985.tif 000013
【図２Ｂ】
2015532985.tif 000014
【図２Ｃ】
2015532985.tif 000015
【図２Ｄ】
2015532985.tif 000016
【図２Ｅ】
2015532985.tif 000017
【図２Ｆ】
2015532985.tif 000018
【図２Ｇ】
2015532985.tif 000019
【図３Ａ】
2015532985.tif 000020
【図３Ｂ】
2015532985.tif 000021
【図３Ｃ】
2015532985.tif 000022
【図３Ｄ】
2015532985.tif 000023
【図４Ａ】
2015532985.tif 000024
【図４Ｂ】
2015532985.tif 000025
【図４Ｃ】
2015532985.tif 000026
【図４Ｄ】
2015532985.tif 000027
【図４Ｅ】
2015532985.tif 000028
【図４Ｆ】
2015532985.tif 000029
【図４Ｇ】
2015532985.tif 000030
【図４Ｈ】
2015532985.tif 000031
【図５Ａ】
2015532985.tif 000032
【図５Ｂ】
2015532985.tif 000033
【図５Ｃ】
2015532985.tif 000034
【図６Ａ】
2015532985.tif 000035
【図６Ｂ】
2015532985.tif 000036
【図６Ｃ】
2015532985.tif 000037
【図７Ａ】
2015532985.tif 000038
【図７Ｂ】
2015532985.tif 000039
【図７Ｃ】
2015532985.tif 000040
【図７Ｄ】
2015532985.tif 000041
【図７Ｅ】
2015532985.tif 000042
【図７Ｆ】
2015532985.tif 000043
【図７Ｇ】
2015532985.tif 000044
【図８Ａ】
2015532985.tif 000045
【図８Ｂ】
2015532985.tif 000046
【図９Ａ】
2015532985.tif 000047
【図９Ｂ】
2015532985.tif 000048
【図９Ｃ】
2015532985.tif 000049
【図１０】
2015532985.tif 000050
【図１１】
2015532985.tif 000051
【図１２】
2015532985.tif 000052
【図１３Ａ】
2015532985.tif 000053
【図１３Ｂ】
2015532985.tif 000054
【図１３Ｃ】
2015532985.tif 000055
【図１４Ａ】
2015532985.tif 000056
【図１４Ｂ】
2015532985.tif 000057
【図１４Ｃ】
2015532985.tif 000058
【図１５】
2015532985.tif 000059
【図１６】
2015532985.tif 000060
【図１７】
2015532985.tif 000061
【図１８】
2015532985.tif 000062
【図１９】
2015532985.tif 000063
【図２０】
2015532985.tif 000064
【図２１Ａ】
2015532985.tif 000065
【図２１Ｂ】
2015532985.tif 000066
【図２２Ａ】
2015532985.tif 000067
【図２２Ｂ】
2015532985.tif 000068
【図２３】
2015532985.tif 000069
【図２４Ａ】
2015532985.tif 000070
【図２４Ｂ】
2015532985.tif 000071
【図２４Ｃ】
2015532985.tif 000072
【図２５】
2015532985.tif 000073
【図２６】
2015532985.tif 000074
【図２７Ａ】
2015532985.tif 000075
【図２７Ｂ】
2015532985.tif 000076
【図２７Ｃ】
2015532985.tif 000077
【図２８Ａ】
2015532985.tif 000078
【図２８Ｂ】
2015532985.tif 000079
【図２９】
2015532985.tif 000080
【図３０】
2015532985.tif 000081
【図３１】
2015532985.tif 000082
【図３２Ａ】
2015532985.tif 000083
【図３２Ｂ】
2015532985.tif 000084
【図３２Ｃ】
2015532985.tif 000085
【図３２Ｄ】
2015532985.tif 000086
【図３３Ａ】
2015532985.tif 000087
【図３３Ｂ】
2015532985.tif 000088
【図３４】
2015532985.tif 000089
【図３５Ａ】
2015532985.tif 000090
【図３５Ｂ】
2015532985.tif 000091
【図３５Ｃ】
2015532985.tif 000092
【図３６Ａ】
2015532985.tif 000093
【図３６Ｂ】
2015532985.tif 000094
【図３６Ｃ】
2015532985.tif 000095
【図３７】
2015532985.tif 000096
【図３８】
2015532985.tif 000097
【国際調査報告】
2015532985.tif 000098