IP Library › Granted Patent US 9,513,946
Granted Patent B2
US 9,513,946 · App. 14/317,712 · Granted Dec 6, 2016

Maintaining high availability during network partitions for virtual machines stored on distributed object-based storage

Inventors: Marc Sevigny (Harvard, MA); Keith Farkas (San Carlos, CA); Christos Karamanolis (Los Gatos, CA)
Assignee: VMware, Inc.
G06F9/45558G06F9/542G06F2009/4557
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,513,946
App. No.
14/317,712
Granted
Dec 6, 2016
Kind
B2
Abstract

Techniques are disclosed for maintaining high availability (HA) for virtual machines (VMs) running on host systems of a host cluster, where each host system executes a HA module in a plurality of HA modules and a storage module in a plurality of storage modules, where the host cluster aggregates, via the plurality of storage modules, locally-attached storage resources of the host systems to provide an object store, where persistent data for the VMs is stored as per-VM storage objects across the locally-attached storage resources comprising the object store, and where a failure causes the plurality of storage modules to observe a network partition in the host cluster that the plurality of HA modules do not. In one embodiment, a host system in the host cluster executing a first HA module invokes an API exposed by the plurality of storage modules for persisting metadata for a VM to the object store. If the API is not processed successfully, the host system: (1) identifies a subset of second HA modules in the plurality of HA modules; (2) issues an accessibility query for the VM to the subset of second HA modules in parallel, the accessibility query being configured to determine whether the VM is accessible to the respective host systems of the subset of second HA modules; and (3) if at least one second HA module in the subset indicates that the VM is accessible to its respective host system, transmits a command to the at least one second HA module to invoke the API on its respective host system.

Claims (64)

1. A method for maintaining high availability (HA) for virtual machines (VMs) running on host systems of a host cluster, the method comprising:

executing, by each host system in the host cluster, a HA module in a plurality of HA modules and a storage module in a plurality of storage modules, wherein the host cluster aggregates, via the plurality of storage modules, locally-attached storage resources of the host systems to provide a logical object store, wherein persistent data for the VMs is stored as per-VM storage objects across the locally-attached storage resources comprising the logical object store, wherein the plurality of HA modules are interconnected via a first network, wherein the plurality of storage modules are interconnected via a second network that is distinct from the first network, and wherein a failure causes a partition in the second network but does not cause a partition in the first network;

invoking, by a host system in the host cluster executing a first HA module, an application programming interface (API) exposed by the plurality of storage modules, wherein the API is configured to persist an HA protection state for the VM in a namespace object of the VM stored in the logical object store, and wherein the HA protection state indicates that the VM should be failed over from a first host system in the host cluster to a second host system in the host cluster in case of a failure of the first host system; and

if the API is not processed successfully:

identifying, by the host system, a subset of second HA modules in the plurality of HA modules;

issuing, by the host system, an accessibility query for the VM to the subset of second HA modules in parallel, the accessibility query being configured to determine whether the VM is accessible to the respective host systems of the subset of second HA modules; and

if at least one second HA module in the subset indicates that the VM is accessible to its respective host system, transmitting, by the host system, a command to the at least one second HA module to invoke the API on its respective host system.

2. The method of claim 1 further comprising:

if none of the subset of second HA modules indicates that the VM is accessible from its respective host system, determining if the accessibility query for the VM has been issued to all second HA modules; and

if the accessibility query for the VM has not been issued to all second HA modules, determining a new subset of second HA modules and issuing the accessibility query to the new subset.

3. The method of claim 2 further comprising:

if the accessibility query for the VM has been issued to all second HA modules, adding the VM to a list of VMs waiting for an accessibility change.

4. The method of claim 1 wherein the VM is accessible to a host system if all of the VM's storage objects in the logical object store are accessible to the host system.

5. The method of claim 4 wherein the first HA module is a master HA module, and wherein the second HA modules are slave HA modules.

6. The method of claim 1 further comprising, at a time of restarting one or more VMs in the host cluster in response to a failure:

transmitting a list of the one or more VMs to the second HA modules;

receiving accessibility information from the second HA modules indicating whether the one or more VMs are accessible from their respective host systems; and

based on the accessibility information, matching the one or more VMs to the host systems for restart purposes.

7. The method of claim 1 further comprising, at a time of restarting one or more VMs in the host cluster in response to a failure:

transmitting, to the second HA modules, a list of VMs for which the first HA module is waiting for an accessibility change; and

receiving a notification from a second HA module when a VM on the list has become accessible from the second HA module's respective host system.

8. A non-transitory computer readable storage medium having stored thereon computer software embodying a method for maintaining high availability (HA) for virtual machines (VMs) running on host systems of a host cluster, the method comprising:

executing, by each host system in the host cluster, a HA module in a plurality of HA modules and a storage module in a plurality of storage modules, wherein the host cluster aggregates, via the plurality of storage modules, locally-attached storage resources of the host systems to provide a logical object store, wherein persistent data for the VMs is stored as per-VM storage objects across the locally-attached storage resources comprising the logical object store, wherein the plurality of HA modules are interconnected via a first network, wherein the plurality of storage modules are interconnected via a second network that is distinct from the first network, and wherein a failure causes a partition in the second network but does not cause a partition in the first network;

invoking, via a first HA module executing on a host system in the host cluster, an application programming interface (API) exposed by the plurality of storage modules, wherein the API is configured to persist an HA protection state for the VM in a namespace object of the VM stored in the logical object store, and wherein the HA protection state indicates that the VM should be failed over from a first host system in the host cluster to a second host system in the host cluster in case of a failure of the first host system; and

