JP2012508932A - キャッシュデータおよびメタデータを管理すること - Google Patents

キャッシュデータおよびメタデータを管理すること Download PDF

Info

Publication number
JP2012508932A
JP2012508932A JP2011536387A JP2011536387A JP2012508932A JP 2012508932 A JP2012508932 A JP 2012508932A JP 2011536387 A JP2011536387 A JP 2011536387A JP 2011536387 A JP2011536387 A JP 2011536387A JP 2012508932 A JP2012508932 A JP 2012508932A
Authority
JP
Japan
Prior art keywords
cache
stored
metadata
memory
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2011536387A
Other languages
English (en)
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 JP2012508932A publication Critical patent/JP2012508932A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

記憶媒体上のアドレスをキャッシュデバイス上の対応するアドレスにマップするキャッシュメタデータを管理するための技術が提供される。キャッシュメタデータは、階層データ構造で格納されることが可能である。その階層のレベルのサブセットだけが、メモリーにロードされて、これにより、キャッシュメタデータのメモリー「フットプリント」が低減され、起動中のキャッシュメタデータの復元が速められることが可能である。キャッシュメタデータを使用してストレージからデータを読み取る要求が処理されて、キャッシュの中にそのデータが格納されているアドレスが識別されると、その識別されたアドレスが、メモリーの中に格納されることが可能である。シャットダウンされる際、階層レベルのサブセットおよび/または識別されたアドレスだけが転送されてシャットダウンが速められることが可能である。
【選択図】図3

Description

