JP2019514146A - 高速システム状態クローニング - Google Patents
高速システム状態クローニング Download PDFInfo
- Publication number
- JP2019514146A JP2019514146A JP2019503395A JP2019503395A JP2019514146A JP 2019514146 A JP2019514146 A JP 2019514146A JP 2019503395 A JP2019503395 A JP 2019503395A JP 2019503395 A JP2019503395 A JP 2019503395A JP 2019514146 A JP2019514146 A JP 2019514146A
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- source computing
- uncoded
- computing system
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Power Sources (AREA)
- Transmission And Conversion Of Sensor Element Output (AREA)
- Storage Device Security (AREA)
Abstract
ソースコンピューティングシステムのクローンを作成するためのシステムおよび方法であって、本方法は、ソースコンピューティングシステムに接続されたメモリ空間を選択する工程と、選択されたメモリ空間から符号化されてないデータを取り出す工程と、バックアップサーバ上で実行されているビットマーカベースの符号化プロセスを用いて符号化されていないデータを符号化する工程と、符号化されたデータをバックアップサーバに接続され、かつ電源断から保護されている保護されたメモリに記憶する工程と、符号化されたデータを保護されたメモリから取り出す工程と、符号化されたデータをソースコンピューティングシステムとは別個であるターゲットコンピュータシステムで復号する工程とを含む、システムおよび方法。【選択図】図3A
Description
関連出願の相互参照
本出願は、2016年4月4日に出願された、高速システム状態クローニング(FAST SYSTEM STATE CLONING)という名称の米国特許出願第15/089,837号の利益を主張するものであり、その内容全体が参照により本明細書に組み込まれる。
本出願は、2016年4月4日に出願された、高速システム状態クローニング(FAST SYSTEM STATE CLONING)という名称の米国特許出願第15/089,837号の利益を主張するものであり、その内容全体が参照により本明細書に組み込まれる。
本発明の実施形態は一般にシステムのクローニングに関し、特にバックアップまたは複製のためにシステムをクローニングするための高速な装置および方法に関する。
様々な範囲または配備のコンピュータシステムが典型的な大企業の至る所で使用されている。企業レベルのコンピュータシステムとは、企業の至る所であったり企業に欠かせない機能をサポートしたりするために使用することができるシステムである。例えば航空会社の場合、予約および記帳システムまたはフライトスケジューリングシステムが企業レベルのシステムであろう。より低いレベルの配備では、他のシステム(例えば、部署レベルまたは機能レベルのシステム)が部署レベルの組織をサポートしたり限られた機能をサポートしたりことができる。例えば航空会社の部署レベルのシステムは、経理、営業、技術および保守サポートなどのうちの1つをサポートすることができる。さらにより低いレベルでは、コンピュータシステム(実システムまたはクラウドベースのシステムなどの仮想システムのいずれか)が個々の従業員をサポートすることができる。
コンピュータシステムは、そのハードウェアおよびソフトウェア資産、ステータス、システム状態などによって特性評価することができる。ハードウェアの特性評価は、使用されるサーバ、利用可能なメモリおよびメモリ記憶空間、利用可能な通信リンクおよびルータ接続性などのリストを含み得る。ソフトウェア資産の特性評価は、オペレーティングシステムおよび各サーバ上で利用可能なアプリケーションプログラムのリストを含み得る。システム状態の特性評価は、どのソフトウェアが現在各サーバ上で実行されているか、各ソフトウェアの状態(例えば、有限状態機械モデルによって示される)、各ソフトウェアにアクセス可能であり、かつ/または各ソフトウェアによって使用される揮発性および不揮発性メモリ内のデータなどのリストを含み得る。
時には、例えばバックアップまたは容量目的のためにコンピュータシステムをクローニングすることが必要であったり望ましかったりする。例えば、コンピュータシステムの全てまたは一部をクローニングすること、例えば少なくともシステム状態をクローニングすることによって、必ずしもハードウェアの特性評価のバックアップを作成するわけではないが、コンピュータシステムのバックアップを作成することがある。他方では、迅速に処理容量もしくは能力を上げることが必要な場合に複製によってクローニングを行うことがある。例えば、オンライン小売業者は感謝祭からクリスマスまでの期間中に営業に特化しているそのコンピュータシステムを一時的に複製し、かつそれらの資産を後で解放することを望むことがある。しかしながら、オンライン小売業者は、その事業年度の終了時に経理に特化しているそのコンピュータシステムを一時的に複製することを望むことがある。
時には、コンピュータシステムをバックアップから復元することが必要であったり望ましかったりする場合がある。例えば、オンライン小売業者の販売システムまたはウェブサイトが破損した場合、その業者は販売システムまたはウェブサイトが復旧されるまで売り上げがなくなることがある。従って、そのようなシステムを可能な限り早くバックアップから復元することが必要になる。
システムをクローニングするための既存の方法は様々な欠点に悩まされている。例えば、ホットスタンバイ(例えば、常にアクティブであり、かつ主システムの状態をミラーリングしているシステム)は、特に大型のシステムの場合に、必要なハードウェア、必要なソフトウェアライセンスおよび(例えばユーティリティおよび職員のための)維持費の点で高価になることがある。複数の仮想マシーンおよびハイパーバイザも常にホットスタンバイ状態に維持すればハードウェアおよびソフトウェアの点で高価になる可能性がある。コールドスタンバイバックアップシステム(例えば、主システムが故障した際など必要な場合にのみバックアップが作動する)は、故障したシステムの後を引き継ぐために望ましくない程に長い時間を要する場合があり、故障前の主システムの最新の状態を反映していないことがある。
従って、迅速でありながらも低コストでコンピュータシステムをクローニングするためのシステムおよび方法を提供することが必要である。
一実施形態では、本明細書に記載されている高速な方法およびアーキテクチャを用いてアプリケーションサーバシステムの現在のメモリ内容の全てまたは一部をコピーすることによってシステムクローンを作成する。次いで、企業容量を増加させるため、およびコンピュータ資産を別の目的で使用するなどのために、システムクローンをバックアップとして使用することができる。
本開示の一実施形態に係るソースコンピューティングシステムをクローニングするための方法は、ソースコンピューティングシステムに接続されたメモリ空間を選択する工程と、選択されたメモリ空間から符号化されてないデータを取り出す工程と、バックアップサーバ上で実行されているビットマーカベースの符号化プロセスを用いて符号化されていないデータを符号化する工程と、符号化されたデータをバックアップサーバに接続され、かつ電源断から保護されている保護されたメモリに記憶する工程と、符号化されたデータを保護されたメモリから取り出す工程と、符号化されたデータをソースコンピューティングシステムとは別個であるターゲットコンピュータシステムで復号する工程とを含んでもよい。
本開示の一実施形態に係るソースコンピューティングシステムをクローニングするためのシステムは、ソースコンピューティングシステムにメモリ空間を提供するメモリに接続されたプロセッサと、メモリ空間から符号化されていないデータを取り出すのを支援するための通信インタフェースと、バックアップサーバ上で実行されているビットマーカベースの符号化プロセスを用いて符号化されていないデータを符号化するためのエンコーダと、符号化されたデータをバックアップサーバに接続され、かつ電源断から保護されている保護されたメモリに記憶するための記憶モジュールと、保護されたメモリから符号化されたデータを取り出すのを支援するための通信インタフェースと、符号化されたデータをソースコンピューティングシステムとは別個であるターゲットコンピュータシステムで復号するためのデコーダとを備えていてもよい。
上記は、本開示のいくつかの態様の理解を与えるための本開示の実施形態の簡単な概要である。この概要は本開示およびその様々な実施形態の広範囲な概略でもなければ包括的な概略でもない。これは本開示の重要もしくは重大な要素を特定するものでもなければ本開示の範囲を詳述するものでもなく、以下に示されているより詳細な説明の導入として簡略化された形態で本開示の選択された概念を提供するものである。理解されるように、本開示の他の実施形態は、上に示されているか以下に詳細に記載されている特徴のうちの1つ以上を単独または組み合わせで使用することを可能にするものである。
本発明の上記およびなおさらなる特徴および利点は、特に添付の図面と共に解釈される場合にその実施形態の以下の詳細な説明を考察すれば明らかになるであろう。図の中の同様の参照符号は同様の構成部品を示すように使用されている。
本明細書で使用される見出しは単に構成のためのものであり、本明細書または特許請求の範囲を限定するために使用されるものではない。本出願全体を通して使用される「〜してもよい」という言葉は、必須的な意味(すなわち義務を意味する)ではなく許容的な意味(すなわち、「〜する可能性を有する」ことを意味する)で使用されている。同様に、「〜を含む」、「〜を含むこと」および「〜を含み」という用語は、「〜を含むがそれらに限定されない」ということを意味する。理解を容易にするために、各図に共通する同様の要素を示すために可能であれば同様の符号が使用されている。使用法に関する文脈が別の意を示していない限り、図の任意の部分は破線または点線を用いて示されている場合がある。
本開示を例示的な使用事例、方法の実施形態およびシステムの実施形態と共に以下に例示する。本開示は例えば、サーバ、ネットワーク機器および/または特殊計装を用いるシステムと共に使用するのによく適しているが、任意の特定の種類の電子システムまたはシステム要素の構成と共に使用することに限定されない。当業者であれば、開示されている技術は、コンピュータシステムを複製、クローニング、バックアップまたは復元することが望ましい任意の電子システムで使用できることを認識しているであろう。
本開示に係る実施形態について関連するハードウェアに関連させて説明する。但し、本開示を不必要に曖昧にするのを回避するために、以下の説明では、ブロック図の形態で示すことができたり、周知であったり、あるいはそれ以外の方法で要約されていたりする周知の構造、構成部品および装置は省略されている。なお、他の同等に有効な例も可能であり、かつそのような見込みがあるため、本明細書に示されている例は本発明の実施形態の範囲を限定するものとして解釈されるべきではない。
本明細書で使用される「モジュール」という用語は一般に、工程、プロセスまたは構成部品の論理的順序または組み合わせを指す。例えば、ソフトウェアモジュールは、コンピュータプログラム内の関連するルーチンまたはサブルーチンのセットを含んでもよい。あるいは、モジュールは実質的に内蔵型のハードウェア装置を含んでもよい。またモジュールは、どんなソフトウェアまたはハードウェアが実装されているかに関わらず一連の論理プロセスを含んでもよい。
また、機能を行うモジュールを「機能を行うように構成されているもの」と称する場合があり、例えばデータを受信するデータモジュールを「データを受信するように構成されているもの」と称する場合がある。機能を行うための構成としては、例えば、機能を行うコンピュータコードを提供または実行すること、モジュールの能力を制御、制限、可能または無効にするプロビジョニング可能な(provisionable)構成パラメータを提供すること(例えば、フラッグを設定すること、許可を設定すること、決定点に使用される閾値レベルを設定することなど)、オプションを選択するため、またはオプションを可能/無効にするためのジャンパなどの物理的な接続を提供すること、物理的な通信リンクを取り付けること、無線通信リンクを可能にすること、別個の構成部品および/または非CPU集積回路の使用などによりプロセッサを使用することなく機能を行うように設計されている電気回路を提供すること、機能を行う回路に電圧を印加すること(例えば、データを受信するための送受信機回路に電力を供給すること)などが挙げられる。
本特許出願の親出願(米国特許出願第14/804,175号、「‘175出願」)は、高容量かつ高速転送速度のデジタル記憶装置のためのシステムを開示している。‘175出願および本明細書で使用されるビットマーカ技術については、一部継続出願の親出願である米国特許出願第13/908,239号(「‘239出願」)に記載されている。コンピュータシステムを少なくとも部分的にそのソフトウェア資産のデジタル状態、ステータスおよびシステム状態によって特徴づけることができる場合、本開示に係る実施形態は、非常に迅速にデジタル状態をクローニングするためにこの親出願開示のシステムを使用することができる。それに応じてシステム復元を迅速に行うことができる。
‘175出願に開示されており、かつ本実施形態で使用される方法、構成部品およびシステムは、ハイパーバイザ、サーバプロセッサ、ハイパーバイザ内のカスタマイズされたオペレーティングシステムおよび/またはゲストオペレーティングシステム(OS)、ゲストOSに関連するデータまたはドライブを備える。本実施形態は、ネットワーク構成部品(例えば、イーサネット(登録商標)アダプタ)を介して実質的に任意のネットワークに組み込むことができる。本実施形態は、従来のRAM揮発性メモリおよび‘175出願に開示されているデータ損失から保護されている不揮発性DIMMメモリ(NV−DIMM)をさらに備えてもよい。システムはPCIe、周辺装置および構造化をさらに含んでもよい。
画像化および表現されるデータとしては、揮発性RAMに記憶される実質的に任意のデータ、例えば、データベース、アプリケーションプログラム、ログ、独自のデータなどが挙げられる。アプリケーションプログラムとしては、ファイアウォールサービス、ドキュメントサービスなどのオペレーティングシステムレベルで実行される各種サービス、スプレッドシート、ワードプロセッサ、画像編集、CAD/CAMソフトウェア、経理ソフトウェアなどのユーザレベルで実行される各種ソフトウェア、およびウェブサーバ、メールサーバ、データベースサーバなどの各種サーバが挙げられる。
図1は、当該技術分野で知られている従来のコンピュータシステム100の機能ブロック図を示す。システム100は、例えばIntel(登録商標)互換アーキテクチャに基づくコンピュータシステムに使用することができる。製作技術が進歩するにつれて、チップセット、ターゲット顧客の価格対性能比、ターゲットコンピュータプラットフォーム(例えば、モバイル装置やサーバなど)などの因子に応じて、各種機能部品を異なる集積回路(IC)構成で作製することができるようになる。特定の機能を1つにまとめて単一のIC、例えばIC116などの各種構成にしてもよい。
システム100はプロセッサ102を備え、これはXeon(登録商標)、Intel Core i7(登録商標)、i5(登録商標)、i3(登録商標)などの汎用プロセッサ、またはAthlon64(登録商標)などのアドバンスト・マイクロ・デバイセズ(登録商標)(AMD)社製プロセッサなどであってもよい。他の実施形態では、プロセッサ102はグラフィック処理ユニット(GPU)であってもよい。図1の機能ブロック図では、本明細書で使用されるプロセッサ102は、プロセッサの機能および/またはプロセッサの1つ以上のハードウェアコアを指してもよい。プロセッサ102はマルチGHz速度で動作する多重処理コアを含んでもよい。プロセッサ102はキャッシュメモリ103(例えば、L1またはL2キャッシュ)を含んでもよい。また、プロセッサ102は、オペレーティングシステム104を含むようにプログラムまたは構成されていてもよい。オペレーティングシステム104の例としては、各種バージョンのWindows(登録商標)、Mac OS(登録商標)、Linux(登録商標)および/または本開示の一実施形態に係るオペレーティングシステムまたはオペレーティングシステム拡張などが挙げられる。Windowsという登録商標はMicrosoft社の商標である。Mac OSという登録商標はApple社の商標である。Linuxという登録商標は、世界基準でそのマークの所有者であるリーナス・トーバルズの排他的なライセンスの代理を務めるLMIからのサブライセンスに従って使用される。オペレーティングシステム104は、アプリケーションプログラム(図1に示さず)の実行を含む従来の機能を行う。機能上、オペレーティングシステム104はプロセッサ102の一部として図示されているが、オペレーティングシステム104の一部は、図1に図示されていない不揮発性メモリ(例えば、ハードディスク、ソリッドステートドライブ(SSD)、フラッシュドライブ、NANDメモリ、不揮発性RAMなど)内に物理的に存在してもよく、オペレーティングシステム104の少なくとも一部は、プロセッサ102による実行のために必要に応じてRAMメモリに読み込まれてもよい。
プロセッサ102は、様々な機能部品とインタフェース接続するためにいくつかの内部および外部バスを使用してもよい。システム100は、プロセッサ102をメモリコントローラ106に接続する通信バス105を備える。また、メモリコントローラ106をノースブリッジと称してもよい。通信バス105は、フロントサイドバス(FSB)、不均一メモリアクセス(NUMA)バス、EV6バス、周辺装置相互接続(PCI)バスなどのうちの1つとして実装されていてもよい。
システム100は、プロセッサ102に接続された不揮発性メモリ122(例えばCMOSメモリ)をさらに備える。CMOSメモリ122は、コンピュータ構成部品間の低レベル通信を管理するのを支援する基本入力/出力システム(BIOS)124を含んでもよく、パワーオンセルフテスト(power−on self−test)を行うためのコンピュータコードの記憶装置を含んでもよい。従来どおりに、パワーオンセルフテストはインストールされているRAMのデータの完全性のテストを含んでもよい。
メモリコントローラハブ106は典型的に、プロセッサ102と、通信バス107を介したデュアル・インライン・メモリ・モジュール(DIMM:dual in−line memory module)スロット108a、108bにインストールされる外部RAMメモリなどの各種高速機能部品との通信、通信バス109を介したビデオグラフィックスカード110との通信を制御する。バス107および109は、周辺機器相互接続エクスプレス(PCIe:Peripheral Component Interconnect Express)またはアクセラレイティッド・グラフィックス・ポート(AGP:Accelerated Graphics Port)などの高速インタフェースであってもよい。メモリコントローラハブ106は、通信バス112を介したプロセッサ102とコントローラハブ114との通信も制御してもよい。コントローラハブ114は、サウスブリッジ、I/Oコントローラハブ(ICH)、Fusionコントローラハブ(FCH:Fusion Controller Hub)、プラットフォームコントローラハブ(PCH)などの他の名前でも知られている。次いで、コントローラハブ114は、USBポート131、標準インタフェース(例えば、ATA/SATA、mSATA、SASなど)を有する記憶媒体132、イーサネット送受信機133、オーディオポート134、他のPCI装置135などの、追加および/または低速I/O装置またはインタフェースとのさらなる通信を管理する。
システム100(図示せず)のいくつかの構成では、プロセッサ102は、メモリコントローラ106を迂回してダイレクト・メディア・インタフェース(DMI:Direct Media Interface)を介してコントローラハブ114と直接通信するように設計されている。また、そのような構成によりプロセッサ102およびメモリコントローラ106の機能を単一のIC116の中に組み込んでもよい。そのような構成では、コントローラハブ114は典型的にはプラットフォームコントローラハブ(PCH)である。
DIMMスロット108a、108bにインストールされるRAMメモリを構成するメモリチップは非常に高い最大アクセス速度(例えば、約57ギガバイト/秒)を有することがあるが、通信バス109は通常そのような高速度をサポートすることはできない。例えば、16レーンスロット内のPCIe4.0の速度は31.508ギガバイト/秒に制限されている。AGPはPCIeよりもさらに低速である。従って、通信バス107はより高速のメモリアクセスを妨げるボトルネックである。
メモリアクセスのボトルネックは従来技術の欠点のうちの1つである。従来のコンピュータの上記他の欠点としては、RAMメモリの大きさ(典型的には数ギガバイトのオーダ)と従来のハードディスクの記憶容量(典型的には数テラバイトのオーダ)との間の記憶容量の不一致、および従来のハードディスクの記憶容量に対して比較的小さいRAMメモリの記憶容量が挙げられる。従来技術の別の欠点はRAMメモリの揮発性である。
本開示に係る実施形態はRAMが今日有する密度問題を解決する。本開示に係る実施形態は、記憶装置のための新規なハードウェアインタフェースおよびハードウェアインタフェースのための新規なドライバインタフェースを提供することによって従来技術のこれらの欠点に対処する。
CPUを別とすれば、RAMは×86および×64コンピュータシステムにおいて最も高速の要素であるため、本実施形態は、今日の高速RAM性能を高い記憶装置密度を達成する新しい方法に適合させることを可能にする。この効果が適用されると、コストの枠組みが完全に変わり、低コストのメモリモジュールが高密度高コストのメモリモジュールの必要性にとって代わることが可能になる。
残っている問題は標準メモリモジュールの揮発性である。全てのRAMは揮発性であるため長期記憶媒体には向いていない。本実施形態は、標準DIMM装置で認められる揮発性問題を回避する不揮発性RAM(NVRAM)技術と類似しているが異なるものである。
本開示に係る実施形態は、Intel(登録商標)またはAMD(登録商標)CPUプロセッサを搭載したベーシックかつ安価な×64マザーボードを使用する。このマザーボードは、不揮発性メモリアウェア(Non−Volatile Memory aware)にするのに必要なインテリジェンスをそれに与える修正されたCMEおよびBIOSを有する。また、このマザーボードは各メモリモジュールに、環境上安全な低負荷低速放出コンデンサを充電するために使用することができるDC供給電圧(例えば、1.2v、1.35v、1.5vなど)を供給する。この設計によりメモリモジュール内のデータ持続性を維持するような停止状態(例えば、電力喪失または安全な停止)が可能になり、このようにしてメモリモジュールは実行可能な長期記憶装置になる。
図2は、本開示の一実施形態に係るコンピュータシステム200の機能ブロック図を示す。コンピュータシステム200を本明細書ではブリンクサーバと称することもある。図1において既に説明した機能部品には図1に示されている同じ参照符号が図2において割り当てられている。システム200はメモリインタフェース218を備え、メモリインタフェース218はMolex(登録商標)コネクタなどのコネクタ208を用いてDIMMスロット(例えば、DIMMスロット108b)に物理的に接続されていてもよい。メモリインタフェース218は、通信バス107に従来のプロトコルを使用することによってDIMMスロット108bを介してプロセッサ202と通信する。メモリインタフェース218はRAM記憶装置220に物理的かつ通信可能に接続されている。メモリインタフェース218の機能としては、RAM記憶装置220を通信バス107に通信可能に接続すること、RAM記憶装置220に関する健康状態のような特定のイベント、他のハードウェアイベントを監視すること、検出された信号またはハードウェアイベントに基づいて特定のアクションをとることなどが挙げられる。メモリインタフェース218の機能としては、メモリアドレスの解決、メモリサイズの報告、I/O制御、総電源サイクル、1時間のうちの実行時間の記録および報告、DIMMの数の報告、電気二重層コンデンサ(cap)の現在の電圧、作動可能なバス、最後の復元の成功または失敗、作動可能な装置、NAND領域のフラッシュステータス、接続されているcap、cap充電ステータス、存在する有効な画像、DIMM初期化(init)の実行、レジスタの読み出しなどのステータスの報告などの、単純な処理およびハウスキーピング機能も挙げられる。NANDは、データを保持するために電力を必要としない不揮発性IC系記憶装置技術の1種として知られている場合もある。
システム200は、プロセッサ202に接続された不揮発性メモリ222(例えばCMOSメモリ)をさらに備える。CMOSメモリ222は、コンピュータ構成部品間の低レベル通信を維持するのを支援する基本入力/出力システム(BIOS)224を含んでもよく、かつパワーオンセルフテストを実施するためのコンピュータコードの記憶装置を含んでもよい。従来どおりに、パワーオンセルフテストはインストールされているRAMのデータの完全性のテストを含んでもよい。本開示に係る実施形態は、例えばパワーオンセルフテストが所定のメモリモジュールに記憶されているデータの性質と適合しない場合にそのテストが少なくともいくつかの所定のメモリモジュールのテストをスキップすることができるように修正された(BIOS124のパワーオンセルフテストと比較した場合)パワーオンセルフテストを含んでもよい。
また本開示に係る実施形態は、エネルギー源219をRAM記憶装置220と接続することによって公知の技術のRAM揮発性の欠点に対処する。エネルギー源219がメモリインタフェース218と共に組み込まれていてもよい。エネルギー源219は、RAM記憶装置220への外部電力供給が失われた場合に(例えば、コンピュータシステム200全体に影響を与えるAC電源の故障、モバイルシステム200に電力を供給する電池の除去、マザーボードの故障などによる)、エネルギー源219がRAM記憶装置220に記憶されているデータの完全性を維持するのに十分な電力を供給することができるようなバックアップ電源である。
本開示に係る実施形態は、従来の揮発性メモリと不揮発性RAMモジュールメモリ(NV−DIMM)との組み合わせとして編成されたランダムアクセスメモリ(RAM)を備える。NV−DIMMメモリは、例えばRAM記憶装置220として親米国特許出願第14/804,175号(「‘175出願」)に開示されている。システムにインストールされている全体のうちの各種メモリの割合はシステムごとに異なってもよい。例えば、総メモリサイズはインストール時に8GB〜160GBまたはそれ以上の範囲になるように選択され、バンクのうちの2つは従来のRAMメモリとして構成され、6つのバンクはNV−DIMMとして構成された8つのバンクで編成されてもいてよい。
本開示に係る実施形態は2つのモードで動作するシステムを提供することができる。第1のモードでは、ソースシステム(本システムまたは外部システムのいずれか)の従来の揮発性メモリの内容全体またはアドレス範囲は、‘175出願に開示されている方法およびNV−DIMMメモリに記憶されている表現の使用によって画像化および表現されるように選択してもよい。この画像または表現は参照画像として知られている場合もある。本実施形態はIEEE802.3ba−2010標準規格に準拠する100ギガビットのイーサネットなどの高速通信リンクの使用によって外部システムに通信可能に接続されていてもよい。
本開示の一実施形態に係る第2のモードでは、ソースシステムの従来の揮発性メモリアドレス範囲全体のサブセット、例えば画像化および表現されるシステム上で実行されている処理によって能動的に利用されている従来の揮発性メモリの一部のみが画像化および表現されるように選択されてもよい。この実施形態の別の変形形態では、従来の揮発性メモリアドレス範囲全体の固定された範囲のサブセットが画像化および表現されてもよい。固定された範囲のサブセットは必ずしも隣接している必要はない。この実施形態の別の変形形態では、画像化および表現されるアドレス範囲のサブセットは仮想サーバを表してもよい。例えば、単一の物理サーバ(例えば企業によって使用される)が2つ以上の仮想サーバ(例えば企業のいくつかの部署に対してそれぞれ1つ)をホストしている場合、本実施形態は、仮想サーバの全てではないがいくつかを画像化および表現していてもよい。そのような能力は、例えば異なるサーバによって実施される機能が異なるバックアップを必要とする場合(例えば、経理部のために1つの仮想サーバ、顧客サポート部のために1つの仮想サーバ)に有用であり得る。
いくつかの実施形態では、NV−DIMMは、例えば、経時的な単一のシステム、または複数の外部システムまたはそれらの組み合わせを表現する複数の参照画像を記憶するためのリポジトリとして機能してもよい。複数の参照画像のNV−DIMMリポジトリは、災害復旧を支援するために使用されてもよく、例えば複数の企業のために参照画像を安全に記憶する現場外の位置にあってもよい。
データが画像化され、表現され、かつNV−DIMMメモリに記憶された後、本開示に係る実施形態は「インフラストラクチャ・イン・ア・ボックス」(infrastructure in a box)」能力を提供してもよい。例えば、画像化および表現された全てのデータベース、アプリケーション、ログ、独自のデータなどが元のハードウェア環境を模倣するターゲットハードウェア環境で複製されると、画像化および表現されたシステムは、画像化および表現された時点の元のシステムのシステム状態と共に複製することができる。
複製されたコピーは、高速な復元を用いるバックアップ目的のため、または急な通知で拡張容量を提供できるようにするために有用であり得る。復元が高速であるとみなされるか否かは使用現場または内容によって変わる可能性がある。例えば、CAD/CAMシステムにとって高速な復元は、金融市場取引を支援しているコンピュータシステムにとっては高速な復元とみなされないかもしれない。要求に応じて映画の動画配信を行うコンピュータシステムにとって高速な復元は、スーパーボウルのようなライブイベントの動画配信を行うコンピュータシステムにとっては高速な復元とみなされないかもしれない。同様に、どの通知が急な通知であるとみなされるかは、使用現場または内容によって変わる可能性があり、金融市場取引を支援するコンピュータシステムの場合には数秒以下ほどの短さであるかもしれない。いくつかの実施形態では、急な通知は約5秒未満の通知である。いくつかの実施形態では、高速な復元は、復元の必要性の検出または復元を行うためのコマンドの受信から約10分以内に完了させることができる。他の実施形態では、高速な復元は約3分以内に完了させることができる。他の実施形態では、高速な復元は10秒以内に完了させることができる。
従来のバックアップは比較的稀に行われるものであり(例えば、1日1回、1週間に1回など)、従来のバックアッププロセス中は、システム状態を停止させなければならなかったり、システム状態に対する変更を少なくとも最小限に抑えなければならなかったりする(例えば、ユーザが自身の作業を保存したり、アプリケーションを終了させたりすることなどによって行われるが、これらは全て中断を引き起こす)。対照的に、より迅速に複製されたコピーを作成することができる場合、バックアップをより迅速に、よりタイムリーに、かつより頻繁に作成し、復元が必要な場合にシステム状態のより最近の(すなわち、あまり古くない)コピーを得ることができる。頻繁なバックアップはシステム状態のスナップショットに酷似し始める。頻繁なバックアップを本明細書では「ブリンク」バックアップと称する場合がある。
以下で図3Cに関してより詳細に説明するように、ブリンクバックアップ中はシステム状態に対する変更を少なくすることができる。ブリンクバックアップの頻度はユーザまたはシステム管理者によって構成可能であってもよい。
写真になぞらえると、従来のバックアップは下準備(例えば、写真を撮影するための他の作業の中断、および演出、すなわち特殊なポーズ、照明、撮影備品など)を必要とするフォーマルな休日の家族写真のようなものである。対照的に、本実施形態はどちらかと言えば別個のブリンクバックアップを表わすビデオの各個々のフレームを有する家族のビデオ記録のようなものである(但し、ビデオ記録と比較して比較的遅いフレームレートである)。ブリンクバックアップは必ずしも過度な下準備を必要とすることなく迅速に行われ、従ってブリンクされているシステムの動作を中断することなく頻繁に行うことができる。
ブリンクバックアップは、最初にバックアップされるメモリリソースを特定することによって続行することができる。例えば、特定用途向けサーバをバックアップすると想定する。例えば、バックアップされる特定用途向けサーバは経理機能に特化した仮想サーバであってもよく、その仮想サーバは営業部や技術部などの他の機能にそれぞれ特化した他の仮想サーバと共に物理サーバ上でホストされている。バックアップされるサーバは通常、それ自体の上で実行されているアプリケーションプログラムのリストをそれらのそれぞれのシステムリソース使用状況と共に維持している。本実施形態は、バックアップされる特定用途向けサーバ上で現在実行されている全てのアプリケーションプログラムに割り当てられているかそれらによって使用されるRAMメモリ範囲、不揮発性メモリ(例えば、ハードディスク、ソリッドステートドライブ(SSD)、フラッシュドライブ、NANDメモリ、不揮発性RAMなどの記憶媒体)に記憶されているプログラムコードのアドレス範囲、オペレーティングシステム構成などによって示される、特定用途向けサーバによって使用される全てのシステムリソースを特定することができる。本実施形態は、収集を行っている間に特定用途向けサーバで実行されている他のアプリケーションプログラムに対する状態もしくはデータ変更を最小限に抑えるために、この収集を最優先データ収集タスクとして行うことができる。データ収集タスクはそれ自体のメモリ使用状況を報告する必要はない。
次に、本実施形態は、特定タスクによって示されるメモリ内容を取り出することができる。次いで本実施形態は、以下でより詳細に説明するように、図5Aのプロセス500に従ってメモリ内容を符号化および記憶してもよい。
いくつかの実施形態では、複製されるシステムの外部にあるソースからの要求によって複製されたコピーを生成してもよい(例えば「プル」基準)。他の実施形態では、複製されるシステムによって決定された時間に複製されたコピーを生成してもよい(例えば「プッシュ」基準)。プッシュ基準はスケジュールされたバックアップと同様である。
本開示に係る実施形態は、急な通知でコンピュータハードウェアアーキテクチャを別の目的で使用する能力も提供する。例えば、ウェブホスティング会社がいくつかの異なる目的のウェブサイト、例えば、平均200個のサーバを使用するAmazon(商標)のような電子商取引ウェブサイトおよび平均100個のサーバを使用するE−Trade(商標)のようなオンライントレーディングウェブサイトなどをホストすると想定する。さらに、それらが標準的な構成部品から構築された同じまたは同様のコンピュータハードウェアアーキテクチャを使用していると想定する。それらのソフトウェア構成部品は異なってもよく、例えば、電子商取引ウェブサイトはLinux(商標)のようなオープンソースオペレーティングシステムをベースにしていてもよく、オンライントレーディングウェブサイトはMicrosoft Windows(商標)のような商業的オペレーティングシステムをベースにしていてもよい。利用状況は時間と共に変わる場合があり、従って、あるシステムが多く利用されている時に他のシステムは少なく利用されていることがあり、その逆もまた同様である。そのような状況では、本実施形態はいくつかのサーバをあるウェブサイトから別のウェブサイトに迅速に変えて別の目的で使用することができる。例えば、平日の真っただ中に電子商取引ウェブサイトは混んでいないがオンライントレーディングウェブサイトが混んでいる場合には、いくつかの数のサーバ(例えば40個のサーバ)を電子商取引からオンライントレーディングに変えて別の目的で使用することができる。逆に、平日の夕方に電子商取引ウェブサイトは混んでいるがオンライントレーディングウェブサイトが混んでいない場合には、いくつかの数のサーバ(例えば50個のサーバ)をオンライントレーディングウェブサイトから電子商取引ウェブサイトに変えて別の目的で使用することができる。別の目的で使用することをパーソナリティスワッピング(personality swapping)と称してもよい。
目的「A」から目的「B」に変えて別の目的で使用されるサーバの場合、別の目的で使用するためには、最初に現時点では目的「B」に特化しているサーバのシステム状態をコピーまたはクローニングすることが必要になり得る。そのシステム状態としては、現在使用されている全てのメモリ、ならびに現在実行されているオペレーティングシステムおよび全てのソフトウェアなどが挙げられる。任意に、現在目的「A」に特化しているが別の目的で使用される予定のサーバの現在のシステム状態は後で復元するために保存することができる。次に、目的「B」からクローニングされたシステム状態は、以前は目的「A」に特化していたサーバ上で復元され、それによってそのサーバは実質的に瞬時に目的「B」に変わって別の目的で使用される。
別の目的で使用する場合、目的「A」および目的「B」は、同じ企業または異なる企業のいずれか一方のための実質的に任意のサーバを用いる用途であってもよい。例えば、主要な玩具小売業者などの1つの企業の場合、目的「A」はクリスマスの前に最も需要がある販売システムであってもよく、目的「B」は事業年度の終了時期に最も需要のある経理システムであってもよい。
同様に、本開示に係る実施形態は、特定の目的のために予備状態からアクティブ状態に変えてサーバを別の目的で使用することによってシステム容量を増加させてもよい。予備状態は、例えばハードウェアは搭載されているが使用可能なソフトウェアまたはデータがインストールされていないブランクシステムであってもよい。
本開示に係る実施形態はシステム画像の組み合わせを容易にすることができる。例えば、基本システム画像は、オペレーティングシステムおよび/またはオペレーティングシステムのための特定のコンピュータインフラ、例えばウェブサーバおよびメールサーバなどのカスタマイズされていないサーバを表現してもよい。次いで、基本システム画像は、カスタム画像と組み合わせてもよく(すなわち、1つにまとめてもよく)、例えばユーザアカウント、履歴、お気に入り、マクロおよび専用アプリケーションプログラムなどのカスタマイズされていないサーバのシステム特有のカスタマイズを表現してもよい。逆に、システムブリンクは、基本システム画像とは別々にカスタマイズをブリンクできるようにし、それによりカスタマイズを異なるスケジュールで、あるいは基本システム画像のバックアップと比較して短い待ち時間でバックアップ可能にしてもよい。
図3Aは本開示の一実施形態に係るシステム300を示す。システム300を使用して高速クローニングを行うことができる。システム300は図示のように、企業A301−A、企業B301−Bおよび企業C301−Cを含む。各企業は、会社または組織全体、例えば、ゲーミングネットワーク、オンライン小売業、オンライン仲介業者、証券取引などを表してもよい。システム300は、図3Aに示されているものよりも少ないまたは多い企業ネットワークを含んでもよい。
各企業301−nは、1つ以上のサーバ、例えば、企業A301−Aのためのサーバ303−A−1〜303−A−n、企業B301−Bのためのサーバ303−B−1〜303−B−n、および企業C301−Cのためのサーバ303−C−1〜303−C−nを含んでもよい。企業内の個々のサーバは異なる機能のために企業によって利用されることがある。例えば、企業A301−Aがオンライン小売業である場合、サーバ303−A−1はウェブサーバであってもよく、サーバ303−A−2はデータベースおよび在庫管理に特化していてもよく、サーバ303−A−3は請求書発行および会計に特化していてもよく、それ以外も同様である。
各企業301−nは通信ネットワーク308を介してクローニングサーバ305に通信可能に接続されていてもよい。クローニングサーバ305は、例えば図2に示されているコンピュータシステム200であってもよい。動作中、クローニングサーバ305は外部サーバ303−m−nで本明細書に記載されているプロセスの実施形態を行ってもよい。例えば、クローニングサーバ305はサーバ303−B−2でサーバ303−B−1を複製してもよく、あるいはクローニングサーバ305はサーバ303−C−lのブリンクバックアップを作成してもよく、それ以外も同様である。
いくつかの実施形態では、任意の別個のブリンクリポジトリ306は、1つ以上のサーバ303からのブリンクバックアップを記憶してもよい。別個のブリンクリポジトリ306を使用することなく、ブリンクバックアップをクローニングサーバ305のNV−DIMMメモリ内に記憶してもよい。
図3Bは本開示の一実施形態に係るシステム350を示す。システム350を使用して、ネットワークを介した外部アクセスを必要とすることなくアプリケーションサーバ351の高速クローニングを行うことができる。システム350は、通常の機能、例えばウェブサーバまたはデータベースサーバまたは経理サーバなどであってもよいアプリケーションサーバ351を備える。アプリケーションサーバ351は、その通常の機能におけるアプリケーションサーバ351の動作をサポートするために、従来の揮発性RAMメモリ353および記憶媒体354に接続されたプロセッサ352を備えていてもよい。通信インタフェース355は、アプリケーションサーバ351と外部通信リンクとの通信接続性(例えば、WANまたはLANへのイーサネットインタフェース)を提供してもよい。
但し、アプリケーションサーバ351は、従来の揮発性RAMメモリ307およびNV−DIMM309によってサポートされるクローニングサーバ355の機能をその中にさらに組み込んでいてもよい。クローニングサーバ355は、図2に示されているように例えばコンピュータシステム200であってもよい。動作中、クローニングサーバ355はアプリケーションサーバ351上で本明細書に記載されているプロセスの実施形態を行ってもよい。システム300と比較したシステム350の利点は、クローニングサーバ355がアプリケーションサーバ351内に組み込まれているため、システム350が通信ネットワーク308などの通信ネットワークへのアクセスを必ずしも必要としないことである。組み込みは、例えばアプリケーションサーバ351およびクローニングサーバ355の両方のためのコードモジュールを実行するアプリケーションサーバ351のプロセッサ352によって達成されてもよい。
あるいは、アプリケーションサーバ351は、開始点としてコンピュータシステム200を用いて実行され、次いで、アプリケーションサーバ351の機能を提供するオペレーティングシステム204およびさらなるソフトウェアモジュールによって実行されてもよい。
図3Cは本開示の一実施形態に係るシステム370を示す。システム370は物理サーバ371を備え、次いで物理サーバ371は、クローニングサーバ375およびアプリケーションサーバ351の1つ以上の構成部品(同様の参照符号によって示されている)と、1つ以上の仮想サーバ378a...378n(まとめて仮想サーバ378)とを含んでもよい。仮想サーバ378のうちの個々であるが特定のものでない1つを仮想サーバ378と称してもよい。プロセッサ352で動作するハイパーバイザまたは他の仮想マシーンモニタは、仮想サーバ378の外観を遠隔ユーザ、例えば通信インタフェース355を介して接続された遠隔ユーザに提供するために、物理サーバ371およびそのリソースを管理してもよい。仮想サーバ378は、例えばそれぞれの仮想サーバ378に接続されているユーザ(例えば遠隔ユーザ)の利益のため、および仮想サーバ378上でのアプリケーションプログラムの実行をサポートするためにそれぞれのゲストオペレーティングシステム(「GOS」)を提供してもよい。仮想サーバ378をサポートするためのメモリ記憶装置は、RAM353や記憶媒体354から割り当てられ、かつ/または外部メモリ装置(図3Cには図示せず)によって提供されてもよい。
いくつかの実施形態では、ブリンクバックアップが行われると、仮想サーバ378、そのそれぞれのGOS、メモリリソースおよびGOS上で実行されている任意のアプリケーションプログラムは、ブリンクバックアップを行うのに要する時間にわたって一時的にロックもしくは保留状態に入ってもよい。ロックもしくは保留状態は、ブリンクバックアップが行われる間のシステム状態またはシステム構成に対する変更を少なくする。ブリンクバックアップの終了時に、ロックもしくは保留状態に入った要素は自動的にそれらの通常状態に戻ることができる。
いくつかの実施形態では、仮想サーバ378、そのそれぞれのGOS、メモリリソースおよびGOS上で実行されている任意のアプリケーションプログラムは、ブリンクバックアップ中に一時的に静止状態に入ってもよい。静止状態であっても取引を実行し続けることができるが、結果は記憶媒体に委ねるのではなく常駐メモリに保持することができる。対照的に、ハイバネーションモードにあるサーバは、メモリ画像を記憶媒体に保存してハイバネーションモードの間に取引を実行することなくシャットダウンすることができる。ブリンクバックアップの終了時に、静止状態に入った要素は自動的にそれらの通常状態に戻ることができる。
いくつかの実施形態では、ブリンクバックアップは、通信インタフェース355を介してアクセス可能なブリンクリポジトリ306と同様に外部ブリンクリポジトリに記憶されてもよい。
図4は簡略化された平らな物理的アドレス空間モデルを示す。物理的なメモリの総量は図4に示されている量とは異なってもよい。本開示に係る実施形態は、本明細書に記載されているプロセスを用いてアドレス空間403全体の高速クローンを作成することができる。他の実施形態は、本明細書に記載されているプロセスを用いて簡略化された平らな物理的アドレス空間モデルの1つ以上の部分401a、401bの高速クローンを作成することができる。
図5Aは本開示の一実施形態に係る符号化プロセス500を示す。プロセス500は、オペレーティングシステム204およびデータ適応モジュール211によって実行されてもよい。
プロセス500は工程501で開始し、この工程では、記憶される生データのブロックを、この生データを記憶することを目的としたアプリケーションプログラムから受信する。この生データは、ファイル、ストリーミングメディア、固定サイズもしくは可変サイズのデータのブロックなどの形態であってもよい。
次に、プロセス500は工程503に移行し、この工程では、工程501で受信された生データの一部を生データの候補ベクトルにマッピングするか一致させてもよい。生データを生データのより長い候補ベクトルに一致させることにより、生データを生データのより短い候補ベクトルに一致させた場合よりも大きなデータ記憶効率が得られるはずである。候補ベクトルは、(マーカ、ベクトル)対の表として従来のメモリに記憶されていてもよい。その目標は、少なくとも1つのベクトルによって生データの各ビットまたはバイトを表現することである。0×00または0×FFなどの特定の生データのバイトをデフォルト値とみなしてもよく、デフォルト値に等しい任意の生データのバイトの場合、ベクトルによってデフォルト値に等しいバイトを表現することは任意である。
工程503では、生データの候補ベクトルにマッピングされる生データの一部の長さに対して最小閾値長さ限界が存在することがある。例えば、生データのベクトルに対するポインタは生データ自体よりも長くなるため、単一のバイトのみからなる生データは短すぎて生データの候補ベクトルに一致させることを試みることができない。長さが最小閾値を超える生データの場合、生データが生データの既存の候補ベクトルに一致しない場合に、生データを生データの新しいベクトルとして追加してもよい。
次に、プロセス500は工程505に移行し、この工程では、工程503で決定されたベクトルを(マーカ、ベクトル)対の表からのそれぞれのビットマーカに一致させてもよい。ビットマーカは関連するベクトルを参照するための近道である。
次に、プロセス500は工程507に移行し、この工程では、(マーカ、ベクトル)対の表からのビットマーカをRAM記憶装置220などのメモリに記憶する。
図5Bは本開示の一実施形態に係る復号プロセス550を示す。プロセス550はオペレーティングシステム204およびデータ適応モジュール211によって実行されてもよい。
プロセス550は工程551で開始し、この工程では、復号される符号化されたデータのブロックをRAM記憶装置220などのメモリから読み込む。当業者に公知であるように、アドレスは仮想アドレス調整方法および表によって管理されていてもよい。
次に、プロセス550は工程553に移行し、この工程では、ビットマーカを符号化されたデータから抽出する。
次に、プロセス550は工程555に移行し、この工程では、工程553から抽出されたビットマーカを(マーカ、ベクトル)対の表の中で検索する。
次に、プロセス550は工程557に移行し、この工程では、生データベクトルを工程553から抽出されたビットマーカに対応する(マーカ、ベクトル)対の表の入力項目から抽出する。
次に、プロセス550は工程559に移行し、この工程では、工程557から抽出された生データベクトルを1つにまとめて再構築された復号されたデータを形成する。1つにまとめられた生データベクトルが再構築された復号されたデータの期待されるアドレス範囲全体に含まれる全てのアドレスを包含しない場合には、包含されないアドレスは、復号されたデータにおけるデフォルト値、例えば、0×00または0×FFバイトを取るものとみなしてもよい。
図6Aは本開示の一実施形態に係るソースシステムのブリンクバックアップを行うためのプロセス600を示す。プロセス600はオペレーティングシステム204およびデータ適応モジュール211によって実行されてもよい。
プロセス600は工程601で開始し、この工程では、ソースシステムからバックアップされるメモリリソースを特定する。例えば、メモリリソースは、特定の機能またはグループ(例えば経理機能)に特化したサーバまたは仮想サーバ全体に対応してもよく、あるいは別の同様のコンピュータシステムに対応してもよい。より詳細には、メモリリソースは、ソースシステム(すなわち、バックアップされるシステム)上で実行されている1つ以上のプロセスに対応してもよい。仮想サーバは営業部や技術部などの他の機能にそれぞれに特化した他の仮想サーバと共に物理的サーバ上でホストされていてもよい。
次に、プロセス600は工程603に移行し、この工程では、工程601で特定されたメモリ内容をソースシステム(すなわち、バックアップされるシステム)から取り出す。次いで、プロセス600の制御はさらなる処理のために符号化プロセス500に移動してもよい。工程601で特定されたメモリ内容はプロセス500によって符号化される生データ入力のブロックとして使用してもよい。符号化プロセス500に移動する前に、その生データのブロックを実質的に任意の好都合な方法で分割してもよい。例えば、生データのブロックは実質的に均一なブロックサイズ(例えば1ブロックの生データ当たり1メガバイト)を有してもよく、あるいは生データのブロックはバックアップされるサーバのそれぞれのプロセスによって使用されるメモリ空間などに対応してもよい。いくつかの実施形態では、‘175出願に記載されているマーカ表を2回以上のブリンクバックアップによって参照してもよい。
図6Bは、本開示の一実施形態に係るブリンクバックアップからシステムを復元するためのプロセス650を示す。ブリンクバックアップは、ブリンクバックアップが作成された際にバックアップのターゲットであったという理由からターゲットシステムと称してもよい。プロセス650はオペレーティングシステム204およびデータ適応モジュール211によって実行されてもよい。
プロセス650は工程651で開始し、この工程では、本実施形態は復元されるシステムを特定する。
次に、プロセス650は工程653に移行し、この工程では、復元されるサーバに対応する符号化された内容をNV−DIMM309などの符号化されたメモリから取り出す。
次に、プロセス650は工程655に移行し、この工程では、工程653から取り出された符号化された内容を復号するために、復号プロセス550などの復号プロセスを呼び出す。
次に、プロセス650は工程657に移行し、この工程では、復号されたデータをターゲットシステムのメモリ空間に保存する。復号されたデータを、そのデータがソースシステム上で占有していた同じメモリアドレスに記憶してもよい。
上記は本発明の実施形態を対象としているが、その基本的な範囲から逸脱することなく本発明の他の実施形態およびさらなる実施形態を考案することができる。本明細書に記載されている様々な実施形態は、本明細書に含まれている範囲から逸脱することなく記載されている任意の他の実施形態と組み合わせて使用できることが理解されるであろう。さらに、上記説明は包括的なものでもなければ本発明を開示されている正確な形態に限定するものではない。修正および変形は、上記教示を踏まえて可能になるか、あるいは本発明の実施により得ることができる。特定の例示的な実施形態は、リスト項目が本実施形態の代表であり、かつそのリストは、さらなる実施形態を排除する限定的リストを表すものではないことを示すための言い回しを含む非限定的リストの使用によって特定することができる。そのような言い回しとしては、「例」、「他」、「など」、「例えば」、「その他」、「および同様のもの」他、および周囲の文脈から明らかになる他の言い回しが挙げられる。
本出願の説明に使用されている要素、行為または命令は、そのようなものとして明示的に記載されていない限り、本発明にとって重要もしくは必須なものとして解釈されるべきではない。また、本明細書で使用される「ある」という冠詞は1つ以上の項目を含むことが意図されている。1つの項目のみが意図される場合、「1つの」という用語または同様の言葉が使用される。さらに、本明細書で使用される複数の項目および/または項目の複数のカテゴリーの列挙の後に続く「〜のいずれか」という用語は、個々に、あるいは他の項目および/または項目の他のカテゴリーと共に、項目および/または項目のカテゴリー「のいずれか」、「の任意の組み合わせ」、「の任意の複数」および/または「の複数の任意の組み合わせ」を含むことが意図されている。
さらに、特許請求の範囲は、そのような趣旨で述べられていない限り、記載されている順序または要素に限定されるものとして解釈されるべきではない。また、任意の請求項における「手段」という用語の使用は、米国特許法第112条第6項を行使するものであり、「手段」という用語を含まない任意の請求項はそれを行使するものではない。
Claims (26)
- ソースコンピューティングシステムをクローニングするための方法であって、
ソースコンピューティングシステムに接続されたメモリ空間を選択する工程と、
前記選択されたメモリ空間から符号化されてないデータを取り出す工程と、
バックアップサーバ上で実行されているビットマーカベースの符号化プロセスを用いて前記符号化されていないデータを符号化する工程と、
符号化されたデータを前記バックアップサーバに接続され、かつ電源断から保護されている保護されたメモリに記憶する工程と、
前記符号化されたデータを前記保護されたメモリから取り出す工程と、
前記符号化されたデータを前記ソースコンピューティングシステムとは別個であるターゲットコンピュータシステムで復号する工程と、
を含む、方法。 - 前記メモリ空間を選択する工程は、
前記ソースコンピューティングシステム上で実行されている1つ以上のコンピュータプロセスを特定する工程と、
前記1つ以上の特定されたコンピュータプロセスのうちのそれぞれによって使用されるメモリ空間を選択する工程と、
を含む、請求項1に記載の方法。 - 前記メモリ空間を選択する工程は前記ソースコンピューティングシステムの揮発性メモリアドレス範囲全体を含む、請求項1に記載の方法。
- 前記メモリ空間を選択する工程は前記ソースコンピューティングシステムの揮発性メモリアドレス範囲全体の固定された範囲のサブセットを含む、請求項1に記載の方法。
- 前記ソースコンピューティングシステムは仮想サーバを含む、請求項1に記載の方法。
- 前記バックアップサーバに接続された前記保護されたメモリは複数のソースコンピューティングシステム参照画像を記憶する、請求項1に記載の方法。
- 前記複数のソースコンピューティングシステム参照画像は単一のソースコンピューティングシステムの経時的画像を含む、請求項6に記載の方法。
- 前記複数のソースコンピューティングシステム参照画像は複数のソースコンピューティングシステムの画像を含む、請求項6に記載の方法。
- 前記ソースコンピューティングシステムのクローンは、クローニングされる前記ソースコンピューティングシステムの外部にあるソースからの要求によって作成される、請求項1に記載の方法。
- 前記ソースコンピューティングシステムのクローンは、クローニングされる前記ソースコンピューティングシステムによって決定された時間に作成される、請求項1に記載の方法。
- 前記ソースコンピューティングシステムをクローニングする工程は、異なる使用状況に対して前記ターゲットコンピュータシステムを別の目的で使用するように動作可能である、請求項1に記載の方法。
- 前記ソースコンピューティングシステムをクローニングする工程は、バックアップ状態に対して前記ターゲットコンピュータシステムを復元するように動作可能である、請求項1に記載の方法。
- 前記ソースコンピューティングシステムをクローニングする工程は、予備状態からアクティブ状態に変えて前記ターゲットコンピュータシステムを別の目的で使用するように動作可能である、請求項1に記載の方法。
- 前記メモリ空間を選択する工程は、
カスタマイズされていないサーバの基本システム画像を含む第1のメモリ空間と、
前記カスタマイズされていないサーバのシステム特有のカスタマイズを含む第2のメモリ空間と、
を含む、請求項1に記載の方法。 - ソースコンピューティングシステムをクローニングするためのシステムであって、
前記ソースコンピューティングシステムにメモリ空間を提供するメモリに接続されたプロセッサと、
前記メモリ空間から符号化されていないデータを取り出すのを支援するための通信インタフェースと、
バックアップサーバ上で実行されているビットマーカベースの符号化プロセスを用いて前記符号化されていないデータを符号化するためのエンコーダと、
符号化されたデータを前記バックアップサーバに接続され、かつ電源断から保護されている保護されたメモリに記憶するための記憶モジュールと、
前記保護されたメモリから前記符号化されたデータを取り出すのを支援するための通信インタフェースと、
前記符号化されたデータを前記ソースコンピューティングシステムとは別個であるターゲットコンピュータシステムで復号するためのデコーダと
を備える、システム。 - 前記メモリ空間を選択する工程は前記ソースコンピューティングシステムの揮発性メモリアドレス範囲全体を含む、請求項15に記載のシステム。
- 前記メモリ空間を選択する工程は前記ソースコンピューティングシステムの揮発性メモリアドレス範囲全体の固定された範囲のサブセットを含む、請求項15に記載のシステム。
- 前記ソースコンピューティングシステムは仮想サーバを含む、請求項15に記載のシステム。
- 前記バックアップサーバに接続された前記保護されたメモリは複数のソースコンピューティングシステム参照画像を記憶する、請求項15に記載のシステム。
- 前記複数のソースコンピューティングシステム参照画像は単一のソースコンピューティングシステムの経時的画像を含む、請求項19に記載のシステム。
- システム状態データを符号化するためのシステムであって、
複合オブジェクトおよび多次元データオブジェクトからなる群から選択されるものを表現する符号化されていないシステム状態データのブロックを受信するためのデータインタフェースと、
メモリに接続されたプロセッサであって、
前記符号化されていないシステム状態データのブロックをデフォルトデータおよび非デフォルトデータに分解し、
前記非デフォルトデータを複数のデータベクトルにマッピングし、
前記複数のデータベクトルのそれぞれをそれぞれのビットマーカにマッピングし、かつ
前記それぞれのビットマーカを前記メモリに記憶して、前記符号化されていないシステム状態データの符号化された表現を生成する
ように構成されたプロセッサと、
を備える、システム。 - システム状態データを符号化するためのシステムであって、
符号化されていないシステム状態データのブロックを受信するためのデータインタフェースと、
メモリに接続されたプロセッサであって、
前記符号化されていないシステム状態データのブロックをデフォルトデータおよび非デフォルトデータに分解し、
前記非デフォルトデータを複数のデータベクトルにマッピングし、
前記複数のデータベクトルのそれぞれをそれぞれのビットマーカにマッピングし、かつ
前記それぞれのビットマーカを前記メモリに記憶して、前記符号化されていないシステム状態データの符号化された表現を生成する
ように構成されたプロセッサと、
を備え、
前記ビットマーカは、
シード値および複製規則、および
複数の他のビットマーカおよび組み合わせ規則
からなる群から選択されるものを含む、システム。 - システム状態データを符号化するためのシステムであって、
符号化されていないシステム状態データのブロックを受信するためのデータインタフェースと、
メモリに接続されたプロセッサであって、
前記符号化されていないシステム状態データのブロックをデフォルトデータおよび非デフォルトデータに分解し、
前記非デフォルトデータを、その少なくとも1つがフラクタル化パターンを含む複数のデータベクトルにマッピングし、
前記複数のデータベクトルのそれぞれをそれぞれのビットマーカにマッピングし、かつ
前記それぞれのビットマーカを前記メモリに記憶して、前記符号化されていないシステム状態データの符号化された表現を生成する
ように構成されたプロセッサと、
を備える、システム。 - システム状態データを符号化するためのシステムであって、
複合オブジェクトおよび多次元データオブジェクトからなる群から選択されるものを表す符号化されていないシステム状態データのブロックを受信するためのデータインタフェースと、
メモリに接続されたプロセッサであって、
前記符号化されていないシステム状態データのブロックを複数のデータベクトルに分解し、
前記複数のデータベクトルのそれぞれをそれぞれのビットマーカにマッピングし、かつ
前記それぞれのビットマーカを前記メモリに記憶して、前記符号化されていないシステム状態データの符号化された表現を生成する
ように構成されたプロセッサと、
を備え、
前記符号化されていないシステム状態データのブロックを表現する場合に、前記複数のデータベクトルのうちの少なくともいくつかが互いに重複している、システム。 - システム状態データを符号化するためのシステムであって、
符号化されていないシステム状態データのブロックを受信するためのデータインタフェースと、
メモリに接続されたプロセッサであって、
前記符号化されていないシステム状態データのブロックを複数のデータベクトルに分解し、
前記複数のデータベクトルのそれぞれを、
シード値および複製規則、および
複数の他のビットマーカおよび組み合わせ規則
からなる群から選択されるものを含むそれぞれのビットマーカにマッピングし、かつ
前記それぞれのビットマーカを前記メモリに記憶して、前記符号化されていないシステム状態データの符号化された表現を生成する
ように構成されたプロセッサと、
を備え、
前記符号化されていないシステム状態データのブロックを表現する場合に、前記複数のデータベクトルのうちの少なくともいくつかが互いに重複している、システム。 - システム状態データを符号化するためのシステムであって、
符号化されていないシステム状態データのブロックを受信するためのデータインタフェースと、
メモリに接続されたプロセッサであって、
前記符号化されていないシステム状態データのブロックを、その少なくとも1つがフラクタル化パターンを含む複数のデータベクトルに分解し、
前記複数のデータベクトルのそれぞれをそれぞれのビットマーカにマッピングし、かつ
前記それぞれのビットマーカを前記メモリに記憶して、前記符号化されていないシステム状態データの符号化された表現を生成する
ように構成されたプロセッサと、
を備え、
前記符号化されていないシステム状態データのブロックを表現する場合に、前記複数のデータベクトルのうちの少なくともいくつかが互いに重複している、システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/089,837 | 2016-04-04 | ||
US15/089,837 US9817728B2 (en) | 2013-02-01 | 2016-04-04 | Fast system state cloning |
PCT/US2017/024692 WO2017176523A1 (en) | 2016-04-04 | 2017-03-29 | Fast system state cloning |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019514146A true JP2019514146A (ja) | 2019-05-30 |
Family
ID=60000675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019503395A Pending JP2019514146A (ja) | 2016-04-04 | 2017-03-29 | 高速システム状態クローニング |
Country Status (7)
Country | Link |
---|---|
EP (1) | EP3440549A4 (ja) |
JP (1) | JP2019514146A (ja) |
KR (1) | KR20190013729A (ja) |
CN (1) | CN109643259A (ja) |
AR (1) | AR108087A1 (ja) |
TW (1) | TW201738759A (ja) |
WO (1) | WO2017176523A1 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10061514B2 (en) | 2015-04-15 | 2018-08-28 | Formulus Black Corporation | Method and apparatus for dense hyper IO digital retention |
US10747753B2 (en) | 2015-08-28 | 2020-08-18 | Swirlds, Inc. | Methods and apparatus for a distributed database within a network |
US9390154B1 (en) | 2015-08-28 | 2016-07-12 | Swirlds, Inc. | Methods and apparatus for a distributed database within a network |
PT3539026T (pt) | 2016-11-10 | 2022-03-08 | Swirlds Inc | Métodos e aparelhos para uma base de dados distribuída que inclui entradas anónimas |
US11222006B2 (en) | 2016-12-19 | 2022-01-11 | Swirlds, Inc. | Methods and apparatus for a distributed database that enables deletion of events |
KR102348418B1 (ko) | 2017-07-11 | 2022-01-07 | 스월즈, 인크. | 네트워크 내의 분산 데이터베이스를 효율적으로 구현하기 위한 방법들 및 장치 |
SG11202002308RA (en) | 2017-11-01 | 2020-04-29 | Swirlds Inc | Methods and apparatus for efficiently implementing a fast-copyable database |
US10572186B2 (en) | 2017-12-18 | 2020-02-25 | Formulus Black Corporation | Random access memory (RAM)-based computer systems, devices, and methods |
TWI750425B (zh) * | 2018-01-19 | 2021-12-21 | 南韓商三星電子股份有限公司 | 資料儲存系統和用於寫入鍵值對的物件的方法 |
WO2020142431A1 (en) | 2019-01-02 | 2020-07-09 | Formulus Black Corporation | Systems and methods for memory failure prevention, management, and mitigation |
CN113711202A (zh) | 2019-05-22 | 2021-11-26 | 斯沃尔德斯股份有限公司 | 用于在分布式数据库中实现状态证明和分类帐标识符的方法和装置 |
KR102557352B1 (ko) | 2020-12-31 | 2023-07-19 | 스노우화이트팩토리(주) | 생열귀나무 추출물을 유효성분으로 포함하는 치주 질환의 예방 또는 치료용 조성물 |
TWI788084B (zh) * | 2021-11-03 | 2022-12-21 | 財團法人資訊工業策進會 | 運算裝置以及資料備份方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060212644A1 (en) * | 2005-03-21 | 2006-09-21 | Acton John D | Non-volatile backup for data cache |
US8806271B2 (en) * | 2008-12-09 | 2014-08-12 | Samsung Electronics Co., Ltd. | Auxiliary power supply and user device including the same |
US8055937B2 (en) * | 2008-12-22 | 2011-11-08 | QuorumLabs, Inc. | High availability and disaster recovery using virtualization |
JP2011039589A (ja) * | 2009-08-06 | 2011-02-24 | Fujitsu Ltd | 復元制御装置、復元制御方法、コンピュータ可読記憶媒体、及び、復元制御プログラム |
US20150163060A1 (en) * | 2010-04-22 | 2015-06-11 | Martin Tomlinson | Methods, systems and apparatus for public key encryption using error correcting codes |
US20120239860A1 (en) * | 2010-12-17 | 2012-09-20 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
CN102073893A (zh) * | 2010-12-27 | 2011-05-25 | 陆宝武 | 一种防伪编码方法及解码装置 |
EP2798486B1 (en) * | 2011-12-29 | 2019-11-06 | VMware, Inc. | N-way synchronization of desktop images |
US9137225B2 (en) * | 2012-04-23 | 2015-09-15 | Raghavendra Kulkarni | Seamless remote storage of uniformly encrypted data for diverse platforms and devices |
US20140223118A1 (en) * | 2013-02-01 | 2014-08-07 | Brian Ignomirello | Bit Markers and Frequency Converters |
US9817728B2 (en) * | 2013-02-01 | 2017-11-14 | Symbolic Io Corporation | Fast system state cloning |
US9467294B2 (en) * | 2013-02-01 | 2016-10-11 | Symbolic Io Corporation | Methods and systems for storing and retrieving data |
-
2017
- 2017-03-29 JP JP2019503395A patent/JP2019514146A/ja active Pending
- 2017-03-29 WO PCT/US2017/024692 patent/WO2017176523A1/en active Application Filing
- 2017-03-29 KR KR1020187031993A patent/KR20190013729A/ko not_active Application Discontinuation
- 2017-03-29 CN CN201780034622.8A patent/CN109643259A/zh active Pending
- 2017-03-29 EP EP17779550.7A patent/EP3440549A4/en not_active Withdrawn
- 2017-03-31 TW TW106111156A patent/TW201738759A/zh unknown
- 2017-04-04 AR ARP170100847A patent/AR108087A1/es unknown
Also Published As
Publication number | Publication date |
---|---|
WO2017176523A8 (en) | 2018-10-25 |
CN109643259A (zh) | 2019-04-16 |
EP3440549A4 (en) | 2019-11-13 |
EP3440549A1 (en) | 2019-02-13 |
AR108087A1 (es) | 2018-07-18 |
KR20190013729A (ko) | 2019-02-11 |
WO2017176523A1 (en) | 2017-10-12 |
TW201738759A (zh) | 2017-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10789137B2 (en) | Fast system state cloning | |
JP2019514146A (ja) | 高速システム状態クローニング | |
AU2012347883B2 (en) | System and method for restoring application data | |
CN106062742B (zh) | 用于改进快照性能的系统和方法 | |
US10120607B2 (en) | Method and apparatus for dense hyper IO digital retention | |
DE102018214013A1 (de) | Automatische kontinuierliche Prüfpunktsetzung | |
US10606482B2 (en) | Method and apparatus for dense hyper IO digital retention | |
US20150089287A1 (en) | Event-triggered storage of data to non-volatile memory | |
US9628108B2 (en) | Method and apparatus for dense hyper IO digital retention | |
US10997516B2 (en) | Systems and methods for predicting persistent memory device degradation based on operational parameters | |
CN109997118A (zh) | 在永久存储器系统中以超高速一致地存储大量数据的方法 | |
US10824524B2 (en) | Systems and methods for providing continuous memory redundancy, availability, and serviceability using dynamic address space mirroring | |
CN106104515A (zh) | 利用非易失性存储器的文件系统设计和故障恢复方法 | |
US20190324868A1 (en) | Backup portion of persistent memory | |
US10387264B1 (en) | Initiating backups based on data changes | |
WO2017122313A1 (ja) | オブジェクト履歴として表示される情報をクライアントに提供する計算機システム及び計算機 | |
US20190188102A1 (en) | Method and system for data recovery in a cloud based computing environment utilizing object storage | |
WO2020247455A1 (en) | Systems and methods for storage block replication in a hybrid storage environment | |
US7657733B2 (en) | Hardware password accessing method | |
US10379960B1 (en) | Bypassing backup operations for specified database types | |
Endong et al. | Design and Implementation of cache protecting from power failure in Disk Array |