JP2012508932A - キャッシュデータおよびメタデータを管理すること - Google Patents
キャッシュデータおよびメタデータを管理すること Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, 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
【選択図】図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つのプロセッサーとを備えるコンピューターシステムを提供する。
本発明の一部の実施形態は、キャッシュ内容が、電力遷移をまたいでディスクストレージの内容を正確に反映することを確実にするための技術を提供する。例えば、一部の実施形態は、キャッシュ内容が、電力遷移をまたいで真正のままであり、かつ/または陳腐になっていないことを確実にする能力を提供する。さらに、一部の実施形態は、キャッシュメタデータを管理して、メタデータが電力遷移中に改ざんされていないことを確実にするための技術を提供する。さらに、一部の実施形態は、電力遷移と通常の動作の両方が実行されることが可能な効率を向上させることができるキャッシュメタデータを格納するための能力を提供する。以下のセクションは、これらの実施形態を詳細に説明する。
I.キャッシュデータ真正性を検証すること
コンピューターが電力遷移を経験する(例えば、スタンバイモードまたはハイバネーションモードに入れられる、または再起動される)際、キャッシュデバイスがコンピューターから切断されることが可能であり、デバイスの内容が変更される(例えば、悪意のあるハッカーによって)可能性がある。例えば、コンピューターがスタンバイモードまたはハイバネーションモードに入れられる際、フラッシュメモリードライブなどのリムーバブルキャッシュデバイスがコンピューターから取り外される可能性があり、デバイスの内容が変更される可能性がある。内部NVRAMデバイスなどのリムーバブルでないデバイスさえ、オペレーティングシステムが再起動される(すなわち、リロードされ、それにより、コンピューターを再起動させる)際、切断される可能性があり、デバイスの内容が変更される可能性がある。その結果、キャッシュデバイスは、コンピューターに再接続されたときに、ユーザーが考えるのとは異なる情報を格納する可能性がある(すなわち、キャッシュの中に格納されたデータは、「真正」でない可能性がある)。I/O(入出力)要求を満足させるのに真正でないデータがキャッシュから供給された場合、コンピューターの動作は、悪影響を受ける可能性がある。
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は完了する。
動作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.キャッシュデータ陳腐性を防止すること
前述したとおり、従来のオペレーティングシステムは、電力遷移中にディスク上に格納されたデータ項目に対して書き込み動作が実行されて、このことがキャッシュ内容を陳腐にする際、そのことを検出することができない。本発明の一部の実施形態は、これらの「オフライン書き込み」が行われた場合、そのことを検出して、キャッシュ内容が、電力遷移が生じた後にディスク上の格納されているデータを正確に反映することを確実にするための機構を提供する。
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つまたは複数のネットワークを介してアクセスされる場合、接続性が失われる可能性があり、あるいはキャッシュデバイスがコンピューターから取り外し可能である場合、突然の(例えば、意図しない)取り外しが生じる可能性がある。その結果、一部の実施形態は、シャットダウン中に行われる書き込みだけでなく、ディスクに対して実行されるすべての書き込み(またはその一部分)の記録をとる書き込みレコーダーと、依然としてオンライン状態である間、キャッシュ「スナップショット」を定期的にキャプチャーするように構成されたキャッシュデバイスとを使用することが可能である。このため、キャッシュが、或る期間にわたってアクセスできなくなり、後に再接続された場合、最新のキャッシュスナップショットは、完全に再構築されなければならないのではなく、書き込みレコーダーによって記録にとられた書き込み動作を使用して更新されることが可能である。
シャットダウン中に行われない書き込み動作が同じく、あるいは代替として記録にとられることが可能であるので、本発明は、シャットダウンが開始された際に活性になるように構成された書き込みレコーダー構成要素を使用することに限定されないことを認識されたい。例えば、一部の実施形態において、キャッシュデバイスは、或る期間にわたってアクセスできなくなる可能性があり得る。例えば、キャッシュデバイスが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.キャッシュメタデータ
前述したとおり、キャッシュメタデータは、データ項目が格納されたディスクアドレスと、それらのデータ項目がキャッシュされたキャッシュデバイス上の対応するアドレスの間のマッピングを提供することが可能である。本発明の一部の実施形態は、システムランタイム動作中にキャッシュメタデータを格納するのに要求されるメモリーの量を大幅に低減する、キャッシュメタデータを格納するための能力を提供する。
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ノード4101までたどられ、要素402より大きいが、要素404より小さい鍵の値を特定するために、ポインタ403がレベル2ノード4102(図示せず)までたどられ、以下同様である。同様に、レベル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)
- メモリーを備え、記憶媒体(706)およびキャッシュデバイス(110)が結合されており、前記記憶媒体(706)は、複数のデータ項目をそれぞれ、それぞれのアドレスに格納し、前記複数のデータ項目のそれぞれは、前記キャッシュデバイス(110)上の対応するアドレスにも格納され、コンピューター(700)によってアクセス可能なキャッシュメタデータが、前記記憶媒体上の前記アドレスと各データ項目が格納される前記キャッシュデバイス上の前記対応するアドレスの間のマッピングを提供する、前記コンピューターを動作させるための方法であって、
(A)複数の階層レベルを備える階層データ構造で前記キャッシュメタデータを格納する動作と、
(B)前記複数の階層レベルのサブセットだけを前記メモリーにロードする動作と、
を備える方法。 - 前記動作(B)は、前記キャッシュデバイス上に前記複数の階層レベルの残りのレベルの少なくとも一部分を格納する動作をさらに備える請求項1に記載の方法。
- 前記コンピューターの再起動を開始する動作、および/または前記キャッシュデバイスをオフラインにする動作を備える、前記動作(A)の後に実行される動作をさらに備え、さらに前記動作(B)は、前記コンピューターの前記再起動が開始され、かつ/または前記キャッシュデバイスがオフラインにされると、実行される請求項1に記載の方法。
- 前記階層データ構造は、少なくとも100である分岐数を有する請求項1に記載の方法。
- 前記動作(A)は、前記キャッシュデバイスをオフラインにするコマンドに応答して、前記キャッシュデバイス上にキャッシュメタデータを格納する動作をさらに備える請求項1に記載の方法。
- (D)前記記憶媒体上のアドレスに格納されたデータ項目を読み取る要求を受け取る動作と、
(E)前記キャッシュメタデータの第1の部分にアクセスして、前記キャッシュデバイス上で前記データ項目が格納された対応するアドレスを識別する動作と、
(F)前記キャッシュメタデータの前記第1の部分の少なくともいくらかを前記メモリーの中に格納する動作と、
をさらに備える請求項1に記載の方法。 - 前記動作(D)は、オペレーティングシステムを起動し、かつ/または前記キャッシュデバイスをオフラインにするように実行される動作の一環として、データ項目を読み取る要求を受け取る動作をさらに備える請求項6に記載の方法。
- 前記動作(D)は、前記記憶媒体上のそれぞれのアドレスにそれぞれが格納された複数のデータ項目を読み取る要求を受け取る動作をさらに備え、
前記動作(E)は、(D)において受け取られた各要求に関して、前記キャッシュメタデータにアクセスして、前記キャッシュデバイス上でデータ項目が格納された対応するアドレスを識別する動作をさらに備え、
前記動作(F)は、(E)における各動作に関して、前記対応するアドレスの指示を前記メモリーの中に格納する動作をさらに備える方法であって、
(G)前記コンピューターをシャットダウンするコマンドを受け取ると、(C)において前記メモリーにロードされた前記複数の階層レベルの前記サブセット、および/または(F)において格納された前記指示を前記キャッシュデバイスに格納する動作
をさらに備える請求項6に記載の方法。 - 前記動作(F)は、
(F1)キャッシュメタデータの目標量が前記メモリーの中に既に格納されているかどうかを判定する動作と、
(F2)キャッシュメタデータの前記目標量が前記メモリーの中に既に格納されていることが判定された場合、
前記メモリーから消去されるべきキャッシュメタデータの第2の部分を識別する動作、
キャッシュメタデータの前記第2の部分を消去する動作、および
キャッシュメタデータの前記第1の部分を前記メモリーの中に格納する動作と、
(F3)キャッシュメタデータの前記目標量が前記メモリーの中に既に格納されてはいないことが判定された場合、キャッシュメタデータの前記第1の部分を前記メモリーの中に格納する動作と、
をさらに備える請求項6に記載の方法。 - 前記メモリーは、或る記憶容量を有し、さらに前記動作(F1)における前記判定する動作は、前記メモリーの前記記憶容量を参照して実行される請求項9に記載の方法。
- 前記動作(E)は、前記動作(A)の完了後に前記キャッシュメタデータが変更されていないことを検証する動作をさらに備える請求項6に記載の方法。
- 前記動作(A)は、前記キャッシュメタデータの少なくとも一部分の表現を生成し、前記表現を前記キャッシュデバイスに書き込む動作をさらに備え、さらに(E)における前記検証する動作は、
(E1)前記キャッシュデバイスに書き込まれた前記表現を取り出す動作と、
(E2)前記表現を再生成する動作と、
(E3)(E1)において取り出された前記表現を(E2)において再生成された前記表現と比較して、前記キャッシュデバイス上で前記データ項目が格納された前記対応するアドレスを識別するのに、前記キャッシュメタデータが信頼できるように使用され得るかどうかを判定する動作と、
を備える請求項11に記載の方法。 - (E4)前記対応するアドレスを識別するのに、前記キャッシュメタデータが信頼できるように使用され得ると判定された場合、前記キャッシュデバイス上の前記対応するアドレスにおける前記データ項目を読み取る動作と、
(E5)前記対応するアドレスを識別するのに、前記キャッシュメタデータが信頼できるように使用され得ないと判定された場合、前記キャッシュメタデータを強制排除し、前記記憶媒体上の前記アドレスから前記データ項目を読み取る動作と、
をさらに備える請求項12に記載の方法。 - メモリーを備え、ディスクストレージ(706)およびキャッシュデバイス(110)が結合されており、前記ディスクストレージは、複数のデータ項目をそれぞれ、それぞれのアドレスに格納し、前記複数のデータ項目のそれぞれは、前記キャッシュデバイス上の対応するアドレスにも格納され、コンピューター(700)によってアクセス可能なキャッシュメタデータが、前記ディスクストレージ上の前記アドレスと各データ項目が格納された前記キャッシュデバイス上の前記対応するアドレスの間のマッピングを提供する、前記コンピューターによって実行されると、
(A)複数の階層レベルを備える階層データ構造で前記キャッシュメタデータを前記キャッシュデバイスの中に格納する動作と、
(B)前記コンピューターの再起動を開始する動作と、
(C)前記コンピューターの前記再起動が開始されると、前記複数の階層レベルのサブセットだけを前記メモリーにロードする動作と、
(D)前記記憶媒体上のアドレスに格納されたデータ項目を読み取る要求を受け取る動作と、
(E)前記キャッシュメタデータの第1の部分にアクセスして、前記キャッシュデバイス上で前記データ項目が格納された対応するアドレスを識別する動作と、
(F)前記キャッシュメタデータの前記第1の部分を前記メモリーの中に格納する動作と、
を備える方法を実行する符号化された命令を有する少なくとも1つのコンピューター可読記憶媒体。 - メモリー(704)と、
それぞれのアドレスに複数のデータ項目を格納する記憶媒体(706)と、
対応するアドレスに前記複数のデータ項目をやはり格納し、前記記憶媒体上の前記アドレスと各データ項目が格納された前記キャッシュデバイス上の前記対応するアドレスの間のマッピングを提供するキャッシュメタデータを格納し、前記キャッシュメタデータは、複数の階層レベルを備える階層データ構造で格納される、キャッシュデバイス(110)と、
プログラミングされた少なくとも1つのプロセッサー(703)と、
を備えるコンピューターシステム(700)であって、前記プロセッサーは、
前記コンピューターの再起動が開始されると、前記複数の階層レベルのサブセットだけを前記メモリーにロードし、
前記キャッシュメタデータを使用して、前記キャッシュデバイスの中で前記データ項目が格納された対応するアドレスを識別すること、および識別された対応するアドレスを前記メモリーの中に格納することによって、前記記憶媒体上のそれぞれのアドレスに格納されたデータ項目を読み取る要求を処理し、
前記複数の階層レベルの前記サブセット、および前記識別された対応するアドレスを前記メモリーから前記キャッシュデバイスに転送することによって、前記コンピューターをシャットダウンするコマンドを処理する、
ようにプログラミングされたプロセッサー(703)である、
コンピューターシステム(700)。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018526740A (ja) * | 2015-08-24 | 2018-09-13 | アリババ グループ ホウルディング リミテッド | モバイル端末のためのデータ記憶方法及び装置 |
Families Citing this family (58)
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)
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 |
-
2008
- 2008-11-14 US US12/271,400 patent/US8032707B2/en not_active Expired - Fee Related
-
2009
- 2009-11-03 CN CN200980145878.1A patent/CN102216899B/zh active Active
- 2009-11-03 ES ES09826570.5T patent/ES2663701T3/es active Active
- 2009-11-03 WO PCT/US2009/063127 patent/WO2010056571A2/en active Application Filing
- 2009-11-03 JP JP2011536387A patent/JP2012508932A/ja not_active Withdrawn
- 2009-11-03 EP EP09826570.5A patent/EP2353081B1/en active Active
- 2009-11-11 TW TW98138300A patent/TWI471726B/zh not_active IP Right Cessation
-
2011
- 2011-08-30 US US13/221,542 patent/US8135914B2/en not_active Expired - Fee Related
-
2012
- 2012-02-02 US US13/365,093 patent/US8489815B2/en not_active Expired - Fee Related
Cited By (2)
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 |