本発明は、リムーバブルなNVRAM(不揮発性ランダムアクセスメモリー)およびリムーバブルでないNVRAMなどの不揮発性メモリーデバイスを使用するための技術に関する。
一部の従来のオペレーティングシステムは、オペレーティングシステムおよび/またはアプリケーションのパフォーマンスを向上させるように、より低速のストレージデバイス(ディスク記憶媒体、またはネットワークを介してアクセス可能な1つまたは複数のストレージデバイスなどの)に関して、不揮発性メモリーデバイス(すなわち、フラッシュメモリーUSBドライブなどの、コンピューターに補助ストレージおよび/またはメモリーを提供するように機能可能な周辺デバイス)をブロックレベルまたはファイルレベルのキャッシュとして使用する能力を提供する。これに関して、不揮発性メモリーデバイス(以降、簡明のため「キャッシュデバイス」と呼ぶ)からのまたは不揮発性メモリーデバイスへの読み取りおよび書き込み動作は、より低速のストレージデバイスからのまたはより低速のストレージデバイスへの読み取りおよび書き込み動作と比べて、大幅により高速に実行され得るため、キャッシュデバイスを使用して、そのようなより低速のデバイス上に格納されたデータをキャッシュすることは、オペレーティングシステムおよび/またはアプリケーションのI/O(入出力)動作の速度を大幅に向上させる機会を提供する。この目的で、ワシントン州、レッドモンドのマイクロソフトコーポレーションによって製造されるMicrosoft Windows Vistaオペレーティングシステムは、ユーザーが、キャッシュデバイスを使用して、より低速のストレージデバイス(以降、便宜上、「ディスクストレージ」または「ディスク」と呼ばれるが、これらの用語は、ネットワークを介してアクセス可能なストレージデバイスを含め、キャッシュデバイスと比べて、I/Oが通常、より低速に実行される任意のストレージ機構(複数可)および/またはストレージデバイス(複数可)を一般的に指すことを理解されたい。)の中にも存在するデータをキャッシュすることを許す、レディブースト(ReadyBoost)として知られるフィーチャーを含む。
キャッシュデバイスを使用して、ディスク上に格納されたデータをキャッシュすることは、一部の実施形態においてオペレーティングシステムのI/Oスタックにおいて実施されるドライバーである、キャッシュマネージャー構成要素を使用して達せられることが可能である。図1A〜図1Bは、キャッシュマネージャー構成要素100がキャッシュデバイス110にデータをキャッシュすることを管理する、例示的な高レベルプロセス10A〜10Bを示す。キャッシュデバイス110は、有線および/または無線の通信インフラストラクチャーおよび通信プロトコル(複数可)を使用して、キャッシュマネージャー100が存在するコンピューター(図示せず)に結合されることが可能である。例えば、キャッシュデバイス110は、コンピューターから取り外し可能である(例えば、フラッシュメモリーUSBドライブを備える)、取り外し可能でないこと、および/または1つもしくは複数の有線および/または無線ネットワークを介してコンピューターによってアクセス可能であることが可能である。
プロセス10A(図1A)の開始時に、データがディスクストレージ(すなわち、キャッシュされるボリューム120)上のアドレスXに書き込まれるべきことを指定する書き込み要求が、キャッシュマネージャー100によって受け取られる。キャッシュマネージャー100は、動作101でキャッシュされるボリューム120上のアドレスXにデータが書き込まれるようにし、さらに動作102でキャッシュデバイス110上のアドレスYにもデータが書き込まれるようにすることによって、この要求を処理する。プロセス10B(図1B)は、その後、キャッシュされるボリューム120上のアドレスXに格納されたデータが読み取られるべきことを指定する読み取り要求が受け取られた際に実行される動作を含む。キャッシュマネージャー100は、データがアドレスYでキャッシュデバイス110上にキャッシュされていることを特定し、動作103でアドレスYにおけるデータが読み取られるようにする。次に動作104で、このデータが、読み取り要求を満足させるようにキャッシュデバイスから供給される。
キャッシュマネージャーは、キャッシュアドレス(例えば、アドレスY)に対応するディスクアドレス(例えば、アドレスX)のマッピングをメタデータの中に保持し、この「キャッシュメタデータ」は、通常、キャッシュデバイスから読み取りを行う際、またはキャッシュデバイスに書き込みを行う際に使用される。通常、キャッシュメタデータは、メモリーの中に保持され、I/O要求が受け取られると、キャッシュマネージャーによってアクセスされる。このため、ディスクオフセットXに向けられた読み取り要求がキャッシュマネージャーによって受け取られると、キャッシュマネージャーは、このキャッシュメタデータを使用して、データがキャッシュオフセットYにも格納されていることを特定し、データが、ディスクオフセットXからではなく、キャッシュオフセットYから読み取られるようにすることによって、その要求を満足させる。ディスクオフセットXに向けられた書き込み要求がキャッシュマネージャーによって受け取られると、キャッシュマネージャーは、このキャッシュメタデータを使用して、そのディスクアドレスにおけるデータがキャッシュの中にも格納されているかどうかを判定する。格納されている場合(例えば、そのデータがキャッシュアドレスYに格納されている場合)、キャッシュマネージャーは、そのデータがキャッシュにおける適切なアドレスに書き込まれるようにする、またはそのアドレスにおけるキャッシュ内容を強制排除することができる。格納されていない場合、キャッシュマネージャーは、そのデータがキャッシュに書き込まれるようにすることができ、さらにディスクオフセットXに対する将来の読み取りが、代わりにキャッシュ上に格納されたデータから行われることが可能であるように、キャッシュメタデータを更新することができる。
従来のオペレーティングシステムは、相対的に限られた記憶容量を有するキャッシュデバイスをサポートすることができる。例えば、Windows Vistaオペレーティングシステムのレディブーストのフィーチャーは、4ギガバイト記憶容量までを有するキャッシュデバイスをサポートする。(Windows Vistaがリリースされた時点では、キャッシュデバイスの最大記憶容量は、約2ギガバイトであった。)キャッシュデバイスの記憶容量は、近年、急速に増大しており、一部のキャッシュデバイスは、圧縮された場合、32ギガバイト相当のデータを格納することが可能な、16ギガバイトまでの記憶容量を提供する。
相対的により大きい記憶容量を有するキャッシュデバイスは、オペレーティングシステムおよびアプリケーションによって実行されるI/O動作の速度を向上させる大きな機会を提供することを本出願人らは認識している。また、従来のオペレーティングシステムが、比較的限られた記憶容量しか有さないキャッシュデバイスをサポートする1つの理由は、いくつかのタイプの電力遷移(例えば、スタンバイ、ハイバネーション(もしくは非Microsoft Windowsオペレーティングシステムによって使用される均等のモード)、または再起動)が行われる際、キャッシュ内容が再ポピュレートされなければならないことであることも、本出願人らは認識している。比較的より大きい記憶容量を有するキャッシュデバイスでは、キャッシュ内容を再ポピュレートすることは、相当な時間がかかり、相当な処理リソースを消費する可能性がある。例として、16ギガバイトまでの圧縮されたデータを保持することが可能な8ギガバイトフラッシュメモリーデバイスは、毎秒約10メガバイトでバックグラウンドI/Oを使用してディスクから再ポピュレートするのに30分までかかる可能性がある。このことは、キャッシュデバイスを用いることによって得られている可能性があるパフォーマンス上のいかなる利益も事実上、打ち消すだけでなく、実際、システム動作を大幅に遅くする可能性がある。
キャッシュ内容が、或る電力遷移をまたいで再ポピュレートされなければならない1つの理由は、キャッシュデバイスおよび/またはディスクの内容が電力遷移中に変更されている可能性があるため、コンピューターが再起動された際にキャッシュ内容がディスクストレージの内容を正確に表していることを信頼できるように確実にする方法が、全く存在しないことである。例えば、第1のコンピューターがシャットダウンされると、ハッカーがリムーバブルキャッシュデバイスを取り外し、このキャッシュデバイスを別のコンピューターに接続し、キャッシュ内容を変更して、このデバイスがその後、第1のコンピューターに再接続された場合、誤ったデータ(以降、「真正でない」データと呼ぶ)が、I/O要求を満足させるようにキャッシュデバイスから供給され得るようにすることも可能である。ハッカーの悪意ある行為に加えて、キャッシュ内容は、コンピューターまたはキャッシュデバイスのハードウェア障害に起因して、電力遷移中に壊れることもあり得る。
キャッシュ内容は、ディスク上のデータが遷移中に更新されたために、電力遷移中に「陳腐」となり、それによってコンピューターが再起動された際、キャッシュ内容がディスク内容をもはや正確に表していない可能性があるようになることもあり得る。例えば、シャットダウンの後、ユーザーが、キャッシュデバイスを認識しない別のオペレーティングシステムにディスクをブートして、キャッシュデバイス上にキャッシュされたディスク上に格納されたデータを変更し、それによってコンピューターが再起動された際、キャッシュ内容がディスク上に格納された内容をもはや反映していないようになることも可能である。別の例において、シャットダウン中のコンピューター上のいくつかの動作が、キャッシュデバイスがオペレーティングシステムによってアクセス可能でないようにされた後に(例えば、キャッシュデバイスがオフにされた後に)行われて、それによって、この時点の後にオペレーティングシステムによって実行されたディスクへの任意の書き込みが、キャッシュ内容によって正確に反映されない可能性があるようになることも可能である。いくつもの任意のイベントが、電力遷移をまたいでキャッシュ内容が陳腐となることを生じさせる可能性がある。
本発明の実施形態は、以上、およびその他の懸念に対処して、キャッシュ内容が、電力遷移をまたいでディスク上に格納されたデータを正確に反映するものとして信頼され得るようにするための技術を提供する。例えば、本発明の一部の実施形態は、電力遷移をまたいでキャッシュ内容が真正のままであることを検証するための技術を提供する。さらに、一部の実施形態は、キャッシュ内容が電力遷移をまたいで陳腐とならないことを信頼できるように確実にするための技術を提供する。さらに、一部の実施形態は、電力遷移が生じる際にキャッシュメタデータが効率的にアクセスされ得るとともに、信頼できるように保存され、復元され得ることを確実にする、電力遷移をまたいでキャッシュメタデータを管理するとともに、通常の(「定常状態」)動作中もキャッシュメタデータを管理するための技術を提供する。
キャッシュ内容が、電力遷移をまたいでディスク上に格納されたデータを正確に反映しているものとして信頼され得ることを確実にする技術を提供することにより、本発明の一部の実施形態は、相当な記憶容量を有するキャッシュデバイスが、オペレーティングシステムおよび/またはアプリケーションによって実行されるI/O動作を大幅にスピードアップするように使用されることを可能にすることができる。I/O動作の増加した速度は、コンピューターの通常の「定常状態」動作を速めることが可能であるだけでなく、ブート中に実行される動作も大幅にスピードアップして、それによってコンピューターがはるかに迅速に使用される準備ができるようにすることも可能である。
本発明の一部の実施形態において、メモリーを備え、記憶媒体およびキャッシュデバイスが結合されており、その記憶媒体は、複数のデータ項目をそれぞれ、それぞれのアドレスに格納し、複数のデータ項目のそれぞれは、キャッシュデバイス上の対応するアドレスにも格納され、コンピューターによってアクセス可能なキャッシュメタデータが、その記憶媒体上のアドレスと各データ項目が格納されるキャッシュデバイス上の対応するアドレスの間のマッピングを提供する、コンピューターを動作させるための方法が提供される。この方法は、(A)複数の階層レベルを備える階層データ構造でキャッシュメタデータを格納する動作と、(B)この複数の階層レベルのサブセットだけをメモリーにロードする動作とを備える。
他の実施形態は、メモリーを備え、ディスクストレージおよびキャッシュデバイスが結合されており、そのディスクストレージは、複数のデータ項目をそれぞれ、それぞれのアドレスに格納し、複数のデータ項目のそれぞれは、キャッシュデバイス上の対応するアドレスにも格納され、コンピューターによってアクセス可能なキャッシュメタデータが、そのディスクストレージ上のアドレスと各データ項目が格納されたキャッシュデバイス上の対応するアドレスの間のマッピングを提供する、コンピューターによって実行されると、(A)キャッシュデバイスの中に、複数の階層レベルを備える階層データ構造でキャッシュメタデータを格納する動作と、(B)コンピューターの再起動を開始する動作と、(C)コンピューターの再起動が開始されると、複数の階層レベルのサブセットだけをメモリーにロードする動作と、(D)記憶媒体上のアドレスに格納されたデータ項目を読み取る要求を受け取る動作と、(E)キャッシュメタデータの第1の部分にアクセスして、キャッシュデバイス上でデータ項目が格納された対応するアドレスを識別する動作と、(F)キャッシュメタデータの第1の部分をメモリーの中に格納する動作とを備える方法を実行する、符号化された命令を有する少なくとも1つのコンピューター可読記憶媒体を提供する。
他の実施形態は、メモリーと、それぞれのアドレスに複数のデータ項目を格納する記憶媒体と、対応するアドレスにこの複数のデータ項目をやはり格納し、記憶媒体上のアドレスと各データ項目が格納されたキャッシュデバイス上の対応するアドレスの間のマッピングを提供する、複数の階層レベルを備える階層データ構造で格納されるキャッシュメタデータを格納するキャッシュデバイスと、コンピューターの再起動が開始されると、複数の階層レベルのサブセットだけをメモリーにロードし、キャッシュメタデータを使用して、キャッシュデバイスの中でデータ項目が格納された対応するアドレスを識別すること、および識別された対応するアドレスをメモリーの中に格納することによって、記憶媒体上のそれぞれのアドレスに格納されたデータ項目を読み取る要求を処理し、複数の階層レベルのサブセット、および識別された対応するアドレスをメモリーからキャッシュデバイスに転送することによって、コンピューターをシャットダウンするコマンドを処理するようにプログラミングされた少なくとも1つのプロセッサーとを備えるコンピューターシステムを提供する。
図1Aは、従来技術によるキャッシュデバイスに書き込むための技術を示すブロック図である。図1Bは、従来技術によるキャッシュデバイスから読み取るための技術を示すブロック図である。 本発明の一部の実施形態によるキャッシュデバイスに書き込むための例示的な技術を示す図である。 本発明の一部の実施形態によるキャッシュデバイスから読み取るための例示的な技術を示す図である。 本発明の一部の実施形態による、キャッシュデータが、電力遷移の後にディスク上に格納されたデータを正確に反映することを確実にするための例示的な技術を示すブロック図である。 本発明の一部の実施形態によるキャッシュメタデータを格納するための例示的な技術を示すブロック図である。 本発明の一部の実施形態によるキャッシュメタデータに関する例示的な格納動作を示すブロック図である。 本発明の一部の実施形態によるキャッシュデバイスを使用して読み取り要求に応えるための例示的な技術を示す流れ図である。 本発明の態様を実施するのに使用され得る例示的なコンピューターを示すブロック図である。 本発明の態様を実施する命令が記録され得る例示的なコンピューターメモリーを示すブロック図である。
本発明の一部の実施形態は、キャッシュ内容が、電力遷移をまたいでディスクストレージの内容を正確に反映することを確実にするための技術を提供する。例えば、一部の実施形態は、キャッシュ内容が、電力遷移をまたいで真正のままであり、かつ/または陳腐になっていないことを確実にする能力を提供する。さらに、一部の実施形態は、キャッシュメタデータを管理して、メタデータが電力遷移中に改ざんされていないことを確実にするための技術を提供する。さらに、一部の実施形態は、電力遷移と通常の動作の両方が実行されることが可能な効率を向上させることができるキャッシュメタデータを格納するための能力を提供する。以下のセクションは、これらの実施形態を詳細に説明する。
I.キャッシュデータ真正性を検証すること
コンピューターが電力遷移を経験する(例えば、スタンバイモードまたはハイバネーションモードに入れられる、または再起動される)際、キャッシュデバイスがコンピューターから切断されることが可能であり、デバイスの内容が変更される(例えば、悪意のあるハッカーによって)可能性がある。例えば、コンピューターがスタンバイモードまたはハイバネーションモードに入れられる際、フラッシュメモリードライブなどのリムーバブルキャッシュデバイスがコンピューターから取り外される可能性があり、デバイスの内容が変更される可能性がある。内部NVRAMデバイスなどのリムーバブルでないデバイスさえ、オペレーティングシステムが再起動される(すなわち、リロードされ、それにより、コンピューターを再起動させる)際、切断される可能性があり、デバイスの内容が変更される可能性がある。その結果、キャッシュデバイスは、コンピューターに再接続されたときに、ユーザーが考えるのとは異なる情報を格納する可能性がある(すなわち、キャッシュの中に格納されたデータは、「真正」でない可能性がある)。I/O(入出力)要求を満足させるのに真正でないデータがキャッシュから供給された場合、コンピューターの動作は、悪影響を受ける可能性がある。
本発明の一部の実施形態は、電力遷移中にキャッシュ内容に行われた変更を検出して、I/O要求がキャッシュからの真正でないデータを使用して満足させられないことを確実にするための技術を提供する。一部の実施形態において、キャッシュ内容を真正でなくする電力遷移中にキャッシュ内容に行われた任意の「オフライン変更」を検出する能力が提供される。
一部の実施形態は、データの少なくとも一部分の表現を使用して、この能力を提供する。例えば、データの少なくとも一部分および/または他の情報から或る表現が、所定の仕方で計算される、または導き出されることが可能である。この表現は、データがキャッシュに初めて書き込まれる際に生成され、1つまたは複数のロケーションに格納されることが可能である。例えば、この表現は、データと一緒にキャッシュに、または他の何らかのロケーション(複数可)に書き込まれることが可能である。キャッシュに格納される場合、この表現は、この表現をデータに関連付ける仕方で格納されることが可能である(例えば、この表現は、データが書き込まれるキャッシュアドレスに隣接するキャッシュアドレスに書き込まれる、データに関連付けられたキャッシュメタデータに書き込まれる、かつ/または他の何らかの仕方で関連付けられることが可能である)。データが、後にキャッシュから読み取られる際、この表現も取り出されることが可能である。この表現は、所定の仕方で再生成されることが可能であり、再生成された表現が、取り出された表現と比較されることが可能である。これらの表現が合致した場合、キャッシュから取り出されたデータは、真正であると判定され、読み取り要求を満足させるように供給される。合致しなかった場合、読み取り要求を満足させるのにディスクストレージから代わりにデータを読み取る要求が発行され、キャッシュ上に格納された真正でないデータが強制排除される(例えば、消去される)ことが可能である。
図2A〜図2Bは、このプロセスをより詳細に示す。詳細には、図2Aに示されるプロセス20Aは、データがキャッシュに書き込まれる際に実行される動作を含み、図2Bに示されるプロセス20Bは、データがキャッシュから読み取られる際に、後に実行される動作を含む。プロセス20A〜20Bはそれぞれ、キャッシュされるボリューム120(各図の左側)、キャッシュマネージャー100(中央)、およびキャッシュデバイス110(右側)によって実行される動作を含む。
プロセス20A(図2A)の開始時に、動作205で、ディスクストレージ上のアドレスXに向けられた書き込み要求がキャッシュマネージャー100によって受け取られる。動作210で、キャッシュマネージャー100が、キャッシュメタデータ(図示せず)を使用して、データがやはり書き込まれなければならないキャッシュデバイス110上のアドレスYを特定する。また、キャッシュマネージャーは、データの少なくとも一部分の表現を生成することも行う。
本発明の実施形態は、任意の適切な技術を使用して、この表現を生成することができる。一部の実施形態において、1つまたは複数の暗号認証技術が、この表現を生成するのに使用されることが可能である。例えば、一部の実施形態において、この表現は、データと、秘密鍵のセットと、データ項目ごとのシーケンス番号とから生成されたMAC(メッセージ認証コード)を備えることが可能である。しかし、本発明は、この表現を生成するための任意の適切な技術が使用されることが可能であるので、そのような実施形態に限定されない。例えば、暗号認証技術は、使用されなくてもよい。例として、強いハッシュコードおよび/またはCRC(巡回冗長性コード)が、代替として、データを表現するのに使用されることも可能であり、キャッシュに格納された個々のデータ項目から、またはデータ項目の1つまたは複数のグループに関して生成されることが可能である。これに関して、データ真正性を検証するという目標が、ハードウェア破損のインスタンスを単に検出することであった(すなわち、データのハッキングは関心事ではなかった)とすると、CRCを使用することで十分である可能性があり、各データ項目に関してMACを生成することと比べて、より少ない処理リソースしか消費しない可能性があることが、本出願人らによって認識されている。しかし、目標が、ハッカーまたは悪意のある主体がキャッシュ内容を変更するのを防止することであるとすると、暗号ソリューションが好ましい可能性があり、したがって、MACなどの表現が使用されることが可能である。本発明は、任意の適切な技術が使用されることが可能であるので、いずれの特定の実施形態にも限定されない。
動作215で、キャッシュマネージャー100が、データをキャッシュアドレスYに書き込む要求をキャッシュデバイス110に発行する。また、キャッシュマネージャーは、表現を書き込む要求もキャッシュデバイス110に発行する。例えば、キャッシュマネージャー100は、表現が、キャッシュアドレスYに隣接する1つまたは複数のロケーションに書き込まれるべきこと、またはデータに関するキャッシュメタデータの中に、かつ/もしくは他の任意の技術を使用して格納されるべきことを指定することができる。前述したとおり、本発明は、いずれの特定のロケーションに表現を書き込むことにも限定されない(例えば、表現は、キャッシュデバイス110に書き込まれなくてもよい)。キャッシュに書き込まれる場合、表現は、所望される任意の仕方でデータに関連付けられることが可能である。
動作220で、キャッシュデバイス110が、その要求を受け取り、動作225で、データおよび表現を書き込むことによって、その要求を処理する。
動作230で、キャッシュマネージャー100は、データをディスクアドレスXに書き込む対応する要求を、キャッシュされるボリューム120に発行する。キャッシュされるボリューム120は、動作235で、この要求を受け取り、動作240で、データをアドレスXに書き込むことによって、この要求を処理する。図2Aには、動作215〜225のキャッシュへの書き込みの後に実行されるものとして示されるものの、本発明は、いずれの特定の実施形態にも限定されないので、動作230〜240は、動作215〜225と並行に、あるいは他の任意の適切な時点(複数可)で実行されてもよい。その後、プロセス20Aは完了する。
プロセス20B(図2B)は、キャッシュに格納されたデータを読み取るように実行される動作を含む。動作245で、キャッシュマネージャー100が、キャッシュされるボリューム120上のアドレスXに格納されたデータを読み取る要求を受け取る。動作250で、キャッシュメタデータ(図示せず)を使用して、キャッシュマネージャー100は、そのデータがキャッシュデバイス110上のアドレスYに格納されていることを特定する。動作255で、キャッシュマネージャー100は、アドレスYに格納されたデータと、関連する表現をともに取り出す読み取り要求をキャッシュデバイス110に発行する。動作260で、この要求がキャッシュデバイス110によって受け取られ、また動作265で処理され、すると、キャッシュデバイス110は、結果をキャッシュマネージャー100に戻す。
動作270で、キャッシュマネージャー100が、キャッシュから取り出されたデータが検証され得るかどうかを判定する。一部の実施形態において、このことは、データの表現を再生成すること、および再生成された表現を、動作215で最初に生成された表現と比較することによって行われる。例えば、動作270が、データに関するMACまたはCRCを再生成すること、およびそのMACまたはCRCを、動作265でキャッシュから取り出された表現と比較することを含むことが可能である。
動作270で、表現が検証され得ると判定された場合、プロセスは、動作275に進み、キャッシュデバイス110から取り出されたデータが、読み取り要求を満足させるように供給され、その後、プロセス20Bは、完了する。動作270で、表現が検証され得ないと判定された場合、プロセスは、動作280に進み、キャッシュマネージャー100が、アドレスYに格納されたデータを強制排除する(例えば、消去する、またはそれ以外でアクセスできなくする)要求をキャッシュデバイス110に発行する。次に動作285で、キャッシュマネージャー100は、ディスク上のアドレスXからデータを読み取る要求をキャッシュされるボリューム120に発行する。この要求は、動作290で受け取られ、動作295で処理され、処理されると、データがキャッシュマネージャー100に戻される。次に動作299で、アドレスXから読み取られたデータが、読み取り要求を満足させるように供給される。その後、プロセス20Bは、完了する。
データ真正性を検証するための暗号ソリューションが使用される場合、表現を生成するのに使用される鍵(複数可)は、電力遷移が続いている間にキャッシュデバイス以外のロケーションに書き込まれて、ハッカーがそれらの鍵へのアクセスを得て、変更されたデータ項目に関する表現を再生成するのを防止することが可能である。例えば、一部の実施形態において、鍵は、許可のないアクセスを防止するようにディスクストレージの中に格納されることが可能である(例えば、コンピューターがシャットダウンされる際)。しかし、鍵は格納されなくてもよく、さらに、格納される場合、任意の適切なロケーションに存在することが可能であるので、本発明は、そのような実施形態に限定されない。例えば、格納された鍵は、システムブート中に利用可能であるオペレーティングシステムによって提供される任意の構成ストア(例えば、Windows(登録商標)におけるシステムレジストリー)の中に入れられてもよく、あるいは鍵格納が全く必要ないように、何らかのユーザー入力(例えば、パスワード)に基づいて再生成されてもよい。
キャッシュデバイス上に格納されたデータ項目の真正性を検証するための前述した実施形態は、単に例に過ぎず、真正性は、任意の適切な技術を使用して検証されることが可能であることを認識されたい。例えば、データ項目真正性は、データ項目が読み取られる際に後に再生成される、データ項目が書き込まれる際のデータ項目の少なくとも一部分の表現を生成することによって検証されなくてもよい。キャッシュから読み取られたデータ項目が真正であり、キャッシュに前に書き込まれたデータ項目と合致することを信頼できるように確実にする任意の適切な技術が、使用されることが可能である。本発明は、いずれの特定の実施形態にも限定されない。
II.キャッシュデータ陳腐性を防止すること
前述したとおり、従来のオペレーティングシステムは、電力遷移中にディスク上に格納されたデータ項目に対して書き込み動作が実行されて、このことがキャッシュ内容を陳腐にする際、そのことを検出することができない。本発明の一部の実施形態は、これらの「オフライン書き込み」が行われた場合、そのことを検出して、キャッシュ内容が、電力遷移が生じた後にディスク上の格納されているデータを正確に反映することを確実にするための機構を提供する。
一部のオペレーティングシステム(例えば、マイクロソフトコーポレーションによって提供されるWindowsファミリーのオペレーティングシステム)では、いくつかの電力遷移(例えば、スタンバイモードおよびハイバネーションモード)のセマンティクスは、リムーバブルでないストレージデバイス(例えば、ディスクストレージ)上のデータが、電力遷移中に変更され得ないようになっている。このため、そのようなリムーバブルでない媒体上のデータに対応するキャッシュ内容は、一般に、陳腐にならない。しかし、コンピューターがシャットダウンされると、ディスク上のデータが変更されることを可能にするいくつものことが起こり得る。例えば、ユーザーが、そのディスクをそのコンピューター上の別のオペレーティングシステムにブートする、またはそのディスクを別のコンピューターに接続し、ディスク上に格納されたデータを変更することが可能である。さらに、前述したとおり、多くの従来のオペレーティングシステムのシャットダウンの機構は、シャットダウン中の何らかの時点で、キャッシュデバイスがオフにされ、オペレーティングシステムによってもはやアクセス可能でないが、オペレーティングシステムは、ディスクにアクセスし続けることが可能であるようになっている。このため、オペレーティングシステムは、キャッシュデバイス上にキャッシュされたディスク上のデータ項目を更新する可能性がある。キャッシュデバイスは、オフにされているため、オペレーティングシステムは、これらのキャッシュ内容も更新する方法を全く有さず、したがって、これらのキャッシュ内容は陳腐になる。
これら、およびその他の出来事に対処するのに、本発明の一部の実施形態は、シャットダウンが開始された後のディスク上に格納されたデータに対する変更を検出して、そのような変更によって陳腐になるキャッシュ内容が更新される、キャッシュから強制排除される、またはそれ以外の取り扱いをされることが可能であるようにするための技術を提供する。
キャッシュデバイスの電源が遮断された後に行われるシャットダウン動作中にディスクストレージに対して実行される書き込みを検出するのに、本発明の一部の実施形態は、書き込みレコーダー構成要素を使用する。書き込みレコーダー構成要素は、例えば、オペレーティングシステムのI/Oパスにおけるドライバーとして実施されることが可能であるが、本発明は、そのような実施形態に限定されない。例えば、書き込みレコーダー構成要素は、ハードウェアベースであってもよい。例として、ディスクストレージハードウェアが、或る期間中に行われた変更のセットを識別する、または或る期間中に変更が行われたかどうかを識別する能力をもたらす1つまたは複数のインタフェースを提供することも可能である。例えば、ディスクストレージハードウェアは、少なくともいくつかの記憶されたデータ項目が更新されていることを推測するのに使用され得るスピンアップ/パワーアップ/ブートカウンタを提供することが可能であり、少なくともいくつかのデータ項目が更新されている場合、ディスク上に記憶されたそのデータに対応するキャッシュ内容が強制排除されることが可能である(このことは、キャッシュデバイスを使用することが依然として相当な利益をもたらすように、頻繁に生じるべきではない)。本発明は、いずれの特定の実施形態にも限定されない。
一部の実施形態において、書き込みレコーダー構成要素は、シャットダウンが開始されると、活性になり、シャットダウンが完了するまで、ディスクストレージに対して実行されるすべての書き込みの記録をとるように構成される。その結果、コンピューターが後に再起動されると、これらの書き込みがキャッシュ内容に適用されることが可能である。例えば、コンピューターが再起動され、ディスクボリュームがオンラインになると、次に、キャッシュマネージャーが起動されることが可能であり、ディスクへの書き込みの記録をとることを始めることが可能である。キャッシュマネージャーは、書き込みレコーダー構成要素に照会して、キャッシュデバイスの電源が遮断された後に行われたオフライン書き込みを特定し、これらの書き込みを、起動中にキャッシュマネージャーが記録をとった書き込みとマージし、マージされた書き込みセットをキャッシュ内容に適用することができる。キャッシュ内容に書き込みを適用することは、例えば、書き込みが命令されたディスク上のデータに対応するキャッシュ内容を更新すること(例えば、これらのキャッシュ内容に同一の書き込み動作を実行すること)、これらのキャッシュ内容を強制排除すること、以上2つの組合せ(例えば、いくつかのキャッシュ内容に書き込み動作を適用するとともに、他のキャッシュ内容を強制排除すること)、または他の何らかの動作(複数可)を実行することを含むことが可能である。オフライン書き込みがキャッシュ内容に適用された後、書き込みレコーダー構成要素は、シャットダウンされることが可能であり、キャッシュデバイスがI/O要求に応えることを始めることが可能である。
図3は、オフライン書き込みの記録をとり、これらの書き込みをキャッシュ内容に適用するための例示的なプロセス30を示す。詳細には、プロセス300は、コンピューターのシャットダウン中、および後の再起動中にキャッシュマネージャー100、書き込みレコーダー300、キャッシュデバイス110、およびキャッシュされるボリューム120によって実行される動作を含む。
コンピューターシャットダウン中に行われる動作305で、キャッシュマネージャー100が、書き込みレコーダー300を活性化し、書き込みレコーダーによって記録にとられるべき書き込み動作のセット(すなわち、生成)を識別する「存続性識別子」を書き込みレコーダー300に供給する。(存続性識別子の用法の例は、後段で詳細に説明される。)動作310で、キャッシュマネージャー100が、存続性識別子、ならびにメモリーの中に格納されたキャッシュメタデータをキャッシュデバイス110に書き込む。シャットダウンプロセスのこの時点で、キャッシュデバイス110がオフにされ、キャッシュマネージャー100によってアクセスできなくなる。
動作315で、書き込みレコーダー300が、動作305で書き込みレコーダー300に送られた存続性識別子をキャッシュされるボリューム120に書き込み、シャットダウン中にキャッシュされるボリューム120に対して実行される任意の書き込み動作の記録をとることを始める。例えば、書き込みレコーダー300は、書き込み動作が実行されるディスク上のアドレス、および/またはそれらのアドレスに書き込まれたデータを示すログファイル、または他の1つまたは複数のデータ構造を、キャッシュされるボリューム120上、または他の何らかのロケーション(複数可)に作成することが可能である。動作315の完了時に、コンピューターのシャットダウン動作が終了している。
その後、コンピューターが再起動される。ブートプロセスの一環として、キャッシュされるボリューム120がオンラインにされ、書き込みレコーダー300およびキャッシュマネージャー100が再起動される。次に、キャッシュマネージャー100が、キャッシュされるボリューム120に対して実行される書き込み動作の記録をとることを始めることが可能である。例えば、キャッシュマネージャー100が、ログファイルを作成し、このログファイルをキャッシュデバイス110上、キャッシュされるボリューム120上、および/またはコンピューターのメモリー(図3に示さず)上に格納することが可能である。動作320で、書き込みレコーダー300が、動作315でログ記録されたボリューム変更、ならびに動作315でキャッシュされるボリューム120に書き込まれた存続性識別子を読み取る。次に動作325で、これらのボリューム変更および存続性識別子が、キャッシュマネージャー100に送られる。
書き込みレコーダー300は、キャッシュデバイス110がオフにされた後、ディスクに対するすべての書き込みの記録をとることはできない可能性があることを認識されたい。例えば、ハードウェアデータ破損、タイミングの悪い停電、および/またはログファイルに書き込む際の問題により、書き込みレコーダー300が、ディスクボリュームに対して実行されるすべてのオフライン書き込みの記録をとることはできなくなる可能性がある。そのような事例において、書き込みレコーダー300は、動作325で、ログが、実行されたすべてのオフライン書き込みの完全で、正確なレコードであると書き込みレコーダー300が確実に判定することができないことを、キャッシュマネージャー100に示すことが可能である。このことが生じた場合、キャッシュマネージャー100は、キャッシュ内容全体、またはキャッシュ内容の一部分(例えば、書き込みレコーダーがすべての書き込み動作の記録はとることができなかった特定のディスクボリュームに対応する)を、信頼できない可能性があるものとして強制排除することが可能である。図3の図示の残りの部分は、書き込みレコーダー300がすべてのオフライン書き込みの記録をとることができるものと想定する。
動作330で、キャッシュマネージャー100が、キャッシュデバイス110からメモリーの中にキャッシュメタデータおよび存続性識別子を読み込む。キャッシュマネージャー100は、存続性識別子が検証され得るかどうかを判定する(このことは、後段でさらに説明される)。検証され得ない場合、キャッシュマネージャー100は、キャッシュデバイス110の内容全体、または内容の一部分(例えば、存続性識別子が検証され得なかった特定のディスクボリュームに対応する)を強制排除することが可能である。存続性識別子が検証され得る場合、キャッシュマネージャー100は、コンピューターが再起動されて以来、ディスクストレージに対して実行された任意の書き込み動作を、書き込みレコーダー300によって記録にとられた任意の書き込み動作とマージする。例えば、1つまたは複数のログが、ディスク上の各アドレスに書き込まれたデータを示す場合、キャッシュマネージャー100は、各アドレスに対して実行された最新の更新を選択し、その更新をメモリーに書き込むことができる。
一部の実施形態において、書き込みレコーダー300は、コンピューターが再起動された後、書き込みを記録することを継続するように構成されることが可能であり、したがって、キャッシュマネージャー100は、その時点から後に実行された書き込みを記録して、それらの書き込みを、書き込みレコーダー300によって記録にとられた書き込みとマージしなくてもよい。代わりに、書き込みレコーダー300が、単に、すべての書き込みのレコードをキャッシュマネージャー100に供給することが可能である。
動作330で読み取られたキャッシュメタデータを使用して、次に動作335で、キャッシュマネージャー100は、キャッシュデバイス110の内容に書き込みのセットを適用する。前述したとおり、書き込みを適用することは、キャッシュ内容を強制排除すること、キャッシュ内容を更新すること、以上の両方を行うこと、または他の何らかの動作を実行すること(複数可)を含むことが可能である。例えば、動作315で書き込みレコーダー300によって記録にとられたオフライン書き込みが、対応するキャッシュ内容を強制排除することによって適用されることが可能である一方で、コンピューターが再起動して以来、キャッシュマネージャー100によって記録にとられた書き込みが、それらの書き込みを反映するように対応するキャッシュ内容を更新することによって適用されることが可能である。本発明は、いずれの特定の実施形態にも限定されないので、キャッシュ内容に書き込み動作を適用することは、任意の適切な仕方で実行されることが可能である。
動作335の完了時に、図3のプロセスは完了する。
シャットダウン中に行われない書き込み動作が同じく、あるいは代替として記録にとられることが可能であるので、本発明は、シャットダウンが開始された際に活性になるように構成された書き込みレコーダー構成要素を使用することに限定されないことを認識されたい。例えば、一部の実施形態において、キャッシュデバイスは、或る期間にわたってアクセスできなくなる可能性があり得る。例えば、キャッシュデバイスが1つまたは複数のネットワークを介してアクセスされる場合、接続性が失われる可能性があり、あるいはキャッシュデバイスがコンピューターから取り外し可能である場合、突然の(例えば、意図しない)取り外しが生じる可能性がある。その結果、一部の実施形態は、シャットダウン中に行われる書き込みだけでなく、ディスクに対して実行されるすべての書き込み(またはその一部分)の記録をとる書き込みレコーダーと、依然としてオンライン状態である間、キャッシュ「スナップショット」を定期的にキャプチャーするように構成されたキャッシュデバイスとを使用することが可能である。このため、キャッシュが、或る期間にわたってアクセスできなくなり、後に再接続された場合、最新のキャッシュスナップショットは、完全に再構築されなければならないのではなく、書き込みレコーダーによって記録にとられた書き込み動作を使用して更新されることが可能である。
図3の例示的なプロセス30は、シャットダウン中にオペレーティングシステムによって実行されるオフライン書き込みを検出することが可能であるが、シャットダウンが完了した後にディスクに対して実行されるオフライン書き込みを検出するのに他の方策が必要とされる可能性があることも認識されたい。そのような書き込みは、例えば、ユーザーが、シャットダウン後に別のオペレーティングシステムにディスクをブートした場合に、またはシャットダウン後にコンピューターからディスクを取り外して、ディスクを別のコンピューターに接続し、ディスク上に格納されたデータを変更した場合に行われる可能性がある。
シャットダウン後に行われる(例えば、別のオペレーティングシステムによって)オフライン書き込みの記録をとろうと試みることに関連する困難を認識して、本発明の一部の実施形態は、代わりに、そのような書き込みが行われることを防止しようと試みる。例えば、一部の実施形態は、シャットダウン後に書き込みレコーダー構成要素を提供しないオペレーティングシステムによっては、或る特定のディスクボリュームにアクセスできないようにしようと試みる。このことは、多数の仕方のいずれにおいて達せられることも可能である。
一部の実施形態において、書き込みレコーダー300は、ディスクボリュームが、オフライン書き込みの記録をとる書き込みレコーダー構成要素を提供しないオペレーティングシステムによってはマウントできなくなるように、ディスクボリュームに印を付けることが可能である。例えば、書き込みレコーダー300は、ボリューム上で使用されるファイルシステムのタイプを示すボリューム識別子を変更することが可能である。これに関して、ボリューム識別子は、オペレーティングシステムが、ボリューム上にデータを格納するのに使用されたファイルシステムのタイプを識別することができるようにして、その結果、オペレーティングシステムが、ボリューム上に格納されたデータの構造、ファイルがどこで見出されるかなどを理解することを可能にすることが、当業者には認識されよう。例えば、ボリューム上にデータを格納するのにNTFS(NTファイルシステム)ファイルシステムが使用されたことをボリューム識別子が示す場合、このボリュームをマウントしようと試みる別のオペレーティングシステムは、このボリューム上のデータを解析し、そのデータにアクセスするのにNTFSファイルシステムが必要とされることを理解する。ボリューム識別子が、ボリューム上にデータを格納するのに使用されたファイルシステムのタイプの指示を全く与えなかったとすると、ほとんどのオペレーティングシステムは、このボリューム上に格納されたデータの構造を理解する信頼できる方法が全く存在しないので、このボリュームをマウントすることができない。このため、本発明の一部の実施形態は、ディスクボリュームをアクセスできなくするようにディスクボリュームのボリューム識別子を変更して、その結果、ユーザーが、このディスクボリュームを別のオペレーティングシステムにブートして、ボリューム上に格納されたデータにオフライン変更を行うことを防止する。
ボリューム識別子が変更されている場合でも、一部のオペレーティングシステムは、ボリューム上にデータを格納するのに使用されたファイルシステムのタイプを識別することができる可能性があることを認識して、本発明の一部の実施形態は、オペレーティングシステムがボリュームをマウントした際、そのことを検出するための機構を提供する。これに関して、ディスクボリュームをマウントするのに、いずれのオペレーティングシステムも、このボリューム上のデータがアクセスされることを許すようにボリューム識別子を更新する(例えば、このボリューム上にデータを格納するのにNTFSファイルシステムが使用されたことを示すように)必要がある。再起動の後、いずれのそのような更新も容易に検出可能である。そのような更新が検出された場合、本発明の一部の実施形態は、前回のシャットダウン以来、このボリュームの内容が変更されているものと想定し、このボリューム上に格納されたデータに対応するキャッシュ内容を強制排除することが可能である。
本発明の一部の実施形態は、書き込みレコーダー構成要素をやはり使用する別のオペレーティングシステムにディスクボリュームがブートされることが可能である能力を提供する。例えば、書き込みレコーダー構成要素を提供する或るオペレーティングシステムを実行している1つのコンピューターからディスクが取り外され、書き込みレコーダー構成要素を提供する別のオペレーティングシステムに、このディスクをブートする場合、その別のオペレーティングシステムは、このボリュームがキャッシュされている可能性があることを示す変更されたボリューム識別子を認識するように構成されることが可能である。その結果、その別のオペレーティングシステムは、第1のオペレーティングシステムによって作成された(例えば、ボリューム上に格納された)オフライン書き込みのログに追加を行うことができる。
或るオペレーティングシステムによってはディスクボリュームがマウントできなくなるようにするように設計された前述の実施形態は、いくつかの機能を実行するのにボリューム識別子に依拠するいくつかのアプリケーション(例えば、バックアップアプリケーション)に問題をもたらす可能性がある。これらのアプリケーションでは、ボリューム識別子が変更された場合、ボリュームは、認識できなくなり、そのため、バックアップされない可能性がある。したがって、本発明の一部の実施形態は、シャットダウン後にファイルシステムがマウントされたかどうかを判定するための機構を提供する。マウントされている場合、ファイルシステムの中のデータに変更が行われているものと想定され、ファイルシステムの中のデータに対応するすべてのキャッシュ内容は、強制排除されることが可能である。
一部の実施形態は、シャットダウン時にファイルシステムログを、ファイルシステムをマウントしようと試みる任意のオペレーティングシステムに、何らかの仕方で、このログを変更する(例えば、このログのロケーションを変更する、新たなエントリを追加するなど)ことを要求する状態にすることによって、シャットダウン後のファイルシステムのマウントを検出することが可能である。例えば、書き込みレコーダー300が、オフライン書き込みをログ記録するタスクの一環として、ファイルシステムがマウント解除される際にファイルシステムログのロケーションおよび/または内容を記録しておく(例えば、このログ自体の中に)ことが可能である。ファイルシステムをマウントしようと試みるいずれのオペレーティングシステムも、このログを変更しなければならないため(例えば、ファイルシステムがNTFSファイルシステムであった場合、このファイルシステムをマウントしようと試みるオペレーティングシステムは、ログにエントリを追加する)、再起動後にログが変更されていない場合、このファイルシステムは、電力遷移中に別のオペレーティングシステムによってマウントされておらず、したがって、このファイルシステムの中に格納されたデータに対応するキャッシュ内容は、陳腐になっていないものと想定される。逆に、このログが何らかの仕方で変更されている(例えば、ログのロケーションが変化している、エントリが追加されているなど)場合、このファイルシステムは、別のオペレーティングシステムによってマウントされており、このファイルシステムの中に格納されたデータは変更されており、このファイルシステムの中に格納されたデータに対応するキャッシュ内容は陳腐になっているものと想定される。このため、これらのキャッシュ内容は強制排除されることが可能である。
オフライン書き込みを防止する機構を提供することに加えて、本発明の一部の実施形態は、キャッシュ内容の一貫性のない生成に対処する能力を提供する。キャッシュ内容の一貫性のない生成は、多数の理由のいずれで生じることも可能である。一例は、第1のキャッシュデバイス、および第2のキャッシュデバイスが接続されている第1のコンピューター、および第2のコンピューターが、本明細書で説明される技術を使用して、電力遷移をまたいでキャッシュ内容を存続させる場合に生じる可能性がある。第2のキャッシュデバイスが第1のコンピューターに接続されており(または第1のキャッシュデバイスが第2のコンピューターに接続されており)、第1のコンピューターが再起動された場合、I/O要求を満足させるのに第2のキャッシュデバイスから誤ったデータが供給される可能性がある。このことは、第1のコンピューターのオペレーティングシステムが、第2のキャッシュデバイスの内容を、陳腐(オフライン書き込みがキャッシュ内容に適用されている可能性があるので)ではなく、真正である(キャッシュから戻されたデータの再生成された表現が、最初に生成された表現と合致する可能性があるので)と見なす可能性があるためである。第1のキャッシュデバイスが或るコンピューターに接続されており、このコンピューターがシャットダウンされ(その結果、キャッシュ内容を存続させる)、このコンピューターが再起動され、第2のキャッシュデバイスが接続され、さらにこのコンピューターが再びシャットダウンされた(その結果、キャッシュ内容を再び存続させる)場合、別の例が生じる可能性がある。このコンピューターが再び再起動され、第1のキャッシュデバイスが接続された場合、第1のキャッシュデバイスがキャッシュ内容の最新の生成を格納していないと判定する信頼できる方法が全く存在しないので、I/O要求を満足させるのに誤ったデータが供給される可能性がある。
一部の実施形態は、キャッシュ内容の一貫性のない生成を識別して、前回のシャットダウンに先立って存続させられたキャッシュ内容が、I/O要求を満足させるのに誤って使用されないようにする能力を提供する。一部の実施形態において、この能力は、多数の仕方のいずれかにおいて、シャットダウンが開始されると生成されることが可能な(例として)、一意存続性識別子を介して提供される。例えば、GUIDおよび/または暗号乱数発生器が、この目的で使用されることが可能である。図3を参照して前述したとおり、存続性識別子は、キャッシュデバイス上に(例えば、キャッシュメタデータの中に、もしくはキャッシュメタデータと一緒に)格納されるとともに、コンピューター上(例えば、ディスク上および/またはメモリー上)にも格納されて、コンピューターが起動された際に検証される(例えば、この2つのバージョンを比較することによって)ことが可能である。検証が不成功であった場合、キャッシュ内容は、前に存続させられたキャッシュ生成を表すものとして強制排除されることが可能である。
前述した認証鍵の場合と同様に、存続性識別子を生成するのに使用されるいずれの鍵も、電力遷移の続く間、キャッシュデバイス以外のロケーションに書き込まれることが可能である。例えば、一部の実施形態において、書き込みレコーダー構成要素は、これらの鍵、ならびに存続性識別子をディスクストレージに書き込むことが可能である(例えば、シャットダウン時に)。しかし、当業者は、鍵が保存され得る多数の代替のロケーションを構想することができるので、本発明は、そのような実施形態には限定されない。鍵は、例えば、システムブート中に利用可能なオペレーティングシステムによって提供される任意の構成ストア(例えば、Windows(登録商標)におけるレジストリー)の中に保持されてもよい。
III.キャッシュメタデータ
前述したとおり、キャッシュメタデータは、データ項目が格納されたディスクアドレスと、それらのデータ項目がキャッシュされたキャッシュデバイス上の対応するアドレスの間のマッピングを提供することが可能である。本発明の一部の実施形態は、システムランタイム動作中にキャッシュメタデータを格納するのに要求されるメモリーの量を大幅に低減する、キャッシュメタデータを格納するための能力を提供する。
さらに、一部の実施形態は、電力遷移、またはキャッシュデバイスをオフラインにする他の任意のイベント(例えば、コンピューターからのキャッシュデバイスの取り外し、ネットワークキャッシュデバイスをアクセスできなくするネットワーク障害など)をまたいでキャッシュメタデータが信頼されることを可能にして、コンピューターが再起動された際、および/またはキャッシュデバイスがオンラインにされた際にキャッシュ内容が確実にアクセスされ得るようにする技術を提供する。これに関して、いくつかのタイプの電力遷移(例えば、スタンバイモードおよびハイバネーションモード)では、メモリーの内容がスタンバイ遷移中、およびハイバネーション遷移中に存続させられるので、単にメモリー(すなわち、RAM)の中にキャッシュメタデータを格納することが容認できることを認識されたい。しかし、再起動中、システムメモリーの内容は存続させられない。このため、本発明の一部の実施形態は、シャットダウン中に何らかの不揮発性媒体/複数の不揮発性媒体の上にキャッシュメタデータを格納し、その後、再起動後に復元されることを規定する。例えば、キャッシュメタデータは、キャッシュデバイス上、および/または別個の1つまたは複数の不揮発性媒体上に格納されることが可能である。さらに、一部の実施形態は、キャッシュメタデータのいくつかの部分を他のキャッシュメタデータから導き出すことができることが可能であり、したがって、すべてのキャッシュメタデータを格納することは要求されない。
一部の実施形態は、キャッシュメタデータの真正性を検証するために上記のセクションIで説明される技術を使用して、キャッシュデバイスがオフラインになった際(例えば、コンピューターシャットダウン中、コンピューターからのキャッシュデバイスの取り外し、ネットワークキャッシュデバイスをアクセスできなくするネットワーク障害など)、そのことを検出して、メタデータへの不注意による変更、または悪意のある変更を防止するようにすることが可能である。例えば、キャッシュデバイスがオンラインになると、キャッシュマネージャーが、図2A〜図2Bを参照して前述した技術を使用して、メタデータがメモリーにロードされた際にメタデータの真正性を検証することが可能である。キャッシュメタデータの真正性が検証され得ない場合、対応するキャッシュ内容は、前述したとおり、ディスク上に格納されたデータに基づいて更新される、強制排除される、またはそれ以外の処理をされることが可能である。
一部の実施形態において、キャッシュメタデータは、シャットダウン中、および再起動時のロード中に保存されるべきメタデータの量を低減するように圧縮されることが可能である。メタデータの圧縮は、メタデータについての情報を含む別個の1つの情報(例えば、キャッシュの中のヘッダ)を保存することを要求する可能性があるため、前述した技術を使用して、再起動時にも、この情報の真正性が検証されることが可能である。
本発明の一部の実施形態は、いずれの一時点でもメモリーの中に格納されるキャッシュメタデータの量を大幅に低減するようにキャッシュメタデータを格納するための技術を提供して、その結果、メモリーにキャッシュメタデータをロードするのに要求される時間、およびメモリーからキャッシュメタデータをオフロードするのに要求される時間(例えば、ランタイム中、および起動/シャットダウン動作中の)を短縮するとともに、キャッシュメタデータのメモリー「フットプリント」を大幅に小さくする。これに関して、比較的大きい記憶容量を有するキャッシュデバイスでは、キャッシュ内容を管理するのに相当な量のメタデータが要求される可能性があることを認識されたい。例えば、16ギガバイトの記憶容量を有するキャッシュデバイスは、32ギガバイトまでの圧縮されたデータを格納することができる可能性がある。一部の実施形態において、ディスクアドレスは、4キロバイトのディスクストレージを表す「データユニット」でキャッシュメタデータの中で反映されることが可能である。このため、32ギガバイトのデータのロケーションの記録をとるのに、800万の異なるデータユニットが必要とされる。この800万のデータユニットのそれぞれが、16バイトマッピング(すなわち、ディスクアドレスからキャッシュアドレスへの)を使用するキャッシュメタデータの中で表される場合、これらのマッピングは、128メガバイトのストレージを要求する。メモリーの中に128メガバイトのキャッシュメタデータを格納することは、多くのコンピューターにおいてメモリーの不必要に大きい部分を占有することを本出願人らは認識している。さらに、シャットダウン中にメモリーから不揮発性媒体に128メガバイトのキャッシュメタデータを書き込むのに要求される時間、および再起動時に不揮発性媒体からメモリーに128メガバイトのキャッシュメタデータを復元するのに要求される時間は、法外に時間がかかり、過度の量のプロセッサーリソースを消費する。
キャッシュメタデータの量が容易に低減され得ないことを認識して、本発明の一部の実施形態は、キャッシュメタデータを格納するのに必要とされるストレージリソース、ならびにシャットダウン時にキャッシュメタデータを保存し、起動時にキャッシュメタデータを復元するのに要求される時間および処理リソースを低減するように設計された技術を提供する。
一部の実施形態において、このことは、1つまたは複数の階層データ構造(例えば、ツリー、マルチレベルアレイなど)の中にキャッシュメタデータを格納することによって達せられる。階層データ構造を使用することにより、階層のより高いレベルだけがメモリーの中に格納されながら、階層のより低いレベルが不揮発性媒体(例えば、キャッシュデバイス)上に格納されることを許すことを可能にすることができる。例えば、一部の実施形態では、階層のより高いレベルだけがメモリーの中に格納され、したがって、全体として、相当な記憶容量を有するキャッシュデバイスをサポートするのに必要とされる量のキャッシュメタデータが格納されながらも、メモリーの中でキャッシュメタデータによって占有される「フットプリント」が大幅に低減されることが可能である。もちろん、階層のより高いレベルだけをキャッシュメタデータの中に格納することは、一部の実施形態として、階層のより低いレベルに保持される一部の情報もメモリーの中に格納することを規定して、この情報への繰り返しのアクセスに関連するI/Oオーバーヘッドを低減するようにすることも可能である。本発明は、いずれの特定の仕方で実施されることにも限定されない。
システム動作中、読み取り要求が処理される際、読み取り動作を実行するように不揮発性媒体から(すなわち、階層のより低いレベルから)読み取られるキャッシュメタデータは、同一のディスク/キャッシュアドレスに対する後の読み取り要求に関して、そのキャッシュメタデータがより迅速にアクセスされ得るように、メモリーの中に「ページイン」される(すなわち、記憶媒体から読み込まれる)ことが可能である。コンピューターが後にシャットダウンされる際、および/またはキャッシュデバイスがオフラインにされる際、階層のより高いレベルに格納されたキャッシュメタデータ、ならびにメモリーの中にページインされた階層のより低いレベルに格納されるべきキャッシュメタデータだけが、不揮発性媒体に保存されればよいことが可能である。このため、シャットダウン時にメモリーから不揮発性ストレージにキャッシュメタデータを移すのに要求される時間、および再起動時に不揮発性ストレージからメモリーにキャッシュメタデータを復元するのに要求される時間が、大幅に短縮されることが可能である。
本発明の一部の実施形態は、キャッシュメタデータの少なくとも一部分を格納するのにB+ツリーを使用する。当業者には認識されるとおり、B+ツリーは、大きい分岐数を使用することが可能であり、したがって、使用される階層におけるレベルの数を減らすことが可能である。前段で与えられる例を使用して、キャッシュメタデータの中で800万のデータユニットが表されるべきであり、200という分岐数を有するB+ツリーが使用される(したがって、階層における各ノードは、200の「子」ノードを有する)場合、このメタデータを格納するのに3つのレベルしか有さないデータ構造、すなわち、最高レベルにおける単一の「ルート」ノード、第2のレベルにおける200のノード、および第3のレベルにおける4万のノードを有し、この4万のノードのそれぞれが、200のデータユニットに対するポインタを含む(つまり、合計で800万のデータユニット)データ構造で十分である。
図4は、ルートノード400と、レベル2ノード4101−200と、レベル3ノード4201−200と含む、この例示的なB+ツリーを示す。各ノードは、階層における、より低いレベルのノードに対するポインタによってそれぞれ分離される200の要素を含む。例えば、ルートノード400における要素402は、ポインタ401および403によって境界を定められる。所与の鍵(例えば、ディスクアドレス)に関連付けられた値(例えば、キャッシュアドレス)は、ノードにおける要素の左側または右側のポインタをたどることによって特定されることが可能であり、要素の左側のポインタは、その鍵が、その要素より小さい場合にたどられ、要素の右側のポインタは、その鍵が、その要素より大きい場合にたどられる。例えば、要素402未満である鍵の値を特定するために、ポインタ401がレベル2ノード410までたどられ、要素402より大きいが、要素404より小さい鍵の値を特定するために、ポインタ403がレベル2ノード410(図示せず)までたどられ、以下同様である。同様に、レベル2ノードで、要素の左側または右側のポインタ(鍵がノードにおける要素より小さいか、大きいかに依存する)がレベル3ノードまでたどられる。レベル3で、最終ポインタがその値までたどられ(やはり、その鍵が、そのノードにおける要素より小さいか、大きいかに基づいて)、レベル3における各ポインタは、キャッシュメタデータにおける800万のデータユニットの1つを参照する。
大きい分岐数を有するB+ツリーは、ほとんどすべてのノードが階層の最下レベルに位置する、比較的「平坦な」階層をもたらすことを認識されたい。つまり、ツリーにおける合計40,201のノードのうち、40,000が最低レベルに存在する。本発明の一部の実施形態は、起動時に階層の最上の2つのレベルだけをメモリーに復元することによって、このことを活用する一方で、階層の最低レベルにおけるキャッシュメタデータは、必要とされるまで、キャッシュデバイス上に格納される(例えば、そのようなキャッシュメタデータは、読み取り要求が処理される際、レイジーロードされる際などに、オンデマンドでメモリーにロードされることが可能である)。階層データ構造の一部分だけがメモリーの中に格納されるため、キャッシュメタデータは、キャッシュメタデータの全体、または大部分がメモリーの中に保持されたとした場合に要求されるのと比べて、メモリーのはるかに小さい部分しか占有しないことが可能である。さらに、コンピューターがシャットダウンされる際、最上の2つのレベルにおけるデータ、および動作中にメモリーにロードされたデータだけが、キャッシュデバイス上に格納されればよい。その結果、起動動作もシャットダウン動作も迅速に、効率的に実行されることが可能である。
このため、本発明の一部の実施形態は、キャッシュデバイス上に格納された階層の別のレベル(前述の例では、レベル3)のノードを参照する、メモリーの中に格納された階層の1つのレベル(前述の例では、階層のレベル2)のノードにおけるポインタを提供する。例えば、キャッシュされたデータ項目に関する読み取り要求が受け取られると、本発明の実施形態は、メモリーの中に格納された階層の1つまたは複数のレベルを通って、その後、キャッシュの中に格納された階層のより低いレベルにおけるメタデータまでポインタをたどり、キャッシュの中にデータ項目が格納されているアドレスを特定する。一部の実施形態において、データ項目に関するキャッシュアドレスが特定されると、このアドレスは、その項目を読み取る後の要求が、キャッシュデバイスからキャッシュメタデータを読み取る必要なしに実行され得るように、メモリーの中に格納されることが可能である。
図5は、本発明の一部の実施形態によるキャッシュメタデータを管理するための例示的なシステム50を示す。図5は、ともにコンピューター(図示せず)によってアクセス可能であるメモリー500とキャッシュデバイス110を示す。コンピューターが起動されると、B+ツリーなどの階層データ構造の1つまたは複数のレベルを備えるキャッシュメタデータが、動作505でメモリー500にロードされる。説明のために前述の例を使用すると、キャッシュメタデータを格納するのに3レベル階層データ構造が使用され得るように、キャッシュメタデータの中で表された800万のデータユニットが存在する場合、階層の最上の2つのレベルがメモリー500にロードされることが可能である。もちろん、800万より多い、または少ないデータユニットがメタデータの中で表され、3つより多い、または少ないレベルを有する階層データ構造が使用されるべき場合、階層の異なる数のレベルがメモリー500にロードされることが可能である。
その後、キャッシュの中に保持されるデータ項目に読み取り要求が向けられると、データ項目が格納されたキャッシュアドレスが、キャッシュデバイス110の中に格納された階層のレベル(複数可)に格納されたキャッシュメタデータにアクセスすることによって特定される。次に、このキャッシュメタデータがメモリー510の中に格納されて、そのデータ項目に対する後の読み取り、または書き込みが、そのデータ項目が格納されたキャッシュアドレスを特定するのにキャッシュデバイス上に格納されたキャッシュメタデータを読み取る必要なしに、実行され得るようになる。代わりに、キャッシュアドレスは、メモリーから読み取られることが可能であり、このことは、キャッシュに対する読み取りと比べて、より迅速に実行されることが可能である。
後に、コンピューターがシャットダウンされる際、メモリーの中に格納されたキャッシュメタデータ(すなわち、動作505でメモリーにロードされた階層のレベルに格納されたメタデータ、および動作510でメモリーに書き込まれた、読み取り要求を満足させるのに使用された任意のメタデータ)が、動作515でキャッシュデバイス500にロードされる。メモリーの中に格納されるキャッシュメタデータが比較的少量である結果、シャットダウンは、多くの処理リソースを要求することなしに、迅速に実行されることが可能である。
B+ツリーは、キャッシュメタデータを格納するのに使用され得る多数のタイプのデータ構造のうちの1つに過ぎず、他のタイプのデータ構造(例えば、AVLツリー、レッドブラックツリー、バイナリーサーチツリー、Bツリー、ならびに/または他の階層データ構造および非階層データ構造)が使用されてもよいことを認識されたい。本発明は、キャッシュメタデータを格納するのにいずれか1つのデータ構造またはデータ構造の組合せを使用することに限定されない。
一部の実施形態は、任意の一時点でメモリーの中に保持されるべきキャッシュメタデータの「目標量」を規定することが可能である。この目標量は、任意の適切な仕方で決定されることが可能である。例えば、目標量は、コンピューターに利用可能な物理的メモリーの量のパーセンテージであることが可能である。例えば、コンピューターが1ギガバイトのメモリーを有する場合、2メガバイトのキャッシュメタデータ(例として)が、任意の一時点でメモリーの中に格納されることが可能である。このため、コンピューターがシャットダウンされる際、2メガバイトのキャッシュメタデータがキャッシュデバイスにロードされるだけでよい。
一部の実施形態において、キャッシュメタデータは、循環するようにメモリーに出し入れされることが可能である。例えば、キャッシュメタデータの目標量がメモリーの中に既に格納されており、キャッシュデバイスからキャッシュメタデータが読み取られることを要求する読み取りが実行される場合、そのメタデータが、メモリーに「ページイン」されることが可能であり、他のキャッシュメタデータ(例えば、最も古くアクセスされた)が消去されることが可能である。例えば、キャッシュメタデータは、キャッシュデバイスに書き込まれた後に消去されることが可能である。代替として、システムは、キャッシュメタデータが、前回に書き出されて以来、変更されているかどうかを判定することが可能であり、変更されていない場合、キャッシュメタデータは、単に消去されて、さもなければキャッシュメタデータを書き込むのに要求される時間および処理リソースが解消されることが可能である。前述した技術を使用して、メモリーの中のキャッシュメタデータによって占有される小さい「フットプリント」が保持されることが可能である。
図6は、或る例を示す。具体的には、図6に示されるプロセス60は、前述した技術を使用してキャッシュメタデータを読み取るのにキャッシュマネージャー100によって実行され得る動作を含む。
プロセス600の開始時に、ディスクアドレスXに格納されたデータを読み取る要求が、動作605で受け取られる。動作610で、データが格納されたキャッシュアドレスが、メモリーの中に格納されたキャッシュメタデータから識別され得るかどうかの判定が行われる。識別され得る場合、プロセスは、動作615に進み、識別されたキャッシュアドレスが特定され、その後、動作620でキャッシュデバイス110に読み取り要求を発行するのに使用される。その後、プロセス60は完了する。メモリーの中に格納されたキャッシュメタデータを使用してキャッシュアドレスが識別され得ない場合、プロセスは、動作625に進み、キャッシュデバイス110からキャッシュメタデータが読み取られて、データが格納されたキャッシュアドレスが特定される。動作625で識別されたキャッシュオフセットを使用して、動作620で、識別されたキャッシュオフセットに読み取り要求が発行され、その後、プロセス60は完了する。
キャッシュデバイス上にキャッシュメタデータを格納することは、起動中、およびシャットダウン中にキャッシュメタデータをロードし、復元するプロセスをスピードアップすることが可能であるだけでなく、起動中、およびシャットダウン中に実行されるシステム動作をスピードアップすることもできることを認識されたい。これに関して、シャットダウンおよび起動は、しばしば、いくつかのデータ項目への複数回のアクセスを含み、キャッシュデバイスに対する2回の読み取り動作を実行することは、通常、ディスクストレージに対して1回の読み取り動作を実行することより速い。その結果、シャットダウン中、および/または起動中にアクセスされるデータ項目と、このデータ項目のロケーションを指定するメタデータがともに、キャッシュの中に格納されていた場合、キャッシュに対する2回の読み取り(すなわち、キャッシュメタデータにアクセスして、項目のロケーションを特定する読み取り、および項目自体にアクセスする第2の読み取り)は、通常、ディスクに対する単一回の読み取りと比べて、より迅速に実行され得るので、そのデータ項目は、そのデータ項目がディスク上に格納されていた場合と比べて、より迅速にアクセスされることが可能である。このため、シャットダウン中、および起動中に実行される個々の動作が速められることが可能である。さらに、キャッシュからのキャッシュメタデータの第1の読み取り中、項目が格納されているアドレスがメモリーにページインされると、メモリーに対する読み取りは、通常、キャッシュに対する読み取りと比べて、より迅速に実行され得るので、次に、そのデータ項目の後の読み取りが、さらにより迅速に実行されることも可能である。
本発明の特徴を実施するためのシステムおよび方法の様々な態様は、図7に示される例示的なコンピューターシステム700のような、1つまたは複数のコンピューターシステム上で実施されることが可能である。コンピューターシステム700は、入力デバイス(複数可)702、出力デバイス(複数可)701、プロセッサー703、メモリーシステム704、およびストレージ706を含み、以上のすべては、1つまたは複数のバス、スイッチ、ネットワーク、および/または他の任意の適切な相互接続を備えることが可能な相互接続機構705を介して直接に、または間接的に結合される。入力デバイス(複数可)702は、ユーザーまたはマシン(例えば、人間の操作者)から入力を受け取り、出力デバイス(複数可)701は、ユーザーまたはマシン(例えば、液晶ディスプレイ)に情報を表示する、または伝送する。プロセッサー703は、通常、他のコンピュータープログラムの実行を制御する、オペレーティングシステムと呼ばれるコンピュータープログラム(例えば、Microsoft Windowsファミリーのオペレーティングシステム、または他の任意の適切なオペレーティングシステム)を実行し、さらにスケジューリング、入出力デバイス制御および他のデバイス制御、アカウンティング、コンパイル、ストレージ割り当て、データ管理、メモリー管理、通信制御およびデータフロー制御を提供する。一緒になって、プロセッサーとオペレーティングシステムは、アプリケーションプログラムおよび他のコンピュータープログラム言語が書かれるコンピュータープラットフォームを定義する。
また、プロセッサー703は、1つまたは複数のコンピュータープログラムを実行して、様々な機能を実施することもできる。これらのコンピュータープログラムは、手続き型プログラミング言語、オブジェクト指向プログラミング言語、マクロ言語、または以上の組合せを含む任意のタイプのコンピュータープログラム言語で書かれることが可能である。これらのコンピュータープログラムは、ストレージシステム706の中に格納されることが可能である。ストレージシステム706は、揮発性媒体または不揮発性媒体の上に情報を保持することができ、固定型であっても、リムーバブルであってもよい。ストレージシステム706は、図8により詳細に示される。
ストレージシステム706は、コンピュータープログラムを規定する、またはそのプログラムによって使用されるべき情報を規定する信号が格納されるコンピューター可読の、書き込み可能な不揮発性記録媒体801を通常、含む。媒体は、例えば、ディスクまたはフラッシュメモリーであることが可能である。通常、動作中において、プロセッサー703は、媒体801と比べて、プロセッサー703による情報への、より迅速なアクセスを可能にする不揮発性メモリー802(例えば、ランダムアクセスメモリー、すなわちRAM)に不揮発性記録媒体801からデータが読み込まれるようにする。メモリー802は、図8に示されるとおり、ストレージシステム706内に配置されても、図7に示されるとおり、メモリーシステム704内に配置されてもよい。プロセッサー703は、一般に、集積回路メモリー704、802内のデータを操作し、次に、処理が完了した後、媒体801にそのデータをコピーする。媒体801と集積回路メモリー素子704、802の間のデータ移動を管理するための様々な機構が知られており、本発明は、それらに限定されない。また、本発明は、或る特定のメモリーシステム704またはストレージシステム706に限定されることもない。
さらに、本発明の実施形態は、オペレーティングシステムのI/Oスタックにおけるドライバーとして実施されるキャッシュマネージャー構成要素を使用することに限定されることもない。オペレーティングシステム、または1つもしくは複数のスタンドアロン構成要素によってそれぞれが実施されることが可能な任意の適切な構成要素または構成要素の組合せが、代替として、またはさらに使用されてもよい。本発明は、いずれの特定の実施形態にも限定されない。
本発明の前述の実施形態は、多数の仕方のいずれで実施されることも可能である。例えば、前述の機能は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せを使用して実施されることが可能である。ソフトウェアで実施される場合、ソフトウェアコードは、単一のコンピューターにおいて提供されるか、複数のコンピューター間で分散されるかにかかわらず、任意の適切なプロセッサーまたはプロセッサーの集合の上で実行されることが可能である。これに関して、本明細書で説明される機能を実行するいずれの構成要素または構成要素の集合も、前述した機能を制御する1つまたは複数のコントローラと一般的に考えられ得ることを認識されたい。1つまたは複数のコントローラは、専用ハードウェアで、または前述した機能を実行するようにマイクロコードまたはソフトウェアを使用してプログラミングされた1つまたは複数のプロセッサーを使用することによってなど、多数の仕方で実施されることが可能である。コントローラがシステム動作のためのデータを格納する、または供給する場合、そのようなデータは、中央リポジトリーの中に、複数のリポジトリーの中に、または中央リポジトリーと複数のリポジトリーの中に格納されることが可能である。
さらに、(クライアントまたはサーバ)コンピューターは、ラックマウント型のコンピューター、デスクトップコンピューター、ラップトップコンピューター、タブレットコンピューター、または他のタイプのコンピューターなどの、いくつかの形態のいずれにおいて実施されることも可能であることを認識されたい。さらに、(クライアントまたはサーバ)コンピューターは、PDA(携帯情報端末)、スマートフォン、または他の任意の適切なポータブル電子デバイスもしくは固定電子デバイスを含め、コンピューターと一般には見なされないが、適切な処理能力を有するデバイスに組み込まれることも可能である。
また、(クライアントまたはサーバ)コンピューターは、1つまたは複数の入力デバイスおよび出力デバイスを有することも可能である。これらのデバイスは、とりわけ、ユーザーインタフェースを提示するのに使用され得る。ユーザーインタフェースを提供するのに使用され得る出力デバイスの例には、出力を視覚的に提示するためのプリンターまたはディスプレイスクリーン、および出力を聴覚的に提示するためのスピーカーまたは他のサウンド生成デバイスが含まれる。ユーザーインタフェースとして使用され得る入力デバイスの例には、キーボード、ならびにマウス、タッチパッド、およびデジタル化テーブルなどのポインティングデバイスが含まれる。別の例として、コンピューターは、音声認識を介して、または他の可聴フォーマットで入力情報を受け取ってもよい。
そのようなコンピューターは、企業ネットワークまたはインターネットなどの、ローカルエリアネットワークまたはワイドエリアネットワークとしての形態を含め、任意の適切な形態の1つまたは複数のネットワークによって互いに接続されることが可能である。そのようなネットワークは、任意の適切な技術に基づくことが可能であり、任意の適切なプロトコルに従って動作することが可能であり、さらに無線ネットワーク、有線ネットワーク、または光ファイバネットワークを含むことが可能である。また、本明細書で概説される様々な方法またはプロセスは、様々なオペレーティングシステムまたはプラットフォームのいずれか1つを使用する1つまたは複数のプロセッサー上で実行可能なソフトウェアとして符号化されることが可能である。
さらに、ソフトウェアは、いくつかの適切なプログラミング言語および/または従来のプログラミングツールもしくはスクリプトツールのいずれを使用して書かれることも可能であり、さらにフレームワークまたは仮想マシンの上で実行される実行可能な機械語コードもしくは中間コードとしてコンパイルされることも可能である。
これに関して、本発明は、1つまたは複数のコンピューターまたは他のプロセッサーによって実行されると、前述した本発明の様々な実施形態を実施する方法を実行する1つまたは複数のプログラムが符号化された記憶媒体(または複数の記憶媒体)(例えば、コンピューターメモリー、1つまたは複数のフロッピーディスク、コンパクトディスク、光ディスク、磁気テープ、フラッシュメモリー、フィールドプログラマブルゲートアレイもしくは他の半導体デバイスにおける回路構成、または他のコンピューター記憶媒体)として実施されることが可能である。この1つまたは複数の記憶媒体は、記憶媒体上に格納された1つまたは複数のプログラムが、前述した本発明の様々な態様を実施するように、異なる1つまたは複数のコンピューターまたは他のプロセッサー上にロードされ得るように、トランスポート可能であり得る。
「プログラム」または「ソフトウェア」という用語は、本明細書では、前述した本発明の様々な態様を実施するようにコンピューターまたは他のプロセッサーをプログラミングするのに使用され得る任意のタイプのコンピューターコードまたはコンピューター実行可能命令セットを指すように一般的な意味で使用される。さらに、この実施形態の一態様によれば、実行されると、本発明の方法を実行する1つまたは複数のコンピュータープログラムは、単一のコンピューターもしくはプロセッサーの上に存在していなくてもよく、本発明の様々な態様を実施する異なるいくつかのコンピューターまたはプロセッサーの間にモジュール様態で分散されてもよいことを認識されたい。
コンピューター実行可能命令は、1つまたは複数のコンピューターもしくは他のデバイスによって実行されるプログラムモジュールなどの多くの形態で提供されることが可能である。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などが含まれる。通常、プログラムモジュールの機能は、様々な実施形態において所望に応じて組み合わされる、または分散されることが可能である。
本発明の様々な態様は、単独で、組合せで、または前述した実施形態において具体的に説明されない様々な構成で使用されることが可能であり、したがって、以上の説明で示される、または図面で例示される構成要素の詳細および構成への適用に限定されない。例えば、一実施形態において説明される態様は、他の実施形態において説明される態様と任意の仕方で組み合わされることが可能である。
請求項要素を修飾する請求項における「第1の」、「第2の」、「第3の」などの順序を表す語の使用は、或る請求項要素の別の請求項要素に対する優先、先行、もしくは順序、または方法の動作が実行される時間的順序をそれ自体で表すわけではなく、或る名前を有する1つの請求項要素を、(順序を表す語の使用以外は)同一の名前を有する別の要素から区別して、それらの請求項要素を区別するようにするラベルとして使用されるに過ぎない。
また、本明細書で使用される語および句は、説明を目的としており、限定するものと見なされるべきではない。本明細書における「含める」、「備える」、または「有する」、「包含する」、「関与させる」、ならびに以上の変種の使用は、続いてリストアップされる項目、およびそれらの項目の均等物、ならびにさらなる項目を包含することを意図している。
以上、本発明の少なくとも1つの実施形態のいくつかの態様が説明されて、様々な代替形態、変形形態、および改良形態が当業者には容易に思い浮かべられることを認識されたい。そのような代替形態、変形形態、および改良形態は、本開示の一部であることが意図され、本発明の趣旨および範囲に含まれることが意図される。したがって、以上の説明および図は、単に例に過ぎない。

