(57)【要約】  ソースコンピューティングシステムのクローンを作成するためのシステムおよび方法であって、本方法は、ソースコンピューティングシステムに接続されたメモリ空間を選択する工程と、選択されたメモリ空間から符号化されてないデータを取り出す工程と、バックアップサーバ上で実行されているビットマーカベースの符号化プロセスを用いて符号化されていないデータを符号化する工程と、符号化されたデータをバックアップサーバに接続され、かつ電源断から保護されている保護されたメモリに記憶する工程と、符号化されたデータを保護されたメモリから取り出す工程と、符号化されたデータをソースコンピューティングシステムとは別個であるターゲットコンピュータシステムで復号する工程とを含む、システムおよび方法。【選択図】図３Ａ
2019514146.tif 000002
【特許請求の範囲】
【請求項１】
ソースコンピューティングシステムをクローニングするための方法であって、
ソースコンピューティングシステムに接続されたメモリ空間を選択する工程と、
前記選択されたメモリ空間から符号化されてないデータを取り出す工程と、
バックアップサーバ上で実行されているビットマーカベースの符号化プロセスを用いて前記符号化されていないデータを符号化する工程と、
符号化されたデータを前記バックアップサーバに接続され、かつ電源断から保護されている保護されたメモリに記憶する工程と、
前記符号化されたデータを前記保護されたメモリから取り出す工程と、
前記符号化されたデータを前記ソースコンピューティングシステムとは別個であるターゲットコンピュータシステムで復号する工程と、
を含む、方法。
【請求項２】
前記メモリ空間を選択する工程は、
前記ソースコンピューティングシステム上で実行されている１つ以上のコンピュータプロセスを特定する工程と、
前記１つ以上の特定されたコンピュータプロセスのうちのそれぞれによって使用されるメモリ空間を選択する工程と、
を含む、請求項１に記載の方法。
【請求項３】
前記メモリ空間を選択する工程は前記ソースコンピューティングシステムの揮発性メモリアドレス範囲全体を含む、請求項１に記載の方法。
【請求項４】
前記メモリ空間を選択する工程は前記ソースコンピューティングシステムの揮発性メモリアドレス範囲全体の固定された範囲のサブセットを含む、請求項１に記載の方法。
【請求項５】
前記ソースコンピューティングシステムは仮想サーバを含む、請求項１に記載の方法。
【請求項６】
前記バックアップサーバに接続された前記保護されたメモリは複数のソースコンピューティングシステム参照画像を記憶する、請求項１に記載の方法。
【請求項７】
前記複数のソースコンピューティングシステム参照画像は単一のソースコンピューティングシステムの経時的画像を含む、請求項６に記載の方法。
【請求項８】
前記複数のソースコンピューティングシステム参照画像は複数のソースコンピューティングシステムの画像を含む、請求項６に記載の方法。
【請求項９】
前記ソースコンピューティングシステムのクローンは、クローニングされる前記ソースコンピューティングシステムの外部にあるソースからの要求によって作成される、請求項１に記載の方法。
【請求項１０】
前記ソースコンピューティングシステムのクローンは、クローニングされる前記ソースコンピューティングシステムによって決定された時間に作成される、請求項１に記載の方法。
【請求項１１】
前記ソースコンピューティングシステムをクローニングする工程は、異なる使用状況に対して前記ターゲットコンピュータシステムを別の目的で使用するように動作可能である、請求項１に記載の方法。
【請求項１２】
前記ソースコンピューティングシステムをクローニングする工程は、バックアップ状態に対して前記ターゲットコンピュータシステムを復元するように動作可能である、請求項１に記載の方法。
【請求項１３】
前記ソースコンピューティングシステムをクローニングする工程は、予備状態からアクティブ状態に変えて前記ターゲットコンピュータシステムを別の目的で使用するように動作可能である、請求項１に記載の方法。
【請求項１４】
前記メモリ空間を選択する工程は、
カスタマイズされていないサーバの基本システム画像を含む第１のメモリ空間と、
前記カスタマイズされていないサーバのシステム特有のカスタマイズを含む第２のメモリ空間と、
を含む、請求項１に記載の方法。
【請求項１５】
ソースコンピューティングシステムをクローニングするためのシステムであって、
前記ソースコンピューティングシステムにメモリ空間を提供するメモリに接続されたプロセッサと、
前記メモリ空間から符号化されていないデータを取り出すのを支援するための通信インタフェースと、
バックアップサーバ上で実行されているビットマーカベースの符号化プロセスを用いて前記符号化されていないデータを符号化するためのエンコーダと、
符号化されたデータを前記バックアップサーバに接続され、かつ電源断から保護されている保護されたメモリに記憶するための記憶モジュールと、
前記保護されたメモリから前記符号化されたデータを取り出すのを支援するための通信インタフェースと、
前記符号化されたデータを前記ソースコンピューティングシステムとは別個であるターゲットコンピュータシステムで復号するためのデコーダと
を備える、システム。
【請求項１６】
前記メモリ空間を選択する工程は前記ソースコンピューティングシステムの揮発性メモリアドレス範囲全体を含む、請求項１５に記載のシステム。
【請求項１７】
前記メモリ空間を選択する工程は前記ソースコンピューティングシステムの揮発性メモリアドレス範囲全体の固定された範囲のサブセットを含む、請求項１５に記載のシステム。
【請求項１８】
前記ソースコンピューティングシステムは仮想サーバを含む、請求項１５に記載のシステム。
【請求項１９】
前記バックアップサーバに接続された前記保護されたメモリは複数のソースコンピューティングシステム参照画像を記憶する、請求項１５に記載のシステム。
【請求項２０】
前記複数のソースコンピューティングシステム参照画像は単一のソースコンピューティングシステムの経時的画像を含む、請求項１９に記載のシステム。
【請求項２１】
システム状態データを符号化するためのシステムであって、
複合オブジェクトおよび多次元データオブジェクトからなる群から選択されるものを表現する符号化されていないシステム状態データのブロックを受信するためのデータインタフェースと、
メモリに接続されたプロセッサであって、
前記符号化されていないシステム状態データのブロックをデフォルトデータおよび非デフォルトデータに分解し、
前記非デフォルトデータを複数のデータベクトルにマッピングし、
前記複数のデータベクトルのそれぞれをそれぞれのビットマーカにマッピングし、かつ
前記それぞれのビットマーカを前記メモリに記憶して、前記符号化されていないシステム状態データの符号化された表現を生成する
ように構成されたプロセッサと、
を備える、システム。
【請求項２２】
システム状態データを符号化するためのシステムであって、
符号化されていないシステム状態データのブロックを受信するためのデータインタフェースと、
メモリに接続されたプロセッサであって、
前記符号化されていないシステム状態データのブロックをデフォルトデータおよび非デフォルトデータに分解し、
前記非デフォルトデータを複数のデータベクトルにマッピングし、
前記複数のデータベクトルのそれぞれをそれぞれのビットマーカにマッピングし、かつ
前記それぞれのビットマーカを前記メモリに記憶して、前記符号化されていないシステム状態データの符号化された表現を生成する
ように構成されたプロセッサと、
を備え、
前記ビットマーカは、
シード値および複製規則、および
複数の他のビットマーカおよび組み合わせ規則
からなる群から選択されるものを含む、システム。
【請求項２３】
システム状態データを符号化するためのシステムであって、
符号化されていないシステム状態データのブロックを受信するためのデータインタフェースと、
メモリに接続されたプロセッサであって、
前記符号化されていないシステム状態データのブロックをデフォルトデータおよび非デフォルトデータに分解し、
前記非デフォルトデータを、その少なくとも１つがフラクタル化パターンを含む複数のデータベクトルにマッピングし、
前記複数のデータベクトルのそれぞれをそれぞれのビットマーカにマッピングし、かつ
前記それぞれのビットマーカを前記メモリに記憶して、前記符号化されていないシステム状態データの符号化された表現を生成する
ように構成されたプロセッサと、
を備える、システム。
【請求項２４】
システム状態データを符号化するためのシステムであって、
複合オブジェクトおよび多次元データオブジェクトからなる群から選択されるものを表す符号化されていないシステム状態データのブロックを受信するためのデータインタフェースと、
メモリに接続されたプロセッサであって、
前記符号化されていないシステム状態データのブロックを複数のデータベクトルに分解し、
前記複数のデータベクトルのそれぞれをそれぞれのビットマーカにマッピングし、かつ
前記それぞれのビットマーカを前記メモリに記憶して、前記符号化されていないシステム状態データの符号化された表現を生成する
ように構成されたプロセッサと、
を備え、
前記符号化されていないシステム状態データのブロックを表現する場合に、前記複数のデータベクトルのうちの少なくともいくつかが互いに重複している、システム。
【請求項２５】
システム状態データを符号化するためのシステムであって、
符号化されていないシステム状態データのブロックを受信するためのデータインタフェースと、
メモリに接続されたプロセッサであって、
前記符号化されていないシステム状態データのブロックを複数のデータベクトルに分解し、
前記複数のデータベクトルのそれぞれを、
シード値および複製規則、および
複数の他のビットマーカおよび組み合わせ規則
からなる群から選択されるものを含むそれぞれのビットマーカにマッピングし、かつ
前記それぞれのビットマーカを前記メモリに記憶して、前記符号化されていないシステム状態データの符号化された表現を生成する
ように構成されたプロセッサと、
を備え、
前記符号化されていないシステム状態データのブロックを表現する場合に、前記複数のデータベクトルのうちの少なくともいくつかが互いに重複している、システム。
【請求項２６】
システム状態データを符号化するためのシステムであって、
符号化されていないシステム状態データのブロックを受信するためのデータインタフェースと、
メモリに接続されたプロセッサであって、
前記符号化されていないシステム状態データのブロックを、その少なくとも１つがフラクタル化パターンを含む複数のデータベクトルに分解し、
前記複数のデータベクトルのそれぞれをそれぞれのビットマーカにマッピングし、かつ
前記それぞれのビットマーカを前記メモリに記憶して、前記符号化されていないシステム状態データの符号化された表現を生成する
ように構成されたプロセッサと、
を備え、
前記符号化されていないシステム状態データのブロックを表現する場合に、前記複数のデータベクトルのうちの少なくともいくつかが互いに重複している、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１６年４月４日に出願された、高速システム状態クローニング（ＦＡＳＴ  ＳＹＳＴＥＭ  ＳＴＡＴＥ  ＣＬＯＮＩＮＧ）という名称の米国特許出願第１５／０８９，８３７号の利益を主張するものであり、その内容全体が参照により本明細書に組み込まれる。
【０００２】
本発明の実施形態は一般にシステムのクローニングに関し、特にバックアップまたは複製のためにシステムをクローニングするための高速な装置および方法に関する。
【背景技術】
【０００３】
様々な範囲または配備のコンピュータシステムが典型的な大企業の至る所で使用されている。企業レベルのコンピュータシステムとは、企業の至る所であったり企業に欠かせない機能をサポートしたりするために使用することができるシステムである。例えば航空会社の場合、予約および記帳システムまたはフライトスケジューリングシステムが企業レベルのシステムであろう。より低いレベルの配備では、他のシステム（例えば、部署レベルまたは機能レベルのシステム）が部署レベルの組織をサポートしたり限られた機能をサポートしたりことができる。例えば航空会社の部署レベルのシステムは、経理、営業、技術および保守サポートなどのうちの１つをサポートすることができる。さらにより低いレベルでは、コンピュータシステム（実システムまたはクラウドベースのシステムなどの仮想システムのいずれか）が個々の従業員をサポートすることができる。
【０００４】
コンピュータシステムは、そのハードウェアおよびソフトウェア資産、ステータス、システム状態などによって特性評価することができる。ハードウェアの特性評価は、使用されるサーバ、利用可能なメモリおよびメモリ記憶空間、利用可能な通信リンクおよびルータ接続性などのリストを含み得る。ソフトウェア資産の特性評価は、オペレーティングシステムおよび各サーバ上で利用可能なアプリケーションプログラムのリストを含み得る。システム状態の特性評価は、どのソフトウェアが現在各サーバ上で実行されているか、各ソフトウェアの状態（例えば、有限状態機械モデルによって示される）、各ソフトウェアにアクセス可能であり、かつ／または各ソフトウェアによって使用される揮発性および不揮発性メモリ内のデータなどのリストを含み得る。
【０００５】
時には、例えばバックアップまたは容量目的のためにコンピュータシステムをクローニングすることが必要であったり望ましかったりする。例えば、コンピュータシステムの全てまたは一部をクローニングすること、例えば少なくともシステム状態をクローニングすることによって、必ずしもハードウェアの特性評価のバックアップを作成するわけではないが、コンピュータシステムのバックアップを作成することがある。他方では、迅速に処理容量もしくは能力を上げることが必要な場合に複製によってクローニングを行うことがある。例えば、オンライン小売業者は感謝祭からクリスマスまでの期間中に営業に特化しているそのコンピュータシステムを一時的に複製し、かつそれらの資産を後で解放することを望むことがある。しかしながら、オンライン小売業者は、その事業年度の終了時に経理に特化しているそのコンピュータシステムを一時的に複製することを望むことがある。
【０００６】
時には、コンピュータシステムをバックアップから復元することが必要であったり望ましかったりする場合がある。例えば、オンライン小売業者の販売システムまたはウェブサイトが破損した場合、その業者は販売システムまたはウェブサイトが復旧されるまで売り上げがなくなることがある。従って、そのようなシステムを可能な限り早くバックアップから復元することが必要になる。
【０００７】
システムをクローニングするための既存の方法は様々な欠点に悩まされている。例えば、ホットスタンバイ（例えば、常にアクティブであり、かつ主システムの状態をミラーリングしているシステム）は、特に大型のシステムの場合に、必要なハードウェア、必要なソフトウェアライセンスおよび（例えばユーティリティおよび職員のための）維持費の点で高価になることがある。複数の仮想マシーンおよびハイパーバイザも常にホットスタンバイ状態に維持すればハードウェアおよびソフトウェアの点で高価になる可能性がある。コールドスタンバイバックアップシステム（例えば、主システムが故障した際など必要な場合にのみバックアップが作動する）は、故障したシステムの後を引き継ぐために望ましくない程に長い時間を要する場合があり、故障前の主システムの最新の状態を反映していないことがある。
【０００８】
従って、迅速でありながらも低コストでコンピュータシステムをクローニングするためのシステムおよび方法を提供することが必要である。
【発明の概要】
【０００９】
一実施形態では、本明細書に記載されている高速な方法およびアーキテクチャを用いてアプリケーションサーバシステムの現在のメモリ内容の全てまたは一部をコピーすることによってシステムクローンを作成する。次いで、企業容量を増加させるため、およびコンピュータ資産を別の目的で使用するなどのために、システムクローンをバックアップとして使用することができる。
【００１０】
本開示の一実施形態に係るソースコンピューティングシステムをクローニングするための方法は、ソースコンピューティングシステムに接続されたメモリ空間を選択する工程と、選択されたメモリ空間から符号化されてないデータを取り出す工程と、バックアップサーバ上で実行されているビットマーカベースの符号化プロセスを用いて符号化されていないデータを符号化する工程と、符号化されたデータをバックアップサーバに接続され、かつ電源断から保護されている保護されたメモリに記憶する工程と、符号化されたデータを保護されたメモリから取り出す工程と、符号化されたデータをソースコンピューティングシステムとは別個であるターゲットコンピュータシステムで復号する工程とを含んでもよい。
【００１１】
本開示の一実施形態に係るソースコンピューティングシステムをクローニングするためのシステムは、ソースコンピューティングシステムにメモリ空間を提供するメモリに接続されたプロセッサと、メモリ空間から符号化されていないデータを取り出すのを支援するための通信インタフェースと、バックアップサーバ上で実行されているビットマーカベースの符号化プロセスを用いて符号化されていないデータを符号化するためのエンコーダと、符号化されたデータをバックアップサーバに接続され、かつ電源断から保護されている保護されたメモリに記憶するための記憶モジュールと、保護されたメモリから符号化されたデータを取り出すのを支援するための通信インタフェースと、符号化されたデータをソースコンピューティングシステムとは別個であるターゲットコンピュータシステムで復号するためのデコーダとを備えていてもよい。
【００１２】
上記は、本開示のいくつかの態様の理解を与えるための本開示の実施形態の簡単な概要である。この概要は本開示およびその様々な実施形態の広範囲な概略でもなければ包括的な概略でもない。これは本開示の重要もしくは重大な要素を特定するものでもなければ本開示の範囲を詳述するものでもなく、以下に示されているより詳細な説明の導入として簡略化された形態で本開示の選択された概念を提供するものである。理解されるように、本開示の他の実施形態は、上に示されているか以下に詳細に記載されている特徴のうちの１つ以上を単独または組み合わせで使用することを可能にするものである。
【００１３】
本発明の上記およびなおさらなる特徴および利点は、特に添付の図面と共に解釈される場合にその実施形態の以下の詳細な説明を考察すれば明らかになるであろう。図の中の同様の参照符号は同様の構成部品を示すように使用されている。
【図面の簡単な説明】
【００１４】
【図１】当該技術分野で知られているパーソナルコンピュータ（ＰＣ）系サーバの機能ブロック図を示す。
【図２】本開示の一実施形態に係るＰＣ系クローニングサーバの機能ブロック図を示す。
【図３Ａ】本開示の一実施形態に係るシステムを示す。
【図３Ｂ】本開示の一実施形態に係る別のシステムを示す。
【図３Ｃ】本開示の一実施形態に係る仮想サーバを有するシステムを示す。
【図４】本開示の一実施形態に係るメモリモデルを示す。
【図５Ａ】本開示の一実施形態に従ってデータを符号化するための方法を示す。
【図５Ｂ】本開示の一実施形態に従ってデータを復号するための方法を示す
【図６Ａ】本開示の一実施形態に従ってソースシステムのブリンクバックアップを行うためのプロセスを示す。
【図６Ｂ】本開示の一実施形態に従ってブリンクバックアップからシステムを復元するためのプロセスを示す。
【００１５】
本明細書で使用される見出しは単に構成のためのものであり、本明細書または特許請求の範囲を限定するために使用されるものではない。本出願全体を通して使用される「〜してもよい」という言葉は、必須的な意味（すなわち義務を意味する）ではなく許容的な意味（すなわち、「〜する可能性を有する」ことを意味する）で使用されている。同様に、「〜を含む」、「〜を含むこと」および「〜を含み」という用語は、「〜を含むがそれらに限定されない」ということを意味する。理解を容易にするために、各図に共通する同様の要素を示すために可能であれば同様の符号が使用されている。使用法に関する文脈が別の意を示していない限り、図の任意の部分は破線または点線を用いて示されている場合がある。
【発明を実施するための形態】
【００１６】
本開示を例示的な使用事例、方法の実施形態およびシステムの実施形態と共に以下に例示する。本開示は例えば、サーバ、ネットワーク機器および／または特殊計装を用いるシステムと共に使用するのによく適しているが、任意の特定の種類の電子システムまたはシステム要素の構成と共に使用することに限定されない。当業者であれば、開示されている技術は、コンピュータシステムを複製、クローニング、バックアップまたは復元することが望ましい任意の電子システムで使用できることを認識しているであろう。
【００１７】
本開示に係る実施形態について関連するハードウェアに関連させて説明する。但し、本開示を不必要に曖昧にするのを回避するために、以下の説明では、ブロック図の形態で示すことができたり、周知であったり、あるいはそれ以外の方法で要約されていたりする周知の構造、構成部品および装置は省略されている。なお、他の同等に有効な例も可能であり、かつそのような見込みがあるため、本明細書に示されている例は本発明の実施形態の範囲を限定するものとして解釈されるべきではない。
【００１８】
本明細書で使用される「モジュール」という用語は一般に、工程、プロセスまたは構成部品の論理的順序または組み合わせを指す。例えば、ソフトウェアモジュールは、コンピュータプログラム内の関連するルーチンまたはサブルーチンのセットを含んでもよい。あるいは、モジュールは実質的に内蔵型のハードウェア装置を含んでもよい。またモジュールは、どんなソフトウェアまたはハードウェアが実装されているかに関わらず一連の論理プロセスを含んでもよい。
【００１９】
また、機能を行うモジュールを「機能を行うように構成されているもの」と称する場合があり、例えばデータを受信するデータモジュールを「データを受信するように構成されているもの」と称する場合がある。機能を行うための構成としては、例えば、機能を行うコンピュータコードを提供または実行すること、モジュールの能力を制御、制限、可能または無効にするプロビジョニング可能な（ｐｒｏｖｉｓｉｏｎａｂｌｅ）構成パラメータを提供すること（例えば、フラッグを設定すること、許可を設定すること、決定点に使用される閾値レベルを設定することなど）、オプションを選択するため、またはオプションを可能／無効にするためのジャンパなどの物理的な接続を提供すること、物理的な通信リンクを取り付けること、無線通信リンクを可能にすること、別個の構成部品および／または非ＣＰＵ集積回路の使用などによりプロセッサを使用することなく機能を行うように設計されている電気回路を提供すること、機能を行う回路に電圧を印加すること（例えば、データを受信するための送受信機回路に電力を供給すること）などが挙げられる。
【００２０】
本特許出願の親出願（米国特許出願第１４／８０４，１７５号、「‘１７５出願」）は、高容量かつ高速転送速度のデジタル記憶装置のためのシステムを開示している。‘１７５出願および本明細書で使用されるビットマーカ技術については、一部継続出願の親出願である米国特許出願第１３／９０８，２３９号（「‘２３９出願」）に記載されている。コンピュータシステムを少なくとも部分的にそのソフトウェア資産のデジタル状態、ステータスおよびシステム状態によって特徴づけることができる場合、本開示に係る実施形態は、非常に迅速にデジタル状態をクローニングするためにこの親出願開示のシステムを使用することができる。それに応じてシステム復元を迅速に行うことができる。
【００２１】
‘１７５出願に開示されており、かつ本実施形態で使用される方法、構成部品およびシステムは、ハイパーバイザ、サーバプロセッサ、ハイパーバイザ内のカスタマイズされたオペレーティングシステムおよび／またはゲストオペレーティングシステム（ＯＳ）、ゲストＯＳに関連するデータまたはドライブを備える。本実施形態は、ネットワーク構成部品（例えば、イーサネット（登録商標）アダプタ）を介して実質的に任意のネットワークに組み込むことができる。本実施形態は、従来のＲＡＭ揮発性メモリおよび‘１７５出願に開示されているデータ損失から保護されている不揮発性ＤＩＭＭメモリ（ＮＶ−ＤＩＭＭ）をさらに備えてもよい。システムはＰＣＩｅ、周辺装置および構造化をさらに含んでもよい。
【００２２】
画像化および表現されるデータとしては、揮発性ＲＡＭに記憶される実質的に任意のデータ、例えば、データベース、アプリケーションプログラム、ログ、独自のデータなどが挙げられる。アプリケーションプログラムとしては、ファイアウォールサービス、ドキュメントサービスなどのオペレーティングシステムレベルで実行される各種サービス、スプレッドシート、ワードプロセッサ、画像編集、ＣＡＤ／ＣＡＭソフトウェア、経理ソフトウェアなどのユーザレベルで実行される各種ソフトウェア、およびウェブサーバ、メールサーバ、データベースサーバなどの各種サーバが挙げられる。
【００２３】
図１は、当該技術分野で知られている従来のコンピュータシステム１００の機能ブロック図を示す。システム１００は、例えばＩｎｔｅｌ（登録商標）互換アーキテクチャに基づくコンピュータシステムに使用することができる。製作技術が進歩するにつれて、チップセット、ターゲット顧客の価格対性能比、ターゲットコンピュータプラットフォーム（例えば、モバイル装置やサーバなど）などの因子に応じて、各種機能部品を異なる集積回路（ＩＣ）構成で作製することができるようになる。特定の機能を１つにまとめて単一のＩＣ、例えばＩＣ１１６などの各種構成にしてもよい。
【００２４】
システム１００はプロセッサ１０２を備え、これはＸｅｏｎ（登録商標）、Ｉｎｔｅｌ  Ｃｏｒｅ  ｉ７（登録商標）、ｉ５（登録商標）、ｉ３（登録商標）などの汎用プロセッサ、またはＡｔｈｌｏｎ６４（登録商標）などのアドバンスト・マイクロ・デバイセズ（登録商標）（ＡＭＤ）社製プロセッサなどであってもよい。他の実施形態では、プロセッサ１０２はグラフィック処理ユニット（ＧＰＵ）であってもよい。図１の機能ブロック図では、本明細書で使用されるプロセッサ１０２は、プロセッサの機能および／またはプロセッサの１つ以上のハードウェアコアを指してもよい。プロセッサ１０２はマルチＧＨｚ速度で動作する多重処理コアを含んでもよい。プロセッサ１０２はキャッシュメモリ１０３（例えば、Ｌ１またはＬ２キャッシュ）を含んでもよい。また、プロセッサ１０２は、オペレーティングシステム１０４を含むようにプログラムまたは構成されていてもよい。オペレーティングシステム１０４の例としては、各種バージョンのＷｉｎｄｏｗｓ（登録商標）、Ｍａｃ  ＯＳ（登録商標）、Ｌｉｎｕｘ（登録商標）および／または本開示の一実施形態に係るオペレーティングシステムまたはオペレーティングシステム拡張などが挙げられる。Ｗｉｎｄｏｗｓという登録商標はＭｉｃｒｏｓｏｆｔ社の商標である。Ｍａｃ  ＯＳという登録商標はＡｐｐｌｅ社の商標である。Ｌｉｎｕｘという登録商標は、世界基準でそのマークの所有者であるリーナス・トーバルズの排他的なライセンスの代理を務めるＬＭＩからのサブライセンスに従って使用される。オペレーティングシステム１０４は、アプリケーションプログラム（図１に示さず）の実行を含む従来の機能を行う。機能上、オペレーティングシステム１０４はプロセッサ１０２の一部として図示されているが、オペレーティングシステム１０４の一部は、図１に図示されていない不揮発性メモリ（例えば、ハードディスク、ソリッドステートドライブ（ＳＳＤ）、フラッシュドライブ、ＮＡＮＤメモリ、不揮発性ＲＡＭなど）内に物理的に存在してもよく、オペレーティングシステム１０４の少なくとも一部は、プロセッサ１０２による実行のために必要に応じてＲＡＭメモリに読み込まれてもよい。
【００２５】
プロセッサ１０２は、様々な機能部品とインタフェース接続するためにいくつかの内部および外部バスを使用してもよい。システム１００は、プロセッサ１０２をメモリコントローラ１０６に接続する通信バス１０５を備える。また、メモリコントローラ１０６をノースブリッジと称してもよい。通信バス１０５は、フロントサイドバス（ＦＳＢ）、不均一メモリアクセス（ＮＵＭＡ）バス、ＥＶ６バス、周辺装置相互接続（ＰＣＩ）バスなどのうちの１つとして実装されていてもよい。
【００２６】
システム１００は、プロセッサ１０２に接続された不揮発性メモリ１２２（例えばＣＭＯＳメモリ）をさらに備える。ＣＭＯＳメモリ１２２は、コンピュータ構成部品間の低レベル通信を管理するのを支援する基本入力／出力システム（ＢＩＯＳ）１２４を含んでもよく、パワーオンセルフテスト（ｐｏｗｅｒ−ｏｎ  ｓｅｌｆ−ｔｅｓｔ）を行うためのコンピュータコードの記憶装置を含んでもよい。従来どおりに、パワーオンセルフテストはインストールされているＲＡＭのデータの完全性のテストを含んでもよい。
【００２７】
メモリコントローラハブ１０６は典型的に、プロセッサ１０２と、通信バス１０７を介したデュアル・インライン・メモリ・モジュール（ＤＩＭＭ：ｄｕａｌ  ｉｎ−ｌｉｎｅ  ｍｅｍｏｒｙ  ｍｏｄｕｌｅ）スロット１０８ａ、１０８ｂにインストールされる外部ＲＡＭメモリなどの各種高速機能部品との通信、通信バス１０９を介したビデオグラフィックスカード１１０との通信を制御する。バス１０７および１０９は、周辺機器相互接続エクスプレス（ＰＣＩｅ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）またはアクセラレイティッド・グラフィックス・ポート（ＡＧＰ：Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）などの高速インタフェースであってもよい。メモリコントローラハブ１０６は、通信バス１１２を介したプロセッサ１０２とコントローラハブ１１４との通信も制御してもよい。コントローラハブ１１４は、サウスブリッジ、Ｉ／Ｏコントローラハブ（ＩＣＨ）、Ｆｕｓｉｏｎコントローラハブ（ＦＣＨ：Ｆｕｓｉｏｎ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ）、プラットフォームコントローラハブ（ＰＣＨ）などの他の名前でも知られている。次いで、コントローラハブ１１４は、ＵＳＢポート１３１、標準インタフェース（例えば、ＡＴＡ／ＳＡＴＡ、ｍＳＡＴＡ、ＳＡＳなど）を有する記憶媒体１３２、イーサネット送受信機１３３、オーディオポート１３４、他のＰＣＩ装置１３５などの、追加および／または低速Ｉ／Ｏ装置またはインタフェースとのさらなる通信を管理する。
【００２８】
システム１００（図示せず）のいくつかの構成では、プロセッサ１０２は、メモリコントローラ１０６を迂回してダイレクト・メディア・インタフェース（ＤＭＩ：Ｄｉｒｅｃｔ  Ｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）を介してコントローラハブ１１４と直接通信するように設計されている。また、そのような構成によりプロセッサ１０２およびメモリコントローラ１０６の機能を単一のＩＣ１１６の中に組み込んでもよい。そのような構成では、コントローラハブ１１４は典型的にはプラットフォームコントローラハブ（ＰＣＨ）である。
【００２９】
ＤＩＭＭスロット１０８ａ、１０８ｂにインストールされるＲＡＭメモリを構成するメモリチップは非常に高い最大アクセス速度（例えば、約５７ギガバイト／秒）を有することがあるが、通信バス１０９は通常そのような高速度をサポートすることはできない。例えば、１６レーンスロット内のＰＣＩｅ４．０の速度は３１．５０８ギガバイト／秒に制限されている。ＡＧＰはＰＣＩｅよりもさらに低速である。従って、通信バス１０７はより高速のメモリアクセスを妨げるボトルネックである。
【００３０】
メモリアクセスのボトルネックは従来技術の欠点のうちの１つである。従来のコンピュータの上記他の欠点としては、ＲＡＭメモリの大きさ（典型的には数ギガバイトのオーダ）と従来のハードディスクの記憶容量（典型的には数テラバイトのオーダ）との間の記憶容量の不一致、および従来のハードディスクの記憶容量に対して比較的小さいＲＡＭメモリの記憶容量が挙げられる。従来技術の別の欠点はＲＡＭメモリの揮発性である。
【００３１】
本開示に係る実施形態はＲＡＭが今日有する密度問題を解決する。本開示に係る実施形態は、記憶装置のための新規なハードウェアインタフェースおよびハードウェアインタフェースのための新規なドライバインタフェースを提供することによって従来技術のこれらの欠点に対処する。
【００３２】
ＣＰＵを別とすれば、ＲＡＭは×８６および×６４コンピュータシステムにおいて最も高速の要素であるため、本実施形態は、今日の高速ＲＡＭ性能を高い記憶装置密度を達成する新しい方法に適合させることを可能にする。この効果が適用されると、コストの枠組みが完全に変わり、低コストのメモリモジュールが高密度高コストのメモリモジュールの必要性にとって代わることが可能になる。
【００３３】
残っている問題は標準メモリモジュールの揮発性である。全てのＲＡＭは揮発性であるため長期記憶媒体には向いていない。本実施形態は、標準ＤＩＭＭ装置で認められる揮発性問題を回避する不揮発性ＲＡＭ（ＮＶＲＡＭ）技術と類似しているが異なるものである。
【００３４】
本開示に係る実施形態は、Ｉｎｔｅｌ（登録商標）またはＡＭＤ（登録商標）ＣＰＵプロセッサを搭載したベーシックかつ安価な×６４マザーボードを使用する。このマザーボードは、不揮発性メモリアウェア（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  ａｗａｒｅ）にするのに必要なインテリジェンスをそれに与える修正されたＣＭＥおよびＢＩＯＳを有する。また、このマザーボードは各メモリモジュールに、環境上安全な低負荷低速放出コンデンサを充電するために使用することができるＤＣ供給電圧（例えば、１．２ｖ、１．３５ｖ、１．５ｖなど）を供給する。この設計によりメモリモジュール内のデータ持続性を維持するような停止状態（例えば、電力喪失または安全な停止）が可能になり、このようにしてメモリモジュールは実行可能な長期記憶装置になる。
【００３５】
図２は、本開示の一実施形態に係るコンピュータシステム２００の機能ブロック図を示す。コンピュータシステム２００を本明細書ではブリンクサーバと称することもある。図１において既に説明した機能部品には図１に示されている同じ参照符号が図２において割り当てられている。システム２００はメモリインタフェース２１８を備え、メモリインタフェース２１８はＭｏｌｅｘ（登録商標）コネクタなどのコネクタ２０８を用いてＤＩＭＭスロット（例えば、ＤＩＭＭスロット１０８ｂ）に物理的に接続されていてもよい。メモリインタフェース２１８は、通信バス１０７に従来のプロトコルを使用することによってＤＩＭＭスロット１０８ｂを介してプロセッサ２０２と通信する。メモリインタフェース２１８はＲＡＭ記憶装置２２０に物理的かつ通信可能に接続されている。メモリインタフェース２１８の機能としては、ＲＡＭ記憶装置２２０を通信バス１０７に通信可能に接続すること、ＲＡＭ記憶装置２２０に関する健康状態のような特定のイベント、他のハードウェアイベントを監視すること、検出された信号またはハードウェアイベントに基づいて特定のアクションをとることなどが挙げられる。メモリインタフェース２１８の機能としては、メモリアドレスの解決、メモリサイズの報告、Ｉ／Ｏ制御、総電源サイクル、１時間のうちの実行時間の記録および報告、ＤＩＭＭの数の報告、電気二重層コンデンサ（ｃａｐ）の現在の電圧、作動可能なバス、最後の復元の成功または失敗、作動可能な装置、ＮＡＮＤ領域のフラッシュステータス、接続されているｃａｐ、ｃａｐ充電ステータス、存在する有効な画像、ＤＩＭＭ初期化（ｉｎｉｔ）の実行、レジスタの読み出しなどのステータスの報告などの、単純な処理およびハウスキーピング機能も挙げられる。ＮＡＮＤは、データを保持するために電力を必要としない不揮発性ＩＣ系記憶装置技術の１種として知られている場合もある。
【００３６】
システム２００は、プロセッサ２０２に接続された不揮発性メモリ２２２（例えばＣＭＯＳメモリ）をさらに備える。ＣＭＯＳメモリ２２２は、コンピュータ構成部品間の低レベル通信を維持するのを支援する基本入力／出力システム（ＢＩＯＳ）２２４を含んでもよく、かつパワーオンセルフテストを実施するためのコンピュータコードの記憶装置を含んでもよい。従来どおりに、パワーオンセルフテストはインストールされているＲＡＭのデータの完全性のテストを含んでもよい。本開示に係る実施形態は、例えばパワーオンセルフテストが所定のメモリモジュールに記憶されているデータの性質と適合しない場合にそのテストが少なくともいくつかの所定のメモリモジュールのテストをスキップすることができるように修正された（ＢＩＯＳ１２４のパワーオンセルフテストと比較した場合）パワーオンセルフテストを含んでもよい。
【００３７】
また本開示に係る実施形態は、エネルギー源２１９をＲＡＭ記憶装置２２０と接続することによって公知の技術のＲＡＭ揮発性の欠点に対処する。エネルギー源２１９がメモリインタフェース２１８と共に組み込まれていてもよい。エネルギー源２１９は、ＲＡＭ記憶装置２２０への外部電力供給が失われた場合に（例えば、コンピュータシステム２００全体に影響を与えるＡＣ電源の故障、モバイルシステム２００に電力を供給する電池の除去、マザーボードの故障などによる）、エネルギー源２１９がＲＡＭ記憶装置２２０に記憶されているデータの完全性を維持するのに十分な電力を供給することができるようなバックアップ電源である。
【００３８】
本開示に係る実施形態は、従来の揮発性メモリと不揮発性ＲＡＭモジュールメモリ（ＮＶ−ＤＩＭＭ）との組み合わせとして編成されたランダムアクセスメモリ（ＲＡＭ）を備える。ＮＶ−ＤＩＭＭメモリは、例えばＲＡＭ記憶装置２２０として親米国特許出願第１４／８０４，１７５号（「‘１７５出願」）に開示されている。システムにインストールされている全体のうちの各種メモリの割合はシステムごとに異なってもよい。例えば、総メモリサイズはインストール時に８ＧＢ〜１６０ＧＢまたはそれ以上の範囲になるように選択され、バンクのうちの２つは従来のＲＡＭメモリとして構成され、６つのバンクはＮＶ−ＤＩＭＭとして構成された８つのバンクで編成されてもいてよい。
【００３９】
本開示に係る実施形態は２つのモードで動作するシステムを提供することができる。第１のモードでは、ソースシステム（本システムまたは外部システムのいずれか）の従来の揮発性メモリの内容全体またはアドレス範囲は、‘１７５出願に開示されている方法およびＮＶ−ＤＩＭＭメモリに記憶されている表現の使用によって画像化および表現されるように選択してもよい。この画像または表現は参照画像として知られている場合もある。本実施形態はＩＥＥＥ８０２．３ｂａ−２０１０標準規格に準拠する１００ギガビットのイーサネットなどの高速通信リンクの使用によって外部システムに通信可能に接続されていてもよい。
【００４０】
本開示の一実施形態に係る第２のモードでは、ソースシステムの従来の揮発性メモリアドレス範囲全体のサブセット、例えば画像化および表現されるシステム上で実行されている処理によって能動的に利用されている従来の揮発性メモリの一部のみが画像化および表現されるように選択されてもよい。この実施形態の別の変形形態では、従来の揮発性メモリアドレス範囲全体の固定された範囲のサブセットが画像化および表現されてもよい。固定された範囲のサブセットは必ずしも隣接している必要はない。この実施形態の別の変形形態では、画像化および表現されるアドレス範囲のサブセットは仮想サーバを表してもよい。例えば、単一の物理サーバ（例えば企業によって使用される）が２つ以上の仮想サーバ（例えば企業のいくつかの部署に対してそれぞれ１つ）をホストしている場合、本実施形態は、仮想サーバの全てではないがいくつかを画像化および表現していてもよい。そのような能力は、例えば異なるサーバによって実施される機能が異なるバックアップを必要とする場合（例えば、経理部のために１つの仮想サーバ、顧客サポート部のために１つの仮想サーバ）に有用であり得る。
【００４１】
いくつかの実施形態では、ＮＶ−ＤＩＭＭは、例えば、経時的な単一のシステム、または複数の外部システムまたはそれらの組み合わせを表現する複数の参照画像を記憶するためのリポジトリとして機能してもよい。複数の参照画像のＮＶ−ＤＩＭＭリポジトリは、災害復旧を支援するために使用されてもよく、例えば複数の企業のために参照画像を安全に記憶する現場外の位置にあってもよい。
【００４２】
データが画像化され、表現され、かつＮＶ−ＤＩＭＭメモリに記憶された後、本開示に係る実施形態は「インフラストラクチャ・イン・ア・ボックス」（ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ｉｎ  ａ  ｂｏｘ）」能力を提供してもよい。例えば、画像化および表現された全てのデータベース、アプリケーション、ログ、独自のデータなどが元のハードウェア環境を模倣するターゲットハードウェア環境で複製されると、画像化および表現されたシステムは、画像化および表現された時点の元のシステムのシステム状態と共に複製することができる。
【００４３】
複製されたコピーは、高速な復元を用いるバックアップ目的のため、または急な通知で拡張容量を提供できるようにするために有用であり得る。復元が高速であるとみなされるか否かは使用現場または内容によって変わる可能性がある。例えば、ＣＡＤ／ＣＡＭシステムにとって高速な復元は、金融市場取引を支援しているコンピュータシステムにとっては高速な復元とみなされないかもしれない。要求に応じて映画の動画配信を行うコンピュータシステムにとって高速な復元は、スーパーボウルのようなライブイベントの動画配信を行うコンピュータシステムにとっては高速な復元とみなされないかもしれない。同様に、どの通知が急な通知であるとみなされるかは、使用現場または内容によって変わる可能性があり、金融市場取引を支援するコンピュータシステムの場合には数秒以下ほどの短さであるかもしれない。いくつかの実施形態では、急な通知は約５秒未満の通知である。いくつかの実施形態では、高速な復元は、復元の必要性の検出または復元を行うためのコマンドの受信から約１０分以内に完了させることができる。他の実施形態では、高速な復元は約３分以内に完了させることができる。他の実施形態では、高速な復元は１０秒以内に完了させることができる。
【００４４】
従来のバックアップは比較的稀に行われるものであり（例えば、１日１回、１週間に１回など）、従来のバックアッププロセス中は、システム状態を停止させなければならなかったり、システム状態に対する変更を少なくとも最小限に抑えなければならなかったりする（例えば、ユーザが自身の作業を保存したり、アプリケーションを終了させたりすることなどによって行われるが、これらは全て中断を引き起こす）。対照的に、より迅速に複製されたコピーを作成することができる場合、バックアップをより迅速に、よりタイムリーに、かつより頻繁に作成し、復元が必要な場合にシステム状態のより最近の（すなわち、あまり古くない）コピーを得ることができる。頻繁なバックアップはシステム状態のスナップショットに酷似し始める。頻繁なバックアップを本明細書では「ブリンク」バックアップと称する場合がある。
【００４５】
以下で図３Ｃに関してより詳細に説明するように、ブリンクバックアップ中はシステム状態に対する変更を少なくすることができる。ブリンクバックアップの頻度はユーザまたはシステム管理者によって構成可能であってもよい。
【００４６】
写真になぞらえると、従来のバックアップは下準備（例えば、写真を撮影するための他の作業の中断、および演出、すなわち特殊なポーズ、照明、撮影備品など）を必要とするフォーマルな休日の家族写真のようなものである。対照的に、本実施形態はどちらかと言えば別個のブリンクバックアップを表わすビデオの各個々のフレームを有する家族のビデオ記録のようなものである（但し、ビデオ記録と比較して比較的遅いフレームレートである）。ブリンクバックアップは必ずしも過度な下準備を必要とすることなく迅速に行われ、従ってブリンクされているシステムの動作を中断することなく頻繁に行うことができる。
【００４７】
ブリンクバックアップは、最初にバックアップされるメモリリソースを特定することによって続行することができる。例えば、特定用途向けサーバをバックアップすると想定する。例えば、バックアップされる特定用途向けサーバは経理機能に特化した仮想サーバであってもよく、その仮想サーバは営業部や技術部などの他の機能にそれぞれ特化した他の仮想サーバと共に物理サーバ上でホストされている。バックアップされるサーバは通常、それ自体の上で実行されているアプリケーションプログラムのリストをそれらのそれぞれのシステムリソース使用状況と共に維持している。本実施形態は、バックアップされる特定用途向けサーバ上で現在実行されている全てのアプリケーションプログラムに割り当てられているかそれらによって使用されるＲＡＭメモリ範囲、不揮発性メモリ（例えば、ハードディスク、ソリッドステートドライブ（ＳＳＤ）、フラッシュドライブ、ＮＡＮＤメモリ、不揮発性ＲＡＭなどの記憶媒体）に記憶されているプログラムコードのアドレス範囲、オペレーティングシステム構成などによって示される、特定用途向けサーバによって使用される全てのシステムリソースを特定することができる。本実施形態は、収集を行っている間に特定用途向けサーバで実行されている他のアプリケーションプログラムに対する状態もしくはデータ変更を最小限に抑えるために、この収集を最優先データ収集タスクとして行うことができる。データ収集タスクはそれ自体のメモリ使用状況を報告する必要はない。
【００４８】
次に、本実施形態は、特定タスクによって示されるメモリ内容を取り出することができる。次いで本実施形態は、以下でより詳細に説明するように、図５Ａのプロセス５００に従ってメモリ内容を符号化および記憶してもよい。
【００４９】
いくつかの実施形態では、複製されるシステムの外部にあるソースからの要求によって複製されたコピーを生成してもよい（例えば「プル」基準）。他の実施形態では、複製されるシステムによって決定された時間に複製されたコピーを生成してもよい（例えば「プッシュ」基準）。プッシュ基準はスケジュールされたバックアップと同様である。
【００５０】
本開示に係る実施形態は、急な通知でコンピュータハードウェアアーキテクチャを別の目的で使用する能力も提供する。例えば、ウェブホスティング会社がいくつかの異なる目的のウェブサイト、例えば、平均２００個のサーバを使用するＡｍａｚｏｎ（商標）のような電子商取引ウェブサイトおよび平均１００個のサーバを使用するＥ−Ｔｒａｄｅ（商標）のようなオンライントレーディングウェブサイトなどをホストすると想定する。さらに、それらが標準的な構成部品から構築された同じまたは同様のコンピュータハードウェアアーキテクチャを使用していると想定する。それらのソフトウェア構成部品は異なってもよく、例えば、電子商取引ウェブサイトはＬｉｎｕｘ（商標）のようなオープンソースオペレーティングシステムをベースにしていてもよく、オンライントレーディングウェブサイトはＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（商標）のような商業的オペレーティングシステムをベースにしていてもよい。利用状況は時間と共に変わる場合があり、従って、あるシステムが多く利用されている時に他のシステムは少なく利用されていることがあり、その逆もまた同様である。そのような状況では、本実施形態はいくつかのサーバをあるウェブサイトから別のウェブサイトに迅速に変えて別の目的で使用することができる。例えば、平日の真っただ中に電子商取引ウェブサイトは混んでいないがオンライントレーディングウェブサイトが混んでいる場合には、いくつかの数のサーバ（例えば４０個のサーバ）を電子商取引からオンライントレーディングに変えて別の目的で使用することができる。逆に、平日の夕方に電子商取引ウェブサイトは混んでいるがオンライントレーディングウェブサイトが混んでいない場合には、いくつかの数のサーバ（例えば５０個のサーバ）をオンライントレーディングウェブサイトから電子商取引ウェブサイトに変えて別の目的で使用することができる。別の目的で使用することをパーソナリティスワッピング（ｐｅｒｓｏｎａｌｉｔｙ  ｓｗａｐｐｉｎｇ）と称してもよい。
【００５１】
目的「Ａ」から目的「Ｂ」に変えて別の目的で使用されるサーバの場合、別の目的で使用するためには、最初に現時点では目的「Ｂ」に特化しているサーバのシステム状態をコピーまたはクローニングすることが必要になり得る。そのシステム状態としては、現在使用されている全てのメモリ、ならびに現在実行されているオペレーティングシステムおよび全てのソフトウェアなどが挙げられる。任意に、現在目的「Ａ」に特化しているが別の目的で使用される予定のサーバの現在のシステム状態は後で復元するために保存することができる。次に、目的「Ｂ」からクローニングされたシステム状態は、以前は目的「Ａ」に特化していたサーバ上で復元され、それによってそのサーバは実質的に瞬時に目的「Ｂ」に変わって別の目的で使用される。
【００５２】
別の目的で使用する場合、目的「Ａ」および目的「Ｂ」は、同じ企業または異なる企業のいずれか一方のための実質的に任意のサーバを用いる用途であってもよい。例えば、主要な玩具小売業者などの１つの企業の場合、目的「Ａ」はクリスマスの前に最も需要がある販売システムであってもよく、目的「Ｂ」は事業年度の終了時期に最も需要のある経理システムであってもよい。
【００５３】
同様に、本開示に係る実施形態は、特定の目的のために予備状態からアクティブ状態に変えてサーバを別の目的で使用することによってシステム容量を増加させてもよい。予備状態は、例えばハードウェアは搭載されているが使用可能なソフトウェアまたはデータがインストールされていないブランクシステムであってもよい。
【００５４】
本開示に係る実施形態はシステム画像の組み合わせを容易にすることができる。例えば、基本システム画像は、オペレーティングシステムおよび／またはオペレーティングシステムのための特定のコンピュータインフラ、例えばウェブサーバおよびメールサーバなどのカスタマイズされていないサーバを表現してもよい。次いで、基本システム画像は、カスタム画像と組み合わせてもよく（すなわち、１つにまとめてもよく）、例えばユーザアカウント、履歴、お気に入り、マクロおよび専用アプリケーションプログラムなどのカスタマイズされていないサーバのシステム特有のカスタマイズを表現してもよい。逆に、システムブリンクは、基本システム画像とは別々にカスタマイズをブリンクできるようにし、それによりカスタマイズを異なるスケジュールで、あるいは基本システム画像のバックアップと比較して短い待ち時間でバックアップ可能にしてもよい。
【００５５】
図３Ａは本開示の一実施形態に係るシステム３００を示す。システム３００を使用して高速クローニングを行うことができる。システム３００は図示のように、企業Ａ３０１−Ａ、企業Ｂ３０１−Ｂおよび企業Ｃ３０１−Ｃを含む。各企業は、会社または組織全体、例えば、ゲーミングネットワーク、オンライン小売業、オンライン仲介業者、証券取引などを表してもよい。システム３００は、図３Ａに示されているものよりも少ないまたは多い企業ネットワークを含んでもよい。
【００５６】
各企業３０１−ｎは、１つ以上のサーバ、例えば、企業Ａ３０１−Ａのためのサーバ３０３−Ａ−１〜３０３−Ａ−ｎ、企業Ｂ３０１−Ｂのためのサーバ３０３−Ｂ−１〜３０３−Ｂ−ｎ、および企業Ｃ３０１−Ｃのためのサーバ３０３−Ｃ−１〜３０３−Ｃ−ｎを含んでもよい。企業内の個々のサーバは異なる機能のために企業によって利用されることがある。例えば、企業Ａ３０１−Ａがオンライン小売業である場合、サーバ３０３−Ａ−１はウェブサーバであってもよく、サーバ３０３−Ａ−２はデータベースおよび在庫管理に特化していてもよく、サーバ３０３−Ａ−３は請求書発行および会計に特化していてもよく、それ以外も同様である。
【００５７】
各企業３０１−ｎは通信ネットワーク３０８を介してクローニングサーバ３０５に通信可能に接続されていてもよい。クローニングサーバ３０５は、例えば図２に示されているコンピュータシステム２００であってもよい。動作中、クローニングサーバ３０５は外部サーバ３０３−ｍ−ｎで本明細書に記載されているプロセスの実施形態を行ってもよい。例えば、クローニングサーバ３０５はサーバ３０３−Ｂ−２でサーバ３０３−Ｂ−１を複製してもよく、あるいはクローニングサーバ３０５はサーバ３０３−Ｃ−ｌのブリンクバックアップを作成してもよく、それ以外も同様である。
【００５８】
いくつかの実施形態では、任意の別個のブリンクリポジトリ３０６は、１つ以上のサーバ３０３からのブリンクバックアップを記憶してもよい。別個のブリンクリポジトリ３０６を使用することなく、ブリンクバックアップをクローニングサーバ３０５のＮＶ−ＤＩＭＭメモリ内に記憶してもよい。
【００５９】
図３Ｂは本開示の一実施形態に係るシステム３５０を示す。システム３５０を使用して、ネットワークを介した外部アクセスを必要とすることなくアプリケーションサーバ３５１の高速クローニングを行うことができる。システム３５０は、通常の機能、例えばウェブサーバまたはデータベースサーバまたは経理サーバなどであってもよいアプリケーションサーバ３５１を備える。アプリケーションサーバ３５１は、その通常の機能におけるアプリケーションサーバ３５１の動作をサポートするために、従来の揮発性ＲＡＭメモリ３５３および記憶媒体３５４に接続されたプロセッサ３５２を備えていてもよい。通信インタフェース３５５は、アプリケーションサーバ３５１と外部通信リンクとの通信接続性（例えば、ＷＡＮまたはＬＡＮへのイーサネットインタフェース）を提供してもよい。
【００６０】
但し、アプリケーションサーバ３５１は、従来の揮発性ＲＡＭメモリ３０７およびＮＶ−ＤＩＭＭ３０９によってサポートされるクローニングサーバ３５５の機能をその中にさらに組み込んでいてもよい。クローニングサーバ３５５は、図２に示されているように例えばコンピュータシステム２００であってもよい。動作中、クローニングサーバ３５５はアプリケーションサーバ３５１上で本明細書に記載されているプロセスの実施形態を行ってもよい。システム３００と比較したシステム３５０の利点は、クローニングサーバ３５５がアプリケーションサーバ３５１内に組み込まれているため、システム３５０が通信ネットワーク３０８などの通信ネットワークへのアクセスを必ずしも必要としないことである。組み込みは、例えばアプリケーションサーバ３５１およびクローニングサーバ３５５の両方のためのコードモジュールを実行するアプリケーションサーバ３５１のプロセッサ３５２によって達成されてもよい。
【００６１】
あるいは、アプリケーションサーバ３５１は、開始点としてコンピュータシステム２００を用いて実行され、次いで、アプリケーションサーバ３５１の機能を提供するオペレーティングシステム２０４およびさらなるソフトウェアモジュールによって実行されてもよい。
【００６２】
図３Ｃは本開示の一実施形態に係るシステム３７０を示す。システム３７０は物理サーバ３７１を備え、次いで物理サーバ３７１は、クローニングサーバ３７５およびアプリケーションサーバ３５１の１つ以上の構成部品（同様の参照符号によって示されている）と、１つ以上の仮想サーバ３７８ａ．．．３７８ｎ（まとめて仮想サーバ３７８）とを含んでもよい。仮想サーバ３７８のうちの個々であるが特定のものでない１つを仮想サーバ３７８と称してもよい。プロセッサ３５２で動作するハイパーバイザまたは他の仮想マシーンモニタは、仮想サーバ３７８の外観を遠隔ユーザ、例えば通信インタフェース３５５を介して接続された遠隔ユーザに提供するために、物理サーバ３７１およびそのリソースを管理してもよい。仮想サーバ３７８は、例えばそれぞれの仮想サーバ３７８に接続されているユーザ（例えば遠隔ユーザ）の利益のため、および仮想サーバ３７８上でのアプリケーションプログラムの実行をサポートするためにそれぞれのゲストオペレーティングシステム（「ＧＯＳ」）を提供してもよい。仮想サーバ３７８をサポートするためのメモリ記憶装置は、ＲＡＭ３５３や記憶媒体３５４から割り当てられ、かつ／または外部メモリ装置（図３Ｃには図示せず）によって提供されてもよい。
【００６３】
いくつかの実施形態では、ブリンクバックアップが行われると、仮想サーバ３７８、そのそれぞれのＧＯＳ、メモリリソースおよびＧＯＳ上で実行されている任意のアプリケーションプログラムは、ブリンクバックアップを行うのに要する時間にわたって一時的にロックもしくは保留状態に入ってもよい。ロックもしくは保留状態は、ブリンクバックアップが行われる間のシステム状態またはシステム構成に対する変更を少なくする。ブリンクバックアップの終了時に、ロックもしくは保留状態に入った要素は自動的にそれらの通常状態に戻ることができる。
【００６４】
いくつかの実施形態では、仮想サーバ３７８、そのそれぞれのＧＯＳ、メモリリソースおよびＧＯＳ上で実行されている任意のアプリケーションプログラムは、ブリンクバックアップ中に一時的に静止状態に入ってもよい。静止状態であっても取引を実行し続けることができるが、結果は記憶媒体に委ねるのではなく常駐メモリに保持することができる。対照的に、ハイバネーションモードにあるサーバは、メモリ画像を記憶媒体に保存してハイバネーションモードの間に取引を実行することなくシャットダウンすることができる。ブリンクバックアップの終了時に、静止状態に入った要素は自動的にそれらの通常状態に戻ることができる。
【００６５】
いくつかの実施形態では、ブリンクバックアップは、通信インタフェース３５５を介してアクセス可能なブリンクリポジトリ３０６と同様に外部ブリンクリポジトリに記憶されてもよい。
【００６６】
図４は簡略化された平らな物理的アドレス空間モデルを示す。物理的なメモリの総量は図４に示されている量とは異なってもよい。本開示に係る実施形態は、本明細書に記載されているプロセスを用いてアドレス空間４０３全体の高速クローンを作成することができる。他の実施形態は、本明細書に記載されているプロセスを用いて簡略化された平らな物理的アドレス空間モデルの１つ以上の部分４０１ａ、４０１ｂの高速クローンを作成することができる。
【００６７】
図５Ａは本開示の一実施形態に係る符号化プロセス５００を示す。プロセス５００は、オペレーティングシステム２０４およびデータ適応モジュール２１１によって実行されてもよい。
【００６８】
プロセス５００は工程５０１で開始し、この工程では、記憶される生データのブロックを、この生データを記憶することを目的としたアプリケーションプログラムから受信する。この生データは、ファイル、ストリーミングメディア、固定サイズもしくは可変サイズのデータのブロックなどの形態であってもよい。
【００６９】
次に、プロセス５００は工程５０３に移行し、この工程では、工程５０１で受信された生データの一部を生データの候補ベクトルにマッピングするか一致させてもよい。生データを生データのより長い候補ベクトルに一致させることにより、生データを生データのより短い候補ベクトルに一致させた場合よりも大きなデータ記憶効率が得られるはずである。候補ベクトルは、（マーカ、ベクトル）対の表として従来のメモリに記憶されていてもよい。その目標は、少なくとも１つのベクトルによって生データの各ビットまたはバイトを表現することである。０×００または０×ＦＦなどの特定の生データのバイトをデフォルト値とみなしてもよく、デフォルト値に等しい任意の生データのバイトの場合、ベクトルによってデフォルト値に等しいバイトを表現することは任意である。
【００７０】
工程５０３では、生データの候補ベクトルにマッピングされる生データの一部の長さに対して最小閾値長さ限界が存在することがある。例えば、生データのベクトルに対するポインタは生データ自体よりも長くなるため、単一のバイトのみからなる生データは短すぎて生データの候補ベクトルに一致させることを試みることができない。長さが最小閾値を超える生データの場合、生データが生データの既存の候補ベクトルに一致しない場合に、生データを生データの新しいベクトルとして追加してもよい。
【００７１】
次に、プロセス５００は工程５０５に移行し、この工程では、工程５０３で決定されたベクトルを（マーカ、ベクトル）対の表からのそれぞれのビットマーカに一致させてもよい。ビットマーカは関連するベクトルを参照するための近道である。
【００７２】
次に、プロセス５００は工程５０７に移行し、この工程では、（マーカ、ベクトル）対の表からのビットマーカをＲＡＭ記憶装置２２０などのメモリに記憶する。
【００７３】
図５Ｂは本開示の一実施形態に係る復号プロセス５５０を示す。プロセス５５０はオペレーティングシステム２０４およびデータ適応モジュール２１１によって実行されてもよい。
【００７４】
プロセス５５０は工程５５１で開始し、この工程では、復号される符号化されたデータのブロックをＲＡＭ記憶装置２２０などのメモリから読み込む。当業者に公知であるように、アドレスは仮想アドレス調整方法および表によって管理されていてもよい。
【００７５】
次に、プロセス５５０は工程５５３に移行し、この工程では、ビットマーカを符号化されたデータから抽出する。
【００７６】
次に、プロセス５５０は工程５５５に移行し、この工程では、工程５５３から抽出されたビットマーカを（マーカ、ベクトル）対の表の中で検索する。
【００７７】
次に、プロセス５５０は工程５５７に移行し、この工程では、生データベクトルを工程５５３から抽出されたビットマーカに対応する（マーカ、ベクトル）対の表の入力項目から抽出する。
【００７８】
次に、プロセス５５０は工程５５９に移行し、この工程では、工程５５７から抽出された生データベクトルを１つにまとめて再構築された復号されたデータを形成する。１つにまとめられた生データベクトルが再構築された復号されたデータの期待されるアドレス範囲全体に含まれる全てのアドレスを包含しない場合には、包含されないアドレスは、復号されたデータにおけるデフォルト値、例えば、０×００または０×ＦＦバイトを取るものとみなしてもよい。
【００７９】
図６Ａは本開示の一実施形態に係るソースシステムのブリンクバックアップを行うためのプロセス６００を示す。プロセス６００はオペレーティングシステム２０４およびデータ適応モジュール２１１によって実行されてもよい。
【００８０】
プロセス６００は工程６０１で開始し、この工程では、ソースシステムからバックアップされるメモリリソースを特定する。例えば、メモリリソースは、特定の機能またはグループ（例えば経理機能）に特化したサーバまたは仮想サーバ全体に対応してもよく、あるいは別の同様のコンピュータシステムに対応してもよい。より詳細には、メモリリソースは、ソースシステム（すなわち、バックアップされるシステム）上で実行されている１つ以上のプロセスに対応してもよい。仮想サーバは営業部や技術部などの他の機能にそれぞれに特化した他の仮想サーバと共に物理的サーバ上でホストされていてもよい。
【００８１】
次に、プロセス６００は工程６０３に移行し、この工程では、工程６０１で特定されたメモリ内容をソースシステム（すなわち、バックアップされるシステム）から取り出す。次いで、プロセス６００の制御はさらなる処理のために符号化プロセス５００に移動してもよい。工程６０１で特定されたメモリ内容はプロセス５００によって符号化される生データ入力のブロックとして使用してもよい。符号化プロセス５００に移動する前に、その生データのブロックを実質的に任意の好都合な方法で分割してもよい。例えば、生データのブロックは実質的に均一なブロックサイズ（例えば１ブロックの生データ当たり１メガバイト）を有してもよく、あるいは生データのブロックはバックアップされるサーバのそれぞれのプロセスによって使用されるメモリ空間などに対応してもよい。いくつかの実施形態では、‘１７５出願に記載されているマーカ表を２回以上のブリンクバックアップによって参照してもよい。
【００８２】
図６Ｂは、本開示の一実施形態に係るブリンクバックアップからシステムを復元するためのプロセス６５０を示す。ブリンクバックアップは、ブリンクバックアップが作成された際にバックアップのターゲットであったという理由からターゲットシステムと称してもよい。プロセス６５０はオペレーティングシステム２０４およびデータ適応モジュール２１１によって実行されてもよい。
【００８３】
プロセス６５０は工程６５１で開始し、この工程では、本実施形態は復元されるシステムを特定する。
【００８４】
次に、プロセス６５０は工程６５３に移行し、この工程では、復元されるサーバに対応する符号化された内容をＮＶ−ＤＩＭＭ３０９などの符号化されたメモリから取り出す。
【００８５】
次に、プロセス６５０は工程６５５に移行し、この工程では、工程６５３から取り出された符号化された内容を復号するために、復号プロセス５５０などの復号プロセスを呼び出す。
【００８６】
次に、プロセス６５０は工程６５７に移行し、この工程では、復号されたデータをターゲットシステムのメモリ空間に保存する。復号されたデータを、そのデータがソースシステム上で占有していた同じメモリアドレスに記憶してもよい。
【００８７】
上記は本発明の実施形態を対象としているが、その基本的な範囲から逸脱することなく本発明の他の実施形態およびさらなる実施形態を考案することができる。本明細書に記載されている様々な実施形態は、本明細書に含まれている範囲から逸脱することなく記載されている任意の他の実施形態と組み合わせて使用できることが理解されるであろう。さらに、上記説明は包括的なものでもなければ本発明を開示されている正確な形態に限定するものではない。修正および変形は、上記教示を踏まえて可能になるか、あるいは本発明の実施により得ることができる。特定の例示的な実施形態は、リスト項目が本実施形態の代表であり、かつそのリストは、さらなる実施形態を排除する限定的リストを表すものではないことを示すための言い回しを含む非限定的リストの使用によって特定することができる。そのような言い回しとしては、「例」、「他」、「など」、「例えば」、「その他」、「および同様のもの」他、および周囲の文脈から明らかになる他の言い回しが挙げられる。
【００８８】
本出願の説明に使用されている要素、行為または命令は、そのようなものとして明示的に記載されていない限り、本発明にとって重要もしくは必須なものとして解釈されるべきではない。また、本明細書で使用される「ある」という冠詞は１つ以上の項目を含むことが意図されている。１つの項目のみが意図される場合、「１つの」という用語または同様の言葉が使用される。さらに、本明細書で使用される複数の項目および／または項目の複数のカテゴリーの列挙の後に続く「〜のいずれか」という用語は、個々に、あるいは他の項目および／または項目の他のカテゴリーと共に、項目および／または項目のカテゴリー「のいずれか」、「の任意の組み合わせ」、「の任意の複数」および／または「の複数の任意の組み合わせ」を含むことが意図されている。
【００８９】
さらに、特許請求の範囲は、そのような趣旨で述べられていない限り、記載されている順序または要素に限定されるものとして解釈されるべきではない。また、任意の請求項における「手段」という用語の使用は、米国特許法第１１２条第６項を行使するものであり、「手段」という用語を含まない任意の請求項はそれを行使するものではない。
【図１】
2019514146.tif 000003
【図２】
2019514146.tif 000004
【図３Ａ】
2019514146.tif 000005
【図３Ｂ】
2019514146.tif 000006
【図３Ｃ】
2019514146.tif 000007
【図４】
2019514146.tif 000008
【図５Ａ】
2019514146.tif 000009
【図５Ｂ】
2019514146.tif 000010
【図６Ａ】
2019514146.tif 000011
【図６Ｂ】
2019514146.tif 000012
【国際調査報告】
2019514146.tif 000013
2019514146.tif 000014
2019514146.tif 000015
2019514146.tif 000016