JP7164770B2 - フォールトトレラントサーバにおけるダーティページ追跡および完全メモリミラーリング冗長性のための方法 - Google Patents

フォールトトレラントサーバにおけるダーティページ追跡および完全メモリミラーリング冗長性のための方法 Download PDF

Info

Publication number
JP7164770B2
JP7164770B2 JP2020500884A JP2020500884A JP7164770B2 JP 7164770 B2 JP7164770 B2 JP 7164770B2 JP 2020500884 A JP2020500884 A JP 2020500884A JP 2020500884 A JP2020500884 A JP 2020500884A JP 7164770 B2 JP7164770 B2 JP 7164770B2
Authority
JP
Japan
Prior art keywords
memory
ftvmm
slat
processor
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.)
Active
Application number
JP2020500884A
Other languages
English (en)
Other versions
JP2020526843A (ja
Inventor
スティーブン マイケル ハイド,
ジョン ロジャーズ マクラウド,
Original Assignee
ストラタス テクノロジーズ アイルランド リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ストラタス テクノロジーズ アイルランド リミテッド filed Critical ストラタス テクノロジーズ アイルランド リミテッド
Publication of JP2020526843A publication Critical patent/JP2020526843A/ja
Application granted granted Critical
Publication of JP7164770B2 publication Critical patent/JP7164770B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/2097Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1683Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/442Shutdown
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45566Nested virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized 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)

Description