Claims (15)

  1. メモリーを備え、記憶媒体(706)およびキャッシュデバイス(110)が結合されており、前記記憶媒体(706)は、複数のデータ項目をそれぞれ、それぞれのアドレスに格納し、前記複数のデータ項目のそれぞれは、前記キャッシュデバイス(110)上の対応するアドレスにも格納され、コンピューター(700)によってアクセス可能なキャッシュメタデータが、前記記憶媒体上の前記アドレスと各データ項目が格納される前記キャッシュデバイス上の前記対応するアドレスの間のマッピングを提供する、前記コンピューターを動作させるための方法であって、
    (A)複数の階層レベルを備える階層データ構造で前記キャッシュメタデータを格納する動作と、
    (B)前記複数の階層レベルのサブセットだけを前記メモリーにロードする動作と、
    を備える方法。
  2. 前記動作(B)は、前記キャッシュデバイス上に前記複数の階層レベルの残りのレベルの少なくとも一部分を格納する動作をさらに備える請求項1に記載の方法。
  3. 前記コンピューターの再起動を開始する動作、および/または前記キャッシュデバイスをオフラインにする動作を備える、前記動作(A)の後に実行される動作をさらに備え、さらに前記動作(B)は、前記コンピューターの前記再起動が開始され、かつ/または前記キャッシュデバイスがオフラインにされると、実行される請求項1に記載の方法。
  4. 前記階層データ構造は、少なくとも100である分岐数を有する請求項1に記載の方法。
  5. 前記動作(A)は、前記キャッシュデバイスをオフラインにするコマンドに応答して、前記キャッシュデバイス上にキャッシュメタデータを格納する動作をさらに備える請求項1に記載の方法。
  6. (D)前記記憶媒体上のアドレスに格納されたデータ項目を読み取る要求を受け取る動作と、
    (E)前記キャッシュメタデータの第1の部分にアクセスして、前記キャッシュデバイス上で前記データ項目が格納された対応するアドレスを識別する動作と、
    (F)前記キャッシュメタデータの前記第1の部分の少なくともいくらかを前記メモリーの中に格納する動作と、
    をさらに備える請求項1に記載の方法。
  7. 前記動作(D)は、オペレーティングシステムを起動し、かつ/または前記キャッシュデバイスをオフラインにするように実行される動作の一環として、データ項目を読み取る要求を受け取る動作をさらに備える請求項6に記載の方法。
  8. 前記動作(D)は、前記記憶媒体上のそれぞれのアドレスにそれぞれが格納された複数のデータ項目を読み取る要求を受け取る動作をさらに備え、
    前記動作(E)は、(D)において受け取られた各要求に関して、前記キャッシュメタデータにアクセスして、前記キャッシュデバイス上でデータ項目が格納された対応するアドレスを識別する動作をさらに備え、
    前記動作(F)は、(E)における各動作に関して、前記対応するアドレスの指示を前記メモリーの中に格納する動作をさらに備える方法であって、
    (G)前記コンピューターをシャットダウンするコマンドを受け取ると、(C)において前記メモリーにロードされた前記複数の階層レベルの前記サブセット、および/または(F)において格納された前記指示を前記キャッシュデバイスに格納する動作
    をさらに備える請求項6に記載の方法。
  9. 前記動作(F)は、
    (F1)キャッシュメタデータの目標量が前記メモリーの中に既に格納されているかどうかを判定する動作と、
    (F2)キャッシュメタデータの前記目標量が前記メモリーの中に既に格納されていることが判定された場合、
    前記メモリーから消去されるべきキャッシュメタデータの第2の部分を識別する動作、
    キャッシュメタデータの前記第2の部分を消去する動作、および
    キャッシュメタデータの前記第1の部分を前記メモリーの中に格納する動作と、
    (F3)キャッシュメタデータの前記目標量が前記メモリーの中に既に格納されてはいないことが判定された場合、キャッシュメタデータの前記第1の部分を前記メモリーの中に格納する動作と、
    をさらに備える請求項6に記載の方法。
  10. 前記メモリーは、或る記憶容量を有し、さらに前記動作(F1)における前記判定する動作は、前記メモリーの前記記憶容量を参照して実行される請求項9に記載の方法。
  11. 前記動作(E)は、前記動作(A)の完了後に前記キャッシュメタデータが変更されていないことを検証する動作をさらに備える請求項6に記載の方法。
  12. 前記動作(A)は、前記キャッシュメタデータの少なくとも一部分の表現を生成し、前記表現を前記キャッシュデバイスに書き込む動作をさらに備え、さらに(E)における前記検証する動作は、
    (E1)前記キャッシュデバイスに書き込まれた前記表現を取り出す動作と、
    (E2)前記表現を再生成する動作と、
    (E3)(E1)において取り出された前記表現を(E2)において再生成された前記表現と比較して、前記キャッシュデバイス上で前記データ項目が格納された前記対応するアドレスを識別するのに、前記キャッシュメタデータが信頼できるように使用され得るかどうかを判定する動作と、
    を備える請求項11に記載の方法。
  13. (E4)前記対応するアドレスを識別するのに、前記キャッシュメタデータが信頼できるように使用され得ると判定された場合、前記キャッシュデバイス上の前記対応するアドレスにおける前記データ項目を読み取る動作と、
    (E5)前記対応するアドレスを識別するのに、前記キャッシュメタデータが信頼できるように使用され得ないと判定された場合、前記キャッシュメタデータを強制排除し、前記記憶媒体上の前記アドレスから前記データ項目を読み取る動作と、
    をさらに備える請求項12に記載の方法。
  14. メモリーを備え、ディスクストレージ(706)およびキャッシュデバイス(110)が結合されており、前記ディスクストレージは、複数のデータ項目をそれぞれ、それぞれのアドレスに格納し、前記複数のデータ項目のそれぞれは、前記キャッシュデバイス上の対応するアドレスにも格納され、コンピューター(700)によってアクセス可能なキャッシュメタデータが、前記ディスクストレージ上の前記アドレスと各データ項目が格納された前記キャッシュデバイス上の前記対応するアドレスの間のマッピングを提供する、前記コンピューターによって実行されると、
    (A)複数の階層レベルを備える階層データ構造で前記キャッシュメタデータを前記キャッシュデバイスの中に格納する動作と、
    (B)前記コンピューターの再起動を開始する動作と、
    (C)前記コンピューターの前記再起動が開始されると、前記複数の階層レベルのサブセットだけを前記メモリーにロードする動作と、
    (D)前記記憶媒体上のアドレスに格納されたデータ項目を読み取る要求を受け取る動作と、
    (E)前記キャッシュメタデータの第1の部分にアクセスして、前記キャッシュデバイス上で前記データ項目が格納された対応するアドレスを識別する動作と、
    (F)前記キャッシュメタデータの前記第1の部分を前記メモリーの中に格納する動作と、
    を備える方法を実行する符号化された命令を有する少なくとも1つのコンピューター可読記憶媒体。
  15. メモリー(704)と、
    それぞれのアドレスに複数のデータ項目を格納する記憶媒体(706)と、
    対応するアドレスに前記複数のデータ項目をやはり格納し、前記記憶媒体上の前記アドレスと各データ項目が格納された前記キャッシュデバイス上の前記対応するアドレスの間のマッピングを提供するキャッシュメタデータを格納し、前記キャッシュメタデータは、複数の階層レベルを備える階層データ構造で格納される、キャッシュデバイス(110)と、
    プログラミングされた少なくとも1つのプロセッサー(703)と、
    を備えるコンピューターシステム(700)であって、前記プロセッサーは、
    前記コンピューターの再起動が開始されると、前記複数の階層レベルのサブセットだけを前記メモリーにロードし、
    前記キャッシュメタデータを使用して、前記キャッシュデバイスの中で前記データ項目が格納された対応するアドレスを識別すること、および識別された対応するアドレスを前記メモリーの中に格納することによって、前記記憶媒体上のそれぞれのアドレスに格納されたデータ項目を読み取る要求を処理し、
    前記複数の階層レベルの前記サブセット、および前記識別された対応するアドレスを前記メモリーから前記キャッシュデバイスに転送することによって、前記コンピューターをシャットダウンするコマンドを処理する、
    ようにプログラミングされたプロセッサー(703)である、
    コンピューターシステム(700)。
