IP Library Granted Patent US 11,099,735
Granted Patent B1
US 11,099,735 · App. 16/794,207 · Granted Aug 24, 2021

Facilitating the recovery of full HCI clusters

Inventor: Ishvarjit Singh Garewal (Mountain View, CA)
Assignee: VMware, Inc.
G06F3/0608G06F3/0644G06F3/0659G06F3/0664G06F3/0673G06F9/45558G06F2009/45579G06F2009/45583
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 11,099,735
App. No.
16/794,207
Granted
Aug 24, 2021
Kind
B1
Abstract

Techniques for facilitating the recovery of a full hyper-converged infrastructure (HCI) cluster are provided. In one set of embodiments, a hypervisor of a host system in the HCI cluster can create a recovery reserve on a disk group of the host system, where the disk group stores a namespace object component of a virtual machine (VM), and where the recovery reserve corresponds to an amount of storage space reserved on the disk group for the namespace object component. Then, at a time of receiving a write request directed to the namespace object component, the hypervisor can (1) determine that the disk group is out of space, (2) determine that the write request is a recovery I/O (input/output) that is useful for freeing space on the disk group, and upon determining (1) and (2), allow the write request to succeed by consuming space from the recovery reserve.

Claims (70)

1. A method for facilitating recovery of a hyper-converged infrastructure (HCI) cluster when one or more disk groups of the HCI cluster become full, the method comprising:

creating, by a hypervisor of a host system in the HCI cluster, a recovery reserve on a disk group of the host system, wherein the disk group stores a namespace object component of a virtual machine (VM), and wherein the recovery reserve corresponds to an amount of storage space reserved on the disk group for the namespace object component; and

at a time of receiving a write request directed to the namespace object component:

determining, by the hypervisor, that the disk group is out of space;

determining, by the hypervisor, that the write request is a recovery I/O (input/output) that is useful for freeing space on the disk group;

upon determining that the disk group is out of space and that the write request is a recovery I/O, allowing, by the hypervisor, the write request to succeed by consuming space from the recovery reserve.

2. The method of claim 1 wherein the write request is not allowed to succeed if the disk group is out of space and the write request is not a recovery I/O.

3. The method of claim 1 wherein determining that the write request is a recovery I/O comprises:

determining that the write request is an atomic test-and-set write for locking a file in the namespace object component or a metadata write for updating file system metadata in the namespace object component.

4. The method of claim 1 wherein determining that the write request is a recovery I/O comprises:

determining that the write request was generated by a power-off, export, or delete operation for the VM.

5. The method of claim 1 wherein creating the recovery reserve comprises:

reducing an advertised physical storage capacity of the disk group by a maximum size for the recovery reserve;

setting an in-memory variable configured to track available capacity in the recovery reserve to the maximum size; and

initializing an in-memory list of logical offsets that have consumed space from the recovery reserve.

6. The method of claim 5 wherein determining that the disk group is out of space comprises:

determining that a write size of the write request exceeds the advertised physical storage capacity of the disk group.

7. The method of claim 5 further comprising, prior to allowing the write request to succeed:

determining whether a logical offset to which the write request is directed is in the in-memory list of logical offsets; and

if the logical offset is not in the in-memory list:

decrementing the in-memory variable by a write size of the write request; and

adding the logical offset to the in-memory list.

8. A non-transitory computer readable storage medium having stored thereon program code executable by a hypervisor of a host system in a hyper-converged infrastructure (HCI) cluster, the program code embodying a method for facilitating recovery of the HCI cluster when one or more disk groups of the HCI cluster become full, the method comprising:

creating a recovery reserve on a disk group of the host system, wherein the disk group stores a namespace object component of a virtual machine (VM), and wherein the recovery reserve corresponds to an amount of storage space reserved on the disk group for the namespace object component; and

at a time of receiving a write request directed to the namespace object component:

determining that the disk group is out of space;

determining that the write request is a recovery I/O (input/output) that is useful for freeing space on the disk group;

