図面 (/)

技術 データ処理方法、装置、およびシステム

出願人 華為技術有限公司
発明者 方新
出願日 2014年12月27日 (6年4ヶ月経過) 出願番号 2017-528138
公開日 2017年12月14日 (3年5ヶ月経過) 公開番号 2017-537397
状態 特許登録済
技術分野 エラー時の再試行 検索装置 計算機におけるファイル管理
主要キーワード 仮想モジュール データ読出し装置 ストリップ領域 マーク対象 技術的ソリューション オフセット範囲 データストリップ ストリップデータ
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2017年12月14日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (9)

課題・解決手段

本発明の実施形態は、データ管理技術を提供している。OSDは、クライアントサーバによって送信されたストリップ書込み要求を受信する、ここで、ストリップ書込み要求は、書込予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを搬送する。OSDは、書込み予定のストリップを、オブジェクトID、書込み予定のストリップのバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込む。本発明を適用することによって、オブジェクトIDの数量を低減し得る。

概要

背景

オブジェクトベースストレージシステム(Object-based Storage System)は、分散ストレージシステムであり、ストレージサーバと、オブジェクトベースストレージデバイス(Object-based Storage Device、OSD)とを含む。オブジェクトベースストレージシステムをオブジェクトストレージステムと称してもよく、オブジェクトベースストレージデバイスをオブジェクトストレージデバイスと称してもよい。オブジェクトストレージシステムにおいては、オブジェクトが最も基本的なコンテンツ記憶単位として使用される。データは、ファイルまたはボリュームであり得る。ファイルを例として使用する、ここで、ファイルはフラグメントに分割され、ファイルフラグメントは属性情報を有し、ファイルフラグメント、ファイルフラグメントのメタデータ、およびファイルフラグメントの属性はオブジェクトを共同して構成し得るし、オブジェクトは複数のOSDに記憶される。

オブジェクトストレージシステムは、スナップショット(Snapshot)機能を提供している。スナップショットは、特定のデータセットコピーであり、コピーは、あるタイムポイント(コピーの開始タイムポイント)における対応するデータのイメージマークを付ける。

ファイルを例として使用する。スナップショットが作成された後に、ファイル全体またはファイルのデータの一部が変更されると、変更後のデータをストレージシステムに記憶する必要がある。従来技術では、オブジェクトIDがオブジェクトの一意な識別子として使用されており、同一のファイルが更新されると、更新後のデータを新規オブジェクトIDとしてストレージデバイスに記憶する必要がある。ファイルが頻繁に更新されると、オブジェクトIDの総数が非常に大きくなり、このことが、相対的に大きなストレージ領域占有し、システムリソースのロスを増大させている。

概要

本発明の実施形態は、データ管理技術を提供している。OSDは、クライアントサーバによって送信されたストリップ書込み要求を受信する、ここで、ストリップ書込み要求は、書込予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを搬送する。OSDは、書込み予定のストリップを、オブジェクトID、書込み予定のストリップのバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込む。本発明を適用することによって、オブジェクトIDの数量を低減し得る。

目的

オプション計算方法は、書込み予定のストリップのFIDに従って、書込み予定のストリップを記憶するためのOSDを決定することである

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

データストレージ方法であって、前記方法は、オブジェクトストレージデバイスOSDによって、クライアントサーバによって送信されたストリップ書込み要求を受信するステップであって、前記ストリップ書込み要求は、書込予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップのオフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記書込み予定のストリップの前記バージョン番号は、前記書込み予定のストリップが属するファイルまたはボリューム最新スナップショットのスナップショットIDに対応しており、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属するオブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトのIDである、ステップと、前記OSDによって、前記書込み予定のストリップを、前記オブジェクトID、前記書込み予定のストリップの前記バージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込むステップとを含む、方法。

請求項2

クライアントサーバによって送信されたストリップ書込み要求を受信する前に、前記方法は、前記クライアントサーバによって、前記書込み予定のストリップが属する前記ファイルまたは前記ボリュームのスナップショットを作成し、前記最新のスナップショットの前記スナップショットIDを生成するステップと、前記最新のスナップショットの前記スナップショットIDに従って前記書込み予定のストリップの前記バージョン番号を生成するステップとをさらに含む、請求項1に記載の方法。

請求項3

前記方法は、前記クライアントサーバによって、前記ファイルまたは前記ボリュームのメタデータに対して前記書込み予定のストリップの前記バージョン番号を更新するステップをさらに含む、請求項2に記載の方法。

請求項4

前記OSDによって、ストリップ書込み要求を受信するステップの前に、前記方法は、前記クライアントサーバによって、ファイル書込み要求を受信するステップであって、前記ファイル書込み要求は、書込み予定のデータ、前記書込み予定のデータのオフセット、およびファイル名を搬送し、前記書込み予定のデータは、前記ファイルの一部である、ステップと、前記クライアントサーバによって、前記ファイル名に従ってファイル識別子FIDを取得し、前記FIDに従って前記ファイルの前記メタデータに対するクエリを行って前記ファイルのバージョン番号を取得し、前記ファイルの前記バージョン番号を前記書込み予定のストリップの前記バージョン番号として使用するステップであって、前記ファイルの前記バージョン番号は、前記書込み予定のストリップが属する前記ファイルの前記最新のスナップショットの前記スナップショットIDに対応している、ステップと、前記書込み予定のデータの前記オフセットおよび前記書込み予定のデータのサイズに従って前記クライアントサーバによって、前記書込み予定のデータを前記書込み予定のストリップを含む複数のストリップに分割し、前記書込み予定のストリップが属する前記オブジェクトの前記IDを決定し、前記書込み予定のストリップの前記オフセットを取得するステップと、前記ストリップ書込み要求を作成するステップとをさらに含む、請求項1、2、または3に記載の方法。

請求項5

前記OSDによって、ストリップ書込み要求を受信するステップの前に、前記方法は、前記クライアントサーバによって、ボリューム書込み要求を受信するステップであって、前記ボリューム書込み要求は、書込み予定のデータ、前記書込み予定のデータのオフセット、およびボリューム識別子IDを搬送し、前記書込み予定のデータは、前記ボリュームの一部である、ステップと、前記クライアントサーバによって、前記ボリュームIDに従って前記ボリュームの前記メタデータに対するクエリを行って前記ボリュームのバージョン番号を取得し、前記ボリュームの前記バージョン番号を前記書込み予定のストリップの前記バージョン番号として使用するステップであって、前記ボリュームの前記バージョン番号は、前記書込み予定のストリップが属する前記ボリュームの前記最新のスナップショットの前記スナップショットIDに対応している、ステップと、前記書込み予定のデータの前記オフセットおよび前記書込み予定のデータのサイズに従って前記クライアントサーバによって、前記書込み予定のデータセグメントを前記書込み予定のストリップを含む複数のストリップに分割し、前記書込み予定のストリップが属する前記オブジェクトの前記IDを決定し、前記書込み予定のストリップの前記オフセットを取得するステップと、前記ストリップ書込み要求を作成するステップとをさらに含む、請求項1、2、または3に記載の方法。

請求項6

データストレージ方法であって、前記方法は、オブジェクトストレージデバイスOSDによって、クライアントサーバによって送信されたストリップ書込み要求を受信するステップであって、前記ストリップ書込み要求は、書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップのオフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記書込み予定のストリップの前記バージョン番号は、前記書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属するオブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトのIDである、ステップと、前記OSDによって、前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定されるオブジェクトがバックアップされているかどうかを決定するステップと、前記オブジェクトがバックアップされている場合には、前記OSDによって、前記書込み予定のストリップを、前記オブジェクトID、前記書込み予定のストリップの前記バージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込むステップ、または、前記オブジェクトがバックアップされていない場合には、前記OSDによって、前記書込み予定のストリップを使用して接合オブジェクトを作成し、その後、前記接合オブジェクトを前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定される記憶位置に書き込むステップとを含む、方法。

請求項7

前記OSDによって、前記書込み予定のストリップを使用して接合オブジェクトを作成することは、前記OSDによって、そのオフセットが前記書込み予定のストリップの前記オフセットとは異なるストリップを取得するために、前記書込み予定のストリップの前記オブジェクトIDのオブジェクトセットに属するバックアップオブジェクトから最新のスナップショット時刻を有するオブジェクトを選択し、前記書込み予定のストリップおよびそのオフセットが前記書込み予定のストリップの前記オフセットとは異なる前記ストリップを使用して前記接合オブジェクトを共同して構成することを特に含み、前記OSDに記憶されているとともに、そのオブジェクトIDが前記書込み予定のストリップの前記オブジェクトIDと同一であり、そのバージョン番号が前記書込み予定のストリップの前記バージョン番号とは異なるオブジェクトのセットは、前記書込み予定のストリップの前記オブジェクトIDの前記オブジェクトセットとしてみなされる、請求項6に記載の方法。

請求項8

前記クライアントサーバによって送信されたストリップ書込み要求を受信するステップの前に、前記方法は、前記クライアントサーバによって、前記書込み予定のストリップが属する前記ファイルまたは前記ボリュームのスナップショットを作成し、前記最新のスナップショットの前記スナップショットIDを生成するステップと、前記最新のスナップショットの前記スナップショットIDに従って前記書込み予定のストリップの前記バージョン番号を生成するステップと、前記クライアントサーバによって、前記ファイルまたは前記ボリュームのメタデータに対して前記書込み予定のストリップの前記バージョン番号を更新するステップとをさらに含む、請求項6または7に記載の方法。

請求項9

データ処理方法であって、前記方法は、オブジェクトストレージデバイスOSDによって、クライアントサーバによって送信されたストリップ書込み要求を受信するステップであって、前記ストリップ書込み要求は、書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップのオフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記書込み予定のストリップの前記バージョン番号は、前記書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属するオブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトのIDである、ステップと、前記OSDによって、前記書込み予定のストリップの前記バージョン番号、前記書込み予定のストリップの前記オブジェクトID、および前記書込み予定のストリップの前記オフセットを使用して決定されるストリップがバックアップされているかどうかを決定するステップと、前記ストリップがバックアップされている場合には、前記書込み予定のストリップを、前記書込み予定のストリップの前記バージョン番号、前記書込み予定のストリップの前記オブジェクトID、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込むステップ、または、前記ストリップがバックアップされていない場合には、前記OSD内のベースバージョンのオブジェクト内にあるとともに、そのオフセットが前記書込み予定のストリップの前記オフセットであり、そのサイズが前記書込み予定のストリップのサイズであるデータを、前記書込み予定のストリップの前記バージョン番号、前記書込み予定のストリップの前記オフセット、および前記書込み予定のストリップの前記オブジェクトIDを使用して決定される前記記憶位置にバックアップすることであって、前記ベースバージョンの前記オブジェクトのオブジェクトIDは、前記書込み予定のストリップの前記オブジェクトIDと同一であり、前記ベースバージョンの前記オブジェクトのバージョン番号は、ベースバージョン番号である、バックアップすることを行い、前記書込み予定のストリップを、前記書込み予定のストリップの前記オブジェクトID、前記ベースバージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込むステップとを含む、方法。

請求項10

前記クライアントサーバによって送信されたストリップ書込み要求を受信するステップの前に、前記方法は、前記クライアントサーバによって、前記書込み予定のストリップが属する前記ファイルまたは前記ボリュームのスナップショットを作成し、前記最新のスナップショットの前記スナップショットIDを生成するステップと、前記最新のスナップショットの前記スナップショットIDに従って前記書込み予定のストリップの前記バージョン番号を生成するステップとをさらに含む、請求項9に記載の方法。

請求項11

前記方法は、前記クライアントサーバによって、前記ファイルまたは前記ボリュームのメタデータに対して前記書込み予定のストリップの前記バージョン番号を更新するステップをさらに含む、請求項10に記載の方法。

請求項12

前記OSDによって、ストリップ書込み要求を受信するステップの前に、前記方法は、前記クライアントサーバによって、ファイル書込み要求を受信するステップであって、前記ファイル書込み要求は、書込み予定のデータ、前記書込み予定のデータのオフセット、およびファイル名を搬送し、前記書込み予定のデータは、前記ファイルの一部である、ステップと、前記クライアントサーバによって、前記ファイル名に従ってファイル識別子FIDを取得し、前記FIDに従って前記ファイルの前記メタデータに対するクエリを行って前記ファイルのバージョン番号を取得し、前記ファイルの前記バージョン番号を前記書込み予定のストリップの前記バージョン番号として使用するステップであって、前記ファイルの前記バージョン番号は、前記書込み予定のストリップが属する前記ファイルの前記最新のスナップショットの前記スナップショットIDに対応している、ステップと、前記書込み予定のデータの前記オフセットおよび前記書込み予定のデータのサイズに従って前記クライアントサーバによって、前記書込み予定のデータを前記書込み予定のストリップを含む複数のストリップに分割し、前記書込み予定のストリップが属する前記オブジェクトの前記IDを決定し、前記書込み予定のストリップの前記オフセットを取得するステップと、前記ストリップ書込み要求を作成するステップとをさらに含む、請求項9、10、または11に記載の方法。

請求項13

前記OSDによって、ストリップ書込み要求を受信するステップの前に、前記方法は、前記クライアントサーバによって、ボリューム書込み要求を受信するステップであって、前記ボリューム書込み要求は、書込み予定のデータ、前記書込み予定のデータのオフセット、およびボリューム識別子IDを搬送し、前記書込み予定のデータは、前記ボリュームの一部である、ステップと、前記クライアントサーバによって、前記ボリュームIDに従って前記ボリュームの前記メタデータに対するクエリを行って前記ボリュームのバージョン番号を取得し、前記ボリュームの前記バージョン番号を前記書込み予定のストリップの前記バージョン番号として使用するステップであって、前記ボリュームの前記バージョン番号は、前記書込み予定のストリップが属する前記ボリュームの前記最新のスナップショットの前記スナップショットIDに対応している、ステップと、前記書込み予定のデータの前記オフセットおよび前記書込み予定のデータのサイズに従って前記クライアントサーバによって、前記書込み予定のデータセグメントを前記書込み予定のストリップを含む複数のストリップに分割し、前記書込み予定のストリップが属する前記オブジェクトの前記IDを決定し、前記書込み予定のストリップの前記オフセットを取得するステップと、前記ストリップ書込み要求を作成するステップとをさらに含む、請求項9、10、または11に記載の方法。

請求項14

データ処理方法であって、前記方法は、オブジェクトストレージデバイスOSDによって、クライアントサーバによって送信されたストリップ書込み要求を受信するステップであって、前記ストリップ書込み要求は、書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップのオフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記書込み予定のストリップの前記バージョン番号は、前記書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属するオブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトのIDである、ステップと、前記OSDによって、前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定されるオブジェクトがバックアップされているかどうかを決定するステップと、前記オブジェクトがバックアップされている場合には、前記OSDによって、前記書込み予定のストリップを、前記オブジェクトID、前記オブジェクトのバージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込むステップ、または、前記オブジェクトがバックアップされていない場合には、前記OSD内のベースバージョンのオブジェクト内のデータを前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定される記憶位置にバックアップすることであって、前記ベースバージョンの前記オブジェクトのオブジェクトIDは、前記書込み予定のストリップの前記オブジェクトIDと同一であり、前記ベースバージョンの前記オブジェクトのバージョン番号は、ベースバージョン番号である、バックアップすることを行い、前記OSDによって、前記書込み予定のストリップを、前記書込み予定のストリップの前記オブジェクトID、前記ベースバージョン番号、および前記オフセットを使用して決定される記憶位置に書き込むステップとを含む、方法。

請求項15

データ読出し方法であって、前記方法は、オブジェクトストレージデバイスOSDによって、クライアントサーバによって送信されたストリップ読出し要求を受信するステップであって、前記ストリップ読出し要求は、読出し予定のストリップのサイズ、前記読出し予定のストリップのオフセット、前記読出し予定のストリップのバージョン番号、および前記読出し予定のストリップのオブジェクトIDを搬送し、前記読出し予定のストリップの前記バージョン番号は、前記読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記読出し予定のストリップの前記オブジェクトIDは、前記読出し予定のストリップが属するオブジェクトのIDである、ステップと、前記OSDによって、前記オブジェクトID、前記読出し予定のストリップの前記バージョン番号、および前記読出し予定のストリップの前記オフセットを使用して決定されるストリップがバックアップされているかどうかを決定するステップと、前記ストリップがバックアップされている場合には、前記オブジェクトID、前記読出し予定のストリップの前記バージョン番号、前記読出し予定のストリップの前記オフセット、および前記読出し予定のストリップの前記サイズを使用して決定されるデータを読み出し、前記読み出したデータを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信するステップ、または、前記ストリップがバックアップされていない場合には、オブジェクトのスナップショット時刻の降順に従って1つずつ、前記読出し予定のストリップの前記オフセットを使用して決定される記憶位置に有効データを記憶しているオブジェクトが見つかるまで、そのオブジェクトIDが前記読出し予定のストリップの前記オブジェクトIDと同一であり、そのバージョン番号が前記読出し予定のストリップの前記バージョン番号とは異なる前記オブジェクトを探索し、前記見つけた有効データを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信するステップであって、前記オブジェクトのバージョン番号は、前記読出し予定のストリップが属する前記ファイルまたは前記ボリュームの前記最新のスナップショットのものであるとともに、前記オブジェクトを生成する前に存在している前記スナップショットIDに対応している、ステップとを含む、方法。

請求項16

前記方法は、前記OSDの書込みモードがROWである場合には、前記オブジェクトの前記スナップショット時刻の前記降順がバージョン番号の降順である、または、前記OSDの書込みモードがCOWである場合には、前記オブジェクトの前記スナップショット時刻の前記降順がバージョン番号の昇順であることをさらに含む、請求項15に記載の方法。

請求項17

前記OSDによって、クライアントサーバによって送信されたストリップ書込み要求を受信するステップの前に、前記方法は、前記クライアントサーバによって、ファイル読出し要求を受信するステップであって、前記ファイル読出し要求は、ファイル名、読出し予定のデータのサイズ、および前記読出し予定のデータのオフセットを搬送し、前記読出し予定のデータは、前記ファイルの一部である、ステップと、前記クライアントサーバによって、前記ファイル名に従ってファイル識別子FIDを取得し、前記FIDに従って前記ファイルのメタデータに対するクエリを行って前記ファイルのバージョン番号を取得し、前記ファイルの前記バージョン番号を前記読出し予定のストリップの前記バージョン番号として使用するステップであって、前記ファイルの前記バージョン番号は、前記読出し予定のストリップが属する前記ファイルの前記最新のスナップショットの前記スナップショットIDに対応している、ステップと、前記読出し予定のデータの前記オフセットおよび前記読出し予定のデータの前記サイズに従って前記クライアントサーバによって、前記読出し予定のストリップが属する前記オブジェクトの前記IDを決定し、前記読出し予定のストリップの前記オフセットを取得するステップと、前記ストリップ読出し要求を生成するステップとをさらに含む、請求項15または16に記載の方法。

請求項18

前記OSDによって、クライアントサーバによって送信されたストリップ書込み要求を受信するステップの前に、前記方法は、前記クライアントサーバによって、ボリューム読出し要求を受信するステップであって、前記ボリューム読出し要求は、ボリュームID、読出し予定のデータのサイズ、および前記読出し予定のデータのオフセットを搬送し、前記読出し予定のデータは、前記ボリュームの一部である、ステップと、前記クライアントサーバによって、前記ボリュームIDに従って前記ボリュームのメタデータに対するクエリを行って前記ボリュームのバージョン番号を取得し、前記ボリュームの前記バージョン番号を前記読出し予定のストリップの前記バージョン番号として使用するステップであって、前記ボリュームの前記バージョン番号は、前記読出し予定のストリップが属する前記ボリュームの前記最新のスナップショットの前記スナップショットIDに対応している、ステップと、前記読出し予定のデータの前記オフセットおよび前記読出し予定のデータの前記サイズに従って前記クライアントサーバによって、前記読出し予定のストリップが属する前記オブジェクトの前記IDを決定し、前記読出し予定のストリップの前記オフセットを取得するステップと、前記ストリップ読出し要求を生成するステップとをさらに含む、請求項15または16に記載の方法。

請求項19

オブジェクトストレージシステムに適用される、データ読出し方法であって、前記オブジェクトストレージシステムは、オブジェクトベースストレージデバイスOSDと、クライアントサーバとを含み、前記方法は、前記OSDによって、前記クライアントサーバによって送信されたストリップ読出し要求を受信するステップであって、前記ストリップ読出し要求は、読出し予定のストリップのサイズ、前記読出し予定のストリップのオフセット、前記読出し予定のストリップのバージョン番号、および前記読出し予定のストリップのオブジェクトIDを搬送し、前記読出し予定のストリップの前記バージョン番号は、前記読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記読出し予定のストリップの前記オブジェクトIDは、前記読出し予定のストリップが属するオブジェクトのIDである、ステップと、前記OSDによって、前記オブジェクトIDおよび前記読出し予定のストリップの前記バージョン番号を使用して決定されるオブジェクトがバックアップされているかどうかを決定するステップと、前記オブジェクトがバックアップされている場合には、前記オブジェクトID、前記読出し予定のストリップの前記バージョン番号、前記読出し予定のストリップの前記オフセット、および前記読出し予定のストリップの前記サイズを使用して決定されるデータを読み出し、前記読み出したデータを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信するステップ、または、前記オブジェクトがバックアップされていない場合には、オブジェクトのスナップショット時刻の降順に従って1つずつ、前記読出し予定のストリップの前記オフセットを使用して決定される記憶位置に有効データを記憶しているオブジェクトが見つかるまで、そのオブジェクトIDが前記読出し予定のストリップの前記オブジェクトIDと同一であり、そのバージョン番号が前記読出し予定のストリップの前記バージョン番号とは異なる前記オブジェクトを探索し、前記見つけた有効データを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信するステップであって、前記オブジェクトのバージョン番号は、前記読出し予定のストリップが属する前記ファイルまたは前記ボリュームの前記最新のスナップショットのものであるとともに、前記オブジェクトを生成する前に存在している前記スナップショットIDに対応している、ステップとを含む、方法。

請求項20

データストレージ装置であって、前記装置は、クライアントサーバによって送信されたストリップ書込み要求を受信するように構成される、ストリップ要求受信モジュールであって、前記ストリップ書込み要求は、書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップのオフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記書込み予定のストリップの前記バージョン番号は、前記書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属するオブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトのIDである、ストリップ要求受信モジュールと、前記書込み予定のストリップを、前記オブジェクトID、前記書込み予定のストリップの前記バージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込むように構成される、ストリップ記憶モジュールとを備える、装置。

請求項21

データストレージ装置であって、前記装置は、クライアントサーバによって送信されたストリップ書込み要求を受信するように構成される、ストリップ要求受信モジュールであって、前記ストリップ書込み要求は、書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップのオフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記書込み予定のストリップの前記バージョン番号は、前記書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属するオブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトのIDである、ストリップ要求受信モジュールと、前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定されるオブジェクトがバックアップされているかどうかを決定するように構成される、ストリップ記憶モジュールとを備え、前記オブジェクトがバックアップされている場合には、前記ストリップ記憶モジュールは、前記書込み予定のストリップを、前記オブジェクトID、前記書込み予定のストリップの前記バージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込むようにさらに構成される、または、前記オブジェクトがバックアップされていない場合には、前記ストリップ記憶モジュールは、前記書込み予定のストリップを使用して接合オブジェクトを作成し、その後、前記接合オブジェクトを前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定される記憶位置に書き込むようにさらに構成される、装置。

請求項22

