JP6529617B2 - システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持 - Google Patents

システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持 Download PDF

Info

Publication number
JP6529617B2
JP6529617B2 JP2018000459A JP2018000459A JP6529617B2 JP 6529617 B2 JP6529617 B2 JP 6529617B2 JP 2018000459 A JP2018000459 A JP 2018000459A JP 2018000459 A JP2018000459 A JP 2018000459A JP 6529617 B2 JP6529617 B2 JP 6529617B2
Authority
JP
Japan
Prior art keywords
data
application
memory
backup
application 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.)
Active
Application number
JP2018000459A
Other languages
English (en)
Other versions
JP2018055727A (ja
Inventor
マッケルヴィー,サミュエル・ジェームズ
レシンスキー,ヤン・ヴァレリー
ナウランド,イアン・ピイ
フリンク,ダリン・リー
グプタ,アヌラグ・ウィンドラス
モーリー,アダム・ダグラス
ワトソン,クリストファー・ネイサン
マー,マイケル・デイヴィッド
Original Assignee
アマゾン・テクノロジーズ・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アマゾン・テクノロジーズ・インコーポレーテッド filed Critical アマゾン・テクノロジーズ・インコーポレーテッド
Publication of JP2018055727A publication Critical patent/JP2018055727A/ja
Application granted granted Critical
Publication of JP6529617B2 publication Critical patent/JP6529617B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Retry When Errors Occur (AREA)
  • Stored Programmes (AREA)

Description

アプリケーションプログラムは、増大する量のデータを処理する、および/又はシステムを管理し易くする、又は増大する複雑さの問題を解決し易くする種々のサービス及び機能を提供し続けているので、更に多くのユーザ、クライアント、組織、及びエンティティが、これらのアプリケーションプログラムに依存し、これらのサービス及び機能を確実に提供する。アプリケーションプログラムの信頼性を高めるために、サービス中断から更に迅速に復旧させる種々の技術が開発されている。これらのサービス中断を最小限に抑える1つの方法では、システムメモリのデータバックアップを行って、システム障害が発生した場合にシステムメモリを保持することができるようにしている。システムをリスタートさせると、アプリケーションプログラムは、データバックアップから復元されたデータ及び他の情報へのアクセスを更に迅速に行うことができる。しかしながら、データバックアップ技術を利用する更に高性能の技術が開発されない場合、不測の影響が生じて、アプリケーションプログラムがデータバックアップから得られる利点が台無しになってしまう。
幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持するように構成されるシステムレベルコンポーネントの例示的な動作環境を示すブロック図である。 幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持する様子を明示する一連のブロック図を示す。 幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持する方法を示す上位フローチャートである。 幾つかの実施形態によるシステムメモリに格納されているアプリケーションデータオブジェクトに関するデータバックアップを選択的に有効化する方法を示すフローチャートである。 幾つかの実施形態による不揮発性データストレージに格納されているアプリケーションデータオブジェクトの復元を指示する方法を示すフローチャートである。 幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持することができる例示的なシステムを示すブロック図である。 幾つかの実施形態による例示的なシステムを示す。
種々実施形態が、本明細書において幾つかの実施形態及び例示的な図面を一例として説明されているが、当業者であれば、種々実施形態は、説明されるこれらの実施形態又は図面に限定されないことを理解できるであろう。これらの図面、及びこれらの図面についての詳細な説明は、種々実施形態を開示される特定の形状に限定するものではなく、添付の請求項により規定される精神及び範囲に属する全ての変形物、等価物、及び代替物を含むものであることを理解されたい。本明細書において使用される表題は、単に体系化を目的として表現されているに過ぎず、本記載又は請求項の範囲を限定するために使用するものではない。本出願全体を通じて使用されているように単語「may」は、強制を意味する(すなわち、必須を意味する)のではなく、任意の意味(すなわち、可能性を有しているという意味)で使用される。同様に、単語「include」、「including」、及び「includes」は、including, but not limited to(これらに限定されることなく含む)を意味する。
以下の詳細な説明では、多数の特定の詳細を記載し、特許請求する主題についての完全な理解を提供する。しかしながら、当業者であれば、特許請求する主題は、これらの特定の詳細を用いることなく実施することができることを理解できるであろう。他の例では、当業者には公知であると考えられる方法、装置、又はシステムは、特許請求する主題を不明瞭にしないために詳細には記載されていない。
また、「first」、「second」などの用語は、本明細書においては、種々の構成要素を記述するために用いることができるが、これらの構成要素が、これらの用語によって限定されてはならないことを理解されたい。これらの用語は、1つの構成要素を別の構成要素と区別するためにのみ用いられる。例えば、本発明の範囲から逸脱しない限り、第1コンタクトを第2コンタクトと称することができ、そして同様に、第2コンタクトを第1コンタクトと称することができる。第1コンタクト及び第2コンタクトは共にコンタクトであるが、これらのコンタクトは同じコンタクトではない。
本明細書における本発明についての説明に使用される専門用語は、特定の実施形態を記述するためにのみ用いられるのであり、本発明を限定するために用いられるのではない。本発明についての説明、及び添付の請求項に使用されているように、単数形「a」、「an」、及び「the」は、前後の文に異なることが明確に記載されていない限り、複数形も含むものとする。また、本明細書において使用される「and/or」という用語は、1つ以上の列挙される関連アイテム群のうちの任意の及び全ての適用可能な組み合わせを指し、かつ含むことを理解されたい。更に、「includes」、「including」、「comprises」、および/又は「comprising」という用語は、本明細書において使用される場合、記載の特徴、整数、ステップ、動作、要素、および/又はコンポーネントの存在を明記し、かつ1つ以上の他の特徴、整数、ステップ、動作、要素、コンポーネント、および/又はこれらの項目からなるグループの存在又は追加を排除しないことを理解できるであろう。
本明細書において使用されるように、「if」という用語は、文脈次第で、「when」又は「upon」又は「in response to determining(判断するのに応じて)」又は「in response to detecting(検出するのに応じて)」を意味すると考えることができる。同様に、「if it is determined(と判断される場合)」又は「if [a stated condition or event] is detected([記載の状態又は事象]が検出される場合)」というフレーズは、前後の文脈次第で、「upon determining(判断すると)」又は「in response to determining(判断するのに応じて)」又は「upon detecting [the stated condition or event]([記載の状態又は事象]を検出すると)」又は「in response to detecting [the stated condition or event]([記載の状態又は事象]を検出するのに応じて)」 を意味すると考えることができる。
システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持する種々の実施形態が本明細書において記載される。通常のコンピューティングシステムは、システムメモリを1つ以上のランダムアクセスメモリデバイス上で実行する。システムメモリ(「main memory(メインメモリ)」と呼ばれる場合がある)をこのように実行することにより、中央処理ユニットは、1つ以上のメモリデバイスにランダムな順番で迅速にアクセスすることができるので、アプリケーションプログラムプロセスをアプリケーションプログラムデータに対して動作することができる。一般的に、ランダムアクセスメモリデバイスは、停電、又は他の或る形態のシステム障害が発生した後に、データを保持することができない可能性がある(多くの場合、「volatile(揮発性)」メモリと表記される)。従って、ランダムアクセスメモリデバイスに格納されているいずれのアプリケーションプログラムデータも紛失する可能性がある。リスタート時、ランダムアクセスメモリデバイスは、データを、システムのリスタートを指示するbiosデータを格納することができる電気的消去可能なプログラマブルROM(EEPROM)のような他の或るメモリストレージデバイスから再読み込みする必要がある。アプリケーションプログラムデータの紛失を防止するために、システム障害が発生した場合にデータを紛失しないハードディスクドライブのような補助ストレージデバイスを利用して、アプリケーションデータの1つ以上のデータ構成部分を、例えば周期的に格納することができる。しかしながら、ランダムアクセスメモリデバイスのシステムメモリのデータのバックアップを行うシステムでも、アプリケーションプログラムデータの完全な保持を確実に行うということができないので、ダイレクトアクセス可能及び迅速アクセスといったランダムアクセスメモリの他の性質を保持しながら、不揮発性(すなわち、データ保持性)メモリ機能を提供する、より新規なランダムアクセスメモリ技術が開発されることになる。
システムメモリを利用するアプリケーションプログラム及び他のコンポーネント、プログラム、又はデバイスに不揮発性ランダムアクセスメモリを提供するため、多種多様な異なるランダムアクセス技術は、フラッシュ系不揮発性データストレージのような不揮発性データストレージデバイスと通信するように構成されている。これらのハイブリッドデバイスは普通、「non−volatile RAM(不揮発性RAM)」と呼ぶことができる。これらには限定されないが、デュアルインラインメモリモジュール(DIMM)、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、ダブルデータレートシンクロナスランダムアクセスメモリ(DDR−SDRAM)などを含む数え切れないほど多種多様なこれらのランダムアクセスメモリ及び他のランダムアクセスメモリ技術に加えて、ダイナミックランダムアクセスメモリ(DRAM)又はスタティックランダムアクセスメモリ(SRAM)のような揮発性データストレージデバイスは、フラッシュ系メモリデバイス、電気的プログラム可能ROM(EPROM)、EEPROM(前述)のような不揮発性電子ストレージデバイスと通信するように構成することができる。これらのハイブリッドデバイス(例えば、不揮発性デュアルインラインメモリモジュール(NV−DIMM))は、スーパーキャパシタ又は他の電力蓄積デバイス(例えば、バッテリ)のような電源を含むことができ、この電源によってメモリコントローラ又は他のコンポーネントは、揮発性データストレージデバイス(RAM)からフラッシュ系メモリのような不揮発性データストレージに移行されるデータをバックアップすることができる。異なるランダムアクセスメモリ技術のような多種多様な揮発性メモリ技術だけでなく、多種多様な異なる不揮発性メモリ技術が当業者には公知になっていることから、上に挙げた実施例が、限定的であると解釈されてはならない。ここでまた、フラッシュ系メモリ技術を指すために使用される共通の名称は「NVRAM」であることに留意されたい。混乱を避けるために、以後、本明細書においては、フラッシュ系メモリ技術を「flash−based memory technologies」とのみ表記することとする。
不揮発性RAMを実行するコンピューティングシステム又はコンピューティングデバイス又は同様の構成のコンポーネント又はデバイスは、アプリケーションプログラムデータを保持することができる。しかしながら、上で述べたように、このような技術を実行しただけでは、システムメモリに格納されているアプリケーションプログラムデータの保持を確実に行うためには十分ではない可能性がある。通常の不揮発性RAMは、揮発性電子ストレージデバイス(例えば、RAM)に格納されているデータを、システム障害が発生した場合にバックアップする。バックアップ済みのデータはその結果、システム処理を再開することができるように、揮発性電子ストレージデバイスから復元される。別のシステム障害が発生して、このシステム障害が発生した場合に、例えばパワーオンセルフテスト(power on self tests POST)が行われるか、又はメモリテストを実行して不定値をRAMに書き込むスタートアップルーチンが行われる場合、既にバックアップされているデータへの上書きが行われ得るので、アプリケーションプログラム又は他のユーザのシステムメモリが紛失する可能性がある。この実施例では、かつ他の同様のシナリオでは、RAMに格納されているデータは依然として、真に「non−volatile(不揮発性)」である訳ではない。
種々の実施形態では、アプリケーションプログラムの側から見たときに、アプリケーションプログラムデータが、システムメモリのような揮発性データストレージデバイスに格納されている場合でも保持されるように、コンピューティングシステム又はコンピューティングデバイスは、システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持する。アプリケーションプログラムは、例えば書き込み遅延を削減することにより(例えば、データ保持性を確保するための書き込み回数を減らすことにより)更に効率的に実行されるように構成し直すことができる。図1は、幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持するように構成されるシステムレベルコンポーネントの例示的な動作環境を示すブロック図である。
システムは、幾つかの実施形態では、種々のタスク、機能、及び動作を当該システム上で実行する1つ以上のシステムアプリケーションモジュール102を実行することができる。システムアプリケーションモジュール102は、システム制御モジュール110と通信することができ、このシステム制御モジュール110は、1つ以上の異なるサービスを提供してシステムアプリケーションモジュール102のタスク、機能、及び動作をサポートすることができる。システム制御モジュール110は、アプリケーションデータ保持システムレベルコンポーネント112のような種々のモジュールおよび/又はコンポーネントを実行することができ、これらの種々のサポートタスクを実行するだけでなく、種々のシステム動作を制御する。システム制御モジュール110は更に、メモリモジュール120及び他のデバイス130のような他の種々のモジュールと通信することができる。
種々の実施形態では、システムは、サーバ、デスクトップ、ラップトップ、モバイルデバイス、ノード、又はノードクラスタのようなコンピューティングデバイス、又は更に広義には、図7を参照して以下に説明されるコンピューティングシステム1000のようないずれかのコンピューティングデバイスとすることができる。システムは、図6を参照して以下に説明されるデータベースの分散ストレージシステムのストレージノードのように、特定の目的を実行するように構成することができる、又は広範囲のタスクを実行するように構成される汎用コンピューティングシステムとすることができる。システムは、幾つかの実施形態では、1つ以上のシステムアプリケーションモジュール102を実行することができる。システムアプリケーションモジュールは、1つ以上のタスク、機能、動作、及びサービスを当該システム上で実行するように構成されるソフトウェア(例えば、ソフトウェアプログラム又はソフトウェアアプリケーション)、ハードウェア(例えば、センサ又は他の或るデバイス)、又はソフトウェア及びハードウェアの両方の組み合わせ(例えば、エンベデッドシステム)とすることができる。システムアプリケーションモジュール102は、タスク動作を当該システム上で実行するように指示することができ、その結果、種々のシステムリソースを使用することができる。例えば、システムアプリケーションモジュール102は、種々の計算及び処理タスクを実行して、データベース、ネットワーク、ウェブサービスをサポートするバックエンドシステムから、グラフィカルユーザインターフェースを提供してドキュメント編集、メディア再生などを実行するユーザ対話型アプリケーションに亘る多種多様な異なるサービスを実行することができる。ここで、これまでに挙げた実施例が、実行することができる多種多様な異なる適用可能なアプリケーションについて限定的であると解釈されてはならないことに留意されたい。
これらのタスクを実行することの一部として、システムアプリケーションモジュール102は、システムメモリ126のようなシステムメモリ内の1つ以上のロケーションへアクセスすることができる。アクセスは、直接アドレス指定可能なストレージロケーション、システムメモリ126に格納されているデータに対する、読み出し、書き込み、又はいずれかの他の種類の変更を含むことができる。このデータを使用して種々のタスクを実行することができる。多種多様な異なるデータ構造、又は他のアプリケーションデータ論理構造を使用して、アプリケーションデータを体系化するか、又は調整することにより、システムアプリケーションモジュール102からアクセスすることができるようにする。幾つかの実施形態では、システムメモリ126に格納されているアクセス可能なデータは、アプリケーション動作により出力されるアプリケーション状態情報、タスクレコード又はタスクログ、および/又はシステムアプリケーションモジュール102からアクセスしようとするアクセス先の任意の他のデータを含むことができる。幾つかの実施形態では、システムアプリケーションモジュール102は、頻繁にアクセスするデータを格納することができる。システム制御モジュール110は、入力/出力モジュールのような他のサービス/モジュール114を使用して、システムアプリケーションモジュール102とシステムメモリ126との間の通信及びアクセスを容易にすることができる。
幾つかの実施形態では、システムはシステム制御モジュール110を実行することができる。システム制御モジュール110は、システムアプリケーションモジュール102をサポートするサービス、動作、又はタスクを実行するように構成することができる。システムモジュールは、データストレージのようなシステムリソース、計算リソース(例えば、1つ以上の中央処理装置(CPU)、又は他のいずれかのモジュール、コンポーネント、又はデバイス)を管理するように構成することができる。少なくとも幾つかの実施形態では、システム制御モジュール110は、カーネルの一部のようなオペレーティングシステムの一部とすることができる、又はシステムアプリケーションモジュール102とシステムメモリ126との間の通信、又は特殊メモリコンポーネント120の他のコンポーネントとの間の通信、及び他のデバイス130との間の通信を容易にするように、システムのハードウェアコンポーネントとソフトウェアコンポーネントとの間の通信を管理する他のプログラム又はコンポーネントとすることができる。システム制御モジュール110は、種々の信号及び指示を受信する、および/又は解釈するように構成することができる。例えば、システム制御モジュール110は、システムコール又はシステムコマンドのようなシステムアプリケーションモジュール102によるサービス又は動作に関するリクエスト、又はアプリケーションプログラミングインターフェース(API)に従ってフォーマット化されたリクエストを解釈するように構成することができる。これらの指示又はコマンドは従って、特殊メモリコンポーネント120、及び図7を参照して以下に説明される入力/出力デバイス1050のような種々の入力/出力デバイスのような他のデバイス130が理解することができるフォーマットに再フォーマット化する、又は解釈することができる、又はこれらの指示又はコマンドをスケジューリングして、図7を参照して以下に説明されるプロセッサ1010に類似する1つ以上のプロセッサのようなこれらの他のデバイス130により実行することができるようにする。
種々の他のサービス又はモジュール114は、システム制御モジュール110により実行されて、これらのタスクを実行することができる。例えば、他のサービス又はモジュール114は、一体となってプロセス管理を行ない、システムリソースを割り当て、共有及び情報授受を可能にし、他のプロセスの中の各プロセスのシステムリソースを保護し、そして更には、プロセスを同期させて、システムアプリケーションモジュール102の種々のプロセス、タスク、および/又は機能、及び当該システムの他のプログラム、モジュール、又はコンポーネントをサポートする。特殊メモリコンポーネント120、システムメモリ126、及び図7を参照して以下に説明されるデータストレージ1035のような他のデータストレージとのインターフェースとなるようなメモリ管理部を更に設けることができる。他のサービス又はモジュール114が更に、システム制御モジュール110により実行されて、他のデバイス130を管理して他のデバイス130とインターフェースすることができる。これらの機能及びサービスは、当業者には公知であることから、これまでの説明が、これらのサービス及び機能を提供する種々の他の手段、方法、又は配置について限定的であると解釈されてはならない。例えば、マイクロカーネル、エクソカーネル、及び他の種々のオペレーティングシステム、又は他のシステム制御装置を想像することもできる。
幾つかの実施形態では、システム制御モジュール110は、アプリケーションデータ保持システムレベルコンポーネント112を実行することができる。アプリケーションデータ保持システムレベルコンポーネント112は、特殊メモリコンポーネント120及び他のデバイス130に加えて、種々の他のサービス又はモジュール114と対話するように構成することができる。アプリケーションデータ保持システムレベルコンポーネント112は、システムアプリケーションモジュール102のシステムメモリ126に格納されている所定範囲のデータのデータバックアップ、又はシステムアプリケーションモジュール102のシステムメモリ126に格納されているアプリケーションデータオブジェクトのデータバックアップを有効化し、無効化し、そして再有効化するだけでなく、不揮発性データストレージ122からシステムメモリ126に移行されるアプリケーションデータオブジェクト又は所定範囲のアプリケーションの復元を指示するように構成することができる。以下に説明する図3〜図6は、アプリケーションデータ保持システムレベルコンポーネント112により実行することができる種々の技術及び方法の実施例を提供する。
どの時点でデータバックアップを有効化し、無効化し、そして再有効化するだけでなく、復元を指示するかについての判断は、データ保持システムレベルコンポーネント112において行うことができる。例えば、システムアプリケーションモジュール102によるリクエストから、保持されたアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータを特定することができる。あるいは、判断は、アプリケーションデータオブジェクト又は所定範囲のデータに書き込みが行なわれている、アプリケーションデータオブジェクト又は所定範囲のデータが格納されている、又は別な方法で変更されているという指示に応じて行うことができる。指示をシステムアプリケーションモジュール102に出して、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータを保持するものとして処理させることができる。例えば、幾つかの実施形態では、アプリケーションデータオブジェクト(例えば、ログ、レコード、テーブル、又は更に広義には、任意の種類のデータ、又はシステムアプリケーションモジュール102により利用されるデータを保持するデータ構造)が生成される、割り当てられる、又は使用のために確保される場合、アプリケーションデータ保持システムレベルコンポーネント112は、指示をシステムアプリケーションモジュール102に出して、アプリケーションデータオブジェクトを保持するものとして処理されてもよく、又は処理させることができ、そしてシステム障害が発生した場合にアプリケーションデータオブジェクトのデータバックアップを有効化させることができる。同様に、システムアプリケーションモジュール102に代わってシステムメモリに格納されている所定範囲のアプリケーションデータ(例えば、所定範囲の仮想メモリアドレス、データ構造などのようなアプリケーションデータの論理構造)を更に、生成する、割り当てる、又は使用のために確保することができ、そしてアプリケーションデータ保持システムレベルコンポーネント112は、同様の指示をシステムアプリケーションモジュール102に出して、所定範囲のアプリケーションデータを保持するものとして処理させることができ、そしてシステム障害が発生した場合に所定範囲のアプリケーションデータに関するデータバックアップを有効化させることができる。少なくとも幾つかの実施形態では、どの時点で保持を指示し、データバックアップを有効化する、無効化する、再有効化するだけでなく、復元を指示するかについての判断は、1つ以上の異なるシステムアプリケーションモジュール102によりアクセスされる異なるアプリケーションデータオブジェクトについて個別に行うことができる。例えば、2つのシステムアプリケーションモジュールはそれぞれ、システムメモリに格納されている異なるアプリケーションデータオブジェクトにアクセスすることができる。アプリケーションデータオブジェクトを保持するものとして処理するリクエストは、アプリケーションデータオブジェクトごとに異なる時点で受信することができる。各システムアプリケーションモジュールは更に、異なるアプリケーション主導の復旧を実行して、不揮発性ストレージ内のアプリケーションデータオブジェクトに基づくバックアップ済みのデータの復元の指示を異なる時点でリクエストすることができる。同様に、個々のシステムアプリケーションモジュールによる復旧は、個別に行うことができるので、アプリケーションデータオブジェクトのデータバックアップを再有効化するリクエストを更に、異なる時点で受信して実行することができる。
アプリケーションデータ保持システムレベルコンポーネント112は、情報を多種多様なソースから取得して、これらの種々の判断を行うことができる。例えば、システムメモリ126に対するシステムアプリケーションモジュール102からの入力及び出力(例えば、読み出し、及び書き込み)を処理する1つ以上の他のサービス又はモジュール114は、種々の指示をアプリケーションデータ保持システムレベルコンポーネント112に出して、どの時点で、データバックアップを有効化する、無効化する、再有効化するだけでなく、保持されたアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータの復元をシステムメモリに対して指示するかについて判断することができる。例えば、オペレーティングシステムが提供するシステムコールを利用して、又はシステムメモリから不揮発性ストレージに移行されるアプリケーションデータを選択的に保持するようにサポートすることができる種々のライブラリ又は他のサービス集合を利用して、情報をアプリケーションデータ保持システムレベルコンポーネント112に供給することができる。
アプリケーションデータ保持システムレベルコンポーネントは更に、システム障害からの復旧が行われた時点を判断するように構成することができる。システム障害として、アプリケーションソフトウェア、プログラム、モジュール、又はコンポーネントが、システムメモリ126内のデータにアクセスするのを妨げる、および/又はシステムメモリ126に現在格納されているデータが紛失する、使用できない、消去される、又はデータにアクセスできなくしてしまういずれかの停電、機能障害および/又は他の障害を挙げることができる。他のサービス又はモジュール114は、システム障害が発生した場合に、および/又はシステム障害から復旧すると、アプリケーションデータ保持システムレベルコンポーネントに対して通知を行うように構成することができる。少なくとも幾つかの実施形態では、システム障害から復旧すると、アプリケーションデータ保持モジュールは、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータに関するその後のデータバックアップを無効化するように構成することができる。少なくとも幾つかの実施形態では、その後のデータバックアップは、保持するものとして処理することができるシステムアプリケーションモジュール102のようなアプリケーションプログラムに対して示された複数のアプリケーションデータオブジェクト又は全てのアプリケーションデータオブジェクト、又は所定範囲のアプリケーションデータに関して無効化することができる。
少なくとも幾つかの実施形態では、アプリケーションデータ保持システムレベルコンポーネント112は、不揮発性データストレージ122内のアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータのバックアップストレージロケーションに格納されているようなアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータのうちの少なくとも幾つかの復元を指示するように構成することができる。例えば、少なくとも幾つかの実施形態では、アプリケーションデータ保持システムレベルコンポーネント112は、メモリバックアップコントローラ124、又は同様の或るコンポーネントに指示して、不揮発性データストレージ122にバックアップされたアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータをシステムメモリ126内の1つ以上のロケーションにコピーするように構成することができる。少なくとも幾つかの実施形態では、これらの1つ以上のロケーションは、アプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)がデータバックアップ前にシステムメモリに格納されていたロケーションとは異ならせることができる。従って、幾つかの実施形態では、復元した結果として、システムアプリケーションモジュール102の側から見た場合、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータが、システム障害が発生した時点と厳密に同じ状態(例えば、同じ情報)に保持されていたように見える。あるいは、図5は、アプリケーションデータ保持システムレベルコンポーネント112により実行することができる幾つかの実施形態によるアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータの復元を指示する更なる検討、及び技術の実施例を提供する。
システムメモリ126に格納されているアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、幾つかの実施形態では、システムアプリケーションモジュール102のようなアプリケーションプログラムにアクセス可能なデータ構造又は他の或るアプリケーションデータの論理的な配置とすることができる。アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータを特定するために、ポインタ、インデックス、アドレス、又は他の或る値、又はインジケーターを利用して、システムメモリ内のアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータの1つ以上のストレージロケーションを決定することができる。例えば、少なくとも幾つかの実施形態では、ロケーション又はアドレスは、仮想メモリアドレス、又は他の或る論理記述子として指定することができ、これはシステムメモリ126の1つ以上の物理的範囲、ロケーション、アドレスなどに変換することができる。アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータのデータバックアップを有効化する指示は、例えばシステムアプリケーションモジュール102の側から見た場合に連続的な所定範囲の仮想メモリアドレスを含むことができ、これは複数のロケーションに物理的に実際に格納されている。アプリケーションデータ保持システムレベルコンポーネント112、又は他の或るコンポーネントは、データバックアップを有効化するように当該指示に指定されている仮想メモリアドレスを、指定範囲のデータがシステムメモリ126に格納されている実際の物理ロケーションに変換するように構成することができる。
幾つかの実施形態では、アプリケーションデータ保持システムレベルコンポーネント112は、特殊メモリコンポーネント120と通信するように構成することができる。アプリケーションデータ保持システムレベルコンポーネントは、デバイスドライバ、ライブラリ、又は他の種類のインターフェースに定義されるプロトコルを介して特殊メモリコンポーネント120と通信することができる。システムメモリ126に格納されているアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータのデータバックアップ動作を有効にする、無効にする、そして再度有効にするリクエストは、特殊メモリコンポーネント120に送信することができる。これらのリクエストは、メモリバックアップコントローラ124のようなコントローラ又は他のコンポーネントに対して具体的に指示することができる。図4に示すように、データバックアップを有効化する、又は無効化するこれらのリクエスト又は指示は、バックアップ用データを不揮発性ストレージ122にコピーするときのコピー元のシステムメモリ126内の特定のストレージロケーションを含むことができる。幾つかの実施形態では、データ暗号化スキーマをデータに適用すべきかどうかについての更なる指示を含めることもできる。アプリケーションデータ保持システムレベルコンポーネント112は、当該アプリケーションデータ保持システムレベルコンポーネントによる種々のリクエストを受信した旨の受信確認又は他の確認を受信するように構成することができる。
上で述べたように、アプリケーションデータ保持システムレベルコンポーネント112は、幾つかの実施形態では、システムメモリ126に格納されている複数のアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータのデータバックアップを有効化する、無効化する、そして再有効化するように構成することができる。テーブル又は他のデータ構造に格納されているようなマッピング情報は、これらのアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータの各々について保持されることができ、システムメモリ126内のこれらのアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータに対応するストレージロケーションを、不揮発性データメモリ122内のバックアップストレージロケーションにリンクさせる。有効化又は無効化されているかどうかの現在のバックアップ有効化状態を更に、システムアプリケーションモジュール102用に保持されたアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータに関するマッピング情報又は他の状態情報に含めることができる。これらの複数のアプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)の各々のデータバックアップを有効化する、無効化する、そして再有効化することにより、マッピング情報を更新して、それぞれのアプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)の現在のデータバックアップ状態を反映させることができる。
少なくとも幾つかの実施形態では、アプリケーションデータ保持システムレベルコンポーネント112は、不揮発性データストレージ122への「out−of−band(帯域外)」でのアクセスを容易にして、バックアップ済みのデータをシステムメモリ126から読み出すことができる。幾つかの実施形態では、データは、不揮発性データストレージ122から直接読み出すことができる。例えば、システム障害から復旧すると、アプリケーションデータ保持システムレベルコンポーネント112は、不揮発性データストレージ122をシステムアプリケーションモジュール102に透過なストレージデバイスとしてマウントすることができる。従って、システムアプリケーションモジュール102は、種々の復元動作を実行することができ、例えばデータの一部又は全部を、不揮発性データストレージ122に格納されているアプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)から読み出して新規のアプリケーションデータオブジェクトを生成する、又は新規範囲のアプリケーションデータを充填して、システムアプリケーションモジュール102からアクセスする、および/又はシステムアプリケーションモジュール102によって続いて利用することができるようにする。同様に、他の実施形態では、アプリケーションデータ保持システムレベルコンポーネント112は、他のサービス、又は入力/出力モジュールのようなモジュール114と対話して、不揮発性データストレージ122内のバックアップ済みのデータへの直接アクセス、又は「帯域外」でのアクセスを提供することができる。
幾つかの実施形態では、データ保持システムレベルコンポーネント112を実行して、システム制御モジュール110によって提供されるアプリケーションプログラミングインターフェース(API)の一部を容易に実現することができる。例えば、データ保持システムレベルコンポーネント112は、指示をシステムアプリケーションモジュール102に提供して、当該システムアプリケーションモジュール用に格納されているアプリケーションデータオブジェクト、又は所定範囲のアプリケーションデータを保持するものとして処理するように構成することができる。この指示は、APIに従ってシステムメモリに格納されているアプリケーションデータを選択的に保持するシステムアプリケーションモジュール102からのリクエストに応じて出すことができる。少なくとも幾つかの実施形態では、アプリケーションデータ保持システムレベルコンポーネント112は、種々の他のシステム、アプリケーション、プログラム、又はコンポーネントと対話して、システムメモリから不揮発性データストレージに移行されるアプリケーションデータのデータ保持を選択的に容易に可能にするように構成することができる。例えば、アプリケーションデータ保持システムレベルコンポーネント112は、システムBIOSの種々のBIOS部分、又は他のコンポーネントの種々のコンポーネント部分を変更するか、又は無効にすることにより、復元されたアプリケーションデータオブジェクト又は所定範囲のアプリケーションに対して、例えばスタートアップメモリテスト又は他のブートプロセスにより上書きされるのを防止することができる。
更に、幾つかの実施形態では、特殊メモリコンポーネント120をシステムの一部として実行することができる。特殊メモリコンポーネント120は、システムメモリ126のようなシステムメモリを組み込んだ上記種々のハイブリッドストレージデバイスのうちの1つのハイブリッドストレージデバイスとすることができ、当該ハイブリッドストレージデバイスは、フラッシュ系不揮発性データストレージのような不揮発性データストレージ122と、メモリバックアップコントローラ124のようなメモリコントローラを介して通信するように構成される。特殊メモリコンポーネント120は、システム障害が検出され、システム障害から復旧するのに応じて、種々のデータバックアップ処理及びデータ復元動作を実行して、システムメモリ126に格納されているデータを不揮発性データストレージ122にコピーする、又は逆に、不揮発性データストレージ122に格納されているデータをシステムメモリ126にコピーするように構成することができる。
上に説明したこれらの例のような種々の種類のランダムアクセスメモリのうちのいずれか1つのランダムアクセスメモリとすることができるシステムメモリ126は、これらには限定されないが、数え切れないほど多種多様なこれらのランダムアクセスメモリ技術、及び他のランダムアクセスメモリ技術に加えて、ダイナミックランダムアクセスメモリ(DRAM)、又はスタティックランダムアクセスメモリ(SRAM)を挙げることができ、これらのランダムアクセスメモリ技術として、これらには限定されないが、デュアルインラインメモリモジュール(DIMM)、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、ダブルデータレートシンクロナスランダムアクセスメモリ(DDR−SDRAM)などを挙げることができる。システムメモリ126は、プログラム命令を格納して、図7を参照して以下に説明されるプロセッサのような1つ以上のプロセッサにより実行することができる。システムアプリケーションモジュール102は、システムメモリ126に格納されて実行される1つ以上のアプリケーションプログラムとすることができる。上に述べたようにアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、システムメモリ126に格納することもでき、そしてシステムアプリケーションモジュール102により使用されて、種々のサービス、タスク、および/又は機能を実行することができる。システムメモリ126は、複数のランダムアクセスメモリデバイスにより実行することができる。図2には図示されていないが、少なくとも幾つかの実施形態では、ランダムアクセスメモリデバイスのうちの幾つかは、不揮発性データストレージ122によりバックアップされない、又はメモリバックアップコントローラ124により制御されない、又はアクセスされないようにすることができる。従って、図2に例示されるシステムメモリ126は、システムメモリ126の一部を、特殊メモリコンポーネント120の一部として実行することができ、かつシステムメモリ126の他の部分を、従来のランダムアクセスメモリ技術で実行することができる構成の他の実施形態を限定するものとして解釈されてはならない。例えば、システムは、1つのNV−DIMMコンポーネントと、データバックアップが行なわれない1つ以上の追加のDRAMコンポーネントと、を含むことができる。NV−DIMMコンポーネントの揮発性データストレージ、及び1つ以上の追加のDRAMコンポーネントは共に、システムメモリを実行するために用いることができる。しかしながら、このような実施形態では、システムメモリのうちのNV−DIMM実行部分のみをバックアップすることができるということになる。システムメモリは当業者には公知であることから、これまでの説明が、システムメモリを実行することができる、および/又は利用することができる種々の他の方法について、限定的であると解釈されてはならない。
メモリバックアップコントローラ124は、システムメモリ126と不揮発性データストレージ122との間の通信を指示するように構成することができる。少なくとも幾つかの実施形態では、メモリバックアップコントローラ124は、データバックアップ動作及びデータ復旧動作を実行するように構成することができる。例えば、少なくとも幾つかの実施形態では、メモリバックアップコントローラ124は、システム障害を検出することができる。システム障害を検出すると、メモリバックアップコントローラ124は、システムメモリ126に格納されているデータを不揮発性データストレージ122にコピーするように指示することができる。同様に、システム障害から復旧すると、メモリバックアップコントローラ124は、不揮発性データストレージ122に格納されているアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータ(又は、アプリケーションデータの一部)のコピーをシステムメモリ126に返して、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータを復元するように構成することができる。バックアップ済みのデータをシステムメモリにコピーするときのコピー先のロケーションは、これらのデータが最初にバックアップされたときのコピー元のロケーションとは異ならせることができる。データ暗号化又はデータ復号化のような種々の他のデータ変換又はデータ操作は、メモリバックアップコントローラ124により適用することができる。
少なくとも幾つかの実施形態では、メモリバックアップコントローラ124は、アプリケーションデータ保持システムレベルコンポーネント112のような別のコンポーネントによりプログラムできる、又はその他には、構成することができる。例えば、メモリバックアップコントローラ124は特定用途向け集積回路(ASIC)とすることができ、当該特定用途向け集積回路は、種々のコマンドを受信して、種々の動作を有効にすることができ、例えばシステムメモリ126に格納されているアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータのデータバックアップを有効化する、又は無効化するように構成される。少なくとも幾つかの実施形態では、メモリバックアップコントローラは、システムメモリ126内、及び不揮発性データストレージ122内の特定のロケーションのデータをコピーするようにプログラムする、指示する、又は構成することができる。幾つかの実施形態では、メモリバックアップコントローラ124は、種々のロジックおよび/又はデータ構造を実行して、システムメモリ126のバックアップ済みの情報を不揮発性データストレージ122内のロケーションにマッピングする情報を更新する、又は維持することができる。
特殊メモリコンポーネント120は、不揮発性データストレージを実行することもできる。上に説明したように、幾つかの実施形態では、不揮発性データストレージは、例えばフラッシュ系デバイス又は他の永続ストレージデバイスとすることができ、これらのデバイスは、システムメモリ126と通信するように構成することができ、かつバックアップ済みのデータを格納することができる。しかしながら、多くの異なる種類の永続データストレージが当業者には公知になっていることから、上に説明した実施例、及び以下に説明する実施例が共に、限定的であると解釈されてはならない。
特殊メモリコンポーネント120は、不揮発性RAMとして知られる概略分類の上記デバイスのうちの1つのデバイスとすることができ、当該デバイスは、スーパーキャパシタ又は他の電力蓄積デバイスのような電源を含むことができ、この電源によってメモリコントローラ又は他のコンポーネントは、揮発性データストレージデバイス(RAM)からフラッシュ系メモリのような不揮発性データストレージに移行されるデータをバックアップすることができる。このようなデバイスの特定の実施例として、不揮発性デュアルインラインメモリモジュール(NV−DIMM)を挙げることができる。少なくとも幾つかの実施形態では、NV−DIMMのような不揮発性ランダムアクセスメモリの複数のデバイスは、一括して使用することができる。例えば、揮発性データストレージの複数のコンポーネントは、合体してシステムメモリを実行することができ、そして不揮発性データストレージの複数のコンポーネントは、ストレージを実行するか、又はストレージを提供することによりデータバックアップ動作を行うことができる。少なくとも幾つかの実施形態では、不揮発性RAMデバイスは、DRAM又はSRAMのような他の従来のメモリコンポーネントと混在させてシステムメモリを実行することができ、この場合、保持されるべき所定範囲のアプリケーションデータ又はアプリケーションデータオブジェクトは、不揮発性RAMデバイスのシステムメモリロケーションに格納することができる。幾つかの他の実施形態では、複数の不揮発性RAMデバイスを用いることができ、かつ複数の不揮発性RAMデバイスは、データバックアップ動作及びデータ復旧動作を行うように個々に構成するか、又は集合的に構成することができる。例えば、少なくとも幾つかの実施形態では、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、単一のNV−DIMMデバイスに格納されているような、複数の不揮発性RAMデバイスのうちの1つに格納されている所定範囲のシステムメモリとすることができる。あるいは、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、複数の不揮発性RAMデバイスに跨って実行されるシステムメモリに格納することができる。
ここで、図1を参照して上に説明した種々の機能は、システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持するために使用することができる種々の他の構造、コンポーネント、又は機構に関して限定的であると解釈されてはならないことに留意されたい。例えば、アプリケーションデータ保持システムレベルコンポーネント112に属する種々の機能は、入力/出力モジュールのような多種多様な異なるサービスに分散させることができる。同様に、メモリバックアップコントローラ124に属する種々機能は、システム制御モジュール110内で実行することができる、又は或る他のデバイス又はロジックの一部として実行することができる。
図2は、幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータが選択的に保持される様子を示す一連のブロック図を示している。図210は、データバックアップを有効化することができるシナリオを示している。上に説明したように、アプリケーションデータオブジェクト202を含むデータを格納するシステムメモリ212のようなシステムメモリに格納されているアプリケーションプログラムにアプリケーションデータオブジェクトがアクセスするためにデータバックアップを有効化する判断は、アプリケーションデータオブジェクト202のデータバックアップを有効化するリクエスト又は指示を受信すると行うことができる。この場面では、不揮発性データストレージ222はまだ、システムメモリ212のデータを全くバックアップしていない。
図210と図220との間では、種々の読み出し、書き込み、及び他の加算、減算、および/又は変更をシステムメモリ内のアプリケーションデータオブジェクト202に対して行うことができる。図220は、システム障害の発生を示す。アプリケーションデータオブジェクト202を参照番号214に記載の通りに、不揮発性データストレージ222にコピーしてデータバックアップを行う。上に説明したように、バックアップ済みのアプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)と、不揮発性データストレージ222内のアプリケーションデータオブジェクトのそれぞれの1つ以上のストレージロケーションと、を示すマッピング情報又は他の情報は、更新することも、又は維持することもできる。
図230は、システムが復旧すると、アプリケーションデータオブジェクトに関するその後のデータバックアップが、参照番号216に記載の通りに無効化される様子を示す。従って、例えば次のシステム障害が発生する場合、システムメモリ212内のアプリケーションデータオブジェクト202に変更を加えることにより、又は不揮発性データストレージ222にバックアップすることができる或る他のデータに変更を加えることにより、不揮発性データストレージ222内のアプリケーションデータオブジェクト202への上書きが行われるということはない。
図240は、データ復元が行われる様子を示す。幾つかの実施形態では、図示の如く、アプリケーションデータオブジェクトを、参照番号218に記載の通り、不揮発性データストレージ222からシステムメモリ212にコピーすることができる。少なくとも幾つかの実施形態では、このコピーは自動的に行うことができる。あるいは、少なくとも幾つかの他の実施形態では、不揮発性データストレージ222に格納されているアプリケーションデータオブジェクト202のうちの少なくとも幾つかは、アプリケーションからのリクエストに応じて、又は図1を参照して上に説明したアプリケーションデータ保持システムレベルコンポーネント112のような別のコンポーネントからの指示に応じて復元することができる。更に、幾つかの実施形態では、アプリケーションデータオブジェクト202は、図示のコピー218をシステムメモリ212に対して行うことなく、不揮発性データストレージ222から直接、かつ「out−of−band(帯域外)」で読み出すことができる。
図250は、データバックアップをシステムメモリ212に格納されているアプリケーションデータオブジェクト202に関して再有効化することができることを示す。上記参照番号220に記載のように、システム障害が発生する場合、アプリケーションデータオブジェクト202は、不揮発性データストレージにコピーすることができる。ここで、アプリケーションデータオブジェクト202は、上に説明したように、参照番号210で指示されるシステムメモリ内の同じロケーションに配置されなくても良いことに留意されたい。更に、アプリケーションデータオブジェクト202は、図210において新たにインスタンス化されたアプリケーションデータオブジェクト202とすることができる、すなわちアプリケーションデータオブジェクト202は、参照番号240で復元されたデータに基づいて生成することができ、そして幾つかの実施形態では、場面220におけるバックアップ済みのデータオブジェクト202の複製とする必要はない。
これまで説明してきたように、システムメモリに格納されているアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、システム障害が発生した場合に、データバックアップを選択的に有効化して、不揮発性データストレージに書き込むことができる。少なくとも幾つかの実施形態では、図1を参照して上に説明したアプリケーションデータ保持システムレベルコンポーネント112のようなシステムレベルコンポーネント、又は更に広義には、システムメモリ及び不揮発性データストレージと通信するように構成され、かつ図7を参照して以下に説明されるコンピュータシステム1000のようなコンピューティングデバイスのいずれかの他のサブシステム又はコンポーネントを用いて、システムメモリから不揮発性データストレージに移行されるアプリケーションデータを選択的に保持する多種多様な異なる手法を実行することができる。これらの種々のモジュールおよび/又はデバイスは、以下に説明する方法及び手法を実行するように構成することができる。図3は、幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持する例示的な方法の上位フローチャートを示す。
種々の実施形態では、上に述べたように、多くの異なるアプリケーションプログラム、ソフトウェア、又はモジュールは、システムメモリにアクセスして種々のタスクを実行するように構成することができる。種々のタスクを実行するため、データをシステムメモリの部分から書き込み、又は読み出しすることができる。幾つかのアプリケーションは、例えば頻繁にアクセスされるデータをシステムメモリに格納することができるのは、当該システムメモリには、他の記憶媒体よりも高速にアクセスすることができるからである。また、これらのアプリケーションは、システム障害(例えば、停電)が発生した場合に保持される(永続性を持たせる)必要があるデータを格納しようとする。これらのアプリケーションデータオブジェクト、又は所定範囲のアプリケーションデータの場合、指示をアプリケーションプログラムに出して、参照番号310で図示されるように、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータを保持するものとして処理させることができる。このような指示は、データオブジェクト又は所定範囲のデータが生成されると、又は割り当てられると、提供することができる。更に、当該指示は、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータから書き込み、又は読み出しが行われるときに提供することができる。また、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータを保持するリクエストは、アプリケーションプログラムから受信することもできる。
アプリケーションプログラム用にシステムメモリに格納されているアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータに関するデータバックアップは、参照番号310で図示されるように、有効化することにより、システム障害が発生した場合にアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータを保持することができる。図1を参照して上に説明したように、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、幾つかの実施形態では、データ構造のようなアプリケーションデータ論理的な配置、システムメモリに格納されているアプリケーションデータのインデックス値又はアドレス値のような所定範囲のストレージロケーションとすることができる。しかしながら、少なくとも幾つかの実施形態では、アプリケーションプログラム、ソフトウェア、モジュール、又はコンポーネントは、仮想メモリアドレスであるロケーション又はアドレスを指定するか、又は幾つかの他の論理記述子を指定することができ、これらの論理記述子を次に、揮発性データストレージデバイスの1つ以上の物理的範囲、ロケーション、アドレスなどに変換することができる。例えば、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、複数のロケーションに物理的に格納されている連続範囲の仮想メモリアドレスとすることができる。
データバックアップは、多種多様な方法で有効化することができる。図1を参照して上に説明したように、アプリケーションデータ保持システムレベルコンポーネント112のようなシステムレベルコンポーネント、又は或る他のモジュール又はコンポーネントは、1つ以上のリクエスト、信号、又は指示をメモリバックアップコントローラ124のようなメモリバックアップコントローラに送信するように構成することができ、メモリバックアップコントローラ124は、データバックアップを、システムメモリに格納されているアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータに対して実行するように構成することができる。データバックアップは、幾つかの実施形態では、コンポーネントをプログラミング又は構成することにより有効化して、システム障害が発生した場合に、データバックアップをアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータに対して実行することができる。図4は、幾つかの実施形態によるデータバックアップをアプリケーションデータオブジェクトについて有効化する方法の一実施例を示す。アプリケーションデータオブジェクト(又は所定範囲のアプリケーションデータ)を格納している1つ以上のストレージロケーションは、参照番号410に記載された通りに特定することができる。例えば、システムレベルコンポーネントは、アプリケーションデータオブジェクトを定義するアドレスを理解することができる、又は所定範囲のアプリケーションデータは仮想メモリアドレスとすることができる。仮想メモリアドレスを変換する、又はその他には、解釈することにより、1つ以上の物理アドレスを、アプリケーションデータオブジェクトを格納していたシステムメモリに配置することができる。次に、参照番号420に記載の通り、システム障害が検出されると、メモリバックアップコントローラ又は他のコンポーネント又はデバイスに指示して、データバックアップ動作をシステムメモリ内に特定される1つ以上のストレージロケーションに対して実行することにより、不揮発性データストレージ内の1つ以上のバックアップロケーションに移行する処理を行う。これらのバックアップロケーションは予め定義しておくことができ、例えば全てのバックアップ済みのデータオブジェクトは、不揮発性データストレージの特定の部分に格納される。あるいは、幾つかの実施形態では、不揮発性データストレージデバイスは、システムメモリをミラーリングすることができ、かつアプリケーションデータオブジェクトを同じロケーションに格納することができる。他の複数の不連続ロケーションを用いることもできる。例えば、フラッシュ技術を用いたストレージデバイスのような幾つかの不揮発性電子ストレージデバイスは、ウェアレベリング(wear leveling:摩耗平滑化)手法を用いることにより、デバイスの使用寿命を延ばすために確実にデータ書き込みがデバイス全体に亘って均一に分散して行われ、これにより、アプリケーションデータオブジェクトのバックアップストレージロケーションを決定することができる。アプリケーションデータオブジェクトをシステムメモリ内の当該データオブジェクトのそれぞれのストレージロケーション、及び不揮発性データストレージ内の当該データオブジェクトのそれぞれのストレージロケーションにリンクさせるマッピング情報は、参照番号430に記載の通りに更新することができる。このようなマッピング情報は、メモリデバイスのメモリバックアップコントローラ、又はシステムレベルコンポーネントに保持することができる。
一旦、有効化されると、種々の実施形態では、多くの異なるタスク又は動作は、アプリケーションプログラム、読み出し、書き込み、変更、又はその他には特定の範囲のデータにアクセスすることにより実行することができる。システム障害が発生すると、有効化されたデータバックアッププロセスでは、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータをシステムメモリから不揮発性データストレージにコピーすることができる。このデータバックアッププロセスは、上に説明したメモリバックアップコントローラ124のような1つ以上のコンポーネントにより実行することができ、かついずれの外部電源、ロジック、又は他のコンポーネントの支援を受けることなく実行することもできる。例えば、上に説明したように、メモリバックアップコントローラ124は、キャパシタ又はバッテリのような別体電源を含むことができ、この電源によって、メモリバックアップコントローラ124は、システム電源又は他の主電源が配設されていないのにも拘わらず、コピープロセスを実行することができる。アプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)は、不揮発性データストレージ内のデータに対応する1つ以上の所定のロケーションにコピーすることができる。幾つかの実施形態では、データバックアップ用に有効化されるアプリケーションデータオブジェクトは、データバックアップを有効化していない状態のシステムメモリをコピーすることなくコピーすることができる。図4に関する説明の中で上に述べたように、データバックアップを有効化するリクエスト、又は或る他の指示、リクエスト、又は通信により、不揮発性データストレージ内の特定のロケーションを決定して、アプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)を格納することができる。あるいは、メモリバックアップコントローラ124のような不揮発性データストレージ用の或る他のコンポーネント又はコントローラは、アプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)のストレージロケーションを指定することができる。
少なくとも幾つかの実施形態では、システムメモリから不揮発性データストレージへのデータバックアップを有効化することは、不揮発性データストレージにコピーされるときに、アプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)を暗号化する指示又はリクエストを含むことができる。財務情報、個人データなどのような機密情報は、アプリケーションによってアプリケーションデータオブジェクトに格納することができる。対称鍵方式又は公開秘密鍵方式のような暗号化技術はアプリケーションデータオブジェクトに、当該アプリケーションデータオブジェクトを揮発性データストレージから不揮発性データストレージにコピーするときに適用することができる。後の時点で情報へのアクセス、又は不揮発性データストレージに対する情報の復元を行うと、アプリケーションデータオブジェクトは、同じ暗号化方式に従って復号化することができる。
幾つかの実施形態では、システム障害からの復旧は、参照番号330に記載の通りに行うことができる。システム障害として、アプリケーションソフトウェア、プログラム、モジュール、又はコンポーネントが、揮発性データストレージ内のデータにアクセスするのを妨げる、および/又は揮発性データストレージに現在格納されているデータが紛失する、使用できない、消去されるなどしてしまういずれかの電源喪失、機能障害、および/又は他の障害を挙げることができる。システム障害は種々の方法で検出することができる。例えば、システムは、ブートプログラムが実行される回数を記録するカウンタ又は他のコンポーネントを用いることができる。他のセンサ又はコンポーネントは、障害が発生したかどうかを決定することができる電力レベル、プロセッサ、又は他のコンポーネント又はデバイスを監視することができる。
システム障害から復旧すると、システムメモリに格納されて不揮発性データストレージに移行されるアプリケーションデータオブジェクトに関するその後のデータバックアップは、参照番号340に記載の通りに無効化することができる。少なくとも幾つかの実施形態では、データバックアップの無効化は、ブートプロセスのようないずれかのプロセスの前に、又はシステムメモリ内のアプリケーションデータオブジェクトと同じロケーションに格納されているデータを変更することができる他のスタートアップルーチンの前に行うことができ、かつ次の電源障害発生時に、バックアップ済みのいずれかの新規の変更済みデータ、又はその他には、非関連データへの上書きが行なわれるのを防止することができる。上に説明したように、アプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)に関するデータバックアップを有効化するのと同様にして、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータに関するデータバックアップを無効化することは、1つ以上の信号又は指示をメモリバックアップコントローラ124のようなメモリバックアップコントローラに送信することを含むことができる。当該メモリバックアップコントローラは、データバックアップをシステムメモリに格納されているアプリケーションデータオブジェクトに対して実行するように構成することができる。このような信号又は指示は、その後のデータバックアップが行われる予定が全くない状態のシステムメモリ内のアプリケーションデータオブジェクトのロケーションを含むことができる。その後のデータバックアップを無効化することは、幾つかの実施形態では、1回以上の後続のシステム障害が発生した場合に、不揮発性データストレージにバックアップされたアプリケーションデータオブジェクトを保持するか、又は永続性を持たせることができる。同様に、1つ以上の異なるアプリケーションデータオブジェクトがデータバックアップを有効化されて、不揮発性データストレージにコピーすることができる場合でも、アプリケーションデータオブジェクトは、幾つかの実施形態では、アプリケーションデータオブジェクトに関するデータバックアップが再有効化されるまで、上書きされない、消去されない、又はその他には、変更されないようにすることができる。
少なくとも幾つかの実施形態では、不揮発性データストレージに格納されてシステムメモリに移行されてアプリケーションプログラムからアクセスすることができるアプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)の少なくとも幾つかのデータオブジェクトの復元は、参照番号350に記載の通りに指示することができる。アプリケーションデータオブジェクトの少なくとも幾つかの復元は、システムメモリに返されてアプリケーションプログラムからアクセスすることができるアクセス先のバックアップ済みのメモリのアクセス部又は全部を介して行うことができる。図5は、幾つかの実施形態による不揮発性データストレージに格納されているアプリケーションデータオブジェクトの復元を指示する1つのこのような方法を示すフローチャートである。システム障害が、参照番号510に記載の通りに、図4を参照して上に説明したマッピング情報のようなマッピング情報に少なくとも部分的に基づいて復旧すると、アプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)を格納している不揮発性データストレージ内の1つ以上のバックアップロケーション、及びアプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)を格納しているシステムメモリ内の1つ以上のストレージロケーションは、参照番号520に記載の通りに特定することができる。図4を参照して上に説明したのと同様に、不揮発性電子ストレージデバイスは、アプリケーションデータオブジェクトを複数のロケーションに、例えば所定の方式に従って、又はウェアレベリングのような手法に従って格納することができる。メモリバックアップコントローラ124又はアプリケーションデータ保持システムレベルコンポーネント112のような、不揮発性データストレージの外部のコンポーネントは、これらのバックアップストレージロケーションを決定することができる。不揮発性データストレージにバックアップされるアプリケーションデータオブジェクト又は所定範囲のアプリケーションデータの各々について保持することができるマッピング情報は、これらのバックアップロケーションだけでなく、これらのロケーションのアプリケーションデータオブジェクトの復元先のシステムメモリ内のロケーションを格納することができる。アプリケーションプログラムの側から見たときに、アプリケーションデータオブジェクトがシステムメモリ内に保持されていたように見える状態を維持するために、マッピング情報は保持されることができる。次に、参照番号530に記載の通り、メモリコントローラに指示して、データを不揮発性データストレージ内に特定されるバックアップロケーションからシステムメモリ内に特定されるストレージロケーションにコピーすることができる。幾つかの実施形態では、バックアップ済みのアプリケーションデータオブジェクト全体をシステムメモリにコピーすることができるが、少なくとも幾つかの他の実施形態では、一部のデータ、又は選択部分のデータをコピーすることができる。
次に、アプリケーションプログラムは、復元されたアプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)にアクセスすることができる。アプリケーションの側から見れば、アプリケーションデータオブジェクトがシステムメモリ内に保持されていたように見える。次に、復元されたデータは、アプリケーションプログラムにより種々の方法で利用されて、例えばアプリケーションプログラムを前の状態に復元させることができる、又はシステム障害が発生した場合に、アプリケーションプログラムの実行状態を確認することができる。例えば、アプリケーションデータオブジェクト又は所定範囲のアプリケーションデータは、アプリケーションプログラムが、システム障害が発生した場合に実行していた1つ以上のタスク又は動作を記録することができる。アプリケーションプログラムは、記録されたタスクを分析することができ、かつ完了したタスク及び未処理のタスクだけでなく、これらのタスクの種々の結果、計算、又は他の成果物を決定することができる。
図5に記載される方法に代わる方法として、幾つかの実施形態では、不揮発性データストレージに格納されているアプリケーションデータオブジェクトに対する「out−of−band(帯域外)」のアクセスは、アプリケーションプログラムに提供することができる。従って、アプリケーションプログラムは、バックアップ済みのデータの選択部分を取得して処理を更に進める回復動作を実行することができ、そして続いて、新規のアプリケーションデータオブジェクトを、アプリケーションデータオブジェクトの復元部分(この復元部分は、幾つかの実施形態では、データバックアップを有効化することができる)から生成することができる。例えば、不揮発性データストレージを「マウント」する(例えば、ディスクドライブのような永続ストレージデバイスと同様に)ことができ、そして次に、不揮発性データストレージに、回復動作を実行するアプリケーションプログラムからアクセスすることができる。
少なくとも幾つかの実施形態では、後続の1回以上のシステム障害を復旧させることができる。上に説明したように、システム障害として、アプリケーションソフトウェア、プログラム、モジュール、又はコンポーネントが、揮発性データストレージ内のデータにアクセスするのを妨げる、および/又は揮発性データストレージに現在格納されているデータが紛失する、使用できない、消去されるなどしてしまういずれかの電源喪失、機能障害、および/又は他の障害を挙げることができる。しかしながら、アプリケーションデータオブジェクトに関するデータバックアップが無効化されたままである場合、次のシステム障害では、単に、既にバックアップ済みのアプリケーションデータオブジェクトを再び復元することができるだけである。一旦、無効化されると、バックアップ済みのアプリケーションデータオブジェクトは、システム障害が発生した場合、不揮発性データストレージ内に無期限に保持することができる、又はアプリケーションデータオブジェクトに関するその後のデータバックアップが、参照番号360に記載の通りに再有効化されるまで不揮発性データストレージ内に無期限に保持することができる。
少なくとも幾つかの実施形態では、システムメモリに格納されているアプリケーションデータオブジェクトに関するデータバックアップは、参照番号360に記載の通りに再有効化することができる。システム障害が発生した場合、再有効化されたデータバックアップでは、再度、アプリケーションデータオブジェクト(又は、所定範囲のアプリケーションデータ)をシステムメモリから不揮発性データストレージにコピーすることができる。アプリケーションへの書き込みが行われているので、又はその他には、アプリケーションで、アプリケーションデータオブジェクトに格納されているデータを変更しているので、別の電源障害が発生した場合にバックアップされるデータは、アプリケーションデータオブジェクトについて既にバックアップ済みのデータとは異なる。少なくとも幾つかの実施形態では、前のバックアップの後にバックアップされるデータは、前のデータバックアップで格納されていたデータを保持するように不揮発性データストレージ内の異なるロケーションに格納されることができる。あるいは、幾つかの実施形態では、同じアプリケーションデータオブジェクトに関するデータを続いてバックアップすることにより、前のバックアップで格納されていたデータへの上書きを行うことができる。
上に説明した手法の一部又は全部は、システムメモリに格納されている同じ、又は異なるアプリケーションデータオブジェクト、又は所定範囲のアプリケーションデータについて繰り返すことができる。種々の要素は、種々のイベントに応じて、自動的に、又は動的に実行することができる。例えば、同じアプリケーションデータオブジェクトは、複数回に亘って有効化する、無効化する、そして再有効化することができる。更に、1つよりも多くのアプリケーションデータオブジェクトは、同時に、かつそれぞれ独立して有効化する、又は無効化することができる。例えば、幾つかのアプリケーションデータオブジェクトを無効化することができるのに対し、他のアプリケーションデータオブジェクトは、同時に有効化することができる。従って、図3に示すこれらの要素の順番は、図示の要素の多くの他の適用可能な順番又は構成があるので、限定的であると解釈されてはならない。また、更に別の要素を追加する、又は要素を取り除く、或いは変更することができる。従って、図3は、システムメモリから不揮発性データストレージに移行されるアプリケーションデータの選択的保持を行う多くの適用可能な方法のうちの幾つかの方法の一実施例として提示されているに過ぎない。
図6は、幾つかの実施形態によるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持することができる例示的なシステムを示すブロック図である。以下に説明する図7は、種々の実施形態及び手法を汎用システムで実現することができる当該汎用システムを示しているが、図6では、特定目的のデータストレージに関する例示的なシステムについての説明を提供する。
ストレージクライアント600は、1つ以上のコンピューティングデバイスで実現されるデータベースシステム又はデータベースサービスのような、データを管理する、又は維持するシステム又はデバイスとすることができる。ストレージクライアント600により管理される、又は維持されるデータは、分散ストレージシステム610に格納することができる。分散ストレージシステム610は、ストレージクライアント600宛てのデータを格納するストレージサービスを提供することができる。分散ストレージシステム610に格納されているデータにアクセスするために、ストレージクライアント600は、1つ以上のアクセスリクエストを、ストレージクライアント600宛てのデータを格納している分散ストレージシステム610のストレージノード630に送信することができる。ストレージノード630は、ストレージデバイス640a〜640nとの接続を直接行うことができ、これらのストレージデバイスは、ストレージクライアント宛てのデータを格納する。ストレージノード630は、ストレージクライアント600から受信するアクセスリクエストを処理するストレージノードマネジャアプリケーション632、及びストレージノードマネジャアプリケーション632の動作をサポートするサービス及び機能を提供するストレージノードオペレーティングシステム634を実行することができる。
幾つかの実施形態では、ストレージノードマネジャアプリケーション632は、ストレージノードで受信するアクセスリクエストのトランザクションログをアプリケーションデータオブジェクトに格納することができ、このアプリケーションデータオブジェクトは、システムメモリ126内に保持されるものとして処理することができる。アプリケーションデータ保持システムレベルコンポーネント112は、ストレージノードオペレーティングシステム634内で実行されて、アクセスリクエストのトランザクションログを選択的に保持することができる。アクセスリクエストのトランザクションログに関するデータバックアップを有効化することができる。従って、例えばトランザクションのアクノリッジ信号をストレージクライアント600に返す場合、ストレージノードマネジャアプリケーション632は、これらのリクエストをシステムメモリ内のトランザクションログに書き込むだけで済み、この書き込みは、トランザクションの肯定応答を返す前にトランザクションリクエストを不揮発性データストレージ内に保持するよりもずっと高速に行うことができる。ストレージノード障害から復旧すると、データバックアップをトランザクションログに関して無効化する(再有効化されるまで)ことができ、そしてアクセスリクエストのトランザクションログを不揮発性データストレージ122からシステムメモリ126に、メモリバックアップコントローラ124を介して復元させることにより、確実にトランザクションログに格納されているトランザクションを保持し続けることができる。
本明細書において記載されるシステムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータを選択的に保持する実施形態は、種々の他のデバイスと対話することができる1つ以上のコンピュータシステムで実行することができる。1つのこのようなコンピュータシステムは、図7に図示する。異なる実施形態では、コンピュータシステム1000は、種々の種類のデバイスのうちのいずれかのデバイスとすることができ、これらのデバイスとして、これらには限定されないが、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ、ノートブック、又はネットブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、カメラ、セットトップボックス、モバイルデバイス、コンシューマデバイス、ビデオゲームコンソール、ハンドヘルドビデオゲームデバイス、アプリケーションサーバ、ストレージデバイス、又はスイッチ、モデム、ルータのような周辺装置、又は広義には、任意の種類のコンピューティングデバイス又は電子デバイスを挙げることができる。
図示の実施形態では、コンピュータシステム1000は、システムメモリ1020に入力/出力(I/O)インターフェース1030を介して接続される1つ以上のプロセッサ1010を含む。コンピュータシステム1000は更に、I/Oインターフェース1030に接続されるネットワークインターフェース1040と、カーソルコントロールデバイス1060、キーボード1070、及びディスプレイ(群)1080のような1つ以上の入力/出力(I/O)デバイス1050と、を含む。ディスプレイ(群)1080は、標準的なコンピュータモニタ(群)および/又は他のディスプレイシステム、技術、又はデバイスを含むことができる。少なくとも幾つかの実施形態では、これらの入力/出力デバイス1050は更に、パッド又はタブレットのようなタッチ式作動デバイス、又はマルチタッチ式作動デバイスを含むことができ、このタッチ式作動デバイスを利用して、ユーザは、入力をスタイラスペン状デバイスおよび/又は1つ以上の数字認識装置によって行う。幾つかの実施形態では、種々実施形態を、コンピュータシステム1000の単一のインスタンス(機能を遂行するための実体)を使用して実現することができるのに対し、他の実施形態では、複数のこのようなシステム、又はコンピュータシステム1000を構成する複数のノードは、実施形態の異なる部分、又は異なるインスタンスをホストするように構成することができることが考えられる。例えば、1つの実施形態では、幾つかの要素は、他の要素を実行するこれらのノードとは異なるコンピュータシステム1000の1つ以上のノードによって実行することができる。
種々の実施形態では、コンピュータシステム1000は、1つのプロセッサ1010を含むユニプロセッサシステム、又は幾つかの(例えば、2個、4個、8個、又は別の適切な個数の)プロセッサ1010を含むマルチプロセッサシステムとすることができる。プロセッサ1010は、命令を実行することができる任意の適切なプロセッサとすることができる。例えば、種々の実施形態では、プロセッサ1010は、x86、PowerPC、SPARC、MIPS ISA、又は他のいずれかの適切なISAのような多種多様な命令セットアーキテクチャ(ISA)のうちのいずれかを実装した汎用プロセッサ又は組込みプロセッサとすることができる。マルチプロセッサシステムでは、プロセッサ1010の各プロセッサは普通、必ずという訳ではないが、同じISAを実装することができる。
幾つかの実施形態では、少なくとも1つのプロセッサ1010はグラフィックス処理ユニットとすることができる。グラフィックス処理ユニットすなわちGPUは、パーソナルコンピュータ、ワークステーション、ゲームコンソール、又は他のコンピューティング又は電子デバイスの専用グラフィックスレンダリングデバイスであると考えることができる。最新のGPUは、コンピュータグラフィックスを操作して表示する際に非常に効率が良く、そしてこれらのGPUの高度並列構造は、これらのGPUを、所定範囲の複雑なグラフィックアルゴリズムの通常のCPUよりも一層効果的に動作させることができる。例えば、グラフィックスプロセッサは、多数のグラフィックスプリミティブ処理を、ホスト中央処理ユニット(CPU)でスクリーンに直接投影するよりもずっと高速に実行することができるように実装することができる。種々の実施形態では、グラフィックスレンダリングは、このようなGPUのうちの1つのGPUで実行する、又はこのようなGPUのうちの2つ以上のGPUで並列に実行するように構成されるプログラム命令により少なくとも部分的に行うことができる。GPU(群)は、1つ以上のアプリケーションプログラマインターフェース(API)を実行することができ、これらのアプリケーションプログラマインターフェースによりプログラマは、GPU(群)の機能を呼び出すことができる。適切なGPU群は、NVIDIA Corporation、 ATI Technologies(AMD)のようなベンダー、及び他のベンダーから市販されている。
システムメモリ1020は、プロセッサ1010からアクセス可能なプログラム命令および/又はプログラムデータを格納するように構成することができる。種々の実施形態では、システムメモリ1020は、スタティックランダムアクセスメモリ(SRAM)、シンクロナスダイナミックRAM(SDRAM)、不揮発性/フラッシュ系メモリ、又はいずれかの他の種類のメモリのようないずれかの適切なメモリ技術を用いて実現することができる。図示の実施形態では、上に説明した機能のような所望の機能を実行するプログラム命令及びデータは、システムメモリ1020内に、プログラム命令1025及びデータストレージ1035としてそれぞれ格納されるものとして図示されている。他の実施形態では、プログラム命令および/又はプログラムデータは、異なる種類のコンピュータアクセス可能な媒体、又はシステムメモリ1020又はコンピュータシステム1000とは別体の同様の媒体で受信し、当該媒体から送信し、又は当該媒体に格納することができる。一般的に言うと、コンピュータアクセス可能な媒体は、例えば磁気媒体又は光媒体、例えばコンピュータシステム1000にI/Oインターフェース1030を介して接続されるディスク又はCD/DVD−ROMのような記憶媒体又はメモリ媒体を含むことができる。コンピュータアクセス可能な媒体を介して格納されるプログラム命令及びデータは、電気信号、電磁信号、又はデジタル信号のような伝送媒体又は信号により送信することができ、これらの信号は、ネットワークインターフェース1040を介して実現されるようなネットワークおよび/又は無線リンクのような通信媒体を介して伝送することができる。
1つの実施形態では、I/Oインターフェース1030は、当該デバイス内のプロセッサ1010、システムメモリ1020、及びいずれかの周辺装置の間のI/Oトラフィックを調整するように構成することができ、周辺装置として、ネットワークインターフェース1040、又は入力/出力デバイス1050のような他の周辺インターフェースを挙げることができる。幾つかの実施形態では、I/Oインターフェース1030は、いずれかの必要なプロトコル、タイミング変換又は他のデータ変換を行って、1つのコンポーネント(例えば、システムメモリ1020)からのデータ信号を、別のコンポーネント(例えば、プロセッサ1010)による使用に適するフォーマットに変換することができる。幾つかの実施形態では、I/Oインターフェース1030は、例えばペリフェラルコンポーネントインターコネクト(PCI)バス規格又はユニバーサルシリアルバス(USB)規格の変種のような種々の種類の周辺バスを介して接続されるデバイスのサポートを行うことができる。幾つかの実施形態では、I/Oインターフェース1030の機能は、例えばノースブリッジ及びサウスブリッジのような2つ以上の個別コンポーネントに分割することができる。更に、幾つかの実施形態では、システムメモリ1020とのインターフェースのようなI/Oインターフェース1030の機能の幾つかの部分、又は全部は、プロセッサ1010に直接組み込むことができる。
ネットワークインターフェース1040は、データをコンピュータシステム1000と、ネットワークに接続される他のコンピュータシステムのような他のデバイスとの間で、又はコンピュータシステム1000のノードの間で授受することができるように構成することができる。種々の実施形態では、ネットワークインターフェース1040は、例えばいずれかの適切な種類のイーサネット(登録商標)ネットワークのような有線又は無線の汎用データネットワークを介した通信、アナログ音声ネットワーク又はデジタルファイバ通信ネットワークのような電気通信網/電話網を介した通信、Fibre Channel SANsのようなストレージエリアネットワークを介した、又はいずれかの他の適切な種類のネットワークおよび/又はプロトコルを介した通信をサポートすることができる。
入力/出力デバイス1050として、幾つかの実施形態では、1つ以上のディスプレイターミナル、キーボード、キーパッド、タッチパッド、スキャニングデバイス、音声認識デバイス又は光認識デバイス、又は1つ以上のコンピュータシステム1000によりデータを入力する、又は取り出すために適するいずれかの他のデバイスを挙げることができる。複数の入力/出力デバイス1050は、コンピュータシステム1000に設けることができる、又はコンピュータシステム1000の種々のノードに分散させることができる。幾つかの実施形態では、同様の入力/出力デバイスは、コンピュータシステム1000とは別体とすることができ、かつコンピュータシステム1000の1つ以上のノードと、有線接続又は無線接続を介して、例えばネットワークインターフェース1040を介して対話することができる。
図7に示すように、メモリ1020は、本明細書において説明されるように、システムメモリから不揮発性データストレージに移行されるアプリケーションデータを選択的に保持する種々の実施形態を実現するように構成されるプログラム命令1025と、プログラム命令1025によりアクセス可能な種々のデータを含むデータストレージ1035と、を含むことができる。1つの実施形態では、プログラム命令1025は、本明細書において説明され、かつこれらの図に図示されるように、種々の実施形態のソフトウェア要素を含むことができる。データストレージ1035は、種々実施形態において使用することができるデータを含むことができる。他の実施形態では、他のソフトウェア要素又は異なるソフトウェア要素、及びデータを含めることができる。
当業者であれば、コンピュータシステム1000が例示に過ぎず、かつ本明細書において説明されるように、これらの実施形態の範囲を限定するものではないことを理解できるであろう。具体的には、コンピュータシステム及びデバイスは、指示された機能を実行することができるハードウェア又はソフトウェアのいずれかの組み合わせを含むことができ、これらのコンピュータシステム及びデバイスとして、コンピュータ、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ、ノートブック、又はネットブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、カメラ、セットトップボックス、モバイルデバイス、ネットワークデバイス、インターネットアプライアンス、PDA、無線電話、ページャ、コンシューマデバイス、ビデオゲームコンソール、ハンドヘルドビデオゲームデバイス、アプリケーションサーバ、ストレージデバイス、スイッチ、モデム、ルータのような周辺装置、又は広義には、任意の種類のコンピューティングデバイス又は電子デバイスを挙げることができる。コンピュータシステム1000は、不図示の他のデバイスに接続することもできる、又はそうではなく、スタンドアローンシステムとして動作することができる。更に、図示のコンポーネントにより提供される機能は、幾つかの実施形態では、組み合わせることにより、より少数のコンポーネントとするか、又は更に別のコンポーネントに分散させることができる。同様に、幾つかの実施形態では、図示のコンポーネントのうちの幾つかの機能は、提供されなくてもよい、および/又は他の更に別の機能は利用可能とすることができる。
当業者であれば更に、種々のアイテムがメモリに、又はストレージに使用中に格納されているものとして図示されているが、これらのアイテムは、又はこれらのアイテムの一部は、メモリ管理とデータの整合性のために、メモリと他のストレージデバイスとの間で転送されることを理解できるであろう。あるいは、他の実施形態では、これらのソフトウェアコンポーネントの幾つかの部分、又は全部が、別のデバイスのメモリ内で実行され、かつ図示のコンピュータシステムと、コンピュータ間通信により通信することができる。これらのシステムコンポーネント又はデータ構造の幾つかの部分、又は全部はまた、コンピュータアクセス可能な媒体、又はポータブル製品に格納されて(例えば、命令として、又は構造化データとして)適切なドライブによって読み出すことができ、当該ドライブの種々の実施例が上に説明されている。幾つかの実施形態では、コンピュータシステム1000とは別体のコンピュータ可読媒体に格納されている命令は、コンピュータシステム1000に、ネットワークおよび/又は無線リンクのような通信媒体を介して伝送される電気信号、電磁信号、又はデジタル信号のような伝送媒体又は信号を介して送信することができる。このコンピュータ可読記憶媒体は非一時的な媒体とすることができる。種々の実施形態では更に、コンピュータアクセス可能な媒体についてのこれまでの記述に従って実行される命令および/又はデータを受信する、送信する、又は格納することができる。従って、本発明は、他のコンピュータシステム構成を用いて実施することができる。
これまでの説明は、以下の条項を考慮に入れることにより、より深く理解することができる。
条項1.
1つ以上のプロセッサと、
システム障害が発生した場合に、システムメモリにアプリケーションプログラム用に格納されている所定範囲のアプリケーションデータを、前記システムメモリに格納されている前記所定範囲のアプリケーションデータを不揮発性データストレージにコピーすることにより保持するように構成される特殊メモリシステムと、
プログラム命令を格納する前記システムメモリと、を備え、前記プログラム命令群が前記1つ以上のプロセッサにより実行されるとシステムレベルコンポーネントが実行され、該システムレベルコンポーネントは、
指示を前記アプリケーションプログラムに出して、前記システムメモリに格納されている前記所定範囲のアプリケーションデータを保持するものとして処理することができるようにし、
システム障害が発生した場合に、前記システムメモリに前記アプリケーションプログラム用に格納されている前記所定範囲のアプリケーションデータに関するデータバックアップを有効化し、
システム障害から復旧すると、前記システムメモリに格納されて前記不揮発性データストレージに移行される前記所定範囲のアプリケーションデータのその後のデータバックアップを無効化するように構成される、
システム。
条項2.
前記システムレベルコンポーネントは更に、
前記システム障害から復旧すると、前記不揮発性データストレージに格納されて前記システムメモリに移行される前記所定範囲のアプリケーションデータのうちの少なくとも幾つかのアプリケーションデータの復元を指示して、前記アプリケーションプログラムからアクセスすることができるように構成される、条項1に記載のシステム。
条項3.
前記システムレベルコンポーネントは更に、
その後のデータの保持を前記無効化した後、前記システムメモリに格納されて前記不揮発性データストレージに移行される前記所定範囲のアプリケーションデータに関するデータバックアップを再有効化するように構成される、条項2に記載のシステム。
条項4.
前記特殊メモリシステムはメモリバックアップコントローラを備え、該メモリバックアップコントローラは、
前記システム障害を検出し、
前記システム障害を検出すると、前記システムメモリに格納されている残りのデータを前記不揮発性データストレージデバイスにコピーすることなく、前記所定範囲のアプリケーションデータを前記システムメモリから前記不揮発性データストレージデバイスにコピーするように構成され、
前記有効化、前記無効化、前記指示、及び前記再有効化は、前記メモリバックアップコントローラに対して指示される、条項3に記載のシステム。
条項5.
システムを実行するコンピューティングデバイスによって実行し、前記実行する際に、
アプリケーションデータオブジェクトをシステムメモリに格納しているアプリケーションプログラムに指示して、前記アプリケーションデータオブジェクトを保持するものとして処理することができるようにし、
システム障害が発生した場合に、前記システムメモリに格納されている前記アプリケーションデータオブジェクトに関するデータバックアップを有効化して、前記アプリケーションプログラム用の前記アプリケーションデータオブジェクトを保持し、前記データバックアップにより、前記システムメモリに格納されている前記アプリケーションデータオブジェクトを不揮発性データストレージにコピーし、
システム障害から復旧すると、前記システムメモリに格納されて前記不揮発性データストレージに移行される前記アプリケーションデータオブジェクトに関するその後のデータバックアップを無効化する、
方法。
条項6.
更に、前記システム障害から復旧すると、前記不揮発性データストレージに格納されて前記システムメモリに移行される前記アプリケーションデータオブジェクトのうちの少なくとも幾つかのデータオブジェクトの復元を指示して、前記アプリケーションプログラムからアクセスすることができるようにする、条項5に記載の方法。
条項7.
前記システム障害から復旧する前の前記システムメモリ内の前記アプリケーションデータオブジェクトの1つ以上のストレージロケーションは、前記不揮発性データストレージに格納されて前記システムメモリに移行される前記アプリケーションデータオブジェクトのうちの前記少なくとも幾つかの復元の前記指示が行われるときの前記アプリケーションデータオブジェクトの前記システムメモリ内の1つ以上の別のストレージロケーションとは異なる、条項6に記載の方法。
条項8.
更に、前記無効化の後、前記システムメモリに格納されて前記不揮発性データストレージに移行される前記アプリケーションデータオブジェクトに関するデータバックアップを再有効化する、条項6に記載の方法。
条項9.
更に、前記指示、前記無効化、前記指示、及び前記再有効化を、前記アプリケーションプログラムを含む複数のアプリケーションプログラムのうちの少なくとも1つに対応する複数のアプリケーションデータオブジェクトのうちの異なるアプリケーションデータオブジェクトについて個別に実行する、条項8に記載の方法。
条項10.
メモリバックアップコントローラが、前記システムメモリと前記不揮発性データストレージとの間の通信を指示し、前記有効化、前記無効化、前記指示、及び前記再有効化では、アプリケーションプログラミングインターフェース(API)の一部が、前記メモリバックアップコントローラによる前記有効化、前記無効化、前記指示、及び前記再有効化の実行を指示する、条項8に記載の方法。
条項11.
システム障害が発生した場合に、前記システムメモリに格納されている前記アプリケーションデータオブジェクトに関するデータバックアップを前記有効化して、前記1つ以上のアプリケーションプログラム用の前記アプリケーションデータオブジェクトを保持する際に、
前記アプリケーションデータオブジェクトを格納している前記システムメモリ内の1つ以上のストレージロケーションを特定して有効化することによりデータバックアップを行い、
前記システム障害が検出されると、前記メモリバックアップコントローラに指示して、前記システムメモリ内に特定される前記1つ以上のストレージロケーションに関するデータバックアップ動作を、前記不揮発性データストレージ内の1つ以上のバックアップロケーションに対して実行し、そして
前記アプリケーションデータオブジェクトに関するマッピング情報を更新して、前記アプリケーションデータオブジェクトに関して特定される前記1つ以上のストレージロケーションを前記1つ以上のバックアップロケーションにリンクさせる、条項10に記載の方法。
条項12.
前記不揮発性データストレージに格納されて前記システムメモリに移行される前記アプリケーションデータオブジェクトのうちの少なくとも幾つかの前記復元を前記指示して、前記アプリケーションプログラムからアクセスすることができるようにする際に、
前記マッピング情報に少なくとも部分的に基づいて、前記アプリケーションデータオブジェクトを格納している前記不揮発性データストレージ内の前記1つ以上のバックアップロケーション、及び前記システムメモリ内の前記1つ以上のストレージロケーションを特定して、バックアップ済みの前記アプリケーションデータオブジェクトを前記不揮発性データストレージに格納し、
前記メモリバックアップコントローラに指示して、データを不揮発性データストレージ内に特定される前記バックアップロケーションから前記システムメモリ内に特定される前記ストレージロケーションにコピーする、条項11に記載の方法。
条項13.
システム障害が発生した場合に、前記システムメモリに格納されている前記アプリケーションデータオブジェクトに関するデータバックアップを前記有効化して、前記アプリケーションプログラム用の前記アプリケーションデータオブジェクトを保持する際に、更に、前記不揮発性データストレージにコピーするときに、前記アプリケーションデータオブジェクトの暗号化を暗号化方式に従って指示し、
前記不揮発性データストレージに格納されて前記システムメモリに移行される前記アプリケーションデータオブジェクトの復元を前記指示して、前記アプリケーションプログラムからアクセスすることができるようにする際に、更に、前記システムメモリにコピーするときに、前記アプリケーションデータオブジェクトの復号化を前記暗号化方式に従って指示する、条項12に記載の方法。
条項14.
更に、前記不揮発性データストレージから、前記アプリケーションデータオブジェクトのうちの少なくとも幾つかを読み出して、前記アプリケーションプログラムを復元する、条項5に記載の方法。
条項15.
更に、前記システムメモリ及び前記不揮発性データストレージが一体となって、1つ以上の不揮発性デュアルインラインメモリモジュール(NV−DIMM)を構成する、条項5に記載の方法。
条項16.
前記アプリケーションデータオブジェクトは、前記1つ以上の不揮発性デュアルインラインメモリモジュール(NV−DIMM)のうちの1つに格納される所定範囲のシステムメモリである、条項12に記載の方法。
条項17.
前記コンピューティングデバイスは、分散ストレージシステムのストレージノードを実現し、前記アプリケーションプログラムは、前記ストレージノードに関するデータ管理動作を実行し、そして前記システムメモリ内の前記アプリケーションデータオブジェクトは、前記ストレージノードのデータベースに格納されているデータに関するアクセス動作を格納して、前記格納アクセス動作を行う旨のアクノリッジメントをデータベースシステムに送信する永続的なトランザクションログとして機能する、条項5に記載の方法。
条項18.
プログラム命令を格納する非一時的なコンピュータ可読記憶媒体であって、プログラム命令がコンピューティングデバイスによって実行されるとシステムが実行され、該システムは、
所定範囲のアプリケーションデータをシステムメモリに格納しているアプリケーションプログラムに指示して、前記所定範囲のアプリケーションデータを保持するものとして処理することができるようにし、
システム障害が発生した場合に、前記システムメモリに格納されている前記所定範囲のアプリケーションデータに関するデータバックアップを有効化して、前記アプリケーションプログラム用の前記所定範囲のアプリケーションデータを保持し、前記データバックアップにより、前記システムメモリに格納されている前記所定範囲のアプリケーションデータを不揮発性データストレージにコピーし、
システム障害から復旧すると、前記システムメモリに格納されて前記不揮発性データストレージに移行される前記所定範囲のアプリケーションデータに関するその後のデータバックアップを無効化するように構成される、非一時的なコンピュータ可読記憶媒体。
条項19.
メモリバックアップコントローラが、前記システムメモリと前記不揮発性データストレージとの間の通信を指示し、前記プログラム命令は前記コンピューティングデバイスにより実行されると更に、前記システム障害から復旧すると、前記メモリバックアップコントローラに指示して、前記不揮発性データストレージに格納されて前記システムメモリに移行される前記所定範囲のアプリケーションデータのうちの少なくとも幾つかを復元することにより、前記アプリケーションプログラムからアクセスすることができるようにする、条項18に記載の非一時的なコンピュータ可読記憶媒体。
条項20.
前記プログラム命令は前記コンピューティングデバイスにより実行されると更に、前記無効化の後、前記システムメモリに格納されて前記不揮発性データストレージに移行される前記所定範囲のアプリケーションデータに関するデータバックアップを再有効化する、条項18に記載の非一時的なコンピュータ可読記憶媒体。
条項21.
前記指示、前記有効化、前記無効化、及び前記再有効化は、前記コンピューティングデバイスによりオペレーティングシステムプログラムの一部として実行される、条項20に記載の非一時的なコンピュータ可読記憶媒体。
条項22.
前記コンピューティングデバイスは、分散ストレージシステムのストレージノードを実現し、前記アプリケーションプログラムは、前記ストレージノードに関するデータ管理動作を実行し、そして前記システムメモリ内の前記所定範囲のアプリケーションデータは、前記ストレージノードのデータベースに格納されているデータに関する書き込み動作を格納して、前記格納書き込み動作を行う旨のアクノリッジメントをデータベースシステムに送信する永続的なリドゥーログとして機能する、条項18に記載の非一時的なコンピュータ可読記憶媒体。
条項23.
前記システムメモリ及び前記不揮発性データストレージが一体となって、不揮発性ランダムアクセスメモリを構成する、条項18に記載の非一時的なコンピュータ可読記憶媒体。
結論
種々の実施形態では更に、コンピュータアクセス可能な媒体についてのこれまでの説明に従って実行される命令および/又はデータを受信する、送信する、又は格納することができる。一般的に言うと、コンピュータアクセス可能な媒体は、磁気媒体又は光媒体、例えばディスク又はDVD/CD−ROMのような記憶媒体又はメモリ媒体、RAM(例えば、SDRAM、DDR、RDRAM、SRAMなど)、ROMなどのような不揮発性媒体だけでなく、ネットワークおよび/又は無線リンクのような通信媒体を介して伝送される電気信号、電磁信号、又はデジタル信号のような伝送媒体又は信号を含むことができる。
これらの図に図示され、かつ本明細書において記載される種々の方法は、方法の例示的な実施形態を表わす。これらの方法は、ソフトウェア、ハードウェア、又はソフトウェア及びハードウェアを組み合わせて実行することができる。方法の順番は、変更することができ、そして種々の構成要素を追加し、並べ直し、組み合わせ、省略し、変更するなどすることができる。
本開示の恩恵を享受する当業者には明らかなことであるが、種々の修正及び変更を行うことができる。本発明は、全てのこのような修正及び変更を包含するので、上の説明は、限定的な意味ではなく、例示として見なされるべきであると考えられる。

