(57)【要約】【課題】  ほぼ即時のコピー・プロセスによって作成する、ファイルシステムの論理バージョンを管理するシステムと方法を提供する。【解決手段】  ファイルシステムの（主バージョンを含む）各論理バージョンに一意のエポック番号または他の識別値を割り当てる。各ファイルシステム・オブジェクトにオブジェクトの存在根拠をなす論理バージョンの空間を規定する２つのエポック番号を割り当てる。すべての有効なエポック番号から成るリストをバージョン・テーブル中に保持する。ファイルシステムの論理バージョンをほぼ即時に作成するには、バージョン・テーブルに一意のエポック番号エントリを挿入し、新たな論理バージョンに次のエポック番号を挿入する必要がある。ファイルシステムの論理バージョンによって参照されたファイルシステム・オブジェクトについてシステムの元の状態を保存するには、コピー・オン・ライト手順を使用する。したがって、ファイルシステムの新たな論理バージョンを保持するとともに、ファイルシステムの以前の論理バージョンの元の状態を保存することができる。【選択図】          図５
2004326800.tif 000002
【特許請求の範囲】
【請求項１】
ファイルシステムの論理バージョンを管理する方法であって、
（ａ）前記ファイルシステムの論理バージョンにエポック値を割り当てるステップと、
（ｂ）ファイルシステム・オブジェクトに一対のエポック値を割り当てるステップと、
（ｃ）ファイルシステムのすべてのエポック値から成るバージョン・テーブルを保持するステップであって、列挙された各エポック値は前記ファイルシステムの有効な論理バージョンに対応している、ステップと、
（ｄ）前記ファイルシステムの前記論理バージョンの現在のエポック値を永続記憶装置の前記バージョン・テーブルに格納することにより単一のポイント・イン・タイムで前記ファイルシステムのほぼ即時の論理バージョンを作成し、ファイルシステムの現在のエポック値を単調にインクリメントするステップと
を備えた
方法。
【請求項２】
前記オブジェクト・エポック値ペアが、前記オブジェクトが有効であるファイルシステムの論理バージョンの範囲を決めている、
請求項１に記載の方法。
【請求項３】
ファイルシステムのほぼ即時の論理バージョンを作成するステップが、前記論理バージョンの余分なスペースを前記ファイルシステムにおいて参照し変化したファイルシステム・オブジェクトに限定するステップを含んでいる、
請求項１に記載の方法。
【請求項４】
さらに、
前記ファイルシステムの元の状態を保存しながら前記ファイルシステムの論理バージョンを保持するステップ
を備えた、
請求項１に記載の方法。
【請求項５】
さらに、
前記ファイルシステムの前記論理バージョンのほぼ即時の削除を実行するステップ
を備えた、
請求項１に記載の方法。
【請求項６】
前記ファイルシステムの前記論理バージョンのほぼ即時の削除を実行するステップが、前記バージョンの対応するエポック値を前記永続記憶装置中の前記バージョン・テーブルから削除するステップを含む、
請求項５に記載の方法。
【請求項７】
さらに、
前記削除したバージョンに付随する非参照のオブジェクトを削除するステップ
を備えた、
請求項６に記載の方法。
【請求項８】
さらに、
前記ファイルシステムの既存の論理バージョンへのほぼ即時の復帰を実行するステップ
を備えた、
請求項１に記載の方法。
【請求項９】
前記ファイルシステムの既存の論理バージョンへのほぼ即時の復帰を実行するステップが、永続記憶装置中の前記バージョン・テーブル中の介在するすべてのエントリを削除し、ファイルシステムの前記エポック値をファイルシステムの前記復帰した論理バージョンに対応するエポック値に設定するステップを含む、
請求項８に記載の方法。
【請求項１０】
さらに、
複数の参照済みファイルシステム・オブジェクトの変更に応答してコピー・オン・ライト手順を実行することによりファイルシステムの元の状態を保存するステップ
を備えた、
請求項１に記載の方法。
【請求項１１】
前記コピー・オン・ライト手順を実行するステップが、前記ファイルシステムの非主論理バージョンに属す複数の参照済みファイルシステム・オブジェクトの変更に応答して前記ファイルシステム・オブジェクトを３個のコピーに分割するステップを含む、
請求項１０に記載の方法。
【請求項１２】
データ記憶システムであって、
エポック値によって識別されたファイルシステム・バージョンと、
２つのエポック値から成るペアによって識別されたファイルシステム・オブジェクトと、
ファイルシステムのすべての有効なエポック値から成るリストを保持するように適合したバージョン・テーブルであって、列挙された各エポック値が前記ファイルシステムの有効な論理バージョンに対応している、バージョン・テーブルと、
前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成するように適合したバージョン管理手段であって、前記ファイルシステムの現在の論理バージョンに付随する現在のエポック値が永続記憶装置中の前記バージョン・テーブル中に保持されるように適合しており、ファイルシステムの現在のエポック値が単調にインクリメントされている、バージョン管理手段と
を備えた
システム。
【請求項１３】
前記バージョン管理手段が、前記論理バージョン中の余分なスペースを前記ファイルシステム中の変化したオブジェクトに限定する、
請求項１２に記載のシステム。
【請求項１４】
前記バージョン管理手段が、前記ファイルシステムの元の状態を保存しながら前記ファイルシステムの論理バージョンを保持するように適合している、
請求項１２に記載のシステム。
【請求項１５】
前記オブジェクトのエポック値ペアが、前記オブジェクトが有効である前記ファイルシステムの論理バージョンの範囲を決めるように適合している、
請求項１２に記載のシステム。
【請求項１６】
前記バージョン管理手段が、前記ファイルシステムの前記論理バージョンのほぼ即時の削除を実行するように適合している、
請求項１２に記載のシステム。
【請求項１７】
前記バージョン管理手段が、前記論理バージョンの対応するエポック値の前記永続記憶装置からのほぼ即時の削除を実行するように適合している、
請求項１６に記載のシステム。
【請求項１８】
前記バージョン管理手段が、前記削除した論理バージョンに付随する非参照のオブジェクトを削除する、
請求項１７に記載のシステム。
【請求項１９】
前記バージョン管理手段が、前記ファイルシステムの既存の論理バージョンへのほぼ即時の復帰を実行するように適合している、
請求項１２に記載のシステム。
【請求項２０】
前記バージョン管理手段が、永続記憶装置中の前記バージョン・テーブル中の介在するエントリを削除し、ファイルシステムの前記エポック値をファイルシステムの前記復帰した論理バージョンに付随するエポック値に設定するように適合している、
請求項１９に記載のシステム。
【請求項２１】
さらに、
複数の参照済みファイルシステム・オブジェクトの変更に応答してコピー・オン・ライト手順を実行するように適合したレコード管理手段
を備えた、
請求項１２に記載のシステム。
【請求項２２】
前記レコード管理手段が、前記ファイルシステムの非主論理バージョンに属す複数の参照済みファイルシステム・オブジェクトの変更に応答して前記レコードを３個のコピーに分割する、
請求項２１に記載のシステム。
【請求項２３】
コンピュータに、
ファイルシステムの論理バージョンにエポック値を割り当てるステップと、
ファイルシステム・オブジェクトに一対のエポック値を割り当てるステップと、
ファイルシステムのすべての有効なエポック値から成るバージョン・テーブルを保持するステップであって、列挙された各エポック値が前記ファイルシステムの有効な論理バージョンに対応している、ステップと、
前記バージョン・テーブル中の前記ファイルシステムの前記論理バージョンの現在のエポック値を永続記憶装置に格納することにより単一のポイント・イン・タイムで前記ファイルシステムのほぼ即時の論理バージョンを作成し、ファイルシステムの現在のエポック値を単調にインクリメントするステップと
を実行させる
プログラム。
【請求項２４】
請求項２３に記載のプログラムを記録したコンピュータ読み取り可能な媒体であって、記録可能なデータ記憶媒体および変調済み搬送信号から成る群から選択した媒体。
【請求項２５】
前記オブジェクト・エポック値ペアが、前記オブジェクトが有効であるファイルシステムの論理バージョンの範囲を決めている、
請求項２３に記載のプログラム。
【請求項２６】
さらに、
前記ファイルシステムの前記論理バージョンのほぼ即時の削除を実行するステップであって、前記ステップが、前記ファイルシステムの対応するエポック値を永続記憶装置中の前記バージョン・テーブルから削除するステップを含む、ステップ
を備えた、
請求項２３に記載のプログラム。
【請求項２７】
さらに、
前記削除したバージョンに付随する非参照のオブジェクトを削除するステップ
を備えた、
請求項２６に記載のプログラム。
【請求項２８】
さらに、
前記ファイルシステムの既存の論理バージョンへのほぼ即時の復帰を実行するステップであって、前記ステップが、永続記憶装置中の前記バージョン・テーブル中の介在するすべてのエントリを削除し、ファイルシステムの前記エポック値を前記復帰した論理バージョンに対応するエポック値に設定するステップを含む、ステップ
を備えた、
請求項２３に記載のプログラム。
【請求項２９】
さらに、
複数の参照済みファイルシステム・オブジェクトの変更に応答してコピー・オン・ライト手順を実行するステップであって、前記ステップが、前記ファイルシステムの非主論理バージョンに属す複数の参照済みファイルシステム・オブジェクトの変更に応答して前記ファイルシステム・オブジェクトを３個のコピーに分割するステップを含む、ステップ
を備えた、
請求項２３に記載のプログラム。
【請求項３０】
前記ファイルシステムのほぼ即時の論理バージョンを作成するステップが、前記論理バージョン中の余分なスペースを前記ファイルシステム中の変化したオブジェクトに限定するステップを含む、
請求項２３に記載のプログラム。
【請求項３１】
さらに、
前記ファイルシステムの元の状態を保存しがら前記ファイルシステムの論理バージョンを保持するステップ
を備えた、
請求項２３に記載のプログラム。
【請求項３２】
ファイルシステムの論理バージョンを管理する方法であって、
（ａ）単一のオペレーティング・システム・インスタンスを実行しているノードのサーバ・ソフトウェア内にファイルシステム論理を組み込むステップと、
（ｂ）前記ファイルシステムの論理バージョンにエポック値を割り当てるステップと、
（ｃ）ファイルシステム・オブジェクトに一対のエポック値を割り当てるステップと、
（ｄ）ファイルシステムのすべての有効なエポック値から成るバージョン・テーブルを保持するステップであって、列挙された各エポック値がファイルシステムの有効な論理バージョンに対応している、ステップと、
（ｅ）前記ファイルシステムの前記論理バージョンの現在のエポック値を前記ローカル記憶媒体の永続記憶装置中の前記バージョン・テーブルに格納することにより、前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成し、ファイルシステムの現在のエポック値を単調にインクリメントする、ステップと
を備えた
方法。
【請求項３３】
前記オブジェクト・エポック値ペアが、前記オブジェクトが有効であるファイルシステムの論理バージョンの範囲を決める、
請求項３２に記載の方法。
【請求項３４】
ファイルシステムのほぼ即時の論理バージョンを作成するステップが、前記論理バージョンの余分なスペースを前記ファイルシステム中の複数の参照し変化したファイルシステム・オブジェクトに限定するステップを含む、
請求項３２に記載の方法。
【請求項３５】
さらに、
前記ファイルシステムの前記論理バージョンのほぼ即時の削除を実行するステップを備え、
前記ローカル記憶媒体の永続記憶装置中の前記バージョン・テーブルから対応するエポック値を削除し、前記削除したバージョンに付随する非参照のオブジェクトを削除する、
請求項３２に記載の方法。
【請求項３６】
さらに、
前記ファイルシステムの既存の論理バージョンへのほぼ即時の復帰を実行するステップを備え、
前記バージョン・テーブル中のすべての介在するエントリを前記ローカル記憶媒体の永続記憶装置から削除し、ファイルシステムの前記エポック値をファイルシステムの前記復帰した論理バージョンに対応するエポック値に設定する、
請求項３２に記載の方法。
【請求項３７】
さらに、
複数の参照済みファイルシステム・オブジェクトの変更に応答してコピー・オン・ライト手順を実行することによりファイルシステムの元の状態を保存するステップ
を備えた、
請求項３２に記載の方法。
【請求項３８】
データ記憶システムであって、
単一のオペレーティング・システム・インスタンスを実行するように適合したノードのサーバ・ソフトウェア内に組み込まれたファイルシステム論理であって、前記ファイルシステム論理は前記ノードのローカル記憶装置のメタデータと通信するように適合している、ファイルシステム論理と、
エポック値によって識別されたファイルシステム・バージョンと、
一対のエポック値によって識別されたファイルシステム・オブジェクトと、
ファイルシステムのすべての有効なエポック値から成るリストを保持するように適合したバージョン・テーブルであって、列挙された各エポック値が前記ファイルシステムの有効な論理バージョンに対応している、バージョン・テーブルと、
前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成するように適合したバージョン管理手段であって、前記ファイルシステムの現在の論理バージョンが、前記ローカル記憶媒体の永続記憶装置中の前記バージョン・テーブル中に保持されるように適合しており、ファイルシステムの現在のエポック値が単調にインクリメントされている、バージョン管理手段と
を備えた
システム。
【請求項３９】
オブジェクトの前記エポック値ペアが、前記オブジェクトが有効である前記ファイルシステムの論理バージョンの範囲を決めるように適合している、
請求項３８に記載のシステム。
【請求項４０】
さらに、
前記ファイルシステムの前記論理バージョンのほぼ即時の削除を実行するように適合したバージョン管理手段を備え、
前記バージョン管理手段が、前記ローカル記憶媒体の永続記憶装置中の前記バージョン・テーブルから前記論理バージョンの対応するエポック値を削除し、前記削除した論理バージョンに付随する非参照のオブジェクトを削除するように適合している、
請求項３８に記載のシステム。
【請求項４１】
さらに、
前記ファイルシステムの既存の論理バージョンへのほぼ即時の復帰を実行するように適合したバージョン管理手段を備え、
前記バージョン管理手段が、前記ローカル記憶媒体の永続記憶装置中の前記バージョン・テーブル中の介在するエントリを削除し、ファイルシステムの前記エポック値を前記復帰した論理バージョンに付随するエポック値に設定する、
請求項３８に記載のシステム。
【請求項４２】
さらに、
複数の参照済みファイルシステム・オブジェクトの変更に応答してコピー・オン・ライトを実行するように適合したレコード管理手段
を備えた、
請求項３８に記載のシステム。
【請求項４３】
前記レコード管理手段が、前記ファイルシステムの非主論理バージョンに属す複数の参照済みファイルシステム・オブジェクトの変更に応答して前記レコードを３個のコピーに分割する、
請求項４２に記載のシステム。
【請求項４４】
コンピュータに、
単一のオペレーティング・システム・インスタンスを実行しているノードのサーバ・ソフトウェア内でファイルシステム論理を実行するステップであって、前記ファイルシステム論理が、前記ノードのローカル記憶媒体のメタデータと通信するように適合している、ステップと、
ファイルシステムの論理バージョンにエポック値を割り当てるステップと、
ファイルシステム・オブジェクトにオブジェクト・エポック値ペアを割り当てるステップと、
ファイルシステムのすべての有効なエポック値から成るバージョン・テーブルを保持するステップであって、列挙された各エポック値がファイルシステムの有効な論理バージョンに対応している、ステップと、
前記ファイルシステムの前記論理バージョンの現在のエポック値を前記ローカル記憶媒体の永続記憶装置の前記バージョン・テーブルに格納することにより前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成し、ファイルシステムの現在のエポック値を単調にインクリメントするステップと
を実行させる
プログラム。
【請求項４５】
請求項４４に記載のプログラムを記録したコンピュータ読み取り可能な媒体であって、記録可能なデータ記憶媒体および変調済み搬送信号から成る群から選択した媒体。
【請求項４６】
さらに、
前記ファイルシステムの前記論理バージョンのほぼ即時の削除を実行するステップであって、前記ステップが、ファイルシステムの前記論理バージョンの対応するエポック値を前記ローカル記憶媒体の永続記憶装置中の前記バージョン・テーブルから削除するステップを含む、ステップ
を備えた、
請求項４４に記載のプログラム。
【請求項４７】
さらに、
前記ファイルシステムの既存の論理バージョンへのほぼ即時の復帰を実行するステップであって、前記ステップが、前記ローカル記憶媒体の永続記憶装置中の前記バージョン・テーブル中の介在するすべてのエントリを削除し、ファイルシステムの前記エポック値をファイルシステムの前記復帰した論理バージョンに対応するエポック値に設定するステップを含む、ステップ
を備えた、
請求項４４に記載のプログラム。
【請求項４８】
さらに、
前記ファイルシステムの非主論理バージョンに属す複数の参照済みオブジェクトの変更に応答してコピー・オン・ライト手順を実行するステップ
を備えた、
請求項４４に記載のプログラム。
【請求項４９】
前記コピー・オン・ライト手順が、前記ファイルシステムの非主論理バージョンに属す複数の参照済みオブジェクトの変更に応答して前記ファイルシステム・オブジェクトを３個のコピーに分割するステップを含む、
請求項４８に記載のプログラム。
【請求項５０】
前記ファイルシステムのほぼ即時の論理バージョンを作成するステップが、前記論理バージョンの余分なスペースを前記ファイルシステム中の変化したオブジェクトに限定するステップを含む、
請求項４４に記載のプログラム。
【請求項５１】
ファイルシステムの論理バージョンを管理する方法であって、
（ａ）共用記憶システムと通信しているサーバ・ノードのサーバ・ソフトウェア内にファイルシステム論理を組み込むステップであって、前記ファイルシステム論理が、前記共用記憶システムのメタデータと通信するように適合している、ステップと、
（ｂ）前記ファイルシステムの論理バージョンにエポック値を割り当てるステップと、
（ｃ）ファイルシステム・オブジェクトに一対のエポック値を割り当てるステップと、
（ｄ）ファイルシステムのすべての有効なエポック値から成るバージョン・テーブルを保持するステップであって、列挙した各エポック値がファイルシステムの有効な論理バージョンに対応している、ステップと、
（ｅ）前記ファイルシステムの前記論理バージョンの現在のエポック値を前記共用記憶システムの永続記憶装置の前記バージョン・テーブルに格納することにより前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成し、ファイルシステムの現在のエポック値を単調にインクリメントするステップと
を備えた
方法。
【請求項５２】
前記オブジェクト・エポック値ペアが、前記オブジェクトが有効であるファイルシステムの論理バージョンの範囲を決めている、
請求項５１に記載の方法。
【請求項５３】
ファイルシステムのほぼ即時の論理バージョンを作成するステップが、前記論理バージョンの余分なスペースを前記ファイルシステム中の変化したオブジェクトに限定するステップを含む、
請求項５１に記載の方法。
【請求項５４】
さらに、
前記ファイルシステムの前記論理バージョンのほぼ即時の削除を実行するステップを備え、
前記論理バージョンの対応するエポック値を前記共用記憶システムの永続記憶装置中の前記バージョン・テーブルから削除し、前記削除した論理バージョンに付随する非参照のオブジェクトを削除する、
請求項５１に記載の方法。
【請求項５５】
さらに、
前記ファイルシステムの既存の論理バージョンへのほぼ即時の復帰を実行するステップを備え、
前記バージョン・テーブル中のすべての介在するエントリを前記共用記憶システムの永続記憶装置から削除し、ファイルシステムの前記エポック値をファイルシステムの前記復帰した論理バージョンに対応するエポック値に設定する、
請求項５１に記載の方法。
【請求項５６】
さらに、
複数の参照済みファイルシステム・オブジェクトの変更に応答してコピー・オン・ライト手順を実行することによりファイルシステムの元の状態を保存するステップ
を備えた、
請求項５１に記載の方法。
【請求項５７】
データ記憶システムであって、
共用記憶システムと通信しているサーバのサーバ・ソフトウェア内に組み込まれたファイルシステム論理であって、前記ファイルシステム論理は前記共用記憶システムのメタデータと通信するように適合している、ファイルシステム論理と、
エポック値によって識別されたファイルシステム・バージョンと、
一対のエポック値によって識別されたファイルシステム・オブジェクトと、
ファイルシステムのすべての有効なエポック値から成るリストを保持するように適合したバージョン・テーブルであって、列挙された各エポック値が前記ファイルシステムの有効な論理バージョンに対応している、バージョン・テーブルと、
前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成するように適合したバージョン管理手段であって、前記ファイルシステムの現在の論理バージョンに付随する現在のエポック値が、前記共用記憶システムの永続記憶装置中の前記論理バージョン中に保持されるように適合しており、ファイルシステムの現在のエポック値が単調にインクリメントされている、バージョン管理手段と
を備えた
システム。
【請求項５８】
前記オブジェクト・エポック値ペアが、前記オブジェクトが有効である前記ファイルシステムの論理バージョンの範囲を決めるように適合している、
請求項５７に記載のシステム。
【請求項５９】
さらに、
前記ファイルシステムの前記論理バージョンのほぼ即時の削除を実行するように適合したバージョン管理手段
を備え、
前記バージョン管理手段が、前記論理バージョンの対応するエポック値を前記共用記憶システムの永続記憶装置中の前記バージョン・テーブルから削除し、ファイルシステムの前記削除した論理バージョンに付随する非参照のオブジェクトを削除するように適合している、
請求項５７に記載のシステム。
【請求項６０】
さらに、
前記ファイルシステムの既存の論理バージョンへのほぼ即時の復帰を実行するように適合したバージョン管理手段
を備え、
前記バージョン管理手段が、前記共用記憶システムの永続記憶装置中の前記バージョン・テーブル中の介在するエントリを削除し、ファイルシステムの前記エポック値をファイルシステムの前記復帰した論理バージョンに付随するエポック値に設定するように適合している、
請求項５７に記載のシステム。
【請求項６１】
さらに、
複数の参照済みのファイルシステム・オブジェクトの変更に応答してコピー・オン・ライト手順を実行するように適合したレコード管理手段
を備えた、
請求項５７に記載のシステム。
【請求項６２】
前記レコード管理手段が、変更するように設定された前記ファイルシステムの非主論理バージョンに属す複数の参照済みファイルシステム・オブジェクトの変更に応答して前記レコードを３個のコピーに分割する、
請求項６１に記載のシステム。
【請求項６３】
コンピュータに、
共用記憶システムと通信しているサーバ・ノードのサーバ・ソフトウェア内でファイルシステム論理を実行するステップであって、前記ファイルシステム論理が、前記共用記憶システムのメタデータと通信するように適合している、ステップと、
ファイルシステムの論理バージョンにエポック値を割り当てるステップと、
ファイルシステム・オブジェクトに一対のエポック値を割り当てるステップと、
ファイルシステムのすべての有効なエポック値から成るバージョン・テーブルを格納するステップであって、列挙された各エポック値がファイルシステムの有効な論理バージョンに対応している、ステップと、
前記ファイルシステムの前記論理バージョンの現在のエポック値を前記共用記憶システムの永続記憶装置中の前記バージョン・テーブルに格納することにより前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成し、ファイルシステムの現在のエポック値を単調にインクリメントするステップと
を実行させる
プログラム。
【請求項６４】
請求項６３に記載のプログラムを記録したコンピュータ読み取り可能な媒体であって、記録可能なデータ記憶媒体および変調済み搬送信号から成る群から選択した媒体。
【請求項６５】
前記オブジェクト・エポック値ペアが、前記オブジェクトが有効であるファイルシステムの論理バージョンの範囲を決めている、
請求項６３に記載のプログラム。
【請求項６６】
さらに、
前記ファイルシステムの前記論理バージョンのほぼ即時の削除を実行するステップ
を備え、
前記ステップが、前記ファイルシステムの対応するエポック値を前記共用記憶システムの永続記憶装置中の前記バージョン・テーブルから削除するステップを含む、
請求項６３に記載のプログラム。
【請求項６７】
さらに、
ファイルシステムの既存の論理バージョンへのほぼ即時の復帰を実行するステップ
を備え、
前記ステップが、前記共用記憶システムの永続記憶装置中の前記バージョン・テーブル中のすべての介在するエントリを削除し、ファイルシステムの前記エポック値をファイルシステムの前記復帰した論理バージョンに対応するエポック値に設定する、
請求項６３に記載のプログラム。
【請求項６８】
さらに、
前記ファイルシステムの非主論理バージョンに属す複数の参照済みオブジェクトの変更に応答してコピー・オン・ライト手順を実行するステップ
を備えた、
請求項６３に記載のプログラム。
【請求項６９】
前記コピー・オン・ライト手順が、前記ファイルシステムの非主論理バージョンに属す複数の参照済みオブジェクトの変更に応答して前記ファイルシステム・オブジェクトを３個のコピーに分割するステップを含む、
請求項６８に記載のプログラム。
【請求項７０】
前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成するステップが、前記論理バージョン中の余分なスペースを前記ファイルシステム中の変化したオブジェクトに限定するステップを含む、
請求項６３に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はファイルシステムのバージョン（版）を管理する方法とシステムに関する。特に、本発明はファイルシステムの論理バージョンの作成と削除に関する。
【背景技術】
【０００２】
ファイルシステムの論理バージョンを管理するシステムと方法は当技術分野で知られている。図１は単一のオペレーティング・システム・インスタンスを実行しているノード１２のブロック図である。ノード１２はファイルシステム管理論理１６を備えたノード・ソフトウェア１４を備えている。また、ノード１２はファイル・データ空間１７とシステム・メタデータ空間１９を備えたローカル記憶媒体１８と通信している（メタデータとはデータに関するデータのことである）。ファイルシステム管理論理１６はファイルシステムの論理バージョンを管理するように機能している。従来技術のシステムはファイルシステムの論理バージョンにエポック（epoch)番号を割り当てるが、ファイルシステム内のオブジェクトを識別するシステムを備えてない。従来技術に係る、ファイルシステムの論理バージョンにおいてオブジェクトを削除したか否かを判断するには、当該オブジェクトの死亡エポック番号が何であったのかを判断するのに余分のレコードを再調査しなければならない。したがって、従来技術のシステムはオブジェクトが有効である、ファイルシステムの論理バージョンの範囲を決める、ファイルシステムの論理バージョン内のオブジェクトを識別する論理を備えていない。
【０００３】
同様に、図２はＳＡＮ（storage area network）３０と通信しているクライアント／サーバ・ノード２２のブロック図である。クライアント／サーバ・ノード２２はファイルシステム管理論理２６を備えたソフトウェア２４を備えている。また、クライアント／サーバ・ノード２２はファイル・データ空間３２とファイルシステム・メタデータ空間３４を備えたＳＡＮ３０と通信している。ＳＡＮ３０中の記憶媒体上に存在するファイル・オブジェクトの内容を開く際、クライアントはクライアント／サーバ・ノード２２にコンタクトしてメタデータを取得する。メタデータはファイルに関する情報（たとえばその属性や記憶装置上の位置など）をクライアントに提供する。クライアント／サーバ・ノード２２はＳＡＮ３０のメタデータ空間３４内の、要求されたファイルのメタデータ情報をルックアップする（ルックアップとは表にまとめたデータから必要なものを捜し出すことである）。クライアント／サーバ・ノード２２は要求元のクライアントにファイルを構成するすべてのデータ・ブロックの場所を含むファイル・メタデータを通知する。クライアントはデータ・ブロックの場所を知ったら、ＳＡＮ３０と通信している共用記憶装置から直接にファイル用のデータにアクセスすることができる。また、クライアント／サーバ・ノード２２はファイルシステム管理論理２６を備えたソフトウェア２４を備えている。ファイルシステム管理論理２６はファイルシステムの論理バージョンをほぼ即時に作成してそれを管理する。しかし、ファイルシステム管理論理２６はファイルシステムの論理バージョンにエポック番号を割り当てるが、ファイルシステム内のオブジェクト用の２部分識別システムを備えていない。したがって、従来技術のシステムはオブジェクトが有効である、ファイルシステムの論理バージョンの範囲を決める、ファイルシステムの論理バージョン内のオブジェクトを識別するファイルシステム論理を備えていない。
【０００４】
ファイルシステムの論理バージョンを作成する他の例として、ディスク・ミラーリングが挙げられる。この方法の場合、ファイルシステム・データの２つの物理的論理バージョンを２つのディスク上に保持する。ミラーを分離することにより、ファイルシステムのほぼ即時バージョンを作成する。したがって、ファイルシステム・データの論理バージョンの作成には必要な量の記憶スペースを２倍費やすという代償を払うことになる。また、この方法では、ファイルシステムの後続する論理バージョンを採用する前に別のミラー・ペアを作成する必要がある。ファイルシステムの論理バージョンを作成する別の例として、ファイルシステム・オブジェクトのあらゆる変更に対してコピー・オン・ライト（copy-on-write)手順を実行するログ基準のファイルシステムが挙げられる。この場合、ファイルシステムの状態を記録しファイルシステムの非参照の論理バージョンを削除するために、システムの状態を周期的に再調査する。また、バックグラウンドのプロセスがファイルシステムの内容を統合し続ける。したがって、これら両方法とも効率が制限されるとともに必要な記憶容量が増大する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ファイルシステムの論理バージョンをサポートする既知の従来技術に係るシステムには、必要な記憶スペースが増大すること、およびバックグラウンド・プロセスが必要になることに付随する制限が存在する。したがって、必要な記憶スペースの増大、およびバックグラウンド・プロセスの必要性を無くしうる、ファイルシステムの論理バージョンをほぼ即時に作成して記憶する方法とシステムが求められている。
【課題を解決するための手段】
【０００６】
本発明はファイルシステムの論理バージョンを管理する方法とシステムから成る。
【０００７】
本発明の第１の側面では、ファイルシステムの論理バージョンを管理する方法を提供する。ファイルシステムの論理バージョンにエポック値を割り当てる。ファイルシステム・オブジェクトに一対のエポック値を割り当てる。ファイルシステムのすべてのエポック値から成るバージョン・テーブルを保持する。列挙された各エポック値は前記ファイルシステムの有効な論理バージョンに対応している。前記ファイルシステムの前記論理バージョンの現在のエポック値を永続記憶装置の前記バージョン・テーブルに格納することにより単一のポイント・イン・タイムで前記ファイルシステムのほぼ即時の論理バージョンを作成し、ファイルシステムの現在のエポック値を単調にインクリメントする。前記オブジェクト・エポック値ペアが、前記オブジェクトが有効であるファイルシステムの論理バージョンの範囲を決めているのが望ましい。
【０００８】
本発明の第２の側面では、データ記憶システムを提供する。このデータ記憶システムはエポック値によって識別されたファイルシステム・バージョンと、エポック値から成るペアによって識別されたファイルシステム・オブジェクトとを備えている。バージョン・テーブルを用いて、ファイルシステムのすべての有効なエポック値から成るリストを保持する。列挙された各エポック値は前記ファイルシステムの有効な論理バージョンに対応している。前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成するバージョン管理手段を備えている。前記ファイルシステムの現在の論理バージョンに付随する現在のエポック値が永続記憶装置中の前記バージョン・テーブル中に保持されるように適合している。また、バージョン管理手段はファイルシステムの現在のエポック値を単調にインクリメントする。前記オブジェクト・エポック値ペアが、前記オブジェクトが有効であるファイルシステムの論理バージョンの範囲を決めているのが望ましい。
【０００９】
本発明の第３の側面では、プログラムを提供する。（英文原明細書に「コンピュータ読み取り可能な信号担持媒体の形態をした製品」とあるのを本項目および特許請求の範囲では「プログラム」に変更したが、内容すなわちステップ群に変更はない。）ファイルシステムの論理バージョンにエポック値を割り当て、ファイルシステム・オブジェクトに一対のエポック値を割り当てるステップを備えている。また、ファイルシステムのすべての有効なエポック値から成るバージョン・テーブルを保持するステップを備えている。列挙された各エポック値が前記ファイルシステムの有効な論理バージョンに対応している。最後に、前記バージョン・テーブル中の前記ファイルシステムの前記論理バージョンの現在のエポック値を永続記憶装置に格納することにより単一のポイント・イン・タイムで前記ファイルシステムのほぼ即時の論理バージョンを作成し、ファイルシステムの現在のエポック値を単調にインクリメントするステップを備えている。前記オブジェクト・エポック値ペアが、前記オブジェクトが有効であるファイルシステムの論理バージョンの範囲を決めているのが望ましい。
【００１０】
本発明の第４の側面では、ファイルシステムの論理バージョンを管理する方法を提供する。単一のオペレーティング・システム・インスタンスを実行しているノードのサーバ・ソフトウェア内にファイルシステム論理を組み込む。前記ファイルシステム論理は前記ノードのローカル記憶媒体のメタデータ空間と通信するように適合している。前記ファイルシステムの論理バージョンにエポック値を割り当てる。ファイルシステム・オブジェクトに一対のエポック値を割り当てる。ファイルシステムのすべての有効なエポック値から成るバージョン・テーブルを保持する。列挙された各エポック値がファイルシステムの有効な論理バージョンに対応している。前記ファイルシステムの前記論理バージョンの現在のエポック値を前記ローカル記憶媒体の永続記憶装置中の前記バージョン・テーブルに格納することにより、前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成し、ファイルシステムの現在のエポック値を単調にインクリメントする。前記オブジェクト・エポック値ペアが、前記オブジェクトが有効であるファイルシステムの論理バージョンの範囲を決めているのが望ましい。
【００１１】
本発明の第５の側面では、データ記憶システムを提供する。単一のオペレーティング・システム・インスタンスを実行するように適合したノードのサーバ・ソフトウェア内にファイルシステム論理が組み込まれている。前記ファイルシステム論理は前記ノードのローカル記憶装置のメタデータと通信するように適合している。このデータ記憶システムはエポック値によって識別されたファイルシステム・バージョンと、一対のエポック値によって識別されたファイルシステム・オブジェクトとを備えている。バージョン・テーブルを用いて、ファイルシステムのすべての有効なエポック値から成るリストを保持する。列挙された各エポック値が前記ファイルシステムの有効な論理バージョンに対応している。前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成するように適合したバージョン管理手段を備えている。前記ファイルシステムの現在の論理バージョンに付随する現在のエポック値が、永続記憶装置中の前記バージョン・テーブル中に保持されるように適合している。また、前記バージョン管理手段はファイルシステムの現在のエポック値を単調にインクリメントしている。前記オブジェクト・エポック値ペアが、前記オブジェクトが有効であるファイルシステムの論理バージョンの範囲を決めているのが望ましい。
【００１２】
本発明の第６の側面では、プログラムを提供する。単一のオペレーティング・システム・インスタンスを実行しているノードのサーバ・ソフトウェア内でファイルシステム論理を実行するステップを備えている。前記ファイルシステム論理は前記ノードのローカル記憶媒体のメタデータと通信するように適合している。ファイルシステムの論理バージョンにエポック値を割り当て、ファイルシステム・オブジェクトにオブジェクト・エポック値ペアを割り当てるステップを備えている。また、ファイルシステムのすべての有効なエポック値から成るバージョン・テーブルを保持するステップを備えている。列挙された各エポック値がファイルシステムの有効な論理バージョンに対応している。最後に、前記ファイルシステムの前記論理バージョンの現在のエポック値を前記ローカル記憶媒体の永続記憶装置の前記バージョン・テーブルに格納することにより前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成し、ファイルシステムの現在のエポック値を単調にインクリメントするステップを備えている。前記オブジェクト・エポック値ペアが、前記オブジェクトが有効であるファイルシステムの論理バージョンの範囲を決めているのが望ましい。
【００１３】
本発明の第７の側面では、ファイルシステムの論理バージョンを管理する方法を提供する。共用記憶システムと通信しているサーバ・ノードのサーバ・ソフトウェア内にファイルシステム論理を組み込む。前記ファイルシステムの論理バージョンにエポック値を割り当て、ファイルシステム・オブジェクトに一対のエポック値を割り当てるステップを備えている。ファイルシステムのすべての有効なエポック値から成るバージョン・テーブルを保持する。列挙した各エポック値がファイルシステムの有効な論理バージョンに対応している。前記ファイルシステムの前記論理バージョンの現在のエポック値を前記共用記憶システムの永続記憶装置の前記バージョン・テーブルに格納することにより前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成し、ファイルシステムの現在のエポック値を単調にインクリメントするステップを備えている。前記オブジェクト・エポック値ペアが、前記オブジェクトが有効であるファイルシステムの論理バージョンの範囲を決めているのが望ましい。
【００１４】
本発明の第８の側面では、データ記憶システムを提供する。ファイルシステム論理が、共用記憶システムと通信しているサーバのサーバ・ソフトウェア内に組み込まれている。前記ファイルシステム論理は前記共用記憶システムのメタデータと通信するように適合している。このデータ記憶システムはエポック値によって識別されたファイルシステム・バージョンと、一対のエポック値によって識別されたファイルシステム・オブジェクトとを備えている。バージョン・テーブルを用いて、ファイルシステムのすべての有効なエポック値から成るリストを保持する。列挙された各エポック値が前記ファイルシステムの有効な論理バージョンに対応している。前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成するように適合したバージョン管理手段を備えている。前記ファイルシステムの現在の論理バージョンに付随する現在のエポック値は前記共用記憶システムの永続記憶装置中の前記論理バージョン中に保持されるように適合している。また、バージョン管理手段はファイルシステムの現在のエポック値を単調にインクリメントする。前記オブジェクト・エポック値ペアが、前記オブジェクトが有効であるファイルシステムの論理バージョンの範囲を決めているのが望ましい。
【００１５】
本発明の第９の側面では、プログラムを提供する。共用記憶システムと通信しているサーバ・ノードのサーバ・ソフトウェア内でファイルシステム論理を実行するステップを備えている。前記ファイルシステム論理は前記共用記憶システムのメタデータと通信するように適合している。ファイルシステムの論理バージョンにエポック値を割り当て、ファイルシステム・オブジェクトに一対のエポック値を割り当てるステップを備えている。また、ファイルシステムのすべての有効なエポック値から成るバージョン・テーブルを保持するステップを備えている。列挙された各エポック値がファイルシステムの有効な論理バージョンに対応している。最後に、前記ファイルシステムの前記論理バージョンの現在のエポック値を前記共用記憶システムの永続記憶装置中の前記バージョン・テーブルに格納することにより前記ファイルシステムのほぼ即時の論理バージョンを単一のポイント・イン・タイムで作成し、ファイルシステムの現在のエポック値を単調にインクリメントするステップを備えている。前記オブジェクト・エポック値ペアが、前記オブジェクトが有効であるファイルシステムの論理バージョンの範囲を決めているのが望ましい。
【００１６】
本発明の全側面において、エポック値には任意のインクリメント可能な値を用いることができる。たとえば数値を挙げることができるが、それに限定されない。
【発明を実施するための最良の形態】
【００１７】
〔概観〕
サーバは特定のディレクトリをルートとするサブツリーの形態をしたファイルシステムを備えている。ツリーのルートはルート・ディレクトリをルートとするファイルシステム・ツリーを記述している。ツリーのルートによって、すべてのクライアントはネーム・ツリーを無矛盾に閲覧することができる。ファイルシステムの論理バージョンはディレクトリ・レベルに保持されている。ファイルシステムの各論理バージョンには整数の形態をした一意の番号（以下、エポック番号）が割り当てられている。ファイルシステムを初期作成するとき、それに「１」なるエポック番号を付与する。ファイルシステムの論理バージョンを作成するごとに（たとえばファイルシステムの論理バージョンを作成するコマンドを発行するとき）、エポック番号をインクリメント（すなわち＋１）する。ファイルシステムのすべてのオブジェクトはファイルシステムのエポック番号に加えオブジェクト識別子と２つのエポック番号を有する。第１のオブジェクト・エポック番号は誕生エポック番号と呼ばれており、第２のオブジェクト・エポック番号は死亡エポック番号と呼ばれている。誕生エポック番号と死亡エポック番号はそれらが割り当てられたオブジェクトの寿命を規定している。ファイルシステム中のオブジェクトにはそのオブジェクト識別子と誕生エポック番号によってアクセスする。永続的に格納されたファイルシステムの論理バージョンを識別するために、ファイルシステムの論理バージョンを編成するバージョン・テーブルを備えたデータ構造が保持されている。したがって、ファイルシステムに割り当てられた１つのエポック番号とファイルシステムのオブジェクトに割り当てられた２つのエポック番号とが存在する。
【００１８】
〔技術的背景〕
図３は好適な実施形態に従い単一のオペレーティング・システム・インスタンスのファイルシステム管理論理を実行しているノード４２のブロック図である。ノード４２はクライアント・ドライバ４４とサーバ・ソフトウェア４６を備えている。ノード４２のサーバ・ソフトウェア４６はノード４２のソフトウェア４６内に組み込まれたファイルシステム管理論理４８を備えている。ファイルシステム管理論理４８の機能はファイルシステムの論理バージョンに識別番号を割り当てること、およびファイルシステムのオブジェクトに２つの識別番号を割り当てることである。ファイルシステムのオブジェクトの識別番号によって当該オブジェクトが有効である、ファイルシステムの論理バージョンの範囲が決まる。
【００１９】
同様に、図４は本発明の好適な実施形態に従い共用永続記憶装置と組み込みファイルシステム管理論理とを備えた分散システムのブロック図である。この分散システムは複数のサーバ・ノード７０、８０、管理者ノード９０、および複数のクライアント・ノード９２、９４を備えたＳＡＮ（storage area network）６２を備えている。ＳＡＮ６２はファイル・データ空間６４とメタデータ空間６６を備えている。メタデータ空間６６はサーバ・ノード７０、８０用に予約されている。各クライアント・ノード９２、９４はＳＡＮ６２のファイル・データ空間６４に格納されている１つのオブジェクトまたは複数のオブジェクトにはアクセスできるが、メタデータ空間６６にはアクセスできない。ＳＡＮ６２中の記憶媒体に存在するファイル・オブジェクトの内容を開く際に、クライアントはサーバ・ノードにコンタクトしてメタデータとロックを取得する。メタデータによって、クライアントはファイルに関する情報、たとえばその属性や記憶装置上の場所を知る。ロックによって、クライアントはファイルを開き、データを読み書きするのに必要な権限を取得する。サーバ・ノードは要求されたファイル用にＳＡＮ６２のメタデータ空間６６内のメタデータ情報をルックアップする。サーバ・ノード７０または８０は許可済みロック情報とファイルを構成しているデータ・ブロックの場所を含むファイル・メタデータとを要求元のクライアント・ノードに通知する。クライアント・ノードは分散ロックを保持し、データ・ブロックの場所を知ったら、ＳＡＮ６２に備えられた共用記憶装置からファイル用のデータに直接にアクセスすることが可能になる。また、各サーバ・ノード７０、８０はそれぞれ組み込みファイルシステム管理論理７４、８４を備えたサーバ・ソフトウェア７２、８２を備えている。ファイルシステム管理論理によって、サーバは自身が管理しているファイルシステムの論理バージョンを作成することが可能になる。さらに、ファイルシステム管理論理はファイルシステムの論理バージョンに１つの識別番号を割り当て、ファイルシステムのオブジェクトに２つの識別番号を割り当てる。オブジェクト識別番号によって、オブジェクトが有効である、ファイルシステムの論理バージョンの範囲が決まる。
【００２０】
図５はファイルシステムの論理バージョンを作成するほぼ即時のプロセスを示すフローチャート１００を示す図である。まず、ファイルシステムの新たな論理バージョンにイメージの名前（ImageName)を割り当てる（ステップ１０２）。（イメージとはあるがままの全体像のことである。）次いで、ファイルシステムの論理バージョンにファイルシステムの旧エポック番号を割り当て、主イメージのエポック番号を１だけインクリメントする。次いで、ファイルシステムの新たなエポック番号識別子用にバージョン・テーブルにエントリを作成する（ステップ１０６）。データ構造はあるファイルシステムにとって有効なすべてのエポック番号識別子から成るリストを保持している。したがって、新たなエポック番号識別子をデータ構造に入れたのち、主イメージ（PrimaryImage）のデータ割り当てを入力する（ステップ１０８）。次いで、主イメージのエポック番号識別子とファイルシステムの論理バージョンの主エポック番号識別子とを永続記憶装置に書き込む（ステップ１１０）。ステップ１１０によって、ファイルシステムの論理バージョンの作成は成功裏に完了する（ステップ１１２）。したがって、ファイルシステムの論理バージョンを作成するほぼ即時のプロセスには主イメージのエポック番号識別子とファイルシステムのほぼ即時のバージョンとを永続記憶装置に保持するステップが含まれている。
【００２１】
ファイルシステムの論理バージョンを作成するのに加え、ほぼ即時のプロセスによってバージョン・テーブルからファイルシステムの論理バージョンを削除することも行う。図６はメモリおよび永続記憶装置からファイルシステムの論理バージョンをほぼ即時に削除するプロセスを示すフローチャート１２０を示す図である。まず、オペレータはバージョン・テーブルから削除するように選定した、ファイルシステムの論理バージョンに付随するエポック番号識別子を入力する。次いで、主エポック番号識別子用のエントリをバージョン・テーブルから削除する（ステップ１２２）。次いで、ファイルシステムの特定の論理バージョン用のエントリを永続記憶装置から削除する（ステップ１２４）。次いで、バックグラウンド・プロセスを始動してファイルシステムの当該論理バージョンの一部であった非参照のオブジェクトをすべてバージョン・テーブルおよび永続記憶装置から削除する（ステップ１２６）。ステップ１２６によって、ファイルシステムの特定の論理バージョンの削除が成功裏に完了する（ステップ１２８）。したがって、ファイルシステムの論理バージョンをメモリおよび永続記憶装置から削除するプロセスにはファイルシステムの当該論理バージョンに付随し対応するエポック番号識別子をバージョン・テーブルから削除するステップが含まれている。
【００２２】
メモリおよび永続記憶装置からファイルシステムの論理バージョンを削除するのに加え、オペレータはファイルシステムの特定のバージョンに復帰することを選択することができる。図７はファイルシステムの特定の論理バージョンへほぼ即時に復帰するプロセスを示すフローチャート１４０を示す図である。まず、オペレータが復帰を望む特定の論理バージョンのエポック番号識別子を探索パラメータとして入力する。次いで、ファイルシステムの主エポック番号識別子が探索パラメータと同一であるか否かを判断ずるテストを実行する（ステップ１４２）。ステップ１４２におけるテストの結果がＮｏの場合、エポック番号識別子のエントリをバージョン・テーブル（すなわちメモリ）から削除する（ステップ１４４）。その後、エポック番号識別子用のエントリを永続記憶装置から削除する（ステップ１４６）。次いで、バージョン・テーブル中のエポック番号識別子をメモリおよび永続記憶装置から先行して削除したものより１だけデクリメントする。次いで、アルゴリズムはステップ１４２のテストに戻る。エポック番号識別子のエントリが入力パラメータと同一になるまで、以上の過程を繰り返す。ステップ１４２におけるテストの結果がＹｅｓの場合、主イメージのエポック番号識別子に付随する、ファイルシステムの論理バージョンが新たな主イメージになる（ステップ１５０）。ステップ１５０のプロセスにはバージョン・テーブル中のエントリを新たな主イメージ用にマークするステップが含まれている。新たな主イメージは永続記憶装置にも格納する（ステップ１５２）。次いで、バックグラウンド・プロセスを始動して非参照のオブジェクトをバージョン・テーブルおよび永続記憶装置から削除する（ステップ１５４）。ステップ１５４によって、ファイルシステムの特定の論理バージョンへの復帰は成功裏に完了する（ステップ１５６）。したがって、ファイルシステムのある論理バージョンへほぼ即時に復帰するプロセスにはバージョン・テーブルおよび永続記憶装置中に存在する、ファイルシステム中の介在する論理バージョンをすべて削除するステップと、主エポック番号識別子を復帰先のエポック番号識別子に設定するステップとが含まれている。
【００２３】
各ファイルシステムはファイル、ディレクトリ、シンボリック・リンクなどの形をしたオブジェクトを備えている。すべてのファイルシステム・オブジェクトはＢツリー・レコードに格納されている。各レコードは同一である少なくとも１つのオブジェクト・インスタンスを記述している。ファイルシステム・オブジェクトはそれら自身のキーに関してクラスタをなしている場合には、他の永続的なデータ構造に格納することができる。ファイルシステム・オブジェクトは効率的なルックアップ・メソッドと走査アクセス・メソッドをサポートしている。ファイルシステム・オブジェクトはファイルシステムの論理バージョンを作成するプロセスの一部として変更する必要がない。同様に、ファイルシステムの論理バージョンを削除する、あるいはそれに復帰する場合にも、ファイルシステム・オブジェクトは変更する必要がない。非参照のオブジェクトはファイルシステムの論理バージョンの削除、あるいはそれへの復帰の結果として削除するが、それは削除プロセスまたは復帰プロセスがトリガする別個のバックグラウンド・プロセスによって行う。ファイルシステムの論理バージョンを作成する結果としてファイルシステム・オブジェクトを変更しない場合、ファイルシステムの論理バージョンにオブジェクトを格納するための余分なスペースは必要でない。したがって、Ｂツリー中の単一のレコードは余分な記憶容量を必要とすることなく、１つのオブジェクトの無限個の同一のインスタンスを代表することができる。
【００２４】
図８はファイルシステム・オブジェクトを作成するプロセスを示すフローチャート１７０を示す図である。ファイルシステム中の各オブジェクトは２つのエポック番号（誕生エポック番号と死亡エポック番号）によって識別される。ファイルシステム・オブジェクトを作成する第１のステップはオブジェクトに誕生エポック番号を割り当てることである。割り当てる誕生エポック番号はファイルシステムの主エポック番号識別子である（ステップ１７２）。割り当てる死亡エポック番号は無限大である（ステップ１７４）。次いで、ファイルシステム・オブジェクトはオブジェクト識別子で初期化する（ステップ１７６）。ファイルシステム・オブジェクトへの誕生エポック番号と死亡エポック番号の割り当ておよびオブジェクト識別子の初期化に続いて、ファイルシステム・オブジェクトをＢツリー中にレコードとして挿入する（ステップ１７８）。したがって、ファイルシステム・オブジェクトをレコードとしてＢツリー中に作成するプロセスは各ファイルシステム・オブジェクトに識別プロトコルを割り当てるステップを必要とする。
【００２５】
各オブジェクトは２部分のキーを備えたＢツリー・レコードに格納されている。キーの第１の部分はステップ１７６で初期化したオブジェクト識別子であり、キーの第２の部分はステップ１７２で作成した誕生エポック番号である。オブジェクト識別子は昇順に格納されており、誕生エポック番号は降順に格納されている。図９はＢツリーに格納されているオブジェクトをルックアップするプロセスを示すフローチャート１９０を示す図である。まず、オペレータは主探索要素として探索すべきオブジェクト識別子とエポック番号を入力する。これは探索するオブジェクトを変更する意図があるか否かの表示とともに行う。探索パラメータの入力に続いて、探索するエポック番号が「０」値を有するか否かを判断するテスト１９２を実行する。「０」の探索エポック識別子が要求されている場合、探索エポック番号値をファイルシステムのエポック番号で置換する（ステップ１９４）。ステップ１９４における主エポック番号の置換、または探索エポック識別子が「０」でないという判断に続いて、Ｂツリーの走査を実行する（ステップ１９６）。この走査の開始キーはオブジェクト識別子から成る第１のパラメータと探索エポック番号から成る第２のパラメータとを備えている。この走査の停止キーはオブジェクト識別子から成る第１のパラメータと「１」から成る第２のパラメータとを備えている。Ｂツリーは前方に走査したのち、オブジェクト識別子を求めて第１のレコードに戻ることになる。返されるレコードは探索エポック識別子以下のオブジェクトの誕生エポック番号から成るプロパティを備えている。次いで、走査が完了したか否かを判断するテストを実行する（ステップ１９８）。ステップ１９８におけるテストの結果がＮｏの場合、引き続いて返されたレコードの死亡エポック番号が探索エポック識別子未満であるか否かを判断するテストを実行する（ステップ２００）。ステップ１９８のテストまたはステップ２００のテストの結果がＹｅｓであるということは、ステップ１９６で供給した走査範囲内にレコードが存在しなかったということを表わしている（ステップ２０２）。しかし、ステップ２００におけるテストの結果がＮｏであるということは、返されたオブジェクトは有効であり、返されたオブジェクトはステップ２０４で復帰プロセスを受けることになるということを表わしている。したがって、Ｂツリー中のレコードをルックアップするプロセスの第１の部分は入力パラメータ内で識別されたオブジェクトに復帰することである。
【００２６】
ステップ２０４における特定したオブジェクトへの復帰に続いて、呼び出し元が返されたオブジェクトを変更する意図を示す標識が出されているか否かを判断するテストを実行する（ステップ２０６）。ステップ２０６のテストの結果がＮｏであるということはオペレータは特定したオブジェクトを突き止めることを意図していたが、それに対する変更を必要としていないということを表わしている。オブジェクトに対する変更が必要でない場合、オブジェクトの突き止めと復帰は成功裏に完了する（ステップ２０８）。しかし、ステップ２０６のテストの結果がＹｅｓの場合、返されたレコードが一意のオブジェクトを記述しているか否かを判断する参照カウントを計算することになる。参照カウントの計算を行う際、オブジェクトの誕生エポック番号と死亡エポック番号は分かっている。誕生エポック番号から死亡エポック番号にわたる、バージョン・テーブルのすべてのエントリのインメモリ走査を実行すると、当該範囲のエントリの個数のカウント（参照カウントと呼ばれる）が得られる。参照カウントが「１」より大きい場合、レコードは一意のオブジェクトを記述していないから、当該レコードを変更しうるようにするにはコピー・オン・ライト手順が必要である（ステップ２１２）。したがって、一意のオブジェクトを記述しているレコードしか変更することはできないから、ステップ２０４から返されたオブジェクトを変更するプロセスには返されたレコードが一意のオブジェクトを記述しているか否かを判断する、参照カウントの計算が必要である。
【００２７】
図８および図９について上述したように、ファイルシステムの各オブジェクトはＢツリー中にレコードとして格納されている。ファイルシステムの特定の論理バージョンに復帰するプロセス、またはファイルシステムの特定の論理バージョンを削除するプロセスの間に、非参照のオブジェクトをＢツリーから削除するバックグラウンド・プロセスを始動する。たとえば、図７において主イメージに復帰すると、オブジェクト・レコードを収容するＢツリーは存在しないオブジェクト・インスタンス用のレコードを含むことになる。これらのレコードはルックアップ手順の間に読み取られることはないから，Ｂツリーはこれらのレコードに影響されない。図１１は図７のステップ１５４および図６のステップ１２６に示した、ファイルシステムの論理バージョンをほぼ即時に削除する、あるいはそれにほぼ即時に復帰するプロセスの間にファイルシステム・オブジェクトの非参照の論理バージョンを永続記憶装置から削除するプロセスを示すフローチャート２６０を示す図である。プロセスは永続記憶装置に存在する、ファイルシステムのすべての論理バージョンのすべてのレコードを走査することにより開始する（ステップ２６２）。次いで、走査がオブジェクトを返したか否かを判断するテストを実行する（ステップ２６４）。オブジェクトが１つも返されていなかったら、走査は成功裏に完了する（ステップ２６６）。しかし、走査からオブジェクトが返されていたら、当該オブジェクトについて参照カウントを計算する（ステップ２６８）。参照カウントが「０」ということは当該オブジェクトを他のオブジェクトが参照していないということを表わしているから、そのレコードを削除する（ステップ２７４）。次いで、プロセスはステップ２６２に戻り、走査プロセスを継続する。しかし、参照カウントがステップ２６８で特定したオブジェクトを参照している少なくとも１つのオブジェクトを返したら、当該参照オブジェクトに復帰する（ステップ２７０）。そして、当該参照オブジェクトのレコードを誕生エポック番号で置換する（ステップ２７２）。次いで、プロセスはステップ２６２に戻り、走査プロセスを継続する。図１１に示す、ファイルシステムの非参照の論理バージョンの削除が復帰手順に応答して開始された場合には、図１１に示すプロセス全体が完了するまでファイルシステムの論理バージョンは新たに作成しない。この要件によって、Ｂツリーの誤ったレコードが主イメージの一部に見えるのを防止することができる。対照的に、図１１に示す、ファイルシステムの非参照の論理バージョンの削除がファイルシステムの論理バージョンのほぼ即時の削除プロセスの結果であった場合には、ファイルシステムの論理バージョンを新たに作成してもよい。したがって、ファイルシステムの非参照オブジェクトを削除するプロセスはファイルシステムの特定の論理バージョンへの復帰に従い、現在のファイルシステムのエポック番号より大きな誕生エポック番号を有する、Ｂツリー中のすべてのレコードを削除する。
【００２８】
図１１に示した非参照のファイルシステム・オブジェクトのバージョンを削除するのに加え、参照したファイルシステム・オブジェクトを変更することができる。しかしながら、変更することができるのは一意であるファイルシステム・オブジェクトのみである。ファイルシステムの複数のバージョンで有効である（すなわち一意でない）ファイルシステム・オブジェクトは変更する前にコピー・オン・ライト手順を経る必要がある。図１０は図９のステップ２１２で特定した、一意のオブジェクトを記述していないレコードに対してコピー・オン・ライト手順を実行するプロセスを示すフローチャート２２０を示す図である。この手順では特定したオブジェクトに対して２個または３個のレコードを作成して非主イメージにデータを保存する。保存した非主イメージを変更する意図がある場合には、３個のレコードを作成する。一般に、非主イメージはファイルシステムの論理バージョンの一貫性を維持しうるようにその内容を保存する必要があるから、変更することができない。しかし、製造システムでは時々、保守する必要があり、そのような保守を容易にするために非主イメージに対するコピー・オン・ライトの実行をサポートしている。これを使用しうる例としてファイルシステムの検査と修理、あるいは故障した永続記憶装置に存在するデータ・ブロックを有するファイル・オブジェクトの更新が挙げられる。コピー・オン・ライト手順における第１のステップは特定したオブジェクトのローカル変数である新誕生エポック番号に元のオブジェクトの誕生エポック番号を割り当てること、および特定したオブジェクトのローカル変数である新死亡エポック番号に元のオブジェクトの死亡エポック番号を割り当てることである（ステップ２２２）。次いで、誕生エポック番号から成る第１のパラメータと１より小さい探索エポック番号から成る第２のパラメータとを備えた参照カウントを計算する（ステップ２２４、先行レコードと呼ばれる）。次いで、先行レコードをインメモリで作成したのち永続記憶装置に書き込むことになる（ステップ２２６）。先行レコードは元の誕生エポック番号に等しい誕生エポック番号と探索エポック番号マイナス１に等しい死亡エポック番号とを備えることになる。先行レコードの誕生エポック番号は変化させなかったから、Ｂツリーは先行レコードのキーをすでに備えて存在している。したがって、レコード置換操作を使用する。これにより、先に存在したキーに付随するデータが変更される。次いで、新誕生エポック番号に探索エポック番号を割り当てる（ステップ２２８）。次いで、ステップ２２８における割り当て、またはステップ２２４における参照カウントが０より大きくない値から成る結果に続いて、１だけインクリメントした探索エポック番号から成る第１のパラメータと死亡エポック番号から成る第２のパラメータとを備えた参照カウントを判断する（ステップ２３０）。ステップ２３０における参照カウントの値が０より大きい場合、第３のレコード（後行レコード）を作成することになる。後行レコードはインメモリで作成したのち永続記憶装置に書き込むことになる（ステップ２３２）。後行レコードは探索エポック番号プラス１に等しい誕生エポック番号と元の死亡エポック番号に等しい死亡エポック番号とを有することになる。後行レコードの誕生エポック番号は新たな値を有するから、後行レコードのキーを有するレコードはＢツリー中に存在しない。したがって、レコード挿入操作を使用して新たなＢツリー・レコードとキーを挿入する。次いで、新たな死亡エポック番号に探索エポック番号の整数値を割り当てる（ステップ２３４）。フローチャートの残りの部分（ステップ２３６、２３８、２４２）は中間レコードの作成に関する。中間レコードは呼び出し元が変更を意図しているレコードであるから、最後に作成する。中間レコードはステップ２２２またはステップ２２８で割り当てた新たな誕生エポック番号に等しい誕生エポック番号を有することになる。中間レコードはステップ２２２またはステップ２３４で割り当てた新たな死亡エポック番号に等しい死亡エポック番号を有することになる。ステップ２３４における割り当て、またはステップ２３０において参照カウントの値が０より大きいことに続いて、元のレコードの誕生エポック番号がステップ２２２で割り当てた新たな誕生エポック番号に等しいか否かを判断するテストを実行する（ステップ２３６）。ステップ２３６におけるテストの結果がＹｅｓの場合、既存のレコードを新たな誕生エポック番号と新たな死亡エポック番号で置換することになる（ステップ２３８）。これに対して、ステップ２３６におけるテストの結果がＮｏの場合、新誕生エポック番号と新死亡エポック番号の双方のパラメータを備えたレコードをＢツリーに挿入する形で中間レコードを作成することになる（ステップ２４０）。中間レコードを作成するプロセスによって、Ｂツリーに新たなレコードを挿入するか既存のレコードを置換するかどちらか一方が行われる。ステップ２３８またはステップ２４０で第２のレコードを作成する結果、誕生エポック番号に新誕生エポック番号を割り当て、死亡エポック番号に新死亡エポック番号を割り当てることになる（ステップ２４２）。したがって、コピー・オン・ライト・プロセスによって、変更用に特定したオブジェクト・レコードを２個または３個のコピーに分割することが可能になる。これにより、ファイルシステムの以前の論理バージョンで見られた、ファイルシステム・オブジェクトの元の状態を保存することが可能になる。
【００２９】
〔従来技術に勝る利点〕
ファイルシステムの論理バージョンの作成が完了すると、それはファイルシステムのルート・ディレクトリの一部のように見える。また、それを用いて、ファイルシステムをオンラインで維持しながらバックアップ・ユーティリティによって二次記憶バックアップを作成することができる。さらに、ファイルシステムの論理バージョンはファイルの修復用に、あるいはファイルシステムの履歴を保持するために参照することができる。ここに開示した、ファイルシステムの論理バージョンを作成するほぼ即時のプロセスはスペース効率が良好である。ファイルシステムの論理バージョンの作成が完了すると、ファイルシステム・オブジェクトの更新はコピー・オン・ライト手順によって行う。これにより、ファイルシステムの論理バージョンの元をなしたファイルシステム・オブジェクトの元の状態を保存することが可能になる。余分な記憶容量を必要とするのは、ファイルシステムの論理バージョンの採用に従って変化したファイルシステム・オブジェクトのみである。ファイルシステムの論理バージョンの作成に従ってファイルシステム・オブジェクトを変更しない場合、ファイルシステムの論理バージョンを格納するのに余分なスペースを必要としない。また、単一のレコードは余分な記憶容量を必要とすることなく、１つのオブジェクトの同一のインスタンスを無限個数代表することができる。さらに、ファイルシステムの主イメージまたはファイルシステムの論理バージョンを維持するのに余分なバックグラウンド・プロセスを必要としない。したがって、ファイルシステムの論理バージョンにおいて参照されるオブジェクトと比べて、主イメージのオブジェクトにアクセスするのに余分なコストは必要ない。したがって、ファイルシステムの論理バージョンおよび付随するオブジェクトを編成して保守しても、ファイルシステムの元の状態を保存しながらファイルシステムの論理バージョンを保持することができる。
【００３０】
〔別の実施形態〕
認識すべき点を挙げると、ここでは説明を目的に本発明の特定の実施形態を説明したが、本発明の本旨と範囲の内で様々な変更をなすことができる。特に、ファイルシステムの特定の論理バージョンへの復帰とともにファイルシステムの当該論理バージョンにおける参照したオブジェクトの死亡エポック番号を無限大にリセットすることができる。というのは、ファイルシステムの復帰した論理バージョンがファイルシステムの新たな主イメージになるからである。ファイルシステムの主イメージのエポック番号を備えたオブジェクトはすべて無限大の死亡エポック番号を有する。図１２は参照したオブジェクトの死亡エポック番号をリセットするステップ群を示すフローチャート２８０を示す図である。まず、オブジェクトの誕生エポック番号がファイルシステムの論理バージョンのエポック番号以下であるか否かを判断するテストを実行する（ステップ２８２）。ステップ２８２におけるテストの結果がＹｅｓの場合、オブジェクトの死亡エポック番号がファイルシステムの論理バージョンのエポック番号以上であるか否かを判断するテストを実行する（ステップ２８４）。ステップ２８２またはステップ２８４におけるテストの結果がＮｏの場合、死亡エポック番号はリセットする必要がない（ステップ２８８）。しかし、ステップ２８２およびステップ２８４におけるテストの結果がＹｅｓの場合には、オブジェクトの死亡エポック番号を無限大にリセットする（ステップ２８６）。図１２に概要を示したプロセスはアクセスするレコードについて、ファイルシステムの論理バージョンのエポック番号以下の誕生エポック番号とファイルシステムの論理バージョンのエポック番号以上の死亡エポック番号とを備えたレコードに対して行う。最後に、エポック値は必ずしも数値のみに限らず、任意のインクリメント可能な値（たとえばアルファベット文字や生（raw ）バイトなど）を用いることができる。以上のとおりであるから、本発明の保護の範囲は特許請求の範囲およびその等価物によってのみ限定される。
【図面の簡単な説明】
【００３１】
【図１】ファイルシステム管理論理を備えた単一ノードの従来技術に係るブロック図である。
【図２】ＳＡＮと通信するファイルシステム管理論理を備えたサーバ・ノードを備えたコンピュータ・システムの従来技術に係るブロック図である。
【図３】本発明の好適な実施形態による、ファイルシステム管理論理を備えた単一ノードを備えたコンピュータ・システムのブロック図である。
【図４】本発明の好適な実施形態による、ファイルシステム管理論理を備えた、ＳＡＮと通信するサーバ・ノードを備えたコンピュータ・システムのブロック図である。
【図５】本発明の好適な実施形態による、ファイルシステムのほぼ即時バージョンを作成するプロセスを示すフローチャートを示す図である。
【図６】ファイルシステムの論理バージョンをほぼ即時に削除するプロセスを示すフローチャートを示す図である。
【図７】ファイルシステムの論理バージョンへほぼ即時に復帰するプロセスを示すフローチャートを示す図である。
【図８】ファイルシステム中にオブジェクトを挿入するプロセスを示すフローチャートを示す図である。
【図９】ファイルシステムの識別したオブジェクトをルックアップするプロセスを示すフローチャートを示す図である。
【図１０】参照したファイルシステム・オブジェクトにコピー・オン・ライト手順を実行するプロセスを示すフローチャートを示す図である。
【図１１】非参照のファイルシステム・オブジェクトを削除するプロセスを示すフローチャートを示す図である。
【図１２】ファイルシステム・オブジェクトの死亡エポック番号をリセットするプロセスを示すフローチャートを示す図である。
【符号の説明】
【００３２】
１２  ノード
１４  ノード・ソフトウェア
１６  オブジェクト識別手段を備えないファイルシステム管理論理
１７  ファイル・データ空間
１８  ローカル記憶装置
１９  メタデータ空間
２２  クライアント／サーバ・ノード
２４  ノード・ソフトウェア
２６  オブジェクト識別手段を備えないファイルシステム管理論理
３０  ＳＡＮ
３２  ファイル・データ空間
３４  メタデータ空間
４２  ノード
４４  クライアント・ドライバ
４６  サーバ・ソフトウェア
４８  オブジェクト識別手段を備えたファイルシステム管理論理
５２  ファイル・データ空間
５４  メタデータ空間
６４  ユーザ・ファイル・データ空間
６６  メタデータ空間
７０  サーバ・ノード１
７２  サーバ・ソフトウェア
７４  オブジェクト識別手段を備えたファイルシステム管理論理
８０  サーバ・ノード２
８２  サーバ・ソフトウェア
８４  オブジェクト識別手段を備えたファイルシステム管理論理
９０  管理者ノード
９２  クライアント・ノード
９４  クライアント・ノード
【図１】
2004326800.tif 000003
【図２】
2004326800.tif 000004
【図３】
2004326800.tif 000005
【図４】
2004326800.tif 000006
【図５】
2004326800.tif 000007
【図６】
2004326800.tif 000008
【図７】
2004326800.tif 000009
【図８】
2004326800.tif 000010
【図９】
2004326800.tif 000011
【図１０】
2004326800.tif 000012
【図１１】
2004326800.tif 000013
【図１２】
2004326800.tif 000014