前記ストリップ記憶モジュールが前記書込み予定のストリップを使用して接合オブジェクトを作成するようにさらに構成されることは、前記ストリップ記憶モジュールが、そのオフセットが前記書込み予定のストリップの前記オフセットとは異なるストリップを取得するために、前記書込み予定のストリップの前記オブジェクトIDのオブジェクトセットに属するバックアップオブジェクトから最新のスナップショット時刻を有するオブジェクトを選択し、前記書込み予定のストリップおよびそのオフセットが前記書込み予定のストリップの前記オフセットとは異なる前記ストリップを使用して前記接合オブジェクトを共同して構成するように構成されることを特に含み、前記データストレージ装置に記憶されているとともに、そのオブジェクトIDが前記書込み予定のストリップの前記オブジェクトIDと同一であり、そのバージョン番号が前記書込み予定のストリップの前記バージョン番号とは異なるオブジェクトのセットは、前記書込み予定のストリップの前記オブジェクトIDの前記オブジェクトセットとしてみなされる、請求項21に記載の装置。

請求項23

データ処理装置であって、前記装置は、クライアントサーバによって送信されたストリップ書込み要求を受信するように構成される、ストリップ要求受信モジュールであって、前記ストリップ書込み要求は、書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップのオフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記書込み予定のストリップの前記バージョン番号は、前記書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属するオブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトのIDである、ストリップ要求受信モジュールと、前記書込み予定のストリップの前記バージョン番号、前記書込み予定のストリップの前記オブジェクトID、および前記書込み予定のストリップの前記オフセットを使用して決定されるストリップがバックアップされているかどうかを決定し、前記ストリップがバックアップされている場合には、前記書込み予定のストリップを、前記書込み予定のストリップの前記バージョン番号、前記書込み予定のストリップの前記オブジェクトID、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込む、または、前記ストリップがバックアップされていない場合には、前記データストレージ装置内のベースバージョンのオブジェクト内にあるとともに、そのオフセットが前記書込み予定のストリップの前記オフセットであり、そのサイズが前記書込み予定のストリップのサイズであるデータを、前記書込み予定のストリップの前記バージョン番号、前記書込み予定のストリップの前記オフセット、および前記書込み予定のストリップの前記オブジェクトIDを使用して決定される前記記憶位置にバックアップすることであって、前記ベースバージョンの前記オブジェクトのオブジェクトIDは、前記書込み予定のストリップの前記オブジェクトIDと同一であり、前記ベースバージョンの前記オブジェクトのバージョン番号は、ベースバージョン番号である、バックアップすることを行い、前記書込み予定のストリップを、前記書込み予定のストリップの前記オブジェクトID、前記ベースバージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込むように構成される、ストリップ記憶モジュールとを備える、装置。

請求項24

データ処理装置であって、前記装置は、クライアントサーバによって送信されたストリップ書込み要求を受信するように構成される、ストリップ要求受信モジュールであって、前記ストリップ書込み要求は、書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップのオフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記書込み予定のストリップの前記バージョン番号は、前記書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属するオブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトのIDである、ストリップ要求受信モジュールと、前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定されるオブジェクトがバックアップされているかどうかを決定し、前記オブジェクトがバックアップされている場合には、前記書込み予定のストリップを、前記オブジェクトID、前記オブジェクトのバージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込む、または、前記オブジェクトがバックアップされていない場合には、ベースバージョンのオブジェクト内のデータを前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定される記憶位置にバックアップすることであって、前記ベースバージョンの前記オブジェクトのオブジェクトIDは、前記書込み予定のストリップの前記オブジェクトIDと同一であり、前記ベースバージョンの前記オブジェクトのバージョン番号は、ベースバージョン番号である、バックアップすることを行うように構成される、ストリップ記憶モジュールであって、前記ストリップ記憶モジュールは、前記書込み予定のストリップを、前記書込み予定のストリップの前記オブジェクトID、前記ベースバージョン番号、および前記オフセットを使用して決定される記憶位置に書き込むようにさらに構成される、ストリップ記憶モジュールとを備える、装置。

請求項25

データ読出し装置であって、前記装置は、クライアントサーバによって送信されたストリップ読出し要求を受信するように構成される、ストリップ要求受信モジュールであって、前記ストリップ読出し要求は、読出し予定のストリップのサイズ、前記読出し予定のストリップのオフセット、前記読出し予定のストリップのバージョン番号、および前記読出し予定のストリップのオブジェクトIDを搬送し、前記読出し予定のストリップの前記バージョン番号は、前記読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記読出し予定のストリップの前記オブジェクトIDは、前記読出し予定のストリップが属するオブジェクトのIDである、ストリップ要求受信モジュールと、前記オブジェクトID、前記読出し予定のストリップの前記バージョン番号、および前記読出し予定のストリップの前記オフセットを使用して決定されるストリップがバックアップされているかどうかを決定し、前記ストリップがバックアップされている場合には、前記オブジェクトID、前記読出し予定のストリップの前記バージョン番号、前記読出し予定のストリップの前記オフセット、および前記読出し予定のストリップの前記サイズを使用して決定されるデータを読み出し、前記読み出したデータを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信する、または、前記ストリップがバックアップされていない場合には、オブジェクトのスナップショット時刻の降順に従って1つずつ、前記読出し予定のストリップの前記オフセットを使用して決定される記憶位置に有効データを記憶しているオブジェクトが見つかるまで、そのオブジェクトIDが前記読出し予定のストリップの前記オブジェクトIDと同一であり、そのバージョン番号が前記読出し予定のストリップの前記バージョン番号とは異なる前記オブジェクトを探索し、前記見つけた有効データを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信することであって、前記オブジェクトのバージョン番号は、前記読出し予定のストリップが属する前記ファイルまたは前記ボリュームの前記最新のスナップショットのものであるとともに、前記オブジェクトを生成する前に存在している前記スナップショットIDに対応している、送信することを行うように構成される、ストリップ読出しモジュールとを備える、装置。

請求項26

前記オブジェクトの前記スナップショット時刻の前記降順は、前記データストレージ装置の書込みモードがROWである場合には、前記オブジェクトの前記スナップショット時刻の前記降順がバージョン番号の降順である、または、前記データストレージ装置の書込みモードがCOWである場合には、前記オブジェクトの前記スナップショット時刻の前記降順がバージョン番号の昇順であることを特に含む、請求項25に記載の装置。

請求項27

データ読出し装置であって、前記装置は、クライアントサーバによって送信されたストリップ読出し要求を受信するように構成される、ストリップ要求受信モジュールであって、前記ストリップ読出し要求は、読出し予定のストリップのサイズ、前記読出し予定のストリップのオフセット、前記読出し予定のストリップのバージョン番号、および前記読出し予定のストリップのオブジェクトIDを搬送し、前記読出し予定のストリップの前記バージョン番号は、前記読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記読出し予定のストリップの前記オブジェクトIDは、前記読出し予定のストリップが属するオブジェクトのIDである、ストリップ要求受信モジュールと、前記オブジェクトIDおよび前記読出し予定のストリップの前記バージョン番号を使用して決定されるオブジェクトがバックアップされているかどうかを決定し、前記オブジェクトがバックアップされている場合には、前記オブジェクトID、前記読出し予定のストリップの前記バージョン番号、前記読出し予定のストリップの前記オフセット、および前記読出し予定のストリップの前記サイズを使用して決定されるデータを読み出し、前記読み出したデータを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信する、または、前記オブジェクトがバックアップされていない場合には、オブジェクトのスナップショット時刻の降順に従って1つずつ、前記読出し予定のストリップの前記オフセットを使用して決定される記憶位置に有効データを記憶しているオブジェクトが見つかるまで、そのオブジェクトIDが前記読出し予定のストリップの前記オブジェクトIDと同一であり、そのバージョン番号が前記読出し予定のストリップの前記バージョン番号とは異なる前記オブジェクトを探索し、前記見つけた有効データを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信することであって、前記オブジェクトのバージョン番号は、前記読出し予定のストリップが属する前記ファイルまたは前記ボリュームの前記最新のスナップショットのものであるとともに、前記オブジェクトを生成する前に存在している前記スナップショットIDに対応している、送信することを行うように構成される、ストリップ読出しモジュールとを備える、装置。

請求項28

クライアントサーバと、オブジェクトストレージデバイスとを含む、データストレージシステムであって、前記クライアントサーバは、ファイル書込み要求を受信するように構成され、前記ファイル書込み要求は、書込み予定のデータ、前記書込み予定のデータのオフセット、およびファイル名を搬送し、前記書込み予定のデータは、ファイルの一部であり、前記クライアントサーバは、前記ファイル名に従ってファイル識別子FIDを取得し、前記FIDに従って前記ファイルのメタデータに対するクエリを行って前記ファイルのバージョン番号を取得し、前記ファイルの前記バージョン番号は、前記ファイルの最新のスナップショットのスナップショットIDに対応しており、前記クライアントサーバは、前記書込み予定のデータの前記オフセットおよび前記書込み予定のデータのサイズに従って、前記書込み予定のデータを書込み予定のストリップを含む複数のストリップに分割し、前記書込み予定のストリップが属するオブジェクトのIDを決定し、前記書込み予定のストリップのオフセットを取得し、ストリップ書込み要求を作成して前記ストリップ書込み要求を前記オブジェクトストレージデバイスに送信し、前記オブジェクトストレージデバイスは、前記ストリップ書込み要求を受信するように構成され、前記ストリップ書込み要求は、前記書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップの前記オフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記ファイルの前記バージョン番号は、前記書込み予定のストリップの前記バージョン番号であり、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属する前記オブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトの前記IDであり、前記OSDは、前記書込み予定のストリップを、前記オブジェクトID、前記書込み予定のストリップの前記バージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込む、データストレージシステム。

請求項29

前記クライアントサーバは、前記クライアントサーバによって送信された前記ストリップ書込み要求を受信する前に、前記書込み予定のストリップが属する前記ファイルのスナップショットを作成し、前記最新のスナップショットの前記スナップショットIDを生成し、前記最新のスナップショットの前記スナップショットIDに従って前記書込み予定のストリップの前記バージョン番号を生成し、前記ファイルの前記メタデータに対して前記書込み予定のストリップの前記バージョン番号を更新するようにさらに構成される、請求項28に記載のシステム。

請求項30

クライアントサーバと、オブジェクトストレージデバイスとを含む、データストレージシステムであって、前記クライアントサーバは、ボリューム書込み要求を受信することであって、前記ボリューム書込み要求は、書込み予定のデータ、前記書込み予定のデータのオフセット、およびボリューム識別子IDを搬送し、前記書込み予定のデータは、ボリュームの一部である、受信することを行い、前記ボリュームIDに従って前記ボリュームのメタデータに対するクエリを行って前記ボリュームのバージョン番号を取得することであって、前記ボリュームの前記バージョン番号は、前記ボリュームの最新のスナップショットのスナップショットIDに対応している、取得することを行い、前記書込み予定のデータの前記オフセットおよび前記書込み予定のデータのサイズに従って、前記書込み予定のデータセグメントを書込み予定のストリップを含む複数のストリップに分割し、前記書込み予定のストリップが属するオブジェクトのIDを決定し、前記書込み予定のストリップのオフセットを取得し、ストリップ書込み要求を作成して前記ストリップ書込み要求を前記オブジェクトストレージデバイスに送信するように構成され、前記オブジェクトストレージデバイスは、前記ストリップ書込み要求を受信するように構成され、前記ストリップ書込み要求は、前記書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップの前記オフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記ボリュームの前記バージョン番号は、前記書込み予定のストリップの前記バージョン番号であり、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属する前記オブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトの前記IDであり、前記OSDは、前記書込み予定のストリップを、前記オブジェクトID、前記書込み予定のストリップの前記バージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込む、データストレージシステム。

請求項31

前記クライアントサーバは、前記クライアントサーバによって送信された前記ストリップ書込み要求を受信する前に、前記書込み予定のストリップが属する前記ボリュームのスナップショットを作成し、前記最新のスナップショットの前記スナップショットIDを生成し、前記最新のスナップショットの前記スナップショットIDに従って前記書込み予定のストリップの前記バージョン番号を生成し、前記ボリュームの前記メタデータに対して前記書込み予定のストリップの前記バージョン番号を更新するようにさらに構成される、請求項30に記載のシステム。

請求項32

クライアントサーバと、オブジェクトストレージデバイスとを含む、データストレージシステムであって、前記クライアントサーバは、ファイル書込み要求を受信するように構成され、前記ファイル書込み要求は、書込み予定のデータ、前記書込み予定のデータのオフセット、およびファイル名を搬送し、前記書込み予定のデータは、ファイルの一部であり、前記クライアントサービング装置は、前記ファイル名に従ってファイル識別子FIDを取得し、前記FIDに従って前記ファイルのメタデータに対するクエリを行って前記ファイルのバージョン番号を取得し、前記ファイルの前記バージョン番号は、前記ファイルの最新のスナップショットのスナップショットIDに対応しており、前記クライアントサーバは、前記書込み予定のデータの前記オフセットおよび前記書込み予定のデータのサイズに従って、前記書込み予定のデータを書込み予定のストリップを含む複数のストリップに分割し、前記書込み予定のストリップが属するオブジェクトのIDを決定し、前記書込み予定のストリップのオフセットを取得し、ストリップ書込み要求を作成して前記ストリップ書込み要求を前記オブジェクトストレージデバイスに送信し、前記オブジェクトストレージデバイスは、前記ストリップ書込み要求を受信することであって、前記ストリップ書込み要求は、前記書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップの前記オフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記書込み予定のストリップの前記バージョン番号は、前記書込み予定のストリップが属する前記ファイルの前記最新のスナップショットの前記スナップショットIDに対応しており、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属する前記オブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトの前記IDである、受信することを行い、前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定されるオブジェクトがバックアップされているかどうかを決定し、前記オブジェクトがバックアップされている場合には、前記書込み予定のストリップを、前記オブジェクトID、前記書込み予定のストリップの前記バージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込む、または、前記オブジェクトがバックアップされていない場合には、前記書込み予定のストリップを使用して接合オブジェクトを作成し、その後、前記接合オブジェクトを前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定される記憶位置に書き込むように構成される、データストレージシステム。

請求項33

前記書込み予定のストリップを使用して接合オブジェクトを作成することは、そのオフセットが前記書込み予定のストリップの前記オフセットとは異なるストリップを取得するために、前記書込み予定のストリップの前記オブジェクトIDのオブジェクトセットに属するバックアップオブジェクトから最新のスナップショット時刻を有するオブジェクトを選択し、前記書込み予定のストリップおよびそのオフセットが前記書込み予定のストリップの前記オフセットとは異なる前記ストリップを使用して前記接合オブジェクトを共同して構成することを特に含み、前記データストレージデバイスに記憶されているとともに、そのオブジェクトIDが前記書込み予定のストリップの前記オブジェクトIDと同一であり、そのバージョン番号が前記書込み予定のストリップの前記バージョン番号とは異なるオブジェクトのセットは、前記書込み予定のストリップの前記オブジェクトIDの前記オブジェクトセットとしてみなされる、請求項32に記載のシステム。

請求項34

クライアントサーバと、オブジェクトストレージデバイスとを含む、データストレージシステムであって、前記クライアントサーバは、ボリューム書込み要求を受信することであって、前記ボリューム書込み要求は、書込み予定のデータ、前記書込み予定のデータのオフセット、およびボリューム識別子IDを搬送し、前記書込み予定のデータは、ボリュームの一部である、受信することを行い、前記ボリュームIDに従って前記ボリュームのメタデータに対するクエリを行って前記ボリュームのバージョン番号を取得することであって、前記ボリュームの前記バージョン番号は、前記ボリュームの最新のスナップショットのスナップショットIDに対応している、取得することを行い、前記書込み予定のデータの前記オフセットおよび前記書込み予定のデータのサイズに従って、書込み予定のデータセグメントを前記書込み予定のストリップを含む複数のストリップに分割し、前記書込み予定のストリップが属するオブジェクトのIDを決定し、前記書込み予定のストリップのオフセットを取得し、ストリップ書込み要求を作成して前記ストリップ書込み要求を前記オブジェクトストレージ装置に送信するように構成され、前記オブジェクトストレージ装置は、前記ストリップ書込み要求を受信することであって、前記ストリップ書込み要求は、前記書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップの前記オフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記書込み予定のストリップの前記バージョン番号は、前記書込み予定のストリップが属する前記ボリュームの前記最新のスナップショットの前記スナップショットIDに対応している、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属する前記オブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトの前記IDである、受信することを行い、前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定されるオブジェクトがバックアップされているかどうかを決定し、前記オブジェクトがバックアップされている場合には、前記書込み予定のストリップを、前記オブジェクトID、前記書込み予定のストリップの前記バージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込む、または、前記オブジェクトがバックアップされていない場合には、前記書込み予定のストリップを使用して接合オブジェクトを作成し、その後、前記接合オブジェクトを前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定される記憶位置に書き込むように構成される、データストレージシステム。

請求項35

前記書込み予定のストリップを使用して接合オブジェクトを作成することは、そのオフセットが前記書込み予定のストリップの前記オフセットとは異なるストリップを取得するために、前記書込み予定のストリップの前記オブジェクトIDのオブジェクトセットに属するバックアップオブジェクトから最新のスナップショット時刻を有するオブジェクトを選択し、前記書込み予定のストリップおよびそのオフセットが前記書込み予定のストリップの前記オフセットとは異なる前記ストリップを使用して前記接合オブジェクトを共同して構成することを特に含み、前記データストレージデバイスに記憶されているとともに、そのオブジェクトIDが前記書込み予定のストリップの前記オブジェクトIDと同一であり、そのバージョン番号が前記書込み予定のストリップの前記バージョン番号とは異なるオブジェクトのセットは、前記書込み予定のストリップの前記オブジェクトIDの前記オブジェクトセットとしてみなされる、請求項34に記載のシステム。

請求項36

クライアントサーバと、オブジェクトストレージデバイスとを含む、データ読出しシステムであって、前記クライアントサーバは、ファイル読出し要求を受信することであって、前記ファイル読出し要求は、ファイル名、読出し予定のデータのサイズ、および前記読出し予定のデータのオフセットを搬送し、前記読出し予定のデータは、ファイルの一部である、受信することを行い、前記ファイル名に従ってファイル識別子FIDを取得し、前記FIDに従って前記ファイルのメタデータに対するクエリを行って前記ファイルのバージョン番号を取得することであって、前記ファイルの前記バージョン番号は、前記ファイルの最新のスナップショットのスナップショットIDに対応している、取得することを行い、前記読出し予定のデータの前記オフセットおよび前記読出し予定のデータの前記サイズに従って、読出し予定のストリップが属するオブジェクトのIDを決定し、前記読出し予定のストリップのオフセットを取得し、ストリップ読出し要求を生成して前記ストリップ読出し要求を送信するように構成され、前記オブジェクトストレージデバイスは、前記ストリップ読出し要求を受信することであって、前記ストリップ読出し要求は、前記読出し予定のストリップのサイズ、前記読出し予定のストリップの前記オフセット、前記読出し予定のストリップのバージョン番号、および前記読出し予定のストリップのオブジェクトIDを搬送し、前記読出し予定のストリップの前記バージョン番号は、前記読出し予定のストリップが属する前記ファイルの前記最新のスナップショットの前記スナップショットIDに対応しており、前記読出し予定のストリップの前記オブジェクトIDは、前記読出し予定のストリップが属する前記オブジェクトの前記IDである、受信することを行い、前記オブジェクトID、前記読出し予定のストリップの前記バージョン番号、および前記読出し予定のストリップの前記オフセットを使用して決定されるストリップがバックアップされているかどうかを決定し、前記ストリップがバックアップされている場合には、前記オブジェクトID、前記読出し予定のストリップの前記バージョン番号、前記読出し予定のストリップの前記オフセット、および前記読出し予定のストリップの前記サイズを使用して決定されるデータを読み出し、前記読み出したデータを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信する、または、前記ストリップがバックアップされていない場合には、オブジェクトのスナップショット時刻の降順に従って1つずつ、前記読出し予定のストリップの前記オフセットを使用して決定される記憶位置に有効データを記憶しているオブジェクトが見つかるまで、そのオブジェクトIDが前記読出し予定のストリップの前記オブジェクトIDと同一であり、そのバージョン番号が前記読出し予定のストリップの前記バージョン番号とは異なる前記オブジェクトを探索し、前記見つけた有効データを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信することであって、前記オブジェクトのバージョン番号は、前記読出し予定のストリップが属する前記ファイルまたはボリュームの前記最新のスナップショットのものであるとともに、前記オブジェクトを生成する前に存在している前記スナップショットIDに対応している、送信することを行うように構成される、データ読出しシステム。

請求項37

クライアントサービング装置と、オブジェクトストレージデバイスとを含む、データ読出しシステムであって、前記クライアントサーバは、ボリューム読出し要求を受信することであって、前記ボリューム読出し要求は、ボリュームID、読出し予定のデータのサイズ、および前記読出し予定のデータのオフセットを搬送し、前記読出し予定のデータは、ボリュームの一部である、受信することを行い、前記ボリュームIDに従って前記ボリュームのメタデータに対するクエリを行って前記ボリュームのバージョン番号を取得することであって、前記ボリュームの前記バージョン番号は、前記ボリュームの最新のスナップショットのスナップショットIDに対応している、取得することを行い、前記読出し予定のデータの前記オフセットおよび前記読出し予定のデータの前記サイズに従って、読出し予定のストリップが属するオブジェクトのIDを決定し、前記読出し予定のストリップのオフセットを取得し、ストリップ読出し要求を生成して前記ストリップ読出し要求を送信するように構成され、前記オブジェクトストレージデバイスは、前記ストリップ読出し要求を受信することであって、前記ストリップ読出し要求は、前記読出し予定のストリップのサイズ、前記読出し予定のストリップの前記オフセット、前記読出し予定のストリップのバージョン番号、および前記読出し予定のストリップのオブジェクトIDを搬送し、前記読出し予定のストリップの前記バージョン番号は、前記読出し予定のストリップが属するファイルまたは前記ボリュームの前記最新のスナップショットの前記スナップショットIDに対応しており、前記読出し予定のストリップの前記オブジェクトIDは、前記読出し予定のストリップが属する前記オブジェクトの前記IDである、受信することを行い、前記オブジェクトID、前記読出し予定のストリップの前記バージョン番号、および前記読出し予定のストリップの前記オフセットを使用して決定されるストリップがバックアップされているかどうかを決定し、前記ストリップがバックアップされている場合には、前記オブジェクトID、前記読出し予定のストリップの前記バージョン番号、前記読出し予定のストリップの前記オフセット、および前記読出し予定のストリップの前記サイズを使用して決定されるデータを読み出し、前記読み出したデータを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信する、または、前記ストリップがバックアップされていない場合には、オブジェクトのスナップショット時刻の降順に従って1つずつ、前記読出し予定のストリップの前記オフセットを使用して決定される記憶位置に有効データを記憶しているオブジェクトが見つかるまで、そのオブジェクトIDが前記読出し予定のストリップの前記オブジェクトIDと同一であり、そのバージョン番号が前記読出し予定のストリップの前記バージョン番号とは異なる前記オブジェクトを探索し、前記見つけた有効データを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信することであって、前記オブジェクトのバージョン番号は、前記読出し予定のストリップが属する前記ファイルまたは前記ボリュームの前記最新のスナップショットのものであるとともに、前記オブジェクトを生成する前に存在している前記スナップショットIDに対応している、送信することを行うように構成される、データ読出しシステム。

請求項38

プロセッサと、前記プロセッサに接続されている記憶媒体およびインターフェースとを備える、オブジェクトストレージデバイスであって、前記インターフェースは、クライアントサーバによって送信されたストリップ書込み要求を受信するように構成され、前記ストリップ書込み要求は、書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップのオフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記書込み予定のストリップの前記バージョン番号は、前記書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属するオブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトのIDであり、前記記憶媒体は、コンピュータプログラムを記憶しており、前記プロセッサは、前記コンピュータプログラムを起動することによって、前記書込み予定のストリップを、前記オブジェクトID、前記書込み予定のストリップの前記バージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込むステップを実行する、オブジェクトストレージデバイス。

請求項39

