JP5628341B2 - 順序の依存関係を持たない整合性 - Google Patents

順序の依存関係を持たない整合性 Download PDF

Info

Publication number
JP5628341B2
JP5628341B2 JP2012543128A JP2012543128A JP5628341B2 JP 5628341 B2 JP5628341 B2 JP 5628341B2 JP 2012543128 A JP2012543128 A JP 2012543128A JP 2012543128 A JP2012543128 A JP 2012543128A JP 5628341 B2 JP5628341 B2 JP 5628341B2
Authority
JP
Japan
Prior art keywords
storage
storage location
logical copy
storage device
logical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012543128A
Other languages
English (en)
Other versions
JP2013513862A5 (ja
JP2013513862A (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 JP2013513862A publication Critical patent/JP2013513862A/ja
Publication of JP2013513862A5 publication Critical patent/JP2013513862A5/ja
Application granted granted Critical
Publication of JP5628341B2 publication Critical patent/JP5628341B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

[0001] ディスクの性能を向上させるために、ディスクの製造者はキャッシュを有したディスクを編み出した。これらのキャッシュはかつてディスクからデータを読み出す際に用いられたが、最近ではディスクにデータを書き込む際にも用いられている。特に、データがディスクに書き込まれることをオペレーティングシステムが要求する時、ディスクコントローラーが、データが実際にディスクキャッシュから不揮発性ディスクメモリへ転送される前に、データが書き込まれたことを報告することがある。そしてまた、不揮発性ディスクメモリにデータが書き込まれる順序が、ディスクコントローラーがデータを受け取る順序とは異なることがある。これらの振る舞いは、整合性を維持しようとするシステムにとっては問題となる。
[0002] 本明細書において請求される対象は、上述されたような環境においてのみ欠点のいくらかを解決し、あるいは動作する実施態様に限定されるものではない。それよりはむしろ、この背景は、本明細書において説明されるいくつかの実施態様が実施され得る1つの例示的な技術分野を明らかにするために提供されたにすぎないものである。
[0003] 簡潔に述べれば、本明細書において説明される主題の側面は、記憶装置システムにおける整合性を維持することに関する。いくつかの側面では、トランザクションとの関係において1つ又は複数のオブジェクトが更新されることができる。オブジェクトの更新と共に、そのオブジェクトの論理的コピーが得られ、修正されることができる。更新された論理的コピーの書き込み要求が、記憶装置コントローラーへ送信される。この論理的コピーは、オリジナルのコピーを上書きしない。要求の送信と共に、ディスク上に記憶を行うため、データ構造が記憶装置コントローラーに提供される。このデータ構造は、ディスクに書き込まれる予定の1つ又は複数のオブジェクトを示し、ディスクに書き込まれる予定であるコンテンツを示す検証データを含むことができる。リカバリの間、このデータ構造を用いて、オブジェクトの全てが正しくディスクに書き込まれたかどうかを判定することができる。
[0004] この概要は、以下の詳細な説明において更に説明される主題のいくつかの側面を簡潔に特定するために提供されたものである。この概要は、請求項に係る対象の主要な又は本質的な特徴を特定することを意図したものではなく、請求項に係る対象の範囲を限定するために用いられることを意図したものでもない。
[0005] 「本明細書において説明される主題」という文言は、文脈上明らかにそれ以外のことを指し示すのでない限り、詳細な説明において説明される主題を意味する。「側面」という用語は、「少なくとも1つの側面」と解されなければならない。詳細な説明において説明される主題の側面を特定することは、請求項に係る対象の主要な又は本質的な特徴を特定することを意図するものではない。
[0006] 上述の側面及び本明細書において説明される主題の他の側面は、例として示されるものであり、同様の参照番号が類似の構成要素を示している以下の添付された図面に限定されるものではない。
[0007] 図1は、本明細書において説明される主題の側面が組み込まれることができる例示の汎用計算機環境を表すブロック図である。 [0008] 図2は、本明細書において説明される主題の側面が動作し得るシステムのコンポーネントの例示的な構成を表すブロック図である。 [0009] 図3は、本明細書において説明される主題の側面を示すブロック図である。 [0010] 図4は、本明細書において説明される主題の側面に従って単独のオブジェクトがトランザクションとの関係において修正される場合に行われることができる例示のアクションを概略的に表すフロー図である。 [0011] 図5は、本明細書において説明される主題の側面に従って多数のオブジェクトがトランザクションとの関係において修正される場合に行われることができる例示のアクションを概略的に表すフロー図である。
<定義>
[0012] 本明細書において用いられるように、「含む」という用語及びその変体は、「含むが、それには限定されない」ということを意味する制限のない用語と解されなければならない。「又は」という用語は、文脈上明らかにそれ以外のことを述べるのでない限り、「及び/又は」と解されなければならない。「基づいて」という用語は、「少なくとも一部分が基づいて」と解されなければならない。「1つの実施態様」及び「実施態様」という用語は、「少なくとも1つの実施態様」と解されなければならない。「別の実施態様」という用語は、「少なくとも1つの他の実施態様」と解されなければならない。他の定義は、明示的なものも暗示的なものも、以下において含まれることがある。
<例示の動作環境>
[0013] 図1は、本明細書において説明される主題の側面が実現され得る相応しい計算機システム環境100の例を示す。計算機システム環境100は、相応しい計算機環境の1つの例にすぎず、本明細書において説明される主題の側面についての使用又は機能の範囲に関して、如何なる限定をも示唆することを意図したものではない。計算機環境100はまた、例示の動作環境100の中に示されたコンポーネントのいずれか1つ、又はその組み合わせに関係する如何なる依存性又は要求を有するものと解釈されてもならない。
[0014] 本明細書において説明される主題の側面は、多数の他の汎用又は専用の計算機システム環境又は構成と共に使用可能である。本明細書において説明される主題の側面と共に用いられるのに適したものであり得る、周知の計算機システム、環境、又は構成の多くの例は、パーソナルコンピューター、サーバーコンピューター、ハンドヘルド又はラップトップデバイス、マルチプロセッサーシステム、マイクロコントローラーベースのシステム、セットトップボックス、プログラマブル家電製品、ネットワークPC、ミニコンピューター、メインフレームコンピューター、携帯情報端末(personal digital assistants:PDAs)、ゲームデバイス、プリンター、セットトップやメディアセンターや他の電気製品を含む電気製品、車載若しくは付属の計算機、他のモバイルデバイス、上記システム若しくはデバイスのいくつかを含む分散コンピューティング環境等を含む。
[0015] 本明細書において説明される主題の側面は、コンピューターによって実行されるプログラムモジュール等のコンピューター実行可能命令についての一般的な文脈の中で説明されることができる。通常、プログラムモジュールは、特定のタスクを実施する、又は特定の抽象的データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。本明細書において説明される主題の側面はまた、通信ネットワークを通じてリンクされているリモート処理装置がタスクを実施する分散コンピューティング環境において実行されることができる。分散コンピューティング環境において、プログラムモジュールは、ローカル及びリモートコンピューター双方の、メモリ記憶装置を含む記憶媒体に配置されることができる。
[0016] 図1を参照すると、本明細書において説明される主題の側面を実現するための例示のシステムは、コンピューター110の形で表された汎用の計算機を含む。コンピューターは、命令を実行する能力のある任意の電子デバイスを含むことができる。コンピューター110のコンポーネントは、処理装置120、システムメモリ130、及びシステムメモリを含む様々なシステムコンポーネントを処理装置120に結合するシステムバス121を含むことができる。システムバス121は、様々なバスアーキテクチャーの何れかを用いた、メモリバス又はメモリコントローラー、周辺機器バス、及びローカルバスを含むバス構造のいくつかのタイプのうち、任意のものであり得る。例として、また限定ではなく、そのようなアーキテクチャーは、インダストリスタンダードアーキテクチャー(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャー(Micro Channel Architecture:MCA)バス、エンハンスドISA(Enhanced ISA:EISA)バス、ビデオエレクトロニクス標準化協会(Video Electronics Standards Association:VESA)ローカルバス、メザニンバスとしても知られる周辺機器インターコネクト(Peripheral Component Interconnect:PCI)バス、周辺機器インターコネクト拡張(Peripheral Component Interconnect Extended:PCI−X)バス、アドバンスドグラフィックスポート(Advanced Graphics Port:AGP)、及びPCIエクスプレス(PCI express:PCIe)を含む。
[0017] コンピューター110は、通常、様々なコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューター110がアクセスすることができる任意の利用可能な媒体であり得ると共に、揮発性及び不揮発性媒体の双方、並びにリムーバブル及び非リムーバブル媒体の双方を含む。例として、また限定ではなく、コンピューター読み取り可能媒体は、コンピューター記憶媒体及び通信媒体を含むことができる。
[0018] コンピューター記憶媒体は、コンピューター読み取り可能命令、データ構造、プログラムモジュール、又は他のデータ等の情報を記憶するための任意の方法又は技術によって実装された、揮発性及び不揮発性媒体の双方、並びにリムーバブル及び非リムーバブル媒体の双方を含む。コンピューター記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(digital versatile discs:DVDs)若しくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶装置、又は、所望の情報を格納するのに用いることができコンピューター110がアクセスすることができる任意の他の媒体を含む。
[0019] 通信媒体は、通常、コンピューター読み取り可能命令、データ構造、プログラムモジュール、又は他のデータを、搬送波又は他の伝送メカニズム等の変調データ信号の形で具現化し、任意の情報配送媒体を含む。「変調データ信号」という用語は、その信号の中に情報を符号化するような方法でその特性の1つ又は複数が調整され又は変化を付けられた信号を意味する。例として、また限定ではなく、通信媒体は、有線ネットワーク又は直接有線接続等の有線媒体、及び、音響、RF、赤外、又は他の無線媒体等の無線媒体を含む。上記のうち何れかの組み合わせもまた、コンピューター読み取り可能媒体の範囲内に含まれるべきである。
[0020] システムメモリ130は、リードオンリーメモリ(read only memory:ROM)131及びランダムアクセスメモリ(random access memory:RAM)132等の揮発性及び/又は不揮発性メモリの形式のコンピューター記憶媒体を含む。基本入出力システム133(basic input/output system:BIOS)は、スタートアップの間等にコンピューター110内部の構成要素間で情報を伝送するのに役立つ基本ルーチンを収容し、通常、ROM131に格納される。RAM132は、通常、処理装置120によって直接アクセス可能であり及び/又は現在動作が行われている、データ及び/又はプログラムモジュールを収容する。例として、また限定ではなく、図1は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、及びプログラムデータ137を示す。
[0021] コンピューター110はまた、他のリムーバブル/非リムーバブルで揮発性/不揮発性のコンピューター記憶媒体を含むことができる。単なる例として、図1は、非リムーバブルで不揮発性の磁気媒体に対する読み出し又は書き込みを行うハードディスクドライブ141、リムーバブルで不揮発性の磁気ディスク152に対する読み出し又は書き込みを行う磁気ディスクドライブ151、及びリムーバブルで不揮発性のCD ROM又は他の光媒体等の光ディスク156に対する読み出し又は書き込みを行う光ディスクドライブ155を示す。例示の動作環境において用いられることができる他のリムーバブル/非リムーバブルで揮発性/不揮発性のコンピューター記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、他の光ディスク、デジタルビデオテープ、ソリッドステートドライブ、ソリッドステートRAM、ソリッドステートROM、2つ又はそれ以上の記憶媒体を含むハイブリッドデバイス、個々のデバイスが類似の及び/又は異なる特性を含む単独のデバイスとして論理的に取り扱われる複数の記憶装置のセット、等を含む。ハードディスクドライブ141は、通常、インターフェース140等の非リムーバブルメモリインターフェースを通じてシステムバス121に接続され、磁気ディスクドライブ151及び光ディスクドライブ155は、通常、インターフェース150等のリムーバブルメモリインターフェースによってシステムバス121に接続される。
[0022] ローカルな記憶装置にアドレス指定するインターフェースに加えて、インターフェース140は、ストレージエリアネットワーク(storage area network:SAN)ベースのインターフェース、ネットワークアドレス指定ストレージ(network addressed storage:NAS)ベースのインターフェース、SANやNASを含むハイブリッドインターフェース等を含むことができる。SAN及び/又はNASは、ファイバチャネル、SCSI、iSCSI、PCI−X、イーサーネット(登録商標)、USB、又は記憶装置と通信するための他のいくつかの相互接続技術を用いることができる。
[0023] 上で議論され、図1に示されたドライブ及びそれに関連したコンピューター記憶媒体は、コンピューター読み取り可能命令、データ構造、プログラムモジュール、及びコンピューター110のための他のデータの記憶を提供する。図1において、例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、及びプログラムデータ147を記憶するように示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、及びプログラムデータ137と同じものであるか、又は異なるものであるか、その何れでもあり得ることに注意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、及びプログラムデータ147は、最低でもそれらが異なるコピーであることを示すために、本明細書においては異なる番号を与えられている。
[0024] ユーザーは、キーボード162、及び、通例はマウス、トラックボール、又はタッチパッドと呼ばれるポインティングデバイス161等の入力デバイスを通じて、コンピューター110にコマンド及び情報を入力することができる。他の入力デバイス(不図示)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナー、タッチスクリーン、手書き用タブレット等を含むことができる。これらの及び他の入力デバイスは、多くの場合、システムバスに結合されたユーザー入力インターフェース160を通じて処理装置120に接続されるが、パラレルポート、ゲームポート、又はユニバーサルシリアルバス(universal serial bus:USB)等の他のインターフェース及びバス構造によって接続されることもできる。
[0025] モニター191又は他のタイプの表示デバイスもまた、ビデオインターフェース190等のインターフェースを介してシステムバス121に接続される。モニターに加えて、コンピューターはまた、スピーカー197及びプリンター196等の他の周辺機器出力デバイスを含むことができ、それらは出力周辺機器インターフェース195を通じて接続されることができる。
[0026] コンピューター110は、リモートコンピューター180等の1つ又は複数のリモートコンピューターへの論理的接続を用いたネットワーク環境において動作することができる。リモートコンピューター180は、パーソナルコンピューター、サーバー、ルーター、ネットワークPC、ピアデバイス、又は他の一般的なネットワークノードであることが可能であり、図1においてはメモリ記憶装置181のみが示されているが、一般には、コンピューター110に関して上述された多くの又は全ての構成要素を含む。図1に描かれた論理的接続は、ローカルエリアネットワーク(local area network:LAN)171及びワイドエリアネットワーク(wide area network:WAN)を含むが、他のネットワークを含むこともできる。そのようなネットワーク環境は、オフィス、全企業のコンピューターネットワーク、イントラネット、及びインターネットにおいては一般的なものである。
[0027] LANネットワーク環境において使用される場合、コンピューター110は、ネットワークインターフェース又はアダプター170を通じてLAN171に接続される。WANネットワーク環境において使用される場合、コンピューター110は、モデム172、又は、インターネット等のWANを介して通信を確立するための他の手段を含むことができる。モデム172は、内蔵型であっても外付け型であってもよく、ユーザー入力インターフェース160又は他の適切なメカニズムを介してシステムバス121に接続されることができる。ネットワーク環境において、コンピューター110に関して説明されたプログラムモジュール又はその一部分は、リモートのメモリ記憶装置に格納されることができる。例として、また限定ではなく、図1は、メモリデバイス181上に存在するものとしてリモートアプリケーションプログラム185を示す。説明されたネットワーク接続は例示であり、コンピューター間に通信リンクを確立する他の手段が使用されることが可能であることは、十分理解されるであろう。
<整合性>
[0028] 既に言及されたように、ディスクに対してキャッシュをすること及び乱れた順序で書き込みを行うことは、整合性を維持しようとするシステムにとっては問題となる。本明細書において時々、トランザクションという用語が用いられる。トランザクションは、例えば、原子性を有すること、整合性を有すること、独立性を有すること、及び永続性を有することを含む、様々な特性を含むことができる一群の動作である。本明細書において用いられるように、トランザクションは、少なくとも原子性を有する特性を含み、他の上記特性のうち1つ又は複数を含むことができる。
[0029] 原子性を有する特性は、その一群の全ての動作が成功するか、又は、その一群の動作による実質的な影響(例えばファイルの変更)が取り消され、放棄され、若しくは不適用とされるか、その何れかである一群の動作を表すために用いられる。単純化のため、放棄されるという用語は、トランザクションとの関係において行われた如何なる変更もその変更に関連するオブジェクトに反映されていないことの確証をとるのに適した、何らかのアクションを行うことを表すものとして、本明細書において時々用いられる。放棄することは、更新動作を取り消し、放棄し、不適用とすること等を含むことができる。
[0030] 例えば、銀行の送金は、1つの口座からの借方ともう一方の口座への貸方という2つの動作の、原子性を有した一組として実現されることができる。もしこの2つの動作が両方とも成功しなければ、その時は、送金は不公平なことに、銀行に有利であるか、口座保有者に有利であるかの何れかとなる。このように、トランザクションにおいて両方の動作が成功するか、あるいは、成功した何れかの動作による実質的な影響(例えば、ディスク又はメモリに格納されたデータ)が放棄される。
[0031] 本明細書において「トランザクション」が使用される場合、トランザクションに関与するコンポーネントが、トランザクションが発生していることを知っていることを意味するかもしれないが、必ずしもそうであるわけではない。例えば、あるコンポーネントが、2つ又はそれ以上のオブジェクトがトランザクションに関与していることを明示的に通知されることができる。そのコンポーネントは、次いで、上述されたように、そのオブジェクトへの動作に対して原子性を有する特性を適用することができる。別の例として、あるコンポーネントが、トランザクションが発生していることを必ずしも通知されないかもしれない。その代わり、そのコンポーネントは、そのコンポーネントに与えられた2つ又はそれ以上の動作が首尾よく完了されるべきであること、あるいは、その動作による影響が放棄されるべきであることの何れかを決定し、又は指示されることができる。
[0032] 上記の第1の例において、コンポーネントは、オブジェクトがトランザクションに関与しているという明示的な情報を与えられた。第2の例において、コンポーネントは、トランザクションが2つ又はそれ以上の動作に影響を及ぼすことを通知されなかったかもしれない。そうではなく、そのコンポーネントは、その動作に対して原子性を有する特性を適用すべきであることを指示されることができる。本明細書において説明される主題の側面は、上記の両方の例に適用可能である。
[0033] 更に、1つ又は複数のオブジェクトが「トランザクションとの関係において」修正される場合、このことは、原子性を有する特性が、1つ又は複数のオブジェクトを修正するために発せられた更新動作に関して適用されるという仮定があることを意味する。例えば、トランザクションとの関係において修正を要求するアプリケーションは、修正を実行するための全ての更新動作が成功するであろうこと、あるいは、成功した又は成功したであろう更新が放棄されるであろうことの何れかを、問題なく仮定することができる。
[0034] 図2は、本明細書において説明される主題の側面が動作し得るシステムのコンポーネントの例示的な構成を表すブロック図である。図2に示されたコンポーネントは、例示的なものであり、必要とされ得る又は包含し得るコンポーネントの全てを含むものであることを意味していない。他の実施態様において、図2と関連して説明されるコンポーネント及び/又は機能は、本明細書において説明される主題の側面の趣旨又は範囲から逸脱することなく、(図示され、又は図示されていない)他のコンポーネントに含まれることができ、又はサブコンポーネントに配置されることができる。いくつかの実施態様において、図2と関連して説明されるコンポーネント及び/又は機能は、多数のデバイスにわたって分散されることができる。
[0035] 図2に目を向けると、システム205は、1つ又は複数のアプリケーション210、API215、整合性コンポーネント220、記憶装置250、通信メカニズム255、及び他のコンポーネント(不図示)を含むことができる。システム205は、1つ又は複数の計算機から構成されることができる。そのような計算機は、例えば、パーソナルコンピューター、サーバーコンピューター、ハンドヘルド又はラップトップデバイス、マルチプロセッサーシステム、マイクロコントローラーベースのシステム、セットトップボックス、プログラマブル家電製品、ネットワークPC、ミニコンピューター、メインフレームコンピューター、携帯電話、携帯情報端末(PDAs)、ゲームデバイス、プリンター、セットトップやメディアセンターや他の電気製品を含む電気製品、車載若しくは付属の計算機、他のモバイルデバイス、上記システム若しくはデバイスのいくつかを含む分散コンピューティング環境等を含むことができる。
[0036] システム205が単独のデバイスから成る場合、システム205として振る舞うように構成されることができる例示的なデバイスは、図1のコンピューター110から成る。システム205が複数のデバイスから成る場合、複数のデバイスのそれぞれは、同様に又は異なるように構成された図1のコンピューター110から成ることができる。
[0037] 整合性コンポーネント220は、リカバリマネージャー225、チェックポイントマネージャー230、I/Oマネージャー235、及び他のコンポーネント(不図示)を含むことができる。本明細書において用いられるように、コンポーネントという用語は、デバイスの全て又は一部分、1つ又は複数のソフトウェアモジュールの集合又はその一部分、1つ又は複数のソフトウェアモジュール又はその一部分及び1つ又は複数のデバイス又はその一部分からなるいくつかの組み合わせ等を含むものと解されなければならない。
[0038] 通信メカニズム255は、システム205が他のエンティティと通信することを可能にする。例えば、通信メカニズム255は、システム205がリモートホスト上のアプリケーションと通信することを可能にすることができる。通信メカニズム255は、ネットワークインターフェース若しくはアダプター170、モデム172、又は図1と関連して説明されたように通信を確立するための任意の他のメカニズムであり得る。
[0039] 記憶装置250は、データへのアクセスを提供する能力を有した任意の記憶媒体である。記憶装置は、揮発性メモリ(例えばキャッシュ)及び不揮発性メモリ(例えば永続性記憶装置)を含むことができる。データという用語は、1つ又は複数のコンピューター記憶要素によって表現されることができる如何なるものも含むように広く解されなければならない。論理上、データは、揮発性又は不揮発性メモリにおいて一連の1と0の並びとして表現されることができる。非2進法の記憶媒体を有するコンピューターにおいて、データは、その記憶媒体の能力に応じて表現されることができる。データは、数字や文字等の単純なデータ型、階層化され、リンク付けされ、又は他の関連付けされたデータ型、多数の他のデータ構造又は単純なデータ型を含むデータ構造、等を含む、異なる型のデータ構造に編成されることができる。データのいくつかの例は、情報、プログラムコード、プログラム状態、プログラムデータ、他のデータ等を含む。
[0040] 記憶装置250は、ハードディスク記憶装置、他の不揮発性記憶装置、RAM等の揮発性メモリ、他の記憶装置、上記のいくつかの組み合わせ等から構成されることができ、多数のデバイスにわたって分散されることができる。記憶装置250は、外付け型、内蔵型であることが可能であり、あるいは、システム205に内蔵されるものと外付けされるものの両方からなる複数のコンポーネントを含むことができる。
[0041] 記憶装置250は、記憶装置コントローラー240を介してアクセスされることができる。本明細書において用いられるように、アクセスは、データの読み出し、データの書き込み、データの消去、データの更新、上記のうち2つ又はそれ以上を含む組み合わせ等を含むことができる。記憶装置コントローラー240は、記憶装置250へのアクセス要求を受信することができ、そのような要求を適切に実行することができる。記憶装置コントローラー240は、データが受信された順序で記憶装置250に書き込まれることを保証するようには構成されないかもしれない。更に、記憶装置コントローラー240は、要求されたデータを記憶装置250の不揮発性メモリに実際に書き込み終える前に、そのデータを書き込んだことを知らせることができる。
[0042] 1つ又は複数のアプリケーション210は、リソースを生成し、削除し、又は更新するトランザクションに関与することができる任意のプロセスを含む。そのようなプロセスは、ユーザーモード又はカーネルモードで実行することができる。本明細書において用いられるように、「プロセス」という用語及びその変体は、1つ又は複数の従来的なプロセス、スレッド、コンポーネント、ライブラリ、タスクを実施するオブジェクト等を含むことができる。プロセスは、ハードウェア、ソフトウェア、又は、ハードウェア及びソフトウェアの組み合わせによって実装されることができる。実施態様において、プロセスは、どのように呼び出されたのであっても、アクションを実行する能力がある、又はアクションを実行するのに用いられる、任意のメカニズムである。プロセスは、多数のデバイス又は単独のデバイスにわたって分散されることができる。1つ又は複数のアプリケーション210は、(例えば、ファンクション/メソッド呼び出しを介して)API215を通じてI/Oマネージャー235にファイルシステム要求を渡すことができる。
[0043] I/Oマネージャー235は、どのようなI/O要求を記憶装置コントローラー240(又は他のいくつかの中間コンポーネント)に対して発行するかを決定することができる。I/Oマネージャー235はまた、ファイルシステム要求に関連した動作が進行し、完了し、又は失敗した時に、1つ又は複数のアプリケーション210へデータを返すことができる。ファイルシステム要求がトランザクションを伴う場合、I/Oマネージャー235は、トランザクションマネージャー(不図示)がトランザクションを正しく管理できるようにトランザクションマネージャーに通知することができる。いくつかの実施態様において、トランザクションマネージャーの機能は、I/Oマネージャー235の中に含まれることができる。
[0044] 以下において、障害後の整合性及びリカバリを容易にする方法で記憶装置250にデータを書き込むための、例示的なアルゴリズムが提示される。このアルゴリズムに提示されるように、それぞれのオブジェクトは、nがシステムへのオブジェクトを識別するとして、Dによって表される。オブジェクトは、直列可能である(即ち、記憶装置250上のデータとして表現されることが可能である)と仮定される。オブジェクトテーブルが、それぞれのオブジェクトの識別子を記憶装置250上のオブジェクトの記憶位置と関連付ける。
[0045] 修正のためのトランザクションにより最初にDが更新される時、Dは、オブジェクトテーブルにおいてnを用いてその記憶位置を探索することによって、記憶位置が決定される。この例で用いるために、記憶装置250上のDの記憶位置はLと呼ばれる。
[0046] 次に、Lのコンテンツが記憶装置250から読み出され、オブジェクトが非直列化される(例えば、直列化形式からそのオブジェクトの構造へ変換される)ことができ、そのオブジェクトの修正されるべき一部分がメインシステムメモリ内へコピーされる。更新は、メモリ内の当該一部分(又はそのコピー)に対して実施される。メモリ内の修正される一部分と関連して、記憶装置250上の1つ又は複数の新たな記憶位置(これをLと呼ぶ)が、その修正された一部分のために指定される。
[0047] メインシステムメモリ内のこれらのコピーは、本明細書において時々、オブジェクトの「論理的コピー」と呼ばれる。オブジェクトの論理的コピーは、そのオブジェクトを表現するために用いられることができる1つ又は複数のデータ構造を含む。論理的には、論理的コピーはオブジェクトの複製である。物理的には、論理的コピーは、そのオブジェクトの複製を生成するために用いられることができるデータ(他のデータへのポインターを含む)を含むことができる。例えば、1つの具体化において、論理的コピーは、オブジェクトの実際のコピー(例えば、ビットバイビットのコピー)、又はそのオブジェクトを生成するために用いられることができるデータを含むデータ構造であり得る。別の具体化において、修正されていない論理的コピーは、オリジナルのオブジェクトを参照する1つ又は複数のポインターを含むことができる。論理的コピーが修正されると、論理的コピー中のポインターは、(例えば、論理的コピーの変更された一部分のために)新たなメモリ記憶位置を参照することができ、その一方、他のポインターは、(例えば、論理的コピーの変更されていない一部分のために)オリジナルのオブジェクトの一部分を参照することができる。ポインターを使用することにより、オリジナルのオブジェクトの修正されたデータを修正されていないデータと共に用いて修正されたコピーが構築されることができる。論理的コピーの生成は、オブジェクトの複製を生成するのに必要とされる記憶を削減するために実施されることができる。
[0048] 更に、直列化及び非直列化が本明細書において時々言及されるが、本明細書において説明される主題の側面を、慣習的に直列化及び非直列化として考えられているものに限定する意図は何ら存在しない。1つの実施態様において、直列化されたバージョンは、非直列化されたバージョンとビット毎に全く同一であることがある。別の実施態様において、直列化されたバージョンのビットは、非直列化されたバージョンにおけるビットとは異なるフォーマット及び順序にパッケージされることができる。実際、1つの実施態様において、直列化及び非直列化は、オブジェクトを表現するデータを記憶装置から記憶し検索するための、如何なるメカニズムをも意味するものと理解されなければならない。他のメカニズムは、例えば、オブジェクトの属性をテキスト形式で記憶装置に書き込むこと、オブジェクトの属性を記憶装置においてマークアップ言語に符号化すること、オブジェクトの属性及び他の特徴を記憶装置上に記憶する他の方法等を含むことができる。
[0049] システムの自由裁量で(例えば、トランザクションが完遂した後、又は何らかの他の時点で)、システムは、修正された論理的コピーを直列化し持続性のある媒体に戻すことができるが、記憶位置Lに対してそのようにする。修正された論理的コピーを新たな記憶位置に書き戻すことを意図したものは、書き込みプランと呼ばれる。書き込みプランは、1つ又は複数のオブジェクトに対する任意の数の更新を含むことができる。書き込みプランは、1つ以上のトランザクションにおいて発生する変更を参照することができる。多数の書き込みプランが単独の書き込みプランに組み合わせられることができる。
[0050] チェックポイントの直後で修正が発生した場合、(多数の記憶位置に複製されることができる)リカバリブロックと呼ばれるブロックが、その修正された論理的コピーの開始位置(即ちL)を指し示すように修正される。Lに存在するオブジェクト内のフィールドは、次に書き込まれる記憶位置を指し示す。このフィールドは、書き込みプランのチェーンにおけるリンクを表す。
[0051] 論理的コピーの書き込み要求の送信と共に、オブジェクトテーブルに対して修正が行われることができる。特に、オブジェクトの識別子によってインデックスを付された記憶位置の値は、修正された論理的コピーが記憶されるべき記憶位置の値(即ちL)に設定されることができる。これは、引き続いて行われるオブジェクトDの記憶位置の探索が、記憶位置L即ちオブジェクトの新たなバージョンに向けられるように、行われるものである。
[0052] もしトランザクションが1つ以上のオブジェクト、例えばD及びDを修正するのであれば、これらのオブジェクトは、相互に「原子性を有して結合されている」とみなされ、1つの書き込みプランに書き込まれる。書き込みプランは、この関係性を(例えば、関与するオブジェクトへのリンクによって)特定することができる。
[0053] 任意の数のオブジェクトが、このような方法により存続することができる。定期的に、オブジェクトテーブルはまた、他のオブジェクトと同じ方法で記憶装置250に書き込まれることができる。
[0054] 記憶装置250へのオブジェクトテーブルの書き込み要求の送信と共に、記憶装置コントローラー240へフラッシュ(flush)コマンドも送信されることができる。フラッシュコマンドは、記憶装置コントローラー240に、その揮発性メモリから記憶装置250の不揮発性メモリへまだ書き込まれていない全てのデータを書き込むよう、指示する。
[0055] 定期的に、チェックポイントが発生することができる。チェックポイントは、記憶装置250によって記憶されているチェックポイントレコードによって示されることができる。チェックポイントは、任意の時点で書き込まれることができ、フラッシュ(flush)の後に持続性/永続性を有するようになることができる。持続性/永続性を有するとは、チェックポイントが記憶装置の不揮発性メモリ上に記憶されていることを意味する。
[0056] チェックポイントが持続性/永続性を有するようになった後、オブジェクトのあらゆる古い未使用のコピーのために用いられているスペース(又はその一部分)が再利用されることができる。フラッシュが完了した後、次いで、リカバリブロックが、次の書き込みプランのチェーンの開始位置に指し示される。1つの実施態様において、リカバリブロックは、書き込みプランのチェーンの開始位置をオブジェクトテーブルの新たな記憶位置として指し示すことができる。
[0057] 図3は、本明細書において説明される主題の側面を示すブロック図であり、図3と関連して、より具体的な例が説明される。例示されるように、図3は、メインメモリ305及び記憶装置250を示す。直線307は、メインメモリ305と記憶装置250の間の境界線を表す。直線307の上側にあるオブジェクトはメインメモリ内のものであり、一方、直線307の下側にあるオブジェクトは記憶装置250の揮発性又は不揮発性メモリ内のものである。
[0058] オブジェクト314−316は、メインメモリ305内に示されている。具体化において、オブジェクト314−316は、それぞれオブジェクト319−321の非直列化された論理的コピーである。オブジェクト319は、記憶装置250上の記憶位置1500に配置され、オブジェクト320は、記憶装置250上の記憶位置200に配置され、オブジェクト321は、記憶装置250上の記憶位置800に配置されている。
[0059] オブジェクトテーブル310は、記憶装置250上のオブジェクト314−316の記憶位置を示すキー値ペアを含む。キー値ペアは、オブジェクト314−316の識別子(n)を用いてインデックス付けされる。
[0060] トランザクションがオブジェクト316を(例えば、その名前をfoo.txtに変更することによって)修正した場合、整合性コンポーネント(例えば、図2の整合性コンポーネント220)は、更新されたオブジェクトのための新たな記憶位置(例えば記憶位置801)を決定することができる。もしオブジェクトがファイルであれば、その名前をトランザクションとの関係において更新することにより更に、そのファイルを含むディレクトリも、同様にそのトランザクションに関与することになる。例えば、ファイル名が変更された場合、そのファイルを表すオブジェクト及びそのファイルを含むディレクトリを表すオブジェクトの両方が、トランザクションに関与することが必要とされる。この場合、そのオブジェクトを含むディレクトリはオブジェクト314として表され、更新されたディレクトリ(例えばオブジェクト318)の論理的コピーは記憶装置250内のオブジェクト323として表される。更に、テーブル310は、修正されたオブジェクト(即ちオブジェクト317及び318)の新たな記憶位置(即ち801及び1000)を示すようにテーブル311に論理的に更新されている。
[0061] トランザクションとの関係におけるオブジェクトの修正が別のオブジェクトに対する影響をも及ぼすことは、例えば図2のI/Oマネージャー235又は他のいくつかのコンポーネントによって、明示的に示され決定されることができる。
[0062] 2つ又はそれ以上のオブジェクトがトランザクションの更新に関与している場合、既に言及されたように、これらのオブジェクトは、「原子性を有して結合されている」とみなされる。リカバリ動作において、トランザクションとの関係において変更された全てのオブジェクトに対して記憶装置250に変更が見つかるのでない限り、見つかった変更の全ては放棄される。言い換えれば、もしオブジェクトのうちの1つに対する変更が見つかったがオブジェクトのうちの別のものに対する変更が見つからなければ、オブジェクトのうちの前記1つに対する変更は放棄される。
[0063] 1つの実施態様において、2つ又はそれ以上のオブジェクトを原子性を有して結合するために、ポインターが記憶装置250に記憶され、あるいは記憶装置250内の各オブジェクトと関連付けられることができる。ポインターは、トランザクションに関与する別のオブジェクト(又はその一部分)の記憶位置を示すことができる。もしトランザクションに関与する更なるオブジェクトが存在しなければ、ポインターは、「デッドブロック」を指し示すことができ、又は、別の書き込みプランの「最初の(head)」オブジェクトの記憶位置を示すことができる。この最初のオブジェクトは、書き込みプランや、その書き込みプランの修正されたオブジェクト(又はその一部分)等を含むことができる。
[0064] ファイルシステムは多くのトランザクションに関与し得るので、性能上の理由により、完了したトランザクションの「最後の」オブジェクトに対する変更を書き込む要求を行うのを、別のトランザクションが完了するまで待つことが望ましいかもしれない。トランザクションの最後のオブジェクトは、別の書き込みプランの「最初の」オブジェクトを指し示すべきポインターに関連付けられることができる。しかしながら、別のトランザクションが完了するまで、「最初の」オブジェクトの記憶位置は知られていないかもしれない。それ故、書き込みプランのチェーンを継続するために、書き込みプランの「最後の」オブジェクトは、別の書き込みプランの最初のオブジェクトに対し記憶位置が知られるまで、書き込まれないようにすることができる。
[0065] トランザクションの「最後の」オブジェクトが不揮発性メモリに書き込まれる前に、もしディスクが電力を失うか、あるいは別の障害が生じると、上記の技法が、書き込みプランにおける変更が放棄されることを命ずる。トランザクションの頻度が低いシステムにおいてこのような結果を避けるために、いくつかの実施態様において、整合性コンポーネントは、1)別のトランザクションが完了するか、2)「最後の」オブジェクトをそのポインターと共に次の記憶位置に書き込む前にタイムアウト期間が経過するか、その何れか早い方まで待つことができ、又は、3)常に「最後の」オブジェクトをそのポインターと共に次の記憶位置に書き込むことができる。上記2)及び3)において、整合性コンポーネントは、「最後の」オブジェクトのための指し示すべき記憶位置を決定することができる。この記憶位置は、従って、別の書き込みプランの「最初の」オブジェクトを指し示すポインターを有することができる。「最後の」オブジェクトが指し示すこの記憶位置は、時々、「デッドブロック」と呼ばれる。このようにして、トランザクションの最中に行われた変更の損失が低減されることができる。
[0066] 次の記憶位置へのポインターに加えて、「指し示された」オブジェクトの正しいコンテンツを示すためのデータも同様に記憶装置250に記憶されることができる。例えば、指し示されたオブジェクトの正しいコンテンツを示すハッシュが記憶されることができる。
[0067] 図3に提示された例において、オブジェクト322に関連付けられたポインターは、オブジェクト323に関連付けられた記憶位置を指し示すことができる。このポインターは、この2つのオブジェクトを1つに結び付ける。リカバリの間に、もしこれらのオブジェクトの何れかが見つからないか、又はそれらが正しいコンテンツを有していなければ、見つかったオブジェクトによって表される変更は、放棄されることができる。
[0068] 記憶装置250の性質により、最初にどのオブジェクトが記憶装置250の不揮発性メモリに書き込まれるかに関する如何なる保証も存在しないことがある。もしオブジェクト322が最初に書き込まれオブジェクト323が書き込まれなければ、オブジェクト322からのポインターは、スプリアスなデータを有する記憶位置を指し示すであろう。しかしながら、その記憶位置におけるデータのハッシュを計算し、このハッシュをオブジェクト322と共に記憶されたハッシュと比較することによって、整合性コンポーネントは、オブジェクト323に関する無効なデータを検出することができる。この場合、リカバリの間、整合性コンポーネントは、オブジェクト322及び323によって表される変更を放棄することができる。
[0069] リカバリブロック330は、データがチェックポイントの後に記憶されることが想定される第1の記憶位置(この場合は801)を指し示す。リカバリブロック330はまた、第1の記憶位置に記憶されたオブジェクトの正しいコンテンツを用いて計算されるハッシュを含む、又はそのハッシュに関連付けられることができる。
[0070] リカバリの間、初めに、オブジェクトテーブルの最後に知られた有効なバージョンが復元される。オブジェクトテーブルの最後に知られた有効なバージョンは、記憶装置250の不揮発性メモリへの記憶が成功した最後の論理的なオブジェクトテーブルである。次いで、リカバリブロック330によって指し示されたものを手始めとして、書き込みプランが調査される。
[0071] 書き込みプランは、トランザクションに関与する全ての修正された論理的コピーを記憶装置250に書き込むことを意図したものであることを思い出されたい。書き込みプランは、その書き込みプランに関与するオブジェクトの記憶位置へのリンクと共にそのオブジェクトの数を示すデータによって、記憶装置上に符号化されることができる。1つの実施態様において、オブジェクトの数を示すデータは、書き込みプランの「最初の」オブジェクトに記憶されることができ、一方、次の記憶位置へのリンクを張るデータは、記憶装置250に書き込まれるそれぞれの要素と共に記憶されることができる。別の実施態様において、オブジェクトの数及び記憶位置へのリンクを含むデータ構造が、書き込みプランに関連付けられた複数の記憶位置のうちの1つ(例えば、「最初の」記憶位置)に、又は、それらの記憶位置とは別個に、記憶されることができる。別の実施態様において、書き込みプランは、次の記憶位置のみを含むことができる。
[0072] 1つの実施態様において、チェックポイントの後に生じる書き込みプランは、書き込みプラン間の「リンク」を持たずに不揮発性記憶装置上の既知の記憶位置に書き込まれることができる。この実施態様において、リカバリの間、リカバリマネージャーは、その既知の記憶位置からそれぞれの書き込みプランを読み出して、オブジェクトテーブル及び他の記憶されたデータ構造を、もし書き込みプランによって示された書き込みが成功すれば、適切なものに更新することができる。
[0073] 上記の例は、書き込みプランの要素を示すのに用いられ得るデータ構造の型の全てを含むものであること、又は包括的であることを意図するものではない。本明細書における教示に基づいて、当業者は、本明細書において説明される主題の側面の趣旨又は範囲から逸脱することなく、書き込みプランの要素を示すのに用いられ得る他のデータ構造を認識することができる。
[0074] それぞれの書き込みプランが調査されると、その書き込みプランのオブジェクトが記憶装置250に書き込まれることが成功したかどうかが判定される。これは例えば、書き込みプランに関連付けられたそれぞれの記憶位置にあるコンテンツのハッシュを、その記憶位置へのリンクに関連付けられたハッシュと比較することによって、行われることができる。もしこれらのハッシュがその書き込みプランの全てのオブジェクトに対して等しければ、オブジェクトの新たな記憶位置を反映するようにオブジェクトテーブルが更新される。もしこれらのハッシュのいずれかが等しくなければ、リカバリは停止する。
[0075] リカバリが終了した後、オブジェクトテーブルは、成功した書き込みプランによって更新された全てのオブジェクトのルートの記憶位置を有する。ここで、成功した書き込みプランが生じるのは、プランに関連付けられた全てのオブジェクトがディスクの不揮発性メモリに書き込まれることが成功した場合である。
[0076] 図2に戻り、API215は、トランザクションに関与するオブジェクトの修正要求を受信することができる。これに応答して、I/Oマネージャー235は、そのオブジェクトを記憶装置の記憶位置(例えばL)において見つけ出し、そのオブジェクトの論理的コピーを作成し、トランザクションとの関係においてそのオブジェクトに変更を加え、変更されたその論理的コピーを記憶するための第2の記憶位置(例えばL)を決定し、その変更された論理的コピーの書き込み要求を記憶装置コントローラー240へ送信し、その論理的コピーが第2の記憶位置に記憶されたことを示すように揮発性データ構造(例えばオブジェクトテーブル310)を更新することができる。
[0077] もしAPI215がトランザクションに関与する別のオブジェクトの修正要求を受信したら、I/Oマネージャー235は、当該別のオブジェクトと第1のオブジェクトを1つに結び付ける関連付け(例えば書き込みプラン)の作成を含む、更なるアクションを実行することができる。次いで、オブジェクトの修正を記憶装置に書き込む要求の送信と共に、I/Oマネージャー235はまた、その関連付けの書き込み要求を記憶装置コントローラー240へ送信することができる。
[0078] チェックポイントマネージャー230は、揮発性データ構造(例えばオブジェクトテーブル)の書き込み要求及びフラッシュ(flush)要求を記憶装置コントローラー240へ送信するよう動作可能である。フラッシュ要求は、記憶装置250の揮発性メモリから不揮発性メモリへデータを一斉に掃き出す(flush)よう記憶装置コントローラー240に指示する。
[0079] リカバリマネージャー225は、既に説明されたリカバリアクションを実行することができる。指し示された記憶位置に正しいコンテンツが含まれるかどうかを決定するに際して、リカバリマネージャー225は、変更された論理的コピーが第2の記憶位置に書き込まれたかどうかを、その変更された論理的コピーの記憶されたハッシュと当該第2の記憶位置から読み出されたコンテンツにより計算されるハッシュとの比較に基づいて、決定することができる。もしこれらのハッシュが等しければ、リカバリマネージャーは、更に、その論理的コピーが第2の記憶位置に記憶されたことを示すように別のデータ構造(例えば、最後に知られた有効な状態から構成されたオブジェクトテーブル)を更新するよう、動作可能である。記憶装置上の割り当てられた/解放されたデータ構造はまた、(例えば、書き込みプランが成功したために)有効な書き込みであることが現時点において知られている記憶位置と整合性を持つように更新されることができる。
[0080] 図4−5は、本明細書において説明される主題の側面に従って行われることができるアクションを概略的に表すフロー図である。説明を簡単にするため、図4−5と共に説明される技法は、一連の動作として表され、説明される。示された動作及び/又は動作の順序によって、本明細書において説明される主題の側面は限定されないことは、理解され認識されなければならない。1つの実施態様において、動作は以下に説明されるような順序で行われる。しかしながら、他の実施態様において、動作は、並列して、別の順序で、及び/又は、本明細書において提示及び説明されない他の動作と共に、行われることができる。更に、示された全ての動作が、本明細書において説明される主題の側面に従った技法を実現するのに必要とされるわけではない。加えて、当業者は、この技法が状態図による一連の相互関係を有した状態として、又は事象として、代わりに表現されることができることを理解し認識するであろう。
[0081] 図4は、本明細書において説明される主題の側面に従って単独のオブジェクトがトランザクションとの関係において修正される場合に行われることができる例示のアクションを概略的に表すフロー図である。ブロック405において、アクションが開始する。例えば、図2−3を参照して、API215は、オブジェクト316内のデータの更新要求を受信することができる。
[0082] ブロック410において、トランザクションの更新に関与するオブジェクトの指示が受信される。例えば、図2−3を参照して、I/Oマネージャー235は、オブジェクト316の識別子10を受信することができる。
[0083] ブロック415において、オブジェクトが記憶装置の第1の記憶位置において見つけ出される。例えば、図2−3を参照して、I/Oマネージャー235は、オブジェクトテーブル310を調べて、オブジェクト321の記憶位置800を決定することができる。オブジェクト321は、例えば、オブジェクト316の直列化表現に対応することができる。
[0084] ブロック420において、トランザクションとの関係においてオブジェクトに対して行われた変更を含む、そのオブジェクトの論理的コピーが作成される。例えば、図3を参照して、(例えばオブジェクト317によって表される)論理的コピーが作成され、トランザクションとの関係において特定される更新により更新される。
[0085] ブロック425において、更新された論理的コピーを記憶するために新たな記憶位置が決定される。例えば、図2−3を参照して、I/Oマネージャー235は、(例えばオブジェクト317によって表される)更新された論理的コピーの直列化表現を記憶するのに記憶位置801が用いられるべきであることを決定することができる。
[0086] ブロック430において、論理的コピーの新たな記憶位置への書き込み要求が記憶装置コントローラーへ送信される。例えば、図2−3を参照して、I/Oマネージャー235は、オブジェクト317を記憶装置250の記憶位置801に書き込むよう、記憶装置コントローラー240へ要求を送信する。
[0087] ブロック435において、次の記憶位置へのリンク付けデータが供給される。既に説明されたように、これは、別のトランザクションによって行われた変更の先頭の記憶位置を示すデータを記憶装置へ送信すること、又は、もしあれば次のトランザクションにおいて行われた変更を発見するのに用いられることができる「デッドブロック」を示すデータを送信することを、伴うことができる。このリンク付けデータは、論理的コピーの書き込み要求と同じ要求に含めて、又は異なる要求として、送信されることができる。例えば、図2−3を参照して、I/Oマネージャー235は、別のトランザクションとの関係において行われたデータの更新が記憶装置250の記憶位置1000を開始位置として記憶されることを示すリンク付けデータ1000を送信することができる。
[0088] ブロック440において、オブジェクトの論理的コピーが新たな記憶位置に記憶されるよう要求されることを反映するように、オブジェクトテーブルが更新される。例えば、図2−3を参照して、I/Oマネージャー235は、ID10を持つオブジェクトのための値が801に更新されるように、オブジェクトテーブル310を更新することができる。
[0089] ブロック445において、もしあれば他のアクションが実行されることができる。例えば、オブジェクトテーブルに対する変更の書き込み要求が、その後にフラッシュコマンドを伴って、記憶装置コントローラーへ送信されることができる。別の例として、リカバリアクションが実行されることができる。前に説明されたように、1つの具体化において、そのようなアクションは、例えば、リンクされたリストの先頭位置を見つけ出すこと、そのリンクされたリストを反復適用して、当該リンクされたリストの要素に関連付けられているが記憶装置に書き込まれていないオブジェクトを発見すること、リンクされたリストの反復適用と共に、オブジェクトの新たな記憶位置を示すようにオブジェクトテーブルを更新することを含むことができる。
[0090] 図5は、本明細書において説明される主題の側面に従って多数のオブジェクトがトランザクションとの関係において修正される場合に行われることができる例示のアクションを概略的に表すフロー図である。ブロック505において、アクションが開始する。例えば、図2−3を参照して、API215は、ファイル名の更新要求を受信することができる。ファイル名の更新は、例えばディレクトリのデータ構造の更新を伴うことができる。
[0091] ブロック510において、トランザクションに関与するオブジェクトの指示が取得される。例えば、図2−3を参照して、I/Oマネージャー235は、オブジェクト316に対応するファイルのファイル名の変更要求に加えて、オブジェクト316の識別子10を受信することができる。そのファイル名が変更されると、I/Oマネージャー235(又は別のコンポーネント)は、そのトランザクションにディレクトリ(例えば、オブジェクト318に対応するディレクトリ)も関与していることを判定することができる。そのディレクトリのID(11)も同様に取得されることができる。
[0092] ブロック515において、オブジェクトの記憶位置が記憶装置において見つけ出される。例えば、図2−3を参照して、I/Oマネージャー235は、オブジェクトテーブル310を調べて、オブジェクト319及び321の記憶位置1500及び800をそれぞれ決定することができる。オブジェクト321は、例えば、オブジェクト316の直列化表現に対応することができ、一方、オブジェクト319は、オブジェクト314の直列化表現に対応することができる。
[0093] ブロック520において、トランザクションとの関係において修正されたオブジェクトの論理的コピーが作成される。例えば、図3を参照して、(例えばオブジェクト317及び318によって表される)論理的コピーが作成され、トランザクションとの関係において特定される更新により更新される。
[0094] ブロック525において、変更されたオブジェクトを記憶するために新たな記憶位置が決定される。例えば、図2−3を参照して、I/Oマネージャー235は、(オブジェクト317によって表される)ファイルの更新された論理的コピーの直列化表現を記憶するのに記憶位置801が用いられるべきであり、一方、(オブジェクト318によって表される)ディレクトリの更新された論理的コピーの直列化表現を記憶するのに記憶位置1000が用いられるべきであることを決定することができる。
[0095] ブロック530において、オブジェクトの論理的コピーを原子単位(atomic unit)で結び付ける関連付けが作成される。例えば、論理的コピーをリンクさせる書き込みプランが作成されることができる。例えば、図2−3を参照して、I/Oマネージャー235は、オブジェクト317及び318をリンクさせる書き込みプランを作成することができる。別の例として、ハッシュ値と共に記憶位置間の参照を含むリンクされたリストが作成されることができる。既に言及されたように、これらのハッシュ値は、書き込み要求に関与する論理的コピーの正しいコンテンツを示すことができる。
[0096] ブロック535において、関連付け及びオブジェクトの記憶装置への書き込み要求が送信される。既に言及されたように、この要求は、記憶装置上のオブジェクトの新たなコピーを作りオリジナルを保持するためのものである。例えば、図2−3を参照して、I/Oマネージャー235は、記憶装置250にオブジェクト317−318と共に書き込みプランを書き込む要求を、記憶装置コントローラー240へ送信することができる。
[0097] 別の例として、関連付け及びオブジェクトの書き込み要求の送信は、論理的コピーのためのそれぞれの記憶位置を示すデータ構造を書き込む1つ又は複数の要求を送信すること、論理的コピーのうち1つを除いてそれ以外の全てを記憶装置に書き込む1つ又は複数の要求を送信すること、並びに、論理的コピーのうちの当該1つを書き込む要求の送信を、別のトランザクションが完了する、予め定められた時間期間が経過する、及びチェックポイントに到達する等の、予め定められたイベントが発生するまで待機することを伴うことができる。もし別のトランザクションが完了したら、当該別のトランザクションとの関係において修正されたオブジェクトの論理的コピーの記憶位置への参照と共に「最後の」論理的コピーを書き込む要求を送信することを含む、更なるアクションが実行されることができる。
[0098] ブロック540において、オブジェクトテーブルが更新される。例えば、図3を参照して、オブジェクトテーブル310は、オブジェクトテーブル311を生じさせる新たな記憶位置を用いて更新されることができる。
[0099] ブロック545において、もしあれば他のアクションが実行されることができる。例えば、リカバリアクションが実行されることができる。これらのリカバリアクションは、以下を含むことができる。
[0100] 1.不揮発性記憶装置内のオブジェクトの最後に知られた正しい記憶位置を示す第1のデータ構造を取得するステップ。
[0101] 2.論理的コピーが記憶されることが予定された不揮発性記憶装置の記憶位置を示す別のデータ構造を取得するステップ。このデータ構造はまた、その論理的コピーの正しいコンテンツを示しているハッシュからなる第1のセットを示す。
[0102] 3.その記憶位置に配置されたコンテンツを読み出すステップ。
[0103] 4.そのコンテンツのハッシュからなる第2のセットを計算するステップ。
[0104] 5.もしハッシュの第1及び第2のセットの対応する要素が等しければ、論理的コピーがその記憶位置に記憶されていることを示すように第1のデータ構造を更新し、記憶装置上に更新されたローカルコピーの次のセットがもし記憶されていればそのセットに対して上記ステップ1−5を繰り返すステップ。
[0105] 6.もしハッシュの第1及び第2のセットの対応する要素の何れかが等しくなければ、リカバリアクションを終了するステップ。
[0106] 実行されることができる別の例示のアクションは、全ての論理的コピーを記憶装置の不揮発性メモリへ首尾よく掃き出した後にオブジェクトのオリジナルに関連付けられた記憶位置が使用可能であることを示すステップを含む。
[0107] これらの他の例示のアクションは、行われることができるアクションの全てを含むものであること、又は包括的であることを意図するものではなく、行われることができるいくつかの他のアクションを単に例示するために本明細書において提供されたにすぎない。
[0108] 上述の詳細な説明から分かるように、記憶装置システムにおいて整合性を維持することに関する側面が説明された。本明細書において説明された主題の側面は、様々な変形及び代替的構成の余地を有しているものの、それについての一定の例示的実施態様が、図面に示され、上記において詳細に説明された。しかしながら、請求項に係る対象の側面を開示された特定の形態に限定する如何なる意図も存在せず、それどころか、その意図は、本明細書において説明された主題の様々な側面の趣旨及び範囲に属するあらゆる変形、代替的構成、及び均等物を包含することであることは、理解されるべきである。