upon determining that the disk group is out of space and that the write request is a recovery I/O, allowing the write request to succeed by consuming space from the recovery reserve.

9. The non-transitory computer readable storage medium of claim 8 wherein the write request is not allowed to succeed if the disk group is out of space and the write request is not a recovery I/O.

10. The non-transitory computer readable storage medium of claim 8 wherein determining that the write request is a recovery I/O comprises:

determining that the write request is an atomic test-and-set write for locking a file in the namespace object component or a metadata write for updating file system metadata in the namespace object component.

11. The non-transitory computer readable storage medium of claim 8 wherein determining that the write request is a recovery I/O comprises:

determining that the write request was generated by a power-off, export, or delete operation for the VM.

12. The non-transitory computer readable storage medium of claim 8 wherein creating the recovery reserve comprises:

reducing an advertised physical storage capacity of the disk group by a maximum size for the recovery reserve;

setting an in-memory variable configured to track available capacity in the recovery reserve to the maximum size; and

initializing an in-memory list of logical offsets that have consumed space from the recovery reserve.

13. The non-transitory computer readable storage medium of claim 12 wherein determining that the disk group is out of space comprises:

determining that a write size of the write request exceeds the advertised physical storage capacity of the disk group.

14. The non-transitory computer readable storage medium of claim 12 wherein the method further comprises, prior to allowing the write request to succeed:

determining whether a logical offset to which the write request is directed is in the in-memory list of logical offsets; and

if the logical offset is not in the in-memory list:

decrementing the in-memory variable by a write size of the write request; and

adding the logical offset to the in-memory list.

15. A host system comprising:

a processor;

a hypervisor;

a disk group; and

a non-transitory computer readable medium having stored thereon program code that, when executed by the processor, causes the hypervisor to:

create a recovery reserve on the disk group, wherein the disk group stores a namespace object component of a virtual machine (VM), and wherein the recovery reserve corresponds to an amount of storage space reserved on the disk group for the namespace object component; and

at a time of receiving a write request directed to the namespace object component:

determine that the disk group is out of space;

determine that the write request is a recovery I/O (input/output) that is useful for freeing space on the disk group;

upon determining that the disk group is out of space and that the write request is a recovery I/O, allow the write request to succeed by consuming space from the recovery reserve.

16. The host system of claim 15 wherein the write request is not allowed to succeed if the disk group is out of space and the write request is not a recovery I/O.

17. The host system of claim 15 wherein the program code that causes the hypervisor to determine that the write request is a recovery I/O comprises program code that causes the hypervisor to:

determine that the write request is an atomic test-and-set write for locking a file in the namespace object component or a metadata write for updating file system metadata in the namespace object component.

18. The host system of claim 15 wherein the program code that causes the hypervisor to determine that the write request is a recovery I/O comprises program code that causes the hypervisor to:

determine that the write request was generated by a power-off, export, or delete operation for the VM.

19. The host system of claim 15 wherein the program code that causes the hypervisor to create the recovery reserve comprises program code that causes the hypervisor to:

reduce an advertised physical storage capacity of the disk group by a maximum size for the recovery reserve;

set an in-memory variable configured to track available capacity in the recovery reserve to the maximum size; and

initialize an in-memory list of logical offsets that have consumed space from the recovery reserve.

20. The host system of claim 19 wherein the program code that causes the hypervisor to determine that the disk group is out of space comprises program code that causes the hypervisor to:

determine that a write size of the write request exceeds the advertised physical storage capacity of the disk group.

21. The host system of claim 19 wherein the program code further causes the hypervisor to, prior to allowing the write request to succeed:

determine whether a logical offset to which the write request is directed is in the in-memory list of logical offsets; and

if the logical offset is not in the in-memory list:

decrement the in-memory variable by a write size of the write request; and

add the logical offset to the in-memory list.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 18, 2020
From: GAREWAL, ISHVARJIT SINGH
To: VMWARE, INC.
Reel/Frame 051851/0633 →