プロセッサと、前記プロセッサに接続されている記憶媒体およびインターフェースとを備える、オブジェクトストレージデバイスであって、前記インターフェースは、クライアントサーバによって送信されたストリップ書込み要求を受信するように構成され、前記ストリップ書込み要求は、書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップのオフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記書込み予定のストリップの前記バージョン番号は、前記書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属するオブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトのIDであり、前記記憶媒体は、コンピュータプログラムを記憶しており、前記プロセッサは、前記コンピュータプログラムを起動することによって、前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定されるオブジェクトがバックアップされているかどうかを決定するステップを実行し、前記オブジェクトがバックアップされている場合には、前記ストリップ記憶モジュールは、前記書込み予定のストリップを、前記オブジェクトID、前記書込み予定のストリップの前記バージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込むようにさらに構成される、または、前記オブジェクトがバックアップされていない場合には、前記ストリップ記憶モジュールは、前記書込み予定のストリップを使用して接合オブジェクトを作成し、その後、前記接合オブジェクトを前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定される記憶位置に書き込むようにさらに構成される、オブジェクトストレージデバイス。

請求項40

前記プロセッサが前記書込み予定のストリップを使用して接合オブジェクトを作成することは、前記プロセッサが、そのオフセットが前記書込み予定のストリップの前記オフセットとは異なるストリップを取得するために、前記書込み予定のストリップの前記オブジェクトIDのオブジェクトセットに属するバックアップオブジェクトから最新のスナップショット時刻を有するオブジェクトを選択し、前記書込み予定のストリップおよびそのオフセットが前記書込み予定のストリップの前記オフセットとは異なる前記ストリップを使用して前記接合オブジェクトを共同して構成するように構成されることを特に含み、前記データストレージデバイスに記憶されているとともに、そのオブジェクトIDが前記書込み予定のストリップの前記オブジェクトIDと同一であり、そのバージョン番号が前記書込み予定のストリップの前記バージョン番号とは異なるオブジェクトのセットは、前記書込み予定のストリップの前記オブジェクトIDの前記オブジェクトセットとしてみなされる、請求項23に記載のオブジェクトストレージデバイス。

請求項41

プロセッサと、前記プロセッサに接続されている記憶媒体およびインターフェースとを備える、オブジェクトストレージデバイスであって、前記インターフェースは、クライアントサーバによって送信されたストリップ書込み要求を受信するように構成され、前記ストリップ書込み要求は、書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップのオフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記書込み予定のストリップの前記バージョン番号は、前記書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属するオブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトのIDであり、前記記憶媒体は、コンピュータプログラムを記憶しており、前記プロセッサは、前記コンピュータプログラムを起動することによって、前記書込み予定のストリップの前記バージョン番号、前記書込み予定のストリップの前記オブジェクトID、および前記書込み予定のストリップの前記オフセットを使用して決定されるストリップがバックアップされているかどうかを決定するステップと、前記ストリップがバックアップされている場合には、前記書込み予定のストリップを、前記書込み予定のストリップの前記バージョン番号、前記書込み予定のストリップの前記オブジェクトID、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込むステップ、または、前記ストリップがバックアップされていない場合には、前記データストレージデバイス内のベースバージョンのオブジェクト内にあるとともに、そのオフセットが前記書込み予定のストリップの前記オフセットであり、そのサイズが前記書込み予定のストリップのサイズであるデータを、前記書込み予定のストリップの前記バージョン番号、前記書込み予定のストリップの前記オフセット、および前記書込み予定のストリップの前記オブジェクトIDを使用して決定される前記記憶位置にバックアップすることであって、前記ベースバージョンの前記オブジェクトのオブジェクトIDは、前記書込み予定のストリップの前記オブジェクトIDと同一であり、前記ベースバージョンの前記オブジェクトのバージョン番号は、ベースバージョン番号である、バックアップすることを行い、前記書込み予定のストリップを、前記書込み予定のストリップの前記オブジェクトID、前記ベースバージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込むステップとを実行する、オブジェクトストレージデバイス。

請求項42

プロセッサと、前記プロセッサに接続されている記憶媒体およびインターフェースとを備える、オブジェクトストレージデバイスであって、前記インターフェースは、クライアントサーバによって送信されたストリップ書込み要求を受信するように構成され、前記ストリップ書込み要求は、書込み予定のストリップ、前記書込み予定のストリップのバージョン番号、前記書込み予定のストリップのオフセット、および前記書込み予定のストリップのオブジェクトIDを搬送し、前記書込み予定のストリップの前記バージョン番号は、前記書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記書込み予定のストリップの前記オフセットは、前記書込み予定のストリップが属するオブジェクト内の前記書込み予定のストリップの位置を表しており、前記書込み予定のストリップの前記オブジェクトIDは、前記書込み予定のストリップが属する前記オブジェクトのIDであり、前記記憶媒体は、コンピュータプログラムを記憶しており、前記プロセッサは、前記コンピュータプログラムを起動することによって、前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定されるオブジェクトがバックアップされているかどうかを決定するステップと、前記オブジェクトがバックアップされている場合には、前記データストレージデバイスによって、前記書込み予定のストリップを、前記オブジェクトID、前記オブジェクトのバージョン番号、および前記書込み予定のストリップの前記オフセットを使用して決定される記憶位置に書き込むステップ、または、前記オブジェクトがバックアップされていない場合には、前記データストレージデバイスによって、ベースバージョンのオブジェクト内のデータを、前記書込み予定のストリップの前記バージョン番号および前記オブジェクトIDを使用して決定される記憶位置にバックアップするステップであって、前記ベースバージョンの前記オブジェクトのオブジェクトIDは、前記書込み予定のストリップの前記オブジェクトIDと同一であり、前記ベースバージョンの前記オブジェクトのバージョン番号は、ベースバージョン番号である、バックアップするステップと、前記データストレージデバイスによって、前記書込み予定のストリップを、前記書込み予定のストリップの前記オブジェクトID、前記ベースバージョン番号、および前記オフセットを使用して決定される記憶位置に書き込むステップとを実行する、オブジェクトストレージデバイス。

請求項43

プロセッサと、前記プロセッサに接続されている記憶媒体およびインターフェースとを備える、オブジェクトストレージデバイスであって、前記インターフェースは、クライアントサーバによって送信されたストリップ読出し要求を受信するように構成され、前記ストリップ読出し要求は、読出し予定のストリップのサイズ、前記読出し予定のストリップのオフセット、前記読出し予定のストリップのバージョン番号、および前記読出し予定のストリップのオブジェクトIDを搬送し、前記読出し予定のストリップの前記バージョン番号は、前記読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記読出し予定のストリップの前記オブジェクトIDは、前記読出し予定のストリップが属するオブジェクトのIDであり、前記記憶媒体は、コンピュータプログラムを記憶しており、前記プロセッサは、前記コンピュータプログラムを起動することによって、前記オブジェクトID、前記読出し予定のストリップの前記バージョン番号、および前記読出し予定のストリップの前記オフセットを使用して決定されるストリップがバックアップされているかどうかを決定するステップと、前記ストリップがバックアップされている場合には、前記オブジェクトID、前記読出し予定のストリップの前記バージョン番号、前記読出し予定のストリップの前記オフセット、および前記読出し予定のストリップの前記サイズを使用して決定されるデータを読み出し、前記読み出したデータを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信するステップ、または、前記ストリップがバックアップされていない場合には、オブジェクトのスナップショット時刻の降順に従って1つずつ、前記読出し予定のストリップの前記オフセットを使用して決定される記憶位置に有効データを記憶しているオブジェクトが見つかるまで、そのオブジェクトIDが前記読出し予定のストリップの前記オブジェクトIDと同一であり、そのバージョン番号が前記読出し予定のストリップの前記バージョン番号とは異なる前記オブジェクトを探索し、前記見つけた有効データを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信するステップであって、前記オブジェクトのバージョン番号は、前記読出し予定のストリップが属する前記ファイルまたは前記ボリュームの前記最新のスナップショットのものであるとともに、前記オブジェクトを生成する前に存在している前記スナップショットIDに対応している、ステップとを実行する、オブジェクトストレージデバイス。

請求項44

前記オブジェクトの前記スナップショット時刻の前記降順は、前記データストレージデバイスの書込みモードがROWである場合には、前記オブジェクトの前記スナップショット時刻の前記降順がバージョン番号の降順である、または、前記データストレージデバイスの書込みモードがCOWである場合には、前記オブジェクトの前記スナップショット時刻の前記降順がバージョン番号の昇順であることを特に含む、請求項43に記載のオブジェクトストレージデバイス。

請求項45

プロセッサと、前記プロセッサに接続されている記憶媒体およびインターフェースとを備える、オブジェクトストレージデバイスであって、前記インターフェースは、クライアントサーバによって送信されたストリップ読出し要求を受信するように構成され、前記ストリップ読出し要求は、読出し予定のストリップのサイズ、前記読出し予定のストリップのオフセット、前記読出し予定のストリップのバージョン番号、および前記読出し予定のストリップのオブジェクトIDを搬送し、前記読出し予定のストリップの前記バージョン番号は、前記読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、前記読出し予定のストリップの前記オブジェクトIDは、前記読出し予定のストリップが属するオブジェクトのIDであり、前記記憶媒体は、コンピュータプログラムを記憶しており、前記プロセッサは、前記コンピュータプログラムを起動することによって、前記オブジェクトIDおよび前記読出し予定のストリップの前記バージョン番号を使用して決定されるオブジェクトがバックアップされているかどうかを決定するステップと、前記オブジェクトがバックアップされている場合には、前記オブジェクトID、前記読出し予定のストリップの前記バージョン番号、前記読出し予定のストリップの前記オフセット、および前記読出し予定のストリップの前記サイズを使用して決定されるデータを読み出し、前記読み出したデータを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信するステップ、または、前記オブジェクトがバックアップされていない場合には、オブジェクトのスナップショット時刻の降順に従って1つずつ、前記読出し予定のストリップの前記オフセットを使用して決定される記憶位置に有効データを記憶しているオブジェクトが見つかるまで、そのオブジェクトIDが前記読出し予定のストリップの前記オブジェクトIDと同一であり、そのバージョン番号が前記読出し予定のストリップの前記バージョン番号とは異なる前記オブジェクトを探索し、前記見つけた有効データを前記読出し予定のストリップとして使用し、前記読出し予定のストリップを前記クライアントサーバに送信するステップであって、前記オブジェクトのバージョン番号は、前記読出し予定のストリップが属する前記ファイルまたは前記ボリュームの前記最新のスナップショットのものであるとともに、前記オブジェクトを生成する前に存在している前記スナップショットIDに対応している、ステップとを実行する、オブジェクトストレージデバイス。

技術分野

0001

本発明は、ストレージ分野に関し、詳細には、データ処理方法、装置、およびシステムに関する。

背景技術

0002

オブジェクトベースストレージシステム(Object-based Storage System)は、分散ストレージシステムであり、ストレージサーバと、オブジェクトベースストレージデバイス(Object-based Storage Device、OSD)とを含む。オブジェクトベースストレージシステムをオブジェクトストレージシステムと称してもよく、オブジェクトベースストレージデバイスをオブジェクトストレージデバイスと称してもよい。オブジェクトストレージシステムにおいては、オブジェクトが最も基本的なコンテンツ記憶単位として使用される。データは、ファイルまたはボリュームであり得る。ファイルを例として使用する、ここで、ファイルはフラグメントに分割され、ファイルフラグメントは属性情報を有し、ファイルフラグメント、ファイルフラグメントのメタデータ、およびファイルフラグメントの属性はオブジェクトを共同して構成し得るし、オブジェクトは複数のOSDに記憶される。

0003

オブジェクトストレージシステムは、スナップショット(Snapshot)機能を提供している。スナップショットは、特定のデータセットコピーであり、コピーは、あるタイムポイント(コピーの開始タイムポイント)における対応するデータのイメージマークを付ける。

0004

ファイルを例として使用する。スナップショットが作成された後に、ファイル全体またはファイルのデータの一部が変更されると、変更後のデータをストレージシステムに記憶する必要がある。従来技術では、オブジェクトIDがオブジェクトの一意な識別子として使用されており、同一のファイルが更新されると、更新後のデータを新規オブジェクトIDとしてストレージデバイスに記憶する必要がある。ファイルが頻繁に更新されると、オブジェクトIDの総数が非常に大きくなり、このことが、相対的に大きなストレージ領域占有し、システムリソースのロスを増大させている。

課題を解決するための手段

0005

本発明は、オブジェクトIDの総数を低減するとともにオブジェクトIDによって占有されるストレージ領域を低減することができるデータ管理技術を提供している。

0006

第1の態様に従って、本発明の実施形態は、データストレージ方法を提供しており、データストレージ方法は、オブジェクトストレージデバイスOSDによって、クライアントサーバによって送信されたストリップ書込み要求を受信するステップであって、ストリップ書込み要求は、書込予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを搬送し、書込み予定のストリップのバージョン番号は、書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、書込み予定のストリップのオフセットは、書込み予定のストリップが属するオブジェクト内の書込み予定のストリップの位置を表しており、書込み予定のストリップのオブジェクトIDは、書込み予定のストリップが属するオブジェクトのIDである、ステップと、OSDによって、書込み予定のストリップを、オブジェクトID、書込み予定のストリップのバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込むステップとを含む。

0007

第2の態様に従って、本発明の実施形態は、データストレージ方法を提供しており、データストレージ方法は、オブジェクトストレージデバイスOSDによって、クライアントサーバによって送信されたストリップ書込み要求を受信するステップであって、ストリップ書込み要求は、書込み予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを搬送し、書込み予定のストリップのバージョン番号は、書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、書込み予定のストリップのオフセットは、書込み予定のストリップが属するオブジェクト内の書込み予定のストリップの位置を表しており、書込み予定のストリップのオブジェクトIDは、書込み予定のストリップが属するオブジェクトのIDである、ステップと、OSDによって、書込み予定のストリップのバージョン番号およびオブジェクトIDを使用して決定されるオブジェクトがバックアップされているかどうかを決定するステップと、オブジェクトがバックアップされている場合には、OSDによって、書込み予定のストリップを、オブジェクトID、書込み予定のストリップのバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込むステップ、または、オブジェクトがバックアップされていない場合には、OSDによって、書込み予定のストリップを使用して接合オブジェクトを作成し、その後、接合オブジェクトを書込み予定のストリップのバージョン番号およびオブジェクトIDを使用して決定される記憶位置に書き込むステップとを含む。

0008

第3の態様に従って、本発明の実施形態は、データストレージ方法を提供しており、データストレージ方法は、オブジェクトストレージデバイスOSDによって、クライアントサーバによって送信されたストリップ書込み要求を受信するステップであって、ストリップ書込み要求は、書込み予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを搬送し、書込み予定のストリップのバージョン番号は、書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、書込み予定のストリップのオフセットは、書込み予定のストリップが属するオブジェクト内の書込み予定のストリップの位置を表しており、書込み予定のストリップのオブジェクトIDは、書込み予定のストリップが属するオブジェクトのIDである、ステップと、OSDによって、書込み予定のストリップのバージョン番号、書込み予定のストリップのオブジェクトID、および書込み予定のストリップのオフセットを使用して決定されるストリップがバックアップされているかどうかを決定するステップと、ストリップがバックアップされている場合には、書込み予定のストリップを、書込み予定のストリップのバージョン番号、書込み予定のストリップのオブジェクトID、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込むステップ、または、ストリップがバックアップされていない場合には、OSD内のベースバージョンのオブジェクト内にあるとともに、そのオフセットが書込み予定のストリップのオフセットであり、そのサイズが書込み予定のストリップのサイズであるデータを、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを使用して決定される記憶位置にバックアップすることであって、ベースバージョンのオブジェクトのオブジェクトIDは、書込み予定のストリップのオブジェクトIDと同一であり、ベースバージョンのオブジェクトのバージョン番号は、ベースバージョン番号である、バックアップすることを行い、書込み予定のストリップを、書込み予定のストリップのオブジェクトID、ベースバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込むステップとを含む。

0009

第4の態様に従って、本発明の実施形態は、データストレージ方法を提供しており、データストレージ方法は、オブジェクトストレージデバイスOSDによって、クライアントサーバによって送信されたストリップ書込み要求を受信するステップであって、ストリップ書込み要求は、書込み予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを搬送し、書込み予定のストリップのバージョン番号は、書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、書込み予定のストリップのオフセットは、書込み予定のストリップが属するオブジェクト内の書込み予定のストリップの位置を表しており、書込み予定のストリップのオブジェクトIDは、書込み予定のストリップが属するオブジェクトのIDである、ステップと、OSDによって、書込み予定のストリップのバージョン番号およびオブジェクトIDを使用して決定されるオブジェクトがバックアップされているかどうかを決定するステップと、オブジェクトがバックアップされている場合には、OSDによって、書込み予定のストリップを、オブジェクトID、オブジェクトのバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込むステップ、または、オブジェクトがバックアップされていない場合には、OSD内のベースバージョンのオブジェクト内のデータを書込み予定のストリップのバージョン番号およびオブジェクトIDを使用して決定される記憶位置にバックアップすることであって、ベースバージョンのオブジェクトのオブジェクトIDは、書込み予定のストリップのオブジェクトIDと同一であり、ベースバージョンのオブジェクトのバージョン番号は、ベースバージョン番号である、バックアップすることを行い、OSDによって、書込み予定のストリップを、書込み予定のストリップのオブジェクトID、ベースバージョン番号、およびオフセットを使用して決定される記憶位置に書き込むステップとを含む。

0010

第5の態様に従って、本発明の実施形態は、データ読出し方法を提供しており、データ読出し方法は、オブジェクトストレージデバイスOSDによって、クライアントサーバによって送信されたストリップ読出し要求を受信するステップであって、ストリップ読出し要求は、読出し予定のストリップのサイズ、読出し予定のストリップのオフセット、読出し予定のストリップのバージョン番号、および読出し予定のストリップのオブジェクトIDを搬送し、読出し予定のストリップのバージョン番号は、読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、読出し予定のストリップのオブジェクトIDは、読出し予定のストリップが属するオブジェクトのIDである、ステップと、OSDによって、オブジェクトID、読出し予定のストリップのバージョン番号、および読出し予定のストリップのオフセットを使用して決定されるストリップがバックアップされているかどうかを決定するステップと、ストリップがバックアップされている場合には、オブジェクトID、読出し予定のストリップのバージョン番号、読出し予定のストリップのオフセット、および読出し予定のストリップのサイズを使用して決定されるデータを読み出し、読み出したデータを読出し予定のストリップとして使用し、読出し予定のストリップをクライアントサーバに送信するステップ、または、ストリップがバックアップされていない場合には、オブジェクトのスナップショット時刻降順に従って1つずつ、読出し予定のストリップのオフセットを使用して決定される記憶位置に有効データを記憶しているオブジェクトが見つかるまで、そのオブジェクトIDが読出し予定のストリップのオブジェクトIDと同一であり、そのバージョン番号が読出し予定のストリップのバージョン番号とは異なるオブジェクトを探索し、見つけた有効データを読出し予定のストリップとして使用し、読出し予定のストリップをクライアントサーバに送信するステップであって、オブジェクトのバージョン番号は、読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのものであるとともに、オブジェクトを生成する前に存在しているスナップショットIDに対応している、ステップとを含む。

0011

第6の態様に従って、本発明の実施形態は、データ読出し方法を提供しており、データ読出し方法は、OSDによって、クライアントサーバによって送信されたストリップ読出し要求を受信するステップであって、ストリップ読出し要求は、読出し予定のストリップのサイズ、読出し予定のストリップのオフセット、読出し予定のストリップのバージョン番号、および読出し予定のストリップのオブジェクトIDを搬送し、読出し予定のストリップのバージョン番号は、読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、読出し予定のストリップのオブジェクトIDは、読出し予定のストリップが属するオブジェクトのIDである、ステップと、OSDによって、オブジェクトIDおよび読出し予定のストリップのバージョン番号を使用して決定されるオブジェクトがバックアップされているかどうかを決定するステップと、オブジェクトがバックアップされている場合には、オブジェクトID、読出し予定のストリップのバージョン番号、読出し予定のストリップのオフセット、および読出し予定のストリップのサイズを使用して決定されるデータを読み出し、読み出したデータを読出し予定のストリップとして使用し、読出し予定のストリップをクライアントサーバに送信するステップ、または、オブジェクトがバックアップされていない場合には、オブジェクトのスナップショット時刻の降順に従って1つずつ、読出し予定のストリップのオフセットを使用して決定される記憶位置に有効データを記憶しているオブジェクトが見つかるまで、そのオブジェクトIDが読出し予定のストリップのオブジェクトIDと同一であり、そのバージョン番号が読出し予定のストリップのバージョン番号とは異なるオブジェクトを探索し、見つけた有効データを読出し予定のストリップとして使用し、読出し予定のストリップをクライアントサーバに送信するステップであって、オブジェクトのバージョン番号は、読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのものであるとともに、オブジェクトを生成する前に存在しているスナップショットIDに対応している、ステップとを含む。

0012

第7の態様に従って、本発明の実施形態は、データ処理装置を提供しており、データ処理装置は、クライアントサーバによって送信されたストリップ書込み要求を受信するように構成される、ストリップ要求受信モジュールであって、ストリップ書込み要求は、書込み予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを搬送し、書込み予定のストリップのバージョン番号は、書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、書込み予定のストリップのオフセットは、書込み予定のストリップが属するオブジェクト内の書込み予定のストリップの位置を表しており、書込み予定のストリップのオブジェクトIDは、書込み予定のストリップが属するオブジェクトのIDである、ストリップ要求受信モジュールと、書込み予定のストリップを、オブジェクトID、書込み予定のストリップのバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込むように構成される、ストリップ記憶モジュールとを備える。

0013

第8の態様に従って、本発明の実施形態は、データ処理装置を提供しており、データ処理装置は、クライアントサーバによって送信されたストリップ書込み要求を受信するように構成される、ストリップ要求受信モジュールであって、ストリップ書込み要求は、書込み予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを搬送し、書込み予定のストリップのバージョン番号は、書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、書込み予定のストリップのオフセットは、書込み予定のストリップが属するオブジェクト内の書込み予定のストリップの位置を表しており、書込み予定のストリップのオブジェクトIDは、書込み予定のストリップが属するオブジェクトのIDである、ストリップ要求受信モジュールと、書込み予定のストリップのバージョン番号およびオブジェクトIDを使用して決定されるオブジェクトがバックアップされているかどうかを決定するように構成される、ストリップ記憶モジュールとを備え、
オブジェクトがバックアップされている場合には、ストリップ記憶モジュールは、書込み予定のストリップを、オブジェクトID、書込み予定のストリップのバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込むようにさらに構成される、または、オブジェクトがバックアップされていない場合には、ストリップ記憶モジュールは、書込み予定のストリップを使用して接合オブジェクトを作成し、その後、接合オブジェクトを書込み予定のストリップのバージョン番号およびオブジェクトIDを使用して決定される記憶位置に書き込むようにさらに構成される。

0014

第9の態様に従って、本発明の実施形態は、データ処理装置を提供しており、データ処理装置は、クライアントサーバによって送信されたストリップ書込み要求を受信するように構成される、ストリップ要求受信モジュールであって、ストリップ書込み要求は、書込み予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを搬送し、書込み予定のストリップのバージョン番号は、書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、書込み予定のストリップのオフセットは、書込み予定のストリップが属するオブジェクト内の書込み予定のストリップの位置を表しており、書込み予定のストリップのオブジェクトIDは、書込み予定のストリップが属するオブジェクトのIDである、ストリップ要求受信モジュールと、書込み予定のストリップのバージョン番号、書込み予定のストリップのオブジェクトID、および書込み予定のストリップのオフセットを使用して決定されるストリップがバックアップされているかどうかを決定し、ストリップがバックアップされている場合には、書込み予定のストリップを、書込み予定のストリップのバージョン番号、書込み予定のストリップのオブジェクトID、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込む、または、ストリップがバックアップされていない場合には、データストレージ装置内のベースバージョンのオブジェクト内にあるとともに、そのオフセットが書込み予定のストリップのオフセットであり、そのサイズが書込み予定のストリップのサイズであるデータを、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを使用して決定される記憶位置にバックアップすることであって、ベースバージョンのオブジェクトのオブジェクトIDは、書込み予定のストリップのオブジェクトIDと同一であり、ベースバージョンのオブジェクトのバージョン番号は、ベースバージョン番号である、バックアップすることを行い、書込み予定のストリップを、書込み予定のストリップのオブジェクトID、ベースバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込むように構成される、ストリップ記憶モジュールとを備える。