Claims (15)

  1. 1つ以上のプロセッサと、
    不揮発性データストレージと、
    プログラム命令を格納するシステムメモリと、
    を備えるシステムであって、前記プログラム命令は、前記1つ以上のプロセッサによって実行されたときに、メモリバックアップコントローラを実装し、
    前記メモリバックアップコントローラは、
    システム障害の前に、インターフェースを介して、前記1つ以上のプロセッサで実行されるアプリケーションプログラムから、前記システムメモリに格納されたアプリケーションデータオブジェクトを前記システム障害の後に保持するための要求を受信し、
    前記要求の受信に応答して前記システムメモリに格納された前記アプリケーションデータオブジェクトに対するデータバックアップを有効化し、前記データバックアップは、前記システム障害の後に、前記システムメモリ内のデータバックアップが有効化されていない他のデータをコピーせずに、前記アプリケーションプログラムに対応する前記アプリケーションデータオブジェクトを前記システムメモリから前記不揮発性データストレージにコピーする
    ように構成される、
    システム。
  2. 前記メモリバックアップコントローラは、
    前記システム障害から復旧すると、前記アプリケーションプログラムがアクセスできるようにするために、前記不揮発性データストレージに格納されたアプリケーションデータの範囲のうちの少なくともいくつかの、前記システムメモリへの復元を指示する、
    ようにさらに構成される、請求項1に記載のシステム。
  3. 前記メモリバックアップコントローラは、
    前記システム障害から復旧すると、前記システムメモリに格納されたアプリケーションデータの範囲の、前記不揮発性データストレージへのその後のデータバックアップを無効化する、
    ようにさらに構成される、請求項1に記載のシステム。
  4. 前記インターフェースは、前記メモリバックアップコントローラによる前記有効化の実行を指示するアプリケーションプログラミングインターフェース(API)である、請求項1に記載のシステム。
  5. 前記メモリバックアップコントローラは、前記受信及び前記有効化を、前記アプリケーションプログラムを含む複数のアプリケーションプログラムのうちの少なくとも1つに対応する複数のアプリケーションデータオブジェクトのうちの異なるアプリケーションデータオブジェクトについて、個別にさらに実行する、
    ように構成される、請求項1に記載のシステム。
  6. システム障害が発生した場合に、前記システムメモリに格納された前記アプリケーションデータオブジェクトに対するデータバックアップを有効化して、前記アプリケーションプログラムに対応する前記アプリケーションデータオブジェクトを保持するために、前記メモリバックアップコントローラは、
    前記アプリケーションデータオブジェクトを格納している前記システムメモリ内の1つ以上のストレージロケーションを特定してデータバックアップのために有効化し、
    前記システム障害が検出されると、前記システムメモリの前記特定された1つ以上のストレージロケーションに対応する前記不揮発性データストレージの1つ以上のバックアップロケーションへのデータバックアップ動作を実行し、
    前記アプリケーションデータオブジェクトに対するマッピング情報を更新して、前記アプリケーションデータオブジェクトに対応する前記特定された1つ以上のストレージロケーションを前記1つ以上のバックアップロケーションにリンクさせる、
    ようにさらに構成される、請求項1に記載のシステム。
  7. 前記メモリバックアップコントローラは、
    前記アプリケーションプログラムがアクセスすることができるようにするために、前記不揮発性データストレージに格納された前記アプリケーションデータオブジェクトのうちの少なくともいくつかの、前記システムメモリへの復元を指示するようにさらに構成され、前記メモリバックアップコントローラは、
    前記マッピング情報に少なくとも部分的に基づいて、前記不揮発性データストレージにバックアップされた前記アプリケーションデータオブジェクトを格納するために、前記アプリケーションデータオブジェクトが格納された前記不揮発性ストレージの前記1つ以上のバックアップロケーションと、前記システムメモリの前記1つ以上のストレージロケーションとを特定し、
    データを、不揮発性データストレージにおける前記特定されたバックアップロケーションから、前記システムメモリにおける前記特定されたストレージロケーションにコピーする、
    ようにさらに構成される、請求項6に記載のシステム。
  8. システムを実装するコンピューティングデバイスによって実行される方法であって、
    システム障害の前に、インターフェースを介して、前記コンピューティングデバイスにおいて実行されるアプリケーションプログラムから、システムメモリ内のアプリケーションデータオブジェクトを前記システム障害の後に保持するための要求を受信することと、
    前記要求の受信に応答して前記システムメモリに格納された前記アプリケーションメモリに対するデータバックアップを有効化することであって、前記データバックアップは、前記システム障害の後に、前記システムメモリ内のデータバックアップが有効化されていない他のデータをコピーせずに前記アプリケーションプログラムに対応する前記アプリケーションデータオブジェクトをコピーするものである、前記有効化することと
    を備え
    前記方法。
  9. システム障害から復旧すると、前記システムメモリに格納された前記アプリケーションデータオブジェクトに対する前記不揮発性データストレージへのその後のデータバックアップを無効化する、
    ことをさらに備える、請求項8に記載の方法。
  10. 前記受信すること及び前記有効化することを、前記アプリケーションプログラムを含む複数のアプリケーションプログラムのうちの少なくとも1つに対する複数のアプリケーションデータオブジェクトのうちの異なるアプリケーションデータオブジェクトについて個別に実行する、
    ことをさらに備える、請求項8に記載の方法。
  11. メモリバックアップコントローラは、前記システムメモリと前記不揮発性データストレージとの間の通信を指示し、前記インターフェースは、前記メモリバックアップコントローラによって前記有効化の前記実行を指示するアプリケーションプログラムインターフェース(API)である、請求項8に記載の方法。
  12. システム障害が発生した場合に、前記アプリケーションプログラムに対応する前記アプリケーションデータオブジェクトを保持するための、前記システムメモリに格納された前記アプリケーションデータオブジェクトに対する前記データバックアップの前記有効化は、
    前記アプリケーションデータオブジェクトを格納している前記システムメモリ内の1つ以上のストレージロケーションを特定してデータバックアップのために有効化し、
    モリバックアップコントローラに、前記システム障害が検出されると、前記システムメモリの前記特定された1つ以上のストレージロケーションに対応する前記不揮発性データストレージの1つ以上のバックアップロケーションへのデータバックアップ動作を実行することを指示し、
    前記アプリケーションデータオブジェクトに対するマッピング情報を更新して、前記アプリケーションデータオブジェクトに対応する前記特定された1つ以上のストレージロケーションを前記1つ以上のバックアップロケーションにリンクさせる、
    ことを備える、請求項8に記載の方法。
  13. 前記アプリケーションプログラムがアクセスすることができるようにするために、前記不揮発性データストレージに格納された前記アプリケーションデータオブジェクトのうちの少なくともいくつかの、前記システムメモリへの復元を指示することをさらに備え、前記指示することは、
    前記マッピング情報に少なくとも部分的に基づいて、前記不揮発性データストレージにバックアップされた前記アプリケーションデータオブジェクトを格納するために、前記アプリケーションデータオブジェクトが格納された前記不揮発性ストレージの前記1つ以上のバックアップロケーションと、前記システムメモリの前記1つ以上のストレージロケーションとを特定し、
    前記メモリバックアップコントローラに指示して、データを、不揮発性データストレージにおける前記特定されたバックアップロケーションから、システムメモリにおける前記特定されたストレージロケーションにコピーする、
    ことを備える、請求項12に記載の方法。
  14. システム障害が発生した場合に、前記システムメモリに格納されている前記アプリケーションデータオブジェクトに対するデータバックアップを前記有効化して、前記アプリケーションプログラム用の前記アプリケーションデータオブジェクトを保持する際に、さらに、前記不揮発性データストレージにコピーするときに、前記アプリケーションデータオブジェクトの暗号化を暗号化方式に従って指示することを備え、
    前記不揮発性データストレージに格納されて前記システムメモリに移行される前記アプリケーションデータオブジェクトの復元を前記指示して、前記アプリケーションプログラムからアクセスすることができるようにする際に、さらに、前記システムメモリにコピーするときに、前記アプリケーションデータオブジェクトの復号化を前記暗号化方式に従って指示する、請求項13に記載の方法。
  15. 前記システムメモリ及び前記不揮発性データストレージが一体として、1つ以上の不揮発性デュアルインラインメモリモジュール(NV−DIMM)を備える、請求項8に記載の方法。
