JP4568115B2 - ハードウェアベースのファイルシステムのための装置および方法 - Google Patents

ハードウェアベースのファイルシステムのための装置および方法 Download PDF

Info

Publication number
JP4568115B2
JP4568115B2 JP2004550242A JP2004550242A JP4568115B2 JP 4568115 B2 JP4568115 B2 JP 4568115B2 JP 2004550242 A JP2004550242 A JP 2004550242A JP 2004550242 A JP2004550242 A JP 2004550242A JP 4568115 B2 JP4568115 B2 JP 4568115B2
Authority
JP
Japan
Prior art keywords
file
sub
module
storage
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2004550242A
Other languages
English (en)
Other versions
JP2006505069A (ja
Inventor
ジェフリー エス. バーラル,
サイモン エル. ベンハム,
トレバー イー. ウィリス,
クリストファー ジェイ. アストン,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Data Systems Engineering UK Ltd
Original Assignee
Hitachi Data Systems Engineering UK Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Data Systems Engineering UK Ltd filed Critical Hitachi Data Systems Engineering UK Ltd
Publication of JP2006505069A publication Critical patent/JP2006505069A/ja
Application granted granted Critical
Publication of JP4568115B2 publication Critical patent/JP4568115B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1873Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99948Application of database or data structure, e.g. distributed, multimedia, or image

Description

(技術分野および背景技術)
本発明は、コンピュータ・ファイル・システムに関し、特に、コンピュータ・プリケーション・プログラムの実行に用いられるプロセッサーに関連したハードウェアとは異なるコンピュータ・ハードウェアを用いてアクセスするファイル・システムに関するものである。
(発明の要旨)
本発明の一実施形態の中には、幾つか例を挙げると、磁気記憶装置、光磁気記録装置、または光記憶装置などを含むデータ記憶システムにアクセスし利用するファイル・サーバ・システムが設けられている。本システムには、データ記憶システムとつながっており、データ記憶システムに記憶されたデータを提供し、データ記憶システムからデータを検索するデータ・バス装置が含まれている。また、本システムには、複数の連結サブモジュールが含まれており、グループとしての連結サブモジュールは、ファイル・サービス要求を受け取るための制御入力端と、ファイル・サービス要求に応じるための制御出力端と、につながっており、このようなサービス要求を処理したり、制御出力端から要求に対する回答を発出している。制御入力端、及び制御出力端は通常データ・バス装置とは異なっている。各サブモジュールは、かかるファイル・システム要求の処理に関連した異なるオペレーション一式を行うよう形成されている。本システムは、また、複数のメタデータ・メモリー・キャッシュを含んでいる。各メタデータ・メモリー・キャッシュは、通常はファイル内容データを記憶しないサブモジュールのオペレーションに関係したメタデータを記憶するための、対応サブモジュールと関連付けられている。
例示的な実施形態として、階層的に配列された複数の連結サブモジュールがある。
例示的な実施形態には、次のサブモジュール、即ち、記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールと、ファイル属性に関連付けられたデータ構造を管理するファイル・サブモジュールと、ファイル・サブモジュール用のディレクトリ管理を行うディレクトリ・サブモジュールと、ディレクトリ・サブモジュール用のディレクトリ探索を行うツリー・サブモジュールと、次の記憶用のファイル・システム要求データを記憶システムに記憶する不揮発性記憶装置と関連付けられた不揮発性記憶装置処理サブモジュールと、データ記憶システムの中のスペースの割当てに関するデータを検索、及び更新する空きスペース割当てサブモジュールと、が含まれている。
特に、ツリー・サブモジュールは、ディレクトリ・サブモジュール用の論理ツリー構造を管理する。ツリー構造を実質的に平衡させる目的で、ディレクトリ・サブモジュールは、ランダム(または、多分より正確には、擬似乱数)値と各ファイルを関連付けし、ツリー・サブモジュールは、ディレクトリ・サブモジュールからのランダム値に基づいて論理ツリー構造を管理する。各ランダム値は、例えば、巡回冗長検査(CRC)、または他のランダム化手法を用いて、ファイル名で作成される。ツリー・サブモジュールは、各ランダム値を論理ツリー構造のインデックスと関連付けを行い、ランダム値を使って論理ツリー構造にアクセスする。ツリー・サブモジュールは、各ランダム値をディレクトリ表のインデックスと関連付けを行う。
不揮発性記憶装置処理サブモジュールは、プロセッサの故障復帰依頼により、ファイル・システム要求データを、不揮発性記憶装置に記憶する。不揮発性記憶装置処理サブモジュールは、不揮発性記憶装置にファイル・システム要求データの記憶を確認した旨の通知を、プロセッサへ送る。不揮発性記憶装置処理サブモジュールは、不揮発性記憶装置に記憶されているファイル・システム要求データをインターフェイスを経由して別のファイル・サーバから受け取ることができる。不揮発性記憶装置処理サブモジュールは、また、別のファイル・サーバによるファイル・システム要求データの不揮発性記憶のために、ファイル・システム要求データをインターフェイスを経由して別のファイル・サーバへ送ってもよい。
オブジェクト記憶サブモジュールは、記憶システムに記憶される各ファイル・システム・オブジェクト用のファイル構造を維持している。ファイル構造は、通常は、専用のメタデータ・キャッシュに記憶されている。ファイル・システム・オブジェクトは、通常、ファイル、ディレクトリ、ファイル属性などのものを含んでいる。オブジェクト記憶サブモジュールは、種々のチェックポイントにおいて、ファイル構造を記憶システムに記憶する。チェックポイントは、外部プロセッサにより開始できる。即ち、ある事象が起きた時、例えば、記憶システムにファイル構造を前回記憶してから所定の時間が経過した時、ファイル・システム要求データの記憶に使用された不揮発性記憶装置の一部が一杯になった時、または記憶システムと関連付けされたセクター・キャッシュが一杯になった時である。
チェックポイントを取得するために、チェックポイント問合せコマンドを不揮発性記憶装置処理サブモジュールに送り、チェックポイント用記憶システムにファイル構造の記憶を開始する。チェックポイント問合せコマンドは通常チェックポイント用のチェックポイント番号を含んでいる。不揮発性記憶装置処理サブモジュールは、不揮発性記憶装置にどのような未処理のファイル・システム要求でも記憶し、他のファイル・サーバのファイル・システム要求数の不揮発性記憶のため、インターフェイスを経由して別のファイル・サーバにファイル・システム要求数を随意的に送り、ファイル・システム要求数をファイル・サブモジュールへ送り、続いて、チェックポイント・コマンドをファイル・サブモジュールへ送る。(ファイル・システム要求の記憶、及び「ミラーリング」、並びにファイル・システム要求のファイル・サーバ・モジュールへの通過は、チェックポイントの取得中も必要に応じて起きていることに留意されたい。)ファイル・サブモジュールは、どのようなファイル・システム要求でも処理し、不揮発性記憶装置処理サブモジュールから、チェックポイント・コマンドを受け取り次第、残りのサブモジュールを経由して完了するある一定のオペレーションを待ち、次にチェックポイント・コマンドをディレクトリ・サブモジュールへ送る。ディレクトリ・サブモジュールは、チェックポイント・コマンドをファイル・サブモジュールから受け取り、チェックポイント・コマンドをツリー・サブモジュールへ送る。ツリー・サブモジュールは、チェックポイント・コマンドをディレクトリ・サブモジュールから受け取り、チェックポイント・コマンドをオブジェクト記憶サブモジュールへ送る。オブジェクト記憶サブモジュールは、チェックポイント・コンマンドをツリー・サブモジュールから受け取り、チェックポイント問合せを空きスペース割当てサブモジュールへ送る。空きスペース割当てサブモジュールは、チェックポイント問合せをオブジェクト記憶サブモジュールから受け取り、チェックポイント問合せを受け取った後に開始されたオペレーション含むチェックポイントに必要な全てのオペレーションを完了する。オブジェクト記憶サブモジュールは、次に、最後のチェックポイント以降に修正された全てのオブジェクトを示す更新オブジェクト・リストを含むファイル・システム・オブジェクトを記憶システムに書き込む。
本発明の代表的な実施形態においては、各ファイル構造は複数のノード、及び少なくとも1つのデータ・ブロックから構成されている。各ノードは、通常は、他のノードを指すポインタ、データ・ブロック記述子を指すポインタ、及びノードが作成されている間のチェックポイントを示すチェックポイント番号などを含んでいる。
本発明の特殊な実施形態においては、ファイル構造には、第1、及び第2のチェックポイント用の情報を記憶する少なくとも2つのルート・ノードが含まれている。記憶システムは論理的にセクターに分割され、2つのルート・ノードは、好ましくは、記憶システムの連接セクターに記憶される。各ルート・ノードは通常、ファイル・システム・オブジェクトの型を示すオブジェクト型(例えば、ファイル、ディレクトリ、空きスペース・オブジェクト、ボリューム記述子オブジェクトなど)、ファイル・システム・オブジェクトと関連付けされたデータ・ブロック数を示すオブジェクト長さ、ルート・ノードが利用された回数を示す再利用カウント、ルート・ノードの以前のインスタンス化を指すポインタ、ルート・ノードの次のインスタンス化を指すポインタ、データ・ブロックを指すポインタを含む少なくとも1つのデータ・ブロック記述子、データ・ブロックが作成された相対的時間を示すチェックポイント番号、データ・ブロックが零または非零、及びファイル属性(イーノード)であることを示す標識、などを含んでいる。実際のオブジェクト長さは、データ・ブロックの整数でなくともよいが、その場合、オブジェクト長さは、ブロックの使用数のカウントがわかる次のより高いブロックの倍数に切り上げることに留意されたい。
ルート・ノード以外に、ファイル構造は、データ・ブロック記述子を含む多数の直接ノードを含むことができる。ルート・ノードは直接ノードを指すポインタを含むことができる。ファイル構造は、また、多数の間接ノードで構成できる。間接ノードは、他の間接ノードまたは直接ノードを指す。ルート・ノードは、間接ノードを指すポインタを含んでよい。オブジェクトは、それに関連付けられたデータを有しなくてもよいが、その場合には、オブジェクトはどのようなブロック記述子も持たない。
大きな空き(即ち、ゼロで埋められた)ファイルが作成し易いように、ファイル構造は、データ・ブロックが零か非零かであるかを示す、ファイル・システムと関連付けられた各データ・ブロックごとの標識を通常含んでいる。ファイル構造は、また、各ノード、及びデータ・ブロックが作成されたかどうかを示す、各ノード、及びデータ・ブロック用の標識を通常含んでいる。オブジェクト記憶サブモジュールは、必要に応じて、各ノード、及びデータ・ブロックを作成し、ファイル・システム書込み要求の応じ、ノード、及びデータ・ブロックが作成されたことを示す、各ノード、及びデータ・ブロック用の標識を設定する。オブジェクト記憶サブモジュールは、通常、空きスペース割当てサブモジュールによってスペースをデータ・ブロックに割り当てることによりデータ・ブロックを作成する。
故障から容易に回復できるように、オブジェクト記憶サブモジュールは、通常、記憶システムにファイル構造と共に時々記憶したトランザクション・ログを通常維持している。
各サブモジュールは、専用のハードウェアまたは専用のプロセッサを用いて実現してもよい。
本発明の別の実施形態においては、2台以上の相互接続ファイル・サーバを有するクラスター化ファイル・サーバが設けられている。3台以上のファイル・サーバをスイッチにより相互接続することが好ましいが、2台のファイル・サーバは、背中合わせに接続できる。スイッチは、どのようなサーバにも他のどのサーバとも連絡しあう能力を与える。サーバは次に本機能を利用して、例えば、仮想ループ構成で、ファイル・システム要求データを不揮発性記憶するためにサーバ間でファイル・システム要求データを交換する。通常、サーバのうち1台が利用できななくなっても、スイッチの構成を修正する必要はないが、逆に、サーバは、その状況を認識し、その結果、仮想ループを修正する。
本発明の別の実施形態においては、少なくとも3台のファイル・サーバ、及びスイッチを有するクラスター化ファイル・サーバが設けられている。各ファイル・サーバはファイル・システム要求を発出するとともに不揮発性記憶領域を含む。スイッチは、いかなるファイル・サーバの不揮発性記憶装置でも他のファイル・サーバの選択した1台からファイル・システム要求データをを記憶できるようファイル・サーバを相互接続する。スイッチは、各ファイル・サーバからのファイル・システム要求データを少なくとも1台の他のファイル・サーバに記憶するよう、例えば、仮想ループ構成で、構成することができる。スイッチには、通常、ファイル・システム要求データの記憶に利用できなくなったファイル・サーバの側路のために構成を修正する能力がある。
本発明の別の実施形態には、ネットワークを経由してファイル・サービス要求を受け取り応答するサービス・モジュールを有するファイル・サーバと、サービス要求に応じるファイル・モジュールと、サービス・モジュール、及びファイル・モジュールとつながっているプロセッサとが設けられている。サービス・モジュールは、ファイル・サービス要求をプロセッサに渡す。プロセッサはファイル・サービス要求を処理してファイル・サービス要求をファイル・モジュールに渡す。ファイル・モジュールは、ファイル・サービス要求に対する回答を直接ファイル・モジュールに送り、プロセッサを側路する。
本発明の別の実施形態には、ファイル・システムの再利用データ構造を管理する方法がある。本方法には、再利用データ構造の再利用値を維持するステップと、データ構造が再利用される度に再利用値を変更するステップが含まれている。再利用データ構造は通常ファイル・システム・オブジェクトと関連付けられたオブジェクト構造のルート・ノードである。クライアントは通常ファイル・システム・オブジェクトにアクセスを要求する時の再利用値を含んでいる。この場合、この要求の再利用値は、ルート・ノードの再利用値と比較されてルート・ノードがクライアントに再利用値を与えた後で再利用されたのかどうかを判断するとともに、その要求の再利用値がルート・ノードの再利用値に一致する場合かつその場合に限りその要求は応じられる。
本発明の別の実施形態には、継続的なチェックポイントで、不揮発性記憶装置にファイル・システム・オブジェクト維持する方法が付与されている。本方法は、ファイル・システム・オブジェクト用のオブジェクト構造を維持するステップを含んでいる。このオブジェクト構造は、第1のルート・ノードが根付いた第1のツリー構造、及び第2のルート・ノードが根付いた第2のツリー構造から成る。各ツリー構造は随意的に多数の中間ノードと多数のデータ・ブロックとで構成されている。各ツリー構造はファイル・システム・オブジェクトのバージョンを表す。本方法は、また、第2のルート・ノードが根付いた第2のツリー構造を前記不揮発性記憶装置に記憶中に第1のルート・ノードが根付いた第1のツリー構造を使って前記オブジェクト構造の管理、及び第1のルート・ノードが根付いた第1のツリー構造を前記不揮発性記憶装置に記憶中に第2のルート・ノードが根付いた第2のツリー構造を使って前記オブジェクト構造の管理を交互に管理するステップと、を含んでいる。本方法は、また、各ルート・ノードごとに、バージョン番号を維持するステップを含んでおり、バージョン番号は対応するツリー構造と関連付けられたチェックポイントを示す。不揮発性記憶装置は、通常、複数のセクターから構成されている。第1、及び第2のルート・ノードは、通常、不揮発性記憶装置の隣接セクターに記憶される。本方法は、また、通常、ルート・ノードのバージョン番号に基づいてファイル・システム・オブジェクトの最新の有効バージョンを決定するステップを含んでいる。本方法は、また、通常、不揮発性記憶装置の空きスペース領域のリスト維持するステップと、空きルート・ノードのリストを維持するステップと、空きスペース領域のリスト、及び空きルート・ノードのリストの1つからルート・ノードをオブジェクト構造に割り当てるステップと、空きスペース領域のリストのみから中間ノード、及びデータ・ブロックをオブジェクト構造に割り当てるステップと、を含んでいる。本方法は、また、不揮発性記憶装置からファイル・システム・オブジェクトを削除するステップを含んでいる。不揮発性記憶装置からファイル・システム・オブジェクトを削除するステップは、通常、空きルート・ノードのリストにルート・ノードを追加するステップと、空きスペース領域のリストに中間ノード、及びデータ・ブロックを追加するステップとを含んでいる。
本発明の別の実施形態には、ファイル・システムにオブジェクトの読取り専用バージョンを保持する方法が付与されている。本方法は、オブジェクト用のオブジェクト構造を維持するステップを含んでおり、そのオブジェクト構造は、オブジェクトの現行バージョンと、多数の中間ノードと、オブジェクト・データを記憶する多数のデータ・ブロックと、とに関連付けられた少なくともルート・ノードを含み、各ノードは、ルート・ノードから各データ・ブロックまでの経路を形成するために、少なくとも1つのデータ・ブロック、または別のノードのリファレンスを含んでいる。本方法は、また、オブジェクト構造を不揮発性記憶装置に記憶するステップと、オブジェクトの保持バージョン用のルート・ノードのコピーを作成するステップとを含んでいる。本方法はまた、オブジェクトのオブジェクト構造にルート・ノードのコピーのリファレンスを記憶するステップを含んでもよい。本方法は、また、ルート・ノードのコピーにルート・ノードのリファレンスを記憶するステップを含むことができる。本方法は、また、ルート・ノードからルート・ノードの以前のバージョンのリファレンスを入手するステップと、ルート・ノードのコピーにルート・ノードの以前のバージョンのリファレンスを記憶するステップと、ルート・ノードの以前のバージョンにルート・ノードのコピーのリファレンスを記憶するステップとを含むことができる。本方法は、また、不揮発性記憶装置にルート・ノードのコピーを記憶するステップを含むことができる。
本方法は、オブジェクトの保持バージョンと関連付けられた全ての中間ノードまたはデータ・ブロックも修正せずにオブジェクト・データを修正するステップを含んでもよい。オブジェクトの保持バージョンと関連付けられた全ての中間ノードまたはデータ・ブロックも修正せずにオブジェクト・データを修正するステップは、通常、データ・ブロックのコピーを作成するステップと、データ・ブロックのコピーを修正してデータ・ブロックの修正済みコピーを作るステップと、オブジェクトの保持済みバージョンと関連付けられたデータ・ブロックへの経路に沿った全ての中間ノードを修正せずにルート・ノードからデータ・ブロックの修正済みコピーまでの経路を形成するステップとを含んでいる。ルート・ノードはデータ・ブロックのリファレンスを有することができる。このリファレンスは修正されデータ・ブロックでなくデータ・ブロックの修正済みコピーを参照する。あるいは、ルート・ノードからデータ・ブロックの修正済みコピーまでの経路は、データ・ブロックのリファレンスを有するルート・ノードにより参照される中間ノードを含むことができるが、この場合には、中間ノードのコピーが作成され、修正されて、データ・ブロックではなく、データ・ブロックの修正済みコピーが参照される。ルート・ノードは修正されて中間ノードのコピーが参照される。あるいは、ルート・ノードからデータ・ブロックまでの経路は、ルート・ノードが参照する少なくとも第1の中間ノード、及びデータ・ブロックのリファレンスを有する最後の中間ノードを含む複数の中間ノード含んでもよいが、この場合には、各中間ノードのコピーが作成されて、ルート・ノードは、修正され第1の中間ノードのコピーを参照し、最後の中間ノードのコピーは修正されデータ・ブロックの修正済みコピーを参照し、ルート・ノードからデータ・ブロックの修正済みコピーまでの経路を形成するため、他の各中間ノードのコピーは修正され、別の中間ノードのコピーを参照する。
本方法は、また、オブジェクトの保持済みバージョンと関連付けられた全ての中間ノードまたはデータ・ブロックも修正せずにオブジェクトからデータ・ブロックを削除するステップを含むことができる。ルート・ノードはデータ・ブロックのリファレンスを有してもよいが、この場合には、オブジェクトからデータ・ブロックを削除するステップは、ルート・ノードからデータ・ブロックのリファレンスを削除するステップを含む。あるいは、ルート・ノードからデータ・ブロックまでの経路は、ルート・ノードにより参照され、データ・ブロックのリファレンスを有する中間ノードを含んでもよいが、この場合には、オブジェクトからデータ・ブロックを削除するステップは、中間ノードのコピーを作成するステップと、中間ノードのコピーからデータ・ブロックのリファレンスを削除するステップと、ルート・ノードを修正して中間ノードのコピーを参照するステップとを含む。あるいは、ルート・ノードからデータ・ブロックまでの経路は、ルート・ノードにより参照される少なくとも第1の中間ノード、及びデータ・ブロックのリファレンスを有する最後の中間ノードを含む複数の中間ノードを含んでもよいが、この場合には、オブジェクトからデータ・ブロックを削除するステップは、各中間ノードのコピーを作成するステップと、ルート・ノードを修正して第1の中間ノードのコピーを参照するステップと、最後の中間ノードのコピーからデータ・ブロックのリファレンスを削除するステップと、ルート・ノードから最後の中間ノードまでの経路を形成するために、他の各中間ノードのコピーを修正し別の中間ノードを参照するステップとを含む。
本方法は、オブジェクトの保持済みバージョンと関連付けられた全ての中間ノードまたはデータ・ブロックを修正せずに、新しいデータ・ブロックをオブジェクトに追加するステップを含むことができる。新しいデータ・ブロックをオブジェクトに追加するステップは、新しいデータ・ブロックを割り当てるステップと、新らしいデータ・ブロックのリファレンスをルート・ノードに追加するステップとを含むことができる。新しいデータ・ブロックをオブジェクトに追加するステップは、新らしいデータ・ブロックを割り当てるステップと、中間ノードのコピーを作成するステップと、新らしいデータ・ブロックのリファレンスを中間ノードのコピーに記憶するステップと、中間ノードのコピーのリファレンスをルート・ノードに記憶するステップとを含んでもよい。新データ・ブロックのオブジェクトへの追加ステップは、新データ・ブロックの割当てステップと、新中間ノードの割当てステップと、新データ・ブロックのリファレンスを新中間ノードに記憶するステップと、ルート・ノードに新中間ノードのリファレンスを記憶するステップとを含むことができる。新データ・ブロックを追加するステップは、新データ・ブロックの割当てステップと、新中間ノードの割当てステップと、新データ・ブロックのリファレンスを新中間ノードに記憶するステップと、新中間ノードへの経路をオブジェクトの保持済みバージョンと関連付けられた全ての中間ノードまたはデータ・ブロックを修正せずに形成するステップとを含むことができる。
本方法は、また、オブジェクトの保持済みバージョン用の修正済みオブジェクト・リストを維持するステップを含むことができる。修正済みオブジェクト・リストは、オブジェクトの保持済みバージョン用のルート・ノードのコピー作成後に追加され、修正され、削除された全ての中間ノードを示している。
本方法は、また、ファイル・システムからオブジェクトの保持済み読取り専用バージョンを削除するステップを含むことができる。ファイル・システムからオブジェクトの保持済み読取り専用バージョンを削除するステップは、オブジェクトの読取り専用バージョンを保持した後、修正された全ての中間ノード、及びデータ・ブロックを識別するステップと、削除されるオブジェクトの保持済みバージョン用のルート・ノードのコピーを識別するステップと、オブジェクトの以前の保持済みバージョンと関連付けられたルート・ノードで、それが存在する場合に識別するステップと、オブジェクトの最後の保持済みバージョンとオブジェクトの現行バージョンの1つである、オブジェクトの最後のバージョンと関連付けられたルート・ノードを識別するステップと、削除されるオブジェクトの保持済みバージョンと関連付けられた全ての中間ノード、及びデータ・ブロックを識別するステップと、削除されるオブジェクトの保持済みバージョンによってのみ使用される全ての中間ノード、及びデータ・ブロックを識別するステップと、削除されるオブジェクトの保持済みバージョンによってのみ使用される各中間ノード、及びデータ・ブロックをオブジェクト構造から削除するステップと、オブジェクトの後のバージョンによって使用される全ての中間ノード、及びデータ・ブロックを識別するステップと、オブジェクトの後のバージョンによって使用される全ての中間ノード、及びデータ・ブロックをオブジェクトの後のバージョンと関連付けられた修正済みオブジェクト・リストに追加するステップと、削除されるオブジェクトの保持済みバージョン用のルート・ノードのコピーが削除されるオブジェクトの保持済みバージョンにのみ使用されたかどうかを判断するステップと、削除されるオブジェクトの保持済みバージョン用のルート・ノードのコピーが削除されるオブジェクトの保持済みバージョンにのみ使用された場合かつその場合に限り、削除されるオブジェクトの保持済みバージョン用のルート・ノードのコピーをオブジェクトから削除するステップとを含む。オブジェクトの保持済み読取り専用バージョンで修正される全ての中間ノード、及びデータ・ブロックを識別するステップは、通常、オブジェクトの読取り専用バージョンを保持した後で修正済みの中間ノード、及びデータ・ブロックのリストを維持するステップを含んでいる。オブジェクトの保持済み読取り専用バージョン用ルート・ノードは、通常、オブジェクトの以前の保持済みバージョンのルート・ノードのリファレンスで、それが存在する場合は含み、オブジェクトの以前の保持済みバージョンと関連付けられたルート・ノードを識別するステップは、通常、オブジェクトの保持済み読取り専用バージョン用のルート・ノードの中のオブジェクトの以前の保持済みバージョンのルート・ノードのリファレンスにアクセスするステップを含んでいる。オブジェクトの保持済み読取り専用バージョン用のルート・ノードは、通常、オブジェクトの後のバージョンのルート・ノードのリファレンスを含み、オブジェクトの後のバージョンと関連付けられたルート・ノードの識別するステップは、オブジェクトの保持済み読取り専用バージョン用のルート・ノードの中のオブジェクトの後のバージョンのルート・ノードのリファレンスにアクセスするステップを含んでいる。削除されるオブジェクトの保持済みバージョンによってのみ使用される全ての中間ノード、及びデータ・ブロックを識別するステップは、通常、削除されるオブジェクトの保持済みバージョンの各中間ノード、及びデータ・ブロックについては、オブジェクトの以前のバージョン、及びオブジェクトの後のバージョンに等価の中間ノードまたはデータ・ブロックがあれば識別するステップと、オブジェクトの以前のバージョンと、オブジェクトの後のバージョンとの双方で、削除されるオブジェクトの保持済みバージョンの中間ノードまたはデータ・ブロックを等価の中間ノードまたはデータ・ブロックと比較するステップと、等価の中間ノードまたはデータ・ブロックが、それが存在する場合、オブジェクトの以前のバージョン、及びオブジェクトの後のバージョンにおいて、異なる場合かつその場合に限り、中間ノードまたはデータ・ブロックが削除されるオブジェクトの保持済みバージョンによってのみ使用されていることを判断するステップとを含む。各削除済み中間ノード、及びデータ・ブロックは通常空きスペース領域にリストに追加される。オブジェクトの以前の保持済みバージョンと関連付けられたルート・ノードは、通常、削除されるオブジェクトの保持済みバージョン用のルート・ノードのコピーのリファレンスを含み、削除されるオブジェクトの保持済みバージョン用のルート・ノードのコピーのリファレンスを、これが存在する場合、オブジェクトの後のバージョンと関連付けられたルート・ノードのリファレンスで置き換え、リファレンスが存在しない場合、ヌル値で置き換えるステップを含んでいる。オブジェクトの後のバージョンと関連付けられたルート・ノードは、通常、削除される保持済みバージョン用のルート・ノードのコピーのリファレンスを含み、削除される保持済みバージョン用のルート・ノードのコピーをオブジェクト構造から削除するステップは、通常、削除されるオブジェクトの保持済みバージョン用のルート・ノードのコピーのリファレンスを、これが存在する場合、オブジェクトの以前のバージョンと関連付けられたルート・ノードのリファレンスで置き換え、リファレンスが存在しなければ、ヌル値で置き換えるステップを含んでいる。ルート・ノードの削除済みコピーは、通常、空きルート・ノードのリストに追加される。
本発明の別の実施形態には、ファイル・システムのオブジェクトの一部の内容を示す方法が付与されている。本方法はオブジェクトの多数のデータ・ブロックを含むオブジェクト構造を維持するステップ、及び各データ・ブロックごとの標識を維持するステップとを含み、各標識は、対応するデータ・ブロックが論理的に所定値で満たされていることを示す第1のの状態と、対応するデータ・ブロックがオブジェクト・データを含むことを示す第2の状態とを有する。各標識は、通常、対応するデータ・ブロックを参照するノードに維持されている。所定値は、通常、ゼロ値である。本方法は、また、所定値を対応するデータ・ブロックに書き込まずに、対応するデータ・ブロックが論理的に所定値で満たされていることを示す第1の状態に標識を設定するステップを含む。本方法は、また、オブジェクト・データをデータ・ブロックに書き込むステップと、データ・ブロックに対応する標識を対応するデータ・ブロックがオブジェクト・データを含むことを示す第2の状態に設定するステップとを含んでいる。
本発明の別の実施形態では、ファイル・システムのスパース・オブジェクトを割り当てる方法を付与している。本方法は、ルート・ノードをオブジェクトに割り当てるステップと、必要に応じて追加のノード、及びデータ・ブロックをゼロで埋められていないオブジェクトの部分にのみ割り当てるステップとを含んでいる。各ノードは、データ・ブロックおよび/または他のノードの多数のリファレンスを含む。各ノードは、通常、別のノードの各リファレンスごとの標識を含む。各標識は、他のノードが割り当てられたことを示す第1の状態、及び他のノードが割り当てられていないことを示す第2の状態を有する。未割当てノードと関連付けられた各リファレンス用の標識が最初に第2の状態に設定される。オブジェクト・データを前記オブジェクトのゼロで埋められた部分に書き込むために、追加のノード、及びデータ・ブロックが割り当てられ、割当て済みノードのリファレンスを割り当て済みノードのリファレンスを有する各ノードに記憶するとともに、割当て済みノードのリファレンス用標識を前記第1の状態に設定する。
本発明の別の実施形態では、ファイル・システムにオブジェクトと関連付けられたメータデータを記憶する方法が付与されている。本方法は、少なくともルート・ノードと、随意的に中間ノード、及びデータ・ブロックとを含む、オブジェクト用第1のオブジェクト構造を維持するステップ、並びにメタデータの第1の部分をルート・ノードに記憶するステップを含む。本方法は、また、多数のデータ・ブロックをメタデータの第2部分の記憶に割り当てるステップも含んでいる。本方法は、また、第2のオブジェクト構造をメタデータの第3の部分の記憶用に割り当てるステップを含む。この場合には、第2のオブジェクト構造のリファレンスは、通常、第1のオブジェクト構造、例えば、第1のオブジェクト構造のルート・ノード、またはメタデータの第2部分に記憶される。
本発明の別の実施形態では、不発性記憶装置と、オブジェクトの現行バージョンを管理するための2つ、及び2つだけ有するオブジェクト構造を用いて継続的なチェックポイントで不揮発性記憶装置にファイル・システム・オブジェクトを維持する手段とを含む装置が設けられ、この手段は継続的チェックポイントで前記オブジェクトの管理用の前記2つのルート・ノードの間で交互に繰り返す。装置は、また、通常、オブジェクト構造を介してオブジェクトの読取り専用バージョンを保持する手段を備えている。装置は、また、通常、オブジェクトからオブジェクトの保持済み読取り専用バージョンを削除する手段を備えている。装置は、また、通常、オブジェクトの少なくとも1つの保持済み読取り専用バージョンがオブジェクト構造に存在する間は、オブジェクトの現行バージョンを削除する手段を備えている。装置は、また、通常、オブジェクトの現行バージョンをオブジェクトの保持済み読取り専用バージョンに復帰させる手段を備えている。
本発明の別の実施形態では、不揮発性記憶装置を有するファイル・システムにファイル・システム・オブジェクトを維持する方法が付与されている。本方法は、複数のファイル・システム・オブジェクトのそれぞれのオブジェクト構造であって、少なくとも1つのルート・ノード、及び随意的に多数の中間ノード、及び多数のデータ・ブロックを含むオブジェクト構造を維持するステップと、全ての修正済みノードを識別するトランザクション・ログを維持するステップと、不揮発性記憶装置にトランザクション・ログにより識別された全ての修正済み中間ノードを記憶するステップと、不揮発性記憶装置にトランザクション・ログを記憶するステップと、不揮発性記憶装置にトランザクション・ログを記憶した後にのみ、不揮発性記憶装置にトランザクション・ログによって識別された全ての修正済みルート・ノードを記憶するステップと、を含む。本方法は、また、不揮発性記憶装置へのトランザクション・ログの記憶時と、不揮発性記憶装置へのトランザクション・ログによって識別された全ての修正済みルート・ノードの記憶時との間に故障が起きたことを判断するステップと、トランザクション・ログによって識別された各ノードに関しては、不揮発性記憶装置に記憶されたノードの以前のバージョンに復帰するステップとを含んでいる。
本発明の別の実施形態では、共有資源を管理する少なくとも第1のファイル・サーバと、共有資源にアクセスする第2のファイル・サーバとを有する分散型ファイル・システムにおける共有資源へアクセスする方法が付与されている。本方法には、共有資源用のキャッシュを第2のファイル・サーバにより維持するステップと、共有資源への読み込みアクセスを第2のファイル・サーバにより第1のファイル・サーバに要求するステップと、共有資源への読み込みアクセスを第1のファイル・サーバにより第2のファイル・サーバへ与えるステップと、共有資源データを前記第2のファイル・サーバにより前記第1のファイル・サーバから得るステップと、第2のファイル・サーバにより共有資源をキャッシュに記憶するステップと、を含んでいる。
本発明の別の実施形態では、共有資源を管理する少なくとも第1のファイル・サーバと共有資源にアクセスする第2のファイル・サーバとを有する分散型ファイル・システムにおける共有資源へアクセスする方法が付与されている。本方法は、第2のファイル・サーバにより共有資源用のキャッシュを維持するステップと、第2のファイル・サーバによる共有資源への読み込みアクセスを第1のファイル・サーバに要求するステップと、第1のファイル・サーバにより共有資源への読み込みアクセスを第2のファイル・サーバに対して否認するステップと、第1のファイル・サーバにより共有資源データを前記第2のファイル・サーバへ与えるステップと、第2のファイル・サーバによりキャッシュから共有資源データを省略するステップとを含む。
本発明の別の実施形態には、複数のファイル・サーバの間で共有する資源を有する分散型ファイル・システムにおけるオペレーション用のファイル・サーバが設けられている。ファイル・サーバには、共有資源と関連付けられたデータを記憶するためのキャッシュと、共有資源へのアクセスを制御する分散型ロック手段であって、作動可能に接続されキャッシュの共有資源データを選択的に記憶する分散型ロック手段と、を備えている。
(発明の実施の形態)
用語の定義について述べる。明細書本文、及び特許請求の範囲に使用されている以下の用語は、文脈上、他の意味に解すべき場合を除き、指示した意味を有するものとする。即ち、「データ記憶システム」は、適切な大型のデータ記憶装置であって、1台または複数の磁気、また磁気光学、または光ディスク・ドライブ群、並びに固体記憶装置、及び磁気テープを含むが、これらに限定するものではない。便宜上、データ記憶システムは、「ディスク」、または「ハード・ディスク」と呼ばれることもある。「ハードウェア実行サブシステム」なる語は、主なサブシステム機能はソフトウェア・プログラムの力が直接及ばないところで作動する専用ハードウェアの中で果たされるサブシステムを意味する。この種のサブシステムは、ソフトウェアの制御下にあるプロセッサと影響し合うこともあるが、サブシステム自体はソフトウェアにより直接制御されることはないことを留意すべきである。「主な」機能とは、使用頻度が高い機能のことである。
「ハードウェア加速サブシステム」とは、主なサブシステム機能が専用のプロセッサ、及び専用のメモリ、さらに(または代替的に)、特殊目的のハードウェアを使って発揮させられるものである。換言すれば、専用のプロセッサ、及びメモリは、いかなる中央処理装置(CPU)、及びCPUと関連したメモリとは異なる。
「ファイル」とは、データの論理的結合である。
「メタデータ」は、実際のファイル内容データとは対照的にファイル・オバーヘッド情報を指している。
「ファイル内容データ」は、ファイル・オバーヘッド情報が全くないファイル・データを指す。
ここに記載の内容に関し、Distributed File System and Method という表題で共有米国特許出願番号10/286,153が、Francesco Lacapra,Fiorenzo Cattaneo,Simon L.Benham,Trevor E.Willis,Christopher J.Aston の名義で同日付けで出願され、全体を参照することにより本書に盛り込まれている。
図1は、本発明の様々な態様が適用されるファイル・サーバの実施形態のブロック線図である。この種のファイル・サーバは、2001年4月19日付けで公表されたPCT出願番号WO01/28179 A2の表題が、Apparatus and Method for Hardware Implementation or Acceleration of Operating System Functions(この中の共同発明者も、同じく共同発明者である発明を説明した文書であるが)も参照することにより本書に盛り込まれている。図1は、上述のPCT出願の図3に概ね対応している。図1の中のファイル・サーバ12は、ネットワーク11とつながったサービス・モジュール13を含む構成要素を有している。サービス・モジュール13は、ネットワークからサービス要求を受け取るとともに応答し、ファイル・システム・モジュール14とつながっており、記憶アクセスに関するサービス要求を関連のファイル・システム・プロトコルに合ったフォーマットに直す(及び、要求を発出するこのようなフォーマットから、このような要求に直す)。次に、ファイル・システム・モジュール14は、記憶モジュール15とつながることによって、ファイル・システム・モジュール14の出力を、記憶モジュール15がつながっている記憶システムへのアクセスが可能なフォーマットに変換する。記憶モジュールは、記憶装置に書込み、読取られるファイル内容データ用のセクター・キャッシュを有している。前記PCT出願で説明したように、各種モジュールはそれぞれハードウェア実行でもハードウェア加速でもよい。
図2は、図1の実施形態の実行に関するブロック線図である。この実行においては、図1のサービス・モジュール13、ファイル・システム・モジュール14、記憶モジュール15は、それぞれネットワーク・インターフェイス・ボード21、ファイル・システム・ボード22、記憶インターフェイス・ボード23により実行される。記憶装置インターフェイス・ボード23は、記憶装置24とつながっており、実施の形態で用いられる記憶システムを構成している。この実行に関しては、Apparatus and Method for Hardware Implementation or Acceleration of Operating System Functionsという表題の2001年6月12日付け出願の米国出願、連続番号09/879,798に、さらに詳細に記載され、参照することとにより本書に盛り込まれている。
図3は、本発明によるファイル・システム・モジュールの実施形態のブロック線図である。ファイル・システム・モジュールの実施形態は、図1、及び図2で説明したタイプのシステムに用いることができる。各種インターフェイス用の例示的なバス幅が示してあるが、本発明はこれらのバス幅、またはどのような特定のバス幅にも限定されるものではないことに留意すべきである。
この実施形態のデータの流れは、To Disk Protocol を略して、TDPと呼ばれる上位バス311、及び、From Disk Protocolを略して、FDPと呼ばれる下位バス312によって示されている。このようなプロトコルは、普通、例えば図2の記憶インターフェイス・ボード23によって実行できる図1の記憶モジュール15との通信を指している。ファイル・システム・モジュールは、常に、データバス311、及びデータバス312とは異なる制御経路を使用し、この制御経路の中では、データバス311、及びデータバス312により伝送されるデータのポインタを用いている。データバス311、及びデータバス312は、それぞれ書込みバッファ WRBUFF、及び読取りバッファ RDBUFFを備えている。例えば、磁気テープなどへのバックアップ目的のため、図面の左部分にCOPYPATHとして確認できる、データバス312からデータバス311への2つのバッファの間にダイレクト・データ・パスが設けられている。
このファイル・システム・モジュールで個別になっているサブモジュール系列は、ファイル・システム管理に関したタスクを処理している。これらのサブモジュールは、通常それぞれ自前のキャッシュメモリを有し、サブモジュールのタスクに関したメタデータを記憶している。(メタデータとは、実際のファイル内容データとは対照的にファイル・オバーヘッド情報を指している。ファイル内容データは、上述のデータバス311、及びデータバス312を通って処理される。)これらのサブモジュールは、空きスペース割当て321、オブジェクト記憶322、ファイル・システム・ツリー323、ファイル・システム・ディレクトリ324、ファイル・システム・ファイル325、不揮発性記憶装置処理326である。
サブモジュールは、プロセッサの普通の管理下で動作するが、処理されるファイル・システム要求の内容により命じられる方法でサブモジュールの特殊なタスクを処理するよう組織化されている。具体的には、より上位のサブモジュールは連続的に左側のより遠くに位置するようにサブモジュールは階層的に配列されている。各サブモジュール左側から要求を受け取るとともに、各要求を満たし、左側へ応答を送る仕事を行う。そして、もしサブモジュールが要求を直接に満たしえない場合には、次に要求を発出して、それを右側へ送り、従属する右側のサブモジュールから回答を受け取ることができる。任意のサブモジュールは、従属のサブモジュールにより提供される回答を、同様のデータに対しての要求を再度送ることがないように、近い所のその関連のキャッシュに記憶ができる。一実施例においては、これらのサブモジュールは、適当に構成したFPGA(フィールド・プログラマブル・ゲート・アレイ)を使って、ハードウェアに実装される。各サブモジュールは、別個のFPGAを用いて実装してもよい。または、多数のブモジュールを単体のFPGAに組み入れてもよい。(例えば、ファイル・システム・ツリー323、及びファイル・システム・ディレクトリ324を単体のFPGAに組み入れることもできる)。あるいは、各サブモジュール(または、サブモジュールの組合せ)は、例えば、本目的にそってプログラムされた集積回路、または専用のプロセッサを用いて実装することができる。
本書で付与されているファイル・システムの実施形態は自然界に分布していることが分かる。この自然界での分布により、ファイル内容キャッシュとは異なるキャッシュメモリのファイル・システムと関連付けたメタデータ全てを保持することができる。この配置(配列)には、メタデータが関係するファイルのサイズ、及びファイル操作処理のスループットの増加、及びプロセッサ・オーバーヘッドの減少に関係なく、大量のメタデータをキャッシュに入れる能力を含む数多くの利点がある。
ファイル・システムの要求の処理は、例えば10秒毎に、あるユーザ設定期間よりも低くない頻度で起こるよう計画した一連のチェックポイントを図で詳細に表す。各連続したチェックポイントに関しては、以前に記憶されたファイル構造情報が直前のチェックポイントに取って替わる、ディスクに記憶した現行のファイル構造情報が記憶されている。チェックポイントには連続番号が付けられ、ファイル要求の処理を一時的にグループ化するのに使用される。
ある選択された時点のファイル・システム構造の知識を持つことは多様な目的に対し有益であるかもしれない。この能力は、現行のセーブ済みチェックポイントに関連付けされたファイル・システム構造データのユーザ・トリガ記憶を可能にすることで与えられ、以下、便宜上、保持済みチェックポイントと称し、以下に詳細に述べる。保持済みチェックポイントは、本質的に、特定のチェックポイントにおけるファイル・システム構造の読取り専用版である。多数の保持済みチェックポイントを取得することができ、メカニズムには、選択された保持済みチェックポイントを削除、またはファイル・システムを選択された保持済みチェックポイントに復帰(例えば、ファイル・システムをカタストロフィの後に続くわかっている状態に戻る)が含まれる。
ファイル・システムモジュールの中心には、オブジェクト記憶サブモジュール322がある。この実装においては、ハードディスクに記憶される項目の全てが、形式(例えば、ファイル、ディレクトリ、空きスペースの割当情報、最後のチェックポイントを取得した後で作成され修正されたオブジェクトのリスト、最後の保持済みチェックポイントを取得した後で作成され修正されたオブジェクトのリスト、及び、あるファイルの属性情報を含む)に関係なくオブジェクトと見なし、このような項目の記憶はオブジェクト記憶サブモジュール322で取り扱われる。オブジェクト記憶サブモジュールオブジェクトに関する次のオペレーションを行うことができる。即ち、作成、削除、書込み、及び読取りである。さらに、プロセッサからの命令により、オブジェクト記憶サブモジュールはチェックポイントを作成し、また保持済みチェックポイントをも作成、保持済みチェックポイントを削除、またはファイル・システムを保持済みチェックポイントへ復帰させることができる。オブジェクト記憶サブモジュールは、ディスク上に記憶されたデータの物理的位置を追跡することにより、以下に説明する各種のデータ構造を用いて各オブジェクトと関連付けらる。オブジェクト記憶サブモジュールは、バス311の通信リンクにディスク記憶要求を送らせバス312の通信リンクによりディスク記憶回答を入手する。もし、オブジェクト記憶サブモジュールは、読取りオペレーションための要求を受け取ったら、オブジェクト記憶サブモジュールは、バス311に働きかけることで要求を直接満足させることができる。
本書のファイル・システムの実施形態が使用されている記憶システムは「ディスク」と称されるが、記憶システムは、1台または複数の磁気、また磁気光学、または光ディスク・ドライブ群、並びに固体記憶装置、及び磁気テープを含むが、これらに限定しない、適当な大量のデータ記憶構成であればどのようなものであってもよいことは言うまでもない。
空きスペース割当てサブモジュール321は、オブジェクト記憶サブモジュール322の動作に必要なデータを管理し、オブジェクト記憶サブモジュール322の影響を受けて、ディスク上のスペースの総合的割当てを探知する。オブジェクト記憶サブモジュール322から要求を受け取ると、空きスペース割当てサブモジュール321は、利用可能なブロック番号をオブジェクト記憶サブモジュールに提供する。空きスペース割当を探知するために、空きスペース割当てサブモジュールは、ディスク上のデータの各ブロックの空きおよび/または空いてない状態を示す単一ビットで、ディスクのビット・マップを確立する。このビット・マップ自体は、オブジェクト記憶サブモジュールにより処理される特殊なオブジェクトとしてディスクに記憶されている。一方では、オブジェクト記憶サブモジュールは、ディスク上で空きスペースの管理と割当の目的で、空きスペース割当サブモジュールと双方向の通信路を有し、他方では、空きスペース割当サブモジュールは、ディスク空きスペース・ビット・マップ用のデータを検索したり、更新するためのオブジェクト記憶サブモジュールとの双方向の通信路を有しているので、オブジェクト記憶、及び空きスペース割当サブモジュールの間には2つの双方向経路がある。
ファイル・システム・ファイル・サブモジュール325は、ファイルのタイム・スタンプ、ファイルの所有者、ファイルのリンク数(即ち、ファイルが所有する名前の数)、読取り専用の状態などのファイルの属性と関連付けられたデータ構造を管理する。中でも、とりわけ、本サブモジュールは、ファイルを作成する要求を取り扱い、ディレクトリを作成し、親ディレクトリのファイル名を挿入し、親ディレクトリを更新する。このサブモジュールは、次に、以下に説明する他のサブモジュールと対話を行う。
ファイル・システム・ディレクトリ・サブモジュール324は、ディレクトリの管理を行う。ディレクトリは、リスト・ファイルとして管理され、これらのファイルは、このファイルの関連付けられたオブジェクト番号と一緒に、ディレクトリと関連付けられる。ファイル・システム・ディレクトリ・サブモジュール324は、各ディレクトリの次のオペレーションを管理する。即ち、作成、削除、ファイルのディレクトリへの挿入、エントリの削除、エントリの探索、ディレクトリの内容のリスト作成である。
ファイル・システム・ディレクトリ・サブモジュール324は、ファイル・システム・ツリー・サブモジュール323と協働して効率的なディレクトリ検索を行う。従来のツリー構造はディレクトリ用に作成されるが、木の分岐を、ファイル名自体を使うのではなく、ファイル名から生成されるCRC(巡回冗長合計検査)などの擬似乱数値を使って、非アルファベット的方法で処理する。CRCは、各ファイル名に対して無作為であり、普通は、特有な傾向にあるので、通常、この方法は、ファイル名の全てが偶然類似していたとしても、木を強制的に平衡させる。このため、新しいファイル名の入ったディレクトリ一覧表を更新する際には、ファイル・システム・ディレクトリ・サブモジュール324は、ファイル名のCRCを生成し、ファイル・システム・ツリー・サブモジュール323にそのインデックスのCRCを利用するよう要求する。ファイル・システム・ツリー・サブモジュールは、ファイル名のCRCをディレクトリ表のインデックスと間連付けを行う。このようにして、サブモジュールはCRCの検索を行うとともに、インデックスを復帰させる。
ファイル・システム・ツリー・サブモジュール323は、ファイル・システム・ディレクトリ・サブモジュール324と同様の方法で働き、以下の機能を支援している。即ち、作成、削除、CRCのディレクトリへの挿入、エントリの削除、エントリの探索である。しかしながら、どの場合も、その機能はファイルではなく、CRCに関するものである。
もっともまれな場合で、2つの異なるファイル用のCRCが同じである場合があり、ファイル・システム・モジュールは、このような場合でも処理する必要がある。このような状態に対応するために、ファイル・システム・ツリー・サブモジュール324は同じCRCを有する全ファイルのリストを維持するとともに、CRCを有する任意のあるファイルから同じCRCを有する別のファイルまでのポインタを有することによって確実に維持している。(CRCが相対的にユニークであるため、これは、最終選考リストになりそうであるである。)ファイル・システム・ディレクトリ324は、任意のあるファイル用のリストの始点を維持している。
不揮発性記憶装置処理サブモジュール326は、不揮発性記憶装置(図3に示すNVRAMと称される)と、インターフェイスで連結され、停電時や他の事態において、ディスクにセーブされる予定のキャッシュ・データが実際にディスクにセーブされないよう防ぐための復帰の方法を備えている。具体的には、最後のチェックポイント(チェックポイントは図3の説明の冒頭近くで、説明済みである)において、ファイル・システム構造一式が記憶されているので、不揮発性記憶装置処理サブモジュール326のタスクとしては、最後のチェックポイントの後のファイル・システム・要求データを記憶することである。この方法においては、回復、ファイル・システム要求データの処理の次の中断は、最後の記憶されているチェックポイントからファイル・システム構造データを用い、次に、NVRAMに記憶されているその次のファイル・システム要求を再度処理することにより達成できる。
オペレーション中に、受け取ったあらゆるファイル・システム要求(未修正の要求を除く)に関して、プロセッサが、不揮発性記憶装置処理サブモジュール326に、NVRAMに要求を記憶するかどうかを伝える。そして、仮に、そのように伝えると、次に、NVRAMにその要求を記憶する。(もし、本サブモジュールが、マルチ・ノードのファイル・サーバ・システムの一部である場合には、その要求も、別のノードのNVRAMに記憶される。)サブモジュールのそばの(及び別のファイル・サーバ・ノードの任意の対になったサブモジュールのそばの)NVRAMの中に局所的に記憶装置が存在すると、サブモジュールが、判断するまで、クライアントには要求履行の受取通知は返送されない。このファイル・システム要求のキャッシング方法は、プロセッサがファイル・システム要求をNVRAMに最初に書き込み、次いでディスクに書き込む、従来のシステムとはかなり違っている。ファイル・システム要求をNVRAMにコピーする時に手間がかかるプロセッサがない(コピーは自動的に行われる。)ために、この方法は違っているのである。
NVRAMのオーバーフローを避けるために、チェックポイントは、NVRAMのデータ量が所定の閾値に達した時には、強制的にチェックポイントが発生するようになっている。チェックポイントは、以前のチェックポイントがもはや存在しない時点における、次のチェックポイントが作成されるまでに限って有効である。
ファイル・サーバ・システムをクラスター化した時に、揮発性記憶装置をスイッチを用いてミラー化し、仮想ループを得るようにしてもよい。図6は、不揮発性メモリを垂直ループ構成でミラー化した本発明の実施形態によるクラスター化ファイル・サーバ構成のブロック線図である。本図において、5つのファイル・サーバ・ノードがクラスター化されていると仮定している。(この手法は、サーバ・ノードのどのような番号ともうまくいくが、各サーバ・ノードがファイル・システム・モジュールを結合し、そして、ファイル・システム・モジュールは、不揮発性記憶装置処理サブモジュール326、指定のNV_A(項目61)、NV_B(項目62)、NV_C(項目63)NV_D(項目64)NV_E(項目65)を有する。)これらのサブモジュールはそれぞれスイッチ66を経由して、サブモジュールの中の異なる1つと接続されることにより、対応するサブモジュールに関連付けされたNVRAMに記憶されている元のファイル・システム要求データのバックアップ・コピーを、接続されたサブモジュールに関連したNVRAMが維持が可能となる。スイッチ66による接続を破線で示してあり、バックアップ・パス611は、NV_Aに関連付けられたNVRAMのファイル・システム要求データを、NV_Bに関連付けれたNVRAMによってバックアップが可能となる。同様に、バックアップ・パス621は、NV_Bに関連付けられたNVRAMのファイル・システム要求データを、NV_Cなどに関連付けれたNVRAMによってバックアップが、ループの最後の部分に達するまで、可能である。ここでバックアップ・パス651は、NV_Eに関連付けられたNVRAMのファイル・システム要求データを、NV_Aなどに関連付けれたNVRAMによってバックアップが可能である。仮に、サーバ・ノードが、非稼働となった場合には、スイッチは、稼働している他の残りのノードからループを再構成できる。
本書で説明するように、整合性のあるファイル・システム・イメージ(チェックポイントと称する)が、等間隔でディスクに記憶されており、プロセッサにより要求されたが、チェックポイントのディスクに未だ記憶されていない全てのファイル・システム変更は、不揮発性記憶装置処理サブモジュールによりNVRAMに記憶される。
システムが故障した場合には、プロセッサは、オンディスク・ファイル・システムが「クリーン」でないことを検出し、回復手順を開始する。先ず、オンディスク・ファイル・システムは、ディスクに記憶されている最後のチェックポイントで表される状態に戻される。これはチェックポイントであるから、内部的には整合性がある。しかしながら、チェックポイントを取得した後で要求される変化は全て喪失される。回復手順を完了するため、これらの変化は復旧させる必要がある。このことは可能である。何故なら、これらの変化は全てがプロセッサによって発出された要求により起きており、また、上記のように、プロセッサにより要求されたが、チェックポイントのディスクに未だ記憶されていない全てのファイル・システム変更は、不揮発性記憶装置処理サブモジュールによりNVRMに記憶されるからである。喪失した変化は、それゆえに、プロセッサによって要求されたファイル・システムの変更オペレーションの順序を、最後のチェックポイントの時から、システム故障まで繰り返すことにより回復可能である。
これを完了させるため、プロセッサはNVRAMの内容を調べ、最後のチェックポイントの時から、システム故障までのプロセッサが要求したオペレーションの全てを抽出する。次いで、プロセッサはこれらの要求をファイル・システム・ファイル・サブモジュールに再提出し、必要なオンディスク変更を行うことにより要求を満足する。ファイル・システム・ファイル・サブモジュールは、「目下の」ファイル・システム要求と、回復手順中の発出されている再提出要求とを識別しない。双方とも同一の方法で(再提出要求がそこにないため、それがNVRAMにログされない場合を除いて)処理される。
この手順で厄介なことは、ファイル(またはディレクトリ)参照を行うファイル・ハンドルに関することである。普通のオペレーションでは、ファイルが作成される時には、ファイルはファイル・ハンドルに割り当てられる。そのファイルを引き続き参照する必要があるオペレーションはいずれもこのファイル・ハンドルを用いてそのようにしている。従って、例えば、次のような一連のオペレーションが行われる。即ち、
(1)プロセッサはファイル作成を要求する。
(2)ファイル・システム・ファイル・サブモジュールはファイルを作成しファイル・ハンドルAを返す。
(3)プロセッサはデータの書き込みをファイル・ハンドルAに要求する。ファイルAにデータを書き込むよう要求する?
(4)ファイル・システム・ファイル・サブモジュールは書き込みを実行する。
本例においては、手順(1)及び(3)の2つの要求は、NVRAMに記憶される。
ここで困った問題が持ち上がってくる。それは、上述の回復手続き中にファイル・システム・ファイル・サブモジュールが割り当てたファイル・ハンドルは、当初割り当てられたファイル・ハンドルとは異なる恐れがあるからである。従って、例えば、NVRAMに記憶されるオペレーションは、上記の例と同じものかも知れない。しかしながら、回復中においては、手順(2)でファイル・システム・ファイル・サブモジュールが戻すファイル・ハンドルはBかも知れない。この場合には、ファイル・ハンドルAは、ファイル・システム・ファイル・サブモジュールによって認識されていないので、ファイル・ハンドルAを使った手順(3)のデータの書き込みはできていない。
この問題を解決するため、ファイルが作成される度に、プロセッサが明確にNVRAMの中に割当て済みハンドルのログを行う。(これは不揮発性記憶装置処理サブモジュールへの特別要求によって行う。)従って、回復時のNVRAMの内容は、以下の通りである。即ち、
(1)プロセッサはファイル作成を要求する。
ここで他の無関係要求に対するより多くのエントリがあるかもしれない。
(2)作成ファイルをファイル・ハンドルAに割り当てる。
ここで他の無関係要求に対するより多くのエントリがあるかもしれない。
(3)プロセッサはデータの書き込みをファイル・ハンドルAに要求する。
従って、回復手続き中に、作成オペレーションに遭遇した場合には、プロセッサはNVRAMを探索して割当て済みハンドルを探し出す。そして、プロセッサは作成要求を発して、(潜在的に異なる)ハンドルを得る。この時点以降は、再生オペレーションにおける作成済みファイル用の以前のハンドルのリファレンスは全て、作成済みファイル用のハンドルで置き換えられる。
例えば、前記の回復手続きは以下のように進められる。即ち、
(1)プロセッサは、ファイル作成要求を再度提出する。
(2)ファイル・システム・ファイル・サブモジュールはファイルを作成し、ハンドルBを戻す。
(3)プロセッサは、以前の割当て済みハンドルを探索し、以前に割当て済みハンドルがハンドルAであるのか判断する。
(4)プロセッサは、ハンドルAのNVRAMのその後のリファレンスはどれもがハンドルBで置き換えられるべきであるとこに留意する。
(5)プロセッサは、ハンドルAをハンドルBと取替え、データの書き込みをファイルBに要求する。
(6)ファイル・システム・ファイル・サブモジュールは書き込みを実行する。
通常の実施形態では、あるファイル・システム要求に応ずる自動応答機構を利用している。図4は、ソフトウェア制御を介在させずにファイル・サービス・モジュールによってネットワーク・リクエストへの自動応答が可能となる本発明の実施形態への制御フローの使用方法を示すブロック線図である。図4には、図1と同様に、サービス・モジュール13、ファイル・システム・モジュール14、記憶モジュール15があり、サービス・モジュール13、及びファイル・システム・モジュール14は、ソフトウェア41の制御を受けており、記憶装置モジュール15は記憶装置42とつながっている。ブロック間の接続は、データ流れではなく制御流れを表している。サービス・モジュール13がファイル・サービス要求を識別すると、要求は通常はサービス・モジュール13からソフトウェア制御41へ送られ、例えば、安全や他の複雑なタスクを処理する。次に、ソフトウェア制御41の下で、要求はファイル・システム・モジュール14により処理される。他方において、ファイル・システム要求への回答は、これは必ずしも複雑ではないが、ソフトウェア制御41を経て返送されるのではなく、制御流れ43を経由して、ファイル・システム・モジュール14から、直接サービス・モジュール13へと返送される。最終的に、ソフトウェア制御41には、要求が満足されたことが伝えられる。
共通の記憶装置にアクセスするファイル・サーバ・ノードのクラスターを採用した構成においては、多数のノードが共通の記憶装置の配置に関する矛盾するタスクを行おうと努めるかもしれない事例に取り組む必要がある。図5は、本問題を扱う本発明の実施形態によるセクター・キャッシュ・ロッキングを具体化したクラスター化ファイル・サーバ構成のブロック線図である。本実施形態において、ファイル・サーバ・ノードA(項目52)、及びファイル・サーバ・ノードB(項目53)は、双方ともクライアント51とつながっており、各サーバ・ノードがディスクA(項目54)、及びディスクB(項目55)の両方にアクセス(即ち、ディスクから読み取り、書き込み)できるように構成されている。(ここで、以前に説明した方法に類似した方法において、「ディスク」なる語は、任意の記憶装置識別子であるとともに、数枚のディスクの用途、例えば、または1台のディスク・ドライブ上の特別領域の用途を含んでいる。記憶装置のモードは、磁気、及び光磁気に適したどのようなものでも含むこれに限定するものではない。)
本実施形態においては、各サーバ・ノードは、セクター・レベルで、ディスクA、及びディスクBのそれぞれのセークター・キャッシュを維持している。このような状況のもとでは、各サーバ・ノードがディスクの書き込みを処理する場合のキャッシュ整合性を得る方法に関する問題を解決する必要がある。この問題は次のように処理する。ある任意のディスクについては、サーバ・ノードの1つだけがディスクに書き込める。(クライアントはディスクに、またはサーバ・ノードを経由して、ディスクに書き込めるが。)例えば、図5においては、サーバ・ノードAだけがディスクAに書き込めるとともに、サーバ・ノードBだけがディスクBに書き込める。各サーバ・ノードは、サーバ・ノードが書き込むディスクのロック・マネージャを実行する。ディスクは32キロバイト・ページに分割される。各ページは3つの状態の1つにできる。即ち、キャッシュされていない状態、読み取りがロックされている状態、または書き込みがロックされている状態である。
例として、サーバ・ノードAがディスクBの読取りをキャッシュに入れたいと希望している場合を想定する。従って、サーバ・ノードAは、先ず、サーバ・ノードBと連絡をとる必要がある。サーバ・ノードAが読み取りを希望しているページの読取りロックを要求する。サーバ・ノードAが読み取りロックの状態になると、サーバ・ノードAはデータを読み取り、データをサーバ・ノードAのセクター・キャッシュに置く。さて、サーバ・ノードBが同じページの書き込みを希望している場合を想定してみよう。サーバ・ノードBには、サーバ・ノードAからこのページの読取りロックを有している旨、連絡済みである。従って、サーバ・ノードBはサーバ・ノードAと連絡を取って、サーバ・ノードAの読取りロックの中断をサーバ・ノードAに命令する。次に、サーバ・ノードBは、サーバ・ノードAからの読取りロックが解除された旨の連絡を待つ。(すると直ぐに、サーバ・ノードAは、サーバ・ノードAのキャッシュから、そのページを一気に消去する。)次に、サーバ・ノードBは、書込みロックを有し、ページに書き込める。もし、サーバ・ノードAが、再び、ページを読み込みたいと希望する場合には、サーバ・ノードAは、読取りロックを要求する。サーバ・ノードBは、読込みロックは否認するが、サーバ・ノードBのキャッシュは更新する旨の応答をして、サーバ・ノードAにキャッシュに入ったデータを転送する。サーバ・ノードAは、このデータをキャッシュに入れられないので、読取りロックを否認される。次に、読込みロックは、ディスクBがディスクBのキャッシュから更新される場合に(即ち、次のチェックポイントにおいて)サーバ・ノードAに与えてもよい。このように、上記の実行により、分散したロック・マネージャが付与され、ハードウェアにおいても、同様のことが行われる。
1.オブジェクト記憶構造
1.1 オブジェクト記憶データ構造の概要
オブジェクト記憶サブモジュールは、各種のファイル・システム・オブジェクトを維持し記憶するために用いられる。ファイル・システム・オブジェクトはファイル・オブジェクト、ディレクトリ・オブジェクト、空きスペース割当てオブジェクト、修正済みチェックポイント・オブジェクト・リスト・オブジェクト、修正済み保持オブジェクト・リスト・オブジェクト、及びmノード・オブジェクトを含んでいる。ファイル・オブジェクトは、ユーザ・データ、及びワープロ、または表計算ファイルなど関連属性の記憶用ファイル・システム・ファイル・サブモジュールによって作成される。ディレクトリ・オブジェクトは、ディレクトリ情報の記憶用ファイル・システム・ディレクトリ・サブモジュールにより作成される。空きスペース割当てオブジェクトは、空きスペース割当情報の記憶用の空きスペース割当サブモジュールにより作成される。修正済みチェックポイント・オブジェクト・リスト・オブジェクト、及び修正済み保持オブジェクト・リスト・オブジェクト(双方とも、以下でさらに詳細に述べる。)は、それぞれチェックポイント、及び保持済みチェックポイントに関する情報の記憶用オブジェクト・記憶サブモジュールによって作成される。mノード・オブジェクト(以下にさらに詳細に説明する)は、ファイル、またはディレクトリ・オブジェクトに関連付けられた超過ファイル属性を保持するための特殊なオブジェクト(即ち、以下に述べる、ファイル、またはディレクトリ・オブジェクトの中の所定領域に収まれないファイル属性である。例えば、CIFSの安全に関する属性などのファイル属性である。)であって、ファイル、またはディレクトリ・オブジェクトのクリエータによって作成され、これは、ファイル、またはディレクトリ・オブジェクト内にmノード・オブジェクトのリファレンスを含んでいる。
以下にデータ構造の概要について述べる。この構造は、ディスクに記憶される位置を追跡するオブジェクト記憶サブモジュールが採用している「オーノード(onode)」と呼ばれているものである。データ構造の他の詳細については、後で説明する。(これらのデータ構造は、本発明の典型的な唯一の実施形態であることに留意すべきである。)
オブジェクトは、ルート・オーノード、及び随意に多数の間接、及び直接オーノードから作られている。また、チェックポイント、及び保持済みチェックポイントを制御するのに使用される、多数の他のオンディスク・オブジェクト、及び構造も存在している。それらの全てを以下に説明する。
オーノードには、ルートオーノード、直接オーノード、間接オーノードの3種類がある。(例えば、ファイル、またはディレクトリなどの)オブジェクトを作成する場合には、対応するルート・オーノードが作成される(実際は、以下に述べる通り、1対のルート・オーノードである)。各ルート・オーノードは、ディスクの所与のセクター番号に記憶され、セクター番号は、独自にルート・オーノード、及び、結果的にルート・オーノードの対応オブジェクトをも識別する。通常の実施形態においては、各セクターは512バイトであるので、ルート・オーノードのサイズは同じく512バイトに限定される。明らかになってくるように、本ファイル構造の実装の態様は、基本型Unix(登録商標)ファイル構造に類似しているが、従来のUnix(登録商標)システムは、間接ポンインタの固定番号のみを有している。そして、ポンインタの固定番号を用いると、ファイル・サイズの限界に達する。さらに、従来のUnix(登録商標)システムは、特に、ファイルにのみ、かかる記憶技術を用いており、本発明の種々の実施形態の方法におけるオブジェクト記憶モデルも採用していない。
ルート・オーノードは、実際にはペアで作成される。ルート・オーノードはセクター番号で識別されるため、それのペアの他の構成要素は、その次に高いセクター番号となる。ペアの構造は、ペアの一方のルート・オーノードが、チェックポイントに対して有効であるとともに完全となるよう使用される。ペアの他方の構成要素の対応オブジェクトが修正されると、それは次いで更新され、オブジェクトの新しい状態を反映する。普通の処理においては、ペアのオーノードの両方の構成要素が読み取られ、チェックポイント番号がより高い要素が現在のものとなる。
ファイル・システム要求の多くはディスクの使用方法を含んでいる。ブロックの関するこのような使用方法について便宜的に述べる。ブロックは、特殊なデータ記憶ユニットであり、普通の実施形態においては、規模が、2キロバイトから64キロバイトの範囲であることが多い。
ルート・オーノード・データ構造は、識別するチェックポイント番号を含み、このチェックポイントの下で、オブジェクトの本バージョンが作成される。また、ルート・オーノードにおいて、データ構造は、ルート・オーノードがメタデータを供給しているオブジェクトの型を識別するパラメータである。オブジェクト型は、例えば、空きスペース、ファイル、またはディレクトリのいずれであってもよい。さらにオブジェクト型以外に、ルート・オーノードは、また、ブロックのオブジェクト長さのパラメータを有している。
別のルート・オーノード・パラメータは再使用カウントである。オブジェクトが削除されると、空きスペースへ戻らずに空きルート・オーノードの待ち行列に進むため、再使用カウント・パラメータが使用される。所与のルート・オーノードが新しいオブジェクトに割り当てられると、関連付けられたルート・オーノード再使用カウントは増加する。再使用カウントは、オブジェクトに関連付けられたファイル・ハンドルの一部である。ルート・オーノードが再使用される度に再使用カウントを増加させることにより、ルート・オーノードの旧バージョンで作成されるファイル処理を用いたファイル要求を識別し、排除することが可能である。
上記に提案の通り、ルート・オーノード一連のポインタを担持している。これらポインタの1つは、直前を先行するルート・オーノードのバージョンいずれかを指すポインタである。もし、保持済みチェックポイントが関連のチェックポイント期間中に取得されたことが分かった場合には、直前を先行する当のルート・オーノードのバージョンが記憶されていた可能性がある。そしてポインタは、ルート・オーノードのそのような直前のバージョンのセクター番号を識別する。
ルート・オーノードが対応する実際のデータについては、ルート・オーノードのオブジェクトと関連付けられたデータの各ブロックを指す別個のポインタがある。データブロックが18個までの位置は、ルート・オーノードに記憶されている。18ブロックを越えるデータについては、直接オーノードがさらに必要となる。その場合には、ルート・オーノードは、また、直接ポインタを指すポインタを有し、これはルート・オーノードの中で、ディスクのセクター番号で識別される。
ルート・オーノードのように、直接オーノードは、チェックポイント番号を識別するパラメータを含んでおり、これを基準にして直接オーノードが作成される。直接オーノードは、直接オーノードのルート・オーノードに対応するオブジェクトに関連するブロックデータ約60、または61個までの位置を記憶するために配置されている。
最初の直接オーノードが充分に活用されデータ・ブロックを識別すると、次に、1つ、または複数の間接オーノードが使用されて最初のオーノード、ならびに、オブジェクトに対応するデータのブロックを有する追加の直接オーノードを識別する。このような場合においては、ルート・オーノードは間接オーノードを示すポインタを有し、間接オーノードは、対応する直接オーノードを指示するポインタを有している。間接オーノードが充分に活用されると、追加の介在する間接オーノードは、必要に応じて使用される。この構造により、ファイルの断片化とは関係なく、ファイルの一部の識別が迅速にできるようになる。
直接、及びルート・オーノードの構造は、なかでも、ファイルが最初に作成される時、通常0値に設定する大きなファイルを迅速に作成することができる別の特徴を備えている。この特徴は、対応するブロックが0値を有するかどうかを識別する各ルート、及び直接オーノードの各ブロックポインタごとのフラグである。
また、大きいファイルの迅速な作成が容易になる関連の特徴もある。いずれのモードでも、ブロックまたは他のオーノードを指すポインタはいずれもブロックまたはオーノードが実際に作成されたかどうかを識別するビットを有している。関連のブロック、及びオーノードが未だ作成されていない場合には、ブロック、及びオーノードは必要に応じて作成され、書き込み要求に応じ、そして、その結果、割り当てビットが切り替わる。ブロックの作成には、空きスペース割当てサブモジュールからのスペースの割り当て、ブロックへのデータの書き込み、及び関連のオーノードのビット・フラグの設定が必要なことに留意されたい。
回復のために、現行のチェックポイントで修正されたオーノード全部のトランザクション・ログも記憶されている。さらに、修正済みルート・オーノードを全部有するディスク上でトランズアクション・ログが完全に終わるまで、ルート・オーノードは、ディスクには書き込まれない。(ルート・オーノードにはこのように書込みが遅延する特徴がある。他のオーノードにはないし、ある必要もない。何故なら、これらは、ルート・オーノードのみを経てアクセスされるからである。)現行の無効チェックポイントに関する回復モードにおいては、仮にオーノードが現行チェックポイントで修正された場合には、以前のチェックポイント値が利用される。(オーノードの内容が、トランザクション・ログと一緒にディスクに記憶されるとともに、メタデータ・キャッシュのフライに維持されることに留意されたい。)
オーノード構造もまた、オーノード構造に関するディスク書き込みをさらに減らす方法で、本実施例で確立されている。結局、オーノード構造は、ファイル内容のみならず、ファイル属性の記憶装置も収容しなければならない。ファイルの属性は、ファイル規模、ファイル作成時間、及び期日、ファイル修正時間、及び期日、読出し専用状況、アクセス許可、その他を含む多様なパラメータを含んでいる。この関係は、ルート・オーノードは未だディスクに書き込まれていないため、ルート・オーノードの内容変更は所与のチェックポイントで頻繁に行われるという事実を利用している。(ルート・オーノードのディスク書き込みは遅延するということを思い起こすだろう。)従って、ルート・オーノードの一部は、ファイルの属性を記憶するために保存される。
より一般的に、ファイルの属性の記憶装置用の以下の構造を定義する。即ち、
イーノード(enode)(更新用の小さなオバーヘッド、容量限定的)。本構造は、ルート・オーノードで定義され、128バイトである。
アイノード(inode)(更新用の中程度のオバーヘッド、イーノードよりも大きい容量を備える)。このアイノードは、ファイルまたはディレクトリを表す第1のnバイト(通常は、0〜64キロバイト)のオブジェクトである。(そして、従って、オブジェクト用のルート・オーノードが示す場所にあるディスクに記憶されている。)このアイノードは、安全の記述子として、CIFS目的で、このような属性情報に用いられる。
エムノード(mnode)(高価、更新用オバーヘッド、容量は無限に近い)これは、データ記憶用専用のオブジェクトであり、従って、ディスクに自前の記憶場所を有する。オブジェクトは、イーノードで(あるいは、アイノードで)識別される。
図3の実施形態に関したオブジェクト記憶装置について、以下に、さらに詳細に説明する。
1.2 ルート・オーノード
各ルート・オーノードは、長さが512バイトある。以下の情報がルート・オーノードに記憶されている。
・オブジェクトの本バージョンを作成するチェックポイント番号
・オブジェクトの本バージョンのデータ長
・本オブジェクト用ランリストに使用される間接参照のレベル数
・オブジェクトの型、これは主に、オブジェクトにアクセスするために要求が届いた時に判断が正しいかどうかのチェック用として用いられる。
・本ルート・オーノードの使用頻度を伝えるための再使用カウント
・保持済みチェックポイント用に作られた旧ルート・オーノードバージョンを指すポインタ(もし、1つある場合)
・新ルート・オーノード・バージョンを指すポインタ(もし、これが、保持済みチェックポイント用に作られたコピーの場合のみに有効)
・データブロック記述子が19個まで。各データブロック記述子は、データブロックを指すポインタ、データが作成されるチェックポイント番号、ブロックが零補充されているかどうかを伝えるビットを含む。
・直接オーノードか間接オーノードかのいずれかを指す単一ポインタ
・本オブジェクト用の128バイトのイーノード・データ
・巡回冗長検査CRC、及びルート・オーノードが有効かどうかを調べられる各種判断の倍長語
所与オブジェクトについては、ルート・オーノードの現行の有効バージョンを記憶できる場所が2箇所ある。これらの場所は、(obj_num*512)または((obj_num*512)+512)のいずれかのボリュームにオフセットされたビットの所にある。いずれが最も最新かを探すため、双方とも読み取る必要がある。全ての認証検査に合格するだけでなく、後の作成チェックポイント番号をも有するものが最新の有効バージョンである。
以下の第4節で述べるように、オブジェクトは、チェックポイントを取得する度に作成されるルート・オーノードのコピーを含んでもよい。旧ルート・オーノードを指すポインタ、及び新ルート・オーノードを指すポインタにより、保持済みチェックポイント用に作成された現行のルート・オーノード、及びルート・オーノードのコピーのいずれも含む、双方に好まれるルート・オーノードのリスト作成が可能である。双方に好まれるリストにより保持済みチェックポイントの作成、及び削除が容易となる。
1.3 間接オーノード
間接オーノードは、ルート・オーノードと直接オーノードとの間の間接参照レベルを提供するものである。各間接オーノードは、長さが1キロバイトである。間接オノード1対を、最小のディスク・ブロック・サイズ、2キロバイトを有するディスク・ブロックにパック可能であるが、各間接オーノードは、通常、簡易化のために別個のディスク・ブロックに記憶されている。
間接オーノードには、次の情報が記憶されている。
・間接オーノード作成チェックポイント番号
・間接または直接オーノードのいずれかを示す122までのポインタ
・巡回冗長検査CRC、及び間接オーノードが有効かどうかを調べられる各種判断の倍長語
ルート・オーノードと同様に、現行の有効間接オーノードは、間接オーノードの一番最新のバージョンを含むペアの間接オーノードの1つと一緒に、ペアで保持される。しかしながら、ルート・オーノードと違って、現行の有効な間接オーノードは、直接現行ルート・オーノードから示されているので、どちらが一番最新かを知るために間接オーノードの双方を読み取る必要はない。
1.4 直接オーノード
直接オーノードはディスクのデータ・ブロックを指す直接ポインタを付与する。各間接オーノードは長さが1キロバイトであり、このことは直接オーノードのペアは現行の最小データ・ブロック・サイズの2キロバイトに適合することを意味する。
直接オーノードには、次の情報が記憶されている。
・直接オーノード作成チェックポイント番号
・データブロック記述子が62個まで。各データ・ブロック記述子は、データブロックを指すポインタ、及びデータを作成するチェックポイント番号、及びブロックが零補充されているかどうか伝えるビットを含む。
・巡回冗長検査CRC、及び間接オーノードが有効かどうかを調べられる各種判断の倍長語。
1.5 動的スーパーブロック
ディスク上では2つの動的スーパーブロックがあり、それらの1つだけを、任意の時点における最も最新と見なす。これらは、ディスクのチェックポイントの状態を記録するのに用いる。
各動的スーパーブロックには、次の情報が記憶されている。
・動的スーパーブロックと関連付けられたチェックポイント番号
・本チェックポイント用修正済みチェックポイント・オブジェクト・リスト・オブジェクトの処理
・最後に保持したチェックポイントからの修正済み保持オブジェクト・リスト・オブジェクトのオブジェクト番号
・本チェックポイントの状態。状態として、WRITTEN_OBJ_LIST、及びCHECKPOINT_CREATED が予想される。
・巡回冗長検査CRC、及び間接オーノードが有効かどうかを調べられる各種判断の倍長語
連続するチェックポイントは、使用する動的スーパーブロックのチェックポイントの間で交互に繰り返している。ソフトウェアがボリュームを開くと、ソフトウェアは、動的スーパーブロックの両方を読み取る必要がある。CHECKPOINT_CREATEDと印されたボリューム状態を有し、判断が正しいかどうかの全てチェックに合格した最後のチェックポイント番号の付いている一方が、本ボリュームの最後の有効なチェックポイントを識別する。OBJ_STORE OPEN_VOLUMEコールは、オブジェクト記憶サブモジュールが、どちらの動的スーパーブロックを初めに使用すべきかを識別する。これは、最も最新のチェックポイントを特定しなかった方となる。
1.6 修正済みチェックポイント・オブジェクト・リスト・オブジェクト
各チェックポイントの開始において、修正済みチェックポイント・オブジェクト・リスト・オブジェクトが作成される。このチェックポイントの一部として異なるオブジェクトが作成され、修正される度に、そのオブジェクト番号は、修正済みチェックポイント・オブジェクト・リスト・オブジェクトに書き込まれるため、チェックポイントが作成された時には、そのチェックポイントで作成された、または修正されたオブジェクトを全てリストにしたオブジェクトが存在する。
1.7 修正済み保持オブジェクト・リスト・オブジェクト
各保持済みチェックポイントの開始において、修正済み保持オブジェクト・リスト・オブジェクトが作成される。保持済みチェックポイントが作成された後で異なるオブジェクトが作成され、または修正される度に、並びに次の保持済みチェックポイントが取得されるまで、そのオブジェクト番号は修正済み保持オブジェクト・リスト・オブジェクトに書き込まれる。
2.オブジェクト動作の基本
2.1 オブジェクト作成、及び削除
オブジェクトが(WFS API OBJ_CREATE callを用いて)初めて作成される場合、オブジェクトは、間接オーノード、直接オーノード、またはデータ・ブロックのいずれかを指すポインタがないルート・オーノード(実際は、ルート・オーノードのペア)しか持っていない。
1つだけ留意すべきことは、一旦、ディスク・ブロックがルート・オーノードとして割り当てられると、そのディスク・ブロックは、他のどれにも絶対に用いてはならないことである。何故ならば、ルート・オーノードに対して戻された処理は、ルート・オーノードのディスク上でセクター・オフセットであるオブジェクト番号を含むからである。もしも、オブジェクトが削除され、次いで、クライアントが処理をキャッシュに入れたままで、ファイル用の別の要求を携えて入って来た場合、オブジェクトの記憶が出て行って、オブジェクト番号で指定される位置でディスクのデータを読み取ることになる。もしも、ディスク・ブロックが再使用されていたとしたら、ディスク・ブロックは、あらゆる種類の問題を引き起こすルート・オーノード(または、実際に新しいルート・オーノードである)になると思われる。
この問題を乗り越えるために、次の3項目を行う。
1. 仮にクライアントが再びそのオブジェクトを読み取ろうとしても、オブジェクト記憶にはオブジェクトは削除されていることが分かるよう、ルート・オーノードが削除された場合には、そのオブジェクト型をディスクの上にOBJ_TYPE_DELETEDとして設定する。
2. オブジェクトが削除される時には、オブジェクトのルート・オーノードが使用しているディスク・スペースを空きスペース割り当て制御装置へ戻さない。代わりに、削除されたルート・オーノードは空きルート・オーノードのリンク・リストに保持する。(データ・ブロックと違って、ルート・オーノードがペアで配置されているため、これらの空きになったデータブロックを、チェックポイントが取得される前に、再利用するのが安全であることを留意されたい。)オブジェクトが作成された時には、空きルート・オーノードは、それが利用できれば使用する。空きルート・オーノードが利用できない場合に限り、ルート・オーノードの新ディスク・スペースが割り当てられる。
3. ルート・オーノードが最初新しく割り当てられた空きスペースで作成された場合には、ルート・オーノードには零の再利用カウントを与える。ルート・オーノードが新しいオブジェクト用に再利用される度に、再利用カウントは増加する。再利用カウントはクライアントへ戻す処理の一部を成している。このことは、再利用されたルート・オーノードを参照した以前の処理は、再利用カウントが間違っているため、無効として削除されることを意味している。
2.2 オブジェクト・データ作成
データが作成される時に、そのデータは初めに、ルート・オーノードから直接示されたデータ・ブロックに入れられる。これは、図7の線図に示してある。他のオーノードがないルート・オーノードの用法を示す。この線図、及び以下の全ての線図において、簡略化のために、ルート・オーノード、及び直接オーノードはデータ・ポインタ2個のみで示され、また、間接オーノードは間接オーノード・ポインタ、または直接オーノード・ポインタ2個のみで示されていることに留意されたい。
一旦、直接ブロック・ポインタの全部が満たされると、次に、直接オーノードAが、ルート・オーノードから直接オーノードへのポインタによって作成される。図8は、この直接オーノードAを有するルート・オーノードを使用した模様を示している。ルート・オーノードは、直接、または間接のオーノードのいずれかを指す1本だけのポインタを除き、多数のデータ・ブロックを有していることに留意されたい。
もし、オブジェクトの中のデータが次第に直接オーノードの中のデータ・ポインタの全てを満たすようになってくると、図9に示すように間接オーノードBが作成される。図9はこの間接オーノード、及び直接オーノードを有するルート・オーノードを使用した模様を示している。直接オーノードAを指していたルート・オーノードの中のポインタは変更されて、間接オーノードBを指し、そして、間接オーノードBの最初のポインタは直接オーノードAを指すよう設定される。同時に新しいオーノードCが作成されて、これも、間接オーノードBから指される。データが多く作成されるに従い、直接オーノードも多く作成され、それらの全ては、間接オーノードから指される。
一度、間接オーノードBの直接オーノード・ポインタの全てが使用されると、別のオーノードDが作成され、これはルート・オーノードと最初の間接オーノードBの間に挿入される。他の間接オーノードE、及び直接オーノードFも、作成されて、より多くのデータ・ブロックが参照できるようになる。これらの状況は図10に示してあり、ここではルート・オーノードと直接オーノードの間に置かれた多数の間接オーノード層の用法を図示している。
直接オーノード、及び間接オーノードを追加することにより、さらに多くのレベルの間接参照を作成するこの方法は、繰り返されて、オブジェクトが含む大量のデータを収容する。
オブジェクトのアイノード部分は、オブジェクトのデータ部分と同様、オブジェクト記憶サブモジュールによって処理されるということに留意すべきである。オブジェクト記憶サブモジュールは、アイノード部分とアイノード部分を区別せず、アイノード部分に自動的な割当も行わない。逆に、データがオブジェクトに追加されるので、オブジェクトを作成、または修正する構成要素(通常は、ファイル・システム・ファイル・サブモジュール、またはファイル・システム・ディレクトリサブモジュールなどのオブジェクト記憶サブモジュールより上流にあるサブモジュール)が、アイノードにどれだけのスペースを残すかを判断しなければならない。
2.3 オブジェクト・データ削除
データをオブジェクト、及びデータ・ブロックから削除され、直接オーノード、及び間接オーノードはもはや不要となるので、空きスペース割り当て制御装置へ戻される。
一実施形態によれば、オブジェクトが減少するに従い、残りの全ての直接オーノード、及び間接オーノードが空いてくる、ルート・オーノードの直接ブロックポインタを経由して、オブジェクトの全てのデータを参照できるまでの間接参照のレベル数、及び間接参照のレベルは零に設定される。
2.4 零の補充
もし、ファイルへの書き込みがなされ、これが、現行のファイルの終端を超えてスタート・オフセットを有している場合には、新しい書込みデータの現行終端と開始との間のファイルの不定部分は零で埋める必要がある。オブジェクトの長さが現行の長さより長く設定されている場合も同じことが起こる。
これは、もしファイルが作成され、長さが、例えば、1ギガバイトに、設定された場合には、特に問題となる。直接実装の場合、これには、ファイルに割り当てられたディスク・ブロックは実際に零で書き込む必要がある。1ギガバイトのファイルの場合、10秒程度掛かると思われる。1テラバイトでは、3時間程度掛かる。
本発明の実施形態では、この問題は、そのブロックが零補充されたかどうかを伝える各データ・ブロック・ポインタを備えたビットを有することで、避けられる。もしも、オブジェクト記憶サブモジュールがこのビットが設定されるのを確認しておれば、オブジェクト記憶サブモジュールは、ディスク上では、このブロックが全く違うものを含んでいるかも知れないが、このブロックを零で補充すべきことを認識している。もし、ブロックが読み取られている場合には、オブジェクト記憶サブモジュールは、それのディスクに書き込まれる内容ではなく、このブロック用の零を戻す。もし、ブロックが、ブロック全体を補充しない書き込みで、書き込まれる場合には、オブジェクト記憶サブモジュールは先ず零を、いま書き込まれていないブロック全部に書き込み、このブロック用の零を補充されたビットをリセットする。
この場合には、ディスク・ブロックは零で補充されていないが、ディスク・ブロックはファイルの零を補充された部分の全てに対して割り当てられる。
2.5 スパース・オーノード構造
一旦、零の補充問題が解決すれば、ある非常に大きな値へのオブジェクトの長さ設定に関する次の問題は、データ・ブロックを割り当て、及び必要な直接オーノード構造、及び間接オーノード構造の作成に掛かる時間である。ディスク・ブロック・サイズが4キロバイトの場合で、1テラバイトのオブジェクトには、ほぼ4百万の直接オーノード、ならびに、これより少ない間接オーノードが必要になる。ディスクへの書き込みには、約40秒掛かると思われる。また必要なデータ・ブロック全部の空きスペース割り当て、及び空きスペース・ビットマップの次の更新がこの時間に大きく加わる。もし、チェックポイントがファイル作成が始まった直後に取得されるのであれば、システム全体は、この全時間中、(どのボリュームに対しても)要求に応じられなくなる。
本発明の実施の形態においては、2つの面を有する方法によって解決する。解決策の第1の態様は、ファイルの零の補充部分のディスク・ブロックを実際に割り当てないことである。このことは、オブジェクト記憶が、零の補充ブロックへの書き込みを確認する時に、オブジェクト記憶は最初に、ディスク・スペースをそのブロックに割り当て、及びディスク・スペースを指すポインタを関連のオーノード構造に置かなければならない。
第2の態様は、第1の態様の上の設ける。即ち、データ・ブロックを割り当てないことに以外に、オーノード構造も作成しない。この態様を実施するため、各オーノード・ポインタは、それが指すオーノードが割り当てられたかどうかを伝えるビットを有する。もし、有していなければ、オペレーションが生じ,これにより、オーノードが有効であることが求められ、この時に限り、オーノードに対してディスク・スペースが割り当てられて、正確なポインタが挿入される。このように、巨大な零補充オブジェクトは、ルート・オーノードのみを有することになり、明らかに、非常に迅速に作成できる。
3.チェックポイント
3.1 ファイル・システム整合性概論
ファイル・システムの基本的特徴の1つに、システム故障時のファイル・システム整合性を維持する能力がある。
本書のファイル・システムの実施形態に関しては、チェックポイント機構が用いられているが、これが従来の実施形態とは異なった実装により、ファイル・システム整合性を維持している。メタデータをディスクの新しい領域に、常に書き込むのではなくて、代表的な従来のシステム同様に、ある任意のオーノード・メタデータ2コピーを維持して、これの一方のコピーは有効であり、他方は更新中とすることができる。仮に、一方のコピーが更新中にシステムが故障した場合には、システムは、他のコピーに復帰できるため、有効であると保障される。ユーザ・データについては、システムは、ユーザによりトリガーされたファイル・システム・データ構造セーブの整合性、または高い性能、及びファイルの非断片化を与えるために、それをディスクの新しい領域に常に書き込むのか、または、既存データに上書きするのかの選択を、オブジェクト・本位で、有することできる。これに関することは全て、次節で詳細に述べる。
3.2 ユーザ・データ処理
ユーザ・データの処理はメタデータの処理法に影響するので、先ず、ユーザ・データの処理について考察する。
オブジェクトのルート・オーノード、間接オーノード、または直接オーノードに含まれないものの意味を、先ず、「ユーザ・データ」で定義することが大切である。オブジェクト記憶へ入れられるユーザ・データは、本書の実施形態のファイル・システムの別の部分へ入れる(ディレクトリ・リストや空きスペース・ビットマップなどの)メタデータであってもよいお。このようなデータの場合、例え、NVRMの内容が喪失していたとしても、ディスクに書き込まれるファイル・システムが常に整合性があることを確実にするために、チェックポイントにおけるディスクのデータが整合性があるのか確認することが重要である。
ルート・オーノードは、遅延書き込みコマンドを用いて、常に記憶モジュールに書き込まれる。遅延書き込みコマンドには、タグ番号が付けられ、コマンドに関連つけられたデータは、タグ・フラッシュが正確なタグ番号で行われるまで、ディスクには書き込まれない。本処理が行われる理由を説明したオーノード処理についての節を参照されたい。これに関しての1つの問題は、記憶モジュールのセクター・キャッシュは、それがシステム全体をロックするため、汚損したルート・オーノードで絶対に満たされていないことを保証する必要がることである。他のオーノード構造、及びオーノード・データについては、ルート・オーノードに用いられたものに付けられた異なるタグ番号で、普通のタグ付き書き込みが使用できる。これによって、記憶モジュールに、ディスクにそれらを書き込む前にタグ・フラッシュを待つ必要がなくなるオプションを与えると共に、セクター・キャッシュが満たされる危険性が低下する。
オーノード・ユーザ・データは、多くの異なる方法で処理できる。2つのデータ処理モード、即ち、データ・コピー・モード、及びデータ上書きモード、ならびに任意の第3のデータ処理モード、即ち、データ・ペア・モードであるが、これらについて以下に述べる。データ処理モードは、オブジェクト本位で選択が可能である。
データ・コピー・モード
本モードを用いたオブジェクトは、オブジェクト用チェックポイント化メタデータ、及び、ユーザ・データの両方が整合性があることを保証する。本モードを、実際にはシステムの他のブロックのメタデータであるユーザ・データに使用すべきである。
データ・コピー・モードにおいては、以前のチェックポイント番号で書き込まれたデータ・ブロックに書き込む時に、以下のことが行われる。
新しいデータ・ブロックを割り当てる。
旧ブロックの内容を新しいブロックにコピーする。(新しいデータがブロック全体を満たしておれば、必要ない。
新データを新ブロックに書き込む。
新ブロックを指すオーノード・データ・ポインタを更新する。
旧ブロックを空きスペース割当て制御装置に戻す。
最後の手順は、ここで、旧ブロックは未だ、以前のチェックポイントであるので、少し変わった手順であってもよい。もし、次に、空きスペース割り当てサブモジュールが、空きスペース要求に応答して、再びデータ・ブロックを使い切ってしまうならば、チェックポイント化されたデータはその時、上書きされるので、問題が起こることになる。しかしながら、空きスペース割り当てサブモジュールに対する要求事項の1つは、空きスペースとして、制御装置へ戻されるデータ・ブロックは、チェックポイントが取得された後では、決して再びなくなってはならないことである。このことによって、最後の手順は安全となる。
データ・上書きモード
本モードを用いたオブジェクトは、チェックポイント化されたメタデータが、整合性はあるが、必ずしもチェックポイント化されたユーザ・データではないことを保証する。本モードは、真実のユーザ・データ(即ち、ファイル内容)である全てのデータに用いることができる。
データ・上書きモードにおいては、以前のチェックポイント番号で、事前に書き込まれたデータ・ブロックに書き込む時に、以下のことが行われる。
新データを旧データ・ブロックに書き込む。
上書きモードにおいては、システムが故障し、NVRAMの内容が喪失された場合にデータ整合性の問題のみがあることに留意されたい。NVRAMが機能している限り、ユーザ・データは、NVRAMの内容を再生することにより、整合性のある状態に置ける。以上のこを下の表に要約する。
Figure 0004568115
データ・ペア・モード
空きスペースオブジェクトなどのオブジェクトを考慮すると、オブジェクトはファイル・システム・メタデータを含んでいるので、データ・コピー・モードを使用する必要がある。しかしながら、本モードにおいては、オブジェクトは絶えず更新されているため、細かく断片化されそうである。
この種のオブジェクトについては、モードが含まれ、それにより、あらゆるデータブロックは、オーノード構造と同様の方法でペアを有している。このことによって、データがチェックポイント化されるので、ぺアの中のブロック間で交換が可能となる。これを行うことにより、ファイル断片化の問題を軽減化し、同時に、全ての割り当てを処理する空きスペース割り当てサブモジュール、及びオブジェクトが修正されるためブロックの開放が要らなくなる。
空きスペースオブジェクトは、普通のオペレーションでは絶対にサイズを変えないため、この種の処理に特に役に立っている。
3.3 オーノード処理
既に述べた通り、あらゆるオーノード構造(ルート・オーノード、間接オーノード、直接オーノード)は実際は、ペア構造で出来ている。他に適当な名前がないため、個々の構造は、ペアの左側(LHS)、及びペアの右側(RHS)と称す。
先ずは、図11チェックポイントAのルート・オーノードの作成について、考察してみよう。これが先ず作成される場合には、ルート・オーノードをペアのLHSに書き込む。ルート・オーノードは記憶モジュール内では有効であるが、遅延書き込みを用いて書き込まれているため、チェックポイントが作成されるまでディスクに書き込まれないことに留意されたい。
チェックポイントAが作成される前に起こるルート・オーノードへの全ての変化(例えば、オブジェクトへの書き込み、オブジェクトの削除、同じルート・オーノードを用いた新しいオブジェクト作成など)は、LHSルート・オーノードの上で起こる。
チェックポイントAが作成される時には、タグ付のフラッシュが発出されることによりLHSがディスクに書き込まれる。もし、チェックポイントが取得されている間に、(チェックポイントBに反映する)さらに多くの修正がルート・オーノードに対して行われた場合には、これらの修正は、図12に示す、ルート・オーノードのRHSに書き込まれる。
一旦、チェックポイントAが作成されると、ルート・オーノードはディスクに書き込まれ、ルート・オーノード・ペアは図13に示す態様を有するようになる。
システムがチェックポイントBの作成を始めると仮定してみよう。チェックポイントBのタグ付きのフラッシュが発出されると、ルート・オーノードは図14に示す態様を有するようになる。
チェックポイントB用のルート・オーノードのRHSが未だディスクに書き込まれている間に、オブジェクトがチェックポイントCの一部として再度修正されたと、もう1度仮定してみよう。チェックポイントBが未だ作成されていないため、ディスクのルート・オーノードのLHSバージョンは、依然として最新の有効なチェックポイントAを含んでいる。従って、LHSを更新するために遅延書き込みが用いられるが、チェックポイントCが作成されるまでは、LHSへの変更のいずれも、ディスクに書き込まれないようにしなければならない。チェックポイントBが作成されている間の状況は図15に示している。
一旦、チェックポイントBが作成されると、システムはディスクにチェックポイントCのLHSルート・オーノードを書き込み始められるように思えるかもしれない。このことは、直接オーノード、及び間接オーノードにも成り立つが、ルート・オーノードについては当て嵌まらない。その理由は、もし、システムがチェックポイントCが作成される前に故障したとして、しかしながら、その時までに、ルート・オーノードのLHSがディスクに書き込まれており、次に、オブジェクト記憶がルート・オーノードのペアを読み取りに来て、どちらが最新の有効なものかを探し出したとすれば、システムは、チェックポイントCに関連付けられたLHSルート・オーノードが最も最新であると考えるだろう。これは間違いである。このため、任意のルート・オーノードがディスクに書き込まれる前に、どのルート・オーノードが修正されるのかを伝えるために、修正済みチェックポイント化オブジェクト・リストは、書き込まれる。これによって、システムは、ルート・オーノードを更新している間に故障から回復することができる。この件は、チェックポイント回復の関する節でさらに説明する。
さて、以下の全ての線図を簡略化するため、チェックポイントの作成途中の当面の状況は省略する。
システムが、図16に示すようなルート・オーノードで始動したと想像してみよう。
ルート・オーノードが今、2つのレベルの間接参照があるように延びていると仮定する。チェックポイントを取得する前に、構造は図17の態様を有している。直接オーノード、及び間接オーノードは、以前のチェックポイントが完全に作成される前に遅延書込みで全て書き込まれ、一旦以前のチェックポイントがディスク上で有効になると、タグ付き書込みで全て書き込まれていることに留意されたい。データは全てタグ付の書き込みで書き込まれている。
もし、次に、チェックポイントが取得されると、構造は図18に示す態様を取る。
さて、データ・ブロック2への書き込みが、データ・コピー・モードのオブジェクトで行われたと仮定する。この場合、新しいデータ・ブロック2が割り当てられ、オーノード構造の全てが更新されこの新ブロックを指す。チェックポイントの前の構造は、図19に示すような態様である。チェックポイント化データはオリジナルとして保存され、オリジナル・データ・ブロック2は修正されないことに留意されたい。
チェックポイント後、構造は図20に示すような態様となる。
さてここで、この新しい構造について、データ・ブロック1がデータ・上書きモードのオブジェクトで上書きされたと仮定してみよう。この場合、イーノード構造の他のものは変化していないので、(新オーノードを有する)ルート・オーノードだけが更新される。ブロック0のチェックポイント化バージョンは修正済みであるので、本モードでは、チェックポイント化されたデータは破損している。以上の動作結果は、図21に示す。
3.4 記憶モジュール・タグ番号
チェックポイント・プロセス期間中、多くの異なる記憶モジュール・タグ番号が使用されている。タグ番号の詳細は下表に示す。
Figure 0004568115
所与の32キロバイトの記憶モジュール・セクター・キャッシュ・ブロックは、1つの遅延書込みタグ待ち行列、及び1つの非遅延書込みタグ待ち行列の中でのみに存在可能である。従って、同じブロックが異なるタグ番号で書き込まれた場合にどのようになるかという問題が発生する。
動的スーパーブロックは、この32キロバイトのセクター・キャッシュ・ブロックの中で、これが唯一であるよう配列される。即ち、このことは、それが存在するセクター・キャッシュ・ブロックは、異なるタグ番号では、絶対に書き込み不可能であるということを意味している。
ある一定のバッファに関しては、同一チェックポイント番号用のルート・オーノード遅延書込み、ならびに直接及び間接オーノード遅延書込みの双方が存在する場合には、ルート・オーノード遅延書込みタグ待ち行列で終わる必要がある。
2つの遅延書込み問合せに関しては、チェックポイントN+1の遅延書き込みを開始する時には、チェックポイントNからの遅延書込みタグを持ったどのようなバッファも決して存在しないよう、チェックポイントを、その時点で、構成する。もし、それぞれに対する別の汚損したブロック・ビットマップを持った2つの遅延書込みタグ・待ち行列の中にキャッシュ・ブロックが存在する場合には、以前のチェックポイントの遅延書き込みタグ付きフラッシュが発出される前に、システムは、次のチェックポイントの遅延書き込みを開始する。これについては、以下のチェックポイント取得の節において、さらに詳細に述べる。
残り2つのタグ付き書込み構造については、チェックポイントをその時点で構成するようにシステムがチェックポイントN+1のタグ付き書き込みを開始する際にはチェックポイントNからの記憶モジュールの中にどのようなタグ付きバッファも絶対にないことである。もし、キャッシュ・ブロックに割り当てられたタグ番号を有したキャッシュ・ブロックがチェックポイントの中に書き込まれている場合には、修正済みチェックポイント・オブジェクト・リスト・タグ待ち行列でブロックが終わるかを確認する必要がある。もし、時間を短縮のために、以下に提案する性能改善が行われるならば、システムチェックポイントを取得している間に新しい要求を処理することが不可能となり、この確認はさらに複雑になる。
3.5 チェックポイント取得 − 簡易版
ファイル・システム・ソフトウェアにチェックポイント取得に必要な種々の理由がある。
・本チェックポイントに使用されるNVRAMの半分が一杯になってきている。
・記憶モジュール上のセクター・キャッシュが一杯になってきている。
・前回チェックポイントが取得されてから、所定の時間(通常10秒)が経っている。
・保持済みチェックポイントを取得する旨ユーザから要求があった。
チェックポイントを取得することが必要であったり、望ましい、または便利な時が、他にもあると思われる。
システム・レベルにおいて、チェックポイントの取得には、マウントされる各ボリュームについて、以下のオペレーションが含まれる。
1.ファイル・システムが整合状態となるようシステムの全オペレーションを停止する。
2.記憶モジュールの修正済みチェックポイント・オブジェクト・リスト・オブジェクトのタグ・フラッシュを行う。
3.修正済みチェックポイント・オブジェクト・リスト・オブジェクトが書き込まれたことを伝えるため、チェックポイント・動的スーパーブロックを更新する。
4.記憶モジュールのオーノード構造、及びオーノードデータのタグ・フラッシュを行う。
5.チェックポイントが今作成されたことを伝えるため動的スーパーブロックを更新する。
手順4が始まると直ぐに、システムは新しい問合せに応じ始める。
3.6 チェックポイント取得 - 詳細説明
チェックポイントを取得するために必要な実際のオペレーションについて以下に述べる。これらのことは図22に、要約してある。オペレーションは単一ボリュームのみをマウントした場合を仮定して説明してある。(もし、その時に、多数のボリュームあれば、各手順のオペレーションはマウントされたボリュームごとに繰り返される。)
1.ファイル・システム・ソフトウェアは、それがオペレーション一式を不揮発性記憶装置処理サブモジュールに入れるまで待つ。これが完了すると、不揮発性記憶装置処理サブモジュールから整合性の在るファイル・システムが得られる。
2.次に、本ソフトウェアは、WFS_CREATE_CHECKPOINTの問合せを不揮発性記憶装置処理サブモジュールへ入れる。本コマンドは、次のチェックポイントの作成に使用されるチェックポイント番号を含んでいる。
3.不揮発性記憶装置処理サブモジュールは、チェックポイント問合せの前の全部のコマンドがファイル・システム・ファイル・サブモジュール、及びこれのクラスター・ぺア・マシン(1つしかない場合)の双方が入れられるまで待ち、自前のNVRAMにこれらのコマンドを全て記憶する。
4.不揮発性記憶装置処理サブモジュールは、ソースとして不揮発性記憶装置処理サブモジュール、及び宛先としてファイル・システム・ファイル・サブモジュールを有する新しいチェックポイント・コマンドを生成する。不揮発性記憶装置処理サブモジュールは、次に、プロセッサからの多くの要求の処理が始められる。これらは、NVRAMの残りの半分に今記憶される。そして、これらの要求をファイル・システム・ファイル・サブモジュールに渡し始めることができる。
5.ファイル・システム・ファイル・サブモジュールは、チェックポイント問合せの前のコマンドの全てが完了するまで待つ。これが起きるまで、不揮発性記憶装置処理サブモジュールからの新しいコマンドのどのようなものであれ処理し始めることはできない。これは、最長の遅延が起きそうな全チェックポイント・オペレーションの中のポイントであることに留意されたい。現在の我々の予測では、ビジーなファイル・システムで、このオペレーションは、数10ミリ秒掛かっている。これを軽減する別の方法により、ファイル・システム・ファイル・サブモジュールは、完了すべき未処理のオペレーションを待つ間ディスクのどのような修正も行わないオペレーションを続けることができる。
6.ファイル・システム・ファイル・サブモジュールは、次いで、ソースとしてファイル・システム・ファイル・サブモジュール、及び宛先としてファイル・システム・ディレクトリ・サブモジュールを有する新しいチェックポイント問合せを生成する。この時点で、ファイル・システム・ファイル・サブモジュールは不揮発性記憶装置処理サブモジュールからの新しいコマンドを処理し始めることができる。
7.次に、手順5、及び手順6は、ファイル・システム・ディレクトリ・サブモジュール、及びファイル・システム・ツリー・サブモジュールのために繰り返される。これらのそれぞれについて、手順5の待ち時間は未処理のオペレーションがないことを保証すべきであるので、完了すべき未処理のオペレーションを待つ必要はないことに留意されたい。
8.オブジェクト記憶サブモジュールがファイル・システム・ツリー・サブモジュールからチェックポイント・コマンドを受け取ると、オブジェクト記憶サブモジュールは、空きスペース割当てサブモジュールに作成チェックポイント問合せを送る。この時、オブジェクト記憶サブモジュールはまた、ファイル・システム・ツリー・サブモジュールインターフェイスからのどのような新しい問合せの処理も停止する
9.空きスペース割当てサブモジュールは、未処理の空きスペース問合せを完了し、適切なビットマップを更新すると、チェックポイント応答を返送する。空きスペース割当てサブモジュールが、オブジェクト記憶サブモジュールに送っているオブジェクト問合せは、オブジェクト記憶サブモジュールにより生成されているより多くの空きスペース問合せとなる恐れがあるので、チェックポイント応答を返送を待っている間、オブジェクト記憶サブモジュールは新しい空きスペースを処理し(、及び完了すべきこれらを待ち)続けなければないことに留意されたい。チェックポイント応答を送る前に、空きスペース問合せを処理すること、及び完了すべきスペース問合せを待つことによって起きる「無限ループ」を防ぐまたは逃れる対策を立てる必要がある。
10.オブジェクト記憶サブモジュールが、空きスペース割当てサブモジュールからチェックポイント応答を受け取ると、オブジェクト記憶サブモジュールは、記憶モジュールにタグ付きフラッシュを送り、記憶モジュールが、このボリューム用の修正済みチェックポイント・オブジェクト・リスト・オブジェクトを一気に消去するよう伝える。修正済みチェックポイント・オブジェクト・リストは、ある一定のボリュームの現行チェックポイント中に修正されたオブジェクト全部のオブジェクト番号を記録したオブジェクトである。
11.修正済みチェックポイント・オブジェクト・リスト・オブジェクトのTAG_FLUSHが完了すると、オブジェクト記憶サブモジュールは、WRITE_OBJ_LIS、及び修正済みチェックポイント・オブジェクト・リスト・オブジェクトの処理に設定された状態で、このチェックポイント番号用の動的スーパーブロックに書き込む。これは、ディスクを経由し、タグ付き書き込みを用い、続いてタグ付きフラッシュにより、書き込む必要がある。これは、チェックポイントをより迅速に書き込むため(これは動的スーパーブロックを書き込む時間が長くなる可能性があるが)に行われるので、直接、及び間接オーノード、ならびに、オーノード・データのフラッシュは同時に行うことに留意されたい。
12.動的スーパーブロックがディスクに書き込まると、タグ付きフラッシュはルート・オーノードの全部(また、もし、これが以前に行われていなければ、直接、及び間接オーノードに対して)に発出可能である。
13.タグ付きフラッシュが発出されると同時に、オブジェクト記憶サブモジュールは次のチェックポイントの作業を始める。このことは、現行のチェックポイント番号を、チェックポイント問合せで指示されるものに更新し、正確なタグ番号を、新しいチェックポイントの全ての構造に使用することに変換し、ファイル・システム・ツリー・サブモジュールからの問合せを処理し始めることを意味している。あるいは、もし、32キロバイトのキャッシュ・ブロックを(それぞれに対し別々の汚損したブロック・マスクの付いた)2つの遅延書込みタグ待ち行列の中に置けるように記憶モジュール・キャッシュ制御装置を変更した場合、手順10でタグ・フラッシュが発出されると同時に、次のチェックポイントの作業を始めることが可能となる。これによって、手順10、及び手順12の間での大幅な遅延にがあるため、性能が改善する。
14.オーノードデータ、及びオーノード構造の2つのタグ付きフラッシュが完了すると、オブジェクト記憶サブモジュールは、WRITTEN_CHECKPOINに設定された状態で、このチェックポイント番号用の動的スーパーブロックに書き込む。これは、タグ付き書き込みを用いて、次にタグ付きフラッシュによりディスクに書き込む必要がある。
15.動的スーパーブロックがディスクに書き込まれると、チェックポイントは首尾よく作成される。オブジェクト記憶サブモジュールが、ファイル・システム・ツリー・サブモジュールへ、チェックポイント回答を送る。これがファイル・システム・ディレクトリ・サブモジュール、及びファイル・システム・ファイル・サブモジュールを経由して不揮発性記憶装置処理サブモジュールへ戻るチェックポイント応答となる。これが、チェックポイント応答を確認した時、このチェックポイントと関連付けされたNVRAMのセーブ済みデータ全てを処分する。
16.不揮発性記憶装置処理サブモジュールは、次に、プロセッサに応答する。プロセッサがチェックポイントの応答を確認したときに限り、プロセッサは別のチェックポイントの生成を要求する。
3.7 チェックポイントの復元
ボリュームをマウントすると、システムは普通、最後の有効チェックポイントへ戻ることを希望する。
これを解決するには、ソフトウェアが動的スーパーブロックの双方を読み取る必要がある。これらの双方とも有効でなければならない。オブジェクト記憶サブモジュールが動的スーパーブロックに書き込む方法は、スーパーブロックの書き込みはディスク上の破損した動的スーパーブロックを、システムに残してはならないを確実に行うべきである。双方の動的スーパーブロックが有効であることを、例えば、あらゆるオペレーションをボリューム上で行う前に2つのチェックポイント・オペレーションを行うなど、充分に確実にするための追加対策を講じてもよい。
双方の動的スーパーブロックが有効あり、次に、フトウェアが、後のチェックポイント番号をもったものを探すと仮定しよう。この動的スーパーブロックの状態には2つの可能性がある。
WRITTEN_OBJ_LIST
この状態は、オブジェクト記憶が、修正済みチェックポイント・オブジェクト・リストをディスクに書き込んだけれども、システムが故障した時点では、オーノード構造、及びオーノード・データの全てを未だ書き込んでいないことを意味する。このことは、オブジェクト記憶が、アンクリーンなシステム停止であったことと、ディスクの最近の有効なチェックポイントが他の動的スーパーブロックに記録されたものであることを示している。(その状態は、WRITTEN_CHECKPOINTである。)
この状態においては、ディスク上のルート・オーノードの幾つかは、このチェックポイント作成の1部分として、更新されている。このことは、このチェックポイントに書き込まれたもののペアの時点でこのルート・オーノードを読み取ることが、最新の有効なものになりそうな時に問題がある。このことは、このチェックポイントが完全でなかったので間違っている。同じ問題は、他の全てのオーノード構造には当て嵌まらないことに留意されたい。何故なら、それを参照するオブジェクトが、使用するペアの中から正しいものを、直接向けられるからである。
この問題は、修正済みチェックポイント・オブジェクト・リストを利用して処理する。これは、ルート・オーノードへの変更がある前にディスクに書き込み、それのルート・オーノードがチェックポイントで修正されようとしているトランザクション・ログを提供する。チェックポイント不能の場合には、ソフトウェアが、修正済みチェックポイント・オブジェクト・リスト・オブジェクトを読み取り、それが向いているオブジェクトのそれぞれを通過する。オブジェクトのそれぞれについては、ソフトウェアがルート・オーノードのペアを読み取る必要がある。そして、もし、それらのいずれかが書き込まれておれば、それは無効である。
WRITTEN_CHECKPOINT
この状態は、システムが作動しなくなった時、オブジェクト記憶がオーノード構造、及びデータをディスクに書き込み中ではないことと、この動的スーパーブロックで定義されたチェックポイント番号は、ディスク上の最後のチェックポイントであることとを意味している。このことは、ボリュームがクリーンに停止したため、NVRAMの中の再生すべきオペレーションが未だ存在するという意味ではない。
4.保持済みチェックポイント
チェックポイントは、チェックポイントが、もはや存在しなくなる時点での、次のチェックポイントが作成されるまでに限り有効である。従って、ユーザが、チェックポイントの削除を選択するまで、有効性、及びアクセス可能性を機構が維持するよう、チェックポイントを保持するためのユーザ・トリガー機構が設けられる。上述の通り、ユーザ・トリガー機構によって保持されるこのようなチェックポイントを本書では保持済みチェックポイントと称す。オブジェクト記憶モジュールは多数の保持済みチェックポイントを維持する能力がある。保持済みチェックポイントが活性状態にある限り、保持済みチェックポイントから構成される、オーノード、及びデータ・ブロックは修正、または空きスペースへ戻ることはできない。オーノード、及びデータ・ブロックは、多数の保持済みチェックポイントの構成要素であってもよく、オーノード、及びデータ・ブロックが、少なくとも1つの保持済みチェックポイントの構成要素である限り、特定のオーノード、及びデータ・ブロックは空きスペースへ戻れないことに留意されたい。
4.1 保持済みチェックポイントの作成
保持済みチェックポイントは最初にある任意のボリュームに次の一連のオペレーションを行うことにより作成される。
1.チェックポイントを取得する。
2.コマンドを必要ボリュームのオブジェクト記憶サブモジュールに発出して、保持済みチェックポイントを作成する。
3.別のチェックポイントを取得する。
オブジェクト記憶サブモジュールがコマンドを受け取り、保持済みチェックポイントを作成すると、オブジェクト記憶サブモジュールは、ボリューム上の最後の保持済みチェックポイントはどのチェックポイント番号で作成されているかを指示する記録を更新する。これは、動的スーパーブロックに記録され、オペレーション3のチェックポイントが取得された時にディスクにセーブされている。保持済みチェックポイントは、オペレーション2の多数ボリューム上に取得が可能である。
4.2 保持済みチェックポイントの後のオブジェクトの修正
オブジェクト記憶サブモジュールがオブジェクト修正要求を受け取る度に、オブジェクト記憶サブモジュールは最初にルート・オーノード・オブジェクトを調べて、ルート・オーノード・オブジェクトが作成されたチェックポイント番号を決定する。もし、ルート・オーノード・オブジェクトが最後の保持済みチェックポイントの作成以前に作成されている場合は、ルート・オーノード・オブジェクトはその最後の保持済みチェックポイントの一部である。この場合、ルート・オーノード・オブジェクトは、上述の通り、修正不可能である。何故なら、このことで、保持済みチェックポイントのオブジェクトのバージョンを損傷するからである。逆に、以下の例により述べる特殊な方法でオブジェクトを修正する。
図23はチェックポイント番号1で作成されるオブジェクト例としてオブジェクト構造を示す。オブジェクトは、データ・ブロック0(2310)、データ・ブロック1(2312)、データ・ブロック2(2314)、データ・ブロック3(2316)の4つのデータ・ブロックを含んでいる。直接オーノード2306は、データ・ブロック0(2310)を示すポインタ、及びデータ・ブロック1(2312)を示すポインタを含んでいる。直接オーノード2308は、データ・ブロック2(2314)を示すポインタ、及びデータ・ブロック3(2316)を示すポインタを含んでいる。間接オーノード2304、直接オーノード2306を示すポインタ、及び直接オーノード2308を示すポインタを含んでいる。ルート・オーノード2302は、間接オーノード2304を示すポインタを含んでいる。全てのオーノード、及び全てのデータ・ブロックには、チェックポイント番号1が付いている。
さて、保持済みチェックポイントがチェックポイント番号2で取得され、データ・ブロック0(2310)は、チェックポイント番号3で修正されると仮定しよう。
この場合、オブジェクト記憶サブモジュールは先ずオブジェクト用ルート・オーノード2302をロードするとともに、チェックポイント番号2で設定される最後の保持済みチェックポイントの前に(チェックポイント番号1で作成された)ルート・オーノード2302が作成されたことを認識する。オブジェクトの最も最新バージョンへのアクセスを最適化するため、最も最新のルート・オーノードは、オブジェクト番号で表示されるセクター番号のところにあることが好ましい。従って、他に何かを行う前に、オブジェクト記憶サブモジュールはディスクの空きスペースに、旧ルート・オーノードのコピーをセーブし、セーブ済みルート・オーノードを示すポインタを、更新済みのルート・オーノードに書き込み、そして、更新済みルート・オーノードを示すポインタをセーブ済みルート・オーノードに書き込む。
図24は、旧ルート・オーノードがディスク空きスペースへセーブされた後のオブジェクト構造を示す。具体的には、ブロック2403は、旧ルート・オーノードをディスクの空きスペースへセーブしたコピーを表している。現行のルート・オーノード2402を示すポインタはセーブ済みルート・オーノード2403に書き込まれている。ブロック2402は、チェックポイント番号3を持つ更新済みルート・オーノードを表す。セーブ済みルート・オーノード2403を示すポインタは現行のルート・オーノード2402に書き込まれている。
オブジェクト記憶サブモジュールは、次に、オブジェクト記憶サブモジュールがデータ・ブロック0(2310)用の記述子に到達するまでルート・オーノードから始まるオブジェクト構造を横断する。データ・ブロック0(2310)は最後の保持済みチェックポイントの取得以前に作成されているので、修正不可能である。その代わり、オブジェクト記憶サブモジュールは、必要なデータ修正をして、データ・ブロック0(2310)のコピーをディスクの空きスペースへ書き込む。
図25は、データ・ブロック0の修正済みコピーをディスクの空きスペースへ書き込んだ後のオブジェクト構造をしめす。具体的には、ブロック2510は、ディスクの空きスペースへ書き込まれたデータ・ブロック0の修正済みコピーを表す。ブロック2510は、チェックポイント番号3(即ち、そこでその番号が作成されたチェックポイント)を含んでいる。
さて、オブジェクト記憶サブモジュールは、直接オーノードに新しいデータ・ブロック2510を示すポインタを置く必要があるが、直接オーノード2306が保持済みチェックポイントの構成要素であるので、オブジェクト記憶サブモジュールは、直接オーノード2306に新しいデータ・ブロック2510を示すポインタを置けない。オブジェクト記憶サブモジュールは、それ故、新しいデータ・ブロック0(2510)、及び旧データ・ブロック1(2312)を示すポインタを有する新しい直接オーノードを作成する。
図26は、新しいデータ・ブロック用として新しい直接オーノードを作成した後のオブジェクト構造を示す。具体的には、ブロック2606は、新しい直接オーノードを表す。ブロック2606はチェックポイント番号3、ならびに新しいデータ・ブロック0(2510)、及び旧データ・ブロック1(2312)を示すポインタを含んでいる。
オブジェクト記憶サブモジュールは、間接オーノードに新しい直接オーノード2606を示すポインタを置く必要があるが、間接オーノード2304が保持済みチェックポイントの構成要素であるので、オブジェクト記憶サブモジュールは、間接オーノード2304に新しい直接オーノード2606を示すポインタを置けない。それ故、オブジェクト記憶サブモジュールは、新しい直接オーノード2606、及び旧直接オーノード2308を示すポインタを有する新しい間接オーノードを作成する。
図27は、新しい直接オーノード用として新しい間接オーノードを作成した後のオブジェクト構造を示す。具体的には、ブロック2704は、新しい間接オーノードを表す。ブロック2704は、チェックポイント番号3、ならびに新しい直接オーノード2606、及び旧直接オーノード2308を示すポインタを含んでいる。
最後に、オブジェクト記憶サブモジュールは、オブジェクトルート・オーノード2402の現行バージョンの新しい間接オーノード2704を示すポインタを書き込む。
図28は、新しい間接オーノード2704を示すポインタをオブジェクト・ルート・オーノード2402の現行バージョンに書き込んだ後のオブジェクト構造を示す。
データ・ブロック0の修正が完了した後、ブロック2403、2304、2306、2310は保持済みチェックポイントの構成要素となったが、オブジェクトの現行のバージョンの構成要素ではない、即ちブロック2308、2312、2314、2316は、保持済みチェックポイント、及びオブジェクトの現行バージョン双方の構成要素であり、ブロック2402、2704、2606、2510は、現行バージョン双方の構成要素ではあるが、保持済みチェックポイントの構成要素ではないことに留意されたい。
さて、保持済みチェックポイントがチェックポイント番号4で取得され、データ・ブロック3(2316)がチェックポイント5で削除されたと仮定しよう。ここでの手続きは、データ・ブロック0を修正した上記手続きに類似しており、データ・ブロック3の削除後のオブジェクト構造を示す図29を参照して説明する。
この場合、オブジェクト記憶サブモジュールは、ブロック2903で表されるチェックポイント番号3から旧ルート・オーノードのコピーをディスク空きスペースにセーブし、ルート・オーノード・オブジェクト2902を更新してチェックポイント番号5を含めるとともに、現行、及びセーブ済みルート・オーノードの各種ポインタを更新する。具体的には、セーブ済みのルート・オーノード2903は、事実上、現行ルート・オーノード2902、及び以前のルート・オーノード2403の間の2重にリンクされたリストに挿入されている。現行ルート・オーノード2902においては、旧ルート・オーノードバージョンを示すポインタは更新されて、以前のセーブ済みルート・オーノード2403ではなく、セーブ済みルート・オーノード2903を示す。以前のセーブ済みルート・オーノード2403においては、新しいルート・オーノードバージョンを示すポインタは更新されて、現行のルート・オーノード2902ではなく、新しいセーブ済みルート・オーノード2903を示す。セーブ済みオーノード2903においては、新しいルート・オーノード・バージョンを示すポインタは更新されて、現行のルート・オーノード2902を示す。一方、旧ルート・オーノード・バージョンを示すポインタは更新されて、以前のセーブ済みルート・オーノード2403を示す。
次に、オブジェクト記憶サブモジュールは、データ・ブロック3(2316)用記述子を含む直接オーノード2308に到着するまで、ルート・オーノードから始まるオブジェクト構造を横断する。直接オーノード2308、及びデータ・ブロック3(2316)は既存の保持済みチェックポイントの構成要素であるので、データ・ブロック3(2316)の記述子を取り外すために、オブジェクト記憶サブモジュールはデータ・ブロック3(2316)を簡単に削除ができないし、また直接オーノード2308を修正することもできない。従って、オブジェクト記憶サブモジュールは、チェックポイント番号5、及びデータ・ブロック2(2314)を指すポインタは有するが、データ・ブロック3(2316)を指すポインタは有しない新しい直接オーノード2908を作成する。また、オブジェクト記憶サブモジュールは、チェックポイント番号5、並びに旧直接オーノード2606、及び新しい直接オーノード2908を指すポインタを有する新しい間接オーノード2904を作成する。最後に、オブジェクト記憶サブモジュールは、新しい間接オーノード2904を示すポインタを、ルート・オーノード2902の現行バージョンへ書き込む。
データ・ブロック3の削除後、ブロック2903、2403、2304、2704、2306、2308、2310、2316は、少なくとも1つの保持済みチェックポイントの構成要素となるが、オブジェクトの現行バージョンの構成要素ではない。即ち、ブロック2606、2510、2312、2314は、オブジェクトの現行バージョン、及び少なくとも1つの保持済みチェックポイントの構成要素であって、ブロック2902、2904、2908は、オブジェクトの現行バージョンの構成要素ではあるが、保持済みチェックポイントの構成要素ではないことに留意されたい。
4.3 保持済みチェックポイントへのアクセス
オブジェクト記憶サブモジュールに、オブジェクトのオペレーションを行うよう依頼があると、オブジェクト記憶サブモジュールに処理が回され、そのオブジェクトを識別することが可能となる。とりわけ、この処理は、要求されたオブジェクトのチェックポイント番号を特定する。通常、このチェックポイント番号はオブジェクトの現行バージョンを示す値に設定される。しかしながら、もしも、異なるチェックポイント番号が特定された場合、オブジェクト記憶サブモジュールはオブジェクトの要求されたバージョンのオペレーションを行うことになる。
オブジェクト記憶サブモジュールは、要求されたチェックポイント番号、または以前のチェックポイント番号を有するルート・オーノードが見付かるまで、ルート・オーノードの新バージョンからルート・オーノードの旧バージョンまでのポインタを使って、現行、及びセーブ済みルート・オーノードを通ってオブジェクトの要求されたバージョンを探そうとする。オブジェクト記憶サブモジュールは、次に、そのルート・オーノードからオブジェクト構造を横断する。以上のことは、図29を再度参照した例によって説明している。
もし、オブジェクト記憶サブモジュールが、チェックポイント番号5の要求を受け取ると、オブジェクト記憶サブモジュールは初めにルート・オーノード・オブジェクト2902の現行バージョンへ進む。現行ルート・オーノード2902は、要求済みチェックポイント番号であるチェックポイント番号5を持っている。従って、オブジェクト記憶サブモジュールはオブジェクトの要求バージョンを付与するルート・オーノード2902からオブジェクト構造を横断する。具体的には、ルート・オーノード2902は、間接オーノード2904を指している。間接オーノード2904は、直接オーノード2606、及び2908を指している。直接オーノード2606は、修正済みデータ・ブロック0(2510)、及びデータ・ブロック1(2312)を指している。直接オーノード2908は、データ・ブロック2(2314)を指している。このように、オブジェクトの現行バージョンはデータ・ブロック0を含み、削除済みデータ・ブロック3を排除している。
もし、オブジェクト記憶サブモジュールがチェックポイント番号4の要求を受け取ると、オブジェクト記憶サブモジュールは先ずルート・オーノード・オブジェクト2902の現行バージョンへ進む。現行オーノード2902は、チェックポイント番号5を有しているが、これがあまりにも新し過ぎて、オブジェクト記憶サブモジュールはセーブ済みルート・オーノード2903を指すポインタに従う。ルート・オーノード2903は、オブジェクトの要求バージョンよりも以前のチェックポイント番号3を有している。従って、オブジェクト記憶サブモジュールは、オブジェクトの要求バージョンを付与するルート・オーノード2903からオブジェクト構造を横断する。具体的には、ルート・オーノード2903は、間接オーノード2704を指している。間接オーノード2704は直接オーノード2606、及び2308を指している。直接オーノード2606は、修正済みデータ・ブロック0(2510)、及びデータ・ブロック1(2312)を指している。直接2308は、データ・ブロック2(2314)、及びデータ・ブロック3(2316)を指している。このように、チェックポイント番号4の保持済みチェックポイントは、修正済みデータ・ブロック0を含むとともに、データ・ブロック3をも含んでいる。
もし、オブジェクト記憶サブモジュールがチェックポイント番号2の要求を受け取った場合には、オブジェクト記憶サブモジュール最初にルート・オーノードブジェクト2902の現行バージョンへ進む。現行ルート・オーノード2902はチェックポイント番号5を有してが、あまりにも新し過ぎるため、オブジェクト記憶サブモジュールはルート・オーノード2902のポインタを用いセーブ済みルート・オーノード2903にアクセスする。セーブ済みルート・オーノード2903はチェックポイント番号3を有しているが、これもまた新し過ぎるため、ルート・オーノード2903のポインタを使用しセーブ済みルート・オーノード2403にアクセスする。セーブ済みルート・オーノード2403は、オブジェクトの要求バージョンよりも前のチェックポイント番号1を有している。次いで、オブジェクト記憶サブモジュールは、オブジェクトの要求バージョンを付与するセーブ済みルート・オーノード2403からオブジェクト構造を横断する。具体的には、ルート・オーノード2403は間接オーノード2304を指している。間接オーノード2304は直接オーノード2306、及び2308を指している。直接オーノード2306は、データ・ブロック0(2310)、及びデータ・ブロック1(2312)を指している。直接オーノード2308は、データ・ブロック2(2314)、及びデータ・ブロック3(2316)をポインタで指している。このように、チェックポイント番号2の保持済みチェックポイントは、元の4つのデータ・ブロックを含んでいる。
もし、オブジェクト記憶サブモジュールがオブジェクトの要求バージョンを発見できない場合には、オブジェクト記憶サブモジュールは、通常、エラーメッセージを発生することに留意されたい。図29をもう一度参照して、例えば、もし、オブジェクト記憶サブモジュールがチェックポイント番号0の要求を受け取った場合には、オブジェクト記憶サブモジュールは、ルート・オーノード2403に到着するまで、ルート・オーノードを通って進む。ルート・オーノード2403は新し過ぎ、以前のルート・オーノードを示すポインタを有していないため、オブジェクト記憶サブモジュールはオブジェクトの要求バージョンが発見できなかったことを示すエラーメッセージを発生する。
さらに、保持済みチェックポイントを修正することはできず、オブジェクト記憶サブモジュールは読取りオペレーションのみをその上で行うことができるということに留意されたい。
4.4 保持済みチェックポイントの削除
保持済みチェックポイントを削除するプロセスには、2つの段階がある。
第1の段階には、削除予定の保持済みチェックポイントで作成あるいは修正されるオブジェクト全部のリスト入手が含まれる。これは、保持済みチェックポイント全てに対して作られている特殊なオブジェクト(修正済み保持オブジェクト・リスト・オブジェクト)を使ってできる。このオブジェクトは、ボリュームが一番最初に開かれた時、または保持済みチェックポイントが取得された後のいずれかの場合に、作成する。もし、オブジェクトが、以前の保持済みチェックポイントで作成されている場合には、オブジェクトを作成される度に、または、初めてオブジェクトが修正される時に、オブジェクト番号をこのオブジェクトに書き込む。この特殊なオブジェクトのオブジェクト番号を動的スーパーブロックに記憶する。保持済みチェックポイントを作成する前に、ソフトウェアは、後で保持済みチェックポイントの削除を希望した時のために、この特殊オブジェクトのオブジェクト番号を記録する。
保持済みチェックポイント削除の第2段階には、保持済みチェックポイントで、作成または修正のいずれかが行われるオブジェクトそれぞれの次の一連のオペレーションが含まれる。
1.オブジェクトが他のオペレーションで使えないようにオブジェクトをロックする。保持済みチェックポイントが作動中のファイル・システムで削除される場合のみ、これが必要となる。
2.もし、最も最近の保持済みチェックポイントが削除される、及びオブジェクトが削除されておれば、保持済みチェックポイント用のルート・オーノードと、以前の保持済みチェックポイント用のルート・オーノード(1つある場合)と、次の保持済みチェックポイントのルート・オーノード(1つある場合)、またはオブジェクトの現行バージョンのルート・オーノードのいずれかと、を探す。
3.削除される保持済みチェックポイント構造を経由して進み、それが使用している全ての間接、及び直接オーノード、ならびにデータ・ブロックを識別する。このようなオーノード、及びデータ・ブロックのそれぞれに関しては、削除される保持済みチェックポイントだけで、項目を使用しているのかどうかを判断する。これは、オブジェクトの以前と次の両バージョンに等価な項目を見つけることで行うことができる。もし、等価項目が、オブジェクトの以前と次のバージョンで異なっておれば、その項目は、この保持済みチェックポイントに特有である。
4.もし、項目が、削除される保持済みチェックポイントのみで使用されるならば、項目は、もはや必要なくなるので、空きスペースへ戻される。もし、その項目が保持済みチェックポイントのみで使用されており、次の更新済み保持オブジェクト・リストの中に既になければ、次のチェックポイント用の更新済み保持オブジェクト・リストに追加される。更新済み保持オブジェクト・リストに項目を追加することで、オブジェクト記憶サブモジュールは、その保持済みチェックポイントが削除されることになる時に、項目が未だ必要とされているのかどうかの調査について認識する。
5.最後に、もし、この保持済みチェックポイント用のルート・オーノードがこの保持済みチェックポイントの中だけで使用されているのであれば、ルート・オーノードもまたもはや必要でなく、削除される。この場合、もし、旧保持済みチェックポイントがあれば、削除される保持済みチェックポイントのルート・オーノードを以前に指していたルート・オーノードの次のバージョンから後方へ向かうポインタ(もしあれば)は、更新されて、以前の保持済みチェックポイントのルート・オーノードを指す。
ファイル・システム整合性を維持するため、チェックポイントの取得プロセスと保持済みチェックポイント削除とを結合する方法について細心の注意を払う必要があり、これにより、チェックポイントが常にファイル・システムの首尾一貫した考え方を表わしていること、及び保持済みチェックポイントの削除途中での故障が回復できることが確実となる。
保持済みチェックポイントの削除は例示することができる。図29を参照して、チェックポイント番号4で作成された保持済みチェックポイントが削除されると仮定しよう。このチェックポイントはルート・オーノード2903で表されている。構造の中で、この保持済みチェックポイントで使用される項目は、ルート・オーノード2903、及び直接オーノード2704のみである。これらのオーノードは空きスペースへ戻される。ルート・オーノード2902は更新されて削除済みルート・オーノード2903でなくルート・オーノード2403を指す。図30は保持済みチェックポイント番号4のチェックポイントが削除された後のオブジェクト構造を示している。
再度、図30を参照して、さて、チェックポイント番号2が未だ存在している間に、オブジェクトの現行バージョンが削除されると仮定しよう。これは、構造の中で現行バージョンに特有な全ての項目を識別する必要性、及びこれらの項目を空きスペースに戻す必要性がある点で、削除される保持済みチェックポイントの場合と、類似している。この場合、オーノード2904、2606、2908は、オブジェクトの現行バージョンに使用されるが、残りの保持済みチェックポイントのいずれにも使用されないので、これらのオーノードは空きスペースに戻される。現行ルート・オーノード2902は、修正されて、削除されたオブジェクトを参照しているが、少なくとも1つの有効な保持済みチェックポイントを指すポインタを未だ有していることを示してる。図31は、オブジェクトの現行バージョンが削除された後のオブジェクト構造を示す。
本オブジェクトの残り全ての保持済みチェックポイントが削除されると、ルート・オーノード2902は、空きスペースでなく、空きルート・オーノード待ち行列に戻される。
4.5 保持済みチェックポイントへの復帰
幾つかの状況下で、稼働中のファイル・システムを保持済みチェックポイントで表されるバージョンは復帰させる必要や望ましいことがあるかもしれない。稼働中のファイル・システムを保持済みチェックポイントで表されるバージョンへ復帰させるには、多くの異なる方法によって可能である。稼働中のファイル・システムを保持済みチェックポイントへの復帰は以下のようなことを含む。
1.保持済みチェックポイントと関連付けされたルート・オーノードの関連内容を、現行のルート・オーノードにコピーすること。(例えば、直接オーノード、及び間接オーノード、ならびにデータ・ブロックを指すポインタ、以前の保持済みチェックポイントを指すポインタなど)
2.以前の保持済みチェックポイント(1つある場合)と関連付けされたルート・オーノードを識別すること、及び、稼働中のファイル・システムが復帰させられる保持済みチェックポイントと関連付けられたルート・オーノードなく、現行のルート・オーノードを指すようルート・オーノードのポインタを修正する。
3.保持済みチェックポイントと関連付けされたルート・オーノードを削除すること。
4.更新済みチェックポイント・オブジェクト・リストをクリアすること。(即ち、稼働中のファイル・システムを保持済みチェックポイントで表されるバージョンへ復帰させた後、事実上、修正済みオブジェクトは存在しない。)
5.ファイル・システムが復帰させられるチェックポイントが保持された後で取得された任意の保持済みチェックポイントと関連付けられたルート・オーノード、及び他のオブジェクトを含む、チェックポイントの保持後に作成された全てのオブジェクトを削除すること。
以前の保持済みチェックポイントと関連付けられたルート・オーノードのポインタを修正する以外に、もし1つあれば、旧保持済みチェックポイントのいずれも変化がないままである。しかしながら、新しい保持済みチェックポイントは全てが実質的には削除される。
4.6 保持済みチェックポイントに関する他のオペレーション
保持済みチェックポイントと通常関連付けられた他の全ての機能は本書に述べる機構を用いて果たすことができる。例えば、インクリメンタル・バックアップは、継続的保持済みチェックポイントの間で変化するものを算定するための更新済み保持オブジェクト・リストを用いて行うことができる。
本特許の前述の特徴は、添付図面と照合して以下の詳細な説明を参照することによってさらに容易に理解されるだろう。
図1は、本発明の様々な態様を適用したファイル・サーバの実施形態のブロック線図である。 図2は、図1の実施形態の実行に関するブロック線図である。 図3は、本発明の実施形態に基づくファイル・システム・モジュールのブロック線図である。 図4は、ソフトウェア制御を介在させずにファイル・サービス・モジュールによってネットワーク・リクエストへの自動応答が可能となる本発明の実施形態への制御フローの使用方法を示すブロック線図である。 図5は、本発明の実施形態に基づくセクター・キャッシュ・ロッキングを具体化したクラスター化ファイル・サーバ構成のブロック線図である。 図6は、不揮発性メモリを垂直ループ構成でミラー化した本発明の実施形態によるクラスター化ファイル・サーバ構成のブロック線図である。 図7は、図3に示す実施形態に基づく他のオーノード(onode)を有しないルート・オーノード(root onode)の用法を示すブロック線図である。 図8は、直接オーノードを有するルート・オーノードの用法を示すブロック線図である。 図9は、直接オーノード、及び間接オーノードを有するルート・オーノードの用法を示すブロック線図である。 図10は、ルート・オーノードと、直接オーノードとの間に置かれた間接オーノード多重層の用法を示すブロック線図である。 図11は、図3の実施形態に基づくチェックポイントA期間中のルート・ノードの作成状況を示す線図である。 図12は、図11のルート・オーノードに対して、ルート・ノードの右側に書き込まれた修正を更に行った場合の効果を示す線図である。 図13は、チェックポイントAの作成結果を示す線図であって、ディスクに図12のルート・オーノードが書き込まれている。 図14は、同じルート・オーノード用のチェックポイントBの作成結果を示す線図である。 図15は、チェックポイントBが作成される間に、チェックポイントCの一部分としてルート・オーノードを修正した場合の結果を示す線図である。 図16は、2レベルの間接参照を有するオブジェクト構造の一部であるルート・オーノードの図の出発点を示す線図である。 図17は、図16のルート・オーノードが対応するオブジェクトの構造を示す線図である。 図18は、図17に図示されるオブジェクトに対してチェックポイントを取った場合の結果を示す図である。 図19は、図18のデータ構造に関して、新しいチェックポイントを取得する前に、新しいデータブロック2を割り当てるとともに、この新しいデータブロックを指すオーノード構造の全てを更新した場合の結果を示す図である。 図20は、図19の構造に関して、チェックポイントを取得した場合の結果を示す線図である。 図21は、図20の構造に関して、データ上書きモードのオブジェクトでデータ・ブロック1に書き込んだ場合の結果を示す線図である。 図22は、チェックポイントの作成ステップ示すスケジュール表である。 図23は、チェックポイント番号1でのデータブロック4個と、各種のオーノードとを含む典型的なオブジェクトの構造を示す線図である。 図24は、保持済みチェックポイントをチェックポイント番号2で取得した後、及びチェックポイント番号3の期間中にデータブロック0を修正している間、具体的には、オブジェクトのルート・オーノードのコピーが空きスペースへセーブされ、ルート・オーノードを更新してセーブ済みルート・オーノードを示すポインターが含まれるようにした後の、本発明の実施形態に基づく、図23の典型的なオブジェクトの構造を示す線図である。 図25は、データブロックの修正済みコピーを空きスペースへ書き込んだ後の、本発明の実施の形態による、図24の典型的なオブジェクトの構造を示す線図である。 図26は、新しい直接オーノードを作成してデータブロックの修正済みコピーを指すようにした後の、本発明の実施形態による、図25の典型的なオブジェクトの構造を示す線図である。 図27は、新しい間接オーノードを作成して新しい直接オーノードを指すようにした後の、本発明の実施の形態による、図26の典型的なオブジェクトの構造を示す線図である。 図28は、新しい間接オーノードを指すポインターをオブジェクト用の現行ルート・オーノードに書き込んだ後の、本発明の実施の形態による、図27の典型的なオブジェクトの構造を示す線図である。 図29は、保持済みチェックポイントをチェックポイント番号4で取得し、データブロック3がチェックポイント番号5で削除された後の、本発明の実施の形態による、図28の典型的なオブジェクトの構造を示す線図である。 図30は、チェックポイント番号4で取得された保持済みチェックポイントが削除された後の、本発明の実施の形態による、図29の典型的なオブジェクトの構造を示す線図である。 図31は、オブジェクトの現行バージョンが削除され、チェックポイント番号2で取得された保持済みチェックポイントのみが残った、本発明の実施の形態による、図30の典型的なオブジェクトの構造を示す線図である。

Claims (43)

  1. データ記憶システムにアクセスし、前記データ記憶システムを利用するファイル・サーバ・システムであって、
    前記ファイル・サーバ・システムは、
    ネットワークを介してファイル・サービス要求を受け取り、前記ネットワークを介して前記ファイル・サービス要求に応答するネットワーク・サブシステムを含み、
    前記ネットワーク・サブシステムと通信するファイル・サブシステムであって、前記ファイル・サービス要求を満たすファイル・サブシステムをさらに含み、
    前記ファイル・サブシステムは、
    a.前記ネットワーク・サブシステム及び前記データ記憶システムと通信するデータ・バス装置であって、前記データ記憶システムに記憶されるデータを伝送し、前記データ記憶システムから検索されたデータを伝送するデータ・バス装置と、
    b.複数の連結されたサブモジュールであって、各サブモジュールは、前記データ・バス装置を介して伝送されたデータを指すポインタを使用して、ファイル・サービス要求の処理に関した異なるセットのオペレーションを行うように構成されている、複数の連されたサブモジュールと
    を備え、各サブモジュールは、前記サブモジュールのタスクに関したメタデータを記憶するための自身のキャッシュ・メモリーを有する、ファイル・サーバ・システム。
  2. データ記憶システムにアクセスし、前記データ記憶システムを利用するファイル・サーバ・システムであって、
    前記ファイル・サーバ・システムは、
    ネットワークを介してファイル・サービス要求を受け取り、前記ネットワークを介して前記ファイル・サービス要求に応答するネットワーク・サブシステムを含み、
    前記ネットワーク・サブシステムと通信するファイル・サブシステムであって、前記ファイル・サービス要求を満たすファイル・サブシステムをさらに含み、
    前記ファイル・サブシステムは、
    a.前記ネットワーク・サブシステム及び前記データ記憶システムと通信するデータ・バス装置であって、前記データ記憶システムに記憶されるデータを伝送し、前記データ記憶システムから検索されたデータを伝送するデータ・バス装置と、
    b.複数の連結されたサブモジュールであって、各サブモジュールはファイル・サービス要求の処理に関した異なるセットのオペレーションを行うように構成されている、複数の連されたサブモジュールと
    を備え、各サブモジュールは、ファイル内容データの記憶なしで、前記サブモジュールのタスクに関したメタデータを記憶するための自身のキャッシュ・メモリーを有する、ファイル・サーバ・システム。
  3. 前記複数の連結されたサブモジュールは、階層的に配置され、前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールと、ファイル属性に関連付けられたデータ構造の管理を行うファイル・サブモジュールとを含む請求項1または2に記載のファイル・サーバ・システム
  4. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールと、ファイル属性に関連付けられたデータ構造の管理を行うファイル・サブモジュールと、前記ファイル・サブモジュールのディレクトリ管理を行うディレクトリ・サブモジュールとを含む請求項1または2に記載のファイル・サーバ・システム
  5. 前記複数の連結されたサブモジュールは、前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールと、前記データ記憶システムの中でスペースの割当てに関するデータを検索、及び更新する空きスペース割当てサブモジュールとを含む請求項1または2に記載のファイル・サーバ・システム
  6. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールと、ファイル属性に関連付けられたデータ構造の管理を行うファイル・サブモジュールと、前記ファイル・サブモジュールのディレクトリ管理を行うディレクトリ・サブモジュールと、前記ディレクトリ・サブモジュールのディレクトリ探索を行うツリー・サブモジュールとを含む請求項1または2に記載のファイル・サーバ・システム
  7. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールと、ファイル属性に関連付けられたデータ構造の管理を行うファイル・サブモジュールと、前記ファイル・サブモジュールのディレクトリ管理を行うディレクトリ・サブモジュールと、前記ディレクトリ・サブモジュールのディレクトリ探索を行うツリー・サブモジュールとを、前記ディレクトリ・サブモジュールは、各ファイルをランダム値と関連付け、前記ツリー・サブモジュールは、前記ディレクトリ・サブモジュールからの前記ランダム値に基づく論理ツリー構造を管理する請求項1または2に記載のファイル・サーバ・システム
  8. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールと、ファイル属性に関連付けられたデータ構造の管理を行うファイル・サブモジュールと、前記ファイル・サブモジュールのディレクトリ管理を行うディレクトリ・サブモジュールと、前記ディレクトリ・サブモジュールのディレクトリ探索を行うツリー・サブモジュールとを、前記ディレクトリ・サブモジュールは、各ファイルを、前記ファイルと関連付けられたファイル名の巡回冗長検査(CRC)を含むランダム値と関連付け、前記ツリー・サブモジュールは、前記ディレクトリ・サブモジュールからの前記ランダム値に基づく論理ツリー構造を管理する請求項1または2に記載のファイル・サーバ・システム
  9. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールと、ファイル属性に関連付けられたデータ構造の管理を行うファイル・サブモジュールと、前記ファイル・サブモジュールのディレクトリ管理を行うディレクトリ・サブモジュールと、前記ディレクトリ・サブモジュールのディレクトリ探索を行うツリー・サブモジュールとを、前記ディレクトリ・サブモジュールは、各ファイルをランダム値と関連付け、前記ツリー・サブモジュールは、各ランダム値を論理ツリー構造のインデックスと関連付け、前記ランダム値を用いて前記論理ツリー構造にアクセスする請求項1または2に記載のファイル・サーバ・システム
  10. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールと、ファイル属性に関連付けられたデータ構造の管理を行うファイル・サブモジュールと、前記ファイル・サブモジュールのディレクトリ管理を行うディレクトリ・サブモジュールと、前記ディレクトリ・サブモジュールのディレクトリ探索を行うツリー・サブモジュールとを、前記ディレクトリ・サブモジュールは、各ファイルをランダム値と関連付け、前記ディレクトリ・サブモジュールは、同じランダム値と関連付けられたファイルのリストを維持、前記ファイルのリストを用いて同じランダム値と関連付けられたファイルにアクセスする請求項1または2に記載のファイル・サーバ・システム
  11. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに後の記憶用ファイル・システム要求データを記憶するための関連付けられた不揮発性記憶装置を有する不揮発性記憶装置処理サブモジュールを含む請求項1または2に記載のファイル・サーバ・システム
  12. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに後の記憶用ファイル・システム要求データを記憶するための関連付けられた不揮発性記憶装置を有する不揮発性記憶装置処理サブモジュールを含み、前記不揮発性記憶装置処理サブモジュールを、作動可能に接続して、プロセッサの故障復帰要求により前記不揮発性記憶装置にファイル・システム要求データを記憶する請求項1または2に記載のファイル・サーバ・システム
  13. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに後の記憶用ファイル・システム要求データを記憶するための関連付けられた不揮発性記憶装置を有する不揮発性記憶装置処理サブモジュールを含み、前記不揮発性記憶装置処理サブモジュールを、作動可能に接続して、プロセッサの故障復帰要求により前記不揮発性記憶装置にファイル・システム要求データを記憶前記ファイル・システム要求データが前記不揮発性記憶装置に記憶されたことを確認した通知を送る請求項1または2に記載のファイル・サーバ・システム
  14. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに後の記憶用ファイル・システム要求データを記憶するための関連付けられた不揮発性記憶装置を有する不揮発性記憶装置処理サブモジュールを含み、前記不揮発性記憶装置処理サブモジュールを、作動可能に接続して、インターフェイスを経由して別のファイル・サーバからファイル・システム要求データ受け取り、他のサーバからの前記ファイル・システム要求データを前記不揮発性記憶装置に記憶する請求項1または2に記載のファイル・サーバ・システム
  15. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに後の記憶用ファイル・システム要求データを記憶するための関連付けられた不揮発性記憶装置を有する不揮発性記憶装置処理サブモジュールを含み、前記不揮発性記憶装置処理サブモジュールを、作動可能に接続して、他のファイル・サーバによる前記ファイル・システム要求データの不揮発性記憶装置用インターフェイスを経由して、前記ファイル・システム要求データを別のファイル・サーバへ送る請求項1または2に記載のファイル・サーバ・システム
  16. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールを含み、前記オブジェクト記憶サブモジュールは、前記記憶システムに記憶される各ファイル・システム・オブジェクト用のファイル構造を維持する請求項1または2に記載のファイル・サーバ・システム
  17. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールを含み、前記オブジェクト記憶サブモジュールは、前記記憶システムに記憶される各ファイル・システム・オブジェクト用の前記オブジェクト記憶サブモジュールが関連するメタデータ・キャッシュの中にファイル構造を維持する請求項1または2に記載のファイル・サーバ・システム
  18. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールを含み、前記オブジェクト記憶サブモジュールは、前記記憶システムに記憶される、ファイル、ディレクトリ、ファイル属性を含む各ファイル・システム・オブジェクト用のファイル構造を維持する請求項1または2に記載のファイル・サーバ・システム
  19. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールを含み、前記オブジェクト記憶サブモジュールは、前記記憶システムに記憶される各ファイル・システム・オブジェクト用のファイル構造を維持し、前記ファイル構造を種々のチェックポイントにおいて前記記憶システムの中に記憶する請求項1または2に記載のファイル・サーバ・システム
  20. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールを含み、前記オブジェクト記憶サブモジュールは、前記記憶システムに記憶される各ファイル・システム・オブジェクト用のファイル構造を維持、外部プロセッサにより起動させられたときに、前記記憶システムの中に前記ファイル構造を記憶する請求項1または2に記載のファイル・サーバ・システム
  21. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールを含み、前記オブジェクト記憶サブモジュールは、前記記憶システムに記憶される各ファイル・システム・オブジェクト用のファイル構造を維持、前記ファイル構造を前記記憶システムに最後に記憶してから所定時間が経ったときに前記記憶システムに前記ファイル構造を記憶する請求項1または2に記載のファイル・サーバ・システム
  22. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに後の記憶用ファイル・システム要求データを記憶する関連付けられた不揮発性記憶装置を有する不揮発性記憶装置処理サブモジュールと、前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールとを含み、前記オブジェクト記憶サブモジュールは、前記記憶システムに記憶される各ファイル・システム・オブジェクト用のファイル構造を維持、前記ファイル・システム要求データの記憶に用いられた前記不揮発性記憶装置一部が一杯になったときに前記記憶システムに前記ファイル構造を記憶する請求項1または2に記載のファイル・サーバ・システム
  23. 前記記憶システムについてのセクター・レベルの情報を維持するセクター・キャッシュをさらに備え、前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムの中でファイル・システム・オブジェクトの記憶、及び検索を行うオブジェクト記憶サブモジュールを含み、前記オブジェクト記憶サブモジュールは、前記記憶システムに記憶される、各ファイル・システム・オブジェクト用のファイル構造を維持、前記セクターキャッシュが一杯になったとき前記記憶システムに前記ファイル構造を記憶する請求項1または2に記載のファイル・サーバ・システム
  24. 前記複数の連結されたサブモジュールの外側にある制御装置をさらに備え、前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに後の記憶用ファイル・システム要求データを記憶する関連付けられた不揮発性記憶装置を有する不揮発性記憶装置処理サブモジュールと、ファイル属性に関連付けられたデータ構造を管理するファイル・サブモジュールと、前記ファイル・サブモジュールのディレクトリ管理を行うディレクトリ・サブモジュールと、前記ディレクトリ・サブモジュールのディレクトリ探索を行うツリー・サブモジュールと、前記記憶システムに記憶される各ファイル・システム・オブジェクト用ファイル構造を維持し、種々のチェックポイントにおいて前記記憶システムに前記ファイル構造を記憶するオブジェクト記憶サブモジュールと、前記データ記憶システムのスペースの割り当てに関連するデータを検索し、更新する空きスペース割当てサブモジュールとを含み、さらに、
    前記制御装置は、ファイル・システム要求数を前記不揮発性記憶装置処理サブモジュールに送り、続いて、前記チェックポイント用のチェックポイント番号を含むチェックポイント問合わせコマンドを前記不揮発性記憶装置処理サブモジュールに送って、チェックポイントで前記ファイル構造を前記記憶システムに記憶し始め、
    前記不揮発性記憶装置処理サブモジュールは、ファイル・システム要求数を前記不揮発性記憶装置に記憶し、随意的に、他のファイル・サーバによるファイル・システム要求数の不揮発性記憶装置用のインターフェイスを経由して、ファイル・システム要求数を別のファイル・サーバに送り、ファイル・システム要求数を前記ファイル・サブモジュールに送り、続いて前記ファイル・サブモジュールにチェックポイント・コマンドを送り、
    前記ファイル・サブモジュールはファイル・システム要求数を処理し、前記不揮発性記憶装置処理サブモジュールから前記チェックポイント・コマンドを受け取り次第、残りのサブモジュールを経由してある一定のオペレーションが完了するのを待ち、次に前記ディレクトリ・サブモジュールにチェックポイント・コマンドを送り、
    前記ディレクトリ・サブモジュールは、前記ファイル・サブモジュールから前記チェックポイント・コマンドを受け取り、チェックポイント・コマンドを前記ツリー・サブモジュールへ送り、
    前記ツリー・サブモジュールは、前記ディレクトリ・サブモジュールから前記チェックポイント・コマンドを受け取り、チェックポイント・コマンドを前記オブジェクト記憶サブモジュールへ送り、
    前記オブジェクト記憶サブモジュールは、前記ツリー・サブモジュールから前記チェックポイント・コマンドを受け取り、前記空きスペース割当てサブモジュールへチェックポイント問合せを送り、
    前記空きスペース割当てサブモジュールは、前記オブジェクト記憶サブモジュールから前記チェックポイント問合せを受け取り、前記チェックポイント問合せを受け取った後に開始されたオペレーションを含むチェックポイントに必要などのようなオペレーションも完了し、前記オブジェクト記憶サブモジュールへレスポンスを送り、
    前記オブジェクト記憶サブモジュールは、最後のチェックポイント後に修正された全てのオブジェクト示す更新済みオブジェクト・リストを含み、前記ファイル・システム・オブジェクトを前記記憶システムへ書き込む請求項1または2に記載のファイル・サーバ・システム
  25. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用の複数のノード、及び少なくとも1つのデータ・ブロックを含むファイル構造を維持するオブジェクト記憶サブモジュールを含む請求項1または2に記載のファイル・サーバ・システム
  26. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用の複数のノード、及び少なくとも1つのデータ・ブロックを含むファイル構造を維持するオブジェクト記憶サブモジュールを含み、各ノードは
    別のノードを指すポインタと、
    データ・ブロック・記述子と
    のうちの少なくとも1つを含む、請求項1または2に記載のファイル・サーバ・システム
  27. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用の複数のノード、及び少なくとも1つのデータ・ブロックを含むファイル構造を維持するオブジェクト記憶サブモジュールを含み、各ノードは前記ノードが作成されていた間のチェックポイントを示すチェックポイント番号を含む、請求項1または2に記載のファイル・サーバ・システム
  28. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用の複数のノード、及び少なくとも1つのデータ・ブロックを含むファイル構造を維持するオブジェクト記憶サブモジュールを含み、前記複数のノードは第1、及び第2のチェックポイント用情報を記憶する少なくとも2つのルート・ノードを含む、請求項1または2に記載のファイル・サーバ・システム
  29. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用の複数のノード、及び少なくとも1つのデータ・ブロックを含むファイル構造を維持するオブジェクト記憶サブモジュールを含み、前記複数のノードは第1、及び第2のチェックポイント用情報を記憶する少なくとも2つのルート・ノードを含み、前記2つのルート・ノードは前記記憶システムの隣接セクターに記憶される請求項1または2に記載のファイル・サーバ・システム
  30. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用の複数のノード、及び少なくとも1つのデータ・ブロックを含むファイル構造を維持するオブジェクト記憶サブモジュールを含み、前記複数のノードは第1、及び第2のチェックポイント用情報を記憶する少なくとも2つのルート・ノードを含み、各ルート・ノードは、
    前記ファイル・システム・オブジェクトがファイルなのか、ディレクトリなのかを示すオブジェクト型と、
    前記ファイル・システム・オブジェクトと関連付けられたデータ・ブロック数を示すオブジェクトの長さと、
    前記ルート・ノードが利用された回数を示す再利用カウントと、
    前記ルート・ノードの以前のインスタンス化を示すポインタと、
    前記ルート・ノードの次のインスタンス化を示すポインタと、
    データ・ブロックを指すポインタと、前記データ・ブロックが作成された相対的時間を示すチェックポイント番号と、前記データ・ブロックが零か、非零かを表示する標識とを含む少なくとも1つのデータ・ブロック記述子と、
    ファイル属性(イーノード)と
    のうちの少なくとも1つを含む請求項1または2に記載のファイル・サーバ・システム
  31. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用の複数のノード、及び少なくとも1つのデータ・ブロックを含むファイル構造を維持するオブジェクト記憶サブモジュールを含み、前記複数のノードは第1、及び第2のチェックポイント用情報を記憶する少なくとも2つのルート・ノード、及び少なくとも1つのデータ・ブロック記述子を含む少なくとも1つの直接ノードを含む、請求項1または2に記載のファイル・サーバ・システム
  32. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用の複数のノード、及び少なくとも1つのデータ・ブロックを含むファイル構造を維持するオブジェクト記憶サブモジュールを含み、前記複数のノードは第1、及び第2のチェックポイント用情報を記憶する少なくとも2つのルート・ノード、及び少なくとも1つのデータ・ブロック記述子を含む少なくとも1つの直接ノードを含み、前記ルート・ノードのうちの少なくとも1つは、前記直接ノードを指すポインタを含む、請求項1または2に記載のファイル・サーバ・システム
  33. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用の複数のノード、及び少なくとも1つのデータ・ブロックを含むファイル構造を維持するオブジェクト記憶サブモジュールを含み、前記複数のノードは第1、及び第2のチェックポイント用の情報を記憶する少なくとも2つのルート・ノード、及び少なくとも2つの関接ノードを含み、各間接ノードは、
    別の間接ノード、
    及び直接ノー
    うちの1つを指す少なくとも1つのポインタを含む請求項1または2に記載のファイル・サーバ・システム
  34. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用の複数のノード、及び少なくとも1つのデータ・ブロックを含むファイル構造を維持するオブジェクト記憶サブモジュールを含み、前記複数のノードは第1、及び第2のチェックポイント用情報を記憶する少なくとも2つのルート・ノード、及び少なくとも2つの関接ノードを含み、前記ルート・ノードのうちの少なくとも1つは間接ノードを指すポインタを含み、前記間接ノードは少なくとも2つの直接ノードを指すポインタを含む、請求項1または2に記載のファイル・サーバ・システム
  35. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用の複数のノード、及び少なくとも1つのデータ・ブロックを含むファイル構造を維持するオブジェクト記憶サブモジュールを含み、前記ファイル構造は、前記データ・ブロックが零か非零かを示す前記ファイル・システム・オブジェクトと関連付けれた各データ・ブロック用の標識を含む、請求項1または2に記載のファイル・サーバ・システム
  36. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用の複数のノード、及び少なくとも1つのデータ・ブロックを含むファイル構造を維持するオブジェクト記憶サブモジュールを含み、前記ファイル構造は、各ノード、及びデータ・ブロックが作成されたかどうかを示すノード、及びデータ・ブロック用の標識を含む、請求項1または2に記載のファイル・サーバ・システム
  37. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用の複数のノード、及び少なくとも1つのデータ・ブロックを含むファイル構造を維持するオブジェクト記憶サブモジュールを含み、前記オブジェクト記憶サブモジュールは、作動可能に接続し、必要に応じてノード、及びデータ・ブロックを作成してファイル・システム書込み要求に応じ、前記ノードまたはデータ・ブロックが作成されたことを示す各ノード、及びデータ・ブロック用の標識を設定する請求項1または2に記載のファイル・サーバ・システム
  38. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用の複数のノード、及び少なくとも1つのデータ・ブロックを含むファイル構造を維持するオブジェクト記憶サブモジュールと、前記記憶システムのスペースの割当てに関するデータを検索、及び更新する空きスペース割当てサブモジュールとを含み、前記オブジェクト記憶サブモジュールは、前記データ・ブロック用のスペースを前記空きスペース割当てサブモジュールにより割り当てることによってデータ・ブロックを作成する請求項1または2に記載のファイル・サーバ・システム
  39. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用のファイル構造を維持するオブジェクト記憶サブモジュールを含み、前記オブジェクト記憶サブモジュールは、作動可能に接続して、トランザクション・ログを維持する請求項1または2に記載のファイル・サーバ・システム
  40. 前記複数の連結されたサブモジュールは、階層的に配置され前記記憶システムに記憶される各ファイル・システム・オブジェクト用のファイル構造、及びトランザクション・ログを維持するオブジェクト記憶サブモジュールを含み、前記オブジェクト記憶サブモジュールは、作動可能に接続して、前記トランザクション・ログ、及び前記ファイル構造を前記記憶システムに時々記憶する請求項1または2に記載のファイル・サーバ・システム
  41. 前記複数のサブモジュールのうちの少なくとも1つは専用のハードウェアを含む、請求項1または2に記載のファイル・サーバ・システム
  42. 前記複数のサブモジュールのうちの少なくとも1つは専用のプロセッサを含む、請求項1または2に記載のファイル・サーバ・システム
  43. 前記記憶システムは
    磁気記憶装置、
    光磁気記憶装置、及び
    光記憶装置
    のうちの少なくとも1つを含む、請求項1または2に記載のファイル・サーバ・システム
JP2004550242A 2002-11-01 2003-10-30 ハードウェアベースのファイルシステムのための装置および方法 Expired - Lifetime JP4568115B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/286,015 US7457822B1 (en) 2002-11-01 2002-11-01 Apparatus and method for hardware-based file system
PCT/US2003/034463 WO2004042583A2 (en) 2002-11-01 2003-10-30 Apparatus and method for hardware-based file system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010015860A Division JP5007350B2 (ja) 2002-11-01 2010-01-27 ハードウェアベースのファイルシステムのための装置および方法

Publications (2)

Publication Number Publication Date
JP2006505069A JP2006505069A (ja) 2006-02-09
JP4568115B2 true JP4568115B2 (ja) 2010-10-27

Family

ID=32312060

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2004550242A Expired - Lifetime JP4568115B2 (ja) 2002-11-01 2003-10-30 ハードウェアベースのファイルシステムのための装置および方法
JP2010015860A Expired - Lifetime JP5007350B2 (ja) 2002-11-01 2010-01-27 ハードウェアベースのファイルシステムのための装置および方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2010015860A Expired - Lifetime JP5007350B2 (ja) 2002-11-01 2010-01-27 ハードウェアベースのファイルシステムのための装置および方法

Country Status (6)

Country Link
US (5) US7457822B1 (ja)
EP (4) EP2983094A1 (ja)
JP (2) JP4568115B2 (ja)
AU (1) AU2003287271A1 (ja)
CA (1) CA2504322C (ja)
WO (1) WO2004042583A2 (ja)

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US9678967B2 (en) * 2003-05-22 2017-06-13 Callahan Cellular L.L.C. Information source agent systems and methods for distributed data storage and management using content signatures
US7318074B2 (en) * 2003-11-17 2008-01-08 International Business Machines Corporation System and method for achieving deferred invalidation consistency
GB2411331A (en) 2004-02-19 2005-08-24 Trigenix Ltd Rendering user interface using actor attributes
DE102004022681B3 (de) * 2004-05-05 2005-09-22 Miele & Cie. Kg Höhenverstellbarer Fuß für Hausgeräte, wie Wasch- oder Geschirrspülgerät mit einem Schaft der standseitig mit einem Fußteller bestückt ist
GB0504326D0 (en) * 2005-03-02 2005-04-06 Symbian Software Ltd Dual mode operating system for a computing device
US20060206498A1 (en) * 2005-03-10 2006-09-14 Kabushiki Kaisha Toshiba Document information management apparatus, document information management method, and document information management program
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US9286198B2 (en) 2005-04-21 2016-03-15 Violin Memory Method and system for storage of data in non-volatile media
US7716445B2 (en) * 2005-11-04 2010-05-11 Oracle America, Inc. Method and system for storing a sparse file using fill counts
US8813052B2 (en) 2005-12-07 2014-08-19 Microsoft Corporation Cache metadata for implementing bounded transactional memory
US8225297B2 (en) 2005-12-07 2012-07-17 Microsoft Corporation Cache metadata identifiers for isolation and sharing
CN101346704B (zh) * 2005-12-22 2011-10-05 Nxp股份有限公司 具有可擦除块单元的存储器和定位具有指针信息地块的联结指针链
US8898652B2 (en) 2006-03-23 2014-11-25 Microsoft Corporation Cache metadata for accelerating software transactional memory
US7844632B2 (en) * 2006-10-18 2010-11-30 Oracle International Corporation Scalable DOM implementation
US8156494B2 (en) * 2006-10-18 2012-04-10 Oracle International Corporation Pluggable DOM implementation using an abstract API when receiving API calls for accessing different formats of XML data
US7756906B2 (en) * 2006-10-18 2010-07-13 Oracle International Corporation Schema-aware mid-tier binary XML implementation
US8312046B1 (en) 2007-02-28 2012-11-13 Netapp, Inc. System and method for enabling a data container to appear in a plurality of locations in a super-namespace
US8380944B2 (en) * 2007-03-01 2013-02-19 Douglas Dumitru Fast block device and methodology
US8412896B1 (en) * 2007-04-27 2013-04-02 Netapp, Inc. Method and system for transparent restore of junction file types
US9767120B2 (en) * 2008-01-16 2017-09-19 Hitachi Data Systems Engineering UK Limited Multi-way checkpoints in a data storage system
US7836018B2 (en) * 2007-10-24 2010-11-16 Emc Corporation Simultaneously accessing file objects through web services and file services
US9594844B2 (en) * 2007-11-08 2017-03-14 Microsoft Technology Licensing, Llc Selectively deleting items that are not of interest to a user
US8135746B2 (en) * 2008-07-30 2012-03-13 International Business Machines Corporation Management of symbolic links
US8239417B2 (en) 2008-08-07 2012-08-07 Armanta, Inc. System, method, and computer program product for accessing and manipulating remote datasets
US8315996B2 (en) * 2008-08-13 2012-11-20 International Business Machines Corporation Efficient management of customized functionality within shared data objects
US8620955B2 (en) * 2009-03-17 2013-12-31 Novell, Inc. Unified file access across multiple protocols
US9524396B2 (en) 2009-04-16 2016-12-20 International Business Machines Corporation System that maintains objects created and modified within designated directories on a per-client basis in a network filesystem
US8112607B2 (en) 2009-05-07 2012-02-07 Sap Ag Method and system for managing large write-once tables in shadow page databases
EP2273373A1 (en) * 2009-07-02 2011-01-12 Vodafone Holding GmbH Storing of frequently modified data in an IC card
US8601358B2 (en) * 2009-11-12 2013-12-03 Seagate Technology Llc Buffer transfer check on variable length data
US8224780B2 (en) 2010-06-15 2012-07-17 Microsoft Corporation Checkpoints for a file system
US8762433B1 (en) * 2010-10-18 2014-06-24 Lockheed Martin Corporation Integration architecture for software and hardware development
WO2012071335A1 (en) * 2010-11-22 2012-05-31 Bluearc Uk Limited File cloning and de-cloning in a data storage system
JP5776339B2 (ja) * 2011-06-03 2015-09-09 富士通株式会社 ファイル配布方法、ファイル配布システム、マスタサーバ、及びファイル配布プログラム
US9223799B1 (en) * 2012-06-29 2015-12-29 Emc Corporation Lightweight metadata sharing protocol for location transparent file access
CN103176752A (zh) * 2012-07-02 2013-06-26 晶天电子(深圳)有限公司 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器
US9355036B2 (en) 2012-09-18 2016-05-31 Netapp, Inc. System and method for operating a system to cache a networked file system utilizing tiered storage and customizable eviction policies based on priority and tiers
WO2014046650A1 (en) * 2012-09-19 2014-03-27 Bluearc Uk Limited System and method for managing deduplication using checkpoints in a file storage system
KR20140042431A (ko) * 2012-09-28 2014-04-07 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법
US9460097B2 (en) 2013-07-02 2016-10-04 Hitachi Data Systems Engineering UK Limited Method and apparatus for migration of a virtualized file system, data storage system for migration of a virtualized file system, and file server for use in a data storage system
EP2840481B1 (en) 2013-07-02 2017-09-06 Hitachi Data Systems Engineering UK Limited Apparatus and computer program product for virtualization of a file system
CN105579950B (zh) 2013-07-02 2019-04-19 日立数据系统工程英国有限公司 用于虚拟化文件系统的迁移的方法和装置、用于虚拟化文件系统的迁移的数据存储系统以及用于在数据存储系统中使用的文件服务器
EP2821914B1 (en) 2013-07-02 2017-09-13 Hitachi Data Systems Engineering UK Limited Method and apparatus for migration of a virtualized file system, data storage system for migration of a virtualized file system, and file server for use in a data storage system
US9311314B2 (en) 2013-08-27 2016-04-12 Netapp, Inc. System and method for migrating data from a source file system to a destination file system with use of attribute manipulation
US9300692B2 (en) 2013-08-27 2016-03-29 Netapp, Inc. System and method for implementing data migration while preserving security policies of a source filer
US9304997B2 (en) * 2013-08-27 2016-04-05 Netapp, Inc. Asynchronously migrating a file system
US20160041996A1 (en) 2014-08-11 2016-02-11 Netapp, Inc. System and method for developing and implementing a migration plan for migrating a file system
US9311331B2 (en) 2013-08-27 2016-04-12 Netapp, Inc. Detecting out-of-band (OOB) changes when replicating a source file system using an in-line system
US10860529B2 (en) 2014-08-11 2020-12-08 Netapp Inc. System and method for planning and configuring a file system migration
US10140174B2 (en) 2013-08-29 2018-11-27 Hewlett Packard Enterprise Development Lp Separating storage transaction logs
US10691636B2 (en) 2014-01-24 2020-06-23 Hitachi Vantara Llc Method, system and computer program product for replicating file system objects from a source file system to a target file system and for de-cloning snapshot-files in a file system
CN106104515A (zh) * 2014-01-24 2016-11-09 新加坡科技研究局 利用非易失性存储器的文件系统设计和故障恢复方法
WO2015135574A1 (en) 2014-03-11 2015-09-17 Hitachi Data Systems Engineering UK Limited Computer program product, method, apparatus and data storage system for controlling write operations in the data storage system
WO2015174972A1 (en) 2014-05-14 2015-11-19 Hitachi Data Systems Engineering UK Limited Method and an apparatus, and related computer-program products, for managing access request to one or more file systems
US9552260B2 (en) * 2014-06-02 2017-01-24 Red Hat, Inc. Using an object retain block in a virtual machine
US9720947B2 (en) 2014-08-04 2017-08-01 Cohesity, Inc. Backup operations in a tree-based distributed file system
US10262023B1 (en) * 2014-09-30 2019-04-16 EMC IP Holding Company LLC Managing data inconsistencies in file systems
US10318194B2 (en) 2014-10-02 2019-06-11 Hitachi Vantara Corporation Method and an apparatus, and related computer-program products, for managing access request in multi-tenancy environments
US10235078B2 (en) 2014-10-31 2019-03-19 Hewlett Packard Enterprise Development Lp Meta-data block within a non-volatile memory device
WO2016076903A1 (en) * 2014-11-10 2016-05-19 Hewlett Packard Enterprise Development Lp Online file system check
GB2533342A (en) * 2014-12-17 2016-06-22 Ibm Checkpointing module and method for storing checkpoints
US11755202B2 (en) 2015-01-20 2023-09-12 Ultrata, Llc Managing meta-data in an object memory fabric
WO2016118615A1 (en) 2015-01-20 2016-07-28 Ultrata Llc Object memory data flow instruction execution
US10691637B2 (en) 2015-02-05 2020-06-23 Hitachi Vantara Llc Management of cloned objects in file systems
US10698628B2 (en) 2015-06-09 2020-06-30 Ultrata, Llc Infinite memory fabric hardware implementation with memory
US9971542B2 (en) 2015-06-09 2018-05-15 Ultrata, Llc Infinite memory fabric streams and APIs
US9886210B2 (en) 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
US10742731B2 (en) 2015-06-10 2020-08-11 International Business Machines Corporation Maintaining service configuration consistency across nodes of a clustered file system
US9940213B2 (en) 2015-06-10 2018-04-10 International Business Machines Corporation Integrating external services with a clustered file system
US10515054B2 (en) 2015-06-19 2019-12-24 Hitachi Vantara Corporation Fast and efficient multi-threaded algorithm for deleting an arbitrarily wide and deep directory tree using limited system resources
WO2017005330A1 (en) 2015-07-09 2017-01-12 Hitachi Data Systems Engineering UK Limited Storage control system managing file-level and block-level storage services, and methods for controlling such storage control system
WO2017100281A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc Memory fabric software implementation
WO2017100288A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc. Memory fabric operations and coherency using fault tolerant objects
US10235063B2 (en) 2015-12-08 2019-03-19 Ultrata, Llc Memory fabric operations and coherency using fault tolerant objects
US10241676B2 (en) 2015-12-08 2019-03-26 Ultrata, Llc Memory fabric software implementation
WO2017196315A1 (en) * 2016-05-11 2017-11-16 Hitachi, Ltd. Data storage system and process for reducing read and write amplifications
US10949378B2 (en) * 2016-05-31 2021-03-16 Fujitsu Limited Automatic and customisable checkpointing
US9588976B1 (en) 2016-07-22 2017-03-07 Red Hat, Inc. Delayed allocation for a direct access non-volatile file system
US9886449B1 (en) 2016-07-22 2018-02-06 Red Hat, Inc. Delayed allocation for data object creation
WO2018075041A1 (en) * 2016-10-20 2018-04-26 Hitachi, Ltd. Data storage system and process for providing distributed storage in a scalable cluster system and computer program for such data storage system
WO2018075042A1 (en) * 2016-10-20 2018-04-26 Hitachi, Ltd. Data storage system, process, and computer program for de-duplication of distributed data in a scalable cluster system
US10416928B2 (en) 2017-06-15 2019-09-17 Hitachi, Ltd. Data storage system and process for data compression of distributed data in a scalable cluster system and computer program for such data storage system
US11126718B2 (en) * 2017-07-12 2021-09-21 Acronis International Gmbh Method for decrypting data encrypted by ransomware
CN107944010B (zh) * 2017-12-08 2020-11-17 新浪网技术(中国)有限公司 一种分布式文件系统中读写文件的方法和装置
US11144498B2 (en) 2019-03-08 2021-10-12 Netapp Inc. Defragmentation for objects within object store
US11016943B2 (en) * 2019-03-08 2021-05-25 Netapp, Inc. Garbage collection for objects within object store
US11899620B2 (en) 2019-03-08 2024-02-13 Netapp, Inc. Metadata attachment to storage objects within object store
KR20210034726A (ko) 2019-09-20 2021-03-31 삼성전자주식회사 메모리 모듈, 그것을 제어하는 메모리 제어기의 에러 정정 방법, 및 그것을포함하는 컴퓨팅 시스템
US11507541B2 (en) * 2020-01-21 2022-11-22 Microsoft Technology Licensing, Llc Method to model server-client sync conflicts using version trees
CN111459412B (zh) * 2020-03-30 2023-07-04 北京百度网讯科技有限公司 磁盘管理方法、装置以及电子设备
CN112732341B (zh) 2020-11-30 2023-08-01 北京百度网讯科技有限公司 车载计算平台的休眠控制方法、设备及可读存储介质

Family Cites Families (278)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3702462A (en) 1967-10-26 1972-11-07 Delaware Sds Inc Computer input-output system
US3588831A (en) 1968-11-13 1971-06-28 Honeywell Inf Systems Input/output controller for independently supervising a plurality of operations in response to a single command
US3699532A (en) 1970-04-21 1972-10-17 Singer Co Multiprogramming control for a data handling system
CS164932B2 (ja) 1971-09-07 1975-11-28
US4075691A (en) 1975-11-06 1978-02-21 Bunker Ramo Corporation Communication control unit
JPS6038740B2 (ja) 1976-04-19 1985-09-03 株式会社東芝 デ−タ処理装置
US4074072A (en) 1976-05-24 1978-02-14 Bell Telephone Laboratories, Incorporated Multiprocessor control of a partitioned switching network by control communication through the network
US4079452A (en) 1976-06-15 1978-03-14 Bunker Ramo Corporation Programmable controller with modular firmware for communication control
US4096567A (en) 1976-08-13 1978-06-20 Millard William H Information storage facility with multiple level processors
US4228496A (en) 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4080649A (en) 1976-12-16 1978-03-21 Honeywell Information Systems Inc. Balancing the utilization of I/O system processors
US4156907A (en) 1977-03-02 1979-05-29 Burroughs Corporation Data communications subsystem
US4101960A (en) 1977-03-29 1978-07-18 Burroughs Corporation Scientific processor
US4156906A (en) 1977-11-22 1979-05-29 Honeywell Information Systems Inc. Buffer store including control apparatus which facilitates the concurrent processing of a plurality of commands
JPS54111726A (en) 1978-02-22 1979-09-01 Hitachi Ltd Control unit for multiplex virtual memory
US4399503A (en) 1978-06-30 1983-08-16 Bunker Ramo Corporation Dynamic disk buffer control unit
US4253144A (en) 1978-12-21 1981-02-24 Burroughs Corporation Multi-processor communication network
US4240143A (en) 1978-12-22 1980-12-16 Burroughs Corporation Hierarchical multi-processor network for memory sharing
US4377843A (en) 1979-04-19 1983-03-22 Wescom Switching, Inc. Data distribution interface
FR2472234A1 (fr) 1979-12-21 1981-06-26 Philips Ind Commerciale Protocoles de communication geres par les modules de communication utilises dans un systeme de traitement de donnees reparti
US4333144A (en) 1980-02-05 1982-06-01 The Bendix Corporation Task communicator for multiple computer system
US4323967A (en) 1980-04-15 1982-04-06 Honeywell Information Systems Inc. Local bus interface for controlling information transfers between units in a central subsystem
US4488231A (en) 1980-09-29 1984-12-11 Honeywell Information Systems Inc. Communication multiplexer having dual microprocessors
US4414624A (en) 1980-11-19 1983-11-08 The United States Of America As Represented By The Secretary Of The Navy Multiple-microcomputer processing
US4385206A (en) 1980-12-16 1983-05-24 Stromberg-Carlson Corporation Programmable port sense and control signal preprocessor for a central office switching system
FR2500659B1 (fr) 1981-02-25 1986-02-28 Philips Ind Commerciale Dispositif pour l'allocation dynamique des taches d'un ordinateur multiprocesseur
JPS57155666A (en) 1981-03-20 1982-09-25 Fujitsu Ltd Instruction controlling system of vector processor
ZA821999B (en) 1981-03-31 1983-05-25 British Telecomm Computor or processor control systems
US4445174A (en) 1981-03-31 1984-04-24 International Business Machines Corporation Multiprocessing system including a shared cache
US4412285A (en) 1981-04-01 1983-10-25 Teradata Corporation Multiprocessor intercommunication system and method
JPS57164340A (en) 1981-04-03 1982-10-08 Hitachi Ltd Information processing method
US4394727A (en) 1981-05-04 1983-07-19 International Business Machines Corporation Multi-processor task dispatching apparatus
US4456957A (en) 1981-09-28 1984-06-26 Ncr Corporation Apparatus using a decision table for routing data among terminals and a host system
US4442487A (en) 1981-12-31 1984-04-10 International Business Machines Corporation Three level memory hierarchy using write and share flags
US4448419A (en) 1982-02-24 1984-05-15 Telnaes Inge S Electronic gaming device utilizing a random number generator for selecting the reel stop positions
US4500960A (en) 1982-06-28 1985-02-19 At&T Bell Laboratories Geographically distributed multiprocessor time-shared communication processing system
US4685125A (en) 1982-06-28 1987-08-04 American Telephone And Telegraph Company Computer system with tasking
US4614841A (en) 1982-06-29 1986-09-30 At&T Bell Laboratories Geographically distributed multiprocessor time-shared communication processing system
US4550368A (en) 1982-07-02 1985-10-29 Sun Microsystems, Inc. High-speed memory and memory management system
US4527232A (en) 1982-07-02 1985-07-02 Sun Microsystems, Inc. High-speed memory and memory management system
US4608631A (en) 1982-09-03 1986-08-26 Sequoia Systems, Inc. Modular computer system
US4626634A (en) 1982-09-30 1986-12-02 At&T Bell Laboratories Multiprocessor computing system featuring shared global control
US4590556A (en) 1983-01-17 1986-05-20 Tandy Corporation Co-processor combination
US4654654A (en) 1983-02-07 1987-03-31 At&T Bell Laboratories Data network acknowledgement arrangement
GB8304573D0 (en) 1983-02-18 1983-03-23 Micromite Ltd Microcomputer local area networks
US4536874A (en) 1983-07-21 1985-08-20 Stoffel James C Bandwidth efficient multipoint data communication system
JPS6054052A (ja) 1983-09-02 1985-03-28 Nec Corp 処理継続方式
US4558413A (en) 1983-11-21 1985-12-10 Xerox Corporation Software version management system
US4633245A (en) 1983-12-30 1986-12-30 International Business Machines Corporation Local area network interconnect switching system
US5255369A (en) 1984-03-10 1993-10-19 Encore Computer U.S., Inc. Multiprocessor system with reflective memory data transfer device
US4638427A (en) 1984-04-16 1987-01-20 International Business Machines Corporation Performance evaluation for an asymmetric multiprocessor system
JP2539352B2 (ja) 1984-06-20 1996-10-02 株式会社日立製作所 階層型多重計算機システム
US4710868A (en) 1984-06-29 1987-12-01 International Business Machines Corporation Interconnect scheme for shared memory local networks
US4604683A (en) 1984-12-10 1986-08-05 Advanced Computer Communications Communication controller using multiported random access memory
US5067071A (en) 1985-02-27 1991-11-19 Encore Computer Corporation Multiprocessor computer system employing a plurality of tightly coupled processors with interrupt vector bus
US4769772A (en) 1985-02-28 1988-09-06 Honeywell Bull, Inc. Automated query optimization method using both global and parallel local optimizations for materialization access planning for distributed databases
US4754395A (en) 1985-05-06 1988-06-28 Computer X, Inc. Network interface module with minimized data paths
US4694396A (en) 1985-05-06 1987-09-15 Computer X, Inc. Method of inter-process communication in a distributed data processing system
US5113523A (en) 1985-05-06 1992-05-12 Ncube Corporation High performance computer system
US4649473A (en) 1985-06-17 1987-03-10 International Business Machines Corporation Flexible data transmission for message based protocols
US4714995A (en) 1985-09-13 1987-12-22 Trw Inc. Computer integration system
US4719569A (en) 1985-10-11 1988-01-12 Sun Microsystems, Inc. Arbitrator for allocating access to data processing resources
US4825354A (en) 1985-11-12 1989-04-25 American Telephone And Telegraph Company, At&T Bell Laboratories Method of file access in a distributed processing computer network
JPS62192850A (ja) 1986-02-20 1987-08-24 Fujitsu Ltd ネツトワ−クシステムのデ−タ管理方式
JPS62192820A (ja) 1986-02-20 1987-08-24 Mitsubishi Electric Corp マン・マシン・インタフェイス管理方式
US4783705A (en) 1986-02-27 1988-11-08 Quantum Corporation High capacity disk file with embedded sector servo and SCSI interface
US4809169A (en) 1986-04-23 1989-02-28 Advanced Micro Devices, Inc. Parallel, multiple coprocessor computer architecture having plural execution modes
US4727538A (en) 1986-05-20 1988-02-23 American Telephone And Telegraph Company, At&T Bell Laboratories Information transfer method and arrangement
JPS62192850U (ja) 1986-05-28 1987-12-08
US4803621A (en) 1986-07-24 1989-02-07 Sun Microsystems, Inc. Memory access system
US4845609A (en) 1986-07-25 1989-07-04 Systech Corporation Computer communications subsystem using an embedded token-passing network
US4780821A (en) 1986-07-29 1988-10-25 International Business Machines Corp. Method for multiple programs management within a network having a server computer and a plurality of remote computers
US4819159A (en) 1986-08-29 1989-04-04 Tolerant Systems, Inc. Distributed multiprocess transaction processing system and method
US4783730A (en) 1986-09-19 1988-11-08 Datapoint Corporation Input/output control technique utilizing multilevel memory structure for processor and I/O communication
US4766534A (en) 1986-10-16 1988-08-23 American Telephone And Telegraph Company, At&T Bell Laboratories Parallel processing network and method
JPS63100562A (ja) 1986-10-17 1988-05-02 Hitachi Ltd フアイルシステム管理方式
US5764922A (en) 1986-11-04 1998-06-09 Unisys Corporation I/O system for off-loading operating system functions
JPH0821926B2 (ja) 1987-01-12 1996-03-04 株式会社東芝 情報通信ネツトワ−ク
US4887204A (en) 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US5133053A (en) 1987-02-13 1992-07-21 International Business Machines Corporation Interprocess communication queue location transparency
US4897781A (en) 1987-02-13 1990-01-30 International Business Machines Corporation System and method for using cached data at a local node after re-opening a file at a remote node in a distributed networking environment
US5001628A (en) 1987-02-13 1991-03-19 International Business Machines Corporation Single system image uniquely defining an environment for each user in a data processing system
US4805107A (en) 1987-04-15 1989-02-14 Allied-Signal Inc. Task scheduler for a fault tolerant multiple node processing system
JPS63200244U (ja) 1987-06-15 1988-12-23
US5201040A (en) * 1987-06-22 1993-04-06 Hitachi, Ltd. Multiprocessor system having subsystems which are loosely coupled through a random access storage and which each include a tightly coupled multiprocessor
US5113496A (en) 1987-08-04 1992-05-12 Mccalley Karl W Bus interconnection structure with redundancy linking plurality of groups of processors, with servers for each group mounted on chassis
CA1301294C (en) 1987-08-21 1992-05-19 Klaus Kuhlmann Modularly structured digital communications system
US5109515A (en) 1987-09-28 1992-04-28 At&T Bell Laboratories User and application program transparent resource sharing multiple computer interface architecture with kernel process level transfer of user requested services
JPH01108675A (ja) 1987-10-21 1989-04-25 Hitachi Ltd 電子伝票処理システム
JP2644780B2 (ja) 1987-11-18 1997-08-25 株式会社日立製作所 処理依頼機能を持つ並列計算機
IL88165A (en) 1987-12-21 1993-01-31 Honeywell Bull Apparatus and method for a data processing system having a peer relationship among a plurality of central processing units
US5050070A (en) 1988-02-29 1991-09-17 Convex Computer Corporation Multi-processor computer system having self-allocating processors
US4993017A (en) 1988-03-15 1991-02-12 Siemens Aktiengesellschaft Modularly structured ISDN communication system
US4875206A (en) 1988-03-31 1989-10-17 American Telephone And Telegraph Comopany, At&T Bell Laboratories High bandwidth interleaved buffer memory and control
US4872157A (en) 1988-03-31 1989-10-03 American Telephone And Telegraph Company, At&T Bell Laboratories Architecture and organization of a high performance metropolitan area telecommunications packet network
US4922486A (en) 1988-03-31 1990-05-01 American Telephone And Telegraph Company User to network interface protocol for packet communications networks
US4899333A (en) 1988-03-31 1990-02-06 American Telephone And Telegraph Company At&T Bell Laboratories Architecture of the control of a high performance packet switching distribution network
US4872159A (en) 1988-03-31 1989-10-03 American Telephone And Telegraph Company At&T Bell Laboratories Packet network architecture for providing rapid response time
US4914583A (en) 1988-04-13 1990-04-03 Motorola, Inc. Method of indicating processes resident within a cell of a data processing system
US5008814A (en) 1988-08-15 1991-04-16 Network Equipment Technologies, Inc. Method and apparatus for updating system software for a plurality of data processing units in a communication network
US4991133A (en) 1988-10-07 1991-02-05 International Business Machines Corp. Specialized communications processor for layered protocols
US5262965A (en) 1988-10-31 1993-11-16 Bts-Broadcast Television Systems, Inc. System and method for high speed computer graphics image computation using a parallel connected, asynchronous multiprocessor ring coupled to a synchronous special purpose video processing ring
EP0367182A3 (en) 1988-10-31 1992-07-22 Bts Broadcast Television Systems Gmbh High-speed digital computing system
IT1227360B (it) * 1988-11-18 1991-04-08 Honeywell Bull Spa Sistema multiprocessore di elaborazione dati con replicazione di dati globali.
US5073852A (en) 1988-12-16 1991-12-17 Cayman Systems, Inc. Network protocol translator including method and apparatus for reducing interprocess communication and data exchange overhead
US5210824A (en) 1989-03-03 1993-05-11 Xerox Corporation Encoding-format-desensitized methods and means for interchanging electronic document as appearances
JPH02297229A (ja) 1989-03-03 1990-12-07 Xerox Corp データベース・システム
US5036459A (en) 1989-03-09 1991-07-30 U.S. Philips Corporation Multi-processor computer system with distributed memory and an interprocessor communication mechanism, and method for operating such mechanism
US5058110A (en) 1989-05-03 1991-10-15 Ultra Network Technologies Protocol processor
US5155809A (en) 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
US5113522A (en) 1989-05-17 1992-05-12 International Business Machines Corporation Data processing system with system resource management for itself and for an associated alien processor
US5283868A (en) * 1989-05-17 1994-02-01 International Business Machines Corp. Providing additional system characteristics to a data processing system through operations of an application program, transparently to the operating system
US5359713A (en) 1989-06-01 1994-10-25 Legato Systems, Inc. Method and apparatus for enhancing synchronous I/O in a computer system with a non-volatile memory and using an acceleration device driver in a computer operating system
US5557798A (en) 1989-07-27 1996-09-17 Tibco, Inc. Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes
US5113500A (en) 1989-08-23 1992-05-12 Unisys Corporation Multiple cooperating and concurrently operating processors using individually dedicated memories
US5371885A (en) 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
EP0490988A4 (en) * 1989-09-08 1993-05-12 Auspex Systems, Inc. Enhanced vmebus protocol utilizing pseudosynchronous handshaking and block mode data transfer
US5163131A (en) 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
WO1991004540A1 (en) 1989-09-08 1991-04-04 Auspex Systems, Inc. Multiple facility operating system architecture
US5185857A (en) * 1989-12-13 1993-02-09 Rozmanith A Martin Method and apparatus for multi-optional processing, storing, transmitting and retrieving graphical and tabular data in a mobile transportation distributable and/or networkable communications and/or data processing system
US5276860A (en) * 1989-12-19 1994-01-04 Epoch Systems, Inc. Digital data processor with improved backup storage
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5175825A (en) 1990-02-02 1992-12-29 Auspex Systems, Inc. High speed, flexible source/destination data burst direct memory access controller
AU6431990A (en) 1990-02-02 1991-08-21 Auspex Systems, Inc. Bus locking fifo multi-processor communication system
US5118975A (en) 1990-03-05 1992-06-02 Thinking Machines Corporation Digital clock buffer circuit providing controllable delay
US5218697A (en) 1990-04-18 1993-06-08 Microsoft Corporation Method and system for networking computers having varying file architectures
EP0463207B1 (de) * 1990-06-26 1995-03-08 Siemens Aktiengesellschaft Programmgesteuerte Kommunikationsanlage
CA2045799C (en) 1990-07-11 1999-03-23 Kenneth L. Thompson File system with read/write and read only storage
AU8449991A (en) 1990-07-20 1992-02-18 Temple University - Of The Commonwealth System Of Higher Education System for high-level virtual computer with heterogeneous operating systems
JP2888958B2 (ja) 1990-10-20 1999-05-10 富士通株式会社 部分書き換え可能な記憶媒体におけるファイル管理方式
US5673394A (en) 1990-10-31 1997-09-30 Microsoft Corporation Method of sharing memory between an operating system and an application program
US5102824A (en) * 1990-11-05 1992-04-07 California Institute Of Technology Method of manufacturing a distributed light emitting diode flat-screen display for use in televisions
JPH05108443A (ja) * 1991-10-18 1993-04-30 Nec Field Service Ltd 情報処理装置のフアイル管理方式
US5367698A (en) 1991-10-31 1994-11-22 Epoch Systems, Inc. Network file migration system
US5243699A (en) 1991-12-06 1993-09-07 Maspar Computer Corporation Input/output system for parallel processing arrays
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
CA2131627A1 (en) 1992-03-09 1993-09-16 Yu-Ping Cheng High-performance non-volatile ram protected write cache accelerator system
JP3213766B2 (ja) 1992-03-16 2001-10-02 株式会社日立製作所 レプリケートファイル更新システム
WO1994014115A2 (en) * 1992-12-01 1994-06-23 Microsoft Corporation A method and system for in-place interaction with embedded objects
GB9300913D0 (en) * 1993-01-19 1993-03-10 Madge Networks Ltd Interface apparatus
US5519853A (en) * 1993-03-11 1996-05-21 Legato Systems, Inc. Method and apparatus for enhancing synchronous I/O in a computer system with a non-volatile memory and using an acceleration device driver in a computer operating system
US5548724A (en) * 1993-03-22 1996-08-20 Hitachi, Ltd. File server system and file access control method of the same
DE69329709D1 (de) 1993-04-29 2001-01-04 Ibm Verfahren und Gerät für Mehrfachübertragung von Daten in einem Kommunikationssystem
ATE222384T1 (de) * 1993-06-03 2002-08-15 Network Appliance Inc Verfahren und dateisystem zur zuordnung von datei-blöcken zu speicherplatz in einem raid- plattensystem
US7174352B2 (en) * 1993-06-03 2007-02-06 Network Appliance, Inc. File system image transfer
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
DE69425658T2 (de) 1993-06-03 2001-04-19 Network Appliance Inc Anordnung eines dateisystems zum beschreiben beliebiger bereiche
US5963962A (en) * 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
DE69434381T2 (de) 1993-06-04 2006-01-19 Network Appliance, Inc., Sunnyvale Verfahren zur Paritätsdarstellung in einem Raid-Untersystem unter Verwendung eines nichtflüchtigen Speichers
US5613105A (en) * 1993-06-30 1997-03-18 Microsoft Corporation Efficient storage of objects in a file system
US5699518A (en) 1993-11-29 1997-12-16 Microsoft Corporation System for selectively setting a server node, evaluating to determine server node for executing server code, and downloading server code prior to executing if necessary
JPH07175710A (ja) * 1993-12-20 1995-07-14 Canon Inc データ管理方法及び装置
US5701462A (en) 1993-12-29 1997-12-23 Microsoft Corporation Distributed file system providing a unified name space with efficient name resolution
US5608909A (en) * 1994-04-15 1997-03-04 Microsoft Corporation Method and system for caching presentation data of a source object in a presentation cache
US5960180A (en) 1994-09-07 1999-09-28 Adaptec, Inc. Host adapter integrated circuit having autoaccess pause
US5657455A (en) 1994-09-07 1997-08-12 Adaptec, Inc. Status indicator for a host adapter
US5835953A (en) 1994-10-13 1998-11-10 Vinca Corporation Backup system that takes a snapshot of the locations in a mass storage device that has been identified for updating prior to updating
JPH08227371A (ja) * 1994-10-31 1996-09-03 Sony Corp データ管理方法
US5745752A (en) * 1994-12-13 1998-04-28 Microsoft Corporation Dual namespace client having long and short filenames
CA2167790A1 (en) * 1995-01-23 1996-07-24 Donald S. Maier Relational database system and method with high data availability during table data restructuring
US5513314A (en) * 1995-01-27 1996-04-30 Auspex Systems, Inc. Fault tolerant NFS server system and mirroring protocol
US5630059A (en) 1995-02-06 1997-05-13 International Business Machines Corporation Expedited message transfer in a multi-nodal data processing system
US5819306A (en) 1995-02-14 1998-10-06 General Magic Shadow mechanism for a modifiable object oriented system
US5930831A (en) 1995-02-23 1999-07-27 Powerquest Corporation Partition manipulation architecture supporting multiple file systems
JP3123012B2 (ja) * 1995-03-02 2001-01-09 松下電器産業株式会社 マルチメディアサーバー
US6453325B1 (en) * 1995-05-24 2002-09-17 International Business Machines Corporation Method and means for backup and restoration of a database system linked to a system for filing data
US5701491A (en) 1995-05-31 1997-12-23 Microsoft Corporation, Inc. Method and system for transitioning the network mode of a workstation
US5675782A (en) 1995-06-06 1997-10-07 Microsoft Corporation Controlling access to objects on multiple operating systems
US5761669A (en) 1995-06-06 1998-06-02 Microsoft Corporation Controlling access to objects on multiple operating systems
US5628005A (en) * 1995-06-07 1997-05-06 Microsoft Corporation System and method for providing opportunistic file access in a network environment
US6275867B1 (en) 1995-09-12 2001-08-14 International Business Machines Corporation Operation-partitioned off-loading of operations in a distributed environment
US5845280A (en) 1995-09-25 1998-12-01 Microsoft Corporation Method and apparatus for transmitting a file in a network using a single transmit request from a user-mode process to a kernel-mode process
US5892917A (en) * 1995-09-27 1999-04-06 Microsoft Corporation System for log record and log expansion with inserted log records representing object request for specified object corresponding to cached object copies
US5802288A (en) 1995-10-26 1998-09-01 International Business Machines Corporation Integrated communications for pipelined computers
US5923846A (en) 1995-11-06 1999-07-13 Microsoft Corporation Method of uploading a message containing a file reference to a server and downloading a file from the server using the file reference
JPH103421A (ja) * 1995-11-20 1998-01-06 Matsushita Electric Ind Co Ltd 仮想ファイル管理システム
US5742818A (en) * 1995-12-15 1998-04-21 Microsoft Corporation Method and system of converting data from a source file system to a target file system
US5754771A (en) * 1996-02-12 1998-05-19 Sybase, Inc. Maximum receive capacity specifying query processing client/server system replying up to the capacity and sending the remainder upon subsequent request
US5794230A (en) 1996-03-15 1998-08-11 Microsoft Corporation Method and system for creating and searching directories on a server
US5907703A (en) * 1996-05-08 1999-05-25 Mijenix Corporation Device driver for accessing computer files
US6901509B1 (en) 1996-05-14 2005-05-31 Tumbleweed Communications Corp. Apparatus and method for demonstrating and confirming the status of a digital certificates and other data
US5867657A (en) * 1996-06-06 1999-02-02 Microsoft Corporation Distributed scheduling in a multiple data server system
US5958061A (en) 1996-07-24 1999-09-28 Transmeta Corporation Host microprocessor with apparatus for temporarily holding target processor state
US5889952A (en) * 1996-08-14 1999-03-30 Microsoft Corporation Access check system utilizing cached access permissions
US5832205A (en) 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US5926832A (en) 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
JPH10124400A (ja) * 1996-10-23 1998-05-15 Sony Corp データ処理装置及びデータ記録媒体のアクセス方法
US6034963A (en) 1996-10-31 2000-03-07 Iready Corporation Multiple network protocol encoder/decoder and data processor
US6487644B1 (en) 1996-11-22 2002-11-26 Veritas Operating Corporation System and method for multiplexed data back-up to a storage tape and restore operations using client identification tags
US6006228A (en) 1996-12-11 1999-12-21 Ncr Corporation Assigning security levels to particular documents on a document by document basis in a database
SG77151A1 (en) 1997-01-09 2000-12-19 Sun Microsystems Inc Full-featured special purpose network server
US5905855A (en) * 1997-02-28 1999-05-18 Transmeta Corporation Method and apparatus for correcting errors in computer systems
US5950225A (en) 1997-02-28 1999-09-07 Network Appliance, Inc. Fly-by XOR for generating parity for data gleaned from a bus
US5929655A (en) 1997-03-25 1999-07-27 Adaptec, Inc. Dual-purpose I/O circuit in a combined LINK/PHY integrated circuit
KR20010020250A (ko) 1997-05-08 2001-03-15 코야마 리오 객체 지향의 프로그래밍 언어를 위한 하드웨어 가속기
US6012107A (en) * 1997-05-22 2000-01-04 Adaptec, Inc. Hardware control block delivery queues for host adapters and other devices with onboard processors
US6044438A (en) 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
US6088740A (en) 1997-08-05 2000-07-11 Adaptec, Inc. Command queuing system for a hardware accelerated command interpreter engine
US5931920A (en) 1997-08-05 1999-08-03 Adaptec, Inc. Command interpreter system in an I/O controller
US6105075A (en) 1997-08-05 2000-08-15 Adaptec, Inc. Scatter gather memory system for a hardware accelerated command interpreter engine
US6230200B1 (en) * 1997-09-08 2001-05-08 Emc Corporation Dynamic modeling for resource allocation in a file server
US6192408B1 (en) * 1997-09-26 2001-02-20 Emc Corporation Network file server sharing local caches of file access information in data processors assigned to respective file systems
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6427171B1 (en) 1997-10-14 2002-07-30 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US6389479B1 (en) * 1997-10-14 2002-05-14 Alacritech, Inc. Intelligent network interface device and system for accelerated communication
US6470415B1 (en) 1999-10-13 2002-10-22 Alacritech, Inc. Queue system involving SRAM head, SRAM tail and DRAM body
US6427173B1 (en) 1997-10-14 2002-07-30 Alacritech, Inc. Intelligent network interfaced device and system for accelerated communication
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6591302B2 (en) 1997-10-14 2003-07-08 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US5941969A (en) * 1997-10-22 1999-08-24 Auspex Systems, Inc. Bridge for direct data storage device access
US6516351B2 (en) 1997-12-05 2003-02-04 Network Appliance, Inc. Enforcing uniform file-locking for diverse file-locking protocols
US6081883A (en) 1997-12-05 2000-06-27 Auspex Systems, Incorporated Processing system with dynamically allocatable buffer memory
WO1999042934A2 (en) 1998-02-20 1999-08-26 Storm Systems, Llc File system performance enhancement
US6457130B2 (en) 1998-03-03 2002-09-24 Network Appliance, Inc. File access control in a multi-protocol file server
US6317844B1 (en) 1998-03-10 2001-11-13 Network Appliance, Inc. File server storage arrangement
US6269252B1 (en) 1998-05-27 2001-07-31 Motorola, Inc. Programmable bridging apparatus to connect multiple networks of different protocols
US6085278A (en) 1998-06-02 2000-07-04 Adaptec, Inc. Communications interface adapter for a computer system including posting of system interrupt status
US6070200A (en) * 1998-06-02 2000-05-30 Adaptec, Inc. Host adapter having paged data buffers for continuously transferring data between a system bus and a peripheral bus
US6765901B1 (en) 1998-06-11 2004-07-20 Nvidia Corporation TCP/IP/PPP modem
US6279011B1 (en) 1998-06-19 2001-08-21 Network Appliance, Inc. Backup and restore for heterogeneous file server environment
US6263445B1 (en) 1998-06-30 2001-07-17 Emc Corporation Method and apparatus for authenticating connections to a storage system coupled to a network
US6604236B1 (en) 1998-06-30 2003-08-05 Iora, Ltd. System and method for generating file updates for files stored on read-only media
US6192375B1 (en) * 1998-07-09 2001-02-20 Intel Corporation Method and apparatus for managing files in a storage medium
US6119244A (en) 1998-08-25 2000-09-12 Network Appliance, Inc. Coordinating persistent status information with multiple file servers
US6425034B1 (en) 1998-10-30 2002-07-23 Agilent Technologies, Inc. Fibre channel controller having both inbound and outbound control units for simultaneously processing both multiple inbound and outbound sequences
US6871224B1 (en) * 1999-01-04 2005-03-22 Cisco Technology, Inc. Facility to transmit network management data to an umbrella management system
US6564252B1 (en) * 1999-03-11 2003-05-13 Microsoft Corporation Scalable storage system with unique client assignment to storage server partitions
US6446141B1 (en) 1999-03-25 2002-09-03 Dell Products, L.P. Storage server system including ranking of data source
US6442617B1 (en) 1999-03-31 2002-08-27 3Com Corporation Method and system for filtering multicast packets in a peripheral component environment
US6961749B1 (en) 1999-08-25 2005-11-01 Network Appliance, Inc. Scalable file server with highly available pairs
US6785822B1 (en) 1999-09-16 2004-08-31 International Business Machines Corporation System and method for role based dynamic configuration of user profiles
DE60038448T2 (de) * 1999-10-14 2009-04-02 Bluearc Uk Ltd. Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen
US6862613B1 (en) * 2000-01-10 2005-03-01 Sun Microsystems, Inc. Method and apparatus for managing operations of clustered computer systems
US6484177B1 (en) 2000-01-13 2002-11-19 International Business Machines Corporation Data management interoperability methods for heterogeneous directory structures
US6834324B1 (en) 2000-04-10 2004-12-21 Storage Technology Corporation System and method for virtual tape volumes
US6894976B1 (en) * 2000-06-15 2005-05-17 Network Appliance, Inc. Prevention and detection of IP identification wraparound errors
JP4115093B2 (ja) * 2000-07-06 2008-07-09 株式会社日立製作所 計算機システム
US6766430B2 (en) 2000-07-06 2004-07-20 Hitachi, Ltd. Data reallocation among storage systems
US6728897B1 (en) 2000-07-25 2004-04-27 Network Appliance, Inc. Negotiating takeover in high availability cluster
US6640233B1 (en) 2000-08-18 2003-10-28 Network Appliance, Inc. Reserving file system blocks
US6910154B1 (en) 2000-08-18 2005-06-21 Network Appliance, Inc. Persistent and reliable delivery of event messages
US6751635B1 (en) 2000-08-18 2004-06-15 Network Appliance, Inc. File deletion and truncation using a zombie file space
JP2002132455A (ja) * 2000-10-25 2002-05-10 Hitachi Ltd キャッシュマネジャー及びこれを含むコンピュータシステム
US6862648B2 (en) * 2000-10-30 2005-03-01 Sun Microsystems, Inc. Interface emulation for storage devices
US6618794B1 (en) 2000-10-31 2003-09-09 Hewlett-Packard Development Company, L.P. System for generating a point-in-time copy of data in a data storage system
US7003780B2 (en) * 2000-12-11 2006-02-21 International Business Machines Corporation Method and an apparatus to extend the logic volume manager model to allow device management plug-ins
US6868414B2 (en) * 2001-01-03 2005-03-15 International Business Machines Corporation Technique for serializing data structure updates and retrievals without requiring searchers to use locks
WO2002056181A2 (en) * 2001-01-11 2002-07-18 Force Communications Inc Z File switch and switched file system
US6907457B2 (en) 2001-01-25 2005-06-14 Dell Inc. Architecture for access to embedded files using a SAN intermediate device
US6871295B2 (en) 2001-01-29 2005-03-22 Adaptec, Inc. Dynamic data recovery
US7039827B2 (en) 2001-02-13 2006-05-02 Network Appliance, Inc. Failover processing in a storage system
US20040233910A1 (en) 2001-02-23 2004-11-25 Wen-Shyen Chen Storage area network using a data communication protocol
US6799284B1 (en) 2001-02-28 2004-09-28 Network Appliance, Inc. Reparity bitmap RAID failure recovery
US6728735B1 (en) * 2001-03-12 2004-04-27 Network Appliance, Inc. Restartable dump that produces a consistent filesystem on tapes
US6668264B1 (en) 2001-04-03 2003-12-23 Network Appliance, Inc. Resynchronization of a target volume with a source volume
US6748380B2 (en) 2001-05-14 2004-06-08 International Business Machines Corporation Method, system, and program product for permission to access software
US6928478B1 (en) 2001-06-25 2005-08-09 Network Appliance, Inc. Method and apparatus for implementing a MAC address pool for assignment to a virtual interface aggregate
US6944785B2 (en) 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
US6920579B1 (en) 2001-08-20 2005-07-19 Network Appliance, Inc. Operator initiated graceful takeover in a node cluster
US7017084B2 (en) * 2001-09-07 2006-03-21 Network Appliance Inc. Tracing method and apparatus for distributed environments
US6898728B2 (en) * 2001-09-25 2005-05-24 Sun Microsystems, Inc. System domain targeted, configurable interconnection
US6895429B2 (en) 2001-12-28 2005-05-17 Network Appliance, Inc. Technique for enabling multiple virtual filers on a single filer to participate in multiple address spaces with overlapping network addresses
US6748510B1 (en) 2002-02-28 2004-06-08 Network Appliance, Inc. System and method for verifying disk configuration
US7039828B1 (en) 2002-02-28 2006-05-02 Network Appliance, Inc. System and method for clustered failover without network support
US7039663B1 (en) 2002-04-19 2006-05-02 Network Appliance, Inc. System and method for checkpointing and restarting an asynchronous transfer of data between a source and destination snapshot
US7010553B2 (en) * 2002-03-19 2006-03-07 Network Appliance, Inc. System and method for redirecting access to a remote mirrored snapshot
US7007046B2 (en) * 2002-03-19 2006-02-28 Network Appliance, Inc. Format for transmission file system information between a source and a destination
US6993539B2 (en) * 2002-03-19 2006-01-31 Network Appliance, Inc. System and method for determining changes in two snapshots and for transmitting changes to destination snapshot
US7225204B2 (en) 2002-03-19 2007-05-29 Network Appliance, Inc. System and method for asynchronous mirroring of snapshots at a destination using a purgatory directory and inode mapping
US6981104B2 (en) 2002-07-12 2005-12-27 Hewlett-Packard Development Company, L.P. Method for conducting checkpointing within a writeback cache
US6934822B2 (en) 2002-08-06 2005-08-23 Emc Corporation Organization of multiple snapshot copies in a data storage system
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US6983296B1 (en) * 2002-08-12 2006-01-03 Network Appliance, Inc. System and method for tracking modified files in a file system
US7080223B2 (en) 2002-10-15 2006-07-18 International Business Machines Corporation Apparatus and method to manage and copy computer files
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
JP4199993B2 (ja) 2002-11-27 2008-12-24 株式会社日立製作所 スナップショット取得方法
US7373366B1 (en) 2005-06-10 2008-05-13 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for taking and managing snapshots of a storage volume

Also Published As

Publication number Publication date
AU2003287271A8 (en) 2004-06-07
JP2010102738A (ja) 2010-05-06
EP2983094A1 (en) 2016-02-10
EP1918836B1 (en) 2019-07-24
US8224877B2 (en) 2012-07-17
US20080040385A1 (en) 2008-02-14
EP1556795A2 (en) 2005-07-27
EP2983093A1 (en) 2016-02-10
WO2004042583A2 (en) 2004-05-21
EP1918836A1 (en) 2008-05-07
JP2006505069A (ja) 2006-02-09
US20140074808A1 (en) 2014-03-13
US9542310B2 (en) 2017-01-10
EP1918836B8 (en) 2019-09-11
CA2504322A1 (en) 2004-05-21
WO2004042583A8 (en) 2005-02-24
CA2504322C (en) 2015-07-14
US20140108709A1 (en) 2014-04-17
AU2003287271A1 (en) 2004-06-07
US8639731B2 (en) 2014-01-28
US20120271799A1 (en) 2012-10-25
JP5007350B2 (ja) 2012-08-22
US7457822B1 (en) 2008-11-25
US9753848B2 (en) 2017-09-05

Similar Documents

Publication Publication Date Title
JP4568115B2 (ja) ハードウェアベースのファイルシステムのための装置および方法
US10198356B2 (en) Distributed cache nodes to send redo log records and receive acknowledgments to satisfy a write quorum requirement
US8010503B1 (en) System and method for restoring a single data stream file from a snapshot
US7730213B2 (en) Object-based storage device with improved reliability and fast crash recovery
US6931450B2 (en) Direct access from client to storage device
US20180046552A1 (en) Variable data replication for storage implementing data backup
KR101827239B1 (ko) 분산 데이터 시스템들을 위한 전 시스템에 미치는 체크포인트 회피
JP4336129B2 (ja) 複数のスナップショットを管理するシステム及び方法
JP4168626B2 (ja) 記憶装置間のファイル移行方法
US7051050B2 (en) System and method for restoring a single file from a snapshot
KR101137299B1 (ko) 스냅샷을 제공하는 파일 시스템에 대한 계층적 저장 관리
US9442955B1 (en) Managing delete operations in files of file systems
US9311333B1 (en) Managing files of file systems
US9460177B1 (en) Managing updating of metadata of file systems
US8209289B1 (en) Technique for accelerating the creation of a point in time representation of a virtual file system
US10223184B1 (en) Individual write quorums for a log-structured distributed storage system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061023

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061023

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090728

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091027

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091104

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091126

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100408

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100730

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100806

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4568115

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130813

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130813

Year of fee payment: 3

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130813

Year of fee payment: 3

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130813

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term