Virtual Machine Recovery via Shared Pooled Memory

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In high availability clusters of virtual machine hosts, restarting a virtual machine on a new host after a failure does not maintain the virtual machine's state and is a time-consuming process due to the need to recover the guest operating system and application, often requiring significant time and resources.

Innovation Solution

Implementing a shared memory architecture with pooled memory that allows for the resurrection of virtual machines on a new host using memory page tables, maintaining the virtual machine's state and reducing resource usage by avoiding the need for shadow virtual machines.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a virtual machine is restarted on a new host after host failure, then the virtual machine can continue running, but the virtual machine's state is lost and recovery time is significant

Engineering Contradiction:
Improvevirtual machine availabilityVSAvoidvirtual machine recovery time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary actions by continuously maintaining virtual machine memory states in pooled memory before failures occur. When a host fails, the memory state is already prepared and accessible in the shared pooled memory, eliminating the need for time-consuming state recovery and enabling immediate virtual machine resurrection on a new host.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The pooled memory architecture acts as an intermediary between virtual machines and physical hosts. By decoupling virtual machine memory states from specific host memory and storing them in shared pooled memory accessible by multiple hosts, the system enables seamless virtual machine migration and recovery without losing state information.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of manufacture

If virtual machine memory state is stored on local disk memory of the original host, then storage is simple, but the memory state becomes inaccessible to new hosts

Engineering Contradiction:
Improvememory storage simplicityVSAvoidmemory state accessibility
Core Design Contradiction:
Ease of manufactureVSAdaptability or versatility

Solution Approach 1:

The pooled memory architecture creates a universal memory space that serves multiple hosts simultaneously. Instead of dedicating memory to individual hosts, the pooled memory can be accessed by any host in the cluster, enabling any host to resume virtual machines from any other host while maintaining memory state integrity.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The system transitions from a one-to-one mapping between host memory and virtual machine memory to a many-to-many relationship through pooled memory. This dimensional change in memory architecture allows multiple hosts to access the same virtual machine memory states, enabling flexible failover and migration scenarios.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Data Source

PatentUS10853121B2Virtual machine recovery in shared memory architecture
Publication Date: 2020.12.01 VMWARE INC
  • US10853121B2 patent drawing
  • US10853121B2 patent drawing
  • US10853121B2 patent drawing

AI summary

Examples provide for virtual machine recovery using pooled memory. A shared partition is created on pooled memory accessible by a plurality of virtual machine hosts. A set of memory pages for virtual machines running on the hosts is moved to the shared partition. A master agent polls memory page tables associated with the plurality of hosts for write access. If the master agent obtains write access to a memory page table of a given host, the given host that previously held the write access is identified as a failed host or an isolated host. The virtual machines of the given host enabled to resume from pooled memory are respawned on a new host while maintaining memory state of the virtual machines using data within the pooled memory, including the virtual machine memory pages, memory page table, host profile data, and/or host-to-VM table data.