以下の説明では、種々の実施形態が説明される。説明の目的で、実施形態の十分な理解を提供するように具体的な構成および詳細が説明される。しかしながら、実施形態が具体的な詳細なしに実施され得ることは当業者にも明白である。更には、既知の特徴は、記載される実施形態を曖昧にしないように省略または簡略化され得る。
本明細書に記載され提案される技術は、対費用効果の高い信頼性があり拡張性のあるアーカイブデータ記憶サービスを提供するための方法およびシステムを含む。一実施形態では、アーカイブデータ記憶システムが、顧客にプログラム的なユーザインターフェースを用いてアーカイブデータオブジェクトを記憶させ、検索させ、削除させる、ならびにメタデータおよび構成を遂行させる。
一実施形態では、アーカイブデータ記憶サービスは、サービスのユーザ(人間のユーザであれ自動化されたユーザであれ)の視点からは、データ検索およびあるメタデータ動作が完了するのに時間がかかるように思われる一方で、データ記憶および削除の動作は、同期方式で処理されるように思われるように動作する。一実施形態では、顧客がアーカイブデータ記憶システムにデータオブジェクトを記憶するように要求すると、システムは、顧客の要求に応答して顧客にデータオブジェクト識別子を提供する。データオブジェクト識別子は、記憶されたデータオブジェクトを検索する、削除する、または別様に記憶されたデータオブジェクトを参照する後続の要求で使用され得る。いくつかの実施形態では、データオブジェクトは、本明細書に記載されるアーカイブデータ記憶に直ちに記憶される。他の実施形態では、データオブジェクトは、一時データストアに記憶される。本明細書に使用されるように、一時データストアは、データオブジェクトをそれらが本明細書に記載のアーカイブデータ記憶に記憶される前に記憶するかまたはアーカイブデータ記憶から検索されるデータオブジェクトを記憶するために使用されるデータストアを指す一時的データストアまたはステージングデータストアと同義に使用される。一時データストアは、揮発性または不揮発性(耐久性)の記憶を提供し得る。ほとんどの実施形態では、一時データストアは、永続的にデータを記憶するために潜在的に使用可能である一方で、アーカイブデータ記憶システムよりも短期間だけデータを記憶するように意図され、本明細書に記載のデータアーカイブ記憶システムよりも対費用効果が少ない場合がある。一時データストアにデータが記憶される場合、データ記憶ジョブは、最終的にデータオブジェクトをアーカイブデータ記憶システムに記憶するように作成され得る。データ記憶ジョブの少なくともいくつかは、データオブジェクト識別子が顧客に提供された後で次いで処理され得る。本明細書に使用されるように、「ジョブ」とは、顧客要求に対応する、要求が処理されたかまたは応答が提供された後で遂行され得るデータ関連アクティビティを指す。
一実施形態では、顧客が、アーカイブデータ記憶システムからデータオブジェクトを検索する要求をすると、システムは、顧客要求に関連付けられたデータ検索ジョブを作成し、顧客にジョブ識別子を提供する。一実施形態では、要求は、データオブジェクトが上述のように前に記憶されたときシステムが出したような検索されるデータオブジェクトのためのデータオブジェクト識別子を指定する。ジョブ識別子を提供することに続いて、システムは、バッチ処理技術の効率性および他の利点から利益を得るように、システムにおける他のジョブと一緒にデータ検索ジョブを処理し得る。顧客は、システムから通知を受け取ること、ジョブ識別子を用いてシステムに問い合わせること等によりジョブのステータスを取得し得、ジョブが完了すると、指定の一時データストアから検索されたデータをダウンロードする。一実施形態では、あるメタデータ操作は、類似方式で処理される。
一実施形態では、顧客が、アーカイブデータ記憶システムからデータオブジェクトを削除すると要求すると、システムは、顧客に削除の確認応答を提供する。いくつかの実施形態では、データオブジェクトは、直ちに削除される。他の実施形態では、システムは、顧客要求に関連付けられたデータ削除ジョブを作成し、可能であれば確認応答を提供した数日後もしくは更に長期後に、削除の確認応答を提供した後でデータ削除ジョブを処理する。いくつかの実施形態では、システムは、顧客が中止するか、操作を取り消すか、または別様にデータオブジェクトを回復することができる猶予期間を与える。
一実施形態では、アーカイブデータ記憶システムは、顧客要求を処理し、認証、承認、使用量測定、課金および請求等の機能性を遂行するフロントエンドサブシステムを含む。加えて、フロントエンドサブシステムは、アーカイブデータ記憶システム中へおよびアーカイブデータ記憶システムからのバルクデータ転送も処理し得る。
一実施形態では、アーカイブデータ記憶システムは、ペイロードデータの(データ記憶のための)受信のためおよび(データ検索のための)送信のための一時耐久性の記憶装置またはステージング領域を提供する直接I/Oのための制御プレーンを含む。更に、直接I/Oのための制御プレーンは、顧客要求に関連付けられたジョブの実行を作成し、依頼し、監視するためのサービスを提供する。
一実施形態では、アーカイブデータ記憶システムは、とりわけアーカイブデータ記憶システム内に入ってくる平均ロードまでピークを弱めるための待ち行列ベースのロードのレベリングサービスを提供する共有制御プレーンを含む。一実施形態では、共有制御プレーンは、ジョブ計画の最適化、検査ポインティング、回復等を実施するように(以下に記載の)データプレーンでサービスにより使用され得るジョブ実行のための耐久性があり高効率性の一時ストアもまた提供する。
一実施形態では、アーカイブデータ記憶システムは、長期アーカイブデータ記憶、検索および削除、データ管理および配置、反エントロピー動作等に関連するサービスを提供するデータプレーンを含む。一実施形態では、データプレーンは、(ハードディスクドライブのような)記憶デバイス、記憶ノード、サーバ等を含む複数の記憶エンティティを含む。様々な実施形態では、記憶エンティティは、高記憶容量および低動作費を提供するように設計されている。例えば、データプレーンは、向上したハードドライブ容量を提供するように瓦記録方式(SMR)技術を備えるハードドライブを含み得る。別の実施例として、電力管理スケジュールは、ハードウェアデバイスに関連する電力および冷却費用を節約するため、所定の時間にどのハードドライブが有効であるかを制御するように使用され得る。更に、データプレーンは、エントロピー効果(例えば、ハードウェアの破損、データの損失)を検出して反エントロピールーチンを開始するように反エントロピー動作もまた提供し得る。
一実施形態では、アーカイブデータ記憶システムは、インベントリおよび課金目的、顧客メタデータ照会、反エントロピー処理等のためのシステムに記憶されるデータオブジェクトについての情報を提供するメタデータプレーンを含む。具体的には、メタデータプレーンは、ジョブ完了記録に基づいてコールドインデックス(すなわち、低頻度で更新されるインデックス)を生成し得る。様々な実施形態では、メタデータプレーンサービスは、バッチ処理のような技術を用いて最小限の付帯費用を課すように設計されている。
様々な実施形態では、本明細書に記載のアーカイブデータ記憶システムは、効率的および拡張性があるように実装される。例えば、一実施形態では、バッチ処理および要求の結合は、効率性を改善するように様々な段階(例えば、フロントエンド要求処理、制御プレーンジョブ要求処理、データプレーンデータ要求処理)で使用される。別の実施例には、一実施形態では、ジョブ、要求等のメタデータを処理することは、サービスの複数のインスタンスによって分割された領域の並列処理を容易にするように分割される。
一実施形態では、(以下に記載のデータ構成要素、ボリューム等の)アーカイブデータ記憶システムに記憶されたデータ要素は、グローバルインデックスデータ構造の必要性を避けるように自己記述型である。例えば、一実施形態では、システムに記憶されたデータオブジェクトは、記憶場所情報を符号化するデータオブジェクト識別子によってアドレス可能であり得る。別の実施例には、一実施形態では、ボリュームは、どのデータオブジェクトがボリュームに記憶されたかについての情報を記憶し得、記憶ノードおよびそのようなボリュームを記憶するデバイスは、集合的に、システムに記憶されたデータのグローバルな視点を提供するように、そのインベントリおよびハードウェア情報を記録し得る。そのような実施形態では、グローバルな視聴は、効率性のためのみに提供され、システムに記憶されたデータの場所を特定する必要はない。
様々な実施形態では、本明細書に記載のアーカイブデータ記憶システムは、データ信頼性および耐久性を改善するように実装され得る。例えば、一実施形態では、データオブジェクトは、冗長的に複数のデータ構成要素に符号化され、耐障害性を提供するように異なるデータ記憶エンティティにわたって記憶される。別の実施例には、一実施形態では、データ要素は、整合性検査の複数のレベルを有する。一実施形態では、親子関係は、常に、完全な参照整合性を確実にするように付加的な情報を有する。例えば、一実施形態では、イニシエータに、伝送前にデータについてのダイジェストを事前計算させ、続いてデータと共にダイジェストを受信器に供給させることよって、バルクデータ伝送および記憶経路が保護される。データ伝送の受信器は、再計算、比較、および次いで再計算されたダイジェストを含む送信元へ確認応答することを担う。そのようなデータ整合性検査は、例えば、図2に関連して以下に説明されるフロントエンドサービス、一時データ記憶サービス、データプレーン記憶エンティティ等によって実装され得る。
本開示の実施形態は、中でも、記憶を対象としたデータペイロードの整合性またはデータペイロードの部分を検証するかまたは別様に確証することに関する。いくつかの実施例では、アーカイブデータ記憶サービスは、データ、いくつかの場合大量のデータを、多くの場合比較的長い様々な期間にわたって論理データコンテナまたは他のアーカイブ記憶デバイスに記憶する要求を受け取るように構成され得る。いくつかの実施例では、アーカイブデータ記憶サービスは、多くの異なる記憶デバイスを動作し得るかまたは別様に活用し得る。例えば、アーカイブ記憶サービスは、動作の際、高速回転磁気メディアを活用する1つ以上のディスクドライブを含み得る。加えて、アーカイブデータ記憶サービスは、(例えば、潜在的に異なる郵便番号に関連付けられた)1つ以上の地理的な場所に位置する1つ以上のラックを含み得る。各ラックは、1つ以上のまたは更に数百の、ディスクドライブ等のハードドライブを更に含み得るがこれらに限定されない。
いくつかの態様では、アーカイブデータ記憶サービスは、これらに限定されないが、ウェブサービス、リモートプログラム実行サービス、または他のネットワーク型データ管理サービス等のサービスを通じて1つ以上のコンピューティングリソースの記憶、アクセス、および/または配置を提供し得る。例えば、ユーザ、クライアントエンティティ、コンピューティングリソース、または他のコンピューティングデバイスは、アーカイブデータ記憶サービス、データ記憶、および/または管理を介してアクセスし得、よってアクセス機構が、実装され得、および/またはユーザまたはコンピューティングデバイスに提供され得る。いくつかの実施例では、アーカイブデータ記憶サービスにより提供されるもののようなコンピューティングリソースサービスは、ユーザインターフェース(UI)、アプリケーションプログラミングインターフェース(API)、および/または1つ以上のコンピューティングリソースが所望のように拡張性のあるおよび/または拡張可能な他のインターフェースを通じて1つ以上のネットワークにわたってアクセス可能な1つ以上のコンピューティングリソースを含み得る。
いくつかの実施例では、アーカイブデータ記憶サービスは、これらに限定されないが、アーカイブデータ記憶サービスを活用する第三者サービスまたはアーカイブデータ記憶サービスに関連付けられた他のウェブサービスのようなユーザまたはクライアントエンティティが潜在的に長く永続的な記憶のためにデータをアップロードできるようにし得る。文脈によって明示的にまたは明らかに別様に矛盾しない限り、用語「ユーザ」とは、アーカイブデータ記憶サービスを活用する任意のエンティティを説明するように本明細書に使用される。アーカイブデータ記憶サービスは、アーカイブ化されたデータの整合性を確実にすること、および/またはアーカイブ化されたデータの整合性を保証することもまた切望する。これらの標的を達成するように、いくつかの実施例では、アーカイブデータ記憶サービスは、一旦アップロードされたデータを識別するためにデータオブジェクト識別子を提供し得る。いくつかの場合では、データオブジェクト識別子は、更にある程度長い期間の後に、アーカイブ化されたデータを検証するために上位レベルツリーダイジェストもまた含み得る。加えて、データオブジェクト識別子は、その整合性が同様に検証され得るそのような方式においても構成され得る。
アーカイブデータ記憶サービスは、データがパート、部分、または他の画定された群へ細分化されるように、記憶されるデータ上で操作を遂行するように構成され得る。パートに分離されると、アーカイブデータ記憶サービスは、ダイジェスト(ハッシュ値、ハッシュコード、チェックサム等とも称される)を作製するように、これらに限定されないが、ハッシュ関数または他の暗号または他の方法を含むパート上で1つ以上の暗号化関数および/またはアルゴリズムを遂行し得る。いくつかの実施例では、データは、アーカイブ記憶サービスが、記憶されるデータが受け取られたデータと合うことを確実にできるように検証され得る。この方法で、データ整合性が検証され得る。加えて、データの送信元は、独立して、データチャンクサイズ(すなわち、ペイロードのパートのサイズ)を判定することができ得、この情報を維持するかまたは持続するように要求されない。例えば、ユーザまたはクライアントエンティティは、2メガバイト(MB)部分(チャンク)により1ギガバイト(GB)のファイルをアップロードするように要求し得る。および2MBチャンクが使用されたという事実をセーブするまたは別様に持続することなく、データペイロードは、更に検証され得る。つまり、チャンクについての1つ以上のダイジェスト、チェックサム、ハッシュコード等、および、少なくともペイロードについてのダイジェストを生成することに少なくとも部分的に基づいて(いくつかの実施例では少なくとも部分的にダイジェストの組み合わせに基づいて)、データは、後に、検証される能力を損失することなく、異なるサイズ決めされたチャンクに分割され得る。
いくつかの態様では、これは、データが分割されるべきおよび/またはハッシュ化されるべき方法を示す命令またはアルゴリズムをユーザまたはクライアントエンティティに提供することにより達成され得る。加えて、いくつかの場合では、アーカイブ記憶サービスは、ユーザが、チャンクとしてデータを適切にアップロードして、要求された操作の順序および/または適切なチェックサム情報の包括を容易にすることを可能にするように、1つ以上のAPIメソッド呼び出しおよび/またはソフトウェア開発キット(SDK)を公開または提供し得る。例えば、ユーザは、データをアップロードするために少なくとも1MB、またはいくつかの他の所定のサイズのチャンクサイズを選択するように要求され得る。本明細書に使用されるように、ユーザまたはクライアントエンティティによりアップロードされるおよび/またはアーカイブデータ記憶サービスにより記憶されるデータは、ペイロードと称され得る。加えて、ユーザは、ペイロードが1MBの2の整数乗を含むサイズ(例えば、1MB、2MB、4MB、8MB、16MB等)に分割されるようにアーカイブデータ記憶サービスを選択し得るまたは別様に命令し得る。他の実施例では、ペイロードは、他の複数の所定のサイズ(例えば、1MB)を含むサイズに分割され得る。他の複数のものは、データを表すのに使用される子ツリーの次数に少なくとも部分的に基づき得る。例えば、二分木が使用された場合、整数の倍数は、2の整数乗を含み得、三分木が使用された場合、整数の倍数は、3の整数乗を含み得、四分木(すなわち、各ノードが4つの子を有し得る)が使用された場合、整数の倍数は、4の整数乗を含み得る。ユーザは、次いで、1つ以上のハッシュツリー(例えば、ペイロードが分割されるときのパート当たり1つのハッシュツリー)および/または各分割された領域のための1つ以上のハッシュ値を生成するためのアルゴリズムに従い得る。加えて、ユーザは、選択された分割された領域サイズと無関係に各1MBチャンクのためのハッシュ値(またはダイジェスト)を生成し得る。いくつかの実施例では、分割された領域の1MBチャンクに対応するこれらのダイジェストは、分割された領域のためのハッシュツリーに含まれ得る。更に、いくつかの実施例では、各分割された領域のハッシュツリーのルートノードは、分割された領域の各1MBのサブパートのためのダイジェストと共にアーカイブデータ記憶サービスに提供され得る。この方法で、各サブパートは、少なくとも部分的に1MBダイジェストに基づいてアーカイブデータ記憶サービスにより検証され得、各分割された領域は、各パートのためのルートダイジェストに少なくとも部分的に基づいてアーカイブデータ記憶サービスにより検証され得る。加えて、パートのための各ルートハッシュのハッシュに関連付けられた最終ルートハッシュは、受け取られた最終ルートハッシュとアーカイブデータ記憶サービスにより判定された上位レベルハッシュ値とを比較することに少なくとも部分的に基づいて、アーカイブデータ記憶サービスにより使用され得る。
少なくとも1つの実施例では、ハッシュツリーまたは他の階層型データ構造(例えば、これらに限定されないが、B−ツリー等の他のタイプの二分木、および/またはこれらに限定されないが、配列、記録等の他のタイプのデータ構造)を生成することは、ダイジェストを連結して連結ダイジェスト上でハッシュ関数を実行することを含み得る。例えば、2分ハッシュツリーでは、ルートノードは、それぞれ1つのハッシュ値により表される2つの子を有し得る。いくつかの場合では、ルートハッシュ値を生成することは、2つの子ハッシュ値を連結して新たな一片のデータを形成することと、新たな一片のデータに対してハッシュ関数を更に実行することとに少なくとも部分的に基づき得る。得られたハッシュ値は、ルートハッシュを表し得る。そのように、ペイロードの各分割された領域は、そのルートハッシュがペイロードのために上位レベルハッシュを計算する際に使用され得るが、それ自体のルートハッシュを有し得る。いくつかの実施例では、ユーザにより選択された分割された領域サイズを再確認または別様に持続することなくペイロードおよび/またはペイロードの部分を検証することもまた可能であり得る。
本開示の実施形態は、中でも、記憶サービスの1つ以上の記憶デバイスを機能させる、動作する、記憶サービスの1つ以上の記憶デバイスに電力を提供する、または別様に記憶サービスの1つ以上の記憶デバイスを制御するために1つ以上のスケジュールを判定することおよび/または実装することに関する。いくつかの実施例では、記憶サービスは、多くの異なるコンピューティングデバイスおよび/または記憶デバイスを動作するまたは別様に活用するアーカイブデータ記憶サービスであり得る。例えば、アーカイブ記憶サービスは、動作の際、高速回転磁気メディアを活用する1つ以上のディスクドライブを含み得る。加えてアーカイブデータ記憶サービスは、1つ以上の地理的な場所(例えば、潜在的に異なる郵便番号に関連付けられた)に位置する1つ以上のラックを含み得る。各ラックは、1つ以上のまたは更に数百のディスクドライブ等のハードドライブを更に含み得るがこれらに限定されない。加えて、ハードドライブのメディアを回転させること、ドライブコントローラおよび/またはプロセッサ等を動作することは、概して、比較的多量の電力を消費し、費用がかかり得る。
いくつかの態様では、アーカイブデータ記憶サービスは、ハードドライブ電力消費を変更することおよび/または管理することにより記憶デバイスに関連付けられた電力および/または冷却費用を最小化するように構成され得る。ほんの一例として、アーカイブデータ記憶サービスは、所定の時間で活発に高速回転媒体を有し得るハードドライブの数を制御するように構成され得る。加えて、いくつかの実施例では、アーカイブデータ記憶サービスは、電力を節約するようにドライブを閉じるかまたは止める代わりに回転速度を変更するように構成され得る。例えば、いくつかのドライブは、速度を落とすことができ、回転スケジュールは、速度を落とすドライブと通常速度で実行するドライブとを回転できる。加えて、いくつかの場合では、ハードドライブのようなデータ記憶デバイスを制御するように構成され得るデータ記憶ノードは、どのハードドライブが有効でありどのハードドライブが有効でないかを判定および/または制御し得る。ハードドライブは、その媒体が高速回転する、起動中である、および/または電源を落としている場合、有効であるとみなされ得る。例えば、高速回転するハードドライブは、ディスクが回転しているものを含み得、ヘッドは、回転している間にドライブからのデータを書き込むか、読み出すか、または削除するようにドライブの場所を磁化し得る。しかしながら、他の実施例では、ドライブは、有効にされ得るが、しかしながら、それはまだ完全に回転していない可能性がある。この実施例では、ドライブは、起動中であり得る。あるいは、ドライブが一旦有効にされると、データ記憶ノードまたは他のコントローラは、ドライブを無効にし得るが、しかしながら、それは、ドライブがもはや高速回転しなくなるまでにいくらか時間がかかり得る。これは、電源を落としているとみなされ得る。したがって、場合によってはドライブが動作可能だが有効でない期間が存在する可能性がある。更に、いくつかの実施例では、データ記憶デバイスを有効にすることは、現在電力を受け取っていないデバイスに電力を提供することか、または電力を受け取っているがスリープモードにあるデバイスを有効にすることを含み得る。したがって、データ記憶デバイスは、オフ、オン、スリープ、電源を落としていること、または起動していることを含む多くの状態にある可能性があるがこれらに限定されない。
いくつかの態様では、データ記憶ノードは、回転スケジュールを判定し、回転スケジュールを提供し、および/または記憶デバイスを有効にして無効にするように構成され得る。加えて、記憶ノードは、1つ以上の記憶ノードマネージャが、どの、書き込むジョブ、読み出すジョブ、または削除するジョブを実行するかに関して通知され得るように、記憶ノードレジストラ、待ち行列、または他のライブラリにこの情報を報告し得る。概して、受信書き込み要求を処理して有効であるいずれかのドライブ内にそれらを配置するように十分な容量が存在するという前提に少なくとも部分的に基づいて、どの時点でも書き込みジョブを実行することは可能であり得る。しかしながら、いくつかの実施例では、記憶ノードマネージャは、それらが有効である場合に少なくとも部分的に基づいて特定のドライブにおいて書き込みジョブを実行するように要求し得るか、または別様に命令され得る。この場合、記憶ノードマネージャは、ジョブを実行することに先駆けて記憶ノードから、回転スケジュールか、または少なくともどのドライブが有効であるかの指標を最初に要求し得る。いくつかの数のドライブが有効でない可能性もあるが、概して、所望の速度で書き込み要求を処理するように十分な有効なハードドライブが存在するという前提に少なくとも部分的に基づいて、どの時点でも書き込みジョブを実行することもまた可能であり得る。
少なくとも1つの実施例では、回転スケジュールは、同時に有効であるドライブの割合または数に少なくとも部分的に基づき得る。例えば、アーカイブ記憶サービスは、任意の所与の期間に所定の割合のドライブのみが有効とされるということを決定し得る。したがって、所定の割合が有効であり得る際、全ての他のドライブは、スリープモードまたは他の低電力状態モードであり得る。加えて、ドライブの合計数は、決定された割合に少なくとも部分的に基づいて群に細分化され得る。例えば、制限なく、アーカイブ記憶サービスがドライブうちの20%が有効であるべきだと判断した場合、制御されるドライブのセットは、5つの群に細分化され得る。この方法で、ドライブの各群が有効であると、所定のドライブの20%が有効になる。ドライブの他の80%は、スリープモードまたは他の低電力状態モードであり得る。あるいは、任意の他の割合は、所望のように、ドライブの群の対応する数を計算するように(例えば、25%で4つの群ができ、10%で10の群ができ、50%)で2つの群ができる等)使用され得る。更に、いくつかの態様では、群は、群間で均一性が保たれない割合に対応するように、均等である必要はない(例えば、11%で9つの均等な群と1つのより小さい群ができる)。あるいは、割合は、群間で均一性が保たれるように切り上げされるかまたは切り捨てされてもよい。加えて、いくつかの実施例では、1時間は、各群が有効であるべき時間がどのくらいかを判定するように、得られる群の数で分割され得る。例えば、例示目的のためのみであるが20%の実施例を用いると、各群は、各群が1時間当たり少なくとも一度有効である調整をするために、12分間有効であるようにスケジュールされ得る。更に、出力スパイクまたは焼損を避けるために、いくつかの実施例では、ある群内のドライブが順次起動されるか、または少なくとも全てが同時に起動されなくてもよい。あるいは、または加えて、有効である群の各ドライブの電源が順次落とされ、一方次の有効にされる群のドライブが順次起動されてもよい。
他の実施例では、回転スケジュールは、割合とは対照的に、所定の時間で有効になるドライブの所定の数に少なくとも部分的に基づき得る。加えて、回転スケジュールは、ドライブの理論的なまたは実際の配列に沿ってある速度でまたは間隔で移動するウィンドウをスライドすることを含み得る。ウィンドウ内に位置するドライブは、ウィンドウの外のドライブが低電力状態(オフにされるかまたは無効にされることを含み得る)であり得る際、有効にされ得る。所望のように、ドライブは、少なくとも部分的にそれらの実際の場所および/または少なくとも部分的に論理マッピングに基づいてタイムライン上で分類され得る。ウィンドウは、タイムラインを横切るように構成され得る。あるいは、スライディングウィンドウ内部でドライブを有効にすることの他の実施例が、想定され得る。回転スケジュールは、これらに限定されないが、(例えば、諸設備の会社実費および/または見積もりに少なくとも部分的に基づく)ピーク電力消費時間、顧客の需要、保留ジョブ等を含む需要にもまた少なくとも部分的に基づき得る。ほんの一例として、1つのシナリオは、複数の記憶ノードマネージャからの保留中の読み出し要求があることに少なくとも部分的に基づいてドライブが有効であるようにスケジュールすることを含み得る。この実施例では、記憶ノードレジストラは、需要に見合うように回転状態になるべきドライブの数または割合を選択するように構成され得る。記憶ノードレジストラは、さらに、回転状態になるようにドライブが選択されると、ドライブが回転のためにスケジュールされたというメッセージを、記憶ノードに送信し得る。あるいは、または加えて、記憶ノードマネージャは、レジストラが回転において適切なドライブを含むと、記憶ノードに通知し得る。
図1は、少なくとも1つの実施形態に従って、顧客102とアーカイブデータ記憶システム104との間の例示的な一連の通信を例示する。例示的な通信は、例えば、アーカイブデータ記憶システムにアーカイブデータオブジェクトを記憶し続いでアーカイブデータ記憶システムからアーカイブデータオブジェクトを検索するように使用され得る一連の要求および応答を例示する。様々な実施形態では、例示された一連の通信は、以下に記載の図2に例示されるような環境200で起こり得る。
様々な実施形態では、アーカイブデータ記憶システム104は、アーカイブデータ記憶システム104を通信する顧客のようなエンティティのためのユーザインターフェースを提供し得る。様々な実施形態では、そのようなユーザインターフェースは、グラフィカルユーザインターフェース(GUI)、ウェブベースのインターフェース、アプリケーションプログラミングインターフェース(API)および/またはインターフェース要素に対応するリモートプロシージャコール(RPC)のセット等のプログラマチックインタフェース、インターフェース要素が通信プロトコルのメッセージに対応するメッセージングインターフェース、および/またはそれらの好適な組み合わせを含み得る。例えば、顧客は、データを記憶するか、検索するか、または削除するか、ならびにメタデータ情報を取得し、種々の操作パラメータを構成する等するように、そのようなユーザインターフェースを使用し得る。様々な実施形態では、アーカイブデータ記憶システム104は、顧客要求を処理するために、下の図2に記載されるようなフロントエンドサービスを含み得る。
一実施形態では、顧客デバイス102(単に「顧客」とも称される)は、例えば、上に記載のようなAPIを用いてデータを記憶する要求106を開始する。記憶要求106は、アーカイブファイルのようなペイロードデータおよびペイロードデータのサイズとダイジェストのようなメタデータ、ユーザ識別情報(例えば、顧客アカウント識別子)、論理記憶コンテナの識別子(図2に関連して説明される)等を含み得る。いくつかの実施形態では、複数の記憶要求106は、複数の記憶要求のうちの各々がペイロードデータの一部分を含み得る、巨大ペイロードデータのアップロードを要求するように使用され得る。他の実施形態では、記憶要求106は、アップロードされる複数のデータオブジェクトを含み得る。
記憶要求106を受け取ることに応じて、一実施形態では、アーカイブデータ記憶システム104は、ステージングストアにデータを記憶し得る108。いくつかの実施形態では、ペイロードデータのみが、ステージング記憶装置に記憶される。他の実施形態では、データオブジェクト識別子等の付加的なデータは、ペイロードデータと共に記憶されてもよい。一実施形態では、ジョブは、本明細書に記載されるように、ステージング記憶に記憶されたデータをアーカイブデータ記憶に移動させるために作成される。本明細書に使用されるように、「ジョブ」とは、要求が受け取られた時間から一時的に独立して遂行され得る顧客要求に対応するデータ関連アクティビティを指す。例えば、ジョブは、データを検索すること、記憶および削除すること、メタデータを検索すること等を含み得る。様々な実施形態では、ジョブは、例えば、特定の顧客のための全てのジョブの中で、データセンター等内で一意であり得るジョブ識別子によって識別され得る。そのようなジョブは、アーカイブデータ記憶にデータオブジェクトを記憶するように処理され得る114。一実施形態では、ジョブは、費用、応答時間、効率性、操作性能、およびシステムの他の規準を最適化するように、他のジョブ(以下に論じられる他のデータ記憶ジョブまたは検索ジョブ)に関連して実行され得る。例えば、ジョブは、処理能力を改善し、電力消費を削減する等するように、記憶場所により分類され得るか、結合され得るか、バッチ処理され得るか、または別様に最適化され得る。別の実施例として、ジョブは、(例えば、顧客、時間等で)分割され得、各分割された領域は、サービスの異なるインスタンスにより並列して処理され得る。
一実施形態では、アーカイブデータ記憶システム104は、(データがステージングストアに記憶されるのみかどうかにかかわらず)データの記憶を確認応答する応答110を顧客102に送信する。よって、顧客の目線からは、記憶要求は、同期方式で処理される。一実施形態では、応答は、データを検索するか、削除するか、または別様に管理する後続の顧客要求によって使用され得るデータオブジェクト識別子を含む。いくつかの実施形態では、顧客102は、顧客側のデータストア、データ記憶サービス等にデータオブジェクト識別子112を記憶し得る。例えば、顧客102は、データオブジェクト識別子を対応するユーザに分かりやすい名称またはグローバル一意識別子(GUID)に関連付けるマップを維持し得る。他の実施形態では、記憶要求は、検索要求に関連して以下に説明されるものに類似の様式において非同期方式で処理されるように顧客によって認識され得る。
いくつかの実施形態では、データオブジェクト識別子は、記憶されたデータオブジェクトの場所を特定するように使用され得る記憶場所情報、ペイロードデータの整合性を検証するように使用され得るサイズ、タイムスタンプ、ダイジェスト等のペイロード検証情報、データオブジェクト識別子そのもの等のメタデータの整合性を検証するように使用され得るエラー検出コード等のメタデータ検証情報、要求されたアクセスを検証するように使用され得るポリシー情報等を(例えば、暗号化を介して)符号化し得る。他の実施形態では、データオブジェクト識別子は、暗号化のようないずれの符号化もなく上の情報を含んでもよい。
一実施形態では、顧客102は、例えば、上に記載のようなAPIを用いて、アーカイブデータ記憶システム104に記憶されたデータを検索する要求116を開始する。検索要求116は、上述のように、応答110に提供されたような検索されるデータに関連付けられたデータオブジェクト識別子を指定し得る。検索要求116を受け取ることに応じて、一実施形態では、アーカイブデータ記憶システム104は、本明細書に記載のアーカイブデータ記憶からデータを検索する検索ジョブ118を作成する。システムは、上の、記憶ジョブに関連して説明されるものに類似の様式においてそのような検索ジョブを作成し得る。
一実施形態では、アーカイブデータ記憶システム104は、検索ジョブのためにジョブ識別子を有する応答120を提供する。よって、顧客の目線からは、検索要求は、非同期方式で処理される。いくつかの実施形態では、顧客102は、顧客側の記憶装置にジョブ識別子122を記憶し、任意に、検索ジョブのステータスのためにジョブ識別子クエリーを使用するか、またはアーカイブデータ記憶システムにポーリングし得る。
一実施形態では、アーカイブデータ記憶システム104は、費用を最適化するようにバッチ処理等の技術を用いて、他のジョブ(例えば、記憶ジョブ、検索ジョブ、削除ジョブ等)に関連して検索ジョブを処理する124。検索ジョブを処理した後で、アーカイブデータ記憶システム104は、上で論議された、記憶要求に関連付けられたデータを記憶するためのステージングストアに類似のステージングストアに検索されたデータを記憶する126。
一実施形態では、アーカイブデータ記憶システム104は、要求されたデータが、例えば、検索してステージングストアに入れられた後で、顧客102に通知128を提供する。そのような通知は、実装された実施形態に従って、検索されたデータをダウンロードするように、顧客により構成可能であり得、検索要求に関連付けられたジョブ識別子、データオブジェクト識別子、ダウンロード場所への経路、顧客の識別、または使用される任意の他の情報を含み得る。様々な実施形態では、そのような通知は、アーカイブデータ記憶システムに加わってもよく加わらなくてもよい通知サービスにより提供され得る。他の実施形態では、顧客102は、ジョブのステータスに関して検索ジョブ識別子を使用してアーカイブデータ記憶システムに問い合わせするかまたはポーリングしてもよい。
一実施形態では、検索ジョブの完了を知らされると、顧客102は、ステージされたデータをダウンロードするダウンロード要求130を送信する。様々な実施形態では、ダウンロード要求130は、実装されている実施形態において、ステージングされたデータをダウンロードするため使用される、例えば、ジョブ識別子、データオブジェクト識別子、および、顧客アカウント識別子等の他の識別情報等の、通知に含まれる情報を提供し得る。ダウンロード要求130に応答して、アーカイブデータ記憶システム104は、ステージされたデータをステージングストアから検索し得132、応答134で検索されたデータを顧客102に提供し得る。
図2は、少なくとも1つの実施形態に従って、アーカイブデータ記憶システムが実装され得る例示的な環境200を例示する。1つ以上の顧客202は、ネットワーク204を介して、アーカイブデータ記憶システム206に接続する。上に含意されたように、文脈から明らかでない限り、用語「顧客」とは、本明細書に記載されるデータ記憶サービスを活用する顧客エンティティ(個人、会社、または他の団体等)のシステム(複数可)を指す。そのようなシステムは、データセンター、大型汎用機、個別コンピューティングデバイス、分散型コンピューティング環境およびその顧客アクセス可能インスタンス、またはアーカイブデータ記憶システムと通信できる任意の他のシステムを含んでもよい。いくつかの実施形態では、顧客は、アーカイブデータ記憶システムもまた提供するコンピューティングリソースプロバイダにより提供される分散型コンピューティングシステムのマシーンインスタンス(例えば、直接ハードウェアアクセスで)または仮想化インスタンスを指し得る。いくつかの実施形態では、アーカイブデータ記憶システムは、分散型コンピューティングシステムに不可欠であり、分散型コンピューティングシステムのインスタンス、仮想化またはマシンを含み得るか、または分散型コンピューティングシステムのインスタンス、仮想化またはマシンで実装され得る。様々な実施形態では、ネットワーク204は、インターネット、ローカルエリアネットワーク(「LAN」)、広域ネットワーク(「WAN」)、セルラーデータネットワークおよび/または他のデータネットワークを含み得る。
一実施形態では、アーカイブデータ記憶システム206は、各テナントまたは顧客が、顧客に割り当てられたデータ記憶空間のデータを記憶するか、検索するか、削除するか、または別様に管理するマルチテナントまたは複数顧客の環境を提供する。いくつかの実施形態では、アーカイブデータ記憶システム206は、複数のサブシステム、または各々がサービスまたは機能性の特定のセットを提供する「プレーン」を備える。例えば、図2に例示されるように、アーカイブデータ記憶システム206は、フロントエンド208、直接I/Oのための制御プレーン210、共有制御プレーン212、データプレーン214、およびメタデータプレーン216を含む。各サブシステムまたはプレーンは、機能性の特定のセットを集合的に提供する1つ以上の構成要素を含み得る。各構成要素は、コンピュータ、データ記憶デバイス等の1つ以上の物理的および/または論理的コンピューティングデバイスで実装され得る。各サブシステム内の構成要素は、同一サブシステム内の構成要素、他のサブシステム内の構成要素、または顧客等の外部エンティティと通信し得る。そのような対話処理のうちの少なくともいくつかは、図2に矢印によって示される。具体的には、アーカイブデータ記憶システム206の内外の主要バルクデータ転送経路は、太い矢印によって表される。種々の実施形態が図2に例示されるものよりも少ないかまたはより多くの数のシステム、サブシステム、および/またはサブ構成要素を有し得ることは、当業者により理解される。よって、図2の環境200の描写は、事実上、例示的なものであり、本開示の範囲を限定するものとみなすべきではない。
例示的な実施形態では、フロントエンド208は、アーカイブデータ記憶システム206と本明細書に記載される1つ以上の顧客202等の外部エンティティとの間のインターフェースを提供するサービスの一群を実装する。様々な実施形態では、フロントエンド208は、ユーザがアーカイブデータ記憶システムの種々の機能、構成要素、および性能とプログラムでインターフェース接続することを可能にするようにアプリケーションプログラミングインターフェース(「API」)を提供する。そのようなAPIは、グラフィカルユーザインターフェース(GUI)、ウェブベースのインターフェース、アプリケーションプログラミングインターフェース(API)および/またはインターフェース要素に対応するリモートプロシージャコール(RPC)のセット等のプログラマチックインタフェース、インターフェース要素が通信プロトコルのメッセージに対応するメッセージングインターフェース、および/またはそれらの好適な組み合わせを含み得るユーザインターフェースに加わり得る。
アーカイブデータ記憶システム206により提供される性能は、データ記憶、データ検索、データ削除、メタデータ操作、種々の操作パラメータの構成等を含み得る。メタデータ操作は、特定の顧客のために記憶されたデータのカタログを検索する要求、データ回復要求、ジョブ照会等を含み得る。構成APIは、顧客にアカウント情報、監査ログ、ポリシー、通知設定等を構成させ得る。顧客は、API要求をアーカイブデータ記憶システムに送信することで上の操作のうちのいずれかの実施を要求し得る。同様に、アーカイブデータ記憶システムは、顧客要求への応答を提供し得る。そのような要求および応答は、ハイパーテキスト転送プロトコル(「HTTP」)、ファイル転送プロトコル(「FTP」)等の任意の好適な通信プロトコル上で、REpresentational State Transfer(「REST」)、シンプルオブジェクトアクセスプロトコル(「SOAP」)等の任意の好適なフォーマットで提出され得る。要求および応答は、例えば、暗号化キー等で暗号化されたBase64符号化を用いて符号化され得る。
いくつかの実施形態では、アーカイブデータ記憶システム206は、顧客に1つ以上のアーカイブデータオブジェクトを記憶する論理データコンテナのような1つ以上の論理構造を作成させる。本明細書に使用されるように、データオブジェクトは、広く使用され、任意の特定の構造または他のデータへの関係を必ずしも暗示するものではない。データオブジェクトは、例えば、単にビットの配列であり得る。典型的に、そのような論理データ構造は、顧客のあるビジネス要件に見合うように作成され得、独立して、アーカイブデータ記憶システムに記憶されたデータの物理組織である。本明細書に使用されるように、用語「論理データコンテナ」とは、データオブジェクトの群化を指す。例えば、特定の目的のためまたは特定の期間中に作成されたデータオブジェクトは、同一の論理データコンテナに記憶され得る。各論理データコンテナは、ネスト化されたデータコンテナまたはデータオブジェクトを含み得、コンテナのサイズ制限のような一式のポリシー、コンテナに記憶され得るデータオブジェクトの最大数、有効期限、アクセス制御リスト等と関連付けられ得る。様々な実施形態では、論理データコンテナは、例えば構成可能な情報に基づいて、API要求を介して顧客によって、システム管理者によって、またはデータ記憶システムによって、作成されるか、削除されるか、または別様に修正され得る。例えば、次のHTTP PUT要求は、一実施形態では、アカウント識別子「accountId」により識別される顧客に関連付けられる名称「logical−container−name」を有する論理データコンテナを作成するように使用され得る。
PUT/{accountId}/logical−container−name HTTP/1.1
一実施形態では、アーカイブデータ記憶システム206は、データオブジェクトを論理データコンテナ内に記憶するように顧客のためにAPIを提供する。例えば、次のHTTP POST要求は、例示的な実施形態では、所与の論理コンテナ内にデータオブジェクトを記憶するように使用され得る。一実施形態では、要求は、記憶場所の論理経路、データ長、データペイロードへの参照、データペイロードのデジタルダイジェスト、および他の情報を指定し得る。一実施形態では、APIは、顧客に、1つの要求で複数のデータオブジェクトを1つ以上の論理データコンテナにアップロードさせ得る。データオブジェクトが巨大な別の実施形態では、APIは、顧客に、各々がデータオブジェクトの一部分を有する複数のパートにおいてデータオブジェクトをアップロードさせ得る。
POST/{accountId}/logical−container−name/data HTTP/1.1
Content−Length:1128192
x−ABC−data−description:“annual−result−2012.xls”
x−ABC−md5−tree−hash:634d9a0688aff95c
データ記憶要求に応答して、一実施形態では、アーカイブデータ記憶システム206は、データオブジェクトが成功裡に記憶された場合、データオブジェクト識別子を提供する。そのようなデータオブジェクト識別子は、後続の要求において記憶されたデータオブジェクトを検索するか、削除するか、または別様に参照するように使用され得る。いくつかの実施形態では、そのようなデータオブジェクト識別子は、グローバル名前空間キーマップ(global namespace key map)等の付加的なデータ構造を必要とせず、データオブジェクトの場所を特定するようにアーカイブデータ記憶システムにより使用され得る(例えば、暗号化の有無にかかわらず)記憶場所情報をそこに含む「自己記述型」であり得る。更に、いくつかの実施形態では、データオブジェクト識別子は、ペイロードダイジェスト、エラー検出コード、アクセス制御データ、および後続の要求およびデータ整合性を検証するように使用され得る他の情報等の他の情報もまた符号化し得る。いくつかの実施形態では、アーカイブデータ記憶システムは、受信データをアーカイブデータ記憶に移動させる前にそれを一時耐久性データストアに記憶する。よって、顧客は、アップロードされた要求が完了されるとその瞬間データが耐久的に持続されたと見なし得るが、実際の長期持続されたデータストアへの記憶は、ある程度後(例えば、12時間後)まで開始されない可能性がある。いくつかの実施形態では、実際の記憶のタイミングは、データオブジェクトのサイズ、概日周期中のシステムロード、顧客と記憶サービスプロバイダとの間のサービスレベル契約等の構成可能な情報、および他の要因によって様々であり得る。
いくつかの実施形態では、アーカイブデータ記憶システム206は、顧客がアーカイブデータ記憶システムに記憶されたデータを検索するためのAPIを提供する。そのような実施形態では、顧客は、データ検索を遂行するようにジョブを開始し得、ジョブのステータスのために通知によってまたはシステムをポーリングすることによってジョブの完了を知り得る。本明細書に使用されるように、「ジョブ」とは、要求が受け取られた時間から一時的に独立して遂行され得る顧客要求に対応するデータ関連アクティビティを指す。例えば、ジョブは、データを検索すること、記憶および削除すること、メタデータを検索すること等を含み得る。ジョブは、例えば、特定の顧客のための全てのジョブの中で一意であり得るジョブ識別子によって識別され得る。例えば、次のHTTP POST要求は、例示的な実施形態では、データオブジェクト識別子「dataObjectId」によって識別されたデータオブジェクトを検索するジョブを開始するように使用され得る。他の実施形態では、データ検索要求は、複数のデータオブジェクト、論理データコンテナと関連付けられるデータオブジェクト等の検索を要求し得る。
POST/{accountId}/logical−data−container−name/data/{dataObjectId}HTTP/1.1
要求に応答して、一実施形態では、アーカイブデータ記憶システム206は、次の応答においてジョブに割り当てられたジョブ識別子 job−id」を提供する。この実施例では、応答は、検索されたデータが記憶される記憶場所までの経路を提供する。
HTTP/1.1 202 ACCEPTED
Location:/{accountId}/logical−data−container−name/jobs/{job−id}
任意の時点で、アーカイブデータ記憶システムは、種々のデータ操作のために多くの保留中のジョブを有し得る。いくつかの実施形態では、アーカイブデータ記憶システムは、費用、性能、拡張性等のシステム規準を最適化するように、バッチ処理、ロード分散、ジョブ結合等のジョブ計画および最適化技術を用い得る。いくつかの実施形態では、実際のデータ検索のタイミングは、検索されたデータのサイズ、システムロードおよび容量、記憶デバイスの有効なステータス等の要因によって様々である。例えば、いくつかの実施形態では、アーカイブデータ記憶システムにおける少なくともいくつかのデータ記憶デバイスは、例えば、動作費用を削減するために電力管理スケジュールに従って有効にされ得るかまたは無効化され得る。よって、(回転ハードドライブ等の)現在有効な記憶デバイスに記憶されたデータの検索は、(回転を抑えた(spinned−down)ハードドライブ等の)現在無効の記憶デバイスに記憶されたデータの検索よりも速い可能性がある。
一実施形態では、データ検索ジョブが完了されると、検索されたデータは、ステージングデータストアに記憶されて顧客ダウンロードのために利用可能になる。いくつかの実施形態では、顧客は、構成可能な通知サービスによりジョブのステータスにおける変更を通知される。他の実施形態では、顧客は、ジョブ識別子を用いてシステムをポーリングすることによってジョブのステータスを知り得る。次のHTTP GET要求は、一実施形態では、前に提供されたダウンロード経路を用いて、「job−id」によって識別されるジョブにより検索されるデータをダウンロードするように使用され得る。
GET/{accountId}/logical−data−container−name/jobs/{job−id}/output HTTP/1.1
GET要求に応答して、例示的な実施形態では、アーカイブデータ記憶システム206は、次のHTTP応答において確証目的のためのデータのツリーハッシュを有する検索されたデータを提供し得る。
HTTP/1.1 200 OK
Content−Length:1128192
x−ABC−archive−description:“retrieved stuff”
x−ABC−md5−tree−hash:693d9a7838aff95c
[1112192バイトのユーザデータが続く]
一実施形態では、顧客は、データオブジェクトに関連付けられたデータオブジェクト識別子を指定することによりアーカイブデータ記憶システムに記憶されるデータオブジェクトの削除を要求し得る。例えば、例示的な実施形態では、データオブジェクト識別子「dataObjectId」を有するデータオブジェクトは、次のHTTP要求を用いて削除され得る。別の実施形態では、顧客は、特定の論理データコンテナに関連付けられたもののような複数のデータオブジェクトの削除を要求し得る。
DELETE/{accountId}/logical−data−container−name/data/{dataObjectId}HTTP/1.1
様々な実施形態では、データオブジェクトは、顧客要求に応答して削除され得るか、またはユーザ指定の有効期限または初期設定の有効期限に従って自動的に削除され得る。いくつかの実施形態では、データオブジェクトは、有効期間に応じて顧客がアクセスできないようにレンダリングされ得るが、有効期間を超える猶予期間中には回復可能状態で残る。様々な実施形態では、猶予期間は、顧客構成、サービスレベル契約条件等の構成可能な情報に基づき得る。いくつかの実施形態では、顧客は、保留データ削除のための通知を問い合わせるかまたは受け取る、および/または保留データ削除のうちの1つ以上をキャンセルする能力を提供され得る。例えば、一実施形態では、顧客は、顧客が論理データコンテナに関連付けられたある事象の通知を受け取るように論理データコンテナに関連付けられた通知構成を設定し得る。そのような事象は、データ検索ジョブ要求の完了、メタデータ要求の完了、データオブジェクトまたは論理データコンテナの削除等を含み得る。
一実施形態では、アーカイブデータ記憶システム206は、論理データコンテナに関連付けられたメタデータのようなメタデータを検索して管理するためにメタデータAPIもまた提供する。様々な実施形態では、そのような要求は、(結果が後に戻される)非同期にかまたは(結果が直ぐに戻される)同期に処理され得る。
なおも図2を参照して、一実施形態では、上で論じたAPI要求のうちの少なくともいくつかは、フロントエンド208の一部としてAPI要求ハンドラ218によって処理される。例えば、API要求ハンドラ218は、uniform resource identifier(「URI」)、要求された作用および関連付けられたパラメータ、識別情報、データオブジェクト識別子等の情報を抽出するように受信API要求を復号し得るおよび/または解析し得る。更に、API要求ハンドラ218は、必要な場合、API要求を更に処理するように(以下に記載の)他のサービスを呼び出す。
一実施形態では、フロントエンド208は、API要求を認証するように、例えば、APIハンドラ218によって呼び出され得る認証サービス220を含む。例えば、いくつかの実施形態では、認証サービス220は、ユーザ名およびパスワードインターネットプロトコル(「IP)アドレス、クッキー、デジタル証明書、デジタル署名等のAPI要求と共に提出された識別情報を確証し得る。他の実施形態では、認証サービス220は、付加的な情報を提供するか、またはチャレンジレスポンス認証プロトコル等下で、多元的認証スキームで要求されたような要求を認証するように更なるステップを遂行するように顧客に要求し得る。
一実施形態では、フロントエンド208は、要求に関連付けられたように決定された1つ以上のポリシーに従って要求されたアクセスが許可されるかどうかを判定するように、例えば、APIハンドラ218によって呼び出され得る承認サービス222を含む。例えば、一実施形態では、承認サービス222は、要求されたアクセスが、要求元のそれ自体の論理データコンテナに含まれるデータオブジェクトに関するか、またはリクエスタが別様にアクセスするように認証されるかを確証する。いくつかの実施形態では、承認サービス222またはフロントエンド208の他のサービスは、データオブジェクト識別子によって符号化された検証情報のような要求に符号化された情報に少なくとも部分的に基づいてデータ要求の検証性および整合性を検査し得る。
一実施形態では、フロントエンド208は、使用されたデータ記憶空間、記憶されたデータオブジェクトの数、処理されたデータ要求等の各顧客のためのサービス使用情報を監視する計測サービス224を含む。一実施形態では、フロントエンド208は、例えば、計測サービス224によって収集される計測情報、顧客アカウント情報等に基づいて課金および請求に関連した機能性を遂行する課金サービス226もまた含む。例えば、顧客は、顧客により使用された記憶空間、データオブジェクトのサイズおよび数、提出された要求の種類および数、顧客アカウントの種類、サービスレベル契約等に基づいて料金を請求され得る。
一実施形態では、フロントエンド208は、いくつかのまたは全ての受信要求をバッチ処理する。例えば、フロントエンド208は、(例えば、認証、承認、課金等の)要求を処理する前に一定の数の要求が受け取られるまで待機し得る。そのような受信要求のバッチ処理は、効率性を増加させるように使用され得る。
いくつかの実施形態では、フロントエンド208は、API要求を更に処理するようにアーカイブデータ記憶システムの他のサブシステムによって提供されるサービスを呼び出し得る。例えば、フロントエンド208は、メタデータ要求を満たすようにメタデータプレーン216においてサービスを呼び出し得る。別の実施例には、フロントエンド208は、直接I/Oのための制御プレーン210の内外でそれぞれ、データ記憶および検索要求のためにデータを配信し得る。
ここで図2に例示される直接I/Oのための制御プレーン210を参照すると、様々な実施形態では、直接I/Oのための制御プレーン210は、顧客要求の結果として作成されたジョブを作成、トラック、および管理するサービスを提供する。上で論じられたように、ジョブは、データ検索、記憶、メタデータクエリー等の開始する要求に非同期に遂行され得る顧客開始型アクティビティを指す。一実施形態では、直接I/Oのための制御プレーン210は、API要求ハンドラ218から受け取られたもののような顧客要求に対応するジョブ記録またはエントリーを作成しジョブの実行を監視するように構成される、ジョブトラッカー230を含む。様々な実施形態では、ジョブ記録は、顧客アカウント識別子、ジョブ識別子、データオブジェクト識別子、(以下に記載の)ペイロードデータキャッシュ228への参照、ジョブステータス、データ検証情報等のジョブの実行に関連する情報を含み得る。いくつかの実施形態では、ジョブトラッカー230は、複数の要求からジョブ記録を構成するのに必要な情報を収集し得る。例えば、大量のデータが記憶されるように要求されると、データアップロードは、複数の要求に細分化され得、各々がデータの一部分をアップロードする。そのような場合には、ジョブトラッカー230は、ジョブ記録が作成される前に全てのデータパートが受け取られることを確実にするように、アップロードステータスのトラックを保管するように情報を維持し得る。いくつかの実施形態では、ジョブトラッカー230は、記憶されるデータに関連付けられたデータオブジェクト識別子もまた取得し、例えば、顧客に戻されるようにフロントエンドサービスにデータオブジェクト識別子を提供する。一実施形態では、そのようなデータオブジェクト識別子は、以下に記載される、記憶ノードマネージャ244、記憶ノードレジストラ248等のデータプレーン214サービスから取得され得る。
いくつかの実施形態では、直接I/Oのための制御プレーン210は、ジョブエントリーまたは記録を記憶するためにジョブトラッカーストア232を含む。様々な実施形態では、ジョブトラッカーストア232は、キーバリューデータストアのようなNoSQLデータ管理システム、リレーショナルデータベース管理システム(「RDBMS」)、または任意の他のデータ記憶システムにより実装され得る。いくつかの実施形態では、ジョブトラッカーストア232に記憶されたデータは、特定の顧客に属するジョブの高速列挙を可能にし、効率的なバルク記録削除、サービスの別々のインスタンスによる並列処理等を容易にするように分割され得る。例えば、ジョブトラッカーストア232は、顧客アカウント識別子に従って分割され範囲キー(range keys)としてジョブ識別子を使用する、テーブルを実装し得る。一実施形態では、ジョブトラッカーストア232は、ジョブの終了およびクリーンアップ動作を容易にするように、(ジョブ有効期間等の)時間に基づいて更に副次的に分割(sub−partitioned)される。一実施形態では、ジョブトラッカーストア232に対するトランザクションは、トランザクションの合計数を削減するように集約され得る。例えば、いくつかの実施形態では、ジョブトラッカー230は、1つの単一の集約されたジョブをジョブトラッカーストア232内に挿入する前に、複数の要求に対応する集合的な複数のジョブを1つの単一の集約されたジョブ内に実施し得る。
一実施形態では、ジョブトラッカー230は、例えば、共有制御プレーン212におけるサービスによって、更なるジョブスケジューリングおよび計画のためのジョブを提出するように構成される。加えて、ジョブトラッカー230は、ジョブの実行を監視し、ジョブが完了されるとジョブトラッカーストア232の対応するジョブ記録を更新するように構成され得る。いくつかの実施形態では、ジョブトラッカー230は、ジョブステータスクエリーのような顧客クエリーを処理するように更に構成され得る。いくつかの実施形態では、ジョブトラッカー230は、顧客またはアーカイブデータ記憶システムの他のサービスにジョブステータス変更の通知も提供する。例えば、データ検索ジョブが完了すると、ジョブトラッカー230は、(例えば、通知サービスを用いて)データがダウンロード可能であると顧客に通知し得る。別の実施例として、データ記憶ジョブが完了すると、ジョブトラッカー230は、以下に記載の一時ペイロードデータキャッシュ228からデータ記憶ジョブに関連付けられるペイロードデータを消去するようにクリーンアップエージェント(cleanup agent)234に通知し得る。
一実施形態では、直接I/Oのための制御プレーン210は、データプレーン214とフロントエンド208との間を通過するペイロードデータのための一時データ記憶サービスを提供するためにペイロードデータキャッシュ228を含む。そのようなデータは、記憶保留中の受信データおよび顧客のダウンロード待ちの送信データを含む。本明細書に使用されるように、一時データストアは、データオブジェクトをそれらが本明細書に記載のアーカイブデータ記憶に記憶される前に記憶するかまたはアーカイブデータ記憶から検索されるデータオブジェクトを記憶するために使用されるデータストアを指す一時的データストアまたはステージングデータストアと同義に使用される。一時データストアは、揮発性または不揮発性(耐久性)の記憶を提供し得る。ほとんどの実施形態では、一時データストアは、永続的にデータを記憶するために潜在的に使用可能である一方で、アーカイブデータ記憶システムよりも短期間だけデータを記憶するように意図され、本明細書に記載のデータアーカイブ記憶システムよりも対費用効果が少ない場合がある。一実施形態では、受信および送信データに提供された一時データ記憶サービスは、分化され得る。例えば、アーカイブデータ記憶にまだ持続されていない受信データのためのデータ記憶は、アーカイブデータ記憶にすでに持続されている送信(検索された)データのためのデータ記憶より高度な信頼性および耐久性を提供し得る。別の実施形態では、一時記憶は、受信データにとって任意であり得、それは、例えば、十分な帯域幅および/または記憶する容量を有するシステムが存在する場合受信データは、ペイロードデータキャッシュ228等の一時データ記憶に記憶されることなくアーカイブデータ記憶に直接記憶され得るためである。
一実施形態では、直接I/Oのための制御プレーン210は、ジョブトラッカーストア232および/またはペイロードデータキャッシュ228を監視し、これ以上必要ないデータを消去するクリーンアップエージェント234もまた含む。例えば、データ記憶要求に関連付けられたペイロードデータは、データが永久記憶装置(例えば、データプレーン214)に持続された後で、ペイロードデータキャッシュ228から安全に消去され得る。リバース経路上で、顧客ダウンロードのためにステージされたデータは、利用可能な期間後(例えば、データがステージされてから30日間)かまたは顧客がステージされたデータがこれ以上必要ないと示した後に、ペイロードデータキャッシュ228から消去され得る。
いくつかの実施形態では、クリーンアップエージェント234は、ジョブステータスが、ジョブが完了したかまたは強制終了したかを示すと、ジョブトラッカーストア232からジョブ記録を消去する。上で論じられたように、いくつかの実施形態では、ジョブトラッカーストア232は、より速いクリーンアップを可能にする可能にするように分割され得る。データが顧客アカウント識別子によって分割される一実施形態では、クリーンアップエージェント234は、個別のジョブを1つずつ削除することの代わりに、ジョブが完了したとき特定の顧客アカウントのためのジョブを記憶するテーブル全体を消去し得る。データがジョブ有効期間に基づいて更に副次的に分割される別の実施形態では、クリーンアップエージェント234は、分割された領域の全てのジョブの有効期限が切れた後でジョブの全部の分割された領域またはテーブルをバルク削除し得る。他の実施形態では、クリーンアップエージェント234は、クリーンアップエージェント234にジョブトラッカーストア232および/またはペイロードデータキャッシュ228からジョブ記録を消去させるジョブトラッカー230のような他のサービスから命令または(ジョブが完了した指標等の)制御メッセージを受け取り得る。
ここから図2に例示される共有制御プレーン212を参照する。様々な実施形態では、共有制御プレーン212は、I/Oのための制御プレーン210から入ってくる平均ロードレベル(ジョブ)までピークを弱め、データプレーン214に管理可能な作業負荷を送達するように待ち行列ベースのロードのレベリングサービスを提供する。一実施形態では、共有制御プレーン212は、上述のように、直接I/Oのための制御プレーン210のジョブトラッカー230によって作成されたジョブを受け取るためのジョブ要求待ち行列236、データプレーン214(例えば、記憶ノードマネージャ244)からのサービスが実行する作業を受け取る記憶ノードマネージャジョブストア240、およびジョブ要求待ち行列236から記憶ノードマネージャジョブストア240に知的な様式でジョブアイテムを転送するための要求分散装置238を含む。
一実施形態では、ジョブ要求待ち行列236は、待ち行列(例えば、先入先出法(FIFO)または先入後出法(FILO))、セット、または任意の他の好適なデータ構造にアイテムを挿入する、およびそこからアイテムを消去するためのサービスを提供する。ジョブ要求待ち行列236のジョブエントリーは、上述のように、ジョブトラッカーストア232に記憶されたジョブ記録に類似してもよく、またはジョブ記録から異なってもよい。
一実施形態では、共有制御プレーン212は、データプレーン214(例えば、記憶ノードマネージャ244、反エントロピーウォッチャー252)からのサービスが、ジョブ計画の最適化、検査ポインティング、および回復を遂行することを可能にする耐久性がある高効率性ジョブストア、記憶ノードマネージャジョブストア240も提供する。例えば、一実施形態では、記憶ノードマネージャジョブストア240は、走査すること、問い合わせること、分類すること、または記憶ノードマネージャジョブストア240に記憶されたジョブアイテムを別様に操作することおよび管理することを支持することによって、バッチ処理、動作を結合すること等のジョブ最適化を可能にする。一実施形態では、記憶ノードマネージャ244は、受信ジョブを走査し、データ操作(例えば、読み出し、書き込み、または削除)の種類、記憶場所(例えば、ボリューム、ディスク)、顧客アカウント識別子等によってジョブを分類する。記憶ノードマネージャ244は、次いで、再順序付けするか、結合させるか、バッチにおいて群化させるか、または処理のためにジョブを別様に操作しスケジュールし得る。例えば、一実施形態では、記憶ノードマネージャ244は、全ての読み出しおよび削除操作の前に全ての書き込み操作をバッチ処理し得る。別の実施形態では、記憶ノードマネージャ244は、動作結合を遂行し得る。別の実施例には、記憶ノードマネージャ244は、同じオブジェクトのための複数の検索ジョブを1つのジョブに結合し得るか、または削除ジョブが記憶ジョブの後にくる同一のデータオブジェクトのための記憶ジョブおよび削除ジョブをキャンセルし得る。
一実施形態では、記憶ノードマネージャジョブストア240は、複数の記憶ノードマネージャ244の独立処理を可能にし、全ての関与する記憶ノードマネージャ244に受信作業負荷の均等分散を提供するように、例えば、ジョブ識別子に基づいて、分割される。様々な実施形態では、記憶ノードマネージャジョブストア240は、キーバリューデータストアのようなNoSQLデータ管理システム、RDBMS、または任意の他のデータ記憶システムにより実装され得る。
一実施形態では、要求分散装置238は、作業負荷の変形例をならしシステム可用性を増加させるように、ジョブ要求待ち行列236から記憶ノードマネージャジョブストア240にジョブアイテムを転送するためのサービスを提供する。例えば、要求分散装置238は、記憶ノードマネージャストア240の作業負荷の比較的に持続可能なレベルを維持するように、ジョブ要求待ち行列236に入ってくるジョブ要求にサージが存在する場合、より低い速度で、またはより小さい粒度でジョブ要求待ち行列236からジョブアイテムを転送し得、入ってくるジョブ要求に小康状態が存在する場合である逆の場合も同様である。いくつかの実施形態では、作業負荷のそのような持続可能なレベルは、システムの平均作業負荷とほぼ同じかまたは下回る。
一実施形態では、完了したジョブアイテムは、記憶ノードマネージャジョブストア240から消去され、ジョブ結果待ち行列242に追加される。一実施形態では、データプレーン214サービス(例えば、記憶ノードマネージャ244)は、記憶ノードマネージャジョブストア240からジョブアイテムを消去して、それらをジョブ結果待ち行列242に追加することを担う。いくつかの実施形態では、上に論じられる、ジョブ要求待ち行列242は、ジョブ要求待ち行列236として類似の様式で実装され得る。
ここから図2に例示されるデータプレーン214を参照する。様々な実施形態では、データプレーン214は、長期アーカイブデータ記憶、検索および削除、データ管理および配置、反エントロピー動作等に関連するサービスを提供する。様々な実施形態では、データプレーン214は、データ記憶デバイス(テープドライブ、ハードディスクドライブ、ソリッドステートデバイス等)、記憶ノードまたはサーバ、データセンター等の任意の数および種類の記憶エンティティを含み得る。そのような記憶エンティティは、物理的か、仮想化か、またはそれらの任意の抽象化(例えば、分散型記憶および/またはコンピューティングシステムのインスタンス)であり得、階層型または段層式トポロジーを含む任意のトポロジー中に体系化される。同様に、データプレーンの構成要素は、分散されるか、ローカルか、またはそれらの任意の組み合わせであり得る。例えば、種々のコンピューティングまたは記憶構成要素は、任意の数のデータセンター、サーバ、またはデータ記憶デバイスに対してローカルかまたはリモートであり得、これらの任意の数のデータセンター、サーバ、またはデータ記憶デバイスは、互いに対してローカルかまたはリモートであり得る。様々な実施形態では、物理的な記憶エンティティは、有効である物理的なハードウェア(例えば、活発に回転しているハードドライブの数)の部分を制御することによって電力および冷却費用を最小化するために設計され得る。一実施形態では、物理的な記憶エンティティは、記憶容量を向上させるように瓦記録方式(SMR)のような技術を実装する。
図2により例示される環境では、1つ以上の記憶ノードマネージャ244それぞれは、データおよび制御メッセージを送信することおよび受け取ることによって1つ以上の記憶ノード246を制御する。その結果、各記憶ノード246は、ハードディスクドライブのようなデータ記憶デバイスの(潜在的に大きい)集合体を制御する。様々な実施形態では、記憶ノードマネージャ244は、1つ以上の記憶ノード246と通信し得、記憶ノード246は、1つ以上の記憶ノードマネージャ244と通信し得る。一実施形態では、記憶ノードマネージャ244は、ダイジェスト計算、データ符号化および復号、ジョブ計画および最適化等の比較的複雑な計算を遂行できる1つ以上のコンピューティングデバイスによって実装される。いくつかの実施形態では、記憶ノード246は、記憶ノードマネージャ244より劣る計算性能を有する1つ以上のコンピューティングデバイスによって実装される。更に、いくつかの実施形態では、記憶ノードマネージャ244は、データ経路に含まれていない可能性がある。例えば、データは、ペイロードデータキャッシュ228から直接記憶ノード246に伝送され得るか、または1つ以上の記憶ノード246からペイロードデータキャッシュ228に伝送され得る。この方法で、記憶ノードマネージャ244は、ペイロードデータキャッシュ228および/または記憶ノード246から直接ペイロードを受け取ることなく、ペイロードデータキャッシュ228および/または記憶ノード246に命令を伝送し得る。様々な実施形態では、記憶ノードマネージャ244は、データの流れを導くように本明細書に記載のアーカイブデータ記憶システム206の任意の他の構成要素に命令または制御メッセージを送信し得る。
一実施形態では、記憶ノードマネージャ244は、共有制御プレーン212(例えば、記憶ノードマネージャジョブストア240)からジョブアイテムを選ぶこと、ペイロードデータキャッシュ228からステージされたデータを検索してデータ記憶ジョブのために必要なデータ符号化を遂行すること、およびデータを記憶、検索、または削除するように適切な記憶ノード246に要求することによって、データプレーン214に入ってきてデータプレーン214から出ていくジョブのためのエントリーポイントとして機能する。記憶ノード246が要求されたデータ操作を遂行することを終了すると、記憶ノードマネージャ244は、データ復号することおよびデータ検索ジョブのためにペイロードデータキャッシュ228に検索されたデータを記憶することのような付加的な処理を遂行し得、共有制御プレーン212においてジョブ記録を更新し得る(例えば、記憶ノードマネージャジョブストア240から終了したジョブを消去して、それらをジョブ結果待ち行列242に追加すること)。
一実施形態では、記憶ノードマネージャ244は、データ冗長性、安全性等を提供するデータ記憶の前に1つ以上のデータ符号化スキームに従ってデータ符号化を遂行する。そのようなデータ符号化スキームは、暗号化スキーム、消失訂正符号化のような冗長性符号化スキーム、redundant array of independent disks(RAID)符号化スキーム、複製等を含み得る。同様に、一実施形態では、記憶ノードマネージャ244は、元のデータを復元するデータ検索の後で、解読、消失訂正復号化等の対応するデータ復号スキームを遂行する。
記憶ノードマネージャジョブストア240に関連して上で論じられたように、記憶ノードマネージャ244は、効率性を高めるように、バッチ処理、動作結合等のジョブ計画および最適化を実装し得る。いくつかの実施形態では、ジョブは、分割された領域間にわずかの重複しか存在しないようにかまたは重複が存在しないように記憶ノードマネージャの間で分割される。そのような実施形態は、複数の記憶ノードマネージャによって、例えば、競合またはロッキングの確率を削減することによって、並列処理を容易にする。
様々な実施形態では、データプレーン214は、データ整合性を容易にするように実装される。例えば、記憶ノードマネージャ244および/または記憶ノード246のようなバルクデータの流れを処理する記憶エンティティは、記憶されたかまたは検索されたデータのダイジェストを検証し得、メタデータの整合性等を確実にするエラー検出コードを検査し得る。
様々な実施形態では、データプレーン214は、アーカイブデータ記憶システムの拡張性および信頼性を容易にするように実装される。例えば、一実施形態では、記憶ノードマネージャ244は、内部状態が追加されるか、消去されるか、または少しの不利な影響で変換されることができるように、内部状態を維持しないかまたは少しの内部状態を維持する。一実施形態では、各記憶デバイスは、ユニット上に記憶されたデータについての情報を提供することができる自己完結型および自己記述型記憶ユニットである。そのような情報は、データの損失の場合データ回復を容易にするように使用され得る。更には、一実施形態では、各記憶ノード246は、記憶ノードのネットワークの場所および1つ以上の記憶ノードレジストラ248および/または記憶ノードレジストラストア250に接続された記憶デバイスの記憶情報を含む記憶ノードについて、情報を収集することおよび報告することができる。いくつかの実施形態では、記憶ノード246は、システム開始時にそのような自己報告を遂行し、定期的に更新された情報を提供する。様々な実施形態では、そのような自己報告アプローチは、大量のデータオブジェクトがアーカイブデータシステムに記憶される場合に、実質的に増大できるグローバル名前空間キーマップまたはインデックスを維持する必要なく、動的および最新になったディレクトリ情報を提供する。
一実施形態では、データプレーン214は、記憶エンティティのためのディレクトリ情報およびそこに記憶されたデータ、データ配置サービス等を提供する1つ以上の記憶ノードレジストラ248も含み得る。記憶ノードレジストラ248は、記憶ノードレジストラ248のための記憶を提供する1つ以上の記憶ノードレジストラストア250へのフロントエンドサービスと通信し、フロントエンドサービスとして機能し得る。様々な実施形態では、記憶ノードレジストラストア250は、キーバリューデータストアのようなNoSQLデータ管理システム、RDBMS、または任意の他のデータ記憶システムにより実装され得る。いくつかの実施形態では、記憶ノードレジストラストア250は、サービスの複数のインスタンスによる並列処理を可能にするように分割され得る。上で論じられたように、一実施形態では、記憶ノードレジストラストア250で記憶された情報は、記憶ノード246それ自体によって報告された情報に少なくとも部分的に基づく。
いくつかの実施形態では、記憶ノードレジストラ248は、例えば、データ記憶、検索、および削除操作のためにどの記憶ノード246に接触するかを決定したい記憶ノードマネージャ244にディレクトリサービスを提供する。例えば、記憶ノードマネージャ244によって提供されたボリューム識別子を所与として、記憶ノードレジストラ248は、記憶ノードレジストラストア250に維持されるマッピングに基づいて、ボリューム識別子に対応するボリューム構成要素をホストする記憶ノードのリストを提供し得る。具体的には、一実施形態では、記憶ノードレジストラストア250は、ボリュームまたはボリューム構成要素の識別子のリストと、ドメインネームシステム(DNS)名称のような、ボリュームまたはボリューム構成要素をホストする記憶ノードのエンドポイントとの間にマッピングをストアする。
本明細書に使用されるように、「ボリューム」とは、データオブジェクトがそこに記憶され得るデータ記憶システム内の論理記憶空間を指す。ボリュームは、ボリューム識別子によって識別され得る。ボリュームは、1つの物理的な記憶デバイス(例えば、ハードディスク)に存在し得るかまたは複数の記憶デバイスにわたって広がり得る。後者の場合には、ボリュームは、各々が異なる記憶デバイス上に存在する複数のボリューム構成要素を含む。本明細書に使用されるように、「ボリューム構成要素」とは、記憶デバイスのような記憶エンティティに物理的に記憶されるボリュームの一部分を指す。同一のボリュームのためのボリューム構成要素は、異なる記憶エンティティ上に記憶され得る。一実施形態では、データが冗長性符号化スキーム(例えば、消失訂正符号化スキーム、RAID、複製)によって符号化されるとき、各符号化されたデータ構成要素または「分割データベース」は、耐障害性および独立性を提供するように異なるボリューム構成要素に記憶され得る。いくつかの実施形態では、ボリューム構成要素は、ボリューム識別子および分割データベーススロット識別子を含むボリューム構成要素識別子によって識別される。本明細書に使用されるように、分割データベーススロットは、冗長性符号化スキームにおいて特定の分割データベース、行、またはデータのストライプを識別する。例えば、一実施形態では、分割データベーススロットは、消失訂正符号化マトリクス行に対応する。いくつかの実施形態では、記憶ノードレジストラストア250は、合計、使用された空間および空き空間、記憶されたデータオブジェクトの数等のボリュームまたはボリューム構成要素についての情報も記憶する。
いくつかの実施形態では、データプレーン214は、データの独立性および耐障害性制約を満たすように、記憶ノードレジストラストア250によって維持される情報に少なくとも部分的に基づいて、記憶空間(例えば、ボリューム)を新たなデータオブジェクトを記憶する記憶ノード上に割り当てるための記憶アロケータ256も含む。いくつかの実施形態では、記憶アロケータ256は、人手の介入を必要とする。
いくつかの実施形態では、データプレーン214は、エントロピー効果を検出して反エントロピー訂正ルーチンを開始するための反エントロピーウォッチャー252も含む。例えば、反エントロピーウォッチャー252は、記憶ノード、ライブを調製すること、または維持されたデータを有する実際のデータ等の全ての記憶エンティティのアクティビティおよびステータスを監視することを担い得る。様々な実施形態では、エントロピー効果は、繰り返された書き込みまたは再書き込みサイクルからもたらされるデータ断片化が原因の性能低下、(例えば、磁気媒体の)ハードウェアウェア、ハードウェア/ソフトウェア異常が原因のデータ非可用性および/またはデータの損失、環境要因、ハードウェアの物理的な破壊、偶然または他の原因を含むが、これらに限定されない。反エントロピーウォッチャー252は、そのような効果を検出し得、いくつかの実施形態では、先制しておよび/または反応的に反エントロピー訂正ルーチンおよび/またはポリシーを導入する。
一実施形態では、反エントロピーウォッチャー252は、記憶ノード246に、記憶ノードに接続される記憶デバイス上で定期的な反エントロピー走査を実施させる。反エントロピーウォッチャー252は、情報を集め、データ等を回復するようにジョブ要求待ち行列236(および続いてジョブ結果待ち行列242)に要求も入れ得る。いくつかの実施形態では、反エントロピーウォッチャー252は、参照整合性を確実にするように、以下に記載の、例えば、コールドインデックスストア262および記憶ノード246上で走査を遂行し得る。
一実施形態では、記憶ノードレジストラストア250で記憶された情報は、記憶ノードレジストラ248、記憶アロケータ256、反エントロピーウォッチャー252等の様々なサービスによって使用される。例えば、記憶ノードレジストラ248は、データ記憶、検索、および削除中に、(例えば、記憶ノードマネージャ244に)データ場所および配置サービスを提供し得る。例えば、記憶されるデータオブジェクトのサイズおよび記憶ノードレジストラストア250によって維持される情報を所与として、記憶ノードレジストラ248は、データオブジェクトをどこに記憶するか(例えば、ボリューム)を決定し得、データオブジェクトに関連付けられたデータオブジェクト識別子を生成するように使用され得るデータオブジェクトの記憶場所の指標を提供する。別の実施例として、一実施形態では、記憶アロケータ256は、独立性および耐障害性制約を満たすように特定の記憶ノードに新たなボリュームのためのボリューム構成要素を作成して配置する記憶ノードレジストラストア250に記憶された情報を使用する。なおも別の実施例として、一実施形態では、反エントロピーウォッチャー252は、データの損失、ハードウェアの破損等のエントロピー効果を検出するように、記憶ノードレジストラストア250に記憶された情報を使用する。
いくつかの実施形態では、データプレーン214は、記憶システムのオーファンをトラック記録するように使用される、オーファンクリーンアップデータストア254も含む。本明細書に使用されるように、オーファンは、任意の外部エンティティによって参照されない記憶されたデータオブジェクトである。様々な実施形態では、オーファンクリーンアップデータストア254は、キーバリューデータストアのようなNoSQLデータ管理システム、RDBMS、または任意の他のデータ記憶システムにより実装され得る。いくつかの実施形態では、記憶ノードレジストラ248は、オーファンクリーンアップデータストア254にオブジェクト配置情報を記憶する。続いて、オーファンクリーンアップデータストア254に記憶された情報は、例えば、反エントロピーウォッチャー252によってメタデータプレーン216に維持された情報と比較され得る。オーファンが検出された場合、いくつかの実施形態では、オーファンを削除する要求が、共有制御プレーン212に挿入される。
ここから図2に例示されるメタデータプレーン216を参照する。様々な実施形態では、メタデータプレーン216は、インベントリおよび課金目的のための、顧客メタデータ照会等を満たすシステムに記憶されるデータオブジェクトについての情報を提供する。例示された実施形態では、メタデータプレーン216は、共有制御プレーン212のジョブ結果待ち行列242からのエントリーに基づいて実行されたトランザクションについての情報を記憶するメタデータマネジャジョブストア258を含む。様々な実施形態では、メタデータマネジャジョブストア258は、キーバリューデータストアのようなNoSQLデータ管理システム、RDBMS、または任意の他のデータ記憶システムにより実装され得る。いくつかの実施形態では、メタデータマネジャジョブストア258は、例えば、論理データコンテナに基づいて、メタデータマネジャ260のようなサービスの複数のインスタンスによって並列処理を容易にするように、分割されて副次的に分割される。
例示的な実施形態では、メタデータプレーン216は、メタデータマネジャジョブストア258の記録に基づいて、(例えば、コールドインデックスストア262に記憶された)データオブジェクトのコールドインデックスを生成するために1つ以上のメタデータマネジャ260も含む。本明細書に使用されるように、「コールド」インデックスとは、稀に更新されるインデックスを指す。様々な実施形態では、コールドインデックスは、諸費用を削減するために維持される。いくつかの実施形態では、複数のメタデータマネジャ260は、並列してメタデータマネジャジョブストア258の異なる分割された領域から定期的に記録を読み出し処理し得、コールドインデックスストア262に結果を記憶し得る。
いくつかの実施形態では、コールドインデックスストア262は、信頼でき耐久性のあるデータ記憶サービスによって実装され得る。いくつかの実施形態では、コールドインデックスストア262は、顧客によって開始されたメタデータ要求を処理するように構成される。例えば、顧客は、所与の論理データコンテナに含まれる全てのデータオブジェクトを列記する要求を発行し得る。そのような要求に応答して、コールドインデックスストア262は、コールドインデックス262によって維持された情報に基づいて、論理データコンテナに含まれる全てのデータオブジェクトの識別子のリストを提供し得る。いくつかの実施形態では、操作は、比較的長時間かかり得、顧客は、ジョブが終了したとき結果を検索するジョブ識別子を提供され得る。他の実施形態では、コールドインデックスストア262は、インベントリ、課金および請求目的のために、他のサービスからの、例えば、フロントエンド208からの照会を処理するように構成される。
いくつかの実施形態では、メタデータプレーン216は、コンテナ所有、ポリシー、使用量等の論理データコンテナについての情報を記憶するコンテナメタデータストア264も含み得る。そのような情報は、承認、計測、課金等を遂行するように、例えば、フロントエンド208サービスによって、使用され得る。様々な実施形態では、コンテナメタデータストア264は、キーバリューデータストアのようなNoSQLデータ管理システム、RDBMS、または任意の他のデータ記憶システムにより実装され得る。
本明細書に記載されるように、様々な実施形態では、本明細書に記載されるアーカイブデータ記憶システム206は、効率的で拡張性があるように実装される。例えば、一実施形態では、バッチ処理および要求の結合は、効率性を改善するように様々な段階(例えば、フロントエンド要求処理、制御プレーンジョブ要求処理、データプレーンデータ要求処理)で使用される。別の実施例には、一実施形態では、ジョブ、要求等のメタデータを処理することは、サービスの複数のインスタンスによって分割された領域の並列処理を容易にするように分割される。
一実施形態では、(以下に記載のデータ構成要素、ボリューム等の)アーカイブデータ記憶システムに記憶されたデータ要素は、グローバルインデックスデータ構造の必要性を避けるように自己記述型である。例えば、一実施形態では、システムに記憶されたデータオブジェクトは、記憶場所情報を符号化するデータオブジェクト識別子によってアドレス可能であり得る。別の実施例には、一実施形態では、ボリュームは、どのデータオブジェクトがボリュームに記憶されたかについての情報を記憶し得、記憶ノードおよびそのようなボリュームを記憶するデバイスは、集合的に、システムに記憶されたデータのグローバルな視聴を提供するように、そのインベントリおよびハードウェア情報を記録し得る(記憶ノードレジストラストア250に記憶される情報からも明らかなように)。そのような実施形態では、グローバルな視聴は、効率性のためのみに提供され、システムに記憶されたデータの場所を特定する必要はない。
様々な実施形態では、本明細書に記載のアーカイブデータ記憶システムは、データ信頼性および耐久性を改善するように実装され得る。例えば、一実施形態では、データオブジェクトは、冗長的に複数のデータ構成要素に符号化され、耐障害性を提供するように異なるデータ記憶エンティティにわたって記憶される。別の実施例には、一実施形態では、データ要素は、整合性検査の複数のレベルを有する。一実施形態では、親子関係は、常に、完全な参照整合性を確実にするように付加的な情報を有する。例えば、一実施形態では、バルクデータ伝送および記憶経路は、イニシエータに、伝送前にデータについてのダイジェストを事前計算させ、続いてデータと共にダイジェストを受信器に供給させることよって、バルクデータ伝送および記憶経路が保護される。データ伝送の受信器は、再計算、比較、および次いで再計算されたダイジェストを含む送信元へ確認応答することを担う。そのようなデータ整合性検査は、例えば、上に記載されるフロントエンドサービス、一時データ記憶サービス、データプレーン記憶エンティティ等によって実装され得る。
図3は、少なくとも1つの実施形態に従って、アーカイブデータ記憶システムの構成要素が接続され得る相互接続ネットワーク300を例示する。具体的には、例示された実施例は、データプレーン構成要素が、どのように相互接続ネットワーク300に接続されるかを示す。いくつかの実施形態では、相互接続ネットワーク300は、リンク帯域幅が、より高くまたは「より太く」ツリーのルートに向かって増大する太いツリー相互接続ネットワークを含み得る。例示された実施例では、データプレーンは、1つ以上のデータセンター301を含む。各データセンター301は、各サーバラックが図2に関連して説明されるような記憶ノードマネージャの機能性を集合的に提供する1つ以上のサーバをホストする、1つ以上の記憶ノードマネージャサーバラック302を含み得る。他の実施形態では、各記憶ノードマネージャサーバラックは、2つ以上の記憶ノードマネージャをホストし得る。ラック当たりの記憶ノードマネージャの数、記憶ノードマネージャラックの数等の構成パラメータは、費用、拡張性、冗長性および性能要件、ハードウェアおよびソフトウェアリソース等の要因に基づいて決定され得る。
各記憶ノードマネージャサーバラック302は、相互接続ネットワーク300に接続するように使用される相互接続308への記憶ノードマネージャラック接続314を有し得る。いくつかの実施形態では、接続314は、ラックの最上位のイーサネットスイッチまたは任意の他の種類のネットワークスイッチを含み得るネットワークスイッチ303を用いて実装される。様々な実施形態では、相互接続308は、広帯域幅および待ち時間の少ないバルクデータ転送を可能にするように使用される。例えば、相互接続は、Closネットワーク、太いツリー相互接続、非同期転送モード(ATM)ネットワーク、ファストまたはギガビットイーサネット等を含み得る。
様々な実施形態では、記憶ノードマネージャラック接続314の帯域幅は、同一かまたは異なるデータセンター内に位置する記憶ノードマネージャと記憶ノードとの間で広帯域幅および待ち時間の少ない通信を可能にするように構成され得る。例えば、一実施形態では、記憶ノードマネージャラック接続314は、1秒当たり10ギガビット(Gbps)の帯域幅を有する。
いくつかの実施形態では、各データセンター301は、各サーバラックが図2に関連して説明されるような多数の記憶ノードの機能性を集合的に提供する1つ以上のサーバをホストする、1つ以上の記憶ノードサーバラック304も含み得る。ラック当たりの記憶ノードの数、記憶ノードラックの数、記憶ノードマネージャと記憶ノードとの間の配分等の構成パラメータは、費用、拡張性、冗長性および性能要件、ハードウェアおよびソフトウェアリソース等の要因に基づいて決定され得る。例えば、一実施形態では、記憶ノードサーバラック当たり3つの記憶ノード、データセンター当たり30〜80のラックが存在し、記憶ノードと記憶ノードマネージャとの比率は10:1である。
各記憶ノードサーバラック304は、相互接続ネットワーク300に接続するように使用される相互接続ネットワークスイッチ308への記憶ノードラック接続316を有し得る。いくつかの実施形態では、接続316は、ラックの最上位のイーサネットスイッチまたは任意の他の種類のネットワークスイッチを含み得るネットワークスイッチ305を用いて実装される。様々な実施形態では、記憶ノードラック接続316の帯域幅は、同一かまたは異なるデータセンター内に位置する記憶ノードマネージャと記憶ノードとの間で広帯域幅および待ち時間の少ない通信を可能にするように構成され得る。いくつかの実施形態では、記憶ノードラック接続316は、記憶ノードマネージャラック接続314よりも高い帯域幅を有する。例えば、一実施形態では、記憶ノードマネージャラック接続314が10Gbpsの帯域幅を有する一方で、記憶ノードラック接続316は、20Gbpsの帯域幅を有する。
いくつかの実施形態では、(記憶ノードマネージャおよび記憶ノードを含む)データセンター301は、図2に関連して説明されるように、接続310を介して、ペイロードデータキャッシュ228、記憶ノードマネージャジョブストア240、記憶ノードレジストラ248、記憶ノードレジストラストア350、オーファンクリーンアップデータストア254、メタデータマネジャジョブストア258等の他のコンピューティングリソースサービス306と通信する。
いくつかの実施形態では、1つ以上のデータセンター301は、データセンター間接続312を介して接続され得る。いくつかの実施形態では、接続310および312は、ハードウェアリソースの効率的な動作および使用を達成するように構成され得る。例えば、一実施形態では、接続310は、データセンター当たり30〜100Gbpsの帯域幅を有し、データセンター間接続312は、100〜250Gbpsの帯域幅を有する。
図4は、少なくとも1つの実施形態に従って、アーカイブデータ記憶システムの構成要素が接続され得る相互接続ネットワーク400を例示する。具体的には、例示された実施例は、非データプレーン構成要素が、相互接続ネットワーク300にどのように接続されるかを示す。例示されるように、図2に関連して説明されるようなフロントエンドサービスは、1つ以上のフロントエンドサーバラック402によってホストされ得る。例えば、各フロントエンドサーバラック402は、1つ以上のウェブサーバをホストし得る。フロントエンドサーバラック402は、ネットワークスイッチ408を介して相互接続ネットワーク400に接続し得る。一実施形態では、フロントエンドサービスの数、ラック当たりのサービスの数、フロントエンドサーバラック接続314のための帯域幅等の構成パラメータは、図3に関連して説明されるように、記憶ノードマネージャのためのものにおおよそ対応し得る。
いくつかの実施形態では、図2に関連して説明されるように制御プレーンサービスおよびメタデータプレーンサービスは、1つ以上のサーバラック404によってホストされ得る。そのようなサービスは、ジョブトラッカー230、メタデータマネジャ260、クリーンアップエージェント232、ジョブ要求分散装置238、および他のサービスを含み得る。いくつかの実施形態では、そのようなサービスは、頻繁なバルクデータ転送を処理しないサービスを含む。最終的に、本明細書に記載される構成要素は、図2に関連して説明されるように接続410を介して、ペイロードデータキャッシュ228、ジョブトラッカーストア232、メタデータマネジャジョブストア258等の他のコンピューティングリソースサービス406と通信し得る。
図5は、少なくとも1つの実施形態に従って、データを記憶するための例示的な過程500を例示する。いくつかのまたは全ての過程500(または本明細書に記載の任意の他の過程または変形例および/またはそれらの組み合わせ)は、実行可能な命令で構成される1つ以上のコンピュータシステムの制御下で遂行され得、ハードウェアまたはそれらの組み合わせによって、1つ以上のプロセッサ上で集合的に実行されるコード(例えば、実行可能な命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装され得る。コードは、例えば、1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形式で、コンピュータが読み出し可能な記憶媒体上に記憶され得る。コンピュータが読み出し可能な記憶媒体は、非一時的であり得る。一実施形態では、アーカイブデータ記憶システム206の1つ以上の構成要素は、図2に関連して説明されるように、過程500を遂行し得る。
一実施形態では、過程500は、文書、ビデオ、または音声ファイル等のアーカイブデータを記憶するデータ記憶要求を受け取ること502を含む。そのようなデータ記憶要求は、ペイロードデータのサイズおよびダイジェスト、ユーザ識別情報(例えば、ユーザ名、アカウント識別子等)、論理データコンテナ識別子等のペイロードデータおよびメタデータを含み得る。いくつかの実施形態では、過程500は、各々がより大きいペイロードデータの一部分を含む複数の記憶要求を受け取ること502を含み得る。他の実施形態では、記憶要求は、アップロードされる複数のデータオブジェクトを含み得る。一実施形態では、過程500のステップ502は、図2に関連して説明されるように、フロントエンド208のAPI要求ハンドラ218のようなサービスによって実装される。
一実施形態では、過程500は、要求を受け取ること502に応じて、記憶要求を処理すること504を含む。そのような処理をすることは、例えば、受け取られたデータの整合性を確証すること、顧客を認証すること、アクセス制御ポリシーに対して要求されたアクセスを承認すること、計測および課金関連のアクティビティを遂行すること等を含み得る。一実施形態では、そのような処理することは、図2に関連して説明されるようなフロントエンド208のサービスによって遂行され得る。一実施形態では、そのような要求は、例えば、バッチモードにおいて他の要求に関連して処理され得る。
一実施形態では、過程500は、記憶要求に関連付けられたデータをステージングデータストアに記憶すること506を含む。そのようなステージングデータストアは、図2に関連して説明されるように、ペイロードデータキャッシュ228によって提供されるような一時データストアを含み得る。いくつかの実施形態では、ペイロードデータのみがステージングストアに記憶される。他の実施形態では、ペイロードデータに関連するメタデータも、ステージングストアに記憶され得る。一実施形態では、データ整合性は、ステージングデータストアに記憶される前に(例えば、ダイジェストに基づいて)検証される。
一実施形態では、過程500は、例えば、記憶要求に応答して、記憶されるデータに関連付けられたデータオブジェクト識別子を提供すること508を含む。上述されるように、データオブジェクト識別子は、記憶されたデータを検索する、削除する、または別様に参照する後続の要求によって使用され得る。一実施形態では、データオブジェクト識別子は、記憶されたデータオブジェクト、ペイロードデータの整合性を検証するように使用され得るサイズ、ダイジェスト、タイムスタンプ等のペイロード検証情報、データオブジェクト識別子それ自体およびデータオブジェクト識別子に符号化された情報のようなメタデータの整合性を検証するように使用され得るエラー検出コードのようなメタデータ検証情報等、の場所を特定するように使用され得る記憶場所情報を符号化し得る。一実施形態では、データオブジェクト識別子は、後続の顧客要求を検証するかまたは承認するように使用される情報も符号化し得る。例えば、データオブジェクト識別子は、データオブジェクトが記憶される論理データコンテナの識別子を符号化し得る。このデータオブジェクトを検索する後続の要求では、論理データコンテナ識別子は、要求するエンティティが論理データコンテナおよびそれ故に論理データコンテナに含まれるデータオブジェクトへのアクセスを有するかどうかを判定するように使用され得る。いくつかの実施形態では、データオブジェクト識別子は、顧客(例えば、データオブジェクト等のためのグローバル一意識別子、GUID)によって供給された情報および/または過程500を実施しているシステムによって収集または計算された情報(例えば、記憶場所情報)に基づいて情報を符号化し得る。いくつかの実施形態では、データオブジェクト識別子を生成することは、暗号秘密キーを用いて上述の情報のいくつかまたは全てを暗号化することを含み得る。いくつかの実施形態では、暗号秘密キーは、定期的に回転され得る。いくつかの実施形態では、データオブジェクト識別子は、上述のものとは異なる時期に生成され得るおよび/または提供され得る。例えば、データオブジェクト識別子は、(以下に記載の)記憶ジョブが生成されたおよび/または完了した後に生成され得るおよび/または提供され得る。
一実施形態では、データオブジェクト識別子を提供すること508は、記憶場所を、データが実際にそこに記憶される前に、決定することを含み得る。例えば、そのような決定は、動作ステータス(例えば、有効かまたは無効か)、利用可能な記憶空間、データ独立性要件等の存在するデータ記憶エンティティについてのインベントリ情報に少なくとも部分的に基づき得る。図2によって例示される環境200のような環境では、そのような決定は、図2に関連して上述されるように、記憶ノードレジストラ248のようなサービスによって実装され得る。いくつかの実施形態では、そのような決定は、図2に関連して説明されるように、記憶アロケータ256のようなサービスによって1つ以上の物理的な記憶デバイス上に新たな記憶空間(例えば、ボリューム)を割り当てることを含み得る。
一実施形態では、記憶場所識別子は、上で決定された記憶場所を表すように生成され得る。そのような記憶場所識別子は、例えば、ボリューム識別子構成要素およびデータオブジェクト識別子構成要素を含むボリューム参照オブジェクトを含み得る。ボリューム参照構成要素は、データが上に記憶されるボリュームを識別し得、データオブジェクト識別子構成要素は、ボリュームのどこにデータが記憶されるかを識別し得る。一般に、記憶場所識別子は、データが体系化される(階層のような)論理または物理的なデータ記憶トポロジー内の種々のレベルを識別する構成要素を含み得る。いくつかの実施形態では、記憶場所識別子は、実際のペイロードデータが記憶されるところかまたはデータが記憶されるところへの参照のチェーンを指し得る。
一実施形態では、データオブジェクト識別子は、ペイロードデータのような記憶されるデータの少なくとも一部分のダイジェスト(例えば、ハッシュ)を符号化する。いくつかの実施形態では、ダイジェストは、顧客によって提供されたダイジェストに少なくとも部分的に基づき得る。他の実施形態では、ダイジェストは、ペイロードデータに基づいて、最初から計算され得る。
一実施形態では、過程500は、長期データストアへデータを持続するための記憶ジョブを作成すること510および実行のための記憶ジョブをスケジュールすること512を含む。図2に関連して説明されるように環境200では、上述のように、ステップ508、510、および512は、直接I/Oのための制御プレーン210および共有制御プレーン212の構成要素によって少なくとも部分的に実装され得る。具体的には、一実施形態では、ジョブトラッカー230は、ジョブ記録を作成し、ジョブトラッカーストア232にジョブ記録を記憶する。上述されるように、ジョブトラッカー230は、ジョブトラッカーストア232に対するトランザクションの合計数を削減するようにバッチ処理を遂行し得る。加えて、ジョブトラッカーストア232は、並列処理、クリーンアップ動作等を容易にするように、分割され得るかまたは別様に最適化され得る。ジョブ記録は、上述のように、顧客アカウント識別子、ジョブ識別子、記憶場所識別子、ペイロードデータキャッシュ228に記憶されたデータへの参照、ジョブステータス、ジョブ作成および/または有効期間等のジョブ関連情報を含み得る。いくつかの実施形態では、記憶ジョブは、データオブジェクト識別子が生成されるおよび/または提供される前に作成され得る。例えば、記憶ジョブ識別子は、データオブジェクト識別子の代わりにかまたはデータオブジェクト識別子に加えて、上のステップ508で記憶要求に応答して提供され得る。
一実施形態では、実行のために記憶ジョブをスケジュールすること512は、図2の共有制御プレーン212に関連して説明されるように、待ち行列に基づくロードのレベリングまたは分散、ジョブ分割等のジョブ計画および最適化を遂行することを含む。例えば、一実施形態では、ジョブ要求分散装置238は、I/Oのための制御プレーン210から入ってくる平均ロードレベル(ジョブ)までピークを弱め、データプレーン214に管理可能な作業負荷を送達するために、スケジュールするアルゴリズムに従ってジョブ要求待ち行列236から記憶ノードマネージャジョブストア240にジョブアイテムを転送する。別の実施例として、記憶ノードマネージャジョブストア240は、記憶ノードマネージャ244のような複数のワーカーによってジョブの並列処理を容易にするように分割され得る。なおも別の実施例として、記憶ノードマネージャジョブストア240は、バッチ処理および他のジョブ最適化を容易にするように問い合わせること、分類すること、および他の機能性を提供し得る。
一実施形態では、過程500は、図2に関連して説明されるように、記憶された記憶ノードマネージャジョブ240から例えば、記憶ノードマネージャ244によって実行するための記憶ジョブを選択すること514を含む。記憶ジョブは、バッチ処理のために他のジョブと共に選択され得るか(514)、または別様に上述のジョブ計画および最適化の結果として別様に選択され得る。
一実施形態では、過程500は、図2に関連して上述のペイロードデータキャッシュ228のようなステージングストアからデータを取得すること516を含む。いくつかの実施形態では、データの整合性は、例えば、サイズ、ダイジェスト、エラー検出コード等を確証することによって、検査され得る。
一実施形態では、過程500は、暗号化スキーム、消失訂正符号化のような冗長性符号化スキーム、redundant array of independent disks(RAID)符号化スキーム、複製等の1つ以上のデータ符号化スキームを取得すること518を含む。いくつかの実施形態では、そのような符号化スキームは、異なる要件に適合するように展開する。例えば、暗号化キーは、定期的に回転され得、消失訂正符号化スキームの拡大要因は、長い期間をかけて異なるハードウェア構成、冗長性要件等に調整され得る。
一実施形態では、過程500は、取得された符号化スキームを使用して符号化すること520を含む。例えば、一実施形態では、データは暗号化され、暗号化されたデータは消失訂正符号化される。一実施形態では、図2に関連して説明される記憶ノードマネージャ244は、本明細書に記載のデータ符号化を遂行するように構成され得る。一実施形態では、そのような符号化スキームのアプリケーションは、耐障害性を提供するように、記憶デバイス、記憶ノード、データセンター等の異なる記憶エンティティにわたって記憶され得る複数の符号化されたデータ構成要素または分割データベースを生成する。データが複数のパート(複数パートアップロードの場合等)を含み得る一実施形態では、各パートは、本明細書に記載されるように、符号化されて記憶され得る。
一実施形態では、過程500は、そのような符号化されたデータ構成要素のための記憶エンティティを決定すること522を含む。例えば、図2によって例示される環境200では、記憶ノードマネージャ244は、ボリューム識別子を用いて記憶ノードレジストラ248に問い合わせることによって符号化されたデータ構成要素を記憶する複数の記憶ノード246を決定し得る。そのようなボリューム識別子は、記憶されるデータに関連付けられた記憶場所識別子に加わり得る。所与のボリューム識別子を有するクエリーに応答して、一実施形態では、記憶ノードレジストラ248は、符号化されたデータ構成要素を記憶する記憶ノード246のネットワークの場所(エンドポイント、DNS名、IPアドレス等を含む)のリストを戻す。図2に関連して記載されるように、記憶ノードレジストラ248は、自己報告され動的に提供されたおよび/または更新された記憶ノード246それら自体からのインベントリ情報に基づいてそのようなリストを決定し得る。いくつかの実施形態では、そのような決定は、データ独立性、耐障害性、ロード分散、電力節約、データ局所性、および他の検討事項に基づく。いくつかの実施形態では、記憶レジストラ248は、図2に関連して説明されるように、例えば、記憶アロケータ256を呼び出すことによって、新たな記憶空間を割り当てさせ得る。
一実施形態では、過程500は、所定の記憶エンティティで符号化されたデータ構成要素(複数可)を記憶すること524を行わせることを含む。例えば、図2によって例示される環境200では、記憶ノードマネージャ244は、は、所定の記憶場所でデータ構成要素を記憶するように上で決定された各記憶ノード246を要求し得る。データ構成要素を記憶する記憶ノードマネージャ244から記憶要求を受け取ることに応じて、各記憶ノード246は、接続された記憶デバイスにデータ構成要素を記憶させ得る。いくつかの実施形態では、データオブジェクト識別子の少なくとも一部分は、符号化された形態かまたは非符号化された形態かのいずれかでデータ構成要素のうちの全てまたはいくつかと共に記憶され得る。例えば、データオブジェクト識別子は、各データ構成要素のヘッダおよび/またはボリューム構成要素に記憶されたボリューム構成要素インデックスに記憶され得る。いくつかの実施形態では、記憶ノード246は、記憶ノードマネージャ244からの要求を処理するようにバッチ処理または他の最適化を遂行し得る。
一実施形態では、記憶ノード246は、要求する記憶ノードマネージャ244にデータが成功裡に記憶されたかどうかを示す確認応答を送信する。いくつかの実施形態では、記憶ノード246は、何らかの理由のため、要求が満たされることができなかったとき、エラーメッセージを戻す。例えば、記憶ノードが同一の記憶場所に記憶する2つの要求受け取った場合、1つまたは両方の要求が失敗する可能性がある。一実施形態では、記憶ノード246は、データを記憶することに先駆けて検証検査を遂行し、検証検査が失敗に終わった場合はエラーを戻す。例えば、データ整合性は、エラー検出コードまたはダイジェストを検査することによって確証され得る。別の実施例として、記憶ノード246は、例えば、ボリュームインデックスに基づいて、記憶要求によって識別されたボリュームが記憶ノードによって記憶されること、および/またはボリュームがデータ構成要素を記憶するのに十分な空間を有すること、を確証し得る。
いくつかの実施形態では、記憶ノードマネージャ244が要求された記憶ノード246の少なくともサブセット(記憶クォーラム)から肯定確認応答を受け取ると、データ記憶は、成功であるとみなされる。いくつかの実施形態では、記憶ノードマネージャ244は、ジョブを再試行するのに必要な状態を消去する前に、確認応答のクォーラムが受け取られるまで待機し得る。そのような状態情報は、確認応答が受け取られていない符号化されたデータ構成要素を含み得る。他の実施形態では、処理能力を改善するように、記憶ノードマネージャ244は、確認応答のクォーラムを受け取る前にジョブを再試行するのに必要な状態を消去し得る。
一実施形態では、過程500は、例えば、データプレーン214によって維持されたメタデータ(記憶デバイスのためのインデックスおよび記憶空間情報、記憶ノードレジストラストア250で記憶されたマッピング情報等)、制御プレーン210および212によって維持されたメタデータ(ジョブ関連情報等)、メタデータプレーン216によって維持されたメタデータ等(コールドインデックス等)を含むメタデータ情報526を更新することを含む。様々な実施形態では、そのようなメタデータ情報のいくつかは、性能および費用への影響を減少させるようにバッチ処理を介しておよび/または定期的に更新され得る。例えば、データプレーン214では、記憶ノードレジストラストア250によって維持される情報は、新たに記憶されたデータのボリューム識別子の付加的なマッピングを提供するように、そしてそのようなマッピングがまだそこに存在しない場合はデータ構成要素がその上に記憶される記憶ノード246を提供するように、更新され得る。別の実施例には、記憶デバイス上のボリュームインデックスは、新たに追加されたデータ構成要素を反映するように更新され得る。
共有制御プレーン212では、完了したジョブのためのジョブエントリーは、図2に関連して説明されるように、記憶ノードマネージャジョブストア240から消去され得、ジョブ結果待ち行列242に追加され得る。直接I/Oのための制御プレーン210では、ジョブトラッカーストア232におけるジョブ記録のステータスは、例えば、ジョブ結果待ち行列242を監視するジョブトラッカー230によって更新され得る。様々な実施形態では、完了できないジョブは、何度も再試行されてもよい。例えば、一実施形態では、新たなジョブは、異なる場所でデータを記憶するように作成され得る。別の実施例として、(例えば、記憶ノードマネージャジョブストア240、ジョブトラッカーストア232等に)存在するジョブ記録は、同一ジョブの再試行を容易にするように更新され得る。
メタデータプレーン216では、メタデータは、新たに記憶されたデータを反映するように更新され得る。例えば、完了したジョブは、ジョブ結果待ち行列242から呼び戻してメタデータマネジャジョブストア258に引き戻され得、コールドインデックスストア262に記憶されたような更新されたインデックスを生成するようにメタデータマネジャ260によってバッチ処理され得る。別の実施例には、顧客情報は、計測および課金目的のために変更を反映するように更新され得る。
最終的に、いくつかの実施形態では、記憶ジョブが成功裡に完了されると、記憶ジョブに関連付けられたジョブ記録、ペイロードデータ、および他のデータは、図2に関連して説明されるように、例えば、クリーンアップエージェント234によって消去され得る。いくつかの実施形態では、そのような消去は、バッチ処理、並列処理等によって処理され得る。
図6は、少なくとも1つの実施形態に従って、データを検索するための例示的な過程500を例示する。一実施形態では、アーカイブデータ記憶システム206の1つ以上の構成要素は、図2に関連して説明されるように、集合的に過程600を遂行し得る。
一実施形態では、過程600は、上述のように、過程500によって記憶されたようなデータを検索するデータ検索要求を受け取ること602を含む。そのようなデータ検索要求は、上述のように、過程500のステップ508によって提供されるようなデータオブジェクト識別子か、または検索されるデータを識別するように使用され得る任意の他の情報を含み得る。
一実施形態では、過程600は、要求を受け取ること602に応じて、データ検索要求を処理すること604を含む。そのような処理することは、例えば、顧客を認証すること、アクセス制御ポリシーに対して要求されたアクセスを承認すること、計測および課金関連のアクティビティを遂行すること等を含み得る。一実施形態では、そのような処理することは、図2に関連して説明されるようなフロントエンド208のサービスによって遂行され得る。一実施形態では、そのような要求は、例えば、バッチモードにおいて他の要求に関連して処理され得る。
一実施形態では、検索要求を処理すること604は、検索要求に含まれるデータオブジェクト識別子に少なくとも部分的に基づき得る。上述されるように、データオブジェクト識別子は、記憶場所情報、サイズ、作成タイムスタンプ、ペイロードダイジェスト等のペイロード検証情報、メタデータ検証情報、ポリシー情報等を符号化し得る。一実施形態では、検索要求を処理すること604は、例えば、プライベート暗号化キーを用いておよび検索要求を検証する少なくともいくつかの復号された情報を用いて、データオブジェクト識別子に符号化された情報を復号することを含む。例えば、ポリシー情報は、要求する検索要求のエンティティが、要求されたアクセスを遂行する要求された許可を有することを検証するように使用され得るアクセス制御情報を含み得る。別の実施例として、メタデータ検証情報は、データオブジェクト識別子の整合性またはその構成要素を確証するように使用され得る巡回冗長検査(「CRC」)のようなエラー検出コードを含み得る。
一実施形態では、過程600は、データ検索要求に対応するデータ検索ジョブを作成すること606、および例えば、データ検索要求に応答して、データ検索ジョブに関連付けられたジョブ識別子を提供すること608を含む。いくつかの実施形態では、データ検索ジョブを作成すること606は、図5に例示される過程500のステップ510に関連して説明されるようなデータ記憶ジョブを作成することに類似している。例えば、一実施形態では、ジョブトラッカー230は、データオブジェクト識別子に符号化された少なくともいくつかの情報および/またはジョブ有効期間等の付加的な情報を含むジョブ記録を作成し得、ジョブトラッカーストア232にジョブ記録を記憶し得る。上述されるように、ジョブトラッカー230は、ジョブトラッカーストア232に対するトランザクションの合計数を削減するようにバッチ処理を遂行し得る。加えて、ジョブトラッカーストア232は、並列処理、クリーンアップ動作等を容易にするように、分割され得るかまたは別様に最適化され得る。
一実施形態では、過程600は、上で作成されたデータ検索ジョブをスケジュールすること610を含む。いくつかの実施形態では、実行のためにデータ検索ジョブをスケジュールすること610は、図5の過程500のステップ512に関連して説明されるようなジョブ計画および最適化を遂行することを含む。例えば、データ検索ジョブは、ジョブ待ち行列の中に提出され得、費用、電力管理スケジュール等に少なくとも部分的に基づいて他のジョブと共にバッチ処理のためにスケジュールされ得る。別の実施例には、データ検索ジョブは、データ局所性等に基づいて他の検索ジョブと結合され得る。
一実施形態では、過程600は、図2に関連して説明されるように、記憶された記憶ノードマネージャジョブ240から例えば、記憶ノードマネージャ244によって実行するためのデータ検索ジョブを選択すること612を含む。検索ジョブは、バッチ処理のために他のジョブと共に選択され得るか(612)、または別様に上述のジョブ計画および最適化の結果として別様に選択され得る。
一実施形態では、過程600は、上述の過程500のような記憶過程によって生成される符号化されたデータ構成要素を記憶する記憶エンティティを決定すること614を含む。一実施形態では、記憶ノードマネージャ244は、上の、過程500のステップ522に関連して論じられるものに類似の様式で、符号化されたデータ構成要素を検索する複数の記憶ノード246を決定し得る。例えば、そのような決定は、ロード分散、電力節約、効率性、および他の検討事項に基づき得る。
一実施形態では、過程600は、検索されたデータを復号するように使用され得る1つ以上のデータ復号スキームを決定すること616を含む。典型的に、そのような復号スキームは、元のデータが前に記憶された際に元のデータに適用された符号化スキームに対応する。例えば、そのような復号スキームは、暗号化キー、消失訂正復号化等による解読を含み得る。
一実施形態では、過程600は、過程600のステップ614で決定された記憶エンティティから符号化されたデータ構成要素の少なくともいくつかを検索することを行わせること618を含む。例えば、図2によって例示される環境200では、データ検索ジョブを担う記憶ノードマネージャ244は、上で決定された記憶ノード246のサブセットにそれらの対応するデータ構成要素を検索するように要求し得る。いくつかの実施形態では、符号化されたデータ構成要素の最小数は、その数がデータを符号化するように使用されたデータ冗長性スキームに少なくとも部分的に基づいて決定され得る(例えば、消失訂正符号化の拡大要因)、元のデータを再構築するのに必要とされる。そのような実施形態では、記憶ノードのサブセットは、最小数以上の符号化されたデータ構成要素が検索されるように選択され得る。
記憶ノード246の各サブセットは、記憶ノードマネージャ244からデータ構成要素を検索する要求を受け取ることに応じて、例えば、(データオブジェクト識別子のパートである)記憶場所識別子の整合性を検査すること、記憶ノードが要求されたデータ構成要素を確かに保持することを確証すること等によって要求を検証し得る。検証が成功すると、記憶ノードは、記憶場所識別子に少なくとも部分的に基づいてデータ構成要素の場所を特定し得る。例えば、上述のように、記憶場所識別子は、ボリューム識別子構成要素と、データが記憶されるボリュームを識別するボリューム参照構成要素であるデータオブジェクト識別子構成要素と、を含むボリューム参照オブジェクトを含み得、データオブジェクト識別子構成要素は、ボリュームのどこにデータが記憶されているかを識別し得る。一実施形態では、記憶ノードは、例えば、接続されたデータ記憶デバイスからデータ構成要素を読み出し、検索を要求した記憶ノードマネージャに検索されたデータ構成要素を送信する。いくつかの実施形態では、データ整合性は、例えば、データ構成要素識別子を確証することによって、検査されるか、または検索ジョブに関連付けられたデータ構成要素識別子によって示されたものと同じであるそれらの一部分である。いくつかの実施形態では、記憶ノードは、データ構成要素の検索に関連してバッチングまたは他のジョブ最適化を遂行し得る。
一実施形態では、過程600は、過程600のステップ616で決定された1つ以上のデータ復号スキームを使用して、検索された符号化されたデータ構成要素の少なくとも最小数を復号すること620を含む。例えば、一実施形態では、検索されたデータ構成要素は、消失訂正復号化され得、次いで解読され得る。いくつかの実施形態では、データ整合性検査は、例えば、データオブジェクト識別子に符号化されたペイロード整合性検証情報(例えば、サイズ、タイムスタンプ、ダイジェスト)を用いて、再構築されたデータ上で遂行される。いくつかの場合では、検索ジョブは、検索されたデータ構成要素の最小数未満の数、データ整合性検査の失敗等が原因で失敗する可能性がある。そのような場合には、検索ジョブは、図5に関連して説明されるものに類似の様式で再試行され得る。いくつかの実施形態では、元のデータは、データの複数のパートを含み、各パートは、符号化されて記憶される。そのような実施形態では、検索中、データの各パートのために符号化されたデータ構成要素は、元のパートを形成するように検索されて復号され得(例えば、消失訂正復号化されて解読される)、復号されたパートは、元のデータを形成するように組み合され得る。
一実施形態では、過程600は、図2に関連して説明されるペイロードデータキャッシュ228のようなステージングストアに再構築されたデータを記憶することを含む。いくつかの実施形態では、ステージングストアに記憶されたデータ622は、一時期または無期限に、顧客によるダウンロードに使用可能であり得る。一実施形態では、データ整合性は、データがステージングストアに記憶される前に、(例えば、ダイジェストを用いて)検査され得る。
一実施形態では、過程600は、検索ジョブの完了の通知を、検索要求の要求元に、または、そのような通知を受け取るように別様に構成された別の1つもしくは複数のエンティティに提供すること624を含む。そのような通知は、個別にまたは数回に分けて提供され得る。他の実施形態では、検索ジョブのステータスは、例えば、顧客からのポーリング要求に応じて提供され得る。
図7は、少なくとも1つの実施形態に従って、データを削除するための例示的な過程700を例示する。一実施形態では、アーカイブデータ記憶システム206の1つ以上の構成要素は、図2に関連して説明されるように集合的に過程700を遂行し得る。
一実施形態では、過程700は、上述のように、過程500によって記憶されたようなデータを削除するデータ削除要求を受け取ること702を含む。そのようなデータ検索要求は、上述のように、過程500のステップ508によって提供されるようなデータオブジェクト識別子か、または削除されるデータを識別するように使用され得る任意の他の情報を含み得る。
一実施形態では、過程700は、要求を受け取ること702に応じて、データ削除要求を処理すること704を含む。いくつかの実施形態では、処理すること704は、上述のように、過程500のステップ504および過程600のステップ604のためのものに類似している。例えば、一実施形態では、処理すること704は、データ削除要求に含まれるデータオブジェクト識別子に少なくとも部分的に基づく。
一実施形態では、過程700は、データ削除要求に対応するデータ検索ジョブを作成すること706を含む。そのような検索ジョブは、過程500のステップ510に関連して説明される記憶ジョブの作成および過程600のステップ606に関連して説明される検索ジョブの作成に類似して作成され得る。
一実施形態では、過程700は、データが削除された確認応答を提供すること708を含む。いくつかの実施形態では、そのような確認応答は、データ削除要求が同期に処理されるという認識を提供するようにデータ削除要求に応答して提供され得る。他の実施形態では、データ削除ジョブに関連付けられたジョブ識別子は、データ検索要求のためのジョブ識別子の提供に類似して提供され得る。
一実施形態では、過程700は、実行のためのデータ削除ジョブをスケジュールすること708を含む。いくつかの実施形態では、データ削除ジョブをスケジュールすること708は、上述のように、過程500のステップ512および過程600のステップ610に関連して説明されるようなものに類似して実装され得る。例えば、近接して位置するデータのためのデータ削除ジョブは、結合され得る、および/またはバッチ処理され得る。別の実施例のために、データ削除ジョブには、データ検索ジョブより低い優先権が割り当てられ得る。
いくつかの実施形態では、記憶されたデータは、顧客によって指定されるかまたは初期設定によって設定される関連付けられる有効期間を有し得る。そのような実施形態では、削除ジョブは、作成され得(706)、データの有効期間にまたはデータの有効期間近くに自動的にスケジュールする(710)。いくつかの実施形態では、有効期間は、データがまだ利用可能かまたは回復可能な間である猶予期間に更に関連付けられ得る。いくつかの実施形態では、保留中の削除の通知は、有効期間前に、有効期間に、または有効期間後に提供され得る。
いくつかの実施形態では、過程700は、図2に関連して説明されるように、記憶された記憶ノードマネージャジョブ240から実行するためのデータ削除ジョブを例えば、記憶ノードマネージャ244によって選択すること712を含む。削除ジョブは、バッチ処理のために他のジョブと共に選択され得るか(712)、または別様に上述のジョブ計画および最適化の結果として別様に選択され得る。
いくつかの実施形態では、過程700は、上述の過程500のような記憶過程によって生成されるデータ構成要素を記憶するデータ構成要素のための記憶エンティティを決定すること714を含む。一実施形態では、記憶ノードマネージャ244は、上述の過程600のステップ614に関連して論じられるものに類似の様式で、符号化されたデータ構成要素を検索する複数の記憶ノード246を決定し得る。
いくつかの実施形態では、過程700は、データ構成要素のうちの少なくともいくつかを削除することを行わせること716を含む。例えば、図2によって例示される環境200では、データ削除ジョブを担う記憶ノードマネージャ244は、削除されるデータのためのデータ構成要素を記憶する記憶ノードの1組を識別し得、少なくともそれらの記憶ノードのサブセットに、それらの記憶ノードの個別のデータ構成要素を削除することを要求する。記憶ノード246の各サブセットは、記憶ノードマネージャ244からデータ構成要素を削除する要求を受け取ることに応じて、例えば、(データオブジェクト識別子のパートである)記憶場所識別子の整合性を検査すること、記憶ノードが要求されたデータ構成要素を確かに保持することを確証すること等によって要求を検証し得る。検証が成功すると、記憶ノードは、接続された記憶デバイスからデータ構成要素を削除し得、記憶ノードマネージャ244に動作が成功だったかどうかを示す確認応答を送信する。一実施形態では、複数のデータ削除ジョブは、近接して一緒に位置するデータオブジェクトがまとめて削除され得るようにバッチにおいて実行され得る。いくつかの実施形態では、記憶ノードマネージャ244が少なくとも記憶ノード246のサブセットから肯定確認応答を受け取ると、データ削除は成功であるとみなされる。サブセットのサイズは、データが、未削除のデータ構成要素からは後に再構築されることができないことを確実にするように構成され得る。失敗したかまたは未完了のデータ削除ジョブは、それぞれ、過程500および過程600に関連して説明される、データ記憶ジョブおよびデータ検索ジョブを再試行することに類似の様式で再試行され得る。
一実施形態では、過程700は、過程500のステップ526に関連して説明されるもののようなメタデータ情報を更新すること718を含む。例えば、削除動作を実行する記憶ノードは、インデックス、空き空間情報等を含む記憶情報を更新し得る。一実施形態では、記憶ノードは、記憶ノードレジストラまたは記憶ノードレジストラストアに更新を提供し得る。様々な実施形態では、そのようなメタデータ情報のいくつかは、性能および費用への影響を減少させるようにバッチ処理を介しておよび/または定期的に更新され得る。
図8は、データ整合性を検証するための技術が実装され得る例示的な流れ800を描写する。これらの技術は、図9〜13に関連して以下により詳細に説明される。図8に戻って、例示的な流れ800では、動作は、アーカイブデータ記憶サービスの1つ以上のプロセッサによって遂行され得、および/またはその動作を遂行する命令は、アーカイブデータ記憶サービスの1つ以上のメモリに記憶され得る。所望のように、流れ800は、アーカイブデータ記憶サービスがデータペイロード804の1つ以上のパートを受け取り得る802から始まり得る。いくつかの実施例では、データペイロード804は、いかなる数のパートを含んでもよい、しかしながら、本実施例では、2つのパートである第1部および第2部が、示される。各第1部および第2部は、それぞれ、データ806および808を含み得る。いくつかの場合では、第1部および第2部のサイズは、アップロードする側(uploader)によって選択され得る、および/または同一であり得る。しかしながら、いくつかの実施例では、データペイロード804の最終パートは、全ての他の一貫してサイズ決めされたパートから異なるサイズであってもよい(例えば、ここ図8に示されるように、第1部が第2部よりも大きい)。810で、流れ800は、ペイロード804のパートのサブパートを生成し得る。いくつかの実施例では、サブパートのサイズは、アーカイブデータ記憶サービスによって予め決定されてもよい(例えば、1MB)。
いくつかの実施例では、流れ800は、812で各サブパートのためのダイジェストを計算し得る。それぞれのダイジェストは、これらに限定されないが818で生成されたデータ構造816のようなデータ構造のノード814として記憶され得る。ほんの一例として、データ構造816は、(例えば、ノード814で)1つ以上のサブパートダイジェストおよび/または1つ以上のパートダイジェスト(例えば、第1部ダイジェスト820および第2部ダイジェスト822)を含み得る。加えて、流れ800は、824でデータ構造816のルートのためのルートダイジェスト826を決定し得る。いくつかの実施例では、ルートダイジェスト826は、パートダイジェストを連結することおよび連結されたダイジェストのためのダイジェストを計算することに少なくとも部分的に基づいて決定され得るかまたは生成され得る。流れ800は、アーカイブデータ記憶サービスが受け取られたペイロード804が記憶されたペイロード830と合うことを確証し得る、828で終了し得る。記憶されたペイロードは、いくつかの実施例では、受け取られると各々のパート806、808、および/またはサブパートを組み合わせることに少なくとも部分的に基づいて決定されたデータ832を含み得る。いくつかの実施例では、データペイロードを確証することは、ルートダイジェスト826とアップロードする側から受け取られた第2のルートダイジェストとを比較することに少なくとも部分的に基づき得る。
図9は、データ整合性を検証するための付加的な技術が実装され得る例示的なデータ構造900を描写する。例示的なデータ構造900は、本明細書に記載される技術を実装するように活用され得るデータ構造の多くの異なる種類のうちのほんの1つである。ほんの一例として、ユーザまたはクライアントエンティティは、データペイロード902をアーカイブデータ記憶サービスにアップロードすることを望んでいるとする。アーカイブデータ記憶サービスは、次いで、(1つ以上のパートにおいて)データペイロード902を受け取るように構成され得、ユーザに、ある時点で(例えば、アップロード直後かまたは多少の時間後、いくつかの場合では、比較的長時間後)アーカイブデータ記憶サービスに記憶されたデータがユーザから任意のサイズ分割情報を要求することなくアップロードされたデータペイロード902と実際に同一であることを確証させるように構成され得る。言い換えれば、アーカイブデータ記憶サービスは、ユーザが記憶されたデータを受け取るように戻し得るデータオブジェクト識別子を提供し得る、しかしながら、ユーザは、データオブジェクト識別子以外の任意の情報を記憶する必要がない。
いくつかの実施例では、ユーザからデータを受け入れるように、アーカイブデータ記憶サービスは、ユーザが図9のデータ構造900のようなツリーダイジェストを提供することを要求し得る。データ構造900を提供することは、種々の実施形態に従って、複数の方法で遂行され得る。例えば、データ構造900に例示されるデータの全てが、提供され得る。代替としては、データ構造900がリーフノードのためのデータだけから構築可能である実施形態では、リーフノードのためのデータは、他の、より高いレベルのノードのための情報を提供することなく提供され得る。加えて、アーカイブデータ記憶サービスは、データ構造900を生成するためのアルゴリズム、API、および/またはSDKの形態で命令を提供し得る。いくつかの場合では、アップロードチャンクのサイズおよびそれらのそれぞれのオフセットへの制限が課され得る。例えば、データペイロード902のチャンクまたはパートは、1MBの2の整数乗に制限され得る。加えて、いくつかの実施例では、各チャンクの決定されたサイズは、特定のアップロード内で変更され得ない。更に、受け取られた各パートのために、アーカイブデータ記憶サービスは、それ自体のダイジェストをユーザによって使用された同一のアルゴリズムに少なくとも部分的に基づいて計算し得、各パートのためのダイジェストを提供し得る。記憶ジョブの完了に応じて、アーカイブデータ記憶サービスは、データオブジェクト識別子の形態で上位レベルダイジェスト値を提供し得る。データの検索は、いくつかの実施例では、1MBに2の整数乗を乗じた値に制限されるチャンクサイズおよびオフセット、メッセージ中にあるデータのダイジェストが先頭に追加されたメッセージ、およびジョブの完了に応じて利用可能な上位レベルダイジェストへの規制付きの、類似方式で実装され得る。しかしながら、この実装に少なくとも部分的に基づいて、データペイロード902は、ユーザによって選択されるチャンクサイズと無関係であることが確証されるかまたは検証されることができるべきである。ダイジェストは、SHA−1、SHA−2、MD5、MD6等に関連付けられたもの等の暗号ハッシュ関数、巡回冗長検査等のチェックサムまたはエラー検出コードをペイロードデータの少なくとも一部分に適用することによって計算され得る。
図9のデータ構造900は、ユーザが単一パートにデータペイロードをアップロードするように選択したデータペイロード902のための適切なダイジェストツリーを例示し得る。したがって、本実施例でユーザが選択するパートサイズは存在しない。しかしながら、得られるルートダイジェスト906は、ユーザが複数のパートにデータペイロード902をアップロードするように選択した場合でも、およびユーザがアーカイブデータ記憶サービスに不明のおよび/またはユーザによって記録されていないパートサイズを選択した場合でも、本明細書に記載の技術を用いて計算可能であるべきである。この実施例では、簡略化の目的で、データペイロード902が7MBのサイズであると仮定する。したがって、ユーザが1つのパートにペイロード902全体をアップロードするように要求したため、データペイロード902は、7つの1MBチャンク、サブ1〜サブ7に分割され得る。いくつかの実施例では、しかしながら、ペイロード902のサイズが1MBで割り切れなかった場合は、最後のチャンクであるサブ7は、1MBより小さくてもよい。アーカイブデータ記憶サービスは、ハッシュツリーアルゴリズムに少なくとも部分的に基づいて、各1MBチャンク(すなわち、サブ1〜サブ7)のためのハッシュ値(またはダイジェスト)を生成し得る。これらの各ハッシュ値は、データ構造900の最も低い子ノードレベル908で表され得る。第2の子ノードレベル910のノードを生成するように、アーカイブデータ記憶サービスは、第2のレベルのノード子の各組を連結して、連結されたデータ上でハッシュ関数を実行し得る。言い換えれば、データ構造の最も低いレベル908がペイロードデータのダイジェストを含み得る一方で、親ノードはダイジェストのダイジェストを含み得る。データ構造を上に移動して、説明された動作は、ルートダイジェスト906が生成されるまで繰り返され得る。
説明されるように、いくつかの場合では、アーカイブデータ記憶サービスは、ペイロード902の個別パートのための中間ルートダイジェストを提供し得る。しかしながら、この実施例では、ペイロードがパートに細分化されなかったため、アーカイブデータ記憶サービスは、ユーザにルートダイジェスト906を提供するのみであり得る。いくつかの場合では、しかし、アーカイブデータ記憶サービスは、生成された各1MBダイジェストも提供し得る。したがって、ユーザかまたはアーカイブデータ記憶サービスのいずれかは、データが正しくアップロードされたかを(1MBサブパートレベルを含んで)各相互の生成されたルートダイジェスト906を比較することに少なくとも部分的に基づいて確証できるべきである。
図10は、データ整合性を検証するための付加的な技術が実装され得る別の例示的なデータ構造1000を描写する。図9を参照して記述されるように、例示的なデータ構造1000は、本明細書に記載される技術を実装するように活用され得るデータ構造の多くの異なる種類のうちのほんの1つである。ほんの一例として、ユーザまたはクライアントエンティティは、データペイロード1002をアーカイブデータ記憶サービスにアップロードすることを望んでいるとする。アーカイブデータ記憶サービスは、次いで、(この実施例では、2つのパートに)データペイロード1002を受け取るように構成され得、ユーザに、アーカイブデータ記憶サービスに記憶されたデータが、アップロードされたデータペイロード1002と、実際に同一であることを確証させるように構成され得る。この検証は、ユーザから任意のサイズ分割情報を要求することなく行われ得る。言い換えれば、アーカイブデータ記憶サービスは、ユーザが記憶されたデータを検索するように戻し得るデータオブジェクト識別子を提供し得る、しかしながら、ユーザは、記憶されたデータを要求するおよび/または検証するためデータオブジェクト識別子以外の任意の情報を記憶する必要がない。
データ構造1000を生成する際、ユーザまたはアーカイブデータ記憶サービスは、再度データをサブパートに細分化し得る、しかしながら、この実施例では、各パートである第1部または第2部は、別々に細分化され得る(例えば、第1部のサブ1〜サブ4およびサブ1〜サブ3)。再度述べるが、各サブパートのためのダイジェストは、子レベル1004で生成されてデータ構造に含まれ得、連結されたダイジェストのダイジェストは、第1の親レベル1006で生成されてデータ構造に含まれ得る。この実施例では、しかしながら、ペイロード1002が2つのパートに細分化されたため、上位レベルダイジェストは、各パートに生成され得る。したがって、第1部ダイジェスト1008および第2部ダイジェスト1010は、生成されてデータ構造1000に含まれ得る。加えて、ペイロード1002がアップロードされると、各サブパートダイジェスト(例えば、1004でのもの)およびパートダイジェスト(例えば、1008でのもの)は、アップロードの中に含まれ得る。更に、ルートダイジェスト1012は、他の親ノードが生成される同じ様式で生成され得る。それは、子ダイジェストを連結すること、および連結された情報上でハッシュ関数を実行することに少なくとも部分的に基づく。この実施例では、この過程は、パートレベルダイジェストを生成するように第1部ダイジェスト1008と第2部ダイジェスト1010とを連結することを伴った。アーカイブデータ記憶サービスは、次いで、ルートダイジェスト1006を生成するようにパートレベルダイジェスト上でハッシュ関数を実行し得る。いくつかの実施例では、ルートダイジェストは、アップロードの開始時およびアップロードが完了した時点で受け取られ得る。加えて、アーカイブデータ記憶サービスは、データの整合性を検証するため、データ構造1000および/またはルートダイジェスト1006のそれ自体のバージョンも生成し得る。更に、いくつかの実施例では、アーカイブデータ記憶サービスによって生成されたルートダイジェスト1006は、ユーザが読み出し要求、削除要求、または指標確認要求を出すために活用し得るデータオブジェクト識別子のパートとしてユーザに提供され得る。
いくつかの実施例では、アーカイブデータ記憶サービスは、データ破損がシステムのどこにおいても起こり得、および/またはハードウェアバグ、ビットフリップ、および/またはアーカイブデータ記憶サービスまたはユーザによって実装されたソフトウェアコード中のバグが原因で引き起こされ得る、と仮定し得る。少なくともこの理由のため、アーカイブデータ記憶サービスは、データ整合性がシステム全体にわたって提供されることおよび破損データが検出されることを確実にするように、データ経路および動作の全て、またはサブセットを再点検し得る。いくつかの場合では、これは、(例えば、アーカイブデータ記憶サービスに記憶された)データペイロードおよびメタデータに適用され得る。したがって、データ整合性検証は、さらに、データオブジェクト識別子上で遂行され得、ならびにデータ削除要求は誤ったデータを指していないことを確実にする。
いくつかの態様では、アーカイブデータ記憶サービス206は、選択されたまたは別様に決定されたダイジェスト機能がデータ整合性の検証のために受け入れ可能であり得ることを予期するように構成され得る。いくつかの実施例では、ダイジェスト機能は、データ変換に関連したいくつかの場合に使用されない可能性がある。そうでなければ、それは、アーカイブデータ記憶サービスのデータおよび/またはメタデータのいくつか、全て、または部分を検証することを伴う使用のために選択され得るおよび/または提供され得る。加えて、記述されるように、いくつかの実施例では、イニシエータ(すなわち、ユーザ)は、伝送前にデータペイロード1002のダイジェストを事前に計算し得、次いで後にアーカイブデータ記憶サービスにデータ付きのダイジェストを再度供給し得る。アーカイブデータ記憶サービスは、次いでダイジェスト(例えば、上位レベルダイジェスト)を再計算し得、イニシエータから受け取られたダイジェストと比較し得、および/またはデータの整合性が、アーカイブデータ記憶サービスで生成されたダイジェストをユーザに提供することによって検証されたことを確認応答し得る。加えて、各データサブ分割および/または集約(例えば、サブパート、パート、パートレベルダイジェスト、および/またはルートダイジェスト)は、集約データのスプリット上の独立したダイジェストを計算してダイジェストを比較することによってか、またはビット毎の比較を更に遂行することによって再検証され得る。言い換えれば、任意のサイズの任意のデータペイロードが与えられている場合、計算は、任意の数または種類のスプリットまたは集約されたダイジェストを生成するように遂行され得、よって、データおよび/またはパートを検証し得る。
加えて、いくつかの態様では、これらに限定されないが、消失訂正符号化または暗号化等のデータ変換は、逆変換を遂行することによって再検証されることができる。逆変換の結果は、次いで、ダイジェストを比較することによっておよび/またはビット毎の比較によって二重確認され得る。したがって、変換されたデータは、2つのダイジェストを含み得る。2つのうちの1つは、変換されたデータの整合性を証明し得、他方は元のデータの整合性を証明し得る。いくつかの実施例では、これらに限定されないが、内容を参照し得るデータオブジェクト識別子等の参照アイテムは、参照されたデータのダイジェストを含み得る。加えて、アーカイブデータ記憶サービスは、参照されている親ノードについての情報も含み得る。いくつかの場合では、記憶ノードレジストラストア250に持続される制御プレーンからのメッセージ、データオブジェクト識別子、および/または他のデータ構造は、自己検証するダイジェストを含み得る。これらのダイジェストは、検索に応じてかまたは作用の前に構造が作成されたおよび/または確証された後で、作製され得る。いくつかの実施例では、これは、コード中のバグ、メモリ破損、ビットロット(bit rot)等によりデータオブジェクト検索コマンドが削除コマンドに変わることを防ぐ。更に、戻す経路上で、アーカイブデータ記憶サービスは、顧客に戻されているデータが要求に対して合っていることおよび/またはコード中のバグまたは他のもの等が原因で実行中に置換が起こらないことを再検証するように構成され得る。
図11〜13は、データ整合性の検証を提供するようにそれぞれの過程1100〜1300を示す例示的な流れ図を例示する。これらの過程は、論理流れ図として例示され、その各動作は、ハードウェア、コンピュータ命令、またはそれらの組み合わせにおいて実装されることができる動作の配列を表す。コンピュータ命令の文脈のなかでは、動作は、1つ以上のプロセッサによって実行されたとき列挙された動作を遂行する1つ以上のコンピュータが読み出し可能な記憶媒体上に記憶されたコンピュータで実行可能な命令を表す。概して、コンピュータで実行可能な命令は、特定の機能を遂行するまたは特定のデータ種類を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造等を含む。動作が説明される順序は、制限として解釈されることを意図するものではなく、あらゆる説明された動作は、過程を実装するように任意の順序でおよび/または並列して組み合せることができる。
加えて、いくつかの、いずれかの、または全ての過程は、実行可能な命令で構成される1つ以上のコンピュータシステムの制御下で遂行され得、ハードウェアまたはそれらの組み合わせによって、1つ以上のプロセッサ上で集合的に実行されるコード(例えば、実行可能な命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装され得る。上述のように、コードは、例えば、1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形式で、コンピュータが読み出し可能な記憶媒体上に記憶され得る。コンピュータが読み出し可能な記憶媒体は、非一時的であり得る。
いくつかの態様では、図2に示される、API要求ハンドラ218、ペイロードデータキャッシュ228、記憶ノードマネージャ244、および/または1つ以上のアーカイブデータ記憶サービス206の記憶ノード246は、図11の過程1100を遂行し得る。過程1100は、1102で、要求するデータ記憶のための関数呼び出しを(例えば、アーカイブデータ記憶サービスのユーザまたはクライアントエンティティに)提供することによって始められ得る。関数呼び出しは、アーカイブデータ記憶サービスと相互作用することおよび/またはインターフェースするためのAPIまたはSDKに加わり得る。1104で、過程1100は、リモートコンピューティングデバイス(すなわち、ユーザ)からデータペイロードの複数の部分を受け取ることを含み得る。いくつかの場合では、各部分のサイズは、一定であり得る。他の場合では、各部分のサイズは、最後の部分が異なり得ることを除いて一定であり得る。加えて、サイズは、選択され得るかまたは別様にユーザによって決定され得る。1106で、過程1100は、各部分のサイズの指標を受け取ることを含み得る。いくつかの場合では、1104および1106で遂行される作用は、単一作用として一緒に遂行され得る。しかしながら、いくつかの規制が部分サイズに関して適用され得る。そのように、いくつかの実施例では、部分は、一定のサイズに制限され得る(すなわち、それらが同一サイズである必要があり得る)、しかしながら、最後の部分は、データペイロードの残りであり得る(すなわち、ペイロードから各他の一貫してサイズ決めされた部分を差し引く)。例えば、サイズ選択は、1MBかまたは1MBの整数の倍数に制限され得る。他の実施例では、サイズは、1MBかまたは1MBの2の整数乗に制限され得る。
過程1100は、1108で、ペイロードの部分のうちの少なくともいくつかのための所定のサイズの1つ以上のサブ部分を生成することも含み得る。上述のように、部分サイズ関して、サブ部分サイズが所定であり一定であり得る一方で、最後のサブ部分は、異なるサイズであり得る。所定のサイズは、1MBかまたは任意の他のサイズであり得る。1110で、過程1100は、サブ部分に少なくとも部分的に基づいて1つ以上のダイジェストまたはハッシュ値を計算することを含み得る。ダイジェストは、公開されたおよび/または別様に提供されたアルゴリズムに少なくとも部分的に基づいて計算され得る。いくつかの実施例では、1112で、過程1100は、データ構造のルートノードを生成することを含み得る。データ構造は、上述のように、サブ部分ダイジェストおよび/または集約されたダイジェストに少なくとも部分的に基づき得る。1114で、過程1100は、データ構造の上位レベルダイジェストを決定することを含み得る。上位レベルダイジェストは、データ構造のルートノードおよび/またはデータの部分のうちの1つに関連付けられた親ノードに少なくとも部分的に基づき得る。1116で、過程1100は、リモートコンピューティングデバイスがデータ構造を生成することを可能にするように構成される命令を提供することを含み得る。この方法で、ユーザは、アーカイブデータ記憶サービスと一緒にデータ構造を生成し得る。過程1100は、次いで、1118で、リモートコンピューティングデバイスによって生成された上位レベルダイジェストを受け取ることを含み得る。過程1100は、記憶されたデータペイロードが受け取られたデータペイロードに合うことを確証することによって1120で終了し得る。言い換えれば、過程1100は、データの整合性を検証し得るかまたは確証し得る。
図12は、データの整合性を検証するための過程1200を示す別の例示的な流れ図を例示する。いくつかの態様では、図2に示される、API要求ハンドラ218、ペイロードデータキャッシュ228、記憶ノードマネージャ244、および/または1つ以上のアーカイブデータ記憶サービス206の記憶ノード246は、図12の過程1200を遂行し得る。過程1200は、1202でデータペイロードの1つ以上のパートを受け取ることによって始まり得る。上述のように、パートは、任意のサイズであり得る。しかしながら、いくつかの実施例では、パートサイズは、1MBかまたは1MBの倍数に制限され得る。この方法で、データ構造は、選択されたサイズと無関係に構成され得る。1204で、過程1200は、1つ以上のパートのためのサブパートを生成することを含み得る。再度述べるが、これらのサブパートは、任意のサイズであり得るかまたは1MBまたはこれらに限定されないが、2MB、10MB等の他のサイズ制限に制限され得、過程1200は、1206でサブパートに基づいて値を計算することを含み得る。値は、いくつかの場合では、ハッシュ値、ダイジェスト、または他の暗号化の結果であり得る。いくつかの実施例では、過程1200は、1208でデータ構造のルートノードを生成することを含み得る。1210で、過程1200は、ルートノードへデータ構造を横切ることに少なくとも部分的に基づいてデータ構造の上位レベル値を決定することを含み得る。
いくつかの実施例では、過程1200は、1212でデータペイロードを記憶することも含み得る。ペイロードは、1202で受け取られた各1つ以上のパートを組み合わせることに少なくとも部分的に基づいて記憶され得る。したがって、いくつかの場合では、アーカイブデータ記憶サービス206は、全てのパートのデータ伝送が完了するまで、1212でペイロードを記憶することができない可能性がある。1214で、過程1200は、記憶されたデータペイロードが受け取られたデータペイロードに合うことを検証することを含み得る。これは、受け取られた上位レベル値を計算された上位レベル値と比較することによって遂行され得る。1216で、過程1200は、上位レベル値を含むデータオブジェクト識別子を提供することを含み得る。識別子は、記憶されたデータペイロードを検索および/または削除するようにユーザによって後に活用され得る。いくつかの実施例では、過程1200は、1218で記憶されたペイロードのための要求を受け取ることを含み得る。記憶されたペイロードは、(方法の各ステップで確証されたデータの整合性を有する)類似方式でユーザに提供し戻され得る。しかしながら、いくつかの場合では、過程1200は、記憶されたデータペイロードがペイロードを提供することに先駆けて変更されないことを確証することによって1220で終了し得る。
図13は、データの整合性を検証するための過程1300を示す別の例示的な流れ図を例示する。いくつかの態様では、図2に示される、API要求ハンドラ218、ペイロードデータキャッシュ228、記憶ノードマネージャ244、および/または1つ以上のアーカイブデータ記憶サービス206の記憶ノード246は、図13の過程1300を遂行し得る。過程1300は、1302でデータ上で動作を遂行するようにメソッド呼び出しを行うための命令を提供することによって始まり得る。いくつかの実施例では、これらのメソッド呼び出しは、1つ以上のAPIを介して公開され得るかまたは1つ以上のSDKで提供され得る。1304で、過程1300は、第1の分割された領域へのデータオブジェクトの第1の分割に基づいて、確証アルゴリズムを用いて、第1の操作を遂行することを含み得る。第1の分割された領域は、いくつかの実施例では、1MBかまたはこれらに限定されないが、ハッシュツリーまたはダイジェストの他の二分木のようなデータ構造を生成するように活用され得る他の一定のサイズ決めされたチャンクを含み得る。いくつかの実施例では、第1の操作は、ネットワークを介してユーザからデータを受け取ることを含み得る。1306で、過程1300は、第1の分割された領域に基づいて第1の確証値(例えば、ハッシュコード、チェックサム等)を生成するようにデータオブジェクトを確証することを含み得る。過程1300は、1308での第2の分割された領域へのデータオブジェクトの第2の分割に少なくとも部分的に基づいて、同一の確証アルゴリズムを活用して、データオブジェクト上で第2の操作を遂行することも含み得る。第2の分割された領域は、第1の分割からは異なるサイズであり得る。第2の分割に少なくとも部分的に基づいて、過程1300は、1310で第2の値を生成するようにデータオブジェクトを確証することを含み得る。ここで、第2の操作は、データをアーカイブデータ記憶サービスへ伝送することも含み得る。第2の確証値は、第1のように、これらに限定されないが、分割された領域のためのダイジェスト、分割された領域ダイジェストを集約することによって形成されたダイジェストのためのダイジェスト、および/またはデータ構造の上位レベルダイジェストを含み得る。1312で、過程1300は、第2の確証値が第1の確証値に等しいかどうかを決定することによって終了し得る。これは、2つの値を比較することに少なくとも部分的に基づいて決定され得る。いくつかの実施例では、確証アルゴリズムが適切に遂行され、データがその整合性を維持した場合、2つの値は、等しくなることが予期される。すなわち、分割された領域の2つのセットのサイズと無関係に(すなわち、第1の分割および第2の分割)、確証値は、等しくなるべきである。
図14は、記憶ドライブ回転スケジューリングのための技術を実装し得る例示的なアーキテクチャ1400を描写する。例示的なアーキテクチャ1400では、アーカイブデータ記憶システム1402は、これらに限定されないが、アーカイブデータ記憶、バッチジョブ処理、データ検索、データ管理、記憶デバイス管理、および/または回転スケジューリングを含む1つ以上のアーカイブサービスを提供し得る。いくつかの態様では、アーカイブデータ記憶システム1402は、回転スケジュール1404を決定し得るおよび/または記憶し得る。上述のように、回転スケジュール1404は、どのドライブがいつ有効にされるかを示し得る。加えて、回転スケジュール1404は、いくつかの要因に少なくとも部分的に基づいて決定され得るおよび/またはデータ記憶ノードマネージャおよび/またはデータ記憶ノードによって提供され得る。いくつかの実施例では、回転スケジュール1404は、コントローラ1406に提供され得る。いくつかの実施例では、コントローラ1406は、上述の1つ以上の記憶ノードを含み得る。あるいは、または加えて、コントローラ1406は、専用のメモリコントローラ、Small Computer System Interface(SCSI)コントローラ、Integrated Drive Electronics(IDE)コントローラ、ファイバーチャネルコントローラ、シリアル接続SCSIコントローラ等を含み得るがこれらに限定されない。加えて、コントローラ1406は、コントローラ等かまたは列記されたプロトコルを介してドライブコントローラ等と通信するいくつかの「スーパーコントローラ」の抽象化である可能性がある。ほんの一例として、コントローラ1406は、ラック1408の1つ以上のハードドライブ(またはハードディスクドライブ(HDD))群かまたは1つ以上の命令1410に少なくとも部分的に基づく他の構成を制御するように構成され得る。例えば、命令1412はHDD群1上で遂行される作用に対応し得、命令1414はHDD群2に対応し得る、等である。この方法で、コントローラ1406は、スケジュール1404に少なくとも部分的に基づいて各HDD群上で異なる命令を遂行するように構成され得る。
非限定の一実施例では、コントローラ1406は、「オン」と標示された命令1418に少なくとも部分的に基づいてHDD群4を有効にするスケジュール1404に従い得る。すなわち、命令1418は、HDD群4に対応し得、かつHDD群4が所定の時間の量にわたって有効であるべきであると示し得る。上述のように、各群が有効であり得る時間の量は、これらに限定されないが、群の分割に少なくとも部分的に基づく時間の一部分および/または記憶ノードのいくつかのオンデマンド要求を含むいくつかの要因に少なくとも部分的に基づき得る。所定の時間が切れた後に、コントローラ1406は、HDD群5が次に有効になり得るように、命令1410のチェーンに沿って「オン」命令1418を下向させ得る。したがって、命令1420は、HDD群5が今後ある時点で起動を始めるようにスケジュールされ得ることを示す「起動」と標示される。同様に、命令1416は、HDD群3が有効にされた後にまだ電源が落ちていることを示す「電源が落ちている」と標示される。少なくとも1つの実施例では、(例えば、スケジュールに少なくとも部分的に基づく)所定の時間の後に、コントローラ1406は、命令1418が「オン」と標示され得るようにその命令を下に1つ移動させ得、HDD群5は有効になり得る。他のシナリオおよび/または実施例は、ドライブの回転をスケジュールすることが可能であり得る。例えば、各HDD群は、各HDD群が1つ以上のドライブを含み得るように単一の記憶ドライブのみを含み得、各群が複数のドライブを含む1つのシナリオに限定されない。加えて、上述のように、付加的な命令は、同時に複数のドライブを起動することに少なくとも部分的に基づく電力消費スパイクを避けるように処理され得る。例えば、ある期間中回転するようにスケジュールされた群のドライブは、1つずつかまたは所望のようにサブ群で有効にするようにスケジュールされ得る。加えて、HDD群(および/または個別ハードドライブ)は、列記されなくてもよく、および/または示されるように任意の特定の順序でなくてもよい。例えば、コントローラ106は、どのドライブまたは群が特定の期間中に有効にされたかをテーブル、チャート、インデックス等を代わりに記録し得、無作為に(またはオンデマンドで)期間中にまだ有効にされていないドライブの有効化を通じて循環し得る。よって、コントローラ1406は、群化または図14に示されるリストによって制限されることなく、どのドライブがいつ有効にされるべきかを自由に決定することができ得る。
図15は、記憶ドライブ回転スケジューリングのための付加的な技術を実装し得る例示的なアーキテクチャ1500を描写する。例示的なアーキテクチャ1500では、アーカイブデータ記憶システム1502は、これらに限定されないが、アーカイブデータ記憶、バッチジョブ処理、データ検索、データ管理、記憶デバイス管理、および/または回転スケジューリングを含む1つ以上のアーカイブサービスを提供し得る。したがって、いくつかの態様では、アーカイブデータ記憶システム1502は、回転スケジュール1504を決定し得るおよび/または記憶し得る。上述のように、回転スケジュール1504は、記憶サービスのどのドライブ(例えば、アーカイブデータ記憶システム1504のうちのもの)が有効にされるかおよび/またはどの期間にされるかを示し得る。加えて、回転スケジュール1504は、上述のように、いくつかの要因に少なくとも部分的に基づいて決定され得る、および/またはデータ記憶ノードマネージャ244および/またはデータ記憶ノードによって提供され得る。
いくつかの態様では、コントローラ1506は、1つ以上のハードドライブ1508(1)、...、1508(N)(集合的に、「ハードドライブ1508」)を制御するように構成され得る。ほんの一例として、ハードドライブ1508は、配列、または順序付けられたリストに例示される、しかしながら、任意の順序付けおよび/または他の組織が、どの特定のハードドライブ1508またはハードドライブのセットが他の特定のハードドライブ1508(またはハードドライブのセット)の前または後ろにくるかを判定するために想定されてもよい。例えば、配列は、(例えば、いくつかの論理マッピングに少なくとも部分的に基づいて)有効にする次のハードドライブを指すためにコントローラによって活用され得、ハードドライブ1508を順序付けるためではない。しかしながら、他の実施例では、配列は、(例えば、オンデマンドの回転スケジュールが実装されるとき)ハードドライブを動的に順序付けるように活用され得る。
いくつかの実施例では、ウィンドウ1510(またはスライディングスケール)は、ハードドライブ1508を起動するために想定され得る。所定の期間に少なくとも部分的に基づいて、ウィンドウ1510は、例えば、各期間でウィンドウ1512、1514、および1516になる配列に沿って移動し得る。言い換えれば、ウィンドウ1510は、有効であるかまたは第1の期間中にコントローラ1506によって有効にされるハードドライブ1508を表し得る。すなわち、例としてであり限定するものではないが、第1の期間中、ハードドライブ1508(1)〜1508(5)は、有効であり得る(すなわち、電力を提供され得るかまたはスリープモードから外される)。図15に示される実施例では、第1の期間の最後に、ウィンドウ1510は、ハードドライブ1508(2)〜1508(6)が有効になるウィンドウ1512になるように移動し得る。いくつかの実施例では、通過が起こる(すなわち、ウィンドウ1510がスライドする)と、ハードドライブ1508(1)は、コントローラ1506がハードドライブ1508(6)を有効にすることに先駆けて電源が落とされ得る。この方法で、ハードドライブ1508の配列を動作することに関連付けられた電力消費は、あるレベルを超えないようになり得る。
加えて、いくつかの態様では、ウィンドウ1510、1512、1514、1516は、長さ1518によって画定され得る。長さは、デマンド、合計ハードドライブ1508の割合、合計ハードドライブ1508の所定の数、電力消費のいくつかの所定のレベル、温度、費用等に少なくとも部分的に基づいて決定され得る。更に、ウィンドウは、ハードドライブ1508の電力消費を最小化する、ハードドライブ1508に関連付けられた動作費用を最小化する、および/またはハードドライブ1508の稼働寿命(例えば、機能低下するかまたは別様に整備される、修理される、または交換される前にハードドライブ1508が機能する期間)を最大化するように構成され得る。したがって、長さ1518は、回転スケジュール1504全体を通して一定であり得るかまたは動的であり得る。いくつかの実施例では、ウィンドウ1510がハードドライブ1508の配列の最後尾に到達すると、ウィンドウ1510は、始めに循環し戻り得る。図的には、これは、ハードドライブ1508(1)がハードドライブ1508(N)に従う円形配列として表され得る。更に、いくつかの実施例では、図15に示される配列は、全く使用されない可能性がある。代わりに、データ構造の任意の他の形態または種類は、回転スケジュール1504がどのハードドライブ1508がどの期間に有効にされるかを決定し得るおよび/または制御し得るそのような方法で、ハードドライブ1508を体系化するように活用され得る。加えて、各ハードドライブ1508は、単一のドライブの代わりに実際に1つ以上のハードドライブの群であり得る。このシナリオでは、コントローラ1506は、出力スパイクまたは他の潜在的な電力消費課題を制限するようにハードドライブの群内で各単一のハードドライブの有効化をスタガ配列するように更に構成され得る。
いくつかの実施例では、ハードドライブ1508は、配列1520で示されるような、論理順序で配列され得る。ハードドライブ1508はまた、例示的な物理的ラック1522で示されるように、論理順序から異なり得る物理的順序でサーバにかまたはラック上に配列され得る。すなわち、ハードドライブ1508は、論理配列1520に示される順序とは対照的な順序で物理的ラック1522上に実際に位置し得る。よって、スケジュール1504が論理順序1520に沿ってウィンドウ1510を移動させると、ハードドライブ1508は、それらの論理順序および/またはそれらの物理的な場所に少なくとも部分的に基づいて有効にされ得るかまたは別様に起動され得る。加えて、マトリクス1524は、ハードドライブ1508がスケジュール1504に従って、各時間単位で有効にされることを示し得る。いくつかの実施例では、マトリクス1524の各行または列は、隣接の行が隣接のラックを表すようにサーバまたはキャビネットの物理的ラックを表し得る。加えて、いくつかの実施例では、マトリクス1524上のハードドライブ1508の均等分散または他の分散を確実にし得るように1つ以上の制約が提供され得るおよび/または実装され得る。例えば、使用可能なハードドライブ1508を均等に分散させるように、条件または制約は、マトリクス1524の他のハードドライブ1508の特定の距離内にある特定の加減、年数、場所、振動の量等のハードドライブ1508が有効にされ得ないことを示し得る。例えば、スケジュール1504は、特定のハードドライブ1508が有効にされることを示し得る、しかしながら、条件は、アーカイブデータ記憶サービス1502に指標を修正するようにかまたは代わりに異なるハードドライブ1508を有効にする命令を提供するように命令し得る。
図15を参照して説明されるように、いくつかの態様では、ハードドライブ1508の合計数は、群の所定の数に分割され得る。次いで、これらの群は、回転スケジュール1504に少なくとも部分的に基づいて動作の内外で回転され得る。そのようなアプローチは、記憶ノードレジストラ248に、いつおよびどこに新たな書き込み操作を配置するかまたはいつ読み出しまたは削除操作を実行することが可能であり得るか、を決定させ得る。いくつかの実施例では、データ記憶ノードマネージャ224は、この情報から切り離され得、記憶ノードレジストラ248からの指示に従い得る。しかしながら、他の実施例では、回転スケジュール804は、オンデマンドで決定され得る。例えば、1つ以上のデータ記憶ノードマネージャ224からの読み出し要求に少なくとも部分的に基づいて、記憶ノードレジストラ248は、回転にくるべきハードドライブ808の数を選択し得、次いでデータ記憶ノードにメッセージを送信し得る。あるいは、データ記憶ノードマネージャ244は、データ記憶ノードに直接接触し得る。いくつかの実施例では、特定の制約は、これらに限定されないが、あまりにも長期にわたって不足を感じさせないという標的、1つの未処理の読み出し要求のみを有するドライブへの要求を含む、回転スケジュール1504に影響し得る。
図16〜18は、データ記憶電力管理を提供するための、それぞれ、過程1600〜1800を示す例示的な流れ図を例示する。これらの過程は、論理流れ図として例示され、その各動作は、ハードウェア、コンピュータ命令、またはそれらの組み合わせにおいて実装されることができる動作の配列を表す。コンピュータ命令の文脈のなかでは、動作は、1つ以上のプロセッサによって実行されたとき列挙された動作を遂行する1つ以上のコンピュータが読み出し可能な記憶媒体上に記憶されたコンピュータで実行可能な命令を表す。概して、コンピュータで実行可能な命令は、特定の機能を遂行するまたは特定のデータ種類を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造等を含む。動作が説明される順序は、制限として解釈されることを意図するものではなく、あらゆる説明された動作は、過程を実装するように任意の順序でおよび/または並列して組み合せることができる。
加えて、いくつかの、いずれかの、または全ての過程は、実行可能な命令で構成される1つ以上のコンピュータシステムの制御下で遂行され得、ハードウェアまたはそれらの組み合わせによって、1つ以上のプロセッサ上で集合的に実行されるコード(例えば、実行可能な命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装され得る。上述のように、コードは、例えば、1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形式で、コンピュータが読み出し可能な記憶媒体上に記憶され得る。コンピュータが読み出し可能な記憶媒体は、非一時的であり得る。
いくつかの態様では、図2に示される記憶ノードマネージャ244、記憶ノード246、記憶ノードレジストラストア250、および/またはアーカイブデータ記憶サービス206の他のデータ記憶デバイスまたは集合体は、図16の過程1600を遂行し得る。過程1600は、1602でアーカイブデータ記憶サービス206の1つ以上のデータ記憶デバイスの群への類別で始まり得る。いくつかの実施例では、各群は、データ記憶デバイスのサブセットかまたはサブセットのパートであり得る。加えて、類別することは、これらに限定されないが、場所、電力消費、年数、速度、費用等の記憶デバイスの特徴に少なくとも部分的に基づいて一緒に群化される記憶デバイスの量または割合を決定することを含み得る。1604で、過程は、スケジュールに従って群の電力状態を修正することを含み得る。スケジュールは、平均すると、ある量のデータ記憶デバイスが電源を落とした状態にあることを確実にするように構成され得る。電源を落とした状態は、低電力状態、スリープモード、電源を落としている状態、オフ等であり得る。加えて、電源を落とす状態になるデバイスの量は、アーカイブデータ記憶サービス206を動作することに関連付けられた電力消費および/または費用の所望のレベルに少なくとも部分的に基づき得る。更に、いくつかの実施例では、スケジュールは、受け取られ得るかまたは別様に記憶ノードレジストラストア250、記憶ノードレジストラ248、および/またはデータ記憶ノードに少なくとも部分的に基づき得る。
いくつかの実施例では、過程1600は、1606でデータ処理要求のバッチを取得することも含み得る。データ処理要求は、バッチまたは要求の有限の群化に加わり得るか、またはそれらは更なる同期動作のための待ち行列に加わり得る。加えて、要求のバッチは、読み出し要求、インデックスリスト要求、書き込み要求、削除要求等を含み得る。1608で、過程1600は、バッチ要求を処理することを含み得る。いくつかの実施例では、要求を処理することは、1610で、電源を落とした状態の記憶デバイスであって、電源が入れられたときに要求を処理するために使用可能となる記憶デバイスを識別することを含み得る。加えて、要求を処理することは、(例えば、1610から)識別された記憶デバイスを含む群が1612で起動状態にあるスケジュールに従って修正されるとき、要求を処理することも含み得る。すなわち、識別された記憶デバイスが起動されるかまたは別様に使用可能にされると、アーカイブデータ記憶サービス206は、要求を処理し得る(例えば、記憶デバイスからデータを読み出すかまたは記憶デバイスからデータを削除する)。加えて、いくつかの場合では、1608、1610、および/または1612の作用は、単一作用、2つの作用、または3つの別個の作用として処理され得る。いくつかの実施例では、過程1600は、1612で終了し得る。しかしながら、他の実施例では、過程1600は、起動状態において記憶デバイスの群の電源を落とすことで終了し得る。あるいは、または加えて、過程1600は、識別された記憶デバイスを含む群を起動することに先駆けておよび/または1614で要求を処理することに先駆けて、起動状態の記憶デバイスの群の電源を落とすことを含み得る。
図17は、データ記憶の電力管理のための過程1700を示す別の例示的な流れ図を例示する。いくつかの態様では、図2に示される記憶ノードマネージャ244、記憶ノード246、記憶ノードレジストラストア250、および/またはアーカイブデータ記憶サービス206の他のデータ記憶デバイスまたは集合体は、図17の過程1700を遂行し得る。過程1700は、1702でデータ記憶ノード246、記憶ノードレジストラ248、または記憶ノードレジストラストア250からの、回転スケジュール、予定、または他の種類の予定表を受信することで始まり得る。述べたように、スケジュールは、データ記憶ノード246によって遂行され得る。上述のように、スケジュールは、どの記憶デバイス(またはハードドライブ)が使用可能にされるかまたは別様に電源がいつ入れられるかのための命令を含み得る。いくつかの実施例では、スケジュールは、ディスクを減速すること、停止すること、または加速することによっておよび/または電気信号を消去することにより記憶デバイスを無効化することによって、各記憶デバイスの電力消費を管理するように構成され得るデバイスコントローラのための命令も含み得る。1704で、過程1700は、スケジュールに少なくとも部分的に基づいて1つ以上の記憶デバイスの電力を管理することを含み得る。
過程1700は、1706で、記憶デバイスに関連付けられた要求のバッチの1つ以上のデータ処理要求を識別することも含み得る。上述のように、要求は、単一バッチにおいて受け取られ得る。加えて、要求は、1708でバッチにおいて処理され得る。しかしながら、アーカイブデータ記憶サービス206がバッチの要求のうちのいくつかまたは全てを完了するまで新たな要求は受け取られない可能性があるが、いくつかの実施例では、要求は、バッチにおいて受け取られ連続して処理され得る。1710で、過程1700は、起動された際に要求を処理することができる低電力モードのデータ記憶デバイスを識別することを含み得る。更に、過程1700は、識別された記憶デバイスがスケジュールに基づいて起動されると要求の処理で終了し得る。この方法で、スケジュールは、記憶デバイスの電力管理を制御し得る一方で同時に、要求のバッチはスケジュールに影響し得る。この方法で、本明細書に記載されるデータ記憶の電力管理は、オンデマンドで考慮され得る。加えて、いくつかの態様では、1708でデータ処理要求を処理することは、1710および/または1712の作用を含み得る。したがって、それらは、単一作用で全て遂行され得る。
図18は、データの整合性を検証するための過程1800を示す別の例示的な流れ図を例示する。いくつかの態様では、図2に示される記憶ノードマネージャ244、記憶ノード246、記憶ノードレジストラストア250、および/またはアーカイブデータ記憶サービス206の他のデータ記憶デバイスまたは集合体は、図18の過程1800を遂行し得る。過程1800は、1802で、1つ以上の記憶デバイスの電力消費の管理が記憶デバイスのアクセスと同期化されることを可能にするように構成されたグローバル時間信号を受信することで始まり得る。すなわち、グローバル時間信号は、各記憶デバイスの電力を管理するときに正確に時間を測定するようにアーカイブデータ記憶サービス206によって活用され得る。加えて、アーカイブデータ記憶サービス206は、いつデータ記憶デバイスにアクセスするかを決定するようにグローバル時間信号を活用し得る。したがって、2つの作用は、いくつかの実施例では、それがオンであるか、起動されるか、または別様に著しい遅れもなくアクセス可能であるようにその電力消費が管理された後に、記憶デバイスがアクセスされるように同期化によって得る。1804で、過程1800は、各2つの記憶デバイスが記憶デバイスのセットのパートである、第2の記憶デバイスとは異なる時間で第1の記憶デバイスを使用可能にすることに関連付けられたスケジュールを取得することを含み得る。言い換えれば、スケジュールは、これらに限定されないが、いつ第1および第2のデバイスが起動されるべきかを含む、セットのうちのどの記憶デバイスがいつ起動されるべきかを示す情報を含み得る。過程1800は、1806で記憶デバイスのセットにアクセスするために要求のバッチの要求を識別することも含み得る。上述のように、要求は、読み出し要求、書き込み要求、削除要求、インデックスリスト要求等を含み得る。1808で、過程1800は、スケジュールに少なくとも部分的に基づいてどの記憶デバイスを使用可能にするかを決定することを含み得る。決定は、第1の記憶デバイス、第2の記憶デバイス、またはアーカイブデータ記憶サービス206によって制御されているかまたは管理されている記憶デバイスのセットのうちの任意の他の記憶デバイスを選択することを含み得る。更に、1810で、過程1800は、1808からの決定に少なくとも部分的に基づいて決定された記憶デバイスの電力消費を管理することで終了し得る。
データの整合性を検証するための例示的な方法およびシステムが、上に説明される。これらのシステムおよび方法のうちのいくつかまたは全ては、上に示されたもののようなアーキテクチャによって少なくとも部分的に実装され得るが、そうである必要はない。
図19は、種々の実施形態に従って態様を実装するための例示的な環境1900の態様を例示する。認識されるように、説明の目的でウェブに基づく環境が使用されるが、種々の実施形態を実装するために、必要に応じて、異なる環境が使用され得る。環境は、電子クライアントデバイス1902を含み、それは、適切なネットワーク1904を通じて要求、メッセージ、または情報を送信し受け取り、情報をデバイスのユーザに戻すように搬送するように操作可能な、任意の適切なデバイスを含むことができる。そのようなクライアントデバイスの例としては、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、セットトップボックス、携帯情報端末、電子ブックリーダー等が挙げられる。ネットワークとしては、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、もしくは任意の他のそのようなネットワーク、またはそれらの組み合わせを含む、任意の適切なネットワークが挙げられる。そのようなシステムに使用される構成要素は、選択されたネットワークおよび/または選択環境のタイプに少なくとも部分的に依存し得る。そのようなネットワークを介して通信するためのプロトコルおよび構成要素はよく知られており、本明細書では詳細に論じない。ネットワークを通じた通信は、有線接続または無線接続、およびそれらの組み合わせを介して可能にすることができる。この実施例では、当業者には明らかなように、要求を受け取り、それに応じてコンテンツを提供するためのウェブサーバ1906を環境が含むため、このネットワークは、インターネットを含むが、他のネットワークの場合、類似の目的を提供する代替のデバイスを使用することができる。
例示的な環境は、少なくとも1つのアプリケーションサーバ1908およびデータストア1910を含む。連鎖され得るまたは別様には構成され得る、適切なデータストアからデータを取得する等の作業を遂行するように相互作用することができる、いくつかのアプリケーションサーバ、層、もしくは他の要素、過程、または構成要素があり得ることを理解されたい。本明細書で使用される用語「データストア」とは、データを記憶し、それにアクセスし、それを検索することができる任意のデバイスまたはデバイスの組み合わせを指し、任意の数のデータサーバ、データベース、データ記憶デバイス、データ記憶媒体、およびそれらの任意の組み合わせを、任意の標準型、分散型、またはクラスター型の環境において含み得る。アプリケーションサーバは、クライアントデバイスのための1つ以上のアプリケーションの態様を実行するために、必要に応じて、データストアと統合するための、アプリケーションのためのデータアクセスおよびビジネスロジックの大部分を処理するための、任意の適切なハードウェアおよびソフトウェアを含むことができる。アプリケーションサーバは、データストアと連携してアクセス制御サービスを提供し、また、この実施例においてHTML、XML、または別の適切な構造化言語の形態でウェブサーバによってユーザに提供され得る、ユーザに転送されるテキスト、グラフィックス、音声、および/またはビデオ等のコンテンツを生成することができる。全ての要求および応答、ならびにクライアントデバイス1902とアプリケーションサーバ1908との間のコンテンツの送達は、ウェブサーバによって処理することができる。本明細書で論じられる構造化コードは、本明細書の他の場所で論じられるように、任意の適切なデバイスまたはホストマシン上で実行することができるため、ウェブサーバおよびアプリケーションサーバは必要とされず、これらは単に例示的な構成要素に過ぎないことを理解されたい。
データストア1910は、いくつかの別個のデータテーブル、データベース、または他のデータ記憶機構、および特定の態様に関連するデータを記憶するための媒体を含むことができる。例えば、例示されるデータストアは、製品側のコンテンツを提供するために使用することができる、製品データ1912およびユーザ情報1916を記憶するための機構を含む。データストアは、報告、分析、または他のそのような目的のために使用することができるログデータ1914を記憶するための機構も含むように示される。ページ画像情報のためおよび権利情報にアクセスする等の、データストアに記憶される必要があり得る、数多くの他の態様が存在し得、必要に応じて上で列記した機構のいずれかに、またはデータストア1910の付加的な機構に記憶することができることを理解されたい。データストア1910は、アプリケーションサーバ1908から命令を受け取って、それに応じてデータを取得する、更新する、または別様には処理するために、それと関連する論理を通して操作可能である。一実施例において、ユーザは、ある種類のアイテムの検索要求を提出し得る。この場合、データストアは、ユーザの識別を確証するためにユーザ情報にアクセスし得、その種類のアイテムに関する情報を取得するために、カタログの詳細情報にアクセスすることができる。情報は、次いで、ユーザがユーザデバイス1902上のブラウザを介して視聴することができる、Webページ上の結果リスト等で、ユーザに戻すことができる。関心の特定のアイテムの情報は、ブラウザの専用ページまたはウィンドウで視聴することができる。
各サーバは、一般的に、そのサーバの一般管理および操作のための実行可能プログラム命令を提供するオペレーティングシステムを含み、一般的に、サーバのプロセッサによって実行されたときに、サーバがその意図する機能を遂行することを可能にする命令を記憶する、コンピュータが読み出し可能な記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、読み出し専用メモリ等)を含む。オペレーティングシステムおよびサーバの一般機能性の好適な実装例は、既知であるか、または市販されており、また、特に本明細書の開示に照らして、当業者によって容易に実装される。
一実施形態における環境は、1つ以上のコンピュータネットワークまたは直接接続を用いて、通信リンクを介して相互接続されるいくつかのコンピュータシステムおよび構成要素を利用する、分散型コンピューティング環境である。しかしながら、そのようなシステムは、図19に例示されるよりも少ない数または多い数の構成要素を有するシステムで十分同等に動作できることが、当業者に認識されるであろう。よって、図19のシステム1900の描写は、事実上、例示的なものであり、本開示の範囲を限定するものとみなすべきではない。
本開示の例示的な実施形態は、以下の付記を考慮して説明することができる。
1.対費用効果の高い耐久性のあるアーカイブデータ記憶サービスを提供するためのコンピュータ実装方法であって、
実行可能な命令で構成されるアーカイブデータ記憶システムの1つ以上のコンピュータシステムの制御下で、
ネットワークを通じて要求元システムから、データオブジェクトを前記アーカイブデータ記憶システムに記憶する記憶要求を受け取ることと、
前記アーカイブデータ記憶システムに前記データオブジェクトを記憶させることを行うことと、
データオブジェクトに関連付けられたデータオブジェクト識別子を提供することと、
前記データオブジェクトを検索する検索要求に関連して、前記データオブジェクト識別子を受け取ることと、
前記検索要求に対応する検索ジョブを作成することと、
保留ジョブの集合体に前記検索ジョブを追加することと、
1つ以上のバッチで、前記保留ジョブの集合体を処理することと、
前記検索されたデータオブジェクトを提供することと、を含む、コンピュータ実装方法。
2.前記記憶要求に対応する記憶ジョブを作成することと、前記記憶ジョブ前記保留ジョブの集合体を追加することと、を更に含み、前記データオブジェクトを記憶させることが、ステージング記憶に前記データオブジェクトを記憶させることを含む、付記1に記載のコンピュータ実装方法。
3.前記検索ジョブに関連付けられた検索ジョブ識別子を提供することを更に含み、前記検索されたデータオブジェクトを提供することが、前記データオブジェクトのための要求において前記検索ジョブ識別子を指定した要求元システムに1つ以上のパートとして前記検索されたデータオブジェクトを伝送することを含む、付記1に記載のコンピュータ実装方法。
4.前記検索ジョブが成功裡に完了した後に前記検索ジョブの完了を通知することを提供することを更に含む、付記1に記載のコンピュータ実装方法。
5.前記検索された前記データオブジェクトを提供することが、前記ステージングストアから前記データオブジェクトを検索することを含む、付記2に記載のコンピュータ実装方法。
6.前記データオブジェクトの少なくとも一部分のダイジェストに少なくとも部分的に基づいて前記データオブジェクトの整合性を検証することを更に含む、付記1に記載のコンピュータ実装方法。
7.コンピュータ実装方法であって、
実行可能な命令で構成される1つ以上のコンピュータシステムの制御下で、
データオブジェクトを検索するデータ検索要求であって、データオブジェクト識別子を指定する、データ検索要求を受け取ることと、
前記データ検索要求に対応するデータ検索ジョブを作成することと、
前記データ検索ジョブについての情報を取得するために使用可能である前記データ検索ジョブに関連付けられたジョブ識別子を提供することと、
前記ジョブ識別子を提供した後で、前記データオブジェクトへのアクセスを提供するために前記データオブジェクト識別子を少なくとも部分的に用いて前記データ検索ジョブを処理することと、を含む、方法。
8.前記データオブジェクト識別子が、前記データオブジェクトを記憶する前の記憶要求に応答して提供される、付記7に記載のコンピュータ実装方法。
9.前記データ検索ジョブを処理することが、
実行のための前記データ検索ジョブを選択することと、
前記データオブジェクト識別子に少なくとも部分的に基づいて、1つ以上の符号化されたデータ構成要素を記憶するための1つ以上の記憶エンティティを判定することであって、前記1つ以上の符号化されたデータ構成要素が、前記データオブジェクトに少なくとも部分的に基づいて生成される、判定することと、
前記判定されたものからの前記1つ以上の符号化されたデータ構成要素のうちの少なくともいくつかを検索させることと、
前記検索されたデータオブジェクトを取得するように前記検索された符号化されたデータ構成要素を復号することと、を含む、付記7に記載のコンピュータ実装方法。
10.前記データ検索ジョブを選択することが、少なくとも部分的にバッチ処理スケジュールに基づく、付記9に記載のコンピュータ実装方法。
11.前記バッチ処理スケジュールが、効率性を増加させるように使用される、付記10に記載のコンピュータ実装方法。
12.前記ジョブ識別子を指定するジョブステータス要求に応答して前記データ検索ジョブのステータスを提供することを更に含む、付記7に記載のコンピュータ実装方法。
13.アーカイブデータ記憶サービスを提供するためのシステムであって、
1つ以上のアーカイブデータ記憶デバイスと、
一時データストアと、
1つ以上のプロセッサと、
メモリであって、前記1つ以上のプロセッサによって実行されるとき、前記1つ以上のプロセッサに集合的に、少なくとも
データオブジェクトを記憶するデータ記憶要求を受け取ることと、
前記一時ストアに前記データオブジェクトを記憶させることと、
前記データに関連付けられたデータオブジェクト識別子であって、前記データオブジェクト識別子が、前記データオブジェクトの場所を特定するのに使用可能な記憶場所情報を少なくとも符号化する、データオブジェクト識別子を提供することと、
前記データオブジェクト識別子を提供した後で、前記記憶場所情報によって指定される場所に前記データオブジェクトを記憶させることと、を行わせる実行可能な命令を含む、メモリと、を備える、システム。
14.前記実行可能な命令が、前記1つ以上のプロセッサによって実行されるとき、前記1つ以上のプロセッサに集合的に、前記データ記憶要求に対応するデータ記憶ジョブを更に作成させ、前記記憶場所情報によって指定される場所に前記データオブジェクトを記憶させることが、少なくとも部分的に前記記憶場所情報に基づいて前記データ記憶ジョブを処理することを含む、付記13に記載のシステム。
15.前記データ記憶ジョブを処理することが、バッチ処理スケジュールに少なくとも部分的に基づいて実行するための前記ジョブをスケジュールすることを含む、付記14に記載のシステム。
16.前記記憶場所情報によって指定される場所に前記データオブジェクトを記憶させることが、
前記一時ストアから前記データオブジェクトを取得することと、
1つ以上のデータ符号化スキームを取得することと、
複数の符号化されたデータ構成要素を取得するように前記1つ以上の符号化スキームを用いて前記データオブジェクトを符号化することと、
前記1つ以上のアーカイブデータ記憶デバイスのうちの少なくともいくつかに前記複数の符号化されたデータ構成要素を記憶させることと、を含む、付記13に記載のシステム。
17.前記データオブジェクト識別子が、前記データオブジェクトの整合性を検証するために使用可能なデータ検証情報を少なくとも符号化する、付記13に記載のシステム。
18.前記実行可能な命令が、前記1つ以上のプロセッサによって実行されるとき、前記1つ以上のプロセッサに集合的に、少なくとも部分的に前記データ検証情報に基づいて、前記データオブジェクトの整合性を更に検証させる、付記17に記載のシステム。
19.集合的に記憶された実行可能な命令を媒体上に有する1つ以上の非一時的なコンピュータが読み出し可能な記憶媒体であって、前記命令が、アーカイブデータ記憶システムの1つ以上のプロセッサによって実行されるとき、システムに少なくとも
複数のデータ検索要求であって、前記複数のデータ検索要求の各々が、検索されるデータオブジェクトのためにデータオブジェクト識別子を指定する、複数のデータ検索要求を受け取ることと、
データ検索ジョブであって、各々が受け取られたデータ検索要求に対応する、データ検索ジョブを作成させることと、
ジョブ識別子であって、各ジョブ識別子がデータ検索ジョブに対応し前記データ検索ジョブに関する情報を取得するように利用可能である、ジョブ識別子を提供させることと、
ジョブバッチを形成するように前記データ検索ジョブの少なくともサブセットを集約させることと、
前記ジョブ識別子を提供させた後に、前記ジョブバッチを処理することを前記データ検索ジョブのサブセットに対応させることと、を行わせる、コンピュータが読み出し可能な記憶媒体。
20.前記命令が、システムに、要求バッチを形成する複数のデータ検索要求の少なくともサブセットを集約させることと、前記データ検索要求のサブセットに対応するデータオブジェクト識別子に少なくとも部分的に基づいて要求バッチを検証させることと、を更に行わせる、付記19に記載の1つ以上のコンピュータが読み出し可能な記憶媒体。
21.前記命令が、システムに、電力管理スケジュールに少なくとも部分的に基づいて前記データ検索ジョブの少なくともいくつかを処理させることを更に行わせる、付記19に記載の1つ以上のコンピュータが読み出し可能な記憶媒体。
22.前記命令が、システムに、並列処理を容易にするように前記データ検索ジョブを分割させることを更に行わせる、付記19に記載の1つ以上のコンピュータが読み出し可能な記憶媒体。
23.前記命令が、システムに、前記複数のデータ検索要求に対応する前記データオブジェクトの少なくともいくつかへのアクセスを提供させることを更に行わせる、付記19に記載の1つ以上のコンピュータが読み出し可能な記憶媒体。
24.前記命令が、システムに、前記複数のデータ検索要求に対応する前記データオブジェクトの少なくともいくつかのためのデータ整合性を検証させることを更に行わせる、付記23に記載の1つ以上のコンピュータが読み出し可能な記憶媒体。
25.データ整合性確証のためのコンピュータ実装方法であって、
実行可能な命令で構成される1つ以上のコンピュータシステムの制御下で、
アーカイブデータ記憶サービスへの要求に関連して、リモートコンピューティングデバイスからデータペイロードの複数の部分を受け取ることと、
前記複数の部分の少なくともサブセットの各部分のために、所定のサイズの1つ以上のサブ部分を生成することと、
前記1つ以上のサブ部分に少なくとも部分的に基づいて1つ以上のダイジェストを計算することと、
前記少なくとも1つ以上のダイジェストを表すノードを有する階層型データ構造のルートノードを少なくとも生成することと、
前記階層型データ構造のルートノードに関連付けられた前記階層型データ構造の上位レベルダイジェストを決定することと、
前記データペイロードに対応する前記リモートコンピューティングデバイスによって生成された上位レベルダイジェストを受け取ることと、
前記受け取られた上位レベルダイジェストと前記決定された上位レベルダイジェストとを比較することに少なくとも部分的に基づいて、記憶されたデータペイロードが前記受け取られた複数の部分に対応する受け取られたデータペイロードに合うことを、確証することと、を含む、コンピュータ実装方法。
26.前記リモートコンピューティングデバイスに命令を提供することを更に含み、前記命令が、前記リモートコンピューティングデバイスが前記階層型データ構造を生成し前記受け取られた上位レベルダイジェストを提供することを可能にするように構成された、付記25に記載のコンピュータ実装方法。
27.前記データペイロードの前記複数の部分が、前記リモートコンピューティングデバイスから、データペイロードを記憶する電子要求のパートとして受け取られる、付記25に記載のコンピュータ実装方法。
28.前記電子要求を行うように前記リモートデバイスのための関数呼び出しを提供することを更に含み、前記電子要求が、前記提供された関数呼び出しを少なくとも含む、付記27に記載のコンピュータ実装方法。
29.前記階層型データ構造が、二分木を少なくとも含む、付記25に記載のコンピュータ実装方法。
30.各前記複数の部分のためのサイズの指標を受け取ることを更に含む、付記25に記載のコンピュータ実装方法。
31.データ整合性確証のためのコンピュータ実装方法であって、
実行可能な命令で構成される1つ以上のコンピュータシステムの制御下で、
データペイロードの1つ以上のパートを受け取ることと、
前記1つ以上のパートの少なくともサブセットの各パートのために、サブパートを生成することと、
前記生成されたサブパートに少なくとも部分的に基づいて値を計算することと、
前記計算された値に少なくとも部分的に基づいてデータ構造のルートノードを少なくとも生成することと、
前記データ構造の前記ルートノードに関連付けられた前記データ構造の上位レベル値を決定することと、を含む、コンピュータ実装方法。
32.コンピュータ実装方法であって、
アーカイブデータ記憶に前記データペイロードを記憶することと、
前記決定された上位レベル値と受け取られた上位レベル値とに少なくとも部分的に基づいて、前記記憶されたデータペイロードが、前記受け取られた1つ以上のパートに対応する受け取られたデータペイロードに合うことを、検証することと、を更に含む、付記31に記載のコンピュータ実装方法。
33.前記サブパートが、第1の所定のサイズになるように生成され、前記受け取られた1つ以上のパートが、前記第1の所定のサイズの整数の倍数である第2のサイズである、付記31に記載のコンピュータ実装方法。
34.前記整数が、前記データ構造の枝の次数に少なくとも部分的に基づく、付記33に記載のコンピュータ実装方法。
35.前記データペイロードを識別するためにデータオブジェクト識別子を提供することを更に含み、前記データオブジェクト識別子が、前記データ構造の前記上位レベル値を含む、付記31に記載のコンピュータ実装方法。
36.コンピュータ実装方法であって、
前記記憶されたデータペイロードのための要求を受け取ることと、
前記上位レベル値に少なくとも部分的に基づいて、前記記憶されたデータペイロードが前記データペイロードを提供することに先駆けて変更されないことを確証することと、を更に含む、付記35に記載のコンピュータ実装方法。
37.コンピュータ実装方法であって、
第2の記憶デバイスに第1の記憶デバイスのデータペイロードを記憶することと、
前記上位レベル値に少なくとも部分的に基づいて、前記第2の記憶デバイスに記憶された前記データペイロードが前記第1の記憶デバイスの前記データペイロードに合うことを、確証することと、を更に含む、付記31に記載のコンピュータ実装方法。
38.コンピュータ実装方法であって、
第2の生成されたサブパートであって、前記第2の生成されたサブパートが前記生成されたサブパートと異なる形態である、第2の生成されたサブパートに少なくとも部分的に基づいて前記データペイロードを再分割することと、
前記上位レベル値に少なくとも部分的に基づいて、前記再分割されたデータペイロードが記憶されたデータペイロードに合い、前記記憶されたデータペイロードが前記受け取られたデータペイロードに少なくとも部分的に基づくことを確証することと、を更に含む、付記31に記載のコンピュータ実装方法。
39.データ整合性を確証するためのシステムであって、
コンピュータで実行可能な命令を記憶する少なくとも1つのメモリと、
少なくとも1つのメモリにアクセスするように構成された少なくとも1つのプロセッサであって、前記少なくとも1つのプロセッサが、前記コンピュータで実行可能な命令を実行するように構成され、集合的に少なくとも
データのチャンクであって、前記データが複数のチャンクを含む、データのチャンクを少なくとも記憶し、
少なくとも1つのデータのチャンクの少なくとも1つのサブチャンクを生成し、
前記サブチャンクに対応するダイジェストを少なくとも記憶し、
前記サブチャンクに対応する前記記憶されたダイジェストに少なくとも部分的に基づいてデータ構造を生成し、
コンピューティングデバイスに前記生成されたデータ構造の上位レベルダイジェストを提供する、プロセッサと、を含む、システム。
40.前記少なくとも1つのプロセッサが、前記コンピューティングデバイスによって示される所定のサイズに少なくとも部分的に基づいて前記コンピューティングデバイスからデータのチャンクを少なくとも受け取るように前記コンピュータで実行可能な命令を実行するように更に構成される、付記39に記載のシステム。
41.前記少なくともデータのチャンクが、前記コンピューティングデバイスから、前記システムによって提供された命令フォーマットに少なくとも部分的に基づいて前記データを記憶する電子要求において受け取られる、付記40に記載のシステム。
42.前記上位レベルダイジェストが、前記データを識別するように構成された識別子に追加される、付記39に記載のシステム。
43.前記少なくとも1つのプロセッサが、前記コンピュータで実行可能な命令を実行して
前記複数のチャンクを含む前記データを記憶し、
要求であって、前記要求が前記識別子を含む、前記コンピューティングデバイスに前記データを提供する要求を受け取り、
前記コンピューティングデバイスに前記データを提供することに先駆けて、前記上位レベルダイジェストに少なくとも部分的に基づいて、前記データを検証するように構成される、付記42に記載のシステム。
44.前記少なくとも1つのプロセッサが、前記コンピュータで実行可能な命令を実行して
前記識別子のためのダイジェストを生成して、
前記識別子を命令において参照することに先駆けて、前記識別子のための前記生成されたダイジェストに少なくとも部分的に基づいて、前記識別子を検証するように構成される、付記42に記載のシステム。
45.データ整合性を確証するためのコンピュータで実行可能な命令を記憶する1つ以上のコンピュータが読み出し可能な媒体であって、前記命令が、1つ以上のプロセッサによって実行されるとき、1つ以上のプロセッサが、
データオブジェクトに関連する第1のデータ操作であって、前記第1のデータ操作が前記データオブジェクトの第1の分割された領域への第1の分割に少なくとも部分的に基づく、データオブジェクトに関連する第1のデータ操作を遂行することと、
前記第1の分割された領域に少なくとも部分的に基づいて第1の確証値を生成するようにデータ確証アルゴリズムを用いて前記データオブジェクトを確証することと、
前記データオブジェクトに関連する第2のデータ操作であって、前記第2のデータ操作が前記データオブジェクトの第2の分割された領域への第2の分割に少なくとも部分的に基づき、前記第2の分割された領域が前記第1の分割された領域から異なる、前記データオブジェクトに関連する第2のデータ操作を遂行することと、
第2の確証値を生成するようにデータ確証アルゴリズムを用いて前記データオブジェクトを確認検証することと、
前記第2の確証値が前記第1の確証値に合うかどうか決定することと、を含む動作を遂行するように1つ以上のプロセッサを構成する、媒体。
46.データ確証アルゴリズムを用いることが、前記データの1つ以上の分割された領域を所定のサイズで生成することを含む、付記45に記載の1つ以上のコンピュータが読み出し可能な媒体。
47.少なくとも1つの前記第1の分割された領域または少なくとも1つの前記第2の分割された領域が、前記所定のサイズの倍数であるサイズを有し、前記倍数が、前記第1のデータオブジェクトに関連付けられたデータ構造の次数の整数による累乗の結果である、付記46に記載の1つ以上のコンピュータが読み出し可能な媒体。
48.前記命令が、前記第1のデータ操作または前記第2のデータ操作のうちの少なくとも1つを遂行するためのメソッド呼び出しを行うための命令を提供することを含む操作を遂行するように、前記1つ以上のプロセッサを更に構成する、付記45に記載の1つ以上のコンピュータが読み出し可能な媒体。
49.前記第1のデータ操作または前記第2のデータ操作のうちの少なくとも1つが、ネットワークを通じての前記データオブジェクトの転送である、付記45に記載の1つ以上のコンピュータが読み出し可能な媒体。
50.前記オブジェクトが、前記ネットワークを通じて部分的に転送される、付記49に記載の1つ以上のコンピュータが読み出し可能な媒体。
51.前記第1の操作が、前記データオブジェクトを少なくとも受け取ることを含み、前記第2の操作が、アーカイブデータ記憶に前記データオブジェクトを少なくとも記憶することを含む、付記45に記載の1つ以上のコンピュータが読み出し可能な媒体。
52.前記命令が、前記第2の確証値に少なくとも部分的に基づいて前記データオブジェクトの整合性を確実にすることを含む操作を遂行するように前記1つ以上のプロセッサを更に構成する、付記51に記載の1つ以上のコンピュータが読み出し可能な媒体。
53.前記命令が、前記第2の分割された領域に少なくとも部分的に基づいて前記データオブジェクトの整合性を確実にすることを含む操作を遂行するように前記1つ以上のプロセッサを更に構成する、付記51に記載の1つ以上のコンピュータが読み出し可能な媒体。
54.記憶デバイス電力を管理するためのコンピュータ実装方法であって、
実行可能な命令で構成される1つ以上のコンピュータシステムの制御下で、
群であって、各群が前記データ記憶デバイスのサブセットを含む群に、アーカイブデータ記憶システムのデータ記憶デバイスを類別することと、
スケジュールであって、前記スケジュールが、平均すると、所定の量の前記データ記憶デバイスが電力低下状態にあることを確実にするように構成され得る、スケジュールに従って前記群の電力状態を修正することと、
データ処理要求のバッチを取得することと、
前記要求の少なくともサブセットの各要求について、少なくとも、
電力上昇状態のときに前記要求を処理するように使用可能である、電力低下状態のデータ記憶デバイスを識別することと、
前記識別されたデータ記憶デバイスを含む群が電力上昇状態にある前記スケジュールに従って修正されるとき前記要求を処理することと、
により前記データ処理要求のバッチを処理することと、
を含む、コンピュータ実装方法。
55.前記群が、前記サブセットの前記データ記憶デバイスの量を少なくとも示す、付記54に記載のコンピュータ実装方法。
56.前記群の前記電力状態を修正することが、前記群の前記データ記憶デバイスの電力上昇または電力低下のうちの少なくとも1つを行うように構成された記憶デバイスコントローラに命令を提供することを少なくとも含む、付記54に記載のコンピュータ実装方法。
57.前記データ処理要求のバッチが、データを記憶する要求、データを削除する要求、またはデータを読み出す要求のうちの少なくとも1つを含む、付記54に記載のコンピュータ実装方法。
58.前記要求を処理することが、前記識別されたデータ記憶デバイスからデータを読み出すことまたは削除することを少なくとも含む、付記54に記載のコンピュータ実装方法。
59.前記識別されたデータ記憶デバイスを含む群が電力上昇状態になるように修正されることに先駆けて、電力上昇状態の群の記憶デバイスの電源を落とすことを更に含む、付記54に記載のコンピュータ実装方法。
60.記憶デバイス電力を管理するためのコンピュータ実装方法であって、
実行可能な命令で構成される1つ以上のコンピュータシステムの制御下で、
スケジュールに少なくとも部分的に基づいて1つ以上のデータ記憶デバイスの電力を管理することと、
バッチのデータ処理要求であって、前記要求が1つ以上のデータ記憶デバイスに関連付けられた、バッチのデータ処理要求を識別することと、
前記データ処理要求を少なくとも、
より高い電力状態のときに前記要求を処理することができる、より低い電力状態にあるデータ記憶デバイスを識別することと、
前記スケジュールに少なくとも部分的に基づいて起動されると、前記識別されたデータ記憶デバイスが、前記要求を処理することと、
により処理することと、
を含む、コンピュータ実装方法。
61.前記スケジュールが、前記より低い電力状態の前記データ記憶デバイスの所定の量を維持するように構成される、付記60に記載のコンピュータ実装方法。
62.前記データ記憶デバイスに関連付けられたデータ処理ジョブを遂行するように構成されたデータ記憶ノードによって前記スケジュールを実施することを更に含む、付記60に記載のコンピュータ実装方法。
63.前記データ記憶デバイスに関連付けられたデータ処理ジョブを管理するように構成された記憶ノードレジストラから前記スケジュールを受け取ることを更に含む、付記60に記載のコンピュータ実装方法。
64.前記データ処理要求が、前記バッチに少なくとも部分的に基づいて処理される、付記60に記載のコンピュータ実装方法。
65.前記データ処理要求が、読み出し要求、書き込み要求、または削除要求のうちの少なくとも1つである、付記60に記載のコンピュータ実装方法。
66.記憶デバイス電力を管理するためのシステムであって、
コンピュータで実行可能な命令を記憶する少なくとも1つのメモリと、
少なくとも1つのメモリにアクセスするように構成された少なくとも1つのプロセッサであって、前記少なくとも1つのプロセッサが、前記コンピュータで実行可能な命令を実行するように構成され、集合的に少なくとも
1つ以上の記憶デバイスの電力を管理するためのスケジュールに関連付けられた情報を記憶し、
要求であって、前記要求が要求のバッチに含まれる、1つ以上の記憶デバイスに関連付けられた要求を識別し、
少なくとも
前記要求を処理することができる無効にされた記憶デバイスを一時的に決定し、
前記決定された記憶デバイスが前記スケジュールに少なくとも部分的に基づいて有効にされるとき前記要求を処理する、付加的なコンピュータで実行可能な命令を実行することによって前記要求を処理する、プロセッサと、を含む、システム。
67.前記スケジュールが、一時的に同時に無効にされる1つ以上の記憶デバイスの量を少なくとも示す、付記66に記載のシステム。
68.前記要求が前記バッチの他の要求と共に処理される、付記66に記載のシステム。
69.前記スケジュールが、前記1つ以上の記憶デバイスに関連付けられた費用を最小化すること、前記1つ以上の記憶デバイスの電力消費を最小化すること、または前記1つ以上の記憶デバイスの稼働寿命を最大化することのうちの少なくとも1つを行うように構成される、付記66に記載のシステム。
70.前記スケジュールが、前記1つ以上の記憶デバイスに関連付けられた要求を管理するように構成された構成要素から受け取られる、付記66に記載のシステム。
71.前記要求を処理することが、前記1つ以上の記憶デバイスにアクセスする要求に少なくとも部分的に基づいて前記スケジュールを修正することを少なくとも含む、付記66に記載のシステム。
72.記憶デバイス電力を管理するためのコンピュータで実行可能な命令を記憶する1つ以上のコンピュータが読み出し可能な媒体であって、前記命令が、1つ以上のプロセッサによって実行されるとき、前記1つ以上のプロセッサが
少なくとも前記1つ以上の記憶デバイスの第2の記憶デバイスとは異なる時間で少なくとも前記1つ以上の記憶デバイスの第1の記憶デバイスを可能にすることに関連付けられたスケジュールを獲得することと、
前記1つ以上の記憶デバイスにアクセスするための要求のバッチの要求を識別することと、
前記スケジュールおよび前記要求に少なくとも部分的に基づいて、前記第1の記憶デバイスかまたは前記第2の記憶デバイスの少なくともどちらかを有効にすることを決定することと、
前記決定に少なくとも部分的に基づく前記1つ以上の記憶デバイスの少なくとも前記第1または前記第2の記憶デバイスの電力消費を管理することと、を含む動作を遂行するように前記1つ以上のプロセッサを構成する、媒体。
73.前記命令が、前記1つ以上の記憶デバイスの前記電力消費の管理が前記1つ以上の記憶デバイスのアクセスと少なくとも同期化されることを可能にするように構成されたグローバル時間信号を受信することを含む動作を遂行するように前記1つ以上のプロセッサを更に構成する、付記72に記載の1つ以上のコンピュータが読み出し可能な媒体。
74.前記電力消費を管理することが、前記グローバル時間信号に少なくとも部分的に基づいて少なくとも前記第1または第2の記憶デバイスの電源を落とすことかまたは起動することを少なくとも含む、付記73に記載の1つ以上のコンピュータが読み出し可能な媒体。
75.前記1つ以上の記憶デバイスにアクセスすることが、前記グローバル時間信号に少なくとも部分的に基づいて少なくとも前記第1または第2の記憶デバイスからデータを読み出すこと、少なくとも前記第1または第2の記憶デバイスにデータを書き込むこと、または少なくとも前記第1または第2の記憶デバイスのデータを削除することを少なくとも含む、付記73に記載の1つ以上のコンピュータが読み出し可能な媒体。
76.前記スケジュールが、同時にかまたは各動作可能な記憶デバイスの動作中にいくつかの記憶デバイスのうちの少なくとも1つが動作可能になることを示す、付記72に記載の1つ以上のコンピュータが読み出し可能な媒体。
77.前記回転スケジュールが、前記1つ以上の記憶デバイスに関連付けられた温度の均一分散または振動を確実にする、付記72に記載の1つ以上のコンピュータが読み出し可能な媒体。
78.前記第1の記憶デバイスかまたは前記第2の記憶デバイスの少なくともどちらかを有効にすることを決定することが、熱回避かまたは振動回避の少なくとも一方に少なくとも部分的に基づく、付記72に記載の1つ以上のコンピュータが読み出し可能な媒体。
79.特定のサーバのため、前記回転スケジュールが、特定の分散に少なくとも部分的に基づいて前記特定のサーバの前記1つ以上の記憶デバイスを有効にするかまたは無効にするように前記特定のサーバの前記1つ以上の記憶デバイスを群化する、付記72に記載の1つ以上のコンピュータが読み出し可能な媒体。
種々の実施形態は更に、多種多様な動作環境で実装することができ、一部の場合において、いくつかのアプリケーションのいずれかを動作するために使用することができる、1つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含むことができる。ユーザまたはクライアントデバイスとしては、標準的なオペレーティングシステムを実行するデスクトップまたはラップトップコンピュータ等の、数多くの汎用パーソナルコンピュータ、ならびに、モバイルソフトウェアを実行し、かついくつかのネットワークおよびメッセージングプロトコルをサポートすることができる、セルラーデバイス、無線デバイス、およびハンドヘルドデバイスのいずれかが挙げられる。そのようなシステムとしてはまた、開発およびデータベース管理等の目的で、種々の市販のオペレーティングシステムおよび他の既知のアプリケーションのいずれかを実行する、数多くのワークステーションも挙げられる。これらのデバイスとしてはまた、ネットワークを介して通信することができる、ダミー端末、シンクライアント、ゲームシステム、および他のデバイス等の、他の電子デバイスも挙げられる。
大部分の実施形態は、TCP/IP、OSI、FTP、UPnP、NFS、CIFS、およびAppleTalk等の、種々の市販のプロトコルのいずれかを用いて通信をサポートするための、当業者が精通している少なくとも1つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、およびそれらの任意の組み合わせとすることができる。
ウェブサーバを利用する実施形態において、ウェブサーバは、HTTPサーバ、FTPサーバ、CGIサーバ、データサーバ、Javaサーバ、およびビジネスアプリケーションサーバを含む、種々のサーバまたは中間層アプリケーションのいずれかを動作させることができる。サーバ(複数可)はまた、ユーザデバイスからの要求に応じて、Java(登録商標)、C、C#、もしくはC++等の任意のプログラミング言語、またはPerl、Python、もしくはTCL等の任意のスクリプト言語、ならびにそれらの組み合わせで書かれた1つ以上のスクリプトまたはプログラムとして実装され得る1つ以上のWebアプリケーションを実行すること等によって、プログラムまたはスクリプトを実行することも可能であり得る。サーバ(複数可)としてはまた、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、およびIBM(登録商標)から市販されているものが挙げられるがそれらに限定されない、データベースサーバも挙げられる。
環境は、上で論じたように、種々のデータストア、ならびに他のメモリおよび記憶媒体を含むことができる。これらは、1つ以上のコンピュータに対してローカルな(および/またはその中に存在する)、またはネットワーク全体にわたるコンピュータのいずれかまたは全てからリモートの記憶媒体上等の、種々の場所に存在することができる。特定の1組の実施形態において、情報は、当業者が精通しているストレージエリアネットワーク(「SAN」)の中に存在し得る。同様に、必要に応じて、コンピュータ、サーバ、または他のネットワークデバイスに起因する機能を遂行するための任意の必要なファイルが、ローカルおよび/またはリモートで記憶され得る。システムがコンピュータ制御のデバイスを含む場合、そのような各デバイスは、バスを介して電気的に連結され得るハードウェア要素を含むことができ、該要素は、例えば、少なくとも1つの中央処理ユニット(CPU)と、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチ画面、またはキーパッド)と、少なくとも1つの出力デバイス(例えば、表示デバイス、プリンタ、またはスピーカー)とを含む。そのようなシステムは、ディスクドライブ、光記憶デバイス、およびランダムアクセスメモリ(RAM)またはリードオンリーメモリ(ROM)等の固体記憶デバイス、ならびにリムーバブル媒体デバイス、メモリカード、フラッシュカード等の、1つ以上の記憶デバイスも含み得る。
そのようなデバイスとしてはまた、上述のように、コンピュータが読み出し可能な記憶媒体リーダー、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス等)、および作業メモリも挙げられる。コンピュータが読み出し可能な記憶媒体リーダーは、リモート、ローカル、固定の、および/または取り外し可能な記憶デバイスを表すコンピュータが読み出し可能な記憶媒体、ならびにコンピュータが読み出し可能な情報を一時的におよび/またはより恒久的に含む、記憶する、伝送する、および検索するための記憶媒体と接続することができる、またはそれを受け取るように構成することができる。システムおよび種々のデバイスはまた、一般的に、オペレーティングシステム、およびクライアントアプリケーションまたはWebブラウザ等のアプリケーションプログラムを含む、少なくとも1つのワーキングメモリデバイス内に位置する、数多くのソフトウェアアプリケーション、モジュール、サービス、または他の要素も含む。代替の実施形態は、上で説明した数多くの変形例を有し得ることを理解されたい。例えば、カスタマイズされたハードウェアも使用され得、および/または特定の要素が、ハードウェア、ソフトウェア(アプレット等のポータブルソフトウェアを含む)、または双方で実装され得る。更に、ネットワーク入力/出力デバイス等の他のコンピューティングデバイスへの接続が利用され得る。
コードまたはコードの部分を収容するための記憶媒体およびコンピュータが読み出し可能な媒体としては、コンピュータが読み出し可能な命令、データ構造、プログラムモジュール、または他のデータ等の情報を記憶および/または伝送するための任意の方法または技術で実装される揮発性および不揮発性で、取り外し可能および取り外し不可能な媒体等が挙げられるが、それらに限定されない、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶デバイス、または所望の情報を記憶するために使用することができ、システムデバイスによってアクセスすることができる、任意の他の媒体を含む、記憶媒体および通信媒体を含む、当技術分野において知られているまたは使用される、任意の適切な媒体が挙げられる。本明細書で提供される開示および教示に基づいて、当業者は、種々の実施形態を実現するための他の様式および/または方法を認識するであろう。
したがって、本明細書および図面は、限定的な意味ではなく、例示的な意味であるとみなされるべきである。しかしながら、特許請求の範囲に記載された本発明のより広い趣旨および範囲から逸脱することなく、種々の修正および変更が行われ得ることが明らかであろう。
他の変形例は、本開示の主旨の範囲内である。よって、本開示の技術は種々の修正および代替構成が可能である一方で、それらのある例示された実施形態は図面において示され上に詳細に説明されている。しかしながら、開示された特定の形態または複数の形態に本発明を限定することを意図しないことを理解されたいがむしろ、意図することは、添付の特許請求の範囲に定義されるように、本発明の趣旨および範囲内に属する全ての修正、代替構成、および均等物を網羅することである。
用語「a」、「an」、および「the」および本開示の実施形態を説明する文脈(特に以下の特許請求の範囲の文脈)の類似の指示対象は、本明細書に別様に指摘がないかまたは文脈によって明らかに別様に矛盾しない限り、単数および複数の両方を含むと解釈される。用語「含む(comprising)」、「有する(having)」、「含む(including)」、および「含む(containing)」は、別様に記載されない限り、変更可能な用語(すなわち、「これらに限定されないが〜を含む」)として解釈される。用語「接続された」は、何らかの介在がある場合においても、部分的にまたは全体的にその内部に含まれた、それに取り付けられた、またはそれと一緒に連結されたとして解釈される。本明細書の値の範囲を列挙することは、本明細書に別様に指摘がない限り、範囲内に属する各別個の値に個別に言及する単なる簡単な方法として機能するように意図されるにすぎず、それが個別に本明細書に列挙されているかのように、各別個の値は、本明細書に組み込まれる。本明細書に記載される全ての方法は、本明細書に別様に指摘がないかまたは文脈によって明らかに別様に矛盾しない限り、任意の好適な順序で遂行することができる。本明細書に提供される任意のおよび全ての実施例、または例示的な言語(例えば、「〜のような」)は、単に本発明の実施形態のより良い理解を容易にするように意図されるにすぎず、別様に特許請求されない限り、本発明の範囲に制限を課すものではない。明細書中の言語は、本発明の実施に必須として任意の非特許請求の要素を示すものとして解釈されるべきではない。
本開示の好ましい実施形態は、本発明を実現するために本発明者に既知の最良のモードを含む。それらの好ましい実施形態の変形例は、前述の説明を一読することによって当該分野の当業者には明らかになり得る。本発明者は、当業者が必要に応じてそのような変形例を用いることを予期し、本発明者らは、本明細書に具体的に記載された以外の方法で実施される発明を意図する。したがって、適用法によって許容されるように、本発明は、全ての修正および本明細書に添付の特許請求の範囲に列挙される主題の均等物を含む。更に、全ての可能な変形例における上述の要素のそれらの任意の組み合わせは、本明細書に別様に指摘がないかまたは文脈によって明らかに別様に矛盾しない限り、本発明によって包含される。
本明細書に引用された、出版物を含む全ての参考文献、特許出願、および特許は、各文献が個別にかつ具体的に参照により組み込まれるように示されその全体が本明細書に記載されているかのように同程度に、参照により本明細書に組み込まれる。