if the API is not processed successfully:

identifying a subset of second HA modules in the plurality of HA modules;

issuing an accessibility query for the VM to the subset of second HA modules in parallel, the accessibility query being configured to determine whether the VM is accessible to the respective host systems of the subset of second HA modules; and

if at least one second HA module in the subset indicates that the VM is accessible to its respective host system, transmitting a command to the at least one second HA module to invoke the API on its respective host system.

9. The non-transitory computer readable storage medium of claim 8 wherein the method further comprises:

if none of the subset of second HA modules indicates that the VM is accessible from its respective host system, determining if the accessibility query for the VM has been issued to all second HA modules; and

if the accessibility query for the VM has not been issued to all second HA modules, determining a new subset of second HA modules and issuing the accessibility query to the new subset.

10. The non-transitory computer readable storage medium of claim 9 wherein the method further comprises:

if the accessibility query for the VM has been issued to all second HA modules, adding the VM to a list of VMs waiting for an accessibility change.

11. The non-transitory computer readable storage medium of claim 8 wherein the VM is accessible to a host system if all of the VM's storage objects in the logical object store are accessible to the host system.

12. The non-transitory computer readable storage medium of claim 11 wherein the first HA module is a master HA module, and wherein the second HA modules are slave HA modules.

13. The non-transitory computer readable storage medium of claim 8 wherein the method further comprises, at a time of restarting one or more VMs in the host cluster in response to a failure:

transmitting a list of the one or more VMs to the second HA modules;

receiving accessibility information from the second HA modules indicating whether the one or more VMs are accessible from their respective host systems; and

based on the accessibility information, matching the one or more VMs to the host systems for restart purposes.

14. The non-transitory computer readable storage medium of claim 8 wherein the method further comprises, at a time of restarting one or more VMs in the host cluster in response to a failure:

transmitting, to the second HA modules, a list of VMs for which the first HA module is waiting for an accessibility change; and

receiving a notification from a second HA module when a VM on the list has become accessible from the second HA module's respective host system.

15. A host system comprising:

a processor;

a non-transitory computer readable medium having stored thereon instructions that, when executed by the processor, causes the processor to perform a method for maintaining high availability (HA) for virtual machines (VMs) running on the host system and other host systems of a host cluster, wherein each host system executes a HA module in a plurality of HA modules and a storage module in a plurality of storage modules, wherein the host cluster aggregates, via the plurality of storage modules, locally-attached storage resources of the host systems to provide a logical object store, wherein persistent data for the VMs is stored as per-VM storage objects across the locally-attached storage resources comprising the logical object store, wherein the plurality of HA modules are interconnected via a first network, wherein the plurality of storage modules are interconnected via a second network that is distinct from the first network, and wherein a failure causes a partition in the second network but does not cause a partition in the first network, the method comprising:

invoking, via a first HA module executing on the host system, an application programming interface (API) exposed by the plurality of storage modules, wherein the API is configured to persist an HA protection state for the VM in a namespace object of the VM stored in the logical object store, and wherein the HA protection state indicates that the VM should be failed over from a first host system in the host cluster to a second host system in the host cluster in case of a failure of the first host system; and

if the API is not processed successfully:

identifying a subset of second HA modules in the plurality of HA modules;

issuing an accessibility query for the VM to the subset of second HA modules in parallel, the accessibility query being configured to determine whether the VM is accessible to the respective host systems of the subset of second HA modules; and

if at least one slave HA module in the subset indicates that the VM is accessible to its respective host system, transmitting a command to the at least one second HA module to invoke the API on its respective host system.

16. The host system of claim 15 wherein the method further comprises:

if none of the subset of second HA modules indicates that the VM is accessible from its respective host system, determining if the accessibility query for the VM has been issued to all second HA modules; and

if the accessibility query for the VM has not been issued to all second HA modules, determining a new subset of second HA modules and issuing the accessibility query to the new subset.

17. The host system of claim 16 wherein the method further comprises:

if the accessibility query for the VM has been issued to all second HA modules, adding the VM to a list of VMs waiting for an accessibility change.

18. The host system of claim 15 wherein the VM is accessible to a host system if all of the VM's storage objects in the logical object store are accessible to the host system.

19. The host system of claim 18 wherein the first HA module is a master HA module, and wherein the second HA modules are slave HA modules.

20. The host system of claim 15 wherein the method further comprises, at a time of restarting one or more VMs in the host cluster in response to a failure:

transmitting a list of the one or more VMs to the second HA modules;

receiving accessibility information from the second HA modules indicating whether the one or more VMs are accessible from their respective host systems; and

based on the accessibility information, matching the one or more VMs to the host systems for restart purposes.

21. The host system of claim 15 wherein the method further comprises, at a time of restarting one or more VMs in the host cluster in response to a failure:

transmitting, to the second HA modules, a list of VMs for which the first HA module is waiting for an accessibility change; and

receiving a notification from a second HA module when a VM on the list has become accessible from the second HA module's respective host system.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067103/0030 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 16, 2014
From: SEVIGNY, MARC; FARKAS, KEITH; KARAMANOLIS, CHRISTOS
To: VMWARE, INC.
Reel/Frame 033328/0104 →
Continuity (1)
Related Publication 20150378761A1 · Dec 31, 2015