JP2012123793A - リダイレクト・オン・ライト・ファイル・システムにおける複数のコンテキストを提供する方法、装置およびコンピュータ・プログラム - Google Patents

リダイレクト・オン・ライト・ファイル・システムにおける複数のコンテキストを提供する方法、装置およびコンピュータ・プログラム Download PDF

Info

Publication number
JP2012123793A
JP2012123793A JP2011247465A JP2011247465A JP2012123793A JP 2012123793 A JP2012123793 A JP 2012123793A JP 2011247465 A JP2011247465 A JP 2011247465A JP 2011247465 A JP2011247465 A JP 2011247465A JP 2012123793 A JP2012123793 A JP 2012123793A
Authority
JP
Japan
Prior art keywords
data
data object
copy
update
objects
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.)
Granted
Application number
JP2011247465A
Other languages
English (en)
Other versions
JP2012123793A5 (ja
JP5658124B2 (ja
Inventor
Solomon Andrew
アンドリュー・ソロモン
Jones Craft David
デイビット・ジョーンズ・クラフト
N Kumar Manoj
マノージ・エヌ・クマール
Elizabeth Adkins Janet
ジャネット・エリザベス・アドキンス
Zhijun Zhang
ジュン・チャン
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2012123793A publication Critical patent/JP2012123793A/ja
Publication of JP2012123793A5 publication Critical patent/JP2012123793A5/ja
Application granted granted Critical
Publication of JP5658124B2 publication Critical patent/JP5658124B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1865Transactional file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】リダイレクト・オン・ライト・ファイル・システムにおける複数のコンテキストを提供する。
【解決手段】リダイレクト・オン・ライト・ファイル・システム内の複数のデータ・オブジェクトの現在の一貫性スナップショットを永続的に記憶するためのコミットを開始する。複数のデータ・オブジェクトの各々は、第1のコンテキストを有する、第1のコピーを有する。現在の一貫性スナップショットを記憶するためにコミットしている最中に、複数のデータ・オブジェクトのうちのデータ・オブジェクトに対する更新を受信すると、第1のコピーからデータ・オブジェクトのデータの第2のコピーを作成する。データの第2のコピーは少なくとも2つのコンテキストのうちの第2のコンテキストを有する。データ・オブジェクトに対する更新の受信に応答して、更新に基づきデータ・オブジェクトのデータの第2のコピーを更新する。
【選択図】図2

Description

本発明は、概してコンピュータの分野に関し、より具体的には、リダイレクト・オン・ライト・ファイル・システムにおけるデータ・バックアップに関する。
ファイル・システムは、システム・クラッシュが発生した場合にその内部の一貫性を確実にするために種々の方法を用いる。1つのアプローチは、ファイル・システムが数秒ごとにボトム・アップ順でディスク上の新しい位置に変更データを書き込むことである。その内部に記憶されたデータのこれらのビューは一貫性スナップショットと呼ばれる。システム・クラッシュの後、ファイル・システムは、一貫性があることが保証されている、ファイル・システムの最後の一貫性スナップショットの上部から起動する。
一貫性スナップショットが書き込まれている間に、ユーザがファイル・システムを新しく改変しようとする可能性があろう。一貫性スナップショットが不揮発性機械可読媒体(例えば、ハード・ディスク)上での記憶のためにコミットされるまで、このような改変をブロックすることは容易であろう。しかし、このアプローチは受け入れられるものではない。なぜなら、このようなアプローチは、一貫性スナップショットがユーザに対して非透過的となってしまうだろうからである。特に、このアプローチは、一貫性スナップショットが記憶のためにコミットされている間、全ファイル・システムを数秒ごとにフリーズさせてしまう可能性がある。
本発明による実施形態には、リダイレクト・オン・ライト・ファイル・システム内の複数のデータ・オブジェクトの現在の一貫性スナップショットを不揮発性機械可読媒体に記憶するためのコミットを開始することであって、複数のデータ・オブジェクトの各々は、コミット中のコンテキストを有する、複数のデータ・オブジェクトのデータの第1のコピーを有する、開始することを含む方法が含まれる。方法は、他の一貫性スナップショットの世代値に対して一意的である世代値を、現在の一貫性スナップショットに付与することも含む。方法は、現在の一貫性スナップショットを記憶するためにコミットしている最中に、複数のデータ・オブジェクトのうちのデータ・オブジェクトに対する更新を受信することを含む。方法は、データ・オブジェクトに対する更新を受信することに応答して、データ・オブジェクトのための世代値をインクリメントすることも含む。方法は、データ・オブジェクトに対する更新を受信することに応答して、データ・オブジェクトの世代値から導き出される世代値を更新に関連付けることを含む。同様に、データ・オブジェクトに対する更新を受信することに応答して、方法は、データ・オブジェクトのデータの第1のコピーからコピーされる、データ・オブジェクトのデータの第2のコピーを作成することを含む。データ・オブジェクトのデータの第2のコピーは更新中のコンテキストを有する。同様に、データ・オブジェクトに対する更新を受信することに応答して、方法は、データ・オブジェクトのデータの第1のコピーを更新することとは独立に、更新に基づきデータ・オブジェクトのデータの第2のコピーを更新することを含む。
本発明による実施形態には、リダイレクト・オン・ライト・ファイル・システム内の複数のデータ・オブジェクトの現在の一貫性スナップショットを永続的に記憶するためのコミットを開始することであって、複数のデータ・オブジェクトの各々は、異なるコンテキストを有する、複数のデータ・オブジェクトのデータの複数のコピーを有するように構成可能である、開始することを含む方法が含まれる。複数のデータ・オブジェクトの各々は、少なくとも2つのコンテキストのうちの第1のコンテキストを有する、データの少なくとも2つのコピーのうちの第1のコピーを有する。方法は、現在の一貫性スナップショットを記憶するためにコミットしている最中に、複数のデータ・オブジェクトのうちのデータ・オブジェクトに対する更新を受信することを含む。データ・オブジェクトに対する更新の受信に応答して、方法は、第1のコピーからデータ・オブジェクトのデータの第2のコピーを作成することを含む。データの第2のコピーは少なくとも2つのコンテキストのうちの第2のコンテキストを有する。データ・オブジェクトに対する更新の受信に応答して、方法は、更新に基づきデータ・オブジェクトのデータの第2のコピーを更新することも含む。
いくつかの実施形態例による、リダイレクト・オン・ライト・ファイル・システム内のデータ・オブジェクトのための複数のコンテキストを提供するクラスタ化ファイル・システム構成の概念図である。 いくつかの実施形態例による、リダイレクト・オン・ライト・ファイル・システム内のデータ・オブジェクトのための複数のコンテキストを提供するクラスタ化ファイル・システム構成のより詳細な概念図である。 いくつかの実施形態による、クラスタ化ファイル・システム内に記憶されるデータ・オブジェクトのためのバッファ・ヘッダの例を示す図である。 いくつかの実施形態による、データ・オブジェクトの複数の世代に対して一貫性スナップショットをコミットするタイムラインの例を示す図である。 いくつかの実施形態例による、リダイレクト・オン・ライト・ファイル・システム内のデータ・オブジェクトのための複数のコンテキストを提供する作業のフローチャートである。 いくつかの実施形態例による、リダイレクト・オン・ライト・ファイル・システム内のデータ・オブジェクトのための複数のコンテキストを提供する作業のフローチャートである。 コンピュータ・システムの例を示す図である。
添付の図面を参照することによって、本実施形態はより良く理解され、数多くの対象、特徴および利点が当業者に明らかになればよい。
以下に続く記載は、本発明の主題の技法を具体化するシステム、方法、技法、命令シーケンスおよびコンピュータ・プログラムの例を含む。しかし、記載されている実施形態は、これらの具体的詳細を備えずに実施されてもよいことは理解されよう。例えば、例が、ファイル・システムの一部であるデータのためのデュアル・コンテキストに言及していても、いくつかの他の実施形態例はデータのためのコンテキストをいくつでも(例えば、3つ、4つ、5つ等)構成することができる。同様に、ファイル・システムのための一貫性スナップショットが作成されるように記載される一方で、いくつかの他の実施形態例では、他のレベルにおける一貫性スナップショットが作成されることができる。例えば、ユーザは、ファイルのサブセット、特定のファイル等を、ファイル・システムのための定期スナップショットよりも頻繁に一貫性スナップショット内にバックアップされるように構成することができる。それ故、いくつかの実施形態例はこれらの他のレベルの一貫性スナップショットに適用できる。他の例では、記載を分かりにくくしないようにするために、周知の命令インスタンス、プロトコル、構造および技法は詳細に示されていない。
多重コンピュータ・システムまたはノード、ならびに永続性記憶資源を含む資源からクラスタが形成される。クラスタの記憶資源にわたってクラスタ化ファイル・システムが実装される。クラスタ記憶資源は、クラスタのノードによる直接アクセスを許すように結合される。記憶資源はノードに直接ケーブルでつながれるか、もしくはネットワーク(例えば、ストレージ・エリア・ネットワーク)を介してアクセス可能とされるか、またはその両方の方法が用いられることができる。
クラスタが確立されると、管理者が、クラスタのノードのうちの1つをクラスタ・リーダとして動作するように構成する。実施形態は、リーダを自動的に選ぶようにクラスタをプログラムすることもできる。クラスタ・リーダは、ノードがクライアントなのかサーバなのか、それともクライアントとサーバの両方なのかを示すクラスタ役割データを保持する。サーバがクラスタ化ファイル・システム内のファイルセットを管理する。クラスタ・リーダは、どのノードがクラスタ化ファイル・システム・マネージャとして動作するかの指示も保持する。クラスタ化ファイル・システム・マネージャはクラスタ化ファイル・システムのためのメタデータを管理する。実施形態によっては、クラスタ化ファイル・システム・マネージャはクラスタのための唯一のサーバである−フェイルオーバー・サーバの責任は負っていない。実施形態によっては、クラスタ化ファイル・システム・マネージャはクラスタ化ファイル・システム内のファイルセットの管理を、サーバである他のノードに任せる。本願明細書において、用語「ファイルセット」はファイルもしくはディレクトリのセットまたはその両方のセットに言及するために用いられる。どのノードがクラスタ内のサーバであるかの指示とともに、クラスタ・リーダは、サーバまたは「ファイルセット・マネージャ」によって管理されるファイルセットの指示を保持することができる。クラスタ内のノードがクラスタ・リーダおよびクラスタ化ファイル・システム・マネージャとして動作するように構成されることができる。ノードがクラスタ・リーダとして動作するのか、サーバとして動作するのか、クライアントとして動作するのか、その他のものとして動作するのかは、クラスタのユーザに透過的であることができる。ノードがクライアントおよびサーバの両方として動作しても、あるいはクライアントが遠隔ノード上にあっても、ユーザは同じ動作を知覚することになる。
クラスタ化ファイル・システム・マネージャは、クラスタ化ファイル・システムのファイルのためのiノードの階層としてメタデータを保持することができる。クラスタ化ファイル・システム・メタデータは、クラスタ化された記憶資源の記憶の論理ユニットに関する情報を示す。情報はクラスタ記憶ユニットの位置(例えば、オフセットまたはブロック番号)ならびにエクステントの長さを含むことができる。本記載において、用語「ブロック」は、クラスタ記憶の単位に言及するために用いられる(例えば、4KBブロック)。本記載は、隣接ブロックのセットに言及するために用語「エクステント」も用いる。エクステントの「長さ」に言及するとき、該長さは、エクステントを形成する多数の隣接ブロックに言及している。これらの用語を用いると、4KBブロックを仮定すれば、クラスタ化ファイル・システムは、総計10GBの記憶資源のプールを0ないし2,621,439ブロックと見なす。クラスタ・クライアントがクラスタ記憶の論理ユニットに書き込みをするとき、書き込みを果たすために論理ユニット(例えば、ブロック番号)は記憶仮想化層によって物理的位置(例えば、シークおよびオフセット)に変換される。実施形態はブロックおよびエクステントに限定されるものではないが、クラスタ記憶の単位(例えば、可変長ブロック、ビット長等)についてあり得るあらゆる実装を考慮すれば、記載を分かりにくくしてしまうことになろう。
実施形態によっては、クラスタ化ファイル・システム・マネージャはクラスタ化ファイル・システム・メタデータ(「メタデータ」)をiノードの階層データ構造内に保持する。クラスタ化ファイル・システム・マネージャはメタデータのためのルートをクラスタ記憶資源(「クラスタ記憶」)内の既知の位置(すなわち、所定位置)に保持する。一貫性スナップショットを支援するクラスタ内では、一貫性スナップショットのルートを、対応する一貫性スナップショットのルート・メタデータとともに記憶するために、クラスタ記憶内の複数の位置が確保または定義される。ルート・メタデータは、一貫性スナップショットを識別すること、および一貫性スナップショットの保全性を確実にすることを助ける。実施形態は、一貫性スナップショットの進行を追跡する、一貫性スナップショットの時間ベースの識別子(例えば、世代値)、およびデータの保全性を検査するためのルート・チェックサムを用いることができる。実施形態は、ノードがルートを書き込み始める際、第1のルート・チェックサム(「ヘッダ・チェックサム」)を書き込み、ルートが永続性クラスタ記憶にうまく書き込まれた後、第2のルート・チェックサム(「トレーラ・チェックサム」)を書き込むことができる。実施形態はヘッダ・チェックサムおよびトレーラ・チェックサムを用いて、一貫性スナップショットのルートの書き込みが妨げられなかったことを確実にすることができる。障害から回復するためには、位置の各々が調べられ、最新の世代値を持つ位置が選択され、選択された位置によって参照されるその一貫性スナップショットから回復が始まることを可能にする。実施形態は、一貫性スナップショットをいくつでも保存するようにクラスタを構成することができる。
いくつかの実施形態例は所与のファイル・システム内のデータの一貫性スナップショットを提供するが、このようなスナップショットは、一貫性スナップショットが記憶のためにコミットされている間、入ってくるファイル・システム・トランザクションをブロックしたりまたは遅らせたりしない。それ故、ファイル・システム内に記憶されているデータに対する更新が、同じファイル・システムの一貫性スナップショットの記憶と同時に行われることができる。以下においてさらに記載されるように、この同時実行が可能とされるために、同じデータ・オブジェクトのための少なくとも2つのコンテキストが保持される。
ファイル・システムの一貫性スナップショットは、一意の世代値に関連付けられる。例えば、世代値は整数値とすることができる。それ故、一貫性スナップショットを記憶するためのコミット(すなわち、該一貫性スナップショットの同期)が始められると、ファイル・システムのための世代はインクリメントされることができる。
実施形態例によっては、ファイル・システム内のオブジェクト(例えば、データ、ファイル等)に対するあらゆる変更がトランザクションに関連付けられる。トランザクションはファイル・システムの世代に関連付けられ、かくして一貫性スナップショットに関連付けられる。デュアル・コンテキスト構成の実施形態例によっては、ファイル・システム内のオブジェクトが、常に、オブジェクトの最大で2つのコピーとともにキャッシュされる。1つのコピーは、更新中のコンテキストのためのものである。特に、オブジェクトのための更新中のコンテキストは、オブジェクトが更新されている最中であった(例えば、ユーザがオブジェクトを更新した)後、オブジェクトを有するファイル・システムの一貫性スナップショットが記憶のためにコミットされている間に作成される。オブジェクトの第2のコピーは、コミット中のコンテキストのためのものである。オブジェクトのこのコピーは、一貫性スナップショットの一部として記憶のためにコミットされている最中の/コミットされることになるオブジェクトのコピーである。実施形態例によっては、2つのオブジェクトは、サイズ2の配列として一緒にキャッシュされることができる。同様に、オブジェクトは、配列内の各オブジェクトに関連付けられる世代を記憶する、2つの要素の配列を有する。
実施形態例によっては、オブジェクトのどのコンテキストを用いるべきかを決定するために、トランザクションに関連付けられる世代値または世代番号が、キャッシュされているオブジェクトの世代番号と比較される。正しいオブジェクト配列要素が選択され、オブジェクトの正しいコンテキスト(例えば、更新中のコンテキストまたはコミット中のコンテキスト)を変更する。
以下においてさらに記載されるように、一貫性スナップショットは定期的に(例えば、5秒ごとに)作成される。これらの一貫性スナップショットは、以前のバージョンのオブジェクトを回復しようと試みるために作成される。例えば、これらの一貫性スナップショットは、システム・クラッシュの後に、ファイル・システム内に記憶されているオブジェクトを回復するために用いられることができる。実施形態例によっては、以前の一貫性スナップショットがその同期(記憶のためのコミット)を終える前に、一貫性スナップショットの間隔が到達されると、新しい一貫性スナップショットはスキップされる。特に、そのときは、キャッシュされているオブジェクトの第3のコピーが必要となろうから、一貫性スナップショットは取られないであろう。
図1は、いくつかの実施形態例による、リダイレクト・オン・ライト・ファイル・システム内のデータ・オブジェクトのための複数のコンテキストを提供するクラスタ化ファイル・システム構成の概念図を示す。図示のクラスタはノード103、105、107、109を含む。クラスタは、直接アクセス可能記憶デバイスのプール101、ネットワーク・アクセス可能記憶デバイス113、115、およびネットワーク・インフラストラクチャ111も含む。ノード103、105、107、109はネットワーク・インフラストラクチャ111を介して通信する。ノード103、105、107、109はケーブルを介して記憶デバイス・プール101にアクセスし、ネットワーク・インフラストラクチャ111を介してネットワーク・アクセス可能記憶デバイス113、115にアクセスする。図示のクラスタにおいて、ノード103、105、107、109のうちのいずれでもクラスタのためのクラスタ化ファイル・システム・マネージャとして構成されることができる。クラスタ化ファイル・システム・マネージャはその内部のクラスタ化ファイル・システムのファイルの記憶の様々な側面を管理することができる。例えば、クラスタ化ファイル・システム・マネージャは、クラスタ化ファイル・システムのファイルのためのiノードの階層としてメタデータを保持することができる。実施形態例によっては、クラスタ化ファイル・システム・マネージャの作業のうちの一部またはすべては、異なるノード103、105、107、109に振り分けられることができる。これらの作業のうちのいくつかは、(以下でさらに記載されるように)クラスタ化ファイル・システム内のデータ・オブジェクトのための複数のコンテキストを提供することに関連する作業を含む。以下においては、データ・オブジェクトのための複数のコンテキストを提供するこれらの作業は異なるノード103、105、107、109にわたって振り分けられるように記載されているが、一方、いくつかの他の実施形態例では、このような作業はクラスタ化ファイル・システム・マネージャによって遂行されることができる。
図2は、いくつかの実施形態例による、リダイレクト・オン・ライト・ファイル・システム内のデータ・オブジェクトのための複数のコンテキストを提供するクラスタ化ファイル・システム構成のより詳細な概念図を示す。図2は、図1のノード103、105、107、109を代表することができるノードA 202、ノードB 204およびノードN 206を含むシステム200を示す。図2はノードA 202内の多数の構成要素を示す。図示されていないが、ノードB 204およびノードN 206はそれらの内部に同様の構成要素を含むことができる。
実施形態例によっては、システム200は、データが変更される際、リダイレクト・オン・ライト(redirect−on−write、ROW)を用いるファイル・システムのデータ・オブジェクトを記憶するように構成される。特に、リダイレクト・オン・ライトを用いると、変更データのために新しいブロックが割り付けられる。ファイル・システムは1つ以上のファイルセットを含むことができる。実施形態例によっては、ファイル・システム内の各ファイルはiノードを含むことができる。iノードは、ファイル内に記憶されるデータに関する情報またはメタデータを記憶する別個のファイルまたはデータ構造であることができる。例えば、ファイルの部分(例えば、ブロック)ごとに、iノードは、このデータが記憶されるファイルセットのアドレス、ファイルセット識別情報および世代を記憶することができる。特に、ファイルのデータが記憶されるブロックは、異なるファイルセット、およびファイルセットの世代にわたって振り分けられることができる。異なるファイルセット、およびファイルセットの世代は複数の記憶デバイスにわたって振り分けられることができる。図2を参照すると、これらのファイルセットはノードA 202、ノードB 204およびノードN 206のうちのいずれかにおける機械可読媒体内に記憶されることができる。
システム200は多数のクライアント・デバイス(クライアント・デバイス208およびクライアント・デバイス210として図示)を含む。システム200はネットワーク212を含み、ノードA 202、ノードB 204、ノードN 206、クライアント・デバイス208およびクライアント・デバイス210はネットワーク212を通じて通信可能に共に結合される。
ノードA 202は、通信可能に共に結合された、ファイルセット・マネージャ214、不揮発性機械可読媒体216、およびメモリ(例えば、揮発性機械可読媒体)218を含む。ファイルセット・マネージャ214はソフトウェア、ファームウェア、ハードウェアまたはそれらの組み合わせであることができる。例えば、ファイルセット・マネージャ214は、ノードA 202内のプロセッサ(不図示)上で実行するオペレーティング・システムの一部であることができる。不揮発性機械可読媒体216は、すでに作成された多数の一貫性スナップショット(一貫性スナップショットA 224および一貫性スナップショットN 226として図示)を記憶する。不揮発性機械可読媒体216は、その内部に記憶するためにコミットされている途中である現在の一貫性スナップショット228も記憶している最中である。実施形態例によっては、一貫性スナップショットは定期的に(例えば5秒ごとに)作成される。一貫性スナップショットは、所与の時点におけるファイル・システム内のデータ・オブジェクトのスナップショットを含む。実施形態例によっては、一貫性スナップショットは、最後の一貫性スナップショットが記憶のためにコミットされてより後、不揮発性機械可読媒体216に記憶にするためにまだコミットされていない、メモリ218内にあるデータ・オブジェクトに対するあらゆる変更(例えば、改変、追加、削除等)を記憶する。これらの一貫性スナップショットは、ファイル・システム内に記憶されている、以前のバージョンのオブジェクトを回復しようと試みるために作成される。例えば、これらの一貫性スナップショットは、システム・クラッシュの後に、ファイル・システム内に記憶されているオブジェクトを回復するために用いられることができる。
メモリ218は多数のバッファ・ヘッダ(バッファ・ヘッダA 220、バッファ・ヘッダN 222等)を記憶する。以下においてさらに記載されるように(図3の記載を参照)、バッファ・ヘッダは、ファイル・システム内に記憶されるデータ・オブジェクトに関する様々なメタデータを記憶する。データ・オブジェクトがアクセスされている、変更されている等の最中であれば、ファイルセット・マネージャ214はメモリ218内のデータ・オブジェクトのためのバッファ・ヘッダを作成する(その中にまだ作成されていなければ)。例えば、ファイルセット・マネージャ214は、現在の一貫性スナップショット228を作成するためにデータ・オブジェクトがアクセスされている最中、何らかのクライアント・デバイス要求に基づきデータ・オブジェクトが変更されている最中などに、バッファ・ヘッダを作成することができる。メモリ218のサイズおよびアクセスされているデータ・オブジェクトの数に基づき、ファイルセット・マネージャ214は、関連データ・オブジェクトがアクセスされている最中でないバッファ・ヘッダのうちのいくつかをフラッシュするよう求められてよい。それに応じて、ファイルセット・マネージャ214は、データ・オブジェクトのアクセスが生じると、メモリ218内のデータ・オブジェクトのためのバッファ・ヘッダを再作成するよう求められてよい。以下においてさらに記載されるように、バッファ・ヘッダ内のメタデータは、所与のデータ・オブジェクトのために作成されるデータの異なるコピーのためのデータ・ポインタを記憶する。本例では、バッファ・ヘッダA 220は、データの第1のコピー250を指し示す第1のデータ・ポインタ、およびデータの第2のコピー252を指し示す第2のデータ・ポインタを有する。メモリ218内に記憶される異なるバッファ・ヘッダのために同様のデータ・ポインタが作成されることができる。
実施形態例によっては、ファイル・システム内の同じデータ・オブジェクトのためのデータの複数のコピーが作成される。データの複数のコピーの各々は、異なるコンテキストに関連付けられることができる。実施形態例によっては、データ・オブジェクトが、デュアル・コンテキスト構成のためにそのデータのコピーを2つ有することができる。例として、メモリ218は同じデータ・オブジェクトのためのデータの2つのコピー(データの第1のコピー250およびデータの第2のコピー252)を記憶する。ファイル・システム内に記憶されるいずれかまたはすべてのデータ・オブジェクトはこのマルチ・コピー、マルチ・コンテキスト構成を含むことができる。図示のように、データの第1のコピー250はコミット中のコンテキスト254を有し、データの第2のコピー252は更新中のコンテキスト256を有する。同じデータ・オブジェクトのための2つのコンテキストはファイル・システム内のデータの一貫性スナップショットを提供するが、このようなスナップショットは、一貫性スナップショットが記憶のためにコミットされている間、入ってくるファイル・システム・トランザクションをブロックしたりまたは遅らせたりしない。それ故、ファイル・システム内に記憶されているデータに対する更新が、同じファイル・システムの一貫性スナップショットの記憶と同時に行われることができる。具体的には、コミット中のコンテキスト254は、現在の一貫性スナップショット228内にこの特定のデータ・オブジェクトを作成するために用いられるデータのコピーに関連付けられる。更新中のコンテキスト256は、現在の一貫性スナップショット228が、(不揮発性機械可読媒体216内に作成される)記憶のためにコミットされている間、データ・オブジェクトに対する更新(例えば、ユーザがデータに変更を行っている)を受け付けるために用いられるデータのコピーに関連付けられる。
図2は多数の作業(作業230、作業232および作業234)も示す。本例では、ファイルセット・マネージャ214は作業230を遂行し、該作業230において、ファイルセット・マネージャ214は現在の一貫性スナップショットを記憶するためのコミットを開始する。特に、ファイルセット・マネージャ214は現在の一貫性スナップショット228の作成を開始する。作業の一部として、ファイルセット・マネージャ214は、以前の一貫性スナップショットが記憶のためにコミットされて以来、どのようなデータ・オブジェクトが変更されたのかを判定することができる。次に、ファイルセット・マネージャ214は、変更されたデータ・オブジェクトを不揮発性機械可読媒体216内の新しい位置にボトム・アップ順で書き込むことができる。実施形態例によっては、現在の一貫性スナップショット228内に記憶されている最中のデータ・オブジェクトごとに、ファイルセット・マネージャ214はメモリ218内の関連バッファ・ヘッダを作成もしくは更新するまたはその両方を行うことができる(作業234として図示)。メモリ218内にデータ・オブジェクトのための関連バッファ・ヘッダがない場合、ファイルセット・マネージャ214は、このようなデータが、現在の一貫性スナップショット228内に記憶するためにアクセスされている最中に、バッファ・ヘッダを作成する。以下において図4〜6を参照してさらに記載されるように、各データ・オブジェクトのためのバッファ・ヘッダは様々なメタデータ(例えば、世代、コンテキスト、位置、データ・ポインタ)を含む。ファイルセット・マネージャ214は、メモリ218内にバッファ・ヘッダを作成することの一部としてこのメタデータを更新する。代替的に、バッファ・ヘッダが所与のデータ・オブジェクトのためにメモリ218内にすでにインスタンス化されている場合には、ファイルセット・マネージャ214はその中のメタデータを更新することができる。例えば、ファイルセット・マネージャ214は、データ・ポインタによって参照されている複数のデータのための世代およびコンテキストを定義する様々なフィールドを更新することができる(以下においてさらに記載されるように)。
同様に、現在の一貫性スナップショット228を記憶するためのコミットの完了より前に、現在の一貫性スナップショット228内に含まれるべきデータ・オブジェクトが変更される。本例では、クライアント・デバイス210が、現在の一貫性スナップショット228の一部であるデータ・オブジェクトのための更新要求を、ネットワーク212を通じて送信し、該更新要求はファイルセット・マネージャ214によって受信される(作業232として図示)。この状況において、ファイルセット・マネージャ214は、データの第1のコピーからコピーされる、データ・オブジェクト内のデータの第2のコピーを作成する(例えばデータの第1のコピー250およびデータの第2のコピー252を参照)。同様に、データの第2のコピーは、データの第1のコピーのために定義されるコンテキストとは別個且つ異なるコンテキストを有する。実施形態例によっては、データの第2のコピーは、デュアル・コンテキストを提供するために第2のコピーが必要になるまでは作成されない。例えば、同じデータ・オブジェクトを記憶する一貫性スナップショットが作成されている途中である間は、ファイルセット・マネージャ214は、データ・オブジェクトに対する更新が要求されるまで第2のコピーを作成しない。同様に、ファイルセット・マネージャ214はメモリ218内のこのデータ・オブジェクトのためのバッファ・ヘッダを作成もしくは更新するまたはその両方を行う。例えば、ファイルセット・マネージャ214は、データの第2のコピーを指し示すためにバッファ・ヘッダ内の第2のデータ・ポインタを更新することができる。同様に、ファイルセット・マネージャ214は、データの2つの異なるコピーが2つの異なるコンテキストを有するように、コンテキストを更新する。ファイルセット・マネージャ214の、データ・オブジェクトのための複数のコンテキストを提供する作業のより詳細な記載が、以下において図5〜6のフローチャートを参照して説明される。
図3は、いくつかの実施形態による、クラスタ化ファイル・システム内に記憶されるデータ・オブジェクトのためのバッファ・ヘッダの例を示す。バッファ・ヘッダ300は、クラスタ化ファイル・システム内に記憶されるデータ・オブジェクトに関連する多数のフィールドを含む。上述されたように、データ・オブジェクトのためのバッファ・ヘッダが、まだそれがメモリ内にない場合に且つ、データ・オブジェクトへのアクセスに応答して、メモリ内に作成される。例えば、ファイルセット・マネージャ214は、一貫性スナップショット内のデータ・オブジェクトを記憶するためにデータ・オブジェクトにアクセスすることができる。別の例では、ファイルセット・マネージャ214は、データ・オブジェクトを更新する何らかのアプリケーション(例えば、クライアント・デバイス208、210)に応答してデータ・オブジェクトにアクセスすることができる。バッファ・ヘッダを作成することに加えて、ファイルセット・マネージャ214はその内部のフィールド(302〜316)にデータを格納することもできる。フィールド302〜304はこのデータ・オブジェクトのための2つの異なる世代値を定義する。最後にコミットされた世代(Last Committed Generation、LCG)フィールド302は、このデータ・オブジェクトが一貫性スナップショット内の記憶のためにコミットされた最後の時のこのデータ・オブジェクトのための世代値を定義する。最後に更新された世代(Last Updated Generation、LUG)フィールド304は、このデータ・オブジェクトが更新されていた最後の時のこのデータ・オブジェクトのための世代値を定義する。データ・オブジェクトの世代値は、データ・オブジェクトが最初に更新される度に、ただし、データ・オブジェクトが一貫性スナップショットの一部として永続的記憶のためにコミットされるより前に、インクリメントされる。例えば、データ・オブジェクトの現在の世代値が15であるとする。データ・オブジェクトが一貫性スナップショットの一部として永続的記憶のためにコミットされた後に何らかのアプリケーションがデータ・オブジェクトを更新しようとすると、世代値は16にインクリメントされる。このデータ・オブジェクトのこの世代値は、データ・オブジェクトが一貫性スナップショットの一部として永続的記憶のためにコミットされるまで、16にとどまる。
フィールド306〜308はこのデータ・オブジェクトのための2つの異なるコンテキスト値を定義する。これらのコンテキスト値は0または1のいずれかに設定される。特に、データ・オブジェクトのためのコンテキストは2つの値の間で反転する(デュアル・コンテキストの一部であるため)。最後にコミットされたコンテキスト(Last Committed Context、LCX)フィールド306は、このデータ・オブジェクトが一貫性スナップショット内の記憶のためにコミットされた最後の時のこのデータ・オブジェクトのためのコンテキストを定義する。最後に更新されたコンテキスト(Last Updated Context、LUX)フィールド308は、このデータ・オブジェクトが更新されていた最後の時のこのデータ・オブジェクトのためのコンテキストを定義する。例えば、データ・オブジェクトが一貫性スナップショットの一部として永続的記憶のためにコミットされた後であるが、データ・オブジェクトに対する更新よりも前において、LCXフィールド306およびLUX308は両方とも同じ値(例えば1)に設定される。その後、何らかのアプリケーションがデータ・オブジェクトを更新しようとすると、LUXフィールド308は0の値に反転される。その後、このデータ・オブジェクトが再び一貫性スナップショットの一部として永続的記憶のためにコミットされる際、LCXフィールド306は0の値に反転される。フィールド302〜308の使用は、以下において図5〜6のフローチャートを参照してさらに記載される。
物理的位置フィールド310はファイル・システム内のデータ・オブジェクトの物理的位置(例えばブロック番号)を定義する。論理的位置フィールド312は、データ・オブジェクトが記憶される論理的位置を、このデータ・オブジェクトのための関連iノードの位置に基づき定義する。例えば、論理的位置は、このデータ・オブジェクトが記憶される、iノードに加えていくらかのオフセットの物理的位置を含むことができる。
データ・ポインタ0・フィールド314は、メモリ218内のデータ・オブジェクトのデータの第1のコピーを指し示している第1のデータ・ポインタ(データ・ポインタ0)を記憶する。データ・ポインタ1・フィールド316は、メモリ218内のデータ・オブジェクトのデータの第2のコピーを指し示している第2のデータ・ポインタ(データ・ポインタ1)を記憶する。上述されたように、データ・オブジェクトのデータの第2のコピーは、データ・オブジェクトのための第2のコンテキストが必要となるまで作成されない。例えば、データ・オブジェクトが一貫性スナップショットの一部として永続的記憶のためにコミットされた後であるが、データ・オブジェクトに対するいかなるその後の更新よりも前においては、データ・オブジェクトのデータのコピーは1つだけ提供されることができる。この状況において、データ・ポインタ0・フィールド314(データの第1のコピーを指し示す)はデータの第1のコピーを指し示し、データ・ポインタ1・フィールド316(データの第2のコピーを指し示す)は位置を指し示さない(例えばヌル(NULL))。データの第2のコピーは、データ・オブジェクトのために第2のコンテキストが必要になった後、データの第1のコピーのコピーから作成される。例えば、データ・オブジェクトが一貫性スナップショット内に記憶されている最中であり、同時に、クライアント・デバイスがデータ・オブジェクトに対する更新を要求しているとする。この状況において、データ・オブジェクトの第2のコピーが作成される。同様に、データ・ポインタ0・フィールド314(データの第1のコピーを指し示す)はなおデータの第1のコピーを指し示し、データ・ポインタ1・フィールド316(データの第2のコピーを指し示す)は、今度は、データ・オブジェクトのデータの第2のコピーを指し示すように変更される。フィールド314〜316の使用は以下において図5〜6のフローチャートを参照してさらに記載される。
図4は、いくつかの実施形態による、データ・オブジェクトの複数の世代に対して一貫性スナップショットをコミットするタイムラインの例を示す。タイムライン400は左から右へ時間が増大する。時点402は、データ・オブジェクトのための世代Nが終了した時刻である。時点404は、同じデータ・オブジェクトのためのより後の世代(世代N+1)が終了した、より後の時刻である。時点406は、同じデータ・オブジェクトのためのより後の世代(世代N+2)が終了した、より後の時刻である。期間408は、(データ・オブジェクトを含む)一貫性スナップショットが永続的記憶のためにコミットされている期間である。期間408は、世代Nが終了した後の時点402において開始される。コミットの一部として上述されたように、ファイルセット・マネージャ214はデータ・オブジェクトの階層をボトム・アップ順で横断し、子データ・オブジェクトのブロック番号およびチェックサムを収集する。図示のように、期間408内には2つのサブ期間−期間410および期間412−がある。期間410は、データ・オブジェクトの1つのコピーまたはバージョンがメモリ内に存在する期間を含む。例えば、この期間は、データ・オブジェクトが永続的記憶のためにコミットされている最中の時間であって、データ・オブジェクトはまだ変更されていない(例えば、クライアント・デバイス上で実行するアプリケーションによって)、時間を含むことができる。期間412は、データ・オブジェクトの2つのコピーまたはバージョンがメモリ内に存在する期間を含む。期間412は、世代Nのための一貫性スナップショットのコミットが依然、行われている間にデータ・オブジェクトが変更されるのに応答して開始される。例えば、この期間は、データ・オブジェクトが永続的記憶のためにコミットされている最中且つ、データ・オブジェクトが変更されている(例えば、クライアント・デバイス上で実行するアプリケーションによって)最中の時間を含むことができる。換言すると、データ・オブジェクトの第1のバージョンは、発行されている最中の世代Nの一貫性スナップショットの一部として存在する。データ・オブジェクトの第2のバージョンは、世代Nの一貫性スナップショットの発行の完了より前に現在の世代N+1内でデータ・オブジェクトへの書き込みが行われる場合に備えてもしくはそれが行われる結果、またはその両方の故に存在する。
図5〜6は、いくつかの実施形態例による、リダイレクト・オン・ライト・ファイル・システム内のデータ・オブジェクトのための複数のコンテキストを提供する作業のフローチャートを示す。図5はフローチャート500を示し、図6はフローチャート600を示す。フローチャート600はフローチャート500の続きであり、ポイントAにおいて移行する。フローチャート500〜600は、分散型構成で行われるものとして記載されており、そこでは、ファイルセット・マネージャ214がその内部の作業を遂行する。他の実施形態例によっては、フローチャート500〜600の作業は集中型構成で行われ、そこでは、ファイル・システム・マネージャがこのような作業を遂行することができる。フローチャート500〜600は、データ・オブジェクトのためのデュアル・コンテキストが必要とされる状況の例を示す。特に、この状況例では、特定のデータ・オブジェクト(「データ・オブジェクトA」と呼ばれる)を含む一貫性スナップショットが不揮発性機械可読媒体内の記憶のためにコミットされている最中となっている。なぜなら、データ・オブジェクトAは、前の一貫性スナップショットが記憶のためにコミットされてより後に、変更されているからである。この一貫性スナップショットが記憶のためにコミットされるのと同時に、データ・オブジェクトAをさらに変更する作業がある。例えば、クライアント・デバイス上で実行するアプリケーションがデータ・オブジェクトAを変更することができる。図1〜3を参照してフローチャート500〜600の作業が記載される。フローチャート500がまず記載され、その後にフローチャート600の記載が続く。
ファイルセット・マネージャ214が、ファイル・システム内の多数のデータ・オブジェクトを含む現在の一貫性スナップショットを不揮発性機械可読媒体に記憶するためのコミットを開始する(502)。実施形態例によっては、ファイルセット・マネージャ214は現在の一貫性スナップショットを記憶するために定期的にコミットする(例えば、3秒、5秒、10秒等)。それ故、この作業は一貫性スナップショットを作成する定期的作業のうちの1つであることができる。図2を参照すると、ファイルセット・マネージャ214は現在の一貫性スナップショット228を記憶するためのコミットを開始する。実施形態例によっては、現在の一貫性スナップショット228は、前の一貫性スナップショットより後に変更されたデータ・オブジェクトを含むことになる。データ・オブジェクトに対するそれらの改変はメモリ218内に常駐することができ、そのため、改変は不揮発性機械可読媒体216内の記憶のためにまだコミットされていない。フローチャート500の作業は504において続く。
ファイルセット・マネージャ214は、現在の一貫性スナップショット内に記憶されるべきデータ・オブジェクトのためのバッファ・ヘッダがメモリ内にあるかどうかを判定する(504)。図2を参照すると、ファイルセット・マネージャ214は、現在の一貫性スナップショット228内に記憶されるべきデータ・オブジェクトのためのバッファ・ヘッダがメモリ218内にあるかどうかを判定する。特に、実施形態例によっては、データ・オブジェクトがアクセスされる(読み出される、書き込まれる等)度に、メモリ218内に関連バッファ・ヘッダが作成される。現在の一貫性スナップショット228内に記憶されるべきデータ・オブジェクトごとのバッファ・ヘッダがメモリ内にすでにある場合は、フローチャート500の作業は508において続く。さもなければ、フローチャート500の作業は506において続く。
ファイルセット・マネージャ214は、(メモリ内にバッファ・ヘッダをまだ有していないデータ・オブジェクトのために)メモリ内にバッファ・ヘッダを作成し更新する(506)。図2を参照すると、ファイルセット・マネージャ214は、メモリ内にバッファ・ヘッダを有していないこれらのデータ・オブジェクトのためにメモリ218内にバッファ・ヘッダを作成する。ファイルセット・マネージャ214はバッファ・ヘッダのフィールドを更新することもできる。図3を参照すると、ファイルセット・マネージャ214はこれらのデータ・オブジェクトごとのバッファ・ヘッダのためのこれらのフィールドの値を設定する。ファイルセット・マネージャ214はLCGフィールド302およびLUGフィールド304の両方をデータ・オブジェクトのための現在の世代値に設定する。例えば、もし最後にコミットされた一貫性スナップショットが5の値を有していれば、ファイルセット・マネージャ214はLCGフィールド302およびLUGフィールド304を5に設定することになろう。コンテキスト・フィールド(306、308)は、2つのコンテキスト(コミット中のコンテキストおよび更新中のコンテキスト)を区別するために0または1のいずれかに設定される。従って、第2のコンテキストが必要とされる場合は、これらの2つのコンテキスト・フィールド306、308は逆の値を有することになろう。1つのコンテキストだけが必要とされる場合は、これらの2つのコンテキスト・フィールド306、308は同じ値を有することになろう。この状況においては、データ・オブジェクトのための1つのコンテキストだけが必要である。従って、ファイルセット・マネージャ214はLCXフィールド306およびLUXフィールド308を同じ値(例えば1)に設定する。ファイルセット・マネージャ214は、ファイル・システム内のデータ・オブジェクトの位置(例えばブロック番号)に基づき物理的位置フィールド310を設定する。ファイルセット・マネージャ214は、このデータ・オブジェクトのための関連iノードの位置に基づき論理的位置フィールド312を設定する。例えば、論理的位置は、このデータ・オブジェクトが記憶される、iノードに加えていくらかのオフセットの物理的位置を含むことができる。ファイルセット・マネージャ214は、データの第1のコピーが配置されるメモリ218内の位置を指し示すためにバッファ・ヘッダ300内のデータ・ポインタ0・フィールド314を更新する。この状況は複数のコンテキストを要求していないので、第2のデータ・オブジェクトは必要ない。それ故、ファイルセット・マネージャ214はデータ・ポインタ1・フィールド316を、ヌルを指し示すように更新する。フローチャート500の作業は508において続く。
ファイルセット・マネージャ214は、ファイル・システム内のデータ・オブジェクトA(現在の一貫性スナップショットの一部となるべきデータ・オブジェクトの一部である)を更新するトランザクションを受信する(現在の一貫性スナップショットを記憶するためのコミットがまだ行われている間に)(508)。図2を参照すると、ファイルセット・マネージャ214は、クライアント・デバイス208、210のうちの1つから、データ・オブジェクトAを更新するトランザクションを受信する。例えば、クライアント・デバイス208、210のうちの1つの上で実行するアプリケーションがデータ・オブジェクトAを更新することができる。フローチャート500の作業は510において続く。
ファイルセット・マネージャ214は、メモリ内にデータ・オブジェクトAのためのバッファ・ヘッダがあるかどうかを判定する(510)。図2を参照すると、ファイルセット・マネージャ214は、メモリ218内にデータ・オブジェクトAのためのバッファ・ヘッダがあるかどうかを判定する。特に、実施形態例によっては、データ・オブジェクトがアクセスされる(読み出される、書き込まれる等)度に、メモリ218内に関連バッファ・ヘッダが作成される。メモリ218内にデータ・オブジェクトAのためのバッファ・ヘッダがすでにある場合は、フローチャート500の作業は継続点Aにおいて続く(518)。さもなければ、フローチャート500の作業は512において続く。
ファイルセット・マネージャ214はデータ・オブジェクトAのためにメモリ内にバッファ・ヘッダを作成する(512)。図2を参照すると、ファイルセット・マネージャ214はデータ・オブジェクトAのためにメモリ218内にバッファ・ヘッダを作成する。なぜなら、メモリ218内にはデータ・オブジェクトAのための関連バッファ・ヘッダがないからである。ファイルセット・マネージャ214はバッファ・ヘッダのフィールドにデータを格納することもできる(以下の作業によってさらに記載されるように)。フローチャート500の作業は514において続く。
ファイルセット・マネージャ214はデータ・オブジェクトAのためのバッファ・ヘッダ内のデータ・ポインタ0・フィールドを更新する(514)。図2〜3を参照すると、ファイルセット・マネージャ214は、データの第1のコピーが配置されるメモリ218内の位置を指し示すために、バッファ・ヘッダ300内のデータ・ポインタ0・フィールド314を更新する。フローチャート500の作業は516において続く。
ファイルセット・マネージャ214はデータ・オブジェクトAのためのバッファ・ヘッダ内の物理的位置、論理的位置、LCGフィールドおよびLCXフィールドも更新する。図2〜3を参照すると、ファイルセット・マネージャ214はバッファ・ヘッダ300のための物理的位置フィールド310、論理的位置フィールド312、LCGフィールド302、LCXフィールド306を更新する。ファイルセット・マネージャ214は、ファイル・システム内のデータ・オブジェクトの位置(例えばブロック番号)に基づき物理的位置フィールド310を設定する。ファイルセット・マネージャ214は、このデータ・オブジェクトのための関連iノードの位置に基づき論理的位置フィールド312を設定する。例えば、論理的位置は、このデータ・オブジェクトが記憶される、iノードに加えていくらかのオフセットの物理的位置を含むことができる。ファイルセット・マネージャ214はLCGフィールド302をデータ・オブジェクトAのための現在の世代値に設定する。例えば、もし最後にコミットされた一貫性スナップショットが5の値を有していれば、ファイルセット・マネージャ214はLCGフィールド302を5に設定することになろう。コンテキスト・フィールド(306、308)は、2つのコンテキスト(コミット中のコンテキストおよび更新中のコンテキスト)を区別するために0または1のいずれかに設定される。従って、第2のコンテキストが必要とされる場合は、これらの2つのコンテキスト・フィールド306、308は逆の値を有することになろう。1つのコンテキストだけが必要とされる場合は、これらの2つのコンテキスト・フィールド306、308は同じ値を有することになろう。ファイルセット・マネージャ214はLCXフィールド306を1に設定すると仮定する。LUXフィールド308の設定は以下において記載される。フローチャート500の作業は継続点A(518)において続く。
継続点A(518)はフローチャート600の継続点A(602)において続く。継続点A(602)より、作業は603において続く。
ファイルセット・マネージャ214は、データ・オブジェクトAのためのバッファ・ヘッダ内のLCGフィールドまたはLUGフィールドの値がトランザクションの世代値と一致するかどうかを判定する(603)。図2〜3を参照すると、ファイルセット・マネージャ214は、バッファ・ヘッダ300内のLCGフィールド302の値またはLUGフィールド304の値がトランザクションの世代値と一致するかどうかを判定する。トランザクションの世代値は、トランザクションがいつ作成されたかに基づき一貫性世代に設定される。従って、ファイルセット・マネージャ214は、トランザクションに関連付けられるこの世代が、最後にコミットされた世代または最後に更新された世代に等しいかどうかを判定する。一致がなければ、作業は604において続く。さもなければ、作業は616において続く(以下においてさらに記載される)。
ファイルセット・マネージャ214はデータ・オブジェクトAの第1のコピーからデータ・オブジェクトAの第2のコピーを作成する(604)。図2を参照し、データの第1のコピー250はデータ・オブジェクトAの第1のコピーであるとすると、ファイルセット・マネージャ214はデータの第1のコピー250をメモリ218内の異なる位置−データの第2のコピー252−にコピーする。フローチャート600の作業は606において続く。
ファイルセット・マネージャ214は、データ・オブジェクトAの第2のコピーを指し示すようにバッファ・ヘッダ内の第2のデータ・ポインタを更新する(606)。図2〜3を参照すると、ファイルセット・マネージャ214は、メモリ218内のデータ・オブジェクトAの第2のコピーを指し示すようにデータ・ポインタ1・フィールド316を更新する。フローチャート600の作業は608において続く。
ファイルセット・マネージャ214はバッファ・ヘッダ内のLUXフィールドを、LCXフィールドの値とは逆の値を有するように更新する(608)。図2〜3を参照すると、ファイルセット・マネージャ214はLUXフィールド308を、バッファ・ヘッダ300内のLCXフィールド306の値とは逆である値を有するように更新する。上述されたように、LCXフィールド306およびLUXフィールド308の値は2つの値のうちの1つであることができる。デュアル・コンテキスト状況が生じると(この場合のように)、LCXフィールド306およびLUXフィールド308の値は互いの逆になる。フローチャート600の作業は610において続く。
ファイルセット・マネージャ214は、トランザクションのための世代値に基づきバッファ・ヘッダ内のLUGフィールドのための世代値を設定する(610)。図2〜3を参照すると、ファイルセット・マネージャ214は、トランザクションのための世代値に基づきLUGフィールド304のための世代値を更新する(上記の603の記載におけるトランザクションのための世代値の記載を参照)。フローチャート600の作業は614において続く。
ファイルセット・マネージャ214は、このトランザクションに基づきデータ・オブジェクトAの第2のコピーを更新する(614)。図2〜3を参照し、データの第2のコピー252はデータ・オブジェクトAの第2のコピーであるとすると、ファイルセット・マネージャ214は、データ・ポインタ1・フィールド316内のポインタ値に基づきデータの第2のコピー252を更新する。フローチャート600の作業は、フローチャート600のこの経路に沿い完結している。
603に戻り、一致があるとすると(はいの判定)、ファイルセット・マネージャ214は、データ・オブジェクトAのためのバッファ・ヘッダ内のLUXフィールドに関連付けられる第1のデータ・ポインタを用いてデータ・オブジェクトAのコピーを更新する(616)。この状況においては、トランザクションのための世代がLUGフィールド304と一致するであろうから、603において一致があった。図2〜3を参照し、第1のデータ・ポインタがデータの第1のコピー250を指し示すとすると、ファイルセット・マネージャ214は、データ・ポインタ0・フィールド314内のポインタ値に基づきデータの第1のコピー250を更新する。フローチャート600の作業は、フローチャート600のこの経路に沿い完結している。
ファイル・システム内の同じまたは異なるデータ・オブジェクトに対する追加の更新が引き続き行われることができる。同様に、一貫性スナップショットのコミットの完了後、ファイルセット・マネージャ214は、(一貫性スナップショットを永続的に記憶するためにコミットするための定期的な間隔に基づき)追加の一貫性スナップショットをコミットすることができる。
当業者によって理解されるように、本発明の主題の態様はシステム、方法またはコンピュータ・プログラムとして具体化されればよい。それ故、本発明の主題の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロ・コード等を含む)あるいはソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形をとってよく、本願明細書においてそれらはすべて広く「回路」、「モジュール」または「システム」と呼ばれればよい。さらに、本発明の主題の態様は、1つ以上のコンピュータ可読媒体(単数または複数)であって、その上に具体化されるコンピュータ可読プログラム・コードを有する、コンピュータ可読媒体内に具体化されるコンピュータ・プログラムという形をとってもよい。
1つ以上のコンピュータ可読媒体(単数または複数)の任意の組み合わせが利用されてよい。コンピュータ可読媒体はコンピュータ可読信号媒体またはコンピュータ可読記憶媒体であればよい。コンピュータ可読記憶媒体は、例えば、電子的、磁気的、光学的、電磁的、赤外線または半導体システム、装置またはデバイス、あるいは上述のものの任意の適当な組み合わせであればよい。ただし、それらに限定されるものではない。コンピュータ可読記憶媒体のより具体的な例(限定的なリスト)としては以下のもの:1本以上のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(random access memory、RAM)、リード・オンリー・メモリ(read−only memory、ROM)、消去可能プログラマブル・リード・オンリー・メモリ(erasable programmable read−only memory、EPROMまたはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(compact disc read−only memory、CD−ROM)、光学式記憶デバイス、磁気記憶デバイス、あるいは上述のものの任意の適当な組み合わせ、が挙げられよう。本文書の文脈において、コンピュータ可読記憶媒体とは、命令実行システム、装置またはデバイスによって用いられるまたはそれらと連係して用いられるプログラムを包含または記憶することができる任意の有形媒体であればよい。
コンピュータ可読信号媒体とは、例えば、基底帯域内にまたは搬送波の一部として、内部にコンピュータ可読プログラム・コードが具体化される伝搬データ信号を含むものであればよい。このような伝搬信号は、電磁気的、光学的、またはそれらの任意の適当な組み合わせを含む、ただしそれらに限定されるものではない、様々な形態のいずれを取ってもよい。コンピュータ可読信号媒体とは、コンピュータ可読記憶媒体ではない、命令実行システム、装置またはデバイスによって用いられるまたはそれらと連係して用いられるプログラムを伝達、伝搬または輸送することができる任意のコンピュータ可読媒体であればよい。
コンピュータ可読媒体上に具体化されるプログラム・コードは、無線、有線、光ファイバケーブル、RF等、または上述のものの任意の適当な組み合わせを含む、ただしそれらに限定されるものではない、任意の適切な媒体を用いて送信されればよい。
本発明の主題の態様のための作業を行うためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++または同様のもの等のオブジェクト指向プログラミング言語、ならびに「C」プログラミング言語または同様のプログラミング言語等の従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書き込まれればよい。プログラム・コードは、スタンド・アロン・ソフトウェア・パッケージとして完全にまたは一部分はユーザのコンピュータ上で実行するか、一部分はユーザのコンピュータ上で且つ一部分はリモート・コンピュータ上で実行するか、または完全にリモート・コンピュータもしくはサーバ上で実行すればよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(local area network、LAN)またはワイド・エリア・ネットワーク(wide area network、WAN)を含む、任意の種類のネットワークを通じてユーザのコンピュータに接続されてもよいし、あるいは接続は、(例えば、インターネット・サービス・プロバイダを利用しインターネットを通じて)外部のコンピュータになされてもよい。
本発明の主題の実施形態による方法、装置(システム)およびコンピュータ・プログラムのフローチャート図もしくはブロック図またはその両方を参照しながら本発明の主題の態様が記載されている。フローチャート図もしくはブロック図またはその両方の各ブロック、ならびにフローチャート図もしくはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装されることができることは理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されて機械を作り出せばよく、それにより、命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行し、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群において特定される機能群/動作群を実装する手段を生み出す。
これらのコンピュータ・プログラム命令は、コンピュータ、他のプログラム可能なデータ処理装置または他のデバイスを特定の様式で機能するように仕向けることができるコンピュータ可読媒体内に記憶されてもよく、それにより、コンピュータ可読媒体内に記憶された命令は、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群において特定される機能/動作を実装する命令を含む製造品を作り出す。
コンピュータ・プログラム命令は、コンピュータ、他のプログラム可能なデータ処理装置または他のデバイス上にロードされ、一連の作業ステップをコンピュータ、他のプログラム可能な装置または他のデバイス上で遂行させ、コンピュータ実装プロセスを作り出してもよく、それにより、コンピュータまたは他のプログラム可能な装置上で実行する命令は、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群において特定される機能群/動作群を実装するためのプロセス群を提供する。
図7はコンピュータ・システムの例を示す。コンピュータ・システムはプロセッサ・ユニット701(場合により、複数のプロセッサ、複数のコア、複数のノードを含む、もしくはマルチ・スレッド等を実装する、またはその両方の態様を有する)を含む。コンピュータ・システムはメモリ707を含む。メモリ707はシステム・メモリ(例えば、キャッシュ、SRAM、DRAM、ゼロ・キャパシタRAM、ツイン・トランジスタRAM、eDRAM、EDO RAM、DDR RAM、EEPROM、NRAM、RRAM、SONOS、PRAM等のうちの1つ以上)であってもよいし、または先にすでに記載された、機械可読媒体の実現可能なもののうちのいずれか1つ以上であってもよい。コンピュータ・システムは、バス703(例えば、PCI、ISA、PCI−Express、HyperTransport(R)、InfiniBand(R)、NuBus等)、ネットワーク・インターフェース705(例えば、ATMインターフェース、イーサネット(R)・インターフェース、フレーム・リレー・インターフェース、SONETインターフェース、無線インターフェース等)、および記憶デバイス(単数または複数)709(例えば、光学的記憶、磁気的記憶等)も含む。コンピュータ・システムは、リダイレクト・オン・ライト・ファイル・システム内のデータ・オブジェクトのための複数のコンテキストを提供するファイルセット・マネージャ725も含む。これらの機能性のうちのいずれか1つは一部(または完全に)、ハードウェアの形で、もしくはプロセッサ・ユニット701上で、またはその両方の態様で実装されてよい。例えば、該機能性は、特定用途向け集積回路を用いて、プロセッサ・ユニット701内に実装される論理で、周辺デバイスまたはカード上のコプロセッサ内に、等の態様で実装されればよい。さらに、現実のものは、含まれる構成要素がもっと少なくてもよいし、または図7には示されていない追加の構成要素(例えば、ビデオ・カード、オーディオ・カード、追加のネットワーク・インターフェース、周辺デバイス、等)を含んでもよい。プロセッサ・ユニット701、記憶デバイス(単数または複数)709およびネットワーク・インターフェース705はバス703に結合される。バス703に結合されるように示されているが、メモリ707はプロセッサ・ユニット701に結合されてもよい。
実施形態は、様々な実装および利用を参照しながら記載されているが、これらの実施形態は例示的なものであること、および本発明の主題の範囲はそれらに限定されないことは理解されよう。多くの変形、変更、追加および改良が可能である。
本願明細書では単一の例として記載されている構成要素、作業または構造に複数の例が提供されてもよい。最後に、様々な構成要素同士、作業同士およびデータ格納同士の間の境界は、いくぶんは自由に決めてよいものであり、特定の作業は特定の例示的構成を背景として示されている。機能性の他の割り振りが想定され、本発明の主題の範囲に含まれてもよい。一般に、構成例において別個の構成要素として提示されている構造および機能性は、組み合わせられた構造または構成要素として実装されてもよい。同様に、単一の構成要素として提示されている構造および機能性は、別個の構成要素として実装されてもよい。これらおよび他の変形、変更、追加および改良は本発明の主題の範囲に含まれてよい。
200 システム
202 ノードA
204 ノードB
206 ノードN
208、210 クライアント・デバイス
212 ネットワーク
214 ファイルセット・マネージャ
216 不揮発性機械可読媒体
218 メモリ
220 バッファ・ヘッダA
222 バッファ・ヘッダN
224 一貫性スナップショットA
226 一貫性スナップショットN
228 現在の一貫性スナップショット
230、232、234 作業
250 データの第1のコピー
252 データの第2のコピー
254 コミット中のコンテキスト
256 更新中のコンテキスト

Claims (18)

  1. リダイレクト・オン・ライト・ファイル・システム内の複数のデータ・オブジェクトの現在の一貫性スナップショットを不揮発性機械可読媒体に記憶するためのコミットを開始することであって、前記複数のデータ・オブジェクトの各々は、コミット中のコンテキストを有する、前記複数のデータ・オブジェクトのデータの第1のコピーを有する、前記開始することと、
    他の一貫性スナップショットの世代値に対して一意的である世代値を、前記現在の一貫性スナップショットに付与することと、
    前記現在の一貫性スナップショットを記憶するために前記コミットしている最中に、前記複数のデータ・オブジェクトのうちのデータ・オブジェクトに対する更新を受信することと、
    前記データ・オブジェクトに対する前記更新を受信することに応答して、
    前記データ・オブジェクトのための世代値をインクリメントすることと、
    前記データ・オブジェクトの前記世代値から導き出される世代値を前記更新に関連付けることと、
    前記データ・オブジェクトの前記データの前記第1のコピーからコピーされる、前記データ・オブジェクトのデータの第2のコピーを作成することであって、前記データ・オブジェクトの前記データの前記第2のコピーは更新中のコンテキストを有する、作成することと、
    前記データ・オブジェクトの前記データの前記第1のコピーを更新することとは独立に、前記更新に基づき前記データ・オブジェクトの前記データの前記第2のコピーを更新することと、
    を含む方法。
  2. 前記方法は、前記データ・オブジェクトに対する前記更新を受信することに応答して、揮発性機械可読媒体内に、前記データ・オブジェクトに関連付けられるバッファ・ヘッダを作成することをさらに含み、前記バッファ・ヘッダは、前記データ・オブジェクトの前記データの前記第1のコピーを指し示す第1のデータ・ポインタおよび前記データ・オブジェクトの前記データの前記第2のコピーを指し示す第2のデータ・ポインタを含む、請求項1に記載の方法。
  3. 前記現在の一貫性スナップショットは、前の一貫性スナップショットより後の、前記複数のデータ・オブジェクトに対する更新を含む、請求項1に記載の方法。
  4. 前記現在の一貫性スナップショットを記憶するためのコミットを前記開始することは、一貫性スナップショットを作成する定期的作業に応答するものである、請求項1に記載の方法。
  5. 前記データ・オブジェクトの前記世代値から導き出される前記世代値を前記更新に関連付けることが、前記データ・オブジェクトの前記世代値に等しい前記世代値を前記更新に関連付けることを含む、請求項1に記載の方法。
  6. リダイレクト・オン・ライト・ファイル・システム内の複数のデータ・オブジェクトの現在の一貫性スナップショットを永続的に記憶するためのコミットを開始することであって、前記複数のデータ・オブジェクトの各々は、異なるコンテキストを有する、前記複数のデータ・オブジェクトのデータの複数のコピーを有するように構成可能であり、前記複数のデータ・オブジェクトの各々は、少なくとも2つのコンテキストのうちの第1のコンテキストを有する、前記データの少なくとも2つのコピーのうちの第1のコピーを有する、前記開始することと、
    前記現在の一貫性スナップショットを記憶するためにコミットしている最中に、前記複数のデータ・オブジェクトのうちのデータ・オブジェクトに対する更新を受信することと、
    前記データ・オブジェクトに対する前記更新の受信に応答して、
    前記第1のコピーから前記データ・オブジェクトのデータの第2のコピーを作成することであって、前記データの前記第2のコピーは前記少なくとも2つのコンテキストのうちの第2のコンテキストを有する、前記作成すること、および
    前記更新に基づき前記データ・オブジェクトの前記データの前記第2のコピーを更新することと、
    を含む方法。
  7. 他の一貫性スナップショットの世代値に対して一意的である世代値を、前記現在の一貫性スナップショットに付与することをさらに含む、請求項6に記載の方法。
  8. 前記データ・オブジェクトに対する前記更新の受信に応答して、
    前記データ・オブジェクトのための世代値をインクリメントすること、および
    前記データ・オブジェクトの前記世代値から導き出される世代値を前記更新に関連付けること、
    をさらに含む、請求項7に記載の方法。
  9. 前記現在の一貫性スナップショットは、前の一貫性スナップショットより後の、前記複数のデータ・オブジェクトに対する更新を含む、請求項6に記載の方法。
  10. 前記現在の一貫性スナップショットを永続的に記憶するためのコミットを前記開始することは、一貫性スナップショットを作成する定期的作業に応答するものである、請求項6に記載の方法。
  11. 不揮発性機械可読媒体と、
    揮発性機械可読媒体と、
    プロセッサと、
    前記プロセッサ上で実行するように作動可能なファイルセット・マネージャと、
    を含む装置であって、
    前記ファイルセット・マネージャは、
    リダイレクト・オン・ライト・ファイル・システム内の複数のデータ・オブジェクトの現在の一貫性スナップショットを前記不揮発性機械可読媒体内に記憶するためのコミットを開始することであって、前記複数のデータ・オブジェクトの各々は、異なるコンテキストを有する、前記複数のデータ・オブジェクトのデータの複数のコピーを有するように構成可能であり、前記複数のデータ・オブジェクトの各々は、前記異なるコンテキストのうちの第1のコンテキストを有する、前記データの前記複数のコピーのうちの第1のコピーを有し、前記複数のコピーのうちの前記第1のコピーは前記揮発性機械可読媒体内に記憶されるように構成される、前記開始すること、
    前記現在の一貫性スナップショットを記憶するためにコミットしている最中に、前記複数のデータ・オブジェクトのうちのデータ・オブジェクトに対する更新を受信すること、ならびに
    前記データ・オブジェクトに対する前記更新の受信に応答して、
    前記第1のコピーから前記揮発性機械可読媒体内に前記データ・オブジェクトのデータの第2のコピーを作成することであって、前記データの前記第2のコピーは前記異なるコンテキストのうちの第2のコンテキストを有する、前記作成すること、および
    前記更新に基づき前記データ・オブジェクトの前記データの前記第2のコピーを更新すること、
    を実行するように構成される、
    装置。
  12. 前記ファイルセット・マネージャは、他の一貫性スナップショットの世代値に対して一意的である世代値を、前記現在の一貫性スナップショットに付与するように構成される、請求項11に記載の装置。
  13. 前記ファイルセット・マネージャは、前記データ・オブジェクトに対する前記更新の受信に応答して、
    前記データ・オブジェクトのための世代値をインクリメントすること、および
    前記データ・オブジェクトの前記世代値から導き出される世代値を前記更新に関連付けること、
    をするように構成される、請求項12に記載の装置。
  14. 前記現在の一貫性スナップショットは、前の一貫性スナップショットより後の、前記複数のデータ・オブジェクトに対する更新を含む、請求項11に記載の装置。
  15. 前記現在の一貫性スナップショットを記憶するための前記コミットの前記開始は、一貫性スナップショットを作成する定期的作業に応答するものである、請求項11に記載の装置。
  16. 複数のデータ・オブジェクトのうちのデータ・オブジェクトのための複数のコンテキストを提供するコンピュータ・プログラムであって、コンピュータに、
    リダイレクト・オン・ライト・ファイル・システム内の前記複数のデータ・オブジェクトの現在の一貫性スナップショットを不揮発性機械可読媒体内に記憶するためのコミットを開始することであって、前記複数のデータ・オブジェクトの各々は、コミット中のコンテキストを有する、前記複数のデータ・オブジェクトのデータの第1のコピーを有する、前記開始すること、
    他の一貫性スナップショットの世代値に対して一意的である世代値を、前記現在の一貫性スナップショットに付与すること、
    前記現在の一貫性スナップショットを記憶するために前記コミットしている最中に、前記複数のデータ・オブジェクトのうちの前記データ・オブジェクトに対する更新を受信すること、
    前記データ・オブジェクトに対する前記更新を受信することに応答して、
    前記データ・オブジェクトのための世代値をインクリメントすること、
    前記データ・オブジェクトの前記世代値から導き出される世代値を前記更新に関連付けること、
    前記データ・オブジェクトの前記データの前記第1のコピーからコピーされる、前記データ・オブジェクトのデータの第2のコピーを作成することであって、前記データ・オブジェクトの前記データの前記第2のコピーは更新中のコンテキストを有する、前記作成すること、および
    前記データ・オブジェクトの前記データの前記第1のコピーを更新することとは独立に、前記更新に基づき前記データ・オブジェクトの前記データの前記第2のコピーを更新すること、
    を実行させる、コンピュータ・プログラム。
  17. 前記データ・オブジェクトに対する前記更新の受信に応答して、揮発性機械可読媒体内に、前記データ・オブジェクトに関連付けられるバッファ・ヘッダを作成することであって、前記バッファ・ヘッダは、前記データ・オブジェクトの前記データの前記第1のコピーを指し示す第1のデータ・ポインタおよび前記データ・オブジェクトの前記データの前記第2のコピーを指し示す第2のデータ・ポインタを含む、前記作成することを前記コンピュータに実行させる、請求項16に記載のコンピュータ・プログラム。
  18. 揮発性機械可読媒体内に前記データ・オブジェクトの前記データの前記第1のコピーおよび前記データ・オブジェクトの前記データの前記第2のコピーを作成することを前記コンピュータに実行させる、請求項16に記載のコンピュータ・プログラム。
JP2011247465A 2010-12-08 2011-11-11 リダイレクト・オン・ライト・ファイル・システムにおける複数のコンテキストを提供する方法、装置およびコンピュータ・プログラム Expired - Fee Related JP5658124B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/963146 2010-12-08
US12/963,146 US8626713B2 (en) 2010-12-08 2010-12-08 Multiple contexts in a redirect on write file system

Publications (3)

Publication Number Publication Date
JP2012123793A true JP2012123793A (ja) 2012-06-28
JP2012123793A5 JP2012123793A5 (ja) 2014-09-04
JP5658124B2 JP5658124B2 (ja) 2015-01-21

Family

ID=46200379

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011247465A Expired - Fee Related JP5658124B2 (ja) 2010-12-08 2011-11-11 リダイレクト・オン・ライト・ファイル・システムにおける複数のコンテキストを提供する方法、装置およびコンピュータ・プログラム

Country Status (2)

Country Link
US (1) US8626713B2 (ja)
JP (1) JP5658124B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8306950B2 (en) * 2010-08-26 2012-11-06 International Business Machines Corporation Managing data access requests after persistent snapshots
US8458181B2 (en) 2010-12-08 2013-06-04 International Business Machines Corporation Distributed free block map for a clustered redirect-on-write file system
US8904006B2 (en) 2010-12-08 2014-12-02 International Business Machines Corporation In-flight block map for a clustered redirect-on-write filesystem
US8396832B2 (en) 2010-12-08 2013-03-12 International Business Machines Corporation Independent fileset generations in a clustered redirect-on-write filesystem
US9749132B1 (en) * 2011-11-28 2017-08-29 Amazon Technologies, Inc. System and method for secure deletion of data
US9613104B2 (en) 2012-02-17 2017-04-04 Netflix, Inc. System and method for building a point-in-time snapshot of an eventually-consistent data store
US20140006618A1 (en) * 2012-06-29 2014-01-02 William M. Pitts Method of creating path signatures to facilitate the recovery from network link failures
US20140229695A1 (en) * 2013-02-13 2014-08-14 Dell Products L.P. Systems and methods for backup in scale-out storage clusters
US9286320B2 (en) * 2013-03-06 2016-03-15 Infinidat Ltd. System and method for maintaining consistency among metadata elements of filesystem's logical objects
US9110680B1 (en) * 2013-03-14 2015-08-18 Amazon Technologies, Inc. Avoiding or deferring data copies
US10536523B2 (en) 2014-05-11 2020-01-14 Microsoft Technology Licensing, Llc File service using a shared file access-rest interface
US11263180B2 (en) * 2019-02-23 2022-03-01 National Tsing Hua University Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device
US11971858B2 (en) * 2022-09-06 2024-04-30 Dell Products L.P. Compression of snapshot metadata on cold storage volumes

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9031A (en) * 1852-06-15 Improvement in harvesters
JP2008524707A (ja) * 2004-12-16 2008-07-10 オラクル・インターナショナル・コーポレイション データベースサーバによるファイル操作を実行するためのインフラストラクチャ
JP2009169449A (ja) * 2007-12-10 2009-07-30 Takeshi Mishima 高信頼化データベースシステムおよびその同期方法、仲介方法、仲介装置、仲介プログラム
WO2010095275A1 (en) * 2009-02-23 2010-08-26 Hitachi, Ltd. Storage system and method using snapshots involving little metadata

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287496A (en) * 1991-02-25 1994-02-15 International Business Machines Corporation Dynamic, finite versioning for concurrent transaction and query processing
EP0702815B1 (en) * 1993-06-03 2000-08-23 Network Appliance, Inc. Write anywhere file-system layout
US5553279A (en) * 1993-10-08 1996-09-03 International Business Machines Corporation Lossless distribution of time series data in a relational data base network
US5956728A (en) * 1996-07-17 1999-09-21 Next Software, Inc. Object graph editing context and methods of use
US5864849A (en) * 1996-12-16 1999-01-26 Lucent Technologies Inc. System and method for restoring a multiple checkpointed database in view of loss of volatile memory
US6237001B1 (en) * 1997-04-23 2001-05-22 Oracle Corporation Managing access to data in a distributed database environment
SE522023C2 (sv) * 1998-01-22 2004-01-07 Ericsson Telefon Ab L M Metod för konsistent läsning av objekt i en databas
US6233105B1 (en) 1999-03-29 2001-05-15 Inventec Corporation Method of disk formatting
WO2001029715A2 (en) * 1999-10-15 2001-04-26 Cadence Design Systems, Inc. Database for electronic design automation applications
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
US7028083B2 (en) 2000-05-26 2006-04-11 Akomai Technologies, Inc. Method for extending a network map
US6779093B1 (en) 2002-02-15 2004-08-17 Veritas Operating Corporation Control facility for processing in-band control messages during data replication
US7010553B2 (en) 2002-03-19 2006-03-07 Network Appliance, Inc. System and method for redirecting access to a remote mirrored snapshot
US7111021B1 (en) * 2003-03-21 2006-09-19 Network Appliance, Inc. System and method for efficient space accounting in a file system with snapshots
US8095511B2 (en) * 2003-06-30 2012-01-10 Microsoft Corporation Database data recovery system and method
US7698289B2 (en) 2003-12-02 2010-04-13 Netapp, Inc. Storage system architecture for striping data container content across volumes of a cluster
US7437360B1 (en) 2003-12-23 2008-10-14 Network Appliance, Inc. System and method for communication and synchronization of application-level dependencies and ownership of persistent consistency point images
US7587429B2 (en) * 2004-05-24 2009-09-08 Solid Information Technology Oy Method for checkpointing a main-memory database
US7472129B2 (en) * 2004-06-29 2008-12-30 Microsoft Corporation Lossless recovery for computer systems with map assisted state transfer
JP4663718B2 (ja) 2004-07-21 2011-04-06 ビーチ・アンリミテッド・エルエルシー ブロックマップキャッシングおよびvfsスタック可能なファイルシステムモジュールに基づく分散型のストレージアーキテクチャ
US7984085B1 (en) * 2004-10-25 2011-07-19 Network Appliance, Inc. Rate of change of data using on-the-fly accounting
US7467265B1 (en) * 2005-06-30 2008-12-16 Symantec Operating Corporation System and method for block conflict resolution within consistency interval marker based replication
WO2007014296A2 (en) 2005-07-25 2007-02-01 Parascale, Inc. Scalable distributed file storage access and management
US7526668B2 (en) 2006-06-08 2009-04-28 Hitachi, Ltd. Failover method of remotely-mirrored clustered file servers
US7640278B2 (en) * 2006-06-28 2009-12-29 International Business Machines Corporation System and method for implementing a partial-blocking consistency point in a database
US7747584B1 (en) 2006-08-22 2010-06-29 Netapp, Inc. System and method for enabling de-duplication in a storage system architecture
US7840537B2 (en) * 2006-12-22 2010-11-23 Commvault Systems, Inc. System and method for storing redundant information
US7734669B2 (en) * 2006-12-22 2010-06-08 Commvault Systems, Inc. Managing copies of data
US8131723B2 (en) * 2007-03-30 2012-03-06 Quest Software, Inc. Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity
US8458129B2 (en) * 2008-06-23 2013-06-04 Teradata Us, Inc. Methods and systems for real-time continuous updates
US7904434B2 (en) * 2007-09-14 2011-03-08 Oracle International Corporation Framework for handling business transactions
US8700574B2 (en) 2008-03-21 2014-04-15 Omnitracs, Llc Pourover journaling
US7840730B2 (en) 2008-06-27 2010-11-23 Microsoft Corporation Cluster shared volumes
WO2010042109A1 (en) 2008-10-07 2010-04-15 Hewlett-Packard Development Company, L.P. Creating snapshots of data using a selected one of different snapshot algorithms
US8041991B2 (en) 2008-11-18 2011-10-18 Lsi Corporation System and method for recovering solid state drive data
US20110238936A1 (en) * 2010-03-29 2011-09-29 Hayden Mark G Method and system for efficient snapshotting of data-objects
US9002911B2 (en) 2010-07-30 2015-04-07 International Business Machines Corporation Fileset masks to cluster inodes for efficient fileset management
US8904006B2 (en) 2010-12-08 2014-12-02 International Business Machines Corporation In-flight block map for a clustered redirect-on-write filesystem
US8396832B2 (en) 2010-12-08 2013-03-12 International Business Machines Corporation Independent fileset generations in a clustered redirect-on-write filesystem
US8458181B2 (en) 2010-12-08 2013-06-04 International Business Machines Corporation Distributed free block map for a clustered redirect-on-write file system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9031A (en) * 1852-06-15 Improvement in harvesters
JP2008524707A (ja) * 2004-12-16 2008-07-10 オラクル・インターナショナル・コーポレイション データベースサーバによるファイル操作を実行するためのインフラストラクチャ
JP2009169449A (ja) * 2007-12-10 2009-07-30 Takeshi Mishima 高信頼化データベースシステムおよびその同期方法、仲介方法、仲介装置、仲介プログラム
WO2010095275A1 (en) * 2009-02-23 2010-08-26 Hitachi, Ltd. Storage system and method using snapshots involving little metadata

Also Published As

Publication number Publication date
US8626713B2 (en) 2014-01-07
US20120150804A1 (en) 2012-06-14
JP5658124B2 (ja) 2015-01-21

Similar Documents

Publication Publication Date Title
JP5658124B2 (ja) リダイレクト・オン・ライト・ファイル・システムにおける複数のコンテキストを提供する方法、装置およびコンピュータ・プログラム
US11775485B2 (en) Concurrent access and transactions in a distributed file system
US10552372B2 (en) Systems, methods, and computer-readable media for a fast snapshot of application data in storage
US11775500B2 (en) File system consistency in a distributed system using version vectors
US10102083B1 (en) Method and system for managing metadata records of backups
US20170149890A1 (en) Low latency rdma-based distributed storage
US20230289326A1 (en) Concurrent access and transactions in a distributed file system
US8396832B2 (en) Independent fileset generations in a clustered redirect-on-write filesystem
US10664450B2 (en) Decoupling the commit and replay of metadata updates in a clustered file system
US10740320B2 (en) Systems and methods of operation lock management and system catalog overrides in database systems
US10185630B2 (en) Failure recovery in shared storage operations
US10223206B1 (en) Method and system to detect and delete uncommitted save sets of a backup
CN107894929B (zh) 对重启的应用的处理进行重放
US11531644B2 (en) Fractional consistent global snapshots of a distributed namespace
US12001460B2 (en) Performing a write-prioritized tree copy
US11086818B2 (en) Establishing object atomicity in snapshot based disaster recovery environments
US10339011B1 (en) Method and system for implementing data lossless synthetic full backups

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140610

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140610

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20140610

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20140610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140613

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20140708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140716

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140716

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20140716

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20140731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140930

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140930

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: 20141113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141113

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20141113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141127

R150 Certificate of patent or registration of utility model

Ref document number: 5658124

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees