(57)【特許請求の範囲】
【請求項１】
オブジェクトベース・ストレージシステムにオブジェクトレベルのスナップショットを生成するシステムであって、
ホストデバイスと、
前記ホストデバイスに結合して稼動するオブジェクトベース・ストレージシステムと
を備え、
前記ホストデバイスは、
第一のオブジェクト管理テーブル（OMT）と、
ファイルシステムと
を有し、
前記オブジェクトベース・ストレージシステムは、
コントローラと、
データをオブジェクトとして記憶する少なくとも一台のオブジェクトベース・ストレージデバイス（OSD）と
を有し、
前記オブジェクトは、データと、前記データの属性データとを有し、
前記コントローラは、スナップショットモジュールと、第二のOMTとを有し、
前記オブジェクトベース・ストレージシステムは、前記ホストデバイスからI/O要求を受け、前記I/O要求をOSDコマンドとして処理し、
前記スナップショットモジュールは、少なくとも一台のOSD内のオリジナルオブジェクトのミラーオブジェクトを、下記（１−１）乃至（１−５）を行うことにより生成し、
（１−１）前記オリジナルオブジェクト内のデータであるオリジナルデータを読み出す；
（１−２）前記オリジナルオブジェクト内の属性データであるオリジナル属性データを取得する；
（１−３）前記オリジナルデータと前記オリジナル属性データを用いて前記ミラーオブジェクトを生成する；
（１−４）前記オリジナルオブジェクトと分けられたボリュームに前記ミラーオブジェクトを格納する；
（１−５）前記オリジナルオブジェクトの更新を前記ミラーオブジェクトに反映するミラー操作を行う；
前記スナップショットモジュールは、前記オリジナルオブジェクトのスナップショットを生成する特定の時点で前記ミラーオブジェクトへの前記ミラー操作を停止することにより、少なくとも一台のOSDにおけるスナップショット操作を開始する、
システム。
【請求項２】
前記スナップショット操作は、前記更新のミラー操作を停止することに先駆けて、前記オリジナルオブジェクト第二のミラー操作を生成することを含む、
請求項１記載のシステム。
【請求項３】
更に、前記スナップショット操作を開始するために、前記スナップショットジュールに対する前記OSDコマンドと、SPLIT又はSNAPSHOTコマンドを開始することができるサービスプロセッサとを有する、
請求項１記載のシステム。
【請求項４】
前記第一のOMTと前記第二のOMTは、ファイル識別子（FID）、パーティションID（PID）、オブジェクトID（OID）、およびオブジェクト状態とスナップショットの世代番号に対するマッピング情報を維持する、
請求項１記載のシステム。
【請求項５】
前記オブジェクト状態はミラー又はスプリットの何れかの状態から成る、
請求項４記載のシステム。
【請求項６】
前記ディスクコントローラは、更に、OIDを前記少なくとも一台のOSDの物理ブロック番号に変換する変換機構を含む、
請求項１記載のシステム。
【請求項７】
前記少なくとも一台のOSDは、更に、OIDを前記少なくとも一台のOSDの物理ブロック番号に変換する変換機構を含む、
請求項１記載のシステム。
【請求項８】
前記オリジナルオブジェクトと前記ミラーオブジェクトは、一式のファイル、複数のファイル、一つのテーブル、テーブルの一行、テーブルの一列、一台のボリュームの一つに関係する、
請求項１記載のシステム。
【請求項９】
更に、前記第一のOMTを実装し前記ホストデバイスに結合して稼動するメタデータサーバが備えられる、
請求項１記載のシステム。
【請求項１０】
オブジェクトベース・ストレージシステムでのペア生成方法であって、
（１０−１）前記オブジェクトベース・ストレージシステムにおいてオブジェクトベース・ストレージデバイス（OSD）へデータを記憶し、それにより、前記オブジェクトベース・ストレージシステムはコンテントデータと属性データを含むオブジェクトとしてデータを記憶するステップと、
（１０−２）ソースボリュームにおける一以上のオリジナルオブジェクトからミラーペアの作成を指示する前記オブジェクトベース・ストレージシステムにおいて、ペア生成コマンドを受信するステップと、
（１０−３）前記ペア生成コマンドの受信に応答して、前記ソースボリュームにおける一以上のオリジナルオブジェクトの各々をデスティネーションボリュームにコピーするステップと
を有し、
前記（１０−３）のステップは、
（１０−３−１）各コピーオブジェクトに対し、新しいパーティションID（PID）と新しいオブジェクトID（OID）を決定するステップと、
（１０−３−２） 前記オリジナルオブジェクト内のデータであるオリジナルデータを読み込むステップと、
（１０−３−３） 前記オリジナルオブジェクト内の属性データである前記オリジナル属性データを検索するステップと、
（１０−３−４） 前記検索されたオリジナルコンテントデータとオリジナル属性データで前記コピーオブジェクトを生成し、前記新しいPIDとOIDを前記コピーオブジェクトの前記属性データに挿入するステップと、
（１０−３−５） 前記デスティネーションボリュームにおいて各コピーオブジェクトを記憶するステップ
を有する、
方法。
【請求項１１】
オブジェクトベース・ストレージシステムでのオブジェクト生成方法であって、
前記オブジェクトベース・ストレージシステムにおいてオブジェクトベース・ストレージデバイス（OSD）へデータを記憶し、それにより、前記オブジェクトベース・ストレージシステムはコンテントデータと属性データを含むオブジェクトとしてデータを記憶するステップと、
ホストデバイスでのファイルシステムのアプリケーションから、ファイル識別子（FID）とデータを受信するステップと、
前記ファイル識別子に関係するファイルに対する属性データを生成するステップと、
前記ファイルの前記ファイルコンテントデータと前記属性データで前記ファイルのオリジナルオブジェクトを生成し、前記オリジナルオブジェクトは関係するオリジナルパーティションID（PID）とオリジナルオブジェクトID (OID)を持つステップと、
前記コピーオブジェクトに対する前記OSDにおいて第二のPIDと第二のOIDを決定するステップと、
前記オリジナルオブジェクトのコピーオブジェクトを生成し、前記コピーオブジェクトは前記オリジナルオブジェクトの前記ファイルコンテントデータと前記属性データを含み、前記第二のPIDと前記第二のOIDは前記コピーされたオブジェクトにアサインされているステップと、
前記FIDと、オリジナルオブジェクトPIDとオリジナルオブジェクトOIDを、オブジェクト管理テーブル（OMT）において登録するステップと
を有する方法。
【請求項１２】
オブジェクトベース・ストレージシステムでのオブジェクトへのデータ書き込み方法であって、
前記オブジェクトベース・ストレージシステムにおいてオブジェクトベース・ストレージデバイス（OSD）へデータを記憶し、それにより、前記オブジェクトベース・ストレージシステムはコンテントデータと属性データを含むオブジェクトとしてデータを記憶するステップと、
ホストデバイスで、ファイルID(FID)と書き込みデータを含む書き込み操作を受信するステップと、
前記FIDと関係するオブジェクトのパーティションID(PID)とオブジェクトID(OID)に対し、前記ホストデバイスのオブジェクト管理テーブルを検索するステップと、
前記FIDと関係する前記オブジェクトの前記書き込みデータ、前記PIDと前記OIDを含む書き込みコマンドを、前記オブジェクトベース・ストレージシステムにおいて、スナップショットモジュールに対して送信するステップと、
前記FIDに関係する前記オブジェクトの前記PIDと前記OIDを用いて、前記ストレージシステムのオブジェクト管理テーブルを検索して、前記オブジェクトがミラー又はスプリットの状態にあることを判定するステップと、
前記状態がスプリットであれば、前記オブジェクトに前記書き込みデータを書き込むステップと、
前記状態がミラーであれば、前記ストレージシステムの前記オブジェクト管理テーブルから、前記FIDを使用して、ミラーオブジェクトと関係する第二のPIDと第二のOIDを検索するステップと、
前記状態がミラーであれば、前記オブジェクトと前記ミラーオブジェクトに対し前記書き込みデータを書き込むステップと
を有する方法。
【請求項１３】
オブジェクトベース・ストレージシステムでのスナップショット生成方法であって、
前記オブジェクトベース・ストレージシステムにおいてオブジェクトベース・ストレージデバイス（OSD）へデータを記憶し、それにより、前記オブジェクトベース・ストレージシステムはコンテントデータと属性データを含むオブジェクトとしてデータを記憶するステップと、
ホストデバイスから、前期オブジェクトベース・ストレージシステムにおいて、I/O要求を受信し、OSDコマンドとして前記I/O要求を処理するステップと、
オリジナルオブジェクトのミラーオブジェクトを、下記（１３−１）乃至（１３−５）を行うことにより作成するステップと、
（１３−１）前記オリジナルオブジェクト内のデータであるオリジナルデータを読み込む；
（１３−２）前記オリジナルオブジェクト内の属性データであるオリジナル属性データを取得する；
（１３−３）前記オリジナルオブジェクトの前記オリジナルコンテントデータと前記オリジナル属性データを用いて前記ミラーオブジェクトを生成する；
（１３−４）前記オリジナルオブジェクトから分かれたボリュームにおいてミラーオブジェクトを記憶する；
（１３−５）前記オリジナルオブジェクトの更新を前記ミラーオブジェクトに反映するミラー操作を行う；
ホストデバイスにおいて、識別子でスナップショット要求を受信するステップと、
前記ファイルに対し、ファイルID（FID）を識別するために識別子を用いて、ホストデバイスのファイル属性を検索するステップと、
前記FIDを使用して、ホストデバイスのオブジェクト管理テーブルを検索して、前記FIDと関係するオブジェクトのパーティションID(PID)とオブジェクトID(OID)を識別し、前記FIDと関係する前記オブジェクトは前記オリジナルオブジェクトであるステップと、
前記ホストデバイスにおいて、ファイルシステムから、前記オブジェクトベース・ストレージシステムにおけるスナップショットモジュールでのSNAPSHOTコマンドを受信するステップと、
前記FIDに関係した前記オブジェクトとミラーペアを形成する前記ミラーオブジェクトに対する、前記FIDに関係する前記オブジェクトのミラー操作を停止する前記スナップショットモジュールの構成を変更し、それにより、前記ミラーオブジェクトが前記スナップショットになるステップと、
前記構成が変更された前記ミラーオブジェクトに対し、ミラーからスプリットへ、前記オブジェクトベース・ストレージシステムのオブジェクト管理テーブルにおける状態を変更するステップと
を有する方法。
【請求項１４】
オブジェクトベース・ストレージシステムにおいて、差分ボリュームにおけるスナップショットを生成する方法であって、
前記オブジェクトベース・ストレージシステムにおいてオブジェクトベース・ストレージデバイス（OSD）へデータを記憶し、それにより、前記オブジェクトベース・ストレージシステムはコンテントデータと属性データを含むオブジェクトとしてデータを記憶するステップと、
識別子を用いたスナップショット要求をホストデバイスで受信するステップと、
前記識別子と関係するファイルに対し、ファイルID(FID)を識別するための識別子を用いてファイル属性を検索するステップと、
前記FIDを用い、前記ホストデバイスのオブジェクト管理テーブルを検索して、前記FIDと関係するプライマリオブジェクトに対し、パーティションID(PID)とオブジェクトID(OID)を識別するステップと、
前記ホストデバイスのファイルシステムから、前記オブジェクトベース・ストレージシステムのスナップショットモジュールでの前記PIDと前記OIDを含むSNAPSHOTコマンドを受信するステップと、
関係するPIDとOIDを持つ第一の差分オブジェクトから第二の差分オブジェクトへ、プライマリオブジェクトに対する差分データのデスティネーションを変更するためのスナップショットモジュールにおける構成を変更するステップと、
前記第一の差分オブジェクトにおいて、データを安定させることにより、前記プライマリオブジェクトと関係する前記第一の差分オブジェクトの一時点のスナップショットをとるステップと、
前記オブジェクトベース・ストレージシステムにおいて維持される第二のオブジェクト管理テーブルにおいて、前記プライマリオブジェクトの世代番号を1加算するステップと、
前記ファイルシステムに、前記プライマリオブジェクトPID、OID、前記第一の差分オブジェクトPID、OID、前記世代番号を送信するステップと、
を有する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージシステムに、より詳細には、ストレージシステムでオブジェクトレベルのスナップショットを生成することに関連する。
【背景技術】
【０００２】
ストレージデバイス（例：磁気ディスク）は典型的にはデータをブロックベースで保存する。しかしながら、オブジェクトベース・ストレージデバイス（ＯＳＤ）は、データをオブジェクトとして保存する。ＯＳＤでは、各オブジェクトはデータと属性部分で成る。属性部分は、例えば、データのサイズ、ユーザＩＤ情報等に関する情報より成る。属性としてオブジェクト中にデータのサイズを保持するので、オブジェクトサイズは可変にできる。現行のハードディスクドライブ（ＨＤＤ）の如きストレージデバイスでは、これに反して、保存情報のサイズは通常固定である。
【０００３】
現行のスナップショット機構はストレージシステムのブロックレベルアドレス方式に基づいている。ホストコンピュータのファイルシステムが、ファイル名を相当するブロックアドレスに変換する。しかしながら、オブジェクトベース・ストレージデバイスでのオブジェクトはそのオブジェクトＩＤ（ＯＩＤ）で識別されるので、本システムでのスナップショットコピーは、ホストコンピュータがファイル名とスナップショットオブジェクトＯＩＤ間の関係を管理する必要がある。更に、現行のＯＳＤはコピー操作のインターフェースを持ち合わせていない。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従って、スナップショットコピーをオブジェクトベース・ストレージシステムで可能にするには、新コマンド又はスナップショット生成操作を処理する何らかのモジュールがストレージシステムの中に必要になる。
【０００５】
従って、オブジェクトベース・ストレージシステムにスナップショットコピーを実装する必要がある。
【課題を解決するための手段】
【０００６】
ホストデバイスとオブジェクトベース・ストレージシステムより成るシステムに於いて、オブジェクトレベルのスナップショットを生成するシステムと方法である。ホストデバイスは、第一のオブジェクト管理テーブル（ＯＭＴ）とファイルシステムより成る。オブジェクトベース・ストレージシステムはホストデバイスに結合し、コントローラと一台以上のオブジェクトベース・ストレージデバイス（ＯＳＤ）より成る。コントローラはスナップショットモジュールと第二のＯＭＴ、及びサービス発信サブシステムより成る。スナップショットモジュールは、ファイルシステム又はサービスプロッセサからのＯＳＤコマンド、スプリットコマンド、及び専用コマンドを受信して処理する機能があり、ＯＳＤ内にオリジナルとミラーオブジェクトを生成し、ＯＳＤ内でスナップショット操作を開始する。第一のＯＭＴは又メタデータサーバに実装しても良い。スナップショット操作はミラー操作か又は書き込み操作でのコピーである。第一と第二のＯＭＴはファイル識別子（ＦＩＤ）、パーティションＩＤ（ＰＩＤ）、オブジェクトＩＤ（ＯＩＤ）、及びオブジェクト状態（ミラー又はスプリットの何れか）とスナップショットの世代番号の情報へのマッピングを維持する。本発明は、又、プライマリと差分ボリュームにも適用可能である。
【発明の効果】
【０００７】
ホストデバイスとオブジェクトベース・ストレージシステムより成るシステムに於いて、オブジェクトレベルのスナップショットを生成するシステムと方法である。
【０００８】
本発明は、又、プライマリと差分ボリュームにも適用可能である。
【発明を実施するための最良の形態】
【０００９】
本発明は、本発明の非制限的事例の注釈つきの複数の図面を参照して更に詳細に説明され、以下の図面では、複数の見方の図面を通して、同じ部分には同じ参照番号を使用している。
【００１０】
ここに示す事項は、本発明の実施例を例示により図示する目的のものである。図面と共になされる説明で、本分野に造詣ある人にとっては、本発明が実際に如何に実施されるかが明確になる。
【００１１】
更に、本発明を明確に説明する為にブロック図形式で説明するが、本ブロック図の個別の実装は、本発明が実装されるプラットフォームに深く依存する。各具体例は、本分野に造詣ある人にとっては十分に想定される範囲内である。具体的詳細（例えば回路やフローチャート）を本発明の実施例を説明する為に使用するが、本分野に造詣ある人にとっては、このような具体的詳細とは離れて、本発明が実施できることは明らかである。最後に、本発明を実施するには、ハード配線回路やソフトウエア命令の如何なる組み合わせも使用可能であり、本発明はハード回路やソフトウエア命令の如何なる組み合わせにも制限されないことも明らかである。
【００１２】
本発明の実施例については、例示ホストユニット環境での例示システムブロック図を用いて説明するが、本発明の実施はこれに限定されない。即ち、本発明は他のタイプのシステム及び他のタイプの環境に於いても実施可能である。
【００１３】
本明細書で「一実施例」と呼ぶときには、その一実施例に関連して説明された特定の機能、構成、特性が本発明の少なくとも一つの実施例に含まれることを意味する。本明細書の各所で、「一実施例に於いて」なる用語が現れるが、これらは全てが同じ実施例を示すとは限らない。
【００１４】
本発明の実施例は、ストレージシステムでオブジェクトのスナップショットコピーを生成するシステムと方法に関連する。ユーザの指示に従ってストレージシステムは、本システム内の指定オブジェクトの一時点のイメージ（スナップショットオブジェクト）を生成する。本スナップショットオブジェクトは、ストレージコントローラが生成する、指定オブジェクトの物理的コピー又は仮想オブジェクトである。ストレージシステムは、スナップショットオブジェクトに固有のオブジェクトＩＤをアサインする為、ユーザはスナップショットオブジェクトから指定オブジェクトを区別することができる。本発明の以降の説明では、オブジェクトベース・ストレージシステムを用いて説明するが、本発明はオブジェクトベース・ストレージデバイスを備える如何なるストレージシステムにも適用可能である。更に、ＯＢＳＤとＯＳＤは共にオブジェクトベース・ストレージデバイスを示す。
【００１５】
図１は、本発明の一実施例による、オブジェクトベース・ストレージシステムに於いてスナップショットコピーを提供するシステムを図示する。本システムには、ホストコンピュータ１０００を含み、本コンピュータは自らのホストバスアダプタ（ＨＢＡ）１００３とストレージシステム２０００のホストインターフェース２００４を通して、ストレージシステム２０００に結合して稼動する。ホストコンピュータ１０００にはＣＰＵ１００１、メモリ１００２、及びホストバスアダプタ（ＨＢＡ）１００３が存在する。ストレージシステム２０００にはＣＰＵ２００１、メモリ２００２、キャッシュメモリ２００３、ホストインターフェース２００４、ディスクインターフェース２００５、及びサービスプロッセサ（ＳＶＰ）２００６より成るディスクコントローラ２１００と一台以上のストレージデバイス２２００が存在する。本ストレージデバイス２２００にはオブジェクトベース・ストレージデバイスが存在できる。ディスクコントローラ２１００内の全てのデバイスは内部バスを通して互いに結合される。ディスクコントローラ２１００はホストコンピュータ１０００からの入出力要求を処理する。本入出力要求はオブジェクトベース・ストレージデバイスのコマンドに基づく。
【００１６】
ホストコンピュータ１０００とストレージシステム２０００のインターフェースはファイバチャネル（ＦＣ）、イーサネット（登録商標）等である。ディスクインターフェース２００５は、ストレージデバイス２２００とディスクコントローラ２１００を結合する為に使用される。サービスプロッセサ２００６は、ストレージシステム２０００に結合して稼動し、ストレージシステム２０００の構成を設定／変更する為に使用される。各ストレージデバイス２２００は、オブジェクトベース・ストレージデバイスのコマンドに従い入出力要求を処理する。
【００１７】
メモリ２００２は、入出力要求その他の操作を処理するプログラムを格納する為に使用される。ＣＰＵ２００１がメモリ２００２に格納されたプログラムを実行する。キャッシュメモリ２００３は、ホストコンピュータ１０００からの書き込みデータをストレージデバイス２２００に保存する前に一時的に保持し、又ホストコンピュータ１０００から要求された読み出しデータを保持する。キャッシュメモリ２００３はバッテリバックアップされた不揮発メモリでも良い。更に又、メモリ２００２とキャッシュメモリ２００３は同一メモリ内に共存してもよく、これも本発明の範囲内である。
【００１８】
図２は、本発明の一実施例に基づくシステムでのソフトウエア構成を図示する。ホスト１０００はクライアント・サーバ システムのサーバコンピュータ、メインフレームコンピュータ又はストレージシステム２０００に入出力要求を生成する他の如何なるタイプのコンピュータでも構わない。ホスト１０００はファイルシステム１１００とオブジェクト管理テーブル１２００より成る。ファイルシステム１１００はアプリケーション（図示していない）からファイル入出力要求を受け、ファイル属性とオブジェクト属性を管理し、オブジェクトベース・ストレージシステム２０００にＯＳＤコマンドを発行する。オブジェクト管理テーブル１２００はオブジェクトの状態（例：ミラ−又はスプリット）及びスナップショットの世代番号に加えて、ファイル名等のファイル識別子（ＦＩＤ）、パーティションＩＤ（ＰＩＤ）、及びオブジェクトＩＤ（ＯＩＤ）等のマッピング情報を維持する。
【００１９】
ストレージシステム２０００は、ディスクコントローラ２１００と多数のＯＳＤ論理ユニット（ＯＳＤ  ＬＵ）より成る。ディスクコントローラ２１００は、ホスト１０００からのＯＳＤコマンドを受信し処理する、例えば、スナップショットモジュールの如きソフトウエアを有する。スナップショットモジュール２１１０は、ディスクコントローラで稼動しオブジェクトのスナップショット（ある一時点のコピー）を生成するソフトウエアモジュールである。ディスクコントローラ２１００は、更に、ホストデバイス１０００のオブジェクト管理テーブル１２００と同様なオブジェクト管理テーブル２４００を有する。オブジェクト管理テーブル２４００は、オブジェクトのＰＩＤとＯＩＤを管理する。本発明の一実施例では、ミラースナップショット機能が使用できる。
【００２０】
しかしながら、本発明の実施例では更に、コピーオンライトスナップショット方式も実装できる。ホスト１０００又はＳＶＰ２３００は、スナップショットモジュール２１１０にコマンドを発行して、スナップショット機構又はプロセスを起動できる。ＳＶＰ２３００は、ストレージシステム２０００の構成を設定／変更する為に管理者によって使用されるコンピュータである。ＯＳＤ  ＬＵ２２００はサービス発信サブシステム２１２０と一台以上のハードディスクドライブ２２１０より成る。更に、ストレージシステム２０００には一式以上のＯＳＤ  ＬＵが存在できる。
【００２１】
サービス発信サブシステム２１２０は、ＯＳＤコマンドをハードディスクドライブ２２１０に発信するソフトウエアプログラムである。サービス発信サブシステム２１２０はディスクコントローラ２１００に存在する。ＯＩＤをディスクの物理ブロック番号に変換する変換機構２１３０がディスクコントローラに存在すれば、オブジェクトを保存するデバイスはデータをブロックで保存する通常のハードディスクドライブでよい（図３の左側の図を参照）。
【００２２】
しかしながら、変換機構がＨＤＤに存在すれば、本ＨＤＤはオブジェクトベース・ストレージデバイス（ＯＳＤ）と呼ぶことができ、ＯＳＤコマンドを直接受信することができる（図３の右側の図を参照）。ＨＤＤ又はＯＳＤに存在するオブジェクトについては、以降により詳細に説明する。更に本発明の実施例に拠れば、以降に更に詳細に説明するように、オブジェクトはファイル、ボリューム、テーブル、又は他のコンポーネントに関係する。
【００２３】
図３は、本発明の一実施例に従うＨＤＤ及びＯＳＤの一例を図示する。ＨＤＤ又はＯＳＤには一つ以上のパーティション２２１２が存在する。更に、これらデバイスは一パーティション２２１２の中に一式以上のオブジェクト２２１１を保存することができる。パーティションの中ではオブジェクトは属性を共有することができる。既に述べたように、ＯＳＤとＨＤＤの相違の一つは、アドレス変換機構２１３０が当該デバイス中に存在するか否かである。以下に続く実施例に於いて、ＨＤＤは、本発明を説明するのに最も多く使用されるストレージデバイスであるが、ＯＳＤもこれら実施例の各々にストレージデバイスとして使用することが出来る。
【００２４】
図４は、本発明の一実施例に従うオブジェクトの構成図である。既に述べたように、ストレージシステム２０００は、オブジェクトベース・ストレージデバイスのコマンド（ＯＳＤコマンド）に従って、ホストコンピュータ１０００からの入出力要求を処理する。ＯＳＤコマンドシステムでは、ホストコンピュータ１０００は、ストレージシステム２０００との間でデータをオブジェクトとして読み書きする。オブジェクトは「データ」２２１４と「属性」（又はメタデータ）２２１３より成る。「属性」２２１３は、例えばファイルＩＤ（ＦＩＤ）等の、オブジェクトの識別情報を有する。オブジェクトのサイズは可変の為、各オブジェクトは各属性中にオブジェクトのサイズ情報を有する。
【００２５】
ストレージシステム２０００は、例えば、
・パーティションＩＤ（ＰＩＤ）、
・各オブジェクトの識別番号たるオブジェクトＩＤ（ＯＩＤ）、
・本オブジェクトの使用者を識別するユーザ名、
・本オブジェクトのサイズ（属性分を含む）を示す使用容量、
・本オブジェクトが生成された生成時刻、
・最近に本属性がアクセスされた属性アクセス時刻、
・最近に本属性が更新された属性更新時刻、
・最近に本データがアクセスされたデータアクセス時刻、及び、
・最近に本データが更新されたデータ更新時刻、
等の各タイプの属性情報を維持する。
【００２６】
ユーザオブジェクトＩＤはオブジェクトＩＤ（ＯＩＤ）とも呼ばれる。幾つかの属性情報は標準化機構で定義済だが、ベンダは自分のＯＳＤに属性情報を追加して定義しても良い。加えて、既存のＯＳＤコマンドが存在するが、ベンダはこの既存のＯＳＤコマンドに対して固有のパラメータを定義してもよく、あるいは又、個別のＯＳＤ実装の中に専用のＯＳＤコマンドを定義しても良い。
【００２７】
図５は、本発明の一実施例に従う幾つかのＯＳＤ操作／コマンドをリストする。これらＯＳＤ操作／コマンドには、例えば、ＣＲＥＡＴＥ（「生成」）、ＷＲＩＴＥ（「書き込み」）、ＲＥＡＤ（「読み出し」）、ＳＥＴ  ＡＴＴＲＩＢＵＴＥ（「属性設定」）、ＧＥＴ  ＡＴＴＲＩＢＵＴＥ（「属性取得」）、及びＣＲＥＡＴＥ  ＡＮＤ  ＷＲＩＴＥ（「生成と書き込み」）が存在する。「生成」コマンドはＯＳＤ中に一式以上のオブジェクトを割り付ける。「書き込み」コマンドはオブジェクトＩＤ、開始バイトアドレス、及び長さに関連するパラメータを有する。本コマンドは、指定開始バイトアドレスからの所定長のデータとオブジェクトＩＤで指定されたオブジェクトの書き込みに使用される。更に、本属性はコマンドを呼び出すのと同時に変更できる。「読み出し」コマンドはオブジェクトＩＤ、開始バイトアドレス、及び長さに関するパラメータを有する。
【００２８】
本コマンドは、指定開始バイトアドレスからの所定長のデータとオブジェクトＩＤで指定されたオブジェクトの読み出しに使用される。更に、本オブジェクトはコマンドを呼び出すのと同時に変更できる。「属性設定」コマンドはパラメータで指定されたオブジェクトの属性を更新する為に使用される。「属性取得」コマンドはパラメータで指定されたオブジェクトの属性をオブジェクトベース・ストレージデバイスから取得する為に使用される。「生成と書き込み」コマンドは、生成操作と書き込み操作の組み合わせコマンドで、一コマンドで生成と書き込みを実行する為に使用される。
【００２９】
図６は、本発明の一実施例に従うペア生成手続を図示する。ミラーを使用したスナップショット操作に先立って、ＰＡＩＲ  ＣＲＥＡＴＥ（「ペア生成」）操作がホストデバイス又はホストのクライアント機のアプリケーションから発行される。「ペア生成」操作は又ＳＶＰ２３００からも開始できる。「ペア生成」操作では、最初にソースボリュームからデスティネーションボリュームにコピー（初期コピー）してミラーを開始する。現状のアプリケーション環境では、ＯＳＤコマンドセットにはコピーコマンドは存在しないので、本初期コピーは図１５で記されたプロセスで実行される。
【００３０】
図６に示す通り、本発明に従う「ペア生成」に於いては、管理者がＳＶＰ２３００を通してソースボリュームを指定して「ペア生成」コマンドを発行する（１）。この時、デスティネーションボリュームを指定することも同様に可能である。デスティネーションボリュームが指定されなければ、スナップショットモジュールがデスティネーションボリュームを決定する。ディスクコントローラ２１００のスナップショットモジュール２１１０は「ペア生成」コマンドを受信して、ソースボリューム２２２０からデスティネーションボリューム２２３０への初期コピーを開始する（２）。
【００３１】
本プロセスでは、ソースボリュームのオブジェクトはデスティネーションボリュームの他のオブジェクトに一つずつコピーされる。初期コピープロセスを通して、デスティネーションボリュームにコピーオブジェクトが誕生する。コピーオブジェクトが完成したら、新ＰＩＤとＯＩＤが本コピーオブジェクトにアサインされる（３）。本コピーオブジェクトのＰＩＤとＯＩＤは、ソースオブジェクトと同じＦＩＤにてオブジェクト管理テーブル２４００に保存される。オリジナル（ソース）とデスティネーション（コピー）のオブジェクトの状態欄は共に「ミラー」になる。
【００３２】
世代番号はスナップショットモジュールで管理され、デスティネーションオブジェクトにアサインされる。ソースオブジェクトに対しては本番号は、例えば、０でスナップショットオブジェクトではないことを意味する。一実施例でのミラーオブジェクトの世代番号は、スナップショットモジュールがオブジェクト管理テーブル２４００を精査して、本ファイルの最大の世代番号を検出したときに決定される。既に述べた通り、「ペア生成」コマンドはＳＶＰに代わってホスト側から来ることもできる。ミラーボリュームに対するファイル生成とファイル書き込み操作については、以降に説明する。本ミラーはこれ迄はファイルであったものが、ここで、ボリューム全体に代わって、一つのオブジェクトの単位となる。
【００３３】
図７は、本発明の一実施例に従う、オブジェクトベース・ストレージシステムでの、ミラーボリュームに対するオブジェクト生成を説明するシステム図を示す。ホスト１０００又はホストのクライアントコンピュータのアプリケーションは、ファイルシステムのＡＰＩを通して、ファイル名等のファイル識別子を指定してファイルを生成する（１）。ファイルシステム１１００は、ＯＳＤオブジェクト２２１１に存在しない属性を生成して、「生成と書き込み」コマンドを使用して、本属性を一式のオブジェクトとしてホスト１０００又はストレージシステム２０００のストレージデバイスに保存する。
【００３４】
ファイルシステムはパーティションの生成を管理しているので、ファイルシステムは本ファイルに対する新オブジェクトが生成されるべきパーティションを知っており、「生成と書き込み」コマンドの中にパーティションＩＤ（ＰＩＤ）をセットして、新オブジェクトのパーティションを指定する。次いで、ファイルシステムは本ファイルに対するオブジェクトを生成する為に、「生成と書き込み」コマンドを発行する（２）。ファイルシステムが「生成と書き込み」コマンドを発行する時には、ファイルに対してＰＩＤと共にＯＩＤをアサインする事も出来る。ファイルシステムが「生成と書き込み」コマンドのＯＩＤフィールドに、例えば０をセットしたら、ＯＳＤがＯＩＤ番号をアサインする。
【００３５】
ディスクコントローラ２１００のスナップショットモジュール２１１０は、「生成と書き込み」コマンドを受信して、アプリケーションが生成要求したオブジェクト（オリジナルオブジェクト）と本オブジェクトのコピー（ミラー）オブジェクトの双方を、「生成と書き込み」コマンドを処理して生成する（３）。サービス発信サブシステム２１２０は、「生成と書き込み」コマンドを受信し実行する。オリジナルオブジェクト２２１１は、ソースボリューム２２２０の何所か不使用領域に、指定されたＰＩＤとＯＩＤにて生成される。指定されたＯＩＤが０なら、ＯＳＤ  ＬＵ２２００がＯＩＤをセットする。オリジナルオブジェクト２２１１のミラーオブジェクト２２１２は、デスティネーションボリューム２２３０の何所か不使用領域に生成される。ミラー化プロセスはファイルシステムには意識されず、ファイルシステムはオリジナルオブジェクトがミラー化されていることは知る事ができない。
【００３６】
スナップショットモジュール２１１０は、ミラーオブジェクト２２１２にＰＩＤとＯＩＤをアサインする。スナップショットモジュール２１１０は、ファイルシステム１１００にオリジナルオブジェクト２２１１のＯＩＤを返送する（４）。ファイルシステム１１００は既にオリジナルオブジェクトのＰＩＤを知っているので、オリジナルオブジェクトのＯＩＤのみを送付すれば良い。ファイルシステム１１００はＦＩＤ、オリジナルＰＩＤ、とオリジナルＯＩＤを本オリジナルオブジェクトの世代番号（例えば、０）と共に、オブジェクト管理テーブル１２００に登録する（５）。オブジェクト管理テーブル１２００は、ホストのストレージデバイスに一オブジェクトとして保存される。ファイルシステム１１００はファイル生成操作の結果をアプリケーションに返送する（６）。
【００３７】
図８は、本発明の図７の実施例に基づくオブジェクト生成のシーケンス図である。本プロセスは図７の議論中に説明済である。本シーケンス図は、各デバイス／実体で実行されている活動と共に、オブジェクト生成プロセス内でのデバイス／実体間を行きかうパラメータに焦点を当てる。
【００３８】
図９は、本発明の一実施例に従うデータ書き込み操作のシーケンス図である。クライアントコンピュータ又はホストでのアプリケーション１５００、ファイルシステム１１００、スナップショットモジュール２１１０、オブジェクトベース・ストレージデバイス２２００、及びオブジェクト管理テーブル１２００間を行きかうパラメータが示されている。ここではパラメータは説明の為に示されており、本発明はこれらパラメータに限定されること無く、他のパラメータが存在可能で本発明の範囲に含まれる。
【００３９】
オブジェクトは、スプリット要求が来る迄はミラー状態を維持する。データ書き込みプロセスは、既に述べたファイル生成プロセスと類似している。ホスト１０００又はホストのクライアントコンピュータ上のアプリケーション１５００はファイル名、データ長、及びデータ等のファイル識別子を指定して、ファイルシステムのＡＰＩを通してファイルにデータ書き込みを行う（１）。ファイルシステム１１００は、属性（例：ＵＮＩＸ（登録商標）システムのｉ−ｎｏｄｅテーブル）を検索して当該ファイルのＦＩＤを検出する。ファイルシステムは、オブジェクト管理テーブル１２００内でオリジナルファイルのＰＩＤとＯＩＤを検索する。アプリケーション１５００から得られるファイル識別子が、オブジェクト管理テーブル１２００から得られるＦＩＤと正確に同じなら、属性（例：ｉ−ｎｏｄｅテーブル内）検索は不要である。
【００４０】
ファイルシステムは、ファイルに対するオブジェクトへデータを書き込む為にオリジナルＰＩＤ、オリジナルＯＩＤ、データ長、及びデータをパラメータにして、「書き込み」コマンドを発行する（２）。ディスクコントローラ２１００のスナップショットモジュール２１１０が本書き込みコマンドを受信する。スナップショットモジュール２１１０は次いで、ストレージシステムのオブジェクト管理テーブル２４００（本図には示されていない）にて、指定されたオリジナルＰＩＤとＯＩＤを用いて、本オブジェクトのＦＩＤを検索する。オブジェクトがミラーされていたら、オリジナルオブジェクトと同じＦＩＤを持ち、オブジェクト管理テーブル２４００内で最大の世代番号を持つオブジェクトが検索される。スナップショットモジュールは「書き込み」コマンドを使用して、データをオリジナル及びミラーオブジェクトの双方に書き込む（３）。
【００４１】
スナップショットモジュール２１１０は、動作の結果即ち成功か失敗かをファイルシステム１１００に返送する（４）。ファイル生成プロセスとは異なって、オブジェクト管理テーブル１２００に情報を登録する必要は無い。ファイルシステム１１００は、アプリケーションにファイル書込み操作の結果を返送する（５）。オブジェクト管理テーブル２４００のファイルの状態がＳＰＬＩＴ（「スプリット」）なら、データはオリジナルオブジェクトのみに書き込まれる。
【００４２】
図１０は、本発明の一実施例に従うオブジェクトベース・ストレージシステムに於けるスナップショット生成操作を図示する。ユーザ又は管理者からのスプリット操作が、スナップショット生成を開始させる。ホスト１０００又はホストのクライアントコンピュータ上のアプリケーションは、ファイル識別子又はソースボリューム名を指定してスプリットコマンドを発行して、スナップショット生成を要求する（１）。スプリットコマンドは、オブジェクト単位又はボリューム単位に適用される。
【００４３】
ファイルシステム１１００は属性（例：ＵＮＩＸシステムのｉ−ｎｏｄｅ）を検索して、本ファイルのＦＩＤを検出する。ファイルシステムは、本ＦＩＤを用いてオリジナルファイルのＰＩＤとＯＩＤをオブジェクト管理テーブル１２００内で検索する（２）。アプリケーションが発行するファイル識別子がオブジェクト管理テーブルのＦＩＤと正確に同じなら、本検索は不要である。更に、ボリューム名が指定されていたら、ボリューム名のみがスナップショットモジュールに送信される。本ボリューム名はオブジェクト管理テーブル２４００に載っている。
【００４４】
ファイルシステム１１００は、「スプリット」の如き新ＯＳＤコマンド又はベンダ属性の何か他の既存のＯＳＤコマンド用いて、スナップショットモジュール２１１０を起動する。加えて、ファイルシステム１１００とスナップショットモジュール２１１０間の専用コマンドを使用することも出来る。ファイルシステム１１００は、ディスクコントローラ２１００内のスナップショットモジュール２１１０をオリジナルＰＩＤ、オリジナルＯＩＤ、又はボリューム名を指定して起動する（３）。スプリット要求を受信後、スナップショットモジュール２１１０は、この構成を変更してミラーを停止する（４）。オブジェクト管理テーブル２４００のオリジナルオブジェクト及びミラーオブジェクトの双方の状態は、「スプリット」に変更される。
【００４５】
スプリットコマンドがボリューム全体に適用されたら、本ボリュームの全てのオブジェクトの状態が「スプリット」に変更される。同一ボリュームのオブジェクトは、ディスクコントローラが管理できる。スナップショットモジュールはファイルシステム１１００に、オリジナルＯＩＤとＰＩＤ及びミラーＯＩＤとＰＩＤ及び世代番号をオブジェクト毎に送信する（５）。ファイルシステムはＰＩＤ、ＯＩＤ、及びミラーオブジェクトの世代番号を登録し、オブジェクト管理テーブル１２００でのオリジナル及びミラーオブジェクト双方の状態を「スプリット」に変更する（６）。ファイルシステム１１００はアプリケーションに、スナップショット操作の結果を返送する（７）。
【００４６】
図１１は、本発明の一実施例に基づくスプリット後のミラープロセスを図示する。これまでは、オリジナルファイルのミラーはスプリットコマンド後は終了すると仮定してきた。しかしながら、スプリットコマンド後もミラーを維持することが可能である。この場合は、スナップショットモジュール２１１０は、オリジナルオブジェクト２２１１のコピー２２１３（初期コピー）を図６のプロセス（２）と（３）を通して他のボリューム２２４０上に生成する。新しいデスティネーションボリュームは、スナップショットモジュール２１１０がアサインする。
【００４７】
スナップショットモジュール２１１０はオブジェクト管理テーブル２４００を更新する。この後は、オリジナルボリュームへの書き込みはこの新しいデスティネーションボリューム２２４０にミラーされる。ユーザ又は管理者がミラー停止コマンドを発行すれば、もはや新デスティネーションボリュームは生成されない。加えて、本発明によれば、ミラーを維持するもう一つの方法が存在する。「ペア生成」コマンドの起動によって、２２３０や２２４０のような多重ミラーボリュームの生成が可能になる。スプリットコマンドが発行される毎に、２２３０のようなミラーボリュームの一台がスプリットされる。
【００４８】
図１２は、本発明の一実施例に従うスナップショット生成操作のシーケンス図である。クライアントコンピュータ又はホスト上のアプリケーション、ファイルシステム、スナップショットモジュール、オブジェクトベース・ストレージデバイス、及びオブジェクト管理テーブル間を飛び交うパラメータが示されている。本発明は、本図に示されるパラメータのみに限定されるものではなく、各交信により多くのパラメータが存在してもよい。括弧内の番号は図１０の同じ番号の活動に相当する。
【００４９】
図１３は、本発明の一実施例に従う、ＳＶＰを通したスナップショット操作の起動を図示する。ストレージシステム２０００の管理者は、ＳＶＰ２３００を通してペア生成又はスプリット操作を要求することができる。本実施例の操作では、ファイル識別子に代わって、オリジナルオブジェクトのＰＩＤとＯＩＤ又はソースボリューム名が指定される。ミラーオブジェクトのＰＩＤとＯＩＤも管理者がＳＶＰ２３００により指定可能である（１）。
【００５０】
ＳＶＰ２３００は、オリジナルオブジェクトのＰＩＤとＯＩＤ又はソースボリューム名を指定して、スナップショットモジュール２１１０を起動する。ＳＶＰ２３００は更に、「スプリット」の如き新ＯＳＤコマンド又はベンダ属性の何か既存のＯＳＤコマンドを使用して、スナップショットモジュール２１１０を起動できる。加えて、ＳＶＰ２３００とスナップショットモジュール２１１０間の専用コマンドを用いることもできる。方法の如何を問わず、ＳＶＰ２３００は、オリジナルＰＩＤとオリジナルＯＩＤのパラメータを指定して、ディスクコントローラ２１００内のスナップショットモジュール２１１０を起動する。
【００５１】
スナップショットモジュール２１１０がスプリット要求を受信し、ミラーオブジェクトのＰＩＤとＯＩＤが指定されていない場合は、スナップショットモジュールは、オリジナルＰＩＤとＯＩＤを用いて、オブジェクト管理テーブル２４００内のミラーオブジェクトのＰＩＤとＯＩＤを検索する（２）。スナップショットモジュール２１１０は、構成を変更してミラーを停止させ、オリジナルオブジェクト２２１１とミラーオブジェクト２２１２に対するオブジェクト管理テーブル２４００での状態を「スプリット」に変更する。スプリットコマンドがボリューム全体に適用された場合には、本ボリューム中の全てのオブジェクトが「スプリット」状態に変更される。
【００５２】
同一ボリューム内のオブジェクトは、ディスクコントローラ２１００が管理できる。スナップショットモジュール２１１０は、オリジナルＰＩＤとＯＩＤ及びミラーＰＩＤ、ＯＩＤ及び世代番号をファイルシステム１１００に返送する（３）。スナップショットモジュール２１１０は、ファイルシステム１１００にＰＩＤとＯＩＤ及びミラーオブジェクトの世代番号を登録し、オブジェクト管理テーブル１２００でのオリジナルオブジェクト２２１１とミラーオブジェクト２２１２の状態を「スプリット」に変更することを依頼する（４）。スナップショットモジュール２１１０は、スプリット操作の結果をＳＶＰ２３００に返送する（５）。
【００５３】
図１４は、本発明の一実施例に従うＳＶＰを通したスナップショット生成操作のシーケンス図を示す。本図はＳＶＰ２３００、ホスト内のオブジェクト管理テーブル１２００、ファイルシステム１１００、及びストレージシステム内のオブジェクト管理テーブル２４００、スナップショットモジュール２１１０、及びオブジェクトベース・ストレージデバイス２２００間を行きかうパラメータを図示する。本図には、説明の為幾つかのパラメータが示されているが、本発明はこれらパラメータに限定されること無くより以上の他のパラメータが存在可能で、これらも本発明の範囲内である。括弧内の番号で表示される活動は、以前の図１３で示された同じ番号の活動に相当する。
【００５４】
ＳＶＰ２３００は、オリジナルＰＩＤとオリジナルＯＩＤ／ボリューム名より成るスプリットコマンドをスナップショットモジュール２１１０に送信する（１）。スナップショットモジュール２１１０は、ストレージシステムのオブジェクト管理テーブル２４００をオリジナルＰＩＤとオリジナルＯＩＤを用いて検索する（２）。スナップショットモジュール２１１０は、ストレージシステムのオブジェクト管理テーブル２４００より、ミラーＰＩＤとミラーＯＩＤを取得する。
【００５５】
スナップショットモジュール２１１０は次いで、オブジェクトベース・ストレージデバイス２２００にスプリットコマンドを送信する。スナップショットモジュール２１１０とオブジェクトベース・ストレージデバイス２２００は、次いで、スプリットコマンドを処理しストレージシステムのオブジェクト管理テーブル２４００を更新する（３）。スナップショットモジュール２１１０はオリジナルＰＩＤ、ＯＩＤ、ミラーＰＩＤ、ＯＩＤ及び世代番号より成る登録コマンドを、ホストデバイスのオブジェクト管理テーブル１２００へ送信する（４）。スナップショットモジュール２１１０は、更にＳＶＰ２３００に成功／不成功状態を送信する（５）。
【００５６】
図１５は、本発明の一実施例に従うコピー操作のフローチャートを示す。本図は、スナップショットモジュールが、ホストコンピュータ１０００から又はＳＶＰから起動されて、生成／書き込み要求を受信した時に、本モジュールが如何にソースボリュームからデスティネーションボリュームにオブジェクトのコピーを生成するかを図示する。本プロセスはコントローラ２１００のＣＰＵ２００１にて実行される。本プロセスが起動された時点では、スナップショットモジュールはオリジナルオブジェクトのＰＩＤとＯＩＤを知っている。
【００５７】
スナップショットモジュールは「読み出し」コマンドを起動し、コピー指定されたオリジナルオブジェクトのデータを読み出す（ステップ５００１）。スナップショットモジュールは「属性取得」コマンドを起動してオリジナルオブジェクトの属性を取得する（ステップ５００２）。スナップショットモジュールは、ステップ５００１と５００２で得られたデータと属性、及び、ファイルシステム又はスナップショットモジュール自身が指定したＰＩＤとＯＩＤを用いて、「生成と書き込み」コマンドを起動する（ステップ５００３）。これでプロセスは終了する（ステップ５００４）。
【００５８】
図１６は、本発明の一実施例に従う、メタデータサーバを持つオブジェクトベース・ストレージシステムに於けるオブジェクト生成操作を図示する。本発明に拠れば、オブジェクト管理テーブル３１００は、ホストデバイス１０００に結合して稼動するメタデータサーバ３０００によって維持される。本図は、ファイルシステム１１００が生成されたオブジェクトのＰＩＤとＯＩＤをメタデータサーバ３０００に乗るオブジェクト管理テーブル３１００に登録することを除いて、図７と同じである。オブジェクト生成プロセスは、図７に関連して以前に説明したのと同じでよい。
【００５９】
図１７は、本発明の一実施例に従う、メタデータサーバを持つオブジェクトベース・ストレージシステムに於けるスナップショット生成操作を図示する。本図は、ファイルシステム１１００が生成されたオブジェクトのＰＩＤとＯＩＤをメタデータサーバ３０００に乗るオブジェクト管理テーブル３１００に登録して、スナップショットオブジェクトの生成を扱うことを除いて、図１０と同じである。図１３と同様に、スナップショット要求はＳＶＰ２３００より来ることができる。スナップショット生成プロセスは、図１０に関連して以前に説明したのと同じでよい。
【００６０】
これまでの実施例では、一つのファイルは一つのオブジェクトに関係すると仮定した。しかしながら本発明では、複数のファイルが一つのオブジェクトに関係し、一つのファイルが複数のオブジェクトに関係しても良い。この上、データベースの観点からは、テーブルが一つのオブジェクトに関係し、或いは一行又は一列が一つのオブジェクトに関係しても良い。これまで議論してきた実施例では、ストレージシステムでのスナップショット機構はミラーとスプリットをベースにしてきた。しかしながら、本発明に拠れば、コピーオンライトをベースにする、ストレージシステムでのもう一つのスナップショット機構が存在する。
【００６１】
ホスト又はクライアント機のアプリケーション又はＳＶＰ経由での管理者から、あるボリューム（例：プライマリボリューム）に、スナップショット生成コマンドが発行された後には、本プライマリボリュームへの書き込み操作が来る毎に、被更新データ領域は他のボリューム、例えば差分ボリュームにログとして記録される。新しいデータがプライマリボリュームに書き込まれる。ミラー操作法と比較すると、初期コピーの必要は無くログデータが差分ボリュームに記録される。
【００６２】
図１８は、本発明の一実施例に従う、プライマリと差分ボリュームを用いる、オブジェクト生成とファイル書き込みプロセスを図示する。本実施例にはメタデータサーバは存在しないが、オブジェクト管理テーブルを有するメタデータサーバを用いることは可能である。オブジェクト生成プロセスを説明し、その後にファイル書き込みプロセスが継続する。オブジェクト生成プロセスは、ホスト１０００又はホストのクライアントコンピュータのアプリケーションがファイルシステムのＡＰＩを通して、ファイル名等の識別子を指定してファイル生成を行うことにより開始する（１）。
【００６３】
ファイルシステム１１００は、ＯＳＤオブジェクト２２１１に存在しない属性を生成し、ホスト１０００又はストレージシステム２０００内のストレージデバイスに「生成と書き込み」コマンドを用いて一オブジェクトとして保存する（２）。ファイルシステム１１００はパーティションの生成を管理しているので、ファイルに対する新オブジェクトを格納すべきパーティションを知っており、「生成と書き込み」コマンドの中にパーティションＩＤ（ＰＩＤ）を埋め込み新オブジェクトのパーティションを指定する。ファイルシステム１１００は、次いで、本ファイルに対するオブジェクトを生成する為に、「生成と書き込み」コマンドを発行する。
【００６４】
ファイルシステムが「生成と書き込み」コマンドを発行する時には、ＰＩＤと共にＯＩＤをファイルに対応してアサインする事もできる。ファイルシステムが「生成と書き込み」コマンドのＯＩＤ欄に、例えば番号０をセットした場合には、ＯＳＤが本番号をアサインする。ディスクコントローラ２１００のスナップショットモジュール２１１０は、「生成と書き込み」コマンドを受信し、アプリケーションが生成要求するオブジェクトを、「生成と書き込み」コマンドの処理により生成する。サービス発信サブシステム２１２０が、「生成と書き込み」コマンドを受信し実行する（３）。
【００６５】
プライマリオブジェクト２２１１は、指定されたＰＩＤとＯＩＤを用いて、プライマリボリューム２２２０の何処か不使用領域に生成される。指定されたＯＩＤが、例えば０ならＯＳＤ  ＬＵがＯＩＤをセットする。スナップショットモジュール２１１０は、次いで、ファイルシステムにプライマリオブジェクト２２１１のＯＩＤを返送する（４）。ファイルシステム１１００は、オブジェクト管理テーブル１２００の中にプライマリオブジェクト２２１１のＦＩＤ、ＰＩＤ、及びＯＩＤを登録する。オブジェクト管理テーブルの状態欄はこの時点では必要ない。プライマリオブジェクトの世代番号は、例えば０でも、又は他の任意の特定の番号でよい。ファイルシステム１１００はアプリケーションにファイル生成操作の結果を返送する。ファイル生成操作に関しては、スナップショットモジュールの特別な操作は必要としない。
【００６６】
スナップショット要求を受ける迄は、被更新データ２２１２は差分ボリューム２２３０に被更新ログとして記録される。以下のプロセスでファイル書込みプロセスを説明する。ホスト１０００又はホストのクライアントコンピュータ上のアプリケーションは、ファイル名等のファイル識別子、データ長、及びデータを指定して、ファイルシステムのＡＰＩを通してファイルに対してデータを書き込む（１）。ファイルシステムは属性（例：ＵＮＩＸシステムのｉ−ｎｏｄｅ）を検索してファイルに対するＦＩＤを見つける。ファイルシステム１１００は、次いで、オブジェクト管理テーブル１２００の中で本ファイルに対するＰＩＤとＯＩＤを検索する。
【００６７】
アプリケーションから得られるファイル識別子がオブジェクト管理テーブル１２００のＦＩＤと正確に等しければ、この検索（例：ｉ−ｎｏｄｅテーブル）は不要である。ファイルシステム１１００はプライマリＰＩＤとＯＩＤ、データ長、及びデータと共に、本ファイルに対するオブジェクトにデータを書き込む為に、「書き込み」コマンンドを発行する（２）。ディスクコントローラ２１００のスナップショットモジュール２１１０は本「書き込み」コマンンドを受信する。
【００６８】
スナップショットモジュールは、次いで、このプライマリＰＩＤとＯＩＤを用いて、ストレージシステムのオブジェクト管理テーブル２４００内の差分オブジェクトのＰＩＤとＯＩＤを検索する。プライマリオブジェクトのＦＩＤはプライマリオブジェクト２２１１のＰＩＤとＯＩＤを用いて検索される。差分データのＰＩＤとＯＩＤは、同じＦＩＤの最大世代番号を用いて検索される。差分オブジェクト２２１２が既に生成済なら、差分オブジェクトのＰＩＤとＯＩＤは検出される。スナップショットモジュール２１１０は、被更新データ領域２２１１を差分オブジェクト２２１２にログとして移動する（３）（３−１）。
【００６９】
差分オブジェクトが生成されていない場合には、スナップショットモジュール２１１０が差分オブジェクト２２１２に対するＰＩＤとＯＩＤを生成し、プライマリオブジェクト２２１１の更新前データを差分オブジェクト２２１２にログとして記録する。スナップショットモジュール２１１０は、プライマリオブジェクトに指定されたデータを書き込む（３−２）。スナップショットモジュール２１１０は、操作の結果（成功／不成功）をファイルシステム１１００に返送する（４）。ファイル生成プロセスとは異なって、オブジェクト管理テーブル１２００に登録する情報は存在しない。ファイルシステム１１００はファイル書込み操作の結果をアプリケーションに返送する（５）。
【００７０】
図１９は、本発明の一実施例に従う、差分データの次の世代を新差分ボリュームに書き込む様子を図示する。ユーザ又は管理者からスナップショットコマンドを受信後、差分データのデスティネーションは変更される。即ち、差分データの以前の世代が確定され一時点のデータのスナップショットが採取される。ホスト１０００又はホストのクライアントコンピュータ上のアプリケーションは、ファイル識別子又はボリューム名を用いてスナップショット生成を要求する（１）。ファイルシステム１１００は、属性（例：ＵＮＩＸシステムのｉ−ｎｏｄｅ等）を検索し、ファイルに対するＦＩＤ又はボリューム名を検出する。
【００７１】
ファイルシステムは、本ＦＩＤを用いてオブジェクト管理テーブル１２００内のオリジナルファイルに対するＰＩＤとＯＩＤを検索する（２）。アプリケーションから与えられたファイル識別子がオブジェクト管理テーブル１２００内のＦＩＤと正確に同じなら、属性（例：ｉ−ｎｏｄｅテーブル）検索は不要である。ファイルシステム１１００はＳＮＡＰＳＨＯＴ（「スナップショット」）コマンドなどの新しいＯＳＤコマンド又はベンダ属性の任意の既存ＯＳＤコマンドを起動することができる。更に、ファイルシステム１１００とスナップショットモジュール２１１０との間の専用コマンドも用いることができる。
【００７２】
ファイルシステムはオリジナルＰＩＤ、ＯＩＤ、又はボリューム名をパラメータとして、ディスクコントローラ２１００のスナップショットモジュール２１１０を起動する（３）。ファイルシステムからの要求を受信して、スナップショットモジュール２１１０はその構成を変更する（４）。既に述べたように、被更新データのデスティネーションは変更され、この結果、前世代の差分データは確定され、この時点の本データのスナップショット２２１２が採取される。次の「書き込み」コマンド受領以降は、被更新データの次の世代は、新差分ボリューム２２４０に記録される（４−１）。スナップショットコマンド（すなわちスプリット）がボリューム全体に適用された場合には、当該ボリュームの全オブジェクトは同様に処理される。
【００７３】
スナップショットモジュール２１１０はオリジナルＯＩＤとＰＩＤ、スナップショットＯＩＤとＰＩＤ、及び世代番号をファイルシステム１１００に返送する（５）。世代番号は、スナップショットモジュール２１１０が管理し、次のスナップショットコマンドが来ると世代番号は一つ加算される。ファイルシステム１１００は、ＰＩＤとＯＩＤ及びスナップショットオブジェクトの世代番号をオブジェクト管理テーブル１２００に保存する（６）。ファイルシステム１１００は、アプリケーションにスナップショット生成結果を返送する（７）。
【００７４】
図２０は、本発明の一実施例に従う、現在の静止データと差分データの系列により、オブジェクトを構築する様子を図示する。これまでの所、スナップショットを停止する方法は述べていなかった。この為には、スナップショット停止コマンドが用いられる。スナップショット停止コマンドがユーザ又は管理者から発行されると、ログデータの記録作業は停止し、データのプライマリボリュームへの書き込は一時的に抑止される。ユーザ又は管理者がスナップショットの何かの世代を読みたければ、該当オブジェクトは、現在の静止データと指定世代以降の差分データのシーケンスで組み立てできる。
【００７５】
現データを読み出すには、データはプライマリボリューム２２２０から読み出せる。第二世代を読み出すには、現データをプライマリボリューム２２２０から読み出し、第二世代の差分データを第二世代ボリューム２２４０から読み出す。第二世代ボリューム２２４０に差分データが存在すれば、プライマリデータが第二世代の被更新ログの新しいものから順に上書きされる。全てのオブジェクトに同じことを実施することにより、第二世代のボリューム２２４０が読み出せる。第一世代ボリューム２２３０を読み出すには、上記のプロセスにて第二世代を確定し、次いで第一世代のデータで上書きして、第一世代ボリューム２２３０が確定する。現状のプライマリボリューム２２２０と第一世代のデータを読み出して、第一世代データを生成することは不可能である。第二世代ボリューム２２４０の中で更新されているデータが有る限り、第二世代のデータを最初に使用しなければならない。
【００７６】
これまでの事例は偏に説明の為であって、本発明をこれに制限する為のものではないことに注意願いたい。本発明は好適な実施例により説明してきたが、ここで使用された表現はこれに制限する為ではなく説明の為であることに理解願いたい。既に説明し補足した如く、本発明の精神と範囲を逸脱することなく、添付請求項の範囲内で変更は可能である。
【００７７】
本発明は具体的な方法、材料、実施例を参照して述べてきたが、本発明は、ここで開示した事項に限定することなく、本発明は機能的に等価な構成、方法、及び添付の請求項の範囲内の使用法に及ぶ。
【図面の簡単な説明】
【００７８】
【図１】図１は、本発明の一実施例に従うオブジェクトベース・ストレージシステムでスナップショットコピーを実現するシステムを図示する。
【図２】図２は、本発明の一実施例に従うシステムでのソフトウェア構成を図示する。
【図３】図３は、本発明の一実施例に従うＨＤＤ及びＯＳＤの一例を図示する。
【図４】図４は、本発明の一実施例に従うオブジェクトを図示する。
【図５】図５は、本発明の一実施例に従う幾つかのＯＳＤ操作／コマンドのリストである。
【図６】図６は、本発明の一実施例に従うペア生成手続を図示する。
【図７】図７は、本発明の一実施例に従う、オブジェクトベース・ストレージシステムでのミラーボリュームに対するオブジェクト生成を説明するシステム図である。
【図８】図８は、本発明の図７の実施例に従うオブジェクト生成のシーケンス図である。オブジェクトはスプリット要求が来る迄ミラー状態を保持する。
【図９】図９は、本発明の一実施例に従うデータ書き込み操作のシーケンス図である。
【図１０】図１０は、本発明の一実施例に従う、オブジェクトベース・ストレージシステムでのスナップショット生成操作を図示する。
【図１１】図１１は、本発明の一実施例に従うスプリット後のミラープロセスを図示する。
【図１２】図１２は、本発明の一実施例に従う、スナップショット生成操作のシーケンス図である。
【図１３】図１３は、本発明の一実施例に従う、ＳＶＰ経由でのスナップショット操作の起動を図示する。
【図１４】図１４は、本発明の一実施例に従う、ＳＶＰ経由でのスナップショット生成のシーケンス図である。
【図１５】図１５は、本発明の一実施例に従うコピー操作のフローチャートである。
【図１６】図１６は、本発明の一実施例に従う、メタデータサーバ付のオブジェクトベース・ストレージシステムでのオブジェクト生成操作を図示する。
【図１７】図１７は、本発明の一実施例に従う、メタデータサーバ付のオブジェクトベース・ストレージシステムでのスナップショット生成プロセスを図示する。
【図１８】図１８は、本発明の一実施例に従う、プライマリと差分ボリュームを使用するオブジェクト生成とファイル書き込みプロセスを図示する。
【図１９】図１９は、本発明の一実施例に従う、次世代差分データが新差分ボリュームに書き込まれる状態を図示する。
【図２０】図２０は、本発明の一実施例に従う、現状の静止データと差分データのシーケンスにより、オブジェクトを構築する状態を図示する。
【符号の説明】
【００７９】
１０００    ホスト
１００１、２００１    ＣＰＵ
１００２、２００２    メモリ
１００３    ＨＢＡ
２０００    ストレージシステム
２１００    コントローラ
２００３    キャッシュ
２００４、２００５    Ｉ／Ｆ（インターフェース）
２００６    ＳＶＰ
２２００    ストレージ
【図１】
0004776342.tif 000002
【図２】
0004776342.tif 000003
【図３】
0004776342.tif 000004
【図４】
0004776342.tif 000005
【図５】
0004776342.tif 000006
【図６】
0004776342.tif 000007
【図７】
0004776342.tif 000008
【図８】
0004776342.tif 000009
【図９】
0004776342.tif 000010
【図１０】
0004776342.tif 000011
【図１１】
0004776342.tif 000012
【図１２】
0004776342.tif 000013
【図１３】
0004776342.tif 000014
【図１４】
0004776342.tif 000015
【図１５】
0004776342.tif 000016
【図１６】
0004776342.tif 000017
【図１７】
0004776342.tif 000018
【図１８】
0004776342.tif 000019
【図１９】
0004776342.tif 000020
【図２０】
0004776342.tif 000021