0015

第10の態様に従って、本発明の実施形態は、データ処理装置を提供しており、データ処理装置は、クライアントサーバによって送信されたストリップ書込み要求を受信するように構成される、ストリップ要求受信モジュールであって、ストリップ書込み要求は、書込み予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを搬送し、書込み予定のストリップのバージョン番号は、書込み予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、書込み予定のストリップのオフセットは、書込み予定のストリップが属するオブジェクト内の書込み予定のストリップの位置を表しており、書込み予定のストリップのオブジェクトIDは、書込み予定のストリップが属するオブジェクトのIDである、ストリップ要求受信モジュールと、書込み予定のストリップのバージョン番号およびオブジェクトIDを使用して決定されるオブジェクトがバックアップされているかどうかを決定し、オブジェクトがバックアップされている場合には、書込み予定のストリップを、オブジェクトID、オブジェクトのバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込む、または、オブジェクトがバックアップされていない場合には、ベースバージョンのオブジェクト内のデータを書込み予定のストリップのバージョン番号およびオブジェクトIDを使用して決定される記憶位置にバックアップすることであって、ベースバージョンのオブジェクトのオブジェクトIDは、書込み予定のストリップのオブジェクトIDと同一であり、ベースバージョンのオブジェクトのバージョン番号は、ベースバージョン番号である、バックアップすることを行うように構成される、ストリップ記憶モジュールであって、ストリップ記憶モジュールは、書込み予定のストリップを、書込み予定のストリップのオブジェクトID、ベースバージョン番号、およびオフセットを使用して決定される記憶位置に書き込むようにさらに構成される、ストリップ記憶モジュールとを備える。

0016

第11の態様に従って、本発明の実施形態は、データ処理装置を提供しており、データ処理装置は、クライアントサーバによって送信されたストリップ読出し要求を受信するように構成される、ストリップ要求受信モジュールであって、ストリップ読出し要求は、読出し予定のストリップのサイズ、読出し予定のストリップのオフセット、読出し予定のストリップのバージョン番号、および読出し予定のストリップのオブジェクトIDを搬送し、読出し予定のストリップのバージョン番号は、読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、読出し予定のストリップのオブジェクトIDは、読出し予定のストリップが属するオブジェクトのIDである、ストリップ要求受信モジュールと、オブジェクトID、読出し予定のストリップのバージョン番号、および読出し予定のストリップのオフセットを使用して決定されるストリップがバックアップされているかどうかを決定し、ストリップがバックアップされている場合には、オブジェクトID、読出し予定のストリップのバージョン番号、読出し予定のストリップのオフセット、および読出し予定のストリップのサイズを使用して決定されるデータを読み出し、読み出したデータを読出し予定のストリップとして使用し、読出し予定のストリップをクライアントサーバに送信する、または、ストリップがバックアップされていない場合には、オブジェクトのスナップショット時刻の降順に従って1つずつ、読出し予定のストリップのオフセットを使用して決定される記憶位置に有効データを記憶しているオブジェクトが見つかるまで、そのオブジェクトIDが読出し予定のストリップのオブジェクトIDと同一であり、そのバージョン番号が読出し予定のストリップのバージョン番号とは異なるオブジェクトを探索し、見つけた有効データを読出し予定のストリップとして使用し、読出し予定のストリップをクライアントサーバに送信することであって、オブジェクトのバージョン番号は、読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのものであるとともに、オブジェクトを生成する前に存在しているスナップショットIDに対応している、送信することを行うように構成される、ストリップ読出しモジュールとを備える。

0017

第12の態様に従って、本発明の実施形態は、データ処理装置を提供しており、データ処理装置は、クライアントサーバによって送信されたストリップ読出し要求を受信するように構成される、ストリップ要求受信モジュールであって、ストリップ読出し要求は、読出し予定のストリップのサイズ、読出し予定のストリップのオフセット、読出し予定のストリップのバージョン番号、および読出し予定のストリップのオブジェクトIDを搬送し、読出し予定のストリップのバージョン番号は、読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、読出し予定のストリップのオブジェクトIDは、読出し予定のストリップが属するオブジェクトのIDである、ストリップ要求受信モジュールと、オブジェクトIDおよび読出し予定のストリップのバージョン番号を使用して決定されるオブジェクトがバックアップされているかどうかを決定し、オブジェクトがバックアップされている場合には、オブジェクトID、読出し予定のストリップのバージョン番号、読出し予定のストリップのオフセット、および読出し予定のストリップのサイズを使用して決定されるデータを読み出し、読み出したデータを読出し予定のストリップとして使用し、読出し予定のストリップをクライアントサーバに送信する、または、オブジェクトがバックアップされていない場合には、オブジェクトのスナップショット時刻の降順に従って1つずつ、読出し予定のストリップのオフセットを使用して決定される記憶位置に有効データを記憶しているオブジェクトが見つかるまで、そのオブジェクトIDが読出し予定のストリップのオブジェクトIDと同一であり、そのバージョン番号が読出し予定のストリップのバージョン番号とは異なるオブジェクトを探索し、見つけた有効データを読出し予定のストリップとして使用し、読出し予定のストリップをクライアントサーバに送信することであって、オブジェクトのバージョン番号は、読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのものであるとともに、オブジェクトを生成する前に存在しているスナップショットIDに対応している、送信することを行うように構成される、ストリップ読出しモジュールとを備える。

0018

第13の態様に従って、本発明の実施形態は、クライアントサーバと、オブジェクトストレージデバイスとを含む、データストレージシステムを提供しており、クライアントサーバは、ファイル書込み要求を受信するように構成され、ファイル書込み要求は、書込み予定のデータ、書込み予定のデータのオフセット、およびファイル名を搬送し、書込み予定のデータは、ファイルの一部であり、クライアントサーバは、ファイル名に従ってファイル識別子FIDを取得し、FIDに従ってファイルのメタデータに対するクエリを行ってファイルのバージョン番号を取得し、書込み予定のストリップのバージョン番号としてファイルのバージョン番号を使用し、ファイルのバージョン番号は、ファイルの最新のスナップショットのスナップショットIDに対応しており、クライアントサーバは、書込み予定のデータのオフセットおよび書込み予定のデータのサイズに従って、書込み予定のデータを書込み予定のストリップを含む複数のストリップに分割し、書込み予定のストリップが属するオブジェクトのIDを決定し、書込み予定のストリップのオフセットを取得し、ストリップ書込み要求を作成し、ストリップ書込み要求をオブジェクトストレージデバイスに送信し、オブジェクトストレージデバイスは、ストリップ書込み要求を受信するように構成され、ストリップ書込み要求は、書込み予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを搬送し、書込み予定のストリップのバージョン番号は、書込み予定のストリップが属するファイルの最新のスナップショットのスナップショットIDに対応しており、書込み予定のストリップのオフセットは、書込み予定のストリップが属するオブジェクト内の書込み予定のストリップの位置を表しており、書込み予定のストリップのオブジェクトIDは、書込み予定のストリップが属するオブジェクトのIDであり、OSDは、書込み予定のストリップを、オブジェクトID、書込み予定のストリップのバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込む。

0019

第14の態様に従って、本発明の実施形態は、クライアントサーバと、オブジェクトストレージデバイスとを含む、データストレージシステムを提供しており、クライアントサーバは、ボリューム書込み要求を受信することであって、ボリューム書込み要求は、書込み予定のデータ、書込み予定のデータのオフセット、およびボリューム識別子IDを搬送し、書込み予定のデータは、ボリュームの一部である、受信することを行い、ボリュームIDに従ってボリュームのメタデータに対するクエリを行ってボリュームのバージョン番号を取得することであって、ボリュームのバージョン番号は、ボリュームの最新のスナップショットのスナップショットIDに対応している、取得することを行い、書込み予定のデータのオフセットおよび書込み予定のデータのサイズに従って、書込み予定のデータセグメントを書込み予定のストリップを含む複数のストリップに分割し、書込み予定のストリップが属するオブジェクトのIDを決定し、書込み予定のストリップのオフセットを取得し、ストリップ書込み要求を作成してストリップ書込み要求をオブジェクトストレージデバイスに送信するように構成され、オブジェクトストレージデバイスは、ストリップ書込み要求を受信するように構成され、ストリップ書込み要求は、書込み予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを搬送し、ボリュームのバージョン番号は、書込み予定のストリップのバージョン番号であり、書込み予定のストリップのオフセットは、書込み予定のストリップが属するオブジェクト内の書込み予定のストリップの位置を表しており、書込み予定のストリップのオブジェクトIDは、書込み予定のストリップが属するオブジェクトのIDであり、OSDは、書込み予定のストリップを、オブジェクトID、書込み予定のストリップのバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込む。

0020

第15の態様に従って、本発明の実施形態は、クライアントサーバと、オブジェクトストレージデバイスとを含む、データストレージシステムを提供しており、クライアントサーバは、ファイル書込み要求を受信するように構成され、ファイル書込み要求は、書込み予定のデータ、書込み予定のデータのオフセット、およびファイル名を搬送し、書込み予定のデータは、ファイルの一部であり、クライアントサービング装置は、ファイル名に従ってファイル識別子FIDを取得し、FIDに従ってファイルのメタデータに対するクエリを行ってファイルのバージョン番号を取得し、ファイルのバージョン番号は、ファイルの最新のスナップショットのスナップショットIDに対応しており、
クライアントサーバは、書込み予定のデータのオフセットおよび書込み予定のデータのサイズに従って、書込み予定のデータを書込み予定のストリップを含む複数のストリップに分割し、書込み予定のストリップが属するオブジェクトのIDを決定し、書込み予定のストリップのオフセットを取得し、ストリップ書込み要求を作成してストリップ書込み要求をオブジェクトストレージデバイスに送信し、オブジェクトストレージデバイスは、ストリップ書込み要求を受信することであって、ストリップ書込み要求は、書込み予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを搬送し、書込み予定のストリップのバージョン番号は、書込み予定のストリップが属するファイルの最新のスナップショットのスナップショットIDに対応しており、書込み予定のストリップのオフセットは、書込み予定のストリップが属するオブジェクト内の書込み予定のストリップの位置を表しており、書込み予定のストリップのオブジェクトIDは、書込み予定のストリップが属するオブジェクトのIDである、受信することを行い、書込み予定のストリップのバージョン番号およびオブジェクトIDを使用して決定されるオブジェクトがバックアップされているかどうかを決定し、オブジェクトがバックアップされている場合には、書込み予定のストリップを、オブジェクトID、書込み予定のストリップのバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込む、または、オブジェクトがバックアップされていない場合には、書込み予定のストリップを使用して接合オブジェクトを作成し、その後、接合オブジェクトを書込み予定のストリップのバージョン番号およびオブジェクトIDを使用して決定される記憶位置に書き込むように構成される。

0021

第16の態様に従って、本発明の実施形態は、クライアントサーバと、オブジェクトストレージデバイスとを含む、データストレージシステムを提供しており、クライアントサーバは、ボリューム書込み要求を受信することであって、ボリューム書込み要求は、書込み予定のデータ、書込み予定のデータのオフセット、およびボリューム識別子IDを搬送し、書込み予定のデータは、ボリュームの一部である、受信することを行い、ボリュームIDに従ってボリュームのメタデータに対するクエリを行ってボリュームのバージョン番号を取得することであって、ボリュームのバージョン番号は、ボリュームの最新のスナップショットのスナップショットIDに対応している、取得することを行い、書込み予定のデータのオフセットおよび書込み予定のデータのサイズに従って、書込み予定のデータセグメントを書込み予定のストリップを含む複数のストリップに分割し、書込み予定のストリップが属するオブジェクトのIDを決定し、書込み予定のストリップのオフセットを取得し、ストリップ書込み要求を作成してストリップ書込み要求をオブジェクトストレージデバイスに送信するように構成され、オブジェクトストレージデバイスは、ストリップ書込み要求を受信することであって、ストリップ書込み要求は、書込み予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップのオブジェクトIDを搬送し、書込み予定のストリップのバージョン番号は、書込み予定のストリップが属するボリュームの最新のスナップショットのスナップショットIDに対応している、書込み予定のストリップのオフセットは、書込み予定のストリップが属するオブジェクト内の書込み予定のストリップの位置を表しており、書込み予定のストリップのオブジェクトIDは、書込み予定のストリップが属するオブジェクトのIDである、受信することを行い、書込み予定のストリップのバージョン番号およびオブジェクトIDを使用して決定されるオブジェクトがバックアップされているかどうかを決定し、オブジェクトがバックアップされている場合には、書込み予定のストリップを、オブジェクトID、書込み予定のストリップのバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込む、または、オブジェクトがバックアップされていない場合には、書込み予定のストリップを使用して接合オブジェクトを作成し、その後、接合オブジェクトを書込み予定のストリップのバージョン番号およびオブジェクトIDを使用して決定される記憶位置に書き込むように構成される。

0022

第17の態様に従って、本発明の実施形態は、クライアントサーバと、オブジェクトストレージデバイスとを含む、データ読出しシステムを提供しており、クライアントサーバは、ファイル読出し要求を受信することであって、ファイル読出し要求は、ファイル名、読出し予定のデータのサイズ、および読出し予定のデータのオフセットを搬送し、読出し予定のデータは、ファイルの一部である、受信することを行い、ファイル名に従ってファイル識別子FIDを取得し、FIDに従ってファイルのメタデータに対するクエリを行ってファイルのバージョン番号を取得し、読出し予定のストリップのバージョン番号としてファイルのバージョン番号を使用することであって、ファイルのバージョン番号は、読出し予定のストリップが属するファイルの最新のスナップショットのスナップショットIDに対応する、使用することを行い、読出し予定のデータのオフセットおよび読出し予定のデータのサイズに従って、読出し予定のストリップが属するオブジェクトのIDを決定し、読出し予定のストリップのオフセットを取得し、ストリップ読出し要求を生成および送信するように構成され、オブジェクトストレージデバイスは、ストリップ読出し要求を受信することであって、ストリップ読出し要求は、読出し予定のストリップのサイズ、読出し予定のストリップのオフセット、読出し予定のストリップのバージョン番号、および読出し予定のストリップのオブジェクトIDを搬送し、読出し予定のストリップのバージョン番号は、読出し予定のストリップが属するファイルの最新のスナップショットのスナップショットIDに対応しており、読出し予定のストリップのオブジェクトIDは、読出し予定のストリップが属するオブジェクトのIDである、受信することを行い、オブジェクトID、読出し予定のストリップのバージョン番号、および読出し予定のストリップのオフセットを使用して決定されるストリップがバックアップされているかどうかを決定し、ストリップがバックアップされている場合には、オブジェクトID、読出し予定のストリップのバージョン番号、読出し予定のストリップのオフセット、および読出し予定のストリップのサイズを使用して決定されるデータを読み出し、読み出したデータを読出し予定のストリップとして使用し、読出し予定のストリップをクライアントサーバに送信する、または、ストリップがバックアップされていない場合には、オブジェクトのスナップショット時刻の降順に従って1つずつ、読出し予定のストリップのオフセットを使用して決定される記憶位置に有効データを記憶しているオブジェクトが見つかるまで、そのオブジェクトIDが読出し予定のストリップのオブジェクトIDと同一であり、そのバージョン番号が読出し予定のストリップのバージョン番号とは異なるオブジェクトを探索し、見つけた有効データを読出し予定のストリップとして使用し、読出し予定のストリップをクライアントサーバに送信することであって、オブジェクトのバージョン番号は、読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのものであるとともに、オブジェクトを生成する前に存在しているスナップショットIDに対応している、送信することを行うように構成される。

0023

第18の態様に従って、本発明の実施形態は、クライアントサーバと、オブジェクトストレージデバイスとを含む、データ読出しシステムを提供しており、クライアントサーバは、ボリューム読出し要求を受信することであって、ボリューム読出し要求は、ボリュームID、読出し予定のデータのサイズ、および読出し予定のデータのオフセットを搬送し、読出し予定のデータは、ボリュームの一部である、受信することを行い、ボリュームIDに従ってボリュームのメタデータに対するクエリを行ってボリュームのバージョン番号を取得し、読出し予定のストリップのバージョン番号としてボリュームのバージョン番号を使用することであって、ボリュームのバージョン番号は、読出し予定のストリップが属するボリュームの最新のスナップショットのスナップショットIDに対応している、使用することを行い、読出し予定のデータのオフセットおよび読出し予定のデータのサイズに従って、読出し予定のストリップが属するオブジェクトのIDを決定し、読出し予定のストリップのオフセットを取得し、ストリップ読出し要求を生成および送信するように構成され、オブジェクトストレージデバイスは、ストリップ読出し要求を受信することであって、ストリップ読出し要求は、読出し予定のストリップのサイズ、読出し予定のストリップのオフセット、読出し予定のストリップのバージョン番号、および読出し予定のストリップのオブジェクトIDを搬送し、読出し予定のストリップのバージョン番号は、読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのスナップショットIDに対応しており、読出し予定のストリップのオブジェクトIDは、読出し予定のストリップが属するオブジェクトのIDである、受信することを行い、オブジェクトID、読出し予定のストリップのバージョン番号、および読出し予定のストリップのオフセットを使用して決定されるストリップがバックアップされているかどうかを決定し、ストリップがバックアップされている場合には、オブジェクトID、読出し予定のストリップのバージョン番号、読出し予定のストリップのオフセット、および読出し予定のストリップのサイズを使用して決定されるデータを読み出し、読み出したデータを読出し予定のストリップとして使用し、読出し予定のストリップをクライアントサーバに送信する、または、ストリップがバックアップされていない場合には、オブジェクトのスナップショット時刻の降順に従って1つずつ、読出し予定のストリップのオフセットを使用して決定される記憶位置に有効データを記憶しているオブジェクトが見つかるまで、そのオブジェクトIDが読出し予定のストリップのオブジェクトIDと同一であり、そのバージョン番号が読出し予定のストリップのバージョン番号とは異なるオブジェクトを探索し、見つけた有効データを読出し予定のストリップとして使用し、読出し予定のストリップをクライアントサーバに送信することであって、オブジェクトのバージョン番号は、読出し予定のストリップが属するファイルまたはボリュームの最新のスナップショットのものであるとともに、オブジェクトを生成する前に存在しているスナップショットIDに対応している、送信することを行うように構成される。

0024

本発明を適用することによって、オブジェクトIDとバージョン番号との組合せを従来技術におけるオブジェクトIDと置き換えるために使用しており、このことが、オブジェクトIDの数量を低減し、システムリソースのロスを低減している。

0025

本発明の実施形態における技術的ソリューションをより明確に説明するために、実施形態または従来技術を説明するために必要となる添付の図面を以下に簡単に説明する。以下の説明における添付の図面は、本発明の一部の実施形態を示しているにすぎず、他の図面をこれらの添付の図面からさらに導出し得る。

図面の簡単な説明

0026

本発明の実施形態による、オブジェクトストレージシステムのアーキテクチャ図である。
本発明による、データ処理方法の実施形態のフローチャートである。
本発明の実施形態による、ストリップ分散ポリシーの概略図である。
本発明の実施形態による、ストリップ分散ポリシーの概略図である。
ROWベースのストリップ読出しソリューションの実施形態の図である。
COWベースのストリップ読出しソリューションの実施形態の図である。
本発明による、ストレージシステムの実施形態の概略構造図である。
本発明による、ストレージシステムの実施形態の概略構成図である。

実施例

0027

本発明の実施形態において添付の図面を参照して本発明における技術的ソリューションを以下に明確かつ完全に説明する。説明した実施形態が本発明の実施形態のすべてではなく一部にすぎないことは明らかであろう。本発明の実施形態に基づいて得られる他の実施形態のすべては、本発明の保護範囲に含まれるものとする。

0028

図1に示しているように、図1は、クライアントサーバ11と、オブジェクトストレージデバイス12とを含み得る、オブジェクトストレージシステム(Object-based Storage System)のアーキテクチャ図である。オブジェクトストレージデバイス12は、オブジェクト(Object)ストレージサービスをクライアントサーバ11に提供し得る。

0029

オブジェクトベースストレージデバイス(Object-based Storage Device、OSD)をオブジェクトストレージデバイスと称してもよい。オブジェクトストレージ技術においては、ストレージシステムは、オブジェクトストレージデバイスに基づいて作成され、各オブジェクトストレージデバイスは、特定のインテリジェンスを有し得るし、オブジェクトストレージデバイス上のデータ分散を自動的に管理することができる。

0030

オブジェクトは、システム内の基本的なデータの記憶単位である。ファイルを一例として使用すると、オブジェクトは、実際のところファイルのデータの一部分とこのデータの一部分の属性情報との組合せである、ここで、属性情報は、メタデータ(Meta Data)とも称されることもあり、ファイルベースリダンダントアレイオブインペンデントディスクズ(Redundant Arrays of Independent Disks、RAID)パラメータ、データ分散、サービス品質などを定義していてもよい。しかしながら、従来のストレージシステムにおいては、ファイルまたはブロックが基本的な記憶単位として使用され、ブロックストレージシステムにおいては、システム内の各ブロックの属性を常にトラッキングする必要がさらにあり、オブジェクトは、ストレージシステムと通信することによってオブジェクトの属性を保持している。オブジェクトストレージデバイスにおいては、各オブジェクトは、オブジェクトへのアクセスを容易にするために、オブジェクト識別子(ID)を有する。

0031

OSDは、特定のインテリジェンスを有し、CPU、メモリ、および記憶媒体を有し得る。ブロックデバイスと比較して、OSDは、異なるアクセスインターフェースを提供し得る。同一のストレージシステムに1つまたは複数のOSDが存在しており、図1において、2つのOSDを例として使用する。現時点ブレード構造が、オブジェクトストレージデバイスを実装するために国際的におよび一般的に使用されている。OSDは、3つの機能を提供し得る。

0032

(1)データストレージ: OSDは、オブジェクトを管理するとともにディスクなどの記憶媒体内のオブジェクトを記憶しており、OSDは、ブロックインターフェースアクセス方式は提供しておらず、クライアントがデータを要求した場合には、データ読出しおよび書込みは、オブジェクトIDおよびオフセットを使用して行われる。

0033

(2)インテリジェント分散: OSDは、OSDのものであるCPUおよびメモリを使用してローカルに記憶されているデータの分散を最適化しており、データプリフェッチ処理をサポートしている。OSDがオブジェクトプリフェッチ処理をインテリジェントにサポートすることができるため、データ読出し速度を最適化することができる。

0034

(3) 各オブジェクトのメタデータの管理: OSDは、OSDに記憶されているオブジェクトのメタデータを管理している、ここで、メタデータは、インデックスノード(index node、inode)と称するデータ構造に記録されており、メタデータは、オブジェクトサイズおよび含まれているストリップの数量などの情報を一般的に含む。従来のネットワークアタッチトストレージ(Network Attached Storage、NAS)システムにおいては、メタデータは、ファイルサーバによって保持される。オブジェクトストレージ機構においては、メタデータはメタデータサーバによって保持され得る、または、システムにおける主なメタデータ管理作業はOSDによって実施され得る、このことが、クライアントのコストを低減している。

0035

カレントストレージモードは、コピー・オンファーストライト(Copy On First Write、COFW)である、これは、略して、コピー・オン・ライト(Copy On Write、COW)とときには称される。すなわち、新規データが初めてストレージデバイス内の記憶位置に書き込まれると、この記憶位置内の元のデータがまず読み出されて別の記憶位置(別の記憶位置は、スナップショットのために確保されている記憶位置であり、スナップショット領域と称される)に書き込まれ、その後、新規データは、ストレージデバイスに書き込まれる。1つの読出し操作と2つの書込み操作とが本実施様態において実施する必要があることが、COWの実行プロセスから分かり得よう。

