(57)【特許請求の範囲】
【請求項１】
アーカイブ・データ・コンテナ識別子、前記アーカイブ・データ・コンテナ内のデータ・コンテナの数、及び前記アーカイブ・データ・コンテナ内の各データ・コンテナの配置情報を使用して、複数のデータ・コンテナを有するアーカイブ・データ・コンテナに対する第１のメタデータ署名をプロセッサによって生成することと、
オブジェクトベース・ストレージにおいて前記複数のデータ・コンテナのデータを記憶するために中間論理オブジェクトに複数のブロックを前記プロセッサによって割り当てることと、
前記中間論理オブジェクト内の前記複数のブロックの配置情報を有するペイロード署名を前記プロセッサによって更新することと、
前記第１のメタデータ署名及び前記更新されたペイロード署名を記憶するためにメタデータ・オブジェクトを前記プロセッサによって使用することと、
前記データ・コンテナに対するリストア・リクエストに応答して、前記アーカイブ・データ・コンテナ内のデータ・コンテナの配置情報を、前記プロセッサによって、前記メタデータ・オブジェクトから読み出すことと、
を含む、方法。
【請求項２】
前記メタデータ・オブジェクトから前記データ・コンテナに関連付けられた中間論理オブジェクトをプロセッサによって識別すること、をさらに含む、請求項１に記載の方法。
【請求項３】
前記データ・コンテナのデータを記憶する、前記データ・コンテナに関連付けられた中間論理オブジェクトのブロックの識別子を前記プロセッサによって取得すること、をさらに含む、請求項１に記載の方法。
【請求項４】
前記データ・コンテナに関連付けられた中間論理ブロックの識別されたブロックに基づいて、前記オブジェクトベース・ストレージから前記データ・コンテナのデータを前記プロセッサによって読み出すこと、をさらに含む、請求項１に記載の方法。
【請求項５】
リストア・ノードのライブラリ・モジュールは、前記データ・コンテナの前記配置情報を決定するために、前記オブジェクトベース・ストレージから前記メタデータ・オブジェクトをダウンロードする、請求項１に記載の方法。
【請求項６】
前記第１のメタデータ署名及び前記更新されたペイロード署名は、前記メタデータ・オブジェクトに配置される前に圧縮される、請求項１に記載の方法。
【請求項７】
前記第１のメタデータ署名、前記更新されたペイロード署名及び前記データ・コンテナのデータは、非対称暗号キーを使用して暗号化される、請求項１に記載の方法。
【請求項８】
方法を実行するための命令をその上に記憶する非一時的機械可読記憶媒体であって、少なくとも１つの機械によって実行されるとき、前記機械に、
アーカイブ・データ・コンテナ識別子、前記アーカイブ・データ・コンテナ内のデータ・コンテナの数、及び前記アーカイブ・データ・コンテナ内の各データ・コンテナの配置情報を使用して、複数のデータ・コンテナを有する前記アーカイブ・データ・コンテナの第１のメタデータ署名を生成させ、
オブジェクトベース・ストレージにおいて前記複数のデータ・コンテナのデータを記憶するために中間論理オブジェクトに複数のブロックを割り当て、
前記中間論理オブジェクト内の前記複数のブロックの配置情報を有するペイロード署名を更新し、
前記第１のメタデータ署名及び前記更新されたペイロード署名を記憶するためにメタデータ・オブジェクトを使用し、
前記データ・コンテナに対するリストア・リクエストに応答して、前記データ・コンテナ内のデータ・コンテナの配置情報を前記メタデータ・オブジェクトから読み出す、
ようにする機械実行可能コードを含む、非一時的機械可読記憶媒体。
【請求項９】
少なくとも１つの機械によって実行されると、前記機械実行可能コードは、前記機械にさらに、
前記メタデータ・オブジェクトから前記データ・コンテナに関連付けられた中間論理オブジェクトを識別する、
ようにさせる、請求項８に記載の非一時的機械可読記憶媒体。
【請求項１０】
少なくとも１つの機械によって実行されると、前記機械実行可能コードは、前記機械にさらに、
前記データ・コンテナのデータを記憶する、前記データ・コンテナに関連付けられた中間論理オブジェクトのブロックの識別子を取得する、
ようにさせる、請求項８に記載の非一時的機械可読記憶媒体。
【請求項１１】
少なくとも１つの機械によって実行されると、前記機械実行可能コードは、前記機械にさらに、
前記データ・コンテナに関連付けられた中間論理ブロックの識別されたブロックに基づいて、前記オブジェクトベース・ストレージから前記データ・コンテナのデータを読み出す、
ようにさせる、請求項８に記載の非一時的機械可読記憶媒体。
【請求項１２】
リストア・ノードのライブラリ・モジュールは、前記データ・コンテナの前記配置情報を決定するために、前記オブジェクトベース・ストレージから前記メタデータ・オブジェクトをダウンロードする、請求項８に記載の非一時的機械可読記憶媒体。
【請求項１３】
前記第１のメタデータ署名及び前記更新されたペイロード署名は、前記メタデータ・オブジェクトに配置される前に圧縮される、請求項８に記載の非一時的機械可読記憶媒体。
【請求項１４】
前記第１のメタデータ署名、前記更新されたペイロード署名及び前記データ・コンテナのデータは、非対称暗号キーを使用して暗号化される、請求項８に記載の非一時的機械可読記憶媒体。
【請求項１５】
命令をその上に記憶した機械実行可能コードを含む機械可読媒体を含むメモリと、前記メモリに接続されたプロセッサとを含む、システムであって、
前記プロセッサは、前記機械実行可能コードを実行すると、
アーカイブ・データ・コンテナ識別子、前記アーカイブ・データ・コンテナ内のデータ・コンテナの数、及び前記アーカイブ・データ・コンテナ内の各データ・コンテナの配置情報を使用して、複数のデータ・コンテナを有する前記アーカイブ・データ・コンテナの第１のメタデータ署名を生成し、
オブジェクトベース・ストレージにおいて前記複数のデータ・コンテナのデータを記憶するために中間論理オブジェクトに複数のブロックを割り当て、
前記中間論理オブジェクト内の前記複数のブロックの配置情報を持つペイロード署名を更新し、
前記第１のメタデータ署名及び前記更新されたペイロード署名を記憶するためにメタデータ・オブジェクトを使用し、
前記データ・コンテナに対するリストア・リクエストに応答して、前記アーカイブ・データ・コンテナ内のデータ・コンテナの配置情報を前記メタデータ・オブジェクトから読み出す、
ように構成された、システム。
【請求項１６】
前記機械実行可能コードは、
前記データ・コンテナに関連付けられた中間論理オブジェクトを識別する、
ようにさらに実行される、請求項１５に記載のシステム。
【請求項１７】
前記機械実行可能コードは、
前記データ・コンテナのデータを記憶する、前記データ・コンテナに関連付けられた中間論理オブジェクトのブロックの識別子を取得する、
ようにさらに実行される、請求項１５に記載のシステム。
【請求項１８】
前記機械実行可能コードは、
前記データ・コンテナに関連付けられた中間論理ブロックの識別されたブロックに基づいて、前記オブジェクトベース・ストレージから前記データ・コンテナのデータを読み出す、
ようにさらに実行される、請求項１７に記載のシステム。
【請求項１９】
リストア・ノードのライブラリ・モジュールは、前記データ・コンテナの前記配置情報を決定するために、前記オブジェクトベース・ストレージから前記メタデータ・オブジェクトをダウンロードする、請求項１５に記載のシステム。
【請求項２０】
前記第１のメタデータ署名及び前記更新されたペイロード署名は、前記メタデータ・オブジェクトに配置される前に圧縮される、請求項１５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、ネットワーク・ストレージ・システムに関し、より具体的には、オブジェクトベース・ストレージ・システムにおいてアーカイブされたデータ・コンテナをリストアすることに関する。
【背景技術】
【０００２】
ネットワークベース・ストレージ（ｎｅｔｗｏｒｋ−ｂａｓｅｄ  ｓｔｏｒａｇｅ）は、データ・バックアップ、地理的に分散されたデータ・アクセス可能性、及びその他の目的のために一般的に利用される。典型的なネットワーク・ストレージ環境では、ストレージ・サーバは、データの１つ以上の論理コンテナをクライアントに提示又はエクスポートすることによって、クライアントにデータを利用可能にする。ネットワーク・ストレージには、例えば、ネットワーク接続ストレージ（ＮＡＳ）やストレージ・エリア・ネットワーク（ＳＡＮ）など、さまざまな形態がある。ＮＡＳの場合、ストレージ・サーバは通常、クライアントからのファイル・レベルのリクエストを処理し、一方、ＳＡＮストレージ・サーバはブロック・レベルのリクエストを処理する。一部のストレージ・サーバ・システムは、ファイル・レベル・リクエストとブロック・レベルのリクエストの両方をサポートする場合がある。
【０００３】
ネットワーク・ストレージ・システムに記憶されたデータにアクセスするために利用される複数の機構及びプロトコルがある。例えば、ネットワーク・ファイル・システム（ＮＦＳ）プロトコル又はコモン・インターネット・ファイル・システム（ＣＩＦＳ）プロトコルは、ローカル・ストレージがアクセスされる方法と同様の方法で、ネットワークを介してファイルにアクセスするために利用されてもよい。クライアントはまた、ハイパーテキスト転送プロトコル（ＨＴＴＰ）プロトコル又はクラウド・データ・マネジメント・インターフェース（ＣＤＭＩ）プロトコルのようなオブジェクト・プロトコルを使用して、ＬＡＮ又はインターネットのようなワイド・エリア・ネットワークを介して記憶されたデータにアクセスすることもできる。
【０００４】
オブジェクトベース・ストレージ（ＯＢＳ：ｏｂｊｅｃｔ−ｂａｓｅｄ  ｓｔｏｒａｇｅ）は、階層的ネーミング・スキーマを使わずにデータ・オブジェクトを記憶し管理するためのスケーラブル・システムである。ＯＢＳシステムは、可変サイズ・データ・アイテムを固有識別子（ＩＤ）キーを持つオブジェクトとしてフラットな名前空間構造に統合する、つまり「取り込む」（ｉｎｇｅｓｔ）。リプレゼンテーショナル・ステート・トランスファー（ＲＥＳＴ）アーキテクチャ又はシンプル・オブジェクト・アクセス・プロトコル（ＳＯＡＰ）に基づくものなどのウェブ・サービス・インターフェースを介して実装されるキーベース検索を使用して、オブジェクトはアクセス及び検索される。これにより、アプリケーションは「ｇｅｔ（ゲット）」及び「ｐｕｔ（プット）」コマンドを使用して、より複雑なファイル・システム及び／又はブロック・アクセス・コマンドを処理する必要なく、ネットワークを介してオブジェクトに直接アクセスすることができる。
【０００５】
ＯＢＳは、バックアップ／アーカイブされたファイルを記憶するためにも使用できる。アーカイブされたデータ・コンテナからの特定のデータ・コンテナは、いつでもリストアする（ｒｅｓｔｏｒｅ：復元する）必要がある。ＯＢＳベースのシステムから特定のデータ・コンテナを効率的にリストアできるコンピューティング技術の開発に継続的に取り組まれている。
【図面の簡単な説明】
【０００６】
これから、本開示の様々な特徴を、様々な態様の図面を参照して説明する。図面において、同じコンポーネントは、同じ参照番号を有してもよい。図示された態様は、本開示を例示することを意図しているが、本開示を制限するものではない。図面は、以下の図面を含む。
【０００７】
【図１】オブジェクトベース・ストレージ（ＯＢＳ）を提供するネットワーク・ストレージ・システムを示す。
【０００８】
【図２】本開示の一態様による、ＯＢＳからのデータ・コンテナをリストアするために使用されるメタデータ・オブジェクトを作成する様々な段階の例を示す。
【０００９】
【図３】本開示の一態様による、メタデータ・オブジェクトを作成するための処理フローを示す。
【００１０】
【図４】本開示の一態様による、オブジェクトベース・ストレージから特定のデータ・コンテナをリストアするための処理フローである。
【００１１】
【図５】本開示の種々の処理ブロックを実行するためのコンピューティング・システムのブロック図を示す。
【発明を実施するための形態】
【００１２】
予備的な注意として、本明細書で使用される用語「コンポーネント（ｃｏｍｐｏｎｅｎｔ）」、「モジュール（ｍｏｄｕｌｅ）」、「システム（ｓｙｓｔｅｍ）」等は、ソフトウェア実行汎用プロセッサ、ハードウェア、ファームウェア、及びそれらの組み合わせのいずれかのコンピュータ関連エンティティを指すことを意図している。例えば、コンポーネントは、ハードウェア・プロセッサ、ハードウェア・ベース・プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、及び／又はコンピュータ上で実行されるプロセスであってもよいが、これらに限定されない。
【００１３】
例示として、サーバ上で動作するアプリケーションとサーバの両方をコンポーネントとすることができる。１つ以上のコンポーネントは、実行のプロセス及び／又はスレッド内に存在してもよく、コンポーネントは、１つのコンピュータ上にローカライズされていてもよく、及び／又は２つ以上のコンピュータ間に分散されていてもよい。また、これらのコンポーネントは、その上に記憶された種々のデータ構造を有する種々のコンピュータ可読媒体から実行することができる。コンポーネントは、１つ以上のデータ・パケットを有する信号に従って、ローカル及び／又はリモート・プロセスを介して通信することができる（例えば、ローカル・システム、分散システム内の他のコンポーネントと、及び／又はインターネットなどのネットワークを経由して他のシステムと信号を介して相互作用する、１つのコンポーネントからのデータ）。
【００１４】
コンピュータ実行可能コンポーネントは、例えば、ＡＳＩＣ（特定用途向け集積回路）、ＣＤ（コンパクト・ディスク）、ＤＶＤ（ディジタル・ビデオ・ディスク）、ＲＯＭ（リード・オンリー・メモリ）、フロッピー・ディスク、ハード・ディスク、ＥＥＰＲＯＭ（電気的消去可能リード・オンリー・メモリ）、メモリ・スティック又は他の記憶装置を含むが、これらに限定されない非一時的コンピュータ可読媒体に、請求された主題に従って記憶することができる。
【００１５】
本明細書に記載のシステム及び技術は、ストレージが異なるプラットフォームにわたって提供され、共有されるクラウド・コンピューティング環境において適用可能であり、特に有用である。クラウド・コンピューティングとは、コンピューティング・リソースとその基礎となる技術的アーキテクチャ（例えば、サーバ、ストレージ、ネットワーク）との間に抽象化を提供するコンピューティング能力を意味し、最小限の管理努力又はサービス・プロバイダとの相互作用で迅速にプロビジョニング及びリリースすることができる構成可能なコンピューティング・リソースの共有プールへの、便利でオンデマンドなネットワーク・アクセスを可能にする。「クラウド（ｃｌｏｕｄ）」という用語は、ネットワーク、例えば、インターネットを指すことを意図し、クラウド・コンピューティングは、共有リソース、例えば、ソフトウェア及び情報を、公益事業のように、オンデマンドで利用可能にすることを可能にする。
【００１６】
典型的なクラウド・コンピューティング・プロバイダは、他のＷｅｂサービス又はＷｅｂブラウザのようなソフトウェアからアクセスされる共通のビジネス・アプリケーションをオンラインで提供し、一方、ソフトウェア及びデータはサーバにリモートで記憶される。クラウド・コンピューティング・アーキテクチャは、アプリケーション・サービスを提供するために階層化アプローチ（ｌａｙｅｒｅｄ  ａｐｐｒｏａｃｈ）を使用する。第１のレイヤは、クライアント・コンピュータで実行されるアプリケーション・レイヤである。この例では、アプリケーションはクライアントがクラウド経由でストレージにアクセスできるようにする。
【００１７】
アプリケーション層の後には、クラウド・プラットフォームとクラウド・インフラストラクチャがあり、続いて、クラウド固有のサービス用に設計されたハードウェアとコンピュータ・ソフトウェアを含む「サーバ」層がある。本明細書に記載されるストレージ・システムは、ストレージ・サービスを提供するためのサーバ層の一部であってもよい。
【００１８】
高レベルでは、本開示のファイル・システムは、ファイル・システム・オブジェクトを編成し、ファイル・システム・オブジェクトにアクセスし、ファイル・システムの階層的名前空間を維持するために使用されるデータ構造及び方法／機能を含む。ファイル・システム・オブジェクトには、ディレクトリとファイルが含まれる。本開示は、オブジェクトベース・ストレージ及びＯＢＳにおけるオブジェクトに関係するので、本明細書では、用語「オブジェクト（ｏｂｊｅｃｔ）」のオーバーロード（ｏｖｅｒｌｏａｄｉｎｇ：多重定義）を低減するために、「ファイル・システム・オブジェクト（ｆｉｌｅ  ｓｙｓｔｅｍ  ｏｂｊｅｃｔ）」の代わりに、ファイル・システム・オブジェクトを「ファイル・システム・エンティティ（ｆｉｌｅ  ｓｙｓｔｅｍ  ｅｎｔｉｔｙ）」と呼ぶ。「オブジェクト（ｏｂｊｅｃｔ）」とは、１つ以上のＯＢＳプロトコルに準拠するデータ構造を指す。従って、本開示における「ｉｎｏｄｅオブジェクト」は、Ｕｎｉｘ（Ｒ）（登録商標）タイプのオペレーティング・システムのファイルを表すデータ構造ではない。本明細書で使用する「データ・コンテナ」という用語は、ファイル、ディレクトリ、又は構造化及び非構造化データを含む。データ・コンテナ及びファイルという用語は、本明細書全体を通じて互換的に使用される。
【００１９】
この記述は、「コマンド（ｃｏｍｍａｎｄ）」、「操作（ｏｐｅｒａｔｉｏｎ）」、「リクエスト（ｒｅｑｕｅｓｔ）」のような用語も使用することができる。これらの用語は、リクエストされたアクションの変形として使用することができるが、この記述は、リクエストされたアクションのプロトコル及びソース・ドメインと用語を整合させる。説明では、「ファイル・システム・コマンド（ｆｉｌｅ  ｓｙｓｔｅｍ  ｃｏｍｍａｎｄ）」又は「コマンド」を使用して、ファイル・システム・プロトコルによって定義され、ファイル・システム・クライアントから受信されるか又はファイル・システム・クライアントに送信されるリクエストされたアクションを指す。説明では、「オブジェクトベースの操作（ｏｂｊｅｃｔ−ｂａｓｅｄ  ｏｐｅｒａｔｉｏｎ）」又は「操作」を使用して、オブジェクトベース・ストレージ・プロトコルによって定義され、オブジェクト・ストレージ・バックト・ファイル・システムによって生成されるリクエストされたアクションを指す。説明では、「オブジェクト・ストレージ・リクエスト（ｏｂｊｅｃｔ  ｓｔｏｒａｇｅ  ｒｅｑｕｅｓｔ）」を使用して、特定のオブジェクトベース・ストレージ・プロトコル（例えば、Ｓ３）によって定義され、オブジェクトベース・ストレージ・システムから受信されるか又はオブジェクトベース・ストレージ・システムに送られるアクションを指す。
【００２０】
本開示の一態様では、オブジェクトベース・ストレージのための方法及びシステムが提供される。一例として、複数のデータ・コンテナを有するアーカイブ・データ・コンテナのメタデータ・オブジェクトを生成する方法が開示される。この方法は、アーカイブ・データ・コンテナ識別子、アーカイブ・データ・コンテナ内のデータ・コンテナの数、及びアーカイブ・データ・コンテナ内の各データ・コンテナの配置情報を使用して、アーカイブ・データ・コンテナに対する第１のメタデータ署名を生成することと、オブジェクトベース・ストレージにおける複数のデータ・コンテナのデータを記憶するために中間論理オブジェクトに複数のブロックを割り当てることと、中間論理オブジェクト内の複数のブロックの配置情報を有するペイロード署名の更新することと、第１のメタデータ署名及び更新されたペイロード署名をメタデータ・オブジェクト内に配置することであって、メタデータ・オブジェクトは、アーカイブ・データ・コンテナ内の特定のデータ・コンテナの位置情報を読み出すために使用される、配置することを含む。この方法は、アーカイブ・データ・コンテナ識別子、アーカイブ・データ・コンテナ内のデータ・コンテナの数、及びアーカイブ・データ・コンテナ内の各データ・コンテナの配置情報を使用してアーカイブ・データ・コンテナのための第１のメタデータ署名を生成するステップと、複数のデータ・コンテナのためのデータをオブジェクトベースの記憶装置に記憶するために中間論理オブジェクトに複数のブロックを割り当てるステップと、中間論理オブジェクト内の複数のブロックの配置情報と共にペイロード署名を更新するステップと、メタデータ・オブジェクト内に第１のメタデータ署名及び更新されたペイロード署名を配置するステップと、を含み、メタデータ・オブジェクトは、アーカイブ・データ・コンテナ内の特定のデータ・コンテナのための位置情報を検索するために使用される。
【００２１】
概要（Ｏｖｅｒｖｉｅｗ）
【００２２】
１つの態様において、本開示は、アーカイブされたデータを効率的に記憶し、ＯＢＳからそれをリストアするためのコンピューティング技術を提供する。コンピューティング技術は、アーカイブされたデータを追跡するためにメタデータ・オブジェクトを効率的に使用し、特定のデータ・コンテナをリストアするためにメタデータ・オブジェクトを使用する。
【００２３】
図１は、本開示の一態様における、オブジェクトベース・ストレージ（ＯＢＳ）システムへのファイル・システム・プロトコル・アクセスを提供するストレージ環境１００を示す。ストレージ環境１００は、様々な装置、媒体及び通信プロトコルを用いてオブジェクトベース・ストレージ１２０にアクセスするＯＢＳクライアント１２２及びファイル・システム・クライアント１０２を含んでもよい。オブジェクトベース・ストレージ１２０は、ハード・ディスク・ドライブ及び／又はソリッド・ステート・ドライブ（ＳＳＤ）デバイス（図示せず）のようなストレージ・ハードウェア・デバイスからのデータにアクセスする１つ以上のストレージ・サーバ（図示せず）を含むことができる。ストレージ・サーバは、リプレゼンテーション・ステート・トランスファー（ＲＥＳＴ）ベースのインターフェース又は（ＲＥＳＴｆｕｌインターフェース）及びシンプル・オブジェクト・アクセス・プロトコル（ＳＯＡＰ）のようなＷｅｂサービス・インターフェースを経由して、ワイド・エリア・ネットワーク（ＷＡＮ）１１０を介してクライアント・ストレージ・リクエストをサービスする。
【００２４】
ＯＢＳクライアント１２２は、ＷＡＮ１１０を介してオブジェクト・ストレージ１２０に比較的直接接続するかもしれない。ＯＢＳクライアント１２２は、例えば、オブジェクトベース・ストレージ・アイテム（すなわち、オブジェクト）にアクセスするためにＷｅｂサービス・コールを使用するクラウド・サービス・クライアント・アプリケーションであってもよい。ＯＢＳクライアント１２２は、例えば、ＲＥＳＴｆｕｌ［“ＲＥＳＴ”］プロトコルに基づく直接コール（ｄｉｒｅｃｔ  ｃａｌｌｓ）を使用して、オブジェクト・ストレージ１２０内のオブジェクトにアクセスすることができる。「クライアント」としての参照は、ＯＢＳクライアント１２２及び／又はファイル・システム・クライアント１０２のいずれかが、他のサーバとのファイル共有構成で構成される場合、「サーバ」であり得るので、説明の焦点に対して相対的であることに留意されたい。ＯＢＳクライアント１２２とは異なり、ファイル・システム・クライアント１０２は、基礎となるＵｎｉｘ（Ｒ）スタイル・ファイル・システムによってサポートされるデータベース・アプリケーションなどのファイル・システム・アプリケーションを含む。ファイル・システム・クライアント１０２は、ＮＡＳアーキテクチャに共通のファイル・システムベースのネットワーク・プロトコルを利用して、階層的な方法で構成されたファイル及びディレクトリなどのファイル・システム・エンティティにアクセスする。例えば、ファイル・システム・クライアント１０２は、ネットワーク・ファイル・システム（ＮＦＳ）又はコモン・インターネット・ファイル・システム（ＣＩＦＳ）プロトコルを利用することができる。
【００２５】
１つの態様において、ストレージ環境１００は、リプリケーション・エンジン（ｒｅｐｌｉｃａｔｉｏｎ  ｅｎｇｉｎｅ）１３０を含む。リプリケーション・エンジン１３０は、１つ以上のユーザ・ファイルを有するアーカイブ・ファイルを生成する。アーカイブ・ファイルは、ＯＢＳブリッジ１１８に提供され、アーカイブ・データ・ファイル１２６としてオブジェクト・ストレージ１２０に記憶される。ストレージ・スペースを効率的に使用するために、アーカイブ・データ・ファイルのデータは、重複排除（ｄｅｄｕｐｌｉｃａｔｉｏｎ）及び圧縮（ｃｏｍｐｒｅｓｓｉｏｎ）を使用して記憶されてもよい。データの重複排除により、情報の記憶に使用する記憶領域の量が少なくなる。典型的には、大部分のストレージ・システムは、多くのデータの重複コピーを含む。例えば、同じデータ・コンテナ／ブロックを複数の異なる場所に保存してもよいし、同一でないかもしれない２つ以上のデータ・コンテナが同じデータを含んでもよい。重複排除は、データのバージョンを１つだけ保存し、他のコピーを保存されたコピーに戻すポインタで置換することによって、余分なコピーを除去する。
【００２６】
一態様では、ＯＢＳ１１８は、アーカイブされたデータ１２６でＯＢＳ１２０に記憶されたメタデータ・オブジェクト１２４を管理するメタデータ・モジュール１２３を含む。重複排除エンジン１１９は、アーカイブ・ファイル・データをオブジェクト・ストレージ１２０に記憶するために使用されるハッシュ・ルックアップ・テーブル１１９Ａを維持する。セキュリティ・エンジン１２５は、アーカイブ・ファイル・データ及び／又はメタデータ・オブジェクト１２４を暗号化するために使用される。圧縮／解凍モジュール１２１は、オブジェクト・ストレージ１２０に記憶された情報を圧縮及び解凍するために使用される。
【００２７】
特定のユーザ・ファイルをリストアするために、複数のリストア・ノード１３２Ａ〜１３２Ｎ（１３２と呼ぶ）が提供される。リストア・ノード１３２は、特定のファイルをリストアするためにメタデータ・オブジェクト１２４をダウンロードするリストア・ライブラリ１３４Ａ〜１３４Ｎを実行することができる。リストア・ノードは別々に示されるが、リストア・ライブラリ機能は、任意の他のコンピュータ装置のハードウェア／ソフトウェアに組み込まれてもよいことは注目に値する。メタデータ・オブジェクト１２４の生成及び特定のファイルのリストアの詳細は、図２〜図５に関して以下に詳細に提供される。
【００２８】
１つの態様において、ストレージ環境１００は、また、ファイル・システム・クライアント１０２がオブジェクト・ストレージ１２０にアクセスし、利用することができるブリッジ及びＮＡＳサーバ・サービスを提供するＮＡＳゲートウェイ１１５を含むことができる。リプリケーション・エンジン１３０がＮＡＳゲートウェイ１１５の一部であってもよいことは注目に値する。一態様では、ＮＡＳゲートウェイ１１５は、仮想ファイル・システム（ＶＦＳ）スイッチ１１２及びＯＢＳブリッジ１１８のようなハードウェア及びソフトウェア処理機能を含む。ＶＦＳスイッチ１１２は、ファイル・システム・クライアント１０２からファイル・システム・コマンドを受信し、ファイル・システム・クライアント１０２に応答を送信するためのプロトコル及び持続的な名前空間コヒーレンスを確立する。
【００２９】
ＯＢＳ１１８は、スタンドアロンのコンピュータ装置／システムとして実装されてもよく、本開示の様々な態様は、ゲートウェイ１１５の一部であるＯＢＳ１１８に限定されないことは、注目に値する。
【００３０】
ＯＢＳブリッジ１１８はまた、オブジェクト・ストレージ・バックト・ファイル・システム（ＯＳＦＳ）１１４及び関連するＯＳＦＳキャッシュ１１６を含んでもよい。ＯＳＦＳ１１４とＯＳＦＳキャッシュ１１６は共に、オブジェクト・ストレージ１２０内にオブジェクトを生成し管理し、階層ファイル・システム名前空間１１１（「ファイル・システム名前空間（ｆｉｌｅ  ｓｙｓｔｅｍ  ｎａｍｅｓｐａｃｅ）」）をファイル・システム・クライアント１０２に収容する。ファイル・システム名前空間１１１の例は、３つのディレクトリー・レベルにわたって分散された、いくつかのファイル及びディレクトリー・エンティティを含む。最上位のルート・ディレクトリｒｏｏｔには、子ディレクトリｄｉｒ１とｄｉｒ２が含まれる。ディレクトリｄｉｒ１は、子ディレクトリｄｉｒ３とファイルｆｉｌｅ１を含む。ディレクトリｄｉｒ３はファイルｆｉｌｅ２とｆｉｌｅ３を含む。
【００３１】
ＯＳＦＳ１１４は、ファイル・システム・コマンドのための中間のＯＢＳプロトコルインターフェースを提供する方法でファイル・システム・コマンドを処理し、同時に、ＯＢＳブリッジ・トランザクションで使用され、バックエンド・オブジェクト・ストレージ１２０に持続的に記憶されるファイル・システム名前空間、例えばファイル・システム名前空間１１１を生成する。ファイル・システム名前空間を作成するために、ＯＳＦＳ１１４は、各ファイル・システム・エンティティ（例えば、ファイル又はディレクトリ）に対して、名前空間オブジェクト及び対応するｉｎｏｄｅオブジェクトを生成する。トランザクション・プロトコル・ブリッジングを有効にするために、ＯＳＦＳ１１４は、各ファイル・システム・コマンドに対応するオブジェクトベース操作の関連するグループを生成し、ファイル・システム・エンティティ構造毎にデュアル・オブジェクトを適用する。
【００３２】
ファイル・システム・クライアント１０２からのようなファイル・システム・コマンドは、ＶＦＳスイッチ１１２によって受信され、ＯＳＦＳ１１４に転送される。ＶＦＳスイッチ１１２は、ファイル・システム・コマンドを部分的に処理し、結果をＯＳＦＳ１１４に渡すことができる。例えば、ＶＦＳスイッチ１１２は、ファイル・システム・エンティティの名前を、ファイル・システム・コマンドに示されたファイル・システム・エンティティに対応するｉｎｏｄｅ番号に解決するために、それ自身のディレクトリ・キャッシュ及びｉｎｏｄｅキャッシュにアクセスしてもよい。この情報は、ファイル・システム・コマンドと共にＯＳＦＳ１１４に渡すことができる。
【００３３】
ＯＳＦＳ１１４は、ファイル・システム・コマンドを処理して、１つ以上の対応するオブジェクトベース操作を生成する。例えば、ＯＳＦＳ１１４は、ファイル・システム・コマンドを一緒に実行する１つ以上のオブジェクトベース操作のグループを生成するように構成された複数のファイル・システム・コマンド固有のハンドラを含むことができる。このようにして、ＯＳＦＳ１１４は、受信したファイル・システム・コマンドを、複数のオブジェクトベース操作を含むオブジェクト中心のファイル・システム・トランザクションに変換する。ＯＳＦＳ１１４は、ファイル・システム・エンティティではなくオブジェクトを使用してファイル・システム・コマンドを実行するｎ個のオブジェクトベース操作の集合を決定する。オブジェクトベース操作は、例えば、キー値パラメータの指定など、ＯＢＳのセマンティックに準拠する定義されたメソッド又は関数である。ＯＳＦＳ１１４は、ファイル・システム・コマンドのパラメータ及びＶＦＳスイッチ１１２によって提供される任意の他の情報に従って、オブジェクトベースの操作をインスタンス化する。ＯＳＦＳ１１４は、オブジェクトベースの操作インスタンスとのファイル・システム・トランザクションを形成する。ＯＳＦＳ１１４は、トランザクションをＯＳＦＳキャッシュ１１６にサブミットし、他のノードがＯＳＦＳ１１４をホストするノード（例えば、仮想機械又は物理機械）のために引き継いだ場合に再生可能なトランザクション・ログ（図示せず）にトランザクションを記録することができる。
【００３４】
ファイル又はディレクトリの作成を指定するファイル・システム・コマンドの受信に対する応答のように、ファイル・システム・エンティティを作成するために、ＯＳＦＳ１１４は、ファイル・システム・エンティティの新しいｉｎｏｄｅ番号を決定する。ＯＳＦＳ１１４は、ｉｎｏｄｅ番号を整数値からＡＳＣＩＩ値に変換することができ、ＡＳＣＩＩ値は、ファイル・システム・トランザクションを形成するために使用されるオブジェクトベース操作のパラメータ値として使用することができる。ＯＳＦＳ１１４は、第１のオブジェクト・ストレージ操作をインスタンス化し、ファイル・システム・エンティティの決定されたｉｎｏｄｅ番号から導出された第１のオブジェクト・キーと、ファイル・システム・エンティティの属性を示すメタデータとを有する第１のオブジェクトを生成する。ＯＳＦＳ１１４は、第２のオブジェクト・ストレージ動作をインスタンス化して、第２のオブジェクト・キーと、第２のオブジェクト・キーを第１のオブジェクト・キーに関連付けるメタデータとを有する第２のオブジェクトを作成する。第２のオブジェクト・キーには、ファイル・システム・エンティティの親ディレクトリのｉｎｏｄｅ番号と、ファイル・システム・エンティティの名前も含まれる。
【００３５】
図１に示されるように、オブジェクト・ストレージ１２０は、図示された階層ファイル・システム名前空間１１１に対応する結果として生じる名前空間オブジェクト及びｉｎｏｄｅオブジェクトを含む。名前空間オブジェクトとｉｎｏｄｅオブジェクトは、ソフトウェア・スタックを使って流れるコマンド、操作、及びリクエストに起因する。図示されるように、ファイル・システム名前空間１１１内の各ファイル・システム・エンティティは、名前空間オブジェクト及びｉｎｏｄｅオブジェクトを有する。たとえば、最上位ディレクトリルートは、名前空間オブジェクトＮＳＯｒｏｏｔによって関連付けられる（指される）ルートｉｎｏｄｅオブジェクトＩＯｒｏｏｔによって表される。名前空間構成に従って、ｉｎｏｄｅオブジェクトＩＯｒｏｏｔは、子ディレクトリ（ｄｉｒ１及びｄｉｒ２）の名前空間オブジェクトのそれぞれとも関連付けられる。名前空間オブジェクトとｉｎｏｄｅオブジェクトの複数のアソシエーションは、ＯＳＦＳ１１４が実際にルートからターゲットへ移動する必要はないが、ファイル・システム・クライアントが階層ファイル・システムのような方法で名前空間を移動することを可能にする。ＯＳＦＳはターゲットの親からのみターゲットに到着し、ルートからのスキャン（ｔｒａｖｅｒｓｉｎｇ）を避ける。
【００３６】
ＯＳＦＳキャッシュ１１６は、ＯＳＦＳ１１４から受信したファイル・システム・トランザクションを、ローカルに記憶されたデータで満たそうとする。ローカルに記憶されたデータでトランザクションが満たされない場合、ＯＳＦＳキャッシュ１１６は、トランザクションを形成するオブジェクトベースの操作インスタンスをオブジェクト・ストレージ・アダプタ１１７に転送する。ＯＳＡ１１７は、操作に対応し、Ｓ３のような特定のオブジェクト・ストレージ・プロトコルに適合するオブジェクト・ストレージ・リクエストを生成することによって応答する。
【００３７】
リクエストに応答して、オブジェクト・ストレージ１２０は、ＯＳＡ１１７によって処理され、ＯＢＳブリッジ１１７を通って伝搬する、応答を提供する。より具体的には、ＯＳＦＳキャッシュ１１６は、ＯＳＦＳ１１４に通信されるトランザクション応答を生成する。ＯＳＦＳ１１４は、トランザクション・ログを更新して、トランザクション応答に対応するトランザクションを削除することができる。ＯＳＦＳ１１４は、また、トランザクション応答に基づいてファイル・システム・コマンド応答を生成し、その応答をＶＦＳスイッチ１１２を介してファイル・システム・クライアント１０２に戻す。
【００３８】
ネイティブ及びブリッジ対応のアクセスを可能にする方法でファイル・システム名前空間のアクセシビリティを提供し、記述された態様は、地理的分散クライアントに対して名前空間の移植性（ｐｏｒｔａｂｉｌｉｔｙ）及び同時並行性（ｃｏｎｃｕｒｒｅｎｃｙ）を提供する。オブジェクト・ストア１２０は、ファイル・データ及びそれに関連するメタデータとともに、図１に示されるｉｎｏｄｅ及び名前空間オブジェクトのストレージを介して名前空間の持続的表現を記憶する。この機能は、他の同様に構成されたＯＢＳブリッジが、同じバックエンド・オブジェクト・ストアに取り付け／マウントし、同じスキーマに従い、名前空間オブジェクトにアクセスし、それによって、それぞれのファイル・システム・クライアントと同じファイルを共有できるようにする。従って、ＯＢＳブリッジ構成は、複数のサイトを横断する複数のクライアントに共通のファイル・システム名前空間を同時に提供するために、マルチノード（マルチサイトを含む）アプリケーションに適用することができる。従って、開示の態様は、複数の対応するＮＡＳゲートウェイを確立するために、複数のＯＢＳブリッジをクラスタ構成でグループ化することを含み得る。
【００３９】
メタデータ・オブジェクト１２４：図２は、バックアップ・アーカイブ・データ・コンテナ（又はバックアップ・アーカイブ・ファイル）からの単一のデータ・コンテナ・リストアに使用され得るメタデータ・オブジェクト１２４を効率的に生成及び記憶するための新規なコンピューティング技術２００を示す。バックアップ・アーカイブ・データ・コンテナは、ユーザ定義ファイル（ユーザ・ファイルと呼ばれる）を含むが、単一ファイルとして書き込まれる、ユーザ・データの集合である。一例として、バックアップ・アーカイブ・データ・コンテナは、暗号化、圧縮及び重複排除を使用して、オブジェクトベース・ストレージ１２０にデータを記憶する。
【００４０】
本明細書に開示された革新的なコンピューティング技術は、バックアップ・アーカイブ・ファイルを検査し、バックアップ・アーカイブ・ファイル内の各ユーザ・ファイルのオフセット及びサイズを理解する。次いで、この情報は、各バックアップ・アーカイブ・ファイルのバックアップ・データと共に、オブジェクト・ストレージ１２０内のメタデータ・オブジェクト１２４の一部として記憶される。メタデータ・オブジェクト１２４は、メタデータの記憶及び検索がリソース集約的でないように、効率的な圧縮技術を使用してオブジェクト・ストレージ１２０に記憶される。
【００４１】
リストア・ノード１３２において、メタデータ・オブジェクト１２４は、リストア・ライブラリ・モジュール１３４によって読み取られ、データを復号し、圧縮解除し、記憶されたデータアーカイブされたデータのオリジナル・フォーマットに組み立てた後、任意のファイルの目標のリストアを可能にする。開示された技術のリストア・プロセスは、最小のネットワーク帯域幅を使用し、複数のノードがリストア・プロセスの負荷を共有できるので、より良いパフォーマンスを提供する。
【００４２】
次に図２を参照すると、例として、２つのユーザ・ファイルＵ１  ２０２Ａ及びＵ２  ２０２Ｂは、Ａ１として識別され、リプリケーション・エンジン１３０によって２０４としてラベル付けされたアーカイブ・ファイルに集約される。アーカイブ・ファイルがＯＢＳ１１８によって受信されると、重複排除エンジン１１９は、Ａ１内のＵ１及びＵ２の配置情報を取得する。たとえば、Ｕ１の長さはＬ１で、Ｕ２の長さはＬ２と仮定する。Ｏ１がＡ１内のＵ１のオフセットであり、Ｏ２がＡ１内のＵ２のオフセットである場合、ユーザ・ファイルのメタデータは、［＜Ｏ１，Ｌ１＞，＜Ｏ２，Ｌ２＞］で表すことができる。次に、バックアップ・アーカイブ・ファイルＡ１の初期メタデータ署名が決定される。初期メタデータ署名はマップであり、キーはユーザ・ファイルの名前であり、値はＡ１内のユーザ・ファイルの配置情報である。従って、Ａ１の初期メタデータ署名は、以下のように表すことができる。
【００４３】
Ｕ１＝＞＜Ｏ１，Ｌ１＞
Ｕ２＝＞＜Ｏ２，Ｌ２＞
【００４４】
前述の初期署名は、＜ユーザ・ファイル数＞、＜ユーザ・ファイル１の名前＞、＜ユーザ・ファイル１の配置情報＞、＜ユーザ・ファイル２の名前＞、＜ユーザ・ファイル２の配置情報＞、．．．．、＜ユーザ・ファイルｎの名前＞、＜ユーザ・ファイルｎの配置情報＞に基づいて正規化されたシーケンスに変換される。前述の正規化シーケンスを使用し、図２の例を続けて、Ａ１のためのメタデータ署名は、メタデータ・モジュール１２３によって［２，Ｕ１，Ｏ１，Ｌ１，Ｕ２，Ｏ２，Ｌ２］として表すことができる。
【００４５】
アーカイブ・ファイルＡ１内のデータは、次に、ｂ１  ２０６Ａ及びｂｎ  ２０６Ｎとして示される異なるブロックに分割される。任意のブロックが記憶される前に、重複排除エンジン１１９は、キー値マップを記憶するルックアップ・テーブル１１９Ａに対してデータ・ブロックをチェックする。ルックアップ・テーブル１１９Ａに対するキーは、データ・ブロックとブロック識別子のチェックサムに基づくかもしれないデータ・ブロックの署名である。一例として、重複排除エンジン１１９によって生成され、維持されるルックアップ・テーブル１１９Ａは、以下のように表すことができる。
Ｈａｓｈ（Ｂ１）＝＞Ｂ１
Ｈａｓｈ（Ｂ２）＝＞Ｂ２
Ｈａｓｈ（Ｂ３）＝＞Ｂ３
【００４６】
ルックアップ・テーブルが一致する場合、次いで、ブロックＩＤ参照カウントは更新される。これは、ブロックが物理的なストレージに一度だけ記憶されるが、複数の論理エンティティによって参照されることを保証する。
【００４７】
一致しない場合、ルックアップ・テーブル１１９Ａに新しいエントリが作成される。最初にブロックｂ１とｂ２はルックアップ・テーブルでヒットを生じ、残りのブロック｛ｂ３．．ｂｎ｝はヒットを生じないと仮定する。生成されなかったブロックは、Ｂ４，Ｂ５，．．．，Ｂｎのような新しいブロックとして作成され、更新されたルックアップ・テーブルは、以下のように表される。
Ｈａｓｈ（Ｂ１）＝＞Ｂ１
Ｈａｓｈ（Ｂ２）＝＞Ｂ２
Ｈａｓｈ（Ｂ３）＝＞Ｂ３
Ｈａｓｈ（Ｂ４）＝＞Ｂ４
Ｈａｓｈ（Ｂ５）＝＞Ｂ５
｜
｜
Ｈａｓｈ（Ｂｎ）＝＞Ｂｎ
【００４８】
上記に基づいて、Ａ１のペイロード署名は、Ｂ１，Ｂ２，Ｂ３，Ｂ４，Ｂ５，．．．．，Ｂｎによって表すことができる。バックアップ・アーカイブ・ファイルＡ１の更新された署名は、バックアップＩＤ、メタデータ署名、及びデータ署名によって表すことができる。例えば、図２の例を用いて、更新された署名は、Ａ１，２，Ｕ１，Ｏ１，Ｌ１，Ｕ２，Ｏ２，Ｌ２，Ｂ１，Ｂ２，Ｂ３，Ｂ４，Ｂ５，．．．，Ｂｎによって表すことができる。
【００４９】
記憶効率をさらに改善するために、種々のデータ・ブロックは、「ブロブ（ｂｌｏｂｓ）」とも呼ばれるブロックにさらに集約される。例えば、ブロックｂ１、ｂ２及びｂ３は、圧縮エンジン１２１によって圧縮され、例えば、対称暗号キーＫを使用することによって、セキュリティ・エンジン１２５によって暗号化される。圧縮及び暗号化されたブロック２０８Ａ〜２０８Ｃは、次いで、ブロブ２１０内に配置されるか又はブロブ２１０に割り当てられる。ブロブは、一意的に識別される論理オブジェクトであり、圧縮／暗号化データの１つ以上のブロックを含む。ブロブ内の各圧縮／暗号化ブロックの配置は、Ｂ１，Ｂ２−ＢｎからＢＢ１，ＰＢ１，ＳＺＢ１，ＰＢ２，ＳＺＢ２，ＢＢ２，ＰＢ３，ＳＺＢ３，ＰＢ４，ＳＺＢ４，．．．．ＢＢｋ、ＰＢｎ、ＳＺＢｎへのペイロード署名を更新するために使用され、ここで、ＢＢ１＝ブロブ＃１に対するブロブＩｄ、ＰＢ１＝ＢＢ１内のブロックＢ１のオフセット及び長さを含むブロック内の配置情報、ＳＺＢ１＝ブロックＢ１の正規未処理（ｃａｎｏｎｉｃａｌ  ｕｎｐｒｏｃｅｓｓｅｄ）（非圧縮及び非暗号化を意味する）サイズなどである。
【００５０】
アーカイブ・ファイルの更新されたメタデータ署名は、Ａ１，２，Ｕ１，Ｏ１，Ｌ１，Ｕ２，Ｏ２，Ｌ２，ＢＢ１，ＰＢ１，ＳＺＢ１，ＰＢ２，ＳＺＢ２，ＢＢ２，ＰＢ３，ＳＺＢ３，ＰＢ４，ＳＺＢ４，．．．ＢＢｋ，ＰＢｎ，ＳＺＢｎによって表すことができる。
【００５１】
次に、前述のメタデータ・シーケンスは、圧縮アルゴリズムを使用して圧縮エンジン１２１によって圧縮され、さらにスペースを節約し、上述の同じ暗号キーＫを使用して暗号化される。次いで、圧縮及び暗号化されたメタデータは、オブジェクト・ストレージ１２０に記憶されるメタデータ・オブジェクト１２４内に記憶される。オブジェクトの名前、例えば、Ｃ１（２１２として示される）は、オブジェクトの中身のチェックサムを取ることによって得られる。
【００５２】
図２は、例として、２つのメタデータ・オブジェクトＣ１  ２１２及びＣ２  ２１４を示す。Ｃ１は、１つのアーカイブ・ファイルの圧縮／暗号化メタデータが含み、Ｃ２は、別のアーカイブ・ファイルの署名が含む。データ・ブロックはまた、ブロブ２１６及び２１８内に圧縮され、記憶される。
【００５３】
処理フロー：図３は、本開示の一態様による、メタデータ・オブジェクト１２４を生成するためのプロセッサ、実行可能な処理フロー３００を示す。
【００５４】
プロセス３００は、図２の表記／参照番号に関して以下に説明する。プロセス３００は、ＯＢＳ１１８及びリプリケーション・エンジン１３０が初期化され、作動されると、ブロックＢ３０２で開始する。ブロックＢ３０４において、ＯＢＳ１１８は、図２に示され上述されたように、複数のユーザ・ファイル、例えば、ファイルＵ１及びＵ２を有するＡ１、を有するアーカイブ・ファイルを受信する。
【００５５】
ブロックＢ３０６で、アーカイブ・ファイルの初期メタデータ署名が、メタデータ・モジュール１２３によって生成される。初期メタデータ署名は、アーカイブ・ファイル内のファイル数、ファイル識別子、アーカイブ・ファイル内のユーザ・ファイルの配置情報に基づく。Ａ１、Ｕ１及びＵ２に関して上述したように、初期メタデータ署名は、［２、Ｕ１、Ｏ１、Ｌ１、Ｕ２、Ｏ２、Ｌ２］として表すことができる。
【００５６】
ブロックＢ３０８において、重複排除エンジン１１９は、ユーザ・ファイル内のペイロードを複数のブロック、例えば、ｂ１，ｂ２，ｂ３．．ｂｎ［図２参照］に分ける。ブロック・サイズは、固定又は可変であってもよい。
【００５７】
ブロックＢ３１０で、各ブロックに対するハッシュ署名（例えば、Ｂ１、Ｂ２．．Ｂｎ［図２］）が、重複排除エンジン１１９によって生成される。ハッシュ署名は、各ブロックのデータ内容のチェックサムに基づいてもよい。
【００５８】
ブロックＢ３１２において、重複排除エンジン１９９は、キー値マップを記憶するハッシュ・ルックアップ・テーブル１１９Ａで、各データ・ブロックのハッシュ署名を検証し、ここで、キーは、ブロック識別子に関連付けられた各ブロックの署名である。ブロックのブロック識別子がルックアップ・テーブル１１９Ａに既に存在する場合、そのブロックの参照カウントが更新される。ブロック識別子がルックアップ・テーブル１１９Ａに存在しない場合、ルックアップ・テーブル１１９Ａは、新しいブロック署名及びブロック識別子で更新される。
【００５９】
ブロックＢ３１４で、ペイロード署名は、最初にハッシュ署名、すなわちＢ１−Ｂｎで更新される。アーカイブ・ファイルＡ１の署名は、次に、バックアップＩＤ、メタデータ署名、及び更新されたペイロード署名、例えば、Ａ１，２，Ｕ１，Ｏ１，Ｌ１，Ｕ２，Ｏ２，Ｌ２，Ｂ１，Ｂ２，Ｂ３，Ｂ４，Ｂ５，．．．，Ｂｎを含むように更新される。データ・ブロックを「そのまま（ａｓ−ｉｓ）」記憶することは、リソース集約的であり得る。従って、ブロックＢ３１６で、ブロックは圧縮エンジン１２１によって圧縮及び暗号化され、セキュリティ・エンジン１２５によって暗号化される。１つの態様において、暗号化は、対称鍵、Ｋを用いて実行される。圧縮及び暗号化されたブロックは、次に、ブロブとして上述及び説明した別の論理構造に割り当てられる（図２において、２１０、２１６及び２１８として示される）。次に、ペイロード署名は、各ブロブ内の圧縮／暗号化ブロックの配置情報を含むようにブロックＢ３１８で変換／更新される。次に、アーカイブ・ファイルの完全な署名が更新され、Ａ１，２，Ｕ１，Ｏ１，Ｌ１，Ｕ２，Ｏ２，Ｌ２，ＢＢ１，ＰＢ１，ＳＺＢ１，ＰＢ２，ＳＺＢ２，ＢＢ２，ＰＢ３，ＳＺＢ３，ＰＢ４，ＳＺＢ４，．．．．ＢＢｋ，ＰＢｎ，ＳＺＢｎとして表すことができる。
【００６０】
ブロックＢ３２０で、完全な署名は、同じ暗号化キー、Ｋで圧縮／暗号化される。圧縮／暗号化された署名は、オブジェクト、例えば、Ｃ１  ２１２、Ｃ２  ２１４内に記憶される［図２］。オブジェクトＣ１／Ｃ２は、図４に関して後述するように、特定のファイルをリストアするために使用することができるメタデータ・オブジェクト１２４として記憶される。
【００６１】
図４は、本開示の一態様による、オブジェクト・ストレージ１２０においてアーカイブされ記憶されるユーザ・ファイルをリストアするためのプロセス４００を示す。プロセス４００は、図２及び図３に関して上述したように、メタデータ・オブジェクト１２４がアーカイブされたファイル１２６のために作成された後、ブロックＢ４０２で始まる。
【００６２】
ブロックＢ４０４で、特定のファイルをリストアするリクエストを受信する。リクエストは、リストア・ライブラリ１３４を実行するリストア・ノード１３２によって受信されてもよい［図１を参照］。
【００６３】
リクエストに応答して、ブロックＢ４０６において、リストア・ライブラリ１３４は、ユーザ・ファイル、例えば、Ｕ２を含むアーカイブ・ファイル（例えば、Ｃ１  ２１２）の完全な署名を含むメタデータ・オブジェクト１２４をダウンロードする。
【００６４】
ブロックＢ４０８において、メタデータ・オブジェクトは、上述のように、メタデータ・オブジェクトを暗号化するために使用されたキーを使用して、リストア・ライブラリ１３４によって解凍及び復号される。
【００６５】
ブロックＢ４１０で、アーカイブ・ファイルＡ１におけるユーザ・ファイルＵ２の配置、例えば、図２に関して上述した［Ｏ２、Ｌ２］が決定される。次いで、ファイルＵ２に関連付けられたブロブが識別される。識別されたブロブ内のブロックは、ブロックＢ４１４で決定される。次いで、ブロックＢ４１６において、ブロックは、オブジェクト・ストレージ１２０からＯＢＳ１１８によって読み取られ、リストア・ライブラリ１３４に提供される。次に、リクエストされたブロックが要求側に提供される。
【００６６】
本明細書に開示された技術は、コンピューティング技術及びクラウドベース・ストレージ・システムを改善する。データは、オブジェクト・ストレージで効率的に複製され、詳細に上述されたようにメタデータ・オブジェクトを使用してリストアされる。
【００６７】
処理システム：図５は、１つの態様に従って使用され得る処理システム５００のアーキテクチャの一例を示す高レベルブロック図である。
【００６８】
処理システム５００は、リストア・ノード１３２、ＯＢＳ１１８、リプリケーション・エンジン１３０、ＮＡＳゲートウェイ１１５、ＦＳクライアント１０２、ＯＢＳクライアント１２２及び他のコンポーネントを表すことができる。本態様に関係のない、ある標準的かつ周知のコンポーネントは、図５には示されていないことに留意されたい。処理システム５００は、バス・システム５０５に接続された１つ以上のプロセッサ５０２及びメモリ５０４を含む。図５に示されるバス・システム５０５は、任意の１つ以上の別個の物理バス及び／又は適切なブリッジ、アダプタ、及び／又はコントローラによって接続されたポイント・ツー・ポイント接続を表す抽象概念である。従って、バス・システム５０５は、例えば、システム・バス、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バス、ハイパートランスポート又は業界標準アーキテクチャ（ＩＡＳ）バス、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）バス、ユニバーサル・シリアル・バス（ＵＳＢ）、又は電気電子技術者協会（ＩＥＥＥ）標準１３９４バス（「ファイアワイヤ」とも呼ばれる）を含むことができる。
【００６９】
プロセッサ５０２は、処理システム５００の中央処理ユニット（ＣＰＵ）であり、従って、全体の動作を制御する。ある態様では、プロセッサ５０２は、メモリ５０４に記憶されたソフトウェアを実行することによってこれを達成する。プロセッサ５０２は、１つ以上のプログラマブル汎用又は特殊目的マイクロプロセッサ、ディジタル信号プロセッサ（ＤＳＰｓ）、プログラマブル・コントローラ、特定用途向け集積回路（ＡＳＩＣｓ）、プログラマブル論理デバイス（ＰＬＤｓ）、又は同様なもの、又はそのようなデバイスの組み合わせであってもよく、又はそれらを含んでもよい。
【００７０】
メモリ５０４は、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリー・メモリ（ＲＯＭ）、フラッシュ・メモリ等の任意の形態、又はこのようなデバイスの組み合わせを表す。メモリ５０４は、処理システム５００のメイン・メモリを含む。命令５０６は、上述した図２〜図４の処理ステップを実装し、メモリ５０４からプロセッサ５０２内に存在し、プロセッサ５０２によって実行されてもよい。
【００７１】
また、バス・システム５０５を介してプロセッサ５０２に接続されるのは、１つ以上の内部マス・ストレージ装置５１０、及びネットワーク・アダプタ５１２である。内部マス・ストレージ装置５１０は、１つ以上の磁気又は光学ベースのディスクのような、不揮発性の方法で大量のデータを記憶するための任意の従来の媒体であってもよく、又は任意の従来の媒体を含んでもよい。ネットワーク・アダプタ５１２は、ネットワークを介してリモート装置（例えば、ストレージ・サーバ）と通信する能力を処理システム５００に提供し、ネットワークは、例えば、イーサネット・アダプタ、ファイバ・チャネル・アダプタ等であってもよい。
【００７２】
処理システム５００はまた、バス・システム５０５に接続された１つ以上の入出力（Ｉ／Ｏ）装置５０８を含む。入出力（Ｉ／Ｏ）装置５０８は、例えば、ディスプレイ装置、キーボード、マウス等を含み得る。
【００７３】
変形例（Ｖａｒｉａｔｉｏｎｓ）
【００７４】
フローチャートは、図面の理解を助けるために提供され、請求項の範囲を制限するために使用されるべきものではない。フローチャートは、請求項の範囲内で変化し得る動作例を示す。追加の操作が実行されることもあり、より少ない操作が実行されることもあり、並列して操作が実行されることもあり、異なる順序で操作が実行されることもありうる。フローチャート図及び／又はブロック図の各ブロック、及びフローチャート図及び／又はブロック図のブロックの組み合わせは、プログラム・コードによって実装可能であることが理解されよう。プログラム・コードは、汎用コンピュータ、特殊用途コンピュータ、又は他のプログラム可能機械又は装置のプロセッサに提供されてもよい。
【００７５】
理解されるように、開示の態様は、システム、方法又は１つ以上の機械可読媒体に記憶されたプログラム・コード／命令として具体化され得る。従って、態様は、ハードウェア、ソフトウェア（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェアとハードウェアの態様の組み合わせの形態をとることができ、これらはすべて、本明細書中で「回路」、「モジュール」又は「システム」と一般に呼ぶことができる。例示的な図中の個々のモジュール／ユニットとして提供される機能は、プラットフォーム（オペレーティング・システム及び／又はハードウェア）、アプリケーション・エコシステム、インターフェース、プログラマ・プリファレンス、プログラミング言語、アドミニストレータ・プリファレンスのいずれかに従って、異なるように構成することができる。
【００７６】
１つ以上の非一時的機械可読媒体の任意の組み合わせを利用することができる。機械可読記憶媒体は、例えば、プログラム・コードを記憶するために電子、磁気、光学、電磁、赤外、又は半導体技術のいずれか１つ又は組み合わせを使用するシステム、装置、又は機器であってもよいが、これらに限定されない。機械可読記憶媒体のより具体的な例としては、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリー・メモリ（ＲＯＭ）、消去可能プログラマブル・リード・オンリー・メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ（ＣＤ−ＲＯＭ）、光学記憶装置、磁気記憶装置、又はこれらの任意の適切な組み合わせを含む。本文書の文脈において、非一時的機械可読記憶媒体は、命令実行システム、装置、又は機器によって、又はそれに関連して使用されるプログラムを含むか、又は記憶することができる任意の有体媒体であり得る。非一時的機械可読記憶媒体は、機械可読信号媒体ではない。
【００７７】
機械可読信号媒体は、例えばベースバンドで、又は搬送波の一部として、その中に具体化された機械可読プログラム・コードを含む伝搬データ信号を含むことができる。このような伝搬信号は、電磁的、光学的、又はこれらの任意の適切な組み合わせを含むが、これらに限定されない、種々の形式のいずれでもよい。機械可読信号媒体は、機械可読記憶媒体ではなく、命令実行システム、装置、又は機器によって使用するための、又はこれらに関連する、プログラムを通信、伝搬、又は転送することができる任意の機械可読媒体であってもよい。
【００７８】
機械可読媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦ等を含むがこれらに限定されない、任意の適切な媒体、又は前記の任意の適切な組み合わせを使用して送信することができる。
【００７９】
開示の態様のための操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）プログラミング言語、Ｃ＋＋等のようなオブジェクト指向プログラミング言語、Ｐｙｔｈｏｎのような動的プログラミング言語、Ｐｅｒｌプログラミング言語又はＰｏｗｅｒＳｈｅｌｌスクリプト言語のようなスクリプト言語、及び「Ｃ」プログラミング言語又は類似のプログラミング言語のような従来の手続き型プログラミング言語を含む１つ以上のプログラミング言語の任意の組合せで書くことができる。プログラム・コードは、完全にスタンドアロンの機械上で実行することができ、複数の機械にわたって分散された方法で実行することができ、他の機械への結果の提供及び／又は他の機械からの入力の受け入れをしながら、１つの機械上で実行することができる。
【００８０】
プログラム・コード／命令はまた、機械に特定の方法で機能するように指示することができる非一時的機械可読媒体に記憶されてもよく、その結果、機械可読媒体に記憶された命令は、フローチャート及び／又はブロック図に指定された機能／動作を実行する命令を含む製品を生成する。
【００８１】
本開示の態様は、種々の実装及び実施を参照して説明されたが、これらの態様は例示的であり、請求項の範囲はそれらに限定されないことが理解されるであろう。一般に、本明細書に記載するオブジェクト・ストレージからデータ・コンテナをリストアする技術は、任意のハードウェア・システムと一貫性のある設備で実装することができる。多くの変更、修正、追加、及び改良が可能である。
【００８２】
複数インスタンスは、本明細書において単一インスタンスとして記載されるコンポーネント、操作又は構造のために提供されてもよい。最後に、種々のコンポーネント、操作及びデータ・ストレージ間の境界は、いくぶん任意であり、特定の操作は、特定の例示的な構成の文脈で説明された。機能性の他の割り当てが想定され、開示の範囲内に入り得る。一般に、例示の構成において別個のコンポーネントとして示される構造及び機能性は、組み合わせた構造又はコンポーネントとして実装されてもよい。同様に、単一のコンポーネントとして示される構造及び機能性は、別個のコンポーネントとして実装されてもよい。これら及び他の変更、修正、追加、及び改良は、本開示の範囲内に入り得る。
【要約】
オブジェクトベース・ストレージのための方法とシステムが提供される。一例として、複数のデータ・コンテナを有するアーカイブ・データ・コンテナのメタデータ・オブジェクトを生成する方法が開示される。この方法は、アーカイブ・データ・コンテナ識別子、アーカイブ・データ・コンテナ内のデータ・コンテナの数、及びアーカイブ・データ・コンテナ内の各データ・コンテナの配置情報を使用して、アーカイブ・データ・コンテナに対する第１のメタデータ署名を生成することと、オブジェクトベース・ストレージにおける複数のデータ・コンテナのデータを記憶するための複数のブロックを中間論理オブジェクトに割り当てることと、中間論理オブジェクト内の複数のブロックの配置情報を有するペイロード署名の更新することと、第１のメタデータ署名及び更新されたペイロード署名をメタデータ・オブジェクト内に配置することであって、メタデータ・オブジェクトは、アーカイブ・データ・コンテナ内の特定のデータ・コンテナの位置情報を読み出すために使用される、配置することを含む。【図１】
0006644960.tif 000002
【図２】
0006644960.tif 000003
【図３】
0006644960.tif 000004
【図４】
0006644960.tif 000005
【図５】
0006644960.tif 000006