(関連出願の相互参照)
本願は、その内容全体が参照することによってその全体として本明細書に組み込まれる、2017年7月11日に出願された米国特許出願第15/646,769号の優先権および利益を主張する。
(発明の分野)
本発明は、概して、フォールトトレラントコンピューティングの分野に関し、より具体的には、フォールトトレラントサーバにおけるメモリミラーリングに関する。
フォールトトレラントサーバ(「FTサーバ」)は、冗長ハードウェアおよびソフトウェアを伴うコンピュータシステムであり、冗長ハードウェアおよびソフトウェアは、現在アクティブなサーバサブシステムが故障することを許し、重複または冗長サーバサブシステムにおけるデータの継続的処理を依然として可能にする。そのようなFTサーバは、ハードウェアコンポーネントが故障したときの機能的サーバ故障の可能性を低減させるために、第2の非アクティブサーバサブシステムにおいてオペレーティングシステム状態の重複またはミラーリングされた現在のイメージを維持しなければならず、そのイメージは、現在アクティブなサーバサブシステムの全てのプロセッサ、レジスタ、キャッシュ、およびメモリ状態を含まなければならない。そのようなFTサーバでは、ハードウェアコンポーネント故障が第1のまたはアクティブなサーバサブシステムにおいて起こったときに中断を伴わずに、または最小限の中断で第2のそれまで非アクティブであったサーバサブシステムを使用して動作を継続するために、第1のまたは現在アクティブなサーバサブシステムメモリは、その第2のまたは現在非アクティブなサーバサブシステムにおける物理的に別個のミラーリングされた物理メモリシステムの中にコピーおよび更新されなければならない。そのようなFTサーバでは、2つのサーバサブシステムのメモリコンテンツおよびプロセッサ状態が同一にされた後、2つのサブシステムは、ハードウェア故障または一過性のハードウェアエラーが起こらない限り、2つのサブシステム上で同一のメモリコンテンツを生成する並行した同一の様式で、それらの全ての処理動作を実行し続けなければならない。本議論では、語句「FTサーバ」および「サーバ」は、同義的に使用される。
より詳細には、そのような冗長またはミラーリングされた物理的FTサーバ(「ミラーリングされたシステム」とも称される)は、一実施形態では、典型的には、ミラーリングされたプロセッサおよびメモリユニットと称され得る2つの物理的に別個であるが論理的に同一のサーバサブシステムモジュールを含む。この構成では、FTサーバコンピュータシステムは、同一のメモリデータと、同一のプロセッサおよびクロッキング状態とを含む2つの物理的に別個の処理ユニットから成る。そのようなFTサーバが最初に始動またはブートされるとき、または、モジュールが除去または交換されるとき、システムは、1つのみのFTサーバサブシステムが機能する非冗長モードで一時的に実行されるであろう。誤動作するユニットが一過性のハードウェアエラー後に稼働するように戻されると、または誤動作するユニットが交換されると、FTサーバは、機能しているFTサーバサブシステムの現在のプロセッサおよびメモリ状態を修理されたFTサーバサブシステムの新しいまたは初期化されていないモジュールにコピーするためのハードウェアおよびソフトウェア機構を使用することによって、高信頼性フォールトトレラント状態に再び移行するであろう。そして、FTサーバは、2つのモジュールが外部環境から同一のIOデバイス入力を受信するミラーリングされた実行の状態に入り、2つのモジュールは、独力で同一のプロセッサ、メモリ、およびシステムハードウェアクロック状態を生成し続ける。ミラーリングされたサブシステムは、「ロックステップ」で動作するとして説明されることができる。ミラーリングされた実行の状態にある間、FTサーバは、ハードウェアフィールドプログラマブルゲートアレイ(FPGA)コンポーネント内の論理を使用することによって、いずれのミラーリングされたサブシステムにおいても、ハードウェアエラーまたは他の状態差を検出し、かつ他のサブシステムが正常に動作し続け得るように、故障するサブシステムを分離する。ミラーリングされた実行の状態にある間、FPGAは、2つのサブシステムが外部環境から同一のIOデバイス入力を受信するように、システムメモリへの全てのIOダイレクトメモリアクセス(DMA)書き込みが両方のサブシステム上で同じタイミングで並行して起こるようにする。
ミラーリングされた状態を作成するために、現在のシステムメモリコンテンツ全体は、新しいモジュールにコピーされなければならない。システムメモリは、(FTサーバ上にインストールされたオペレーティングシステムまたは「OS」;サーバ上にインストールされたサービスおよびアプリケーション;仮想マシンおよび任意の仮想マシン(VM)ゲストを制御するようにインストールされた場合、オペレーティングシステムの共通使用ハイパーバイザ;およびこれらの仮想マシンゲストのゲストオペレーティングシステムおよびプログラム等の)現在起動しているプログラムおよび作業負荷によって、常に書き込まれ、修正されている。アクティブシステムメモリへのこれらの変更は、「ダーティページ」と称され、メモリの変更のみ(すなわち、システムメモリ全体を新しいメモリモジュールの中にコピーする初期段階中および後に起こる、メモリの変更)をコピーすることによって、フォールトトレラントのミラーリングされたメモリ状態を作成することができるように、選択的メモリミラーリングハードウェアおよびソフトウェア機構によって検出されなければならない。(初期完全コピーが完了した後に)メモリの変更のみをコピーすることによって、アクティブメモリ全体のコピーは、アクティブサーバサブシステムのメモリの全てのコピーを完了するためのシステム作業負荷の一時中断に付随して起こるであろう過剰な遅延または一時的サーバ停止を導入することなく、維持される。
FTサーバおよびそのコンポーネントのネイティブオペレーティングシステムは、好適なメモリミラーリングインターフェースまたはAPIを提供しないこともある。これは、Windows(登録商標) Hyper-V、VMWare ESX、またはLinux(登録商標) KVM等のハイパーバイザがFTサーバ内で有効にされたとき、特に当てはまる。必要とされるものは、好適なメモリミラーリングインターフェースを提供しないオペレーティングシステムに関して、ダーティページを決定するための方法である。
本発明は、この必要性に対処する。
一側面では、本発明は、FTサーバシステムにおいて1つのメモリサブシステムから別のメモリサブシステムにメモリを転送する方法に関する。一実施形態では、方法は、FTサーバシステムのBIOSを使用して、メモリの一部を予約するステップと、システムの管理者がハイパーバイザおよびゲスト仮想マシン(VM)動作を有効にした場合、FTサーバ、FTサーバOSをブートし、ハイパーバイザを始動するステップと、カーネルモードFTドライバをメモリにロードし、初期化するステップと、続いて、セカンドレベルアドレス変換テーブル(SLAT)(または、種々の製造業者、すなわち、Intelによって拡張ページテーブル[EPT]、AMDによって高速仮想化インデキシング[RVI]とも称される)を含むマイクロ仮想マシンマネージャ(マイクロVMM)を予約されたメモリの一部にロードし、初期化し、全てのプロセッサに、本明細書ではFTVMMモジュールと称される仮想マシンマネージャ(VMM)のゲストとしてそれらのプログラムを実行させるステップとを含む。別の実施形態では、方法は、予約メモリの中のFTVMMのSLAT(SLAT L0と称される)を使用して、OS、およびゲストL2を除く全てのソフトウェアコンポーネントによるメモリアクセスを追跡するステップと、ハイパーバイザのSLAT(SLAT L2と称される)を使用することによって、かつSLAT L2へのハイパーバイザ(ハイパーバイザL1と称される)の書き込みを傍受することによって、ゲストL2によるメモリアクセスを追跡するステップとを含む。用語「L0」、「L1」、および「L2」は、明確にするために使用され、添付図面を指し得、必ずしも仮想化状態のための任意の命名法に準拠するわけではない。さらに別の実施形態では、方法は、最初に、FTサーバ内の現在アクティブなSLATテーブルの全ての有効化されたページテーブルエントリ(PDPTE 1GBページ、PDE 2MBページ、およびPTE 4KBページ等)の中のダーティビット(Dビット)(各ページテーブルエントリのDビット9)を消去し、次いで、Dビットを監視し、蓄積して、メモリの新たにダーティにされたページを追跡することによって、現在実行しているソフトウェアによって修正されたメモリページを記録しながら、第2のサブシステムの中への全てのシステムメモリの完全メモリコピーを実施することによって、ブラウンアウト状態レベル0に入るステップを含む。
なおもさらに別の実施形態では、方法は、先行段階に説明されるように追跡されたDビットを表すダーティページビットマップを取得すること、前の段落のステップを繰り返して、現在のメモリコピー動作中に発生するであろう新しいDビットを追跡し始めること、および第2のサブシステムの対応するメモリ場所の中にダーティページビットマップによって表されるメモリページをコピーすることの複数の反復を実施することによって、全てのDビットを追跡するレベル1-4のブラウンアウト状態に入ることを含む。一実施形態では、方法は、プロセッサ#0を除く、FTVMM内のFTサーバの全てのプロセッサを一時停止させ、プロセッサ#0に関してFTドライバにおける割り込みを無効にすることによって、ブラックアウト状態に入ることと、アクティブサブシステムから第2のサブシステムの中、最近ダーティにされたページのビットマップによって表されるメモリページをコピーすることと、ダーティページの最終の組を含む最終ブラックアウトメモリ範囲リストを生成することとを含む。別の実施形態では、方法は、FPGAおよびFTサーバファームウェアによって収集されるプロセスを使用して、最終ページの組をミラーメモリに転送することと、FTVMMを完了および終了することによって、動作のブラックアウト部分を完了することとを含む。なおもさらに別の実施形態では、方法は、制御をFTドライバに返すことと、通常FTシステム動作を再開することとを含む。
一実施形態では、FTVMMコードは、通常FTシステム動作の再開後に予約メモリの中に留まる。別の実施形態では、予約メモリは、メモリの上位1/4GB~2.25GB(ギガバイト)である。さらに別の実施形態では、アクティブメモリからデータを移動させることは、FPGAおよび高速ハードウェアダイレクトメモリアクセス(DMA)エンジンを使用する。なおもさらに別の実施形態では、制御をFTドライバに返す動作のうちの1つは、FTVMMがFTドライバのコンテキストへのVMLAUNCH命令を実行すること、およびFTドライバがFTドライバの同一のプログラムコードへのVMEXITを引き起こす命令を実行することによるものである。VMCS、VMCALL、VMEXIT、VMLAUNCH、VMRESUME、VMCLEAR、VMXON、VMWRITE、VMREAD、VMPTRLD、およびVMPTRST等のハードウェア仮想化のためのIntelプロセッサ命令およびオブジェクトを説明する用語はまた、用語「VMCB」、「VMMCALL」、「#VMEXIT」、「VMRUN」、「VMLOAD」、および「VMSAVE」等のAmerican Micro Devicesおよびその他によって製造されるプロセッサのための機能的類似または同等用語を表すことも意図していることを理解されたい。
本明細書は、例えば、以下の項目も提供する。
(項目1)
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システム動作を再開するステップと
を含む、方法。
(項目2)
FTVMMコードは、通常FTシステム動作の再開後、予約メモリの中に留まる、項目1に記載の方法。
(項目3)
前記予約メモリは、前記FTサーバにおける最大既存物理メモリアドレスを含むそれ以下に位置している1/4ギガバイト~2.25ギガバイトの連続した物理メモリのメモリ領域である、項目1に記載の方法。
(項目4)
前記アクティブメモリからデータを移動させることは、FPGAを使用する、項目1に記載の方法。
(項目5)
前記FTカーネルモードドライバへの制御の返還は、前記FTカーネルモードドライバがVMEXITイベントを発生させることによる、項目1に記載の方法。
(項目6)
前記FTカーネルモードドライバは、現在のゲストVMCSを現在かつアクティブにするためのオペランドとして前記現在のゲストVMCS(VM制御構造)を有するVMPTRLD(仮想マシンポインタロード)命令を実施することによって、各プロセッサ上の通常ゲストVM動作の条件に戻る、項目1に記載の方法。
(項目7)
前記Dビットの収集は、前記SLATから周期的に実施されるか、または、ページ修正ロギング(PML)を使用して連続的に実施される、項目1に記載の方法。
(項目8)
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の動作を終えるステップと
を含む、方法。
(項目9)
前記FTVMM内の全てのプロセッサの同期化は、FTVMMコードに全てのプロセッサ上でハイパーバイザとして実行させる、項目8に記載の方法。
(項目10)
前記FTVMMは、予約メモリの中の前記SLATを使用して、メモリアクセスを追跡する、項目8に記載の方法。
(項目11)
前記スタンバイメモリへのシステムメモリの前記完全メモリコピーは、前記FTドライバによって実施される、項目8に記載の方法。
(項目12)
前記アクティブメモリから前記第2のサブシステムメモリに前記修正されたメモリページのデータをコピーすることは、前記FTVMMが、前記FTドライバによる前記完全メモリコピー中にダーティにされた全てのページのコピーを取得することで始まる、項目11に記載の方法。
(項目13)
前記FTVMMは、ダーティページビットマップを前記FTドライバに提供する、項目12に記載の方法。
(項目14)
前記FTドライバへの前記ダーティページビットマップの提供は、前記FTドライバによるダーティページデータの前のコピー中にダーティにされた任意のページに関して起こる、項目13に記載の方法。
(項目15)
前記SMMは、メモリからプロセッサ状態を復元することによって、前記ミラーリングされた実行の状態に入る、項目8に記載の方法。
(項目16)
前記SMMは、プロセッサ状態が復元された後、前記FTドライバに戻り、ミラーリングされた実行に入ることを完了する、項目15に記載の方法。
(項目17)
前記Dビットの収集は、前記SLATから周期的に実施されるか、または、PMLを使用して連続的に実施される、項目8に記載の方法。
本発明の構造および機能は、付随する図面と併せて本明細書の説明から最良に理解されることができる。図は、必ずしも一定の縮尺ではなく、代わりに、概して、例証的原理を強調している。図は、全ての側面で例証的と見なされるものであり、その範囲が請求項のみによって定義される、本発明を限定することを意図していない。
図1は、本発明を利用するシステムの実施形態の略図である。
図2A-2Cは、ミラーリングの種々の段階中のOS、ハイパーバイザ、ゲストVM、FT仮想マシンマネージャ(FTVMM)、およびFTサーバ内の他の層のオペレーティングソフトウェアおよび実行状態の実施形態の略図である。 図2A-2Cは、ミラーリングの種々の段階中のOS、ハイパーバイザ、ゲストVM、FT仮想マシンマネージャ(FTVMM)、およびFTサーバ内の他の層のオペレーティングソフトウェアおよび実行状態の実施形態の略図である。 図2A-2Cは、ミラーリングの種々の段階中のOS、ハイパーバイザ、ゲストVM、FT仮想マシンマネージャ(FTVMM)、およびFTサーバ内の他の層のオペレーティングソフトウェアおよび実行状態の実施形態の略図である。
図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。 図3A-3Xは、本発明に従って構築されるプロセスの実施形態の例示的ステップを示す一連の概略図である。
要するに、図1を参照すると、FTサーバ10の実施形態のブロック図が描写されている。本実施形態では、FTサーバは、2つの同一の物理的プロセッサまたはサーバサブシステム14および18を含む。両方のプロセッササブシステムは、同時に動作することができ、同一のプロセスが、同じデータに働き掛ける。一方のプロセッササブシステム14は、便宜上、現在アクティブなプロセッササブシステム、または第1のプロセッササブシステムと称され、出力データをユーザに提供する。両方のサブシステムが、同じデータを同時に処理しているが、データを処理している他方のプロセッササブシステム18は、便宜上、第2のサブシステム、現在アクティブではないサブシステム、またはミラーサブシステムと称される。両方のシステムが同等であり、高信頼性のミラーリングされた実行の状態で動作しているとき、同じプログラムを同時に実行していることに留意されたい。
各プロセッササブシステムは、CPU22、22’と、メモリ26、26’と、フィールドプログラマブルゲートアレイ(FPGA)30、30’と、入力/出力(I/O)モジュール34、34’とを含む。一実施形態では、2つの物理的プロセッササブシステム14および18は、同じバックプレーン38上に常駐し、バックプレーン38を使用して互いに通信する。FPGA30、30’は、現在アクティブなメモリ26からミラーメモリ26’へのデータの転送(矢印A、A’、およびA”)を調整し、それによって、FTドライバは、両方の(現在アクティブおよびミラーリングされた)サブシステム14、18内で同一のメモリコンテンツを作成できる。I/Oモジュール34、34’は、2つのサブシステム14および18が、ネットワークインターフェース(NI)46を通してディスク記憶装置42およびネットワーク等の外界と通信することを可能にする。
本議論は、2つのプロセッササブシステムを伴う実施形態の観点からであるが、3つ以上のプロセッササブシステムが、FTサーバシステムで使用されることができる。複数のプロセッササブシステム、例えば、3プロセッサ(例えば、A、B、C)サブシステムFTサーバの場合、3つのプロセッササブシステムのミラーリングは、2つのステップで実施される。第1のプロセッササブシステムAおよびBが、ミラーリングされ、次いで、結果として生じるミラーリングされたA、Bプロセッササブシステムが、Cプロセッササブシステムにミラーリングされる等。
上記のように、サーバのネイティブオペレーティングシステムは、特に仮想マシン(VM)システムが使用されるとき、アクティブメモリ26からミラーメモリ26’にダーティページをコピーするための好適なインターフェースを提供しないこともある。例えば、Intel HaswellおよびBroadwellプロセッサ(Intel Corporation(SantaClara,CA USA))等のいくつかの物理的プロセッサは、複数の仮想オペレーティングシステムがシステム実行の多くの側面の完全制御を伴って同じ物理的プロセッサを同時に共有することを可能にするVMXルート動作を含むハードウェア仮想化能力の組を提供する。仮想マシンの各々は、ホストハイパーバイザの制御下で、それら自身のオペレーティングシステムを有する。そのようなシステムは、これらの仮想マシンによって使用されるメモリのためにダーティページを検出およびコピーするためのインターフェースを提供しないこともある。
より詳細には、図2A-2Cは、種々の動作を受けるときのFTサーバの状態を層状ソフトウェア図として描写する。図2Aを参照すると、通常のミラーリングされていない動作では、FTサーバシステム内の層は、FPGA30を含むハードウェア層100と、システムユニバーサルエクステンシブルファームウェアインターフェース(UEFI)BIOS108を含むサーバファームウェア層104と、ゼロに初期化されるゼロ層の予約メモリ領域112とを含む。
ゼロ層の予約メモリ112は、ブート時にBIOS108によって予約される。FTサーバシステムのメモリの殆どは、オペレーティングシステムおよびソフトウェアによる使用のために利用可能であるが、予約メモリ112は、そうではない。予約メモリ領域112のサイズは、FTVMMと、SLATテーブルとのための十分な空間を提供し、SLATテーブルは、4KB(4キロバイト)ページ粒度と、全てのシステムメモリの1対1のマッピングとで構成される。一実施形態では、4レベルSLATテーブルは、ダーティビットおよびアクセスされたビット設定を伴うメモリマップを提供し、ダーティビットおよびアクセスされたビット設定は、オペレーティングシステムカーネルおよび他のソフトウェアによって修正される全てのメモリページを識別するであろう。4レベルSLATは、4キロバイト粒度を伴うメモリの各ワードをアドレスするために十分な粒度を提供するために十分であるが、他のページサイズおよびマッピングも可能である。
次の層(L1)120は、FTカーネルモードドライバ122を含むFTサーバサブシステムのためのオペレーティングシステムおよびドライバと、共通に使用されるハイパーバイザホスト124とを含む。
最後の層(L2)130は、プロセス、アプリケーション、およびその他134等の通常動作時にVMCS仮想化構造によって制御されない仮想化されていないサーバソフトウェアコンポーネントを含み、それは、任意の仮想マシンゲスト(VM)138、138’を含む。仮想化されていないソフトウェアコンポーネント134は、FT管理層136を含む。各仮想マシンゲスト(VM)は、VMゲストオペレーティングシステム(VMOS)142、142’と、VMに関連付けられるSLATテーブル(SLAT L2)146、146’とを含む。各VM138、138’の中、そのVMに配分される仮想プロセッサ0-Nの各々のために1つずつ、VMに関連付けられた1つ以上の仮想マシン制御構造(VMCS-N、概して、150、150’)も含まれる。示される略図では、仮想プロセッサVMCSは、VMCS0~VMCS-Nと標識される。各VMCSは、ゲスト物理アドレスをシステム物理アドレスに変換するマッピングを提供可能なSLATテーブルポインタ(Intel拡張ページテーブルポインタEPTP等)を有効にするための制御フィールドを含む。
ここで図2Bを参照すると、ミラーリングの開始時、FTサーバは、ミラーリングされていないモードで動作している。FT管理層136は、FTカーネルモードドライバ(FTドライバ)122に、ミラーリングされた実行に入るためのコマンドを処理することを始めさせる。FTカーネルモードドライバ122は、FT仮想マシンモニタ(FTVMM)コード180、FTVMMデータ184、SLAT L0 188、およびVMCS-L0アレイ192のプログラムおよびデータコードを予約メモリ領域にロードすること、または書き込むことを行う。
FTドライバは、各プロセッサのためのVMCS L0を初期化し、FTVMMがインストールされ、ハイパーバイザとして実行するようにし、それによって、ハイパーバイザのプログラムコードは、FTサーバ内で起こる全VMEXITイベント(すなわち、ゲストL2からゲストを制御するハイパーバイザの中へ実行を転送するプロセッサ機構)によって直接実行される。FTVMMは、FTVMMがインストールされておらずアクティブではないかのように全VMEXITを処理し、OS1、OS2、OS共通使用ハイパーバイザL1、およびゲストL2が、機能的に正常な様式でそれらの処理を継続するであろうような様式で、VMEXITを引き起こしたイベントの通常の取り扱いをエミュレートする。
この時点で、メモリコンテンツの転送は、「ブラウンアウト(brownout)」および「ブラックアウト(blackout)」と称される2つの条件下で行われる。ミラーリング、ブラウンアウト、およびブラックアウトは、初期FTサーバ後の数分以内に定常状態動作が達成されると、または、プロセッササブシステムが起動FTサーバ上のハードウェアエラー後に稼働するように戻される度に行われ得る。ブラウンアウト段階中、通常システム作業負荷は、処理され、プロセッサは、算出を行い、アクティブメモリにアクセスしてそれを修正し続ける。ブラウンアウト中に(メモリを第2のサブシステムにコピーしている間に)メモリ書き込みによって引き起こされるダーティページは、追跡され、次のブラウンアウトまたはブラックアウト段階でコピーされる。FTVMMは、各段階で修正されたメモリページを識別するためのダーティページビットマップを提供する。ブラウンアウト段階0では、新たにダーティにされたページを追跡しながら、全てのメモリが、コピーされる。ブラウンアウト段階1および以降では、前の段階中のダーティにされたページのみが、コピーされる。ブラックアウトでは、1つを除く全てのプロセッサが、一時停止され、割り込みが、無効にされる。いかなるシステム作業負荷も、ブラックアウト中に処理されない。前の(ブラウンアウト)段階からのダーティにされたページは、コピーされ、最終的な修正されたページ範囲リストが、作成される。そして、残りのダーティページおよびアクティブプロセッサ状態は、ミラーメモリにコピーされる。これが完了すると、FTドライバは、システム管理割り込みを生成し、全てのプロセッサは、ファームウェアUEFI BIOSおよびファームウェアSMMモジュール内で実行され、ファームウェアUEFI BIOSおよびファームウェアSMMモジュールは、FPGAを使用してウォームリセットを生成し、ミラーリングされた実行の状態に入る。ファームウェアSMMは、FTドライバに対して再開を実施し、FTドライバは、ブラックアウト段階を完了し、FTVMMをアンロードし、一時停止されたプロセッサを解放し、割り込みを有効にし、ミラーリングされた実行のための要求のその取り扱いを完了する。
ここで図2Cを参照して、ミラーリングプロセスが完了すると、予約メモリ112の中のFTVMMコード180は、アンロードされ、もはや実行されなくなる。FTサーバは、依然として、ミラーリングされた実行モードで動作している。FTVMMデータ184、SLAT188、およびVMCS192は、使用されず、予約メモリは、アイドルであり、次のエラー状態を待っている。
より詳細には、ミラーリングメモリのためのステップを示す例示的システム表現が、図3A-3Xに示される。種々のステップおよび関連特徴が、図3A-3Xに示される。ステップの組み合わせおよび一部を含む種々のステップが、種々の実施形態で使用されることができる。ステップ1-22の議論が、以下に続き、図3Aから始まって、図3Xまで、かつそれを含んで継続し、ステップ1-22および関連付けられる詳細は、以下の通りである。
(ステップ1-FTサーバ電源オンおよびリセット)
FTサーバシステムは、電源をオンにされ、ハードウェアリセットを実施する。
(ステップ2-FTサーバファームウェアがメモリを構成する)
FTサーバUEFIおよびBIOSファームウェアは、システムメモリの全てを検出し、オペレーティングシステムによって使用され得るメモリのエリアを定義するためのメモリ構成テーブルの組を作成する。
(ステップ3-FTサーバファームウェアが予約メモリ領域を作成する)
UEFI BIOSは、FTVMMによる使用のためにシステムメモリの最上部における領域を予約する。このメモリ領域は、オペレーティングシステムによる使用のために利用可能ではない予約システムメモリのタイプとして、メモリ構成テーブルの中で定義される。予約メモリのこの領域は、本明細書では「予約メモリ領域」と称される。UEFI BIOSは、全てゼロから成るデータパターンを予約メモリ領域に書き込む。予約メモリ領域のサイズは、(Intelプロセッサ用の完全にデータ投入された4レベルSLATテーブル等の)完全にデータ投入された4レベルSLATテーブルを含むために十分な空間を含み、SLATテーブルは、4キロバイトページサイズ粒度を伴うFTサーバの物理メモリの全てをマップするように構成される。これは、全てのシステムメモリの1/512より多くを要求する。1テラバイトのサイズの物理メモリを伴うFTサーバに関して、予約メモリ領域は、2.25Gバイトを占有し得る。このメモリは、メモリの最上部に位置し得る(システムの最大のデータ投入された物理メモリアドレスまで、およびそれを含む)。一実施形態では、UEFIファームウェアは、その関係((システムメモリサイズ/512)+256MB)を使用し、予約メモリ領域のサイズを決定する。
(ステップ4-FTサーバがブートし、完全に動作可能になる)
FTサーバオペレーティングシステムは、そのブートおよび始動シーケンスを完了し、サーバのために構成される作業負荷が処理され得る完全動作状態に入る。FTサーバ動作の状態は、上で議論されるように図2Aに描写される。ロードされたFTカーネルモードドライバ(FTドライバ)およびFT管理層が、存在し、起動している。FTサーバが1つ以上のゲスト仮想マシンで構成される場合、オペレーティングシステムの共通使用ハイパーバイザが、存在し得、仮想マシンゲストは、それら自身のオペレーティングシステムおよびゲストのために構成された作業負荷を実行していることもある。
(ステップ5-FT管理層がミラーリングされた実行を要求する)
FT管理層は、第2のサーバサブシステムがFTサーバに存在することを検出する。FT管理層は、第2のサーバサブシステムを動作させるように、かつFTサーバを高信頼性のミラーリングされた実行の状態に移行させるようにFTドライバに要求するためのFTドライバへの関数呼び出しまたはコマンドを実施する。
(ステップ6-FTドライバが第2のサブシステムに電力を印加する)
FTドライバは、FTサーバFPGAを使用し、第2のサブシステムへの電源オンおよびハードウェアリセットを実施する。第2のサブシステムは、第2のサブシステム内のプロセッサおよびメモリコンポーネントを初期化するそのFTサーバファームウェア(UEFIおよびBIOS)における診断プログラムを完了する。第2のサブシステムは、FTドライバがメモリコピー動作を要求およびプログラムした場合、FTサーバFPGAおよび他のハードウェアコンポーネントが第1のサーバサブシステムから第2のサーバサブシステムの中へのメモリコピーを実施することができる動作状態に入る。
FTドライバは、FTサーバFPGAを使用し、外部ハードウェアデバイス(I/Oデバイス)によって引き起こされる全てのダイレクトメモリアクセス(DMA)メモリ書き込みが第1のサーバサブシステムと第2のサブシステムとへの同一のメモリ書き込みを並行して実施するであろう動作状態(Snarfモードと称される)に入る。このようにして、IO動作は、2つのサブシステム間のメモリ差を引き起こさないであろう。FPGA Snarfモードは、FTサーバがミラーリングされた実行の状態に移行した後、ファームウェアSMMモジュールによって無効にされるか、または終了させられるであろう。
(ステップ7-FTドライバがコードおよびデータを予約メモリ領域に書き込む)
FTドライバは、FTVMMコード、データ、およびSLATテーブルメモリコンテンツ、ならびに他のデータを予約メモリ領域に書き込む。予約メモリ領域中のSLATは、SLAT L0と称され得る。一実施形態では、FTドライバは、データを予約メモリ領域に書き込む動作を実施するために、オペレーティングシステムのメモリマッピング機能を使用し、ダイレクトメモリアクセス(DMA)コントローラまたはFTサーバFPGA等のハードウェアリソースも使用し得る。
(ステップ8-FTVMMコードを実行することに先立ったFTサーバソフトウェアコンポーネントの状態の説明)
この段階で、FTサーバソフトウェアコンポーネントは、通常動作で起動している。OS1およびOS2ソフトウェアならびにプログラムコンポーネントは、仮想化された状態で実行していないこともある。オペレーティングシステムの共通使用ハイパーバイザ(ハイパーバイザL1)は、存在する場合、ゲストが存在する場合にそれが制御するゲスト仮想マシン(ゲストL2、L2’)からの各VMEXITを処理し続ける。
そのVMEXITイベントがハイパーバイザL1によって取り扱われるゲスト仮想マシンが全く存在しないことも、多く(数百個)存在することもある。さらに、ハイパーバイザL1の2つ以上の論理インスタンスが存在し得る。動作のこの段階で、FTVMMコードが任意のプロセッサによって実行される前、システムは、予約メモリ領域が、所望のコード、データ、およびSLATテーブルメモリコンテンツを用いてFTドライバによって書き込まれていること、または初期化されていることを除いて、図2Aに描写される状態にある。
図2Aも参照すると、OS1およびOS2は、通常動作にある。ハイパーバイザL1は、通常ハイパーバイザ動作状態にある。ゲストL2は、通常ゲスト動作状態にある。用語「通常ハイパーバイザ動作」および「通常ゲスト動作」は、ゲストL2における動作がVMEXITを発生させるとき、ハイパーバイザL1のプログラムコードがプロセッサのVMEXIT挙動によって直接呼び出されること、または実行されることを部分的に含意するものとして理解されることができる。
(ステップ9-FTドライバが、全てのプロセッサ上でドライバコードを同時に、または並行して実行し、次いで、FTVMMコードに全てのプロセッサ上でハイパーバイザとして実行させる)
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ドライバコード内のプロセッサ命令を実行すること。
(ステップ10-FTVMMが、ハイパーバイザとして全てのプロセッサ上でそのコードを同時に、または並行して実行する)
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命令を実施する。
(ステップ11-FTVMMが、FTサーバ内の全てのソフトウェアプログラムのためのハイパーバイザとして動作し、FTサーバ内の全てのソフトウェアプログラムが、FTVMMのゲストとして動作する)
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に描写される。
FTVMMは、PMLアドレス(PMLログアドレス)およびPMLインデックスのためのVMCSフィールドへのVMWRITEを実施し、VMCSのPML有効化実行制御ビットを設定することによって、この特徴をサポートするIntel Broadwellプロセッサ等のプロセッサのために、各VMCS L0においてIntelページ修正ロギング(PML)機能を有効にし得る。FTVMMは、PML機能を使用し、各プロセッサが生成するダーティにされたメモリページの場所および数を追跡し得る。FTVMMは、時として、PMLログフルイベントによって引き起こされるVMEXITを取り扱うとき、100マイクロ秒遅延等の時限遅延ループを実施し、ブラックアウトメモリコピー段階でダーティにされたページのより小さい組を生成するために、多数のダーティにされたページを生成したゲスト処理コンテキストを減速させ得る(スロットルと称される)。
FTVMMがアクティブである間、FTサーバシステムは、図2Bに描写される状態にある。FTサーバ上で構成される、全コードパス、OSルーチン、ドライバ、作業負荷、またはプログラムは、仮想化された動作モード(Intel VMX非ルートモード)で実行している。FTVMMは、VMEXITを処理し、FTVMMが存在せずアクティブではなかった場合に起こったであろう状態と厳密に同等の結果として生じる状態を生成し、VMRESUMEまたはVMLAUNCHを実施して、FTVMMへのVMEXITによって中断されたコードパスまたは処理フローの実行を再開することによって、FTサーバ上で起動するコードからの全てのVMEXITSを取り扱う。
(ステップ12-FTドライバが、機能インターフェースを使用し、FTVMMを管理し、それと通信する)
図2Bに描写される状態にある間、FTカーネルモードドライバは、機能インターフェースを使用し、機能インターフェースは、コマンドをFTVMMに送信し、FTVMMからデータを受信することと、ミラーリングされた実行状態を作成し、その状態に入るために要求されるダーティメモリページのビットマップを生成および取得することとを行うためにVMCALL命令を実施し得る。これらのコマンドに応答するために、FTVMMは、VMCALLプロセッサ命令によって引き起こされる全VMEXITの起源を決定し、そして、FTカーネルモードドライバからのVMCALLイベントを高レベル機能コマンドとして解釈し得る。機能インターフェースは、メモリページ追跡有効化、ブラックアウトページ追跡有効化、ダーティページビットマップ要求、FTVMMアンロード要求と称される機能を実施するための論理コマンドの組、およびFTVMM動作を制御するために使用され得る他の機能コマンドを使用する。
(ステップ13-FTVMMが、各仮想マシンゲストL2のVMCS-N物理アドレスを取得することによって、SLAT L2と称される各ゲストL2の現在のSLATテーブル場所を抽出および追跡する)
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のためのダーティページビットマップにおけるダーティページビットを見出すために使用されるであろう。
(ステップ14-ブラウンアウトメモリコピー段階0で、FTドライバが、全てのシステムメモリを第2のサブシステムにコピーする)
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サーバは、この処理中、その構成された作業負荷を実施し続ける。
(ステップ15-ブラウンアウトメモリコピー段階1で、FTドライバが、ダーティページビットマップを取得し、メモリの新たにダーティにされたページを第2のサブシステムにコピーする)
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のサブシステムにコピーする高速メモリ転送動作を実施し得る。
(ステップ16-ブラウンアウトメモリコピー段階2-Nで、FTドライバは、別のダーティページビットマップを取得し、新たにダーティにされたページを第2のサブシステムにコピーするために1回以上同じシーケンスを繰り返し得る)
プロシージャメモリコピー段階1は、最終ブラウンアウトメモリコピー段階N中にシステム作業負荷によって生成され得るダーティにされたページのより小さい結果として生じる組を取得するために、1回数以上繰り返され得る。
(ステップ17-ブラックアウトメモリコピーでは、FTドライバが、全てのプロセッサ上でドライバコードを同時に、または並行して実行し、ダーティにされたページの最終の組を第2のサブシステムにコピーする)
FTドライバは、FTサーバ内の他のプログラムがより多くのダーティページビットを生成することを防止するために、全てのプロセッサに、各プロセッサ上のシステム割り込み処理を無効にさせる。FTドライバは、ブラックアウトページ追跡有効化コマンドを発行し、それは、VMCALL機能インターフェースを使用し、FTVMMに最近ダーティにされたメモリページの組を識別させ、FTVMMにVMCS-NおよびSLAT L2等のある揮発性または頻繁に修正されるメモリページも識別させ、ダーティにされたページの組の中にこれらのページを含ませる。FTVMMは、FTVMMにおけるプロセッサ#0を除く、全てのプロセッサを一時的に一時停止させ得る。そして、FTドライバは、別のVMCALL機能インターフェースコマンド、すなわち、ダーティページビットマップ要求を発行し、ダーティページのビットマップを取得する。そして、FTVMMは、最近修正されたページの記録を含むダーティページビットマップを提供し、FTドライバのデータエリアの中に位置するメモリバッファにこのデータを記憶する。そして、FTドライバは、ダーティページビットマップにおいて識別される物理メモリページの組を第2のサブシステム内の対応する物理メモリアドレスにコピーする。そして、FTドライバは、(予約メモリ領域のためのメモリ範囲を含む)ダーティである、または修正されると仮定されるメモリ範囲のリストを作成し、最終ブラックアウトメモリ範囲リストと称されるデータ構造の中にこの情報を記憶する。このプロシージャは、システム作業負荷が実行されず、作業負荷がダーティにされたページの最終組が第2のサブシステムにコピーされている間、短いサーバ処理停止を経験するので、ブラックアウトメモリコピーと称される。
(ステップ18-FTドライバが、FTサーバFPGAおよびファームウェアSMMモジュールを使用し、ミラーリングされた実行の状態に入る)
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ドライバに戻る。システムは、ミラーリングされた実行の状態で実行し続ける。
(ステップ19-FTドライバが、全てのプロセッサ上でドライバコードを同時に、または並行して実行し、そして、FTVMMにFTVMMをアンロードするためのプログラムを全てのプロセッサ上で実行させる)
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のゲストフィールドを使用して、ゲストとして実行するであろう。
(ステップ20-FTドライバが、各プロセッサ上でゲストとして実行され、全てのプロセッサ上でハイパーバイザとしてFTドライバへのVMEXITを引き起こす)
各プロセッサは、プロセッサのVMCS L0のゲストフィールドによって制御される様式で、FTドライバにおいてドライバプログラムコードを実行する。各プロセッサは、VMEXITイベントを発生させる命令を実行する。各プロセッサは、VMCS L0のホストフィールドによって制御される様式で、FTドライバにおいて同じドライバプログラムコードを実行し続ける。
(ステップ21-FTドライバが、現在アクティブなL2ゲストが通常ゲスト動作で動作することを可能にするためのプロセッサ命令を実行する)
各プロセッサは、命令のオペランドとして、そのプロセッサのための現在アクティブなゲストL2のVMCS-Nを用いてVMPTRLD等の命令を実施し、存在する場合、ゲストL2のための後続の通常ゲスト動作を有効にする。各プロセッサは、プロセッサレジスタ設定およびコンテンツの組(汎用プロセッサレジスタ、プロセッサセレクタレジスタ、Intel VMXOFFまたはVMXON等の他のハードウェア仮想化状態、およびプロセッサ状態ならびにコンテキストの他の要素等)を書き込む、または生成するための一連の命令を実施し、FTドライバおよびシステムに存在する他のソフトウェアの後続の通常動作を有効にする。
(ステップ22-FTドライバおよびFT管理層がミラーリングされた実行のための要求を完了する)
FTドライバは、FTサーバが、サーバおよびそのゲスト仮想マシンのために構成される作業負荷を処理し続け得るように、全てのプロセッサ上でその実行を完了する。FTサーバ動作のこの段階は、図2Cに描写される。FTドライバは、それがFT管理層から受信した機能要求を完了し、要求に関する完了ステータスを返す。FT管理層は、その要求の完了を取り扱い、イベントログバッファまたは他のロギング機構においてメッセージを生成し、FTサーバがミラーリングされた実行の高信頼性状態に入ったことを示し得る。
以下の議論から明白であるように別様に具体的に記述されない限り、説明の全体を通して、「処理する」、または「算出する」、または「計算する」、または「遅延させる」、または「比較する」、「生成する」、または「決定する」、または「転送する」、または「延期する」、「完遂する」、または「中断する」、または「取り扱う」、または「受信する」、または「バッファする」、または「配分する」、または「表示する」、または「フラグを付ける」、もしくはブール論理または他の設定された関連動作等の用語を利用する議論は、コンピュータシステムまたは電子デバイスのレジスタおよびメモリ内の物理的(電子)数量として表されるデータを操作し、電子メモリまたはレジスタ、もしくは他のそのような情報記憶、伝送、または表示デバイス内の物理的数量として同様に表される他のデータに変換するコンピュータシステムまたは電子デバイスのアクションおよびプロセスを指すことを理解されたい。
本明細書で提示されるアルゴリズムは、本質的には、いかなる特定のコンピュータまたは他の装置にも関連しない。種々の汎用システムが、本明細書の教示によるプログラムと併用され得る、または要求される方法ステップを実施するためにより特殊な装置を構築することが便利であることが証明され得る。種々のこれらのシステムのための要求される構造は、上記の説明から明白である。加えて、本発明は、任意の特定のプログラミング言語を参照して説明されず、種々の実施形態は、したがって、種々のプログラミング言語を使用して実装され得る。
いくつかの実装が説明されている。それでもなお、本開示の精神および範囲から逸脱することなく、種々の修正が行われ得ることを理解されたい。例えば、ステップが並べ替えられる、追加される、または除去される、上で示されるフローの種々の形態が、使用され得る。故に、他の実装も、以下の請求項の範囲内である。
本明細書で提示される実施例は、本開示の潜在的かつ具体的実装を図示することを意図している。実施例は、主に、当業者のための本発明の例証の目的のために意図されている。実施例のいかなる1つまたは複数の特定の側面も、必ずしも本発明の範囲を限定することを意図しているわけではない。
本発明の図および説明は、明確にする目的のために、他の要素を排除する一方で、本発明の明確な理解のために関連性がある要素を例証するように、単純化されている。しかしながら、当業者は、これらの種類の集中的な議論が、本開示のさらなる理解を促進せず、したがって、そのような要素のより詳細な説明が、本明細書で提供されないことを認識し得る。
本実施形態に関連付けられるプロセスは、コンピュータ等のプログラマブル機器によって実行され得る。プログラマブル機器にプロセスを実行させるために採用され得るソフトウェアまたは命令の他の組は、例えば、コンピュータシステム(不揮発性)メモリ、光ディスク、磁気テープ、または磁気ディスク等の任意の記憶デバイスの中に記憶され得る。さらに、プロセスのうちのいくつかは、コンピュータシステムが製造されるとき、またはコンピュータ読み取り可能なメモリ媒体を介して、プログラムされ得る。
本明細書に説明されるあるプロセス側面がプロセスステップを実施するようにコンピュータまたはコンピュータシステムに指図する1つまたは複数のコンピュータ読み取り可能なメモリ媒体上に記憶された命令を使用して、実施され得ることも理解されたい。コンピュータ読み取り可能な媒体は、例えば、ディスケット、読み取り専用および読み取り/書き込み種類の両方のコンパクトディスク、光ディスクドライブ、ならびにハードディスクドライブ等のメモリデバイスを含み得る。コンピュータ読み取り可能な媒体は、物理的、仮想、恒久的、一時的、半恒久的、および/または半一時的であり得るメモリ記憶装置も含み得る。
本明細書に開示されるコンピュータシステムおよびコンピュータベースのデバイスは、情報を取得、処理、および通信することにおいて使用されるあるソフトウェアアプリケーションを記憶するためのメモリを含み得る。そのようなメモリは、開示される実施形態の動作に関して内部または外部にあり得ることを理解されたい。メモリは、ハードディスク、光ディスク、フロッピー(登録商標)ディスク、ROM(読み取り専用メモリ)、RAM(ランダムアクセスメモリ)、PROM(プログラマブルROM)、EEPROM(電気的消去可能PROM)、および/または他のコンピュータ読み取り可能なメモリ媒体を含むソフトウェアを記憶するための任意の手段も含み得る。種々の実施形態では、「ホスト」、「エンジン」、「ローダ」、「フィルタ」、「プラットフォーム」、または「コンポーネント」は、種々のコンピュータまたはコンピュータシステムを含み得るか、もしくはソフトウェア、ファームウェア、および/またはハードウェアの合理的な組み合わせを含み得る。
本開示の種々の実施形態では、1つまたは複数の所与の機能を果たすために、単一のコンポーネントが、複数のコンポーネントによって置換され得、複数のコンポーネントが、単一のコンポーネントによって置換され得る。そのような置換が本開示の実施形態を実践するように機能しないであろう場合を除いて、そのような置換は、本開示の範囲内である。サーバのうちのいずれかは、例えば、協調的機能のために位置し、構成される「サーバファーム」またはネットワーク化されたサーバの他のグループ(例えば、サーバブレードのグループ)によって置換され得る。サーバファームは、ファームの個々のコンポーネントの間で作業負荷を分散させる役割を果たし得、複数のサーバの集合的かつ協調的能力を利用することによって、算出プロセスを促進し得ることを理解されたい。そのようなサーバファームは、例えば、異なるマシンからの処理能力の需要を追跡すること、ネットワーク需要に基づいてタスクを優先し、スケジュールすること、および/またはコンポーネント故障もしくは動作可能性の低減の場合にバックアップ随伴性を提供すること等のタスクを遂行する負荷分散ソフトウェアを採用し得る。
一般に、本明細書に説明される種々の実施形態、またはそれらのコンポーネントもしくは部品は、ソフトウェア、ファームウェア、および/またはハードウェア、もしくはそれらのモジュールの多くの異なる実施形態で実装され得ることが、当業者に明白であり得る。本実施形態のうちのいくつかを実装するために使用される、ソフトウェアコードまたは特殊制御ハードウェアは、本開示の限定ではない。コンピュータソフトウェアおよび他のコンピュータ実装命令のためのプログラミング言語は、実行前にコンパイラまたはアセンブラによって機械言語に変換され得る、および/またはインタープリタによって実行時に直接変換され得る。
アセンブリ言語の実施例は、ARM、MIPS、およびx86を含み、高レベル言語の実施例は、Ada、BASIC、C、C++、C#、COBOL、Fortran、Java(登録商標)、Lisp、Pascal、Object Pascalを含み、スクリプト言語の実施例は、Bourneスクリプト、Java(登録商標)Script、Python、Ruby、PHP、およびPerlを含む。種々の実施形態は、例えば、Lotus Notes環境で採用され得る。そのようなソフトウェアは、例えば、磁気または光学記憶媒体等の任意のタイプの1つまたは複数の好適なコンピュータ読み取り可能な媒体上に記憶され得る。したがって、実施形態の動作および挙動は、実際のソフトウェアコードまたは特殊ハードウェアコンポーネントを具体的に参照することなく説明される。当業者は、合理的な努力のみを用いて、必要以上の実験を伴わずに、本明細書の説明に基づいて本開示の実施形態を実装するように、ソフトウェアおよび制御ハードウェアを設計することが可能であろうことが、明確に理解されるため、そのような具体的参照の欠如は、実現可能である。
本明細書に説明されるシステムおよび方法の種々の実施形態は、1つ以上の電子コンピュータネットワークを採用し、異なるコンポーネントの間の通信を助長する、データを転送する、またはリソースおよび情報を共有し得る。そのようなコンピュータネットワークは、ネットワーク内のデバイスを相互接続するために使用される、ハードウェアおよびソフトウェア技術に従って、分離されることができる。
コンピュータネットワークは、アクティブネットワーキング、クライアント・サーバ、またはピアツーピア機能アーキテクチャ等のネットワークの要素またはコンポーネントの間の機能的関係に基づいて、特徴付けられ得る。コンピュータネットワークは、例えば、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スターバスネットワーク、または階層トポロジネットワーク等のネットワークトポロジに従って、分類され得る。コンピュータネットワークはまた、デジタルおよびアナログネットワーク等のデータ通信に採用される方法に基づいて、分類され得る。
本明細書に説明される方法、システム、およびツールの実施形態は、共通ルーティング技術を通して、2つ以上の明確に異なる電子コンピュータネットワークもしくはネットワークセグメントを接続するためのインターネットワーキングを採用し得る。採用されるインターネットワークのタイプは、インターネットワーク内の管理および/または関与に依存し得る。インターネットワークの非限定的例は、イントラネット、エクストラネット、およびインターネットを含む。イントラネットおよびエクストラネットは、インターネットへの接続を有することも、有しないこともある。インターネットに接続された場合、イントラネットまたはエクストラネットは、適切な認証技術または他のセキュリティ対策を用いて保護され得る。本明細書で適用されるように、イントラネットは、管理エンティティによる共通制御下で、インターネットプロトコル、ウェブブラウザ、および/またはファイル転送アプリケーションを採用するネットワークのグループであり得る。そのような管理エンティティは、イントラネットへのアクセスを例えば、認可ユーザのみ、または団体もしくは商業エンティティの別の内部ネットワークに制限し得る。
別様に示されない限り、本明細書および請求項で使用される、長さ、幅、深度、または他の寸法等を表す全ての数字は、示されるような正確な値および用語「約」によって修正されるものの両方を示すものとして、全ての事例で理解されるものである。本明細書で使用されるように、用語「約」は、公称値からの±10%変動を指す。故に、そうではないと示されない限り、本明細書および添付の請求項に記載される数値パラメータは、取得されることが求められる所望の性質に応じて変動し得る近似値である。少なくとも、原則の適用を請求項の範囲の均等物に限定しようとする指向ではないが、各数値パラメータは、報告される有効桁数を踏まえて、通常の丸め技法を適用することによって、解釈されるべきである。任意の具体的値は、20%だけ変動し得る。
本発明は、その精神または本質的特性から逸脱することなく、他の具体的形態で具現化され得る。前述の実施形態は、したがって、あらゆる点に関して本明細書に説明される発明では限定的ではなく例証的と見なされるものである。本発明の範囲は、したがって、前述の説明によってではなく添付の請求項によって示され、請求項の均等性の意味および範囲に入る全ての変更は、その中に包含されることを意図している。
種々の修正および変更が、説明される技術の範囲から逸脱することなく行われ得ることが、当業者によって理解されるであろう。そのような修正および変更は、説明される実施形態の範囲内に入ることを意図している。一実施形態に含まれる特徴が他の実施形態と交換可能であり、描写される実施形態からの1つ以上の特徴が任意の組み合わせで他の描写される実施形態とともに含まれ得ることも、当業者によって理解されるであろう。例えば、本明細書に説明される、および/または図に描写される種々のコンポーネントのうちのいくつかは、組み合わせられ、交換され、または他の実施形態から除外され得る。

