JP5735104B2 - ファイルシステムのチェックポイント - Google Patents

ファイルシステムのチェックポイント Download PDF

Info

Publication number
JP5735104B2
JP5735104B2 JP2013515367A JP2013515367A JP5735104B2 JP 5735104 B2 JP5735104 B2 JP 5735104B2 JP 2013515367 A JP2013515367 A JP 2013515367A JP 2013515367 A JP2013515367 A JP 2013515367A JP 5735104 B2 JP5735104 B2 JP 5735104B2
Authority
JP
Japan
Prior art keywords
checkpoint
data
storage
file system
updates
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.)
Active
Application number
JP2013515367A
Other languages
English (en)
Other versions
JP2013528883A5 (ja
JP2013528883A (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2013528883A publication Critical patent/JP2013528883A/ja
Publication of JP2013528883A5 publication Critical patent/JP2013528883A5/ja
Application granted granted Critical
Publication of JP5735104B2 publication Critical patent/JP5735104B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1461Backup scheduling policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
    • 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/1865Transactional file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/282Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Description

本発明は、ファイルシステムのチェックポイントに関する。
[0001]記憶デバイスにデータを書き込んでいる最中に、停電またはシステム障害が生じることがある。これが起こる場合、データが失われることも、データに不整合が生じることもある。たとえば、口座名義人がATMからお金を引き出している最中にシステムが故障する場合、このトランザクションは不公平に、銀行または口座名義人にとって有利に働くことがある。別の例として、ディスクアクセスを伴う長い計算の間にシステムが故障した場合、計算のやり直しにかなりの時間がかかることがある。
本発明はこのようなことに関するものである。
[0002]本明細書において特許請求される主題は、いずれかの不利益な点を解決し、または上述されたものなどの環境内だけで動作する実施形態に限定されない。そうではなく、この背景は、本明細書に述べられたいくつかの実施形態が実施されてよい1つの例示的な技術領域を示すために提供されるものにすぎない。
[0003]簡潔に述べると、本明細書に述べられた主題の態様は、ファイルシステムのチェックポイントに関する。態様では、ファイルシステムに対する更新は、チェックポイント・バケットに編成される。チェックポイントが望まれる場合、後の更新は、別のチェックポイント・バケットに向けられる。現在のチェックポイント・バケット内の更新のためにグローバルテーブルが更新された後、グローバルテーブルの論理的なコピーが作成される。この論理的なコピーは、チェックポイント・データの一部として格納される。リカバリーの助けとするために、チェックポイント・マネージャーは、最後のチェックポイント・データを記憶域に書き込む前に、現在のチェックポイント・バケットのすべての更新が記憶域に書き込まれるまで待つことができる。この最後のチェックポイント・データは、グローバルテーブルの論理的なコピーを参照し、チェックポイント・データが正確であることを検証するための検証コードを含んでよい。
[0004]この要約は、詳細な説明において下記にさらに述べられる主題のいくつかの態様を簡潔に識別するために提供されている。この要約は、特許請求された主題の主な特徴または本質的な特徴を識別することを意図しておらず、また特許請求された主題の範囲を限定するために使用することも意図していない。
[0005]語句「本明細書に述べられた主題」は、文脈によって他に明らかにされていない限り、詳細な説明に述べられた主題を指す。「態様」という語は、「少なくとも1つの態様」と解釈されるべきである。詳細な説明に述べられた主題の態様を識別することは、特許請求された主題の主なまたは本質的な特徴を識別するためのものではない。
[0006]上記の態様、および本明細書に述べられた主題の他の態様は、例示するために示されており、添付の図に限定されるものではない。図では、同じ参照符号は、類似の要素を示す。
[0007]本明細書に述べられた主題の態様が組み込まれてよい例示的な汎用コンピューティング環境を表すブロック図である。 [0008]本明細書に述べられた主題の態様が動作してよいシステムのコンポーネントの例示的な構成を表すブロック図である。 [0009]本明細書に述べられた主題の態様を示すブロック図である。 [0010]本明細書に述べられた主題の態様による、ファイルシステムの更新の全体を表す図である。 [0011]本明細書に述べられた主題の態様による、例示的なチェックポイント・バケットを示すブロック図である。 [0012]本明細書に述べられた主題の態様に従って行われてよい例示的なアクションの全体を表すフローチャートである。 [0012]本明細書に述べられた主題の態様に従って行われてよい例示的なアクションの全体を表すフローチャートである。 [0012]本明細書に述べられた主題の態様に従って行われてよい例示的なアクションの全体を表すフローチャートである。
定義
[0013]本明細書では、「含む」およびその変形体は、「含むが、それだけに限らない」を意味する非限定的な用語と解釈されるべきである。「または」という語は、文脈によって他に明らかに示されていない限り、「および/または」と解釈されるべきである。「に基づく」という語は、「に少なくとも一部基づく」と解釈されるべきである。「一実施形態(one embodiment、an embodiment)」という語は、「少なくとも1つの実施形態」と解釈されるべきである。「別の実施形態」という語は、「少なくとも1つの他の実施形態」と解釈されるべきである。明示的および暗黙的な他の定義は、下記に含まれ得る。
例示的な動作環境
[0014]図1は、本明細書に述べられた主題の態様が実施されてよい適切なコンピューティングシステム環境100の一例を示している。コンピューティングシステム環境100は、適切なコンピューティング環境の一例にすぎず、本明細書に述べられた主題の態様の使用または機能性の範囲に関する限定を示唆するものではない。コンピューティングシステム環境100は、例示的な動作環境100に示されたコンポーネントのいずれか1つまたはその組合せに関する依存性または要件を有するものと解釈されるべきでない。
[0015]本明細書に述べられた主題の態様は、他の複数の汎用または特別目的コンピューティングシステム環境または構成で動作可能である。本明細書に述べられた主題の態様で使用するのに適し得るよく知られているコンピューティングシステム、環境または構成の例は、パーソナルコンコンピューター、サーバーコンピューター、ハンドヘルドまたはラップトップデバイス、マルチプロセッサーシステム、マイクロコントローラーベースのシステム、セットトップボックス、プログラマブル家電、ネットワークPC、ミニコンピューター、メインフレームコンピューター、携帯情報端末(PDA:personal digital assistant)、ゲーミングデバイス、プリンター、セットトップ、メディアセンターまたは他の器具を含めた器具、自動車に組み込まれた、または取り付けられたコンピューティングデバイス、他のモバイルデバイス、上記システムまたはデバイスのいずれかを含む分散コンピューティング環境などを備える。
[0016]本明細書に述べられた主題の態様は、コンピューターによって実行されるプログラムモジュールなどのコンピューター実行可能命令の一般的な文脈で述べることができる。一般に、プログラムモジュールは、特定のタスクを実施し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本明細書に述べられた主題の態様は、通信網によってリンクされたリモート処理デバイスによってタスクが実施される分散コンピューティング環境内でも実施されてよい。分散コンピューティング環境では、プログラムモジュールは、メモリー記憶デバイスを含めて、ローカルとリモートの両方のコンピューター記憶媒体に置かれてよい。
[0017]図1を参照すると、本明細書に述べられた主題の態様を実施するための例示的なシステムが、コンピューター110の形の汎用コンピューティング装置を含んでいる。コンピューターは、命令を実行できる任意の電子デバイスを含んでよい。コンピューター110のコンポーネントは、処理装置120と、システムメモリー130と、システムメモリーを含めた様々なシステムコンポーネントを処理装置120に結合するシステムバス121とを含んでよい。システムバス121は、メモリーバスまたはメモリーコントローラー、周辺バス、および様々なバスアーキテクチャーのいずれかを使用したローカルバスを含めて、複数のタイプのバス構造のいずれかであってよい。限定するためではなく、例を挙げると、こうしたアーキテクチャーは、業界標準アーキテクチャー(ISA:Industry Standard Architecture)バス、マイクロチャネルアーキテクチャー(MCA:Micro Channel Architecture)バス、拡張ISA(EISA:Enhanced ISA)バス、ビデオ電子規格協会(VESA:Video Electronics Standards Association)ローカルバス、メザニンバスとしても知られている周辺コンポーネント相互接続(PCI:Peripheral Component Interconnect)バス、周辺コンポーネント相互接続拡張(PCI−X:Peripheral Component Interconnect Extended)バス、アドバンストグラフィックスポート(AGP:Advanced Graphics Port)、およびPCIエクスプレス(PCIe:PCI express)を含む。
[0018]コンピューター110は典型的に、様々なコンピューター読取り可能媒体を含む。コンピューター読取り可能媒体は、コンピューター110によってアクセスできる任意の使用可能な媒体を含むことができ、揮発性と不揮発性の両方の媒体、および取外し可能と取外し不可能の媒体を含む。限定するためではなく、例を挙げると、コンピューター読取り可能媒体は、コンピューター記憶媒体および通信媒体を備えてよい。
[0019]コンピューター記憶媒体は、コンピューター読取り可能命令、データ構造、プログラムモジュールまたは他のデータなどの情報を格納するための任意の方法または技術で実装された揮発性と不揮発性、取外し可能と取外し不可能の両方の媒体を含む。コンピューター記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリーまたは他のメモリー技術、CD−ROM、デジタル多用途ディスク(DVD:digital versatile disk)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは所望の情報を格納するために使用されてよく、またコンピューター110によってアクセスできる他の任意の媒体が含まれる。
[0020]通信媒体は典型的に、コンピューター読取り可能命令、データ構造、プログラムモジュール、または他のデータを搬送波や他の移送機構などの変調データ信号として具現化し、また任意の情報送達媒体を含む。「変調データ信号」という語は、信号内の情報を符号化するようにその特性の1つまたは複数が設定または変更された信号を意味する。限定のためではなく、例を挙げると、通信媒体は、有線ネットワークや直接有線接続などの有線媒体、ならびに音響、RF、赤外線などの無線媒体、および他の無線媒体を含む。上記内容のいずれかの組合せもまた、コンピューター読取り可能媒体の範囲内に含まれるべきである。
[0021]システムメモリー130は、読取り専用メモリー(ROM)131およびランダムアクセスメモリー(RAM)132など、揮発性および/または不揮発性メモリーの形のコンピューター記憶媒体を含む。起動時などにコンピューター110内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)133は典型的に、ROM131に格納される。RAM132は典型的に、処理装置120によって即時にアクセス可能であり、かつ/またはそれによる操作を現在受けているデータおよび/またはプログラムモジュールを含む。限定するためではなく、例示するために、図1は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136およびプログラムデータ137を示している。
[0022]コンピューター110は、他の取外し可能/取外し不可能、揮発性/不揮発性のコンピューター記憶媒体を含むこともできる。例示するためだけに、図1は、取外し不可能な不揮発性の磁気媒体から読み出しまたはそこに書き込むハードディスクドライブ141、取外し可能な不揮発性の磁気ディスク152から読み出しまたはそこに書き込む磁気ディスクドライブ151、およびCD−ROMや他の光媒体などの取外し可能な不揮発性の光ディスク156から読み出しまたはそこに書き込む光ディスクドライブ155を示している。例示的な動作環境で使用されてよい他の取外し可能/取外し不可能、揮発性/不揮発性コンピューター記憶媒体は、磁気テープカセット、フラッシュメモリーカード、デジタル多用途ディスク、他の光ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどを含む。ハードディスクドライブ141は典型的に、インターフェース140などの取外し不可能メモリーインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は典型的に、インターフェース150などの取外し可能メモリーインターフェースによってシステムバス121に接続される。
[0023]上記に論じられ、図1に示されたドライブおよびその関連するコンピューター記憶媒体は、コンピューター読取り可能命令、データ構造、プログラムモジュールおよびコンピューター110のための他のデータの記憶域を提供する。図1では、たとえば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146およびプログラムデータ147を格納するように示されている。これらコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136およびプログラムデータ137と同じであっても良いし、異なってもよいことに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146およびプログラムデータ147は、本明細書で示されている最小限の数とは異なる任意の数であり、様々なコピーがある。
[0024]ユーザーは、キーボード162、およびマウス、トラックボールまたはタッチパッドと一般に呼ばれるポインティング装置161などの入力デバイスを介して、コンピューター110にコマンドおよび情報を入力してよい。他の入力装置(図示せず)は、マイクロホン、ジョイスティック、ゲームパッド、衛星放送アンテナ、スキャナー、タッチセンサー式の画面、ライティングタブレットなどを含んでよい。これらおよび他の入力装置はしばしば、システムバスに結合されたユーザー入力インターフェース160を介して処理装置120に接続されるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス(USB:universal serial bus)などの他のインターフェースおよびバス構造によって接続されてもよい。
[0025]モニター191または他のタイプの表示装置もまた、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。モニターに加えて、コンピューターは、出力周辺インターフェース195によって接続されてよいスピーカー197およびプリンター196などの他の周辺出力デバイスを含むこともできる。
[0026]コンピューター110は、リモートコンピューター180など、1つまたは複数のリモートコンピューターへの論理接続を使用して、ネットワーク化された環境内で動作することができる。リモートコンピューター180は、パーソナルコンピューター、サーバー、ルーター、ネットワークPC、ピアデバイス、または他の一般的なネットワークノードであってよく、また図1にはメモリー記憶デバイス181だけが示されているが、典型的には、コンピューター110に関して上記で述べられた要素の多くまたはすべてを含む。図1に示された論理接続は、ローカルエリアネットワーク(LAN:local area network)171と広域ネットワーク(WAN:wide area network)173とを含むが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、企業規模のコンピューターネットワーク、イントラネットおよびインターネットでは一般的である。
[0027]LANネットワーキング環境で使用される場合は、コンピューター110は、ネットワークインターフェースまたはアダプター170を介してLAN 171に接続される。広域ネットワーキング環境で使用される場合は、コンピューター110は、モデム172、またはインターネットなどのWAN 173を介して通信を確立する他の手段を含んでよい。内部にあっても、外部にあってもよい172は、ユーザー入力インターフェース160または他の適切な機構を介してシステムバス121に接続されてよい。ネットワーク化された環境では、コンピューター110に関して示されたプログラムモジュール、またはその一部は、リモートメモリー記憶デバイス内に格納されてよい。限定のためではなく、例示するために、図1は、メモリーデバイス181内に常駐するリモートアプリケーションプログラム185を示している。示されたネットワーク接続は例示的なものであり、コンピューター間の通信リンクを確立する他の手段が使用されてもよいことが理解されよう。
チェックポインティング
[0028]上記に言及されたように、記憶デバイスにデータを書き込んでいる間に、停電およびシステム障害が発生することがある。これによって、記憶デバイスに格納されたデータが不整合な状態に置かれることがある。この問題および他の問題に対処するために、チェックポイントが、記憶デバイスに書き込まれてよい。
[0029]図2は、本明細書に述べられた主題の態様が動作してよいシステムのコンポーネントの例示的な構成を表すブロック図である。図2に示されたコンポーネントは例示的であり、必要とされ、または含まれ得るコンポーネントすべてを含むものとは限らない。他の実施形態では、図2に関連して述べられたコンポーネントおよび/または機能は、本明細書に述べられた主題の態様の精神または範囲から逸脱せずに、(図示された、または図示されない)他のコンポーネントに含まれていてもよいし、サブコンポーネントに置かれてもよい。一部の実施形態では、図2に関連して述べられたコンポーネントおよび/または機能は、複数のデバイスに渡って分散されてよい。
[0030]図2に移ると、システム205は、1つまたは複数のアプリケーション210と、API 215と、ファイルシステムコンポーネント220と、ストア250と、通信機構255と、他のコンポーネント(図示せず)とを含んでよい。システム205は、1つまたは複数のコンピューティングデバイスを備えてよい。こうしたデバイスは、たとえば、パーソナルコンピューター、サーバーコンピューター、ハンドヘルドまたはラップトップのデバイス、マルチプロセッサーシステム、マイクロコントローラーベースのシステム、セットトップボックス、プログラマブル家電、ネットワークPC、ミニコンピューター、メインフレームコンピューター、携帯電話、携帯情報端末(PDA)、ゲーミングデバイス、プリンター、セットトップ、メディアセンターまたは他の器具を含めた器具、自動車に組み込まれた、または取り付けられたデバイス、他のモバイルデバイス、上記システムまたはデバイスのいずれかを含む分散コンピューティング環境などを含んでよい。
[0031]システム205が単一のデバイスを備える場合、システム205として働くように構成され得る例示的なデバイスは、図1のコンピューター110を備える。システム205が複数のデバイスを備える場合、複数のデバイスはそれぞれ、同様に、または異なるように図1のコンピューター110を備えてよい。
[0032]ファイルシステムコンポーネント220は、リカバリーマネージャー225と、チェックポイント・マネージャー230と、I/Oマネージャー235と、書込み計画マネージャー237と、他のコンポーネント(図示せず)とを含んでよい。本明細書では、コンポーネントという語は、デバイスのすべてまたは一部、1つまたは複数のソフトウェアモジュールの集合またはその一部、1つまたは複数のソフトウェアモジュールの何らかの組合せまたはその一部、および1つまたは複数のデバイスまたはその一部などを含むものと解釈されるべきである。
[0033]通信機構255は、システム205が他のエンティティと通信することを可能にする。たとえば、通信機構255は、システム205がリモートホスト上のアプリケーションと通信することを可能にすることができる。通信機構255は、ネットワークインターフェースまたはアダプター170、モデム172、または図1に関連して述べられた通信を確立するための他の任意の機構であってよい。
[0034]ストア250は、データへのアクセスを提供できる任意の記憶媒体である。ストアは、揮発性メモリー(たとえばキャッシュ)、および不揮発性メモリー(たとえば永続記憶装置)を含んでよい。データという語は、1つまたは複数のコンピューター記憶要素によって表され得るどんなものをも含むと解釈されるべきである。論理上、データは、揮発性または不揮発性メモリー内で一連の1および0として表されてよい。非バイナリ記憶媒体を有するコンピューターでは、データは、記憶媒体の能力に従って表されてよい。データは、番号、文字などの単純なデータタイプ、階層型の、リンクされた、または他の関連データタイプを含めた様々なタイプのデータ構造、複数の他のデータ構造または単純なデータタイプを含むデータ構造などに編成されてよい。データの一部の例は、情報、プログラムコード、プログラム状態、プログラムデータ、他のデータなどを含む。
[0035]ストア250は、ハードディスク記憶装置、他の不揮発性記憶装置、RAMなどの揮発性メモリー、他の記憶装置、上記の何らかの組合せなどを備えてよく、複数のデバイスに渡って分散されてよい。ストア250は、外部にあることも、内部にあることも、システム205の内部と外部の両方のコンポーネントを含むこともある。
[0036]ストア250は、記憶域コントローラー240を介してアクセスされてよい。本明細書では、アクセスは、データの読出し、データの書込み、データの削除、データの更新、上記の2つ以上を含む組合せなどを含んでよい。記憶域コントローラー240は、ストア250へのアクセスを求める要求を受信してよく、こうした要求を適宜遂行することができる。記憶域コントローラー240は、データが受信された順序でストア250に書き込まれることを保証しないように構成されてよい。さらに、記憶域コントローラー240は、記憶域コントローラー240がストア250の不揮発性メモリーにデータを実際に書き込む前に、要求されたデータを記憶域コントローラー240が書き込んでいることを示すことができる。
[0037]1つまたは複数のアプリケーション210は、データの作成、削除または更新に関与してよい任意のプロセスを含む。こうしたプロセスは、ユーザーモードで実行することも、カーネルモードで実行することもできる。「プロセス」という語およびその変形体は本明細書では、従来のプロセス、スレッド、コンポーネント、ライブラリ、タスクを実施するオブジェクトなどを含んでよい。プロセスは、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せで実装されてよい。一実施形態では、プロセスは、任意の機構であるが、呼び出され、アクションを実施することができ、またはその際に使用される。プロセスは、複数のデバイスに渡って分散されることも、単一のデバイスにあることもある。1つまたは複数のアプリケーション210は、API 215を介してI/Oマネージャー235に、(たとえば関数/メソッド呼出しによって)ファイルシステム要求を行うことができる。
[0038]I/Oマネージャー235は、記憶域コントローラー240(または他の何らかの中間コンポーネント)に1つまたは複数のどんなI/O要求を発行するか決定してよい。I/Oマネージャー235は、ファイルシステム要求に関連する操作が進行し、完了し、または失敗するにつれて、1つまたは複数のアプリケーション210にデータを返すこともできる。ファイルシステム要求がトランザクションを伴う場合、I/Oマネージャー235は、トランザクションマネージャーがトランザクションを適切に管理できるように、トランザクションマネージャー(図示せず)に通知してよい。一部の実施形態では、トランザクションマネージャーの機能は、I/Oマネージャー235に含まれてよい。
[0039]ファイルシステムコンポーネント220は、ファイルシステムオブジェクト、またはファイルシステムオブジェクトに関するメタデータをストア250に書き込む際にコピーオンライト、ライトインプレイス(write in place)、上記の組合せを使用することができる。「ファイル」という語は、ディレクトリー、子をもたないファイルシステムオブジェクト(たとえば、ファイルであると時々考えられるもの)、他のファイルシステムオブジェクトなどを含んでよい。
[0040]コピーオンライトでは、ファイルのデータが修正される前に、修正されるべきデータのコピーが、別の位置にコピーされる。ライトインプレイスでは、元のデータを別の位置にコピーせずに、ファイルのデータが適所で修正されてよい。コピーオンライトとライトインプレイスのハイブリッドは、ファイルに関するメタデータについてはコピーオンライトを実施し、そのファイル内に含まれたデータについてはライトインプレイスを実施することを含んでよい。
[0041]ファイルシステムのオブジェクトは、トランザクションのコンテキストで更新されてよい。トランザクションは、たとえばアトミック、整合性、分離および耐久性を含めて、様々なプロパティによって表され得る一群の操作である。本明細書では、トランザクションは、少なくとも整合性プロパティによって定義されてよく、上記の他のプロパティの1つまたは複数によっても定義され得る。
[0042]整合性プロパティは、1つまたは複数のファイルに関して、データの許可された状態を指す。ファイルシステムのファイルは、(トランザクションの間は無許可の状態を通過することがあるが)トランザクションの開始前、およびトランザクションの完了後は、許可された状態にある。たとえば、銀行振替は、2つの操作:1つの口座からの引落しと、別の口座への入金のセットとして実施されてよい。この例では整合性は、銀行と口座名義人の総勘定残高が一定になるもの(たとえばT=A+B、ただし、Tは定数、A=銀行残高、B=口座名義人残高)と定義されてよい。この例では整合性を実施するために、借方操作と貸方操作は単純に、同じ金額に対するものであり、両方が完了され、または各口座でどちらも完了されないことを必要とする。
[0043]ファイルシステムの整合性状態を示すために、チェックポイントが書き込まれてよい。チェックポイントは、チェックポイントおよび/またはチェックポイントに関連するデータがディスクに正確に書き込まれたかどうか決定するために使用されてもよい1つまたは複数の検証コード(たとえば1つまたは複数のチェックサム、ハッシュ、または他のデータ)を含んでよい。リカバリーすると、最後に書き込まれたチェックポイントが、突き止められてよい。次いで、チェックポイントの検証コード(複数可)は、チェックポイントおよび/またはチェックポイントに関連するデータがディスクに正確に書き込まれたかどうか決定するために使用されてもよい。そうでない場合は、有効なチェックポイントが見つかるまで、前のチェックポイントが突き止められ、有効であるかチェックされてよい。最も最近の有効なチェックポイントが見つかると、ファイルシステムの最後の整合性状態が分かる。このポイントの後に行われるファイルシステム操作は、廃棄されてもよいし、要望に応じて追加のリカバリーアクションが実施されてもよい。
[0044]一実施形態では、ファイルシステム上のオブジェクトがDで示されてよく、ただし、nは、システムに対してオブジェクトを識別する。ファイルシステム内のオブジェクトは、直列化可能であり(すなわち、ストア250内のデータとして表すことが可能であり)、また非直列化可能である。オブジェクトテーブルは、各オブジェクト識別子を、ストア250内のその位置に関連付ける。
[0045]Dは、修正トランザクションで最初に更新されるとき、nを使用して、オブジェクトテーブル内でその位置を調べることにより突き止められる。一例において使用するために、ストア250内のDの記憶位置は、Lと呼ばれる。
[0046]次いで、Lの内容がストア250から読み出され、オブジェクトは、非直列化されてよく(たとえば、直列化されたフォーマットからオブジェクトの構造に変換されてよく)、修正されるオブジェクトの一部が、メインシステムメモリーにコピーされる。更新は、メモリー内の一部(またはそのコピー)に対して実施される。修正されるメモリー内の一部に関連して、ストア25内の1つまたは複数の新しい位置(これをLと呼ぶ)が、修正された一部のために指定される。
[0047]メインシステムメモリー内のこれらのコピーは本明細書では、オブジェクトの「論理的なコピー」と呼ばれることがある。オブジェクトの論理的なコピーは、オブジェクトを表すために使用されてよい1つまたは複数のデータ構造を含む。論理的には、論理的なコピーは、オブジェクトの複製である。物理的には、論理的なコピーは、(他のデータへのポインターを含めて)オブジェクトの複製を作成するために使用されてよいデータを含んでよい。たとえば、一実装形態では、論理的なコピーは、オブジェクトの実際のコピー(たとえばビットごとのコピー)であってもよいし、オブジェクトを作成するために使用されてよいデータを含むデータ構造であってもよい。
[0048]別の実装形態では、修正されない論理的なコピーは、元のオブジェクトを指す1つまたは複数のポインターを含んでよい。論理的なコピーが修正されるとき、論理的なコピー内のポインターは、(たとえば論理的なコピーの変更された部分について)新しいメモリー位置を指してもよく、他のポインターは、(たとえば論理的なコピーの変更されていない部分について)元のオブジェクトの一部を指してよい。ポインターを使用して、修正されたコピーは、元のオブジェクトの修正されていないデータと共に修正されたデータを使用して作成されてよい。論理的なコピーの作成は、たとえば、オブジェクトの複製を作成するのに必要な記憶域を減少させるために実施されてよい。
[0049]さらに、本明細書では直列化および非直列化について言及されることがあるが、本明細書に述べられた主題の態様を、直列化および非直列化と通常考えられるものに限定する意図はない。一実施形態では、直列化バージョンは、ビット対ビットで非直列化バージョンと同一であってよい。別の実施形態では、直列化バージョンのビットは、非直列化バージョンのものとは異なる形式および順序でパッケージ化されてもよい。確かに、一実施形態では、直列化および非直列化は、ストアからのオブジェクトを表すデータを格納し取出すための任意の機構を意味するものと理解されるべきである。他の機構はたとえば、テキストフォーマットのオブジェクトのプロパティをストアに書み込むこと、ストア内でオブジェクトのプロパティをマークアップ言語で符号化すること、オブジェクトのプロパティおよび他の特徴をストアに格納する他の方法などを含んでよい。
[0050]システムの決定で(たとえばトランザクションのコミット後、または他の何らかのときに)、システムは、修正された論理的なコピーを直列化して、安定した媒体に戻すことができるが、位置Lでそれを行う。修正された論理的なコピーを新しい位置に書き込み戻す意図は、書込み計画と呼ばれる。書込み計画は、1つまたは複数のオブジェクトに対する任意の数の更新を識別してよい。書込み計画は、2つ以上のトランザクションで生じる変更を参照してよい。複数の書込み計画が、単一の書込み計画に組み合わされてよい。
[0051]書込み計画マネージャー237は、様々な更新のための書込み計画の作成に関与してよい。書込み計画が(たとえばトランザクションのコンテキストで)複数ファイルシステムオブジェクトを伴う場合、書込み計画マネージャー237は、ファイルシステムの整合性状態を維持するために、トランザクションに関与するすべてのファイルシステムオブジェクトの記憶域上の位置を示す書込み計画を生成するように動作可能であってよい。
[0052]チェックポイントの直後に修正が行われる場合、(複数の位置で複製されてよい)リカバリーブロックと呼ばれるブロックが、修正された論理的なコピーの開始(すなわちL)を指すように修正されてよい。Lのオブジェクト内のフィールドは、次に書き込まれる位置を指す。このフィールドは、チェックポイント間で生じる書込み計画のチェーン内のリンクを表す。
[0053]論理的なコピーを書き込むよう求める要求の送信と共に、オブジェクトテーブルに対して修正が行われてよい。特に、オブジェクトの識別子によってインデックス付けされた位置の値は、修正された論理的なコピーが格納される位置(すなわちL)の値に設定されてよい。これは、オブジェクトDの位置の後続のルックアップが位置L、オブジェクトの新しいバージョンに向けられるように行われる。
[0054]トランザクションが2つ以上のオブジェクト、たとえばDおよびDを修正する場合、オブジェクトは、互いに「原子的にバインドされる」と見なされ、1つの書込み計画で書き込まれる。書込み計画は、(たとえば、関与するオブジェクトへのリンクで)この関係を指定してよい。
[0055]任意の数のオブジェクトが、このようにして続けられてよい。周期的にオブジェクトテーブルもまた、他のいずれかのオブジェクトと同じようにしてストア250に書き込まれてよい。
[0056]オブジェクトテーブルをストア250に書き込むよう求める要求の送信と共に、フラッシュコマンドも、記憶域コントローラー240に送られてよい。フラッシュコマンドは、記憶域コントローラー240に、ストア250の不揮発性メモリーにまだ書き込まれていないその揮発性メモリーからのすべてのデータを書き込むように指示する。
[0057]より詳細に下記に述べられるように、チェックポイントは周期的に、記憶域に書き込まれてよい。チェックポイントは、ストア250によって格納されるチェックポイントレコードによって示されてよい。チェックポイントは、任意のときに書き込まれてよく、フラッシュの後に安定性/耐久性を有し得る。安定性/耐久性は、チェックポイントがストアの不揮発性メモリーに格納されることを指す。
[0058]チェックポイントが安定性/耐久性を有した後、オブジェクトのいずれかの古い未使用のコピー(またはその一部)に使用された空間が再使用されてよい。フラッシュが完了した後、次いで、リカバリーブロックは、次の書込み計画のチェーンの開始に向けられる。一実施形態では、リカバリーブロックは、書込み計画のチェーンの開始をオブジェクトテーブルの新しい位置に向けてよい。
[0059]図3に関連してより具体的な例が述べられており、この図3は、本明細書に述べられた主題の態様を示すブロック図である。示されたように、図3は、メインメモリー305およびストア250を示している。線307は、メインメモリー305とストア250の間の分割を表している。線310より上のオブジェクトはメインメモリー内にあり、線310より下のオブジェクトは、ストア250の揮発性メモリーまたは不揮発性メモリー内にある。
[0060]オブジェクト314〜316は、メインメモリー305内に示されている。実装において、オブジェクト314〜316は、それぞれオブジェクト319〜321の非直列化された論理的なコピーであってよい。オブジェクト319は、ストア250上の位置1550に置かれ、オブジェクト320は、ストア250上の位置200に置かれ、オブジェクト321は、ストア250上の位置800に置かれる。
[0061]オブジェクトテーブル310は、ストア250上のオブジェクト314〜316の位置を示すキー値対を含む。キー値対は、オブジェクト314〜316の識別子(n)を使用してインデックス付けされる。
[0062]トランザクションがオブジェクト316を(たとえばその名前をfoo.txtに変更することによって)を修正する場合、整合性コンポーネント(たとえば図2の整合性コンポーネント220)は、更新されたオブジェクトの新しい記憶位置(たとえば位置801)を決定してよい。オブジェクトがファイルである場合、トランザクションのコンテキストでオブジェクトの名前を更新することによって、ファイルを含むディレクトリーもまた、やはりトランザクションに関与することになり得る。たとえば、ファイル名が変更される場合、ファイルを表すオブジェクトと、ファイルを含むディレクトリーを表すオブジェクトの両方が、トランザクションに関与する必要があり得る。この場合、オブジェクトを含むディレクトリーは、オブジェクト314として表され、更新されたディレクトリーの論理的なコピー(たとえばオブジェクト318)は、ストア250内のオブジェクト323として表される。また、テーブル310は、修正されたオブジェクト(すなわちオブジェクト317および318)の新しい記憶位置(すなわち801および1000)を示すように、テーブル311に対して論理的に更新されている。
[0063]トランザクションのコンテキスト内のオブジェクトの修正が別のオブジェクトにも影響を及ぼすことは、たとえば、I/Oマネージャー235または図2の他の何らかのコンポーネントによって明示的に示され、または決定されてよい。
[0064]2つ以上のオブジェクトがトランザクションの更新に関与する場合、オブジェクトは、上記に言及されたように「原子的にバインドされる」と見なされる。リカバリー操作では、トランザクションのコンテキストで変更されたすべてのオブジェクトについてストア250内に変更が見られない限り、見つかった変更はすべて廃棄される。換言すると、オブジェクトのうちの1つについて変更が見つかるが、オブジェクトのうちの別のオブジェクトについて変更が見つからない場合は、そのオブジェクトのうちの1つについての変更は廃棄される。
[0065]一実施形態では、2つ以上のオブジェクトを原子的にバインドするために、ポインターが、ストア250内に格納されてもよいし、別の方法で各オブジェクトに関連付けられてよい。ポインターは、トランザクションに関与する別のオブジェクト(またはその一部)の記憶位置を示すことができる。トランザクションに関与する追加のオブジェクトがない場合、ポインターは、「デッドブロック」を指してもよいし、別の書込み計画の「ヘッド」オブジェクトの記憶位置を示してもよい。このヘッドオブジェクトは、書込み計画、書込み計画の修正されたオブジェクト(またはその一部)などを備えてよい。
[0066]「指された」オブジェクトの正確な内容を示すために、次の記憶位置へのポインターに加えて、データもまた、ストア250内に格納されてよい。たとえば、指されたオブジェクトの正確な内容を示すハッシュ値が格納されてよい。
[0067]図3に示された例では、オブジェクト322に関連するポインターは、オブジェクト323に関連する記憶位置を指してよい。ポインターは、2つのオブジェクトを共にバインドする。リカバリーの間、オブジェクトのどちらもが見つからず、またはそれらは正確な内容をもたない場合、見つかったオブジェクトによって表された変更は、廃棄されてよい。
[0068]ストア250の性質のために、最初にどのオブジェクトがストア250の不揮発性メモリーに書き込まれるかに関する保証がないことがある。オブジェクト322が最初に書き込まれ、オブジェクト323が書き込まれない場合、オブジェクト322からのポインターは、偽のデータを有し得る記憶位置を指す。しかし、記憶位置のデータのハッシュを計算し、このハッシュをオブジェクト322と共に格納されたハッシュと比較することによって、位置1000のデータは無効なデータを有するものとして検出され得る。この場合、リカバリーの間、リカバリーマネージャー(たとえば図2のリカバリーマネージャー225)は、オブジェクト322および323によって表された変更を廃棄してよい。
[0069]リカバリーブロック330は、チェックポイントの後にデータが格納されると思われた第1の記憶位置(この場合は位置801)を指す。またリカバリーブロック330は、第1の記憶位置に格納されたオブジェクトの正確な内容を使用して計算されるハッシュを含んでいてもよいし、それに関連付けられてもよい。
[0070]図4は、本明細書に述べられた主題の態様による、ファイルシステム内で行われる更新の全体を表す図である。グローバルテーブル405は、ストア内のオブジェクトの位置を識別するオブジェクトテーブルと、割り当てられたストア250内の空間に関する割当てデータとを含む。進行中の更新410も示されている。更新は、時間軸415に接触するとき、完了し、もはやグローバルテーブル405のいずれをも修正する必要はない。更新410の更新の線はそれぞれ、複数の更新を表してよい。整合性を維持するために複数の更新が共に行われる必要がある場合、更新は、トランザクションのコンテキストで行われてよい。
[0071]チェックポイントが有効となるには、チェックポイントは、整合性状態で書き込まれる必要がある。書込みファイルシステム内のコピーを用いて、オブジェクトが更新されるとき、修正されたオブジェクトの論理的なコピーが、ファイルシステムの新しい位置に格納される。この新しい位置は、オブジェクトテーブルへの更新と共に、オブジェクトテーブル内に反映される。整合性については、システム障害の前に更新がディスクに完全には書き込まれないことがあるので、ディスクにまだ書き込まれていない更新をオブジェクトテーブルが反映することは不正確である。同様に、更新が完了され、ディスクに書き込まれ、他のトランザクション関連の更新が完了されるが、オブジェクトテーブルが更新を示さないことも不正確である。
[0072]整合性を保証するために、チェックポイントは、更新用のメタデータがグローバルテーブルに反映されるときに選択される必要がある。更新410を表す線がそれぞれ、更新のためにグローバルテーブル405が更新されてよい期間を示す場合、520でチェックポイントを実施することによって不整合性状態がもたらされることがあるが、時間525でチェックポイントを実施することによって整合性状態がもたらされる。
[0073]図5は、本明細書に述べられた主題の態様による、例示的なチェックポイント・バケットを示すブロック図である。上記に言及された問題および他の問題に対処するために、それぞれの更新は、チェックポイント・バケット(たとえばバケット515のうちの1つ)に関連付けられてよい。チェックポイント・バケットは、チェックポイントのチェックポイント・データがディスクに書き込まれる前に、チェックポイント・バケットに関連する更新の少なくとも書込み計画を明らかにするようにグローバルテーブルが更新される必要があることを示す論理的な概念である。換言すると、グローバルテーブルは、更新がそれらの位置に現在書き込まれていても、いなくても、バケットの更新の位置および割当て情報を明らかにするように更新される必要がある。
[0074]周期的に(たとえばリカバリーウィンドウに基づくチェックポイントタイマーの終了時、ある数の書込みが行われた後、何らかの閾値を超えた後など)、チェックポイントを生成するための決定が行われてよい。これが起こるとき、チェックポイント・マネージャーは、後続の更新に関連するチェックポイント・バケットを示すデータ(たとえばデータ構造510)を更新してよい。たとえば、チェックポイント・マネージャーは、現在のチェックポイント・バケットを示すデータ(たとえばデータ構造510)の排他ロック(たとえばロック505)を得てもよい。チェックポイント・マネージャーは、データの排他ロックを得た後、後続の更新用の新しいチェックポイント・バケットを示すようにデータを更新してよい。すべての後続の更新は、データが後続の更新用の別のチェックポイント・バケットを示すように変更されるまで、新しいチェックポイント・バケットに関連付けられる。
[0075]チェックポイント・バケットは、論理的な概念と考えられてよく、様々な方法で実装されてよい。たとえば、一実装形態では、チェックポイント・バケットは、チェックポイント・バケットに関連するそれぞれの更新へのポインターを有するリストなど、データ構造として実装されてよい。別の例として、チェックポイント・バケットは、更新ごとに維持されるデータとして実装されてよく、このデータは、更新に関連するチェックポイントを示す。別の例として、チェックポイント・バケットは、カウントセマフォとして実装されてよい。この例では、どの更新を依然としてディスクに書き込む必要があるかは知られていないことがあるが、ディスクに依然として書き込む必要がある更新の回数は知られている。この例では、読書きロックが使用されてよい。
[0076]上記の例は、チェックポイント・バケットを実装する方法をすべて含むものでも、それを網羅するものでもない。確かに、本発明の教示に基づいて、当業者は、チェックポイント・バケットの実装するための他の多くの機構を認識することができる。
[0077](たとえばデータ構造510の変更によって)後続の更新用のチェックポイント・バケットを示した後、チェックポイント・マネージャーは、現在のチェックポイント・バケット内のすべての更新の書込み計画が生成されるのを待ってよい。現在のチェックポイント・バケット内のすべての更新の書込み計画が生成された後(しかし、恐らく記憶域に書き込まれていないが)、チェックポイント・マネージャーは、図4のグローバルテーブル405のスナップショットをとり、グローバルテーブル405のスナップショットをストアに書き込むための書込み計画を作成してよい。スナップショットは、コピーオンライトまたは他の機構によって、グローバルテーブル405の論理的なコピーとして作成されてよい。
[0078]図4に戻って述べると、チェックポイント・マネージャーが、現在のチェックポイント・バケット内の更新が生成されるのを待っている間、またチェックポイント・マネージャーがチェックポイントの書込みのための書込み計画を生成する間、チェックポイントの後に続く更新のための書込み計画が生成され、ディスクに書き込まれてよい。しかし、チェックポイント・マネージャーは、グローバルテーブルのスナップショットを得ようとするとき、スナップショットを作成する前にグローバルテーブル405の排他ロックを得てよい。チェックポイント・マネージャーが排他ロックを有している間、他の更新のために書込み計画が依然として生成されてよく、これらの書込み計画は、ストア内にさらに格納されてよいが、グローバルテーブル(たとえばオブジェクトテーブル)は、チェックポイント・マネージャーがその排他ロックを解除するまで、これらの書込み計画を指すように更新されないことがある。ロックの解除と共に、チェックポイント・マネージャーは、後のチェックポイントがイネーブルされており、後の更新がグローバルテーブルを更新してよいことを示す信号を送ってよい(たとえばイベントを引き起こしてよい)。
[0079]リカバリーの助けとなるように、チェックポイントは、下記の規則に従ってチェックポイントを検証するために検証コードと共にディスクに書き込まれてよい。
[0080]1.書込み計画によって示されたデータがディスクに書き込まれるのを待つ(たとえば、チェックポイントに関連するすべての更新がディスクに書き込まれるのを待つ)。
[0081]2.チェックポイントに関連するデータのすべてがディスクに書き込まれることを要求する(たとえば、メタデータの論理的なコピーがディスクに書き込まれることを要求する)。
[0082]3.フラッシュを発しまたはフラッシュを待ち、およびフラッシュがうまく完了したことの肯定応答を待つ。
[0083]4.ディスクに書き込まれたチェックポイント・データのための検証コードを生成する。一実施形態では、検証コードは、ディスクに書き込まれたデータのサブセットについてものものであってよい。たとえば、ファイル用データがツリーに格納され、このツリーの各ノードが、その子の検証コードを含む場合、検証ノードは、ツリーのルートノードについてのものであってよい。この実施形態では、検証コードは、ルートノードと共に書き込まれ、検証コードが正確であることを検証するためにも使用されてよい。
[0084]5.検証コード(およびルートノードなどの関連する任意のデータ)がディスクに書き込まれることを要求する。検証コードは、システム障害の前に、実際にはディスクに到達しないことがあることに留意されたい。そうでない場合は、チェックポイントは、有効なチェックポイントでない。
[0085]これらの規則により、チェックポイントが記憶域上で見つかり、チェックポイントの内部検証コードが有効な場合、チェックポイントに関連するその他のデータも記憶域上に格納されており、また有効であると期待される。検証コードがルートノードに含まれている場合、ルートノードのその他のデータ(たとえばツリーの他のノードへのポインター)が、チェックポイントに対応するデータの残りを見つけるために使用されてよい。
[0086]代替案として、チェックポイントに関連する各更新の検証コードが、記憶域に書き込まれてよい。たとえば、チェックポイントは、チェックポイントより前、および前のチェックポイントの後に行われると思われたすべての更新のブロックを示してよい。示された各ブロックについて、チェックポイントは、ブロックの正確な内容を示す検証コードを格納してよい。この代替案ではリカバリー間、チェックポイントを検証するために、それぞれのブロックが、チェックポイントのその関連する検証コードに対して検証されてよい。
[0087]図2に戻って述べると、一実施形態では、チェックポイント・マネージャー230は、下記を含むアクションを実施するように動作可能であってよい。
[0088]1.ファイルシステムオブジェクトの更新の要求に関連する第1のチェックポイントを決定する。上記に言及されたように、チェックポイント・マネージャー230は、新しいチェックポイント・バケットを指すようにデータ構造(たとえば図5のデータ構造510)を更新することによってこれを行うことができる。次いで、それぞれの後続の更新要求が受信されると、要求は、新しいチェックポイント・バケットに割り当てられてよい。
[0089]本明細書では、「第1の」という語は、まさに最初のチェックポイントを意味するのではなく、それは「第2の」チェックポイントと区別するために使用されていることに留意されたい。換言すると、N個のチェックポイントがある場合、第1のチェックポイントは、1≦X≦Nとして任意のXであってよく、第2のチェックポイントは、1≦Y≦N、かつX<>Yとして、任意のYであってよい。
[0090]2.チェックポイントに関連するチェックポイント・データをファイルシステムの記憶域にいつ書き込むか決定する。たとえば、チェックポイントタイマーが終了し得るとき、更新回数が超過し得るとき、または他の何らかの閾値が、チェックポイント・データを書き込むときであることを決定するために使用されてよい。
[0091]3.ファイルシステムオブジェクトの更新を求める後続の要求の第2のチェックポイントを決定する。上記に言及されたように、チェックポイント・マネージャー230は、データ構造の排他ロック(たとえばロック505)を得た後、データ構造(たとえば図5のデータ構造510)を更新することによってこれを行うことができる。
[0092]4.後続の要求のためのデータ書込みの準備を可能にしながら、ファイルシステムの整合性状態を待つ。整合性状態は、現在のチェックポイント・バケットに関連する更新のすべてが記憶域上に表される(たとえばうまく書き込まれた)ときに生じる。後続の要求のためのデータ書込みの準備を可能にすることは、後続の要求のために書込み計画が生成され、記憶域に書き込まれることを可能にするが、メタデータの論理的なコピーの作成後まで、メタデータ(たとえばグローバルテーブル)の更新を可能にしないことを含む。
[0093]5.ファイルシステムのメタデータの論理的なコピーを作成する。これは、上記に言及されたように、グローバルテーブルのスナップショットをとることによって行われてよい。
[0094]6.メタデータの論理的なコピーを記憶域に書き込む。一実施形態では、これは、論理的なコピーを記憶域に書き込むことを要求すること、および論理的なコピーが記憶域に書き込まれたことの確認を待つことを含んでよい。別の実施形態では、これは、更新の許可の前に、メタデータの後続の更新によってコピーオンライトが引き起こされるように、記憶域内のコピーをクリーンとマーキングすることを含んでよい。
[0095]7.少なくとも1つの検証コードを記憶域に書き込む。上記に言及されたように、検証コードは、チェックポイントより前の更新が記憶域に書き込まれたかどうか、ならびにチェックポイントレコード自体が有効かどうか決定するのに使用可能であってよい。
[0096]API 215は、トランザクションに関与するオブジェクトを修正するよう求める要求を受信してよい。これに応答して、I/Oマネージャー235は、ストアの記憶位置(たとえばL)にオブジェクトを突き止め、オブジェクトの論理的なコピーを作成し、トランザクションのコンテキストでオブジェクトに変更を加え、変更された論理的なコピーを格納するための第2の記憶位置(たとえばL)を決定し、変更された論理的なコピーを書き込むよう求める要求を記憶域コントローラー240に送り、論理的なコピーが第2の記憶位置に格納されることを示すように揮発性データ構造(たとえばオブジェクトテーブル310)を更新してよい。
[0097]API 215がトランザクションに関与する別のオブジェクトを修正するよう求める要求を受信する場合、I/Oマネージャー235は、他のオブジェクトと第1のオブジェクトを共にバインドする関連付け(たとえば書込み計画)を作成することを含めて、追加のアクションを実施してよい。次いで、オブジェクトの修正を書き込むよう求める要求を記憶域に送ると共に、I/Oマネージャー235は、関連付けを書き込む要求を記憶域コントローラー240に送ることもできる。
[0098]図6〜図8は、本明細書に述べられた主題の態様に従って行われてよい例示的なアクションの全体を表すフローチャートである。説明を簡単にするために、図6〜図8に関連して述べられた方法論は、一連の行為として示され述べられている。本明細書に述べられた主題の態様は、示された行為および/または行為の順序によって制限されるものでないことを理解されたい。一実施形態では、行為は、下記に述べられる順序で行われる。しかし、他の実施形態では、行為は、平行して、別の順序で、かつ/または本明細書に提示も説明もされていない他の行為と共に行われよい。さらに、示されたすべての行為が、本明細書に述べられた主題の態様に従って方法論を実施する必要があるとは限らないことがある。さらに、方法論は別法として、状態図によって一連の相互関連する状態として表されてもよいし、イベントとして表されてもよいことが当業者には理解されよう。
[0099]図6に移ると、ブロック605で、アクションが開始している。ブロック610で、第1の1組の更新が第1のチェックポイントに関連付けられることを示す表示が行われる。これは、後続の更新が第1のチェックポイントに関連付けられることを示すようにデータ構造を修正することによって行われてよい。上記で言及されたように、これは、たとえば、ロックを取得し解除し、ポインターまたは他のデータ構造をチェックポイント・バケットを参照するように更新することを伴い得る。この場合も「第1の」は、ファイルシステムのいずれかのチェックポイントを意味し、このチェックポイントを後続のチェックポイントと区別するために使用されることに留意されたい。たとえば、図2および図5を参照すると、チェックポイント・マネージャー230は、データ構造510のロック505を取得し、チェックポイント・バケット515のうちの1つを指すようにポインターを更新してよい。
[00100]ブロック615で、更新が受信され、第1のチェックポイントに関連付けられる。たとえば、図2を参照すると、I/Oマネージャー235は、API 215を介してアプリケーション210(複数可)から更新要求を受信してよい。更新は、受信されるとき、チェックポイントに関連付けられてよい。
[00101]ブロック620で、第1のチェックポイントのチェックポイント・データをファイルシステムの記憶域に書き込むことの決定が行われる。たとえば、図2を参照すると、チェックポイント・マネージャー230は、チェックポイントタイマーが終了していると決定することができ、またそれに基づいて、チェックポイントがストア250に書き込まれると決定してよい。
[00102]ブロック625で、後続の更新のチェックポイントを示すためのデータ構造に対してロックが取得される。たとえば、図2および図5を参照すると、チェックポイント・マネージャー230は、データ構造510のロック505を取得してよい。
[00103]ブロック630で、データ構造は、別のチェックポイントを参照するように更新される。このデータ構造を修正することによって、第1の1組の更新の後に続いて行われるどんな更新もが後続のチェックポイントに関連付けられることを示す。たとえば、図2および図5を参照すると、チェックポイント・マネージャー230は、チェックポイント・バケット515のうちの別のものを参照するようにデータ構造510を更新してよい。
[00104]ブロック635で、ロックが解除される。たとえば、図2および図5を参照すると、チェックポイント・マネージャー230は、ロック505を解除してよい。
[00105]ブロック640で、更新のための書込み計画が生成される。それぞれの書込み計画は、第1の1組の更新のうちの少なくとも1つを表すデータについて記憶域上の少なくとも1つの計画された位置を示す。たとえば、図2を参照すると、書込み計画マネージャー237は、チェックポイントに関連する更新の書込み計画の作成に関与してよい。
[00106]ブロック645で、メタデータが、書込み計画のために更新される。このメタデータは、(書込み計画が記憶域に書き込まれていることも、まだ書き込まれていないこともあるが)書込み計画の記憶位置を示す。たとえば、図2を参照すると、書込み計画マネージャー237は、書込み計画によって修正された記憶位置オブジェクトを示すようにグローバルテーブルを更新してよい。
[00107]ブロック645の後、図7のブロック705で、アクションは継続する。図7に移ると、ブロック705で、メタデータのためにロックが得られる。たとえば、図2および図4を参照して、チェックポイント・マネージャー230は、グローバルテーブル405のロックを取得してよい。チェックポイント・マネージャー230は、(これらの更新のすべてがこれらの記憶位置に書き込まれていても、書き込まれていなくても)メタデータが第1の1組の更新のすべての更新の記憶位置を反映するまで待ってよい。
[00108]ブロック710で、メタデータの論理的なコピーが作成される。上記に言及されたように、これは、メタデータの新しいコピーを作成すること、メタデータへの後続の更新によってコピーオンライト、または他の何らかの論理的なコピー機構が引き起こされるようにメタデータをクリーンとマーキングすることを含んでよい。たとえば、図2および図4を参照すると、チェックポイント・マネージャー230は、グローバルテーブル405の論理的なコピーを作成してよい。
[00109]ブロック715で、ロックが解除される。たとえば、図2および図4を参照すると、チェックポイント・マネージャー230は、グローバルテーブル405のロックを解除してよい。
[00110]ブロック720で、第1のチェックポイント・データを書き込むための書込み計画が作成される。この書込み計画の作成は、チェックポイントの後に続く更新のために生成される(またディスクに書き込まれる)書込み計画と平行して行われてよく、また現在の書込み計画に対応するデータがディスクに書き込まれる。たとえば、図2を参照すると、チェックポイント・マネージャー230は、第1のチェックポイントのチェックポイント・データの書込み計画を作成するために書込み計画マネージャー237を使用してよい。このデータは、上記に言及されたグローバルテーブルの論理的なコピーを含んでよい。
[00111]一実施形態では、ブロック725で、チェックポイント・マネージャーは、第1の1組の更新のすべての更新が記憶域にうまく書き込まれるまで待ってよい。結局、すべての更新が記憶域にうまく書き込まれた後、次いで、更新マネージャーは、検証コードを含む最後のチェックポイントレコードを書き込んでよい。上記に言及されたように、これによって、リカバリーが単純に検証コードをチェックして、チェックポイントに対応するすべての更新が記憶域に書き込まれたと期待されるかどうか決定することを可能にする。
[00112]別の実施形態では、チェックポイント・マネージャーは、チェックポイントレコードにいくつかの検証コードを書き込んでよい。これらの検証コードは、第1の1組の更新の記憶位置に関連付けられてよい。この実施形態では、チェックポイント・マネージャーは、これらの更新が記憶域に書き込まれるのを待ってもよいし、待たずにチェックポイントレコードを書き込んでもよい。後者のオプションが選ばれる場合、リカバリーの間に適切なチェックポイントを見つけることは、ディスク上に有効なチェックポイントレコードがあることを検証することより深い関わり合いをもつ。
[00113]ブロック730で、チェックポイント・データが、記憶域に書き込まれてよい。これは、たとえば、チェックポイント・データに関連する書込み計画を記憶域に書き込むことを伴い得る。別の例として、これは、グローバルテーブルの論理的なコピーを参照する記憶域にチェックポイントレコードを書き込むことを伴い得る。たとえば、図2を参照すると、チェックポイント・マネージャー230は、チェックポイント・データに対応する書込み計画が記憶域に書き込まれることを要求してよい。
[00114]ブロック735で、少なくとも1つの検証コードが、記憶域に書き込まれる。記憶域に少なくとも1つの検証コードを書き込むことは、グローバルテーブルの論理的なコピーを参照する記憶域にチェックポイントレコードを書き込むことと組み合わされてよい。たとえば、図2を参照すると、チェックポイント・マネージャー230は、グローバルテーブルの論理的なコピーを参照し、またチェックポイントレコードの内容を検証するための検証コードを含む記憶域にチェックポイントレコードを書き込んでよい。
[00115]ブロック740で、他のアクションがあれば、実施されてよい。
[00116]図8に移ると、ブロック805で、アクションが開始している。ブロック810で、リカバリー要求が受信される。たとえば、図2を参照すると、リカバリーマネージャー225は、ストア250に格納されたデータのリカバリーを実施するよう求めるリカバリー要求を受信してよい。
[00117]ブロック815で、チェックポイント・データが突き止められる。たとえば、図2を参照して述べると、リカバリーマネージャー225は、ストア250(また他の何らかのストア)に格納された最新のチェックポイント・データを突き止めてよい。
[00118]ブロック820で、チェックポイント・データが、検証コードを使用して検証される。たとえば、図2を参照して述べると、リカバリーマネージャー225は、チェックポイント・データのチェックサムを計算し、このチェックサムを、チェックポイント・データと共に格納されたチェックサムと比較してよい。チェックサムが一致する場合は、チェックポイントは有効であると見なされてよい。追加の検証が望まれる場合は、リカバリーマネージャーは、チェックポイント・データによって参照されたグローバルテーブルによって示された1つまたは複数のオブジェクトの検証を試みてよい。
[00119]ブロック825で、他のアクションがあれば、実施されてよい。
[00120]上記の詳細な説明から分かるように、ファイルシステムのチェックポイントに関連して態様が述べられている。本明細書に述べられた主題の態様は様々な修正および代替の構成が可能であるが、その特定の示された実施形態が、図面に示されており、上記に詳細に述べられている。しかし、特許請求された主題の態様を開示された特定の形に限定する意図はないが、その逆に、本明細書に述べられた主題の様々な態様の精神および範囲に含まれるすべての修正物、代替構成および均等物を網羅するものであることを理解されたい。

Claims (15)

  1. 少なくとも一部がコンピューターによって実施される方法であって、
    第1の組の更新が第1のチェックポイントに関連付けられることを示すステップと、
    前記第1のチェックポイントに関するチェックポイント・データを、ファイルシステムのデータを更新するためにコピーオンライトを使用する前記ファイルシステムの記憶域に書き込むことを決定するステップと、
    前記第1の組の更新の後に行われる後続の更新が後続のチェックポイントに関連付けられることを示すステップと、
    前記第1の組の更新のための書込み計画を生成するステップであって、それぞれの書込み計画が、前記第1の組の更新の少なくとも1つを表すデータについて記憶域上の少なくとも1つの計画された位置を示す、ステップと、
    前記ファイルシステムの割当てデータ、ならびに前記書込み計画によって修正されたファイルシステムオブジェクトの記憶位置を示すようにメタデータを更新するステップと、
    前記メタデータの論理的なコピーを作成するステップと
    前記書込み計画の作成と並行して前記後続の更新のための書込み計画の生成を可能にしつつ、前記第1のチェックポイント・データを書き込むための書込み計画を作成するステップと
    を含む方法。
  2. なくとも1つの検証コードを記憶域に書き込むステップであって、前記チェックポイント・データの前記少なくとも1つの検証コード部分、前記少なくとも1つの検証コードが、前記第1の組の更新が記憶域に正確に書き込まれたかどうか決定するために使用可能である、ステップと
    をさらに含む請求項1に記載の方法。
  3. 前記少なくとも1つの検証コードを記憶域に書き込むステップより前に、前記第1の組の更新を表すデータが記憶域に書き込まれるのを待つステップ
    をさらに含む請求項2に記載の方法。
  4. 少なくとも1つの検証コードを記憶域に書き込むステップが、前記メタデータの前記論理的なコピーを表す少なくとも1つのツリーデータ構造のルートノードを参照する他のデータと共にブロックで記憶域に単一の検証コードを書き込むステップを含み、
    前記ブロックを検証するために前記単一の検証コードを計算するステップをさらに含む請求項2に記載の方法。
  5. 前記少なくとも1つの検証コードを読み出すステップと、記憶域内のデータから少なくとも1つの他の検証コードを計算するステップと、前記少なくとも1つの検証コードを前記少なくとも1つの他の検証コードと比較するステップと、それに基づいて、前記第1の組の更新を表すすべてのデータが記憶域にうまく書き込まれたかどうか決定するステップをさらに含む請求項2に記載の方法。
  6. 第1の組の更新が第1のチェックポイントに関連付けられることを示すステップが、データ構造が別のチェックポイントを示すように更新される前に行われる更新に前記第1のチェックポイントが使用されることを示す前記データ構造を更新するステップを含む請求項1に記載の方法。
  7. 前記メタデータの論理的なコピーを作成するステップが、前記第1の組の更新のうちの前記少なくとも1つの更新を表す前記データを前記記憶域に書き込むのと並行して前記論理的なコピーを作成するステップを含む請求項1に記載の方法。
  8. コンピューティング環境内におけるシステムであって、
    ファイルシステムのファイルシステムオブジェクトを更新するよう求める要求を受信するよう動作可能なインターフェースと、
    前記要求に応じるためストアに送る1つまたは複数のI/O要求を決定するように動作可能なI/Oマネージャーと、
    アクションを実行するように動作可能なチェックポイント・マネージャーであって、前記アクションが、
    ファイルシステムオブジェクトを更新するよう求める要求に関連する第1のチェックポイントを決定することであって、前記チェックポイント・マネージャーが要求をそれぞれ異なるチェックポイントに割り当てることができる、決定することと、
    前記チェックポイントに関連するチェックポイント・データを前記ファイルシステムの記憶域に書き込むことを決定することと、
    ファイルシステムオブジェクトを更新するよう求める後続の要求の第2のチェックポイントを決定することと、
    前記後続の要求のためのデータの書込みの準備を可能にしながら、前記ファイルシステムの整合性状態を待つことと、
    前記ファイルシステムのメタデータの論理的なコピーを作成することと、
    前記論理的コピーを前記記憶域に書き込むことと、
    少なくとも1つの検証コードを前記記憶域に書き込むことであって、前記少なくとも1つの検証コードが、前記チェックポイントより前の前記更新が記憶域に書き込まれたかどうか決定するのに使用可能である、書き込むことと
    を含む、チェックポイント・マネージャーと
    を備えるシステム。
  9. 前記チェックポイント・マネージャーが、ファイルシステムオブジェクトを更新するよう求める要求に関連するチェックポイントを決定するように動作可能であり、前記チェックポイント・マネージャーが、前記チェックポイントに関連するチェックポイント・データを前記ファイルシステムの記憶域に書き込むことを決定する前に行われる更新に前記第1のチェックポイントが使用されること、およびその後に行われる更新に前記第2のチェックポイントが使用されることを示すデータ構造を更新するように動作可能である請求項8に記載のシステム。
  10. 前記チェックポイント・マネージャーが、前記チェックポイントに関連するチェックポイント・データを前記ファイルシステムの記憶域に書き込むことを決定するように動作可能であることが、前記チェックポイント・マネージャーが、チェックポイント時間が終了したと決定するように動作可能であることを含み、前記チェックポイント時間がリカバリーウィンドウに基づく請求項8に記載のシステム。
  11. 前記ファイルシステムの整合性状態を維持するために前記ファイルシステムオブジェクトと共に更新されるすべてのファイルシステムオブジェクトの記憶域上の位置を示す書込み計画を生成するように動作可能な書込み計画マネージャーをさらに備える請求項8に記載のシステム。
  12. 前記チェックポイント・マネージャーが前記ファイルシステムの整合性状態を待つように動作可能であることが、前記チェックポイント・マネージャーが、前記第1のチェックポイントファイルシステムオブジェクトに関連するすべての更新が前記ファイルシステムの記憶域内に表されるまで待つように動作可能であることを含む請求項8に記載のシステム。
  13. 前記チェックポイント・マネージャーが後続の要求のためのデータ書込みの準備を可能にすることが、前記チェックポイント・マネージャーが、前記後続の要求のために書込み計画が生成され、記憶域に書き込まれることを可能にするが、前記メタデータの前記論理的なコピーの作成後まで、前記メタデータの更新を可能にしないように動作可能であることを含む請求項8に記載のシステム。
  14. 実行されたときにアクションを実施するコンピューター実行可能命令を有するコンピューター記憶媒体であって、前記アクションが、
    ファイルシステムのリカバリー要求を受信することと、
    前記ファイルシステムの記憶域内でチェックポイントのチェックポイント・データを突き止めることであって、前記チェックポイント・データが、アクションによって以前に生成されている、突き止めることとを含み、該アクションが、
    前記チェックポイントに関連する更新の後に行われる後続の更新が後続のチェックポイントに割り当てられることを示すこと、
    前記チェックポイントに関連する前記更新の書込み計画を生成することであって、それぞれの書込み計画が、前記更新のうちの少なくとも1つを表すための記憶域内の少なくとも1つの計画された位置を示す、生成すること、
    前記書込み計画によって修正されたオブジェクトの記憶位置を示すようにメタデータを更新すること、
    前記メタデータの論理的なコピーを作成すること
    前記書込み計画の作成と並行して前記後続の更新のための書込み計画の生成を可能にしつつ、前記チェックポイント・データを書き込むための書込み計画を作成すること、及び
    前記チェックポイントに関して記憶域に少なくとも1つの検証コードを書き込むこと
    を含み、
    前記検証コードを使用して前記チェックポイント・データを検証することを含むコンピューター記憶媒体。
  15. 前記検証コードを使用して前記チェックポイント・データを検証することが、前記チェックポイント・データのチェックサムを計算することと、前記チェックポイント・データの前記チェックサムを前記検証コードと比較することとを含む請求項14に記載のコンピューター記憶媒体。
JP2013515367A 2010-06-15 2011-06-01 ファイルシステムのチェックポイント Active JP5735104B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/815,418 2010-06-15
US12/815,418 US8224780B2 (en) 2010-06-15 2010-06-15 Checkpoints for a file system
PCT/US2011/038811 WO2011159476A2 (en) 2010-06-15 2011-06-01 Checkpoints for a file system

Publications (3)

Publication Number Publication Date
JP2013528883A JP2013528883A (ja) 2013-07-11
JP2013528883A5 JP2013528883A5 (ja) 2014-06-19
JP5735104B2 true JP5735104B2 (ja) 2015-06-17

Family

ID=45097053

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013515367A Active JP5735104B2 (ja) 2010-06-15 2011-06-01 ファイルシステムのチェックポイント

Country Status (11)

Country Link
US (3) US8224780B2 (ja)
EP (1) EP2583202B1 (ja)
JP (1) JP5735104B2 (ja)
KR (2) KR101805948B1 (ja)
CN (1) CN102934114B (ja)
AU (1) AU2011265653B2 (ja)
BR (1) BR112012031912B1 (ja)
CA (1) CA2803763C (ja)
RU (1) RU2554847C2 (ja)
TW (1) TWI492077B (ja)
WO (1) WO2011159476A2 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8433865B2 (en) 2009-12-11 2013-04-30 Microsoft Corporation Consistency without ordering dependency
US8793440B2 (en) 2010-06-17 2014-07-29 Microsoft Corporation Error detection for files
US9155320B2 (en) * 2011-07-06 2015-10-13 International Business Machines Corporation Prefix-based leaf node storage for database system
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US9766986B2 (en) 2013-08-08 2017-09-19 Architecture Technology Corporation Fight-through nodes with disposable virtual machines and rollback of persistent state
US9769250B2 (en) 2013-08-08 2017-09-19 Architecture Technology Corporation Fight-through nodes with disposable virtual machines and rollback of persistent state
US9838415B2 (en) 2011-09-14 2017-12-05 Architecture Technology Corporation Fight-through nodes for survivable computer network
US8543544B2 (en) * 2012-01-06 2013-09-24 Apple Inc. Checkpoint based progressive backup
FR2989801B1 (fr) * 2012-04-18 2014-11-21 Schneider Electric Ind Sas Procede de gestion securisee d'un espace memoire pour microcontroleur
KR102050723B1 (ko) 2012-09-28 2019-12-02 삼성전자 주식회사 컴퓨팅 시스템 및 그 데이터 관리 방법
US9003228B2 (en) * 2012-12-07 2015-04-07 International Business Machines Corporation Consistency of data in persistent memory
US9304998B2 (en) * 2012-12-19 2016-04-05 Microsoft Technology Licensing, Llc Main-memory database checkpointing
WO2015116190A1 (en) 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Persistent memory controller based atomicity assurance
CN103984609B (zh) * 2014-05-28 2017-06-16 华为技术有限公司 一种基于写时复制的文件系统中回收检查点的方法和装置
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US9892153B2 (en) * 2014-12-19 2018-02-13 Oracle International Corporation Detecting lost writes
CN106294357B (zh) * 2015-05-14 2019-07-09 阿里巴巴集团控股有限公司 数据处理方法和流计算系统
US10031817B2 (en) 2015-11-05 2018-07-24 International Business Machines Corporation Checkpoint mechanism in a compute embedded object storage infrastructure
US10284592B1 (en) 2015-12-17 2019-05-07 Architecture Technology Corporation Application randomization mechanism
US10200401B1 (en) 2015-12-17 2019-02-05 Architecture Technology Corporation Evaluating results of multiple virtual machines that use application randomization mechanism
US10007498B2 (en) 2015-12-17 2018-06-26 Architecture Technology Corporation Application randomization mechanism
US10412114B1 (en) 2015-12-17 2019-09-10 Architecture Technology Corporation Application randomization mechanism
US10200406B1 (en) 2015-12-17 2019-02-05 Architecture Technology Corporation Configuration of application randomization mechanism
US10412116B1 (en) 2015-12-17 2019-09-10 Architecture Technology Corporation Mechanism for concealing application and operation system identity
CN105930223A (zh) * 2016-04-24 2016-09-07 湖南大学 一种减少检查点文件大小的方法
US20220100374A1 (en) * 2016-08-19 2022-03-31 Ic Manage Inc Hierarchical file block variant tracking for performance in parallelism at multi-disk arrays
KR101969799B1 (ko) * 2016-09-07 2019-04-17 울산과학기술원 전자 장치 및 제어 방법
CN108509460B (zh) * 2017-02-28 2021-07-20 微软技术许可有限责任公司 分布式系统中的数据一致性检查
US10554685B1 (en) 2017-05-25 2020-02-04 Architecture Technology Corporation Self-healing architecture for resilient computing services
US20190102262A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Automated continuous checkpointing
KR102022481B1 (ko) * 2017-12-06 2019-09-18 연세대학교 산학협력단 Gpu 사용량을 이용한 고성능 컴퓨팅 시스템의 체크포인트 생성 방법
KR102468737B1 (ko) * 2017-12-19 2022-11-21 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10754785B2 (en) 2018-06-28 2020-08-25 Intel Corporation Checkpointing for DRAM-less SSD
US11416453B2 (en) * 2019-04-23 2022-08-16 EMC IP Holding Company LLC Facilitating checkpoint locks for distributed systems
US11822435B2 (en) 2020-07-06 2023-11-21 Bank Of America Corporation Consolidated data restoration framework
US11620084B2 (en) 2020-12-30 2023-04-04 Samsung Electronics Co., Ltd. Storage device including memory controller and operating method of memory controller
CN113538754B (zh) * 2021-06-08 2023-04-07 福建新大陆通信科技股份有限公司 一种ctid智能门锁授权数据管理方法及系统
CN116048384A (zh) * 2022-11-02 2023-05-02 中国科学院空间应用工程与技术中心 一种文件系统元数据的写入方法和系统

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4959771A (en) * 1987-04-10 1990-09-25 Prime Computer, Inc. Write buffer for a digital processing system
EP1003103B1 (en) * 1993-06-03 2008-10-01 Network Appliance, Inc. Write anywhere file-system layout method and apparatus
US5963962A (en) * 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
US6035399A (en) * 1995-04-07 2000-03-07 Hewlett-Packard Company Checkpoint object
US5864657A (en) * 1995-11-29 1999-01-26 Texas Micro, Inc. Main memory system and checkpointing protocol for fault-tolerant computer system
US5907849A (en) * 1997-05-29 1999-05-25 International Business Machines Corporation Method and system for recovery in a partitioned shared nothing database system using virtual share disks
US6185663B1 (en) * 1998-06-15 2001-02-06 Compaq Computer Corporation Computer method and apparatus for file system block allocation with multiple redo
US6374264B1 (en) * 1998-09-04 2002-04-16 Lucent Technologies Inc. Method and apparatus for detecting and recovering from data corruption of a database via read prechecking and deferred maintenance of codewords
JP2001101044A (ja) * 1999-09-29 2001-04-13 Toshiba Corp トランザクショナルファイル管理方法、トランザクショナルファイルシステム及び複合トランザクショナルファイルシステム
US6571259B1 (en) * 2000-09-26 2003-05-27 Emc Corporation Preallocation of file system cache blocks in a data storage system
US6629198B2 (en) * 2000-12-08 2003-09-30 Sun Microsystems, Inc. Data storage system and method employing a write-ahead hash log
US7730213B2 (en) * 2000-12-18 2010-06-01 Oracle America, Inc. Object-based storage device with improved reliability and fast crash recovery
US6678809B1 (en) * 2001-04-13 2004-01-13 Lsi Logic Corporation Write-ahead log in directory management for concurrent I/O access for block storage
JP2003223350A (ja) * 2002-01-29 2003-08-08 Ricoh Co Ltd データベースシステム
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
US20040216130A1 (en) * 2002-08-30 2004-10-28 Keller S. Brandon Method for saving and restoring data in software objects
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US7216254B1 (en) 2003-03-24 2007-05-08 Veritas Operating Corporation Method and system of providing a write-accessible storage checkpoint
US7412460B2 (en) * 2003-06-19 2008-08-12 International Business Machines Corporation DBMS backup without suspending updates and corresponding recovery using separately stored log and data files
JP3798767B2 (ja) * 2003-06-26 2006-07-19 株式会社東芝 ディスク制御システム及びディスク制御プログラム
US7401093B1 (en) 2003-11-10 2008-07-15 Network Appliance, Inc. System and method for managing file data during consistency points
US7721062B1 (en) 2003-11-10 2010-05-18 Netapp, Inc. Method for detecting leaked buffer writes across file system consistency points
US7054960B1 (en) * 2003-11-18 2006-05-30 Veritas Operating Corporation System and method for identifying block-level write operations to be transferred to a secondary site during replication
US7168001B2 (en) * 2004-02-06 2007-01-23 Hewlett-Packard Development Company, L.P. Transaction processing apparatus and method
US7664965B2 (en) * 2004-04-29 2010-02-16 International Business Machines Corporation Method and system for bootstrapping a trusted server having redundant trusted platform modules
JP4104586B2 (ja) * 2004-09-30 2008-06-18 株式会社東芝 ファイル管理機能を備えたファイルシステム及びファイル管理方法
US7505410B2 (en) * 2005-06-30 2009-03-17 Intel Corporation Method and apparatus to support efficient check-point and role-back operations for flow-controlled queues in network devices
US7693864B1 (en) * 2006-01-03 2010-04-06 Netapp, Inc. System and method for quickly determining changed metadata using persistent consistency point image differencing
US20070234342A1 (en) * 2006-01-25 2007-10-04 Flynn John T Jr System and method for relocating running applications to topologically remotely located computing systems
WO2007091237A2 (en) * 2006-02-06 2007-08-16 Filesx, Inc. Long term backup on disk
US7769723B2 (en) * 2006-04-28 2010-08-03 Netapp, Inc. System and method for providing continuous data protection
US7870356B1 (en) * 2007-02-22 2011-01-11 Emc Corporation Creation of snapshot copies using a sparse file for keeping a record of changed blocks
US8495573B2 (en) 2007-10-04 2013-07-23 International Business Machines Corporation Checkpoint and restartable applications and system services
TWI476610B (zh) * 2008-04-29 2015-03-11 Maxiscale Inc 同級間冗餘檔案伺服器系統及方法
WO2010049391A2 (en) * 2008-10-30 2010-05-06 International Business Machines Corporation Performing a data write on a storage device

Also Published As

Publication number Publication date
CN102934114A (zh) 2013-02-13
CA2803763A1 (en) 2011-12-22
BR112012031912A2 (pt) 2016-11-08
TWI492077B (zh) 2015-07-11
WO2011159476A2 (en) 2011-12-22
US20150178165A1 (en) 2015-06-25
WO2011159476A3 (en) 2012-02-16
KR20130115995A (ko) 2013-10-22
EP2583202A4 (en) 2017-03-15
US8224780B2 (en) 2012-07-17
KR20170132338A (ko) 2017-12-01
KR101840996B1 (ko) 2018-03-21
US20120259816A1 (en) 2012-10-11
EP2583202A2 (en) 2013-04-24
JP2013528883A (ja) 2013-07-11
CN102934114B (zh) 2015-11-25
RU2012154324A (ru) 2014-06-20
RU2554847C2 (ru) 2015-06-27
AU2011265653A1 (en) 2012-12-13
EP2583202B1 (en) 2022-01-12
KR101805948B1 (ko) 2017-12-07
CA2803763C (en) 2019-02-26
US20110307449A1 (en) 2011-12-15
BR112012031912B1 (pt) 2020-11-17
US8924356B2 (en) 2014-12-30
AU2011265653B2 (en) 2014-05-15
TW201202981A (en) 2012-01-16

Similar Documents

Publication Publication Date Title
JP5735104B2 (ja) ファイルシステムのチェックポイント
US8984233B2 (en) Error detection for files
KR101690824B1 (ko) 순서 의존성 없는 일관성

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140421

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140421

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141211

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150223

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150415

R150 Certificate of patent or registration of utility model

Ref document number: 5735104

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250