0036

リダイレクト・オン・ファースト・ライト(Redirect On First Write、ROW)は、新規データを記憶するための別の方法である。ROWでは、新規データは予約記憶位置に書き込まれ、旧データの記憶位置は変化しない。COWと比較して、1つの書込み操作をROWでは低減することができる。

0037

オブジェクトストレージ技術においては、大部分のメタデータ管理作業を各インテリジェントOSDに分散していてもよく、各OSDはローカルに記憶されているデータの分散および探索を管理することに対して責任を負っている、ここで、メタデータ管理作業の90%がインテリジェントストレージデバイスに分散され、メタデータ管理作業の10%だけがメタデータサーバによって実行される、その結果、システム内のメタデータ管理のパフォーマンスを改善している。加えて、OSDは、ネットワークに接続されているデバイスであり、ディスクまたは磁気テープなどの記憶媒体を含み、十分なインテリジェンスでローカルに記憶されたデータを管理することができる。ストレージサーバは、OSDと直接通信してOSDに記憶されているデータにアクセスし、OSDがインテリジェントであるため、ファイルサーバが関与する必要はない。

0038

オブジェクトは、データとデータ属性との組合せである。データ属性は、アプリケーション要件に従って設定され得るし、データ分散、サービス品質などを含む。クライアントサーバ11は、NASプロトコルに基づいたサーバ、または、ストレージエリアネットワーク(Storage Area Network、SAN)プロトコルに基づいたサーバストレージエリアネットワークであり得る。すなわち、本発明の本実施形態は、ファイルシステムおよびブロックシステムの両方に適用可能である。

0039

ネットワークアタッチトストレージ(Network Attached Storage、NAS)内のデータについては、本発明の本実施形態におけるオブジェクトはファイルからもたらされており、ファイルは複数のフラグメントに分割され、1つのフラグメントとこのフラグメントのものである属性およびメタデータなどの情報とが1つのオブジェクトを共同して構成する。同様に、ストレージエリアネットワーク(Storage Area Network、SAN)内のデータについては、ボリューム(Volume)がフラグメントに分割される。

0040

従来技術では、オブジェクトはオブジェクトIDを使用して決定される、したがって、各オブジェクトのIDは一意である。同一のファイルが複数回更新された後では、大量のオブジェクトIDが生成され得るし、それはオブジェクトIDを記録するために大きなストレージ領域を必要とする。本発明の実施形態においては、オブジェクトは、オブジェクトIDとバージョン番号との組合せを使用して決定される。ファイルのデータが複数回更新された際に、更新後のデータのオフセット範囲が変化していない場合には、更新後のデータに対応するオブジェクトIDは変化していなくてもよく、異なるオブジェクトバージョン番号だけを更新する必要がある、その結果、システム内で保持されるオブジェクトIDの総数を低減している。加えて、本発明の実施形態におけるソリューションにおいては、オブジェクトバージョン番号とスナップショットIDとの間に対応関係が存在しており、2つのスナップショットを作成するインターバルにおいて、同一のファイル内のすべてのオブジェクトは、何回ファイル内のデータが更新されたかにかかわらず、同一のバージョン番号を使用する、したがって、バージョン番号は、非常に小さなストレージ領域を占有する。

0041

従来技術では、ファイルまたはボリュームのコンテンツが更新された後では、変更に関連したオブジェクトのメタデータに関して、ファイルレイヤ(ブロックシステムについてはボリュームのセマンティックレイヤ)に記憶されているメタデータを更新する必要があり、更新されるデータの量は比較的大きくなる。加えて、アクセスノードは、クライアントサーバを使用してOSDにアクセスし得るし、異なるアクセスノードのすべてが変更に関連したオブジェクトにアクセスする場合には、メタデータの同期をノード間で行う必要がある。特に、アクセスノードがオブジェクトのメタデータを更新した後に、別のアクセスノードをトリガして変更後のオブジェクトがあるファイル内のすべてのオブジェクトIDを一体的に更新してもよく、頻繁な同期は、深刻なメタデータの膨張の原因となる。しかしながら、本発明の実施形態において提供したソリューションにおいては、オブジェクトIDを変える必要はなく、バージョン番号だけをOSDレイヤにおいて更新する必要があり、更新されるデータの量は、従来技術におけるものよりはるかに少なくなる。加えて、本発明の実施形態におけるオブジェクトIDは、オフセットを使用して計算によって取得される。

0042

図2に示しているように、ファイル要求を例として使用して本発明によるデータ処理方法の実施形態のフローチャートを具体的に説明する。別の実施様態においては、ファイルシステムに関する各用語をブロックシステムに関する対応する用語に置き換える。例えば、ファイルをボリュームに置き換え、ファイルメタデータをボリュームメタデータに置き換え、ファイルIDをボリュームIDに置き換え、ファイルバージョン番号をボリュームバージョン番号に置き換え、ファイルIDをボリュームIDに置き換える。(1) ボリュームメタデータは、別の位置に記憶されており、inodeに記憶されていない、(2) ボリュームIDは、直接取得され得るのでボリューム名からの変換によって取得する必要はない、という点で違いがある。

0043

ステップ20:スナップショットを作成し、スナップショットIDをスナップショットに割り振る、ここで、スナップショットの対象は、ファイルまたはファイルを含むファイルシステムである、すなわち、スナップショットの対象は、ファイルを含む。

0044

スナップショットは2つの方式で作成される。一方の方式では、ファイルのスナップショットが作成され、スナップショットの対象は単一のファイルである。他方の方式では、ファイルシステムのスナップショットが作成され、スナップショットの対象はファイル全体システムである、ここで、ファイルシステムは複数のファイルを含む。2つの方式では、ファイルメタデータの記憶位置が異なる。

0045

ファイルのスナップショットを作成する方式においては、ファイルを選択してスナップショットを作成し、スナップショット名をファイルに設定し、スナップショット名が使用されていないのであれば、スナップショットIDが、ファイルのスナップショットに割り振られる。ファイルのスナップショットIDは、ファイルのメタデータとして使用され、ファイルのinode(index node)に記憶される。スナップショットIDはスナップショットのマークであることに留意されたい。例えば、スナップショットを作成するためのタイムポイントがスナップショットIDとして使用される、または、漸増する番号がスナップショットを作成するためのタイムポイントの順番に従ってスナップショットIDとして使用される。

0046

ファイルシステムのスナップショットを作成する方式においては、ファイルシステムを選択してスナップショットを作成し、スナップショット名が使用されていないのであれば、スナップショットIDが、ファイルシステムのスナップショットに割り振られ、その後、割り振られたスナップショットIDは、ファイルシステムのルートinodeに記憶される。このように、ファイルシステム内の各ファイルのスナップショットIDはファイルシステムのスナップショットIDと同一であるとみなし得る。前方式との違いは、ファイルのスナップショットIDがファイルのinodeにではなくファイルシステムのルートinodeに記憶されている点にある。

0047

ファイルのスナップショットIDに加えて、ファイルメタデータは、ファイル識別子(File Identification、FID)をさらに含み、ファイルメタデータは、ファイルサイズ(Size)および書込み時刻などの情報をさらに含んでいてもよい。

0048

ステップ20は、予め設定されたステップであり、本方法の実施形態における他のステップとは相対的な独立性を有していることに留意されたい。本発明の本実施形態は、あるスナップショットが作成された後かつ次のスナップショットが作成される前にクライアントサーバおよびOSDによって行われる操作を主に説明している。

0049

ステップ21:クライアントサーバが、ファイル書込み要求を受信する、ここで、ファイル書込み要求は、書込み予定のデータ、書込み予定のデータのオフセット、およびファイル名を搬送し、書込み予定のデータは、ファイルの一部である。

0050

特に、本ステップは、クライアントサーバのファイルシステム内のプログラムによって実行され得る。ファイル書込み要求は、ファイルシステムが識別することができる書込み要求である。ファイル書込み要求は、ファイルを作成すること、または、書込み予定のデータを使用して既に存在しているファイルを更新することであり得る、ここで、書込み予定のデータは、ファイルの一部またはファイル全体である。

0051

ファイル書込み要求は、書込み予定のデータが後続のステップにおいて書込み予定のデータのオフセットに従ってストリップに分割されるように、書込み予定のデータのサイズをさらに搬送する場合がある、または、書込み予定のデータのサイズを書込み予定のデータを測定することにより取得することができるため、書込み予定のデータのサイズを搬送しない場合がある。

0052

書込み予定のデータのオフセットは、ファイル内の書込み予定のデータの相対的位置を表している。特に、書込み予定のデータのオフセットは、書込み予定のデータの開始位置とファイルヘッダとの間の距離を表していてもよい。書込み予定のデータのオフセットが0である場合には、書込み予定のデータの開始位置が書込み予定のファイルの開始位置であることを示している。書込み予定のデータのオフセットが1KBである場合には、書込み予定のデータの開始位置とファイルの開始位置との間の距離が1KBのデータサイズであることを示している。

0053

必要に応じて、ファイル書込み要求は、ファイル書込み要求のファイルパスをさらに搬送し得る、ここで、ファイルパスは、ファイルの記憶位置およびマッピング関係テーブルを示している。ファイルは、ファイルパスおよびファイル名を使用して共同して決定される。例えば、ファイルパスとファイル名との組合せは、/root/mma/a1である、ここで、/root/mma/は、ファイルパスであり、a1は、ファイル名であり、ファイルおよびマッピング関係テーブルは、パス/root/mma/に記憶されている。

0054

異なるファイルは異なるファイル名を有し得るし、同一のファイルパス内のファイル名が同一のものはない。

0055

必要に応じて、書込み要求は、マッピング関係テーブルの記憶位置をさらに搬送し得る、ここで、マッピング関係テーブルは、ファイル名とFIDとの間のマッピング関係を記録している。

0056

スナップショットが作成されるたびにスナップショットIDが生成され、各スナップショットIDは対応するファイルバージョン番号を有し、スナップショットIDはファイルバージョン番号と一対一の対応関係にある。加えて、隣接したスナップショット時刻に対応するスナップショットIDの変更ルールは、隣接したスナップショット時刻に対応するファイルバージョン番号の変更ルールと同一である。

0057

ステップ22が実行される前に、スナップショットIDとファイルバージョン番号との間のマッピング関係が記録されていてもよい。

0058

以下の2つのステップを含む。

0059

(1)現時点で最新のファイルメタデータをバックアップする、このことは、inodeをバックアップすることによって特に実施され得る。ファイルレベルのスナップショットについては、ファイルのinodeがバックアップされ、ファイルシステムレベルのスナップショットについては、ファイルシステムのinodeがバックアップされ、ファイルのinodeおよびファイルのルートinodeの両方を含む。

0060

(2) inode内のバージョン番号を更新する。クライアントサーバに設定されている書込みモードがROWである場合には、更新後のバージョン番号は、バックアップされたinodeに記憶される。クライアントサーバに設定されている書込みモードがCOWである場合には、更新後のバージョン番号は、バックアップによって生成されたinodeに記憶され、必要に応じて、バックアップされたinodeも、更新後のバージョン番号を記録し得る。例えば、inode Aがバックアップされてinode Bを生成すると、inode Aはバックアップされたinodeであり、inode Bはバックアップによって生成されたinodeである。

0061

スナップショットIDは、ステップ20において生成される。ファイルバージョン番号とスナップショットIDとの間に対応関係が存在しており、スナップショットIDはスナップショット時刻に対応している、したがって、ファイルバージョン番号とスナップショット時刻との間に対応関係が存在しているともみなし得る。対応関係は、各ファイルバージョン番号が1つの一意なスナップショットIDに対応していることを意味しており、ファイルバージョン番号の変更ルールは、スナップショットIDのものと同様である。例えば、より大きなスナップショットIDほどより大きなファイルバージョン番号を示している、または、より大きなスナップショットIDほどより小さなファイルバージョン番号を示している。複数のスナップショットのうちより最近のスナップショット時刻を有するスナップショットは、より大きなIDを有する。

0062

SANを含むブロックシステムに基づいたデータ書込み方法においては、ボリュームがファイル名の代わりにボリュームIDを使用してマークされており、ボリュームIDの機能はFIDのものと同様であることに留意されたい。加えて、ボリュームにおいては、ファイルパスと同様の概念は存在しない。したがって、マッピング関係テーブルに対するクエリを行うステップはステップ22ではもはや必要ではなく、ボリュームIDを使用してボリュームメタデータに対するクエリを直接行ってファイルバージョン番号を取得し得る。

0063

ステップ22:クライアントサーバが、ファイル名を使用してマッピング関係テーブルに対するクエリを行って、書込み予定のデータがあるファイルのファイル識別子(FID)を取得し、FIDに従ってファイルメタデータに対するクエリを行ってファイルバージョン番号を取得する。

0064

マッピング関係テーブルは、ファイル名とFIDとの間のマッピング関係を記録しており、ファイル名は、FIDと一対一の対応関係にある。マッピング関係テーブルの記憶位置は、ファイル書込み要求において搬送されてもよく、書込み要求からクライアントサーバによって取得される、または、マッピング関係テーブルは、クライアントサーバによってクライアントサーバに予め記憶されていてもよく、クライアントサーバは、ファイルパスに従ってマッピング関係テーブルを探し出す、または、マッピング関係テーブルは、別のストレージデバイスに記憶されていてもよい。

0065

取得したファイルバージョン番号をメタデータに対してさらに更新してもよい。更新の後、ファイルメタデータは、FIDおよびファイルバージョン番号を記録し、ファイルバージョン番号は、FIDを使用してファイルメタデータに対するクエリを行うことによって取得され得る。ファイルメタデータは、inodeに関する情報に記憶され得る。ファイルパスは、inodeの記憶位置を示している。ROWについては、バージョン番号がバックアップされたinodeに記憶されているため、バックアップされたinodeが本ステップにおいて読み出されることが、前述の説明から分かり得よう。COWについては、バージョン番号がバックアップによって生成されたinodeに記憶されているため、バックアップによって生成されたinodeが本ステップにおいて読み出される。

0066

ファイルバージョン番号とファイルのスナップショットIDとの間に一対一の対応関係が存在しており、スナップショットIDを生成した後に、クライアントサーバは、スナップショットIDと一対一の対応関係にあるファイルバージョン番号を生成する。例えば、スナップショットIDはファイルバージョン番号として直接使用され得る、または、操作を行った後に取得したスナップショットIDはファイルバージョン番号として使用され得る。より最近に作成されたスナップショットがより大きなスナップショットIDを有している場合には、オプションの方式としては、より最近に作成されたスナップショットがスナップショットIDのより大きな値を有するものがあり、別のオプションの方式としては、より最近に作成されたスナップショットがスナップショットIDのより小さな値を有するものがある。

0067

本発明の実施形態においては、ときには書込み予定のストリップのバージョン番号も使用される。書込み予定のストリップのバージョン番号は、書込み予定のストリップが属するファイルのファイルバージョン番号である。すなわち、同一のファイルからの異なるストリップのストリップバージョン番号は同一である。同様に、オブジェクトバージョン番号(または、オブジェクトのバージョン番号)は、書込み予定のストリップが属するファイルのファイルバージョン番号である。すなわち、同一のファイルからの異なるオブジェクトのオブジェクトバージョン番号は同一である。

0068

ステップ23:クライアントサーバが、書込み予定のデータを書込み予定のストリップを含む複数のストリップ(strip)に分割し、ストリップ分散ポリシーに従って、書込み予定のストリップのオフセットおよび書込み予定のストリップが属するオブジェクトのIDを取得する、ここで、書込み予定のストリップが属するオブジェクトのIDは、オブジェクトIDとも称され得る。

0069

クライアントサーバは、ストリップサイズ(Size)に従ってデータを1つまたは複数のストリップに分割する。ストリップは、特定のサイズのデータである。書込み予定のデータのサイズが単一のストリップのサイズ以下である場合には、書込み予定のデータを1つのストリップに分割し、書込み予定のデータのサイズが単一のストリップのサイズより大きい場合には、書込み予定のデータが複数のストリップに分割される。同一のファイルから分割されたストリップのサイズは同一である。ストリップサイズ(Size)は、ファイルメタデータに記憶され得るし、この場合には、異なるファイルは、異なるストリップサイズを使用し得る。あるいは、ストリップサイズはオブジェクトが属するファイルのメタデータに記憶されていなくてもよく、ファイル全体システム内のファイルが1つのストリップサイズを共有する、この場合には、異なるファイルが同一のストリップサイズを使用し、ストリップサイズはファイルシステムのルートinodeに記憶される。オブジェクトは、ストリップを収容することができるコンテナとしてみなし得る。

0070

例えば、書込み予定のデータをいくつかのデータストリップに分割する場合には、本ステップにおけるストリップは、分割することによって取得されるデータストリップを指す、または、書込み予定のデータをデータストリップに分割した後に、データ保護をデータストリップに対して行うためにいくつかの検証ストリップをさらに生成する場合には、本ステップにおけるストリップは、データストリップおよび検証ストリップの両方を含む。

0071

各オブジェクトに含まれるストリップの総数はファイルメタデータに記憶されていてもよく、この場合には、異なるファイル内のオブジェクトに含まれるストリップの総数は異なっていてもよい、または、各オブジェクトに含まれるストリップの総数はオブジェクトが属するファイルのメタデータに記憶されていなくてもよく、この場合には、異なるファイル内のオブジェクトに含まれるストリップの総数は同一である。

0072

ファイル内の書込み予定のデータの開始位置を書込み予定のデータのオフセットから獲得してもよく、ファイル内の書込み予定のデータの終了位置を書込み予定のデータのオフセットおよび書込み予定のデータのサイズから獲得してもよいことに留意されたい。書込み予定のデータの開始位置がストリップサイズの整数倍ではない、または、終了位置の値に1を加えたものがストリップサイズの整数倍ではない場合には、書込み予定のデータは、ストリップサイズに従ってまず分割され、分割のバウンダリは、ストリップサイズの整数倍となる。そのサイズが1つのストリップ未満であるデータ(このタイプのデータはストリップのダーティデータとも称され得る)が分割した後に生成された場合には、データを補完してストリップを形成する。本ステップにおける補完操作により、特に定めのない限り、後続のステップにおいて述べるストリップおよびストリップのオフセットの両方は、補完した後に取得されるストリップおよびストリップのオフセットを指す。

0073

例えば、書込み予定のデータのオフセット範囲が4KB-300KBであるとともにストリップサイズが256KBである場合には、0KBおよび256KBが書込み予定のデータを分割するためのバウンダリとして使用され、2つのデータブロックが形成される、ここで、書込み予定のデータ内の2つのデータブロックのオフセット範囲は、それぞれ4KB-255KBおよび256KB-300KBとなる。2つのデータブロックに対して補完を行い、そのサイズが256KBである2つのストリップを形成する。前者のデータブロックを補完するために使用されるデータ(そのサイズは3KB-0KB=3KB)は前のストリップからもたらされており、後者のデータブロックを補完するために使用されるデータ(そのサイズは511KB-300KB=21KB)は次のストリップからもたらされる。書込み予定のデータのオフセットは、ファイル内の書込み予定のデータの相対的位置である。

0074

別の補完方法は、以下の通りである。書込み予定のデータの開始位置がストリップサイズの整数倍ではない、または、終了位置のオフセットの値に1を加えたものがストリップサイズの整数倍ではない場合には、補完操作をストリップの書込み予定のデータに対して行ってもよく、その結果、分割後に取得されるストリップのサイズは恒常的となり、ストリップ内にマージンが存在しなくなる。OSDに既に記憶されているデータは、補完するためのデータとして読み出され使用され得る。

0075

例えば、書込み予定のデータのオフセット範囲が4KB-300KBであるとともにストリップサイズが256KBである場合には、書込み予定のデータは、そのオフセット範囲が0KB-511KBであるデータを形成するために補完され得るし、その後、データは、各ストリップのサイズが256KBとなるように、そのオフセット範囲が0KB-255KBおよび256KB-511KBである2つのストリップに分割される。

0076

ストリップ分散ポリシーを、クライアントサーバのファイルシステムよって提供している。記載されていることは、ストリップが属するオブジェクト、すなわち、ストリップのオフセットとオブジェクトとの間の対応関係で特にあり得るストリップとオブジェクトとの間の対応関係である。

0077

オブジェクトIDはオブジェクトを一意に識別し、同一のファイルに属するオブジェクトのIDは異なっており、異なるファイル内のオブジェクトのIDも異なっている。

0078

必要に応じて、オブジェクトIDとオブジェクトが属するファイルのFIDとの間に対応関係が存在していてもよい。すなわち、例えば、このオブジェクトIDによって表されるオブジェクトをもたらすファイルを、オブジェクトIDから獲得してもよい。

0079

例えば、オブジェクトIDを生成するためのオプションの方式には次のものがある。オブジェクトIDが64ビットバイナリ番号を含む、ここで、前の32ビットはオブジェクトが属するファイルのIDであり、後の32ビットはクライアントサーバによって割り当てられ、後の32ビットはファイル内の一意であり、同一のファイル内の異なるオブジェクトの後の32ビットは異なっている。例えば、ファイル内のオブジェクトの識別子を使用する。このように、対応するFIDを、オブジェクトIDの前の32ビットから獲得してもよい。同様に、ブロック(block)システムにおいては、オブジェクトIDとボリュームIDとの間の関係も確立してもよい。

0080

オブジェクトIDを生成するための別のオプションの方式には次のものがある。オブジェクトIDが48ビットのバイナリ番号を含む、ここで、前の16ビットはファイルに対応しており、異なるファイルの前の16ビットは異なっており、後の32ビットはクライアントサーバによって割り当てられ、後の32ビットはファイル内の一意であり、同一のファイル内の異なるオブジェクトの後の32ビットは異なっている。

0081

別の実施形態においては、IDとオブジェクトが属するファイルのFIDとの間に対応関係が存在していなくてもよい。

0082

図3Aおよび図3Bは、2つの異なるストリップ分散ポリシーを示している。ストリップインデックスはファイル内のストリップのオフセット関係を表しており、ストリップインデックスは0以上の整数である、ここで、最小のストリップインデックスは0であり、2番目に最小のストリップインデックスは1であり、3番目に最小のストリップインデックスは2であり、…、などとなっている。隣接したインデックス値を有する2つのストリップはまた、ファイル内の隣接したオフセットを有する。

0083

(1) 同一のファイルに属するオブジェクトのサイズは固定であり、同一のファイル内のストリップのサイズは同一である、このことは、異なるオブジェクトに含まれるストリップの総数が同一であることを意味している、(2)インデックスの順番に従ってストリップによって前のオブジェクトをまず満たしその後次のオブジェクトを満たす、すなわち、いくつかの連続したストリップが、書込み予定のデータ内のストリップのオフセットサイズの序列に従って同一のオブジェクトに属することになる、オプションのストリップ分散ポリシーを図3Aに示している。図3Aに示しているように、各オブジェクトは、4つのストリップを固定的に含んでいる。例えば、ストリップサイズは256KBであり、各オブジェクトは4つのストリップを有し、すなわち、オブジェクトサイズは256KB×4=1024KBである。この場合には、第1のオブジェクトはストリップ0からストリップ3を記憶し、第2のオブジェクトはストリップ4からストリップ7を記憶し、第3のオブジェクトはストリップ8からストリップ11を記憶し、…、それゆえ、第1のオブジェクトのIDは0であり、第2のオブジェクトのIDは1であり、第3のオブジェクトのIDは3であり、…となる。

0084

ストリップオフセットは、オブジェクト内のストリップの相対的位置を表すために使用され、特に、オブジェクト内のストリップの開始データの相対的位置であってもよい。ストリップオフセット=(ストリップインデックス%オブジェクト内のストリップの数量)×ストリップサイズである、ここで、%は、前の項を後の項で除算した後の剰余を計算することを指す。したがって、「ストリップインデックス%オブジェクト内のストリップの数量」の値は、ストリップインデックスをオブジェクト内のストリップの数量で除算した後に取得した剰余である。