Claims (17)

  1. FT(フォールトトレラント)サーバシステムにおいてアクティブメモリからスタンバイメモリにメモリを転送する方法であって、前記方法は、
    前記FTサーバシステムのBIOSを使用して、メモリの一部を予約するステップと、
    FTカーネルモードドライバをメモリにロードし、初期化するステップと、
    セカンドレベルアドレステーブル(SLAT)を含むFT仮想マシンマネージャ(FTVMM)を前記予約されたメモリの一部にロードし、初期化し、前記FTVMMにおける全てのプロセッサを同期化するステップと、
    予約メモリの中の前記FTVMMのSLATを使用して、OS(オペレーティングシステム)、ドライバ、ソフトウェア、およびハイパーバイザのメモリアクセスを追跡するステップと、
    ゲストに関連付けられた前記SLATの全てのページを追跡し、前記SLATを構成するメモリページへのハイパーバイザ書き込みを傍受することによって、ゲストVM(仮想マシン)メモリアクセスを追跡するステップと、
    ブラウンアウト状態レベル0に入るステップであって、前記ステップは、前記SLAT内のダーティビット(Dビット)を記録し、前記FTサーバシステムにおける全てのソフトウェアによるメモリ書き込みを追跡しながら、完全メモリコピーを実行することによる、ステップと、
    前記FTVMMSLATおよび各ゲストの現在のSLATにおけるDビットの全てを消去するステップと、
    全てのDビットを追跡する段階1-4のブラウンアウト状態に入るステップであって、前記ステップは、
    前記Dビットを収集することと、
    前記FTVMMSLATおよび各現在のゲストのSLATに関して、全てのプロセッサのキャッシュされた変換を無効にすることと、
    前記アクティブメモリから第2のサブシステムメモリに修正されたメモリページのデータをコピーすることと
    による、ステップと、
    ブラックアウト状態に入るステップであって、前記ステップは、プロセッサ#0を除く、前記FTVMM内の全てのプロセッサを一時停止させ、プロセッサ#0に関して前記FTカーネルモードドライバにおける割り込みを無効にすることによる、ステップと、
    前記 アクティブメモリからミラーメモリに収集されたデータをコピーするステップと、
    スタックおよび揮発性ページを含む最近ダーティにされたページの最終の組を収集するステップと、
    FPGA(フィールドプログラマブルゲートアレイ)を使用して、前記最近ダーティにされたページの最終組を前記ミラーメモリに転送するステップと、
    記FPGAおよびファームウェアSMM(システム管理モジュール)を使用して、ミラーリングされた実行の状態に入るステップと、
    前記FTVMMを終了させ、アンロードすることによって、動作のブラックアウト部分を完了するステップと、
    制御を前記FTカーネルモードドライバに返すステップと、
    通常FTシステム動作を再開するステップと
    を含む、方法。
  2. FTVMMコードは、通常FTシステム動作の再開後、予約メモリの中に留まる、請求項1に記載の方法。
  3. 前記予約メモリは、前記FTサーバシステムにおける最大既存物理メモリアドレスを含むそれ以下に位置している1/4ギガバイト~2.25ギガバイトの連続した物理メモリのメモリ領域である、請求項1に記載の方法。
  4. 前記アクティブメモリから前記第2のサブシステムメモリに前記修正されたメモリページのデータをコピーすることは、FPGAを使用する、請求項1に記載の方法。
  5. 前記FTカーネルモードドライバへの制御の返還は、前記FTカーネルモードドライバがVMEXITイベントを発生させることによる、請求項1に記載の方法。
  6. 前記FTカーネルモードドライバは、現在のゲストVMCS(VM制御構造)を現在かつアクティブにするためのオペランドとして前記現在のゲストVMCSを有するVMPTRLD(仮想マシンポインタロード)命令を実施することによって、各プロセッサ上の通常ゲストVM動作の条件に戻る、請求項1に記載の方法。
  7. 前記Dビットの収集は、前記SLATから周期的に実施されるか、または、ページ修正ロギング(PML)を使用して連続的に実施される、請求項1に記載の方法。
  8. 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(フィールドプログラマブルゲートアレイ)を使用して、前記最近ダーティにされたページの最終組を前記ミラーメモリに転送するステップと、
    記FPGAおよびファームウェアSMMを使用し、ミラーリングされた実行の状態に入るステップと、
    前記FTVMMをアンロードし、FTカーネルモードドライバに抜け出すことにより、前記FTVMMの動作を終えるステップと
    を含む、方法。
  9. 前記FTVMM内の全てのプロセッサの同期化は、FTVMMコードに全てのプロセッサ上でハイパーバイザとして実行させる、請求項8に記載の方法。
  10. 前記FTVMMは、予約メモリの中の前記SLATを使用して、メモリアクセスを追跡する、請求項8に記載の方法。
  11. 前記スタンバイメモリへのシステムメモリの前記完全メモリコピーは、前記FTカーネルモードドライバによって実施される、請求項8に記載の方法。
  12. 前記アクティブメモリから前記第2のサブシステムメモリに前記修正されたメモリページのデータをコピーすることは、前記FTVMMが、前記FTカーネルモードドライバによる前記完全メモリコピー中にダーティにされた全てのページのコピーを取得することで始まる、請求項11に記載の方法。
  13. 前記FTVMMは、ダーティページビットマップのデータを前記FTカーネルモードドライバに提供する、請求項12に記載の方法。
  14. 前記FTカーネルモードドライバへの前記ダーティページビットマップの提供は、前記FTカーネルモードドライバによるダーティページデータの前のコピー中にダーティにされた任意のページに関して起こる、請求項13に記載の方法。
  15. 前記SMMは、メモリからプロセッサ状態を復元することによって、前記ミラーリングされた実行の状態に入る、請求項8に記載の方法。
  16. 前記SMMは、プロセッサ状態が復元された後、前記FTカーネルモードドライバに戻り、ミラーリングされた実行に入ることを完了する、請求項15に記載の方法。
  17. 前記Dビットの収集は、前記SLATから周期的に実施されるか、または、PMLを使用して連続的に実施される、請求項8に記載の方法。