JP2018000459A 2013-04-29 2018-01-05 システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持 Active JP6529617B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/872,530 2013-04-29
US13/872,530 US9195542B2 (en) 2013-04-29 2013-04-29 Selectively persisting application program data from system memory to non-volatile data storage

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016510830A Division JP6310061B2 (ja) 2013-04-29 2014-04-29 システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持

Publications (2)

Publication Number Publication Date
JP2018055727A JP2018055727A (ja) 2018-04-05
JP6529617B2 true JP6529617B2 (ja) 2019-06-12

Family

ID=51790288

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016510830A Active JP6310061B2 (ja) 2013-04-29 2014-04-29 システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持
JP2018000459A Active JP6529617B2 (ja) 2013-04-29 2018-01-05 システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2016510830A Active JP6310061B2 (ja) 2013-04-29 2014-04-29 システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持

Country Status (6)

Country Link
US (2) US9195542B2 (ja)
EP (1) EP2992439B1 (ja)
JP (2) JP6310061B2 (ja)
CN (1) CN105164657B (ja)
CA (1) CA2910175C (ja)
WO (1) WO2014179333A1 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103795749B (zh) * 2012-10-30 2017-03-01 国际商业机器公司 用于诊断运行在云环境中的软件产品的问题的方法和装置
US9195542B2 (en) * 2013-04-29 2015-11-24 Amazon Technologies, Inc. Selectively persisting application program data from system memory to non-volatile data storage
US9552260B2 (en) * 2014-06-02 2017-01-24 Red Hat, Inc. Using an object retain block in a virtual machine
US9934008B2 (en) * 2014-06-18 2018-04-03 Netapp, Inc. Methods for facilitating persistent storage of in-memory databases and devices thereof
US9854041B1 (en) * 2014-09-30 2017-12-26 Amazon Technologies, Inc. Reducing network traffic when replicating memory data across hosts
US11782601B2 (en) 2015-01-20 2023-10-10 Ultrata, Llc Object memory instruction set
CN112214424B (zh) 2015-01-20 2024-04-05 乌尔特拉塔有限责任公司 对象存储器结构、处理节点、存储器对象存储和管理方法
US9971542B2 (en) 2015-06-09 2018-05-15 Ultrata, Llc Infinite memory fabric streams and APIs
US9886210B2 (en) 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
US10698628B2 (en) 2015-06-09 2020-06-30 Ultrata, Llc Infinite memory fabric hardware implementation with memory
US9619329B2 (en) 2015-06-22 2017-04-11 International Business Machines Corporation Converting volatile memory module devices to flashless non-volatile memory module devices
CN106406493B (zh) * 2015-07-30 2020-04-28 华为技术有限公司 能降低功耗的电子装置及降低电子装置功耗的方法
US10846219B2 (en) * 2015-07-31 2020-11-24 Hewlett Packard Enterprise Development Lp Data copy to non-volatile memory
JP6479608B2 (ja) * 2015-08-28 2019-03-06 東芝メモリ株式会社 メモリ装置およびメモリ制御方法
US10725689B2 (en) * 2015-08-31 2020-07-28 Hewlett Packard Enterprise Development Lp Physical memory region backup of a volatile memory to a non-volatile memory
US10241683B2 (en) * 2015-10-26 2019-03-26 Nxp Usa, Inc. Non-volatile RAM system
JP6424797B2 (ja) * 2015-11-02 2018-11-21 株式会社デンソー 車載装置
WO2017100288A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc. Memory fabric operations and coherency using fault tolerant objects
US10235063B2 (en) 2015-12-08 2019-03-19 Ultrata, Llc Memory fabric operations and coherency using fault tolerant objects
CA3006773A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc Memory fabric software implementation
US10241676B2 (en) * 2015-12-08 2019-03-26 Ultrata, Llc Memory fabric software implementation
US10015274B2 (en) * 2015-12-31 2018-07-03 International Business Machines Corporation Enhanced storage clients
US10591902B2 (en) * 2016-01-03 2020-03-17 Purdue Research Foundation Microcontroller energy management system
US10169155B2 (en) * 2016-03-30 2019-01-01 EMC IP Holding Company LLC System and method for synchronization in a cluster environment
US10725508B2 (en) * 2016-06-01 2020-07-28 Hewlett Packard Enterprise Development Lp Responding to data backup operation
US20180032409A1 (en) 2016-07-26 2018-02-01 Netapp, Inc. Backup and recovery of application data of an application executing in a virtual machine
US9996291B1 (en) * 2016-07-29 2018-06-12 EMC IP Holding Company LLC Storage system with solid-state storage device having enhanced write bandwidth operating mode
US20180059933A1 (en) * 2016-08-26 2018-03-01 Sandisk Technologies Llc Electrically-Buffered NV-DIMM and Method for Use Therewith
US10025714B2 (en) * 2016-09-30 2018-07-17 Super Micro Computer, Inc. Memory type range register with write-back cache strategy for NVDIMM memory locations
US10839904B2 (en) 2016-12-09 2020-11-17 Rambus Inc. Memory module for platform with non-volatile storage
WO2019050418A1 (en) 2017-09-11 2019-03-14 Nyriad Limited COMPRESSION OF DATA BASED ON A DICTIONARY
US10929235B2 (en) * 2017-10-27 2021-02-23 Vmware, Inc. Application high availability via crash-consistent asynchronous replication of persistent data
KR102353859B1 (ko) * 2017-11-01 2022-01-19 삼성전자주식회사 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈
CN110413207B (zh) * 2018-04-28 2023-02-17 伊姆西Ip控股有限责任公司 降低存储系统的数据恢复时间的方法、设备和程序产品
US20190042372A1 (en) * 2018-06-19 2019-02-07 Intel Corporation Method and apparatus to recover data stored in persistent memory in a failed node of a computer cluster
US11055013B2 (en) * 2019-01-25 2021-07-06 International Business Machines Corporation Recovering from data loss using copy services relationships between volumes
US11307950B2 (en) * 2019-02-08 2022-04-19 NeuShield, Inc. Computing device health monitoring system and methods
US11379249B2 (en) * 2019-05-08 2022-07-05 Distech Controls Inc. Computing device providing fail-safe execution of a service
US11360694B2 (en) 2019-05-08 2022-06-14 Distech Controls Inc. Method providing resilient execution of a service on a computing device
EP3852505B1 (en) 2020-01-17 2023-12-06 Aptiv Technologies Limited Electronic control unit
EP3866013A1 (en) 2020-02-11 2021-08-18 Aptiv Technologies Limited Data logging system for collecting and storing input data
US11803444B1 (en) 2022-06-15 2023-10-31 Micron Technology, Inc. Cooperative memory subsystem data recovery
WO2024040502A1 (en) * 2022-08-25 2024-02-29 Intel Corporation Apparatus, device, method, and computer program for persisting memory recovery actions
CN117112520B (zh) * 2023-04-10 2024-09-20 荣耀终端有限公司 一种日志处理方法和电子设备

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11167794A (ja) * 1997-12-03 1999-06-22 Toshiba Corp 半導体記憶装置及びそのバックアップ方法
KR20030036131A (ko) * 2000-01-07 2003-05-09 톰슨 라이센싱 소시에떼 아노님 코드 갱신 중 정전이 발생했을 때 애플리케이션 코드를백업하기 위한 방법 및 장치
EP1277115A2 (en) 2000-04-14 2003-01-22 Stratus Technologies Bermuda, Ltd. Methods and apparatus for persistent volatile computer memory and related applications thereof
US6675295B1 (en) * 2000-06-19 2004-01-06 Microsoft Corporation Method and computer system for detecting and correcting a failure in a computer application program during startup
US6948038B2 (en) * 2001-07-24 2005-09-20 Microsoft Corporation System and method for backing up and restoring data
US6829581B2 (en) * 2001-07-31 2004-12-07 Matsushita Electric Industrial Co., Ltd. Method for prosody generation by unit selection from an imitation speech database
JP4662743B2 (ja) * 2004-09-13 2011-03-30 Necインフロンティア株式会社 データ2重化システム
US7761678B1 (en) * 2004-09-29 2010-07-20 Verisign, Inc. Method and apparatus for an improved file repository
US8688800B2 (en) 2005-10-05 2014-04-01 Hewlett-Packard Development Company, L.P. Remote configuration of persistent memory system ATT tables
US7725446B2 (en) 2005-12-19 2010-05-25 International Business Machines Corporation Commitment of transactions in a distributed system
US8677037B1 (en) * 2007-08-30 2014-03-18 Virident Systems, Inc. Memory apparatus for early write termination and power failure
JP2009157756A (ja) * 2007-12-27 2009-07-16 Toshiba Corp 情報処理装置およびデータ復旧方法
JP5232516B2 (ja) * 2008-03-27 2013-07-10 株式会社日立製作所 ディスクアレイ装置
WO2009134264A1 (en) 2008-05-01 2009-11-05 Hewlett-Packard Development Company, L.P. Storing checkpoint data in non-volatile memory
US9098396B2 (en) * 2009-02-13 2015-08-04 Sandisk Il Ltd. Enhancement of efficiency in power failure handling in flash memory
US8209290B1 (en) * 2009-03-11 2012-06-26 Symantec Corporation Generic granular restore of application data from a volume image backup
JP2010224732A (ja) * 2009-03-23 2010-10-07 Konica Minolta Business Technologies Inc 情報処理装置
JP2011039804A (ja) * 2009-08-12 2011-02-24 Hitachi Ltd 障害内容に基づくバックアップ管理方法
CN102576605B (zh) * 2009-11-17 2016-01-20 马维尔国际贸易有限公司 接地屏蔽电容器
JP5378308B2 (ja) * 2010-06-23 2013-12-25 レノボ・シンガポール・プライベート・リミテッド メイン・メモリのバックアップ方法およびデータ保護システム
US8812908B2 (en) * 2010-09-22 2014-08-19 Microsoft Corporation Fast, non-write-cycle-limited persistent memory for secure containers
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8738843B2 (en) 2010-12-20 2014-05-27 Lsi Corporation Data manipulation during memory backup
US9251005B2 (en) * 2010-12-20 2016-02-02 Avago Technologies General Ip (Singapore) Pte. Ltd. Power isolation for memory backup
US8468317B2 (en) 2011-06-07 2013-06-18 Agiga Tech Inc. Apparatus and method for improved data restore in a memory system
US9195542B2 (en) * 2013-04-29 2015-11-24 Amazon Technologies, Inc. Selectively persisting application program data from system memory to non-volatile data storage