Claims (13)

  1. トランザクションに関与するオブジェクトの1つ又は複数の指示を取得するステップと、
    前記トランザクションに関与する前記オブジェクトのための、記憶装置における記憶位置の第1のセットを特定するステップと、
    前記トランザクションとの関係において修正されたオブジェクトの論理的コピーを作成するステップと、
    前記論理的コピーのための、前記記憶装置における記憶位置の第2のセットを決定するステップと、
    前記オブジェクトの前記論理的コピーを原子単位で結び付ける関連付けを作成するステップと、
    前記記憶装置上の前記オブジェクトのオリジナルを維持したまま前記関連付け及び前記論理的コピーを前記記憶装置に書き込む1つ又は複数の要求を送信するステップと、
    障害が発生した後にリカバリ動作を実施するステップと、
    を含み、前記リカバリ動作は、
    不揮発性記憶装置内のオブジェクトの最後に知られた正しい記憶位置を示す第1のデータ構造を取得するステップと、
    前記論理的コピーが記憶されることが予定された前記不揮発性記憶装置の記憶位置を示す別のデータ構造を取得するステップであって、前記別のデータ構造は更に、前記論理的コピーの正しいコンテンツを示しているハッシュからなる第1のセットを示す、ステップと、
    前記記憶位置に配置されたコンテンツを読み出すステップと、
    前記コンテンツのハッシュからなる第2のセットを計算するステップと、
    もし前記ハッシュの第1及び第2のセットの対応する要素が等しければ、前記論理的コピーが前記記憶位置に記憶されていることを示すように前記第1のデータ構造を更新するステップと、
    もし前記ハッシュの第1及び第2のセットの対応する要素の何れかが等しくなければ、前記リカバリ動作を終了するステップと、
    を含む、少なくとも部分的にコンピューターによって実現される方法。
  2. トランザクションに関与するオブジェクトの1つ又は複数の指示を取得する前記ステップは、前記トランザクションとの関係において前記オブジェクトを修正する要求と共に前記オブジェクトの識別子を受信するステップを含み、前記トランザクションに関与する前記オブジェクトのための、記憶装置における記憶位置の第1のセットを特定する前記ステップは、前記識別子を探索テーブルにおけるキーとして利用するステップであって、前記探索テーブルは前記キーを前記オブジェクトが記憶装置内に記憶されている位置と関連付けている、ステップを含む、請求項1に記載の方法。
  3. 前記第2のセットに含まれる各記憶位置は、前記第1のセットに含まれる各記憶位置と異なり、前記オブジェクトの論理的コピーを作成する前記ステップは、前記トランザクションの間に修正されたオブジェクトの一部分のコピーを作成するステップを含む、請求項1に記載の方法。
  4. 前記オブジェクトの前記論理的コピーを原子単位で結び付ける関連付けを作成する前記ステップは、前記論理的コピーのペア間のリンクを作成するステップを含み、各リンクは、前記ペアの論理的コピーのうちの少なくとも1つに対する正しいコンテンツを示すハッシュ値を含む、請求項1に記載の方法。
  5. 前記関連付け及び前記論理的コピーを書き込む1つ又は複数の要求を送信する前記ステップは、前記論理的コピーのためのそれぞれの記憶位置を示すデータ構造を書き込む1つ又は複数の要求を送信するステップ、前記論理的コピーのうち1つを除いてそれ以外の全てを前記記憶装置に書き込む1つ又は複数の要求を送信するステップ、及び、前記論理的コピーのうちの当該1つを書き込む要求の送信を予め定められたイベントが発生するまで待機するステップを含む、請求項1に記載の方法。
  6. 前記論理的コピーのうちの当該1つを書き込む要求の送信を予め定められたイベントが発生するまで待機する前記ステップは、別のトランザクションが完了するまで、予め定められた時間期間が経過するまで、及びチェックポイントに到達するまで、のうちの1つ又は複数の間、待機するステップを含む、請求項5に記載の方法。
  7. 全ての論理的コピーを前記記憶装置の不揮発性メモリへ掃き出すことに成功した後に、前記オブジェクトの前記オリジナルに関連付けられた記憶位置が使用可能であること、及び前記論理的コピーに関連付けられた記憶位置が有効であることを示すステップを更に含む、請求項1に記載の方法。
  8. コンピューター実行可能命令を有するコンピューター記憶媒体であって、前記コンピューター実行可能命令は、実行されると、
    1つ又は複数のトランザクションの更新に関与するオブジェクトの指示を取得するステップと、
    前記オブジェクトを記憶装置の第1の記憶位置において特定するステップと、
    前記1つ又は複数のトランザクションとの関係において前記オブジェクトに対して行われた変更を含む、前記オブジェクトの論理的コピーを作成するステップと、
    前記論理的コピーを記憶するための、前記記憶装置の第2の記憶位置を決定するステップと、
    変更された前記論理的コピーを前記第2の記憶位置に書き込む要求を送信するステップと、
    前記要求の送信と共に、別のトランザクションに関連する論理的コピーが存在する場合に当該論理的コピーが書き込まれるべき次の記憶位置を示すデータを供給するステップと、
    前記論理的コピーが前記第2の記憶位置に記憶されていることを示すように揮発性データ構造を更新するステップと、
    前記揮発性データ構造に対する変更を前記記憶装置に書き込む要求を送信し、前記変更を書き込む要求の送信と共に、前記記憶装置に関連付けられたキャッシュを前記記憶装置の不揮発性メモリに書き込むことを前記記憶装置のコントローラーへ指示するフラッシュコマンドを、前記記憶装置へ送信するステップと、
    障害が発生した後にリカバリ動作を実施するステップであって、
    不揮発性記憶装置内のオブジェクトの最後に知られた正しい記憶位置を示す第1のデータ構造を取得するステップと、
    前記論理的コピーが記憶されることが予定された前記不揮発性記憶装置の記憶位置を示す別のデータ構造を取得するステップであって、前記別のデータ構造は更に、前記論理的コピーの正しいコンテンツを示しているハッシュからなる第1のセットを示す、ステップと、
    前記記憶位置に配置されたコンテンツを読み出すステップと、
    前記コンテンツのハッシュからなる第2のセットを計算するステップと、
    もし前記ハッシュの第1及び第2のセットの対応する要素が等しければ、前記論理的コピーが前記記憶位置に記憶されていることを示すように前記第1のデータ構造を更新するステップと、
    もし前記ハッシュの第1及び第2のセットの対応する要素の何れかが等しくなければ、前記リカバリ動作を終了するステップと、
    を含むステップと、
    を含むアクションを実行する、コンピューター記憶媒体。
  9. 前記オブジェクトを記憶装置の第1の記憶位置において特定する前記ステップは、前記オブジェクトの識別子を受信するステップ、及び、前記識別子を用いて、識別子と記憶位置とを関連付けるデータ構造における関連付けを探索するステップを含む、請求項に記載のコンピューター記憶媒体。
  10. 前記リカバリ動作は、
    リンクされたリストの先頭位置を特定するステップであって、前記リンクされたリストの各要素は、前記リンクされたリストによって特定される前記記憶装置の記憶位置に書き込まれるべき論理的コピーに関連付けられている、ステップと、
    前記リンクされたリストの要素が前記要素に関連付けられた記憶位置に書き込まれていない論理的コピーに関連付けられるまで、前記リンクされたリストを反復適用するステップと、
    前記リンクされたリストの反復適用と共に、論理的コピーが前記要素によって特定される前記記憶位置に書き込まれた各要素に対して、前記論理的コピーに関連付けられたオブジェクトのための新たな記憶位置を示すようにデータ構造を更新するステップと、
    を含む、請求項に記載のコンピューター記憶媒体。
  11. トランザクションに関与するオブジェクトを修正する要求を受信するように動作可能なインターフェースと、
    不揮発性メモリ及び揮発性メモリを有する記憶装置と、
    前記不揮発性メモリへの書き込みを、前記書き込みの要求が受信された順序と異なる順序で続行することを潜在的に可能にする記憶装置コントローラーと、
    アクションを実行するように動作可能なI/Oマネージャーであって、前記アクションは、
    前記オブジェクトを前記記憶装置の第1の記憶位置において特定するステップと、
    前記トランザクションとの関係において前記オブジェクトに対して行われた変更を含む、前記オブジェクトの論理的コピーを作成するステップと、
    前記論理的コピーを記憶するための、前記記憶装置の第2の記憶位置を決定するステップと、
    変更された前記論理的コピーを前記第2の記憶位置に書き込む要求を送信するステップと、
    前記論理的コピーが前記第2の記憶位置に記憶されていることを示すように揮発性データ構造を更新するステップと、
    を含むI/Oマネージャーと、
    アクションを実行するように動作可能なリカバリマネージャーであって、前記アクションは、
    前記オブジェクトの変更された前記論理的コピー、及び、前記オブジェクトに原子性を有して結合されている少なくとも1つの他のオブジェクトのそれぞれに対する変更された論理的コピーが、前記第2の記憶位置に書き込まれたか否かを判断するステップと、
    前記オブジェクトの前記論理的コピーと前記少なくとも1つの他のオブジェクトのそれぞれに対する前記論理的コピーとのうちの少なくとも一方に対応する変更が前記第2の記憶位置に書き込まれなかったと判断された場合に、前記オブジェクトの前記論理的コピー及び前記少なくとも1つの他のオブジェクトの前記論理的コピーに対応する前記第2の記憶位置に書き込まれた変更を放棄するステップと、
    を含むリカバリマネージャーと、
    を含み、
    前記リカバリマネージャーは、前記オブジェクトの変更された前記論理的コピーの記憶されたハッシュと前記第2の記憶位置から読み出されたコンテンツにより計算されるハッシュとの比較に基づいて、前記オブジェクトの変更された前記論理的コピーが前記第2の記憶位置に書き込まれたかどうかを決定するように更に動作可能であり、もし前記ハッシュが等しければ前記オブジェクトの前記論理的コピーが前記第2の記憶位置に記憶されていることを示すよう別のデータ構造を更新するように更に動作可能である、計算機環境におけるシステム。
  12. 前記インターフェースは更に、前記トランザクションに関与する前記少なくとも1つの他のオブジェクトのうちの1つを修正する要求を受信するように動作可能であり、前記I/Oマネージャーは更に、付加的なアクションを実行するように動作可能であり、前記付加的なアクションは、
    前記少なくとも1つの他のオブジェクトのうちの前記1つと前記オブジェクトを1つに結び付ける関連付けを作成するステップと、
    変更された前記論理的コピーを前記第2の記憶位置に書き込む要求の前記送信と共に、前記関連付けを書き込む要求を前記記憶装置コントローラーへ送信するステップと、
    を含む、請求項11に記載のシステム。
  13. 前記揮発性データ構造を書き込む要求、及び、前記記憶装置の前記揮発性メモリから前記不揮発性メモリへデータを掃き出すように前記記憶装置コントローラーに指示するフラッシュ要求を、前記記憶装置コントローラーへ送信するように動作可能なチェックポイントマネージャーを更に含む、請求項11に記載のシステム。