JP2011536387A 2008-11-14 2009-11-03 キャッシュデータおよびメタデータを管理すること Withdrawn JP2012508932A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/271,400 US8032707B2 (en) 2008-09-15 2008-11-14 Managing cache data and metadata
US12/271,400 2008-11-14
PCT/US2009/063127 WO2010056571A2 (en) 2008-11-14 2009-11-03 Managing cache data and metadata

Publications (1)

Publication Number Publication Date
JP2012508932A true JP2012508932A (ja) 2012-04-12

Family

ID=42008275

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011536387A Withdrawn JP2012508932A (ja) 2008-11-14 2009-11-03 キャッシュデータおよびメタデータを管理すること

Country Status (7)

Country Link
US (3) US8032707B2 (ja)
EP (1) EP2353081B1 (ja)
JP (1) JP2012508932A (ja)
CN (1) CN102216899B (ja)
ES (1) ES2663701T3 (ja)
TW (1) TWI471726B (ja)
WO (1) WO2010056571A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018526740A (ja) * 2015-08-24 2018-09-13 アリババ グループ ホウルディング リミテッド モバイル端末のためのデータ記憶方法及び装置

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
IL176685A (en) * 2006-07-03 2011-02-28 Eci Telecom Dnd Inc Method for performing a system shutdown
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US8200895B2 (en) * 2009-05-04 2012-06-12 Microsoft Corporation File system recognition structure
US9015733B2 (en) 2012-08-31 2015-04-21 Facebook, Inc. API version testing based on query schema
KR101113894B1 (ko) * 2010-05-18 2012-02-29 주식회사 노바칩스 반도체 메모리 시스템 및 이의 제어 방법
JP5520747B2 (ja) * 2010-08-25 2014-06-11 株式会社日立製作所 キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体
US8793309B2 (en) * 2010-09-07 2014-07-29 Sap Ag (Th) Systems and methods for the efficient exchange of hierarchical data
US10114847B2 (en) * 2010-10-04 2018-10-30 Ca, Inc. Change capture prior to shutdown for later backup
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8996807B2 (en) 2011-02-15 2015-03-31 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a multi-level cache
US9286079B1 (en) * 2011-06-30 2016-03-15 Western Digital Technologies, Inc. Cache optimization of a data storage device based on progress of boot commands
CN102567490B (zh) * 2011-12-21 2013-12-04 华为技术有限公司 数据库内的描述信息的恢复和数据的缓存方法及设备
US9286303B1 (en) * 2011-12-22 2016-03-15 Emc Corporation Unified catalog service
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US8756538B2 (en) * 2012-02-20 2014-06-17 International Business Machines Corporation Parsing data representative of a hardware design into commands of a hardware design environment
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
WO2014030249A1 (ja) * 2012-08-24 2014-02-27 株式会社日立製作所 ボリュームのi/o性能の検証システム及び検証方法
US20140067781A1 (en) * 2012-08-31 2014-03-06 Scott W. Wolchok Graph Query Language API Querying and Parsing
US9646028B2 (en) * 2012-08-31 2017-05-09 Facebook, Inc. Graph query logic
US9047238B2 (en) 2012-11-28 2015-06-02 Red Hat Israel, Ltd. Creating a virtual machine from a snapshot
US10713183B2 (en) * 2012-11-28 2020-07-14 Red Hat Israel, Ltd. Virtual machine backup using snapshots and current configuration
US9317435B1 (en) * 2012-12-18 2016-04-19 Netapp, Inc. System and method for an efficient cache warm-up
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10102079B2 (en) 2013-06-13 2018-10-16 Hytrust, Inc. Triggering discovery points based on change
US8849764B1 (en) 2013-06-13 2014-09-30 DataGravity, Inc. System and method of data intelligent storage
US10089192B2 (en) 2013-06-13 2018-10-02 Hytrust, Inc. Live restore for a data intelligent storage system
US9213706B2 (en) 2013-06-13 2015-12-15 DataGravity, Inc. Live restore for a data intelligent storage system
US9684607B2 (en) 2015-02-25 2017-06-20 Microsoft Technology Licensing, Llc Automatic recovery of application cache warmth
US9582160B2 (en) 2013-11-14 2017-02-28 Apple Inc. Semi-automatic organic layout for media streams
US20150134661A1 (en) * 2013-11-14 2015-05-14 Apple Inc. Multi-Source Media Aggregation
US9489104B2 (en) 2013-11-14 2016-11-08 Apple Inc. Viewable frame identification
US10545917B2 (en) 2014-02-19 2020-01-28 Snowflake Inc. Multi-range and runtime pruning
US10325032B2 (en) 2014-02-19 2019-06-18 Snowflake Inc. Resource provisioning systems and methods
WO2016122491A1 (en) * 2015-01-28 2016-08-04 Hewlett-Packard Development Company, L.P. Page cache in a non-volatile memory
US9684596B2 (en) 2015-02-25 2017-06-20 Microsoft Technology Licensing, Llc Application cache replication to secondary application(s)
US9600417B2 (en) * 2015-04-29 2017-03-21 Google Inc. Data caching
CN106681649A (zh) * 2015-11-06 2017-05-17 湖南百里目科技有限责任公司 一种分布式存储元数据加速方法
US10678578B2 (en) * 2016-06-30 2020-06-09 Microsoft Technology Licensing, Llc Systems and methods for live migration of a virtual machine based on heat map and access pattern
US10437780B2 (en) 2016-07-14 2019-10-08 Snowflake Inc. Data pruning based on metadata
CN108733507B (zh) * 2017-04-17 2021-10-08 伊姆西Ip控股有限责任公司 文件备份和恢复的方法和设备
US10733044B2 (en) * 2018-07-09 2020-08-04 Microsoft Technology Licensing, Llc Use of cache for content validation and error remediation
US11354415B2 (en) * 2019-06-29 2022-06-07 Intel Corporation Warm boot attack mitigations for non-volatile memory modules
US10992743B1 (en) * 2019-09-23 2021-04-27 Amazon Technologies, Inc. Dynamic cache fleet management
US11221776B2 (en) * 2019-12-30 2022-01-11 Micron Technology, Inc. Metadata indication for a memory device
CN113031864B (zh) * 2021-03-19 2024-02-02 上海众源网络有限公司 一种数据处理方法、装置、电子设备及存储介质
US11366765B1 (en) 2021-04-21 2022-06-21 International Business Machines Corporation Optimize metadata management to boost overall system performance
US20230124622A1 (en) * 2021-10-14 2023-04-20 Arm Limited Alarm Systems and Circuits
KR20230072886A (ko) * 2021-11-18 2023-05-25 에스케이하이닉스 주식회사 저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법
US11860780B2 (en) 2022-01-28 2024-01-02 Pure Storage, Inc. Storage cache management

