(58)【調査した分野】(Int.Cl.,DB名)
アーカイブ・データ・コンテナ識別子、前記アーカイブ・データ・コンテナ内のデータ・コンテナの数、及び前記アーカイブ・データ・コンテナ内の各データ・コンテナの配置情報を使用して、複数のデータ・コンテナを有するアーカイブ・データ・コンテナに対する第1のメタデータ署名をプロセッサによって生成することと、
オブジェクトベース・ストレージにおいて前記複数のデータ・コンテナのデータを記憶するために中間論理オブジェクトに複数のブロックを前記プロセッサによって割り当てることと、
前記中間論理オブジェクト内の前記複数のブロックの配置情報を有するペイロード署名を前記プロセッサによって更新することと、
前記第1のメタデータ署名及び前記更新されたペイロード署名を記憶するためにメタデータ・オブジェクトを前記プロセッサによって使用することと、
前記データ・コンテナに対するリストア・リクエストに応答して、前記アーカイブ・データ・コンテナ内のデータ・コンテナの配置情報を、前記プロセッサによって、前記メタデータ・オブジェクトから読み出すことと、
を含む、方法。
【発明を実施するための形態】
【0012】
予備的な注意として、本明細書で使用される用語「コンポーネント(component)」、「モジュール(module)」、「システム(system)」等は、ソフトウェア実行汎用プロセッサ、ハードウェア、ファームウェア、及びそれらの組み合わせのいずれかのコンピュータ関連エンティティを指すことを意図している。例えば、コンポーネントは、ハードウェア・プロセッサ、ハードウェア・ベース・プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、及び/又はコンピュータ上で実行されるプロセスであってもよいが、これらに限定されない。
【0013】
例示として、サーバ上で動作するアプリケーションとサーバの両方をコンポーネントとすることができる。1つ以上のコンポーネントは、実行のプロセス及び/又はスレッド内に存在してもよく、コンポーネントは、1つのコンピュータ上にローカライズされていてもよく、及び/又は2つ以上のコンピュータ間に分散されていてもよい。また、これらのコンポーネントは、その上に記憶された種々のデータ構造を有する種々のコンピュータ可読媒体から実行することができる。コンポーネントは、1つ以上のデータ・パケットを有する信号に従って、ローカル及び/又はリモート・プロセスを介して通信することができる(例えば、ローカル・システム、分散システム内の他のコンポーネントと、及び/又はインターネットなどのネットワークを経由して他のシステムと信号を介して相互作用する、1つのコンポーネントからのデータ)。
【0014】
コンピュータ実行可能コンポーネントは、例えば、ASIC(特定用途向け集積回路)、CD(コンパクト・ディスク)、DVD(ディジタル・ビデオ・ディスク)、ROM(リード・オンリー・メモリ)、フロッピー・ディスク、ハード・ディスク、EEPROM(電気的消去可能リード・オンリー・メモリ)、メモリ・スティック又は他の記憶装置を含むが、これらに限定されない非一時的コンピュータ可読媒体に、請求された主題に従って記憶することができる。
【0015】
本明細書に記載のシステム及び技術は、ストレージが異なるプラットフォームにわたって提供され、共有されるクラウド・コンピューティング環境において適用可能であり、特に有用である。クラウド・コンピューティングとは、コンピューティング・リソースとその基礎となる技術的アーキテクチャ(例えば、サーバ、ストレージ、ネットワーク)との間に抽象化を提供するコンピューティング能力を意味し、最小限の管理努力又はサービス・プロバイダとの相互作用で迅速にプロビジョニング及びリリースすることができる構成可能なコンピューティング・リソースの共有プールへの、便利でオンデマンドなネットワーク・アクセスを可能にする。「クラウド(cloud)」という用語は、ネットワーク、例えば、インターネットを指すことを意図し、クラウド・コンピューティングは、共有リソース、例えば、ソフトウェア及び情報を、公益事業のように、オンデマンドで利用可能にすることを可能にする。
【0016】
典型的なクラウド・コンピューティング・プロバイダは、他のWebサービス又はWebブラウザのようなソフトウェアからアクセスされる共通のビジネス・アプリケーションをオンラインで提供し、一方、ソフトウェア及びデータはサーバにリモートで記憶される。クラウド・コンピューティング・アーキテクチャは、アプリケーション・サービスを提供するために階層化アプローチ(layered approach)を使用する。第1のレイヤは、クライアント・コンピュータで実行されるアプリケーション・レイヤである。この例では、アプリケーションはクライアントがクラウド経由でストレージにアクセスできるようにする。
【0017】
アプリケーション層の後には、クラウド・プラットフォームとクラウド・インフラストラクチャがあり、続いて、クラウド固有のサービス用に設計されたハードウェアとコンピュータ・ソフトウェアを含む「サーバ」層がある。本明細書に記載されるストレージ・システムは、ストレージ・サービスを提供するためのサーバ層の一部であってもよい。
【0018】
高レベルでは、本開示のファイル・システムは、ファイル・システム・オブジェクトを編成し、ファイル・システム・オブジェクトにアクセスし、ファイル・システムの階層的名前空間を維持するために使用されるデータ構造及び方法/機能を含む。ファイル・システム・オブジェクトには、ディレクトリとファイルが含まれる。本開示は、オブジェクトベース・ストレージ及びOBSにおけるオブジェクトに関係するので、本明細書では、用語「オブジェクト(object)」のオーバーロード(overloading:多重定義)を低減するために、「ファイル・システム・オブジェクト(file system object)」の代わりに、ファイル・システム・オブジェクトを「ファイル・システム・エンティティ(file system entity)」と呼ぶ。「オブジェクト(object)」とは、1つ以上のOBSプロトコルに準拠するデータ構造を指す。従って、本開示における「inodeオブジェクト」は、Unix(R)(登録商標)タイプのオペレーティング・システムのファイルを表すデータ構造ではない。本明細書で使用する「データ・コンテナ」という用語は、ファイル、ディレクトリ、又は構造化及び非構造化データを含む。データ・コンテナ及びファイルという用語は、本明細書全体を通じて互換的に使用される。
【0019】
この記述は、「コマンド(command)」、「操作(operation)」、「リクエスト(request)」のような用語も使用することができる。これらの用語は、リクエストされたアクションの変形として使用することができるが、この記述は、リクエストされたアクションのプロトコル及びソース・ドメインと用語を整合させる。説明では、「ファイル・システム・コマンド(file system command)」又は「コマンド」を使用して、ファイル・システム・プロトコルによって定義され、ファイル・システム・クライアントから受信されるか又はファイル・システム・クライアントに送信されるリクエストされたアクションを指す。説明では、「オブジェクトベースの操作(object−based operation)」又は「操作」を使用して、オブジェクトベース・ストレージ・プロトコルによって定義され、オブジェクト・ストレージ・バックト・ファイル・システムによって生成されるリクエストされたアクションを指す。説明では、「オブジェクト・ストレージ・リクエスト(object storage request)」を使用して、特定のオブジェクトベース・ストレージ・プロトコル(例えば、S3)によって定義され、オブジェクトベース・ストレージ・システムから受信されるか又はオブジェクトベース・ストレージ・システムに送られるアクションを指す。
【0020】
本開示の一態様では、オブジェクトベース・ストレージのための方法及びシステムが提供される。一例として、複数のデータ・コンテナを有するアーカイブ・データ・コンテナのメタデータ・オブジェクトを生成する方法が開示される。この方法は、アーカイブ・データ・コンテナ識別子、アーカイブ・データ・コンテナ内のデータ・コンテナの数、及びアーカイブ・データ・コンテナ内の各データ・コンテナの配置情報を使用して、アーカイブ・データ・コンテナに対する第1のメタデータ署名を生成することと、オブジェクトベース・ストレージにおける複数のデータ・コンテナのデータを記憶するために中間論理オブジェクトに複数のブロックを割り当てることと、中間論理オブジェクト内の複数のブロックの配置情報を有するペイロード署名の更新することと、第1のメタデータ署名及び更新されたペイロード署名をメタデータ・オブジェクト内に配置することであって、メタデータ・オブジェクトは、アーカイブ・データ・コンテナ内の特定のデータ・コンテナの位置情報を読み出すために使用される、配置することを含む。この方法は、アーカイブ・データ・コンテナ識別子、アーカイブ・データ・コンテナ内のデータ・コンテナの数、及びアーカイブ・データ・コンテナ内の各データ・コンテナの配置情報を使用してアーカイブ・データ・コンテナのための第1のメタデータ署名を生成するステップと、複数のデータ・コンテナのためのデータをオブジェクトベースの記憶装置に記憶するために中間論理オブジェクトに複数のブロックを割り当てるステップと、中間論理オブジェクト内の複数のブロックの配置情報と共にペイロード署名を更新するステップと、メタデータ・オブジェクト内に第1のメタデータ署名及び更新されたペイロード署名を配置するステップと、を含み、メタデータ・オブジェクトは、アーカイブ・データ・コンテナ内の特定のデータ・コンテナのための位置情報を検索するために使用される。
【0022】
1つの態様において、本開示は、アーカイブされたデータを効率的に記憶し、OBSからそれをリストアするためのコンピューティング技術を提供する。コンピューティング技術は、アーカイブされたデータを追跡するためにメタデータ・オブジェクトを効率的に使用し、特定のデータ・コンテナをリストアするためにメタデータ・オブジェクトを使用する。
【0023】
図1は、本開示の一態様における、オブジェクトベース・ストレージ(OBS)システムへのファイル・システム・プロトコル・アクセスを提供するストレージ環境100を示す。ストレージ環境100は、様々な装置、媒体及び通信プロトコルを用いてオブジェクトベース・ストレージ120にアクセスするOBSクライアント122及びファイル・システム・クライアント102を含んでもよい。オブジェクトベース・ストレージ120は、ハード・ディスク・ドライブ及び/又はソリッド・ステート・ドライブ(SSD)デバイス(図示せず)のようなストレージ・ハードウェア・デバイスからのデータにアクセスする1つ以上のストレージ・サーバ(図示せず)を含むことができる。ストレージ・サーバは、リプレゼンテーション・ステート・トランスファー(REST)ベースのインターフェース又は(RESTfulインターフェース)及びシンプル・オブジェクト・アクセス・プロトコル(SOAP)のようなWebサービス・インターフェースを経由して、ワイド・エリア・ネットワーク(WAN)110を介してクライアント・ストレージ・リクエストをサービスする。
【0024】
OBSクライアント122は、WAN110を介してオブジェクト・ストレージ120に比較的直接接続するかもしれない。OBSクライアント122は、例えば、オブジェクトベース・ストレージ・アイテム(すなわち、オブジェクト)にアクセスするためにWebサービス・コールを使用するクラウド・サービス・クライアント・アプリケーションであってもよい。OBSクライアント122は、例えば、RESTful[“REST”]プロトコルに基づく直接コール(direct calls)を使用して、オブジェクト・ストレージ120内のオブジェクトにアクセスすることができる。「クライアント」としての参照は、OBSクライアント122及び/又はファイル・システム・クライアント102のいずれかが、他のサーバとのファイル共有構成で構成される場合、「サーバ」であり得るので、説明の焦点に対して相対的であることに留意されたい。OBSクライアント122とは異なり、ファイル・システム・クライアント102は、基礎となるUnix(R)スタイル・ファイル・システムによってサポートされるデータベース・アプリケーションなどのファイル・システム・アプリケーションを含む。ファイル・システム・クライアント102は、NASアーキテクチャに共通のファイル・システムベースのネットワーク・プロトコルを利用して、階層的な方法で構成されたファイル及びディレクトリなどのファイル・システム・エンティティにアクセスする。例えば、ファイル・システム・クライアント102は、ネットワーク・ファイル・システム(NFS)又はコモン・インターネット・ファイル・システム(CIFS)プロトコルを利用することができる。
【0025】
1つの態様において、ストレージ環境100は、リプリケーション・エンジン(replication engine)130を含む。リプリケーション・エンジン130は、1つ以上のユーザ・ファイルを有するアーカイブ・ファイルを生成する。アーカイブ・ファイルは、OBSブリッジ118に提供され、アーカイブ・データ・ファイル126としてオブジェクト・ストレージ120に記憶される。ストレージ・スペースを効率的に使用するために、アーカイブ・データ・ファイルのデータは、重複排除(deduplication)及び圧縮(compression)を使用して記憶されてもよい。データの重複排除により、情報の記憶に使用する記憶領域の量が少なくなる。典型的には、大部分のストレージ・システムは、多くのデータの重複コピーを含む。例えば、同じデータ・コンテナ/ブロックを複数の異なる場所に保存してもよいし、同一でないかもしれない2つ以上のデータ・コンテナが同じデータを含んでもよい。重複排除は、データのバージョンを1つだけ保存し、他のコピーを保存されたコピーに戻すポインタで置換することによって、余分なコピーを除去する。
【0026】
一態様では、OBS118は、アーカイブされたデータ126でOBS120に記憶されたメタデータ・オブジェクト124を管理するメタデータ・モジュール123を含む。重複排除エンジン119は、アーカイブ・ファイル・データをオブジェクト・ストレージ120に記憶するために使用されるハッシュ・ルックアップ・テーブル119Aを維持する。セキュリティ・エンジン125は、アーカイブ・ファイル・データ及び/又はメタデータ・オブジェクト124を暗号化するために使用される。圧縮/解凍モジュール121は、オブジェクト・ストレージ120に記憶された情報を圧縮及び解凍するために使用される。
【0027】
特定のユーザ・ファイルをリストアするために、複数のリストア・ノード132A〜132N(132と呼ぶ)が提供される。リストア・ノード132は、特定のファイルをリストアするためにメタデータ・オブジェクト124をダウンロードするリストア・ライブラリ134A〜134Nを実行することができる。リストア・ノードは別々に示されるが、リストア・ライブラリ機能は、任意の他のコンピュータ装置のハードウェア/ソフトウェアに組み込まれてもよいことは注目に値する。メタデータ・オブジェクト124の生成及び特定のファイルのリストアの詳細は、
図2〜
図5に関して以下に詳細に提供される。
【0028】
1つの態様において、ストレージ環境100は、また、ファイル・システム・クライアント102がオブジェクト・ストレージ120にアクセスし、利用することができるブリッジ及びNASサーバ・サービスを提供するNASゲートウェイ115を含むことができる。リプリケーション・エンジン130がNASゲートウェイ115の一部であってもよいことは注目に値する。一態様では、NASゲートウェイ115は、仮想ファイル・システム(VFS)スイッチ112及びOBSブリッジ118のようなハードウェア及びソフトウェア処理機能を含む。VFSスイッチ112は、ファイル・システム・クライアント102からファイル・システム・コマンドを受信し、ファイル・システム・クライアント102に応答を送信するためのプロトコル及び持続的な名前空間コヒーレンスを確立する。
【0029】
OBS118は、スタンドアロンのコンピュータ装置/システムとして実装されてもよく、本開示の様々な態様は、ゲートウェイ115の一部であるOBS118に限定されないことは、注目に値する。
【0030】
OBSブリッジ118はまた、オブジェクト・ストレージ・バックト・ファイル・システム(OSFS)114及び関連するOSFSキャッシュ116を含んでもよい。OSFS114とOSFSキャッシュ116は共に、オブジェクト・ストレージ120内にオブジェクトを生成し管理し、階層ファイル・システム名前空間111(「ファイル・システム名前空間(file system namespace)」)をファイル・システム・クライアント102に収容する。ファイル・システム名前空間111の例は、3つのディレクトリー・レベルにわたって分散された、いくつかのファイル及びディレクトリー・エンティティを含む。最上位のルート・ディレクトリrootには、子ディレクトリdir1とdir2が含まれる。ディレクトリdir1は、子ディレクトリdir3とファイルfile1を含む。ディレクトリdir3はファイルfile2とfile3を含む。
【0031】
OSFS114は、ファイル・システム・コマンドのための中間のOBSプロトコルインターフェースを提供する方法でファイル・システム・コマンドを処理し、同時に、OBSブリッジ・トランザクションで使用され、バックエンド・オブジェクト・ストレージ120に持続的に記憶されるファイル・システム名前空間、例えばファイル・システム名前空間111を生成する。ファイル・システム名前空間を作成するために、OSFS114は、各ファイル・システム・エンティティ(例えば、ファイル又はディレクトリ)に対して、名前空間オブジェクト及び対応するinodeオブジェクトを生成する。トランザクション・プロトコル・ブリッジングを有効にするために、OSFS114は、各ファイル・システム・コマンドに対応するオブジェクトベース操作の関連するグループを生成し、ファイル・システム・エンティティ構造毎にデュアル・オブジェクトを適用する。
【0032】
ファイル・システム・クライアント102からのようなファイル・システム・コマンドは、VFSスイッチ112によって受信され、OSFS114に転送される。VFSスイッチ112は、ファイル・システム・コマンドを部分的に処理し、結果をOSFS114に渡すことができる。例えば、VFSスイッチ112は、ファイル・システム・エンティティの名前を、ファイル・システム・コマンドに示されたファイル・システム・エンティティに対応するinode番号に解決するために、それ自身のディレクトリ・キャッシュ及びinodeキャッシュにアクセスしてもよい。この情報は、ファイル・システム・コマンドと共にOSFS114に渡すことができる。
【0033】
OSFS114は、ファイル・システム・コマンドを処理して、1つ以上の対応するオブジェクトベース操作を生成する。例えば、OSFS114は、ファイル・システム・コマンドを一緒に実行する1つ以上のオブジェクトベース操作のグループを生成するように構成された複数のファイル・システム・コマンド固有のハンドラを含むことができる。このようにして、OSFS114は、受信したファイル・システム・コマンドを、複数のオブジェクトベース操作を含むオブジェクト中心のファイル・システム・トランザクションに変換する。OSFS114は、ファイル・システム・エンティティではなくオブジェクトを使用してファイル・システム・コマンドを実行するn個のオブジェクトベース操作の集合を決定する。オブジェクトベース操作は、例えば、キー値パラメータの指定など、OBSのセマンティックに準拠する定義されたメソッド又は関数である。OSFS114は、ファイル・システム・コマンドのパラメータ及びVFSスイッチ112によって提供される任意の他の情報に従って、オブジェクトベースの操作をインスタンス化する。OSFS114は、オブジェクトベースの操作インスタンスとのファイル・システム・トランザクションを形成する。OSFS114は、トランザクションをOSFSキャッシュ116にサブミットし、他のノードがOSFS114をホストするノード(例えば、仮想機械又は物理機械)のために引き継いだ場合に再生可能なトランザクション・ログ(図示せず)にトランザクションを記録することができる。
【0034】
ファイル又はディレクトリの作成を指定するファイル・システム・コマンドの受信に対する応答のように、ファイル・システム・エンティティを作成するために、OSFS114は、ファイル・システム・エンティティの新しいinode番号を決定する。OSFS114は、inode番号を整数値からASCII値に変換することができ、ASCII値は、ファイル・システム・トランザクションを形成するために使用されるオブジェクトベース操作のパラメータ値として使用することができる。OSFS114は、第1のオブジェクト・ストレージ操作をインスタンス化し、ファイル・システム・エンティティの決定されたinode番号から導出された第1のオブジェクト・キーと、ファイル・システム・エンティティの属性を示すメタデータとを有する第1のオブジェクトを生成する。OSFS114は、第2のオブジェクト・ストレージ動作をインスタンス化して、第2のオブジェクト・キーと、第2のオブジェクト・キーを第1のオブジェクト・キーに関連付けるメタデータとを有する第2のオブジェクトを作成する。第2のオブジェクト・キーには、ファイル・システム・エンティティの親ディレクトリのinode番号と、ファイル・システム・エンティティの名前も含まれる。
【0035】
図1に示されるように、オブジェクト・ストレージ120は、図示された階層ファイル・システム名前空間111に対応する結果として生じる名前空間オブジェクト及びinodeオブジェクトを含む。名前空間オブジェクトとinodeオブジェクトは、ソフトウェア・スタックを使って流れるコマンド、操作、及びリクエストに起因する。図示されるように、ファイル・システム名前空間111内の各ファイル・システム・エンティティは、名前空間オブジェクト及びinodeオブジェクトを有する。たとえば、最上位ディレクトリルートは、名前空間オブジェクトNSOrootによって関連付けられる(指される)ルートinodeオブジェクトIOrootによって表される。名前空間構成に従って、inodeオブジェクトIOrootは、子ディレクトリ(dir1及びdir2)の名前空間オブジェクトのそれぞれとも関連付けられる。名前空間オブジェクトとinodeオブジェクトの複数のアソシエーションは、OSFS114が実際にルートからターゲットへ移動する必要はないが、ファイル・システム・クライアントが階層ファイル・システムのような方法で名前空間を移動することを可能にする。OSFSはターゲットの親からのみターゲットに到着し、ルートからのスキャン(traversing)を避ける。
【0036】
OSFSキャッシュ116は、OSFS114から受信したファイル・システム・トランザクションを、ローカルに記憶されたデータで満たそうとする。ローカルに記憶されたデータでトランザクションが満たされない場合、OSFSキャッシュ116は、トランザクションを形成するオブジェクトベースの操作インスタンスをオブジェクト・ストレージ・アダプタ117に転送する。OSA117は、操作に対応し、S3のような特定のオブジェクト・ストレージ・プロトコルに適合するオブジェクト・ストレージ・リクエストを生成することによって応答する。
【0037】
リクエストに応答して、オブジェクト・ストレージ120は、OSA117によって処理され、OBSブリッジ117を通って伝搬する、応答を提供する。より具体的には、OSFSキャッシュ116は、OSFS114に通信されるトランザクション応答を生成する。OSFS114は、トランザクション・ログを更新して、トランザクション応答に対応するトランザクションを削除することができる。OSFS114は、また、トランザクション応答に基づいてファイル・システム・コマンド応答を生成し、その応答をVFSスイッチ112を介してファイル・システム・クライアント102に戻す。
【0038】
ネイティブ及びブリッジ対応のアクセスを可能にする方法でファイル・システム名前空間のアクセシビリティを提供し、記述された態様は、地理的分散クライアントに対して名前空間の移植性(portability)及び同時並行性(concurrency)を提供する。オブジェクト・ストア120は、ファイル・データ及びそれに関連するメタデータとともに、
図1に示されるinode及び名前空間オブジェクトのストレージを介して名前空間の持続的表現を記憶する。この機能は、他の同様に構成されたOBSブリッジが、同じバックエンド・オブジェクト・ストアに取り付け/マウントし、同じスキーマに従い、名前空間オブジェクトにアクセスし、それによって、それぞれのファイル・システム・クライアントと同じファイルを共有できるようにする。従って、OBSブリッジ構成は、複数のサイトを横断する複数のクライアントに共通のファイル・システム名前空間を同時に提供するために、マルチノード(マルチサイトを含む)アプリケーションに適用することができる。従って、開示の態様は、複数の対応するNASゲートウェイを確立するために、複数のOBSブリッジをクラスタ構成でグループ化することを含み得る。
【0039】
メタデータ・オブジェクト124:
図2は、バックアップ・アーカイブ・データ・コンテナ(又はバックアップ・アーカイブ・ファイル)からの単一のデータ・コンテナ・リストアに使用され得るメタデータ・オブジェクト124を効率的に生成及び記憶するための新規なコンピューティング技術200を示す。バックアップ・アーカイブ・データ・コンテナは、ユーザ定義ファイル(ユーザ・ファイルと呼ばれる)を含むが、単一ファイルとして書き込まれる、ユーザ・データの集合である。一例として、バックアップ・アーカイブ・データ・コンテナは、暗号化、圧縮及び重複排除を使用して、オブジェクトベース・ストレージ120にデータを記憶する。
【0040】
本明細書に開示された革新的なコンピューティング技術は、バックアップ・アーカイブ・ファイルを検査し、バックアップ・アーカイブ・ファイル内の各ユーザ・ファイルのオフセット及びサイズを理解する。次いで、この情報は、各バックアップ・アーカイブ・ファイルのバックアップ・データと共に、オブジェクト・ストレージ120内のメタデータ・オブジェクト124の一部として記憶される。メタデータ・オブジェクト124は、メタデータの記憶及び検索がリソース集約的でないように、効率的な圧縮技術を使用してオブジェクト・ストレージ120に記憶される。
【0041】
リストア・ノード132において、メタデータ・オブジェクト124は、リストア・ライブラリ・モジュール134によって読み取られ、データを復号し、圧縮解除し、記憶されたデータアーカイブされたデータのオリジナル・フォーマットに組み立てた後、任意のファイルの目標のリストアを可能にする。開示された技術のリストア・プロセスは、最小のネットワーク帯域幅を使用し、複数のノードがリストア・プロセスの負荷を共有できるので、より良いパフォーマンスを提供する。
【0042】
次に
図2を参照すると、例として、2つのユーザ・ファイルU1 202A及びU2 202Bは、A1として識別され、リプリケーション・エンジン130によって204としてラベル付けされたアーカイブ・ファイルに集約される。アーカイブ・ファイルがOBS118によって受信されると、重複排除エンジン119は、A1内のU1及びU2の配置情報を取得する。たとえば、U1の長さはL1で、U2の長さはL2と仮定する。O1がA1内のU1のオフセットであり、O2がA1内のU2のオフセットである場合、ユーザ・ファイルのメタデータは、[<O1,L1>,<O2,L2>]で表すことができる。次に、バックアップ・アーカイブ・ファイルA1の初期メタデータ署名が決定される。初期メタデータ署名はマップであり、キーはユーザ・ファイルの名前であり、値はA1内のユーザ・ファイルの配置情報である。従って、A1の初期メタデータ署名は、以下のように表すことができる。
【0043】
U1=><O1,L1>
U2=><O2,L2>
【0044】
前述の初期署名は、<ユーザ・ファイル数>、<ユーザ・ファイル1の名前>、<ユーザ・ファイル1の配置情報>、<ユーザ・ファイル2の名前>、<ユーザ・ファイル2の配置情報>、....、<ユーザ・ファイルnの名前>、<ユーザ・ファイルnの配置情報>に基づいて正規化されたシーケンスに変換される。前述の正規化シーケンスを使用し、
図2の例を続けて、A1のためのメタデータ署名は、メタデータ・モジュール123によって[2,U1,O1,L1,U2,O2,L2]として表すことができる。
【0045】
アーカイブ・ファイルA1内のデータは、次に、b1 206A及びbn 206Nとして示される異なるブロックに分割される。任意のブロックが記憶される前に、重複排除エンジン119は、キー値マップを記憶するルックアップ・テーブル119Aに対してデータ・ブロックをチェックする。ルックアップ・テーブル119Aに対するキーは、データ・ブロックとブロック識別子のチェックサムに基づくかもしれないデータ・ブロックの署名である。一例として、重複排除エンジン119によって生成され、維持されるルックアップ・テーブル119Aは、以下のように表すことができる。
Hash(B1)=>B1
Hash(B2)=>B2
Hash(B3)=>B3
【0046】
ルックアップ・テーブルが一致する場合、次いで、ブロックID参照カウントは更新される。これは、ブロックが物理的なストレージに一度だけ記憶されるが、複数の論理エンティティによって参照されることを保証する。
【0047】
一致しない場合、ルックアップ・テーブル119Aに新しいエントリが作成される。最初にブロックb1とb2はルックアップ・テーブルでヒットを生じ、残りのブロック{b3..bn}はヒットを生じないと仮定する。生成されなかったブロックは、B4,B5,...,Bnのような新しいブロックとして作成され、更新されたルックアップ・テーブルは、以下のように表される。
Hash(B1)=>B1
Hash(B2)=>B2
Hash(B3)=>B3
Hash(B4)=>B4
Hash(B5)=>B5
|
|
Hash(Bn)=>Bn
【0048】
上記に基づいて、A1のペイロード署名は、B1,B2,B3,B4,B5,....,Bnによって表すことができる。バックアップ・アーカイブ・ファイルA1の更新された署名は、バックアップID、メタデータ署名、及びデータ署名によって表すことができる。例えば、
図2の例を用いて、更新された署名は、A1,2,U1,O1,L1,U2,O2,L2,B1,B2,B3,B4,B5,...,Bnによって表すことができる。
【0049】
記憶効率をさらに改善するために、種々のデータ・ブロックは、「ブロブ(blobs)」とも呼ばれるブロックにさらに集約される。例えば、ブロックb1、b2及びb3は、圧縮エンジン121によって圧縮され、例えば、対称暗号キーKを使用することによって、セキュリティ・エンジン125によって暗号化される。圧縮及び暗号化されたブロック208A〜208Cは、次いで、ブロブ210内に配置されるか又はブロブ210に割り当てられる。ブロブは、一意的に識別される論理オブジェクトであり、圧縮/暗号化データの1つ以上のブロックを含む。ブロブ内の各圧縮/暗号化ブロックの配置は、B1,B2−BnからBB1,PB1,SZB1,PB2,SZB2,BB2,PB3,SZB3,PB4,SZB4,....BBk、PBn、SZBnへのペイロード署名を更新するために使用され、ここで、BB1=ブロブ#1に対するブロブId、PB1=BB1内のブロックB1のオフセット及び長さを含むブロック内の配置情報、SZB1=ブロックB1の正規未処理(canonical unprocessed)(非圧縮及び非暗号化を意味する)サイズなどである。
【0050】
アーカイブ・ファイルの更新されたメタデータ署名は、A1,2,U1,O1,L1,U2,O2,L2,BB1,PB1,SZB1,PB2,SZB2,BB2,PB3,SZB3,PB4,SZB4,...BBk,PBn,SZBnによって表すことができる。
【0051】
次に、前述のメタデータ・シーケンスは、圧縮アルゴリズムを使用して圧縮エンジン121によって圧縮され、さらにスペースを節約し、上述の同じ暗号キーKを使用して暗号化される。次いで、圧縮及び暗号化されたメタデータは、オブジェクト・ストレージ120に記憶されるメタデータ・オブジェクト124内に記憶される。オブジェクトの名前、例えば、C1(212として示される)は、オブジェクトの中身のチェックサムを取ることによって得られる。
【0052】
図2は、例として、2つのメタデータ・オブジェクトC1 212及びC2 214を示す。C1は、1つのアーカイブ・ファイルの圧縮/暗号化メタデータが含み、C2は、別のアーカイブ・ファイルの署名が含む。データ・ブロックはまた、ブロブ216及び218内に圧縮され、記憶される。
【0053】
処理フロー:
図3は、本開示の一態様による、メタデータ・オブジェクト124を生成するためのプロセッサ、実行可能な処理フロー300を示す。
【0054】
プロセス300は、
図2の表記/参照番号に関して以下に説明する。プロセス300は、OBS118及びリプリケーション・エンジン130が初期化され、作動されると、ブロックB302で開始する。ブロックB304において、OBS118は、
図2に示され上述されたように、複数のユーザ・ファイル、例えば、ファイルU1及びU2を有するA1、を有するアーカイブ・ファイルを受信する。
【0055】
ブロックB306で、アーカイブ・ファイルの初期メタデータ署名が、メタデータ・モジュール123によって生成される。初期メタデータ署名は、アーカイブ・ファイル内のファイル数、ファイル識別子、アーカイブ・ファイル内のユーザ・ファイルの配置情報に基づく。A1、U1及びU2に関して上述したように、初期メタデータ署名は、[2、U1、O1、L1、U2、O2、L2]として表すことができる。
【0056】
ブロックB308において、重複排除エンジン119は、ユーザ・ファイル内のペイロードを複数のブロック、例えば、b1,b2,b3..bn[
図2参照]に分ける。ブロック・サイズは、固定又は可変であってもよい。
【0057】
ブロックB310で、各ブロックに対するハッシュ署名(例えば、B1、B2..Bn[
図2])が、重複排除エンジン119によって生成される。ハッシュ署名は、各ブロックのデータ内容のチェックサムに基づいてもよい。
【0058】
ブロックB312において、重複排除エンジン199は、キー値マップを記憶するハッシュ・ルックアップ・テーブル119Aで、各データ・ブロックのハッシュ署名を検証し、ここで、キーは、ブロック識別子に関連付けられた各ブロックの署名である。ブロックのブロック識別子がルックアップ・テーブル119Aに既に存在する場合、そのブロックの参照カウントが更新される。ブロック識別子がルックアップ・テーブル119Aに存在しない場合、ルックアップ・テーブル119Aは、新しいブロック署名及びブロック識別子で更新される。
【0059】
ブロックB314で、ペイロード署名は、最初にハッシュ署名、すなわちB1−Bnで更新される。アーカイブ・ファイルA1の署名は、次に、バックアップID、メタデータ署名、及び更新されたペイロード署名、例えば、A1,2,U1,O1,L1,U2,O2,L2,B1,B2,B3,B4,B5,...,Bnを含むように更新される。データ・ブロックを「そのまま(as−is)」記憶することは、リソース集約的であり得る。従って、ブロックB316で、ブロックは圧縮エンジン121によって圧縮及び暗号化され、セキュリティ・エンジン125によって暗号化される。1つの態様において、暗号化は、対称鍵、Kを用いて実行される。圧縮及び暗号化されたブロックは、次に、ブロブとして上述及び説明した別の論理構造に割り当てられる(
図2において、210、216及び218として示される)。次に、ペイロード署名は、各ブロブ内の圧縮/暗号化ブロックの配置情報を含むようにブロックB318で変換/更新される。次に、アーカイブ・ファイルの完全な署名が更新され、A1,2,U1,O1,L1,U2,O2,L2,BB1,PB1,SZB1,PB2,SZB2,BB2,PB3,SZB3,PB4,SZB4,....BBk,PBn,SZBnとして表すことができる。
【0060】
ブロックB320で、完全な署名は、同じ暗号化キー、Kで圧縮/暗号化される。圧縮/暗号化された署名は、オブジェクト、例えば、C1 212、C2 214内に記憶される[
図2]。オブジェクトC1/C2は、
図4に関して後述するように、特定のファイルをリストアするために使用することができるメタデータ・オブジェクト124として記憶される。
【0061】
図4は、本開示の一態様による、オブジェクト・ストレージ120においてアーカイブされ記憶されるユーザ・ファイルをリストアするためのプロセス400を示す。プロセス400は、
図2及び
図3に関して上述したように、メタデータ・オブジェクト124がアーカイブされたファイル126のために作成された後、ブロックB402で始まる。
【0062】
ブロックB404で、特定のファイルをリストアするリクエストを受信する。リクエストは、リストア・ライブラリ134を実行するリストア・ノード132によって受信されてもよい[
図1を参照]。
【0063】
リクエストに応答して、ブロックB406において、リストア・ライブラリ134は、ユーザ・ファイル、例えば、U2を含むアーカイブ・ファイル(例えば、C1 212)の完全な署名を含むメタデータ・オブジェクト124をダウンロードする。
【0064】
ブロックB408において、メタデータ・オブジェクトは、上述のように、メタデータ・オブジェクトを暗号化するために使用されたキーを使用して、リストア・ライブラリ134によって解凍及び復号される。
【0065】
ブロックB410で、アーカイブ・ファイルA1におけるユーザ・ファイルU2の配置、例えば、
図2に関して上述した[O2、L2]が決定される。次いで、ファイルU2に関連付けられたブロブが識別される。識別されたブロブ内のブロックは、ブロックB414で決定される。次いで、ブロックB416において、ブロックは、オブジェクト・ストレージ120からOBS118によって読み取られ、リストア・ライブラリ134に提供される。次に、リクエストされたブロックが要求側に提供される。
【0066】
本明細書に開示された技術は、コンピューティング技術及びクラウドベース・ストレージ・システムを改善する。データは、オブジェクト・ストレージで効率的に複製され、詳細に上述されたようにメタデータ・オブジェクトを使用してリストアされる。
【0067】
処理システム:
図5は、1つの態様に従って使用され得る処理システム500のアーキテクチャの一例を示す高レベルブロック図である。
【0068】
処理システム500は、リストア・ノード132、OBS118、リプリケーション・エンジン130、NASゲートウェイ115、FSクライアント102、OBSクライアント122及び他のコンポーネントを表すことができる。本態様に関係のない、ある標準的かつ周知のコンポーネントは、
図5には示されていないことに留意されたい。処理システム500は、バス・システム505に接続された1つ以上のプロセッサ502及びメモリ504を含む。
図5に示されるバス・システム505は、任意の1つ以上の別個の物理バス及び/又は適切なブリッジ、アダプタ、及び/又はコントローラによって接続されたポイント・ツー・ポイント接続を表す抽象概念である。従って、バス・システム505は、例えば、システム・バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、ハイパートランスポート又は業界標準アーキテクチャ(IAS)バス、スモール・コンピュータ・システム・インターフェース(SCSI)バス、ユニバーサル・シリアル・バス(USB)、又は電気電子技術者協会(IEEE)標準1394バス(「ファイアワイヤ」とも呼ばれる)を含むことができる。
【0069】
プロセッサ502は、処理システム500の中央処理ユニット(CPU)であり、従って、全体の動作を制御する。ある態様では、プロセッサ502は、メモリ504に記憶されたソフトウェアを実行することによってこれを達成する。プロセッサ502は、1つ以上のプログラマブル汎用又は特殊目的マイクロプロセッサ、ディジタル信号プロセッサ(DSPs)、プログラマブル・コントローラ、特定用途向け集積回路(ASICs)、プログラマブル論理デバイス(PLDs)、又は同様なもの、又はそのようなデバイスの組み合わせであってもよく、又はそれらを含んでもよい。
【0070】
メモリ504は、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、フラッシュ・メモリ等の任意の形態、又はこのようなデバイスの組み合わせを表す。メモリ504は、処理システム500のメイン・メモリを含む。命令506は、上述した
図2〜
図4の処理ステップを実装し、メモリ504からプロセッサ502内に存在し、プロセッサ502によって実行されてもよい。
【0071】
また、バス・システム505を介してプロセッサ502に接続されるのは、1つ以上の内部マス・ストレージ装置510、及びネットワーク・アダプタ512である。内部マス・ストレージ装置510は、1つ以上の磁気又は光学ベースのディスクのような、不揮発性の方法で大量のデータを記憶するための任意の従来の媒体であってもよく、又は任意の従来の媒体を含んでもよい。ネットワーク・アダプタ512は、ネットワークを介してリモート装置(例えば、ストレージ・サーバ)と通信する能力を処理システム500に提供し、ネットワークは、例えば、イーサネット・アダプタ、ファイバ・チャネル・アダプタ等であってもよい。
【0072】
処理システム500はまた、バス・システム505に接続された1つ以上の入出力(I/O)装置508を含む。入出力(I/O)装置508は、例えば、ディスプレイ装置、キーボード、マウス等を含み得る。
【0074】
フローチャートは、図面の理解を助けるために提供され、請求項の範囲を制限するために使用されるべきものではない。フローチャートは、請求項の範囲内で変化し得る動作例を示す。追加の操作が実行されることもあり、より少ない操作が実行されることもあり、並列して操作が実行されることもあり、異なる順序で操作が実行されることもありうる。フローチャート図及び/又はブロック図の各ブロック、及びフローチャート図及び/又はブロック図のブロックの組み合わせは、プログラム・コードによって実装可能であることが理解されよう。プログラム・コードは、汎用コンピュータ、特殊用途コンピュータ、又は他のプログラム可能機械又は装置のプロセッサに提供されてもよい。
【0075】
理解されるように、開示の態様は、システム、方法又は1つ以上の機械可読媒体に記憶されたプログラム・コード/命令として具体化され得る。従って、態様は、ハードウェア、ソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又はソフトウェアとハードウェアの態様の組み合わせの形態をとることができ、これらはすべて、本明細書中で「回路」、「モジュール」又は「システム」と一般に呼ぶことができる。例示的な図中の個々のモジュール/ユニットとして提供される機能は、プラットフォーム(オペレーティング・システム及び/又はハードウェア)、アプリケーション・エコシステム、インターフェース、プログラマ・プリファレンス、プログラミング言語、アドミニストレータ・プリファレンスのいずれかに従って、異なるように構成することができる。
【0076】
1つ以上の非一時的機械可読媒体の任意の組み合わせを利用することができる。機械可読記憶媒体は、例えば、プログラム・コードを記憶するために電子、磁気、光学、電磁、赤外、又は半導体技術のいずれか1つ又は組み合わせを使用するシステム、装置、又は機器であってもよいが、これらに限定されない。機械可読記憶媒体のより具体的な例としては、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能プログラマブル・リード・オンリー・メモリ(EPROM又はフラッシュ・メモリ)、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(CD−ROM)、光学記憶装置、磁気記憶装置、又はこれらの任意の適切な組み合わせを含む。本文書の文脈において、非一時的機械可読記憶媒体は、命令実行システム、装置、又は機器によって、又はそれに関連して使用されるプログラムを含むか、又は記憶することができる任意の有体媒体であり得る。非一時的機械可読記憶媒体は、機械可読信号媒体ではない。
【0077】
機械可読信号媒体は、例えばベースバンドで、又は搬送波の一部として、その中に具体化された機械可読プログラム・コードを含む伝搬データ信号を含むことができる。このような伝搬信号は、電磁的、光学的、又はこれらの任意の適切な組み合わせを含むが、これらに限定されない、種々の形式のいずれでもよい。機械可読信号媒体は、機械可読記憶媒体ではなく、命令実行システム、装置、又は機器によって使用するための、又はこれらに関連する、プログラムを通信、伝搬、又は転送することができる任意の機械可読媒体であってもよい。
【0078】
機械可読媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、RF等を含むがこれらに限定されない、任意の適切な媒体、又は前記の任意の適切な組み合わせを使用して送信することができる。
【0079】
開示の態様のための操作を実行するためのコンピュータ・プログラム・コードは、Java(R)プログラミング言語、C++等のようなオブジェクト指向プログラミング言語、Pythonのような動的プログラミング言語、Perlプログラミング言語又はPowerShellスクリプト言語のようなスクリプト言語、及び「C」プログラミング言語又は類似のプログラミング言語のような従来の手続き型プログラミング言語を含む1つ以上のプログラミング言語の任意の組合せで書くことができる。プログラム・コードは、完全にスタンドアロンの機械上で実行することができ、複数の機械にわたって分散された方法で実行することができ、他の機械への結果の提供及び/又は他の機械からの入力の受け入れをしながら、1つの機械上で実行することができる。
【0080】
プログラム・コード/命令はまた、機械に特定の方法で機能するように指示することができる非一時的機械可読媒体に記憶されてもよく、その結果、機械可読媒体に記憶された命令は、フローチャート及び/又はブロック図に指定された機能/動作を実行する命令を含む製品を生成する。
【0081】
本開示の態様は、種々の実装及び実施を参照して説明されたが、これらの態様は例示的であり、請求項の範囲はそれらに限定されないことが理解されるであろう。一般に、本明細書に記載するオブジェクト・ストレージからデータ・コンテナをリストアする技術は、任意のハードウェア・システムと一貫性のある設備で実装することができる。多くの変更、修正、追加、及び改良が可能である。
【0082】
複数インスタンスは、本明細書において単一インスタンスとして記載されるコンポーネント、操作又は構造のために提供されてもよい。最後に、種々のコンポーネント、操作及びデータ・ストレージ間の境界は、いくぶん任意であり、特定の操作は、特定の例示的な構成の文脈で説明された。機能性の他の割り当てが想定され、開示の範囲内に入り得る。一般に、例示の構成において別個のコンポーネントとして示される構造及び機能性は、組み合わせた構造又はコンポーネントとして実装されてもよい。同様に、単一のコンポーネントとして示される構造及び機能性は、別個のコンポーネントとして実装されてもよい。これら及び他の変更、修正、追加、及び改良は、本開示の範囲内に入り得る。
オブジェクトベース・ストレージのための方法とシステムが提供される。一例として、複数のデータ・コンテナを有するアーカイブ・データ・コンテナのメタデータ・オブジェクトを生成する方法が開示される。この方法は、アーカイブ・データ・コンテナ識別子、アーカイブ・データ・コンテナ内のデータ・コンテナの数、及びアーカイブ・データ・コンテナ内の各データ・コンテナの配置情報を使用して、アーカイブ・データ・コンテナに対する第1のメタデータ署名を生成することと、オブジェクトベース・ストレージにおける複数のデータ・コンテナのデータを記憶するための複数のブロックを中間論理オブジェクトに割り当てることと、中間論理オブジェクト内の複数のブロックの配置情報を有するペイロード署名の更新することと、第1のメタデータ署名及び更新されたペイロード署名をメタデータ・オブジェクト内に配置することであって、メタデータ・オブジェクトは、アーカイブ・データ・コンテナ内の特定のデータ・コンテナの位置情報を読み出すために使用される、配置することを含む。