JP2012543128A 2009-12-11 2010-11-11 順序の依存関係を持たない整合性 Expired - Fee Related JP5628341B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/635,725 US8433865B2 (en) 2009-12-11 2009-12-11 Consistency without ordering dependency
US12/635,725 2009-12-11
PCT/US2010/056311 WO2011071656A2 (en) 2009-12-11 2010-11-11 Consistency without ordering dependency

Publications (3)

Publication Number Publication Date
JP2013513862A JP2013513862A (ja) 2013-04-22
JP2013513862A5 JP2013513862A5 (ja) 2014-02-13
JP5628341B2 true JP5628341B2 (ja) 2014-11-19

Family

ID=44144203

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012543128A Expired - Fee Related JP5628341B2 (ja) 2009-12-11 2010-11-11 順序の依存関係を持たない整合性

Country Status (9)

Country Link
US (3) US8433865B2 (ja)
EP (1) EP2510434B1 (ja)
JP (1) JP5628341B2 (ja)
KR (1) KR101690824B1 (ja)
CN (1) CN102667720B (ja)
AU (1) AU2010328591B2 (ja)
CA (1) CA2780003C (ja)
RU (1) RU2560786C2 (ja)
WO (1) WO2011071656A2 (ja)

Families Citing this family (11)

* 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
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US20150032982A1 (en) * 2013-07-26 2015-01-29 Fusion-Io, Inc. Systems and methods for storage consistency
US9715520B1 (en) * 2013-12-20 2017-07-25 Amazon Technologies, Inc. Validity map-based tracking of user data updates
US10489161B2 (en) 2014-03-26 2019-11-26 Hewlett Packard Enterprise Development Lp NVM object
US10585762B2 (en) * 2014-04-29 2020-03-10 Hewlett Packard Enterprise Development Lp Maintaining files in a retained file system
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
EP3436920A4 (en) * 2016-03-31 2019-12-18 INTEL Corporation TISSUE ELASTICITY SUPPORT FOR ATOMIC WRITING OF MANY STORAGE OPERATIONS ON REMOTE NODES
US10346284B1 (en) * 2018-01-11 2019-07-09 Microsoft Technology Licensing, Llc Feature usage prediction using shell application feature telemetry
US11068351B2 (en) * 2018-11-19 2021-07-20 International Business Machines Corporation Data consistency when switching from primary to backup data storage

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0394173A3 (en) 1989-04-17 1993-10-27 International Business Machines Corporation High concurrency manager of open files
US5371885A (en) 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
JPH0540682A (ja) * 1990-06-08 1993-02-19 Internatl Business Mach Corp <Ibm> アトミシテイを有する記憶装置の高可用性耐故障再配置
US5964835A (en) 1992-12-17 1999-10-12 Tandem Computers Incorporated Storage access validation to data messages using partial storage address data indexed entries containing permissible address range validation for message source
US5594863A (en) 1995-06-26 1997-01-14 Novell, Inc. Method and apparatus for network file recovery
CA2199675C (en) 1996-05-08 2002-03-26 John C. Goodwin, Iii System and method for managing electronic price label overlays
US6393540B1 (en) * 1998-06-30 2002-05-21 Emc Corporation Moving a logical object from a set of source locations to a set of destination locations using a single command
US6542909B1 (en) * 1998-06-30 2003-04-01 Emc Corporation System for determining mapping of logical objects in a computer system
US6883063B2 (en) * 1998-06-30 2005-04-19 Emc Corporation Method and apparatus for initializing logical objects in a data storage system
US6269431B1 (en) * 1998-08-13 2001-07-31 Emc Corporation Virtual storage and block level direct access of secondary storage for recovery of backup data
US6920537B2 (en) * 1998-12-31 2005-07-19 Emc Corporation Apparatus and methods for copying, backing up and restoring logical objects in a computer storage system by transferring blocks out of order or in parallel
US6629264B1 (en) * 2000-03-30 2003-09-30 Hewlett-Packard Development Company, L.P. Controller-based remote copy system with logical unit grouping
US6643672B1 (en) 2000-07-31 2003-11-04 Hewlett-Packard Development Company, Lp. Method and apparatus for asynchronous file writes in a distributed file system
US6925476B1 (en) 2000-08-17 2005-08-02 Fusionone, Inc. Updating application data including adding first change log to aggreagate change log comprising summary of changes
US6928555B1 (en) 2000-09-18 2005-08-09 Networks Associates Technology, Inc. Method and apparatus for minimizing file scanning by anti-virus programs
US6687805B1 (en) * 2000-10-30 2004-02-03 Hewlett-Packard Development Company, L.P. Method and system for logical-object-to-physical-location translation and physical separation of logical objects
US7730213B2 (en) * 2000-12-18 2010-06-01 Oracle America, Inc. Object-based storage device with improved reliability and fast crash recovery
US6643612B1 (en) 2001-06-28 2003-11-04 Atrica Ireland Limited Mechanism and protocol for per connection based service level agreement measurement
US7072915B2 (en) * 2002-01-22 2006-07-04 International Business Machines Corporation Copy method supplementing outboard data copy with previously instituted copy-on-write logical snapshot to create duplicate consistent with source data as of designated time
JP2003223350A (ja) * 2002-01-29 2003-08-08 Ricoh Co Ltd データベースシステム
US7334124B2 (en) 2002-07-22 2008-02-19 Vormetric, Inc. Logical access block processing protocol for transparent secure file storage
US7020746B2 (en) * 2003-01-28 2006-03-28 Microsoft Corporation Method and system for an atomically updated, central cache memory
US7322029B2 (en) 2003-05-08 2008-01-22 American Megatrends, Inc. Method and system for recovering program code in a computer system
US7440966B2 (en) 2004-02-12 2008-10-21 International Business Machines Corporation Method and apparatus for file system snapshot persistence
US8244675B2 (en) 2004-05-21 2012-08-14 Ca, Inc. Method and apparatus for updating a database using table staging and queued relocation and deletion
JP4104586B2 (ja) * 2004-09-30 2008-06-18 株式会社東芝 ファイル管理機能を備えたファイルシステム及びファイル管理方法
JP4956922B2 (ja) * 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
US7464124B2 (en) 2004-11-19 2008-12-09 International Business Machines Corporation Method for autonomic data caching and copying on a storage area network aware file system using copy services
US20060129745A1 (en) * 2004-12-11 2006-06-15 Gunther Thiel Process and appliance for data processing and computer program product
US7617259B1 (en) 2004-12-31 2009-11-10 Symantec Operating Corporation System and method for managing redundant storage consistency at a file system level
CN1936853B (zh) 2005-09-22 2010-05-05 康佳集团股份有限公司 嵌入式设备的数据掉电保护和修复方法
ES2582364T3 (es) * 2005-12-19 2016-09-12 Commvault Systems, Inc. Sistemas y métodos para realizar replicación de datos
US7620721B2 (en) 2006-02-28 2009-11-17 Microsoft Corporation Pre-existing content replication
US7552148B2 (en) 2006-02-28 2009-06-23 Microsoft Corporation Shutdown recovery
US7730351B2 (en) 2006-05-15 2010-06-01 Oracle America, Inc. Per file dirty region logging
JP2007316944A (ja) * 2006-05-25 2007-12-06 Toshiba Corp データ処理装置、データ処理方法、およびデータ処理プログラム
RU57929U1 (ru) * 2006-07-10 2006-10-27 Сергей Васильевич Городилов Устройство для защищенного хранения информации
US20080077590A1 (en) 2006-09-22 2008-03-27 Honeywell International Inc. Efficient journaling and recovery mechanism for embedded flash file systems
DE602006019010D1 (de) 2006-10-20 2011-01-27 Fujitsu Ltd Speicheranordnung und auffrisch-justierverfahren
US7840752B2 (en) 2006-10-30 2010-11-23 Microsoft Corporation Dynamic database memory management policies
CN101681282A (zh) * 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
JP2008293218A (ja) 2007-05-23 2008-12-04 Nec Corp ファイル管理システム、ファイル管理方法、ファイル管理プログラム
CN101051324A (zh) 2007-05-23 2007-10-10 中兴通讯股份有限公司 一种内存数据库的事务管理方法
US20090012932A1 (en) * 2007-07-03 2009-01-08 Xeround Systems Ltd. Method and System For Data Storage And Management
US8732386B2 (en) * 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
JP5386111B2 (ja) * 2008-05-22 2014-01-15 株式会社日立ソリューションズ ファイルシステムの記録方法
US8433865B2 (en) * 2009-12-11 2013-04-30 Microsoft Corporation Consistency without ordering dependency
US8224780B2 (en) * 2010-06-15 2012-07-17 Microsoft Corporation Checkpoints for a file system
US8793440B2 (en) 2010-06-17 2014-07-29 Microsoft Corporation Error detection for files
US9411634B2 (en) * 2010-06-21 2016-08-09 Microsoft Technology Licensing, Llc Action framework in software transactional memory

