JP2020526843A - フォールトトレラントサーバにおけるダーティページ追跡および完全メモリミラーリング冗長性のための方法 - Google Patents
フォールトトレラントサーバにおけるダーティページ追跡および完全メモリミラーリング冗長性のための方法 Download PDFInfo
- Publication number
- JP2020526843A JP2020526843A JP2020500884A JP2020500884A JP2020526843A JP 2020526843 A JP2020526843 A JP 2020526843A JP 2020500884 A JP2020500884 A JP 2020500884A JP 2020500884 A JP2020500884 A JP 2020500884A JP 2020526843 A JP2020526843 A JP 2020526843A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- ftvmm
- slat
- driver
- server
- 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.)
- Granted
Links
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/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/2097—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 maintaining the standby controller/processing unit updated
-
- 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/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- 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
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- 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/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
-
- 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/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- 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/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
-
- 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/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1683—Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
-
- 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/202—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 processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- 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/202—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 processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/203—Failover techniques using migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/442—Shutdown
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45566—Nested virtual machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
本願は、その内容全体が参照することによってその全体として本明細書に組み込まれる、2017年7月11日に出願された米国特許出願第15/646,769号の優先権および利益を主張する。
本発明は、概して、フォールトトレラントコンピューティングの分野に関し、より具体的には、フォールトトレラントサーバにおけるメモリミラーリングに関する。
FTサーバシステムは、電源をオンにされ、ハードウェアリセットを実施する。
FTサーバUEFIおよびBIOSファームウェアは、システムメモリの全てを検出し、オペレーティングシステムによって使用され得るメモリのエリアを定義するためのメモリ構成テーブルの組を作成する。
UEFI BIOSは、FTVMMによる使用のためにシステムメモリの最上部における領域を予約する。このメモリ領域は、オペレーティングシステムによる使用のために利用可能ではない予約システムメモリのタイプとして、メモリ構成テーブルの中で定義される。予約メモリのこの領域は、本明細書では「予約メモリ領域」と称される。UEFI BIOSは、全てゼロから成るデータパターンを予約メモリ領域に書き込む。予約メモリ領域のサイズは、(Intelプロセッサ用の完全にデータ投入された4レベルSLATテーブル等の)完全にデータ投入された4レベルSLATテーブルを含むために十分な空間を含み、SLATテーブルは、4キロバイトページサイズ粒度を伴うFTサーバの物理メモリの全てをマップするように構成される。これは、全てのシステムメモリの1/512より多くを要求する。1テラバイトのサイズの物理メモリを伴うFTサーバに関して、予約メモリ領域は、2.25Gバイトを占有し得る。このメモリは、メモリの最上部に位置し得る(システムの最大のデータ投入された物理メモリアドレスまで、およびそれを含む)。一実施形態では、UEFIファームウェアは、その関係((システムメモリサイズ/512)+256MB)を使用し、予約メモリ領域のサイズを決定する。
FTサーバオペレーティングシステムは、そのブートおよび始動シーケンスを完了し、サーバのために構成される作業負荷が処理され得る完全動作状態に入る。FTサーバ動作の状態は、上で議論されるように図2Aに描写される。ロードされたFTカーネルモードドライバ(FTドライバ)およびFT管理層が、存在し、起動している。FTサーバが1つ以上のゲスト仮想マシンで構成される場合、オペレーティングシステムの共通使用ハイパーバイザが、存在し得、仮想マシンゲストは、それら自身のオペレーティングシステムおよびゲストのために構成された作業負荷を実行していることもある。
FT管理層は、第2のサーバサブシステムがFTサーバに存在することを検出する。FT管理層は、第2のサーバサブシステムを動作させるように、かつFTサーバを高信頼性のミラーリングされた実行の状態に移行させるようにFTドライバに要求するためのFTドライバへの関数呼び出しまたはコマンドを実施する。
FTドライバは、FTサーバFPGAを使用し、第2のサブシステムへの電源オンおよびハードウェアリセットを実施する。第2のサブシステムは、第2のサブシステム内のプロセッサおよびメモリコンポーネントを初期化するそのFTサーバファームウェア(UEFIおよびBIOS)における診断プログラムを完了する。第2のサブシステムは、FTドライバがメモリコピー動作を要求およびプログラムした場合、FTサーバFPGAおよび他のハードウェアコンポーネントが第1のサーバサブシステムから第2のサーバサブシステムの中へのメモリコピーを実施することができる動作状態に入る。
FTドライバは、FTVMMコード、データ、およびSLATテーブルメモリコンテンツ、ならびに他のデータを予約メモリ領域に書き込む。予約メモリ領域中のSLATは、SLAT L0と称され得る。一実施形態では、FTドライバは、データを予約メモリ領域に書き込む動作を実施するために、オペレーティングシステムのメモリマッピング機能を使用し、ダイレクトメモリアクセス(DMA)コントローラまたはFTサーバFPGA等のハードウェアリソースも使用し得る。
この段階で、FTサーバソフトウェアコンポーネントは、通常動作で起動している。OS1およびOS2ソフトウェアならびにプログラムコンポーネントは、仮想化された状態で実行していないこともある。オペレーティングシステムの共通使用ハイパーバイザ(ハイパーバイザL1)は、存在する場合、ゲストが存在する場合にそれが制御するゲスト仮想マシン(ゲストL2、L2’)からの各VMEXITを処理し続ける。
FTカーネルモードドライバは、各プロセッサが、仮想化(Intel VMXルートモード等)を有効化し、プロセッサのVMCS L0を使用して、その現在の実行状態を仮想化し、そして、FTVMMコンテキストへのVMEXITを実施し、以下を行うようにするプログラム内でシステムの中の全てのプロセッサを同期化する:
a.VMポインタストア(VMPTRST)プロセッサ命令を実施し、現在のGUEST L2の対応するVMCS(VMCS−N)のアドレスを保持するVMCSポインタを読み取り、結果として生じる値をFTVMMによって使用されるソフトウェア構造に書き込むこと;
b.VMCLEAR(VMCSを消去する)、VMPTRLD(VMCSを現在かつアクティブにする)、およびVMWRITE(VMCSフィールドを修正する)等の命令を使用することによって、プロセッサの現在実行しているレジスタセットから抽出される値の組をFTVM MVMCSアレイの中のVMCS L0と称される各プロセッサのためのFTVM MVMCSの対応するゲストフィールドに書き込むこと;
c.FTVMMの保護モードメモリ構成およびプロセッサHOSTレジスタ命令ポインタ(RIP)エントリポイント、スタックポインタ、システムメモリの全てをマップし得るページテーブル、ならびにFTVMM実行コンテキストの他の条件を含むFTVMMの設計された動作要件によって決定される値の組をFTVM MVMCSアレイの中の各プロセッサのVMCS L0の対応するホストフィールドに書き込むこと;
d.VMLAUNCH(消去されたVMCSを起動する)プロセッサ命令を実施し、プロセッサをゲストとして実行することを始めさせること;
e.それによって、VMCS L0のゲストフィールドによって決定される処理コンテキストにおいて、FTドライバプログラムコード内のプロセッサの現在のコンテキストにおいてゲストとして実行することを始めること;
f.そして、各プロセッサが、VMCS L0のホストフィールドによって決定される処理コンテキストにおいて、VMEXITと、予約メモリ領域中に位置するFTVMMハイパーバイザプログラムコードの中への実行の転送とを引き起こすFTドライバコード内のプロセッサ命令を実行すること。
FTVMMプログラムコード、すなわち、FTVMM CODEは、FTサーバ内の全てのプロセッサが、予約メモリ領域中に位置するコードおよびデータから成るFTVMMコンテキストへのVMEXITを実施することを待つ。1つのプロセッサは、FTVMM内の関数を呼び出し、4キロバイトのページテーブルエントリサイズを使用して、1対1のゲスト物理・物理アドレスマッピングを伴う予約メモリ領域中のSLAT L0と称されるSLATテーブルを初期化する。FTVMMは、各プロセッサのVMCS L0へのVMWRITE等のプロセッサ命令の組を実施し、それによって、プロセッサは、その後、プロセッサが(VMCS L0のゲストフィールドによって決定される実行コンテキストにおいて)VMCS L0を使用してゲストとして実行しているとき、アドレス変換のためにSLAT L0テーブルを使用するであろう。SLAT L0の機能性は、その後、FTサーバ上のソフトウェアによって修正されたメモリページを決定するために、その最下位ページテーブルエントリの中の「ダーティビット」を検出するために使用されるであろう。FTVMMは、変数を初期化し、レジスタおよびソフトウェア構造からゲストおよびプロセッサ状態情報を抽出する。これが全てのプロセッサ上で完了されたとき、FTVMMは、FTカーネルモードドライバに戻るためのVMRESUME命令を実施する。
FTVMMは、最下位(またはおそらく唯一の)ハイパーバイザとして動作し、それは、FTVMMがアクティブなままである限り、システム内の全てのVMEXITイベントを取り扱う。FTVMMは、ミラーリングされた実行に入るためのダーティビット追跡機能を完了するまで、または、エラーが検出され、その後、FTドライバの機能コマンドインターフェースからの論理的アンロードコマンドが続くまで、アクティブなままであろう。FTVMMは、FTVMMが存在しなかった場合に起こっていたであろう同等のシステム挙動をエミュレートまたは生成することによって、システム内の全てのVMEXITイベントを取り扱う。FTVMMは、VMEXITを引き起こした機能を直接実施し得、その機能のために通常発生するデータまたは状態を生成し得る。仮想マシンゲストL2からのVMEXITの場合、FTVMMは、ハイパーバイザL1のコンテキストのためのエミュレートされた状態を作成し得、VMPTRLD、VMRESUME、および他のプロセッサ命令を実施し、ハイパーバイザL1がゲストL2から各VMEXITを間接的にサービス提供することを可能にし得る。FTVMMは、VMPTRLD命令を使用し、これらの動作のための正しいVMCS L0またはVMCS−Nを提供する。ハイパーバイザL1がゲストL2からのVMEXITを間接的にサービス提供するネスト化された仮想化と称されるこの動作状態は、「ネスト化された動作」、「ネスト化されたハイパーバイザ動作」、および「ネスト化されたゲスト動作」として図2Bおよび図3Iに描写される。
図2Bに描写される状態にある間、FTカーネルモードドライバは、機能インターフェースを使用し、機能インターフェースは、コマンドをFTVMMに送信し、FTVMMからデータを受信することと、ミラーリングされた実行状態を作成し、その状態に入るために要求されるダーティメモリページのビットマップを生成および取得することとを行うためにVMCALL命令を実施し得る。これらのコマンドに応答するために、FTVMMは、VMCALLプロセッサ命令によって引き起こされる全VMEXITの起源を決定し、そして、FTカーネルモードドライバからのVMCALLイベントを高レベル機能コマンドとして解釈し得る。機能インターフェースは、メモリページ追跡有効化、ブラックアウトページ追跡有効化、ダーティページビットマップ要求、FTVMMアンロード要求と称される機能を実施するための論理コマンドの組、およびFTVMM動作を制御するために使用され得る他の機能コマンドを使用する。
FTVMMは、FTVMMがアクティブである間、全てのゲストL2に関して、SLAT L2と称されるSLATテーブルによって現在占有されているメモリページの組を説明するそのデータを収集および更新し続ける。FTサーバのシステムメモリは、存在する各仮想マシンゲストL2のためのSLAT L2テーブルと称される1つ以上のSLATテーブルを含有し得る。システムメモリの中に常駐するSLAT L2テーブルは、ハイパーバイザL1によって作成および修正されており、FTVMMから論理的に独立している。FTVMMは、L2と称される各仮想マシンゲストに関連付けられるSLAT L2テーブルポインタ(Intel EPTPポインタ等)のデータアレイを維持する。FTVMMは、SLAT L2テーブルのメモリページの全ての場所を含むデータ構造を維持する。SLAT L2テーブルは、メモリマッピングと、ゲストL2に配分されている各メモリページのためのページテーブルエントリダーティビットとを含む。ハイパーバイザL1がゲストL2のためのSLAT L2テーブル内のデータを修正するとき、FTVMMは、ゲストの現在のメモリマップを維持するために、これらの変更を追跡する。FTVMMは、そのコードがそのSLAT L2ページを修正する場合、ハイパーバイザL1がVMEXITを引き起こすであろうように、SLAT L2テーブルにおける物理メモリページをマップするSLAT L0ページテーブルエントリにおける書き込み許可ビットを消去することによって、これらの変更を追跡し得る。その後、FTカーネルモードドライバが新しいダーティページビットマップを要求するためのVMCALLを後に実施するとき、SLAT L2テーブルソフトウェア追跡構造が、各ゲストL2のためのダーティページビットマップにおけるダーティページビットを見出すために使用されるであろう。
FTカーネルモードドライバは、FTVMMとのVMCALL機能インターフェースを使用し、システム内の修正されたメモリの全てのページを追跡することを始めるようにFTVMMに要求するためのメモリページ追跡有効化コマンドを発行する。FTVMMへのFTドライバの機能インターフェースにおけるVMCALLプロセッサ命令は、各論理プロセッサにFTVMMに入らせ、FTドライバによって発行される要求を処理させる。FTVMMは、新たに修正された全てのシステムメモリページ(ダーティページ)の記録を取得する様式で、FTVMMハイパーバイザコンテキストにおいてそのプログラムコードを使用することを始めるための関数を全てのプロセッサ上で実施する。FTVMMは、下記のステップ15に説明されるように、SLAT L0および全てのSLAT L2テーブルを検索し、これらのテーブル内のダーティビットをゼロに設定し、そして、各プロセッサ上のキャッシュされたSLATテーブルマッピングを無効にする。全てのプロセッサがFTVMMにおいてこの関数を完了したとき、FTVMMは、VMRESUME命令を実施することによって、制御をFTドライバに返す。そして、FTドライバは、システムメモリの全てを第2のサブシステムにコピーする。FTドライバは、DMAコントローラまたはFTサーバFPGAを使用し、全てのシステムメモリを第2のサブシステムにコピーする高速メモリ転送動作を実施し得る。FTサーバは、この処理中、その構成された作業負荷を実施し続ける。
FTカーネルモードドライバは、機能インターフェースを使用し、各プロセッサ上でメモリページ追跡有効化と称されるコマンドを発行する。FTVMMへのFTドライバの機能インターフェースにおけるVMCALLプロセッサ命令は、各論理プロセッサにFTVMMに入らせ、FTドライバによって発行される要求を処理させる。FTVMMは、新たに修正された全てのシステムメモリページ(ダーティページ)の記録を取得する様式で、FTVMMハイパーバイザコンテキストにおいてそのプログラムコードを使用することを始めるための関数を全てのプロセッサ上で実施する。そして、各プロセッサ上のFTVMMコードは、SLAT L0テーブル内および各ゲストのSLAT L2テーブル内の8バイト毎のページテーブルエントリを検索し、各エントリにおけるダーティビットをそのビットのTRUE値と比較する。比較結果がTRUEであるとき、FTVMMは、物理メモリにおけるダーティまたは修正されたページのアドレスを表すビットフィールドアドレスにおいて、ダーティページビットマップにおけるビットフィールドを設定し、そして、ページテーブルエントリにおけるダーティビットを消去する。SLAT L0の中に構成されるメモリマッピングは、4キロバイトのページサイズを有するので、ダーティページビットマップにおける1ビットが、見出されるダーティにされたページ毎に設定される。ハイパーバイザL1がSLAT L2テーブルの中に構成したメモリマッピングは、4キロバイトより大きくあり得、FTVMMは、これが起こるとき、(2メガバイトページサイズの場合に関して512の連続ビットフィールドエントリ等の)ダーティページビットマップにおける連続的な一連のビットフィールドを設定する。このプロセスがSLAT L0およびSLAT L2テーブルに関して完了したとき、各プロセッサは、SLAT L0およびSLAT L2テーブルに関してプロセッサのキャッシュされた変換を無効にするためのプロセッサ命令を実施し(Intelプロセッサ命令INVEPT等)、FTVMMが、システム作業負荷によって引き起こされ得るダーティにされたページの新しいインスタンスを検出し続けることを可能にする。全てのプロセッサがFTVMMにおいてこの動作を完了したとき、FTVMMは、VMRESUME命令を実施することによって、制御をFTドライバに返す。そして、FTドライバは、ダーティページビットマップ要求と称される別のMCALL機能インターフェースコマンドを発行する。FTVMMは、そして、最近修正されたページの記録を含むダーティページビットマップを提供し、FTドライバのデータエリアの中に位置するメモリバッファにこのデータを記憶する。そして、FTドライバは、ダーティページビットマップにおいて識別される物理メモリページの組を第2のサブシステム内の対応する物理メモリアドレスにコピーする。FTドライバは、DMAコントローラまたはFTサーバFPGAを使用し、ダーティにされたページの組を第2のサブシステムにコピーする高速メモリ転送動作を実施し得る。
プロシージャメモリコピー段階1は、最終ブラウンアウトメモリコピー段階N中にシステム作業負荷によって生成され得るダーティにされたページのより小さい結果として生じる組を取得するために、1回数以上繰り返され得る。
FTドライバは、FTサーバ内の他のプログラムがより多くのダーティページビットを生成することを防止するために、全てのプロセッサに、各プロセッサ上のシステム割り込み処理を無効にさせる。FTドライバは、ブラックアウトページ追跡有効化コマンドを発行し、それは、VMCALL機能インターフェースを使用し、FTVMMに最近ダーティにされたメモリページの組を識別させ、FTVMMにVMCS−NおよびSLAT L2等のある揮発性または頻繁に修正されるメモリページも識別させ、ダーティにされたページの組の中にこれらのページを含ませる。FTVMMは、FTVMMにおけるプロセッサ#0を除く、全てのプロセッサを一時的に一時停止させ得る。そして、FTドライバは、別のVMCALL機能インターフェースコマンド、すなわち、ダーティページビットマップ要求を発行し、ダーティページのビットマップを取得する。そして、FTVMMは、最近修正されたページの記録を含むダーティページビットマップを提供し、FTドライバのデータエリアの中に位置するメモリバッファにこのデータを記憶する。そして、FTドライバは、ダーティページビットマップにおいて識別される物理メモリページの組を第2のサブシステム内の対応する物理メモリアドレスにコピーする。そして、FTドライバは、(予約メモリ領域のためのメモリ範囲を含む)ダーティである、または修正されると仮定されるメモリ範囲のリストを作成し、最終ブラックアウトメモリ範囲リストと称されるデータ構造の中にこの情報を記憶する。このプロシージャは、システム作業負荷が実行されず、作業負荷がダーティにされたページの最終組が第2のサブシステムにコピーされている間、短いサーバ処理停止を経験するので、ブラックアウトメモリコピーと称される。
FTドライバは、FTサーバFPGA、他のFTサーバハードウェア、およびファームウェアリソースを使用して、一連のプログラムおよび関数を実施し、FTサーバを高信頼性のミラーリングされた実行の状態に移行させる。この一連の動作は、ミラーリングされた実行の状態に入るとき、メモリアドレス範囲の最終の組が第2のサブシステムにコピーされていることを確実にするために、最終ブラックアウトメモリ範囲リストを使用する。
a)FTドライバは、システム管理割り込み(SMI)を生成し、全てのプロセッサをファームウェアSMIハンドラに入らせ、システム管理モード(SMM)で動作させる。全てのプロセッサは、ファームウェアSMMモジュールにおいてコードを実行する。
b)1つのプロセッサは、FPGAを使用し、最終ブラックアウトメモリ範囲リストの中のダーティメモリページの組を第2のサブシステムのメモリにコピーする。1つのプロセッサは、FPGA機能を使用し、全てのIO DMA読み取り、書き込み、および割り込み配信を一時的に遮断または一時中断する。全てのプロセッサは、保存状態と称されるそれらの現在の動作状態を表すデータをソフトウェア構造に書き込む。保存状態は、ローカルAPIC(先進プログラマブル割り込みコントローラ)状態と、現在のハードウェア仮想化状態のためのデータとを含む。全てのプロセッサは、それらのキャッシュされたデータ、コード、およびメモリマッピング変換を消去する、プログラムを実行する。
c)FPGAは、ウォームリセットと称されるハードウェアリセットを生成し、ウォームリセットは、ミラーリングされた実行の状態で、初期命令フェッチと称されるそれらのBIOSリセットコードを両方のサブシステムに実行させる。FPGAは、記憶装置およびネットワークコントローラ等の外部ハードウェアインターフェースデバイスを分離し、それらは、リセットされない。BIOSファームウェアは、マルチプロセッサ動作を初期化し、SMIを生成して、全てのプロセッサをファームウェアSMIハンドラに入らせ、SMMモードで動作させる。
d)SMMモードにおける全てのプロセッサは、メインメモリ内の構造から保存状態を読み取り、そのデータを使用して、ウォームリセットの前に存在した現在の動作状態を復元する。1つのプロセッサは、FPGAを使用し、IO DMAアクセスおよび割り込み配信を再び有効にし、再開する。FPGAは、外部IOインターフェースから同じタイミングで同じデータを受信し続けるように、全てのIO DMAトランザクションを両方のサーバサブシステムにルーティングする。全てのプロセッサは、SMRまたは再開命令を実行し、FTドライバに戻る。システムは、ミラーリングされた実行の状態で実行し続ける。
FTドライバは、ミラーリングされた実行の状態に入るための動作がその実行を完了したことを決定し、FTドライバは、そして、全てのプロセッサにFTドライバプログラムコードにおける関数を実行させることによって、それらを同期化する。そして、FTドライバは、FTVMMとの機能インターフェースを使用し、「FTVMMアンロード要求」と称されるコマンドを発行する。機能インターフェースにおけるVMCALLは、各プロセッサのVMCS L0のホストフィールドによって決定されるコンテキストにおいて、全プロセッサにFTVMMにおいて実行させる。FTVMMは、全てのプロセッサがFTVMMに入ることを待ち、そして、FTVMMをアンロードするためのプログラムを実行する。FTVMMは、ハイパーバイザL1によって生成され、FTVMMによって監視されたこれらの論理フィールドの直近の値を用いてゲストL2の各VMCS−Nのホストフィールドを書き込む。FTVMMは、FTVMMがその処理を完了したとき、続いて、ハイパーバイザL1およびゲストL2が通常ハイパーバイザ動作および通常ゲスト動作で動作することを可能にする他の動作を実施する。FTVMMは、VMCLEAR、VMPTRLD、VMWRITE、および他の命令等のプロセッサ命令を実施し、FTドライバが通常動作で実行されることを可能にする。FTVMMは、VMLAUNCH命令を各プロセッサ上で実施し、VMLAUNCH命令は、プロセッサにFTVMM内で実行を終了させ、FTドライバ内で実行を再開させる。FTドライバは、FTVMMがVMLAUNCH命令を実施した後、VMCS L0のゲストフィールドを使用して、ゲストとして実行するであろう。
各プロセッサは、プロセッサのVMCS L0のゲストフィールドによって制御される様式で、FTドライバにおいてドライバプログラムコードを実行する。各プロセッサは、VMEXITイベントを発生させる命令を実行する。各プロセッサは、VMCS L0のホストフィールドによって制御される様式で、FTドライバにおいて同じドライバプログラムコードを実行し続ける。
各プロセッサは、命令のオペランドとして、そのプロセッサのための現在アクティブなゲストL2のVMCS−Nを用いてVMPTRLD等の命令を実施し、存在する場合、ゲストL2のための後続の通常ゲスト動作を有効にする。各プロセッサは、プロセッサレジスタ設定およびコンテンツの組(汎用プロセッサレジスタ、プロセッサセレクタレジスタ、Intel VMXOFFまたはVMXON等の他のハードウェア仮想化状態、およびプロセッサ状態ならびにコンテキストの他の要素等)を書き込む、または生成するための一連の命令を実施し、FTドライバおよびシステムに存在する他のソフトウェアの後続の通常動作を有効にする。
FTドライバは、FTサーバが、サーバおよびそのゲスト仮想マシンのために構成される作業負荷を処理し続け得るように、全てのプロセッサ上でその実行を完了する。FTサーバ動作のこの段階は、図2Cに描写される。FTドライバは、それがFT管理層から受信した機能要求を完了し、要求に関する完了ステータスを返す。FT管理層は、その要求の完了を取り扱い、イベントログバッファまたは他のロギング機構においてメッセージを生成し、FTサーバがミラーリングされた実行の高信頼性状態に入ったことを示し得る。
Claims (17)
- FT(フォールトトレラント)サーバシステムにおいてアクティブからスタンバイメモリにメモリを転送する方法であって、前記方法は、
前記FTサーバシステムのBIOSを使用して、メモリの一部を予約するステップと、
FTカーネルモードドライバをメモリにロードし、初期化するステップと、
セカンドレベルアドレステーブル(SLAT)を含むFT仮想マシンマネージャ(FTVMM)を前記予約されたメモリの一部にロードし、初期化し、前記FTVMMにおける全てのプロセッサを同期化するステップと、
予約メモリの中の前記FTVMMのSLATを使用して、OS(オペレーティングシステム)、ドライバ、ソフトウェア、およびハイパーバイザのメモリアクセスを追跡するステップと、
ゲストに関連付けられた前記SLATの全てのページを追跡し、前記SLATを構成するメモリページへのハイパーバイザ書き込みを傍受することによって、ゲストVM(仮想マシン)メモリアクセスを追跡するステップと、
ブラウンアウト状態レベル0に入るステップであって、前記ステップは、前記SLAT内のダーティビット(Dビット)を記録し、前記FTサーバにおける全てのソフトウェアによるメモリ書き込みを追跡しながら、完全メモリコピーを実行することによる、ステップと、
前記FTVMM SLATおよび各ゲストの現在のSLATにおけるDビットの全てを消去するステップと、
全てのDビットを追跡する段階1−4のブラウンアウト状態に入るステップであって、前記ステップは、
前記Dビットを収集することと、
前記FTVMM SLATおよび各現在のゲストのSLATに関して、全てのプロセッサのキャッシュされた変換を無効にすることと、
前記アクティブメモリから第2のサブシステムメモリに修正されたメモリページのデータをコピーすることと
による、ステップと、
ブラックアウト状態に入るステップであって、前記ステップは、プロセッサ#0を除く、前記FTVMM内の全てのプロセッサを一時停止させ、プロセッサ#0に関して前記FTドライバにおける割り込みを無効にすることによる、ステップと、
アクティブからミラーメモリに収集されたデータをコピーするステップと、
スタックおよび揮発性ページを含む最近ダーティにされたページの最終の組を収集するステップと、
FPGA(フィールドプログラマブルゲートアレイ)を使用して、前記最終ページの組を前記ミラーメモリに転送するステップと、
前記FTサーバFPGAおよびファームウェアSMM(システム管理モジュール)を使用して、ミラーリングされた実行の状態に入るステップと、
前記FTVMMを終了させ、アンロードすることによって、動作のブラックアウト部分を完了するステップと、
制御を前記FTカーネルモードドライバに返すステップと、
通常FTシステム動作を再開するステップと
を含む、方法。 - FTVMMコードは、通常FTシステム動作の再開後、予約メモリの中に留まる、請求項1に記載の方法。
- 前記予約メモリは、前記FTサーバにおける最大既存物理メモリアドレスを含むそれ以下に位置している1/4ギガバイト〜2.25ギガバイトの連続した物理メモリのメモリ領域である、請求項1に記載の方法。
- 前記アクティブメモリからデータを移動させることは、FPGAを使用する、請求項1に記載の方法。
- 前記FTカーネルモードドライバへの制御の返還は、前記FTカーネルモードドライバがVMEXITイベントを発生させることによる、請求項1に記載の方法。
- 前記FTカーネルモードドライバは、現在のゲストVMCSを現在かつアクティブにするためのオペランドとして前記現在のゲストVMCS(VM制御構造)を有するVMPTRLD(仮想マシンポインタロード)命令を実施することによって、各プロセッサ上の通常ゲストVM動作の条件に戻る、請求項1に記載の方法。
- 前記Dビットの収集は、前記SLATから周期的に実施されるか、または、ページ修正ロギング(PML)を使用して連続的に実施される、請求項1に記載の方法。
- FT(フォールトトレラント)サーバシステムにおいてアクティブからスタンバイメモリにメモリを転送する方法であって、前記方法は、
ブート時に前記FTサーバシステムのBIOSを使用して、メモリの一部を予約するステップと、
FTカーネルモードドライバをロードし、初期化するステップと、
SLATを含むFT仮想マシンマネージャ(FTVMM)を前記予約されたメモリの一部にロードし、初期化し、前記FTVMMにおける全てのプロセッサを同期化するステップと、
予約メモリの中の前記SLATを使用して、メモリアクセスを追跡するステップと、
ブラウンアウト状態レベル0に入るステップであって、前記ステップは、前記SLAT内のダーティビット(Dビット)を記録しながら、完全メモリコピーを実行することによる、ステップと、
前記SLAT内のDビットの全てを消去するステップと、
全てのDビットを追跡する段階1−4のブラウンアウト状態に入るステップであって、前記ステップは、
前記Dビットを収集することと、
SLATに関して全てのプロセッサのキャッシュされた変換を無効にすることと、
前記アクティブメモリから第2のサブシステムメモリに修正されたメモリページのデータをコピーすることと
による、ステップと、
ブラックアウト状態に入るステップであって、前記ステップは、プロセッサ#0を除く、前記FTVMM内の全てのプロセッサを一時停止させ、プロセッサ#0に関して前記FTドライバにおける割り込みを無効にすることによる、ステップと、
アクティブからミラーメモリに収集されたデータをコピーするステップと、
最近ダーティにされたページの最終の組を収集するステップと、
FPGA(フィールドプログラマブルゲートアレイ)を使用して、前記最終ページの組を前記ミラーメモリに転送するステップと、
前記FTサーバFPGAおよびファームウェアSMMを使用し、ミラーリングされた実行の状態に入るステップと、
前記FTVMMをアンロードし、FTカーネルモードドライバに抜け出すことにより、前記FTVMMの動作を終えるステップと
を含む、方法。 - 前記FTVMM内の全てのプロセッサの同期化は、FTVMMコードに全てのプロセッサ上でハイパーバイザとして実行させる、請求項8に記載の方法。
- 前記FTVMMは、予約メモリの中の前記SLATを使用して、メモリアクセスを追跡する、請求項8に記載の方法。
- 前記スタンバイメモリへのシステムメモリの前記完全メモリコピーは、前記FTドライバによって実施される、請求項8に記載の方法。
- 前記アクティブメモリから前記第2のサブシステムメモリに前記修正されたメモリページのデータをコピーすることは、前記FTVMMが、前記FTドライバによる前記完全メモリコピー中にダーティにされた全てのページのコピーを取得することで始まる、請求項11に記載の方法。
- 前記FTVMMは、ダーティページビットマップを前記FTドライバに提供する、請求項12に記載の方法。
- 前記FTドライバへの前記ダーティページビットマップの提供は、前記FTドライバによるダーティページデータの前のコピー中にダーティにされた任意のページに関して起こる、請求項13に記載の方法。
- 前記SMMは、メモリからプロセッサ状態を復元することによって、前記ミラーリングされた実行の状態に入る、請求項8に記載の方法。
- 前記SMMは、プロセッサ状態が復元された後、前記FTドライバに戻り、ミラーリングされた実行に入ることを完了する、請求項15に記載の方法。
- 前記Dビットの収集は、前記SLATから周期的に実施されるか、または、PMLを使用して連続的に実施される、請求項8に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/646,769 US10216598B2 (en) | 2017-07-11 | 2017-07-11 | Method for dirty-page tracking and full memory mirroring redundancy in a fault-tolerant server |
US15/646,769 | 2017-07-11 | ||
PCT/US2018/039390 WO2019013965A1 (en) | 2017-07-11 | 2018-06-26 | METHOD FOR FULL PAGE TRACKING AND COMPLETE MEMORY MIRROR REDUNDANCY IN A FAULT TOLERANT SERVER |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020526843A true JP2020526843A (ja) | 2020-08-31 |
JP7164770B2 JP7164770B2 (ja) | 2022-11-02 |
Family
ID=62986191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020500884A Active JP7164770B2 (ja) | 2017-07-11 | 2018-06-26 | フォールトトレラントサーバにおけるダーティページ追跡および完全メモリミラーリング冗長性のための方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10216598B2 (ja) |
EP (1) | EP3652640B1 (ja) |
JP (1) | JP7164770B2 (ja) |
WO (1) | WO2019013965A1 (ja) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10599433B2 (en) * | 2013-07-15 | 2020-03-24 | Texas Instruments Incorported | Cache management operations using streaming engine |
US10860238B2 (en) * | 2017-12-27 | 2020-12-08 | Intel Corporation | Method and apparatus for improving firmware loading |
US10768965B1 (en) * | 2018-05-02 | 2020-09-08 | Amazon Technologies, Inc. | Reducing copy operations for a virtual machine migration |
US10884790B1 (en) | 2018-05-02 | 2021-01-05 | Amazon Technologies, Inc. | Eliding redundant copying for virtual machine migration |
WO2020036824A2 (en) | 2018-08-13 | 2020-02-20 | Stratus Technologies Bermuda, Ltd. | High reliability fault tolerant computer architecture |
US10901911B2 (en) * | 2018-11-21 | 2021-01-26 | Microsoft Technology Licensing, Llc | Faster computer memory access by reducing SLAT fragmentation |
CN113614693A (zh) * | 2019-03-28 | 2021-11-05 | 英特尔公司 | 虚拟化环境中直通设备的直接存储器访问跟踪 |
CN112015600B (zh) * | 2019-05-28 | 2024-07-09 | 阿里巴巴集团控股有限公司 | 日志信息处理系统、日志信息处理方法及装置和交换机 |
US11620196B2 (en) | 2019-07-31 | 2023-04-04 | Stratus Technologies Ireland Ltd. | Computer duplication and configuration management systems and methods |
US11288123B2 (en) | 2019-07-31 | 2022-03-29 | Stratus Technologies Ireland Ltd. | Systems and methods for applying checkpoints on a secondary computer in parallel with transmission |
US11429466B2 (en) | 2019-07-31 | 2022-08-30 | Stratus Technologies Ireland Ltd. | Operating system-based systems and method of achieving fault tolerance |
US11281538B2 (en) | 2019-07-31 | 2022-03-22 | Stratus Technologies Ireland Ltd. | Systems and methods for checkpointing in a fault tolerant system |
US11641395B2 (en) | 2019-07-31 | 2023-05-02 | Stratus Technologies Ireland Ltd. | Fault tolerant systems and methods incorporating a minimum checkpoint interval |
US11263136B2 (en) | 2019-08-02 | 2022-03-01 | Stratus Technologies Ireland Ltd. | Fault tolerant systems and methods for cache flush coordination |
CN111078586B (zh) * | 2019-12-10 | 2022-03-01 | Oppo(重庆)智能科技有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN111857303B (zh) * | 2020-06-30 | 2022-05-17 | 浪潮电子信息产业股份有限公司 | 一种fpga复位方法、装置、系统和电子设备 |
US11288143B2 (en) | 2020-08-26 | 2022-03-29 | Stratus Technologies Ireland Ltd. | Real-time fault-tolerant checkpointing |
CN115237667A (zh) | 2021-04-23 | 2022-10-25 | 伊姆西Ip控股有限责任公司 | 用于存储管理的方法、电子设备和计算机程序产品 |
US11436112B1 (en) | 2021-05-17 | 2022-09-06 | Vmware, Inc. | Remote direct memory access (RDMA)-based recovery of dirty data in remote memory |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016533555A (ja) * | 2013-09-30 | 2016-10-27 | ヴイエムウェア インコーポレイテッドVMware,Inc. | 仮想環境内での不揮発性メモリ状態の一貫した効率的ミラーリング |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6948010B2 (en) * | 2000-12-20 | 2005-09-20 | Stratus Technologies Bermuda Ltd. | Method and apparatus for efficiently moving portions of a memory block |
US7293196B2 (en) * | 2002-05-08 | 2007-11-06 | Xiotech Corporation | Method, apparatus, and system for preserving cache data of redundant storage controllers |
US7904906B2 (en) * | 2004-11-23 | 2011-03-08 | Stratus Technologies Bermuda Ltd. | Tracking modified pages on a computer system |
CN102750317B (zh) * | 2012-05-02 | 2015-01-21 | 华为技术有限公司 | 数据持久化处理方法、装置及数据库系统 |
US10198572B2 (en) * | 2013-09-17 | 2019-02-05 | Microsoft Technology Licensing, Llc | Virtual machine manager facilitated selective code integrity enforcement |
US10223026B2 (en) * | 2013-09-30 | 2019-03-05 | Vmware, Inc. | Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored |
US20150205688A1 (en) * | 2013-12-30 | 2015-07-23 | Stratus Technologies Bermuda Ltd. | Method for Migrating Memory and Checkpoints in a Fault Tolerant System |
US10013276B2 (en) * | 2014-06-20 | 2018-07-03 | Google Llc | System and method for live migration of a virtualized networking stack |
US10809916B2 (en) * | 2017-04-17 | 2020-10-20 | Oracle International Corporation | Instance recovery using bloom filters |
-
2017
- 2017-07-11 US US15/646,769 patent/US10216598B2/en active Active
-
2018
- 2018-06-26 WO PCT/US2018/039390 patent/WO2019013965A1/en unknown
- 2018-06-26 EP EP18743914.6A patent/EP3652640B1/en active Active
- 2018-06-26 JP JP2020500884A patent/JP7164770B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016533555A (ja) * | 2013-09-30 | 2016-10-27 | ヴイエムウェア インコーポレイテッドVMware,Inc. | 仮想環境内での不揮発性メモリ状態の一貫した効率的ミラーリング |
Also Published As
Publication number | Publication date |
---|---|
WO2019013965A1 (en) | 2019-01-17 |
EP3652640A1 (en) | 2020-05-20 |
EP3652640B1 (en) | 2024-02-14 |
US10216598B2 (en) | 2019-02-26 |
JP7164770B2 (ja) | 2022-11-02 |
US20190018746A1 (en) | 2019-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7164770B2 (ja) | フォールトトレラントサーバにおけるダーティページ追跡および完全メモリミラーリング冗長性のための方法 | |
JP7474766B2 (ja) | 高信頼性フォールトトレラントコンピュータアーキテクチャ | |
US9400611B1 (en) | Data migration in cluster environment using host copy and changed block tracking | |
US7721138B1 (en) | System and method for on-the-fly migration of server from backup | |
EP2053509B1 (en) | System for and method of migrating one or more virtual machines | |
JP5254601B2 (ja) | 資源回復するための方法、情報処理システムおよびコンピュータ・プログラム | |
US7313793B2 (en) | Method for forking or migrating a virtual machine | |
US20120117555A1 (en) | Method and system for firmware rollback of a storage device in a storage virtualization environment | |
US20210303401A1 (en) | Managing storage device errors during processing of inflight input/output requests | |
US20120215970A1 (en) | Storage Management and Acceleration of Storage Media in Clusters | |
US11989577B2 (en) | Hypervisor hibernation | |
US8775861B1 (en) | Non-disruptive storage device migration in failover cluster environment | |
WO2009145764A1 (en) | Providing object-level input/output requests between virtual machines to access a storage subsystem | |
US20230161677A1 (en) | Methods and Systems for Rapid Failure Recovery for a Distributed Storage System | |
JP2011154697A (ja) | Raidと関連するアプリケーションの実行のための方法およびシステム | |
US20240289225A1 (en) | Methods and systems for power failure resistance for a distributed storage system | |
US20230185465A1 (en) | Fast restart of large memory systems | |
Siripoonya et al. | Thread-based live checkpointing of virtual machines | |
US8977896B1 (en) | Maintaining data integrity in data migration operations using per-migration device error flags | |
US11561856B2 (en) | Erasure coding of replicated data blocks | |
US20220358087A1 (en) | Technique for creating an in-memory compact state of snapshot metadata | |
US11983081B1 (en) | Orchestration of container failover between nodes of a cluster | |
US20220326849A1 (en) | Virtual machine memory snapshots in persistent memory | |
US20240028456A1 (en) | Unattended snapshot reversion for upgrades | |
WO2024118442A1 (en) | Fault tolerant systems and methods using shared memory configurations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200304 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210322 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210326 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20210526 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210817 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210907 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20211130 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20220131 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220222 |
|
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: 20220511 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20220610 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20220622 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220623 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7164770 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |