IP Library › Granted Patent US 10,740,227
Granted Patent B2
US 10,740,227 · App. 15/644,854 · Granted Aug 11, 2020

Reclaiming storage resources

Inventors: Pradeep Krishnamurthy (Bangalore, IN); Prasanna Aithal (Bangalore, IN); Asit Desai (Palo Alto, CA); Bryan Branstetter (Palo Alto, CA); Mahesh S Hiregoudar (Bangalore, IN); Prasad Rao Jangam (Palo Alto, CA); Rohan Pasalkar (Palo Alto, CA); Srinivasa Shantharam (Bangalore, IN); Raghavan Pichai (Bangalore, IN)
Assignee: VMware, Inc.
G06F12/0253G06F3/067G06F3/0608G06F3/0665G06F9/45558G06F3/0659G06F2009/45579G06F2009/45583G06F2212/702
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 10,740,227
App. No.
15/644,854
Granted
Aug 11, 2020
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for reclaiming one or more portions of storage resources in a computer system serving one or more virtual computing instances, where the storage resources in the computer system are organized in clusters of storage blocks. In one aspect, a method includes maintaining a respective block tracking value for each storage block that indicates whether a call to reclaim the storage block is outstanding; determining, from the block tracking values, a respective cluster priority value for each of the clusters based on a count of storage blocks in the respective cluster for which a call to reclaim is outstanding; and reclaiming a first portion of storage resources in the computer system in accordance with the cluster priority values.

Claims (60)

1. A method for reclaiming one or more portions of storage resources in a computer system serving one or more virtual computing instances, wherein the storage resources in the computer system are organized in a plurality of clusters of storage blocks, wherein each of the plurality of clusters comprises one or more storage blocks, and wherein the method comprises:

maintaining a respective block tracking value for each storage block that indicates whether a call to reclaim the storage block is outstanding indicating that a call to reclaim the storage block has been received but has not been processed;

determining, from the block tracking values, a respective cluster priority value for each of the plurality of clusters of storage blocks, wherein the cluster priority value for each cluster is based on a ranking of the clusters according to a respective count of storage blocks in each cluster for which a call to reclaim is outstanding; and

reclaiming a first portion of storage resources in the computer system in accordance with the cluster priority values including determining one or more clusters having a highest priority value and processing the calls to reclaim storage blocks for the determined one or more clusters in a batch.

2. The method of claim 1 , wherein each of the storage blocks comprises a plurality of storage block segments, and wherein the method further comprises:

maintain a respective segment tracking value for each storage block segment that indicates whether a call to reclaim the respective storage block segment is outstanding;

determining, from the segment tracking values, a respective block priority value for each storage block based on a count of storage block segments in the respective storage block for which a call to reclaim the respective storage block segment is outstanding; and

reclaiming a second portion of storage resources in the computer system in accordance with the block priority values.

3. The method of claim 2 , further comprising:

receiving a reclamation call, wherein the reclamation call is a call to the computer system to reclaim a target portion of the storage resources in the computer system;

determining, based on the target portion, any storage blocks and any storage block segments that the computer system needs to update in response to the reclamation call; and

updating block tracking values for the identified storage blocks and segment tracking values for the identified storage block segments.

4. The method of claim 3 , wherein the target portion includes one or more target storage blocks and one or more target storage block segments, wherein:

the one or more target storage blocks are storage blocks in the computer system that the reclamation call releases entirely, and

the one or more target storage block segments are storage block segments in the computer system that the reclamation call releases entirely.

5. The method of claim 4 , wherein the reclamation call is from a hypervisor that manages at least one of the one or more virtual computing instances.

6. The method of claim 4 , wherein:

the reclamation call is generated by a storage management subsystem of the computer system; and

determining the block tracking values and the segment tracking values that the system needs to update in response to the reclamation call comprises determining that the system only needs to update a group of one or more block tracking values in response to the reclamation call.

7. The method of claim 2 , wherein each storage block segment is determined based on a granularity value associated with the storage block that includes the respective storage block segment.

8. The method of claim 1 , wherein reclaiming the first portion of storage resources in the computer system in accordance with the cluster priority values comprises:

identifying a first cluster having a highest cluster priority value relative to other clusters; and

reclaiming storage blocks in the first cluster for which a call to reclaim is outstanding.

9. The method of claim 8 , wherein reclaiming the first portion of storage resources in the computer system in accordance with the cluster priority values further comprises:

identifying a second cluster having a lowest priority value relative to other clusters; and

delaying a reclamation of storage blocks in the second cluster for which a call to reclaim is outstanding.

10. The method of claim 9 , wherein:

identifying the first and the second cluster is performed using a min-max heap data structure, and

the min-max heap data structure includes a node for each cluster of the plurality of clusters and is organized based on the respective counts associated with each cluster.