0085

(1) 同一のファイル内のオブジェクトのサイズは固定されていない、すなわち、同一のファイルの異なるオブジェクト内のストリップの総数は異なっていてもよい、(2) オブジェクトの総数は固定されている、すなわち、異なるファイルは同一の数量のオブジェクトを有し、図3Bに示しているように、全部で3つのオブジェクトが存在している、別のオプションのストリップ分散ポリシーを図3Bに示している。例えば、ストリップサイズが256KBであるとともにオブジェクトの総数は3に固定されている場合には、第1のストリップ(ストリップ0)は第1のオブジェクト(オブジェクト0)にあり、第2のストリップ(ストリップ1)は第2のオブジェクト(オブジェクト1)にあり、…、同様に、第4のストリップ(ストリップ3)も第1のオブジェクトにあり、第5のストリップ(ストリップ4)も第2のオブジェクトにある。ストリップインデックスは、0以上の整数であり、ファイル内のストリップ間の位置関係を表している。ストリップが属するオブジェクト内の各ストリップのオフセットも決定され得るし、ファイル内のオブジェクトの識別子は、ストリップインデックスをファイル内のオブジェクトの総数で除算した後に取得した剰余であり得る。具体的な計算式は、ファイル内のオブジェクトの識別子=ストリップインデックス%ファイル内のオブジェクトの数量であるとともに、ストリップオフセット=(ストリップインデックス/オブジェクトの数量)×ストリップサイズであってもよい。

0086

ストリップインデックスは、書込み予定のデータのオフセットを使用して決定され得る。例えば、ファイル全体については、ファイルを分割した後に取得した開始データは第1のオブジェクト内のストリップ(ストリップ0)にあり、カレント書込み予定のデータのオフセットはオブジェクト1内の第5のストリップ(ストリップ4)にある。この場合には、書込み予定のデータを分割した後に生成されたストリップにおいては、第1のストリップのインデックスは4であり、別のストリップのインデックスは同様に取得される。

0087

前述したことは、ストリップが属するオブジェクトのIDを計算するための2つのソリューションを説明しており、異なるストリップ分散ポリシーに従って、別の実施形態ソリューションが存在していてもよい。異なる分散ポリシーにおいて使用されるパラメータは異なっていてもよく、これらのパラメータはクライアントサーバに対するクエリを行うことによって一般的に取得されてもよい。

0088

すべてのストリップの処理方式が同一であるため、説明のための一例として特定の「書込み予定のストリップ」だけを以下では使用している。

0089

ステップ24:クライアントサーバが、書込み予定のストリップを記憶するために使用されるOSDを選択する。

0090

特に、本ステップは、クライアントサーバのオブジェクトストレージクライアントによって実行され得る。

0091

オプションの計算方法は、書込み予定のストリップのFIDに従って、書込み予定のストリップを記憶するためのOSDを決定することである。例えば、FIDのハッシュ値は、OSDの総数で除算され、剰余は、書込み予定のストリップを記憶するためのOSDの識別子として使用される、すなわち、FIDのハッシュ値 mod OSDの総数である。別のソリューションも存在し得る。例えば、クライアントサーバは、OSDをランダムに選択してオブジェクトに属する書込み予定のストリップを記憶し、同一のオブジェクトに属するストリップは、同一のOSDに記憶され得る。

0092

加えて、ストリップを記憶するためのOSDはまた、書込み予定のストリップのものであるFIDおよびオブジェクトIDに従って共同して決定され得る。実際には、計算方法を、OSDを選択できるのであればランダムに選択してもよい。

0093

ステップ25:クライアントサーバが、ストリップ書込み要求をOSDに送信する、ここで、ストリップ書込み要求は、書込み予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのオフセット、および書込み予定のストリップが属するオブジェクトのIDを搬送し、必要に応じて、書込み予定のストリップのサイズをさらに含んでいてもよい。

0094

必要に応じて、OSDがROWおよびCOWの両方をサポートしているケースでは、OSDがクライアントサーバによって指定される書込みモードに従って書込み予定のストリップを書き込めるように、書込みモードがさらに送信されてもよい。書込みモードはROWまたはCOWである。OSDが1つの書込みモードだけをサポートしている場合には、書込みモードがOSDに送信されなくてもよい。

0095

ステップ26: OSDが、ストリップ書込み要求を受信し、書込み予定のストリップをOSDの記憶媒体に書き込む。

0096

OSDが1つの書込みモードだけをサポートしている場合には、OSDは、書込みモードがROWであるかCOWであるかを確認する必要もなく、書込み予定のストリップをデフォルト書込みモードで記憶媒体に直ぐに書き込んでもよい。

0097

データを受信する場合には、OSDはデータをバッファにまず一時的に記憶し、本ステップにおいて、バッファ内の書込み予定のデータが記憶媒体に記憶され得る。

0098

ストリップオフセットは、オブジェクト内のストリップの相対的位置を表している、これは、特に、オブジェクト内のストリップの開始データの相対的位置であってもよく、ストリップオフセット+ストリップサイズ=オブジェクト内のストリップの終了データの相対的位置であってもよい。

0099

データのバックアップマークはOSDにあり、データのバックアップマークの粒度はインデックスとしてオブジェクトIDを使用してOSDにおいてクエリが行われてもよい、または、OSDによって受信されたすべてのストリップがバックアップマークの同一の粒度に従って記憶されるようにデフォルトで設定していてもよい。同一のファイルに属するストリップは、同一のタイプの記録粒度を使用する。実際のデバイスは、オブジェクトがバックアップマークの粒度として使用されるケースのみをサポートし得る、または、ストリップがバックアップマークの粒度として使用されるケースのみをサポートし得る。この場合には、OSDは、バックアップマークの粒度についてクエリを行う必要なしに記憶することを直接行ってもよい。

0100

OSDでは、オブジェクトは、オブジェクトIDおよびバージョン番号の2つのパラメータを使用して共同して決定され得る、したがって、2つのパラメータを含むセットを本実施形態においてはオブジェクトキーパラメータと称する。オブジェクトを決定した後に、ストリップは、ストリップオフセットをさらに使用して決定され得る、すなわち、ストリップは、オブジェクトID、バージョン番号、およびストリップオフセットの3つのパラメータを使用して共同して決定され得る、したがって、3つのパラメータを含むセットをストリップキーパラメータと称する。

0101

OSDでは、オブジェクトキーパラメータは、オブジェクトを記憶するために使用される記憶位置を示し得る、特に、オブジェクトによって使用されることになる開始アドレスを示し得る。必要に応じて、オブジェクトキーパラメータは、オブジェクトによって使用されることになるアドレスセグメントを示し得る。同様に、ストリップキーパラメータはまた、ストリップを記憶するために使用される開始アドレスまたはアドレスセグメントを示し得る。開始アドレスおよびアドレスセグメントは、物理アドレスまたは論理アドレスであり得る。

0102

オブジェクトパラメータを使用して決定されるオブジェクトの記憶位置を、オブジェクトキーパラメータを使用して、探索する複数の可能なケースが存在する。あるケースにおいては、ストリップ書込み要求を受信する前に、OSDは、ストリップ書込み要求において搬送されたオブジェクトキーパラメータを既に記録しており、この一群のキーパラメータによって表されるストリップに対して記憶位置を割り振る。別のケースにおいては、OSDは、この一群のキーパラメータを記録しておらず、この一群のキーパラメータによって表されるストリップに対して記憶位置を割り振らず、ストリップ書込み要求を受信した後に、OSDは、記憶位置をこの一群のオブジェクトキーパラメータに割り振る。

0103

オブジェクトセットは、同一のオブジェクトIDおよび異なるバージョン番号を有するオブジェクトのセットである、ここで、オブジェクトセットは少なくとも1つのオブジェクトを含み、オブジェクトセットは論理的な概念であってもよく実際に分割される必要はない。

0104

オブジェクトIDは、オブジェクトにおいて搬送されたデータのものであるとともにファイル内のものであるオフセットの範囲に従って決定される。同一のファイルの複数のスナップショットを作成するとともに、スナップショットを作成するたびに変化しているデータをOSDに記憶する場合には、変化しているデータのうち同一のオフセットを有するデータは同一のオブジェクトIDを有する。

0105

OSDでは、マークが、オブジェクトまたはストリップがバックアップされているかどうかを示すために使用されている。バックアップマークの粒度は、ストリップまたはオブジェクトであってもよい。最小のマーク対象単位がストリップである場合には、バックアップマークの粒度はストリップであり、最小のマーク対象単位がオブジェクトである場合には、バックアップマークの粒度はオブジェクトである。

0106

オブジェクトのバックアップマークは、オブジェクトIDおよびバージョン番号を使用して決定されるオブジェクトが既にバックアップされていることを示している。特に、オブジェクトのバックアップマークは、バージョン番号に対応するスナップショットが作成された後にオブジェクトIDに対応するオブジェクトがバックアップされているかどうかを示している、ここで、1はオブジェクトがバックアップされていることを示し、0はオブジェクトがバックアップされていないことを示している。特にオブジェクトのバックアップマークが0である2つのケースが存在している、ここで、一方のケースについては、オブジェクトIDおよびバージョン番号を使用して決定されるオブジェクトが変更されており、バックアップ操作がまだ実行されていないことであり、他方のケースについては、オブジェクトIDおよびバージョン番号を使用して決定されるオブジェクトが変更されていないことである。

0107

ストリップのバックアップマークは、オブジェクトID、バージョン番号、およびストリップオフセットを使用して決定されるストリップが既にバックアップされていることを示している。特に、ストリップのバックアップマークは、バージョン番号に対応するスナップショットが作成された後にオブジェクトIDに対応するストリップおよびストリップオフセットがバックアップされているかどうかを示している、ここで、1はストリップがバックアップされていることを示し、0はストリップがバックアップされていないことを示している。特にストリップのバックアップマークが0である2つのケースが存在している、ここで、一方のケースについては、オブジェクトID、バージョン番号、およびストリップオフセットを使用して決定されるストリップが変更されており、バックアップ操作がまだ実行されていないことであり、他方のケースについては、オブジェクトID、バージョン番号、およびストリップオフセットを使用して決定されるストリップが変更されていないことである。

0108

オブジェクトバージョン番号を比較することによって、同一のオブジェクトセット内の異なるオブジェクトのスナップショット時刻を決定し得る。

0109

書込み予定のストリップがOSDに書き込まれる全部で4つの可能な方式が存在している。(1)書込みモードはROWであり、バックアップマークの粒度はストリップである。(2) 書込みモードはROWであり、バックアップマークの粒度はオブジェクトである。(3) 書込みモードはCOWであり、バックアップマークの粒度はストリップである。(4) 書込みモードはCOWであり、バックアップマークの粒度はオブジェクトである。OSDは、4つの可能な方式のうち1つまたは複数をサポートし得る。以下に4つの可能性を個別に説明する。

0110

方式1: ROWのためのものであり、OSD内のデータのバックアップマークの粒度はストリップである。

0111

書込み予定のストリップは、ストリップ要求内のストリップキーパラメータを使用して決定される記憶位置に従ってOSDに直接書き込まれる。加えて、書込みが完了した後に、書き込まれたストリップによって占有される記憶位置(開始ストレージアドレスまたはアドレスセグメント)は、本ステップにおいて「書き込まれた有効データ」としてさらにマークされ得る。OSDの記憶媒体に記憶されているストリップによって占有される記憶位置は、ストリップ領域とも称され得る。

0112

ビットは、オブジェクト内の各ストリップがバックアップされているかどうかを示すために使用され得る。例えば、このストリップの記憶位置のフラグビットは1に設定される、ここで、1はデータが書き込まれていることを示し、0はデータが存在していないことを示している。ストリップインデックスは、オブジェクト内のストリップの順番を表すために使用され得るし、フラグビットは、オブジェクト内の各ストリップを示すために使用される。例えば、全部で4つのストリップ領域が存在する、ここで、0000はデータが4つの部分のストリップ領域に書き込まれていないことを示し、0010はデータが第2のストリップ領域のみに書き込まれていることを示し、0101はデータが第1の部分のストリップ領域および第3の部分のストリップ領域に書き込まれているとともに、データが第2の部分のストリップ領域および第4の部分のストリップ領域に書き込まれていないことを示している。

0113

本実施形態において説明した第N(Nは自然数)の部分のストリップ領域は、ストリップが属するオブジェクト内のストリップ領域の相対的位置を指しており、ストリップインデックスを指していないことに留意されたい。

0114

オブジェクト内のストリップの識別子を決定するための方法においては、例えば、ストリップのオフセットは決定をするために使用されてもよく、より小さなオフセット値ほどより小さなストリップ識別子の値を示しており、隣接したストリップの識別子間の差は1であり、最小のストリップ識別子は0である。ストリップ分散ポリシーが本ステップにおいては図3Aに記載のポリシーである場合には、ストリップ識別子を決定するための迅速な計算方法は、ストリップ識別子=ストリップオフセット/ストリップサイズである。ストリップオフセットは、オブジェクト内のストリップのオフセットである。この部分のストリップ領域が以前に「バックアップされているもの」として既にマークされている場合には、マーキングは、このマークが変化しないのであれば本ステップにおいて繰り返し行われなくてもよい。

0115

方式2: ROWのためのものであり、OSD内のデータのバックアップマークの粒度はオブジェクトである。

0116

方式2においてバックアップマークを決定するための粒度は方式1のものと比べて異なっており、ストリップのフラグビットを決定することをオブジェクトのフラグビットを決定することに変更している。

0117

有効データがオブジェクトキーパラメータによって示される記憶位置に記憶されているかどうかを決定するために、ストリップ書込み要求において搬送されたオブジェクトキーパラメータを使用してOSDにおける書込みレコードにおいてクエリを行う。本実施形態においては、フラグビットを決定することによって、有効データが記憶位置に記憶されているかどうかを決定し得る。例えば、フラグビットが1である場合には、有効データが記憶されていることを示し、フラグビットが0である場合には、有効データが記憶位置に記憶されていないことを示す。オブジェクトキーパラメータによって示される記憶位置のフラグビットを決定することによって、ストリップ書込み要求受信したこの時刻がスナップショットを作成した後のこのオブジェクトに対して行われる第1の書込み操作であるかどうかを決定し得る。例えば、フラグビットが0である、または、フラグビットが見つからない場合には、スナップショットが作成された後の最初の書込みであることを示し、フラグビットが1である場合には、スナップショットが作成された後の最初ではない書込みを示す。

0118

ストリップ書込み要求が、スナップショットが作成された後にこのオブジェクトに対して行われた最初の書込みではない場合には、書込み予定のストリップは、このオブジェクトによって占有される記憶位置に直接書き込まれ、具体的な書込み位置は、ストリップキーパラメータを使用して決定され得る。

0119

ストリップ書込み要求が、このオブジェクトに関するものであるとともにこのオブジェクトのスナップショットが作成された後に始めて受信された書込み要求である場合には、ストリップ書込み要求内の書込み予定のストリップおよびOSD内の別のオブジェクトから取得されたストリップの組合せは、接合オブジェクト(spliced object)と称される一塊のオブジェクトに接合される。特に、残りの部分に由来するオブジェクトは、有効データを有しているオブジェクトにおける最大のバージョン番号(ただし、ストリップ要求において搬送されたバージョン番号より小さい)を有するオブジェクトである。

0120

すなわち、最大のバージョン番号を有するオブジェクトは、有効データを有しているとともに書込み予定のストリップのオブジェクトIDのオブジェクトセットに属するオブジェクトから選択され、そのオフセットが書込み予定のストリップのオフセットとは異なるストリップを取得して、書込み予定のストリップと共同して接合オブジェクトを構成する。OSDに記憶されているとともに、そのオブジェクトIDが書込み予定のストリップのオブジェクトIDと同一であり、そのバージョン番号が書込み予定のストリップのバージョン番号とは異なるオブジェクトのセットは、書込み予定のストリップのオブジェクトIDのオブジェクトセットとしてみなされる。書込みモードがROWである場合には、より最近のスナップショット時刻は、より大きな対応するオブジェクトバージョン番号を示し、書込み予定のストリップのオブジェクトIDは、書込み予定のストリップが属するオブジェクトのIDである。

0121

例えば、各オブジェクトは32個のストリップを含み、OSDによって受信された書込み予定のストリップは32個のストリップ内の15番目のストリップであるとすると、残りの31個のストリップについては、すなわち、1番目から14番目のストリップおよび16番目から32番目のストリップに由来するオブジェクトは、前回のスナップショットが作成された後にOSDに記録されるとともに有効データおよび同一のオブジェクトIDを有しているオブジェクトである。

0122

書込みが完了した後に、このオブジェクトのフラグビットをバックアップされているものとして記録する。例えば、フラグビットが1に設定されていると、このことは、スナップショットが作成された後の最初のストリップ書込み操作が完了したことを意味する、すなわち、このオブジェクト内の任意のストリップが次のスナップショットを作成する前に再び書き込まれた場合には、それは、スナップショットが作成された後にこのオブジェクトに対して行われた最初の書込みではない、したがって、バックアップ操作を行う必要はなく、ストリップは直ぐに書き込まれる。

0123

同一のオブジェクトIDが複数のオブジェクトに対応していてもよく、各スナップショットIDが1つのオブジェクトに対応しており、これらのオブジェクトが異なる時刻にOSDに書き込まれ、隣接した書込み時刻を有するオブジェクトのバージョン番号は隣接しており、より最近の書込み時刻がより大きなバージョン番号を示していることが、前述の説明から分かり得よう。

0124

この書込み操作が完了した後に、この時刻に新たに書き込まれたオブジェクトは、オブジェクトセットにおける新規メンバとなる。

0125

方式3:書込みモードはCOWであり、データのバックアップマークの粒度はストリップである。

0126

記憶位置は、ストリップ書込み要求内のオブジェクトキーパラメータおよびストリップオフセットを使用して決定され得る。データが書込み予定のストリップのキーパラメータを使用して決定される記憶位置に既に記憶されているかどうかがまず決定され、決定の結果が、データが書込み予定のストリップのキーパラメータを使用して決定される記憶位置に記憶されていないこと、または、レコードが見つからないことである場合には、この書込み要求がスナップショットが作成された後の最初の書込み要求であることを意味しており、バックアップ操作をまず行う必要があり、その後、書込み予定のストリップが書き込まれる。

0127

一般的なケースにおいては、次のスナップショットを作成する前かつ最初のストリップ書込み要求だけを受信した後では、ストリップデータをバックアップする必要があり、データは、書込み予定のストリップのオブジェクトID、書込み予定のストリップのバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置にバックアップされる。したがって、OSDに記憶されている最新のストリップは、書込み予定のストリップのキーパラメータによって示される記憶位置にまずバックアップする必要があり、ストリップ受信したこの時刻が、その後、データがバックアップされた記憶位置に書き込まれる。OSDに記憶されている最新のストリップは、クライアントサーバによって送信された最新のストリップである。本実施形態においては、最新のストリップは、OSDに記憶されているストリップのうちの、書込み予定のストリップのオブジェクトIDを有している、そのバージョン番号は0である、ストリップであり、オフセットは、書込み予定のストリップのオフセットと同一である。ストリップ書込み要求が以降に受信された場合には、書込み予定のストリップの書込み操作を直ぐに行ってもよく、バックアップを行う必要はない。

0128

COWでは、OSDに記憶されている最新のオブジェクトは、同一のバージョン番号を常に使用している。例えば、0またはヌル(Null)はバージョン番号として使用される、これを本実施形態においてはベースバージョン番号と称する。オブジェクトセット内の他のオブジェクトにおいて、およびベースバージョン番号を除いたバージョン番号において、より小さなバージョン番号を有するオブジェクトは、より最近の対応するスナップショット時刻を有する。

0129

ROWまたはCOWでは、ファイルの最初のスナップショットを作成する前に、データがOSDに書き込まれると、使用されているストリップバージョン番号はベースバージョン番号である。ベースバージョン番号の値は、0またはヌル(NULL)であり得る。

0130

バックアップ操作が完了した後に、ストリップ書込み要求において搬送されたストリップキーパラメータによって示される記憶位置がデータを既に記憶していることがマークされる。次のスナップショットを作成する前に、OSDが再びこの書込み予定のストリップのオフセットの位置に対するCOW書込み要求を受信した場合には、データはもはや移行されない可能性があり、受信したストリップは、そのバージョン番号は0であるオブジェクト内の、書込み予定のストリップのオフセットによって占有されている、記憶位置に上書き方式で書き込まれる。つまり、書込み予定のストリップは、書込み予定のストリップのオブジェクトID、ベースバージョン番号、および書込み予定のストリップのオフセットを使用して決定される記憶位置に書き込まれる。

0131

加えて、本ステップにおいては、書込み予定のストリップが書き込まれる記憶位置が既に有効データを既に記憶していることがさらにマークされ得るし、具体的なマーキング方法については、方式1を参照してもよい。

0132

方式4:書込みモードはCOWであり、OSD内のデータのバックアップマークの粒度はオブジェクトである。

0133

方式4と方式3との違いは、データのバックアップマークの粒度がストリップからオブジェクトに変更されており、バックアップ粒度もストリップからオブジェクトに変更されていることにある。

0134

記憶位置は、ストリップ書込み要求内のオブジェクトキーパラメータを使用して決定され得る。OSDは、オブジェクトキーパラメータを使用してOSDの書込みレコードにおけるクエリを行い、有効データが書込み予定のストリップのオブジェクトキーパラメータによって示される記憶位置に記憶されているかどうかを決定する。方式1における説明と同様に、フラグビットは、本実施形態においてはオブジェクトを示すために使用され得る。例えば、フラグビット1は有効データが記憶されていることを示し、フラグビットが0である、またはオブジェクトキーパラメータのフラグビットがOSDの書込みレコード内で見つからない場合には、有効データが記憶されていないことを示す。

0135

一般的なケースにおいては、次のスナップショットを作成する前かつ、最初のストリップ書込み要求だけを受信した後では、オブジェクトデータをバックアップする必要がある。特に、有効データが記憶されている場合には、書込み予定のストリップのオブジェクトIDおよび書込み予定のストリップのバージョン番号を使用して共同して決定されるオブジェクトがスナップショットが作成された後に既にバックアップされており、バックアップを再び行う必要がないことを意味し、有効データが記憶されていない、または、ストリップ書込み要求内のオブジェクトキーパラメータのレコードがOSD内で見つからない場合には、バックアップを本ステップにおいてまず行う必要があり、その後、ストリップ書込み要求受信したこの時刻における書込み予定のストリップを書き込むことができることを意味する。

0136

有効データがオブジェクトキーパラメータによって示される記憶位置に既に記憶されている場合には、書込み予定のストリップは、書込み予定のストリップのオブジェクトID、バージョン番号0、および書込み予定のストリップのオフセットを使用して共同して決定される位置に直接書き込まれる。

0137

有効データがオブジェクトキーパラメータによって示される記憶位置に記憶されていない場合には、バージョン0のオブジェクト内のすべてのストリップは、ストリップ書込み要求内のオブジェクトキーパラメータによって示される記憶位置にまずバックアップされる。バックアップが完了した後に、ストリップ書込み要求内のオブジェクトキーパラメータによって示される記憶位置は1としてマークされ、その後、書込み予定のストリップはバージョン0のオブジェクトによって以前占有されていた記憶位置に書き込まれる、ここで、書込み位置は書込み予定のストリップのオブジェクトID、書込み予定のストリップのバージョン番号、およびベースバージョン番号を使用して決定される。

0138

ステップ26が実行された後に、OSDは、クライアントサーバに、書込み予定のストリップを記憶することに成功したことを示す応答メッセージを送信する。

0139