Family Cites Families (284)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4476526A (en) 1981-11-27 1984-10-09 Storage Technology Corporation Cache buffered memory subsystem
US4612612A (en) 1983-08-30 1986-09-16 Amdahl Corporation Virtually addressed cache
US4979108A (en) 1985-12-20 1990-12-18 Ag Communication Systems Corporation Task synchronization arrangement and method for remote duplex processors
US4972316A (en) 1987-03-30 1990-11-20 International Business Machines Corporation Method of handling disk sector errors in DASD cache
US4945474A (en) 1988-04-08 1990-07-31 Internatinal Business Machines Corporation Method for restoring a database after I/O error employing write-ahead logging protocols
US5394531A (en) 1989-04-03 1995-02-28 International Business Machines Corporation Dynamic storage allocation system for a prioritized cache
DE69033438T2 (de) 1989-04-13 2000-07-06 Sandisk Corp., Santa Clara Austausch von fehlerhaften Speicherzellen einer EEprommatritze
JPH02273843A (ja) 1989-04-14 1990-11-08 Nec Corp スワッピング装置
US5900870A (en) 1989-06-30 1999-05-04 Massachusetts Institute Of Technology Object-oriented computer user interface
US5088026A (en) 1990-02-09 1992-02-11 International Business Machines Corporation Method for managing a data cache using virtual external storage addresses as arguments
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
RU2010317C1 (ru) 1990-07-20 1994-03-30 Институт точной механики и вычислительной техники им.С.А.Лебедева РАН Устройство управления буферной памятью
US5263136A (en) 1991-04-30 1993-11-16 Optigraphics Corporation System for managing tiled images using multiple resolutions
US5764877A (en) 1991-06-25 1998-06-09 Digital Equipment Corporation Media recovery with time-split B-trees
JP2582487B2 (ja) 1991-07-12 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 半導体メモリを用いた外部記憶システム及びその制御方法
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5297258A (en) 1991-11-21 1994-03-22 Ast Research, Inc. Data logging for hard disk data storage systems
JP3451099B2 (ja) 1991-12-06 2003-09-29 株式会社日立製作所 外部記憶サブシステム
EP0547992A3 (en) 1991-12-17 1993-12-01 Ibm Method and system for enhanced efficiency of data recovery in balanced tree memory structures
JP3485938B2 (ja) 1992-03-31 2004-01-13 株式会社東芝 不揮発性半導体メモリ装置
US5420998A (en) 1992-04-10 1995-05-30 Fujitsu Limited Dual memory disk drive
US5398325A (en) 1992-05-07 1995-03-14 Sun Microsystems, Inc. Methods and apparatus for improving cache consistency using a single copy of a cache tag memory in multiple processor computer systems
US5574877A (en) 1992-09-25 1996-11-12 Silicon Graphics, Inc. TLB with two physical pages per virtual tag
US5454098A (en) 1992-09-28 1995-09-26 Conner Peripherals, Inc. Method of emulating access to a sequential access data storage device while actually using a random access storage device
US5561783A (en) 1992-11-16 1996-10-01 Intel Corporation Dynamic cache coherency method and apparatus using both write-back and write-through operations
US5751932A (en) 1992-12-17 1998-05-12 Tandem Computers Incorporated Fail-fast, fail-functional, fault-tolerant multiprocessor system
US5463739A (en) 1992-12-22 1995-10-31 International Business Machines Corporation Apparatus for vetoing reallocation requests during a data transfer based on data bus latency and the number of received reallocation requests below a threshold
US5557770A (en) 1993-03-24 1996-09-17 International Business Machines Corporation Disk storage apparatus and method for converting random writes to sequential writes while retaining physical clustering on disk
KR970008188B1 (ko) 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5551002A (en) 1993-07-01 1996-08-27 Digital Equipment Corporation System for controlling a write cache and merging adjacent data blocks for write operations
US5572660A (en) 1993-10-27 1996-11-05 Dell Usa, L.P. System and method for selective write-back caching within a disk array subsystem
JPH086854A (ja) 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
US6026027A (en) 1994-01-31 2000-02-15 Norand Corporation Flash memory system having memory cache
EP0668565B1 (en) 1994-02-22 2002-07-17 Advanced Micro Devices, Inc. Virtual memory system
US6185629B1 (en) 1994-03-08 2001-02-06 Texas Instruments Incorporated Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5642501A (en) 1994-07-26 1997-06-24 Novell, Inc. Computer method and apparatus for asynchronous ordered operations
US5897640A (en) 1994-08-08 1999-04-27 Microsoft Corporation Method and system of associating, synchronizing and reconciling computer files in an operating system
JPH10507566A (ja) 1994-10-18 1998-07-21 アイオメガ コーポレイション ディスクカートリッジの検出方法および装置
JPH08137634A (ja) 1994-11-09 1996-05-31 Mitsubishi Electric Corp フラッシュディスクカード
EP0806015A4 (en) 1995-01-23 2003-09-03 Compaq Computer Corp SYSTEM FOR CONSERVING THE INTEGRITY OF A DATABASE
JP3426385B2 (ja) 1995-03-09 2003-07-14 富士通株式会社 ディスク制御装置
US5897660A (en) 1995-04-07 1999-04-27 Intel Corporation Method for managing free physical pages that reduces trashing to improve system performance
US6078925A (en) 1995-05-01 2000-06-20 International Business Machines Corporation Computer program product for database relational extenders
US5917723A (en) 1995-05-22 1999-06-29 Lsi Logic Corporation Method and apparatus for transferring data between two devices with reduced microprocessor overhead
US5608892A (en) 1995-06-09 1997-03-04 Alantec Corporation Active cache for a microprocessor
US5720029A (en) 1995-07-25 1998-02-17 International Business Machines Corporation Asynchronously shadowing record updates in a remote copy session using track arrays
US5809280A (en) 1995-10-13 1998-09-15 Compaq Computer Corporation Adaptive ahead FIFO with LRU replacement
US5717954A (en) 1995-10-13 1998-02-10 Compaq Computer Corporation Locked exchange FIFO
US5754782A (en) 1995-12-04 1998-05-19 International Business Machines Corporation System and method for backing up and restoring groupware documents
US5754888A (en) 1996-01-18 1998-05-19 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations System for destaging data during idle time by transferring to destage buffer, marking segment blank , reodering data in buffer, and transferring to beginning of segment
US5806074A (en) 1996-03-19 1998-09-08 Oracle Corporation Configurable conflict resolution in a computer implemented distributed database
US6247026B1 (en) 1996-10-11 2001-06-12 Sun Microsystems, Inc. Method, apparatus, and product for leasing of delegation certificates in a distributed system
US5996054A (en) 1996-09-12 1999-11-30 Veritas Software Corp. Efficient virtualized mapping space for log device data storage system
US5832515A (en) 1996-09-12 1998-11-03 Veritas Software Log device layered transparently within a filesystem paradigm
US6321234B1 (en) 1996-09-18 2001-11-20 Sybase, Inc. Database server system with improved methods for logging transactions
GB2317722B (en) 1996-09-30 2001-07-18 Nokia Mobile Phones Ltd Memory device
GB2317720A (en) 1996-09-30 1998-04-01 Nokia Mobile Phones Ltd Managing Flash memory
US6112024A (en) 1996-10-02 2000-08-29 Sybase, Inc. Development system providing methods for managing different versions of objects with a meta model
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
JPH10177563A (ja) 1996-12-17 1998-06-30 Mitsubishi Electric Corp フラッシュメモリ内蔵マイクロコンピュータ
US6073232A (en) 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
US6345000B1 (en) 1997-04-16 2002-02-05 Sandisk Corporation Flash memory permitting simultaneous read/write and erase operations in a single memory array
US5943692A (en) 1997-04-30 1999-08-24 International Business Machines Corporation Mobile client computer system with flash memory management utilizing a virtual address map and variable length data
US5897638A (en) 1997-06-16 1999-04-27 Ab Initio Software Corporation Parallel virtual file system
US6148368A (en) 1997-07-31 2000-11-14 Lsi Logic Corporation Method for accelerating disk array write operations using segmented cache memory and data logging
US6879266B1 (en) 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US6000006A (en) 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6240414B1 (en) 1997-09-28 2001-05-29 Eisolutions, Inc. Method of resolving data conflicts in a shared data environment
US6189071B1 (en) 1997-10-06 2001-02-13 Emc Corporation Method for maximizing sequential output in a disk array storage device
US6108004A (en) 1997-10-21 2000-08-22 International Business Machines Corporation GUI guide for data mining
FR2770952B1 (fr) 1997-11-12 2000-01-21 Adl Systeme Sa Dispositif de tele-ecriture
US6560702B1 (en) 1997-12-10 2003-05-06 Phoenix Technologies Ltd. Method and apparatus for execution of an application during computer pre-boot operation
US6098075A (en) 1997-12-16 2000-08-01 International Business Machines Corporation Deferred referential integrity checking based on determining whether row at-a-time referential integrity checking would yield the same results as deferred integrity checking
US6567889B1 (en) 1997-12-19 2003-05-20 Lsi Logic Corporation Apparatus and method to provide virtual solid state disk in cache memory in a storage controller
US6018746A (en) 1997-12-23 2000-01-25 Unisys Corporation System and method for managing recovery information in a transaction processing system
US6006291A (en) 1997-12-31 1999-12-21 Intel Corporation High-throughput interface between a system memory controller and a peripheral device
US6205527B1 (en) 1998-02-24 2001-03-20 Adaptec, Inc. Intelligent backup and restoring system and method for implementing the same
US7007072B1 (en) 1999-07-27 2006-02-28 Storage Technology Corporation Method and system for efficiently storing web pages for quick downloading at a remote device
US6272534B1 (en) 1998-03-04 2001-08-07 Storage Technology Corporation Method and system for efficiently storing web pages for quick downloading at a remote device
US6959318B1 (en) 1998-03-06 2005-10-25 Intel Corporation Method of proxy-assisted predictive pre-fetching with transcoding
US6298428B1 (en) 1998-03-30 2001-10-02 International Business Machines Corporation Method and apparatus for shared persistent virtual storage on existing operating systems
US6138125A (en) 1998-03-31 2000-10-24 Lsi Logic Corporation Block coding method and system for failure recovery in disk arrays
US6360330B1 (en) 1998-03-31 2002-03-19 Emc Corporation System and method for backing up data stored in multiple mirrors on a mass storage subsystem under control of a backup server
US6263342B1 (en) 1998-04-01 2001-07-17 International Business Machines Corp. Federated searching of heterogeneous datastores using a federated datastore object
US6128627A (en) * 1998-04-15 2000-10-03 Inktomi Corporation Consistent data storage in an object cache
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US6122685A (en) 1998-05-06 2000-09-19 Emc Corporation System for improving the performance of a disk storage device by reconfiguring a logical volume of data in response to the type of operations being performed
US6314433B1 (en) 1998-06-12 2001-11-06 Hewlett-Packard Company Frame-based heroic data recovery
FR2780178B1 (fr) 1998-06-18 2001-08-10 Inst Nat Rech Inf Automat Procede de transformation et d'acheminement de donnees entre des serveurs d'agents presents sur des machines et un serveur d'agent central present sur une autre machine
US6425057B1 (en) 1998-08-27 2002-07-23 Hewlett-Packard Company Caching protocol method and system based on request frequency and relative storage duration
US6714935B1 (en) 1998-09-21 2004-03-30 Microsoft Corporation Management of non-persistent data in a persistent database
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6519597B1 (en) 1998-10-08 2003-02-11 International Business Machines Corporation Method and apparatus for indexing structured documents with rich data types
US6249841B1 (en) 1998-12-03 2001-06-19 Ramtron International Corporation Integrated circuit memory device and method incorporating flash and ferroelectric random access memory arrays
US6338056B1 (en) 1998-12-14 2002-01-08 International Business Machines Corporation Relational database extender that supports user-defined index types and user-defined search
US6378043B1 (en) 1998-12-31 2002-04-23 Oracle Corporation Reward based cache management
US6640278B1 (en) 1999-03-25 2003-10-28 Dell Products L.P. Method for configuration and management of storage resources in a storage network
US6401093B1 (en) 1999-03-31 2002-06-04 International Business Machines Corporation Cross file system caching and synchronization
US6295578B1 (en) 1999-04-09 2001-09-25 Compaq Computer Corporation Cascaded removable media data storage system
US6535949B1 (en) * 1999-04-19 2003-03-18 Research In Motion Limited Portable electronic device having a log-structured file system in flash memory
US6237065B1 (en) 1999-05-14 2001-05-22 Hewlett-Packard Company Preemptive replacement strategy for a caching dynamic translator
US6317806B1 (en) 1999-05-20 2001-11-13 International Business Machines Corporation Static queue and index queue for storing values identifying static queue locations
US6381605B1 (en) 1999-05-29 2002-04-30 Oracle Corporation Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets
US6370534B1 (en) 1999-06-01 2002-04-09 Pliant Technologies, Inc. Blocking techniques for data storage
TW479194B (en) 1999-06-18 2002-03-11 Phoenix Tech Ltd Method and apparatus for execution of an application during computer pre-boot operation
US6438750B1 (en) 1999-06-18 2002-08-20 Phoenix Technologies Ltd. Determining loading time of an operating system
US6199195B1 (en) 1999-07-08 2001-03-06 Science Application International Corporation Automatically generated objects within extensible object frameworks and links to enterprise resources
JP3812928B2 (ja) 1999-07-14 2006-08-23 株式会社日立製作所 外部記憶装置及び情報処理システム
US6513051B1 (en) 1999-07-16 2003-01-28 Microsoft Corporation Method and system for backing up and restoring files stored in a single instance store
US6311232B1 (en) 1999-07-29 2001-10-30 Compaq Computer Corporation Method and apparatus for configuring storage devices
US6542904B2 (en) 1999-07-30 2003-04-01 International Business Machines Corporation Method and system for efficiently providing maintenance activity on a relational database that is utilized within a processing system
JP3239335B2 (ja) 1999-08-18 2001-12-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 電気的接続用構造体の形成方法およびはんだ転写用基板
JP2001067258A (ja) 1999-08-25 2001-03-16 Mitsubishi Electric Corp フラッシュメモリ内蔵半導体装置及びフラッシュメモリアドレス変換方法
US6370541B1 (en) 1999-09-21 2002-04-09 International Business Machines Corporation Design and implementation of a client/server framework for federated multi-search and update across heterogeneous datastores
US6539456B2 (en) * 1999-10-13 2003-03-25 Intel Corporation Hardware acceleration of boot-up utilizing a non-volatile disk cache
US6751658B1 (en) 1999-10-18 2004-06-15 Apple Computer, Inc. Providing a reliable operating system for clients of a net-booted environment
US6338126B1 (en) 1999-12-06 2002-01-08 Legato Systems, Inc. Crash recovery without complete remirror
WO2001044948A1 (en) 1999-12-17 2001-06-21 Koninklijke Philips Electronics N.V. Data processor with cache
JP3562419B2 (ja) 2000-02-01 2004-09-08 日本電気株式会社 電子交換機
US6556983B1 (en) 2000-01-12 2003-04-29 Microsoft Corporation Methods and apparatus for finding semantic information, such as usage logs, similar to a query using a pattern lattice data space
US6366996B1 (en) 2000-01-24 2002-04-02 Pmc-Sierra, Inc. Page memory management in non time critical data buffering applications
US6694336B1 (en) 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
AU2001233131A1 (en) 2000-02-02 2001-08-14 Sony Electronics Inc. System and method for effectively utilizing a cache memory in an electronic device
JP4131894B2 (ja) 2000-02-29 2008-08-13 株式会社東芝 ランダムディスクライトに好適なディスク制御機構
JP4078010B2 (ja) 2000-03-03 2008-04-23 株式会社日立グローバルストレージテクノロジーズ 磁気ディスク装置及び情報記録方法
US6633978B1 (en) 2000-03-31 2003-10-14 Hewlett-Packard Development Company, L.P. Method and apparatus for restoring computer resources
US6718361B1 (en) 2000-04-07 2004-04-06 Network Appliance Inc. Method and apparatus for reliable and scalable distribution of data files in distributed networks
US6820088B1 (en) 2000-04-10 2004-11-16 Research In Motion Limited System and method for synchronizing data records between multiple databases
US7421541B2 (en) * 2000-05-12 2008-09-02 Oracle International Corporation Version management of cached permissions metadata
WO2001088720A2 (en) 2000-05-15 2001-11-22 Superspeed Software, Inc. System and method for high-speed substitute cache
US6671699B1 (en) 2000-05-20 2003-12-30 Equipe Communications Corporation Shared database usage in network devices
US6715016B1 (en) 2000-06-01 2004-03-30 Hitachi, Ltd. Multiple operating system control method
JP3705731B2 (ja) 2000-06-05 2005-10-12 富士通株式会社 入出力制御装置
US7412369B1 (en) 2000-06-09 2008-08-12 Stmicroelectronics, Inc. System and method for designing and optimizing the memory of an embedded processing system
TW576966B (en) 2000-06-23 2004-02-21 Intel Corp Non-volatile cache integrated with mass storage device
US6557077B1 (en) 2000-07-07 2003-04-29 Lsi Logic Corporation Transportable memory apparatus and associated methods of initializing a computer system having the same
US6928521B1 (en) * 2000-08-01 2005-08-09 International Business Machines Corporation Method, system, and data structures for using metadata in updating data in a storage device
US6418510B1 (en) 2000-09-14 2002-07-09 International Business Machines Corporation Cooperative cache and rotational positioning optimization (RPO) scheme for a direct access storage device (DASD)
US6725342B1 (en) 2000-09-26 2004-04-20 Intel Corporation Non-volatile mass storage cache coherency apparatus
US6434682B1 (en) 2000-09-28 2002-08-13 International Business Machines Corporation Data management system with shortcut migration via efficient automatic reconnection to previously migrated copy
US7043524B2 (en) 2000-11-06 2006-05-09 Omnishift Technologies, Inc. Network caching system for streamed applications
US6999956B2 (en) 2000-11-16 2006-02-14 Ward Mullins Dynamic object-driven database manipulation and mapping system
US6629198B2 (en) 2000-12-08 2003-09-30 Sun Microsystems, Inc. Data storage system and method employing a write-ahead hash log
US7178100B2 (en) 2000-12-15 2007-02-13 Call Charles G Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers
US6871271B2 (en) 2000-12-21 2005-03-22 Emc Corporation Incrementally restoring a mass storage device to a prior state
JP2002197073A (ja) * 2000-12-25 2002-07-12 Hitachi Ltd キャッシュ一致制御装置
US6651141B2 (en) 2000-12-29 2003-11-18 Intel Corporation System and method for populating cache servers with popular media contents
US6546472B2 (en) 2000-12-29 2003-04-08 Hewlett-Packard Development Company, L.P. Fast suspend to disk
US6516380B2 (en) * 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US6877081B2 (en) 2001-02-13 2005-04-05 International Business Machines Corporation System and method for managing memory compression transparent to an operating system
US6918022B2 (en) 2001-02-28 2005-07-12 Intel Corporation Memory space organization
JP2002259186A (ja) 2001-03-06 2002-09-13 Hitachi Ltd Tree構造型インデクスの整合性チェック処理方法およびプログラムおよび装置
US6877111B2 (en) 2001-03-26 2005-04-05 Sun Microsystems, Inc. Method and apparatus for managing replicated and migration capable session state for a Java platform
US6996660B1 (en) 2001-04-09 2006-02-07 Matrix Semiconductor, Inc. Memory device and method for storing and reading data in a write-once memory array
US6584034B1 (en) 2001-04-23 2003-06-24 Aplus Flash Technology Inc. Flash memory array structure suitable for multiple simultaneous operations
US6961723B2 (en) 2001-05-04 2005-11-01 Sun Microsystems, Inc. System and method for determining relevancy of query responses in a distributed network search mechanism
US6717763B2 (en) 2001-05-16 2004-04-06 Hitachi Global Storage Technologies, Netherlands B.V. Power savings method and apparatus for disk drives
JP2002342037A (ja) 2001-05-22 2002-11-29 Fujitsu Ltd ディスク装置
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
US6697818B2 (en) 2001-06-14 2004-02-24 International Business Machines Corporation Methods and apparatus for constructing and implementing a universal extension module for processing objects in a database
US6922765B2 (en) 2001-06-21 2005-07-26 International Business Machines Corporation Method of allocating physical memory space having pinned and non-pinned regions
US6772178B2 (en) 2001-07-27 2004-08-03 Sun Microsystems, Inc. Method and apparatus for managing remote data replication in a distributed computer system
US6742097B2 (en) 2001-07-30 2004-05-25 Rambus Inc. Consolidation of allocated memory to reduce power consumption
US6769050B1 (en) 2001-09-10 2004-07-27 Rambus Inc. Techniques for increasing bandwidth in port-per-module memory systems having mismatched memory modules
JP3822081B2 (ja) 2001-09-28 2006-09-13 東京エレクトロンデバイス株式会社 データ書込装置、データ書込制御方法及びプログラム
JP4093741B2 (ja) 2001-10-03 2008-06-04 シャープ株式会社 外部メモリ制御装置およびそれを含んだデータ駆動型情報処理装置
US6636942B2 (en) 2001-10-05 2003-10-21 International Business Machines Corporation Storage structure for storing formatted data on a random access medium
US6944757B2 (en) 2001-10-16 2005-09-13 Dell Products L.P. Method for allowing CD removal when booting embedded OS from a CD-ROM device
EP1304620A1 (en) 2001-10-17 2003-04-23 Texas Instruments Incorporated Cache with selective write allocation
US20030110357A1 (en) 2001-11-14 2003-06-12 Nguyen Phillip V. Weight based disk cache replacement method
US6687158B2 (en) 2001-12-21 2004-02-03 Fujitsu Limited Gapless programming for a NAND type flash memory
JP2003196032A (ja) 2001-12-26 2003-07-11 Nec Corp ストレージ装置のライトキャッシュ制御方法及びストレージ装置
US20030154314A1 (en) 2002-02-08 2003-08-14 I/O Integrity, Inc. Redirecting local disk traffic to network attached storage
US6782453B2 (en) 2002-02-12 2004-08-24 Hewlett-Packard Development Company, L.P. Storing data in memory
US6771536B2 (en) 2002-02-27 2004-08-03 Sandisk Corporation Operating techniques for reducing program and read disturbs of a non-volatile memory
US6901499B2 (en) 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
JP4299555B2 (ja) * 2002-03-15 2009-07-22 富士通株式会社 キャッシュ制御プログラム
US7136966B2 (en) 2002-03-18 2006-11-14 Lsi Logic Corporation Method and apparatus for using a solid state disk device as a storage controller cache
US20040044776A1 (en) 2002-03-22 2004-03-04 International Business Machines Corporation Peer to peer file sharing system using common protocols
US7065627B2 (en) 2002-03-25 2006-06-20 International Business Machines Corporation Method and system for providing an event driven image for a boot record
JP4229626B2 (ja) 2002-03-26 2009-02-25 富士通株式会社 ファイル管理システム
US6820180B2 (en) 2002-04-04 2004-11-16 International Business Machines Corporation Apparatus and method of cascading backup logical volume mirrors
US6966006B2 (en) 2002-05-09 2005-11-15 International Business Machines Corporation Adaptive startup policy for accelerating multi-disk array spin-up
US6898609B2 (en) 2002-05-10 2005-05-24 Douglas W. Kerwin Database scattering system
US7062675B1 (en) 2002-06-25 2006-06-13 Emc Corporation Data storage cache system shutdown scheme
US7065527B2 (en) 2002-06-26 2006-06-20 Microsoft Corporation Systems and methods of optimizing metadata publishing system updates by alternating databases
US7017037B2 (en) 2002-06-27 2006-03-21 Microsoft Corporation Apparatus and method to decrease boot time and hibernate awaken time of a computer system utilizing disk spin-up-time
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
US6941310B2 (en) 2002-07-17 2005-09-06 Oracle International Corp. System and method for caching data for a mobile application
EP1527392B1 (en) 2002-07-23 2011-11-16 Research In Motion Limited Data store management system and method for wireless devices
JP2004054845A (ja) 2002-07-24 2004-02-19 Sony Corp データ管理装置
JP4026753B2 (ja) 2002-07-25 2007-12-26 株式会社日立製作所 半導体集積回路
NZ520786A (en) 2002-08-14 2005-06-24 Daniel James Oaeconnell Method of booting a computer system using a memory image of the post boot content of the system RAM memory
US7043610B2 (en) 2002-08-19 2006-05-09 Aristos Logic Corporation System and method for maintaining cache coherency without external controller intervention
FI20021620A (fi) 2002-09-10 2004-03-11 Nokia Corp Muistirakenne, järjestelmä ja elektroniikkalaite sekä menetelmä muistipiirin yhteydessä
US20040078508A1 (en) * 2002-10-02 2004-04-22 Rivard William G. System and method for high performance data storage and retrieval
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US7284149B1 (en) 2002-10-16 2007-10-16 Ken Scott Fisher Intermittent connection protection for external computer devices
US20040088481A1 (en) 2002-11-04 2004-05-06 Garney John I. Using non-volatile memories for disk caching
US7035974B2 (en) 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US7502791B2 (en) 2002-11-26 2009-03-10 Norsync Technology A/S Database constraint enforcer
US7036040B2 (en) 2002-11-26 2006-04-25 Microsoft Corporation Reliability of diskless network-bootable computers using non-volatile memory cache
US7003620B2 (en) 2002-11-26 2006-02-21 M-Systems Flash Disk Pioneers Ltd. Appliance, including a flash memory, that is robust under power failure
US7039765B1 (en) 2002-12-19 2006-05-02 Hewlett-Packard Development Company, L.P. Techniques for cache memory management using read and write operations
US7010645B2 (en) 2002-12-27 2006-03-07 International Business Machines Corporation System and method for sequentially staging received data to a write cache in advance of storing the received data
KR100504696B1 (ko) 2003-02-26 2005-08-03 삼성전자주식회사 블록 소거/프로그램 정보를 저장하기 위한 상태 셀들의어레이를 포함한 낸드 플래시 메모리 장치
JP2004272324A (ja) 2003-03-05 2004-09-30 Nec Corp ディスクアレイ装置
US7505958B2 (en) 2004-09-30 2009-03-17 International Business Machines Corporation Metadata management for a data abstraction model
US20050286855A1 (en) 2003-04-25 2005-12-29 Matsushita Electric Industrial Co., Ltd. Data recording apparatus
US7296043B2 (en) 2003-05-30 2007-11-13 Microsoft Corporation Memory file size adjustment
US7139933B2 (en) 2003-06-20 2006-11-21 International Business Machines Corporation Preserving cache data against cluster reboot
US7299379B2 (en) 2003-06-27 2007-11-20 Intel Corporation Maintaining cache integrity by recording write addresses in a log
JP4090400B2 (ja) 2003-07-24 2008-05-28 株式会社日立製作所 ストレージシステム
US7068575B2 (en) 2003-07-30 2006-06-27 Microsoft Corporation High speed optical disc recording
US6977842B2 (en) 2003-09-16 2005-12-20 Micron Technology, Inc. Boosted substrate/tub programming for flash memories
US7366866B2 (en) 2003-10-30 2008-04-29 Hewlett-Packard Development Company, L.P. Block size allocation in copy operations
EP1538525A1 (en) 2003-12-04 2005-06-08 Texas Instruments Incorporated ECC computation simultaneously performed while reading or programming a flash memory
WO2005057400A1 (ja) 2003-12-09 2005-06-23 Matsushita Electric Industrial Co., Ltd. 電子装置、その制御方法、ホスト装置及びその制御方法
US7130962B2 (en) 2003-12-18 2006-10-31 Intel Corporation Writing cache lines on a disk drive
JP2005191413A (ja) 2003-12-26 2005-07-14 Toshiba Corp 不揮発性半導体記憶装置
US20050251617A1 (en) 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
US8458488B2 (en) 2003-12-31 2013-06-04 International Business Machines Corporation Method and system for diagnosing operation of tamper-resistant software
US20050145923A1 (en) 2004-01-06 2005-07-07 Chiou-Feng Chen NAND flash memory with enhanced program and erase performance, and fabrication process
US6993618B2 (en) 2004-01-15 2006-01-31 Super Talent Electronics, Inc. Dual-mode flash storage exchanger that transfers flash-card data to a removable USB flash key-drive with or without a PC host
US7127549B2 (en) 2004-02-04 2006-10-24 Sandisk Corporation Disk acceleration using first and second storage devices
KR100564613B1 (ko) 2004-02-25 2006-03-29 삼성전자주식회사 플래시 메모리 및 광 드라이브의 펌웨어 모듈 동적 로딩동작 방법
US7421562B2 (en) 2004-03-01 2008-09-02 Sybase, Inc. Database system providing methodology for extended memory support
US20050204091A1 (en) 2004-03-11 2005-09-15 Kilbuck Kevin M. Non-volatile memory with synchronous DRAM interface
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7143120B2 (en) 2004-05-03 2006-11-28 Microsoft Corporation Systems and methods for automated maintenance and repair of database and file systems
US7366740B2 (en) 2004-05-03 2008-04-29 Microsoft Corporation Systems and methods for automatic maintenance and repair of enitites in a data model
JP4392601B2 (ja) 2004-05-07 2010-01-06 パナソニック株式会社 データアクセス装置および記録媒体
US7231497B2 (en) 2004-06-15 2007-06-12 Intel Corporation Merging write-back and write-through cache policies
US20060010293A1 (en) * 2004-07-09 2006-01-12 Schnapp Michael G Cache for file system used in storage system
CN1266229C (zh) 2004-08-10 2006-07-26 汕头市龙华珠光颜料有限公司 一种随角异色的多层变色颜料及其生产方法
US7171532B2 (en) 2004-08-30 2007-01-30 Hitachi, Ltd. Method and system for data lifecycle management in an external storage linkage environment
JP4192129B2 (ja) 2004-09-13 2008-12-03 株式会社東芝 メモリ管理装置
US20060075185A1 (en) 2004-10-06 2006-04-06 Dell Products L.P. Method for caching data and power conservation in an information handling system
US7657756B2 (en) * 2004-10-08 2010-02-02 International Business Machines Corporaiton Secure memory caching structures for data, integrity and version values
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
JP4956922B2 (ja) 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
US20060106889A1 (en) 2004-11-12 2006-05-18 Mannby Claes-Fredrik U Method, system, and program for managing revisions to a file
JP4689247B2 (ja) 2004-11-19 2011-05-25 キヤノン株式会社 カメラ及びその制御方法
KR100643287B1 (ko) 2004-11-19 2006-11-10 삼성전자주식회사 플래시 메모리의 데이터 처리 장치 및 방법
US20060136664A1 (en) 2004-12-16 2006-06-22 Trika Sanjeev N Method, apparatus and system for disk caching in a dual boot environment
US7480654B2 (en) 2004-12-20 2009-01-20 International Business Machines Corporation Achieving cache consistency while allowing concurrent changes to metadata
US7480761B2 (en) 2005-01-10 2009-01-20 Microsoft Corporation System and methods for an overlay disk and cache using portable flash memory
KR100670010B1 (ko) 2005-02-03 2007-01-19 삼성전자주식회사 하이브리드 브로드캐스트 암호화 방법
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US8812781B2 (en) 2005-04-19 2014-08-19 Hewlett-Packard Development Company, L.P. External state cache for computer processor
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7516277B2 (en) 2005-04-28 2009-04-07 Sap Ag Cache monitoring using shared memory
US20060277359A1 (en) 2005-06-06 2006-12-07 Faber Robert W Blank memory location detection mechanism
US7523256B2 (en) 2005-06-15 2009-04-21 Bea Systems, Inc. System and method for scheduling disk writes in an application server of transactional environment
JP4833595B2 (ja) 2005-06-30 2011-12-07 大和ハウス工業株式会社 脱臭機能を備えたシューズボックス
US7640398B2 (en) 2005-07-11 2009-12-29 Atmel Corporation High-speed interface for high-density flash with two levels of pipelined cache
US7634516B2 (en) 2005-08-17 2009-12-15 International Business Machines Corporation Maintaining an aggregate including active files in a storage pool in a random access medium
US7409524B2 (en) 2005-08-17 2008-08-05 Hewlett-Packard Development Company, L.P. System and method for responding to TLB misses
US7533215B2 (en) 2005-09-15 2009-05-12 Intel Corporation Distributed and packed metadata structure for disk cache
US7395401B2 (en) 2005-09-30 2008-07-01 Sigmatel, Inc. System and methods for accessing solid-state memory devices
US7409537B2 (en) 2005-10-06 2008-08-05 Microsoft Corporation Fast booting an operating system from an off state
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US20070150966A1 (en) 2005-12-22 2007-06-28 Kirschner Wesley A Method and apparatus for maintaining a secure software boundary
US7451353B2 (en) 2005-12-23 2008-11-11 Intel Corporation Cache disassociation detection
US7627713B2 (en) 2005-12-29 2009-12-01 Intel Corporation Method and apparatus to maintain data integrity in disk cache memory during and after periods of cache inaccessibility
US20070207800A1 (en) 2006-02-17 2007-09-06 Daley Robert C Diagnostics And Monitoring Services In A Mobile Network For A Mobile Device
JP2007233896A (ja) 2006-03-03 2007-09-13 Hitachi Ltd ストレージ装置及びその制御方法
ATE488009T1 (de) 2006-03-31 2010-11-15 Mosaid Technologies Inc Flash-speichersystem-steuerverfahren
US7558913B2 (en) 2006-06-20 2009-07-07 Microsoft Corporation Atomic commit of cache transfer with staging area
US7512739B2 (en) * 2006-07-05 2009-03-31 International Business Machines Corporation Updating a node-based cache LRU tree
US7818701B1 (en) 2006-12-22 2010-10-19 Cypress Semiconductor Corporation Memory controller with variable zone size
US20080172519A1 (en) 2007-01-11 2008-07-17 Sandisk Il Ltd. Methods For Supporting Readydrive And Readyboost Accelerators In A Single Flash-Memory Storage Device
TWI417722B (zh) * 2007-01-26 2013-12-01 Hicamp Systems Inc 階層式不可改變的內容可定址的記憶體處理器
US7945734B2 (en) 2007-08-10 2011-05-17 Eastman Kodak Company Removable storage device with code to allow change detection
US8190652B2 (en) 2007-12-06 2012-05-29 Intel Corporation Achieving coherence between dynamically optimized code and original code
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US8082384B2 (en) 2008-03-26 2011-12-20 Microsoft Corporation Booting an electronic device using flash memory and a limited function memory controller
US8275970B2 (en) 2008-05-15 2012-09-25 Microsoft Corp. Optimizing write traffic to a disk
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
EP3075677B8 (en) 2014-06-02 2022-10-26 TR Holdings Inc. Capped container

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018526740A (ja) * 2015-08-24 2018-09-13 アリババ グループ ホウルディング リミテッド モバイル端末のためのデータ記憶方法及び装置
US10776323B2 (en) 2015-08-24 2020-09-15 Alibaba Group Holding Limited Data storage for mobile terminals