JP2020500884A 2017-07-11 2018-06-26 フォールトトレラントサーバにおけるダーティページ追跡および完全メモリミラーリング冗長性のための方法 Active JP7164770B2 (ja)

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 JP2020526843A (ja) 2020-08-31
JP7164770B2 true 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)

* Cited by examiner, † Cited by third party
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
US11586514B2 (en) 2018-08-13 2023-02-21 Stratus Technologies Ireland 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
EP3948531A4 (en) * 2019-03-28 2022-10-26 INTEL Corporation DIRECT MEMORY ACCESS TRACKING FOR PASS-THROUGH DEVICES IN VIRTUAL ENVIRONMENTS
CN112015600A (zh) * 2019-05-28 2020-12-01 阿里巴巴集团控股有限公司 日志信息处理系统、日志信息处理方法及装置和交换机
US11641395B2 (en) 2019-07-31 2023-05-02 Stratus Technologies Ireland Ltd. Fault tolerant systems and methods incorporating a minimum checkpoint interval
US11620196B2 (en) 2019-07-31 2023-04-04 Stratus Technologies Ireland Ltd. Computer duplication and configuration management systems and methods
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
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
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016533555A (ja) 2013-09-30 2016-10-27 ヴイエムウェア インコーポレイテッドVMware,Inc. 仮想環境内での不揮発性メモリ状態の一貫した効率的ミラーリング

