IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ピュア ストレージ, インコーポレイテッドの特許一覧

特表2024-540893ストレージシステムのためのコンテキスト駆動型ユーザインターフェース
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-06
(54)【発明の名称】ストレージシステムのためのコンテキスト駆動型ユーザインターフェース
(51)【国際特許分類】
   G06F 13/14 20060101AFI20241029BHJP
   G06F 13/10 20060101ALI20241029BHJP
   H04L 41/22 20220101ALI20241029BHJP
【FI】
G06F13/14 330F
G06F13/10 340A
G06F13/14 330E
H04L41/22
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024523170
(86)(22)【出願日】2022-10-18
(85)【翻訳文提出日】2024-06-11
(86)【国際出願番号】 US2022078296
(87)【国際公開番号】W WO2023069945
(87)【国際公開日】2023-04-27
(31)【優先権主張番号】17/503,556
(32)【優先日】2021-10-18
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.UNIX
2.TENSORFLOW
(71)【出願人】
【識別番号】511175211
【氏名又は名称】ピュア ストレージ, インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100126480
【弁理士】
【氏名又は名称】佐藤 睦
(72)【発明者】
【氏名】ダージ,プラカシュ
(72)【発明者】
【氏名】マ,スティーブン
(72)【発明者】
【氏名】アーウィン,ジョナス
(57)【要約】
ストレージシステムのためのコンテキスト駆動型ユーザインターフェースであって、ユーザアカウントから、システムのためのシステムインターフェースにアクセスする要求を受信することと、システムの現在の態様を記述する少なくとも1つの重要なシステム特性を識別することと、少なくとも1つの重要なシステム特性に基づいてシステムインターフェースを再構成することと、再構成されたシステムインターフェースをユーザアカウントのユーザに提示することとを含む、ストレージシステムのためのコンテキスト駆動型ユーザインターフェース。
【特許請求の範囲】
【請求項1】
方法であって、
ユーザアカウントから、システムのためのシステムインターフェースにアクセスする要求を受信することと、
前記システムの現在の態様を記述する少なくとも1つの重要なシステム特性を識別することと、
前記少なくとも1つの重要なシステム特性に基づいて前記システムインターフェースを再構成することと、
前記再構成されたシステムインターフェースを前記ユーザアカウントのユーザに提示することとを含む、方法。
【請求項2】
前記少なくとも1つの重要なシステム特性に基づいて前記システムインターフェースを再構成することが、前記ユーザアカウントセッションのユーザアカウントパーソナリティを識別することを含む、請求項1に記載の方法。
【請求項3】
前記少なくとも1つの重要なシステム特性に基づいて前記システムインターフェースを再構成することが、前記少なくとも1つの重要なシステム特性に関連付けられた視覚要素が前記システムインターフェースのプライマリ要素となるように、前記システムインターフェース内に視覚要素を配置することを含む、請求項1に記載の方法。
【請求項4】
前記システムの前記現在の態様を記述する前記少なくとも1つの重要なシステム特性を識別することが、重要度に基づいてシステム特性のランク付けされたリストから前記少なくとも1つの重要なシステム特性を選択することを含む、請求項1に記載の方法。
【請求項5】
前記少なくとも1つの重要なシステム特性に基づいて前記システムインターフェースを再構成することが、前記システム特性のランク付けされたリスト内の前記少なくとも1つの重要なシステム特性のランク付けに基づいて前記システムインターフェース内に視覚要素を配置することを含む、請求項4に記載の方法。
【請求項6】
前記少なくとも1つの重要なシステム特性に基づいて前記システムインターフェースを再構成することが、前記少なくとも1つの重要なシステム特性に関連付けられた視覚要素を用いて前記システムインターフェース内に静的オブジェクトを投入することを含む、請求項1に記載の方法。
【請求項7】
前記少なくとも1つの重要なシステム特性が、前記システムのストレージ利用レベルを含む、請求項1に記載の方法。
【請求項8】
前記少なくとも1つの重要なシステム特性が、外部システムに対する前記システムの現在の態様を記述する、請求項1に記載の方法。
【請求項9】
前記少なくとも1つの重要なシステム特性が、前記システムインターフェースにアクセスする前記要求に基づいて識別される、請求項1に記載の方法。
【請求項10】
前記システムインターフェースを再構成することが、オブジェクト関係モデルに更に基づく、請求項1に記載の方法。
【請求項11】
コンピュータプロセッサと、前記コンピュータプロセッサに動作可能に結合されたコンピュータメモリと、を備える、装置であって、コンピュータプログラム命令内に配置された前記コンピュータメモリが、前記コンピュータプロセッサによって実行されるときに、前記装置に、
ユーザアカウントから、システムのためのシステムインターフェースにアクセスする要求を受信する工程と、
前記システムの現在の態様を記述する少なくとも1つの重要なシステム特性を識別する工程と、
前記少なくとも1つの重要なシステム特性に基づいて前記システムインターフェースを再構成する工程と、
前記再構成されたシステムインターフェースを前記ユーザアカウントのユーザに提示する工程とを実行させる、装置。
【請求項12】
前記少なくとも1つの重要なシステム特性に基づいて前記システムインターフェースを再構成することが、前記ユーザアカウントセッションのユーザアカウントパーソナリティを識別することを含む、請求項11に記載の装置。
【請求項13】
前記少なくとも1つの重要なシステム特性に基づいて前記システムインターフェースを再構成することが、前記少なくとも1つの重要なシステム特性に関連付けられた視覚要素が前記システムインターフェースのプライマリ要素となるように、前記システムインターフェース内に視覚要素を配置することを含む、請求項11に記載の装置。
【請求項14】
前記システムの前記現在の態様を記述する前記少なくとも1つの重要なシステム特性を識別することが、重要度に基づいてシステム特性のランク付けされたリストから前記少なくとも1つの重要なシステム特性を選択することを含む、請求項11に記載の装置。
【請求項15】
前記少なくとも1つの重要なシステム特性に基づいて前記システムインターフェースを再構成することが、前記システム特性のランク付けされたリスト内の前記少なくとも1つの重要なシステム特性のランク付けに基づいて前記システムインターフェース内に視覚要素を配置することを含む、請求項14に記載の装置。
【請求項16】
前記少なくとも1つの重要なシステム特性に基づいて前記システムインターフェースを再構成することが、前記少なくとも1つの重要なシステム特性に関連付けられた視覚要素を用いて前記システムインターフェース内に静的オブジェクトを投入することを含む、請求項11に記載の装置。
【請求項17】
前記少なくとも1つの重要なシステム特性が、前記システムのストレージ利用レベルを含む、請求項11に記載の装置。
【請求項18】
前記少なくとも1つの重要なシステム特性が、外部システムに対する前記システムの現在の態様を記述する、請求項11に記載の装置。
【請求項19】
前記少なくとも1つの重要なシステム特性が、前記システムインターフェースにアクセスする前記要求に基づいて識別される、請求項11に記載の装置。
【請求項20】
コンピュータ可読媒体上に配置されたコンピュータプログラム製品であって、コンピュータプログラム命令を含む前記コンピュータプログラム製品が、実行されるときに、コンピュータに、
ユーザアカウントから、システムのためのシステムインターフェースにアクセスする要求を受信する工程と、
前記システムの現在の態様を記述する少なくとも1つの重要なシステム特性を識別する工程と、
前記少なくとも1つの重要なシステム特性に基づいて前記システムインターフェースを再構成する工程と、
前記再構成されたシステムインターフェースを前記ユーザアカウントのユーザに提示する工程とを実行させる、コンピュータプログラム製品。
【発明の詳細な説明】
【図面の簡単な説明】
【0001】
図1A】一部の実装形態による、データストレージのための第1の例示的なシステムを例解する。
図1B】一部の実装形態による、データストレージのための第2の例示的なシステムを例解する。
図1C】一部の実装形態による、データストレージのための第3の例示的なシステムを例解する。
図1D】一部の実装形態による、データストレージのための第4の例示的なシステムを例解する。
図2A】一部の実施形態による、複数のストレージノードと、ネットワークアタッチトストレージを提供するために各ストレージノードに結合された内部ストレージと、を有する、ストレージクラスタの斜視図である。
図2B】一部の実施形態による、複数のストレージノードを結合する相互接続スイッチを示すブロック図である。
図2C】一部の実施形態による、ストレージノードのコンテンツ及び不揮発性ソリッドステートストレージユニットのうちの1つのコンテンツを示す、マルチレベルブロック図である。
図2D】一部の実施形態による、一部の先の図面のストレージノード及びストレージユニットの実施形態を使用する、ストレージサーバ環境を示す。
図2E】一部の実施形態による、制御プレーン、計算及びストレージプレーン、並びに下層物理リソースと相互作用する権限を示す、ブレードハードウェアブロック図である。
図2F】一部の実施形態による、ストレージクラスタのブレード内の弾力性ソフトウェア層を描示する。
図2G】一部の実施形態による、ストレージクラスタのブレード内の権限及びストレージリソースを描示する。
図3A】本開示の一部の実施形態による、データ通信のためにクラウドサービスプロバイダと結合されたストレージシステムの図を記載する。
図3B】本開示の一部の実施形態によるストレージシステムの図を記載する。
図3C】本開示の一部の実施形態によるクラウドベースのストレージシステムの例を記載する。
図3D】本明細書で説明されるプロセスのうちの1つ以上を実施するように特に構成され得る例示的なコンピューティングデバイスを例解する。
図3E】ストレージサービス(本明細書では「データサービス」とも称される)を提供するためのストレージシステム376のフリートの例を例解する。
図4】本開示の一部の実施形態による、ストレージシステムのためのコンテキスト駆動型ユーザインターフェースのための例示的な方法を例解するフローチャートを記載する。
図5】本開示の一部の実施形態による、ストレージシステムのためのコンテキスト駆動型ユーザインターフェースの追加の例示的な方法を例解するフローチャートを記載する。
図6】本開示の一部の実施形態による、ストレージシステムのためのコンテキスト駆動型ユーザインターフェースの追加の例示的な方法を例解するフローチャートを記載する。
図7】本開示の一部の実施形態による、ストレージシステムのためのコンテキスト駆動型ユーザインターフェースの追加の例示的な方法を例解するフローチャートを記載する。
図8】本開示の一部の実施形態による、ストレージシステムのためのコンテキスト駆動型ユーザインターフェースの追加の例示的な方法を例解するフローチャートを記載する。
【発明を実施するための形態】
【0002】
本開示の実施形態によるストレージシステムのためのコンテキスト駆動型ユーザインターフェースのための例示的な方法、装置、及び製品を、図1Aから始まる添付の図面を参照して説明する。図1Aは、一部の実装形態による、データストレージのための例示的なシステムを例解している。システム100(本明細書では「ストレージシステム」とも称される)は、限定ではなく、例解を目的として、多数の要素を含む。システム100は、他の実装形態では、同じ又は異なる方法で構成された、同じ、より多い、又はより少ない要素を含み得ることに留意されたい。
【0003】
システム100は、複数のコンピューティングデバイス164A~Bを含む。コンピューティングデバイス(本明細書では「クライアントデバイス」とも称される)は、例えば、データセンター内のサーバ、ワークステーション、パーソナルコンピュータ、ノートブックなどとして具現化され得る。コンピューティングデバイス164A~Bは、ストレージエリアネットワーク(storage area network、「SAN」)158又はローカルエリアネットワーク(local area network、「LAN」)160を介して1つ以上のストレージアレイ102A~Bにデータ通信のために結合され得る。
【0004】
SAN158は、種々のデータ通信ファブリック、デバイス、及びプロトコルを用いて実装され得る。例えば、SAN158のためのファブリックは、ファイバチャネル、イーサネット、インフィニバンド、シリアルアタッチド小型コンピュータシステムインターフェース(Serial Attached Small Computer System Interface、「SAS」)などを含み得る。SAN158とともに使用されるデータ通信プロトコルは、アドバンストテクノロジーアタッチメント(Advanced Technology Attachment、「ATA」)、ファイバチャネルプロトコル、小型コンピュータシステムインターフェース(Small Computer System Interface、「SCSI」)、インターネット小型コンピュータシステムインターフェース(Internet Small Computer System Interface、「iSCSI」)、HyperSCSI、不揮発性メモリエクスプレス(Non-Volatile Memory Express、「NVMe」)オーバーファブリックなどを含み得る。SAN158は、限定ではなく例解のために提供されることが留意され得る。他のデータ通信結合が、コンピューティングデバイス164A~Bとストレージアレイ102A~Bとの間に実装され得る。
【0005】
LAN160はまた、種々のファブリック、デバイス、及びプロトコルを用いて実装され得る。例えば、LAN160のためのファブリックは、イーサネット(802.3)、ワイヤレス(802.11)などを含んでもよい。LAN160で使用されるデータ通信プロトコルは、伝送制御プロトコル(Transmission Control Protocol、「TCP」)、ユーザデータグラムプロトコル(User Datagram Protocol、「UDP」)、インターネットプロトコル(Internet Protocol、「IP」)、ハイパーテキスト転送プロトコル(HyperText Transfer Protocol、「HTTP」)、ワイヤレスアクセスプロトコル(Wireless Access Protocol、「WAP」)、ハンドヘルドデバイス転送プロトコル(Handheld Device Transport Protocol、「HDTP」)、セッション開始プロトコル(Session Initiation Protocol、「SIP」)、リアルタイムプロトコル(Real Time Protocol、「RTP」)などを含み得る。LAN160は、インターネット162にも接続することができる。
【0006】
ストレージアレイ102A~Bは、コンピューティングデバイス164A~Bのための永続的データストレージを提供することができる。実装形態では、ストレージアレイ102Aは、シャーシ(図示せず)に収容することができ、ストレージアレイ102Bは、別のシャーシ(図示せず)に収容することができる。ストレージアレイ102A及び102Bは、1つ以上のストレージアレイコントローラ110A~D(本明細書では「コントローラ」とも称される)を含み得る。ストレージアレイコントローラ110A~Dは、コンピュータハードウェア、コンピュータソフトウェア、又はコンピュータハードウェア及びソフトウェアの組み合わせを含む自動コンピューティングマシンのモジュールとして具現化することができる。一部の実装形態では、ストレージアレイコントローラ110A~Dは、種々のストレージタスクを実行するように構成され得る。ストレージタスクは、コンピューティングデバイス164A~Bから受信されたデータをストレージアレイ102A~Bに書き込むこと、ストレージアレイ102A~Bからデータを消去すること、ストレージアレイ102A~Bからデータを取り出し、コンピューティングデバイス164A~Bにデータを提供すること、ディスク利用及び性能を監視及び報告すること、独立ドライブの冗長アレイ(Redundant Array of Independent Drive、「RAID」)又はRAIDのようなデータ冗長動作などの冗長動作を実施すること、データを圧縮すること、データを暗号化することなどを含み得る。
【0007】
ストレージアレイコントローラ110A~Dは、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、「FPGA」)、プログラマブルロジックチップ(Programmable Logic Chip、「PLC」)、特定用途向け集積回路(Application Specific Integrated Circuit、「ASIC」)、システムオンチップ(System-on-Chip、「SOC」)、又は処理デバイス、中央処理ユニット、コンピュータメモリ、若しくは種々のアダプタなどの個別の構成要素を含む任意のコンピューティングデバイスを含む、種々の方法で実装され得る。ストレージアレイコントローラ110A~Dは、例えば、SAN158又はLAN160を介した通信をサポートするように構成されたデータ通信アダプタを含んでもよい。一部の実装形態では、ストレージアレイコントローラ110A~Dは、LAN160に独立して結合され得る。実装形態では、ストレージアレイコントローラ110A~Dは、ミッドプレーン(図示せず)を介したデータ通信のためにストレージアレイコントローラ110A~Dを永続的ストレージリソース170A~B(本明細書では「ストレージリソース」とも称される)に結合するI/Oコントローラなどを含み得る。永続的ストレージリソース170A~Bは、任意の数のストレージドライブ171A~F(本明細書では「ストレージデバイス」とも称される)及び任意の数の不揮発性ランダムアクセスメモリ(non-volatile Random Access Memory、「NVRAM」)デバイス(図示せず)を含み得る。
【0008】
一部の実装形態では、永続的ストレージリソース170A~BのNVRAMデバイスは、ストレージアレイコントローラ110A~Dから、ストレージドライブ171A~Fに記憶されるデータを受信するように構成され得る。一部の例では、データは、コンピューティングデバイス164A~Bから生じ得る。一部の例では、NVRAMデバイスにデータを書き込むことは、ストレージドライブ171A~Fにデータを直接書き込むことよりも迅速に実行され得る。実装形態では、ストレージアレイコントローラ110A~Dは、NVRAMデバイスを、ストレージドライブ171A~Fに書き込まれることになっているデータのための迅速にアクセス可能なバッファとして利用するように構成され得る。NVRAMデバイスをバッファとして使用する書き込み要求のレイテンシは、ストレージアレイコントローラ110A~Dがデータをストレージドライブ171A~Fに直接書き込むシステムに対して改善され得る。一部の実装形態では、NVRAMデバイスは、高帯域幅、低レイテンシRAMの形態のコンピュータメモリを用いて実装され得る。NVRAMデバイスは、NVRAMデバイスへの主電力損失の後にRAMの状態を維持する固有の電源を受け取るか又は含むことができるため、NVRAMデバイスは「不揮発性」と称される。かかる電源は、バッテリ、1つ以上のキャパシタなどであり得る。電力損失に応答して、NVRAMデバイスは、RAMのコンテンツをストレージドライブ171A~Fなどの永続的ストレージに書き込むように構成され得る。
【0009】
実装形態では、ストレージドライブ171A~Fは、データを永続的に記録するように構成された任意のデバイスを指すことができ、「永続的に」又は「永続的な」は、電力の損失後に記録されたデータを維持するデバイスの能力を指す。一部の実装形態では、ストレージドライブ171A~Fは非ディスク記憶媒体に対応することができる。例えば、ストレージドライブ171A~Fは、1つ以上のソリッドステートドライブ(solid-state drive、「SSD」)、フラッシュメモリベースのストレージ、任意のタイプのソリッドステート非揮発性メモリ、又は任意の他のタイプの非機械的ストレージデバイスであってもよい。他の実装形態では、ストレージドライブ171A~Fは、ハードディスクドライブ(hard-disk drive、「HDD」)などの機械的な又は回転するハードディスクを含み得る。
【0010】
一部の実装形態では、ストレージアレイコントローラ110A~Dは、ストレージアレイ102A~B内のストレージドライブ171A~Fからデバイス管理責任をオフロードするように構成され得る。例えば、ストレージアレイコントローラ110A~Dは、ストレージドライブ171A~F内の1つ以上のメモリブロックの状態を記述し得る制御情報を管理してもよい。制御情報は、例えば、特定のメモリブロックが故障し、もはや書き込まれるべきではないこと、特定のメモリブロックがストレージアレイコントローラ110A~Dのためのブートコードを含むこと、特定のメモリブロックに対して実行されたプログラム-消去(program-erase、「P/E」)サイクルの数、特定のメモリブロックに記憶されたデータの使用年数、特定のメモリブロックに記憶されたデータのタイプなどを示すことができる。一部の実装形態では、制御情報は、関連するメモリブロックとともにメタデータとして記憶され得る。他の実装形態では、ストレージドライブ171A~Fの制御情報は、ストレージアレイコントローラ110A~Dによって選択されるストレージドライブ171A~Fの1つ以上の特定のメモリブロックに記憶され得る。選択されたメモリブロックは、選択されたメモリブロックが制御情報を含むことを示す識別子でタグ付けされ得る。識別子は、制御情報を含むメモリブロックを迅速に識別するために、ストレージドライブ171A~Fと併せてストレージアレイコントローラ110A~Dによって利用され得る。例えば、ストレージコントローラ110A~Dは、制御情報を含むメモリブロックの位置を特定するコマンドを発行してもよい。制御情報は、制御情報の一部が複数の位置に記憶され得るほど、制御情報が、例えば、冗長性の目的のために複数の位置に記憶され得るほど、又は制御情報が、別様に、ストレージドライブ171A~F内の複数のメモリブロックにわたって分散され得るほど大きくなり得ることに留意されたい。
【0011】
実装形態では、ストレージアレイコントローラ110A~Dは、ストレージドライブ171A~F内の1つ以上のメモリブロックの状態を記述する制御情報をストレージドライブ171A~Fから取り出すことによって、ストレージアレイ102A~Bのストレージドライブ171A~Fからデバイス管理責任をオフロードすることができる。ストレージドライブ171A~Fから制御情報を取り出すことは、例えば、ストレージアレイコントローラ110A~Dが、特定のストレージドライブ171A~Fの制御情報の位置をストレージドライブ171A~Fに問い合わせることによって実行され得る。ストレージドライブ171A~Fは、ストレージドライブ171A~Fが制御情報の位置を識別することを可能にする命令を実行するように構成され得る。命令は、ストレージドライブ171A~Fに関連付けられた、又は別様でストレージドライブ171A~F上に位置するコントローラ(図示せず)によって実行されてもよく、ストレージドライブ171A~Fに、各メモリブロックの一部をスキャンさせて、ストレージドライブ171A~Fの制御情報を記憶するメモリブロックを識別させてもよい。ストレージドライブ171A~Fは、ストレージドライブ171A~Fの制御情報の位置を含む応答メッセージをストレージアレイコントローラ110A~Dに送信することによって応答してもよい。応答メッセージの受信に応答して、ストレージアレイコントローラ110A~Dは、ストレージドライブ171A~Fの制御情報の位置に関連付けられたアドレスに記憶されたデータを読み出す要求を発行してもよい。
【0012】
他の実装形態では、ストレージアレイコントローラ110A~Dは、制御情報を受信したことに応答して、ストレージドライブ管理動作を実施することによって、ストレージドライブ171A~Fからデバイス管理責任を更にオフロードすることができる。ストレージドライブ管理動作は、例えば、ストレージドライブ171A~F(例えば、特定のストレージドライブ171A~Fに関連付けられたコントローラ(図示せず))によって典型的に実施される動作を含み得る。ストレージドライブ管理動作は、例えば、データがストレージドライブ171A~F内の故障したメモリブロックに書き込まれないことを確実にすること、適切なウェアレベリングが達成されるようにデータがストレージドライブ171A~F内のメモリブロックに書き込まれることを確実にすることなどを含み得る。
【0013】
実装形態では、ストレージアレイ102A~Bは、2つ以上のストレージアレイコントローラ110A~Dを実装することができる。例えば、ストレージアレイ102Aは、ストレージアレイコントローラ110A及びストレージアレイコントローラ110Bを含んでもよい。所与のインスタンスにおいて、ストレージシステム100の単一のストレージアレイコントローラ110A~D(例えば、ストレージアレイコントローラ110A)は、プライマリステータス(本明細書では「プライマリコントローラ」とも称される)で指定されてもよく、他のストレージアレイコントローラ110A~D(例えば、ストレージアレイコントローラ110A)は、セカンダリステータス(本明細書では「セカンダリコントローラ」とも称される)で指定されてもよい。プライマリコントローラは、永続的ストレージリソース170A~B内のデータを改変する(例えば、永続的ストレージリソース170A~Bにデータを書き込む)許可などの特定の権利を有することができる。プライマリコントローラの権利の少なくとも一部は、セカンダリコントローラの権利に取って代わることができる。例えば、プライマリコントローラが権利を有する場合、セカンダリコントローラは、永続的ストレージリソース170A~B内のデータを改変する許可を有しない場合がある。ストレージアレイコントローラ110A~Dの状態は変化する場合がある。例えば、ストレージアレイコントローラ110Aはセカンダリステータスで指定されてもよく、ストレージアレイコントローラ110Bはプライマリステータスで指定されてもよい。
【0014】
一部の実装形態では、ストレージアレイコントローラ110Aなどのプライマリコントローラは、1つ以上のストレージアレイ102A~Bのプライマリコントローラとして機能してもよく、ストレージアレイコントローラ110Bなどの第2のコントローラは、1つ以上のストレージアレイ102A~Bのセカンダリコントローラとして機能してもよい。例えば、ストレージアレイコントローラ110Aは、ストレージアレイ102A及びストレージアレイ102Bのプライマリコントローラであってもよく、ストレージアレイコントローラ110Bは、ストレージアレイ102A及び102Bのセカンダリコントローラであってもよい。一部の実装形態では、ストレージアレイコントローラ110C及び110D(「ストレージ処理モジュール」とも称される)は、プライマリステータスもセカンダリステータスも有しない場合がある。ストレージ処理モジュールとして実装されるストレージアレイコントローラ110C及び110Dは、プライマリ及びセカンダリコントローラ(例えば、それぞれストレージアレイコントローラ110A及び110B)とストレージアレイ102Bとの間の通信インターフェースとして機能することができる。例えば、ストレージアレイ102Aのストレージアレイコントローラ110Aは、SAN158を介してストレージアレイ102Bに書き込み要求を送信してもよい。書き込み要求は、ストレージアレイ102Bのストレージアレイコントローラ110C及び110Dの両方によって受信され得る。ストレージアレイコントローラ110C及び110Dは、通信を容易にし、例えば、書き込み要求を適切なストレージドライブ171A~Fに送信する。一部の実装形態では、ストレージ処理モジュールを使用して、プライマリ及びセカンダリコントローラによって制御されるストレージドライブの数を増加させることができることに留意されたい。
【0015】
実装形態では、ストレージアレイコントローラ110A~Dは、ミッドプレーン(図示せず)を介して、1つ以上のストレージドライブ171A~Fと、ストレージアレイ102A~Bの一部として含まれる1つ以上のNVRAMデバイス(図示せず)とに通信可能に結合される。ストレージアレイコントローラ110A~Dは、1つ以上のデータ通信リンクを介してミッドプレーンに結合されてもよく、ミッドプレーンは、1つ以上のデータ通信リンクを介してストレージドライブ171A~F及びNVRAMデバイスに結合されてもよい。本明細書で説明されるデータ通信リンクは、データ通信リンク108A~Dによって集合的に例解され、例えば、ペリフェラルコンポーネントインターコネクトエクスプレス(Peripheral Component Interconnect Express、「PCIe」)バスを含み得る。
【0016】
図1Bは、一部の実装形態による、データストレージのための例示的なシステムを例解している。図1Bに例解するストレージアレイコントローラ101は、図1Aに関して説明したストレージアレイコントローラ110A~Dと同様であり得る。一例では、ストレージアレイコントローラ101は、ストレージアレイコントローラ110A又はストレージアレイコントローラ110Bと同様であり得る。ストレージアレイコントローラ101は、限定ではなく、例解を目的として、多数の要素を含む。他の実装形態では、ストレージアレイコントローラ101は、同じ又は異なる方法で構成された、同じ、より多い、又はより少ない要素を含み得ることに留意されたい。図1Aの要素は、ストレージアレイコントローラ101の特徴を例解するのを助けるために以下に含まれ得ることに留意されたい。
【0017】
ストレージアレイコントローラ101は、1つ以上の処理デバイス104及びランダムアクセスメモリ(random access memory、「RAM」)111を含み得る。処理デバイス104(又はコントローラ101)は、マイクロプロセッサ、中央処理ユニットなどの1つ以上の汎用処理デバイスを表す。より具体的には、処理デバイス104(又はコントローラ101)は、複合命令セットコンピューティング(complex instruction set computing、「CISC」)マイクロプロセッサ、縮小命令セットコンピューティング(reduced instruction set computing、「RISC」)マイクロプロセッサ、超長命令語(very long instruction word、「VLIW」)マイクロプロセッサ、又は他の命令セットを実装するプロセッサ若しくは命令セットの組み合わせを実装するプロセッサであり得る。処理デバイス104(又はコントローラ101)はまた、ASIC、FPGA、デジタルシグナルプロセッサ(digital signal processor、「DSP」)、ネットワークプロセッサなどの1つ以上の専用処理デバイスであり得る。
【0018】
処理デバイス104は、ダブルデータレート4(Double-Data Rate 4、「DDR4」)バスなどの高速メモリバスとして具現化され得るデータ通信リンク106を介してRAM111に接続され得る。RAM111には、オペレーティングシステム112が記憶される。一部の実装形態では、命令113がRAM111に記憶される。命令113は、ダイレクトマップ型フラッシュストレージシステムにおいて動作を実施するためのコンピュータプログラム命令を含み得る。一実施形態では、ダイレクトマップ型フラッシュストレージシステムは、フラッシュドライブのストレージコントローラによって実施されるアドレス変換なしに、フラッシュドライブ内のデータブロックを直接アドレス指定するシステムである。
【0019】
実装形態では、ストレージアレイコントローラ101は、データ通信リンク105A~Cを介して処理デバイス104に結合された1つ以上のホストバスアダプタ103A~Cを含む。実装形態では、ホストバスアダプタ103A~Cは、ホストシステム(例えば、ストレージアレイコントローラ)を他のネットワーク及びストレージアレイに接続するコンピュータハードウェアであり得る。一部の例では、ホストバスアダプタ103A~Cは、ストレージアレイコントローラ101がSANに接続することを可能にするファイバチャネルアダプタ、ストレージアレイコントローラ101がLANに接続することを可能にするイーサネットアダプタなどであり得る。ホストバスアダプタ103A~Cは、例えばPCIeバスなどのデータ通信リンク105A~Cを介して処理デバイス104に結合してもよい。
【0020】
実装形態では、ストレージアレイコントローラ101は、エキスパンダ115に結合されたホストバスアダプタ114を含み得る。エキスパンダ115を使用して、ホストシステムをより多数のストレージドライブにアタッチすることができる。エキスパンダ115は、例えば、ホストバスアダプタ114がSASコントローラとして具現化される実装形態では、ホストバスアダプタ114がストレージドライブにアタッチすることを可能にするために利用されるSASエキスパンダであってもよい。
【0021】
実装形態では、ストレージアレイコントローラ101は、データ通信リンク109を介して処理デバイス104に結合されたスイッチ116を含み得る。スイッチ116は、単一のエンドポイントから複数のエンドポイントを作成することができるコンピュータハードウェアデバイスであってもよく、それによって、マルチデバイスが単一のエンドポイントを共有することを可能にする。スイッチ116は、例えば、PCIeバス(例えば、データ通信リンク109)に結合され、ミッドプレーンへの複数のPCIe接続ポイントを提供するPCIeスイッチであってもよい。
【0022】
実装形態では、ストレージアレイコントローラ101は、ストレージアレイコントローラ101を他のストレージアレイコントローラに結合するためのデータ通信リンク107を含む。一部の例では、データ通信リンク107は、クイックパスインターコネクト(QuickPath Interconnect、QPI)相互接続であり得る。
【0023】
従来のフラッシュドライブを使用する従来のストレージシステムは、従来のストレージシステムの一部であるフラッシュドライブにわたってプロセスを実装することができる。例えば、ストレージシステムのより高いレベルのプロセスは、フラッシュドライブにわたるプロセスを開始し、制御してもよい。しかしながら、従来のストレージシステムのフラッシュドライブは、プロセスも実施するそれ自体のストレージコントローラを含むことがある。したがって、従来のストレージシステムでは、より高いレベルのプロセス(例えば、ストレージシステムによって開始される)及びより低いレベルのプロセス(例えば、ストレージシステムのストレージコントローラによって開始される)の両方を実施することができる。
【0024】
従来のストレージシステムの種々の欠点を解決するために、下位レベルのプロセスによってではなく、上位レベルのプロセスによって動作を実施することができる。例えば、フラッシュストレージシステムは、プロセスを提供するストレージコントローラを含まないフラッシュドライブを含んでもよい。したがって、フラッシュストレージシステム自体のオペレーティングシステムが、プロセスを開始し、制御することができる。これは、フラッシュドライブのストレージコントローラによって実施されるアドレス変換なしに、フラッシュドライブ内のデータブロックを直接アドレス指定するダイレクトマップフラッシュストレージシステムによって達成することができる。
【0025】
実装形態では、ストレージドライブ171A~Fは、1つ以上のゾーン化ストレージデバイスであり得る。一部の実装形態では、1つ以上のゾーン化ストレージデバイスは、シングルHDDであり得る。実装形態では、1つ以上のストレージデバイスは、フラッシュベースのSSDであり得る。ゾーン化ストレージデバイスでは、ゾーン化ストレージデバイス上のゾーン化された名前空間は、自然なサイズによってグループ化され、整合されたブロックのグループによってアドレス指定することができ、複数のアドレス指定可能なゾーンを形成する。SSDを利用する実装形態では、自然サイズは、SSDの消去ブロックサイズに基づき得る。一部の実装形態では、ゾーン化ストレージデバイスのゾーンは、ゾーン化ストレージデバイスの初期化中に定義され得る。実装形態では、ゾーンは、データがゾーン化ストレージデバイスに書き込まれるときに動的に定義され得る。
【0026】
一部の実装形態では、ゾーンは異種であってよく、一部のゾーンはそれぞれページグループであり、他のゾーンは複数のページグループである。実装形態では、一部のゾーンは消去ブロックに対応してもよく、他のゾーンは複数の消去ブロックに対応してもよい。一実装形態では、ゾーンは、異種アセンブリ、アップグレード、分散ストレージなどに適用されるような、ストレージデバイスのプログラミングモード、製造業者、製品タイプ、及び/又は製品世代の異種混合のための、ページグループ及び/又は消去ブロック内の異なる数のページの任意の組み合わせであり得る。一実装形態では、ゾーンは、特定の種類の寿命(例えば、非常に短命又は非常に長命)を伴うデータをサポートする特性などの使用特性を有するものとして定義され得る。これらの特性は、ゾーンの予想寿命にわたってゾーンがどのように管理されるかを判定するために、ゾーン化ストレージデバイスによって使用され得る。
【0027】
ゾーンは仮想構造であることを理解されたい。任意の特定のゾーンは、ストレージデバイスにおいて固定された位置を有しない場合がある。割り振られるまで、ゾーンはストレージデバイスにいかなる位置も有しない場合がある。ゾーンは、種々の実装形態では、消去ブロックのサイズ又は他のブロックサイズである、仮想的に割り振り可能な空間のチャンクを表す数に対応し得る。システムがゾーンを割り振るか又はオープンにするとき、ゾーンはフラッシュ又は他のソリッドステートストレージメモリに割り振られ、システムがゾーンに書き込むとき、ページはゾーン化ストレージデバイスのマッピングされたフラッシュ又は他のソリッドステートストレージメモリに書き込まれる。システムがゾーンを閉じると、関連する消去ブロック又は他のサイズのブロックが完成する。将来のいくつかの時点で、システムは、ゾーンの割り振られた空間を解放するゾーンを削除することができる。その寿命の間に、ゾーンは、例えば、ゾーン化ストレージデバイスが内部メンテナンスを行うときに、ゾーン化ストレージデバイスの異なる位置に移動され得る。
【0028】
実装形態では、ゾーン化ストレージデバイスのゾーンは、異なる状態であり得る。ゾーンは、データが記憶されていない空の状態であり得る。空ゾーンは、明示的に、又はゾーンにデータを書き込むことによって暗示的にオープンにすることができる。これは、新しいゾーン化ストレージデバイス上のゾーンの初期状態であるが、ゾーンリセットの結果でもよい。一部の実装形態では、空ゾーンは、ゾーン化ストレージデバイスのフラッシュメモリ内に指定された位置を有することができる。一実装形態では、空ゾーンの位置は、ゾーンが最初にオープンされたとき、又は最初に書き込まれたとき(又は後に、書き込みがメモリにバッファリングされた場合)に選択することができる。ゾーンは、暗示的又は明示的のいずれかでオープン状態にあり得、オープン状態にあるゾーンは、書き込みコマンド又は追加コマンドを用いてデータを記憶するように書き込まれ得る。一実装形態では、オープン状態にあるゾーンは、異なるゾーンからデータをコピーするコピーコマンドを使用して書き込まれ得る。一部の実装形態では、ゾーン化ストレージデバイスは、特定の時間におけるオープンゾーンの数に制限を有することができる。
【0029】
クローズ状態のゾーンは、部分的に書き込まれたが、明示的なクローズ動作を発行した後にクローズ状態に入ったゾーンである。クローズ状態のゾーンは、将来の書き込みのために利用可能なままにされ得るが、ゾーンをオープン状態に保つことによって消費されるランタイムオーバーヘッドの一部を低減することができる。実装形態では、ゾーン化ストレージデバイスは、特定の時間に閉じたゾーンの数に制限を有することができる。フル状態のゾーンは、データを記憶しており、もはや書き込むことができないゾーンである。ゾーンは、書き込みがゾーンの全体にデータを書き込んだ後、又はゾーン終了動作の結果としてのいずれかで、フル状態にあり得る。終了動作の前に、ゾーンは完全に書き込まれていても、書き込まれていなくてもよい。しかしながら、終了動作の後、ゾーンは、最初にゾーンリセット動作を実施することなく、更に書き込まれるようにオープンされない場合がある。
【0030】
ゾーンから消去ブロック(又はHDD内のシングルトラック)へのマッピングは、任意であってもよく、動的であってもよく、視界から隠されていてもよい。ゾーンをオープンにするプロセスは、新しいゾーンがゾーン化ストレージデバイスの基礎的ストレージに動的にマッピングされることを可能にし、次いで、ゾーンが容量に達するまでゾーンに書き込みを追加することによってデータが書き込まれることを可能にする動作であり得る。ゾーンは、任意の時点で終了することができ、その後は、更なるデータをゾーンに書き込むことはできない。ゾーンに記憶されたデータがもはや必要でなくなったとき、ゾーンをリセットすることができ、それによってゾーンのコンテンツがゾーン化ストレージデバイスから効果的に削除され、そのゾーンによって保持される物理ストレージがその後のデータストレージのために利用可能になる。ゾーンが書き込まれ、終了すると、ゾーン化ストレージデバイスは、ゾーンがリセットされるまで、ゾーンに記憶されたデータが失われないことを確実にする。ゾーンへのデータの書き込みとゾーンのリセットとの間の時間に、ゾーンは、ゾーン化ストレージデバイス内のメンテナンス動作の一部として、データをリフレッシュされた状態に保つために、又はSSD内のメモリセルのエージングを処理するために、データをコピーすることなどによって、シングルトラック又は消去ブロックの間で移動され得る。
【0031】
HDDを利用する実装形態では、ゾーンのリセットは、シングルトラックが、将来のいくつかの時点でオープンされ得る新しいオープンされたゾーンに割り振られることを可能にし得る。SSDを利用する実装形態では、ゾーンをリセットすることにより、ゾーンの関連付けられた物理消去ブロックが消去され、その後、データのストレージのために再使用され得る。一部の実装形態では、ゾーン化ストレージデバイスは、ゾーンをオープンのままにすることに専用のオーバーヘッドの量を低減するために、ある時点でオープンしているゾーンの数に対する制限を有することができる。
【0032】
フラッシュストレージシステムのオペレーティングシステムは、フラッシュストレージシステムの複数のフラッシュドライブにわたる割り振りユニットのリストを識別し、維持することができる。割り振りユニットは、消去ブロック全体であってもよいし、複数の消去ブロックであってもよい。オペレーティングシステムは、アドレスをフラッシュストレージシステムのフラッシュドライブの消去ブロックに直接マッピングするマップ又はアドレス範囲を維持することができる。
【0033】
フラッシュドライブの消去ブロックへの直接マッピングを使用して、データを再書き込みし、データを消去することができる。例えば、動作は、第1のデータ及び第2のデータを含む1つ以上の割り振りユニットに対して実施され得、第1のデータは保持される、第2のデータはもはやフラッシュストレージシステムによって使用されていない。オペレーティングシステムは、第1のデータを他の割り振りユニット内の新しい位置に書き込み、第2のデータを消去し、割り振りユニットを後続のデータ用に使用可能であるとマークするプロセスを開始することができる。したがって、プロセスは、フラッシュドライブのコントローラによって実施される追加のより低いレベルのプロセスなしに、フラッシュストレージシステムのより高いレベルのオペレーティングシステムによってのみ実施され得る。
【0034】
フラッシュストレージシステムのオペレーティングシステムによってのみ実施されるプロセスの利点には、プロセス中に不必要な又は冗長な書き込み実施が実施されないため、フラッシュストレージシステムのフラッシュドライブの信頼性が向上することが含まれる。ここで考えられる新規性の1つは、フラッシュストレージシステムのオペレーティングシステムでプロセスを開始し、制御するという概念である。加えて、プロセスは、複数のフラッシュドライブにわたってオペレーティングシステムによって制御され得る。これは、フラッシュドライブのストレージコントローラによって実施される処理とは対照的である。
【0035】
ストレージシステムは、フェイルオーバ目的のためにドライブのセットを共有する2つのストレージアレイコントローラから構成されることができ、又は複数のドライブを利用するストレージサービスを提供する単一のストレージアレイコントローラから構成されることができ、又はネットワーク内のストレージアレイコントローラが完全なストレージサービスを提供するために協働し、ストレージ割り振り及びガベージコレクションを含むストレージサービスの種々の態様に関して協働する、いくつかの数のドライブ又はいくつかの量のフラッシュストレージをそれぞれが有するストレージアレイコントローラの分散ネットワークから構成されることができる。
【0036】
図1Cは、一部の実装形態による、データストレージのための第3の例示的なシステム117を例解している。システム117(本明細書では「ストレージシステム」とも称される)は、限定ではなく、例解を目的として、多数の要素を含む。システム117は、他の実装形態では、同じ又は異なる方法で構成された、同じ、より多い、又はより少ない要素を含み得ることに留意されたい。
【0037】
一実施形態では、システム117は、別個にアドレス指定可能な高速書き込みストレージを有するデュアルペリフェラルコンポーネントインターコネクト(Peripheral Component Interconnect、「PCI」)フラッシュストレージデバイス118を含む。システム117は、ストレージデバイスコントローラ119を含み得る。一実施形態では、ストレージデバイスコントローラ119A~Dは、CPU、ASIC、FPGA、又は本開示に従って必要な制御構造を実装し得る任意の他の回路であり得る。一実施形態では、システム117は、ストレージデバイスコントローラ119の種々のチャネルに動作可能に結合されたフラッシュメモリデバイス(例えば、フラッシュメモリデバイス120a~nを含む)を含む。フラッシュメモリデバイス120a~nは、ストレージデバイスコントローラ119A~Dがフラッシュの種々の態様をプログラムし、取り出すことを可能にするのに十分なフラッシュページ、消去ブロック、及び/又は制御要素のアドレス指定可能な集合としてコントローラ119A~Dに提示され得る。一実施形態では、ストレージデバイスコントローラ119A~Dは、ページのデータコンテンツの記憶及び取り出し、任意のブロックの配置及び消去、フラッシュメモリページ、消去ブロック、及びセルの使用及び再使用に関する統計の追跡、フラッシュメモリ内のエラーコード及び障害の追跡及び予測、フラッシュセルのプログラミング及びコンテンツの取り出しに関連する電圧レベルの制御などを含むフラッシュメモリデバイス120a~nに対する動作を実施することができる。
【0038】
一実施形態では、システム117は、別々にアドレス指定可能な高速書き込みデータを記憶するためのRAM121を含み得る。一実施形態では、RAM121は、1つ以上の別個のディスクリートデバイスであり得る。別の実施形態では、RAM121は、ストレージデバイスコントローラ119A~D又は複数のストレージデバイスコントローラに統合され得る。RAM121は、ストレージデバイスコントローラ119内の処理デバイス(例えば、CPU)のための一時的プログラムメモリなどの他の目的のためにも利用され得る。
【0039】
一実施形態では、システム117は、再充電可能バッテリ又はキャパシタなどの蓄積エネルギーデバイス122を含み得る。蓄積エネルギーデバイス122は、RAMのコンテンツをフラッシュメモリに書き込むのに十分な時間の間、ストレージデバイスコントローラ119、ある量のRAM(例えば、RAM121)、及びある量のフラッシュメモリ(例えば、フラッシュメモリ120a~120n)に電力供給するのに十分なエネルギーを蓄積することができる。一実施形態では、ストレージデバイスコントローラ119A~Dは、ストレージデバイスコントローラが外部電力の損失を検出した場合、RAMの内容をフラッシュメモリに書き込むことができる。
【0040】
一実施形態では、システム117は、2つのデータ通信リンク123a、123bを含む。一実施形態では、データ通信リンク123a、123bは、PCIインターフェースであり得る。別の実施形態では、データ通信リンク123a、123bは、他の通信規格(例えば、HyperTransport、インフィニバンドなど)に基づき得る。データ通信リンク123a、123bは、ストレージシステム117内の他の構成要素からストレージデバイスコントローラ119A~Dへの外部接続を可能にする非揮発性メモリエクスプレス(「NVMe」)又はNVMeオーバーファブリック(NVMe over fabric、「NVMf」)仕様に基づき得る。データ通信リンクは、本明細書では便宜上PCIバスと互換的に称されることがあることに留意されたい。
【0041】
システム117はまた、外部電源(図示せず)を含んでもよく、これは、データ通信リンク123a、123bの一方又は両方を介して提供されてもよく、又は別個に提供されてもよい。代替的な実施形態は、RAM121のコンテンツを記憶する際に使用するための専用の別個のフラッシュメモリ(図示せず)を含む。ストレージデバイスコントローラ119A~Dは、アドレス指定可能な高速書き込み論理デバイスを含み得るPCIバス上の論理デバイス、又はPCIメモリ若しくは永続的ストレージとして提示され得るストレージデバイス118の論理アドレス空間の別個の部分を提示することができる。一実施形態では、デバイスに記憶するための動作は、RAM121に向けられる。電源異常時に、ストレージデバイスコントローラ119A~Dは、アドレス指定可能な高速書き込み論理ストレージに関連付けられた記憶されたコンテンツを、長期永続的ストレージのためにフラッシュメモリ(例えば、フラッシュメモリ120a~n)に書き込むことができる。
【0042】
一実施形態では、論理デバイスは、フラッシュメモリデバイス120a~nのコンテンツの一部又は全部の何らかの提示を含むことができ、その提示は、ストレージデバイス118(例えば、ストレージシステム117)を含むストレージシステムが、フラッシュメモリページを直接アドレス指定し、PCIバスを介してストレージデバイスの外部にあるストレージシステム構成要素から消去ブロックを直接再プログラムすることを可能にする。この提示はまた、外部構成要素のうちの1つ以上が、フラッシュメモリの他の態様を制御及び取り出すことを可能にし得、当該他の態様は、全てのフラッシュメモリデバイスにわたるフラッシュメモリページ、消去ブロック、及びセルの使用及び再使用に関連する統計を追跡すること、フラッシュメモリデバイス内及びフラッシュメモリデバイスにわたるエラーコード及び障害を追跡及び予測することと、フラッシュセルの内容のプログラミング及び取り出しに関連する電圧レベルを制御すること、などのうちの一部又は全部を含む。などを指すことができる。
【0043】
一実施形態では、蓄積エネルギーデバイス122は、フラッシュメモリデバイス120a~120nに対する進行中の動作の完了を確実にするのに十分であり得、蓄積エネルギーデバイス122は、それらの動作のために、並びにフラッシュメモリへの高速書き込みRAMの記憶のために、ストレージデバイスコントローラ119A~D及び関連付けられたフラッシュメモリデバイス(例えば、120a~n)に電力供給することができる。蓄積エネルギーデバイス122は、フラッシュメモリデバイス120a~n及び/又はストレージデバイスコントローラ119によって保持及び追跡される累積統計及び他のパラメータを記憶するために使用され得る。別個のキャパシタ又は蓄積エネルギーデバイス(フラッシュメモリデバイス自体の近くの又はその中に埋め込まれたより小さいキャパシタなど)が、本明細書で説明する動作の一部又は全部のために使用され得る。
【0044】
経時的に電圧レベルを調整すること、対応する放電特性を測定するために蓄積エネルギーデバイス122を部分的に放電することなど、蓄積エネルギー構成要素の寿命を追跡及び最適化するために種々の方式が使用され得る。利用可能なエネルギーが経時的に減少する場合、アドレス指定可能な高速書き込みストレージの有効な利用可能な容量は、現在利用可能な蓄積エネルギーに基づいて、安全に書き込まれ得ることを確実にするために減少され得る。
【0045】
図1Dは、一部の実装形態による、データストレージのための第3の例示的なストレージシステム124を例解している。一実施形態では、ストレージシステム124は、ストレージコントローラ125a、125bを含む。一実施形態では、ストレージコントローラ125a、125bは、デュアルPCIストレージデバイスに動作可能に結合される。ストレージコントローラ125a、125bは、いくつかの数のホストコンピュータ127a~nに(例えば、ストレージネットワーク130を介して)動作可能に結合することができる。
【0046】
一実施形態では、2つのストレージコントローラ(例えば、125a及び125b)は、SCSブロックストレージアレイ、ファイルサーバ、オブジェクトサーバ、データベース又はデータ分析サービスなどのストレージサービスを提供する。ストレージコントローラ125a、125bは、いくつかの数のネットワークインターフェース(例えば、126a~d)を通して、ストレージシステム124の外部のホストコンピュータ127a~nにサービスを提供することができる。ストレージコントローラ125a、125bは、完全にストレージシステム124内に統合されたサービス又はアプリケーションを提供し、統合されたストレージ及び計算システムを形成することができる。ストレージコントローラ125a、125bは、進行中の動作をジャーナルするためにストレージデバイス119a~d内の又はそれにわたる高速書き込みメモリを利用して、動作が、ストレージシステム124内の1つ以上のソフトウェア又はハードウェア構成要素の電源異常、ストレージコントローラの取り外し、ストレージコントローラ又はストレージシステムシャットダウン、又は何らかの障害で失われないことを確実にすることができる。
【0047】
一実施形態では、ストレージコントローラ125a、125bは、一方又は他方のPCIバス128a、128bに対するPCIマスタとして動作する。別の実施形態では、128a及び128bは、他の通信規格(例えば、HyperTransport、インフィニバンドなど)に基づき得る。他のストレージシステムの実施形態は、ストレージコントローラ125a、125bを両方のPCIバス128a、128bのためのマルチマスタとして動作させることができる。あるいは、PCI/NVMe/NVMfスイッチングインフラストラクチャ又はファブリックが、複数のストレージコントローラを接続してもよい。一部のストレージシステムの実施形態は、ストレージデバイスが、ストレージコントローラのみと通信するのではなく、互いに直接通信することを可能にし得る。一実施形態では、ストレージデバイスコントローラ119aは、RAM(例えば、図1CのRAM121)に記憶されたデータからフラッシュメモリデバイスに記憶されるデータを合成及び転送するために、ストレージコントローラ125aからの指示の下で動作可能であり得る。例えば、RAMコンテンツの再計算されたバージョンは、動作がストレージシステムにわたって完全にコミットされたとストレージコントローラが判定した後に、又はデバイス上の高速書き込みメモリが特定の使用された容量に達したときに、又は特定の時間量の後に転送されて、データの安全を確実に改善するか、又は再利用のためにアドレス指定可能な高速書き込み容量を解放することができる。このメカニズムは、例えば、ストレージコントローラ125a、125bからのバス(例えば、128a、128b)を介した第2の転送を回避するために使用することができる。一実施形態では、再計算は、データを圧縮すること、インデックス付け又は他のメタデータをアタッチすること、複数のデータセグメントを一緒に組み合わせること、消失訂正符号計算を実施することなどを含み得る。
【0048】
一実施形態では、ストレージコントローラ125a、125bからの指示の下で、ストレージデバイスコントローラ119a、119bは、ストレージコントローラ125a、125bの関与なしに、RAM(例えば、図1CのRAM121)に記憶されたデータからデータを計算し、他のストレージデバイスに転送するように動作可能であり得る。この動作は、1つのストレージコントローラ125aに記憶されたデータを別のストレージコントローラ125bにミラーリングするために使用されてもよく、又は圧縮、データ集約、及び/又は消失訂正符号化計算をオフロードし、ストレージデバイスに転送して、ストレージコントローラ又はPCIバス128a、128bへのストレージコントローラインターフェース129a、129bの負荷を低減するために使用されてもよい。
【0049】
ストレージデバイスコントローラ119A~Dは、デュアルPCIストレージデバイス118の外部のストレージシステムの他の部分によって使用される高可用性プリミティブを実装するためのメカニズムを含み得る。例えば、高度に利用可能なストレージサービスを提供する2つのストレージコントローラを有するストレージシステムにおいて、一方のストレージコントローラが、他方のストレージコントローラがストレージデバイスにアクセスすること又はアクセスし続けることを妨げ得るように、予約又は除外プリミティブが提供され得る。これは、例えば、一方のコントローラが、他方のコントローラが適切に機能していないことを検出した場合、又は2つのストレージコントローラ間の相互接続自体が適切に機能していない可能性がある場合に使用することができる。
【0050】
一実施形態では、別個にアドレス指定可能な高速書き込みストレージを有するデュアルPCIダイレクトマップストレージデバイスとともに使用するためのストレージシステムは、ストレージサービスに代わってデータを記憶するための、又はストレージサービスに関連付けられたメタデータ(例えば、インデックス、ログなど)を記憶するための、又はストレージシステム自体の適切な管理のための割り振りユニットとして、消去ブロック又は消去ブロックのグループを管理するシステムを含む。サイズが数キロバイトであり得るフラッシュページは、データが到着するにつれて、又はストレージシステムが長い時間間隔(例えば、定義された時間閾値を上回る)にわたってデータを持続することになるにつれて、書き込まれ得る。データをより迅速にコミットするために、又はフラッシュメモリデバイスへの書き込みの回数を減らすために、ストレージコントローラは、最初に、もう1つのストレージデバイス上の別個にアドレス指定可能な高速書き込みストレージにデータを書き込むことができる。
【0051】
一実施形態では、ストレージコントローラ125a、125bは、ストレージデバイスの使用年数及び予想される残りの寿命に従って、又は他の統計に基づいて、ストレージデバイス(例えば、118)内及びストレージデバイスにわたって消去ブロックの使用を開始することができる。ストレージコントローラ125a、125bは、もはや必要とされないページに従ってストレージデバイス間のデータのガベージコレクション及びデータ移行を開始し、フラッシュページ及び消去ブロックの寿命を管理し、システム全体の性能を管理することができる。
【0052】
一実施形態では、ストレージシステム124は、アドレス指定可能な高速書き込みストレージにデータを記憶することの一部として、かつ/又は消去ブロックに関連付けられた割り振りユニットにデータを書き込むことの一部として、ミラーリング及び/又は消失訂正符号化方式を利用することができる。消去コードは、単一又は複数のストレージデバイス故障に対して冗長性を提供するために、又はフラッシュメモリ動作若しくはフラッシュメモリセルの劣化から生じるフラッシュメモリページの内部破損に対して保護するために、ストレージデバイスにわたって、並びに消去ブロック若しくは割り振りユニット内で、又は単一のストレージデバイス上のフラッシュメモリデバイス内及びそれにわたって使用され得る。種々のレベルでのミラーリング及び消失訂正符号化を使用して、別々に又は組み合わせて発生する複数のタイプの故障から復旧することができる。
【0053】
図2A図2Gを参照して描示される実施形態は、1つ以上のユーザ若しくはクライアントシステム、又はストレージクラスタの外部の他のソースから生じるユーザデータなどのユーザデータを記憶するストレージクラスタを例解している。ストレージクラスタは、消失訂正符号化及びメタデータの冗長コピーを使用して、シャーシ内に収容されたストレージノードにわたって、又は複数のシャーシにわたってユーザデータを分散させる。消失訂正符号化は、データが、ディスク、ストレージノード、又は地理的位置などの異なる位置のセットにわたって記憶される、データ保護又は再構築の方法を指す。フラッシュメモリは、実施形態と統合され得るソリッドステートメモリの1つのタイプであるが、実施形態は、非ソリッドステートメモリを含む、他のタイプのソリッドステートメモリ又は他の記憶媒体に拡張することができる。ストレージ位置及びワークロードの制御は、クラスタ化されたピアツーピアシステム内のストレージ位置にわたって分散される。種々のストレージノード間の通信を仲介すること、ストレージノードが利用不可能になったときを検出すること、及び種々のストレージノードにわたってI/O(入力及び出力)を平衡させることなどのタスクは、全て分散ベースで処理される。データは、一部の実施形態では、データ復旧をサポートするデータフラグメント又はストライプ内の複数のストレージノードにわたって配置又は分散される。データの所有権は、入力及び出力パターンとは無関係に、クラスタ内で再割り当てすることができる。以下でより詳細に説明されるこのアーキテクチャは、データが他のストレージノードから再構築され、したがって入力動作及び出力動作のために利用可能なままであり得るため、システムが動作可能なままである状態で、クラスタ内のストレージノードが故障することを可能にする。種々の実施形態では、ストレージノードは、クラスタノード、ブレード、又はサーバと称されることがある。
【0054】
ストレージクラスタは、シャーシ、すなわち、1つ以上のストレージノードを収容するハウジング内に収容され得る。シャーシ内には、配電バスなどの各ストレージノードに電力を供給するためのメカニズムと、ストレージノード間の通信を可能にする通信バスなどの通信メカニズムとが含まれる。ストレージクラスタは、一部の実施形態によれば、1つの位置で独立したシステムとして動作することができる。一実施形態では、シャーシは、独立して有効化又は無効化され得る配電及び通信バスの両方の少なくとも2つのインスタンスを含む。内部通信バスはイーサネットバスであってもよいが、PCIe、インフィニバンド及び他などの他の技術も同様に適している。シャーシは、直接又はスイッチを介して、複数のシャーシとクライアントシステムとの間の通信を可能にするための外部通信バスのためのポートを提供する。外部通信は、イーサネット、インフィニバンド、ファイバチャネルなどの技術を使用することができる。一部の実施形態では、外部通信バスは、シャーシ間通信及びクライアント通信に異なる通信バス技術を使用する。スイッチがシャーシ内又はシャーシ間に配備される場合、スイッチは、複数のプロトコル又は技術間の変換として機能することができる。ストレージクラスタを定義するために複数のシャーシが接続されるとき、ストレージクラスタは、ネットワークファイルシステム(network file system、「NFS」)、共通インターネットファイルシステム(common internet file system、「CIFS」)、小型コンピュータシステムインターフェース(「SCSI」)、又はハイパーテキスト転送プロトコル(「HTTP」)などの専用インターフェース又は標準インターフェースのいずれかを使用してクライアントによってアクセスされ得る。クライアントプロトコルからの変換は、スイッチ、シャーシ外部通信バス、又は各ストレージノード内で行うことができる。一部の実施形態では、複数のシャーシが、アグリゲータスイッチを介して互いに結合又は接続され得る。結合又は接続されたシャーシの一部及び/又は全ては、ストレージクラスタとして指定されてもよい。上述のように、各シャーシは、複数のブレードを有することができ、各ブレードは、メディアアクセス制御(media access control、「MAC」)アドレスを有するが、ストレージクラスタは、一部の実施形態では、単一のクラスタMACアドレス及び単一のIPを有するものとして外部ネットワークに提示される。
【0055】
各ストレージノードは、1つ以上のストレージサーバであってもよく、各ストレージサーバは、ストレージユニット又はストレージデバイスと称され得る、1つ以上の不揮発性ソリッドステートメモリユニットに接続される。一実施形態は、各ストレージノード内の単一のストレージサーバと、1~8個の不揮発性ソリッドステートメモリユニットとを含むが、この一例は、限定を意味するものではない。ストレージサーバは、プロセッサと、DRAMと、内部通信バスのためのインターフェースと、電力バスの各々のための配電とを含み得る。一部の実施形態では、ストレージノードの内部で、インターフェース及びストレージユニットは、通信バス、例えば、PCIエクスプレスを共有する。不揮発性ソリッドステートメモリユニットは、ストレージノード通信バスを介して内部通信バスインターフェースに直接アクセスしてもよく、又はバスインターフェースにアクセスするようにストレージノードに要求してもよい。不揮発性ソリッドステートメモリユニットは、一部の実施形態では、組み込みCPUと、ソリッドステートストレージコントローラと、例えば、2~32テラバイト(terabyte、「TB」)の量のソリッドステート大容量ストレージデバイスとを含む。不揮発性ソリッドステートメモリユニットには、DRAMなどの内蔵型揮発性記憶媒体と、エネルギー貯蔵装置とが含まれる。一部の実施形態では、エネルギー貯蔵装置は、電力損失の場合にDRAMコンテンツのサブセットを安定した記憶媒体に転送することを可能にするキャパシタ、スーパーキャパシタ、又はバッテリである。一部の実施形態では、不揮発性ソリッドステートメモリユニットは、DRAMに取って代わり、低減された電力ホールドアップ装置を可能にする、相変化又は磁気抵抗メモリ(magnetoresistive random access memory、「MRAM」)などのストレージクラスメモリで構築される。
【0056】
ストレージノード及び不揮発性ソリッドステートストレージの多くの特徴のうちの1つは、ストレージクラスタにおいてデータをプロアクティブに再構築する能力である。ストレージノード及び不揮発性ソリッドステートストレージは、ストレージクラスタ内のストレージノード又は不揮発性ソリッドステートストレージがいつ到達不能になるかを、そのストレージノード又は不揮発性ソリッドステートストレージに関与するデータを読み出そうとする試みがあるかどうかとは無関係に、決定することができる。次いで、ストレージノード及び不揮発性ソリッドステートストレージは、協働して、少なくとも部分的に新たな位置においてデータを復旧及び再構築する。これは、ストレージクラスタを使用するクライアントシステムから開始された読み出しアクセスのためにデータが必要になるまで待つことなく、システムがデータを再構築するという点で、プロアクティブな再構築を構成する。ストレージメモリ及びその動作のこれら及び更なる詳細は、以下で議論される。
【0057】
図2Aは、一部の実施形態による、複数のストレージノード150と、ネットワークアタッチトストレージ又はストレージエリアネットワークを提供するために各ストレージノードに結合された内部ソリッドステートメモリと、を有する、ストレージクラスタ161の斜視図である。ネットワークアタッチトストレージ、ストレージエリアネットワーク、又はストレージクラスタ、又は他のストレージメモリは、1つ以上のストレージノード150をそれぞれ有する1つ以上のストレージクラスタ161を、物理構成要素及びそれによって提供されるストレージメモリの量の両方の柔軟で再構成可能な配置で含み得る。ストレージクラスタ161は、ラックに適合するように設計され、1つ以上のラックが、ストレージメモリに対して所望されるようにセットアップされ、ポピュレートされ得る。ストレージクラスタ161は、複数のスロット142を有するシャーシ138を有する。シャーシ138は、ハウジング、筐体、又はラックユニットと称されることがあることを理解されたい。一実施形態では、シャーシ138は14個のスロット142を有するが、他の数のスロットも容易に考案される。例えば、一部の実施形態は、4個のスロット、8個のスロット、16個のスロット、32個のスロット、又は他の好適な数のスロットを有する。各スロット142は、一部の実施形態では、1つのストレージノード150を収容することができる。シャーシ138は、シャーシ138をラックに取り付けるために利用することができるフラップ148を含む。ファン144は、ストレージノード150及びその構成要素を冷却するための空気循環を提供するが、他の冷却構成要素を使用することもでき、又は冷却構成要素のない一実施形態を考案することもできる。スイッチファブリック146は、シャーシ138内のストレージノード150を互いに結合し、メモリへの通信のためにネットワークに結合する。本明細書に描示される一実施形態では、例解目的で、スイッチファブリック146及びファン144の左側のスロット142は、ストレージノード150によって占有されているように示されている一方で、スイッチファブリック146及びファン144の右側のスロット142は、空であり、ストレージノード150を挿入するために使用可能である。この構成は一例であり、1つ以上のストレージノード150が、種々の更なる配置でスロット142を占有することができる。ストレージノードの配置は、一部の実施形態では、連続的又は隣接している必要はない。ストレージノード150は、ホットプラグ可能であり、これは、システムを停止又はパワーダウンすることなく、ストレージノード150をシャーシ138内のスロット142に挿入するか、又はスロット142から取り外すことができることを意味する。スロット142へのストレージノード150の挿入又はそこからの取り外し時に、システムは、変更を認識し、それに適応するために自動的に再構成する。再構成は、一部の実施形態では、冗長性を復元すること、及び/又はデータ若しくは負荷を再バランシングすることを含む。
【0058】
各ストレージノード150は、複数の構成要素を有することができる。本明細書に示される実施形態では、ストレージノード150は、CPU156、すなわち、プロセッサが実装されたプリント基板159と、CPU156に結合されたメモリ154と、CPU156に結合された不揮発性ソリッドステートストレージ152とを含むが、更なる実施形態では、他の実装物及び/又は構成要素を使用することができる。メモリ154は、CPU156によって実行される命令及び/又はCPU156によって動作するデータを有する。以下で更に説明されるように、不揮発性ソリッドステートストレージ152は、フラッシュ、又は更なる実施形態では、他のタイプのソリッドステートメモリを含む。
【0059】
図2Aを参照すると、ストレージクラスタ161はスケーラブルであり、これは、上述したように、不均一なストレージサイズを有するストレージ容量が容易に追加されることを意味する。一部の実施形態では、1つ以上のストレージノード150を各シャーシに差し込むか、又は各シャーシから取り外すことができ、ストレージクラスタは自己構成される。プラグインストレージノード150は、納入時にシャーシにインストールされていようと、後で追加されようと、異なるサイズを有することができる。例えば、一実施形態では、ストレージノード150は、4TBの任意の倍数、例えば、8TB、12TB、16TB、32TBなどを有することができる。更なる実施形態では、ストレージノード150は、他の記憶量又は容量の任意の倍数を有することができる。各ストレージノード150のストレージ容量はブロードキャストされ、データをどのようにストライプするかの決定に影響を及ぼす。最大記憶効率のために、一実施形態は、シャーシ内の最大1つ又は最大2つの不揮発性ソリッドステートストレージ152ユニット又はストレージノード150の損失を伴う連続動作の所定の要件を条件として、ストライプ内で可能な限り広く自己構成することができる。
【0060】
図2Bは、複数のストレージノード150を結合する通信相互接続173及び配電バス172を示すブロック図である。図2Aに戻って参照すると、通信相互接続173は、一部の実施形態では、スイッチファブリック146に含まれるか、又はそれとともに実装され得る。複数のストレージクラスタ161がラックを占有する場合、一部の実施形態では、通信相互接続173は、トップオブラックのスイッチに含まれるか、又はそれとともに実装され得る。図2Bに例解するように、ストレージクラスタ161は、単一のシャーシ138内に封入される。外部ポート176は、通信相互接続173を介してストレージノード150に結合され、外部ポート174は、ストレージノードに直接結合される。外部電力ポート178は、配電バス172に結合される。ストレージノード150は、図2Aを参照して説明したように、種々の量及び異なる容量の不揮発性ソリッドステートストレージ152を含み得る。加えて、1つ以上のストレージノード150は、図2Bに例解されるように、計算専用ストレージノードであり得る。権限168は、例えばインメモリーに記憶されたリスト又は他のデータ構造として、不揮発性ソリッドステートストレージ152上に実装される。一部の実施形態では、権限は、不揮発性ソリッドステートストレージ152内に記憶され、不揮発性ソリッドステートストレージ152のコントローラ又は他のプロセッサ上で実行されるソフトウェアによってサポートされる。更なる実施形態では、権限168は、例えば、メモリ154に記憶され、ストレージノード150のCPU156上で実行されるソフトウェアによってサポートされるリスト又は他のデータ構造として、ストレージノード150上に実装される。一部の実施形態では、権限168は、データが不揮発性ソリッドステートストレージ152にどのように、かつどこに記憶されるかを制御する。この制御は、どのタイプの消失訂正符号化方式がデータに適用されるか、及びどのストレージノード150がデータのどの部分を有するかを判定するのに役立つ。各権限168は、不揮発性ソリッドステートストレージ152に割り当てられ得る。各権限は、種々の実施形態では、ファイルシステムによって、ストレージノード150によって、又は不揮発性ソリッドステートストレージ152によってデータに割り当てられる、ある範囲のiノード番号、セグメント番号、又は他のデータ識別子を制御することができる。
【0061】
一部の実施形態では、全てのデータ及び全てのメタデータは、システム内で冗長性を有する。更に、全てのデータ及び全てのメタデータは、権限と称され得る所有者を有する。その権限が、例えばストレージノードの故障によって到達不能である場合、そのデータ又はそのメタデータをどのように見つけるかについてのサクセッションの計画が存在する。種々の実施形態では、権限168の冗長なコピーが存在する。一部の実施形態では、権限168は、ストレージノード150及び不揮発性ソリッドステートストレージ152との関係を有する。データセグメント番号又はデータの他の識別子の範囲をカバーする各権限168は、特定の不揮発性ソリッドステートストレージ152に割り当てられ得る。一部の実施形態では、かかる範囲の全てに対する権限168は、ストレージクラスタの不揮発性ソリッドステートストレージ152にわたって分散される。各ストレージノード150は、そのストレージノード150の不揮発性ソリッドステートストレージ152へのアクセスを提供するネットワークポートを有する。データは、セグメント番号に関連付けられたセグメントに記憶することができ、そのセグメント番号は、一部の実施形態では、RAID(独立ディスクの冗長アレイ)ストライプの構成に対する間接的な参照である。したがって、権限168の割り当て及び使用は、データへの間接的な参照を確立する。間接的な参照は、一部の実施形態によれば、この場合は権限168を介して、間接的にデータを参照する能力と称されることがある。セグメントは、不揮発性ソリッドステートストレージ152のセットと、データを含み得る不揮発性ソリッドステートストレージ152のセットへのローカル識別子とを識別する。一部の実施形態では、ローカル識別子は、デバイスへのオフセットであり、複数のセグメントによって順次再使用され得る。他の実施形態では、ローカル識別子は、特定のセグメントに対して一意であり、決して再使用されない。不揮発性ソリッドステートストレージ152内のオフセットは、(RAIDストライプの形態の)不揮発性ソリッドステートストレージ152への書き込み又はそこからの読み出しのためのデータの位置特定に適用される。データは、不揮発性ソリッドステートストレージ152の複数のユニットにわたってストライプされ、これは、特定のデータセグメントに対する権限168を有する不揮発性ソリッドステートストレージ152を含んでもよく、又はそれとは異なってもよい。
【0062】
例えば、データ移動又はデータ再構築中に、データの特定のセグメントが位置する場所に変更がある場合、そのデータセグメントの権限168は、その権限168を有する不揮発性ソリッドステートストレージ152又はストレージノード150において参照されるべきである。特定のデータを位置特定するために、実施形態は、データセグメントのハッシュ値を計算するか、又はiノード番号若しくはデータセグメント番号を適用する。この動作の出力は、その特定のデータに対する権限168を有する不揮発性ソリッドステートストレージ152を指し示す。一部の実施形態では、この動作には2つの段階がある。第1の段階は、エンティティ識別子(identifier、ID)、例えば、セグメント番号、iノード番号、又はディレクトリ番号を権限識別子にマッピングする。このマッピングは、ハッシュ又はビットマスクなどの計算を含み得る。第2の段階は、権限識別子を特定の不揮発性ソリッドステートストレージ152にマッピングすることであり、これは、明示的なマッピングを通じて行うことができる。この動作は反復可能であり、したがって、計算が実施されると、計算の結果は、その権限168を有する特定の不揮発性ソリッドステートストレージ152を反復可能かつ確実に指し示す。動作は、到達可能なストレージノードのセットを入力として含み得る。到達可能な不揮発性ソリッドステートストレージユニットのセットが変化する場合、最適なセットが変化する。一部の実施形態では、持続される値は、現在の割り当て(常に真である)であり、計算される値は、クラスタが再構成しようと試みるターゲット割り当てである。この計算は、到達可能であり、同じクラスタを構成する不揮発性ソリッドステートストレージ152のセットの存在下で、権限のための最適な不揮発性ソリッドステートストレージ152を決定するために使用され得る。計算はまた、割り当てられた不揮発性ソリッドステートストレージが到達不能であっても権限が決定され得るように、不揮発性ソリッドステートストレージへの権限のマッピングも記録するピア不揮発性ソリッドステートストレージ152の順序付けられたセットを決定する。一部の実施形態では、特定の権限168が利用できない場合、複製又は代用権限168が参照されてもよい。
【0063】
図2A及び図2Bを参照すると、ストレージノード150上のCPU156の多くのタスクのうちの2つは、書き込みデータを分割し、読み出しデータを再アセンブルすることである。システムが、データが書き込まれると判定したとき、そのデータに対する権限168は、上記のように位置する。データのセグメントIDが既に決定されている場合、書き込み要求は、セグメントから決定された権限168のホストであると現在決定されている不揮発性ソリッドステートストレージ152に転送される。不揮発性ソリッドステートストレージ152及び対応する権限168が存在するストレージノード150のホストCPU156は、次いで、データを分解又はシャードし、データを種々の不揮発性ソリッドステートストレージ152に伝送する。伝送されたデータは、消失訂正符号化方式に従ってデータストライプとして書き込まれる。一部の実施形態では、データがプルされるように要求され、他の実施形態では、データがプッシュされる。逆に、データが読み出されると、そのデータを含むセグメントIDに対する権限168が上述のように位置する。不揮発性ソリッドステートストレージ152及び対応する権限168が存在するストレージノード150のホストCPU156は、権限によってポイントされた不揮発性ソリッドステートストレージ及び対応するストレージノードからデータを要求する。一部の実施形態では、データは、データストライプとしてフラッシュストレージから読み出される。次に、ストレージノード150のホストCPU156は、読み出されたデータを再アセンブルし、適切な消失訂正符号化方式に従って任意のエラー(存在する場合)を訂正し、再アセンブルされたデータをネットワークに転送する。更なる実施形態では、これらのタスクの一部又は全部は、不揮発性ソリッドステートストレージ152において処理することができる。一部の実施形態では、セグメントホストは、ストレージからページを要求し、次いで元の要求を行ったストレージノードにデータを送信することによって、データがストレージノード150に送信されることを要求する。
【0064】
実施形態では、権限168は、特定の論理要素に対して動作がどのように進行するかを判定するように動作する。論理要素の各々は、ストレージシステムの複数のストレージコントローラにわたる特定の権限を通じて動作させることができる。権限168は、複数のストレージコントローラと通信して、複数のストレージコントローラがそれらの特定の論理要素に対する動作を集合的に実施するようにすることができる。
【0065】
実施形態では、論理要素は、例えば、ファイル、ディレクトリ、オブジェクトバケット、個々のオブジェクト、ファイル又はオブジェクトの区切り部分、他の形態の鍵値ペアデータベース、又はテーブルであり得る。実施形態では、動作を実施することは、例えば、同じ論理要素に対する他の動作との整合性、構造的完全性、及び/又は復旧可能性を確実にすること、その論理要素に関連付けられたメタデータ及びデータを読み出すこと、動作のための任意の変更を持続するために、どのデータがストレージシステムに永続的に書き込まれるべきかを判定すること、又はメタデータ及びデータが、ストレージシステム内の複数のストレージコントローラに取り付けられたモジュール式ストレージデバイスにわたって記憶されるように決定され得る場合を伴うことができる。
【0066】
一部の実施形態では、動作は、分散システム内で効率的に通信するためのトークンベースのトランザクションである。各トランザクションは、トランザクションを実行する許可を与えるトークンを伴ってもよく、又はトークンに関連付けられてもよい。権限168は、一部の実施形態では、動作の完了までシステムのプレトランザクション状態を維持することができる。トークンベースの通信は、システムにわたってグローバルロックなしで達成することができ、また、中断又は他の故障の場合に動作の再開を可能にする。
【0067】
一部のシステム、例えばUNIXスタイルのファイルシステムでは、データは、ファイルシステム内のオブジェクトを表すデータ構造を指定するインデックスノード又はiノードで処理される。オブジェクトは、例えば、ファイル又はディレクトリであり得る。メタデータは、他の属性の中でも、許可データ及び作成タイムスタンプなどの属性として、オブジェクトに付随することができる。セグメント番号は、ファイルシステム内のかかるオブジェクトの全て又は一部に割り当てることができる。他のシステムでは、データセグメントは、他の場所に割り当てられたセグメント番号で処理される。説明のために、分散の単位はエンティティであり、エンティティは、ファイル、ディレクトリ、又はセグメントであり得る。すなわち、エンティティは、ストレージシステムによって記憶されるデータ又はメタデータの単位である。エンティティは、権限と称されるセットにグループ化される。各権限は、権限内のエンティティを更新するための排他的権利を有するストレージノードである権限所有者を有する。換言すれば、ストレージノードは権限を含み、その権限はエンティティを含む。
【0068】
セグメントは、一部の実施形態によるデータの論理コンテナである。セグメントは、媒体アドレス空間と物理フラッシュ位置との間のアドレス空間であり、すなわち、データセグメント番号は、このアドレス空間にある。セグメントはまた、より高いレベルのソフトウェアの関与なしにデータ冗長性が復元される(異なるフラッシュ位置又はデバイスに再書き込みされる)ことを可能にするメタデータを含み得る。一実施形態では、セグメントの内部フォーマットは、クライアントデータと、そのデータの位置を決定するための媒体マッピングとを含む。各データセグメントは、適用可能な場合、セグメントを複数のデータシャード及びパリティシャードに分割することによって、例えば、メモリ及び他の故障から保護される。データシャード及びパリティシャードは、消失訂正符号化方式に従って、ホストCPU156(図2E及び図2Gを参照)に結合された不揮発性ソリッドステートストレージ152にわたって分散され、すなわちストライプ化される。セグメントという用語の使用は、一部の実施形態では、コンテナ及びセグメントのアドレス空間におけるその場所を指す。ストライプという用語の使用は、セグメントと同じシャードのセットを指し、一部の実施形態によれば、どのようにシャードが冗長性又はパリティ情報とともに分散されるかを含む。
【0069】
一連のアドレス空間変換は、ストレージシステム全体にわたって行われる。最上部には、iノードにリンクするディレクトリエントリ(ファイル名)がある。iノードは、データが論理的に記憶される媒体アドレス空間を指す。媒体アドレスは、一連の間接媒体を通じてマッピングされて、大きなファイルの負荷を分散させるか、又は重複排除若しくはスナップショットのようなデータサービスを実装することができる。媒体アドレスは、一連の間接媒体を通じてマッピングされて、大きなファイルの負荷を分散させるか、又は重複排除若しくはスナップショットのようなデータサービスを実装することができる。次に、セグメントアドレスが物理フラッシュ位置に変換される。一部の実施形態によれば、物理フラッシュ位置は、システム内のフラッシュの量によって制限されるアドレス範囲を有する。媒体アドレス及びセグメントアドレスは、論理コンテナであり、一部の実施形態では、実質的に無限であるように128ビット以上の識別子を使用し、再使用の可能性は、システムの予想寿命よりも長いものとして計算される。一部の実施形態では、論理コンテナからのアドレスは階層的に割り振られる。最初に、各不揮発性ソリッドステートストレージ152ユニットに、ある範囲のアドレス空間を割り当てることができる。この割り当てられた範囲内で、不揮発性ソリッドステートストレージ152は、他の不揮発性ソリッドステートストレージ152と同期することなくアドレスを割り振ることができる。
【0070】
データ及びメタデータは、種々のワークロードパターン及びストレージデバイスに対して最適化された、基礎的ストレージレイアウトのセットによって記憶される。これらのレイアウトは、複数の冗長スキーム、圧縮フォーマット、及びインデックスアルゴリズムを組み込む。これらのレイアウトの一部は、権限及び権限マスタに関する情報を記憶し、他のレイアウトは、ファイルメタデータ及びファイルデータを記憶する。冗長スキームは、単一のストレージデバイス(NANDフラッシュチップなど)内の破損したビットを許容するエラー訂正コード、複数のストレージノードの故障を許容する消去コード、及びデータセンター又はリージョナルな故障を許容する複製スキームを含む。一部の実施形態では、低密度パリティチェック(low density parity check、「LDPC」)コードが単一のストレージユニット内で使用される。一部の実施形態では、リードソロモン符号化がストレージクラスタ内で使用され、ミラーリングがストレージグリッド内で使用される。メタデータは、順序付けられたログ構造化インデックス(ログ構造化マージツリーなど)を使用して記憶されてもよく、大きいデータは、ログ構造化レイアウトに記憶されなくてもよい。
【0071】
エンティティの複数のコピーにわたって一貫性を維持するために、ストレージノードは、計算を通して2つのこと、すなわち、(1)エンティティを含む権限、及び(2)権限を含むストレージノードに暗示的に合意する。エンティティの権限への割り当ては、エンティティを権限に擬似ランダムに割り当てることによって、外部で生成された鍵に基づいて、エンティティを範囲に分割することによって、又は単一のエンティティを各権限に配置することによって行うことができる。擬似ランダム方式の例は、線形ハッシング、及びスケーラブルハッシングの下での制御された複製(Controlled Replication Under Scalable Hashing、「CRUSH」)を含むスケーラブルハッシングの下での複製(Replication Under Scalable Hashing、「RUSH」)のハッシュファミリーである。一部の実施形態では、擬似ランダム割り当ては、ノードのセットが変化し得るため、ノードに権限を割り当てるためだけに利用される。権限のセットは変更することができないため、これらの実施形態では任意の主観的機能が適用され得る。一部の配置スキームは、ストレージノードに権限を自動的に配置するが、他の配置スキームは、ストレージノードへの権限の明示的なマッピングに依存する。一部の実施形態では、各権限から候補権限所有者のセットにマッピングするために擬似ランダム方式が利用される。CRUSHに関連する擬似ランダムデータ分散機能は、ストレージノードに権限を割り当て、権限が割り当てられた場所のリストを作成することができる。各ストレージノードは、擬似ランダムデータ分散機能のコピーを有し、分散のために同じ計算に到達し、後に権限を発見又は位置特定することができる。擬似ランダム方式の各々は、一部の実施形態では、同じターゲットノードを結論付けるために、入力としてストレージノードの到達可能なセットを必要とする。エンティティが権限内に配置されると、エンティティは、予想される故障が予想されないデータ損失につながらないように、物理デバイス上に記憶され得る。一部の実施形態では、リバランシングアルゴリズムは、権限内の全てのエンティティのコピーを同じレイアウトで同じマシンセット上に記憶しようとする。
【0072】
予想される故障の例には、デバイス故障、盗まれた機械、データセンター火災、及び核又は地質学的事象などの地域災害が含まれる。異なる故障は、異なるレベルの許容可能なデータ損失をもたらす。一部の実施形態では、盗まれたストレージノードは、システムのセキュリティにも信頼性にも影響を与えないが、システム構成に応じて、地域的イベントは、データの損失なし、数秒若しくは数分の更新の損失、又は更には完全なデータ損失をもたらし得る。
【0073】
実施形態では、ストレージ冗長性のためのデータの配置は、データ一貫性のための権限の配置とは無関係である。一部の実施形態では、権限を含むストレージノードは、いかなる永続的ストレージも含まない。代わりに、ストレージノードは、権限を含まない不揮発性ソリッドステートストレージユニットに接続される。ストレージノードと不揮発性ソリッドステートストレージユニットとの間の通信相互接続は、複数の通信技術からなり、非一様な性能及びフォールトトレランス特性を有する。一部の実施形態では、上述したように、不揮発性ソリッドステートストレージユニットは、PCIエクスプレスを介してストレージノードに接続され、ストレージノードは、イーサネットバックプレーンを使用して単一のシャーシ内で一緒に接続され、シャーシは、ストレージクラスタを形成するために一緒に接続される。ストレージクラスタは、一部の実施形態では、イーサネット又はファイバチャネルを使用してクライアントに接続される。複数のストレージクラスタがストレージグリッドに構成される場合、複数のストレージクラスタは、インターネット又はインターネットを横断しない「メトロスケール」リンク若しくはプライベートリンクなどの他の長距離ネットワーキングリンクを使用して接続される。
【0074】
権限所有者は、エンティティを修正し、1つの不揮発性ソリッドステートストレージユニットから別の不揮発性ソリッドステートストレージユニットにエンティティを移行し、エンティティのコピーを追加及び除去する排他的権利を有する。これは、基礎的データの冗長性を維持することを可能にする。権限所有者が故障するか、廃止される予定であるか、又は過負荷である場合、権限は新しいストレージノードに転送される。一時的な故障では、全ての障害の発生していないマシンが新しい権限位置に同意することを確実にすることが重要になる。一時的な故障に起因して生じる曖昧さは、Paxosなどのコンセンサスプロトコル、ホットウォームフェイルオーバ方式によって、リモートシステム管理者による手動介入を介して、又はローカルハードウェア管理者によって(故障が発生したマシンをクラスタから物理的に除去すること、又は故障が発生したマシン上のボタンを押すことなどによって)自動的に達成することができる。一部の実施形態では、コンセンサスプロトコルが使用され、フェイルオーバは自動的である。一部の実施形態によれば、あまりにも短い期間内にあまりにも多くの故障又は複製イベントが発生した場合、システムは自己保存モードに入り、管理者が介入するまで複製及びデータ移動活動を停止する。
【0075】
権限がストレージノード間で転送され、権限所有者がそれらの権限内のエンティティを更新すると、システムは、ストレージノードと不揮発性ソリッドステートストレージユニットとの間でメッセージを転送する。永続的メッセージに関して、異なる目的を有するメッセージは、異なるタイプである。メッセージのタイプに応じて、システムは、異なる順序付け及び耐久性保証を維持する。永続的メッセージが処理されているとき、メッセージは、複数の耐久性及び非耐久性ストレージハードウェア技術に一時的に記憶される。一部の実施形態では、メッセージは、RAM、NVRAM、及びNANDフラッシュデバイスに記憶され、各記憶媒体を効率的に使用するために、種々のプロトコルが使用される。レイテンシに敏感なクライアント要求は、複製されたNVRAMに、次いで後にNANDに持続され得るが、バックグラウンド再バランシング動作はNANDに直接持続される。
【0076】
永続的メッセージは、伝送される前に永続的に記憶される。これにより、システムは、故障及び構成要素の交換にも関わらず、クライアント要求にサービスし続けることができる。多くのハードウェア構成要素は、システム管理者、製造業者、ハードウェアサプライチェーン、及び進行中の監視品質制御インフラストラクチャに可視である一意の識別子を含むが、インフラストラクチャアドレスの上で実行されるアプリケーションは、アドレスを仮想化する。これらの仮想化されたアドレスは、構成要素の故障及び交換に関わらず、ストレージシステムの寿命にわたって変化しない。これは、クライアント要求処理の再構成又は中断なしに、ストレージシステムの各構成要素が経時的に交換されることを可能にし、すなわち、システムは、非中断アップグレードをサポートする。
【0077】
一部の実施形態では、仮想化されたアドレスは、十分な冗長性を伴って記憶される。連続モニタリングシステムは、ハードウェア及びソフトウェアステータスとハードウェア識別子とを相関させる。これにより、欠陥のある構成要素及び製造の細部に起因する障害の検出及び予測が可能になる。監視システムはまた、一部の実施形態では、構成要素をクリティカルパスから除去することによって、故障が発生する前に、影響を受けるデバイスからの権限及びエンティティのプロアクティブな転送を可能にする。
【0078】
図2Cは、ストレージノード150のコンテンツ及びストレージノード150の不揮発性ソリッドステートストレージ152のコンテンツを示すマルチレベルブロック図である。データは、一部の実施形態では、ネットワークインターフェースコントローラ(network interface controller、「NIC」)202によって、ストレージノード150との間で通信される。各ストレージノード150は、上述したように、CPU156と、1つ以上の不揮発性ソリッドステートストレージ152と、を有する。図2Cにおいて1レベル下に移動すると、各不揮発性ソリッドステートストレージ152は、不揮発性ランダムアクセスメモリ(「NVRAM」)204及びフラッシュメモリ206などの比較的高速な不揮発性ソリッドステートメモリを有する。一部の実施形態では、NVRAM204は、プログラム/消去サイクルを必要としない構成要素(DRAM、MRAM、PCM)であり得、メモリが読み出されるよりもはるかに頻繁に書き込まれることをサポートできるメモリであり得る。図2Cの別のレベルに移ると、NVRAM204は、一実施形態では、エネルギー貯蔵218によってバックアップされたダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)216などの高速揮発性メモリとして実装される。エネルギー貯蔵218は、電源異常の場合にコンテンツがフラッシュメモリ206に転送されるのに十分長くDRAM216に電力を供給し続けるのに十分な電力を提供する。一部の実施形態では、エネルギー貯蔵218は、電力損失の場合にDRAM216のコンテンツの安定した記憶媒体への転送を可能にするのに十分なエネルギーの好適な供給を供給する、キャパシタ、スーパーキャパシタ、バッテリ、又は他のデバイスである。フラッシュメモリ206は、複数のフラッシュダイ222として実装され、フラッシュダイ222のパッケージ又はフラッシュダイ222のアレイと称されることがある。フラッシュダイ222は、パッケージ当たり単一のダイ、パッケージ当たり複数のダイ(すなわち、マルチチップパッケージ)、ハイブリッドパッケージ、回路プリント基板又は他の基板上のベアダイ、カプセル化されたダイなど、任意の数の方法でパッケージ化され得ることを理解されたい。図示された実施形態では、不揮発性ソリッドステートストレージ152は、コントローラ212又は他のプロセッサと、コントローラ212に結合された入出力(input output、I/O)ポート210と、を有する。I/Oポート210は、フラッシュストレージノード150のCPU156及び/又はネットワークインターフェースコントローラ202に結合される。フラッシュ入出力(I/O)ポート220はフラッシュダイ222に結合され、ダイレクトメモリアクセスユニット(direct memory access、DMA)214はコントローラ212、DRAM216及びフラッシュダイ222に結合される。図示の実施形態では、I/Oポート210、コントローラ212、DMAユニット214、及びフラッシュI/Oポート220は、プログラマブルロジックデバイス(programmable logic device、「PLD」)208、例えば、FPGA上に実装される。この実施形態では、各フラッシュダイ222は、16kB(キロバイト)ページ224として編成されたページと、フラッシュダイ222にデータを書き込み、又はそこからデータを読み出すことができるレジスタ226と、を有する。更なる実施形態では、他のタイプのソリッドステートメモリが、フラッシュダイ222内に例解されるフラッシュメモリの代わりに、又はそれに加えて使用される。
【0079】
ストレージクラスタ161は、本明細書で開示されるような種々の実施形態では、概してストレージアレイと対比することができる。ストレージノード150は、ストレージクラスタ161を作成する集合の一部である。各ストレージノード150は、データのスライスと、データを提供するために必要なコンピューティングと、を所有する。複数のストレージノード150は、協働してデータを記憶し、取り出す。概してストレージアレイで使用されるようなストレージメモリ又はストレージデバイスは、データの処理及び操作にあまり関与しない。ストレージアレイ内のストレージメモリ又はストレージデバイスは、データを読み出し、書き込み、又は消去するためのコマンドを受信する。ストレージアレイ内のストレージメモリ又はストレージデバイスは、それらが埋め込まれているより大きなシステム、又はデータが何を意味するかを認識していない。ストレージアレイ内のストレージメモリ又はストレージデバイスは、RAM、ソリッドステートドライブ、ハードディスクドライブなどの種々のタイプのストレージメモリを含み得る。本明細書で説明される不揮発性ソリッドステートストレージ152ユニットは、同時にアクティブであり、複数の目的を果たす複数のインターフェースを有する。一部の実施形態では、ストレージノード150の機能性の一部は、ストレージユニット152にシフトされ、ストレージユニット152をストレージユニット152及びストレージノード150の組み合わせに変換する。(ストレージデータに対する)コンピューティングをストレージユニット152に配置することは、このコンピューティングをデータ自体のより近くに配置する。種々のシステム実施形態は、異なる能力を有するストレージノード層の階層を有する。対照的に、ストレージアレイでは、コントローラは、コントローラがシェルフ又はストレージデバイス内で管理する全てのデータに関する全てを所有し、認識している。ストレージクラスタ161では、本明細書で説明されるように、複数の不揮発性ソリッドステートストレージ152ユニット及び/又はストレージノード150内の複数のコントローラが、種々の方法で(例えば、消失訂正符号化、データシャーディング、メタデータ通信及び冗長性、ストレージ容量の拡張又は縮小、データ復旧などのために)協働する。
【0080】
図2Dは、図2A図2Cのストレージノード150及びストレージ152ユニットの実施形態を使用するストレージサーバ環境を示している。このバージョンでは、各不揮発性ソリッドステートストレージ152ユニットは、シャーシ138(図2A参照)内のPCIe(ペリフェラルコンポーネントインターコネクトエクスプレス)ボード上に、コントローラ212(図2C参照)などのプロセッサ、FPGA、フラッシュメモリ206、及びNVRAM204(スーパーキャパシタバックDRAM216、図2B及び図2C参照)を有する。不揮発性ソリッドステートストレージ152ユニットは、ストレージを含む単一のボードとして実装されてもよく、シャーシ内の最大の許容可能な故障ドメインであってもよい。一部の実施形態では、2つまでの不揮発性ソリッドステートストレージ152ユニットが故障する場合があり、デバイスはデータ損失なしに継続する。
【0081】
一部の実施形態では、物理ストレージは、アプリケーションの使用に基づいて、名前付き領域に分割される。NVRAM204は、不揮発性ソリッドステートストレージ152、DRAM216内の予約されたメモリの連続ブロックであり、NANDフラッシュによってバックアップされる。NVRAM204は、スプール(例えば、spool_region)として2つ書き込まれる複数のメモリ領域に論理的に分割される。NVRAM204スプール内の空間は、各権限168によって独立して管理される。各デバイスは、ある量のストレージ空間を各権限168に提供する。その権限168は、その空間内の寿命及び割り振りを更に管理する。スプールの例には、分散トランザクション又は概念が含まれる。不揮発性ソリッドステートストレージ152ユニットへの一次電力が故障したとき、オンボードスーパーキャパシタは、短い持続時間の電力ホールドアップを提供する。このホールドアップ間隔の間、NVRAM204の内容はフラッシュメモリ206にフラッシュされる。次の電源投入時に、NVRAM204の内容はフラッシュメモリ206から復旧する。
【0082】
ストレージユニットコントローラに関して、論理「コントローラ」の責任は、権限168を含むブレードの各々にわたって分散される。論理制御のこの分散は、ホストコントローラ242、中間層コントローラ244、及びストレージユニットコントローラ246として図2Dに示されている。制御プレーン及びストレージプレーンの管理は独立して扱われるが、一部は同じブレード上に物理的に同じ場所に配置されてもよい。各権限168は、独立したコントローラとして効果的に機能する。各権限168は、それ自身のデータ及びメタデータ構造、それ自身のバックグラウンドワーカーを提供し、それ自身のライフサイクルを維持する。
【0083】
図2Eは、ブレード252のハードウェアブロック図であり、図2Dのストレージサーバ環境において図2A図2Cのストレージノード150及びストレージユニット152の実施形態を使用して、基礎的物理リソースとインタラクションを有する制御プレーン254、計算プレーン256及びストレージプレーン258、並びに権限168を示している。制御プレーン254は、計算プレーン256内の計算リソースを使用してブレード252のいずれかの上で実行することができる複数の権限168に分割される。ストレージプレーン258は、各々がフラッシュ206及びNVRAM204リソースへのアクセスを提供するデバイスのセットに分割される。一実施形態では、計算プレーン256は、本明細書で説明されるように、ストレージプレーン258(例えば、ストレージアレイ)の1つ以上のデバイス上でストレージアレイコントローラの動作を実施することができる。
【0084】
図2Eの計算プレーン256及びストレージプレーン258において、権限168は、基礎的物理リソース(すなわち、デバイス)とインタラクションを有する。権限168の観点から、そのリソースは、物理デバイスの全てにわたってストライプされる。デバイスの観点から、デバイスは、権限がたまたまどこで実行されるかに関わらず、全ての権限168にリソースを提供する。各権限168は、ストレージユニット152におけるストレージメモリの1つ以上のパーティション260、例えば、フラッシュメモリ206及びNVRAM204におけるパーティション260を割り振ったか、又は割り振られている。各権限168は、ユーザデータを書き込み又は読み出すために、それに属するそれらの割り振られたパーティション260を使用する。権限は、システムの異なる量の物理ストレージに関連付けることができる。例えば、1つの権限168は、1つ以上のストレージユニット152において、1つ以上の他の権限168よりも多数のパーティション260又はより大きなサイズのパーティション260を有することができる。
【0085】
図2Fは、一部の実施形態による、ストレージクラスタのブレード252内の弾力性ソフトウェア層を描示している。弾力性構造では、弾力性ソフトウェアは対称であり、すなわち、各ブレードの計算モジュール270は、図2Fに描示されるプロセスの3つの同一の層を実行する。ストレージマネージャ274は、ローカルストレージユニット152、NVRAM204、及びフラッシュ206に記憶されたデータ及びメタデータに対する他のブレード252からの読み出し及び書き込み要求を実行する。権限168は、対応するデータ又はメタデータが存在するストレージユニット152上のブレード252に必要な読み出し及び書き込みを発行することによって、クライアント要求を履行する。エンドポイント272は、スイッチファブリック146の監視ソフトウェアから受信したクライアント接続要求を解析し、クライアント接続要求を、履行の責任を負う権限168に中継し、権限168の応答をクライアントに中継する。対称的な3層構造は、ストレージシステムの高度な同時性を可能にする。弾力性は、これらの実施形態において効率的かつ確実にスケールアウトする。加えて、弾力性は、クライアントアクセスパターンに関わらず全てのリソースにわたって作業を均等にバランスさせ、従来の分散ロッキングで典型的に発生するブレード間協調の必要性の多くを排除することによって同時性を最大化する固有のスケールアウト技術を実装する。
【0086】
更に図2Fを参照すると、ブレード252の計算モジュール270内で実行される権限168は、クライアント要求を履行するのに必要な内部動作を実施する。弾力性の1つの特徴は、権限168がステートレスであること、すなわち、高速アクセスのためにそれら自体のブレード252のDRAMにアクティブデータ及びメタデータをキャッシュするが、更新がフラッシュ206に書き込まれるまで、権限が3つの別個のブレード252上のそれらのNVRAM204パーティションに全ての更新を記憶することである。一部の実施形態では、NVRAM204への全てのストレージシステム書き込みは、3つの別個のブレード252上のパーティションに対して3重である。3重ミラーNVRAM204と、パリティ及びリードソロモンRAIDチェックサムによって保護された永続的ストレージとにより、ストレージシステムは、データ、メタデータ、又はいずれかへのアクセスを失うことなく、2つのブレード252の同時故障に耐えることができる。
【0087】
権限168はステートレスであるため、それらはブレード252間を移行することができる。各権限168は、一意の識別子を有する。NVRAM204及びフラッシュ206パーティションは、それらが一部において実行されているブレード252ではなく、権限168の識別子に関連付けられる。したがって、権限168が移行するとき、権限168は、その新しい位置から同じストレージパーティションを管理し続ける。新しいブレード252がストレージクラスタの一実施形態にインストールされると、システムは、システムの権限168による使用のために新しいブレード252のストレージを分割し、選択された権限168を新しいブレード252に移行し、新しいブレード252上でエンドポイント272を開始し、それらをスイッチファブリック146のクライアント接続分散アルゴリズムに含めることによって、負荷を自動的に再バランシングする。
【0088】
それらの新しい位置から、移行された権限168は、フラッシュ206上のそれらのNVRAM204パーティションのコンテンツを持続し、他の権限168からの読み出し及び書き込み要求を処理し、エンドポイント272がそれらに向けるクライアント要求を履行する。同様に、ブレード252が故障又は除去された場合、システムは、システムの残りのブレード252の間でその権限168を再分散させる。再分散された権限168は、それらの新しい位置からそれらの元の機能を実施し続ける。
【0089】
図2Gは、一部の実施形態による、ストレージクラスタのブレード252内の権限168及びストレージリソースを描示している。各権限168は、各ブレード252上のフラッシュ206及びNVRAM204のパーティションに対して排他的に責任を負う。権限168は、他の権限168とは独立して、そのパーティションのコンテンツ及び完全性を管理する。権限168は、入力されるデータを圧縮し、それをそれらのNVRAM204パーティションに一時的に保存し、次いで、それらのフラッシュ206パーティションのストレージのセグメントにデータを統合し、RAID保護し、かつ存続させる。権限168がデータをフラッシュ206に書き込むと、ストレージマネージャ274は、書き込み性能を最適化し、媒体寿命を最大化するために必要なフラッシュ変換を実施する。バックグラウンドでは、権限168は、「ガベージコレクト」、つまりクライアントがデータを上書きすることで不要になったデータが占有するスペースを再利用する。権限168のパーティションは互いに素であるため、クライアント及び書き込みを実行するための、又はバックグラウンド機能を実行するための分散ロッキングの必要はないことを理解されたい。
【0090】
本明細書に記載される実施形態は、種々のソフトウェア、通信及び/又はネットワーキングプロトコルを利用することができる。加えて、ハードウェア及び/又はソフトウェアの構成は、種々のプロトコルに適応するように調整され得る。例えば、実施形態は、WINDOWS(商標)環境において認証、ディレクトリ、ポリシー、及び他のサービスを提供するデータベースベースのシステムであるアクティブディレクトリを利用することができる。これらの実施形態では、軽量ディレクトリアクセスプロトコル(Lightweight Directory Access Protocol、LDAP)が、アクティブディレクトリなどのディレクトリサービスプロバイダ内の項目を照会及び修正するためのアプリケーションプロトコルの一例である。一部の実施形態では、ネットワークロックマネージャ(network lock manager、「NLM」)が、ネットワークファイルシステム(「NFS」)と協働して、ネットワークを介してシステムVスタイルのアドバイザリファイル及びレコードロッキングを提供する機能として利用される。その1つのバージョンが共通インターネットファイルシステム(「CIFS」)としても知られているサーバメッセージブロック(Server Message Block、「SMB」)プロトコルは、本明細書で説明されるストレージシステムと統合されてもよい。SMPは、ファイル、プリンタ、及びシリアルポートへの共用アクセス、並びにネットワーク上のノード間の種々の通信を提供するために通常使用されるアプリケーション層ネットワークプロトコルとして動作する。SMBはまた、認証されたプロセス間通信メカニズムを提供する。AMAZON(商標)S3(シンプルストレージサービス)は、アマゾンウェブサービスによって提供されるWebサービスであり、本明細書に記載のシステムは、ウェブサービスインターフェース(REST(リプレゼンテーショナルステイトトランスファ)、SOAP(シンプルオブジェクトアクセスプロトコル)、及びBitTorrent)を介してAmazon S3とインターフェースし得る。RESTful API(アプリケーションプログラミングインターフェース)は、トランザクションを分解して一連の小さなモジュールを作成する。各モジュールは、トランザクションの特定の基礎的部分をアドレス指定する。特にオブジェクトデータに対して、これらの実施形態で提供される制御又は許可は、アクセス制御リスト(access control list、「ACL」)の利用を含み得る。ACLは、オブジェクトにアタッチされた許可のリストであり、ACLは、どのユーザ又はシステムプロセスがオブジェクトへのアクセスを許可されるか、並びに所与のオブジェクトに対してどの動作が許可されるかを指定する。システムは、ネットワーク上のコンピュータの識別及び位置特定システムを提供し、インターネットを介してトラフィックをルーティングする通信プロトコルのために、インターネットプロトコルバージョン6(Internet Protocol version 6、「IPv6」)並びにIPv4を利用することができる。ネットワーク化されたシステム間のパケットのルーティングは、等コストマルチパスルーティング(Equal-cost multi-path routing、「ECMP」)を含むことができ、これは、単一の宛先への次ホップパケット転送が、ルーティングメトリック計算において最上位に結合する複数の「最良のパス」上で行われ得るルーティング戦略である。マルチパスルーティングは、単一のルータに限定されたホップごとの決定であるため、ほとんどのルーティングプロトコルとともに使用することができる。ソフトウェアは、ソフトウェアアプリケーションの単一のインスタンスが複数の顧客にサービスを提供するアーキテクチャであるマルチテナンシーをサポートすることができる。各顧客は、テナントと称されることがある。テナントは、アプリケーションの一部の部分をカスタマイズする能力を与えられてもよいが、一部の実施形態では、アプリケーションのコードをカスタマイズしなくてもよい。実施形態は、監査ログを維持することができる。監査ログは、コンピューティングシステムにおけるイベントを記録する文書である。どのリソースがアクセスされたかを文書化することに加えて、監査ログエントリは、通常、宛先アドレス及びソースアドレス、タイムスタンプ、並びに種々の規制に準拠するためのユーザログイン情報を含む。実施形態は、暗号化鍵ローテーションなどの種々の鍵管理ポリシーをサポートすることができる。更に、システムは、動的ルートパスワード又はパスワードを動的に変化させる何らかの変形をサポートすることができる。
【0091】
図3Aは、本開示の一部の実施形態による、データ通信のためにクラウドサービスプロバイダ302と結合されたストレージシステム306の図を記載している。あまり詳細には描示されていないが、図3Aに描示されるストレージシステム306は、図1A図1D及び図2A図2Gを参照して上述したストレージシステムと同様であってもよい。一部の実施形態では、図3Aに描示されるストレージシステム306は、アンバランスなアクティブ/アクティブコントローラを含むストレージシステムとして、バランスのとれたアクティブ/アクティブコントローラを含むストレージシステムとして、フェイルオーバをサポートするために使用され得る予備リソースを各コントローラが有するように各コントローラのリソースの全てよりも少ないリソースが利用されるアクティブ/アクティブコントローラを含むストレージシステムとして、完全にアクティブ/アクティブなコントローラを含むストレージシステムとして、データセット分離されたコントローラを含むストレージシステムとして、フロントエンドコントローラ及びバックエンド統合ストレージコントローラを有するデュアル層アーキテクチャを含むストレージシステムとして、デュアルコントローラアレイのスケールアウトクラスタを含むストレージシステムとして、並びにかかる実施形態の組み合わせとして具現化され得る。
【0092】
図3Aに描示される例では、ストレージシステム306は、データ通信リンク304を介してクラウドサービスプロバイダ302に結合される。データ通信リンク304は、専用データ通信リンクとして、ワイドエリアネットワーク(wide area network、「WAN」)若しくはLANなどの1つ以上のデータ通信ネットワークの使用を通して提供されるデータ通信パスとして、又はストレージシステム306とクラウドサービスプロバイダ302との間でデジタル情報を転送することが可能な何らかの他のメカニズムとして具現化され得る。かかるデータ通信リンク304は、完全に有線、完全に無線、又は有線及び無線データ通信パスの何らかの集合であってもよい。かかる例では、デジタル情報は、1つ以上のデータ通信プロトコルを使用して、データ通信リンク304を介して、ストレージシステム306とクラウドサービスプロバイダ302との間で交換されてもよい。例えば、デジタル情報は、ハンドヘルドデバイス転送プロトコル(「HDTP」)、ハイパーテキスト転送プロトコル(「HTTP」)、インターネットプロトコル(「IP」)、リアルタイム転送プロトコル(「RTP」)、伝送制御プロトコル(「TCP」)、ユーザデータグラムプロトコル(「UDP」)、ワイヤレスアプリケーションプロトコル(「WAP」)、又は他のプロトコルを使用して、データ通信リンク304を介して、ストレージシステム306とクラウドサービスプロバイダ302との間で交換されてもよい。
【0093】
図3Aに描示されるクラウドサービスプロバイダ302は、例えば、データ通信リンク304を介したコンピューティングリソースの共有を通して、クラウドサービスプロバイダ302のユーザに膨大なサービスを提供する、システム及びコンピューティング環境として具現化され得る。クラウドサービスプロバイダ302は、コンピュータネットワーク、サーバ、ストレージ、アプリケーション及びサービスなどの構成可能なコンピューティングリソースの共有プールへのオンデマンドアクセスを提供することができる。構成可能なリソースの共有プールは、最小限の管理労力で、クラウドサービスプロバイダ302のユーザに迅速にプロビジョニングされ、リリースされ得る。概して、クラウドサービスプロバイダ302のユーザは、サービスを提供するためにクラウドサービスプロバイダ302によって利用される正確なコンピューティングリソースを認識していない。多くの場合、かかるクラウドサービスプロバイダ302は、インターネットを介してアクセス可能であり得るが、当業者である読者は、任意のデータ通信リンクを通してユーザにサービスを提供するために共有リソースの使用を抽象化する任意のシステムが、クラウドサービスプロバイダ302と見なされ得ることを認識するであろう。
【0094】
図3Aに描示される例では、クラウドサービスプロバイダ302は、種々のサービスモデルの実装形態を通じて、ストレージシステム306及びストレージシステム306のユーザに種々のサービスを提供するように構成することができる。例えば、クラウドサービスプロバイダ302は、サービスとしてのインフラストラクチャ(infrastructure as a service、「IaaS」)サービスモデルの実装形態を通じて、サービスとしてのプラットフォーム(platform as a service、「PaaS」)サービスモデルの実装形態を通じて、サービスとしてのソフトウェア(software as a service、「SaaS」)サービスモデルの実装形態を通じて、サービスとしての認証(authentication as a service、「AaaS」)サービスモデルの実装形態を通じて、クラウドサービスプロバイダ302がストレージシステム306及びストレージシステム306のユーザによる使用のためにそのストレージインフラストラクチャへのアクセスを提供するサービスモデルとしてのストレージの実装形態を通じて、サービスを提供するように構成されてもよい。上述のサービスモデルは、説明の目的のためだけに含まれ、クラウドサービスプロバイダ302によって提供され得るサービスの制限、又はクラウドサービスプロバイダ302によって実装され得るサービスモデルに関する制限を表すものではないため、クラウドサービスプロバイダ302は、追加のサービスモデルの実装形態を通じて、ストレージシステム306及びストレージシステム306のユーザに追加のサービスを提供するように構成され得ることを、読者は理解するであろう。
【0095】
図3Aに描示される例では、クラウドサービスプロバイダ302は、例えば、プライベートクラウドとして、パブリッククラウドとして、又はプライベートクラウド及びパブリッククラウドの組み合わせとして具現化されてもよい。クラウドサービスプロバイダ302がプライベートクラウドとして具現化される一実施形態では、クラウドサービスプロバイダ302は、複数の組織にサービスを提供するのではなく、単一の組織にサービスを提供することに専用であってもよい。クラウドサービスプロバイダ302がパブリッククラウドとして具現化される一実施形態では、クラウドサービスプロバイダ302は、複数の組織にサービスを提供することができる。更に代替的な実施形態では、クラウドサービスプロバイダ302は、ハイブリッドクラウド配備を有するプライベートサービスとパブリッククラウドサービスとの混合として具現化されてもよい。
【0096】
図3Aには明示的に描示されていないが、ストレージシステム306及びストレージシステム306のユーザへのクラウドサービスの配信を容易にするために、膨大な量の追加のハードウェア構成要素及び追加のソフトウェア構成要素が必要であり得ることを、読者は理解するであろう。例えば、ストレージシステム306は、クラウドストレージゲートウェイに結合されてもよい(又はそれを含んでもよい)。かかるクラウドストレージゲートウェイは、例えば、ストレージシステム306とともにオンプレミスに位置するハードウェアベース又はソフトウェアベースの機器として具現化されてもよい。かかるクラウドストレージゲートウェイは、ストレージシステム306上で実行しているローカルアプリケーションと、ストレージシステム306によって利用されるリモートのクラウドベースのストレージとの間のブリッジとして動作することができる。クラウドストレージゲートウェイの使用を通して、組織は、プライマリiSCSI又はNASをクラウドサービスプロバイダ302に移動させ、それによって、組織がそのオンプレミスストレージシステム上の空間を節約することを可能にし得る。かかるクラウドストレージゲートウェイは、SCSIコマンド、ファイルサーバコマンド、又は他の適切なコマンドを、クラウドサービスプロバイダ302との通信を容易にするREST空間プロトコルに変換することができる、ディスクアレイ、ブロックベースのデバイス、ファイルサーバ、又は他のストレージシステムをエミュレートするように構成され得る。
【0097】
ストレージシステム306及びストレージシステム306のユーザが、クラウドサービスプロバイダ302によって提供されるサービスを利用することを可能にするために、クラウド移行プロセスが行われてもよく、その間に、組織のローカルシステムからの(又は別のクラウド環境からの)データ、アプリケーション、又は他の要素が、クラウドサービスプロバイダ302に移動される。データ、アプリケーション、又は他の要素をクラウドサービスプロバイダ302の環境に正常に移行させるために、クラウド移行ツールなどのミドルウェアを利用して、クラウドサービスプロバイダ302の環境と組織の環境との間のギャップを埋めることができる。かかるクラウド移行ツールはまた、大量のデータをクラウドサービスプロバイダ302に移行することに関連付けられる潜在的に高いネットワークコスト及び長い転送時間に対処するとともに、データ通信ネットワークを介したクラウドサービスプロバイダ302への機密データに関連付けられるセキュリティ問題に対処するように構成することができる。ストレージシステム306及びストレージシステム306のユーザがクラウドサービスプロバイダ302によって提供されるサービスを利用することを更に可能にするために、クラウドオーケストレータはまた、統合されたプロセス又はワークフローを作成することを追求して、自動化されたタスクを配置し、かつ協調させるために使用されてもよい。かかるクラウドオーケストレータは、種々の構成要素を構成すること、それらの構成要素がクラウド構成要素であるかオンプレミス構成要素であるか、並びにかかる構成要素間の相互接続を管理することなどのタスクを実施することができる。クラウドオーケストレータは、リンクが正しく構成され維持されることを確実にするために、構成要素間通信及び接続を単純化することができる。
【0098】
図3Aに描示される例では、上記で簡単に説明したように、クラウドサービスプロバイダ302は、SaaSサービスモデルの使用を通じて、ストレージシステム306及びストレージシステム306のユーザにサービスを提供するように構成されてもよく、ローカルコンピュータにアプリケーションをインストールして実行する必要性を排除し、アプリケーションの保守及びサポートを簡略化してもよい。かかるアプリケーションは、本開示の種々の実施形態による多くの形態を採ることができる。例えば、クラウドサービスプロバイダ302は、データ分析アプリケーションへのアクセスをストレージシステム306及びストレージシステム306のユーザに提供するように構成されてもよい。かかるデータ分析アプリケーションは、例えば、ストレージシステム306によって自宅に転送された膨大な量のテレメトリデータを受信するように構成されてもよい。かかるテレメトリデータは、ストレージシステム306の種々の動作特性を記述することができ、例えば、ストレージシステム306の健全性を判定すること、ストレージシステム306上で実行されているワークロードを識別すること、ストレージシステム306が種々のリソースを使い果たすときを予測すること、構成変更、ハードウェア若しくはソフトウェアアップグレード、ワークフロー移行、又はストレージシステム306の動作を改善することができる他のアクションを推奨することを含む、膨大な数の目的のために分析することができる。
【0099】
クラウドサービスプロバイダ302はまた、仮想化されたコンピューティング環境へのアクセスをストレージシステム306及びストレージシステム306のユーザに提供するように構成することができる。かかる仮想化されたコンピューティング環境は、例えば、仮想マシン又は他の仮想化されたコンピュータハードウェアプラットフォーム、仮想ストレージデバイス、仮想化されたコンピュータネットワークリソースなどとして具現化されてもよい。かかる仮想化された環境の例は、実際のコンピュータをエミュレートするように作成された仮想マシン、論理デスクトップを物理マシンから分離する仮想化されたデスクトップ環境、異なるタイプの具体的なファイルシステムへの均一なアクセスを可能にする仮想化されたファイルシステムなどを含み得る。
【0100】
図3Aに描示される例は、ストレージシステム306がクラウドサービスプロバイダ302とのデータ通信のために結合されていることを例解するが、他の実施形態では、ストレージシステム306は、プライベートクラウド要素(例えば、プライベートクラウドサービス、オンプレミスインフラストラクチャなど)及びパブリッククラウド要素(例えば、1つ以上のクラウドサービスプロバイダによって提供され得るプライベートクラウドサービス、インフラストラクチャなど)が組み合わされて、種々のプラットフォーム間のオーケストレーションによって単一のソリューションを形成するハイブリッドクラウド配備の一部であり得る。かかるハイブリッドクラウド配備は、例えば、Microsoft(商標)のAzure(商標)Arcなどのハイブリッドクラウド管理ソフトウェアを活用し得、これは、ハイブリッドクラウド配備の管理を任意のインフラストラクチャに集中させ、どこでもサービスの配備を可能にする。かかる例では、ハイブリッドクラウド管理ソフトウェアは、ハイブリッドクラウド配備を形成するリソース(物理及び仮想の両方)を作成、更新、及び削除するように、特定のワークロードに計算及びストレージを割り振るように、性能、ポリシーコンプライアンス、更新及びパッチ、セキュリティステータスについてワークロード及びリソースを監視するように、又は種々の他のタスクを実施するように構成することができる。
【0101】
読者は、本明細書に記載されるストレージシステムを1つ以上のクラウドサービスプロバイダとペアリングすることによって、種々の提供が可能になり得ることを理解するであろう。例えば、ストレージシステムがプライマリデータストアとして機能し得る実施形態を含む、災害によって引き起こされる中断からアプリケーション及びデータを保護するためにクラウドリソースが利用される、サービスとしての災害復旧(disaster recovery as a service、「DRaaS」)が提供され得る。かかる実施形態では、システム故障の場合にビジネス継続性を可能にする全システムバックアップを取ることができる。かかる実施形態では、クラウドデータバックアップ技術(それ自体で、又はより大きいDRaaSソリューションの一部として)はまた、本明細書に説明されるストレージシステム及びクラウドサービスプロバイダを含むソリューション全体に統合され得る。
【0102】
本明細書に説明されるストレージシステム、並びにクラウドサービスプロバイダは、多様なセキュリティ特徴を提供するために利用することができる。例えば、ストレージシステムは、休止状態のデータを暗号化することができ(暗号化されたデータをストレージシステムとの間で送受信することができ)、サービスとしての鍵管理(Key Management-as-a-Service、「KMaaS」)を利用して、暗号鍵、ストレージデバイスをロック及びロック解除するための鍵などを管理することができる。同様に、クラウドデータセキュリティゲートウェイ又は同様のメカニズムを利用して、ストレージシステム内に記憶されたデータが、クラウドデータバックアップ動作の一部としてクラウドに不適切に記憶されないことを確実にし得る。更に、マイクロセグメンテーション又はアイデンティティベースのセグメント化を、ストレージシステムを含むデータセンターにおいて、又はクラウドサービスプロバイダ内で利用して、データセンター及びクラウド配備において、ワークロードを互いに分離することを可能にする安全なゾーンを作成することができる。
【0103】
更なる説明のために、図3Bは、本開示の一部の実施形態によるストレージシステム306の図を記載している。あまり詳細には描示されていないが、図3Bに描示されるストレージシステム306は、図1A図1D及び図2A図2Gを参照して上述したストレージシステムと同様であり得るが、これは、ストレージシステムは、上述した構成要素の多くを含み得るためである。
【0104】
図3Bに描示されるストレージシステム306は、多くの形態で具現化され得る、膨大な量のストレージリソース308を含み得る。例えば、ストレージリソース308は、基板上に堆積されたカーボンナノチューブを利用するナノRAM又は別の形態の不揮発性ランダムアクセスメモリ、3Dクロスポイント非揮発性メモリ、シングルレベルセル(single-level cell、「SLC」)NANDフラッシュ、マルチレベルセル(multi-level cell、「MLC」)NANDフラッシュ、トリプルレベルセル(triple-level cell、「TLC」)NANDフラッシュ、クワッドレベルセル(quad-level cell、「QLC」)NANDフラッシュ、又は他を含むフラッシュメモリを含み得る。同様に、ストレージリソース308は、不揮発性磁気抵抗ランダムアクセスメモリ(magnetoresistive random-access memory、「MRAM」)を含み得、これにはスピントランスファートルク(spin transfer torque、「STT」)MRAMが含まれる。例示的なストレージリソース308は、代替的に、不揮発性相変化メモリ(phase-change memory、「PCM」)、フォトニック量子情報の記憶及び取り出しを可能にする量子メモリ、抵抗ランダムアクセスメモリ(resistive random-access memory、「ReRAM」)、ストレージクラスメモリ(storage class memory、「SCM」)、又は本明細書で説明するリソースの任意の組み合わせを含む他の形態のストレージリソースを含み得る。読者は、DRAM、SRAM、EEPROM、ユニバーサルメモリなどを含む、他の形態のコンピュータメモリ及びストレージデバイスが、上述のストレージシステムによって利用され得ることを理解するであろう。図3Aに描示されるストレージリソース308は、デュアルインラインメモリモジュール(dual in-line memory module、「DIMM」)、不揮発性デュアルインラインメモリモジュール(non-volatile dual in-line memory module、「NVDIMM」)、M.2、U.2及び他を含むがこれらに限定されない種々のフォームファクタで具現化され得る。
【0105】
図3Bに描示されるストレージリソース308は、種々の形態のSCMを含み得る。SCMは、データセット全体が、完全にDRAM内に存在するメモリ内データセットとして扱われ得るように、高速の非揮発性メモリ(例えば、NANDフラッシュ)をDRAMの拡張として効果的に扱うことができる。SCMは、例えば、NANDフラッシュなどの不揮発性媒体を含み得る。かかるNANDフラッシュは、そのトランスポートとしてPCIeバスを使用することができるNVMeを利用してアクセスされてもよく、古いプロトコルと比較して比較的低いアクセスレイテンシを提供する。実際に、オールフラッシュアレイでSSDのために使用されるネットワークプロトコルは、イーサネットを使用するNVMe(ROCE、NVMe TCP)、ファイバチャネル(NVMe FC)、インフィニバンド(iWARP)、及びDRAMの拡張として高速の非揮発性メモリを処理することを可能にする他のものを含む。DRAMはしばしばバイトアドレス指定可能であり、NANDフラッシュなどの高速の非揮発性メモリはブロックアドレス指定可能であるという事実を考慮すると、ブロックデータを媒体に記憶されるバイトに変換するために、コントローラソフトウェア/ハードウェアスタックが必要とされ得る。SCMとして使用され得る媒体及びソフトウェアの例は、例えば、3D XPoint、Intel Memory Drive Technology、SamsungのZ-SSD及び他を含み得る。
【0106】
図3Bに描示されるストレージリソース308はまた、レーストラックメモリ(ドメインウォールメモリとも称される)を含み得る。かかるレーストラックメモリは、ソリッドステートデバイスにおいて、電子の電荷に加えて、電子がスピンするときに電子によって生成される磁場の固有の強度及び配向に依存する不揮発性ソリッドステートメモリの形態として具現化され得る。ナノスケールのパーマロイワイヤに沿って磁区を移動させるためにスピンコヒーレント電流を使用することによって、電流がワイヤを通過するときにワイヤの近くに位置決めされた磁気読み出し/書き込みヘッドのそばを磁区が通過することができ、それによって磁区が改変されてビットのパターンが記録される。レーストラックメモリデバイスを作成するために、多くのかかるワイヤ及び読み出し/書き込み要素が一緒にパッケージ化され得る。
【0107】
図3Bに描示される例示的なストレージシステム306は、種々のストレージアーキテクチャを実装し得る。例えば、本開示の一部の実施形態によるストレージシステムは、データがブロックに記憶されるブロックストレージを利用してもよく、各ブロックは、本質的に、個々のハードドライブとして作用する。本開示の一部の実施形態によるストレージシステムは、データがオブジェクトとして管理されるオブジェクトストレージを利用することができる。各オブジェクトは、データ自体、可変量のメタデータ、及びグローバル一意識別子を含んでもよく、オブジェクトストレージは、複数のレベル(例えば、デバイスレベル、システムレベル、インターフェースレベル)で実装され得る。本開示の一部の実施形態によるストレージシステムは、データが階層構造で記憶されるファイルストレージを利用する。かかるデータは、ファイル及びフォルダに保存され、それを記憶するシステム及びそれを取り出すシステムの両方に同じフォーマットで提示され得る。
【0108】
図3Bに描示される例示的なストレージシステム306は、スケールアップモデルの使用を通じて追加のストレージリソースを追加することができ、スケールアウトモデルの使用を通じて追加のストレージリソースを追加することができ、又はそれらの何らかの組み合わせを通じて追加のストレージリソースを追加することができるストレージシステムとして具現化されてもよい。スケールアップモデルでは、追加のストレージデバイスを追加することによって、追加のストレージが追加され得る。しかしながら、スケールアウトモデルでは、追加のストレージノードがストレージノードのクラスタに追加されてもよく、かかるストレージノードは、追加の処理リソース、追加のネットワーキングリソースなどを含み得る。
【0109】
図3Bに描示される例示的なストレージシステム306は、上述のストレージリソースを種々の異なる方法で活用することができる。例えば、ストレージリソースのいくつかの部分は、書き込みキャッシュとして機能するように利用されてもよく、ストレージシステム内のストレージリソースは、読み出しキャッシュとして利用されてもよく、又は階層化は、1つ以上の階層化ポリシーに従ってストレージシステム内にデータを配置することによって、ストレージシステム内で達成されてもよい。
【0110】
図3Bに描示されるストレージシステム306はまた、ストレージシステム306内の構成要素間のデータ通信、並びにストレージシステム306とストレージシステム306の外側にあるコンピューティングデバイスとの間のデータ通信を容易にするのに有用であり得る通信リソース310を含み、これらのリソースが比較的広大な広がりによって分離される実施形態を含む。通信リソース310は、種々の異なるプロトコル及びデータ通信ファブリックを利用して、ストレージシステム内の構成要素と、ストレージシステムの外部にあるコンピューティングデバイスとの間のデータ通信を容易にするように構成され得る。例えば、通信リソース310は、FCネットワークを介してSCSIコマンドをトランスポートすることができるFCファブリック及びFCプロトコルなどのファイバチャネル(fibre channel、「FC」)技術、FCフレームがカプセル化され、イーサネットネットワークを介して伝送されるFCオーバーイーサネット(FC over ethernet、「FCoE」)技術、チャネルアダプタ間の伝送を容易にするためにスイッチドファブリックトポロジが利用されるインフィニバンド(InfiniBand、「IB」)技術、PCIエクスプレス(「PCIe」)バスを介してアタッチされた不揮発性記憶媒体にアクセスすることができるNVMエクスプレス(NVM Express、「NVMe」)技術及びNVMeオーバーファブリック(NVMe over fabric、「NVMeoF」)技術及び他を含み得る。実際、上述のストレージシステムは、直接的又は間接的に、情報(バイナリ情報を含む)がニュートリノのビームを使用して伝送されるニュートリノ通信技術及びデバイスを利用することができる。
【0111】
通信リソース310はまた、シリアルアタッチドSCSI(serial attached SCSI、「SAS」)、ストレージシステム306内のストレージリソース308をストレージシステム306内のホストバスアダプタに接続するためのシリアルATA(serial ATA、「SATA」)バスインターフェース、ストレージシステム306内のストレージリソース308へのブロックレベルアクセスを提供するためのインターネット小型コンピュータシステムインターフェース(「iSCSI」)技術、及びストレージシステム306内の構成要素間のデータ通信、並びにストレージシステム306とストレージシステム306の外部にあるコンピューティングデバイスとの間のデータ通信を容易にするのに有用であり得る他の通信リソースを利用して、ストレージシステム306内のストレージリソース308にアクセスするためのメカニズムを含み得る。
【0112】
図3Bに描示されるストレージシステム306はまた、ストレージシステム306内でコンピュータプログラム命令を実行し、他の計算タスクを実施するのに有用であり得る処理リソース312を含む。処理リソース312は、何らかの特定の目的のためにカスタマイズされた1つ以上のASIC、並びに1つ以上のCPUを含み得る。処理リソース312はまた、1つ以上のDSP、1つ以上のFPGA、1つ以上のシステムオンチップ(systems on a chip、「SoC」)、又は他の形態の処理リソース312を含み得る。ストレージシステム306は、ストレージリソース312を利用して、限定はしないが、以下でより詳細に説明するソフトウェアリソース314の実行をサポートすることを含む、種々のタスクを実施することができる。
【0113】
図3Bに描示すストレージシステム306はまた、ストレージシステム306内の処理リソース312によって実行されるときに、膨大な数のタスクを実施することができるソフトウェアリソース314を含む。ソフトウェアリソース314は、例えば、ストレージシステム306内の処理リソース312によって実行されるときに、種々のデータ保護技術を実行するのに有用であるコンピュータプログラム命令の1つ以上のモジュールを含み得る。かかるデータ保護技術は、例えば、ストレージシステム内のコンピュータハードウェア上で実行されるシステムソフトウェアによって、クラウドサービスプロバイダによって、又は他の方法で実行され得る。かかるデータ保護技術は、データアーカイブ、データバックアップ、データ複製、データスナップショット、データ及びデータベースクローニング、並びに他のデータ保護技術を含み得る。
【0114】
ソフトウェアリソース314はまた、ソフトウェア定義ストレージ(software-defined storage、「SDS」)を実装する際に有用であるソフトウェアを含み得る。かかる例では、ソフトウェアリソース314は、実行されるときに、基礎的ハードウェアから独立したデータストレージのポリシーベースのプロビジョニング及び管理において有用であるコンピュータプログラム命令の1つ以上のモジュールを含み得る。かかるソフトウェアリソース314は、ストレージハードウェアを管理するソフトウェアからストレージハードウェアを分離するためにストレージ仮想化を実装する際に有用であり得る。
【0115】
ソフトウェアリソース314はまた、ストレージシステム306に向けられるI/O動作を容易にし、最適化するのに有用なソフトウェアを含み得る。例えば、ソフトウェアリソース314は、例えば、データ圧縮、データ重複排除及び他などの種々のデータ削減技術を実施するソフトウェアモジュールを含み得る。ソフトウェアリソース314は、基礎的ストレージリソース308のより良好な使用を容易にするためにI/O動作をインテリジェントにグループ化するソフトウェアモジュール、ストレージシステム内から移行するためのデータ移行動作を実施するソフトウェアモジュール、並びに他の機能を実施するソフトウェアモジュールを含み得る。かかるソフトウェアリソース314は、1つ以上のソフトウェアコンテナとして、又は多くの他の方法で具現化され得る。
【0116】
更なる説明のために、図3Cは、本開示の一部の実施形態によるクラウドベースのストレージシステム318の例を記載している。図3Cに描示される例では、クラウドベースのストレージシステム318は、例えば、アマゾンウェブサービス(Amazon Web Service、「AWS」)(商標)、Microsoft Azure(商標)、Google Cloud Platform(商標)、IBM Cloud(商標)、Oracle Cloud(商標)及び他などのクラウドコンピューティング環境316内に完全に作成される。クラウドベースのストレージシステム318は、上述したストレージシステムによって提供され得るサービスと同様のサービスを提供するために使用され得る。
【0117】
図3Cに描示されるクラウドベースのストレージシステム318は、それぞれがストレージコントローラアプリケーション324、326の実行をサポートするために使用される2つのクラウドコンピューティングインスタンス320、322を含む。クラウドコンピューティングインスタンス320、322は、例えば、ストレージコントローラアプリケーション324、326などのソフトウェアアプリケーションの実行をサポートするためにクラウドコンピューティング環境316によって提供され得るクラウドコンピューティングリソース(例えば、仮想マシン)のインスタンスとして具現化され得る。例えば、クラウドコンピューティングインスタンス320、322の各々は、Azure VM上で実行することができ、各Azure VMは、キャッシュとして(例えば、読み出しキャッシュとして)活用することができる高速一時ストレージを含み得る。一実施形態では、クラウドコンピューティングインスタンス320、322は、Amazonエラスティックコンピュートクラウド(Elastic Compute Cloud、「EC2」)インスタンスとして具現化され得る。かかる例では、ストレージコントローラアプリケーション324、326を含むAmazonマシンイメージ(Amazon Machine Image、「AMI」)をブートして、ストレージコントローラアプリケーション324、326を実行することができる仮想マシンを作成及び構成することができる。
【0118】
図3Cに描示される例示的な方法では、ストレージコントローラアプリケーション324、326は、実行されるときに、種々のストレージタスクを実施するコンピュータプログラム命令のモジュールとして具現化され得る。例えば、ストレージコントローラアプリケーション324、326は、実行されるときに、クラウドベースのストレージシステム318へのデータの書き込み、クラウドベースのストレージシステム318からのデータの消去、クラウドベースのストレージシステム318からのデータの取り出し、ディスク利用及び性能の監視及び報告、RAID又はRAID様のデータ冗長動作などの冗長動作の実施、データの圧縮、データの暗号化、データの重複排除など、上述の図1Aのコントローラ110A、110Bと同じタスクを実行するコンピュータプログラム命令のモジュールとして具現化されてもよい。それぞれがストレージコントローラアプリケーション324、326を含む2つのクラウドコンピューティングインスタンス320、322が存在するため、一部の実施形態では、一方のクラウドコンピューティングインスタンス320は、上述のようにプライマリコントローラとして動作することができ、他方のクラウドコンピューティングインスタンス322は、上述のようにセカンダリコントローラとして動作することができることを、読者は理解するであろう。読者は、図3Cに描示されるストレージコントローラアプリケーション324、326が、別個のEC2インスタンスなどの異なるクラウドコンピューティングインスタンス320、322内で実行される同一のソースコードを含み得ることを理解するであろう。
【0119】
読者は、プライマリ及びセカンダリコントローラを含まない他の実施形態が本開示の範囲内であることを理解するであろう。例えば、各クラウドコンピューティングインスタンス320、322は、クラウドベースのストレージシステム318によってサポートされるアドレス空間のいくつかの部分のためのプライマリコントローラとして動作することができ、各クラウドコンピューティングインスタンス320、322は、クラウドベースのストレージシステム318に向けられたI/O動作のサービスが何らかの他の方法で分割されるプライマリコントローラとして動作することができ、以下同様である。実際、コスト節約が性能要求よりも優先され得る他の実施形態では、ストレージコントローラアプリケーションを含む単一のクラウドコンピューティングインスタンスのみが存在し得る。
【0120】
図3Cに描示されるクラウドベースのストレージシステム318は、ローカルストレージ330、334、338を有するクラウドコンピューティングインスタンス340a、340b、340nを含む。クラウドコンピューティングインスタンス340a、340b、340nは、例えば、ソフトウェアアプリケーションの実行をサポートするためにクラウドコンピューティング環境316によって提供され得るクラウドコンピューティングリソースのインスタンスとして具現化され得る。図3Cのクラウドコンピューティングインスタンス340a、340b、340nは、ローカルストレージ330、334、338リソースを有するが、ストレージコントローラアプリケーション324、326の実行をサポートするクラウドコンピューティングインスタンス320、322は、ローカルストレージリソースを有する必要がないため、図3Cのクラウドコンピューティングインスタンス340a、340b、340nは、上述のクラウドコンピューティングインスタンス320、322とは異なり得る。ローカルストレージ330、334、338を有するクラウドコンピューティングインスタンス340a、340b、340nは、例えば、1つ以上のSSDを含むEC2 M5インスタンスとして、1つ以上のSSDを含むEC2 R5インスタンスとして、1つ以上のSSDを含むEC2 I3インスタンスとして、などで具現化され得る。一部の実施形態では、ローカルストレージ330、334、338は、ハードディスクドライブを利用するストレージではなく、ソリッドステートストレージ(例えば、SSD)として具現化されなければならない。
【0121】
図3Cに描示される例では、ローカルストレージ330、334、338を有するクラウドコンピューティングインスタンス340a、340b、340nの各々は、ソフトウェアデーモン328、332、336を含み得、当該ソフトウェアデーモン328、332、336は、クラウドコンピューティングインスタンス340a、340b、340nによって実行されるときに、クラウドコンピューティングインスタンス340a、340b、340nが物理的ストレージデバイス(例えば、1つ以上のSSD)であるかのように、それ自体をストレージコントローラアプリケーション324、326に提示することができる。かかる例では、ソフトウェアデーモン328、332、336は、ストレージコントローラアプリケーション324、326が、ストレージコントローラがストレージデバイスに送信するであろう同一コマンドを送信及び受信することができるように、ストレージデバイス上に通常含まれるであろうものに類似するコンピュータプログラム命令を含んでもよい。このようにして、ストレージコントローラアプリケーション324、326は、上述のストレージシステム内のコントローラによって実行されるコードと同一(又は実質的に同一)のコードを含み得る。これら及び同様の実施形態では、ストレージコントローラアプリケーション324、326とクラウドコンピューティングインスタンス340a、340b、340nとの間のローカルストレージ330、334、338を用いた通信は、iSCSI、TCP上のNVMe、メッセージング、カスタムプロトコル、又は何らかの他のメカニズムを利用することができる。
【0122】
図3Cに描示される例では、ローカルストレージ330、334、338を有するクラウドコンピューティングインスタンス340a、340b、340nの各々はまた、例えば、Amazonエラスティックブックストア(Elastic Block Store、「EBS」)ボリュームなどのクラウドコンピューティング環境316によって提供されるブロックストレージ342、344、346に結合されてもよい。かかる例では、クラウドコンピューティング環境316によって提供されるブロックストレージ342、344、346は、特定のクラウドコンピューティングインスタンス340a、340b、340n内で実行しているソフトウェアデーモン328、332、336(又は何らかの他のモジュール)が、データを書き込むための要求を受信すると、そのアタッチされたEBSボリュームへのデータの書き込み、並びにそのローカルストレージ330、334、338リソースへのデータの書き込みを開始し得るため、上述のNVRAMデバイスが利用される方法と同様の方法で利用され得る。一部の代替的な実施形態では、データは、インスタンス340a、340b、340nを含む特定のクラウド内のローカルストレージ330、334、338リソースにのみ書き込まれ得る。代替的な実施形態では、クラウドコンピューティング環境316によって提供されるブロックストレージ342、344、346をNVRAMとして使用するのではなく、ローカルストレージ330、334、338を有するクラウドコンピューティングインスタンス340a、340b、340nの各々の上の実際のRAMがNVRAMとして使用されてもよく、それによって、EBSボリュームをNVRAMとして使用することに関連付けられるネットワーク利用コストを減少させる。更に別の実施形態では、1つ以上のAzure Ultra Diskなどの高性能ブロックストレージリソースをNVRAMとして利用することができる。
【0123】
ストレージコントローラアプリケーション324、326を使用して、要求に含まれるデータを重複排除すること、要求に含まれるデータを圧縮すること、要求に含まれるデータをどこに書き込むかを判定することなどの種々のタスクを実施し、その後、データの重複排除された、暗号化された、又は場合によっては更新されたバージョンを書き込む要求を、ローカルストレージ330、334、338を有するクラウドコンピューティングインスタンス340a、340b、340nのうちの1つ以上に最終的に送信することができる。クラウドコンピューティングインスタンス320、322のいずれかは、一部の実施形態では、クラウドベースのストレージシステム318からデータを読み出す要求を受信してもよく、最終的に、ローカルストレージ330、334、338を有するクラウドコンピューティングインスタンス340a、340b、340nのうちの1つ以上にデータを読み出す要求を送信してもよい。
【0124】
データを書き込む要求が、ローカルストレージ330、334、338を有する特定のクラウドコンピューティングインスタンス340a、340b、340nによって受信されると、ソフトウェアデーモン328、332、336は、それ自体のローカルストレージ330、334、338リソース及び任意の適切なブロックストレージ342、344、346リソースにデータを書き込むように構成され得るだけでなく、ソフトウェアデーモン328、332、336はまた、特定のクラウドコンピューティングインスタンス340a、340b、340nにアタッチされたクラウドベースのオブジェクトストレージ348にデータを書き込むように構成され得る。特定のクラウドコンピューティングインスタンス340a、340b、340nにアタッチされるクラウドベースのオブジェクトストレージ348は、例えば、Amazonシンプルストレージサービス(Simple Storage Service、「S3」)として具現化され得る。他の実施形態では、ストレージコントローラアプリケーション324、326をそれぞれ含むクラウドコンピューティングインスタンス320、322は、クラウドコンピューティングインスタンス340a、340b、340nのローカルストレージ330、334、338及びクラウドベースのオブジェクトストレージ348へのデータのストレージを開始することができる。他の実施形態では、ローカルストレージ330、334、338を有するクラウドコンピューティングインスタンス340a、340b、340n(本明細書では「仮想ドライブ」とも称される)及びクラウドベースのオブジェクトストレージ348の両方を使用してデータを記憶するのではなく、永続的ストレージ層が他の方法で実装されてもよい。例えば、1つ以上のAzure Ultraディスクを使用して、(例えば、データがNVRAM層に書き込まれた後に)データを永続的に記憶することができる。
【0125】
クラウドコンピューティングインスタンス340a、340b、340nによって利用されるローカルストレージ330、334、338リソース及びブロックストレージ342、344、346リソースは、ブロックレベルのアクセスをサポートすることができるが、特定のクラウドコンピューティングインスタンス340a、340b、340nにアタッチされるクラウドベースのオブジェクトストレージ348は、オブジェクトベースのアクセスのみをサポートする。したがって、ソフトウェアデーモン328、332、336は、データのブロックを取得し、それらのブロックをオブジェクトにパッケージ化し、特定のクラウドコンピューティングインスタンス340a、340b、340nにアタッチされたクラウドベースのオブジェクトストレージ348にオブジェクトを書き込むように構成され得る。
【0126】
データが、1MBブロックでクラウドコンピューティングインスタンス340a、340b、340nによって利用されるローカルストレージ330、334、338リソース及びブロックストレージ342、344、346リソースに書き込まれる例を考える。かかる例では、クラウドベースのストレージシステム318のユーザが、ストレージコントローラアプリケーション324、326によって圧縮及び重複排除された後に5MBのデータを書き込む必要が生じるデータを書き込む要求を発行すると仮定する。かかる例では、クラウドコンピューティングインスタンス340a、340b、340nによって利用されるローカルストレージ330、334、338リソース及びブロックストレージ342、344、346リソースにデータを書き込むことは、サイズが1MBである5つのブロックが、クラウドコンピューティングインスタンス340a、340b、340nによって利用されるローカルストレージ330、334、338リソース及びブロックストレージ342、344、346リソースに書き込まれるため、比較的簡単である。かかる例では、ソフトウェアデーモン328、332、336はまた、データの別個の1MBチャンクを含む5つのオブジェクトを作成するように構成され得る。したがって、一部の実施形態では、クラウドベースのオブジェクトストレージ348に書き込まれる各オブジェクトは、サイズが同一(又はほぼ同一)であり得る。読者は、かかる例では、データ自体に関連付けられたメタデータが各オブジェクトに含まれてもよいことを理解するであろう(例えば、オブジェクトの最初の1MBはデータであり、残りの部分はデータに関連付けられたメタデータである)。読者は、クラウドベースのオブジェクトストレージ348をクラウドベースのストレージシステム318に組み込んで、クラウドベースのストレージシステム318の耐久性を高めることができることを理解するであろう。
【0127】
一部の実施形態では、クラウドベースのストレージシステム318によって記憶される全てのデータは、1)クラウドベースのオブジェクトストレージ348と、2)クラウドコンピューティングインスタンス340a、340b、340nによって利用されるローカルストレージ330、334、338リソース又はブロックストレージ342、344、346リソースのうちの少なくとも1つとの両方に記憶され得る。かかる実施形態では、クラウドコンピューティングインスタンス340a、340b、340nによって利用されるローカルストレージ330、334、338リソース及びブロックストレージ342、344、346リソースは、S3にも記憶される全てのデータを概して含むキャッシュとして効果的に動作することができ、それにより、クラウドコンピューティングインスタンス340a、340b、340nがクラウドベースのオブジェクトストレージ348にアクセスすることを必要とすることなく、データの全ての読み出しがクラウドコンピューティングインスタンス340a、340b、340nによってサービスされ得る。しかしながら、読者は、他の実施形態では、クラウドベースのストレージシステム318によって記憶される全てのデータは、クラウドベースのオブジェクトストレージ348に記憶されてもよいが、クラウドベースのストレージシステム318によって記憶される全て未満のデータは、クラウドコンピューティングインスタンス340a、340b、340nによって利用されるローカルストレージ330、334、338リソース又はブロックストレージ342、344、346リソースのうちの少なくとも1つに記憶されてもよいことを理解するであろう。かかる例では、種々のポリシーを利用して、クラウドベースのストレージシステム318によって記憶されるデータのどのサブセットが、1)クラウドベースのオブジェクトストレージ348と、2)クラウドコンピューティングインスタンス340a、340b、340nによって利用されるローカルストレージ330、334、338リソース又はブロックストレージ342、344、346リソースのうちの少なくとも1つとの両方に存在すべきかを判定することができる。
【0128】
クラウドベースのストレージシステム318内で実行されているコンピュータプログラム命令の1つ以上のモジュール(例えば、それ自体のEC2インスタンス上で実行されている監視モジュール)は、ローカルストレージ330、334、338を有するクラウドコンピューティングインスタンス340a、340b、340nのうちの1つ以上の故障を処理するように設計され得る。かかる例では、監視モジュールは、ローカルストレージ330、334、338を有するクラウドコンピューティングインスタンス340a、340b、340nのうちの1つ以上の故障を、ローカルストレージを有する1つ以上の新しいクラウドコンピューティングインスタンスを作成し、故障したクラウドコンピューティングインスタンス340a、340b、340nに記憶されたデータをクラウドベースのオブジェクトストレージ348から取り出し、クラウドベースのオブジェクトストレージ348から取り出されたデータを新たに作成されたクラウドコンピューティングインスタンスにローカルストレージで記憶することによって処理することができる。読者は、このプロセスの多くの変形が実装され得ることを理解するであろう。
【0129】
読者は、クラウドベースのストレージシステム318が必要に応じてスケールアップ又はスケールアウトされ得るように、クラウドベースのストレージシステム318の種々の性能態様が(例えば、EC2インスタンスにおいて実行している監視モジュールによって)監視され得ることを理解するであろう。例えば、ストレージコントローラアプリケーション324、326の実行をサポートするために使用されるクラウドコンピューティングインスタンス320、322が小型であり、クラウドベースのストレージシステム318のユーザによって発行されるI/O要求を十分にサービスしない場合、監視モジュールは、ストレージコントローラアプリケーションを含む新しいより強力なクラウドコンピューティングインスタンス(例えば、より多くの処理能力、より多くのメモリなどを含むタイプのクラウドコンピューティングインスタンス)を作成して、新しいより強力なクラウドコンピューティングインスタンスがプライマリコントローラとして動作し始めることができるようにしてもよい。同様に、監視モジュールが、ストレージコントローラアプリケーション324、326の実行をサポートするために使用されるクラウドコンピューティングインスタンス320、322が過大であり、より小さくより強力でないクラウドコンピューティングインスタンスに切り替えることによってコスト節約を得ることができると判定した場合、監視モジュールは、新しいより強力でないクラウドコンピューティングインスタンスがプライマリコントローラとして動作し始めることができるように、ストレージコントローラアプリケーションを含む新しいより強力でない(かつより安価な)クラウドコンピューティングインスタンスを作成することができる。
【0130】
上述したストレージシステムは、インテリジェントデータバックアップ技術を実行することができ、この技術により、ストレージシステムに記憶されたデータをコピーして異なる位置に記憶し、機器の故障又は他の形態の大災害が発生した場合にデータ損失を回避することができる。例えば、上述のストレージシステムは、ストレージシステムを望ましくない状態に復元することを回避するために、各バックアップを検査するように構成されてもよい。マルウェアがストレージシステムに感染する例を考える。かかる例では、ストレージシステムは、各バックアップをスキャンして、マルウェアがストレージシステムに感染する前にキャプチャされたバックアップと、マルウェアがストレージシステムに感染した後にキャプチャされたバックアップとを識別することができるソフトウェアリソース314を含み得る。かかる例では、ストレージシステムは、マルウェアを含まないバックアップからそれ自体を復元してもよく、又は少なくとも、マルウェアを含んだバックアップの部分を復元しなくてもよい。かかる例では、ストレージシステムは、例えば、ストレージシステムによってサービスされ、マルウェアを配信した疑いがあるネットワークサブネットから生じた書き込み動作を識別することによって、ストレージシステムによってサービスされ、マルウェアを配信した疑いがあるユーザから生じた書き込み動作を識別することによって、ストレージシステムによってサービスされた書き込み動作を識別し、マルウェアのフィンガープリントに対して書き込み動作の内容を検査することによって、かつ多くの他の方法で、各バックアップをスキャンしてマルウェア(又はウイルス、又は何らかの他の望ましくないもの)の存在を識別し得るソフトウェアリソース314を含み得る。
【0131】
読者は、更に、バックアップ(1つ以上のスナップショットの形態であることが多い)を利用して、ストレージシステムの迅速な復旧を実施することもできることを理解するであろう。ストレージシステムが、ユーザをストレージシステムの外にロックするランサムウェアに感染している例を考える。かかる例では、ストレージシステム内のソフトウェアリソース314は、ランサムウェアの存在を検出するように構成されてもよく、ランサムウェアがストレージシステムに感染した時点の前に、保持されたバックアップを使用して、ストレージシステムをある時点に復元するように更に構成されてもよい。かかる例では、ランサムウェアの存在は、システムによって利用されるソフトウェアツールの使用を通して、ストレージシステムに挿入される鍵(例えば、USBドライブ)の使用を通して、又は同様の方法で、明示的に検出されてもよい。同様に、ランサムウェアの存在は、例えば、所定の期間にわたってシステムに入力される読み出し又は書き込みがないなど、所定のフィンガープリントを満たすシステム活動に応答して推測されてもよい。
【0132】
読者は、上記で説明された種々の構成要素が、統合インフラストラクチャとして1つ以上の最適化されたコンピューティングパッケージにグループ化され得ることを理解するであろう。かかる統合インフラストラクチャは、複数のアプリケーションによって共有され、ポリシー駆動型プロセスを使用して集合的に管理され得る、コンピュータ、ストレージ、及びネットワーキングリソースのプールを含み得る。かかる統合インフラストラクチャは、統合インフラストラクチャ参照アーキテクチャを用いて、スタンドアロン機器を用いて、ソフトウェア駆動型ハイパー統合手法(例えば、ハイパー統合インフラストラクチャ)を用いて、又は他の方法で実装され得る。
【0133】
読者は、本開示で説明されるストレージシステムが、種々のタイプのソフトウェアアプリケーションをサポートするのに有用であり得ることを理解するであろう。実際に、ストレージシステムは、ストレージシステムが、接続されたアプリケーション(例えば、ストレージシステムを利用するアプリケーション)を記述する情報を取得し、維持し、又は他の方法でアクセスして、アプリケーション及びそれらの利用パターンに関するインテリジェンスに基づいて、ストレージシステムの動作を最適化し得るという意味で、「アプリケーションアウェア」であり得る。例えば、ストレージシステムは、データレイアウトを最適化するか、キャッシング挙動を最適化するか、「QoS」レベルを最適化するか、又はアプリケーションが経験するストレージ性能を改善するように設計された何らかの他の最適化を実施することができる。
【0134】
本明細書に記載されるストレージシステムによってサポートされ得るアプリケーションの1つのタイプの例として、ストレージシステム306は、ストレージリソースをかかるアプリケーションに提供することによって、人工知能(artificial intelligence、「AI」)アプリケーション、データベースアプリケーション、XOpsプロジェクト(例えば、DevOpsプロジェクト、DataOpsプロジェクト、MLOpsプロジェクト、ModelOpsプロジェクト、PlatformOpsプロジェクト)、電子設計自動化ツール、イベント駆動型ソフトウェアアプリケーション、高性能コンピューティングアプリケーション、シミュレーションアプリケーション、高速データキャプチャ及び解析アプリケーション、機械学習アプリケーション、メディアプロダクションアプリケーション、メディアサービングアプリケーション、ピクチャアーカイブ通信システム(picture archiving and communication system、「PACS」)アプリケーション、ソフトウェア開発アプリケーション、仮想現実アプリケーション、拡張現実感アプリケーション、及び多くの他のタイプのアプリケーションをサポートするのに有用であり得る。
【0135】
ストレージシステムが、計算リソース、ストレージリソース、及び多種多様な他のリソースを含むという事実を考慮すると、ストレージシステムは、例えば、AIアプリケーションなどのリソース集約的であるアプリケーションをサポートするために非常に好適であり得る。AIアプリケーションは、製造及び関係する分野における予測保守、患者データ及びリスク分析などのヘルスケアアプリケーション、小売及びマーケティング配備(例えば、検索広告、ソーシャルメディア広告)、サプライチェーンソリューション、ビジネス分析及び報告ツールなどのフィンテックソリューション、リアルタイム分析ツール、アプリケーション性能管理ツール、ITインフラストラクチャ管理ツールなどの運用配備などを含む、種々の分野において配備され得る。
【0136】
かかるAIアプリケーションは、デバイスがそれらの環境を知覚し、何らかの目的でそれらの成功の可能性を最大にするアクションを取ることを可能にし得る。かかるAIアプリケーションの例は、IBM Watson(商標)、Microsoft Oxford(商標)、Google DeepMind(商標)、Baidu Minwa(商標)及び他を含み得る。
【0137】
上述したストレージシステムはまた、例えば、機械学習アプリケーションのようなリソース集約的な他のタイプのアプリケーションをサポートするのによく適している。機械学習アプリケーションは、種々のタイプのデータ解析を実施して、解析モデルの構築を自動化することができる。データから反復的に学習するアルゴリズムを使用して、機械学習アプリケーションは、コンピュータが明示的にプログラムされることなく学習することを可能にし得る。機械学習の1つの特定の領域は、強化学習と称され、特定の状況において報酬を最大化するために好適なアクションを取ることを含む。
【0138】
既に説明したリソースに加えて、上述したストレージシステムは、視覚処理ユニット(visual processing unit、「VPU」)と称されることもあるグラフィックス処理ユニット(graphics processing unit、「GPU」)も含み得る。かかるGPUは、ディスプレイデバイスへの出力が意図されるフレームバッファでの画像の作成を加速するために、メモリを迅速に操作及び改変する専用電子回路として具現化され得る。かかるGPUは、ストレージシステムの多くの個々に拡張可能な構成要素のうちの1つとして含む、上述したストレージシステムの一部であるコンピューティングデバイスのいずれか内に含まれてもよく、かかるストレージシステムの個々に拡張可能な構成要素の他の例は、ストレージ構成要素、メモリ構成要素、計算構成要素(例えば、CPU、FPGA、ASIC)、ネットワーキング構成要素、ソフトウェア構成要素及び他を含み得る。GPUに加えて、上述のストレージシステムはまた、ニューラルネットワーク処理の種々の態様において使用するためのニューラルネットワークプロセッサ(neural network processor、「NNP」)を含み得る。かかるNNPは、GPUの代わりに(又はそれに加えて)使用され得、また、独立してスケーラブルであり得る。
【0139】
上述のように、本明細書に記載されるストレージシステムは、人工知能アプリケーション、機械学習アプリケーション、ビッグデータ分析アプリケーション、及び多くの他のタイプのアプリケーションをサポートするように構成され得る。これらの種類のアプリケーションにおける急速な成長は、深層学習(deep learning、DL)、GPUプロセッサ、及びビッグデータの3つの技術によって推進されている。深層学習は、人間の脳に着想を得た大規模並列ニューラルネットワークを利用するコンピューティングモデルである。ソフトウェアを手作りする専門家の代わりに、深層学習モデルは、多くの例から学習することによって、それ自体のソフトウェアを書き込む。かかるGPUは、人間の脳の並列性を大まかに表すアルゴリズムを実行するのによく適した数千のコアを含み得る。
【0140】
多層ニューラルネットワークの開発を含む、深層ニューラルネットワークにおける進歩は、データ科学者が人工知能(artificial intelligence、AI)を用いて自身のデータを利用するためのアルゴリズム及びツールの新しい波を誘発した。改善されたアルゴリズム、より大きいデータセット、及び種々のフレームワーク(タスクの範囲にわたる機械学習のためのオープンソースソフトウェアライブラリを含む)により、データ科学者は、自律運転車両、自然言語処理及び理解、コンピュータビジョン、機械推論、強いAIなどのような新しいユースケースに取り組んでいる。かかる技術の用途は、機械及び車両の物体検出、識別及び回避;視覚的認識、分類及びタグ付け;アルゴリズム金融取引戦略性能管理;同時位置特定及びマッピング;高価値機械の予知保全;サイバーセキュリティの脅威に対する防止、専門知識の自動化;画像認識及び分類;質問回答;ロボット;テキスト分析(抽出、分類)及びテキスト生成及び翻訳などを含み得る。AI技術のアプリケーションは、例えば、ユーザが自身のマシンと話すことを可能にするAmazon Echoのスピーチ認識技術、マシンベースの言語翻訳を可能にするGoogle Translate(商標)、ユーザの使用及びトラフィック分析に基づいて、ユーザが好む可能性がある新しい歌及びアーチストに関する推奨を提供するSpotify’s Discover Weekly、構造化データを取り、それを物語のストーリーに変えるQuill’sテキスト生成オファリング、ダイアログフォーマットで質問に対するリアルタイムのコンテキスト固有の回答を提供するChatbotなどを含む、幅広い製品で具体化されている。
【0141】
データは、現代のAI及び深層学習アルゴリズムの心臓部である。訓練を開始することができる前に、対処しなければならない1つの問題として、正確なAIモデルを訓練するために重要であるラベル付きデータを収集することに取り組む必要がある。フルスケールのAI配備は、大量のデータを連続的に収集し、クリーニングし、変換し、ラベル付けし、記憶するために必要とされ得る。追加の高品質データ点を追加することは、より正確なモデル及びより良い洞察に直接つながる。データサンプルは、1)外部ソースからのデータを訓練システムに取り込み、データを生の形態で記憶することと、2)データサンプルを適切なラベルにリンクすることを含む、訓練に便利なフォーマットでデータをクリーニング及び変換することと、3)パラメータ及びモデルを探索し、より小さいデータセットを用いて迅速にテストし、生産クラスタにプッシュするために最も有望なモデルに収束するように反復することと、4)新しいサンプル及びより古いサンプルの両方を含む入力データのランダムなバッチを選択するために訓練フェーズを実行し、モデルパラメータを更新するための計算のためにそれらを生産GPUサーバに供給することと、5)ホールドアウトデータに対するモデル精度を評価するために訓練において使用されないデータのホールドバック部分を使用することを含む評価することとを含むが、それらに限定されない、一連の処理ステップに供され得る。このライフサイクルは、ニューラルネットワーク又は深層学習だけでなく、任意のタイプの並列化された機械学習に適用され得る。例えば、標準的な機械学習フレームワークは、GPUの代わりにCPUに依存し得るが、データ取り込み及び訓練ワークフローは同じであり得る。読者は、単一の共有ストレージデータハブが、取り込み段階、前処理段階、及び訓練段階の間で余分なデータコピーを必要とすることなく、ライフサイクル全体にわたって協調ポイントを作成することを理解するであろう。取り込まれたデータが1つの目的のみのために使用されることはまれであり、共有されたストレージは、複数の異なるモデルを訓練するか、又はデータに従来の分析を適用するための柔軟性を与える。
【0142】
読者は、AIデータパイプライン内の各段階が、データハブ(例えば、ストレージシステム又はストレージシステムの集合)からの種々の要件を有し得ることを理解するであろう。スケールアウトストレージシステムは、小規模でメタデータの多いファイルから大規模なファイルまで、ランダムアクセスパターンからシーケンシャルアクセスパターンまで、また低い同時性から高い同時性まで、あらゆるアクセスタイプ及びパターンに対して妥協のない性能を提供しなければならない。上述のストレージシステムは、システムが非構造化ワークロードをサービスすることができるため、理想的なAIデータハブとして機能することができる。第1の段階では、データは、理想的には、過剰なデータコピーを回避するために、後続の段階が使用する同一のデータハブ上に取り込まれ、記憶される。次の2つのステップは、任意選択でGPUを含む標準的な計算サーバ上で行うことができ、次いで、第4の最後の段階では、完全な訓練プロダクションジョブが、強力なGPU加速サーバ上で実行される。しばしば、同じデータセットに対して動作する実験パイプラインと並んで生産パイプラインが存在する。更に、GPU加速サーバは、異なるモデルに対して独立して使用することができ、又は、分散訓練のための複数のシステムにまたがっていても、1つのより大きなモデルで訓練するために一緒に結合することができる。共有ストレージ階層が遅い場合、データは、各フェーズのローカルストレージにコピーされなければならず、その結果、異なるサーバにデータをステージングする時間が無駄になる。AI訓練パイプラインのための理想的なデータハブは、サーバノード上にローカルに記憶されたデータと同様の性能を提供する一方で、全てのパイプライン段階が同時に動作することを可能にするシンプルさ及び性能も有する。
【0143】
上述のストレージシステムがデータハブとして、又はAI配備の一部として機能するために、一部の実施形態では、ストレージシステムは、ストレージシステムに含まれるストレージデバイスと、AI又はビッグデータ分析パイプラインで使用される1つ以上のGPUとの間のDMAを提供するように構成され得る。1つ以上のGPUは、例えば、NVMeオーバーファブリック(NVMe-over-Fabric、「NVMe-oF」)を介してストレージシステムに結合され、ホストCPUのようなボトルネックがバイパスされ、ストレージシステム(又はその中に含まれた構成要素のうちの1つ)がGPUメモリに直接アクセスできる。かかる例では、ストレージシステムは、GPUへのAPIフックを活用して、データをGPUに直接転送することができる。例えば、GPUは、Nvidia(商標)GPUとして具現化され得、ストレージシステムは、ストレージシステムがRDMA又は同様のメカニズムを経てGPUへデータを転送できるようにするGPUDirectストレージ(GPUDirect Storage、「GDS」)ソフトウェアをサポートするか、又は同様のプロプライエタリソフトウェアを有する。
【0144】
前述の段落は、深層学習出願を議論するが、読者は、本明細書に説明されるストレージシステムがまた、DDLアルゴリズムの実行をサポートするために、分散型深層学習(distributed deep learning、「DDL」)プラットフォームの一部であり得ることを理解するであろう。上述のストレージシステムはまた、TensorFlow、ニューラルネットワークなどの機械学習アプリケーションに使用され得るタスクの範囲にわたるデータフロープログラミングのためのオープンソースソフトウェアライブラリなどの他の技術とペアリングされ、かかる機械学習モデル、アプリケーションなどの開発を促進してもよい。
【0145】
上述のストレージシステムはまた、ニューロモーフィックコンピューティング環境で使用することもできる。ニューロモーフィックコンピューティングは、脳細胞を模倣するコンピューティングの一形態である。ニューロモーフィックコンピューティングをサポートするために、相互接続された「ニューロン」のアーキテクチャが、従来のコンピューティングモデルを、より効率的な計算のためにニューロン間を直接進む低電力信号で置き換える。ニューロモーフィックコンピューティングは、神経系に存在する神経生物学的アーキテクチャを模倣するための電子アナログ回路を含む超大規模集積回路(very-large-scale integration、VLSI)システム、並びにアナログ、デジタル、混合モードのアナログ/デジタルVLSI、及び知覚、運動制御、又は多感覚統合のための神経系のモデルを実装するソフトウェアシステムを利用することができる。
【0146】
読者は、上述のストレージシステムが、例えば、IBM(商標)Hyperledgerプロジェクトの一部であるオープンソースブロックチェーン及び関連ツール、特定の数の信頼された当事者がブロックチェーンにアクセスすることを許可される、許可されたブロックチェーン、開発者が独自の分散型台帳プロジェクトを構築することを可能にする、ブロックチェーン製品及び他などのブロックチェーン及び派生アイテム(他のタイプのデータの中でも)のストレージ又は使用をサポートするように構成され得ることを理解するであろう。本明細書に記載されるブロックチェーン及びストレージシステムは、データのオンチェーンストレージ並びにデータのオフチェーンストレージをサポートするために活用され得る。
【0147】
データのオフチェーンストレージは、種々の方法で実装することができ、データ自体がブロックチェーン内に記憶されていないときに行うことができる。例えば、一実施形態では、ハッシュ機能を利用することができ、データ自体をハッシュ機能に供給してハッシュ値を生成することができる。かかる例では、大きなデータ片のハッシュが、データ自体の代わりにトランザクション内に埋め込まれてもよい。読者は、他の実施形態では、ブロックチェーンの代替を使用して、情報の分散ストレージを容易にすることができることを理解するであろう。例えば、使用され得るブロックチェーンの1つの代替は、blockweaveである。従来のブロックチェーンは、検証を達成するために全てのトランザクションを記憶するが、blockweaveは、チェーン全体を使用せずにセキュアな分散化を可能にし、それによって、データの低コストのオンチェーンストレージを可能にする。かかるblockweavesは、プルーフオブアクセス(proof of access、PoA)及びプルーフオブワーク(proof of work、PoW)に基づくコンセンサスメカニズムを利用することができる。
【0148】
上述のストレージシステムは、単独で、又は他のコンピューティングデバイスと組み合わせて、メモリ内コンピューティングアプリケーションをサポートするために使用され得る。インメモリコンピューティングは、コンピュータのクラスタにわたって分散されるRAMへの情報のストレージを含む。上述したストレージシステム、特に、カスタマイズ可能な量の処理リソース、ストレージリソース、及びメモリリソースで構成可能なもの(例えば、ブレードが構成可能な量の各タイプのリソースを含むシステム)は、インメモリコンピューティングをサポートすることができるインフラストラクチャを提供するように構成されてもよいことを読者は理解するであろう。同様に、上述のストレージシステムは、専用サーバにわたって分散されたRAMに依存するメモリ内コンピューティング環境と比較して、改善されたメモリ内コンピューティング環境を実際に提供することができる構成要素部分(例えば、NVDIMM、永続的な高速ランダムアクセスメモリを提供する3Dクロスポイントストレージ)を含み得る。
【0149】
一部の実施形態では、上述のストレージシステムは、全ての記憶媒体(例えば、RAM、フラッシュストレージ、3Dクロスポイントストレージ)へのユニバーサルインターフェースを含むハイブリッドインメモリコンピューティング環境として動作するように構成することができる。かかる実施形態では、ユーザは、自身のデータがどこに記憶されているかの詳細に関する知識を有していない場合があるが、それでも、同じ完全な統一されたAPIを使用してデータに対処することができる。かかる実施形態では、ストレージシステムは、(バックグラウンドで)データを利用可能な最も速い層に移動させることができ、データの種々の特性に応じて、又は何らかの他のヒューリスティックに応じて、データをインテリジェントに配置することを含む。かかる例では、ストレージシステムは、Apache Ignite及びGridGainなどの既存の製品を利用して、種々のストレージ層間でデータを移動させることさえでき、又はストレージシステムは、カスタムソフトウェアを利用して、種々のストレージ層間でデータを移動させることができる。本明細書で説明されるストレージシステムは、例えば、計算を可能な限りデータの近くで発生させるなど、メモリ内コンピューティングの性能を改善するために種々の最適化を実装することができる。
【0150】
読者は更に、一部の実施形態では、上述のストレージシステムが、上述のアプリケーションをサポートするために他のリソースとペアリングされ得ることを理解するであろう。例えば、1つのインフラストラクチャは、深層ニューラルネットワークのためのパラメータを訓練するために計算エンジンに相互接続される深層学習アプリケーションを加速するために、グラフィックス処理ユニット上で汎用コンピューティング(General-purpose computing on graphics processing unit、「GPGPU」)を使用することを専門とするサーバ及びワークステーションの形態の一次計算を含み得る。各システムは、イーサネット外部接続性、インフィニバンド外部接続性、何らかの他の形態の外部接続性、又はそれらの何らかの組み合わせを有することができる。かかる例では、GPUは、単一の大規模な訓練のためにグループ化されるか、又は複数のモデルを訓練するために独立して使用され得る。インフラストラクチャは、例えば、NFS、S3などの高性能プロトコルを介してデータにアクセスすることができるスケールアウトオールフラッシュファイル又はオブジェクトストアを提供するために、上述したようなストレージシステムを含むこともできる。インフラストラクチャはまた、例えば、冗長性のためにMLAGポートチャネル内のポートを介してストレージ及びコンピュータに接続された冗長なトップオブラックイーサネットスイッチを含み得る。インフラストラクチャはまた、データ取り込み、前処理、及びモデルデバッグのために、任意選択でGPUを有するホワイトボックスサーバの形態の追加のコンピュータを含み得る。読者は、追加のインフラストラクチャも可能であることを理解するであろう。
【0151】
読者は、上述のストレージシステムが、単独で、又は他のコンピューティングマシンと協調して、他のAI関連ツールをサポートするように構成され得ることを理解するであろう。例えば、ストレージシステムは、異なるAIフレームワークで書き込みされたモデルを転送することをより容易にするONXX又は他のオープンニューラルネットワーク交換フォーマットのようなツールを利用することができる。同様に、ストレージシステムは、開発者が深層学習モデルを試作し、構築し、訓練することを可能にするAmazonのGluonのようなツールをサポートするように構成することができる。実際、上述のストレージシステムは、統合されたデータサイエンス、データエンジニアリング、及びアプリケーション構築サービスを含む、IBM(商標)Cloud Private for Dataなどのより大きなプラットフォームの一部であり得る。
【0152】
読者は、上述したストレージシステムをエッジソリューションとして配備することもできることを更に理解するであろう。かかるエッジソリューションは、データのソースの近くの、ネットワークのエッジにおいてデータ処理を実施することによってクラウドコンピューティングシステムを最適化するために適切であり得る。エッジコンピューティングは、アプリケーション、データ、及びコンピューティングパワー(すなわち、サービス)を、集中化されたポイントからネットワークの論理的極値に押しやることができる。上述のストレージシステムなどのエッジソリューションの使用を通じて、計算タスクは、かかるストレージシステムによって提供される計算リソースを使用して実施され得、データは、ストレージシステムのストレージリソースを使用して記憶され得、クラウドベースのサービスは、ストレージシステムの種々のリソース(ネットワーキングリソースを含む)の使用を通じてアクセスされ得る。エッジソリューションに対して計算タスクを実施し、エッジソリューションに対してデータを記憶し、エッジソリューションを概して利用することによって、高価なクラウドベースのリソースの消費が回避され得、実際に、クラウドベースのリソースへのより重い依存に対して性能改善を経験することができる。
【0153】
多くのタスクは、エッジソリューションの利用から利益を得ることができるが、一部の特定の使用は、かかる環境における配備に特に適している場合がある。例えば、ドローン、自律車、ロボット及び他のデバイスは、非常に高速な処理を必要とする場合があり、実際には、クラウド環境までデータを送信し、データ処理サポートを受信するために返送することは、単純に遅すぎる場合がある。追加の例として、接続されたビデオカメラなどの一部のIoTデバイスは、単に関与するデータの純粋なボリュームのために、データをクラウドに送信することが(プライバシーの観点、セキュリティの観点、又は金融の観点からだけではなく)非現実的であり得るため、クラウドベースのリソースの利用にあまり適していないことがある。したがって、実際にデータ処理、記憶、又は通信に関する多くのタスクは、上記で説明したストレージシステムなどのエッジソリューションを含むプラットフォームによってよりよく適することができる。
【0154】
上述のストレージシステムは、単独で、又は他のコンピューティングリソースと組み合わせて、計算リソース、ストレージリソース、ネットワーキングリソース、クラウド技術、及びネットワーク仮想化技術などを組み合わせるネットワークエッジプラットフォームとして機能することができる。ネットワークの一部として、エッジは、顧客構内及びバックホール集約施設からポイントオブプレゼンス(Points of Presence、PoP)及びリージョナルデータセンターまでの他のネットワーク施設と同様の特性を帯びることができる。読者は、仮想ネットワーク機能(Virtual Network Function、VNF)及び他などのネットワークワークロードがネットワークエッジプラットフォーム上に存在することを理解するであろう。コンテナと仮想マシンとの組み合わせによって可能となるネットワークエッジプラットフォームは、もはやデータ処理リソースと地理的に同じ場所に配置されていないコントローラ及びスケジューラに依存する場合がある。マイクロサービスとしての機能は、制御プレーン、ユーザ及びデータプレーン、又はステートマシンにさえも分割することができ、独立した最適化及びスケーリング技術が適用されることを可能にする。かかるユーザプレーン及びデータプレーンは、FPGA及びスマートNICなどのサーバプラットフォームに存在する増加したアクセラレータと、SDN対応マーチャントシリコン及びプログラマブルASICとの両方を介して可能となり得る。
【0155】
上述のストレージシステムはまた、ビッグデータ分析における使用のために最適化され得、コンテナ化された分析アーキテクチャが、例えば、分析能力をより構成可能にする、構成可能なデータ分析パイプラインの一部として活用されることを含む。ビッグデータ分析は、概して、組織がより多くの情報に基づくビジネス決定を行うことを助けることができる、隠されたパターン、未知の相関、市場動向、顧客選好、及び他の有用な情報を明らかにするために、大規模かつ多様なデータセットを調査するプロセスとして説明することができる。そのプロセスの一部として、例えば、インターネットクリックストリームデータ、Webサーバログ、ソーシャルメディアコンテンツ、顧客電子メール及び調査応答からのテキスト、携帯電話通話詳細記録、IoTセンサデータ、並びに他のデータなどの半構造化及び非構造化データが、構造化形態に変換されてもよい。
【0156】
上述のストレージシステムはまた、人間の発話に応答してタスクを実施するアプリケーションをサポート(システムインターフェースとして実装することを含む)してもよい。例えば、ストレージシステムは、例えば、AmazonのAlexa(商標)、Apple Siri(商標)、Google Voice(商標)、Samsung Bixby(商標)、Microsoft Cortana(商標)及び他などの知的パーソナルアシスタントアプリケーションの実行をサポートし得る。前の文で説明した例は、音声を入力として利用するが、上記で説明したストレージシステムはまた、チャットボット、トークボット、チャッタボット、若しくは人工的な会話エンティティ、又は聴覚的方法若しくはテキスト的方法を介して会話を行うように構成された他のアプリケーションをサポートすることができる。同様に、ストレージシステムは、システム管理者などのユーザが音声を介してストレージシステムとインタラクションを有することを可能にするために、かかるアプリケーションを実際に実行することができる。かかるアプリケーションは、概して、音声対話、音楽再生、to-doリストの作成、アラームの設定、ポッドキャストのストリーミング、オーディオブックの再生、並びに気象、交通、及びニュースなどの他のリアルタイム情報の提供が可能であるが、本開示による実施形態では、かかるアプリケーションは、種々のシステム管理動作へのインターフェースとして利用されてもよい。
【0157】
上述のストレージシステムはまた、自動運転ストレージのビジョンで配信するためのAIプラットフォームを実装することができる。かかるAIプラットフォームは、大量のストレージシステムテレメトリデータ点を収集及び分析することによって、グローバル予測インテリジェンスを提供し、容易な管理、分析、及びサポートを可能にするように構成され得る。実際、かかるストレージシステムは、容量及び性能の両方を予測すること、並びにワークロードの配備、インタラクション、及び最適化に関するインテリジェントなアドバイスを生成することが可能であり得る。かかるAIプラットフォームは、顧客環境に影響を及ぼす前に、リアルタイムでインシデントを予測及び解決するために、問題のフィンガープリントのライブラリに対して全ての入力されるストレージシステムテレメトリデータをスキャンするように構成され、性能負荷を予測するために使用される性能に関連する何百もの変数をキャプチャすることができる。
【0158】
上述のストレージシステムは、AIラダーを集合的に形成し得る、人工知能アプリケーション、機械学習アプリケーション、データ分析アプリケーション、データ変換、及び他のタスクのシリアル化又は同時実行をサポートすることができる。かかるAIラダーは、かかる要素を組み合わせて、AIラダーの要素間に依存関係が存在する完全なデータサイエンスパイプラインを形成することによって、効果的に形成され得る。例えば、AIは、何らかの形の機械学習が行われたことを必要とすることがあり、機械学習は、何らかの形の分析が行われたことを必要とすることがあり、分析は、何らかの形のデータ及び情報の構築が行われたことを必要とすることなどがある。したがって、各要素は、完全で洗練されたAIソリューションを集合的に形成することができるAIラダー内のラングと見なすことができる。
【0159】
上述のストレージシステムはまた、単独で、又は他のコンピューティング環境と組み合わせて、AIがビジネス及び生活の広範かつ拡張的な側面に浸透するあらゆる体験にAIを配信するために使用することができる。例えば、AIは、深層学習ソリューション、深層強化学習ソリューション、汎用人工知能ソリューション、自律走行車、認知コンピューティングソリューション、商用UAV又はドローン、会話型ユーザインターフェース、企業分類、オントロジ管理ソリューション、機械学習ソリューション、スマートダスト、スマートロボット、スマートワークプレイスなどの配信において重要なロールを果たしてもよい。
【0160】
上述のストレージシステムはまた、単独で、又は他のコンピューティング環境と組み合わせて、技術が人々、企業、及び物の間に透明性を導入することができる、広範囲の透明性のある没入型体験(人々、場所、プロセス、システムなどの種々の「物」のデジタルツインを使用するものを含む)を提供するために使用されてもよい。かかる透明性のある没入型体験は、拡張現実感技術、コネクテッドホーム、仮想現実技術、脳-コンピュータインターフェース、人間拡張技術、ナノチューブ電子機器、体積ディスプレイ、4D印刷技術又は他として提供され得る。
【0161】
上述のストレージシステムは、単独で、又は他のコンピューティング環境と組み合わせて、多種多様なデジタルプラットフォームをサポートするために使用することもできる。かかるデジタルプラットフォームは、例えば、5Gワイヤレスシステム及びプラットフォーム、デジタルツインプラットフォーム、エッジコンピューティングプラットフォーム、IoTプラットフォーム、量子コンピューティングプラットフォーム、サーバレスPaaS、ソフトウェア定義セキュリティ、ニューロモーフィックコンピューティングプラットフォームなどを含んでもよい。
【0162】
上述のストレージシステムはまた、複数のクラウドコンピューティング及びストレージサービスが単一の異種アーキテクチャに配備されるマルチクラウド環境の一部であってもよい。かかるマルチクラウド環境の動作を容易にするために、DevOpsツールを配備して、クラウドにわたるオーケストレーションを可能にすることができる。同様に、継続的開発及び継続的インテグレーションツールを配備して、継続的インテグレーション及び配信、新しい機能ロールアウト、並びにクラウドワークロードのプロビジョニングに関するプロセスを標準化することができる。これらのプロセスを標準化することによって、ワークロードごとに最良のプロバイダの利用を可能にするマルチクラウド戦略を実装することができる。
【0163】
上述のストレージシステムは、製品の出所及びコンテンツを認証して、それが製品に関連付けられたブロックチェーンレコードと一致することを確実にするために使用され得る暗号アンカーの使用を可能にするプラットフォームの一部として使用することができる。同様に、ストレージシステム上に記憶されたデータをセキュアにするためのツール一式の一部として、上述したストレージシステムは、格子暗号法を含む種々の暗号化技術及び方式を実装することができる。格子暗号法は、構造自体又はセキュリティ証明のいずれかに格子を含む暗号プリミティブの構造を含み得る。量子コンピュータによって容易に攻撃されるRSA、Diffie-Hellman、又はElliptic-Curve暗号システムなどの公開鍵方式とは異なり、一部の格子に基づく構成は、古典コンピュータ及び量子コンピュータの両方による攻撃に対して耐性があると考えられている。
【0164】
量子コンピュータは、量子コンピューティングを実施するデバイスである。量子コンピューティングは、重ね合わせ及びエンタングルメントなどの量子力学的現象を用いた計算である。量子コンピュータは、トランジスタに基づく従来のコンピュータとは異なっている。これは、かかる従来のコンピュータは、データが、各々が常に2つの明確な状態(0又は1)のうちの1つである2進数(ビット)に符号化されることを必要とするためである。従来のコンピュータとは対照的に、量子コンピュータは、状態を重ね合わせることができる量子ビットを使用している。量子コンピュータは、量子ビットのシーケンスを維持し、単一量子ビットは、1、0、又はそれらの2つの量子ビット状態の任意の量子重ね合わせを表すことができる。1対の量子ビットは、4つの状態の任意の量子重ね合わせにあり、3つの量子ビットは、8つの状態の任意の重ね合わせにあり得る。n個の量子ビットを有する量子コンピュータは、概して、同時に最大2^n個の異なる状態の任意の重ね合わせにあることができるが、従来のコンピュータは、任意の一時点においてこれらの状態のうちの1つにあることしかできない。量子チューリングマシンは、かかるコンピュータの理論的モデルである。
【0165】
上述のストレージシステムは、より大きなAI又はMLインフラストラクチャの一部として、FPGA加速サーバとペアリングすることができる。かかるFPGA加速サーバは、上述のストレージシステムの近くに(例えば、同じデータセンター内に)存在してもよく、又は1つ以上のストレージシステム、1つ以上のFPGA加速サーバ、1つ以上のストレージシステムと1つ以上のFPGA加速サーバとの間の通信をサポートするネットワーキングインフラストラクチャ、並びに他のハードウェア及びソフトウェア構成要素を含むアプライアンスに組み込まれてもよい。代替的に、FPGA加速サーバは、AI及びMLジョブのための計算関連タスクを行うために使用され得る、クラウドコンピューティング環境内に常駐することができる。上述の実施形態のいずれかを使用して、FPGAベースのAI又はMLプラットフォームとして集合的に機能することができる。読者は、FPGAベースのAI又はMLプラットフォームの一部の実施形態では、FPGA加速サーバ内に含まれるFPGAが、異なるタイプのMLモデル(例えば、LSTM、CNN、GRU)のために再構成され得ることを理解するであろう。FPGA加速サーバ内に含まれるFPGAを再構成する能力は、最も最適な数値精度及び使用されているメモリモデルに基づいて、ML又はAIアプリケーションの加速を可能にし得る。読者は、FPGA加速サーバの集合をFPGAのプールとして扱うことによって、データセンター内の任意のCPUが、サーバをそれにプラグ接続された専用アクセラレータに限定するのではなく、FPGAのプールを共有ハードウェアマイクロサービスとして利用し得ることを理解するであろう。
【0166】
上述したFPGA加速サーバ及びGPU加速サーバは、従来のコンピューティングモデルで行われるように、機械学習内に少量のデータを保持し、その上で命令の長いストリームを実行するのではなく、CPUモデル及びパラメータが高帯域幅オンチップメモリにピン留めされ、高帯域幅オンチップメモリを通して多くのデータがストリーミングされるコンピューティングのモデルを実装することができる。FPGAは、この種のコンピューティングモデルを実行するのに必要な命令のみでプログラムすることができるため、FPGAは、このコンピューティングモデルに対してGPUよりも更に効率的であり得る。
【0167】
上述のストレージシステムは、例えば、BeeGFSなどの並列ファイルシステムの使用を通して、並列ストレージを提供するように構成することができる。かかる並列ファイルシステムは、分散メタデータアーキテクチャを含み得る。例えば、並列ファイルシステムは、メタデータが分散される複数のメタデータサーバ、並びにクライアント及びストレージサーバのためのサービスを含む構成要素を含んでもよい。
【0168】
上述のシステムは、多様なソフトウェアアプリケーションの実行をサポートすることができる。かかるソフトウェアアプリケーションは、コンテナベースの配備モデルを含む種々の方法で配備することができる。コンテナ化されたアプリケーションは、種々のツールを使用して管理され得る。例えば、コンテナ化されたアプリケーションは、Docker Swarm、Kubernetes及び他を使用して管理されてもよい。コンテナ化されたアプリケーションは、ソフトウェアアプリケーションのためのサーバレスのクラウドネイティブコンピューティング配備及び管理モデルを容易にするために使用され得る。ソフトウェアアプリケーションのためのサーバレスクラウドネイティブコンピューティング配備及び管理モデルをサポートして、コンテナは、種々のイベントがコンテナ化されたアプリケーションをスピンアップさせてイベントハンドラとして動作させるように、イベント処理メカニズム(例えば、AWSラムダ)の一部として使用され得る。
【0169】
上記で説明したシステムは、種々の方法で配備され得、第5世代(fifth generation、「5G」)ネットワークをサポートする方法で配備されることを含む。5Gネットワークは、先の世代のモバイル通信ネットワークよりも実質的に高速のデータ通信をサポートすることができ、その結果、現代の大規模なデータセンターが目立たなくなり得、例えば、モバイルネットワークタワーに近いよりローカルなマイクロデータセンターによって置き換えられる可能性があるため、データ及びコンピューティングリソースの分散化につながる可能性がある。上述のシステムは、かかるローカルのマイクロデータセンターに含まれてもよく、マルチアクセスエッジコンピューティング(multi-access edge computing、「MEC」)システムの一部であってもよく、又はそれとペアリングされてもよい。かかるMECシステムにより、クラウドコンピューティング能力及びセルラーネットワークのエッジにおけるITサービス環境が可能になり得る。セルラー顧客のより近くでアプリケーションを実行し、関連する処理タスクを実施することによって、ネットワーク輻輳が低減され得、アプリケーションがより良好に実施され得る。
【0170】
上述したストレージシステムは、NVMeゾーン化ネームスペースを実装するように構成することができる。NVMeゾーン化ネームスペースの使用を通じて、ネームスペースの論理アドレス空間はゾーンに分割される。各ゾーンは、順次書き込まれ、再書き込みの前に明示的にリセットされなければならない論理ブロックアドレス範囲を提供し、それによって、デバイスの自然な境界を公開する名前空間の作成、及び内部マッピングテーブルのホストへのオフロード管理を可能にする。NVMeゾーン化ネームスペース(Zoned Name Space、「ZNS」)を実装するために、ゾーンを使用してネームスペース論理アドレス空間を露出させるZNS SSD又は他の形態のゾーン化されたブロックデバイスが利用され得る。ゾーンがデバイスの内部物理特性に整合されると、データの配置における複数の非効率性を排除することができる。かかる実施形態では、各ゾーンは、例えば、ウェアレベリング及びガベージコレクションのような機能が、デバイス全体にわたってではなく、ゾーンごと又はアプリケーションごとに実施され得るように、別個のアプリケーションにマッピングすることができる。ZNSをサポートするために、本明細書に記載されるストレージコントローラは、例えば、Linux(商標)カーネルゾーン化されたブロックデバイスインターフェース又は他のツールの使用を通じて、ゾーン化されたブロックデバイスとインタラクションを有するように構成され得る。
【0171】
上述のストレージシステムはまた、例えば、シングル磁気記録(shingled magnetic recording、SMR)ストレージデバイスの使用を通してなど、他の方法でゾーン化ストレージを実装するように構成されてもよい。ゾーン化ストレージが使用される例では、デバイス管理された実施形態が配備されてもよく、ストレージデバイスは、それをファームウェア内で管理し、任意の他のストレージデバイスのようなインターフェースを提示することによって、この複雑性を隠している。代替的に、ゾーン化ストレージは、オペレーティングシステムに依存してドライブの処理方法を認識し、ドライブの特定の領域にのみ順次書き込むホスト管理の実施形態を介して実装することもできる。ゾーン化ストレージは、同様に、ドライブ管理された実装形態とホスト管理された実装形態との組み合わせが配備されるホスト認識の実施形態を使用して実装することができる。
【0172】
本明細書に記載されるストレージシステムは、データレイクを形成するために使用され得る。データレイクは、組織のデータが流れる最初の場所として動作することができ、かかるデータは、生のフォーマットであり得る。メタデータのタグ付けは、特に、データレイクが、容易にアクセス可能又は読み出し可能ではないフォーマット(例えば、非構造化データ、半構造化データ、構造化データ)のデータの複数のストアを含む実施形態では、データレイク内のデータ要素の検索を容易にするために実装され得る。データレイクから、データは、データウェアハウスへと下流に進むことができ、そこで、データは、より処理され、パッケージ化され、消費可能なフォーマットで記憶され得る。上述のストレージシステムはまた、かかるデータウェアハウスを実装するために使用されてもよい。加えて、データマート又はデータハブは、更により容易に消費されるデータを可能にすることができ、また、上述したストレージシステムを使用して、データマート又はデータハブに必要な基礎的ストレージリソースを提供することができる。実施形態では、データレイクへのクエリは、dataは、プラン又はスキーマが記憶された位置に入るときではなく、記憶された位置から引き出されるときにプラン又はスキーマに適用されるスキーマオンリード手法を必要とすることがある。
【0173】
本明細書に記載されるストレージシステムはまた、目標復旧時点(recovery point objective、「RPO」)を実装するように構成されてもよく、RPOは、ユーザによって確立されてもよく、管理者によって確立されてもよく、システムデフォルトとして確立されてもよく、ストレージシステムが配信に参加しているストレージクラス若しくはサービスの一部として確立されてもよく、又は何らかの他の方法で確立されてもよい。「目標復旧時点」は、ソースデータセットへの最後の更新と、ソースデータセットの連続的に又は頻繁に更新されるコピーから、そうする理由が与えられた場合に正しく復旧可能である最後の復旧可能な複製されたデータセット更新との間の最大時間差の目標である。更新は、最後の復旧可能な複製されたデータセット更新の前にソースデータセットに対して処理された全ての更新を適切に考慮に入れた場合、正しく復旧可能となる。
【0174】
同期複製では、RPOはゼロであり、これは、通常の動作の下で、ソースデータセット上の全ての完了した更新が存在し、コピーデータセット上で正しく復旧可能であるべきであることを意味する。ベストエフォートのほぼ同期した複製では、RPOは、数秒ほどの低さとなり得る。スナップショットベースの複製では、RPOは、スナップショット間の間隔に、前の既に転送されたスナップショットと最新の複製されるスナップショットとの間の修正を転送するための時間を加えたものとして大まかに計算することができる。
【0175】
更新が複製されるよりも速く累積する場合、RPOは見逃される可能性がある。スナップショットベースの複製の場合、2つのスナップショットの間に、スナップショットを取得してからそのスナップショットの累積更新をコピーに複製する間に複製できるよりも多くの複製されるデータが累積すると、RPOを逸脱する可能性がある。再度、スナップショットベースの複製において、複製されるデータが、後続のスナップショット間の時間内に転送され得るよりも速い速度で累積する場合、複製は、予想される目標復旧時点と、最後の正しく複製された更新によって表される実際の復旧点との間のミスを拡大し、更に遅れ始める可能性がある。
【0176】
上述のストレージシステムは、シェアードナッシングストレージクラスタの一部であり得る。シェアードナッシングストレージクラスタでは、クラスタの各ノードは、ローカルストレージを有し、ネットワークを介してクラスタ内の他のノードと通信し、クラスタによって使用されるストレージは、(概して)各個々のノードに接続されたストレージによってのみ提供される。データセットを同期的に複製しているノードの集合は、各ストレージシステムがシェアードナッシングを有し、ネットワークを介して他のストレージシステムと通信するため、ローカルストレージストレージクラスタの一例とすることができ、これらのストレージシステムは、(概して)何らかの相互接続を通じてアクセスを共有する他のストレージを使用しない。対照的に、上述のストレージシステムの一部は、ペアにされたコントローラによって共有されるドライブシェルフが存在するため、それ自体が共有ストレージクラスタとして構築される。しかしながら、上述した他のストレージシステムは、全てのストレージが特定のノード(例えば、ブレード)に対してローカルであり、全ての通信が計算ノードを互いにリンクするネットワークを介するため、シェアードナッシングストレージクラスタとして構築される。
【0177】
他の実施形態では、シェアードナッシングストレージクラスタの他の形態は、クラスタ内の任意のノードが、それらが必要とする全てのストレージのローカルコピーを有し、データが失われないことを確実にするために、又は他のノードもそのストレージを使用しているため、データが同期型の複製を介してクラスタ内の他のノードにミラーリングされる実施形態を含み得る。かかる一実施形態では、新しいクラスタノードが何らかのデータを必要とする場合、そのデータのコピーを有する他のノードから新しいノードにそのデータをコピーすることができる。
【0178】
一部の実施形態では、ミラーコピーベースの共有ストレージクラスタは、全てのクラスタの記憶されたデータの複数のコピーを記憶することができ、データの各サブセットはノードの特定のセットに複製され、データの異なるサブセットはノードの異なるセットに複製される。一部の変形例では、実施形態は、クラスタの記憶されたデータの全てを全てのノードに記憶してもよく、一方、他の変形例では、ノードは、ノードの第1のセットが全て同じデータのセットを記憶し、ノードの第2の異なるセットが全て異なるデータのセットを記憶するように分割されてもよい。
【0179】
読者は、RAFTベースのデータベース(例えば、etcd)が、全てのRAFTノードが全てのデータを記憶する無共有ストレージクラスタのように動作し得ることを理解するであろう。しかしながら、RAFTクラスタに記憶されるデータの量は、余分なコピーがあまり多くのストレージを消費しないように制限することができる。コンテナサーバクラスタはまた、コンテナが大きすぎる傾向がなく、それらのバルクデータ(コンテナ内で実行されるアプリケーションによって操作されるデータ)がS3クラスタ又は外部ファイルサーバなどの他の場所に記憶されると仮定して、全てのデータを全てのクラスタノードに複製することが可能であり得る。かかる例では、コンテナストレージは、その非共有ストレージモデルを介して直接クラスタによって提供されてもよく、それらのコンテナは、アプリケーション又はサービスの部分のための実行環境を形成するイメージを提供する。
【0180】
更なる説明のために、図3Dは、本明細書で説明されるプロセスのうちの1つ以上を実施するように特に構成され得る例示的なコンピューティングデバイス350を例解している。図3Dに示されるように、コンピューティングデバイス350は、通信インフラストラクチャ360を介して互いに通信可能に接続された、通信インターフェース352と、プロセッサ354と、ストレージデバイス356と、入力/出力(「I/O」)モジュール358とを含み得る。例示的なコンピューティングデバイス350が図3Dに示されているが、図3Dに例解される構成要素は、限定することを意図するものではない。他の実施形態では、追加的又は代替的な構成要素が使用され得る。次に、図3Dに示されるコンピューティングデバイス350の構成要素について更に詳細に説明する。
【0181】
通信インターフェース352は、1つ以上のコンピューティングデバイスと通信するように構成され得る。通信インターフェース352の例は、限定はしないが、ワイヤードネットワークインターフェース接続(ネットワークインターフェースカードなど)、ワイヤレスネットワークインターフェース接続(ワイヤレスネットワークインターフェースカード接続など)、モデム、オーディオ/ビデオ接続、及び任意の他の好適なインターフェースを含む。
【0182】
プロセッサ354は、概して、データを処理すること、並びに/又は、本明細書で説明される命令、プロセス、及び/若しくは動作のうちの1つ以上を解釈すること、実行すること、及び/若しくはその実行を指示することが可能な、任意のタイプ若しくは形態の処理ユニットを表す。プロセッサ354は、ストレージデバイス356に記憶されたコンピュータ実行可能命令362(例えば、アプリケーション、ソフトウェア、コード、及び/又は他の実行可能データインスタンス)を実行することによって動作を実施することができる。
【0183】
ストレージデバイス356は、1つ以上のデータ記憶媒体、デバイス、又は構成を含むことができ、任意のタイプ、形態、及び組み合わせのデータ記憶媒体及び/又はデバイスを使用することができる。例えば、ストレージデバイス356は、本明細書に記載の不揮発性媒体及び/又は揮発性媒体の任意の組み合わせを含んでもよいが、これらに限定されない。本明細書に記載のデータを含む電子データは、ストレージデバイス356に一時的及び/又は永続的に記憶することができる。例えば、本明細書で説明される動作のいずれかを実施するようにプロセッサ354に指示するように構成されたコンピュータ実行可能命令362を表すデータが、ストレージデバイス356内に記憶されてもよい。一部の例では、データは、ストレージデバイス356内に存在する1つ以上のデータベース内に配置することができる。
【0184】
I/Oモジュール358は、ユーザ入力を受信し、ユーザ出力を提供するように構成された1つ以上のI/Oモジュールを含み得る。I/Oモジュール358は、入力及び出力能力をサポートする任意のハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせを含み得る。例えば、I/Oモジュール358は、限定はしないが、キーボード若しくはキーパッド、タッチスクリーン構成要素(例えば、タッチスクリーンディスプレイ)、受信機(例えば、RF若しくは赤外線受信機)、動きセンサ、及び/又は1つ以上の入力ボタンを含む、ユーザ入力をキャプチャするためのハードウェア及び/又はソフトウェアを含んでもよい。
【0185】
I/Oモジュール358は、限定はしないが、グラフィックスエンジン、ディスプレイ(例えば、ディスプレイスクリーン)、1つ以上の出力ドライバ(例えば、ディスプレイドライバ)、1つ以上のオーディオスピーカー、及び1つ以上のオーディオドライバを含む、ユーザに出力を提示するための1つ以上のデバイスを含んでもよい。特定の実施形態では、I/Oモジュール358は、ユーザに提示するためにディスプレイにグラフィカルデータを提供するように構成される。グラフィカルデータは、1つ以上のグラフィカルユーザインターフェース及び/又は特定の実装形態に役立ち得るような任意の他のグラフィカルコンテンツを表すことができる。一部の例では、本明細書で説明するシステム、コンピューティングデバイス、及び/又は他の構成要素のいずれかは、コンピューティングデバイス350によって実装され得る。
【0186】
更なる説明のために、図3Eは、ストレージサービス(本明細書では「データサービス」とも称される)を提供するためのストレージシステム376のフリートの例を例解している。図3に描示されるストレージシステム376のフリートは、本明細書に記載されるストレージシステムとそれぞれ同様であり得る複数のストレージシステム374a、374b、374c、374d、374nを含む。ストレージシステム376のフリート内のストレージシステム374a、374b、374c、374d、374nは、同一のストレージシステムとして、又は異なるタイプのストレージシステムとして具現化することができる。例えば、図3Eに描示されるストレージシステム374a、374nのうちの2つは、ストレージシステム374a、374nの各々を集合的に形成するリソースが別個のクラウドサービスプロバイダ370、372によって提供されるため、クラウドベースのストレージシステムとして描示されている。例えば、第1のクラウドサービスプロバイダ370は、Amazon AWS(商標)であり得、一方、第2のクラウドサービスプロバイダ372は、Microsoft Azure(商標)であるが、他の実施形態では、1つ以上のパブリッククラウド、プライベートクラウド、又はそれらの組み合わせが、ストレージシステム376のフリート内の特定のストレージシステムを形成するために使用される基礎的リソースを提供するために使用され得る。
【0187】
図3Eに描示される例は、本開示の一部の実施形態による、ストレージサービスを配信するためのエッジ管理サービス382を含む。配信されるストレージサービス(本明細書では「データサービス」とも称される)は、例えば、ある特定の量のストレージをコンシューマに提供するサービス、所定のサービス品質保証に従ってストレージをコンシューマに提供するサービス、所定の規制要件に従ってストレージをコンシューマに提供するサービス、及び他の多くのサービスを含み得る。
【0188】
図3Eに描示されるエッジ管理サービス382は、例えば、1つ以上のコンピュータプロセッサなどのコンピュータハードウェア上で実行するコンピュータプログラム命令の1つ以上のモジュールとして具現化されてもよい。代替的に、エッジ管理サービス382は、1つ以上のコンテナ内で、又は何らかの他の方法で、1つ以上の仮想マシンなどの仮想化実行環境上で実行するコンピュータプログラム命令の1つ以上のモジュールとして具現化されてもよい。他の実施形態では、エッジ管理サービス382は、エッジ管理サービス382に含まれるコンピュータプログラム命令の1つ以上のモジュールが複数の物理又は仮想実行環境にわたって分散される実施形態を含む、上述の実施形態の組み合わせとして具現化されてもよい。
【0189】
エッジ管理サービス382は、ストレージサービスをストレージコンシューマに提供するためのゲートウェイとして動作してもよく、ストレージサービスは、1つ以上のストレージシステム374a、374b、374c、374d、374nによって提供されるストレージを活用する。例えば、エッジ管理サービス382は、ストレージサービスを消費する1つ以上のアプリケーションを実行しているホストデバイス378a、378b、378c、378d、378nにストレージサービスを提供するように構成されてもよい。かかる例では、エッジ管理サービス382は、ホストデバイス378a、378b、378c、378d、378nがストレージシステム374a、374b、374c、374d、374nに直接アクセスすることを必要とするのではなく、ホストデバイス378a、378b、378c、378d、378nとストレージシステム374a、374b、374c、374d、374nとの間のゲートウェイとして動作することができる。
【0190】
図3Eのエッジ管理サービス382は、ストレージサービスモジュール380を図3Eのホストデバイス378a、378b、378c、378d、378nに公開するが、他の実施形態では、エッジ管理サービス382は、ストレージサービスモジュール380を種々のストレージサービスの他のコンシューマに公開することができる。種々のストレージサービスは、1つ以上のユーザインターフェースを介して、1つ以上のAPIを介して、又はストレージサービスモジュール380によって提供される一部の他のメカニズムを通して、コンシューマに提示することができる。したがって、図3Eに描示されるストレージサービスモジュール380は、物理ハードウェア上、仮想化実行環境上、又はそれらの組み合わせで実行されるコンピュータプログラム命令の1つ以上のモジュールとして具現化されてもよく、かかるモジュールを実行することは、ストレージサービスのコンシューマが、種々のストレージサービスを提供され、選択し、それにアクセスすることを可能にする。
【0191】
図3Eのエッジ管理サービス382はまた、システム管理サービスモジュール384を含む。図3Eのシステム管理サービスモジュール384は、実行されるときに、ホストデバイス378a、378b、378c、378d、378nにストレージサービスを提供するために、ストレージシステム374a、374b、374c、374d、374nと協調して種々の動作を実施する、コンピュータプログラム命令の1つ以上のモジュールを含む。システム管理サービスモジュール384は、例えば、ストレージシステム374a、374b、374c、374d、374nによって公開された1つ以上のAPIを介してストレージシステム374a、374b、374c、374d、374nからストレージリソースをプロビジョニングすること、ストレージシステム374a、374b、374c、374d、374nによって公開された1つ以上のAPIを介してストレージシステム374a、374b、374c、374d、374nの間でデータセット又はワークロードを移行すること、ストレージシステム374a、374b、374c、374d、374nによって公開された1つ以上のAPIを介してストレージシステム374a、374b、374c、374d、374n上で1つ以上のチューナブルパラメータ(すなわち、1つ以上の構成可能な設定)を設定することなどのタスクを実施するように構成することができる。例えば、以下で説明されるサービスの多くは、ストレージシステム374a、374b、374c、374d、374nが何らかの方法で動作するように構成される実施形態に関する。かかる例では、システム管理サービスモジュール384は、ストレージシステム374a、374b、374c、374d、374nによって提供されるAPI(又は何らかの他のメカニズム)を使用して、ストレージシステム374a、374b、374c、374d、374nを以下で説明される方法で動作するように構成する責任を負うことができる。
【0192】
ストレージシステム374a、374b、374c、374d、374nを構成することに加えて、エッジ管理サービス382自体が、種々のストレージサービスを提供するために必要とされる種々のタスクを実施するように構成され得る。ストレージサービスが、選択されて適用されると、データセットに含まれる個人識別可能情報(personally identifiable information、「PII」)を、データセットがアクセスされたときに難読化させるサービスを含む例を考える。かかる例では、ストレージシステム374a、374b、374c、374d、374nは、データセットに向けられた読み出し要求をサービスするときにPIIを難読化するように構成することができる。代替的に、ストレージシステム374a、374b、374c、374d、374nは、PIIを含むデータを返すことによって読み出しをサービスすることができるが、データがストレージシステム374a、374b、374c、374d、374nからホストデバイス378a、378b、378c、378d、378nへの途中でエッジ管理サービス382を通過するときに、エッジ管理サービス382自体がPIIを難読化することができる。
【0193】
図3Eに描示されるストレージシステム374a、374b、374c、374d、374nは、図1A図3Dを参照して上述したストレージシステム(その変形例を含む)のうちの1つ以上として具現化することができる。実際には、ストレージシステム374a、374b、374c、374d、374nは、ストレージリソースのプールとして機能することができ、そのプール内の個々の構成要素は、異なる性能特性、異なるストレージ特性などを有する。例えば、ストレージシステム374aのうちの1つは、クラウドベースのストレージシステムであってもよく、別のストレージシステム374bは、ブロックストレージを提供するストレージシステムであってもよく、別のストレージシステム374cは、ファイルストレージを提供するストレージシステムであってもよく、別のストレージシステム374dは、比較的高性能のストレージシステムであってもよく、一方、別のストレージシステム374nは、比較的低性能のストレージシステムなどであってもよい。代替的な実施形態では、単一のストレージシステムのみが存在し得る。
【0194】
図3Eに描示されるストレージシステム374a、374b、374c、374d、374nはまた、1つのストレージシステム374aの故障が別のストレージシステム374bの故障と完全に無関係であるように、異なる故障ドメインに編成することができる。例えば、ストレージシステムの各々は、独立した電力システムから電力を受け取ることができ、ストレージシステムの各々は、独立したデータ通信ネットワークを介してデータ通信のために結合することができるなどである。更に、第1の故障ドメイン内のストレージシステムは、第1のゲートウェイを介してアクセスすることができ、一方、第2の故障ドメイン内のストレージシステムは、第2のゲートウェイを介してアクセスすることができる。例えば、第1のゲートウェイは、エッジ管理サービス382の第1のインスタンスであってもよく、第2のゲートウェイは、エッジ管理サービス382の第2のインスタンスであってもよく、各インスタンスが別個である、又は各インスタンスが分散型エッジ管理サービス382の一部である実施形態を含む。
【0195】
利用可能なストレージサービスの例解的な例として、異なるレベルのデータ保護に関連付けられたストレージサービスをユーザに提示することができる。例えば、選択され施行されると、種々の目標復旧時点(「RPO」)を保証することができるように、そのユーザに関連付けられたデータが保護されることをユーザに保証するストレージサービスをユーザに提示することができる。第1の利用可能なストレージサービスは、例えば、ユーザに関連付けられた一部のデータセットが、5秒を超えて古い任意のデータがプライマリデータストアの故障の場合に復旧され得るように保護されることを確実にすることができ、一方、第2の利用可能なストレージサービスは、ユーザに関連付けられたデータセットが、5分を超えて古い任意のデータがプライマリデータストアの故障の場合に復旧され得るように保護されることを確実にすることができる。
【0196】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得るストレージサービスの追加の例は、1つ以上のデータコンプライアンスサービスを含み得る。かかるデータコンプライアンスサービスは、例えば、ユーザのデータセットが種々の規制要件を遵守するように管理されることを確実にするために、データコンプライアンスサービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、1つ以上のデータコンプライアンスサービスをユーザに提供して、ユーザのデータセットが一般データ保護規則(General Data Protection Regulation、「GDPR」)に準拠するような方法で管理されることを確実にしてもよく、1つ以上のデータコンプライアンスサービスをユーザに提供して、ユーザのデータセットが2002年のサーベンスオクスリー法(Sarbanes-Oxley Act、「SOX」)に準拠するような方法で管理されることを確実にしてもよく、又は1つ以上のデータコンプライアンスサービスをユーザに提供して、ユーザのデータセットが何らかの他の規制行為に準拠するような方法で管理されることを確実にしてもよい。加えて、1つ以上のデータコンプライアンスサービスは、ユーザのデータセットが何らかの非政府のガイダンスを厳守するように(例えば、監査目的のためのベストプラクティスを厳守するように)管理されることを確実にするためにユーザに提供されてもよく、1つ以上のデータコンプライアンスサービスは、ユーザのデータセットが特定のクライアント又は組織の要件を厳守するように管理されることを確実にするためにユーザに提供されてもよい、などである。
【0197】
特定のデータコンプライアンスサービスが、ユーザのデータセットがGDPRに記載された要件に従うような方法で管理されることを確実にするように設計される例を考える。GDPRの全ての要求のリストは、規制自体に見出すことができるが、例解の目的のために、GDPRに記載された要求の例は、追加の情報を使用することなく、結果として生じるデータが特定のデータ主体に起因することができないように個人データを変換するために、仮名化プロセスが記憶されたデータに適用されなければならないことを要求する。例えば、元のデータを理解不能にするためにデータ暗号化技術を適用することができ、かかるデータ暗号化技術は、正しい復号鍵にアクセスしなければ元に戻すことができない。したがって、GDPRは、解読鍵が仮名化データとは別に保持されることが必要となり得る。1つの特定のデータコンプライアンスサービスは、この段落に記載された要件の遵守を確実にするために提供され得る。
【0198】
この特定のデータコンプライアンスサービスを提供するために、データコンプライアンスサービスは、(例えば、GUIを介して)ユーザに提示され、ユーザによって選択され得る。特定のデータコンプライアンスサービスの選択を受信したことに応答して、1つ以上のストレージサービスポリシーが、特定のデータコンプライアンスサービスを実行するために、ユーザに関連付けられたデータセットに適用され得る。例えば、ストレージシステムに記憶される前、クラウド環境に記憶される前、又は他の場所に記憶される前にデータセットが暗号化されることを要求するストレージサービスポリシーが適用されてもよい。このポリシーを施行するために、記憶されるときにデータセットが暗号化されることを必要とする要件が施行され得るだけでなく、データセットを伝送する(例えば、データセットを別の当事者に送信する)前にデータセットが暗号化されることを必要とする要件が導入され得る。かかる例では、データセットを暗号化するために使用される任意の暗号化鍵が、データセット自体を記憶する同一のシステム上に記憶されないことを要求する、ストレージサービスポリシーも導入され得る。読者は、多くの他の形態のデータコンプライアンスサービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。
【0199】
ストレージシステム376のフリート内のストレージシステム374a、374b、374c、374d、374nは、例えば、1つ以上のフリート管理モジュールによって集合的に管理されてもよい。フリート管理モジュールは、図3Eに描示されるシステム管理サービスモジュール384の一部であってもよく、又はそれとは別個であってもよい。フリート管理モジュールは、フリート内の各ストレージシステムの健全性を監視すること、フリート内の1つ以上のストレージシステム上で更新又はアップグレードを開始すること、負荷分散又は他の性能目的のためにワークロードを移行すること、及び多くの他のタスクなどのタスクを実施することができる。したがって、かつ多くの他の理由で、ストレージシステム374a、374b、374c、374d、374nは、ストレージシステム374a、374b、374c、374d、374n間でデータを交換するために、1つ以上のデータ通信リンクを介して互いに結合され得る。
【0200】
本明細書に記載のストレージシステムは、種々の形態のデータ複製をサポートすることができる。例えば、ストレージシステムのうちの2つ以上は、互いの間でデータセットを同期して複製してもよい。同期複製では、特定のデータセットの別個のコピーが複数のストレージシステムによって維持されてもよいが、データセットの全てのアクセス(例えば、読み出し)は、アクセスがどのストレージシステムに向けられたかに関わらず、一貫した結果をもたらすべきである。例えば、データセットを同期的に複製しているストレージシステムのいずれかに向けられた読み出しは、同一の結果を返さなければならない。したがって、データセットのバージョンに対する更新は、正確に同時に行われる必要はないが、データセットへの一貫したアクセスを確実にするために、予防措置が講じられなければならない。例えば、データセットに向けられた更新(例えば、書き込み)が第1のストレージシステムによって受信された場合、データセットを同期的に複製している全てのストレージシステムがデータセットのそれらのコピーに更新を適用した場合にのみ、更新は完了したものとして肯定応答され得る。かかる例では、同期複製は、I/O転送(例えば、第1のストレージシステムで受信された書き込みが第2のストレージシステムに転送される)、ストレージシステム間の通信(例えば、各ストレージシステムが更新を完了したことを示す)の使用を通して、又は他の方法で実行され得る。
【0201】
他の実施形態では、データセットは、チェックポイントの使用を通して複製され得る。チェックポイントベースの複製(「ほぼ同期した複製」とも称される)では、特定のチェックポイントの前のデータセットに対する全ての更新が完了した場合にのみ、データセットが特定のチェックポイントに更新されているように、データセットに対する更新のセット(例えば、データセットに向けられた1つ以上の書き込み動作)が、異なるチェックポイント間で行われ得る。第1のストレージシステムが、データセットのユーザによってアクセスされているデータセットのライブコピーを記憶する例を考える。この例では、データセットが、チェックポイントベースの複製を使用して第1のストレージシステムから第2のストレージシステムに複製されていると仮定する。例えば、第1のストレージシステムは、第1のチェックポイント(時間t=0)を第2のストレージシステムに送信し、その後、データセットに対する更新の第1のセットを送信し、その後、第2のチェックポイント(時間t=1)を送信し、その後、データセットに対する更新の第2のセットを送信し、その後、第3のチェックポイント(時間t=2)を送信してもよい。かかる例では、第2のストレージシステムが第1の更新のセット内の全ての更新を実施したが、第2の更新のセット内の全ての更新をまだ実施していない場合、第2のストレージシステム上に記憶されるデータセットのコピーは、第2のチェックポイントまで最新であり得る。代替的に、第2のストレージシステムが、更新の第1のセット及び更新の第2のセットの両方において全ての更新を実施した場合、第2のストレージシステムに記憶されたデータセットのコピーは、第3のチェックポイントまで最新であり得る。読者は、種々のタイプのチェックポイント(例えば、メタデータのみのチェックポイント)が使用され得、チェックポイントは、種々の要因(例えば、時間、動作の数、RPO設定)などに基づいて、分散され得ることを理解するであろう。
【0202】
他の実施形態では、スナップショットベースの複製(「非同期複製」とも称される)を通じてデータセットを複製することができる。スナップショットベースの複製では、データセットのスナップショットが、第1のストレージシステムなどの複製ソースから第2のストレージシステムなどの複製ターゲットに送信され得る。かかる一実施形態では、各スナップショットは、データセット全体又はデータセットのサブセット、例えば、最後のスナップショットが複製ソースから複製ターゲットに送信されてから変化したデータセットの部分のみを含み得る。読者は、スナップショットが、種々の要因(例えば、時間、動作の数、RPO設定)を考慮に入れるポリシーに基づいて、又は何らかの他の方法で、オンデマンドで送信され得ることを理解するであろう。
【0203】
上述のストレージシステムは、単独で又は組み合わせて、継続的データ保護ストアとして機能するように構成することができる。継続的データ保護ストアは、データセットへの更新を記録するストレージシステムの特徴であり、データセットの以前のコンテンツの一貫したイメージが低い時間粒度(しばしば、秒のオーダー、又は更に少ない)で、妥当な期間(しばしば、数時間又は数日)に遡ってわたってアクセスできるようにする。これらは、データセットのための非常に最近の一貫した時点へのアクセスを可能にし、また、例えばデータセットの一部が破損又は別様に損失するような、あるイベントの直前のデータセットの時点へのアクセスを、その出来事の直前の最大更新回数に近い回数を保持したまま可能にする。概念的には、それらは、非常に頻繁に行われ、長期間にわたって保持されるデータセットのスナップショットのシーケンスのようなものであるが、継続的データ保護ストアは、スナップショットとは全く異なって実装されることが多い。データ継続的データ保護ストアを実装するストレージシステムは、これらの時点にアクセスする手段、スナップショットとして又はクローンコピーとしてこれらの時点のうちの1つ以上にアクセスする手段、又はデータセットをこれらの記録された時点のうちの1つに戻す手段を更に提供することができる。
【0204】
経時的に、オーバーヘッドを低減するために、継続的データ保護ストア内に保持されたいくつかの時点は、時間内の他の近くの点とマージされ、本質的に、ストアからこれらの時点のうちの一部を削除することができる。これにより、更新を記憶するのに必要な容量を減らすことができる。これらの限られた数の時点を、より長い持続時間のスナップショットに変換することも可能であり得る。例えば、かかるストアは、現在から数時間遡った時点の低粒度シーケンスを保持し、追加の日までのオーバーヘッドを低減するために、いくつかの時点をマージ又は削除してもよい。それよりも更に過去に遡って、これらの時点のうちの一部を、わずか数時間ごとからの一貫した時点画像を表すスナップショットに変換することができる。
【0205】
更なる説明のために、図4は、本開示の一部の実施形態による、ストレージシステムのためのコンテキスト駆動型ユーザインターフェースのための例示的な方法を例解するフローチャートを記載する。図4に描示される例示的な方法は、ユーザアカウント406から、システム400のシステムインターフェース404にアクセスする要求を受信すること410を含む。システムインターフェース404は、ユーザコンピュータデバイス408及びユーザアカウント404を介してユーザに視覚要素を提示するためのソフトウェア機構である。システムインターフェース404は、ユーザインターフェース(UI)エンジン402によって構成及び再構成される。UIエンジン402は、重要なシステム特性を決定し、その重要なシステム特性に基づいてシステムインターフェース404を再構成するハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの集合体である。UIエンジン402はまた、ユーザアカウント404のユーザからのシステムインターフェース404に対する要求をサービスする。ユーザアカウント406は、ストレージシステム400におけるユーザの識別情報である。ユーザアカウント406は、ユーザの管理下にあり、セキュリティ管理者によって管理される。ユーザアカウント406は、ユーザコンピュータデバイス408上のユーザと相互作用し、ユーザからの命令を変換することができる。システム400は、上述したストレージシステムのいずれであってもよい。以下はストレージシステム400に関連して説明されるが、説明される方法は、UIエンジン402及びシステムインターフェース404を有する任意のコンピュータシステムを使用して実施され得る。
【0206】
ユーザアカウント406から、システム400のシステムインターフェース404にアクセスする要求を受信すること410は、ユーザが(ユーザアカウント406を介して)システム400にログインしたことを検出することによって実行されてもよい。システムインターフェース404にアクセスする要求は、ユーザアカウントセッションの初期化であってもよく、ユーザアカウントセッションは、ユーザアカウント406のユーザがシステム400にログインする時点と、ユーザアカウント406のユーザがシステム400からログアウトする時点との間の活動を指す。
【0207】
図4に描示される例示的な方法はシステム400の現在の態様を記述する少なくとも1つの重要なシステム特性を識別すること412を含む。システム特性は、ストレージシステム400の状態又はコンテキストに関する情報である。システム特性は、ストレージシステムに関するメトリック(例えば、アップタイムレベル、RPOなど)、並びにストレージシステム自体に関する情報(例えば、ソフトウェアバージョン、ハードウェア記述など)を含むことができる。システム特性はまた、ストレージシステム400以外のシステムから取り出された情報を組み込んでもよい。例えば、システム特性は、類似配備内のメトリックパーセンタイル(例えば、類似企業と比較した信頼性の下位25%)などの比較情報を含んでもよい。
【0208】
重要なシステム特性は、そのシステム特性に基づいてシステムインターフェース404を再構成するのに十分に重要であると識別されたシステム特性である。少なくとも1つの重要なシステム特性を識別すること412は、システム特性を評価して、1つ以上の重要なシステム特性の存在を判定することによって実行することができる。システム特性は、システムが理想的な動作パラメータの外で動作していることを示すそのシステム特性に基づいて、重要であると識別され得る。例えば、システム特性は、そのシステム特性に関連付けられたメトリックが閾値許容範囲(例えば、アップタイムレベルの低下、RPOの増加など)を超えた場合に重要であると識別され得る。ストレージシステムにおけるそのような重要なシステム特性は、ストレージシステムのストレージ利用レベルであってもよい。ストレージ利用レベルが特定の閾値を超える(すなわち、過剰利用又は過少利用される)場合、システム特性は、重要であると識別され得る。ストレージ利用レベルは、ストレージのために利用可能な空間及び/又はストレージ要求にサービスするために利用可能なリソースを含み得る。
【0209】
別の例として、システム特性は、そのシステム特性がシステムに対する変更(例えば、リソースへのアクセスを必要とするユーザ、システムに追加された特徴など)を示すことに基づいて、重要であると識別され得る。ストレージシステムにおけるそのような重要なシステム特性は、ストレージシステムに追加された追加リソース、又はストレージシステム内から解放された追加リソースの検出、及びそのようなリソースが割り振られるという要件であり得る。
【0210】
別の例として、システム特性は、外部システムに関連するので、重要であると識別されてもよい。具体的には、システム特性が対処されなければならないようにシステム400の外部の条件が変化した場合(例えば、システムソフトウェアにおいて発見された脆弱性、システムソフトウェアに利用可能な更新、政府コンプライアンス要件が変化したこと、システムがもはや業界標準に従って動作しないことなど)、システム特性は重要であると識別され得る。ストレージシステムにおけるそのような重要なシステム特性は、業界ベンチマークと比較して使用される暗号化のレベル又はタイプであり得る。ストレージシステムによって使用される暗号化が業界ベンチマークに追いついていない場合、暗号化レベル又はタイプは、重要なシステム特性として識別され得る。
【0211】
別の例として、システム特性は、システム特性がシステム又はユーザに対する切迫した損害(例えば、データ破損、システム要素オフラインなど)を示す場合、重要であると識別されてもよい。ストレージシステムにおけるそのような重要なシステム特性は、ランサムウェア攻撃の存在であり得る。ランサムウェア攻撃が検出された場合、システムセキュリティ及び攻撃は、重要なシステム特性として識別され得る。上述したようなシステム特性は、ユーザアカウント406のユーザによって、又はストレージシステム400の管理者によって明示的に重要であると識別されてもよい。代替的に、システム特性は、メトリックが閾値を超えること、又は要求のシーケンスに基づいてマルウェア攻撃を検出することなど、自動トリガに基づいて重要であると識別され得る。
【0212】
システムインターフェース404へのアクセス要求は、それ自体が重要なシステム特性を識別することができる。具体的には、要求は、システムインターフェース404が特定の重要なシステム特性又は重要なシステム特性のグループに基づいて再構成されることをユーザが望むという指示を含むことができる。例えば、システムインターフェース404へのアクセス要求は、ユーザアカウントセッション中にユーザがインストールを計画するソフトウェアアップグレードを識別してもよい。次に、ソフトウェアアップグレードが重要なシステム特性として識別される。
【0213】
少なくとも1つの重要なシステム特性を識別すること412は、システム特性又はシステム特性のサブセットを追跡し、追跡された各システム特性の重要度スコアを経時的に決定することによって実行することもできる。重要度スコアは、他のシステム特性の状態に対するシステム特性の状態の重大度を示す値である。重要度スコアは、例えば、システム特性の緊急性又はインポートに基づいてもよい。重要度スコアは、影響を受ける(潜在的な)ユーザの数に基づいてもよい。少なくとも1つの重要なシステム特性は、適用された重要度スコアに基づいて識別され得る(例えば、最高の重要度スコアを有するシステム特性が、少なくとも1つの重要なシステム特性として識別される)。同様に、UIエンジン402は、重要なシステム特性のプライマリグループ、重要なシステム特性のセカンダリグループなどの重要なシステム特性の階層を識別することもできる。識別された重要なシステム特性のプライマリ及びセカンダリ性質は、再構成されたシステムインターフェースに反映され得る。少なくとも1つの重要なシステム特性を識別すること412は、解決の優先順位である1つ以上の重要なシステム特性を決定することによって実行することもできる。そのような決定では、各重要なシステム特性についての重要度スコアは、優先順位を付けるべき1つ以上の重要なシステム特性を選択するために、(例えば、ユーザ又は管理者によって指定されるような)システム優先度に基づき得る。
【0214】
図4に描示される例示的な方法はまた、少なくとも1つの重要なシステム特性に基づいてシステムインターフェース404を再構成すること414を含む。少なくとも1つの重要なシステム特性に基づいてシステムインターフェース404を再構成すること414は、システムインターフェース404内の視覚要素を追加、削除、及び/又は再配置することによって実行されてもよい。システムインターフェース404は、各々がシステム特性を提示するいくつかの視覚要素と、1つ以上のシステム特性に関連するタスクを実施するために使用される相互作用要素とを含む。視覚要素は、特定の重要なシステム特性又は重要なシステム特性のグループに対処するために、一緒にグループ化され得る。
【0215】
少なくとも1つの重要なシステム特性に基づいてシステムインターフェース404を再構成すること414は、システムインターフェース404内で、識別された少なくとも1つの重要なシステム特性に関連するタスクを実施するために使用される視覚要素のグループをレンダリングすることを含み得る。再構成されたシステムインターフェース404は、識別された少なくとも1つの重要なシステムに関連するタスクを実施するために使用される視覚要素のグループを排他的に提示することができる。代替的に、再構成されたシステムインターフェース404は、異なるシステム特性に関連付けられた視覚要素のグループを含んでもよく、識別された少なくとも1つの重要なシステム特性は、他の視覚要素よりも顕著に提示される。システムインターフェース404は、システムインターフェース404が(識別された重要なシステム特性のないシステムに基づいて)デフォルト構成から修正されるという点で「再構成される」。
【0216】
同じシステム特性又はシステム特性のタイプに関連付けられた視覚要素のグループは、再構成及び識別された重要なシステム特性に関わらず、類似視覚特性を共有してもよい。そのような視覚特性は、例えば、同じ色、同じ一般的なインターフェース位置(例えば、左上隅の近くに固定される)、又は同じ輝度若しくは陰影を含み得る。例えば、現在のユーザアカウントセッションについて識別された重要なシステム特性に関わらず、視覚要素のグループは、それぞれ青色の異なる色相でレンダリングされてもよく、別のグループは、それぞれ赤色の異なる色相でレンダリングされてもよい。
【0217】
識別された重要なシステム特性に基づいてシステムインターフェース404を再構成すること414は、ユーザアカウントセッションの途中で実施されてもよい。具体的には、UIエンジン402は、システム400への変更に応答して新しい重要なシステム特性を識別することができる。システム400に対する変更に基づいて、UIエンジン402は、識別された重要なシステム特性に関連付けられた視覚要素を提示するようにシステムインターフェース404を再構成することができる。
【0218】
図4に描示される例示的な方法は、再構成されたシステムインターフェース404をユーザアカウント406のユーザに提示すること416を含む。再構成されたシステムインターフェース404をユーザアカウント406のユーザに提示すること416は、ユーザアカウント406が再構成されたシステムインターフェース404にアクセスすることを可能にする、ユーザアカウント406及び/又は再構成されたシステムインターフェース404に関連付けられた許可を修正することによって実行され得る。再構成されたシステムインターフェース404をユーザアカウント406のユーザに提示することはまた、再構成されたシステムインターフェース404を表すコードを取り出すために使用され得る再構成されたシステムインターフェース404への経路をユーザアカウント406に提供することによって実行され得る。
【0219】
更なる説明のために、図5は、本開示の一部の実施形態による、ストレージシステムのためのコンテキスト駆動型ユーザインターフェースの追加の例示的な方法を例解するフローチャートを記載する。図5に描示される例示的な方法は、ユーザアカウント406から、システム400のシステムインターフェース404にアクセスする要求を受信すること410と、システム400の現在の態様を記述する少なくとも1つの重要なシステム特性を識別すること412と、少なくとも1つの重要なシステム特性に基づいてシステムインターフェース404を再構成すること414と、再構成されたシステムインターフェース404をユーザアカウント406のユーザに提示すること416とを含むので、図4に描示される例示的な方法と同様である。
【0220】
図5に描示される例示的な方法では、少なくとも1つの重要なシステム特性に基づいてシステムインターフェース404を再構成すること414は、ユーザアカウントセッションのユーザアカウントパーソナリティを識別すること502を含む。本明細書で使用されるユーザアカウントパーソナリティは、単一のユーザアカウントがシステム(ストレージシステムなど)に関して実施することができる複数の役割のうちの1つを指す。例えば、1つのユーザアカウントは、ストレージシステムのセキュリティ及び保護に主に関係するパーソナリティ(すなわち、セキュリティパーソナリティ)、システム内のエラーを解決することに主に関係するパーソナリティ(すなわち、トラブルシューティングパーソナリティ)、ストレージシステムのリソースを調達することに主に関係するパーソナリティ(すなわち、調達パーソナリティ)、ストレージシステム内のリソースを配備することに主に関係するパーソナリティ(すなわち、配備パーソナリティ)、及び政府コンプライアンスに主に関係するパーソナリティ(すなわち、コンプライアンスパーソナリティ)に関連付けられてもよい。
【0221】
各ユーザアカウントパーソナリティは、パーソナリティに関連するタスクを実施するために使用されるシステム特性及び相互作用要素を提示する視覚要素の集合と関連付けられ得る。パーソナリティに関連付けられた視覚要素は、システム特性と、そのパーソナリティの下で実施される活動をサポートする相互作用要素とを提示する。同じパーソナリティに関連付けられた視覚要素は、システムインターフェース内で一緒にグループ化されてもよい。例えば、1つの視覚要素グループは、セキュリティパーソナリティに関連付けられ、ストレージクライアントアカウントを認可又は認可解除するためのメニュー、データ利用率に関するシステム特性、及び既存のデータから作られたスナップショットに関するシステム特性などの要素を含んでもよい。別の視覚要素グループは、調達パーソナリティに関連付けられ、システム特性に基づいてストレージシステムに追加するデバイス又はサービスの提案などの要素を含んでもよい。別の視覚要素グループは、トラブルシューティングパーソナリティに関連付けられ、システム内に存在する現在のエラー及びエラーに対処するために提案されるアクションを記述するシステム特性などの要素を含んでもよい。別の視覚要素グループは、配備パーソナリティに関連付けられ、リソース又はサービスをストレージシステムに追加するための手続き命令及び配備プロセスのステータスなどの要素を含んでもよい。最後に、別の視覚要素グループは、コンプライアンスパーソナリティに関連付けられ、遵守されるべき規則及び各規則の詳細などの要素を含んでもよい。
【0222】
ユーザアカウントセッションのためのユーザアカウントパーソナリティを識別すること502は、識別された重要なシステム特性のためのユーザアカウントパーソナリティを決定することによって実行され得る。各重要なシステム特性は、重要なシステム特性が対処され得る特定のユーザアカウントパーソナリティに関連付けられてもよい。例えば、システム又はユーザへの切迫した損害を示す重要なシステム特性は、セキュリティパーソナリティに関連付けられ得る。別の例として、システムが理想的な動作パラメータ外で動作していることを示す重要なシステム特性をトラブルシューティングパーソナリティに関連付けることができる。ユーザアカウントパーソナリティが識別されると、システムインターフェース404は、識別されたユーザアカウントパーソナリティに関連付けられた視覚要素をシステムインターフェース内に提示することによって再構成され得る。
【0223】
更なる説明のために、図6は、本開示の一部の実施形態による、ストレージシステムのためのコンテキスト駆動型ユーザインターフェースの追加の例示的な方法を例解するフローチャートを記載する。図6に描示される例示的な方法は、ユーザアカウント406から、システム400のシステムインターフェース404にアクセスする要求を受信すること410と、システム400の現在の態様を記述する少なくとも1つの重要なシステム特性を識別すること412と、少なくとも1つの重要なシステム特性に基づいてシステムインターフェース404を再構成すること414と、再構成されたシステムインターフェース404をユーザアカウント406のユーザに提示すること416とを含むので、図4に描示される例示的な方法と同様である。
【0224】
図6に描示される例示的な方法では、少なくとも1つの重要なシステム特性に基づいてシステムインターフェース404を再構成すること414は、少なくとも1つの重要なシステム特性に関連付けられた視覚要素がシステムインターフェース404のプライマリ要素となるように、システムインターフェース402内に視覚要素を配置すること602を含む。少なくとも1つの重要なシステム特性に関連付けられた視覚要素がシステムインターフェース404のプライマリ要素となるようにシステムインターフェース402内に視覚要素を配置すること602は、識別された重要なシステム特性に関連付けられた視覚要素に視覚スタイルを適用して、これらの視覚要素を他のシステム特性に関連付けられた視覚要素の他のグループから区別することによって実行されてもよい。
【0225】
「プライマリ」は、システムインターフェース404内の他の視覚要素に対して視覚的に強調される視覚要素又は視覚要素のグループを指す。識別された重要なシステム特性に関連付けられた視覚要素をシステムインターフェース404のプライマリ要素にすることは、様々な方法で実行され得る。例えば、識別された重要なシステム特性に関連付けられた視覚要素は、システムインターフェース404の中央に置かれてもよい。別の例として、識別された重要なシステム特性に関連付けられた視覚要素は、他のシステム特性に関連付けられた視覚要素の他のグループより大きくレンダリングされてもよい。別の例として、識別された重要なシステム特性に関連付けられた視覚要素は、他のシステム特性に関連付けられた視覚要素の他のグループよりも明るい色相でレンダリングされてもよい。別の例として、識別された重要なシステム特性に関連付けられた視覚要素は、システムインターフェース404内のウィンドウの層の最上層に提示されてもよい。
【0226】
識別された重要なシステム特性に基づいてシステムインターフェース404を再構成すること414は、識別されたセカンダリの重要なシステム特性に関連付けられた視覚要素がシステムインターフェース404のセカンダリ要素となるように、任意の識別されたセカンダリの重要なシステム特性に関連付けられた視覚要素のグループを配置することを含み得る。上記の説明と同様に、視覚スタイルは、識別されたセカンダリの重要なシステム特性に関連付けられた視覚要素に適用されて、それらの視覚要素を、プライマリの重要なシステム特性に関連付けられた視覚要素のグループから区別し、それよりも目立たないようにすることができる。
【0227】
更なる説明のために、図7は、本開示の一部の実施形態による、ストレージシステムのためのコンテキスト駆動型ユーザインターフェースの追加の例示的な方法を例解するフローチャートを記載している。図7に描示される例示的な方法は、ユーザアカウント406から、システム400のシステムインターフェース404にアクセスする要求を受信すること410と、システム400の現在の態様を記述する少なくとも1つの重要なシステム特性を識別すること412と、少なくとも1つの重要なシステム特性に基づいてシステムインターフェース404を再構成すること414と、再構成されたシステムインターフェース404をユーザアカウント406のユーザに提示すること416とを含むので、図4に描示される例示的な方法と同様である。
【0228】
図7に描示される例示的な方法では、システム400の現在の態様を記述する少なくとも1つの重要なシステム特性を識別すること412は、重要度に基づいてシステム特性のランク付けされたリストから少なくとも1つの重要なシステム特性を選択すること702を含む。重要度に基づいてシステム特性のランク付けされたリストから少なくとも1つの重要なシステム特性を選択すること702は、各システム特性についての重要度スコアを生成することによって実行され得る。上記で説明したように、重要度スコアは、例えば、システム特性の緊急性又はインポート、並びに影響を受ける(潜在的な)ユーザの数に基づき得る。重要度スコアがシステム特性に適用されると、システム特性は、最も高い重要度スコアから最も低い重要度スコアにランク付けされ得る。少なくとも1つの重要なシステム特性は、最も高い重要度スコアを有するシステム特性の中から選択され得る。同様に、セカンダリ及びターシャリの重要なシステム特性も、ランク付けされたリストから選択することができる。
【0229】
また、図7に描示される例示的な方法では、少なくとも1つの重要なシステム特性に基づいてシステムインターフェース404を再構成すること414は、システム特性のランク付けされたリスト内の少なくとも1つの重要なシステム特性のランク付けに基づいてシステムインターフェース404内に視覚要素を配置すること704を含む。システム特性のランク付けされたリスト内の少なくとも1つの重要なシステム特性のランク付けに基づいて、システムインターフェース404内に視覚要素を配置すること704は、ランク付けされたリストから最高の重要度スコアを有する重要なシステム特性に関連付けられた視覚要素をレンダリングし、それらの視覚要素をシステムインターフェース404のプライマリ要素にすることによって実行され得る。同様に、2番目に高い重要度スコアを有する重要なシステム特性に関連付けられた視覚要素は、システムインターフェース404のセカンダリ要素とされ得る。
【0230】
更なる説明のために、図8は、本開示の一部の実施形態による、ストレージシステムのためのコンテキスト駆動型ユーザインターフェースの追加の例示的な方法を例解するフローチャートを記載している。図8に描示される例示的な方法は、ユーザアカウント406から、システム400のシステムインターフェース404にアクセスする要求を受信すること410と、システム400の現在の態様を記述する少なくとも1つの重要なシステム特性を識別すること412と、少なくとも1つの重要なシステム特性に基づいてシステムインターフェース404を再構成すること414と、再構成されたシステムインターフェース404をユーザアカウント406のユーザに提示すること416とを含むので、図4に描示される例示的な方法と同様である。
【0231】
図8に描示される例示的な方法では、少なくとも1つの重要なシステム特性に基づいてシステムインターフェース404を再構成すること414は、少なくとも1つの重要なシステム特性に関連付けられた視覚要素を用いてシステムインターフェース404内に静的オブジェクトを投入すること802を含む。少なくとも1つの重要なシステム特性に関連付けられた視覚要素を用いてシステムインターフェース404内に静的オブジェクトを投入すること802は、重要なシステム特性に関連付けられた視覚要素を、システムインターフェース404内の静的オブジェクトと一致させることによって実行され得る。
【0232】
各重要なシステム特性について、システムインターフェース404は、いくつかの一貫した静的オブジェクトを維持することができる。そのような静的オブジェクトは、スクリーン上の特定の場所に固定された異なるウィンドウを含むことができ、識別された重要なシステム特性に応じて異なる視覚要素によって投入することができる。例えば、システムインターフェース404は、システムインターフェース404の中心に固定され、システムインターフェース404の高さの60%及び幅の60%を使用するプライマリウィンドウ、及び各角に固定され、残りの空間を占めるセカンダリウィンドウを含んでもよい。少なくとも1つの重要なシステム特性に関連付けられた視覚要素を使用して、プライマリウィンドウを投入することができる。セカンダリの重要なシステム特性が識別された場合、それらのセカンダリの重要なシステム特性に関連付けられた視覚要素を使用して、システムインターフェース404のセカンダリウィンドウを投入することができる。
【0233】
少なくとも1つの重要なシステム特性に基づいてシステムインターフェース404を再構成すること414は、更に、オブジェクト関係モデルに基づいてもよい。オブジェクト関係モデルは、オブジェクト及びオブジェクト間の関係を定義するグラフである。上述したパーソナリティベースのシステムインターフェース404のオブジェクト関係モデルは、ユーザアカウントの異なるパーソナリティ及び各パーソナリティの視覚要素を定義するオブジェクトを含むことができる。オブジェクト関係モデルはまた、各パーソナリティに関連付けられた視覚要素間の関係を定義してもよい。次いで、オブジェクト関係モデルを使用して、システムインターフェース404内に静的オブジェクトを投入するか、又はシステムインターフェース404内に動的オブジェクションを生成することができる。
【0234】
一部の実施形態は、主にストレージシステムの文脈で説明されるが、当業者であれば、本開示の実施形態はまた、任意の好適な処理システムとともに使用するためのコンピュータ可読記憶媒体上に配置されたコンピュータプログラム製品の形態をとり得ることを認識するであろう。かかるコンピュータ可読記憶媒体は、磁気媒体、光学メディア、ソリッドステート媒体、又は他の好適な媒体を含む、機械可読情報のための任意の記憶媒体であり得る。かかる媒体の例には、ハードドライブ又はディスケット内の磁気ディスク、光ドライブ用のコンパクトディスク、磁気テープ、及び当業者が想起する他の媒体が含まれる。当業者は、好適なプログラミング手段を有する任意のコンピュータシステムが、コンピュータプログラム製品において具現化されるものとして本明細書で説明されるステップを実行することができることを直ちに認識するであろう。また、当業者であれば、本明細書に記載された実施形態の一部は、コンピュータハードウェアにインストールされて実行されるソフトウェアを対象としているが、ファームウェア又はハードウェアとして実装される代替的な実施形態も、十分に本開示の範囲内であることを認識するであろう。
【0235】
一部の例では、コンピュータ可読命令を記憶する非一時的コンピュータ可読媒体が、本明細書で説明される原理に従って提供され得る。命令は、コンピューティングデバイスのプロセッサによって実行されるときに、本明細書で説明する動作のうちの1つ以上を含む、1つ以上の動作を実施するようにプロセッサ及び/又はコンピューティングデバイスに指示することができる。かかる命令は、種々の公知のコンピュータ可読媒体のいずれかを使用して記憶及び/又は伝送され得る。
【0236】
本明細書で言及される非一時的コンピュータ可読媒体は、コンピューティングデバイスによって(例えば、コンピューティングデバイスのプロセッサによって)読み出され、かつ/又は実行され得るデータ(例えば、命令)を提供することに関与する任意の非一時的記憶媒体を含み得る。例えば、非一時的コンピュータ可読媒体は、不揮発性記憶媒体及び/又は揮発性媒体の任意の組み合わせを含んでもよいが、これらに限定されない。例示的な不揮発性記憶媒体は、読み出し専用メモリ、フラッシュメモリ、ソリッドステートドライブ、磁気ストレージデバイス(例えば、ハードディスク、フロッピーディスク、磁気など)、強誘電体ランダムアクセスメモリ(random-access memory、「RAM」)、及び光ディスク(例えば、コンパクトディスク、デジタルビデオディスク、ブルーレイディスクなど)を含むが、これらに限定されない。例示的な揮発性記憶媒体は、RAM(例えば、ダイナミックRAM)を含むが、これに限定されない。
【0237】
1つ以上の実施形態は、指定された機能の性能及びその関係を例解する方法ステップの助けを借りて、本明細書で説明され得る。これらの機能的ビルディングブロック及び方法ステップの境界及びシーケンスは、説明の便宜上、本明細書において任意に定義されている。指定された機能及び関係が適切に実施される限り、代替の境界及びシーケンスを定義することができる。したがって、任意のかかる代替の境界又はシーケンスは、特許請求の範囲及び趣旨の範囲内である。更に、これらの機能的ビルディングブロックの境界は、説明の便宜上、任意に定義されている。特定の重要な機能が適切に実施される限り、代替の境界を定義することができる。同様に、フロー図のブロックはまた、特定の重要な機能を例解するために本明細書で任意に定義されている場合がある。
【0238】
使用される範囲において、フロー図のブロック境界及びシーケンスは、他の方法で定義されてもよく、依然として特定の重要な機能を実施することができる。したがって、機能的ビルディングブロックとフロー図のブロック及びシーケンスとの両方のかかる代替の定義は、特許請求の範囲及び趣旨の範囲内にある。当業者はまた、本明細書における機能的ビルディングブロック、並びに他の例解的なブロック、モジュール、及び構成要素が、例解されるように、又は個別の構成要素、特定用途向け集積回路、適切なソフトウェアを実行するプロセッサなど、若しくはそれらの任意の組み合わせによって実装され得ることを認識するであろう。
【0239】
1つ以上の実施形態の種々の機能及び特徴の特定の組み合わせが本明細書に明示的に記載されているが、これらの特徴及び機能の他の組み合わせも同様に可能である。本開示は、本明細書に開示される特定の例によって限定されず、これらの他の組み合わせを明示的に組み込む。
【0240】
本開示の利点及び特徴は、以下のステートメントによって更に説明することができる。
【0241】
1.ユーザアカウントから、システムのためのシステムインターフェースにアクセスする要求を受信する方法であって、システムの現在の態様を記述する少なくとも1つの重要なシステム特性を識別し、少なくとも1つの重要なシステム特性に基づいてシステムインターフェースを再構成し、再構成されたシステムインターフェースをユーザアカウントのユーザに提示する、方法。
【0242】
2.少なくとも1つの重要なシステム特性に基づいてシステムインターフェースを再構成することが、ユーザアカウントセッションのユーザアカウントパーソナリティを識別することを含む、ステートメント1に記載の方法。
【0243】
3.少なくとも1つの重要なシステム特性に基づいてシステムインターフェースを再構成することが、少なくとも1つの重要なシステム特性に関連付けられた視覚要素がシステムインターフェースのプライマリ要素となるように、システムインターフェース内に視覚要素を配置することを含む、ステートメント2又はステートメント1に記載の方法。
【0244】
4.システムの現在の態様を記述する少なくとも1つの重要なシステム特性を識別することが、重要度に基づいてシステム特性のランク付けされたリストから少なくとも1つの重要なシステム特性を選択することを含む、ステートメント3、ステートメント2、又はステートメント1に記載の方法。
【0245】
5.少なくとも1つの重要なシステム特性に基づいてシステムインターフェースを再構成することが、システム特性のランク付けされたリスト内の少なくとも1つの重要なシステム特性のランク付けに基づいて、システムインターフェース内に視覚要素を配置することを含む、ステートメント4、ステートメント3、ステートメント2、又はステートメント1に記載の方法。
【0246】
6.少なくとも1つの重要なシステム特性に基づいてシステムインターフェースを再構成することが、少なくとも1つの重要なシステム特性に関連付けられた視覚要素を用いてシステムインターフェース内に静的オブジェクトを投入することを含む、ステートメント5、ステートメント4、ステートメント3、ステートメント2又はステートメント1に記載の方法。
【0247】
7.少なくとも1つの重要なシステム特性が、システムのストレージ利用レベルを含む、ステートメント6、ステートメント5、ステートメント4、ステートメント3、ステートメント2、又はステートメント1に記載の方法。
【0248】
8.少なくとも1つの重要なシステム特性が、外部システムに関連してシステムの現在の態様を記述する、ステートメント7、ステートメント6、ステートメント5、ステートメント4、ステートメント3、ステートメント2、又はステートメント1に記載の方法。
【0249】
9.少なくとも1つの重要なシステム特性が、システムインターフェースにアクセスする要求に基づいて識別される、ステートメント8、ステートメント7、ステートメント6、ステートメント5、ステートメント4、ステートメント3、ステートメント2、又はステートメント1に記載の方法。
【0250】
10.システムインターフェースを再構成することが、オブジェクト関係モデルに更に基づく、ステートメント9、ステートメント8、ステートメント7、ステートメント6、ステートメント5、ステートメント4、ステートメント3、ステートメント2、又はステートメント1に記載の方法。
【0251】
1つ以上の実施形態は、指定された機能の性能及びその関係を例解する方法ステップの助けを借りて、本明細書で説明され得る。これらの機能的ビルディングブロック及び方法ステップの境界及びシーケンスは、説明の便宜上、本明細書において任意に定義されている。指定された機能及び関係が適切に実施される限り、代替の境界及びシーケンスを定義することができる。したがって、任意のかかる代替の境界又はシーケンスは、特許請求の範囲及び趣旨の範囲内である。更に、これらの機能的ビルディングブロックの境界は、説明の便宜上、任意に定義されている。特定の重要な機能が適切に実施される限り、代替の境界を定義することができる。同様に、フロー図のブロックはまた、特定の重要な機能を例解するために本明細書で任意に定義されている場合がある。
【0252】
使用される範囲において、フロー図のブロック境界及びシーケンスは、他の方法で定義されてもよく、依然として特定の重要な機能を実施することができる。したがって、機能的ビルディングブロックとフロー図のブロック及びシーケンスとの両方のかかる代替の定義は、特許請求の範囲及び趣旨の範囲内にある。当業者はまた、本明細書における機能的ビルディングブロック、並びに他の例解的なブロック、モジュール、及び構成要素が、例解されるように、又は個別の構成要素、特定用途向け集積回路、適切なソフトウェアを実行するプロセッサなど、若しくはそれらの任意の組み合わせによって実装され得ることを認識するであろう。
【0253】
1つ以上の実施形態の種々の機能及び特徴の特定の組み合わせが本明細書に明示的に記載されているが、これらの特徴及び機能の他の組み合わせも同様に可能である。本開示は、本明細書に開示される特定の例によって限定されず、これらの他の組み合わせを明示的に組み込む。
図1A
図1B
図1C
図1D
図2A
図2B
図2C
図2D
図2E
図2F
図2G
図3A
図3B
図3C
図3D
図3E
図4
図5
図6
図7
図8
【国際調査報告】