Also Published As

Publication number Publication date
TWI471726B (zh) 2015-02-01
US20100070747A1 (en) 2010-03-18
WO2010056571A2 (en) 2010-05-20
EP2353081A2 (en) 2011-08-10
WO2010056571A3 (en) 2010-07-29
US8135914B2 (en) 2012-03-13
US20120173824A1 (en) 2012-07-05
EP2353081A4 (en) 2012-06-27
US20110314202A1 (en) 2011-12-22
ES2663701T3 (es) 2018-04-16
EP2353081B1 (en) 2017-12-27
CN102216899A (zh) 2011-10-12
US8489815B2 (en) 2013-07-16
CN102216899B (zh) 2016-12-07
TW201019110A (en) 2010-05-16
US8032707B2 (en) 2011-10-04

Similar Documents

Publication Publication Date Title
US10387313B2 (en) Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US8135914B2 (en) Managing cache data and metadata
JP5662398B2 (ja) 先読み技術を利用して行われる、システムのオペレーティングシステムのブート
TWI388983B (zh) 用於促進快閃記憶體系統之快速喚起的方法及系統
RU2568280C2 (ru) Быстрый запуск компьютера
JP5162535B2 (ja) メモリシステムを利用する方法及びメモリシステム
US20150039837A1 (en) System and method for tiered caching and storage allocation
US20060224874A1 (en) Method for updating system management basic input output system (SMBIOS) data
KR101651204B1 (ko) 스냅샷 이미지의 동기화 장치 및 방법
WO2015147981A1 (en) Initialization trace of a computing device
US20140372710A1 (en) System and method for recovering from an unexpected shutdown in a write-back caching environment
CN111796882A (zh) 电子设备系统处理方法、装置及电子设备
US10228961B2 (en) Live storage domain decommissioning in a virtual environment
US12093568B1 (en) Segregated filesystem metadata operations using buffered atomic write interface
CN107704198B (zh) 信息处理的方法及电子设备

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20130108