Family Cites Families (9)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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
US20190018746A1 (en) 2019-01-17
US10216598B2 (en) 2019-02-26
JP2020526843A (ja) 2020-08-31
EP3652640B1 (en) 2024-02-14
WO2019013965A1 (en) 2019-01-17
EP3652640A1 (en) 2020-05-20

Similar Documents

Publication Publication Date Title
JP7164770B2 (ja) フォールトトレラントサーバにおけるダーティページ追跡および完全メモリミラーリング冗長性のための方法
JP7474766B2 (ja) 高信頼性フォールトトレラントコンピュータアーキテクチャ
US10007546B2 (en) Operating-system exchanges using memory-pointer transfers
US20120117555A1 (en) Method and system for firmware rollback of a storage device in a storage virtualization environment
EP2053509B1 (en) System for and method of migrating one or more virtual machines
JP5254601B2 (ja) 資源回復するための方法、情報処理システムおよびコンピュータ・プログラム
US8473463B1 (en) Method of avoiding duplicate backups in a computing system
US20160342488A1 (en) Mechanism for providing virtual machines for use by multiple users
JP5911504B2 (ja) ストリーミング技術に基づくソフトウェア・イメージのアップグレード
US11989577B2 (en) Hypervisor hibernation
US20110066786A1 (en) Method of Suspending and Resuming Virtual Machines
US20110078682A1 (en) Providing Object-Level Input/Output Requests Between Virtual Machines To Access A Storage Subsystem
US10725770B2 (en) Hot-swapping operating systems using inter-partition application migration
WO2011002436A1 (en) Hypervisor-based management of local and remote virtual memory pages
US11972243B2 (en) Memory device firmware update and activation without memory access quiescence
US11693818B2 (en) Data migration in a distributive file system
US20230185465A1 (en) Fast restart of large memory systems
US20230115604A1 (en) Virtual machine replication using host-to-host pcie interconnections
EP3053040B1 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments
US11983081B1 (en) Orchestration of container failover between nodes of a cluster
US20240069980A1 (en) Disabling a processor facility on a new processor generation without breaking binary compatibility
US20240176739A1 (en) Fault tolerant systems and methods using shared memory configurations
US20240028456A1 (en) Unattended snapshot reversion for upgrades
WO2024118442A1 (en) Fault tolerant systems and methods using shared memory configurations
Bigelow Virtualization Explained

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