ステップ26は次のスナップショットを作成する前に実行されることに留意されたい。すなわち、ステップ21から26は、最初のスナップショットが作成された後かつ次のスナップショットを作成する前に実行される。ステップ21から26は、書込み予定のストリップをOSDに書き込む手続きである。OSDに既に書き込まれているストリップをどのように読み出すかを以下に説明し、読出しプロセスおよび書込みプロセスは2つの相対的に独立した方法である。

0140

ステップ27:クライアントサーバが、ファイル読出し要求を受信する、ここで、ファイル読出し要求は、ファイル名、読出し予定のデータのサイズ、および読出し予定のデータのオフセットを搬送する。

0141

ファイル書込み要求と同様に、ファイル読出し要求は、ファイル読出し要求のファイルパスをさらに搬送し得る、ここで、ファイルパスは、マッピング関係テーブルの記憶位置を記録している。ファイルは、ファイルパスおよびファイル名を使用して一意に決定され得る。

0142

特に、本ステップは、クライアントサーバのファイルシステム内のプログラムによって実行され得る。ファイル読出し要求は、ファイルシステムが識別することができる読出し要求である。ファイル読出し要求は、すべてのファイルまたはファイルのデータの一部を読み出すように要求する。

0143

読出し予定のデータのオフセットは、ファイル内の読出し予定のデータの相対的位置を表している。特に、読出し予定のデータのオフセットは、読出し予定のデータの開始位置とファイルヘッダとの間の距離を表していてもよい。読出し予定のデータのオフセットが0である場合には、読出し予定のデータの開始位置が読出し予定のファイルの開始位置であることを示している。読出し予定のデータのオフセットが2KBである場合には、読出し予定のデータの開始位置とファイルの開始位置との間の距離が2KBのデータサイズであることを示している。

0144

必要に応じて、ファイル読出し要求は、ファイルパスをさらに搬送し得る、ここで、ファイルパスは、マッピング関係テーブルの記憶位置を記録している。マッピング関係テーブルの詳細については、ステップ21の説明を参照されたい。

0145

ファイル名は、読出し予定のデータがあるファイルのファイル名であり得る、または、読出し予定のデータがあるファイルのスナップショットのファイル名であり得る。ファイル名が読出し予定のデータがあるファイルのファイル名である場合には、ファイル読出し要求が最新の読出し予定のデータにアクセスすることを意図していることを示し、ファイル名が読出し予定のデータがあるファイルのスナップショットのファイル名である場合には、ファイル読出し要求がスナップショットの読出し予定のデータにアクセスすることを意図していることを示す。

0146

ステップ28:クライアントサーバが、ファイル名を使用してマッピング関係テーブルに対するクエリを行って、読出し予定のデータがあるファイルのFIDを取得し、FIDに従ってファイルメタデータに対するクエリを行ってファイルバージョン番号を取得する。

0147

ファイル名が読出し予定のデータがあるファイルのファイル名である場合には、マッピング関係テーブル内にあるファイルパスは読出し予定のデータがあるファイルのファイルパスであり、ファイルバージョン番号がファイルに対応するFIDに従ってメタデータに対するクエリを行うことによって獲得される。

0148

ファイル名がスナップショットのファイル名である場合には、マッピング関係テーブル内のファイルパスは、スナップショットファイルがあるパスであり、ファイルバージョン番号がスナップショットファイルのFIDに従ってメタデータに対するクエリを行うことによって獲得される。

0149

マッピング関係テーブルは、ファイル名とFIDとの間のマッピング関係を記録しており、ファイル名は、FIDと一対一の対応関係にある。FIDの説明およびFIDとファイルバージョン番号との間の関係については、ステップ21およびステップ22を参照されたい。マッピング関係テーブルの記憶位置は、ファイル読出し要求において搬送されてもよく、読出し要求からクライアントサーバによって取得される、または、マッピング関係テーブルは、クライアントサーバによってクライアントサーバに予め記憶されていてもよく、クライアントサーバは、ファイルパスに従ってマッピング関係テーブルを探し出す、または、マッピング関係テーブルは、別のストレージデバイスに記憶されていてもよい。

0150

ステップ22を参照すれば、異なる特定のケースに従って、メタデータは、ファイルのinodeに記憶され得る、または、ファイルシステムのルートinodeに記憶され得る。

0151

スナップショットIDとファイルバージョン番号との間に一対一の対応関係が存在しており、その結果、クライアントサーバは、スナップショットIDに従ってファイルバージョン番号を取得することができる。この対応関係は、ファイルメタデータに記憶され得る。

0152

ステップ29:クライアントサーバが、ファイル読出し要求を処理し、ファイル読出し要求をストリップ読出し要求を含む複数の読出し要求に変換することであって、各ストリップ読出し要求はストリップを読み出すように要求するために使用され、ストリップ読出し要求は読出し予定のストリップをOSDから読み出すように要求するために使用される、変換することを行い、各読出し要求に対応するオブジェクトIDを決定する、ここで、ストリップ読出し要求は、読出し予定のストリップのバージョン番号、読出し予定のストリップのオフセット、読出し予定のストリップのサイズ、および読出し予定のストリップのオブジェクトIDを搬送する。

0153

特に、読出し予定のストリップを含む、読み出す必要のある各ストリップのオフセットを、読出し予定のデータのサイズおよび読出し予定のデータのオフセットに従って獲得してもよい。

0154

ステップ23におけるストリップを生成するための方法を参照すれば、書込み予定のデータは、読出し予定のストリップのオフセットを取得するために、ストリップサイズに従って、および読出し予定のデータのオフセットおよび書込み予定のデータのサイズを使用して、ストリップに分割され得る。同一の方法により、本ステップにおいて、読み出す必要のある各ストリップのオフセットも、ストリップサイズ、読出し予定のデータのオフセット、および読出し予定のデータの長さを使用して取得してもよい。ストリップサイズはファイルのinodeからもたらされてもよく、この場合には、異なるファイルは異なるストリップサイズを使用してもよいし、または、全システム内のすべてのファイルが1つのストリップサイズを共有する。

0155

読出し予定のストリップのオフセットを取得した後に、読出し予定のストリップがあるオブジェクトのIDは、ステップ23におけるものと同一の方法に従って取得されてもよい。ファイル名が読出し予定のデータがあるファイルのファイル名であるかまたはスナップショットのファイル名であるかにかかわらず、読出し要求に対応するオブジェクトIDについてクエリを行うためのFIDは読出し予定のデータがあるファイルのFIDであることに留意されたい。

0156

ステップ30:クライアントサーバが、ストリップ読出し要求を受信するために使用されるOSDを選択する。

0157

特に、本ステップは、クライアントサーバのオブジェクトストレージクライアントによって実行されてもよい。

0158

同一のストリップのストリップ読出し要求およびストリップ書込み要求は、同一のOSDに対応している必要がある。可能な方法としては、ステップ24におけるものと同一のOSD選択計算方法を使用することがある。

0159

ステップ31:クライアントサーバが、ストリップ読出し要求をステップ30において選択したOSDに送信する。

0160

読出し予定のストリップのバージョン番号は、実際のところ、読出し予定のストリップが属するファイルのバージョン番号である。

0161

必要に応じて、書込みモードは、OSDにさらに送信され得る、ここで、書込みモードは、ステップ25におけるストリップ書込み要求において搬送された書込みモードに一致している。読出し予定のストリップのオブジェクトIDは、読出し予定のストリップが属するオブジェクトのIDである。

0162

ステップ32: OSDが、ストリップ読出し要求を受信し、読出し予定のストリップの記憶位置を探索し、読出し予定のストリップをクライアントサーバに送信する。

0163

読出し予定のストリップの記憶位置は読出し予定のストリップの開始アドレスであり得るし、開始アドレスから開始して、1つのストリップサイズのデータが読み出され、読み出したデータは読出し予定のストリップである。

0164

ステップ26において、ストリップは、複数の可能な方式で書き込まれる。したがって、OSDは、以下に個別に説明もしている対応する方式で、読出し予定のストリップを読み出し得る。ストリップ/オブジェクトがバックアップされているかどうかを決定するための方法においては、ステップ26において説明したフラグビットを使用し得る。例えば、フラグビットが1である場合には、ストリップ/オブジェクトがバックアップされていることを示し、フラグビットが0である場合には、ストリップ/オブジェクトがバックアップされていないことを示す。

0165

COWについては、特別なケースが存在している。ストリップ読出し要求において搬送されたバージョン番号がベースバージョン番号である場合には、特別なケースにおける読出し予定のストリップを読み出すための方式は別のケースとは異なる、このことは、(ベースバージョン番号の値が0である場合でも)最大のバージョン番号としてベースバージョン番号を指定することに等しい。したがって、例えば、ステップ26において説明したバージョン番号が0であるケースにおいては、バージョン番号が既に最大のバージョン番号であるため、読出し予定のストリップのキーパラメータを使用して決定されるストリップがバックアップされているかどうかを決定する必要がなくてもよく、この記憶位置内のデータが、読出し予定のストリップとして直接読み出されて使用され、読出し予定のストリップは、クライアントサーバに送信される。他のケースにおいては、読出し予定のストリップを以下の2つの方式で読み出してもよい。この特別なケースを除いて、他のケースを以下の2つの方式に分割し得る。

0166

方式1: OSD内のデータのバックアップマークの粒度はストリップである。

0167

読出し予定のストリップにおいて搬送されたストリップキーパラメータを使用して決定されるストリップがバックアップされているかどうかを決定する。つまり、読出し予定のストリップのオブジェクトID、読出し予定のストリップ、および読出し予定のストリップのオフセットを使用して決定される記憶位置にあるストリップがバックアップされているかどうかを決定する。本ステップにおいて、読出し予定のストリップのオフセットを、読出し予定のストリップが属するオブジェクト内の読出し予定のストリップの識別子に変換してもよい。変換方法については、ステップ26における方式1を参照されたい。

0168

ストリップがバックアップされている場合には、読出し予定のストリップのオブジェクトID、読出し予定のストリップ、および読出し予定のストリップのオフセットを使用して決定されるストリップが、読出し予定のストリップとして読み出されて使用され、読出し予定のストリップは、クライアントサーバに送信される。

0169

ストリップがバックアップされていない場合には、有効ストリップデータが見つかるまで、読出し予定のストリップのオブジェクトIDのオブジェクトセット内に、前回のスナップショットオブジェクト内のストリップデータ内の有効データが存在しているかどうかを決定する。

0170

特に、読出し予定のストリップのオブジェクトIDのオブジェクトセットが属するとともにそのスナップショット時刻が読出し予定のストリップのスナップショット時刻より早いオブジェクトを、バックアップされているものとしてマークされているストリップが見つかるまで、読出し予定のストリップのオフセットを使用して、およびオブジェクトのスナップショット時刻の降順に従って、1つずつ探索し、見つかったストリップは、読出し予定のストリップとして使用され、読出し予定のストリップは、クライアントサーバに送信される、ここで、オブジェクトのスナップショット時刻は、このオブジェクトが生成される前に作成されたものであるとともにファイルまたはこのファイルを含むファイルシステムのものである最新のスナップショットの時刻を指す。

0171

より最新のスナップショット時刻がより大きなスナップショットバージョン番号を示している場合には、探索は、オブジェクトのスナップショット時刻の降順に従って行われる。特に、ROWについては、探索はバージョン番号の降順に従って行われ、COWについては、探索はバージョン番号の昇順に従って行われる。

0172

当然のことながら、ストリップがOSDに書き込まれた際に読出し予定のストリップのより大きなバージョン番号がより大きなスナップショット時刻のために使用されている場合には、読出し予定のストリップは、本ステップでは逆順で探索される。

0173

方式2: OSD内のデータのバックアップマークの粒度はオブジェクトである。

0174

本ステップと方式との間の違いは、バックアップマークの粒度をストリップからオブジェクトに変更している点にある。

0175

有効データが読出し予定のストリップにおいて搬送されたストリップキーパラメータを使用して決定される記憶位置に記憶されているかどうかを決定する。つまり、有効データが読出し予定のストリップのオブジェクトIDおよび読出し予定のストリップのバージョン番号を使用して決定される記憶位置(オブジェクト領域)に記憶されているかどうかを決定する。

0176

有効データが存在している場合には、読出し予定のストリップのオブジェクトID、読出し予定のストリップのバージョン番号、および読出し予定のストリップのオフセットを使用して決定される有効データが、読出し予定のデータとして読み出されて使用され、読出し予定のデータは、クライアントサーバに送信される。

0177

有効データが記憶されていない場合には、有効データを記憶しているスナップショットオブジェクトが見つかるまで、オブジェクトセット内のオブジェクトが、本ステップにおいて方式1と同様の方式で、およびスナップショットバージョン番号の昇順に従って、連続して検索され、読出し予定のストリップを読出し予定のストリップのオフセットに従ってスナップショットオブジェクトから読出し、クライアントサーバに送信される。

0178

図4は、ROWベースのストリップ読出しソリューションを示している。図に示しているように、ファイルAは、オブジェクト1、オブジェクト2、およびオブジェクト3を含む。これらのオブジェクトが初めてOSDに記憶された後では、これらのオブジェクトのバージョン番号は0である。図4では、オブジェクト1.0は、そのオブジェクトIDが1であるとともにバージョン番号が0であるオブジェクトを示している。同様に、オブジェクト3.2は、そのオブジェクトIDが3であるとともにバージョン番号が2であるオブジェクトを示している。実線のオブジェクトは、このオブジェクトがバックアップされることを示しており、破線のオブジェクトは、このオブジェクトがバックアップされていないことを示している。

0179

本実施形態においては、第1のスナップショット(そのバージョン番号は1)を作成した後では、オブジェクト1のデータは更新されず、オブジェクト2およびオブジェクト3はバックアップされ、オブジェクト1はバックアップされていない。第2のスナップショット(そのバージョン番号は2)を作成した後では、オブジェクト3はバックアップされ、オブジェクト1およびオブジェクト2はバックアップされる。第3のスナップショット(そのバージョン番号は3)を作成した後では、オブジェクト1はバックアップされ、オブジェクト2およびオブジェクト3はバックアップされていない。

0180

オブジェクト1.0があるオブジェクトセットがオブジェクト1.0およびオブジェクト1.3を含んでいることは、オブジェクトセットの概念から分かるであろう。オブジェクト2.0があるオブジェクトセットは、オブジェクト2.0およびオブジェクト2.1を含んでいる。オブジェクト3.0があるオブジェクトセットは、オブジェクト3.0、オブジェクト3.1、およびオブジェクト3.2を含んでいる。

0181

図4中の矢印の方向は、オブジェクトの探索関係を示している。ストリップ読出し要求がオブジェクト1.2内のストリップを読み出すことを意図している場合には、このオブジェクトはバックアップされておらず、バージョン番号の降順に従って、オブジェクト1.0はバックアップされている、したがって、オブジェクト1.0内のストリップが読み出されることが、図から分かり得よう。同一の原理に基づいて、ストリップ読出し要求がオブジェクト2.2またはオブジェクト2.3内の読出し予定のストリップを読み出すことを意図している場合には、オブジェクト2.1内のデータが実際には読み出される。当然のことながら、ストリップ読出し要求がオブジェクト1.3またはオブジェクト2.1またはオブジェクト3.2内のデータを読み出すことを意図している場合には、これらのオブジェクトはバックアップされているため、データを直接読み出すことができる。

0182

図5は、COWベースのストリップ読出しソリューションを示しており、図4と異なっている点は探索順序が逆であることであり、探索は、バージョン番号の昇順に従って行われる。

0183

バックアップマークの粒度がストリップである場合には、本ソリューションの原理は、図4および図5中のものと同様であり、違いは、バックアップマークによってマークされる対象がオブジェクト内のストリップであって、オブジェクトではない点にある。

0184

前述の方式1または方式2においては、クライアントサーバは、ストリップ読出し要求によって返信されたデータおよび別の読出し要求によって返信されたデータを受信し、返信されたデータを接合することによって読出し予定のデータを生成してもよい。

0185

図6に示しているように、図6は、前述の方法を実行するためのハードウェアを示している。クライアントサーバ41のインターフェース413は、オブジェクトストレージデバイス42のインターフェース423に接続されている、ここで、クライアントサーバ41は、プロセッサ411と、記憶媒体412と、インターフェース413とを備え、プロセッサ411は、記憶媒体412およびインターフェース413に接続されている。記憶媒体412は、例えば、メモリであり、コンピュータプログラムを記憶する。プロセッサ411は、記憶媒体412内のプログラムを動作して、前述の方法でクライアントサーバによって実行されるステップを実行する。インターフェース413は、OSDに接続されているインターフェースを提供しており、例えば、ストリップ読出し要求またはストリップ書込み要求をOSDに送信する。永続性メモリがクライアントサーバ41に配置されていなくてもよい、すなわち、前述の方法に関連するとともにクライアントサーバ41に記録する必要があるすべての情報は、クライアントサーバ41の揮発性記憶媒体412に記録され得る。

0186

OSD42は、プロセッサ421と、記憶媒体422と、インターフェース423と、ハードディスク424とを備える、ここで、プロセッサ421は、記憶媒体422およびインターフェース423に接続されており、ハードディスク424は、記憶媒体422に接続されている。記憶媒体422は、揮発性媒体、例えば、メモリであってもよい、ここで、記憶媒体422は、コンピュータプログラムを記憶する。プロセッサ421は、記憶媒体422内のプログラムを動作して、前述の方法でクライアントサーバによって実行されるステップを実行する。インターフェース423は、OSDに接続されているインターフェースを提供している。例えば、インターフェース423は、ストリップ読出し要求またはストリップ書込み要求をOSDに送信する。ハードディスク424は、ストリップに固定記憶域を提供している。例えば、不揮発性記憶媒体は、物理ストレージ領域を書込み予定のストリップ/オブジェクトに一般的に提供し、読出し予定のストリップ/オブジェクトを記憶する。ハードディスク424を、フラッシュメモリ、または消去可コンパクトディスクなどの別の媒体に置き換えてもよい。

0187

図7を参照すれば、図7は、本発明の実施形態による、データ処理システムの構造図である。

0188

データ処理システムは、クライアントサービング装置51およびオブジェクトストレージ装置52を含む。クライアントサービング装置51は、サーバなどの物理デバイスであり得る、または、サーバ上で動作するソフトウェアによって実施される仮想モジュールであり得るし、オブジェクトストレージ装置52は、オブジェクトストレージデバイスなどの物理デバイスであり得る、または、オブジェクトストレージデバイス上で動作するソフトウェアによって実施される仮想モジュールであり得る。クライアントサービング装置51は、前述の方法でクライアントサーバによって実行されるステップを実行するように構成され得るし、オブジェクトストレージ装置52は、前述の方法でオブジェクトストレージデバイスによって実行されるステップを実行するように構成され得る。

0189

クライアントサービング装置51は、ストリップ要求生成モジュール511とストリップ要求生成モジュール511に接続されているストリップ要求送信モジュール512とを備える、または、ストリップ要求生成モジュール511に接続されているスナップショットモジュール513をさらに備え得る。

0190

オブジェクトストレージ装置52は、ストリップ要求受信モジュール521と、ストリップ要求受信モジュール521に接続されているストリップ記憶モジュール522およびストリップ読出しモジュール523とを備える。ストリップストレージ機能が実装されている場合には、ストリップ読出しモジュールは必須ではない。ストリップ読出し機能が実装されている場合には、ストリップ記憶モジュールは必須ではない。ストリップ要求受信モジュール521は、ストリップ要求送信モジュール512に接続されている。

0191

続けて以下にモジュールの機能を具体的に説明する。

0192

スナップショットモジュール513は、スナップショットを作成し、スナップショットIDをスナップショットに割り振るように構成される、ここで、スナップショットの対象はファイルを含む。

0193

スナップショットは2つの方式で作成される。一方の方式では、ファイルのスナップショットが作成され、スナップショットの対象は単一のファイルである。他方の方式では、ファイルシステムのスナップショットが作成され、スナップショットの対象はファイル全体システムである、ここで、ファイルシステムは複数のファイルを含む。2つの方式では、ファイルメタデータの記憶位置が異なる。

0194

ファイルのスナップショットを作成する方式においては、ファイルを選択してスナップショットを作成し、スナップショット名をファイルに設定し、スナップショット名が使用されていないのであれば、スナップショットIDが、ファイルのスナップショットに割り振られる。ファイルのスナップショットIDは、ファイルのメタデータとして使用され、ファイルのinode(index node)に記憶される。スナップショットIDはスナップショットのマークであることに留意されたい。例えば、スナップショットを作成するためのタイムポイントがスナップショットIDとして使用される、または、漸増する番号がスナップショットを作成するためのタイムポイントの順番に従ってスナップショットIDとして使用される。

0195

ファイルシステムのスナップショットを作成する方式においては、ファイルシステムを選択してスナップショットを作成し、スナップショット名が使用されていないのであれば、スナップショットIDが、ファイルシステムのスナップショットに割り振られ、その後、割り振られたスナップショットIDは、ファイルシステムのルートinodeに記憶される。このように、ファイルシステム内の各ファイルのスナップショットIDはファイルシステムのスナップショットIDと同一であるとみなし得る。本方式と前方式との間の違いは、ファイルのスナップショットIDがファイルのinodeにではなくファイルシステムのルートinodeに記憶されていることである。

0196

ファイルのスナップショットIDに加えて、ファイルメタデータは、ファイル識別子(FID、File Identification)をさらに含み、ファイルメタデータは、ファイルサイズ(Size)および書込み時刻などの情報をさらに含んでいてもよい。

0197

スナップショットモジュール513はオプションであることに留意されたい。本発明の本実施形態は、あるスナップショットが作成された後かつ次のスナップショットが作成される前にクライアントサービング装置およびオブジェクトストレージ装置によって行われる操作を主に説明している。

0198

ストリップ要求生成モジュール511は、ファイル書込み要求を受信するように構成される、ここで、ファイル書込み要求は、書込み予定のデータ、書込み予定のデータのオフセット、およびファイル名を搬送し、書込み予定のデータは、ファイルの一部である。

0199

特に、ストリップ要求生成モジュール511の機能は、クライアントサーバのファイルシステム内のプログラムによって実行され得る。ファイル書込み要求は、ファイルシステムが識別することができる書込み要求である。ファイル書込み要求は、ファイルを作成すること、または、書込み予定のデータを使用して既に存在しているファイルを更新することであり得る、ここで、書込み予定のデータは、ファイルの一部またはファイル全体である。

0200

ファイル書込み要求は、書込み予定のデータが以降に書込み予定のデータのオフセットに従ってストリップに分割されるように、書込み予定のデータのサイズをさらに搬送する場合がある、または、書込み予定のデータのサイズを書込み予定のデータを測定することにより取得することができるため、書込み予定のデータのサイズを搬送しない場合がある。

0201

書込み予定のデータのオフセットは、ファイル内の書込み予定のデータの相対的位置を表している。特に、書込み予定のデータのオフセットは、書込み予定のデータの開始位置とファイルヘッダとの間の距離を表していてもよい。書込み予定のデータのオフセットが0である場合には、書込み予定のデータの開始位置が書込み予定のファイルの開始位置であることを示している。書込み予定のデータのオフセットが1KBである場合には、書込み予定のデータの開始位置とファイルの開始位置との間の距離が1KBのデータサイズであることを示している。

0202

必要に応じて、ファイル書込み要求は、ファイル書込み要求のファイルパスをさらに搬送し得る、ここで、ファイルパスは、ファイルの記憶位置およびマッピング関係テーブルを示している。ファイルは、ファイルパスおよびファイル名を使用して共同して決定される。例えば、ファイルパスとファイル名との組合せは、/root/mma/a1である、ここで、/root/mma/は、ファイルパスであり、a1は、ファイル名であり、ファイルおよびマッピング関係テーブルは、パス/root/mma/に記憶されている。

0203

異なるファイルは異なるファイル名を有し得るし、同一のファイルパス内のファイル名が同一のものはない。

0204

必要に応じて、書込み要求は、マッピング関係テーブルの記憶位置をさらに搬送し得る、ここで、マッピング関係テーブルは、ファイル名とFIDとの間のマッピング関係を記録している。

