(57)【特許請求の範囲】
【請求項１】
１以上のプロセッサと、
前記１つ又は複数のプロセッサによって実行された際に、動作を実行するように前記１以上のプロセッサを構成する実行可能命令を非一時的に維持する１以上のコンピュータ可読媒体と、
を有するシステムであって、
前記システムにおいて、クライアント装置から、オブジェクトデータを含むデータオブジェクトを受け取り、前記システムは、３以上のシステムのうちの第１システムであり、それぞれのシステムは、異なる個々の地理的場所に配置されており、
前記３以上のシステムの合計数に基づいて、前記オブジェクトデータを複数のデータチャンクに分割し、前記複数のデータチャンクについてパリティチャンクを決定することにより、複数のチャンクを決定し、
前記第１システムで前記オブジェクトデータの完全なインスタンスを維持しつつ、前記チャンクのうちのいくつかを前記３以上のシステムのうちの他のシステムに送信し、
前記データオブジェクトの受け取りに基づいて、時間を前記オブジェクトデータの前記完全なインスタンスと関連付け、
時間閾値を前記オブジェクトデータの前記完全なインスタンスと関連付け、前記時間閾値は、前記オブジェクトデータの前記完全なインスタンスが、削除のための準備が整っていることを示す、前記時間からの期間を示す持続時間、または特定の時点を示す時間である、システム。
【請求項２】
前記動作は、
前記時間閾値に到達したと判定し、
前記システムから前記オブジェクトデータの前記完全なインスタンスを削除することをさらに含む
請求項１に記載のシステム。
【請求項３】
前記動作は、
前記オブジェクトデータの前記完全なインスタンスを削除する前に、前記オブジェクトデータの前記完全なインスタンスから、データチャンク又はパリティチャンクのうちの少なくとも１つを決定し、
前記システムで、前記データチャンク又は前記パリティチャンクのうちの１つを維持することをさらに含む
請求項２に記載のシステム。
【請求項４】
前記動作は、
前記システムで、クライアント装置から、前記データオブジェクトにアクセスするための要求を受け取り、
前記３つ以上のシステムのうちの他のシステムから、前記データオブジェクトに関連するチャンクを受け取り、
前記他のシステムから受け取った前記チャンク及び前記システム上に存在するチャンクを使用することにより、前記データオブジェクトのオブジェクトデータの完全なインスタンスを再構築し、
前記クライアント装置に、前記再構築された完全なインスタンスの少なくとも一部分を送信する
ことをさらに含む請求項２に記載のシステム。
【請求項５】
前記動作は、
前記データオブジェクトにアクセスするための前記要求と関連する時間を示すためにデータ構造を更新し、
前記時間閾値を前記再構築された完全なインスタンスと関連付け、
前記システム上で前記再構築された完全なインスタンスを維持し、前記時間閾値は、前記再構築された完全なインスタンスが削除のための準備が整うべき時を示す、前記時間からの期間を示す持続時間、または特定の時点を示す時間である
ことをさらに含む請求項４に記載のシステム。
【請求項６】
前記動作は、
前記再構築された完全なインスタンスと関連する前記時間閾値に到達していることを決定し、
前記再構築されたインスタンスを前記システムから削除する、又は、前記再構築されたインスタンスが前記システムから削除されるべきであることを示すマーキングをする
ことをさらに含む請求項４に記載のシステム。
【請求項７】
前記時間閾値は、前記持続時間であり、前記持続時間は、前記システムが異なるデータオブジェクトについて記憶しているオブジェクトデータの完全なインスタンス用の別の時間閾値の持続時間と異なっている、請求項１に記載のシステム。
【請求項８】
データ構造内の前記完全なインスタンスに対する最終アクセスの時間の更新を含むデータオブジェクトの受信に基づいて、前記時間を前記データオブジェクトのオブジェクトデータの完全なインスタンスに関連付ける
請求項１に記載のシステム。
【請求項９】
前記閾値時間は、前記システム上で維持されているオブジェクトデータの完全なインスタンスに対して既定で適用される特定の時間の期間である、請求項１に記載のシステム。
【請求項１０】
前記チャンクのうちのいくつかを前記３つ以上のシステムのうちの他のシステムに送信することには、
前記オブジェクトデータの前記完全なインスタンスのコンテンツを表す値を決定し、
前記システムのそれぞれに対応する個々のロール値を決定し、
前記個々のロール値及び前記オブジェクトデータの前記コンテンツを表す前記値に基づいて、前記チャンクの個々のチャンクを前記システムの個々のシステムに送信することを含む
請求項１に記載のシステム。
【請求項１１】
前記個々のロール値及び前記オブジェクトデータの前記コンテンツを表す前記値に基づいて、前記チャンクの個々のチャンクを前記システムの個々のシステムに送信する前記動作は、
ハッシュ化アルゴリズムを使用することにより、前記コンテンツを表す前記値として、前記オブジェクトデータからハッシュ値を決定し、
前記ハッシュ値に対するモジュロ演算の結果を決定し、前記モジュロ演算は、前記システムの前記合計数に基づいており、
前記モジュロ演算の前記結果及び前記個々のロール値に基づいて、前記個々のチャンクを受け取るべき前記個々のシステムを判定する
ことを含む請求項１０に記載のシステム。
【請求項１２】
前記動作は、
前記システムにおいて、クライアント装置から、データオブジェクトにアクセスするための要求を受け取り、
前記３以上のシステムのうちの前記システムのうちの別のものから、前記データオブジェクトに関連するオブジェクトデータの再構築された完全なインスタンスを受け取り、
前記クライアント装置に、前記再構築された完全なインスタンスの少なくとも一部分を送信する
ことを含む請求項１に記載のシステム。
【請求項１３】
前記動作は、
閾値時間が経過するまで、前記オブジェクトデータの前記再構築された完全なインスタンスを維持し、
前記再構築された完全なインスタンスから、データチャンク又はパリティチャンクのうちの少なくとも１つを生成し、
前記再構築された完全なインスタンスを削除する
ことをさらに含む請求項１２に記載のシステム。
【請求項１４】
システムの１以上のプロセッサにより、クライアント装置から、オブジェクトデータを含むデータオブジェクトを受け取り、前記システムは、３以上のシステムのうちの第１システムであり、それぞれのシステムは、異なる個々の地理的場所に配置されており、
前記１以上のプロセッサにより、前記３以上のシステムの合計数に基づいて、前記オブジェクトデータを複数のデータチャンクに分割し、前記複数のデータチャンクについてパリティチャンクを決定することにより、複数のチャンクを決定し、
前記１以上のプロセッサにより、前記第１システムにおいて前記オブジェクトデータの完全なインスタンスを維持しつつ、前記チャンクのうちのいくつかを前記３以上のシステムのうちの他のシステムに送信し、
前記１以上のプロセッサにより、前記データオブジェクトの受け取りに基づいて、時間を前記オブジェクトデータの前記完全なインスタンスと関連付け、
前記１以上のプロセッサにより、時間閾値を前記オブジェクトデータの前記完全なインスタンスと関連付け、前記時間閾値は、前記オブジェクトデータの前記完全なインスタンスが削除のための準備が整っていることを示す、前記時間からの期間を示す持続時間、または特定の時点を示す時間である、
方法。
【請求項１５】
命令を非一時的に保存する１以上のコンピュータ可読媒体であって、
前記命令は、１以上のプロセッサによって実行された際に、システムの前記１以上のプロセッサを、
前記システムでデータオブジェクトを受け取ること、ここで、前記データオブジェクトは、オブジェクトデータを含み、前記システムは、３以上のシステムのうちの第１システムであり、それぞれのシステムは、異なる個々の地理的場所に配置されており、
前記３以上のシステムの合計数に基づいて前記オブジェクトデータを複数のデータチャンクに分割し、前記複数のデータチャンクのパリティチャンクを決定することにより、複数のチャンクを決定すること、
前記第１システムにおいて前記オブジェクトデータの完全なインスタンスを維持しつつ、前記チャンクのうちのいくつかを前記３以上のシステムのうちの他のシステムに送信すること、
前記データオブジェクトの受け取りに基づいて、時間を前記オブジェクトデータの前記完全なインスタンスと関連付けること、
時間閾値を前記オブジェクトデータの前記完全なインスタンスと関連付けることであって、前記時間閾値は、前記オブジェクトデータの前記完全なインスタンスが削除のための準備が整っていることを示す、前記時間からの期間を示す持続時間、または特定の時点を示す時間であること、
を行うようにプログラムする、媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データの保存、保護、及び取得の技術分野に関する。
【背景技術】
【０００２】
データオブジェクトは、データをオブジェクトとして管理するオブジェクトストレージアーキテクチャに保存することができる。それぞれのオブジェクトは、典型的に、オブジェクトデータ（例えば、データコンテンツ）、オブジェクトデータを記述するメタデータ、及びグローバルに区別可能な識別子を含む。いくつかの状況において、データの消失に対する冗長性保護を提供するために、記憶されているオブジェクトデータをイレイジャーコーディングされてもよい。イレイジャーコーディングは、データを複数のデータチャンクに分割することを含みうる。データチャンクについて、パリティデータがエンコードされ、且つ、データチャンク及びパリティデータは、異なる記憶媒体上において、及び／又は、異なる地理的場所において、などのように、異なる記憶場所の組に跨って、記憶されうる。記憶場所のうちの１つのオブジェクトデータのデータチャンクが、損傷され、破壊され、或いは、その他により利用不能となった場合に、残りのデータチャンクと記憶場所のうちの別のものに記憶されているパリティデータとを使用することにより、オブジェクトデータを再構築することができる。
【発明の概要】
【課題を解決するための手段】
【０００３】
いくつかの実装形態は、データオブジェクトのチャンクを記憶しうる分散型のシステムトポロジーを含む。例えば、コンピュータシステムは、オブジェクトデータを含むデータオブジェクトを受け取ってもよい。例えば、システムは、異なるそれぞれの地理的場所に配置された３以上のシステムのうちの１つであってよい。システムは、システムの合計数に基づいてオブジェクトデータを複数のデータチャンクに分割し、且つ、パリティチャンクを決定することにより、複数のチャンクを決定することができる。システムは、第１システムにおいてオブジェクトデータの完全なインスタンスを維持しつつ、チャンクのいくつかを他のシステムに送信することができる。システムは、データオブジェクトの受け取りに基づいてオブジェクトデータに時間を関連付けることができる。これに加えて、システムは、オブジェクトデータの完全なインスタンスに時間閾値を関連付けることができる。例えば、時間閾値は、オブジェクトデータの完全なインスタンスがオブジェクトチャンク（例えば、データチャンク又はパリティチャンク）によって置換され、且つ、システムから削除されるべき時間を示してもよい。
【図面の簡単な説明】
【０００４】
添付図面を参照し、詳細に説明する。図においては、参照符号の１つ又は複数の最も左側の桁は、参照番号が最初に出現している図を識別している。異なる図における同一の参照番号の使用は、類似の又は同一の項目又は特徴を示している。
【０００５】
【図１】図１は、いくつかの実装形態に係る、データオブジェクトを記憶、保護、及び再構築するシステムのアーキテクチャ例を示す。
【０００６】
【図２】図２は、いくつかの実装形態に係る、オブジェクトをデータチャンクに分割すること、及び、パリティチャンクを決定することの一例を示す。
【０００７】
【図３】図３は、いくつかの実装形態に係る、地理的なオブジェクトチャンクの分散の一例を示す。
【０００８】
【図４】図４は、いくつかの実装形態に係る、データを管理するために採用されている最終アクセスデータ構造の一例を示す。
【０００９】
【図５】図５は、いくつかの実装形態に係る、時間閾値の満了に後続するオブジェクトデータの低減の一例を示す。
【００１０】
【図６】図６は、いくつかの実装形態に係る、オブジェクトチャンクからのオブジェクトデータの再構築の一例を示す。
【００１１】
【図７】図７は、いくつかの実装形態による、時間閾値に基づくオブジェクトデータの維持一例を示す。
【００１２】
【図８】図８は、いくつかの実装形態に係る、オブジェクトデータの完全なインスタンスの受け取りの一例を示す。
【００１３】
【図９】図９は、いくつかの実装形態に係る、時間閾値に基づくオブジェクトデータの維持の一例を示す。
【００１４】
【図１０】図１０は、いくつかの実装形態に係る、時間閾値の満了に後続するオブジェクトデータの低減の一例を示す。
【００１５】
【図１１】図１１は、いくつかの実装形態に係る、データチャンク及びパリティチャンクの決定の一例を示す。
【００１６】
【図１２】図１２は、いくつかの実装形態に係る、オブジェクトデータを管理するプロセス例を示すフロー図である。
【００１７】
【図１３】図１３は、いくつかの実装形態に係る、演算システムの構成例を示す。
【００１８】
【図１４】図１４は、いくつかの実装形態に係る、演算システムの構成例を示す。
【発明を実施するための形態】
【００１９】
本明細書におけるいくつかの実装形態は、地理的に分散した記憶場所のトポロジーにおけるイレイジャーコーディングオブジェクトストレージシステムのオブジェクトデータ呼び戻し性能を改善する技法及び構成を含む。一例として、本明細書におけるシステムは、オブジェクトデータに対するアクセスの時間及び場所の追跡に基づいて、アクセスされる可能性が高い特定のデータオブジェクトを時間的に且つ地理的に認知することにより、改善されたオブジェクト呼び戻し時間を実現することができる。ユーザが、オブジェクトにアクセスするための要求を分散型のトポロジーにおけるシステムのうちの１つに送信した際に、オブジェクトデータの完全なインスタンスが、そのシステムにおいて既に存在していない場合には、システムは、システムのうちのその他のものからオブジェクトのオブジェクトチャンクを取得することができると共に、オブジェクトにアクセスするための要求に応答するために、オブジェクトデータの完全なインスタンスを構築することができる。
【００２０】
アクセス要求に基づいて、システムは、オブジェクトデータの完全なインスタンスと関連する最終アクセスデータ構造内のエントリにおいて最終アクセスの時間を設定してもよい。時間閾値が、最終アクセスデータ構造内のエントリなどに基づいて、設定されてもよく、又はオブジェクトデータの完全なインスタンスと関連付けられてもよい。このように、システムは、時間閾値に到達するか、或いは、さもなければ、これが満了する時点まで、オブジェクトデータの完全なインスタンスを維持してもよい。時間閾値が満了した際に、システムは、オブジェクトデータの完全なインスタンスを特定のシステムが管理の責任を担っているオブジェクトチャンク（即ち、データチャンク又はパリティチャンク）に低減してもよい。
【００２１】
いくつかの例では、分散型のトポロジーにおけるシステム又はシステムのすべてによって使用されるように設定された１つ又は複数の既定の時間閾値が存在してもよい。他の例において、管理者又は他のユーザは、異なるオブジェクトタイプなどに基づいて、或いは、それぞれのシステムにおける利用可能なストレージの量などの他の考慮事項などに基づいて、システムのうちの異なるものにおいて異なるように、異なるオブジェクトについて異なるように、時間閾値の持続時間を設定してもよい。このように、時間閾値は、時間的に近接した且つ地理的に近接したタイミング考慮事項、利用可能な未使用のストレージ容量、システムの個々のものにおける典型的な使用パターン、データを管理している特定のエンティティにおける典型的な使用パターンなどに基づいて決定してもよい。時間閾値が、クライアントによるオブジェクトへの最後のアクセスに後続して満了した際には、そのシステムのオブジェクトデータの完全なインスタンスは、イレイジャーコーディングされたチャンクに低減されてもよく、且つ、完全なインスタンスは、オブジェクトデータの完全なインスタンスが占有しているストレージ空間を解放するために、削除されてもよく、或いは、さもなければ、削除のためにマーキングされてもよい。
【００２２】
本明細書における分散型のトポロジーにおけるそれぞれの独立したシステムは、アクセスされたオブジェクトを追跡するためのその独自のデータ構造又はその他のメタデータを維持してもよいと共に、特定のオブジェクトデータがアクセスされる可能性を予想するために、このメタデータを使用してもよい。この可能性に基づいて、個々のシステムは、その記憶場所におけるシステムのユーザが、オブジェクトを迅速に復旧できるように、閾値時間にわたって、オブジェクトデータの完全なインスタンスをその記憶場所において維持してもよい。
【００２３】
本明細書における例は、同一のデータオブジェクトに対するシーケンシャルな参照の間の時間的近接性を活用したデータ管理技法を利用している。例えば、最近アクセスされたオブジェクトは、近い将来において再度アクセスされる可能性が高い、という仮定に基づいて、本明細書におけるシステムは、最近アクセスされたオブジェクトを閾値時間の期間にわたって保持するように構成されている。これに加えて、本明細書における地理的に分散されたトポロジーにおいては、システムは、特定の記憶場所においてアクセスされたオブジェクトは、記憶場所のうちのその他のものよりも、その記憶場所において再度アクセスされる可能性が高い、という仮定に基づいて、最近アクセスされたオブジェクトの完全なオブジェクトデータを維持するように、更に構成してもよい。本明細書における例においては、オブジェクトは、オブジェクトがシステムに対してアップロードされた際に、或いは、オブジェクトデータ又はオブジェクトの任意の一部分が、クライアントにより、システムから取得された際に、クライアントによってアクセスされたものと見なしてもよい。
【００２４】
本明細書におけるいくつかの例は、地理的に分散したイレイジャーコーディングを使用した分散型のオブジェクトストレージ提供している。本明細書における分散型トポロジーにおいて記憶されたオブジェクトデータは、チャンクに分割してもよく、チャンクは、分散型トポロジーに跨って分散させてもよい。本明細書における分散型トポロジーは、異なる地理的記憶場所においてそれぞれが配置された、チャンクを記憶することができる固定数のシステムを含んでもよい。トポロジー内には、記憶場所／システムが存在していることから、オブジェクトデータがイレイジャーコーディング済みのデータチャンクに低減される際には、オブジェクトデータを同一数のチャンク（パリティチャンクを含む）に低減してもよく、従って、トポロジー内のそれぞれのシステムは、正確にそれぞれのオブジェクトのチャンクのうちの１つを記憶することができる。このように、オブジェクトのチャンクは、それぞれのシステムが、オブジェクトのデータチャンク又はデータチャンクから判定されたパリティチャンクのうちのいずれかのものを受け取り、且つ、維持するように、地理的に分散した記憶場所における固定数のシステムに跨って分散してもよい。従って、本明細書におけるオブジェクトストレージ技法は、記憶場所のうちの１つにおけるシステムの完全な喪失の結果としてもたらされるデータ消失に対する保護を実行してもよく、更に、例えば、オブジェクトデータの完全な複写を記憶することによって消費されるであろうものよりも少ない量のストレージを消費しつつ、この保護を提供してもよい。ユーザが、オブジェクトへのアクセスのための要求をシステムのうちの１つに送信した際に、システムは、その他の分散したシステムから、いくつか数のオブジェクトチャンクを取得してもよく、そのチャンクからオブジェクトデータを再構築してもよい。次いで、要求に応答して、オブジェクトデータ及び対応するメタデータはユーザに送信されてもよい。
【００２５】
本明細書における最終アクセスデータ構造及び時間閾値は、ストレージ性能、データ保護、及びス記憶コストという競合する要件を均衡させるために使用されてもよい。ストレージは、高価であり、且つ、記憶されているデータの量は、これまで見られていない割合で成長している。ペタバイト以上のストレージを必要とし、且つ、更には、エンティティが記憶場所の障害又は完全な喪失に耐えうるようなデータ保護を必要としている、エンティティが、本明細書において記述されているイレイジャーコーディングされたオブジェクトデータを保存するための地理的に分散したトポロジーを利用してもよい。本明細書における分散型のトポロジーは、完全な複写の複製よりも格段に少ないコストでエンティティがそのデータを記憶場所の消失から保護することができるようにイレイジャーコーディングを使用している。
【００２６】
更には、本明細書における実装形態は、地理的に分散したイレイジャーコーディングオブジェクトストレージに固有のコンピュータ記憶問題に対処するための技術的解決策を提供している。特に、このようなシステムは、チャンクの形態においてのみ存在し、且つ、複数の記憶場所に跨って分散した、データの取り出し及び戻しが遅くなりうる。例えば、離れた記憶場所からのチャンクの取り戻しは、大きな遅延を伴うワイドエリアネットワーク上において大量のデータを長距離にわたっての送信を伴う場合があり、また、ローカルシステムは、要求されたすべてのチャンクが戻されるまで、オブジェクトデータを完全に再構築することができない。この結果、分散型のトポロジーからのオブジェクトデータの取得は、イレイジャーコーディングを使用してはいない、且つ、単一の記憶場所においてのみデータを記憶している、オブジェクトストレージシステムからのオブジェクトデータの取得よりも、低速となりうる。従って、本明細書における実装形態は、特定のオブジェクトのオブジェクトデータがアクセスされる可能性が高い場所及び時間を予想し、且つ、ユーザがオブジェクトのうちの選択されたものに迅速にアクセスして取得できるように、閾値時間ウィンドウにわたって、それらオブジェクトのオブジェクトデータの完全なインスタンスを特定の記憶場所において維持することにより、この問題に対する解決策を提供している。
【００２７】
説明を目的として、いくつかの実装形態例は、イレイジャーコーディングされたオブジェクトデータを記憶及び取得するために相互の通信状態にある複数の地理的に分散したシステムの環境において、記述されている。但し、本明細書における実装形態は、提供されている特定の例に限定されるものではなく、且つ、本明細書における開示に鑑み当業者には明らかであるように、その他の種類の演算及びストレージシステムアーキテクチャ、その他の種類のストレージ環境、その他の種類のクライアント構成、その他の種類のデータなどに拡張してもよい。
【００２８】
図１は、いくつかの実装形態に係る、オブジェクトを記憶及び取り戻すように構成された分散型ストレージトポグラフィ１００のアーキテクチャ例を示している。複数のシステム１０２は、複数のそれぞれの記憶場所１０４〜１１０において、分散型トポロジーに配置されている。例えば、第１システム１０２（１）は、第１記憶場所１０４に配置され、第２システム１０２（２）は、第２記憶場所１０６に配置され、第３システム１０２（３）は、第３記憶場所１０８に配置され、また、第４システム１０２（４）は、第４記憶場所１１０に配置されている。更に、この例においては、４つのシステム及び記憶場所が示されているが、その他の例におけるシステム及び記憶場所の数は、４に限定されるものではなく、また、３〜３００個のシステムの範囲のように、３つ以上のシステムであってもよい。
【００２９】
それぞれのシステム１０２は、少なくとも１つのサービス演算装置１１２と、少なくとも１つのストレージ装置１１４と、を含んでもよい。従って、１つ以上のサービス演算システム１１２（１）及び１つ以上のストレージ装置１１４（１）が、第１システム１０２（１）内に含まれてもよく、１つ以上のサービス演算装置１１２（２）及び１つ以上のストレージ装置１１４（２）が、第２システム１０２（２）内に含まれてもよく、１つ以上のサービス演算装置１１２（３）及び１つ以上のストレージ装置１１４（３）が、第３システム１０２（３）内に含まれてもよく、また、１つ以上のサービス演算装置１１２（４）及び１つ以上のストレージ装置１１４（４）が、第４システム１０２（４）内に含まれてもよい。更に、この例においては、サービス演算装置１１２（複数も可）及びストレージ装置１１４（複数も可）が、別個に示されているが、その他の例においては、ストレージ装置１１４（複数も可）は、更に後述するように、サービス演算装置１１２（複数も可）に内蔵されていてもよく、或いは、この内部に含まれていてもよい。更に、システム１０２は、本開示において記述及び図示されているハードウェア構成に限定されるものではなく、オブジェクトストレージとして機能し、且つ、本明細書において記述されている機能を実行することのできる、任意の適切な又は望ましいハードウェア構成を含んでもよく、また、システム１０２のうちの１つのハードウェア構成は、システム１０２の別のものにおけるものと異なってもよい。
【００３０】
それぞれのシステム１０２（１）〜１０２（４）内の少なくとも１つのサービス演算装置１１２は、個々のシステム１０２（１）〜１０２（４）のストレージ装置１１４（複数も可）において記憶されている複数のオブジェクトチャンク１１８に関するメタデータを保存するために使用されているメタデータデータ構造１１６を含み、管理し、或いは、アクセスする。例えば、メタデータデータ構造１１６は、データベース、表、又は任意の他の適切なデータ構造であってよい。メタデータデータ構造１１６に含まれているメタデータは、パス、名称、所有者、オブジェクトデータから決定されたハッシュ値などのような、それぞれのオブジェクト及び／又は対応するオブジェクトチャンクに関する情報を含んでもよい。
【００３１】
システム１０２（１）〜１０２（４）は、１以上のネットワーク１２０上で相互に通信することができる。１以上のネットワーク１２０は、インターネットなどのワイドエリアネットワーク、イントラネットなどのローカルエリアネットワーク（ＬＡＮ）、セルラーネットワークなどの無線ネットワーク、Ｗｉ−Ｆｉなどのローカル無線ネットワーク、及び／又はＢＬＵＥＴＯＯＴＨ（登録商標）などの近距離無線通信、ファイバーチャネル、光ファイバ、Ｅｔｈｅｒｎｅｔ、又は他のそのようなネットワークを含む有線ネットワーク、又は直接有線接続、或いは、これらの任意の組合せを含む任意の適切なネットワークを含んでもよい。従って、１以上のネットワーク１２０は、有線及び／又は無線通信技術の両方を含んでもよい。このような通信に使用されるコンポーネントは、ネットワークの種類、選択された環境、又は、これらの両方に少なくとも部分的に依存しうる。このようなネットワーク上において通信するためのプロトコルについては、周知であり、本明細書においては、詳細な説明を省略することとする。従って、サービス演算装置１１２は、有線又は無線接続及びこれらの組合せを使用する、１以上のネットワーク１２０上において通信することができる。
【００３２】
これに加えて、サービス演算装置１１２の少なくともいくつかは、１以上のネットワーク１２４を介してクライアント装置１２２（１）〜１２２（Ｎ）と通信することができる。それぞれのクライアント装置１２２（１）〜１２２（Ｎ）は、例えば、システム１０２上のストレージのためのデータオブジェクトの送信及び／又はシステム１０２からの記憶されたオブジェクトの受信のためなどのように、個々のサービス演算装置１１２と通信するなどのために、個々のクライアント装置１２２（１）〜１２２（Ｎ）上において稼働しうるクライアントアプリケーション１２６（１）〜１２６（Ｎ）の個々のインスタンスを含んでもよい。いくつかのケースにおいては、アプリケーション１２６は、ブラウザを含んでいてもよく、或いは、ブラウザを通じて動作してもよいが、その他のケースにおいては、アプリケーション１２６は、１以上のネットワーク１２４上においてサービス演算装置１１２との間の通信を可能にする通信機能を有する任意のその他の種類のアプリケーションを含んでもよい。
【００３３】
１以上のネットワーク１２４は、いくつかの例においては、ＬＡＮであってよい。他の例においては、１以上のネットワーク１２４は、１以上のネットワーク１２０との関係において上述したネットワークのうちのいずれかであってよい。いくつかのケースにおいては、ユーザ１２８及び／又はクライアント装置１１２又はクライアントアプリケーション１２６は、複数の記憶場所１０４〜１１０のうちの特定の記憶場所において１以上のサービス演算装置１１２にアクセスするために割り当ててもよい。例えば、記憶場所１０４がボストンに位置し、ユーザ１２８（１）が、ボストンエリア内において働いている従業員である場合には、ユーザ１２８（１）は、他の記憶場所１０６〜１１０のその他のサービス演算装置１１２（２）〜１１２（４）ではなく、演算装置１１２（１）（複数も可）のそれぞれにアクセスするように、割り当ててもよい。一例として、様々なユーザ１２８又はユーザのグループは、負荷の均衡化やローカルオフィスシステムへの従業員アクセスの制限などのために、記憶場所１０４〜１１０のうちの特定のものにおけるサービス演算装置１１２（複数も可）のうちの特定のものに対するアクセスのみを付与されてもよい。更に、この例においては、４つのシステム１０２（１）〜１０２（４）及び記憶場所１０４〜１１０が示されているが、他の例においては、３つ以上などの、異なる数のシステム／記憶場所が使用されてもよく、この場合に、上限は、技術的な実行可能性ではなく、実際的な且つ減少するリターンに基づいている。
【００３４】
図２は、いくつかの実装形態に係る、オブジェクトをデータチャンクに分割すること、及びパリティチャンクを決定することの一例を示している。この例においては、ユーザ１２８（１）が、オブジェクト２０１を第１システム１０２（１）に送信するものと仮定する。第１システム１０２（１）は、クライアント装置１２２（１）からオブジェクト２０１を受け取っている。例えば、オブジェクト２０１は、オブジェクトデータ２０２と、オブジェクトメタデータ２０３と、を含んでもよい。オブジェクトメタデータ２０３は、上述のように、オブジェクト識別子、オブジェクト種類、オブジェクトサイズ、オブジェクト所有者、生成日付などを含んでもよい。本明細書の例においては、「オブジェクトデータ」は、オブジェクトのデータコンテンツのみを意味し、オブジェクトメタデータを除いてもよい。同様に、オブジェクトメタデータは、オブジェクトデータを除いてもよい。
【００３５】
図示の例においては、分散型トポロジー１００内のシステム１０２の間においてデータチャンクを分散させることを目的として、第１システム１０２（１）は、２０４で示されているように、０に等しいロール値を有し、第２システム１０２（２）は、２０６で示されているように、１に等しいロール値を有し、第３システム１０２（３）は、２０８で示されているように、２に等しいロール値を有し、且つ、第４システム１０２（４）は、２１０で示されているように、３に等しいロール値を有する。これらのロール値は、システム管理者により、または、その他の技法を通じて、割り当てることができるが、典型的には、更に後述するように、トポロジー１００について、システム１０２がチャンクが分散型のトポロジー内のどこに配置されているかを決定することが可能となるように、一定に留まっている。
【００３６】
更に、オブジェクトデータは、異なる記憶場所の数に基づいて、多くのチャンクに分割してもよい。例えば、Ｍ個の記憶場所／システムが存在している場合には、オブジェクトデータは、Ｍ−１個のデータチャンクに分割してもよく、また、１つのパリティチャンクは、チャンクの合計数が分散型のトポロジーにおけるシステムの合計数と等しくなるように、Ｍ−１個のデータチャンクに対して生成してもよい。このように、図示の例においては、第１システム１０２（１）は、オブジェクト２０１のオブジェクトデータ２０２を３つのほぼ等しいサイズのオブジェクトデータチャンクに、即ち、データチャンク２０２（Ａ）、データチャンク２０２（Ｂ）、及びデータチャンク２０２（Ｃ）に、分割している。いくつかのケースにおいては、チャンク２０２（Ａ）〜２０２（Ｃ）のそれぞれは、オリジナルのオブジェクトデータ２０２からの連続したバイトを含んでもよい。１つの単純な例として、９９９バイトのファイルが３つのチャンクに分割される場合には、チャンク２０２（Ａ）は、バイト０〜３３２を収容してもよく、チャンク２０２（Ｂ）は、バイト３３３〜６６５を収容してもよく、チャンク２０２（Ｃ）は、バイト６６６〜９９８を収容してもよい。３つのデータチャンク２０２（Ａ）〜２０２（Ｃ）からオリジナルのオブジェクトデータを再構築するために、第１システム１０２（１）（或いは、システム１０２のうちの別の１つ）は、チャンク２０２（Ａ）＋２０２（Ｂ）＋２０２（Ｃ）を単純に連結してもよい。従って、複数のデータチャンクからの完全なオブジェクトデータの再構築は、非常に小さな演算オーバーヘッドをもたらしうる。オブジェクトデータをチャンクに分割するための一代替技法については、図１１に関して後述する。
【００３７】
第１システム１０２（１）は、パリティチャンク２０２（Ｐ）を演算するために、データチャンク２０２（Ａ）〜２０２（Ｃ）を使用してもよい。パリティチャンク２０２（Ｐ）は、典型的には、データチャンク２０２（Ａ）〜２０２（Ｃ）の個々のものとほぼ同一のサイズであってよい。従って、４つの記憶場所を含む図示の例においては、パリティチャンク２０２（Ｐ）及びデータチャンク２０２（Ａ）〜２０２（Ｃ）のうちの任意の２つは、残りのデータチャンクのオブジェクトデータを演算するために使用してもよい。これは、数式を適用することによって実現される。単純化された一例として、以下の式：Ａ＋Ｂ＋Ｃ＝Ｐを検討しよう。Ａ、Ｂ、Ｃの値が与えられた場合に、例えば、２＋３＋４＝Ｐ、従って、Ｐ＝９というように、パリティＰを演算することができる。任意の単一の値が消失した場合に、その値は、既知の値及びパリティを使用することにより、２＋Ｂ＋４＝９、従って、Ｂ＝３と演算することができる。一例として、当技術分野において既知のように、パリティデータは、データチャンク２０２（Ａ）〜２０２（Ｃ）について、パリティデータを決定するための排他的ＯＲ関数（ＸＯＲ）を使用することにより演算することができる。この結果、データチャンク２０２（Ａ）、２０２（Ｂ）、又は２０２（Ｃ）のうちの１つが利用不能である場合に、オブジェクトデータ２０２は、パリティチャンク２０２（Ｐ）及びその他の２つのデータチャンクを使用することにより、依然として再構築することができる。
【００３８】
第１システム１０２（１）は、オブジェクトデータ２０２から、データコンテンツを代表するハッシュ値を更に演算してもよい。システム１０２（１）は、ＳＨＡ−２５６アルゴリズム、ＭＤ５アルゴリズム、又はこれらに類似したものなどの、いくつかの周知の決定論的なハッシュアルゴリズムの数値のうちの任意のものを使用してもよい。例えば、決定論的なハッシュ化アルゴリズムがオブジェクトデータに対して適用される際には、結果は、オブジェクトデータのデータコンテンツを代表するハッシュ値（即ち、「ハッシュ」）である。使用されるハッシュアルゴリズムの特性に起因し、これらのハッシュ化アルゴリズムを、異なるコンテンツを有する任意の２つのデータのセットに対して適用した結果、同一のハッシュ値が得られることは、極めてあり得ない。更に、これらのハッシュ化アルゴリズムを同一のコンテンツを有する任意の２つのデータのセットに対して適用した結果、同一のハッシュ値が得られることは、保証されている（即ち、ハッシュアルゴリズムは、決定論的であり、且つ、アルゴリズムが適用されるコンテンツに基づいた結果を提供している）。
【００３９】
オブジェクトデータのハッシュ値が演算された後に、ハッシュ値は、それぞれのチャンクごとに、分散型のトポロジーにおける目標システムを決定するために、使用してもよい。例えば、ハッシュ値に基づいて、それぞれのチャンクごとに、分散型のトポロジーにおけるシステムの個々のシステムに対してマッピングが決定されてもよい。マッピング技法は、同一のハッシュ値について、チャンクが同一のシステム／記憶場所に分散されるように、一貫性を有してもよい。一例として、それぞれのチャンクごとに、対応するシステム場所を決定するためにモジュロ演算が適用されてもよい。例えば、４つの異なる記憶場所を有する分散型のトポロジーでは、オブジェクトを受け取とり、チャンクを分散させるシステムは、ハッシュ値を演算し、且つ、ハッシュ値に対してモジュロ（４）を適用してもよく、この場合に、適用されるモジュロ値は、分散型のトポロジーにおける別々のシステムの数に等しい。従って、２１２に示されているように、第１システム１０２（１）は、ハッシュアルゴリズムを使用して決定されたハッシュ値のｍｏｄｕｌｏ（４）を演算してもよい。この演算の結果は、常に、０〜３の範囲の整数となる。例えば、４つのシステム１０２（１）〜１０２（４）が存在していることから、ｍｏｄｕｌｏ（４）が使用され、５つのシステムが存在している場合には、ｍｏｄｕｌｏ（５）が使用されてもよく、６つのシステムが存在している場合には、ｍｏｄｕｌｏ（６）が使用されてもよく、以下同様である。
【００４０】
モジュロ演算の結果は、イレイジャーコーディングされたオブジェクトデータの第１チャンクを記憶するために割り当てられる記憶場所を決定するために使用されてもよい。一例として、オブジェクトデータの第１データチャンクは、モジュロ演算の結果とマッチングするロール値を有するシステムに記憶してもよい。そのオブジェクトのそれぞれの連続するデータチャンクは、ラウンドロビン分散を使用することにより、次の最大のロール値を有するそれぞれの連続する記憶場所において記憶してもよく、パリティチャンクは、順番の最後に記憶してもよい。より大きなロール値を有する記憶場所が存在していない場合には、次のチャンクは、ロール値＝０を有するシステムにおいて保存される。
【００４１】
更に、「ハッシュ値ｍｏｄｕｌｏ（システムの数）」という式を使用し、また、結果に対してマッチしているシステムに第１データチャンクを配置することは、本明細書においてチャンクを一貫性を有して分散させる唯一の方法ではではない。例えば、システムは、必ずしも第１データチャンクではない、データチャンクのうちの任意のものにより、供給シーケンスを開始してもよく、パリティチャンクによって開始してもよく、ロール値の昇順ではなく、ロール値の降順においてチャンクを分散させてもよく、且つ、以下同様である。これに加えて、システムの数のモジュロを使用するのではなく、モジュロは、チャンクの配置用の可能な順列の数又はこれに類似したものを使用することにより、判定されてもよい。本明細書において開示されている利益を有する当業者には、多数のその他の変形が明らかとなるであろう。
【００４２】
この例において、２１２において示されているように、ハッシュ値ｍｏｄ（４）が２に等しいと仮定する。これは、分散型トポロジー内の割り当てられたストレージロール値＝２を有する記憶場所（即ち、図示の例において、第３システム１０２（３））が、オブジェクト２０１のオブジェクトデータのチャンク２０２（Ａ）を保存する責任を担うことを意味している。それぞれの連続するチャンクは、パリティチャンクが順番において最後である状態で、それぞれ、次の最も大きなロール値を有するそれぞれの連続するシステム１０２上に記憶してもよい。相対的に大きなロール値を有するシステムが存在していない場合には、次のチャンクは、ロール値＝０のストレージシステムに記憶される。従って、第１システム１０２（１）は、オブジェクトデータをデータチャンク２０２（Ａ）〜２０２（Ｃ）及びパリティチャンク２０２（Ｐ）に低減し、システムの割り当てられたロール値との間の対応性に基づいて、１以上のネットワーク１２０上において、チャンクをその他のシステム１０２（２）、１０２（３）、及び１０２（４）に送信してもよい。
【００４３】
分散型のトポロジーのそれぞれのシステムが、固定されたチャンク責任を有するようにするのではなく、上述の分散技法を使用することにより、本明細書における分散型のトポロジーの個々のシステムは、動的なチャンク責任を有している。この結果、それぞれのシステムは、任意の数のデータチャンク又はパリティチャンクを記憶する責任を担うようにしてもよい。ハッシュ化アルゴリズムは、分散型のトポロジーのすべてのシステムに跨ったパリティチャンクの均等な分散を保証するべく十分にランダムなハッシュ値を返してもよい。従って、分散型のトポロジーのいずれのシステムも、その他のシステムよりも格段に大きなパリティチャンクのパーセントを有する可能性はなく、これにより、データオブジェクトが、データチャンクの代わりに、パリティチャンクを使用して再構築される際に、演算負荷がより均等に分散される。更に、４つのシステムが存在している、本明細書における例においては、データ保護を提供するために使用されるストレージの量は、オリジナルのオブジェクトデータサイズの１．３３倍であり、これは、オブジェクトデータの完全な複写を記憶することによって使用されるサイズの２倍超の大きな節約である。
【００４４】
図３は、いくつかの実装形態に係る、地理的なオブジェクトチャンクの分散の一例を示している。オブジェクトデータをデータチャンク２０２（Ａ）、２０２（Ｂ）、及び２０２（Ｃ）と、パリティチャンク２０２（Ｐ）と、に低減した後に、チャンクの個々のものは、上述の分散マッピング技法に従って、システムトポロジー１００内のシステム１０２（２）〜１０２（４）のうちの別個のシステムに送信されてもよい。上述のように、それぞれのシステム１０２は、オブジェクトデータのハッシュから決定されたマッピング関数と、個々の記憶場所１０４〜１１０のシステム１０２（１）〜１０２（４）のそれぞれに対して割り当てられた割当済みのロール値と、に基づいて、オブジェクトチャンク２０２（Ａ）、２０２（Ｂ）、２０２（Ｃ）、又は２０２（Ｐ）のうちの単一のものを保存してもよい。これに加えて、それぞれのオブジェクトチャンクが、その他のシステム１０２（２）〜１０２（４）に送信される際に、送信するシステム１０２（１）は、オブジェクト２０１及び特定のチャンクと関連するオブジェクトメタデータ２０３を送信してもよい。それぞれのシステム１０２（２）〜１０２（４）に送信されるオブジェクトメタデータ２０３は、上述のオブジェクトメタデータの種類と、更に、完全なオブジェクトデータ２０２について決定されたハッシュ値と、を含んでもよい。
【００４５】
この例においては、ハッシュ値のｍｏｄｕｌｏ（４）は、２に等しく、これは、２０８に示されているように、第３システム１０２（３）に割り当てられたロール値に対応している。従って、第１システム１０２（１）は、オブジェクトデータの第１データチャンク２０２（Ａ）を第３システム１０２（３）に送信し、且つ、更に大きなロール値が存在しなくなる時点まで、ロール値の昇順に従って、オブジェクトの残りのチャンクを分散させ、その時点において、第１システム１０２（１）は、ロール０から始まる分散を継続する。従って、この技法に基づいて、３に等しいロール値を有する第４システム１０２（４）は、第２チャンク２０２（Ｂ）を受け取り、０に等しいロール値を有する第１システム１０２（１）は、第３データチャンク２０２（Ｃ）を保持するか、又はさもなければ、受け取り、１に等しいロール値を有する第２システム１０２（２）は、パリティチャンク２０２（Ｐ）を受け取る。
【００４６】
オブジェクトメタデータ２０３は、個々のオブジェクトチャンクと共に送信されてもよく、または、これとは別個に送信されてもよい。個々のシステムは、メタデータ２０３を受け取り、受け取ったオブジェクトチャンクに関連して、その個々のメタデータデータ構造１１６内に保存する。更に、本明細書においては、「ハッシュ値ｍｏｄｕｌｏ（４）」を使用することが、オブジェクトデータのコンテンツに基づいて、データチャンクと複数のシステム１０２との間において一貫性を有するマッピングを確立するための１つの技法として記述されているが、本明細書における開示の利益を有する当業者には、様々なその他のマッピング技法が明らかとなるであろう。従って、本明細書における実装形態は、記述されている特定の技法に限定されるものではない。
【００４７】
図４は、いくつかの実装形態に係る、最終アクセスデータ構造に基づいてオブジェクトデータの完全なインスタンスの維持の一例を示している。この例においては、第１システム１０２（１）は、最終アクセス時間の後に、閾値時間にわたって、第１システム上においてオブジェクトデータ２０２の完全なインスタンスを保持している。例えば、このケースにおいては、オブジェクトの最終アクセス時間は、図２に関して上述したように、オブジェクトがクライアント装置１２２（１）から受け取られた時となる。システム１０２のそれぞれは、個々のシステムによって記憶されたそれぞれのオブジェクトごとの最終アクセス時間及び対応する時間閾値を追跡するために、最終アクセスデータ構造４０２を維持してもよい。従って、第１システム１０２（１）は、最終アクセスデータ構造４０２（１）を維持し、第２システム１０２（２）は、最終アクセスデータ構造４０２（２）を維持し、第３システム１０２（３）は、最終アクセスデータ構造４０２（３）を維持し、且つ、第４システム１０２（４）は、最終アクセスデータ構造４０２（４）を維持している。
【００４８】
それぞれの最終アクセスデータ構造４０２は、少なくとも、オブジェクト識別子４０４、最終アクセス時間４０６、及び閾値時間４０８を含んでもよい。いくつかの例において、閾値時間４０８は、時間の長さ（例えば、日や週の数など）であってもよい一方で、その他の例においては、閾値時間４０８は、閾値が満了する特定の時間（例えば、特定の日付及び時刻）であってもよい。いくつかの例において、閾値時間４０８は、システム１０２内のすべてのオブジェクトについて、且つ又は、分散型のトポロジー１００のすべてのオブジェクトについて、同一であってもよい。但し、他の例においては、閾値時間４０８は、システム１０２の異なるものにおいて、及び／又は、特定のシステム１０２内の異なるオブジェクトについて、異なっていてもよい。いくつかの例として、システムのうちの１つは、システムのうちの別のものよりも大きなストレージ容量を有していてもよく、そして、従って、相対的に長い時間の期間にわたってオブジェクトデータの完全なインスタンスの維持を許容可能であってもよい。別の例として、いくつかの種類のオブジェクトは、特定の時間の期間にわたってアクセスされることが知られてもよい一方で、その他のオブジェクトは、相対的にランダムにアクセスされてもよい。一例として、２週間の寿命と関連付けられた案内広告は、自身と関連付けられた１４日の閾値時間を有していてもよく、その理由は、この広告は、その２週間の間において頻繁にアクセスされる可能性が大きくなりうるが、その時間の後には、ほとんどアクセスされなくなるからである。一方、企業の従業員によって使用されるワードプロセッシング文書は、それが生成された後の最初の数日間においては、頻繁にアクセスされる可能性が大きくなりうるが、その後には、たまにしかアクセスされないようになりうる。本開示の利益を有する当業者には、多数のその他の変形が明らかとなるであろう。
【００４９】
特定のデータオブジェクトの閾値時間が満了した際に、システムは、オブジェクトデータの完全なインスタンスからのそのデータオブジェクトのオブジェクトデータを特定のシステムが維持の責任を担っているデータチャンクに低減してもよい。更に、アクセスがオブジェクトに対して実施された際には、最終アクセス時間４０６をその特定のオブジェクトの最新のアクセス時間にリセットしてもよい。この例においては、オブジェクトデータ２０２が、最終アクセスデータ構造４０２（１）内のオブジェクト１に対応しているものと仮定する。オブジェクト１の最終アクセス時間は、２０１７年３月５日の午後６時０６分である、と示されている。更に、現在の日付が、２０１７年３月１３日の午後５時００分であるものと仮定する。これは、オブジェクトデータ２０２が、更なる約２日間の後に、チャンクに低減されることになることを意味している。但し、クライアント装置１２２（１）における第１ユーザ１２８（１）は、第１オブジェクトにアクセスするための要求４１０を第１システムに送信するものと仮定する。第１システムは、既に利用可能であるオブジェクトデータ２０２の完全なインスタンスを有していることから、第１システムは、オブジェクトデータ２０２を含むオブジェクト２０１をクライアント装置１２２（１）に送信することにより、要求４１０に対して即座に応答することができる。
【００５０】
更には、オブジェクト２０１に対するクライアント装置１２２（１）によるこのアクセスに基づいて、第１システムは、オブジェクト１の最終アクセス時間４０６を現在時刻に変更することにより、最終アクセスデータ構造４０２（１）を更新することができる（図４には、図示せず）。従って、この例においては、最終アクセス時間は、現在時刻にリセットされ、これは、第１システム１０２（１）が、閾値時間、即ち、更なる１０日間、にわたって、オブジェクトデータ２０２の完全なインスタンスを維持することになることを意味している。この期間において、オブジェクトへの更なるアクセスが存在していない場合には、第１システム１０２（１）は、上述のように、オブジェクトデータ２０２をデータチャンク２０２（Ｃ）に低減することになり、且つ、オブジェクトデータ２０２の完全なインスタンスを削除することになるか、或いは、さもなければ、その削除のためのマークを行うマーキングすることになる。
【００５１】
図５は、いくつかの実装形態に係る、時間閾値の満了に後続するオブジェクトデータの低減の一例を示している。この例においては、現在の日付が、いまや、２０１７年３月２３日の午後５時００分であるものと仮定する。そして、更に、上述の２０１７年３月１３日の最終アクセス以降に、第１オブジェクトに対する更なるアクセスが実施されていないものと仮定する。従って、１０日間の時間閾値は、満了しており、第１システム１０２（１）は、オブジェクトデータ２０２をデータチャンクに低減するように決定してもよい。例えば、システム１０２のそれぞれは、最終アクセスデータ構造内の情報に基づいて、オブジェクトデータの完全な複写をデータチャンクに低減することをいつするかを定期的に決定する（図１３及び図１４に関して更に後述する）ストレージマネージャプログラム又はこれに類似したものを含んでもよい。
【００５２】
いくつかの例においては、第１システム１０２は、データチャンク２０２（Ｃ）を、その他のチャンク２０２（Ａ）、２０２（Ｂ）、及び２０２（Ｐ）が生成され、また、分散型のトポロジーのその他のシステム１０２（２）〜１０２（４）に分散されたときから、保持していてもよい。その他の例においては、第１システム１０２は、データ２０２の完全なインスタンスが低減され、且つ、第１システム１０２（１）から削除された際に、データチャンク２０２（Ｃ）を再生成してもよい。データチャンク２０２Ｃを再生成するためのオーバーヘッドは、相対的に小さなものとなりうることから、オブジェクトデータ２０２の完全なインスタンスと同時にデータチャンク２０２（Ｃ）を維持しないことにより、オブジェクトデータ２０２の完全なインスタンスが維持される時間の間において、いくらかのストレージ容量の浪費が回避される。
【００５３】
これに加えて、第１システム１０２（１）が、データチャンクのうちの１つではなく、パリティチャンクの維持の責任を担っているケースにおいては、いくつかの例においては、第１システム１０２（１）は、オブジェクトデータ２０２の完全なインスタンスが低減され、また、第１システム１０２（１）から削除される際に、パリティチャンクの再演算の演算オーバーヘッドを被らなければならないのではなく、オブジェクトデータ２０２の完全なインスタンスがストレージ内で維持された状態において、パリティチャンクをストレージ内で維持してもよい。この代わりに、当然のことながら、第１システム１０２（１）は、オブジェクトデータ２０２が非常に大きく、及び／又は、第１システム１０２（１）上に、限られた量の利用可能なストレージ容量しか存在していないケースなどにおいては、オブジェクトデータ２０２が低減される際に、パリティチャンクを再演算してもよい。従って、図５は、第１システム１０２（１）が、いまや、データチャンク２０２（Ｃ）のみを保存しており、且つ、オブジェクトデータ２０２の完全なインスタンスは、削除済みである、或いは、さもなければ、削除のためにマークされていることを示している。
【００５４】
図６は、いくつかの実装形態に係る、地理的に分散したチャンクからのオブジェクトの再構築の一例を示している。記憶されているオブジェクトが、分散型トポロジー１００内のシステム１０２のうちの１つからユーザ１２８によって要求された際に、要求を受け取ったシステム１０２は、チャンクからオブジェクトデータ２０２を再生成するために、ローカルに記憶されているチャンクと、その他の個々の記憶場所のその他のシステム１０２から取得された２つの更なるデータチャンクとを使用してもよい。この活動によって消費されるネットワーク帯域幅を制限するために、再構築システム１０２は、リモートシステム１０２から、オリジナルのオブジェクトデータを再生成するために必要とされる最小数のチャンクを取得してもよい。ローカルチャンクは、データチャンク又はパリティチャンクのいずれであってもよい。但し、ローカルチャンクがパリティチャンクである際には、システムは、典型的には、オブジェクトデータ２０２の再構築を可能とするための、不足しているデータチャンクの演算からもたらされる、更なるオーバーヘッドを被る。
【００５５】
図示の例においては、第４システム１０２（４）が、オブジェクト２０１へのアクセスを要求する要求６０２をクライアント装置１２２（Ｎ）から受け取るものと仮定する。要求の受取に応答して、第４システム１０２（４）は、自身が、要求されているオブジェクト２０１のデータチャンク２０２（Ｂ）を有していると決定してもよく、オブジェクトデータ２０２を再構築するために、２つの更なるチャンクを要求する。第４システム１０２（４）がデータチャンク２０２（Ｂ）と共に受け取ったオブジェクトメタデータ２０３に基づいて、第４システムは、オブジェクトデータ２０２のその他のデータチャンク２０２（Ａ）及び２０２（Ｃ）と、パリティチャンク２０２（Ｐ）と、の場所を決定してもよい。一例として、第４システム１０２（４）は、オブジェクトメタデータ２０３と共に受け取った完全なオブジェクトデータのハッシュ値を使用してもよく、また、その他のシステム１０２のいずれがその他のチャンクのいずれを保存しているのかを決定するために、ハッシュ値のｍｏｄｕｌｏ（４）を算出してもよい。
【００５６】
従って、最小量の演算処理によってオブジェクトデータを再構築するために、第４システム１０２（４）は、分散型トポロジー１００内の、システム１０２（３）及び１０２（１）から、２つのその他のデータチャンク２０２（Ａ）及び２０２（Ｃ）のそれぞれを取得してもよい。上述のように、第４システム１０２（４）は、オブジェクトメタデータ２０３内において含まれているハッシュ値に基づいて、及び、いずれのシステム１０２がパリティチャンク２０２（Ｐ）ではなくデータチャンク２０２（Ａ）及び２０２（Ｃ）を維持しているのかを判定するための上述のｍｏｄｕｌｏ（４）演算を適用することにより、２つのその他のデータチャンクの場所を決定することができる。２つのその他のデータチャンク２０２（Ａ）及び２０２（Ｃ）を受け取った際に、第４システム１０２（４）は、オリジナルのオブジェクトデータを再生成するために、単純に３つのデータチャンク２０２（Ａ）、２０２（Ｂ）、及び２０２（Ｃ）を１つに連結してもよい。次いで、第４システム１０２（４）は、再構築されたオブジェクトデータ２０２及びオブジェクト識別子などの任意の関連するオブジェクトメタデータ２０３又はこれらに類似したものを含むオブジェクト２０１を要求元のクライアント演算装置１２２（Ｎ）に送信することにより、クライアント演算装置１２２（Ｎ）から受け取った要求６０２に応答してもよい。
【００５７】
一方、障害が第３システム１０２（３）において発生し、その結果、要求６０２が受け取られた時点において、チャンク２０２（Ａ）が破損している、消失している、または、利用不能になっているものと仮定する。この状況において、第４システム１０２（４）は、ハッシュ値のｍｏｄｕｌｏ（４）に基づいて、第２システム１０２（２）及び第１システム１０２（１）から、パリティチャンク２０２（Ｐ）及び第３データチャンク２０２（Ｃ）をそれぞれ取得することができる。次いで、第４システム１０２（１）は、第２データチャンク２０２（Ｂ）、第３データチャンク２０２（Ｃ）、及びパリティチャンク２０２（Ｐ）を使用することにより、オブジェクトデータ２０２を再構築してもよい。
【００５８】
パリティチャンク２０２（Ｐ）を使用したオブジェクトデータの再構築には、パリティチャンク２０２（Ｐ）及びその他の２つのチャンク２０２（Ｂ）及び２０２（Ｃ）を使用することにより、消失したデータチャンク２０２（Ａ）を演算する必要があり、典型的には、チャンク２０２（Ａ）が利用可能である場合よりも大きな演算オーバーヘッドが生じうる。また、データチャンク２０２（Ａ）の使用とは対照的に、パリティチャンク２０２（Ｐ）を使用したオブジェクトデータ２０２の再構築は、また、典型的には、データチャンク２０２（Ａ）の取得よりも多くの時間を必要としうる。但し、いくつかのケースにおいては、演算オーバーヘッド及び時間遅延の増大は、システム及びネットワークのレイテンシー、ネットワークの輻輳等に照らして均衡させることができる。例えば、システム１０２（３）が、地理的に第４システム１０２（４）からなんらかの距離において配置されるか、或いは、低速ネットワーク接続上に配置されるか、或いは、いくつかのネットワークホップ上に配置され、データチャンク２０２（Ａ）が利用可能である場合にも、データチャンク２０２（Ａ）の取得が、パリティチャンク２０２（Ｐ）を使用したデータチャンク２０２（Ａ）の演算よりも長い時間を所要しうるケースがこれに該当しうる。この結果、このような状況においては、第４システム１０２（４）は、単に最も迅速に取得されうる２つのデータチャンクのみを取得し、オブジェクトデータを再構築するために、パリティチャンク２０２（Ｐ）及び２つのデータチャンクを使用してもよい。いくつかの例では、それぞれのシステム１０２は、オブジェクトデータを再構築するためにパリティチャンクを使用するのかどうか、または、パリティチャンクを使用する代わりにデータチャンクを取得するのかどうか、を決定するために、ネットワークレイテンシー情報を維持してもよい。
【００５９】
図７は、いくつかの実装形態に係る、オブジェクトに対するアクセスに後続するオブジェクトデータの完全なインスタンスの維持の一例を示している。図６に関して上述した、オブジェクト２０１へのアクセス及びオブジェクトデータ２０２の再構築に後続して、第４システム１０２（４）は、オブジェクト用の最終アクセスデータ構造４０２（４）内のエントリの更新（図７に図示せず）に基づいて、閾値時間の期間にわたって、オブジェクトデータ２０２の完全なインスタンスを維持してもよい。いくつかの例においては、第４システム１０２（４）内のオブジェクトデータ２０２の完全なインスタンスを維持するための閾値時間は、図４の例において第１システム１０２（１）によって使用される上述の閾値時間（即ち、１０日間）と同一であってもよい。一方、その他の例においては、特定の第４システム１０２（４）の設定に基づいて、異なる時間閾値が使用されてもよい。一例として、第４システム１０２（４）が第１システム１０２（１）よりも格段に大きな利用可能なストレージ容量を有している場合には、第４システム１０２（４）用の既定の閾値時間は、第１システム１０２（１）用よりも長くてもよい。
【００６０】
オブジェクトデータ２０２の完全なインスタンスが第４システム１０２（４）によって維持されている状態において、第４システム１０２（４）は、第１オブジェクトに対する任意のアクセス要求に対して即座に応答することができる。このような要求が受け取られた場合に、第４システム１０２（４）は、オブジェクトに対する最も最近のアクセスを反映するように、最終アクセスデータ構造４０２（４）内の最終アクセス時間を更新する。
【００６１】
図８は、いくつかの実装形態に係る、別のシステムにおいてアクセス要求に対して応答するための再構築されたオブジェクトデータの取得の一例を示している。この例においては、第１システム１０２（１）が、第１オブジェクト２０１にアクセスするための要求８０２をクライアント装置１２２（１）から受け取るものと仮定する。これに応答して、第１システム１０２（１）は、自身が、ローカルに維持されているデータチャンク２０２（Ｃ）しか有していないと決定してもよいと共に、従って、オブジェクトデータを再構築するためにその他のチャンクの場所を判定するために、オブジェクトメタデータ２０３と共に維持されているハッシュ値を使用してもよい。
【００６２】
その他のチャンクについてその他のシステム１０２に対して要求を伝達することに応答して、第４システム１０２（４）は、第４システム１０２（４）が既に再構築済みのオブジェクトデータ２０２の完全なインスタンスを有していることを第１システム１０２（１）に通知する通信により、応答してもよい。この情報を受け取ると、第１システム１０２（１）は、第２システム１０２（２）及び／又は第３システム１０２（３）からのチャンクの要求を取り消してもよく、また、第４システム１０２（４）からオブジェクトデータ２０２の完全なインスタンスを要求してもよい。これに応答して、第４システム１０２（４）は、オブジェクトデータ２０２の完全なインスタンスを第１システム１０２（１）に送信してもよく、また、第１システム１０２（１）は、再構築済みのオブジェクトデータ２０２及び任意の関連するオブジェクトメタデータ２０３を含むオブジェクト２０１をクライアント装置１２２（１）に送信することにより、要求８０２に対して応答するために、受信したオブジェクトデータ２０２の完全なインスタンスを使用してもよい。
【００６３】
図９は、いくつかの実装形態に係る、オブジェクトに対するアクセスに後続するオブジェクトデータの完全なインスタンスの維持の一例を示している。図８に関して上述したオブジェクト２０１へのアクセスに後続して、第１システム１０２（１）は、図４に関して上述したように、オブジェクトに対する最終アクセスデータ構造４０２（１）内のエントリの更新に基づいて（図９に図示せず）、閾値時間の期間にわたって、オブジェクトデータ２０２の完全なインスタンスを維持してもよい。更に、この例においては、第４システム１０２（４）は、オブジェクトデータ２０２の完全なインスタンスをも依然として維持している。本明細書における例においては、第４システム１０２（４）は、クライアント装置によるアクセスではなかったので、オブジェクトデータ２０２の複写の第１システム１０２（１）への送信に基づいて、最終アクセスデータ構造４０２（４）を更新しなかった。
【００６４】
オブジェクトデータ２０２の完全なインスタンスが、それぞれ、第１及び第４システム１０２（１）及び１０２（４）によって維持されている状態において、これらのシステムは、第１オブジェクトに対する任意のアクセス要求に対して即座に応答することができる。このような要求が受け取られた場合に、アクセス要求を受け取ったシステムは、オブジェクトに対する最も最近のアクセスを反映させるために、その個々の最終アクセスデータ構造４０２内の自身の最終アクセス時間を更新する。
【００６５】
図１０は、いくつかの実装形態に係る、時間閾値の満了に後続するオブジェクトデータの低減の一例を示している。この例においては、図８に関して上述した最終アクセス以降に、第１オブジェクトに対する更なるアクセスが実施されていないものと仮定する。従って、時間閾値が、第４システム１０２（４）上の最終アクセスデータ構造４０２（４）において第１オブジェクトについて満了した際に、第４システム１０２（４）は、オブジェクトデータ２０２（図１０に図視せず）をデータチャンクに低減することを決定してもよい。従って、第４システムは、図５に関して上述した技法のうちの任意のものを使用することにより、オブジェクトデータ２０２の完全なインスタンスをデータチャンク２０２（Ｂ）に低減することができる。同様に、第１オブジェクト用の時間閾値が、第１システム１０２（１）上の最終アクセスデータ構造４０２（１）において、満了した際には、第１システムは、図５に関して上述した技法のうちの任意のものを使用することにより、オブジェクトデータ２０２の完全なインスタンスをデータチャンク２０２（Ｃ）に低減してもよい。従って、図１０は、第１システム１０２（１）が、いまや、データチャンク２０２（Ｃ）のみを保存しており、また、第４システム１０２（４）は、いまや、データチャンク２０２（Ｂ）のみを保存しており、また、オブジェクトデータ２０２の完全なインスタンスは、削除されているか、或いは、さもなければ、これらのシステム内における削除のためにマークされていることを示している。
【００６６】
図１１は、いくつかの実装形態に係る、データチャンク及びパリティチャンクの決定の一例１１００を示している。いくつかの例においては、オブジェクトデータ２０２は、上述のように、データの開始時点に始まり、また、データの第１の３分の１から第１チャンクを生成し、データの第２の３分の１から第２チャンクを生成し、また、データの第３の３分の１から第３チャンクを生成し、また、次いで、これらの３つのチャンクからパリティを算出するなどにより、単に３つの等しいサイズのチャンクに分割されてもよい。
【００６７】
但し、この例においては、データチャンクは、オブジェクトデータのブロックをインターリーブすることにより、生成されている。従って、当初、オブジェクトデータ２０２は、オブジェクトデータ２０２をチャンクに分割する前に、複数の等しいサイズのブロック１１０２に分割してもよい。例えば、ブロックサイズは、２５６バイト、５１２バイト、１０２４バイトなどのような、任意の望ましいブロックサイズであってよい。一例として、ブロックサイズは、オブジェクトデータのサイズに基づいてもよい。例えば、非常に大きなデータオブジェクトは、相対的に大きなブロックに分割されてもよい一方、相対的に小さなデータオブジェクトは、相対的に小さなブロックサイズに分割されてもよい。
【００６８】
図示のように、オブジェクトデータ２０２は、第１ブロック１１０２（１）、第２ブロック１１０２（２）、第３ブロック１１０２（３）、第４ブロック１１０２（４）、第５ブロック１１０２（５）、第６ブロック１１０２（６）、第７ブロック１１０２（７）、第８ブロック１１０２（８）、第９ブロック１１０２（９）などを有する。データチャンクを生成する際には、第１ブロックから始まるシーケンスにおいて、ブロックは、複数のデータチャンクに交互に追加される。したがって、第１ブロック１１０２（１）は、第１データチャンク２０２（Ａ）の初めに追加され、第２ブロック１１０２（２）は、第２データチャンク２０２（Ｂ）の初めに追加され、且つ、第３ブロック１１０２（３）は、第３データチャンク２０２（Ｃ）の開始点に追加される。次に、第４ブロック１１０２（４）は、第１ブロック１１０２（１）に後続する位置において第１データチャンク２０２（Ａ）に追加され、第５ブロック１１０２（５）は、第２ブロック１１０２（２）に後続する位置において第２データチャンク２０２（Ｂ）に追加され、第６ブロック１１０２（６）は、第３ブロック１１０２（３）に後続する位置において第３データチャンク２０２（Ｃ）に追加される。このプロセスは、オブジェクトデータ２０２内のすべてのブロック１１０２がデータチャンク２０２（Ａ）〜２０２（Ｃ）へ分散されるまで継続されてもよい。
【００６９】
３つのデータチャンク２０２（Ａ）〜２０２（Ｃ）に対するパリティチャンク２０２（Ｐ）を算出する際に、システムは、インターリーブされたブロックを使用することにより、パリティ計算を実行してもよい。したがって、１１０４で示されているように、システムは、第１パリティブロック１１０６を演算するために、第１データチャンク２０２（Ａ）からの第１データブロック１１０２（１）との、第２データチャンク２０２（Ｂ）からの第２データブロック１１０２（２）と、第３データチャンク２０２（Ｃ）からの第３データブロック１１０２（３）のパリティを算出してもよい。従って、パリティブロック１１０６は、オブジェクトデータ２０２の最初の３つのブロック１１０２（１）〜１１０２（３）のパリティデータを含む。パリティチャンク２０２（Ｐ）の計算は、次のパリティブロック１１０８を算出するためにデータブロック１１０２（４）〜１１０２（６）を次に選択することにより、この方式で継続してもよい。
【００７０】
この結果、このインターリーブされた方式によってデータチャンクを構成し、また、インターリーブされたデータに基づいてパリティチャンクを決定することにより、パリティチャンクを使用してオブジェクトデータを再構築する際に、パリティチャンクを使用して消失チャンクを再構築し、更に、単一パスにおいて、再構築されたデータをその他の２つのチャンクからのデータと連結することが可能である。その理由は、ブロックが、消失チャンクデータを再生成するため及びその他のデータチャンクのブロックからのデータと再生成されたデータを連結するためにパリティデータを使用する間においてメモリに維持するためには十分に小さいからである。一方、単にオブジェクトデータ２０２を３分の１に分割することにより、データチャンクを生成する上述の第１の技法を使用した場合には、結果的に、パリティデータから消失データを再生成する際に、２つのパス、即ち、パリティデータから消失データを演算し、且つ、演算されたデータを記憶場所に保存するための１つのパスと、再生成されたデータをその他のチャンクからのデータと連結するための第２のパスと、が必要となりうる。更に、本明細書には、データをチャンクに分割し、パリティチャンクを算出する技法のいくつかの例が記述されているが、本明細書における開示の利益を有する当業者には、多数のその他の変形が明らかとなるであろう。
【００７１】
図１２は、いくつかの実装形態に係るプロセス例を示すフロー図である。プロセスは、論理フロー図において、ブロックの集合体として示されており、ブロックは、動作のシーケンスを表し、これらのいくつか又はすべては、ハードウェア、ソフトウェア、又はこれらの組合せによって実装してもよい。ソフトウェアのコンテキストでは、ブロックは、１つ又は複数のプロセッサによって実行された際に、記述されている動作を実行するようにプロセッサをプログラムする、１つ又は複数のコンピュータ可読媒体上において保存されたコンピュータ実行可能命令を表してもよい。一般に、コンピュータ可読命令は、特定の機能を実行する、または、特定のデータタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。ブロックが記述されている順序は、限定として解釈してはならない。プロセス又は代替プロセスを実装するために、任意の数の記述されているブロックを任意の順序において及び／又は並行して組み合わせることが可能であり、また、すべてのブロックの実行が必要とされているわけではない。説明を目的として、プロセスは、本明細書においては、例において記述されている環境、フレームワーク、及びシステムを参照して記述されているが、プロセスは、様々なその他の環境、フレームワーク、及びシステムにおいて実装することもできる。
【００７２】
図１２は、いくつかの実装形態に係る、オブジェクトデータの管理のプロセス１２００の例を示すフロー図である。いくつかのケースにおいては、プロセス１２００は、サービス演算装置１１２又はその他の適切な演算装置により、少なくとも部分的に実行されてもよい。
【００７３】
１２０２で、演算装置は、異なる個々の地理的場所に配置されている少なくとも３つのシステムを有するシステムの分散型トポロジーを構成してもよい。例えば、システムは、異なる都市、異なる州、異なる国に配置されてもよく、又は、さもなければ、異なる地理的領域内に配置されてもよい。
【００７４】
１２０４で、演算装置は、３つ以上のシステムのうちの第１システムにおいてデータオブジェクトを受け取ってもよく、データオブジェクトは、オブジェクトデータと、オブジェクトメタデータと、を含む。
【００７５】
１２０６で、演算装置は、システムの合計数に基づいて、オブジェクトデータを複数のデータチャンクに分割し、複数のデータチャンクについてのパリティチャンクを決定することにより、複数のチャンクを決定してもよい。
【００７６】
１２０８で、演算装置は、第１システムにおいてオブジェクトデータの完全なインスタンスを維持しつつ、チャンクのいくつかを３つ以上のシステムのうちの他のシステムに送信してもよい。
【００７７】
１２１０で、演算装置は、オブジェクトに対する最も最近のアクセスに基づいて、時間をオブジェクトデータの完全なインスタンスと関連付けてもよい。
【００７８】
１２１２で、演算装置は、時間閾値をオブジェクトデータの完全なインスタンスと関連付けてもよく、時間閾値は、オブジェクトデータの完全なインスタンスが削除されるべき時間を示している。
【００７９】
１２１４で、閾値時間に到達したという決定に基づいて、演算装置は、システムで指定されたオブジェクトチャンク（データチャンク又はパリティチャンク）を生成してもよく、また、システムからのオブジェクトデータの完全なインスタンスの削除をもたらす命令を送信してもよい。例えば、システムからオブジェクトデータの完全なインスタンスを削除する前に、システムは、完全なインスタンスから、システムのオブジェクトチャンクを生成してもよい。従って、システムが、オブジェクトのデータチャンクのうちの１つを保存するように指定されている場合には、システムは完全なインスタンスから、指定されたデータチャンクを生成してもよい。同様に、システムがパリティチャンクを保存するように指定されている場合には、システムは完全なインスタンスから、パリティチャンクを生成してもよい。システムのオブジェクトチャンクの生成に後続して、システムはオブジェクトデータの完全なインスタンスを削除してもよく、或いは、さもなければ、その削除をもたらす命令を送信してもよい。
【００８０】
１２１６で、オブジェクトにアクセスするためのクライアント装置からの要求の受信に基づいて、演算装置は、３つ以上のシステムのうちの他のシステムから、オブジェクトと関連するチャンクを受け取ってもよい。
【００８１】
１２１８で、演算装置は、その他のシステムから受信したチャンク及びシステム上に存在しているチャンクを使用することにより、完全なオブジェクトデータを再構築してもよい。
【００８２】
１２２０で、演算装置は、再構築されたオブジェクトデータをクライアント装置に送信してもよい。更に、演算装置は、オブジェクトデータの再構築された完全なインスタンスの最終アクセス時間を設定してもよく、また、ブロック１２１０に戻ることにより、時間閾値を完全なインスタンスと関連付けてもよい。
【００８３】
本明細書において記述されているプロセス例は、説明を目的として提供されたプロセスの例であるに過ぎない。本明細書における開示に鑑み、当業者には、多数のその他の変形が明らかとなるであろう。更に、本明細書における開示は、プロセスを実行するための適切なフレームワーク、アーキテクチャ、及び環境のいくつかの例について記述しているが、本明細書における実装形態は、図示及び説明されている特定の例に限定されるものではない。更に、本開示は、記述されているように、また、図面において示されているように、様々な例示用の実装形態を提供している。但し、本開示は、本明細書において記述及び図示されている実装形態に限定されるものではなく、当業者には、わかるように、或いは、知られるように、その他の実装形態に拡張することができる。
【００８４】
図１３は、いくつかの実装形態に係る演算システム１０２の構成例を示している。この例においては、演算システム１０２は、本明細書において記述されているオブジェクトストレージシステムの機能を実行しうるように構成されたサービス演算装置１１２（本明細書においては、ノードとも呼称される）のクラスタ又はその他の複数のサービス演算装置１１２であってよい。いくつかの例においては、演算システム１０２は、１つにネットワーク接続された独立型ノードの冗長型のアレイ（ＲＡＩＮ：ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｎｏｄｅ）と呼称することができる。図示の例においては、複数のサービス演算装置１１２は、ネットワークスイッチ１３０２のペアとの通信状態にある。ネットワークスイッチ１３０２は、サービス演算装置１１２の間におけるピアツーピア通信を可能にするための内部スイッチとして機能する第１スイッチ１３０２（１）と、サービス演算装置１１２に対する外部アクセスを可能にするための外部スイッチとして機能する第２スイッチ１３０２（２）と、を含んでもよい。それぞれのスイッチ１３０２は、クラスタ又はその他の演算システム構成におけるすべての潜在的なサービス演算装置１１２を扱うための十分なポートを含んでもよい。
【００８５】
また、この例における演算システム１０２は、配電ユニット（ＰＤＵ：ｐｏｗｅｒ  ｄｉｓｔｒｉｂｕｔｉｏｎ  ｕｎｉｔ）１３０４と、無停電電源装置（ＵＰＳ：ｕｎｉｎｔｅｒｒｕｐｔｉｂｌｅ  ｐｏｗｅｒ  ｓｕｐｐｌｙ）１３０６と、を含んでもよい。ＰＤＵ１３０４は、サービス演算装置１１２及びスイッチ１３０２に電源供給するために使用され、また、ＵＰＳ１３０６は、電源の変動及び／又は障害のケースにおいてノード及びスイッチを保護することができる。上述のように、演算システム１０２は、上述の１以上のネットワーク１２０及び１２４などの、ネットワークに接続されていてもよく、ネットワークは、本明細書の別の場所において列挙されているように、インターネット又はその他のＷＡＮ、ＬＡＮ、または、その他のタイプのネットワークを含んでもよい。
【００８６】
サービス演算装置１１２は、同種のものから構成されてもよく、または、異種のものから構成されてもよい。典型的なサービス演算装置１１２は、ＬＩＮＵＸ（登録商標）、ＷＩＮＤＯＷＳ（登録商標）等の、オペレーティングシステム１３０８を実行してもよい。これに加えて、サービス演算装置１１２のいくつか又はすべては、更に後述するように、オブジェクトデータ及び／又はシステムデータを保存するための、１以上のハードディスクドライブ（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及び／又は１以上の半導体ドライブ（ＳＳＤ：Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｒｉｖｅ）を含んでもよく、または、これらにアクセスしてもよい。一例として、サービス演算装置１１２は、任意の数の方法によって実施されうる１以上のサーバー又はその他のタイプの演算装置を含んでもよい。例えば、サーバーのケースにおいては、モジュール、その他の機能的コンポーネント、及びデータストレージの少なくとも一部分は、サーバーのクラスタ、サーバーファーム又はデータセンタ、クラウドによってホスティングされた演算装置などの内部のように、少なくとも１つのサーバー上において実装してもよいが、これに加えて、或いは、この代わりに、その他のコンピュータアーキテクチャを使用してもよい。
【００８７】
図示の例においては、例示用のサービス演算装置１１２は、１以上のプロセッサ１３１２、１以上のコンピュータ可読媒体１３１４、及び１以上の複数の通信インターフェイス１３１６を含むか、或いは、これらと関連付けられていてもよい。それぞれのプロセッサ１３１２は、単一の処理ユニット又はいくつかの処理ユニットであってよく、また、１以上の演算ユニット又は複数の処理コアを含むことができる。１つ又は複数のプロセッサ１３１２は、１以上の中央処理ユニット、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、ステートマシーン、論理回路、グラフィクス処理ユニット、及び／又は動作命令に基づいて信号を操作する任意の装置として実装することができる。例えば、１つ又は複数のプロセッサ１３１２は、本明細書において記述されているアルゴリズム及びプロセスを実行するように具体的にプログラミング又は構成された任意の適切なタイプの１つ又は複数のハードウェアプロセッサ及び／又は論理回路であってよい。複数のプロセッサ１３１２（複数も可）は、コンピュータ可読媒体１３１４内に記憶されているコンピュータ可読命令をフェッチ及び実行するように構成されることが可能であり、また、これらの命令は、本明細書において記述されている機能を実行するようにプロセッサ１３１２（複数も可）をプログラムすることができる。
【００８８】
いくつかのケースにおいては、コンピュータ可読媒体１３１４は、図１に関して上述したストレージ装置１１４の少なくとも一部分を含んでもよい。ストレージ装置は、ＳＳＤ及び／又はＨＤＤ等を含んでもよい。更に、コンピュータ可読媒体１３１４は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの、情報の記憶のための任意のタイプの技術において実装された揮発性及び不揮発性メモリ及び／又は着脱自在及び非着脱自在の媒体を含んでもよい。従って、コンピュータ可読媒体１３１４は、これに限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、又はその他のメモリ技術、光ストレージ、ソリッドステートストレージ、磁気テープ、磁気ディスクストレージ、ＲＡＩＤストレージシステム、ストレージアレイ、ネットワークアタッチトストレージ、ストレージエリアネットワーク、クラウドストレージ、或いは、望ましい情報を保存するために使用され、且つ、演算装置によってアクセス可能である、任意のその他の媒体を含んでもよい。ノード１０２の構成に応じて、コンピュータ可読媒体１３１４は、言及された際に、非一時的なコンピュータ可読媒体が、エネルギー、搬送波信号、電磁波、及び／又は信号自体を排除する程度に、有体の非一時的な媒体であってよい。
【００８９】
コンピュータ可読媒体１３１４は、１つ又は複数のプロセッサ１３１２によって実行可能な任意の数の機能的コンポーネントを記憶するために使用されてもよい。多くの実装形態においては、これらの機能的コンポーネントは、１以上のプロセッサ１３１２によって実行可能であり、また、実行された際に、本明細書においてサービス演算装置１１２（複数も可）に帰されているアクションを実行するようにプロセッサ１３１２（複数も可）を具体的にプログラムする、１以上のコンピュータプログラム、アプリケーション、又はこれらの一部分、実行可能コード、又はその他の実行可能命令であってよい。コンピュータ可読媒体１３１４内に記憶されている機能的コンポーネントは、データオブジェクトをクライアント装置に送信し、また、データオブジェクトをクライアント装置から受け取るなどのために、クライアント装置と通信しうるサーバープログラム１３１８を含んでもよい。機能的コンポーネントは、オブジェクトをチャンクに分割し、パリティチャンクを決定し、また、割り当てられたロールに基づいて分散型トポロジー内のその他のシステムにチャンクを分散させるなどのために、本明細書において記述されたイレイジャーコーディング及びストレージ管理アルゴリズムを実行しうるストレージマネージャプログラム１３２０を更に含んでもよい。コンピュータ可読媒体１３１４に記憶されている更なる機能的コンポーネントは、サービス演算装置１１２の様々な機能を制御及び管理するためのオペレーティングシステム１３０８を含んでもよい。一例として、これらの機能的コンポーネントは、コンピュータ可読媒体１３１４のストレージ部分内に記憶されてもよく、コンピュータ可読媒体１３１４のローカルメモリ部分に読み込まれてもよく、また、１以上のプロセッサ１３１２によって実行されてもよい。
【００９０】
これに加えて、コンピュータ可読媒体１３１４は、本明細書において記述されている機能及びサービスを実行するために使用されるデータ及びデータ構造を記憶するようにしてもよい。例えば、コンピュータ可読媒体１３１４は、システム１０２によって記憶されているオブジェクトチャンク１１８に関するメタデータを維持するために、メタデータデータ構造１１６を記憶してもよい。また、コンピュータ可読媒体１３１４は、オブジェクトデータの完全な複写がシステム１０２上において維持される期間を管理するために使用されてもよい最終アクセスデータ構造４０２を記憶してもよい。これに加えて、コンピュータ可読媒体１３１４は、オブジェクトチャンク１１８を記憶してもよい。また、サービス演算装置１１２は、プログラムやドライバなどを含みうるその他の機能的コンポーネント及びデータと、機能的コンポーネントによって使用又は生成されるデータと、を含んでいてもよく、または、これらを維持してもよい。更に、サービス演算装置１１２は、多くのその他の論理的な、プログラム的な、及び、物理的な、コンポーネントを含んでいてもよく、これらのうちの記述されているのは、本明細書における説明に関係するその例であるに過ぎない。
【００９１】
通信インターフェイス１３１６（複数も可）は、上述のネットワーク（複数も可）１２０及び１２４上などにおいて、様々なその他の装置との間の通信を可能にするための、１以上のインターフェイス及びハードウェアコンポーネントを含んでもよい。例えば、通信インターフェイス１３１６（複数も可）は、本明細書の別の場所において更に列挙されているように、ＬＡＮ、インターネット、ケーブルネットワーク、セルラーネットワーク、無線ネットワーク（例えば、Ｗｉ−Ｆｉ）及び有線ネットワーク（例えば、ファイバーチャネル、光ファイバ、Ｅｔｈｅｒｎｅｔ）、直接接続のみならず、ＢＬＵＥＴＯＯＴＨ（登録商標）などの近距離通信、並びに、これらに類似したものの１以上を通じて、通信を可能にしてもよい。更には、上述の演算システム１０２の例は、本明細書の例において記述されている機能を実行しうるオブジェクトストレージシステムとして使用するのに適した演算システム１０２の一例であるに過ぎない。
【００９２】
図１４は、いくつかの実装形態に係る、演算システム１０２の構成の他の例を示している。システム１０２は、１以上のネットワーク１４０４などを介して、ストレージシステム１４０２と通信しうる、または、その他の方法でこれに結合された、少なくとも１つのサービス演算装置１１２を含む。典型的には、１以上のネットワーク１４０４は、これに限定されないが、ＬＡＮ、ファイバーチャネルネットワークなどのストレージエリアネットワーク（ＳＡＮ：ｓｔｏｒａｇｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、又はこれらに類似したものを含んでもよく、また、本明細書において記述されているその他のタイプのネットワーク、直接接続、又はこれらに類似したものを含んでもよい。
【００９３】
いくつかの例においては、少なくとも１つのサービス演算装置１１２は、任意の数の方式によって実施されうる１以上のサーバー又はその他のタイプの演算装置を含んでもよい。例えば、サーバーのケースにおいては、プログラム、その他の機能的コンポーネント、及びデータストレージの少なくとも一部分は、複数のサーバー、サーバーファーム、データセンタ、クラウドによってホスティングされた演算サービスなどの内部のように、少なくとも１つのサーバー上において実装してもよいが、これに加えて、又はこの代わりに、その他のコンピュータアーキテクチャを使用してもよい。図示の例においては、サービス演算装置１１２は、１以上のプロセッサ１４１０、１以上のコンピュータ可読媒体１４１２、及び１以上の通信インターフェイス１４１４を含むか、或いは、これらと関連付けられていてもよい。
【００９４】
それぞれのプロセッサ１４１０は、単一の処理ユニット又はいくつかの処理ユニットであってもよく、また、単一の又は複数の演算ユニット、または、複数の処理コアを含んでもよい。プロセッサ１４１０（複数も可）は、１以上の中央処理ユニット、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、ステートマシーン、論理回路、グラフィクスプロセッサ、及び／又は動作命令に基づいて信号を操作する任意の装置として実装してもよい。一例として、プロセッサ１４１０（複数も可）は、本明細書において記述されているアルゴリズム及びプロセスを実行するように具体的にプログラミング又は構成された任意の適切なタイプの１以上のハードウェアプロセッサ及び／又は論理回路を含んでもよい。プロセッサ１４１０（複数も可）は、本明細書において記述されている機能を実行するようにプロセッサ１４１０（複数も可）をプログラムするために実行されうる、コンピュータ可読媒体１４１２内に記憶されたコンピュータ可読命令をフェッチ及び実行するように構成されてもよい。
【００９５】
コンピュータ可読媒体１４１２は、コンピュータ可読命令、データ構造、プログラムモジュール、又はその他のデータなどの、情報の記憶のための任意のタイプの技術において実装された揮発性及び不揮発性メモリ及び／又は着脱自在及び非着脱自在の媒体を含んでもよい。例えば、コンピュータ可読媒体１４１２は、これに限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又はその他のメモリ技術、光ストレージ、ソリッドステートストレージ、磁気テープ、磁気ディスクストレージ、ＲＡＩＤストレージシステム、ストレージアレイ、ネットワークアタッチトストレージ、ストレージエリアネットワーク、クラウドストレージ、或いは、望ましい情報を記憶するために使用され、且つ、演算装置によってアクセス可能である、任意のその他の媒体を含んでもよい。サービス演算装置１１２の構成に応じて、コンピュータ可読媒体１４１２は、言及された際に、非一時的なコンピュータ可読媒体が、エネルギー、搬送波信号、電磁波、及び／又は信号自体などの媒体を排除する、程度に、有体の非一時的な媒体であってよい。いくつかのケースにおいては、コンピュータ可読媒体１４１２は、サービス演算装置１１２と同一の場所に位置してもよい。一方、その他の例においては、コンピュータ可読媒体１４１２は、サービス演算装置１１２から部分的に離れていてもよい。例えば、いくつかのケースにおいては、コンピュータ可読媒体１４１２は、ストレージシステム１４０２内のストレージの一部分を含んでもよい。
【００９６】
コンピュータ可読媒体１４１２は、プロセッサ１４１０（複数も可）によって実行可能な任意の数の機能的コンポーネントを記憶するために使用してもよい。多くの実装形態においては、これらの機能的コンポーネントは、プロセッサ１４１０（複数も可）によって実行可能であり、また、実行された際に、本明細書においてサービス演算装置１１２に帰されているアクションを実行するようにプロセッサ１４１０（複数も可）を具体的にプログラムする、命令又はプログラムを含む。コンピュータ可読媒体１４１２内において保存されている機能的コンポーネントは、サーバープログラム１４１６、及びストレージマネージャプログラム１４１８を含んでいてもよく、このそれぞれは、１以上のコンピュータプログラム、アプリケーション、又はこれらの一部分、実行可能コード、或いは、その他の実行可能命令を含んでもよい。例えば、サーバープログラム１４１６は、クライアント装置及びストレージシステム１４０２との間の通信機能を提供してもよい。ストレージマネージャプログラム１４１８は、ストレージシステム１４０２に記憶されているオブジェクトチャンク１１８を含むオブジェクトデータに対応するオブジェクトメタデータ又はこれに類似したものを含むメタデータデータ構造１１６を生成し及び管理するためのデータベース管理機能を含んでもよい。ストレージマネージャプログラム１４１８は、オブジェクトをチャンクに分割する、チャンクをイレイジャーコーディングする、チャンクを分散させる、及び、チャンクからのオブジェクトデータを再構築する、機能を更に実行してもよい。コンピュータ可読媒体１４１２内に記憶されている更なる機能的コンポーネントは、サービス演算装置１１２の様々な機能を制御し、及び管理するためのオペレーティングシステム１４２０を含んでもよい。いくつかのケースにおいては、機能的コンポーネントは、コンピュータ可読媒体１４１２のストレージ部分内に記憶されてもよく、コンピュータ可読媒体１４１２のローカルメモリ部分に読み込まれてもよく、また、１以上のプロセッサ１４１０によって実行されてもよい。
【００９７】
これに加えて、コンピュータ可読媒体１４１２は、本明細書において記述されている機能及びサービスを実行するために使用されるデータ及びデータ構造を記憶してもよい。例えば、コンピュータ可読媒体１４１２は、メタデータデータ構造１１６及びフィンガプリントデータ構造１００４を記憶してもよい。また、サービス演算装置１１２は、プログラムやドライバなどを含みうるその他の機能的コンポーネント及びデータと、機能的コンポーネントによって使用又は生成されるデータと、を含んでいてもよく、或いは、これらを維持していてもよい。更に、サービス演算装置１１２は、多くの他の論理的な、プログラム的な、及び、物理的な、コンポーネントを含んでいてもよく、これらのうちの上述されているものは、本明細書における説明に関係している例であるに過ぎない。
【００９８】
通信インターフェイス１４１４（複数も可）は、ネットワーク１２０、１２４、及び１４０４上などの、様々なその他の装置との間の通信を可能にするための１以上のインターフェイス及びハードウェアコンポーネントを含んでもよい。従って、通信インターフェイス１４１４は、ストレージシステム１４０２と通信するための接続を提供する１以上のポートと、クライアント装置１０８と通信するためのネットワーク１２０（複数も可）に対する接続を提供する１以上のポートと、を含んでいてもよく、或いは、これを結合してもよい。例えば、通信インターフェイス１４１４（複数も可）は、本明細書の別の場所において更に列挙されているように、ＬＡＮ、インターネット、ケーブルネットワーク、セルラーネットワーク、無線ネットワーク（例えば、Ｗｉ−Ｆｉ）及び有線ネットワーク（例えば、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、光ファイバ、Ｅｔｈｅｒｎｅｔ）、直接接続のみならず、ＢＬＵＥＴＯＯＴＨ（登録商標）などの近距離通信、並びに、これらに類似したもののうちの１以上を通じた通信を可能にしてもよい。
【００９９】
ストレージシステム１４０２は、１以上のストレージ演算装置１４３０を含んでいてもよく、これらは、サービス演算装置１１２に関して上述した例のいずれかなどの、１以上のサーバー又は任意のその他の適切な演算装置を含んでもよい。ストレージ演算装置１４３０（複数も可）は、それぞれ、１以上のプロセッサ１４３２、１以上のコンピュータ可読媒体１４３４、及び１以上の通信インターフェイス１４３６を含んでもよい。例えば、プロセッサ１４３２は、プロセッサ１４１０に関して上述した例のいずれかに対応していてもよく、コンピュータ可読媒体１４３４は、コンピュータ可読媒体１４１２に関して上述した例のいずれかに対応していてもよく、また、通信インターフェイス１４３６は、通信インターフェイス１４１４に関して上述した例のいずれかに対応していてもよい。
【０１００】
これに加えて、コンピュータ可読媒体１４３４は、ストレージシステム１４０２内に含まれているストレージ１４４０上におけるデータの記憶を管理するための１以上のプロセッサ１４３２によって実行される機能的コンポーネントとして、ストレージプログラム１４３８を含んでもよい。ストレージ１４４０は、ストレージ装置１１４の１以上のアレイ１４４４上においてデータを記憶するために、ストレージ１４４０と関連する１以上のコントローラ１４４２を含んでもよい。例えば、コントローラ１４４２は、ＲＡＩＤ構成又は任意のその他の適切なストレージ構成においてアレイ１４４４を構成するため、及び／又は、ストレージ装置１１４に基づいた論理ユニットをストレージプログラム１４３８に対して提示するため、及び、基礎をなす物理的ストレージ装置１１４上に記憶されているデータオブジェクト１１８などのデータを管理するためにアレイ１４４４を制御してもよい。ストレージ装置１１４は、ハードディスクドライブ、ソリッドステートドライブ、光ドライブ、磁気テープ、これらの組合せなどのような、任意のタイプのストレージ装置であってよい。これに加えて、いくつかのシステム例について記述されているが、本明細書における開示の利益を有する当業者には、本明細書における分散型のオブジェクトストレージ、イレイジャーコーディング、及びデータ管理技法を実装しうる多数のその他のシステムが明らかとなるであろう。
【０１０１】
本明細書において記述されている様々な命令、プロセス、及び技法は、本明細書において、コンピュータ可読媒体上において保存される、且つ、プロセッサ（複数も可）によって実行される、プログラムモジュールなどの、コンピュータ実行可能命令の一般的なコンテキストにおいて検討してもよい。一般に、プログラムモジュールは、特定のタスクを実行するための、又は特定の抽象的データタイプを実装するための、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、実行可能コードなどを含む。これらのプログラムモジュール等は、仮想マシーン又はその他のジャストインタイムコンパイル実行環境などにおいて、ネイティブコードとして実行されてもよく、或いは、ダウンロードされて実行されてもよい。典型的には、プログラムモジュールの機能は、様々な実装形態において、適宜、組み合わせられてもよく、或いは、分散されてもよい。これらのモジュール及び技法の実装形態は、コンピュータストレージ媒体上に記憶されてもよく、或いは、なんらかの通信媒体の形態に跨って送信されてもよい。
【０１０２】
主題は、構造的特徴及び／又は方法的行為に固有の言語において記述されているが、添付の請求項において定義されている主題は、必ずしも、記述されている特定の特徴又は行為に限定されるものではないことを理解されたい。むしろ、特定の特徴及び行為は、請求項を実装する例示用の形態として開示されている。
【図１】
0006913233.tif 000002
【図２】
0006913233.tif 000003
【図３】
0006913233.tif 000004
【図４】
0006913233.tif 000005
【図５】
0006913233.tif 000006
【図６】
0006913233.tif 000007
【図７】
0006913233.tif 000008
【図８】
0006913233.tif 000009
【図９】
0006913233.tif 000010
【図１０】
0006913233.tif 000011
【図１１】
0006913233.tif 000012
【図１２】
0006913233.tif 000013
【図１３】
0006913233.tif 000014
【図１４】
0006913233.tif 000015