Also Published As

Publication number Publication date
WO2011071656A3 (en) 2011-09-09
RU2560786C2 (ru) 2015-08-20
KR101690824B1 (ko) 2017-01-09
CA2780003A1 (en) 2011-06-16
RU2012129205A (ru) 2014-01-27
AU2010328591A1 (en) 2012-05-31
EP2510434B1 (en) 2019-09-25
WO2011071656A2 (en) 2011-06-16
US20130311733A1 (en) 2013-11-21
US8433865B2 (en) 2013-04-30
KR20120104302A (ko) 2012-09-20
CN102667720A (zh) 2012-09-12
US20150199143A1 (en) 2015-07-16
CA2780003C (en) 2017-10-03
JP2013513862A (ja) 2013-04-22
AU2010328591B2 (en) 2014-04-10
EP2510434A2 (en) 2012-10-17
US20110145527A1 (en) 2011-06-16
EP2510434A4 (en) 2017-01-25
US8996829B2 (en) 2015-03-31
CN102667720B (zh) 2016-06-01
US9430160B2 (en) 2016-08-30

Similar Documents

Publication Publication Date Title
JP5628341B2 (ja) 順序の依存関係を持たない整合性
EP2583202B1 (en) Checkpoints for a file system
US8984233B2 (en) Error detection for files
US20160350353A1 (en) Elimination of log file synchronization delay at transaction commit time
US7617260B2 (en) Data set version counting in a mixed local storage and remote storage environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140502

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140801

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141001

R150 Certificate of patent or registration of utility model

Ref document number: 5628341

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

LAPS Cancellation because of no payment of annual fees