0205

クエリがファイル名を使用してマッピング関係テーブルに関して行われる前に、スナップショットIDとファイルバージョン番号との間のマッピング関係が記録されていてもよく、以下の2つの操作が実行されてもよい。

0206

(1)現時点で最新のファイルメタデータをバックアップする、このことは、inodeをバックアップすることによって特に実施され得る。ファイルレベルのスナップショットについては、ファイルのinodeがバックアップされ、ファイルシステムのスナップショットが作成される場合には、ファイルシステムのinodeがバックアップされ、ファイルのinodeおよびファイルのルートinodeの両方を含む。

0207

(2) inode内のバージョン番号を更新する。クライアントサーバに設定されている書込みモードがROWである場合には、更新後のバージョン番号は、バックアップされたinodeに記憶される。クライアントサーバに設定されている書込みモードがCOWである場合には、更新後のバージョン番号は、バックアップによって生成されたinodeに記憶され、必要に応じて、バックアップされたinodeも、更新後のバージョン番号を記録し得る。例えば、inode Aがバックアップされてinode Bを生成すると、inode Aはバックアップされたinodeであり、inode Bはバックアップによって生成されたinodeである。

0208

ファイルバージョン番号とスナップショットIDとの間に対応関係が存在しており、スナップショットIDはスナップショット時刻に対応している、したがって、ファイルバージョン番号とスナップショット時刻との間に対応関係が存在しているともみなし得る。対応関係は、各ファイルバージョン番号が一意なスナップショットIDに対応していることを意味しており、ファイルバージョン番号の変更ルールは、スナップショットIDのものと同様である。例えば、より大きなスナップショットIDほどより大きなファイルバージョン番号を示している、または、より大きなスナップショットIDほどより小さなファイルバージョン番号を示している。複数のスナップショットのうちより最近のスナップショット時刻を有するスナップショットは、より大きなIDを有する。

0209

SANを含む、ブロックシステムに基づいたデータ書込み技術においては、ボリュームはファイル名の代わりにボリュームIDを使用してマークされ、ボリュームIDの機能はFIDのものと同様であることに留意されたい。加えて、ボリュームにおいては、ファイルパスと同様の概念は存在しない。したがって、クエリをマッピング関係テーブルに対して行う必要はもはやなく、ボリュームIDを使用してボリュームメタデータに対するクエリを直接行ってファイルバージョン番号を取得し得る。

0210

ストリップ要求生成モジュール511は、ファイル名を使用してマッピング関係テーブルに対するクエリを行って、書込み予定のデータがあるファイルのファイル識別子(FID)を取得し、FIDに従ってファイルメタデータに対するクエリを行ってファイルバージョン番号を取得するようにさらに構成される。

0211

マッピング関係テーブルは、ファイル名とFIDとの間のマッピング関係を記録しており、ファイル名は、FIDと一対一の対応関係にある。マッピング関係テーブルの記憶位置は、ファイル書込み要求において搬送されてもよく、書込み要求からクライアントサーバによって取得される、または、マッピング関係テーブルは、クライアントサーバによってクライアントサーバに予め記憶されていてもよく、クライアントサーバは、ファイルパスに従ってマッピング関係テーブルを探し出す、または、マッピング関係テーブルは、別のストレージデバイスに記憶されていてもよい。

0212

ストリップ要求生成モジュール511は、メタデータに対して取得したファイルバージョン番号をさらに更新してもよい。更新の後、ファイルメタデータは、FIDおよびファイルバージョン番号を記録し、ファイルバージョン番号は、FIDを使用してファイルメタデータに対するクエリを行うことによって取得され得る。ファイルメタデータは、inodeに関する情報に記憶され得る。ファイルパスは、inodeの記憶位置を示している。ROWにおいては、バージョン番号がバックアップされたinodeに記憶されているため、ストリップ要求生成モジュール511はバックアップされたinodeを読み出し、COWにおいては、バージョン番号がバックアップによって生成されたinodeに記憶されているため、ストリップ要求生成モジュール512はバックアップによって生成されたinodeを読み出すことが、前述したことから分かり得よう。

0213

ファイルバージョン番号とファイルのスナップショットIDとの間に一対一の対応関係が存在しており、スナップショットIDを生成した後に、クライアントサーバは、スナップショットIDと一対一の対応関係にあるファイルバージョン番号を生成する。例えば、スナップショットIDはファイルバージョン番号として直接使用され得る、または、操作を行った後に取得したスナップショットIDはファイルバージョン番号として使用され得る。より最近に作成されたスナップショットがより大きなスナップショットIDを有している場合には、オプションの方式としては、より最近に作成されたスナップショットがスナップショットIDのより大きな値を有するものがあり、別のオプションの方式としては、より最近に作成されたスナップショットがスナップショットIDのより小さな値を有するものがある。

0214

ストリップ要求生成モジュール511は、書込み予定のデータを書込み予定のストリップを含む複数のストリップ(strip)に分割し、ストリップ分散ポリシーに従って、書込み予定のストリップのオフセットおよび書込み予定のストリップが属するオブジェクトのIDを取得するようにさらに構成される、ここで、このIDはオブジェクトIDとも称され得る。

0215

クライアントサーバは、ストリップサイズ(Size)に従ってデータを1つまたは複数のストリップに分割する。ストリップは、特定のサイズのデータである。書込み予定のデータのサイズが単一のストリップのサイズ以下である場合には、書込み予定のデータを1つのストリップに分割し、書込み予定のデータのサイズが単一のストリップのサイズより大きい場合には、書込み予定のデータが複数のストリップに分割される。同一のファイルから分割されたストリップのサイズは同一である。ストリップサイズ(Size)は、ファイルメタデータに記憶され得るし、この場合には、異なるファイルは、異なるストリップサイズを使用し得る。あるいは、ストリップサイズはオブジェクトが属するファイルのメタデータに記憶されていなくてもよく、ファイル全体システム内のファイルが1つのストリップサイズを共有する、この場合には、異なるファイルが同一のストリップサイズを使用し、ストリップサイズはファイルシステムのルートinodeに記憶される。オブジェクトは、ストリップを収容することができるコンテナとしてみなし得る。

0216

例えば、書込み予定のデータをいくつかのデータストリップに分割する場合には、分割することによって生成されるストリップは、分割することによって取得されるデータストリップを指す、または、書込み予定のデータをデータストリップに分割した後に、データ保護をデータストリップに対して行うためにいくつかの検証ストリップをさらに生成する場合には、分割することによって生成されるストリップは、データストリップおよび検証ストリップの両方を含む。

0217

各オブジェクトに含まれるストリップの総数はファイルメタデータに記憶されていてもよく、この場合には、異なるファイル内のオブジェクトに含まれるストリップの総数は異なっていてもよい、または、各オブジェクトに含まれるストリップの総数はオブジェクトが属するファイルのメタデータに記憶されていなくてもよく、この場合には、異なるファイル内のオブジェクトに含まれるストリップの総数は同一である。

0218

ファイル内の書込み予定のデータの開始位置を書込み予定のデータのオフセットから獲得してもよく、ファイル内の書込み予定のデータの終了位置を書込み予定のデータのオフセットおよび書込み予定のデータのサイズから獲得してもよいことに留意されたい。書込み予定のデータの開始位置がストリップサイズの整数倍ではない、または、終了位置のオフセットの値に1を加えたものがストリップサイズの整数倍ではない場合には、書込み予定のデータは、ストリップサイズに従ってまず分割され、分割のバウンダリは、ストリップサイズの整数倍となる。そのサイズが1つのストリップ未満であるデータ(このタイプのデータはストリップのダーティデータとも称され得る)が分割した後に生成された場合には、データを補完してストリップを形成する。ストリップ要求生成モジュール511によって行われる補完操作により、特に定めのない限り、後述するストリップおよびストリップのオフセットの両方は、補完した後に取得されるストリップおよびストリップのオフセットを指す。

0219

例えば、書込み予定のデータのオフセット範囲が4KB-300KBであるとともにストリップサイズが256KBである場合には、0KBおよび256KBが書込み予定のデータを分割するためのバウンダリとして使用され、2つのデータブロックが形成される、ここで、書込み予定のデータ内の2つのデータブロックのオフセット範囲は、それぞれ4KB-255KBおよび256KB-300KBとなる。2つのデータブロックに対して補完を行い、そのサイズが256KBである2つのストリップを形成する。前者のデータブロックを補完するために使用されるデータ(そのサイズは4KB-0KB=4KB)は前のストリップからもたらされており、後者のデータブロックを補完するために使用されるデータ(そのサイズは511KB-300KB=211KB)は次のストリップからもたらされる。書込み予定のデータのオフセットは、ファイル内の書込み予定のデータの相対的位置である。

0220

別の補完方法は、以下の通りである。書込み予定のデータの開始位置がストリップサイズの整数倍ではない、または、終了位置オフセットの値に1を加えたものがストリップサイズの整数倍ではない場合には、補完操作をストリップの書込み予定のデータに対して行ってもよく、その結果、分割後に取得されるストリップのサイズは恒常的となり、ストリップ内にマージンが存在しなくなる。OSDに既に記憶されているデータは、補完するためのデータとして読み出され使用され得る。

0221

例えば、書込み予定のデータのオフセット範囲が4KB-300KBであるとともにストリップサイズが256KBである場合には、書込み予定のデータは、そのオフセット範囲が0KB-511KBであるデータを形成するために補完され得るし、その後、データは、各ストリップのサイズが256KBとなるように、そのオフセット範囲が0KB-255KBおよび256KB-511KBである2つのストリップに分割される。

0222

ストリップ分散ポリシーを、クライアントサーバのファイルシステムよって提供している。ストリップが属するオブジェクトが記載されている、すなわち、ストリップとオブジェクトとの間の対応関係が記載されている。特に、対応関係は、ストリップのオフセットとオブジェクトとの間の対応関係であり得る。

0223

オブジェクトIDはオブジェクトを一意に識別し、同一のファイルに属するオブジェクトのIDは異なっており、異なるファイル内のオブジェクトのIDも異なっている。

0224

必要に応じて、オブジェクトIDとオブジェクトが属するファイルのFIDとの間に対応関係が存在していてもよい。すなわち、例えば、このオブジェクトIDによって表されるオブジェクトをもたらすファイルを、オブジェクトIDから獲得してもよい。

0225

例えば、オブジェクトIDを生成するためのオプションの方式には次のものがある。オブジェクトIDが64ビットのバイナリ番号を含む、ここで、前の32ビットはオブジェクトが属するファイルのIDであり、後の32ビットはクライアントサーバによって割り当てられ、後の32ビットはファイル内の一意であり、同一のファイル内の異なるオブジェクトの後の32ビットは異なっている。例えば、ファイル内のオブジェクトの識別子を使用する。このように、対応するFIDを、オブジェクトIDの前の32ビットから獲得してもよい。同様に、ブロック(block)システムにおいては、オブジェクトIDとボリュームIDとの間の関係も確立してもよい。

0226

オブジェクトIDを生成するための別のオプションの方式には次のものがある。オブジェクトIDが48ビットのバイナリ番号を含む、ここで、前の16ビットはファイルに対応しており、異なるファイルの前の16ビットは異なっており、後の32ビットはクライアントサーバによって割り当てられ、後の32ビットはファイル内の一意であり、同一のファイル内の異なるオブジェクトの後の32ビットは異なっている。

0227

別の実施形態においては、IDとオブジェクトが属するファイルのFIDとの間に対応関係が存在していなくてもよい。

0228

図3Aおよび図3Bは、2つの異なるストリップ分散ポリシーを示している。ストリップインデックスは、ファイル内のストリップのオフセット関係を表しており、ストリップインデックスは0以上の整数である、ここで、最小のストリップインデックスは0であり、2番目に最小のストリップインデックスは1であり、3番目に最小のストリップインデックスは2であり、…、などとなっている。隣接したインデックス値を有する2つのストリップはまた、ファイル内の隣接したオフセットを有する。

0229

(1) 同一のファイルに属するオブジェクトのサイズは固定であり、同一のファイル内のストリップのサイズは同一である、このことは、異なるオブジェクトに含まれるストリップの総数が同一であることを意味している、(2)インデックスの順番に従ってストリップによって前のオブジェクトをまず満たしその後次のオブジェクトを満たす、すなわち、いくつかの連続したストリップが、書込み予定のデータ内のストリップのオフセットサイズの序列に従って同一のオブジェクトに属することになる、オプションのストリップ分散ポリシーを図3Aに示している。図3Aに示しているように、各オブジェクトは、4つのストリップを固定的に含んでいる。例えば、ストリップサイズは256KBであり、各オブジェクトは4つのストリップを有し、すなわち、オブジェクトサイズは256KB×4=1024KBである。この場合には、第1のオブジェクトはストリップ0からストリップ3を記憶し、第2のオブジェクトはストリップ4からストリップ7を記憶し、第3のオブジェクトはストリップ8からストリップ11を記憶し、…、それゆえ、第1のオブジェクトのIDは0であり、第2のオブジェクトのIDは1であり、第3のオブジェクトのIDは2であり、…となる。

0230

ストリップオフセットは、オブジェクト内のストリップの相対的位置を表すために使用され、特に、オブジェクト内のストリップの開始データの相対的位置であってもよい。ストリップオフセット=(ストリップインデックス%オブジェクト内のストリップの数量)×ストリップサイズである、ここで、ストリップインデックス%オブジェクト内のストリップの数量は、ストリップインデックスをオブジェクト内のストリップの数量で除算することによる剰余を計算することを指す。

0231

(1) 同一のファイル内のオブジェクトのサイズは固定されていない、すなわち、同一のファイル内の異なるオブジェクトは、異なる総数のストリップを有していてもよい、(2) オブジェクトの総数は固定されている、すなわち、異なるファイルは同一の数量のオブジェクトを有し、図3Bに示しているように、全体で3つのオブジェクトが存在している、別のオプションのストリップ分散ポリシーを図3Bに示している。例えば、ストリップサイズが256KBであるとともにオブジェクトの総数は3に固定されている場合には、第1のストリップ(ストリップ0)は第1のオブジェクト(オブジェクト0)にあり、第2のストリップ(ストリップ1)は第2のオブジェクト(オブジェクト1)にあり、…、同様に、第4のストリップ(ストリップ3)も第1のオブジェクトにあり、第5のストリップ(ストリップ4)も第2のオブジェクトにある。ストリップインデックスは、0以上の整数であり、ファイル内のストリップ間の位置関係を表している。ストリップが属するオブジェクト内の各ストリップのオフセットも決定され得るし、ファイル内のオブジェクトの識別子は、ファイル内のオブジェクトの総数で除算したストリップインデックスであり得る。具体的な計算式は、ファイル内のオブジェクトの識別子=ストリップインデックス%ファイル内のオブジェクトの数量であるとともに、ストリップオフセット=(ストリップインデックス/オブジェクトの数量)×ストリップサイズであってもよい。

0232

ストリップインデックスは、書込み予定のデータのオフセットを使用して決定され得る。例えば、ファイル全体については、ファイルを分割した後に取得した開始データは第1のオブジェクト内のストリップ(ストリップ0)にあり、カレント書込み予定のデータのオフセットはオブジェクト1内の第5のストリップ(ストリップ4)にある。この場合には、書込み予定のデータを分割した後に生成されたストリップにおいては、第1のストリップのインデックスは4であり、別のストリップのインデックスは同様に取得される。

0233

前述したことは、ストリップが属するオブジェクトのIDを計算するための2つのソリューションを説明しており、異なるストリップ分散ポリシーに従って、別の実施形態ソリューションが存在していてもよい。異なる分散ポリシーにおいて使用されるパラメータは異なっていてもよく、これらのパラメータはクライアントサーバに対するクエリを行うことによって一般的に取得されてもよい。

0234

すべてのストリップの処理方式が同一であるため、説明のための一例として「書込み予定のストリップ」だけを以下では使用している。

0235

ストリップ要求送信モジュール512は、書込み予定のストリップを記憶するために使用されるOSDを選択するように構成される。

0236

オプションの計算方法は、書込み予定のストリップのFIDに従って、書込み予定のストリップを記憶するためのOSDを決定することである。例えば、FIDのハッシュ値は、OSDの総数で除算され、剰余は、書込み予定のストリップを記憶するためのOSDの識別子として使用される、すなわち、FIDのハッシュ値 mod OSDの総数である。別のソリューションも存在し得る。例えば、クライアントサーバは、OSDをランダムに選択してオブジェクトに属する書込み予定のストリップを記憶し、同一のオブジェクトに属するストリップは、同一のOSDに記憶され得る。

0237

加えて、ストリップを記憶するためのOSDはまた、書込み予定のストリップのものであるFIDおよびオブジェクトIDに従って共同して決定され得る。実際には、計算方法を、OSDを選択できるのであればランダムに選択してもよい。

0238

ストリップ要求送信モジュール512は、ストリップ書込み要求をOSDに送信するようにさらに構成される、ここで、ストリップ書込み要求は、書込み予定のストリップ、書込み予定のストリップのバージョン番号、書込み予定のストリップのサイズ、書込み予定のストリップのオフセット、および書込み予定のストリップが属するオブジェクトのIDを搬送する。

0239

必要に応じて、OSDがROWおよびCOWの両方をサポートしているケースでは、OSDがクライアントサーバによって指定される書込みモードに従って書込み予定のストリップを書き込めるように、書込みモードがさらに送信されてもよい。書込みモードはROWまたはCOWである。OSDが1つの書込みモードだけをサポートしている場合には、書込みモードがOSDに送信されなくてもよい。

0240

ストリップ要求受信モジュール521は、ストリップ書込み要求を受信し、書込み予定のストリップをOSDの記憶媒体に書き込むように構成される。

0241

ストリップ要求受信モジュール521は、ステップ26において方法を実行し得る。例えば、書込み予定のストリップの書込みは、4つの方式のうちの1つまたは複数で実施され得る。

0242

ストリップ要求生成モジュール511は、ファイル読出し要求を受信するようにさらに構成され得る、ここで、ファイル読出し要求は、ファイル名、読出し予定のデータのサイズ、および読出し予定のデータのオフセットを搬送する。

0243

ファイル書込み要求と同様に、ファイル読出し要求は、ファイル読出し要求のファイルパスをさらに搬送し得る、ここで、ファイルパスは、マッピング関係テーブルの記憶位置を記録している。ファイルは、ファイルパスおよびファイル名を使用して一意に決定され得る。

0244

特に、本ステップは、クライアントサーバのファイルシステム内のプログラムによって実行され得る。ファイル読出し要求は、ファイルシステムが識別することができる読出し要求である。ファイル読出し要求は、すべてのファイルまたはファイルのデータの一部を読み出すように要求する。

0245

読出し予定のデータのオフセットは、ファイル内の読出し予定のデータの相対的位置を表している。特に、読出し予定のデータのオフセットは、読出し予定のデータの開始位置とファイルヘッダとの間の距離を表していてもよい。読出し予定のデータのオフセットが0である場合には、読出し予定のデータの開始位置が読出し予定のファイルの開始位置であることを示している。読出し予定のデータのオフセットが2KBである場合には、読出し予定のデータの開始位置とファイルの開始位置との間の距離が2KBのデータサイズであることを示している。

0246

必要に応じて、ファイル読出し要求は、ファイルパスをさらに搬送し得る、ここで、ファイルパスは、マッピング関係テーブルの記憶位置を記録している。マッピング関係テーブルの詳細については、ステップ21の説明を参照されたい。

0247

ファイル名は、読出し予定のデータがあるファイルのファイル名であり得る、または、読出し予定のデータがあるファイルのスナップショットのファイル名であり得る。ファイル名が読出し予定のデータがあるファイルのファイル名である場合には、ファイル読出し要求が最新の読出し予定のデータにアクセスすることを意図していることを示し、ファイル名が読出し予定のデータがあるファイルのスナップショットのファイル名である場合には、ファイル読出し要求がスナップショットの読出し予定のデータにアクセスすることを意図していることを示す。ストリップ記憶モジュール522は、ファイル名を使用してマッピング関係テーブルに対するクエリを行って、読出し予定のデータがあるファイルのFIDを取得し、FIDに従ってファイルメタデータに対するクエリを行ってファイルバージョン番号を取得するように構成される。

0248

ファイル名が読出し予定のデータがあるファイルのファイル名である場合には、マッピング関係テーブルを記憶しているファイルパスは読出し予定のデータがあるファイルのファイルパスであり、ファイルバージョン番号がファイルに対応するFIDに従ってメタデータに対するクエリを行うことによって獲得される。

0249

ファイル名がスナップショットのファイル名である場合には、マッピング関係テーブル内のファイルパスは、スナップショットファイルがあるパスであり、ファイルバージョン番号がスナップショットファイルのFIDに従ってメタデータに対するクエリを行うことによって獲得される。

0250

マッピング関係テーブルは、ファイル名とFIDとの間のマッピング関係を記録しており、ファイル名は、FIDと一対一の対応関係にある。FIDの説明およびFIDとファイルバージョン番号との間の関係については、ステップ21およびステップ22を参照されたい。マッピング関係テーブルの記憶位置は、ファイル読出し要求において搬送されてもよく、書込み要求からクライアントサーバによって取得される、または、マッピング関係テーブルは、クライアントサーバによってクライアントサーバに予め記憶されていてもよく、クライアントサーバは、ファイルパスに従ってマッピング関係テーブルを探し出す、または、マッピング関係テーブルは、別のストレージデバイスに記憶されていてもよい。

0251

ステップ22を参照すれば、異なる特定のケースに従って、メタデータは、ファイルのinodeに記憶され得る、または、ファイルシステムのルートinodeに記憶され得る。

0252

スナップショットIDとファイルバージョン番号との間に一対一の対応関係が存在しており、その結果、クライアントサーバは、スナップショットIDに従ってファイルバージョン番号を取得することができる。この対応関係は、ファイルメタデータに記憶され得る。

0253

ストリップ要求生成モジュール511は、ファイル読出し要求を処理し、ファイル読出し要求をストリップ読出し要求を含む複数の読出し要求に変換することであって、各ストリップ読出し要求はストリップを読み出すように要求するために使用され、ストリップ読出し要求は読出し予定のストリップをOSDから読み出すように要求するために使用される、変換することを行い、各読出し要求に対応するオブジェクトIDを決定するようにさらに構成され得る、ここで、ストリップ読出し要求は、読出し予定のストリップのバージョン番号、読出し予定のストリップのオフセット、読出し予定のストリップのサイズ、および読出し予定のストリップのオブジェクトIDを搬送する。

0254

特に、読出し予定のストリップを含む、読み出す必要のある各ストリップのオフセットを、読出し予定のデータのサイズおよび読出し予定のデータのオフセットに従って獲得してもよい。

0255

ステップ23におけるストリップを生成するための方法を参照すれば、書込み予定のデータは、読出し予定のストリップのオフセットを取得するために、ストリップサイズに従って、および書込み予定のデータのオフセットおよび書込み予定のデータの長さを使用して、ストリップに分割され得る。同一の方法により、本ステップにおいて、読み出す必要のある各ストリップのオフセットも、ストリップサイズ、読出し予定のデータのオフセット、および読出し予定のデータの長さを使用して取得してもよい。ストリップサイズはファイルのinodeからもたらされてもよく、この場合には、異なるファイルは異なるストリップサイズを使用してもよいし、または、全システム内のすべてのファイルが1つのストリップサイズを共有する。

0256

読出し予定のストリップのオフセットを取得した後に、読出し予定のストリップがあるオブジェクトのIDは、ステップ23におけるものと同一の方法に従って取得されてもよい。ファイル名が読出し予定のデータがあるファイルのファイル名であるかまたはスナップショットのファイル名であるかにかかわらず、読出し要求に対応するオブジェクトIDについてクエリを行うためのFIDは読出し予定のデータがあるファイルのFIDであることに留意されたい。

0257

ストリップ要求送信モジュール512は、ストリップ読出し要求を受信するために使用されるOSDを選択するようにさらに構成され得る。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