Also Published As

Publication number Publication date
EP2992439B1 (en) 2022-06-08
WO2014179333A1 (en) 2014-11-06
JP2016517122A (ja) 2016-06-09
EP2992439A4 (en) 2017-01-11
US10089191B2 (en) 2018-10-02
US9195542B2 (en) 2015-11-24
EP2992439A1 (en) 2016-03-09
US20140325116A1 (en) 2014-10-30
CN105164657A (zh) 2015-12-16
CA2910175C (en) 2021-01-26
JP2018055727A (ja) 2018-04-05
CA2910175A1 (en) 2014-11-06
JP6310061B2 (ja) 2018-04-11
US20160077930A1 (en) 2016-03-17
CN105164657B (zh) 2018-11-02

Similar Documents

Publication Publication Date Title
JP6529617B2 (ja) システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持
JP6556911B2 (ja) 注釈付きアトミック書き込み操作を行う方法および装置
US20190102262A1 (en) Automated continuous checkpointing
US10049036B2 (en) Reliable distributed messaging using non-volatile system memory
US20210064234A1 (en) Systems, devices, and methods for implementing in-memory computing
US10169577B1 (en) Systems and methods for detecting modification attacks on shared physical memory
US9760480B1 (en) Enhanced logging using non-volatile system memory
JP2004127294A (ja) 仮想記憶システムおよびその動作方法
US9378218B2 (en) Apparatus and method for enabling clients to participate in data storage in distributed file system
Jung et al. nvramdisk: A transactional block device driver for non-volatile ram
US12045142B2 (en) Memory image capture
US20190227884A1 (en) Data loss prevention for integrated memory buffer of a self encrypting drive
JP2004127295A (ja) 仮想記憶システムおよびその動作方法
US7165160B2 (en) Computing system with memory mirroring and snapshot reliability
JP2008204460A (ja) ディスク・パーティションのほぼ瞬時のバックアップおよび復元
US11068353B1 (en) Systems and methods for selectively restoring files from virtual machine backup images
US9251020B1 (en) Systems and methods for file-level replication
US11409451B2 (en) Systems, methods, and storage media for using the otherwise-unutilized storage space on a storage device
US11321002B2 (en) Converting a virtual volume between volume types
US8745340B2 (en) Reduction of communication and efficient failover processing in distributed shared memory-based application
US10089220B1 (en) Saving state information resulting from non-idempotent operations in non-volatile system memory
US20150356108A1 (en) Storage system and storage system control method
US10372607B2 (en) Systems and methods for improving the efficiency of point-in-time representations of databases
US11074003B2 (en) Storage system and restoration method
KR102403063B1 (ko) 모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190416

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190514

R150 Certificate of patent or registration of utility model

Ref document number: 6529617

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250