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

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

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

特表2024-521617サービスとしてのストレージのためのロールエンフォースメント
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-06-04
(54)【発明の名称】サービスとしてのストレージのためのロールエンフォースメント
(51)【国際特許分類】
   H04L 67/1097 20220101AFI20240528BHJP
   G06F 3/06 20060101ALI20240528BHJP
【FI】
H04L67/1097
G06F3/06 304H
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023564236
(86)(22)【出願日】2022-05-11
(85)【翻訳文提出日】2023-12-14
(86)【国際出願番号】 US2022028714
(87)【国際公開番号】W WO2022240950
(87)【国際公開日】2022-11-17
(31)【優先権主張番号】63/187,636
(32)【優先日】2021-05-12
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/365,420
(32)【優先日】2021-07-01
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.UNIX
2.TENSORFLOW
3.KUBERNETES
(71)【出願人】
【識別番号】511175211
【氏名又は名称】ピュア ストレージ, インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100126480
【弁理士】
【氏名又は名称】佐藤 睦
(72)【発明者】
【氏名】ダージ,プラカシュ
(72)【発明者】
【氏名】グラティ,シュベティマ
(57)【要約】
ストレージシステムについて、ストレージコンシューマロール及びストレージプロバイダロールを含む複数のロールを管理することであって、ストレージコンシューマロールが、ストレージコンシューマロールに対して有効化され、かつストレージプロバイダロールに対して無効化される、データ管理命令に関連付けられ、ストレージプロバイダロールが、ストレージプロバイダロールに対して有効化され、かつストレージコンシューマロールに対して無効化される、ストレージ管理命令に関連付けられる、管理することと、ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令をサービスすることであって、データ管理命令が、ストレージシステム上のデータを操作するための命令である、サービスすることと、ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージ管理命令をサービスすることであって、ストレージ管理命令が、ストレージシステムを管理するための命令である、サービスすることと、を含む、サービスとしてのストレージのためのロールエンフォースメント。
【特許請求の範囲】
【請求項1】
方法であって、
ストレージシステムについて、ストレージコンシューマロール及びストレージプロバイダロールを含む複数のロールを管理することであって、前記ストレージコンシューマロールが、前記ストレージコンシューマロールに対して有効化され、かつ前記ストレージプロバイダロールに対して無効化される、データ管理命令に関連付けられ、前記ストレージプロバイダロールが、前記ストレージプロバイダロールに対して有効化され、かつ前記ストレージコンシューマロールに対して無効化される、ストレージ管理命令に関連付けられる、管理することと、
ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令をサービスすることであって、前記データ管理命令が、前記ストレージシステム上のデータを操作するための命令である、サービスすることと、
前記ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージ管理命令をサービスすることであって、前記ストレージ管理命令が、前記ストレージシステムを管理するための命令である、サービスすることと、を含む、方法。
【請求項2】
ストレージコンシューマロールに関連付けられた前記第1のクライアントからの前記データ管理命令をサービスすることであって、前記データ管理命令が、前記ストレージシステム上のデータを操作するための命令である、サービスすることが、前記ストレージコンシューマロールに関連付けられた前記第1のクライアントからの削除命令をサービスすることを含む、請求項1に記載の方法。
【請求項3】
前記ストレージプロバイダロールに関連付けられた前記第2のクライアントからの前記ストレージ管理命令をサービスすることであって、前記ストレージ管理命令が、前記ストレージシステムを管理するための命令である、サービスすることが、前記ストレージプロバイダロールに関連付けられた前記第2のクライアントからの前記ストレージシステム上の保護ポリシーを改変するための命令をサービスすることを含む、請求項1に記載の方法。
【請求項4】
前記ストレージシステムが、前記ストレージシステムからクライアントにストレージサービスを提供するエッジ管理サービスに通信可能に結合される、請求項1に記載の方法。
【請求項5】
ストレージコンシューマロールに関連付けられた前記第1のクライアントから前記データ管理命令をサービスすることであって、前記データ管理命令が、前記ストレージシステム上のデータを操作するための命令である、サービスすることが、
エッジ管理サービスによって、前記第1のクライアントから前記データ管理命令を受信することであって、前記エッジ管理サービスが、前記ストレージシステムからクライアントにストレージサービスを提供する、受信することと、
前記エッジ管理サービスによって、前記第1のクライアントに関連付けられた前記ロールが前記ストレージコンシューマロールであることを検証することと、を含む、請求項1に記載の方法。
【請求項6】
前記ストレージプロバイダロールに関連付けられた前記第2のクライアントから前記ストレージ管理命令をサービスすることであって、前記ストレージ管理命令が、前記ストレージシステムを管理するための命令である、サービスすることが、
エッジ管理サービスによって、ゲートウェイを介して、前記第2のクライアントから前記ストレージ管理命令を受信することであって、前記エッジ管理サービスが、前記ストレージシステムからクライアントにストレージサービスを提供し、前記ゲートウェイが、前記第2のクライアントに、前記エッジ管理サービスへのアクセスを提供する、受信することと、
前記エッジ管理サービスによって、前記第2のクライアントに関連付けられた前記ロールが前記ストレージプロバイダロールであることを検証することと、を含む、請求項1に記載の方法。
【請求項7】
前記データ管理命令が、データ書き込み命令、データ読み出し命令、データ削除命令、及びストレージクラスインスタンス化命令を含む、請求項1に記載の方法。
【請求項8】
前記ストレージ管理命令が、領域作成命令、アベイラビリティゾーン作成命令、ストレージクラス定義命令、及び保護ポリシー命令を含む、請求項1に記載の方法。
【請求項9】
前記ストレージプロバイダロールに関連付けられた前記第2のクライアントからの前記ストレージ管理命令をサービスすることであって、前記ストレージ管理命令が、前記ストレージシステムを管理するための命令である、サービスすることが、前記ストレージプロバイダロールに関連付けられた前記第2のクライアントからの、前記ストレージシステム上のデータセットに適用されるストレージサービスを実装するための命令をサービスすることを含む、請求項1に記載の方法。
【請求項10】
前記ストレージプロバイダロールに関連付けられた前記第2のクライアントからの前記ストレージ管理命令をサービスすることであって、前記ストレージ管理命令が、前記ストレージシステムを管理するための命令である、サービスすることが、前記ストレージプロバイダロールに関連付けられた前記第2のクライアントからのストレージシステム性能を記述するメトリクスに対する要求をサービスすることを含む、請求項1に記載の方法。
【請求項11】
コンピュータプロセッサと、前記コンピュータプロセッサに動作可能に結合されたコンピュータメモリと、を備える、装置であって、前記コンピュータメモリが、前記コンピュータプロセッサによって実行されるときに、前記装置に、
ストレージシステムについて、ストレージコンシューマロール及びストレージプロバイダロールを含む複数のロールを管理するステップであって、前記ストレージコンシューマロールが、前記ストレージコンシューマロールに対して有効化され、かつ前記ストレージプロバイダロールに対して無効化される、データ管理命令に関連付けられ、前記ストレージプロバイダロールが、前記ストレージプロバイダロールに対して有効化され、かつ前記ストレージコンシューマロールに対して無効化される、ストレージ管理命令に関連付けられる、管理するステップと、
ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令をサービスするステップであって、前記データ管理命令が、前記ストレージシステム上のデータを操作するための命令である、サービスするステップと、
前記ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージ管理命令をサービスするステップであって、前記ストレージ管理命令が、前記ストレージシステムを管理するための命令である、サービスするステップと、を実行させるコンピュータプログラム命令を内部に配置している、装置。
【請求項12】
ストレージコンシューマロールに関連付けられた前記第1のクライアントからの前記データ管理命令をサービスすることであって、前記データ管理命令が、前記ストレージシステム上のデータを操作するための命令である、サービスすることが、ストレージコンシューマロールに関連付けられた前記第1のクライアントからの削除命令をサービスすることを含む、請求項11に記載の装置。
【請求項13】
前記ストレージプロバイダロールに関連付けられた前記第2のクライアントからの前記ストレージ管理命令をサービスすることであって、前記ストレージ管理命令が、前記ストレージシステムを管理するための命令である、サービスすることが、前記ストレージプロバイダロールに関連付けられた前記第2のクライアントからの前記ストレージシステム上の保護ポリシーを改変するための命令をサービスすることを含む、請求項11に記載の装置。
【請求項14】
前記ストレージシステムが、前記ストレージシステムからクライアントにストレージサービスを提供するエッジ管理サービスに通信可能に結合される、請求項11に記載の装置。
【請求項15】
ストレージコンシューマロールに関連付けられた前記第1のクライアントから前記データ管理命令をサービスすることであって、前記データ管理命令が、前記ストレージシステム上のデータを操作するための命令である、サービスすることが、
エッジ管理サービスによって、前記第1のクライアントから前記データ管理命令を受信することであって、前記エッジ管理サービスが、前記ストレージシステムからクライアントにストレージサービスを提供する、受信することと、
前記エッジ管理サービスによって、前記第1のクライアントに関連付けられた前記ロールが前記ストレージコンシューマロールであることを検証することと、を含む、請求項11に記載の装置。
【請求項16】
前記ストレージプロバイダロールに関連付けられた前記第2のクライアントから前記ストレージ管理命令をサービスすることであって、前記ストレージ管理命令が、前記ストレージシステムを管理するための命令である、サービスすることが、
エッジ管理サービスによって、ゲートウェイを介して、前記第2のクライアントから前記ストレージ管理命令を受信することであって、前記エッジ管理サービスが、前記ストレージシステムからクライアントにストレージサービスを提供し、前記ゲートウェイが、前記第2のクライアントに、前記エッジ管理サービスへのアクセスを提供する、受信することと、
前記エッジ管理サービスによって、前記第2のクライアントに関連付けられた前記ロールが前記ストレージプロバイダロールであることを検証することと、を含む、請求項11に記載の装置。
【請求項17】
前記データ管理命令が、データ書き込み命令、データ読み出し命令、データ削除命令、及びストレージクラスインスタンス化命令を含む、請求項11に記載の装置。
【請求項18】
前記ストレージ管理命令が、領域作成命令、アベイラビリティゾーン作成命令、ストレージクラス定義命令、及び保護ポリシー命令を含む、請求項11に記載の装置。
【請求項19】
前記ストレージプロバイダロールに関連付けられた前記第2のクライアントからの前記ストレージ管理命令をサービスすることであって、前記ストレージ管理命令が、前記ストレージシステムを管理するための命令である、サービスすることが、前記ストレージプロバイダロールに関連付けられた前記第2のクライアントからの、前記ストレージシステム上のデータセットに適用されるストレージサービスを実装するための命令をサービスすることを含む、請求項11に記載の装置。
【請求項20】
コンピュータ可読媒体上に配置されたコンピュータプログラム製品であって、前記コンピュータプログラム製品が、実行されるときに、コンピュータに、
ストレージシステムについて、ストレージコンシューマロール及びストレージプロバイダロールを含む複数のロールを管理するステップであって、前記ストレージコンシューマロールが、前記ストレージコンシューマロールに対して有効化され、かつ前記ストレージプロバイダロールに対して無効化される、データ管理命令に関連付けられ、前記ストレージプロバイダロールが、前記ストレージプロバイダロールに対して有効化され、かつ前記ストレージコンシューマロールに対して無効化される、ストレージ管理命令に関連付けられる、管理するステップと、
ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令をサービスするステップであって、前記データ管理命令が、前記ストレージシステム上のデータを操作するための命令である、サービスするステップと、
前記ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージ管理命令をサービスするステップであって、前記ストレージ管理命令が、前記ストレージシステムを管理するための命令である、サービスするステップと、を実行させるコンピュータプログラム命令を含む、コンピュータプログラム製品。
【発明の詳細な説明】
【図面の簡単な説明】
【0001】
図1A】一部の実装形態による、データストレージのための第1の例示的なシステムを例解する。
図1B】一部の実装形態による、データストレージのための第2の例示的なシステムを例解する。
図1C】一部の実装形態による、データストレージのための第3の例示的なシステムを例解する。
図1D】一部の実装形態による、データストレージのための第4の例示的なシステムを例解する。
図2A】一部の実施形態による、複数のストレージノードと、ネットワークアタッチトストレージを提供するために各ストレージノードに結合された内部ストレージと、を有する、ストレージクラスタの斜視図である。
図2B】一部の実施形態による、複数のストレージノードを結合する相互接続スイッチを示すブロック図である。
図2C】一部の実施形態による、ストレージノードのコンテンツ及び不揮発性ソリッドステートストレージユニットのうちの1つのコンテンツを示す、マルチレベルブロック図である。
図2D】一部の実施形態による、一部の先の図面のストレージノード及びストレージユニットの実施形態を使用する、ストレージサーバ環境を示す。
図2E】一部の実施形態による、制御プレーン、計算及びストレージプレーン、並びに下層物理リソースと相互作用する権限を示す、ブレードハードウェアブロック図である。
図2F】一部の実施形態による、ストレージクラスタのブレード内の弾力性ソフトウェア層を描示する。
図2G】一部の実施形態による、ストレージクラスタのブレード内の権限及びストレージリソースを描示する。
図3A】本開示の一部の実施形態による、データ通信のためにクラウドサービスプロバイダと結合されたストレージシステムの図を記載する。
図3B】本開示の一部の実施形態によるストレージシステムの図を記載する。
図3C】本開示の一部の実施形態によるクラウドベースのストレージシステムの例を記載する。
図3D】本明細書で説明されるプロセスのうちの1つ以上を実行するように特に構成され得る例示的なコンピューティングデバイスを例解する。
図3E】本開示の一部の実施形態による、ストレージサービスを提供するためのストレージシステムのフリートの例を例解する。
図4】本開示の一部の実施形態による、ストレージサービスを配信するためのエッジ管理サービスを含むブロック図を記載する。
図5】本開示の一部の実施形態による、サービスとしてのデータ管理を提供する例示的な方法を示すフローチャートを記載する。
図6】本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントのためのシステムを含むブロック図を記載する。
図7】本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントの例示的な方法を示すフローチャートを記載する。
図8】本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントの追加の例示的な方法を示すフローチャートを記載する。
図9】本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントの追加の例示的な方法を示すフローチャートを記載する。
図10】本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントの追加の例示的な方法を示すフローチャートを記載する。
図11】本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントの追加の例示的な方法を示すフローチャートを記載する。
図12】本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントの追加の例示的な方法を示すフローチャートを記載する。
図13】本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントの追加の例示的な方法を示すフローチャートを記載する。
【発明を実施するための形態】
【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に結合される。フラッシュ入出力ポート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」)が、ネットワークファイルシステム(Network File System、「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】
多層ニューラルネットワークの開発を含む、深層ニューラルネットワークにおける進歩は、データ科学者が人工知能(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】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上の高可用性ストレージサービスを含み得る。かかる高可用性ストレージサービスは、例えば、ユーザのデータセットが特定のレベルのアップタイムを有する(すなわち、所定の時間量で利用可能である)ことが保証されることを確実にするために、高可用性ストレージサービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、第1の高可用性ストレージサービスは、ユーザのデータセットがスリーナインの可用性を有することを確実にするためにユーザに提供されてもよく、これは、データセットが99.9%時間利用可能であることを意味する。しかしながら、第2の高可用性ストレージサービスは、ユーザのデータセットがファイブナインの可用性を有することを確実にするためにユーザに提供されてもよく、これは、データセットが99.999%時間利用可能であることを意味する。他のレベルの可用性を確実にする他の高可用性ストレージサービスが提供されてもよい。同様に、高可用性ストレージサービスはまた、データセット以外のエンティティのための種々のレベルのアップタイムを確実にするような方法で配信されてもよい。例えば、特定の高可用性ストレージサービスは、1つ以上の仮想マシン、1つ以上のコンテナ、1つ以上のデータアクセスエンドポイント、又は何らかの他のエンティティが特定の時間量で利用可能であることを確実にしてもよい。
【0200】
特定の高可用性ストレージサービスが、ユーザのデータセットがファイブナインの可用性を有すること、すなわちデータセットが99.999%時間利用可能であることを確実にするように設計される例を考える。かかる例では、このアップタイム保証を提供するために、かかる高可用性ストレージサービスに関連付けられた1つ以上のストレージサービスポリシーが適用及び施行され得る。例えば、データセットが所定の数のストレージシステムにわたってミラーリングされることを必要とするストレージサービスポリシーが適用されてもよく、データセットがクラウド環境内の所定の数のアベイラビリティゾーンにわたってミラーリングされることを必要とするストレージサービスポリシーが適用されてもよく、データセットが特定の方法で複製される(例えば、データセットの複数の最新のコピーが存在するように同期して複製される)ことを必要とするストレージサービスポリシーが適用されてもよい、などである。
【0201】
読者は、多くの他の形態の高可用性ストレージサービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。例えば、かかる高可用性ストレージサービスは、ストレージインフラストラクチャの故障(例えば、ストレージシステム自体の故障)から保護するために、データセットの特定の数のコピーが存在することを保証するストレージサービスポリシーに関連付けられ得るだけでなく、高可用性ストレージサービスはまた、データセットが他の理由で利用不可能になることを妨げるように設計されたストレージサービスポリシーに関連付けられてもよい。例えば、高可用性ストレージサービスは、データセットに関連付けられたアップタイム要件を満たす可用性が、データセットを含むストレージリソースにアクセスするためのデータ通信パスの欠如によって構成されないように、ネットワーキングパスにおける特定のレベルの冗長性を必要とする1つ以上のストレージサービスポリシーに関連付けられてもよい。本開示の他の実施形態では、追加の形態の高可用性ストレージサービスを提供し、実装することができる。
【0202】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上の災害復旧サービスを含み得る。かかる災害復旧サービスは、例えば、災害の場合に特定のパラメータに従ってユーザのデータセットが復旧され得ることを確実にするために、災害復旧サービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、第1の災害復旧サービスをユーザに提供して、データセットを記憶するストレージシステムが故障した場合、又はデータセットを利用できなくする何らかの他の形態の災害が発生した場合に、第1のRPO及び第1の目標復旧時点(recovery time objective、「RTO」)に従ってユーザのデータセットを確実に復旧できるようにしてもよい。しかし、データセットを記憶するストレージシステムが故障した場合、又はデータセットを利用できなくする何らかの他の形態の災害が発生した場合に、第2のRPO及び第2のRTOに従ってユーザのデータセットを確実に復旧できるようにするために、第2の災害復旧サービスをユーザに提供することができる。RPO及びRTOの範囲外の他のレベルの復旧可能性を確実にする他の災害復旧サービスが提供されてもよい。同様に、災害復旧サービスは、データセット以外のエンティティに対して種々のレベルの復旧可能性を確実にするような方法で配信されてもよい。例えば、特定の災害復旧サービスは、1つ以上の仮想マシン、1つ以上のコンテナ、1つ以上のデータアクセスエンドポイント、又は何らかの他のエンティティが、ある時間量で、又は何らかの他のメトリックに従って復旧され得ることを確実にしてもよい。この例では、災害復旧サービスをユーザに提示することができ、1つ以上の選択された災害復旧サービスの選択を受け取ることができ、選択された災害復旧サービスを、ユーザに関連付けられたデータセット(又は他のエンティティ)に適用することができる。
【0203】
特定の災害復旧サービスが、ユーザのデータセットがゼロのRPO及びRTOを有することを確実にするように設計される例を考える。これは、データセットを記憶する特定のストレージシステムが故障するか、又は何らかの他の形態の災害が発生した場合に、データの損失なしにデータセットが直ちに利用可能でなければならないことを意味する。かかる例では、これらのRPO/RTO保証を配信するために、かかる災害復旧サービスに関連付けられた1つ以上のストレージサービスポリシーが適用及び施行され得る。例えば、データセットが所定の数のストレージシステムにわたって同期的に複製されることを要求するストレージサービスポリシーが適用されてもよく、これは、データセットのコピーを含むストレージシステムの全てが要求に従ってデータセットを修正したときにのみ、データセットを修正する要求が完了したものとして肯定応答され得ることを意味する。別の言い方をすれば、修正動作(例えば、書き込み)は、ストレージシステム上に存在するデータセットの全てのコピーに適用されるか、又はストレージシステム上に存在するデータセットのコピーのいずれにも適用されず、その結果、1つのストレージシステムの故障は、ユーザがデータセットの同じ最新のコピーにアクセスすることを妨げない。
【0204】
読者は、多くの他の形態の災害復旧サービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。例えば、かかる災害復旧サービスは、災害が特定のRPO又はRTO要件に従って復旧され得ることを保証するだけでないストレージサービスポリシーに関連付けることができ、災害復旧サービスはまた、データセット(又は他のエンティティ)が所定の位置又はシステムに復旧され得ることを確実にするように設計されたストレージサービスポリシーに関連付けられてもよく、災害復旧サービスはまた、データセット(又は他のエンティティ)が所定の最大コスト以下で復旧され得ることを確実にするように設計されたストレージサービスポリシーに関連付けられてもよく、災害復旧サービスはまた、災害の検出に応答して特定のアクションが実行される(例えば、故障したシステムのクローンをスピンアップする)ことを確実にするように設計されたストレージサービスポリシーに関連付けられてもよい、などである。本開示の他の実施形態では、追加の形態の災害復旧サービスを提供し、実装することができる。
【0205】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上のデータアーカイブサービス(データオフローディングサービスを含む)を含み得る。かかるデータアーカイブサービスは、例えば、データアーカイブサービスのコンシューマ(すなわち、ユーザ)に提供され、ユーザのデータセットが、選好、パラメータなどの特定のセットに従ってなど、特定の方法でアーカイブされることを確実にし得るサービスとして具現化されてもよい。例えば、データが所定の期間内にアクセスされなかった場合、データが特定の期間にわたって無効であった場合、データセットが特定のサイズに達した後、データセットを記憶するストレージシステムが所定の利用レベルに達した場合などに、ユーザのデータセットがアーカイブされることを確実にするために、1つ以上のデータアーカイブサービスがユーザに提供されてもよい。
【0206】
無効化された(例えば、その部分が更新された部分で置き換えられた、その部分が削除された)ユーザのデータセットの部分が、データが無効化されてから24時間以内にアーカイブされることを確実にするように、特定のデータアーカイブサービスが設計される例を考える。この特定のデータアーカイブサービスを提供するために、データアーカイブサービスは、(例えば、GUIを介して)ユーザに提示され、ユーザによって選択され得る。特定のデータアーカイブサービスの選択を受信したことに応答して、1つ以上のストレージサービスポリシーが、特定のデータアーカイブサービスを実行するために、ユーザに関連付けられたデータセットに適用され得る。例えば、データを無効化させる任意の動作(例えば、上書き、削除)がカタログ化されること、及び12時間ごとにプロセスがカタログ化された動作を検査し、無効化されたデータをアーカイブに移行することを要求するストレージサービスポリシーが適用されてもよい。同様に、ストレージサービスポリシーは、適切な場合、ガベージコレクションなどのプロセスがまだアーカイブされていないデータを削除することを妨げるために、かかるプロセスに制限を課すことができる。読者は、この例では、データをアーカイブするための要件が1つ以上の規制によって作成され得るため、データアーカイブサービスが、1つ以上のデータコンプライアンスサービスと協調して動作し得ることを理解するであろう。例えば、特定のデータが所定の期間保持されることを要求する特定のデータコンプライアンスサービスを選択するユーザは、要求されたレベルのデータアーカイブ及び保持を提供することができる特定のデータアーカイブサービスを自動的にトリガしてもよい。同様に、一部のデータアーカイブサービスは、一部のデータコンプライアンスサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0207】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得るストレージサービスの別の例は、1つ以上のサービス品質(quality-of-service、「QoS」)ストレージサービスを含み得る。かかるQoSストレージサービスは、例えば、ユーザのデータセットが所定の性能メトリックに従ってアクセスされ得ることを確実にするために、データコンプライアンスサービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、特定のQoSストレージサービスは、ユーザのデータセットに向けられた読み出しが特定の時間内にサービスされ得ること、ユーザのデータセットに向けられた書き込みが特定の時間内にサービスされ得ること、ユーザがユーザのデータセットに向けられた所定の数のIOPSを保証され得ることなどを保証してもよい。
【0208】
特定のQoSストレージサービスが、読み出しレイテンシ及び書き込みレイテンシが所定の時間量よりも低くなることが保証されるような方法でユーザのデータセットにアクセスすることができることを確実にするように設計される例を考える。この特定のQoSストレージサービスを提供するために、QoSストレージサービスは、(例えば、GUIを介して)ユーザに提示され、ユーザによって選択され得る。特定のQoSストレージサービスの選択を受信したことに応答して、1つ以上のストレージサービスポリシーが、特定のQoSストレージサービスを実行するために、ユーザに関連付けられたデータセットに適用され得る。例えば、必要な読み出しレイテンシ及び書き込みレイテンシを提供するために使用することができるストレージ内にデータセットを保持することを要求するストレージサービスポリシーを適用してもよい。例えば、特定のQoSストレージサービスが比較的低い読み出しレイテンシ及び書き込みレイテンシを要求した場合、この特定のQoSストレージサービスに関連付けられたストレージサービスポリシーは、ユーザのデータセットが、そのデータセットを対象とするI/O動作を発行する任意のホストに比較的近接して位置する比較的高性能のストレージに記憶されることを要求してもよい。
【0209】
読者は、多くの他の形態のQoSストレージサービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。実際、QoSストレージサービスは、1つ以上の他のストレージサービスと協調して動作することができる。例えば、QoSストレージサービスは、特定の高可用性ストレージサービスのアプリケーションを通じて実装され得る特定の可用性要件に関連付けられ得るため、特定のQoSストレージサービスは、特定の高可用性ストレージサービスと協調して動作してもよい。同様に、QoSストレージサービスは、データセットに向けられたI/O動作のソースに比較的近いストレージにデータセットを(特定のデータ複製サービスを介して)複製することによってのみ達成され得る特定の性能保証に関連付けられ得るため、特定のQoSストレージサービスは、特定のデータ複製サービスと協調して動作することができる。同様に、一部のQoSストレージサービスは、他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0210】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上のデータ保護サービスを含み得る。かかるデータ保護サービスは、例えば、ユーザのデータセットが特定の方法で保護され、広められていることを確実にするために、データ保護サービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、1つ以上のデータ保護サービスをユーザに提供して、個人データをどのように使用し、又は広めることができるかを制限するような方法でユーザのデータセットが管理されることを確実にしてもよい。
【0211】
ユーザのデータセットが、ユーザに関連付けられた特定の組織の外部に広められないことを確実にするように、特定のデータ保護サービスが設計される例を考える。この特定のデータ保護サービスを提供するために、データ保護サービスは、(例えば、GUIを介して)ユーザに提示され、ユーザによって選択され得る。特定のデータ保護サービスの選択を受信したことに応答して、1つ以上のストレージサービスポリシーが、特定のデータ保護サービスを実行するために、ユーザに関連付けられたデータセットに適用され得る。例えば、Amazon AWS(商標)などのパブリッククラウドにおいて、データセットが複製されず、バックアップされず、又は他の方法で記憶されないことを要求するストレージサービスポリシーが適用されてもよい。同様に、データセットにアクセスするために、例えば、要求者がユーザに関連付けられた特定の組織の認可されたメンバーであることを検証するために使用することができる認証情報などの特定の認証情報が提供されることを必要とするストレージサービスポリシーが適用されてもよい。
【0212】
読者は、多くの他の形態のデータ保護サービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。実際、データ保護サービスは、1つ以上の他のストレージサービスと協調して動作することができる。例えば、特定のデータ保護サービスは、データへのアクセス又はデータの共有を制限するための要件が1つ以上の規制によって作成され得るため、1つ以上のデータコンプライアンスサービスと協調して動作してもよい。例えば、特定のデータを共有することができないことを要求する特定のデータコンプライアンスサービスを選択するユーザは、要求されるレベルのデータプライバシーを配信することができる特定のデータ保護サービスを自動的にトリガしてもよい。同様に、一部のデータ保護サービスは、一部の他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0213】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上の仮想化管理サービス(コンテナオーケストレーションを含む)を含み得る。かかる仮想化管理サービスは、例えば、ユーザの仮想化されたリソースが所定のポリシーに従って管理されることを確実にするために、仮想化管理サービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、1つ以上の仮想化管理サービスをユーザに提供して、ユーザに関連付けられた1つ以上の仮想マシン又はコンテナによってデータセットがアクセス可能であるような方法でユーザのデータセットを提示し得ることを確実にすることができ、これは、基礎的データセットが、仮想マシン又はコンテナに通常は利用可能でない場合があるストレージ内に存在する場合であっても行われる。例えば、仮想管理サービスは、仮想マシン、コンテナ、又は何らかの他の形態の仮想実行環境に利用可能にされる仮想ボリュームの一部としてデータセットを提示するように構成されてもよい。加えて、1つ以上の仮想化管理サービスは、ユーザの仮想化された実行環境がバックアップされ、故障の場合に復元され得ることを確実にするために、ユーザに提供され得る。例えば、仮想管理サービスは、仮想マシンのイメージを復元してもよく、仮想マシンが故障した場合に仮想マシンをその以前の状態に復元することができるように、仮想マシンに関連付けられた状態情報をキャプチャしてもよい。他の実施形態では、仮想化管理サービスを使用して、ユーザに関連付けられた仮想化実行環境を管理し、かかる仮想化実行環境にストレージリソースを提供することができる。
【0214】
特定の仮想化管理サービスが、別様でコンテナ自体の寿命を超えてデータを保持することができないコンテナ化されたアプリケーションに永続的なストレージを提供するように設計され、特定のコンテナに関連付けられたデータが、コンテナが破壊された後24時間保持される例を考える。この特定の仮想管理サービスを提供するために、ユーザに関連付けられたデータセット又は仮想化環境に1つ以上のストレージサービスポリシーを適用して、特定の仮想管理サービスを実行することができる。例えば、コンテナによってアクセスされ得る仮想ボリュームを作成及び構成するストレージサービスポリシーが適用されてもよく、仮想ボリュームは、物理ストレージシステム上の物理ストレージによってバックアップされる。かかる例では、コンテナが破壊されると、ストレージサービスポリシーは、ガベージコレクションプロセス又は何らかの他のプロセスが、少なくとも24時間仮想ボリュームをバックアップするために使用された物理ストレージシステム上の物理ストレージのコンテンツを削除することを妨げる規則も含み得る。
【0215】
読者は、多くの他の形態の仮想化管理サービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。実際、仮想化管理サービスは、1つ以上の他のストレージサービスと協調して動作することができる。例えば、仮想化管理サービスを介して永続的ストレージへのアクセスが与えられる仮想化環境(例えば、仮想マシン、コンテナ)はまた、特定のQoSストレージサービスのエンフォースメントを通して満たすことができる性能要求を有し得るため、特定の仮想化管理サービスは、1つ以上のQoSストレージサービスと協調して動作してもよい。例えば、特定のエンティティが特定の性能要件を満たすことができるストレージリソースへのアクセスを受信することを必要とする特定のQoSストレージサービスを選択するユーザは、エンティティが仮想化されたエンティティである場合、特定の仮想化管理サービスをトリガしてもよい。同様に、一部の仮想化管理サービスは、一部の他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0216】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上のフリート管理サービスを含み得る。かかるフリート管理サービスは、例えば、フリート管理サービスのコンシューマ(すなわち、ユーザ)に提供されて、ユーザのストレージリソース(物理的、クラウドベース、及びそれらの組み合わせ)、更には関連するリソースが特定の方法で管理されることを確実にし得るサービスとして具現化することができる。例えば、1つ以上のフリート管理サービスをユーザに提供して、ユーザのデータセットが、データセットに関連付けられた性能ニーズに最も適するように、ストレージシステムのフリートにわたって分散されることを確実してもよい。例えば、データセットのプロダクションバージョンは、データセットが比較的低レイテンシの動作(例えば、読み出し、書き込み)を使用してアクセスされ得ることを確実にするために、比較的高性能のストレージシステム上に配置されてもよく、比較的高レイテンシの動作(例えば、読み出し、書き込み)を使用してデータセットにアクセスすることは、試験/開発環境において許容され得るため、データセットの試験/開発バージョンは、比較的低性能のストレージシステム上に配置されてもよい。他の例では、1つ以上のフリート管理サービスをユーザに提供して、一部のストレージシステムが過負荷にならず、他のストレージシステムが十分に活用されないという負荷分散目標を達成するような方法でユーザのデータセットが分散されることを確実にし、高レベルのデータ削減を達成するような方法でデータセットが分散されることを確実にし(例えば、データセットのランダムな分散で生じるより良好なデータ重複排除を達成することを期待して類似のデータセットを一緒にグループ化する)、データコンプライアンス規制に準拠するような方法でデータセットが分散されることを確実にすることなどができる。
【0217】
特定のフリート管理サービスが、データセットに最も頻繁にアクセスするホストに物理的に最も近いストレージシステム上にデータセットを配置するような方法で、ユーザのデータセットが分散されることを確実にするように設計される例を考える。この特定のフリート管理サービスを提供するために、特定のデータセットに最も頻繁にアクセスするホストの位置がデータセットを配置するときに考慮されることを要求する1つ以上のストレージサービスポリシーが適用され得る。更に、適用され得る1つ以上のストレージサービスポリシーは、異なるホストが特定のデータセットに最も頻繁にアクセスするホストになる場合、特定のデータセットが、異なるホストに最も物理的に近接するストレージシステムに複製されるべきであることを更に要求することができる。
【0218】
読者は、多くの他の形態のフリート管理サービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。実際、フリート管理サービスは、1つ以上の他のストレージサービスと協調して動作することができる。例えば、特定のフリート管理サービスは、かかる方法でデータセットを移動させる能力が、1つ以上のデータコンプライアンスサービスによって施行されている規制要件によって制限され得るため、1つ以上のデータコンプライアンスサービスと協調して動作してもよい。例えば、ユーザが、データセットを移動させる能力を制限する特定のデータコンプライアンスサービスを選択すると、特定のフリート管理サービスは、ソースストレージシステム上に存在するデータセットが何らかのフリート管理目的を追求してどこに移動されるべきかをフリート管理システムが評価しているときに、選択されたデータコンプライアンスサービスによって施行されるポリシーに違反することなくデータセットを移動させ得るターゲットストレージシステムのみを考慮することができる。同様に、一部のフリート管理サービスは、一部の他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0219】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上のコスト最適化サービスを含み得る。かかるコスト最適化サービスは、例えば、ユーザのデータセット、ストレージシステム、及び他のリソースが、ユーザに対するコストを最小化するような方法で管理されることを確実にするために、コスト最適化サービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、1つ以上のコスト最適化サービスがユーザに提供されて、ソースストレージシステムから複数の利用可能なターゲットストレージシステムのいずれかにデータを複製することに関連付けられたコスト(例えば、ドル換算)を最小化するように、ユーザのデータセットが複製されていることを確実にし、ユーザのデータセットが、データセットを記憶することに関連付けられたコストを最小化するように管理されていることを確実し、ユーザのストレージシステム又は他のリソースが、ストレージシステム又は他のリソースの動作に関連する電力消費コストを削減するような方法で、又は他の方法で管理されていることを確実にしてもよく、これには、ユーザのデータセット、ストレージシステム、又は他のリソースが、データセット、ストレージシステム、又は他のリソースに関連付けられた複数の費用の累積コストを最小化又は低減するように管理されていることを確実にすることを含む。加えて、1つ以上のコスト最適化サービスは、例えば、特定のユーザに関連するサービス品質保証に違反することに関連する金銭的ペナルティなどの契約上のコストを更に考慮に入れることができる。実際には、アップグレードを実施すること又は何らかの他のアクションを実施することに関連するコストも、ストレージサービス及びデータソリューションを顧客に提供することに関連し得る多くの他の形態のコストとともに考慮に入れることができる。
【0220】
データセットがローカルのオンプレミスストレージシステム内に記憶され、また少なくとも1つの他のストレージリソースにミラーリングされるという別個の要件をユーザが有するという事実にもかかわらず、データセットを記憶するためのコストが最小化されるようにユーザのデータセットが管理されることを確実にするように、特定のコスト最適化サービスが設計される例を考える。例えば、データセットは、クラウドにミラーリングされるか、又はオフサイトのストレージシステムにミラーリングされ得る。この特定のコスト最適化サービスを提供するために、可能な複製ターゲットごとに、データセットを複製ターゲットに伝送することに関連するコスト、及びデータセットを複製ターゲット上に記憶することに関連するコストを考慮に入れなければならないことを要求するストレージサービスポリシーを適用することができる。かかる例では、かかるストレージサービスポリシーを施行することは、データセットが最低の予想コストで複製ターゲットにミラーリングされることをもたらし得る。
【0221】
読者は、多くの他の形態のコスト最適化サービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。実際、コスト最適化サービスは、1つ以上の他のストレージサービスと協調して動作することができる。例えば、特定のストレージリソース内にデータセットを記憶する能力は、QoSストレージサービスに関連付けられた性能要件によって制限され得るため、特定のコスト最適化サービスは、1つ以上のQoSストレージサービスと協調して動作することができる。例えば、データセットが特定のレイテンシ最大内でアクセス可能でなければならないという要件を作成する特定のQoSストレージサービスを選択するユーザは、一部のストレージリソース(又はストレージリソースとストレージリソースにアクセスするために必要とされるネットワーキングリソースなどの他のリソースとの組み合わせ)がQoSストレージサービスによって要求される性能のレベルを提供することが可能ではない場合があるため、全ての可能なストレージリソースをデータセットが記憶され得る可能な位置と見なすようにコスト最適化サービスの能力を制限してもよい。したがって、特定のコスト最適化サービスは、データセットがその中に存在し、データセットのために選択されたQoSストレージサービスの要件に従って依然としてアクセスされ得るターゲットストレージシステムのみを考慮に入れることができる。同様に、一部のコスト最適化サービスは、一部の他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0222】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上のワークロード配置サービスを含み得る。かかるワークロード配置サービスは、例えば、異なるストレージリソースを含むシステム内のどこにデータが記憶されるかに関する種々の要件に準拠するようにユーザのデータセットが管理されることを確実にするために、ワークロード配置サービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、1つ以上のワークロード配置サービスをユーザに提供して、異なるストレージリソースにわたってデータへのアクセスを負荷分散するような方法でユーザのデータセットが管理されることを確実にし、選択されたデータセットに対する特定の性能メトリック(例えば、読み出しレイテンシ、書き込みレイテンシ、データ削減)を最適化するような方法でユーザのデータセットが管理されることを確実にし、ミッションクリティカルなデータセットが利用できないか、又は比較的長いアクセス時間を受ける可能性が低いような方法でユーザのデータセットが管理されることを確実にすることなどができる。
【0223】
特定のワークロード配置サービスが、特定のユーザに関連付けられた3つのオンプレミスストレージシステムにわたって所定の負荷分散目標を達成するように設計された例を考える。この特定のワークロード配置サービスを提供するために、3つのストレージシステムを定期的に監視して、各ストレージシステムが比較的類似した数のIOPSをサービスし、また比較的類似した量のデータを記憶していることを確実にすることを要求するストレージサービスポリシーを適用することができる。かかる例では、第1のストレージシステムが比較的大量のデータを記憶しているが、第3のストレージシステムについて比較的少数のIOPSをサービスしている場合、特定のワークロード配置サービスに関連付けられたストレージサービスポリシーを施行することは、第1のストレージシステム上の比較的大きい(例えば、GBなどの)が頻繁にアクセスされないデータセットを第3のストレージシステムに移動させること、並びに第3のストレージシステム上に記憶された比較的小さい(GBなどの)が頻繁にアクセスされるデータセットを第1のストレージシステムに移動させることをもたらし得、これらは全て、各ストレージシステムが比較的類似した数のIOPSをサービスし、また比較的類似した量のデータを記憶していることを確実にすることを追及している。
【0224】
読者は、多くの他の形態のワークロード配置サービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。実際、ワークロード配置サービスは、1つ以上の他のストレージサービスと協調して動作することができる。例えば、特定のストレージリソース内にデータセットを記憶する能力は、QoSストレージサービスに関連付けられた性能要件によって制限され得るため、特定のワークロード配置サービスは、1つ以上のQoSストレージサービスと協調して動作することができる。例えば、データセットが特定のレイテンシ最大内でアクセス可能でなければならないという要件を作成する特定のQoSストレージサービスを選択するユーザは、一部のストレージリソース(又はストレージリソースと、ストレージリソースにアクセスするために必要とされるネットワーキングリソースなどの他のリソースとの組み合わせ)がQoSストレージサービスによって必要とされる性能レベルを提供することができない場合があるため、ストレージリソースにわたって負荷分散するためのワークロード配置サービスの能力を制限してもよい。したがって、特定のワークロード配置サービスは、データセットがその中に存在し、データセットのために選択されたQoSストレージサービスの要件に従って依然としてアクセスされ得るターゲットストレージシステムのみを考慮に入れることができる。同様に、一部のワークロード配置サービスは、一部の他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0225】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上の動的スケーリングサービスを含み得る。かかる動的スケーリングサービスは、例えば、動的スケーリングサービスのコンシューマ(すなわち、ユーザ)に提供されて、必要に応じてユーザのデータセットに関連付けられたストレージリソースを確実にスケールアップ及びスケールダウンすることができるサービスとして具現化することができる。例えば、1つ以上の動的スケーリングサービスをユーザに提供して、ユーザのデータセット及びストレージリソースが、スケーリング手段によって達成することができる種々の目的を満たすような方法で管理されることを確実にしてもよい。
【0226】
特定の動的スケーリングサービスが、ユーザのミッションクリティカルなデータセットが、ストレージ容量又はIOPS容量に関して85%を超えて利用される任意のストレージリソース上にデータセットが存在しないような方法で管理されることを確実にするように設計される例を考える。この特定の動的スケーリングサービスを提供するために、ストレージサービスポリシーが適用され、ストレージサービスポリシーは、1)この利用閾値に達すると、ストレージリソースが(可能であれば)スケールアップされること、又は2)この閾値に達すると、ミッションクリティカルなデータセットを記憶するストレージリソースをストレージ容量及びIOPS容量に関して75%未満にするために、ワークロードが再配置されることを要求することができる。例えば、データセットが上述のようにクラウドベースのストレージシステムに存在する場合、クラウドベースのストレージシステムは、追加の仮想ドライブ(すなわち、ローカルストレージを有するクラウドコンピューティングインスタンス)を追加することによってスケーリングされてもよく、クラウドベースのストレージシステムは、ストレージコントローラアプリケーションを実行するためにより高性能のクラウドコンピューティングインスタンスを使用することによってスケーリングされてもよい、などである。代替的に、データセットが、直ちにスケーリングすることができない物理ストレージシステム上に存在する場合、一部のデータセットは、利用レベルが許容可能になるまで、物理ストレージシステムから移行させることができる。
【0227】
読者は、多くの他の形態の動的スケーリングサービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。実際に、動的スケーリングサービスは、1つ以上の他のストレージサービスと協調して動作することができる。例えば、QoSストレージサービスによって要求されるような特定のレベルの性能を提供する能力は、適切にスケーリングされたストレージリソース(又は他のリソース)を有することに依存し得るため、特定の動的スケーリングサービスは、1つ以上のQoSストレージサービスと協調して動作することができる。例えば、データセットが特定のレイテンシ最大内でアクセス可能でなければならないという要件を作成する特定のQoSストレージサービスを選択するユーザは、レイテンシ目標が満たされ得るようにリソースをスケーリングするために必要とされる1つ以上の動的スケーリングサービスを直ちにトリガしてもよい。同様に、一部の動的スケーリングサービスは、一部の他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0228】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上の性能最適化サービスを含み得る。かかる性能最適化サービスは、例えば、ユーザのデータセット、ストレージリソース、及び他のリソースが、種々の可能なメトリクスによって測定される性能を最大化するように管理されることを確実にするために、性能最適化サービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、サービスされ得るIOPSの集合量に関してユーザのストレージリソースが最大化されることを確実にするために、ウェアレベリングポリシーの適用を通じて異なるストレージリソースの寿命が最大化されることを確実にするために、総電力消費を最小化するようにユーザのストレージリソースが管理されることを確実にすることによって、リソースの動作可能時間を確実にするようにユーザのストレージリソースが管理されることを確実にすることによって、又は他の方法で、1つ以上の性能最適化サービスがユーザに提供され得る。同様に、ユーザのデータセットが種々の性能目標に従ってアクセス可能であることを確実にするために、1つ以上の性能最適化サービスがユーザに提供されてもよい。例えば、ユーザのデータセットは、特定のデータセットのIOPSに関して最良の性能を提供するように管理されてもよく、ユーザのデータセットは、特定のデータセットのデータ削減に関して最良の性能を提供するように管理されてもよく、ユーザのデータセットは、特定のデータセットの可用性に関して最良の性能を提供するように管理されてもよく、又は何らかの他の方法で管理されてもよい。
【0229】
特定の性能最適化サービスが、ストレージリソース上に集合的に記憶され得るデータの量を集合的に最大化するような方法で、ユーザのストレージリソースが管理されることを確実にするように設計される例を考える。例えば、最良のデータ圧縮結果を達成する可能性が高い圧縮方法を実装するストレージリソース上に特定のタイプのデータが記憶されることを要求するストレージサービスポリシーが適用されてもよい。例えば、1つのストレージシステムが、テキストデータを圧縮する際により効果的である圧縮アルゴリズムを利用し、第2のストレージシステムが、ビデオデータを圧縮する際により効果的である圧縮アルゴリズムを利用する場合、ストレージサービスポリシーを実装することは、ビデオデータが第2のストレージシステム上に記憶され、テキストデータが第1のストレージシステム上に記憶されることをもたらし得る。同様に、達成され得るデータ重複排除のレベルを改善するために、類似のホストアプリケーションからのデータが同じストレージリソースに記憶されることを要求するストレージサービスポリシーが適用されてもよい。例えば、データベースアプリケーションからのデータが、他のデータベースアプリケーションからのデータに対して重複排除されるとき、より効果的に重複排除され得、画像処理アプリケーションからのデータが、他の画像処理アプリケーションからのデータに対して重複排除されるとき、より効果的に重複排除され得る場合、ストレージサービスポリシーを実装することは、同じストレージシステム上に各タイプのアプリケーションからのデータを記憶することによって達成されるであろうよりも良好な重複排除率を追求して、データベースアプリケーションからの全てのデータが第1のストレージシステム上に記憶され、画像処理アプリケーションからの全てのデータが第2のストレージシステム上に記憶されることをもたらし得る。バックエンドストレージシステムにおいてより良好なデータ削減率を達成することによって、ユーザの観点からより多くのデータをストレージリソースに記憶することができる。
【0230】
例えば、上述の圧縮の例を使用すると、第1のストレージシステムが1TBの非圧縮サイズから300GBの圧縮サイズに一部のデータを圧縮することができるのに対して、第2のストレージシステムが同じ1TBのデータを600GBの圧縮サイズに圧縮することしかできない場合(ストレージシステムが異なる圧縮アルゴリズムを使用するため)、第2のストレージシステムにデータを記憶することは、物理容量が固定されたストレージシステムのバックエンドプールから追加の300GBのストレージを消費することを必要とするため、ユーザの観点から利用可能なストレージの量は異なるように見える(一方、それらの論理容量は、データのインテリジェントな配置を通じて改善することができる)。
【0231】
読者は、多くの他の形態の性能最適化サービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。実際、性能最適化サービスは、1つ以上の他のストレージサービスと協調して動作することができる。例えば、特定の性能最適化サービスは、QoSストレージサービスによって必要とされる特定のレベルの性能を提供する能力が、特定のストレージリソース上にデータセットを配置する能力を制限し得るため、1つ以上のQoSストレージサービスと協調して動作することができる。例えば、ユーザが、データセットが特定のレイテンシ最大内でアクセス可能でなければならないという要件を作成する特定のQoSストレージサービスを選択するが、論理ストレージ容量を最大化するように設計された特定の性能最適化サービスも選択する場合、他のストレージリソースが(別のサービスの要件を満たすことはできないが)1つのサービスに関してより良好な結果を提供することができる場合であっても、両方の要件を満たすことができるストレージリソースのみが、データセットを受信するための候補であり得る。例えば、比較的高いI/Oレイテンシしか提供することができない特定のストレージシステムが、そのデータセットに対して非常に効率的な圧縮アルゴリズムをサポートすることによってデータセットの優れたデータ圧縮を実施することができる場合であっても、(かかる方法でデータセットを配置すると、QoSポリシーに違反することになるために)その特定のストレージシステム上にデータセットを配置することができない場合がある。したがって、一部の性能最適化サービスは、一部の他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0232】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上のネットワーク接続性サービスを含み得る。かかるネットワーク接続性サービスは、例えば、ユーザのデータセット、ストレージリソース、ネットワーキングリソース、及び他のリソースが、種々の接続性要件を順守するように管理されることを確実にするために、ネットワーク接続性サービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、1つ以上のネットワーク接続性サービスをユーザに提供して、ユーザのデータセットが、任意の共有ハードウェア又はソフトウェア構成要素に依存しない所定の数のネットワーキングパスを介して到達可能であることを確実にしてもよい。同様に、1つ以上のネットワーク接続性サービスは、ユーザのデータセットが、データセットにアクセスするための最適なデータ通信パスをホストアプリケーションに通知するような方法で管理されることを確実にすることによって、ユーザのデータセットが、セキュアなデータ通信チャネルを介してのみ到達可能であるような方法で管理されることを確実にするために、ユーザのデータセットを記憶するストレージリソースが、特定の要件及び多くの他の要件を満たすデータ通信パスを経由して通信することができることを確実にするために、ユーザに提供されてもよい。
【0233】
特定のネットワーク接続性サービスが、ユーザのデータセットが、任意の共有ハードウェア又はソフトウェア構成要素に依存しない所定の数のネットワーキングパスを介して到達可能であることを確実にするように設計される例を考える。例えば、別個のデータ通信ネットワークを介してデータセットにアクセスするアプリケーションホスト又は他のデバイスから到達可能であり得る少なくとも2つの別個のストレージリソース(例えば、2つの別個のストレージシステム)上にデータセットが存在することを要求するストレージサービスポリシーが適用されてもよい。そのために、ストレージサービスポリシーを適用することは、データセットを1つのストレージリソースから別のストレージリソースに複製させることができ、ストレージサービスポリシーを適用することは、ミラーリングメカニズムをアクティブ化して、データセットが両方のストレージリソース上に存在することを確実にすることができ、又は何らかの他のメカニズムを使用してポリシーを施行することができる。
【0234】
読者は、多くの他の形態のネットワーク接続性サービスが、本開示の実施形態によって提供及び実装され得ることを理解するであろう。実際、ネットワーク接続性サービスは、1つ以上の他のストレージサービスと協調して動作することができる。例えば、特定のネットワーク接続性サービスは、1つ以上の複製サービス、QoSサービス、データコンプライアンスサービス、及び他のサービスと協調して動作することができるが、これは、特定のネットワーク接続性サービスに準拠するようにデータセットを配置する能力は、複製サービスに従ってデータセットを複製する能力に基づいて、更にQoSサービスによって保証される性能要件を満たす能力に基づいて、また更に1つ以上のデータコンプライアンスサービスに準拠するためにデータセットを配置する能力に基づいて制限され得るためである。例えば、ネットワーク接続性サービスが、別個のデータ通信ネットワークを介してデータセットにアクセスするアプリケーションホスト又は他のデバイスから到達可能であり得る少なくとも2つの別個のストレージリソース(例えば、2つの別個のストレージシステム)上にデータセットが存在することを必要とした上述の例では、ストレージリソースの組み合わせは、他のサービスも提供され得る場合にのみ選択され得る。一部の実施形態では、選択されたサービスの全てを配信することができなかった2つのストレージリソースが利用可能でなかった場合、ユーザは、一部の選択されたサービスを除去するように促されることができ、ベストフィット方式を使用して、選択されたサービスを配信することができることに最も近くなった2つのストレージシステムを選択することができ、又は一部の他のアクションをとることができる。したがって、一部のネットワーク接続性サービスは、一部の他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0235】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上のデータ分析サービスを含み得る。かかるデータ分析サービスは、例えば、ユーザのデータセット、ストレージリソース、及び他のリソースにデータ分析能力を提供するために、データ分析サービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、ユーザのデータセットのコンテンツを分析する、ユーザのデータセットのコンテンツを浄化する、ユーザのデータセットを作成又は拡張するためにデータ収集動作を行うなどの1つ以上のデータ分析サービスが提供されてもよい。
【0236】
読者は、多くの他の形態のデータ分析サービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。実際、データ分析サービスは、1つ以上の他のストレージサービスと協調して動作することができる。例えば、特定のデータ分析サービスは、1つ以上のQoSストレージサービスと協調して動作してもよく、その結果、データ分析を実施する目的のためのデータセットへのアクセスは、QoSストレージサービスに記載された性能保証に違反することを回避するために、データのより従来的なアクセス(例えば、ユーザが開始した読み出し及び書き込み)よりも低い優先度を与えられてもよい。したがって、一部のデータ分析サービスは、一部の他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0237】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得るストレージサービスの別の例は、1つ以上のデータポータビリティサービスを含み得る。かかるデータポータビリティサービスは、例えば、ユーザがユーザのデータセットに対して種々のデータ移動、データ変換、又は同様のプロセスを実施することを可能にするために、データポータビリティサービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、1つ以上のデータポータビリティサービスをユーザに提供して、ユーザがそのデータセットを1つのストレージリソースから別のストレージリソースに移行することを可能にし、ユーザがそのデータセットを1つのフォーマット(例えば、ブロックデータ)から別のフォーマット(例えば、オブジェクトデータ)に変換することを可能にし、ユーザがデータを統合することを可能にし、ユーザがそのデータセットを1つのデータコントローラ(例えば、第1のクラウドサービスベンダ)から別のデータコントローラ(例えば、第2のクラウドサービスベンダ)に転送することを可能にし、ユーザがそのデータセットを第1の規制のセットに準拠することから第2の規制のセットに準拠することに変換することを可能にすることなどができる。
【0238】
特定のデータポータビリティサービスが、ユーザがそのデータセットを第1のデータコントローラ(例えば、第1のクラウドサービスベンダ)から第2のデータコントローラ(例えば、第2のクラウドサービスベンダ)に転送することを可能にするように設計される例を考える。この特定のデータポータビリティサービスを提供するために、データセットを第2のデータコントローラのインフラストラクチャと互換性があるように周期的に変換させるストレージサービスポリシーが適用され得る。読者は、多くの他の形態のデータポータビリティサービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。実際、データポータビリティサービスは、1つ以上の他のストレージサービスと協調して動作することができる。例えば、特定のデータポータビリティサービスは、1つ以上のデータコンプライアンスサービスと協調して動作してもよく、その結果、第1のデータコントローラから第2のデータコントローラへのデータセットの移行は、ユーザが1つ以上のデータコンプライアンスサービスに記載された規制コンプライアンスに違反しないように制限されてもよい。したがって、一部のデータポータビリティサービスは、一部の他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0239】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上のアップグレード管理サービスを含み得る。かかるアップグレード管理サービスは、例えば、データコンプライアンスサービスのコンシューマ(すなわち、ユーザ)に提供されて、種々の更新が利用可能になったときに、ユーザのデータセット、ストレージリソース、及び他のリソースがアップグレードされ得るか、又は最新に保たれ得ることを確実にし得るサービスとして具現化することができる。例えば、1つ以上のアップグレード管理サービスをユーザに提供して、ユーザのストレージリソースが特定の閾値(例えば、使用年数、利用率)の発生時にアップグレードされることを確実にし、システムソフトウェアがパッチとしてアップグレードされ、新しいリリースが利用可能になり、クラウド構成要素をアップグレードし、新しいクラウドサービス提供が利用可能になることを確実にし、ファイルシステムなどのストレージ関連リソースがアップグレード又は更新が利用可能になるときにアップグレードされることを確実にすることなどができる。
【0240】
新しいソフトウェアアップデートが利用可能になったときに、ユーザのストレージシステムに対する新しいソフトウェアアップデートが適用されることを保証するような方法で、ユーザのストレージリソースが管理されることを確実にするように、特定のアップグレード管理サービスが設計される例を考える。この特定のアップグレード管理サービスを提供するために、ストレージサービスポリシーを適用して、ストレージシステムが定期的に更新をチェックし、任意の更新をダウンロードし、更新が利用可能になってから24時間以内に更新をインストールすることを要求することができる。読者は、多くの他の形態のアップグレード管理サービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。実際、アップグレード管理サービスは、1つ以上の他のストレージサービスと協調して動作することができる。例えば、特定のアップグレード管理サービスは、1つ以上のQoSサービスと協調して動作することができ、その結果、アップグレードされるリソースによって、又は他の何らかのリソースによってQoS要件を維持することができるときにのみ、更新又はアップグレードが適用される。したがって、一部のアップグレード管理サービスは、一部の他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0241】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上のデータセキュリティサービスを含み得る。かかるデータセキュリティサービスは、例えば、ユーザのデータセット、ストレージリソース、及び他のリソースが種々のセキュリティ要件を順守するように管理されることを確実にするために、データセキュリティサービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、1つ以上のデータセキュリティサービスがユーザに提供されて、エンドツーエンド暗号化が達成されるように、ユーザのデータセットが、(ストレージリソース上に記憶されるときに)静止しているときと、移動中との両方で、特定の規格に従って暗号化されることを確実にしてもよい。実際には、1つ以上のデータセキュリティサービスは、データが休止状態でどのように保護されるかを記述する保証、データが移行中にどのように保護されるかを記述する保証、使用されるプライベート/公開鍵システムを記述する保証、データセット又はリソースへのアクセスがどのように制限されるかを記述する保証などを含み得る。
【0242】
特定のデータセキュリティサービスが、特定のストレージリソース上に記憶されるデータセットが、例えば、キーサーバなどのストレージリソース以外のリソース上に維持される鍵を使用して暗号化されることを保証するように設計される例を考える。この特定のデータセキュリティサービスを提供するために、ストレージリソースがキーサーバから鍵を要求し、データセット(又はその任意の暗号化されていない部分)を暗号化し、データセットが(例えば、書き込みを介して)修正されるたびに暗号化鍵を削除することを必要とするストレージサービスポリシーが適用され得る。同様に、読み出しをサービスするために、ストレージリソースは、キーサーバから鍵を要求し、データセットを解読し、暗号化鍵を削除する必要があり得る。読者は、多くの他の形態のデータセキュリティサービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。実際、データセキュリティサービスは、1つ以上の他のストレージサービスと協調して動作することができる。例えば、特定のデータセキュリティサービスは、1つ以上のQoSサービスと協調して動作することができ、その結果、種々のセキュリティ機能を実施するための要件が、高性能保証を行うことができる範囲を制限することがあるため、特定のデータセキュリティサービスが選択されたときに、特定のQoSサービスのみが利用可能になり得る。したがって、一部のデータセキュリティサービスは、一部の他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0243】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得るストレージサービスの別の例は、1つ以上の統合システム管理サービスを含み得る。かかる統合システム管理サービスは、例えば、ユーザのデータセット、ストレージリソース、及び統合システム内の他のリソースが一部のポリシーに準拠するように管理されることを確実にするために、統合システム管理サービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、AI/MLアプリケーションのために設計されたストレージリソース及び1つ以上のGPUサーバを含む統合インフラストラクチャが特定の方法で管理され得ることを確実にするために、1つ以上の統合システム管理サービスがユーザに提供されてもよい。同様に、ストレージリソース及びオンプレミスクラウドインフラストラクチャ(例えば、アマゾン仕寄場)を含む統合インフラストラクチャが特定の方法で管理され得ることを確実にするために、1つ以上の統合システム管理サービスがユーザに提供され得る。例えば、1つ以上の統合システム管理サービスは、ストレージリソースに向けられ、上述の統合インフラストラクチャ内のGPUサーバによって開始されたI/O動作が、統合インフラストラクチャの外部にあるデバイスによって開始されたI/O動作よりも優先されることを保証することができる。読者は、多くの他の形態の統合システム管理サービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。実際、統合システム管理サービスは、1つ以上の他のストレージサービスと協調して動作することができる。したがって、一部の統合システム管理サービスは、一部の他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0244】
ユーザに提示され、ユーザによって選択され、最終的にユーザと関連付けられたデータセットに適用され得る、ストレージサービスの別の例は、1つ以上のアプリケーション開発サービスを含み得る。かかるアプリケーション開発サービスは、例えば、アプリケーションの開発及びテストを容易にするため、並びにアプリケーション開発及びテストサイクルの任意の他の態様を実行するために、データコンプライアンスサービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。例えば、ユーザが開発目的のためにプロダクションデータセットのクローンを迅速に作成すること、難読化された個人識別情報を有するプロダクションデータセットのクローンを作成すること、テストのために追加の仮想マシン又はコンテナをスピンアップすること、テスト実行環境とかかる環境が利用するデータセットとの間で必要とされる接続性の全てを管理することなどを可能にするために、1つ以上のアプリケーション開発サービスがユーザに提供され得る。かかるアプリケーション開発サービスを提供するために、1つ以上のストレージサービスポリシーが、ユーザに関連付けられたデータセットに適用されて、特定のアプリケーション開発サービスを実行することができる。例えば、ユーザ要求時に、プロダクションデータセットのクローンを作成するストレージサービスポリシーが適用されてもよく、ここで、データセット内の個人識別可能情報はクローン内で難読化され、その後、開発及びテスト動作に利用可能なストレージリソース上にクローンを記憶する。
【0245】
読者は、多くの他の形態のアプリケーション開発サービスが、本開示の実施形態によって提供され、実装され得ることを理解するであろう。実際、アプリケーション開発サービスは、1つ以上の他のストレージサービスと協調して動作することができる。例えば、特定のアプリケーション開発サービスは、プロダクションデータセットのクローンが非プロダクション環境(例えば、開発及びテスト環境)にのみ送信され得るように、1つ以上の複製ポリシーと協調して動作することができる。したがって、一部のアプリケーション開発サービスは、一部の他のストレージサービスと互換性がない場合があり、その結果、ユーザは、2つの競合する、又は別様で互換性のないサービスを選択することを妨げられる場合がある。
【0246】
ユーザが複数のサービスを選択し得、選択されたサービス間で互換性が確立される必要があり得る例が上記で与えられたが、読者は、ユーザに提示され、ユーザによって選択され(かかる選択が1つ以上のエッジ管理サービス406又は同様のメカニズムによって受信される場合)、最終的にデータセット、ストレージリソース、又はユーザに関連付けられた何らかの他のリソースに適用され得るサービス(並びに個々のサービス)の多くの他の組み合わせが存在することを理解するであろう。読者は、上述の例示的なストレージサービス(及び他のサービス)の多くが、あるレベルの重複を含んでもよく、同様の、関連する、又は更には同一のストレージサービスポリシーに関連付けられてもよいことを更に理解するであろう。
【0247】
読者は、1つ以上のストレージサービスポリシーを特定のデータセットにアタッチするために種々のメカニズムが使用され得ることを更に理解するであろう。例えば、データセットが従う特定のストレージサービスポリシーを識別するメタデータをデータセットにアタッチしてもよい。代替的に、各データセットの識別子を、そのデータセットが従うストレージサービスポリシーと関連付ける集中リポジトリが維持されてもよい。同様に、種々のデバイスは、それらが処理するデータセットを記述する情報を維持することができる。例えば、ストレージシステムは、ストレージシステム内に記憶された各データセットが受けるストレージサービスポリシーを記述する情報を維持することができ、ネットワーキング機器は、ネットワーキング機器を通過する各データセットが受けるストレージサービスポリシーを記述する情報を維持することなどができる。代替的に、かかる情報は、他の場所で維持されてもよく、種々のデバイスにアクセス可能であってもよい。他の実施形態では、1つ以上のストレージサービスポリシーを特定のデータセットにアタッチするために、他のメカニズムが使用され得る。
【0248】
ストレージシステムのフリート376内のストレージシステム374a、374b、374c、374d、374nは、例えば、1つ以上のフリート管理モジュールによって集合的に管理されてもよい。フリート管理モジュールは、図3Eに描示されるシステム管理サービスモジュール384の一部であってもよく、又はそれとは別個であってもよい。フリート管理モジュールは、フリート内の各ストレージシステムの健全性を監視すること、フリート内の1つ以上のストレージシステム上で更新又はアップグレードを開始すること、負荷分散又は他の性能目的のためにワークロードを移行すること、及び多くの他のタスクなどのタスクを実施することができる。したがって、かつ多くの他の理由で、ストレージシステム374a、374b、374c、374d、374nは、ストレージシステム374a、374b、374c、374d、374n間でデータを交換するために、1つ以上のデータ通信リンクを介して互いに結合され得る。
【0249】
本明細書に記載のストレージシステムは、種々の形態のデータ複製をサポートすることができる。例えば、ストレージシステムのうちの2つ以上は、互いの間でデータセットを同期して複製してもよい。同期複製では、特定のデータセットの別個のコピーが複数のストレージシステムによって維持されてもよいが、データセットの全てのアクセス(例えば、読み出し)は、アクセスがどのストレージシステムに向けられたかに関わらず、一貫した結果をもたらすべきである。例えば、データセットを同期的に複製しているストレージシステムのいずれかに向けられた読み出しは、同一の結果を返さなければならない。したがって、データセットのバージョンに対する更新は、正確に同時に行われる必要はないが、データセットへの一貫したアクセスを確実にするために、予防措置が講じられなければならない。例えば、データセットに向けられた更新(例えば、書き込み)が第1のストレージシステムによって受信された場合、データセットを同期的に複製している全てのストレージシステムがデータセットのそれらのコピーに更新を適用した場合にのみ、更新は完了したものとして肯定応答され得る。かかる例では、同期複製は、I/O転送(例えば、第1のストレージシステムで受信された書き込みが第2のストレージシステムに転送される)、ストレージシステム間の通信(例えば、各ストレージシステムが更新を完了したことを示す)の使用を通して、又は他の方法で実行され得る。
【0250】
他の実施形態では、データセットは、チェックポイントの使用を通して複製され得る。チェックポイントベースの複製(「ほぼ同期した複製」とも称される)では、特定のチェックポイントの前のデータセットに対する全ての更新が完了した場合にのみ、データセットが特定のチェックポイントに更新されているように、データセットに対する更新のセット(例えば、データセットに向けられた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設定)などに基づいて分散されてもよいことを理解するであろう。
【0251】
他の実施形態では、スナップショットベースの複製(「非同期複製」とも称される)を通じてデータセットを複製することができる。スナップショットベースの複製では、データセットのスナップショットが、第1のストレージシステムなどの複製ソースから第2のストレージシステムなどの複製ターゲットに送信され得る。かかる一実施形態では、各スナップショットは、データセット全体又はデータセットのサブセット、例えば、最後のスナップショットが複製ソースから複製ターゲットに送信されてから変化したデータセットの部分のみを含み得る。読者は、スナップショットが、種々の要因(例えば、時間、動作の数、RPO設定)を考慮に入れるポリシーに基づいて、又は何らかの他の方法で、オンデマンドで送信され得ることを理解するであろう。
【0252】
上述のストレージシステムは、単独で又は組み合わせて、継続的データ保護ストアとして機能するように構成することができる。継続的データ保護ストアは、データセットへの更新を記録するストレージシステムの特徴であり、データセットの以前のコンテンツの一貫したイメージが低い時間粒度(しばしば、秒のオーダー、又は更に少ない)で、妥当な期間(しばしば、数時間又は数日)に遡ってわたってアクセスできるようにする。これらは、データセットのための非常に最近の一貫した時点へのアクセスを可能にし、また、例えばデータセットの一部が破損したり別様に失われたりするような、あるイベントの直前のデータセットの時点へのアクセスを、その出来事の直前の最大更新回数に近い回数を保持したまま可能にする。概念的には、それらは、非常に頻繁に行われ、長期間にわたって保持されるデータセットのスナップショットのシーケンスのようなものであるが、継続的データ保護ストアは、スナップショットとは全く異なって実装されることが多い。データ継続的データ保護ストアを実装するストレージシステムは、これらの時点にアクセスする手段、スナップショットとして又はクローンコピーとしてこれらの時点のうちの1つ以上にアクセスする手段、又はデータセットをこれらの記録された時点のうちの1つに戻す手段を更に提供することができる。
【0253】
経時的に、オーバーヘッドを低減するために、継続的データ保護ストア内に保持されたいくつかの時点は、時間内の他の近くの点とマージされ、本質的に、ストアからこれらの時点のうちの一部を削除することができる。これにより、更新を記憶するのに必要な容量を減らすことができる。これらの限られた数の時点を、より長い持続時間のスナップショットに変換することも可能であり得る。例えば、かかるストアは、現在から数時間遡った時点の低粒度シーケンスを保持し、追加の日までのオーバーヘッドを低減するために、いくつかの時点をマージ又は削除してもよい。それよりも更に過去に遡って、これらの時点のうちの一部を、わずか数時間ごとからの一貫した時点画像を表すスナップショットに変換することができる。
【0254】
一部の実施形態は、主にストレージシステムの文脈で説明されるが、当業者であれば、本開示の実施形態はまた、任意の好適な処理システムとともに使用するためのコンピュータ可読記憶媒体上に配置されたコンピュータプログラム製品の形態をとり得ることを認識するであろう。かかるコンピュータ可読記憶媒体は、磁気媒体、光学メディア、ソリッドステート媒体、又は他の好適な媒体を含む、機械可読情報のための任意の記憶媒体であり得る。かかる媒体の例には、ハードドライブ又はディスケット内の磁気ディスク、光ドライブ用のコンパクトディスク、磁気テープ、及び当業者が想起する他の媒体が含まれる。当業者は、好適なプログラミング手段を有する任意のコンピュータシステムが、コンピュータプログラム製品において具現化されるものとして本明細書で説明されるステップを実行することができることを直ちに認識するであろう。また、当業者であれば、本明細書に記載された実施形態の一部は、コンピュータハードウェアにインストールされて実行されるソフトウェアを対象としているが、ファームウェア又はハードウェアとして実装される代替の実施形態も、十分に本開示の範囲内であることを認識するであろう。
【0255】
一部の例では、コンピュータ可読命令を記憶する非一時的コンピュータ可読媒体が、本明細書で説明される原理に従って提供され得る。命令は、コンピューティングデバイスのプロセッサによって実行されるときに、本明細書で説明する動作のうちの1つ以上を含む、1つ以上の動作を実施するようにプロセッサ及び/又はコンピューティングデバイスに指示することができる。かかる命令は、種々の公知のコンピュータ可読媒体のいずれかを使用して記憶及び/又は伝送され得る。
【0256】
本明細書で言及される非一時的コンピュータ可読媒体は、コンピューティングデバイスによって(例えば、コンピューティングデバイスのプロセッサによって)読み出され、かつ/又は実行され得るデータ(例えば、命令)を提供することに関与する任意の非一時的記憶媒体を含み得る。例えば、非一時的コンピュータ可読記憶媒体は、不揮発性記憶媒体及び/又は揮発性媒体の任意の組み合わせを含んでもよいが、これらに限定されない。例示的な不揮発性記憶媒体は、読み出し専用メモリ、フラッシュメモリ、ソリッドステートドライブ、磁気ストレージデバイス(例えば、ハードディスク、フロッピーディスク、磁気など)、強誘電体ランダムアクセスメモリ(random-access memory、「RAM」)、及び光ディスク(例えば、コンパクトディスク、デジタルビデオディスク、ブルーレイディスクなど)を含むが、これらに限定されない。例示的な揮発性記憶媒体は、RAM(例えば、ダイナミックRAM)を含むが、これに限定されない。
【0257】
更なる説明のために、図4は、本開示の一部の実施形態による、ストレージサービスを配信するためのエッジ管理サービス382を含むブロック図を記載している。図4に描示される例は、図4に描示される例と同様であり、図4に描示される例はまた、1つ以上のストレージシステム374a、374n、並びに1つ以上のホストデバイス378a、378nを含む。
【0258】
図4に描示される例は、管理インターフェース402を介してエッジ管理サービス382にアクセスすることができる管理者404も含む。管理インターフェース402は、例えば、管理者404が、エッジ管理サービス382及び基礎的ストレージシステム374a、374nによって提供される特定のサービスを選択することを可能にするユーザインターフェースとして具現化され得る。かかる例では、管理者404は、管理インターフェース402とエッジ管理サービス382との間のゲートウェイ406(例えば、バーチャルプライベートネットワーク)を介して、管理インターフェース402を通して、エッジ管理サービス382からサービスを要求することができる。この特定の例では、管理インターフェース402は、クラウド408コンピューティング環境(例えば、パブリッククラウド、プライベートクラウド)内のリソースによって提供され、一方、エッジ管理サービス382及びストレージシステム374a、374bは、特定の顧客のデータセンター内などのオンプレミス410に配置される。
【0259】
更なる説明のために、図5は、本開示の一部の実施形態による、ストレージサービスを配信する例示的な方法を示すフローチャートを記載している。図5に例解される方法は、少なくとも部分的に、エッジ管理サービス382によって実行され得る。エッジ管理サービス382は、例えば、仮想マシンなどの仮想化されたコンピュータハードウェア上で実行されるコンピュータプログラム命令として、コンテナとともに実行されるコンピュータプログラム命令として具現化されてもよく、又は何らかの他の方法で具現化されてもよい。かかる例では、1つ以上のデータサービスモジュールは、Amazon AWS(商標)、Microsoft Azure(商標)などのパブリッククラウド環境で実行されていてもよい。代替的に、エッジ管理サービス382は、プライベートクラウド環境内、ハイブリッドクラウド環境内、データセンター内に見られるような専用ハードウェア及びソフトウェア上、又は何らかの他の環境内で実行されていてもよい。
【0260】
エッジ管理サービス382は、以下でより詳細に説明されるように、1つ以上の利用可能なデータサービスをユーザに提示し、1つ以上の選択されたデータサービスの選択を受信し、1つ以上の選択されたデータサービスに応じて、1つ以上のデータサービスポリシーをユーザに関連付けられたデータセットに適用するプロセスを少なくとも支援するように構成され得る。更に、エッジ管理サービス382は、以下でより詳細に説明されるように、他のステップを実施するように構成され得る。このようにして、エッジ管理サービス382は、本質的に、1つ以上のストレージシステム(例えば、上述のストレージシステム及びそれらの変形を含む)、1つ以上のネットワーキングデバイス、1つ以上の処理デバイス、及び多様なストレージサービスを提供するようにかかるデバイスの動作を駆動することができる他のデバイスなどの物理デバイスへのゲートウェイとして機能することができる。
【0261】
図5に描示される例示的な方法は、1つ以上の利用可能なデータサービスをユーザに提示すること(502)を含む。1つ以上の利用可能なデータサービスは、データサービスのコンシューマに関連付けられたデータを管理するために、データサービスのコンシューマ(すなわち、ユーザ)に提供され得るサービスとして具現化することができる。データサービスは、例えば、ファイルシステム内の1つ以上のファイル、1つ以上のオブジェクト、集合的にデータセットを形成する1つ以上のデータブロック、集合的にボリュームを形成する1つ以上のデータブロック、複数のボリュームなどを含む種々の形態のデータに適用され得る。データサービスは、ユーザが選択したデータセットに適用されてもよく、代替的に、1つ以上のポリシー又はヒューリスティクスに基づいて選択された何らかのデータに適用されてもよい。例えば、データセット内の一部のデータ(例えば、個人識別可能情報を有するデータ)は、それに適用されるデータサービスの1つのセットを有してもよく、一方で、同じデータセット内の他のデータ(例えば、個人識別可能情報を有さないデータ)は、それに適用されるデータサービスの異なるセットを有してもよい。
【0262】
ユーザに提示され得る(502)利用可能なデータサービスの例示的な例として、異なるレベルのデータ保護に関連付けられたデータサービスがユーザに提示され得る(502)。例えば、選択され施行されると、種々の目標復旧時点(「RPO」)を保証することができるように、そのユーザに関連付けられたデータが保護されることをユーザに保証するデータサービスをユーザに提示することができる。第1の利用可能なデータサービスは、例えば、ユーザに関連付けられた一部のデータセットが、5秒を超えて古い任意のデータがプライマリデータストアの故障の場合に復旧され得るように保護されることを確実にすることができ、一方、第2の利用可能なデータサービスは、ユーザに関連付けられたデータセットが、5分を超えて古い任意のデータがプライマリデータストアの故障の場合に復旧され得るように保護されることを確実にすることができる。読者は、これが、ユーザに提示され得る(502)利用可能な日付サービスの一例にすぎないことを理解するであろう。ユーザに提示され得る(502)追加の利用可能な日付サービスは、以下でより詳細に説明される。
【0263】
図5に描示される例示的な方法はまた、1つ以上の選択されたデータサービスの選択を受信すること(504)を含む。1つ以上の選択されたデータサービスは、ユーザがユーザに関連付けられた特定のデータセットに適用したいと望む、全ての利用可能なデータサービスのセットから選ばれたデータサービスを表すことができる。第1の利用可能なデータサービスが、5秒を超えて古い任意のデータがプライマリデータストアの故障の場合に復旧され得るように、ユーザに関連付けられた一部のデータセットが保護されることを確実にし得る一方で、第2の利用可能なデータサービスが、5分を超えて古い任意のデータがプライマリデータストアの故障の場合に復旧され得るように、ユーザに関連付けられたデータセットが保護されることを確実にし得る上述の例を続けると、ユーザは、プライマリデータストアの故障の場合にデータ損失を最小限にするために、第1の利用可能なデータサービスを選択することができる。しかしながら、読者は、第1の利用可能なデータサービスの金銭的コストが、第2の利用可能なデータサービスの金銭的コストよりも高いことがあり、その結果、ユーザが、これらのコスト差を重み付けし、ユーザのアプリケーション、データなどに最も適切なデータサービスを選択することができることを理解するであろう。1つ以上の選択されたデータサービスのユーザの選択は、例えば、ユーザに提示されるGUIを介して、ユーザによって選択される性能層の一部として、又は何らかの他の方法で受信されてもよい(504)。
【0264】
図5に描示される例示的な方法はまた、1つ以上の選択されたデータサービスに依存して、1つ以上のデータサービスポリシーをユーザに関連付けられたデータセットに適用すること(506)を含む。1つ以上のデータサービスポリシーは、例えば、施行又は実装されると、関連付けられたデータサービスを提供させる、1つ以上の規則として具現化されてもよい。ユーザが第1の利用可能なデータサービスを選択して、5秒を超えて古い任意のデータがプライマリデータストアの故障の場合に復旧され得るように、ユーザに関連付けられた一部のデータセットが保護されることを確実にする上記の例を続けると、適用され得る(506)1つ以上のデータサービスポリシーは、例えば、ユーザのデータセットのスナップショットを5秒ごとに取得させ、1つ以上のバックアップストレージシステムに送信させるポリシーを含み得る。このようにして、プライマリデータストアが故障したか、又は別様で利用不可能になった場合であっても、スナップショットは、故障のわずか5秒前に取得されており、かかるスナップショットは、1つ以上のバックアップストレージシステムから復旧することができる。他の例では、関連する選択されたデータサービスを提供するようにデータセットを修正させたI/Oイベントを再生するために、他のデータサービスポリシーが適用されてもよく(506)、又は関連する選択されたデータサービスを提供させる一部の他のデータサービスポリシーが適用されてもよい(506)。
【0265】
読者は、一部の実施形態では、1つ以上のデータサービスモジュールが、1つ以上の利用可能なデータサービスをユーザに提示し(502)、1つ以上の選択されたデータサービスの選択を受信する(504)ように構成され得る場合、1つ以上のデータサービスモジュールは、1つ以上のデータサービスポリシーをユーザと関連付けられたデータセットに適用すること(506)の責任を負わなくてもよいことを理解するであろう。代わりに、1つ以上のデータサービスモジュールは、何らかの他のエンティティに、ユーザに関連付けられたデータセットに1つ以上のデータサービスポリシーを適用する(506)ように(1つ以上のAPIを介して、1つ以上のメッセージを介して、又は何らかの他の方法で)命令することができる。例えば、1つ以上のデータサービスモジュールは、ストレージシステムによって提供されるAPIを利用して、ストレージシステムに上述のようなバックアップ動作を実行させ、ユーザに関連付けられたデータセットが保護され、5秒以上前の任意のデータがプライマリデータストアの故障の場合に復旧され得る、上述の第1の利用可能なデータサービスを提供することができる。
【0266】
読者は、多くのデータサービスがユーザに提示され(502)、ユーザによって選択され、最終的に、ユーザによって選択された1つ以上のデータサービスに応じて、ユーザに関連付けられたデータセットに適用される(506)1つ以上のデータサービスポリシーをもたらし得ることを理解するであろう。利用可能にされ得るデータサービスの非網羅的なリストが上記に含まれているが、読者は、本開示の一部の実施形態による追加のデータサービスが利用可能にされ得ることを理解するであろう。
【0267】
図5に描示される例示的な方法では、ユーザに関連付けられたデータセットに1つ以上のデータサービスポリシーを適用すること(506)は、データセットの初期配置を識別すること(508)を含み得る。データセットの初期配置は、例えば、データセットが記憶されるべきストレージシステムとして最初に識別される1つ以上のストレージシステムとして具現化されてもよい。データセットの初期配置を識別すること(508)は、例えば、データセットをサポートするために必要とされる必要なリソースを有する全てのストレージシステム(又はそれらの組み合わせ)を識別することによって実行されてもよい。例えば、データセットを記憶するのに十分な容量(例えば、MB、GB、TBなどに関して)を有するストレージシステムのみが、データセットを記憶するための候補として選択されてもよく、データセットをサービスするのに十分な性能容量(例えば、サポートされ得るデータセットに対するIOPSに関して)を有するストレージシステムのみが、データセットを記憶するための候補として選択されてもよく、又はデータセットを記憶するのに十分な他の何らかの形態の機能(例えば、データを暗号化する機能、ファイルシステムサポート、ブロックストレージサポート、特定の可用性要件を満たす機能)を有するストレージシステムのみが、データセットを記憶するための候補として選択されてもよい。実際に、特定のストレージシステムがデータセットを記憶するための候補であるかどうかについての判定には、多くの基準が含まれ得る。かかる実施形態では、各データセットは、特定のストレージシステム(又はストレージシステムの特定の組み合わせ)がデータセットを記憶するための候補であるかどうかを評価するために使用され得る、データセットと関連付けられた種々の要件を記述するメタデータとペアリングさせることができる。
【0268】
かかる例では、1つ以上のストレージシステムがデータセットを記憶するための候補として識別されると、候補の各々を評価して、一部の基準に基づいて最良適合を識別することができる。例えば、最低コストでデータセットを記憶することができるストレージシステムが、データセットを記憶するストレージシステムとして識別されてもよい(508)。実際には、どのストレージシステムがデータセットを記憶するストレージシステムであると識別されるべきか(508)に関する判定は、複数の基準に基づき得る。かかる基準は、例えば、コスト、各候補ストレージシステムにおいて利用可能なリソースの量、データセットにアクセスするエンティティによって経験される性能(例えば、読み出しレイテンシ、書き込みレイテンシ)などを含み得る。一部の実施形態では、最良適合ストレージシステムが、データセットを記憶するためのストレージシステムであるとして識別され得る(508)ように、候補ストレージシステムがデータセットを記憶することと関連付けられた必要性又は要件の全てをどれだけ良好に満たすことができるかを識別するスコアが、各候補ストレージシステムに対して生成され得る。
【0269】
図5に描示される例示的な方法では、ユーザに関連付けられたデータセットに1つ以上のデータサービスポリシーを適用すること(506)は、データセットを移行すること(510)を含み得る。データセットの初期配置が識別された(508)上記の例とは対照的に、データセットを移行すること(510)は、ストレージ環境全体に対する何らかの変更が、データセットの現在の配置がもはやデータセットの十分な又は最適な配置ではないことをもたらしたことを検出したことに応答して実行され得る。例えば、新しいワークロードがストレージ環境に追加された(例えば、追加のデータセットがストレージシステムに記憶された)結果として、既存のワークロードが増大又は縮小した結果として、ストレージリソースが故障した結果として、ストレージリソースがストレージ環境に追加された結果として、1つ以上のストレージリソースがアップグレードされた結果として、ストレージ環境にアクセスするために利用されるネットワーキングリソースが変化した(例えば、スイッチが追加された、スイッチが除去された)結果として、かつ多くの他の理由で、ストレージ環境全体に変化が生じた可能性がある。概して、基礎的ハードウェアに対する変更、又はストレージ環境が利用される方法に対する変更の結果として、ストレージ環境全体に対して変更が行われている可能性がある。
【0270】
かかる例では、データセットを移行すること(510)は、データセットの現在の配置がもはや十分ではない又は最適ではないと判定することによって実行され得る。かかる決定は、例えば、データセットを記憶するための1つ以上の候補ストレージシステムを周期的に識別し、各候補を評価し、候補間の最良適合を識別することによって行われてもよい。したがって、かかる例では、決定は、スケジュールされた方法で周期的に行われ得る。代替的な実施形態では、何らかのイベントの発生が、このプロセスをトリガすることができる。例えば、データセットを記憶する特定のストレージシステムの容量利用率が閾値に達した場合、データセットを記憶するための1つ以上の候補ストレージシステムが識別され、候補間の最良適合を識別するために評価されてもよい。同様に、1つ以上のストレージリソースがストレージ環境全体に追加されるか、又はそこから除去される場合、データセットを記憶するための1つ以上の候補ストレージシステムが識別され、評価されて、候補の中で最良適合を識別することができる。
【0271】
本明細書で説明される例では、データセットを移行するかどうかを判定する(510)ときに、データセットを移行することに関連するコスト又は影響を考慮に入れることができる。例えば、特定のデータセットを移行させること(510)が比較的小さな利益をもたらすが、データセットを移行させること(510)に関連するコストが相当量であった場合、移行が行われることが許可されない可能性がある。同様に、特定のデータセットを移行すること(510)が、データセットに対してより良好な適合をもたらすが、他のデータセットをサービスする能力に対して実質的な害を引き起こす場合、移行が行われることが許可されない可能性がある。
【0272】
図5に描示される例示的な方法では、ユーザに関連付けられたデータセットに1つ以上のデータサービスポリシーを適用すること(506)は、1つ以上のストレージシステム上にリソースをプロビジョニングすること(512)を含み得る。1つ以上のストレージシステム上にリソースをプロビジョニングすること(512)は、例えば、ストレージリソースのうちの1つ以上によって公開されたAPIを通してデータセットを記憶するための1つ以上のボリュームの作成を開始することによって、ストレージリソースのうちの1つ以上によって公開されたAPIを通してデータセットを記憶するための1つ以上のファイルシステムの作成を開始することなどによって、実行され得る。かかる例では、1つ以上のストレージシステム上でリソースをプロビジョニングすること(512)は、サービス品質保証又は同様の性能要件を施行できるようにするために、ストレージシステムのリソースの容量、I/O帯域幅、又は何らかの他の態様を予約することも含み得る。
【0273】
上記の例は、リソースが1つ以上のストレージシステムからプロビジョニングされる(512)(又は予約される)実施形態に関するが、他の実施形態では、ユーザがそのデータにアクセスするために必要とされる他の形態のリソースもプロビジョニング又は予約することができる。例えば、ネットワーキングリソースがプロビジョニング又は予約されてもよく、監視リソースがプロビジョニング又は予約されてもよく、コンピューティングリソースがプロビジョニング又は予約されてもよく、管理リソースがプロビジョニング又は予約されてもよい、などである。
【0274】
図5に描示される例示的な方法において、ユーザに関連付けられたデータセットに1つ以上のデータサービスポリシーを適用すること(506)は、1つ以上のストレージシステムについて1つ以上のチューナブルを設定すること(514)を含み得る。各チューナブルは、例えば、構成パラメータ、動作パラメータ、又は1つ以上のストレージシステムの動作に影響を及ぼす他のパラメータとして具現化されてもよい。例えば、チューナブルパラメータが、特定のデータセットのスナップショットがどの程度頻繁に取得されるかを判定するために使用される場合、そのチューナブルパラメータは、データセットに対する所望のRPOを施行するように設定されてもよい(514)。同様に、特定のデータセットへのアクセスのためにエンドツーエンド暗号化が施行されるべきかどうかを判定するためにチューナブルパラメータが使用される場合、そのチューナブルパラメータは、データセットのためのエンドツーエンド暗号化を有効又は無効にするように設定されてもよい(514)(エンドツーエンド暗号化とは、データがストレージシステムに記憶されている間に暗号化され、データがデータセットのアクセスの一部としてネットワークを介して暗号化されて転送されることを意味し、典型的には、停止中と移動中とで異なる暗号化鍵を用いる)。かかる例では、1つ以上のストレージシステムについて1つ以上のチューナブルを設定すること(514)は、ストレージシステムから及びエッジ管理サービス382に公開される1つ以上のAPIの使用を通じて実行することができる。
【0275】
図5に描示される例示的な方法では、ユーザに関連付けられたデータセットに1つ以上のデータサービスポリシーを適用すること(506)は、1つ以上のストレージシステムのための1つ以上のチューナブルを修正すること(516)を含み得る。上述の例は、1つ以上のチューナブルが設定される(514)一実施形態に関するが、一部の実施形態では、チューナブルを修正すること(516)を必要とする変更が行われてもよい。かかる変更は、例えば、ストレージ環境全体に対する変更(例えば、ハードウェア変更、ワークロード変更)、特定のデータセットに関連付けられた要件に対する変更、ユーザが選択したサービスのセットに対する変更などを含み得る。かかる例では、チューナブルを修正すること(516)は、一部のチューナブルが調整されるべきであると判定し、エッジ管理サービス382に利用可能な1つ以上のAPIを通してかかるチューナブルを変更するエッジ管理サービス382によって実行され得る。
【0276】
図5に描示す例示的な方法では、ユーザに関連付けられたデータセットに1つ以上のデータサービスポリシーを適用すること(506)は、1つ以上のストレージシステムに対して1つ以上のフリート管理動作を実施すること(516)を含み得る。フリート管理動作は、例えば、ストレージシステム間でデータセット及びワークロードを再バランシングすること、ストレージシステムのうちの1つ以上の上のソフトウェアを更新又はアップグレードすることなどを含み得る。例えば、全体的に最適化された方法で各データセットに関連付けられた異なる要件を満たす異なる順列(例えば、データセット1がストレージシステム1に記憶され、データセット2がストレージシステム2に記憶されるのに対して、データセット1がストレージシステム2に記憶され、データセット2がストレージシステム1に記憶される)を見つけるために、ワークロードをどのように分散させることができるかの順列を評価することができる。例えば、データセットの第1の配置が、(例えば、改善されたデータ重複排除を通して)データセットの第2の配置よりも少ない容量消費をもたらす場合、容量を節約するように分散が最適化された一実施形態では、フリート管理動作を実施すること(516)は、第1の配置に従ってデータセットを配置することを含み得る。他の実施形態では、データセットは、他の(複数を含む)考慮事項に対して最適化されるように配置されてもよい。
【0277】
図5に描示される例示的な方法では、ユーザに関連付けられたデータセットに1つ以上のデータサービスポリシーを適用すること(506)は、データセットにアクセスする要求に応答してホストデバイスに送信されるデータを修正すること(518)を含み得る。データセットにアクセスする要求に応答して、ホストデバイスに送信されるデータを修正すること(518)は、例えば、エッジ管理サービス382が、PIIをマスキング又は除去して、PIIがデータセットのアクセス側と共有されないという要件を順守することによって、データを暗号化/解読して、エンドツーエンド暗号化を使用してデータセットにアクセスし、記憶するという要件を施行することなどによって、実行することができる。かかる例では、データセットにアクセスする要求に応答してホストデバイスに送信されるデータを修正すること(518)は、エッジ管理サービス382によって実施されて、基礎的ストレージシステムから一部の要件をオフロードし、代わりに、エッジ管理サービス382を活用して、特定のサービスを配信するために必要とされるタスクの一部を実施することができる。
【0278】
図5に描示される例示的な方法では、ユーザに関連付けられたデータセットに1つ以上のデータサービスポリシーを適用すること(506)は、データセットに1つ以上のポリシーをアタッチすること(520)を含み得る。かかる例では、データセットに1つ以上のポリシーをアタッチすること(520)は、データセットに関連付けられたメタデータを追加又は修正するエッジ管理サービス382によって実行されてもよく、かかるメタデータは、どのポリシーがデータセットに適用されるかを判定するためにストレージシステムによって使用される。例えば、特定のメタデータフィールド内の第1の値は、データセットが同期的に複製されるべきか、又は非同期的に複製されるべきかを示してもよい。
【0279】
図5に描示される例示的な方法では、ユーザに関連付けられたデータセットに1つ以上のデータサービスポリシーを適用すること(506)は、データセットに関連付けられた1つ以上のポリシーを施行すること(522)を含み得る。上述の実施形態は、エッジ管理サービス382が、データセットにアタッチされる(520)べきポリシーについてのみストレージシステム(又は他のリソース)に通知する実装形態に関するが、この例では、エッジ管理サービス382は、それ自体が、データセットに関連付けられた1つ以上のポリシーを施行する(522)責任を(少なくとも部分的に)負うことができる。例えば、ポリシーが、データセットにアクセスするとき、暗号化されたデータのみがストレージシステムからホストデバイスに渡されるべきであることを定義する場合、エッジ管理サービス382は、かかるポリシーを施行する(522)ように、実際にデータを暗号化し得る。
【0280】
上述の実施形態は、1つ以上の利用可能なストレージサービスがユーザに提示され、1つ以上の選択されたストレージサービスの選択が受信され、ユーザに関連付けられたデータセットに対する1つ以上のストレージサービスポリシーが1つ以上の選択されたストレージサービスに依存して適用される実施形態に関するが、他の実施形態では、(サービスではなく)ストレージクラスが同様の方法で提示され、最終的に適用されてもよいことを読者は理解するであろう。例えば、「高性能」ストレージクラスに関連付けられた所定のサービスセットのアプリケーションを介して最終的に配信される「高性能」ストレージクラスを提示してもよい。同様に、「高度に回復力のある」ストレージクラスに関連付けられたサービスの所定のセットのアプリケーションを介して最終的に配信される「高度に回復力のある」ストレージクラスを提示することができる。追加の実施形態では、「提示」され、ユーザによる選択のために利用可能にされているものの正確な性質は、他の形態をとってもよく、その全ては、本明細書に説明されるように実装及び提供されてもよい。
【0281】
更なる説明のために、図6は、本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントのためのエッジ管理サービス382を含むブロック図を記載している。図6に描示される例は、図4に描示される例と同様であり、図6に描示される例はまた、ゲートウェイ406及び1つ以上のストレージシステム374a、374nを含む。図4のホストデバイスは、図6ではクライアントデバイス678a、678nと称される。図6は、ゲートウェイ406を介してエッジ管理サービス382に通信可能に結合された追加のクライアントデバイス602も含む。
【0282】
各クライアントデバイス(エッジ管理サービス382に結合されたクライアントデバイス678a、678n、及びゲートウェイ406を介してエッジ管理サービス382に結合されたクライアントデバイス602)は、ストレージシステムクライアントによって使用されるコンピューティングシステムである。各クライアントデバイス678a、678n、602は、ストレージコンシューマロール又はストレージプロバイダのロールに割り当てられたクライアントによって、又は別様でその制御下で使用され得る。ストレージコンシューマは、ストレージシステム374a、374n上のデータストレージを利用する(すなわち、消費する)クライアントである。ストレージプロバイダは、ストレージコンシューマのためにストレージ及びストレージサービスを管理する(すなわち、提供する)クライアントである。図6のエッジ管理サービス382は、サービスとしてのストレージシステム上のストレージコンシューマ及びストレージプロバイダのロールを施行する。具体的には、図6のエッジ管理サービス382は、ストレージコンシューマロール及びストレージプロバイダのロールを管理し、ストレージコンシューマクライアントからのデータ管理命令をサービスし、ストレージプロバイダクライアントからのストレージ管理命令をサービスする。上述のように、エッジ管理サービス382は、エッジ管理サービス382に通信可能に結合されたストレージシステム374a、374nからのストレージサービスを、クライアントデバイス678a、678n、602を利用するクライアントに提供する。
【0283】
この特定の例では、エッジ管理サービス382及びストレージシステム374a、374bのフリート376は、特定の顧客のデータセンターなどのオンプレミス410に位置する。別の例では、エッジ管理サービス382及びゲートウェイ406は、ストレージシステムについてリモートのクラウドコンピューティング環境によって提供されてもよい。本明細書で使用される「クラウドベース」という用語は、データ通信リンク(図3Aで上述したデータ通信リンクなど)を介してリモートでサービスを提供するシステム又はシステムの集合を指す。
【0284】
ゲートウェイ406(ネットワークゲートウェイとも称される)は、それを通してクライアントデバイス602がエッジ管理サービス382と情報を交換する、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの集約である。ゲートウェイ406は、エッジ管理サービス382及びストレージシステム374a、374nのフリート376への安全なアクセスをクライアントデバイス602に提供することができる。ゲートウェイ406は、エッジ管理サービス382及びストレージシステム374a、374nへのアクセスを許可する前に、クライアントデバイス602の認可及び認証を要求することができる。ゲートウェイ406の例としては、VPN、ネットワークノード、サーバ、ネットワークブリッジ、及びネットワーク機器が挙げられ得る。
【0285】
異なるロールを割り当てられたクライアントは、異なる通信パスを介してエッジ管理サービス382と通信することができる。例えば、図6に示されるように、クライアントデバイス678a、678nは、エッジ管理サービス382と直接通信する。クライアントデバイス678a、678nを利用するクライアントは、ストレージコンシューマロールを割り当てられてもよく、図3Eに示されるように、ストレージサービスモジュールを介してエッジ管理サービス382と通信してもよい。また、図6に示されるように、クライアントデバイス602は、ゲートウェイ406を介してエッジ管理サービス382と通信する。クライアント利用クライアントデバイス602は、ストレージプロバイダのロールを割り当てられ、ゲートウェイを介してエッジ管理サービス382にアクセスすることができ、クライアント602がストレージ管理命令を実行することを可能にする。
【0286】
本明細書で使用される場合、「ローカルに(local to)」という用語は、同じデータセンター内のエンティティなど、互いに物理的に近接しているエンティティを指す。エッジ管理サービス382及びゲートウェイ406は、エッジ管理サービス382が、ストレージシステム374a、374bのハードウェア構成要素と同じ物理的建物内のシステム上でホストされ得るという点で、ストレージシステム374a、374bに対してローカルであり得る。同様に、「リモート(remote to)」及び「リモートに(remotely)」という用語は、ワイドエリアネットワーク(例えば、インターネット)を介して通信するエンティティなど、互いに物理的に近接していないエンティティを指す。エッジ管理サービス382及びゲートウェイ406は、エッジ管理サービス382及びゲートウェイ406が、ストレージシステム374a、374bのハードウェア構成要素を収容する物理的な建物の外部の1つ以上のシステム上でホストされ、ストレージシステム374a、374bのハードウェア構成要素を制御するエンティティとは別個の異なるエンティティの制御下にあり得るという点で、ストレージシステム374a、374bに対してリモートのクラウド環境によって提供され得る。
【0287】
以下の例示的な方法は、エッジ管理サービス382によって実施されるものとして描示されるが、サービスとしてのストレージ方法のためのロールエンフォースメントは、エッジ管理サービス382とは別個の異なるシステム内の他のエンティティによって実施されてもよい。例えば、サービスとしてのストレージのエンフォースメントを提供するシステムは、クラウドベースであり、ストレージシステム374a、374bに対してリモートであってもよい。代替的に、サービスとしてのストレージのエンフォースメントを提供するシステムは、オンプレミスであり、ストレージシステム374a、374bに対してローカルであってもよい。
【0288】
更なる説明のために、図7は、本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントの例示的な方法を示すフローチャートを記載している。図7の方法は、ストレージシステム374について、ストレージコンシューマロール及びストレージプロバイダロールを含む複数のロールを管理すること(702)を含み、ストレージコンシューマロールは、ストレージコンシューマロールに対して有効化され、かつストレージプロバイダロールに対して無効化される、データ管理命令に関連付けられ、ストレージプロバイダロールは、ストレージプロバイダロールに対して有効化され、かつストレージコンシューマロールに対して無効化される、ストレージ管理命令に関連付けられる。ストレージコンシューマロールに割り当てられたクライアントは、ストレージプロバイダのロールに割り当てられたクライアントが利用できない一部の命令を正常に実行することができる。同様に、ストレージプロバイダのロールに割り当てられたクライアントは、ストレージコンシューマロールに割り当てられたクライアントが利用できない一部の命令を正常に実行することができる。エッジ管理サービス382は、ストレージコンシューマ及びストレージプロバイダのロールのためにこれらの制限及び能力を施行する。特定のロールに関連付けられているクライアントとは、管理エンティティによってそのロールが割り当てられているクライアントを指す。更に、ロールは、クライアントが任意の所与の時間に単一のロールのみを割り当てられ得ることを意味する、相互に排他的であり得る。
【0289】
ストレージシステム374について、ストレージコンシューマロール及びストレージプロバイダロールを含む複数のロールを管理すること(702)は、各クライアントに割り当てられたロールを施行し、1つのロールに関連付けられたクライアントが異なるロール専用の命令を正常に実行することを許可しないか、又は妨げることによって実行することができる。例えば、エッジ管理サービス382は、ストレージプロバイダのロールを割り当てられたクライアントが、データを削除する命令などのデータ管理命令を正常に実行することを許可しないか、又は妨げることができる。同様に、エッジ管理サービス382は、ストレージコンシューマロールを割り当てられたクライアントが、ストレージシステム上の保護ポリシーを改変する命令などのストレージ管理命令を正常に実行することを許可しないか、又は妨げることができる。
【0290】
図7の方法は、ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令をサービスすること(704)を更に含み、データ管理命令は、ストレージシステム374上のデータを操作するための命令である。ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令であって、ストレージシステム374上のデータを操作するための命令であるデータ管理命令をサービスすること(704)は、データ管理命令を受信し、データ管理命令を送信するクライアントに割り当てられたロールがストレージコンシューマロールであることを検証し、ストレージシステム374を使用してデータ管理命令を実行することによって実行することができる。本明細書で使用される「サービスする」という用語は、命令を実施すること、又は受信された命令を実施するようにシステム内の他のエンティティに指示することを指すことがある。データ管理命令の例は、データ書き込み命令、データ読み出し命令、データ削除命令、及びストレージクラスインスタンス化命令を含む。
【0291】
図7の方法は、ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージ管理命令をサービスすること(706)を更に含み、ストレージ管理命令は、ストレージシステム374を管理するための命令である。ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージ管理命令であって、ストレージシステム374を管理するための命令であるストレージ管理命令をサービスすること(706)は、ストレージ管理命令を受信し、ストレージ管理命令を送信するクライアントに割り当てられたロールがストレージプロバイダロールであることを検証し、ストレージシステム374を使用してストレージ管理命令を実行することによって実行することができる。ストレージ管理命令の例には、領域作成命令、アベイラビリティゾーン作成命令、ストレージクラス定義命令、及び保護ポリシー命令が含まれる。
【0292】
更なる説明のために、図8は、本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントの追加の例示的な方法を示すフローチャートを記載している。図8に描示される例示的な方法は、図7に描示される例示的な方法と同様であり、図8に示される例示的な方法はまた、ストレージシステム374について、ストレージコンシューマロール及びストレージプロバイダロールを含む複数のロールを管理すること(702)であって、ストレージコンシューマロールは、ストレージコンシューマロールに対して有効化され、かつストレージプロバイダロールに対して無効化される、データ管理命令に関連付けられ、ストレージプロバイダロールは、ストレージプロバイダロールに対して有効化され、かつストレージコンシューマロールに対して無効化される、ストレージ管理命令に関連付けられる、管理することと、ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令であって、ストレージシステム374上のデータを操作するための命令であるデータ管理命令をサービスすること(704)と、ストレージプロバイダのロールに関連付けられた第2のクライアントからのストレージ管理命令であって、ストレージシステム374を管理するための命令であるストレージ管理命令をサービスすること(706)と、を含む。
【0293】
図8に描示される例示的な方法において、は、ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令であって、ストレージシステム374上のデータを操作する命令であるデータ管理命令をサービスすること(704)は、ストレージコンシューマロールに関連付けられた第1のクライアントからの削除命令をサービスすること(802)を含む。データを操作する命令は、具体的には、ストレージシステム374からデータを削除する命令であり得る。ストレージコンシューマロールに関連付けられた第1のクライアントからの削除命令をサービスすること(802)は、削除命令によってターゲットにされたデータを位置特定し、そのデータをガベージコレクションのためにマークすることによって実行することができる。ストレージプロバイダのロールに割り当てられたクライアントは、ストレージシステムからデータを削除することを妨げられるか、又は許可されなくてもよい。
【0294】
更なる説明のために、図9は、本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントの追加の例示的な方法を示すフローチャートを記載している。図9に描示される例示的な方法は、図7に描示される例示的な方法と同様であり、図9に示される例示的な方法はまた、ストレージシステム374について、ストレージコンシューマロール及びストレージプロバイダロールを含む複数のロールを管理すること(702)であって、ストレージコンシューマロールは、ストレージコンシューマロールに対して有効化され、かつストレージプロバイダロールに対して無効化される、データ管理命令に関連付けられ、ストレージプロバイダロールは、ストレージプロバイダロールに対して有効化され、かつストレージコンシューマロールに対して無効化される、ストレージ管理命令に関連付けられる、管理することと、ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令であって、ストレージシステム374上のデータを操作するための命令であるデータ管理命令をサービスすること(704)と、ストレージプロバイダのロールに関連付けられた第2のクライアントからのストレージ管理命令であって、ストレージシステム374を管理するための命令であるストレージ管理命令をサービスすること(706)と、を含む。
【0295】
図9に描示される例示的な方法では、ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージ管理命令であって、ストレージシステム374を管理するための命令であるストレージ管理命令をサービスすること(706)は、ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージシステム374上の保護ポリシーを改変するための命令をサービスすること(902)含む。ストレージシステム374を管理するための命令は、具体的には、ストレージシステム374上の保護ポリシーを改変するための命令であり得る。ストレージプロバイダロールに関連付けられた第2のクライアントからストレージシステム374上の保護ポリシーを改変する命令をサービスすること(902)は、データセットなどのストレージシステム上の要素に対する保護ポリシーにアクセスし、命令に基づいて保護ポリシーを調整することによって実行することができる。ストレージコンシューマロールに割り当てられたクライアントは、ストレージシステム374上の保護ポリシーを改変することを妨げられるか、又は許可されなくてもよい。
【0296】
更なる説明のために、図10は、本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントの追加の例示的な方法を示すフローチャートを記載している。図10に描示される例示的な方法は、図7に描示される例示的な方法と同様であり、図10に描示される例示的な方法はまた、ストレージシステム374について、ストレージコンシューマロール及びストレージプロバイダロールを含む複数のロールを管理すること(702)であって、ストレージコンシューマロールは、ストレージコンシューマロールに対して有効化され、かつストレージプロバイダロールに対して無効化される、データ管理命令に関連付けられ、ストレージプロバイダロールは、ストレージプロバイダロールに対して有効化され、かつストレージコンシューマロールに対して無効化される、ストレージ管理命令に関連付けられる、管理することと、ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令であって、ストレージシステム374上のデータを操作するための命令であるデータ管理命令をサービスすること(704)と、ストレージプロバイダのロールに関連付けられた第2のクライアントからのストレージ管理命令であって、ストレージシステム374を管理するための命令であるストレージ管理命令をサービスすること(706)と、を含む。
【0297】
図10に描示される例示的な方法において、ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令であって、ストレージシステム374上のデータを操作する命令であるデータ管理命令をサービスすること(704)は、エッジ管理サービス382によって、第1のクライアントからデータ管理命令を受信すること(1002)であって、エッジ管理サービス382は、ストレージシステム374からクライアントにストレージサービスを提供する、受信することと、エッジ管理サービス382によって、第1のクライアントに関連付けられたロールがストレージコンシューマロールであることを検証すること(1004)と、を含む。エッジ管理サービス382によって、第1のクライアントからデータ管理命令を受信すること(1002)であって、エッジ管理サービス382は、ストレージシステム374からクライアントにストレージサービスを提供する、受信することは、第1のクライアントが、ストレージサービスモジュールを介してエッジ管理サービス382にアクセスし、データ管理命令をエッジ管理サービス382にサブミットすることによって実行され得る。クライアントに割り当てられたロールは、クライアントがストレージシステム及び/又はエッジ管理サービス382にアクセスする方法を決定することができる。ストレージコンシューマロールを割り当てられたクライアントは、エッジ管理サービス382及びストレージサービスモジュールを介してストレージシステムにアクセスすることができる。ストレージコンシューマロールに割り当てられた第1のクライアントは、ストレージシステム374及び/又はエッジ管理サービス382に命令をサブミットするときにゲートウェイをバイパスすることができる。
【0298】
エッジ管理サービス382によって、第1のクライアントに関連付けられたロールがストレージコンシューマロールであることを検証すること(1004)は、第1のクライアントに割り当てられたロールを決定し、第1のクライアントに割り当てられたロールを、受信されたデータ管理命令を正常に実行するために必要なロールと比較することによって実行され得る。第1のクライアントに割り当てられたロールと、受信されたデータ管理命令を正常に実行するために必要なロールとが一致する場合、エッジ管理サービス382は、データ管理命令を実行することができる。
【0299】
更なる説明のために、図11は、本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントの追加の例示的な方法を示すフローチャートを記載している。図11に描示される例示的な方法は、図7に描示される例示的な方法と同様であり、図11に描示される例示的な方法はまた、ストレージシステム374について、ストレージコンシューマロール及びストレージプロバイダロールを含む複数のロールを管理すること(702)であって、ストレージコンシューマロールは、ストレージコンシューマロールに対して有効化され、かつストレージプロバイダロールに対して無効化される、データ管理命令に関連付けられ、ストレージプロバイダロールは、ストレージプロバイダロールに対して有効化され、かつストレージコンシューマロールに対して無効化される、ストレージ管理命令に関連付けられる、管理することと、ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令であって、ストレージシステム374上のデータを操作するための命令であるデータ管理命令をサービスすること(704)と、ストレージプロバイダのロールに関連付けられた第2のクライアントからのストレージ管理命令であって、ストレージシステム374を管理するための命令であるストレージ管理命令をサービスすること(706)と、を含む。
【0300】
図11に描示される例示的な方法では、ストレージプロバイダロールに関連付けられた第2のクライアントからストレージ管理命令であって、ストレージシステム374を管理するための命令であるストレージ管理命令をサービスすること(706)は、エッジ管理サービス382によって、ゲートウェイ406を介して、第2のクライアントからストレージ管理命令を受信すること(1102)であって、エッジ管理サービス382は、ストレージシステム374からクライアントにストレージサービスを提供し、ゲートウェイ406は、第2のクライアントにエッジ管理サービス382へのアクセスを提供する、受信することと、エッジ管理サービス382によって、第2のクライアントに関連付けられたロールがストレージプロバイダロールであることを検証すること(1104)と、を含む。エッジ管理サービス382によって、ゲートウェイ406を介して、第2のクライアントからストレージ管理命令を受信すること(1102)であって、エッジ管理サービス382は、ストレージシステム374からクライアントにストレージサービスを提供し、ゲートウェイ406は、第2のクライアントに、エッジ管理サービス382へのアクセスを提供する、受信することは、エッジ管理サービス382を含む通信ネットワークへのアクセスが許可されるように、認証情報をサブミットすることによって、又は何らかの他の認証技術に依拠することによって、第2のクライアントがゲートウェイへのアクセスを得ることによって、実行され得る。次いで、第2のクライアントは、ストレージ管理命令をエッジ管理サービス382にサブミットすることができる。上述したように、クライアントに割り当てられたロールは、クライアントがストレージシステム及び/又はエッジ管理サービス382にアクセスする方法を指示することができる。ストレージプロバイダのロールを割り当てられたクライアントは、ゲートウェイを介して、ストレージシステム及び/又はエッジ管理サービス382にアクセスすることができる。具体的には、クライアントデバイス602は、ゲートウェイへの認可されたアクセスを取得し、ゲートウェイ406に結合された通信ネットワークを介してエッジ管理サービス382及びストレージシステムフリートにアクセスすることができる。
【0301】
エッジ管理サービス382によって、第2のクライアントに関連付けられたロールがストレージプロバイダのロールであることを検証すること(1104)は、第2のクライアントに割り当てられたロールを決定し、第2のクライアントに割り当てられたロールを、受信されたストレージ管理命令を正常に実行するために必要なロールと比較することによって実行され得る。第2のクライアントに割り当てられたロールと、受信されたデータ管理命令を正常に実行するために必要なロールとが一致する場合、エッジ管理サービス382は、ストレージ管理命令を実行することができる。
【0302】
更なる説明のために、図12は、本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントの追加の例示的な方法を示すフローチャートを記載している。図12に描示される例示的な方法は、図7に描示される例示的な方法と同様であり、図12に描示される例示的な方法はまた、ストレージシステム374について、ストレージコンシューマロール及びストレージプロバイダロールを含む複数のロールを管理すること(702)であって、ストレージコンシューマロールは、ストレージコンシューマロールに対して有効化され、かつストレージプロバイダロールに対して無効化される、データ管理命令に関連付けられ、ストレージプロバイダロールは、ストレージプロバイダロールに対して有効化され、かつストレージコンシューマロールに対して無効化される、ストレージ管理命令に関連付けられる、管理することと、ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令であって、ストレージシステム374上のデータを操作するための命令であるデータ管理命令をサービスすること(704)と、ストレージプロバイダのロールに関連付けられた第2のクライアントからのストレージ管理命令であって、ストレージシステム374を管理するための命令であるストレージ管理命令をサービスすること(706)と、を含む。
【0303】
図12に描示される例示的な方法では、ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージ管理命令であって、ストレージシステム374を管理するための命令であるストレージ管理命令をサービスすること(706)は、ストレージプロバイダロールに関連付けられた第2のクライアントからストレージシステム374上のデータセットに適用されるストレージサービスを実装するための命令をサービスすること(1202)を含む。ストレージプロバイダロールに関連付けられた第2のクライアントからストレージシステム374上のデータセットに適用されるストレージサービスを実装する命令をサービスすること(1202)は、図3Eに関して上述したように、1つ以上のストレージサービスを要求し、実装することを認可されたロールを割り当てられたクライアントから命令を受信するエッジ管理サービス382によって実装することができる。特に、ストレージプロバイダロールに割り当てられたクライアントは、異なるレベルのデータ保護サービス、データコンプライアンスサービス、高可用性ストレージサービス、災害復旧サービス、データアーカイブサービス、QoSストレージサービス、データ保護サービス、仮想管理サービス、フリート管理サービス、コスト最適化サービス、ワークロード配置サービス、動的スケーリングサービス、性能最適化サービス、ネットワーク接続性サービス、データ分析サービス、データポータビリティサービス、アップグレード管理サービス、データセキュリティサービス、統合システム管理サービス、及びアプリケーション開発サービスを選択してもよい。ストレージコンシューマロールに割り当てられたクライアントは、上述のストレージサービスのうちの1つ以上を実装することを妨げられるか、又は許可されなくてもよい。
【0304】
更なる説明のために、図13は、本開示の一部の実施形態による、サービスとしてのストレージのためのロールエンフォースメントの追加の例示的な方法を示すフローチャートを記載している。図13に描示される例示的な方法は、図7に描示される例示的な方法と同様であり、図13に描示される例示的な方法はまた、ストレージシステム374について、ストレージコンシューマロール及びストレージプロバイダロールを含む複数のロールを管理すること(702)であって、ストレージコンシューマロールは、ストレージコンシューマロールに対して有効化され、かつストレージプロバイダロールに対して無効化される、データ管理命令に関連付けられ、ストレージプロバイダロールは、ストレージプロバイダロールに対して有効化され、かつストレージコンシューマロールに対して無効化される、ストレージ管理命令に関連付けられる、管理することと、ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令であって、ストレージシステム374上のデータを操作するための命令であるデータ管理命令をサービスすること(704)と、ストレージプロバイダのロールに関連付けられた第2のクライアントからのストレージ管理命令であって、ストレージシステム374を管理するための命令であるストレージ管理命令をサービスすること(706)と、を含む。
【0305】
図13に描示される例示的な方法では、ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージ管理命令であって、ストレージシステム374を管理するための命令であるストレージ管理命令をサービスすること(706)は、ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージシステム性能を記述するメトリクスに対する要求をサービスすること(1302)を含む。ストレージプロバイダのロールに関連付けられた第2のクライアントからのストレージシステム性能を記述するメトリクスに対する要求をサービスすること(1302)は、ストレージシステム性能を記述するメトリクス及び他のログを1つ以上の外部評価システムに伝送するようにストレージシステム374及び/又はエッジ管理サービス382を構成することによって実行され得る。ストレージプロバイダのロール(又は別のロール)に割り当てられたクライアントは、ストレージシステム374、エッジ管理サービス382、又はフリート内の他の要素によって生成されたログ及び他のメトリクスへのアクセスを要求することができるか、又は提供され得る。ログ及び他のメトリックは、監視、評価、及び編成のためにオンプレミス又はクラウドベースの評価システム上の別のものに向けられるデータストリームであってもよい。この評価システムは、ストレージシステム374、エッジ管理サービス382、又はフリート内の他の要素によって生成された特定のデータストリームを解析するように特別に構成されてもよい。データストリームは、ストレージシステム374、エッジ管理サービス382、又はフリート内の他の要素からデータストリームを取り出すために評価システムによって使用され得るAPIのセットを公開することによって提供され得る。次いで、クライアントは、評価システムを使用して、編成されたデータストリームをレビューすることができる。データストリームが評価システムによってキャプチャされると、クライアントは、次いで、着信データストリームに基づいて、データ並びにアラートの種々の編成を作成してもよい。次いで、クライアントは、ストレージシステム374の動作を監視するためのダッシュボードを作成することができる。
【0306】
本開示の利点及び特徴は、以下のステートメントによって更に説明することができる。
【0307】
1.ストレージシステムについて、ストレージコンシューマロール及びストレージプロバイダロールを含む複数のロールを管理することであって、ストレージコンシューマロールが、ストレージコンシューマロールに対して有効化され、かつストレージプロバイダロールに対して無効化される、データ管理命令に関連付けられ、ストレージプロバイダロールが、ストレージプロバイダロールに対して有効化され、かつストレージコンシューマロールに対して無効化される、ストレージ管理命令に関連付けられる、管理することと、ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令をサービスすることであって、データ管理命令が、ストレージシステム上のデータを操作するための命令である、サービスすることと、ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージ管理命令をサービスすることであって、ストレージ管理命令が、ストレージシステムを管理するための命令である、サービスすることと、を含む、方法、装置、又は製品。
【0308】
2.ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令をサービスすることであって、データ管理命令が、ストレージシステム上のデータを操作するための命令である、サービスすることが、ストレージコンシューマロールに関連付けられた第1のクライアントからの削除命令をサービスすることを含む、ステートメント1に記載の方法、装置、又は製品。
【0309】
3.ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージ管理命令をサービスすることであって、ストレージ管理命令が、ストレージシステムを管理するための命令である、サービスすることが、ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージシステム上の保護ポリシーを改変するための命令をサービスすることを含む、ステートメント2又はステートメント1に記載の方法、装置、又は製品。
【0310】
4.ストレージシステムが、ストレージシステムからクライアントにストレージサービスを提供するエッジ管理サービスに通信可能に結合される、ステートメント3、ステートメント2、又はステートメント1に記載の方法、装置、又は製品。
【0311】
5.ストレージコンシューマロールに関連付けられた第1のクライアントからのデータ管理命令であって、ストレージシステム上のデータを操作する命令であるデータ管理命令をサービスすることが、エッジ管理サービスによって、第1のクライアントからデータ管理命令を受信することであって、エッジ管理サービスが、ストレージシステムからクライアントにストレージサービスを提供する、受信することと、エッジ管理サービスによって、第1のクライアントに関連付けられたロールがストレージコンシューマロールであることを検証することと、を含む、ステートメント4、ステートメント3、ステートメント2、又はステートメント1に記載の方法、装置、又は製品。
【0312】
6.ストレージプロバイダロールに関連付けられた第2のクライアントからストレージ管理命令であって、ストレージシステムを管理するための命令であるストレージ管理命令をサービスすることが、エッジ管理サービスによって、ゲートウェイを介して、第2のクライアントからストレージ管理命令を受信することであって、エッジ管理サービスが、ストレージシステムからクライアントにストレージサービスを提供し、ゲートウェイが、第2のクライアントにエッジ管理サービスへのアクセスを提供する、受信することと、エッジ管理サービスによって、第2のクライアントに関連付けられたロールがストレージプロバイダロールであることを検証することと、を含む、ステートメント5、ステートメント4、ステートメント3、ステートメント2、又はステートメント1の方法、装置、又は製品。
【0313】
7.データ管理命令が、データ書き込み命令、データ読み出し命令、データ削除命令、及びストレージクラスインスタンス化命令を含む、ステートメント6、ステートメント5、ステートメント4、ステートメント3、ステートメント2、又はステートメント1に記載の方法、装置、又は製品。
【0314】
8.ストレージ管理命令が、領域作成命令、アベイラビリティゾーン作成命令、ストレージクラス定義命令、及び保護ポリシー命令を含む、ステートメント7、ステートメント6、ステートメント5、ステートメント4、ステートメント3、ステートメント2、又はステートメント1に記載の方法、装置、又は製品。
【0315】
9.ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージ管理命令をサービスすることであって、ストレージ管理命令が、ストレージシステムを管理するための命令である、サービスすることが、ストレージプロバイダロールに関連付けられた第2のクライアントからの、ストレージシステム上のデータセットに適用されるストレージサービスを実装するための命令をサービスすることを含む、ステートメント8、ステートメント7、ステートメント6、ステートメント5、ステートメント4、ステートメント3、ステートメント2、又はステートメント1に記載の方法、装置、又は製品。
【0316】
10.ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージ管理命令をサービスすることであって、ストレージ管理命令が、ストレージシステムを管理するための命令である、サービスすることが、ストレージプロバイダロールに関連付けられた第2のクライアントからのストレージシステム性能を記述するメトリクスに対する要求をサービスすることを含む、ステートメント9、ステートメント8、ステートメント7、ステートメント6、ステートメント5、ステートメント4、ステートメント3、ステートメント2、又はステートメント1に記載の方法、装置、又は製品。
【0317】
1つ以上の実施形態は、指定された機能の性能及びその関係を示す方法ステップの助けを借りて、本明細書で説明され得る。これらの機能的ビルディングブロック及び方法ステップの境界及び順序は、説明の便宜上、本明細書において任意に定義されている。指定された機能及び関係が適切に実施される限り、代替の境界及びシーケンスを定義することができる。したがって、任意のかかる代替の境界又は順序は、特許請求の範囲及び精神の範囲内である。更に、これらの機能的ビルディングブロックの境界は、説明の便宜上、任意に定義されている。特定の重要な機能が適切に実施される限り、代替の境界を定義することができる。同様に、フロー図のブロックはまた、特定の重要な機能を例解するために本明細書で任意に定義されている場合がある。
【0318】
使用される範囲において、フロー図のブロック境界及びシーケンスは、他の方法で定義されてもよく、依然として特定の重要な機能を実施することができる。したがって、機能的ビルディングブロックとフロー図のブロック及びシーケンスとの両方のかかる代替の定義は、特許請求の範囲及び趣旨の範囲内にある。当業者はまた、本明細書における機能的ビルディングブロック、並びに他の例示的なブロック、モジュール、及び構成要素が、例解されるように、又は個別の構成要素、特定用途向け集積回路、適切なソフトウェアを実行するプロセッサなど、若しくはそれらの任意の組み合わせによって実装され得ることを認識するであろう。
【0319】
1つ以上の実施形態の種々の機能及び特徴の特定の組み合わせが本明細書に明示的に記載されているが、これらの特徴及び機能の他の組み合わせも同様に可能である。本開示は、本明細書に開示される特定の例によって限定されず、これらの他の組み合わせを明示的に組み込む。
図1A
図1B
図1C
図1D
図2A
図2B
図2C
図2D
図2E
図2F
図2G
図3A
図3B
図3C
図3D
図3E
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
【国際調査報告】