11. A system comprising one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations for reclaiming one or more portions of storage resources in a computer system serving one or more virtual computing instances, wherein the storage resources in the computer system are organized in a plurality of clusters of storage blocks, wherein each of the plurality of clusters comprises one or more storage blocks, the operations comprising:

maintaining a respective block tracking value for each storage block that indicates whether a call to reclaim the storage block is outstanding indicating that a call to reclaim the storage block has been received but has not been processed;

determining, from the block tracking values, a respective cluster priority value for each of the plurality of clusters of storage blocks, wherein the cluster priority value for each cluster is based on a ranking of the clusters according to a respective count of storage blocks in each cluster for which a call to reclaim is outstanding; and

reclaiming a first portion of storage resources in the computer system in accordance with the cluster priority values including determining one or more clusters having a highest priority value and processing the calls to reclaim storage blocks for the determined one or more clusters in a batch.

12. The system of claim 11 , wherein each of the storage blocks comprises a plurality of storage block segments, and wherein the method further comprises:

maintain a respective segment tracking value for each storage block segment that indicates whether a call to reclaim the respective storage block segment is outstanding;

determining, from the segment tracking values, a respective block priority value for each storage block based on a count of storage block segments in the respective storage block for which a call to reclaim the respective storage block segment is outstanding; and

reclaiming a second portion of storage resources in the computer system in accordance with the block priority values.

13. The system of claim 12 , further comprising:

receiving a reclamation call, wherein the reclamation call is a call to the computer system to reclaim a target portion of the storage resources in the computer system;

determining, based on the target portion, any storage blocks and any storage block segments that the computer system needs to update in response to the reclamation call; and

updating block tracking values for the identified storage blocks and segment tracking values for the identified storage block segments.

14. The system of claim 13 , wherein the target portion includes one or more target storage blocks and one or more target storage block segments, wherein:

the one or more target storage blocks are storage blocks in the computer system that the reclamation call releases entirely, and

the one or more target storage block segments are storage block segments in the computer system that the reclamation call releases entirely.

15. The system of claim 14 , wherein the reclamation call is from a hypervisor that manages at least one of the one or more virtual computing instances.

16. The system of claim 14 , wherein:

the reclamation call is generated by a storage management subsystem of the computer system; and

determining the block tracking values and the segment tracking values that the system needs to update in response to the reclamation call comprises determining that the system only needs to update a group of one or more block tracking values in response to the reclamation call.

17. The system of claim 12 , wherein each storage block segment is determined based on a granularity value associated with the storage block that includes the respective storage block segment.

18. The system of claim 11 , wherein reclaiming the first portion of storage resources in the computer system in accordance with the cluster priority values comprises:

identifying a first cluster having a highest cluster priority value relative to other clusters; and

reclaiming storage blocks in the first cluster for which a call to reclaim is outstanding.

19. The system of claim 18 , wherein reclaiming the first portion of storage resources in the computer system in accordance with the cluster priority values further comprises:

identifying a second cluster having a lowest priority value relative to other clusters; and

delaying a reclamation of storage blocks in the second cluster for which a call to reclaim is outstanding.

20. A non-transitory computer storage medium encoded with instructions that, when executed by one or more computers, cause the one or more computers to perform operations for reclaiming one or more portions of storage resources in a computer system serving one or more virtual computing instances, wherein the storage resources in the computer system are organized in a plurality of clusters of storage blocks, wherein each of the plurality of clusters comprises one or more storage blocks, the operations comprising:

maintaining a respective block tracking value for each storage block that indicates whether a call to reclaim the storage block is outstanding indicating that a call to reclaim the storage block has been received but has not been processed;

determining, from the block tracking values, a respective cluster priority value for each of the plurality of clusters of storage blocks, wherein the cluster priority value for each cluster is based on a ranking of the clusters according to a respective count of storage blocks in each cluster for which a call to reclaim is outstanding; and

reclaiming a first portion of storage resources in the computer system in accordance with the cluster priority values including determining one or more clusters having a highest priority value and processing the calls to reclaim storage blocks for the determined one or more clusters in a batch.

21. The method of claim 1 , wherein each call to reclaim a particular storage block is received from a hypervisor indicating that the particular storage block allocated to a particular virtual machine managed by the hypervisor is to be deallocated.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 10, 2017
From: KRISHNAMURTHY, PRADEEP; AITHAL, PRASANNA; DESAI, ASIT; BRANSTETTER, BRYAN; HIREGOUDAR, MAHESH S; JANGAM, PRASAD RAO; PASALKAR, ROHAN; SHANTHARAM, SRINIVASA; PICHAI, RAGHAVAN
To: VMWARE, INC.
Reel/Frame 043133/0589 →
Priority Claims (1)
IN 201741015143 · Apr 28, 2017 · national
Continuity (1)
Related Publication 20180314632A1 · Nov 1, 2018
Cited By (1)
US 12,650,950