IP Library › Granted Patent US 11,580,013
Granted Patent B2
US 11,580,013 · App. 17/161,518 · Granted Feb 14, 2023

Free space management in a block store

Inventors: Rohit Jain (Cupertino, CA); Pradeep Kashyap Ramaswamy (San Jose, CA)
Assignee: NUTANIX, INC.
G06F12/023G06F3/0604G06F3/064G06F3/067G06F3/0673G06F16/2246G06F16/9027G06F2212/1044
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,580,013
App. No.
17/161,518
Filed
Jan 28, 2021
Granted
Feb 14, 2023
Kind
B2
Examiner
HO, AARON D
Art Unit
2139
USPC
711/171
Abstract

Various embodiments set forth techniques for free space management in a block store. The techniques include receiving a request to allocate one or more blocks in a block store, accessing a sparse hierarchical data structure to identify an allocator page identifying a region of a backing store having a greatest number of free blocks, and allocating the one or more blocks.

Claims (47)

1. One or more non-transitory computer-readable media storing program instructions that, when executed by one or more processors, cause the one or more processors to perform steps of:

receiving a request to allocate one or more blocks in a block store;

accessing a sparse hierarchical data structure to identify an allocator page identifying a region of a backing store having a greatest number of free blocks; and

allocating the one or more blocks;

wherein the sparse hierarchical data structure comprises a tree of heap data structures.

2. The one or more non-transitory computer-readable media of claim 1 , wherein the sparse hierarchical data structure comprises a leaf node identifying a plurality of allocator pages and a number of free blocks in each allocator page.

3. The one or more non-transitory computer-readable media of claim 1 , wherein the sparse hierarchical data structure comprises a parent node identifying a plurality of leaf nodes and a number of free blocks in an allocator page identified by each leaf node having a greatest number of free blocks among a plurality of allocator pages identified by the leaf node.

4. The one or more non-transitory computer-readable media of claim 1 , wherein the sparse hierarchical data structure comprises a level two parent node identifying a plurality of level one parent nodes and a number of free blocks in an allocator page identified via each of the level one parent nodes having a greatest number of free blocks among a plurality of allocator pages identified via the level one parent nodes.

5. The one or more non-transitory computer-readable media of claim 1 , wherein the steps further comprise allocating a new leaf node to the sparse hierarchical data structure in response to determining that there is insufficient free space managed by the sparse hierarchical data structure to satisfy the request.

6. The one or more non-transitory computer-readable media of claim 1 , wherein the request is received by a component of a plurality of components, each component allocating blocks for different regions from a separate region of the backing store than other components allocating blocks from the backing store.

7. The one or more non-transitory computer-readable media of claim 1 , wherein allocating the one or more blocks comprises performing at least one of a sift-up operation or a sift-down operation on a set of entries included in the hierarchical data structure.

8. The one or more non-transitory computer-readable media of claim 1 , wherein allocating the one or more blocks comprises:

updating a leaf node included in the hierarchical data structure based on a quantity of the one or more blocks; and

updating a parent node included in the hierarchical data structure to configure the parent node to manage the leaf node.

9. The one or more non-transitory computer-readable media of claim 1 , wherein allocating the one or more blocks comprises generating a parent node included in the hierarchical data structure configured to manage a leaf node included in the hierarchical data structure and associated with the allocator page.

10. A method for managing free space in a block store, the method comprising:

receiving a request to allocate one or more blocks in a block store;

accessing a sparse hierarchical data structure to identify an allocator page identifying a region of a backing store having a greatest number of free blocks; and

allocating the one or more blocks;

wherein the sparse hierarchical data structure comprises a tree of heap data structures.

11. The method of claim 10 , wherein the sparse hierarchical data structure comprises a leaf node identifying a plurality of allocator pages and a number of free blocks in each allocator page.

12. The method of claim 10 , wherein the sparse hierarchical data structure comprises a parent node identifying a plurality of leaf nodes and a number of free blocks in an allocator page identified by each leaf node having a greatest number of free blocks among a plurality of allocator pages identified by the leaf node.

13. The method of claim 10 , wherein the sparse hierarchical data structure comprises a level two parent node identifying a plurality of level one parent nodes and a number of free blocks in an allocator page identified via each of the level one parent nodes having a greatest number of free blocks among a plurality of allocator pages identified via the level one parent nodes.

14. The method of claim 10 , further comprising allocating a new leaf node to the sparse hierarchical data structure in response to determining that there is insufficient free space managed by the sparse hierarchical data structure to satisfy the request.

15. The method of claim 10 , wherein the request is received by a component of a plurality of components, each component allocating blocks for different regions from a separate region of the backing store than other components allocating blocks from the backing store.

16. The method of claim 10 , wherein allocating the one or more blocks comprises performing at least one of a sift-up operation or a sift-down operation on a set of entries included in the hierarchical data structure.

17. The method of claim 10 , wherein allocating the one or more blocks comprises:

updating a leaf node included in the hierarchical data structure based on a quantity of the one or more blocks; and

updating a parent node included in the hierarchical data structure to configure the parent node to manage the leaf node.

18. The method of claim 10 , wherein allocating the one or more blocks comprises generating a parent node included in the hierarchical data structure configured to manage a leaf node included in the hierarchical data structure and associated with the allocator page.

19. A system, comprising:

a memory storing instructions; and

one or more processors that is coupled to the memory and, when executing the instructions is configured to:

receive a request to allocate one or more blocks in a block store;

access a sparse hierarchical data structure to identify an allocator page identifying a region of a backing store having a greatest number of free blocks; and

allocate the one or more blocks;

wherein the sparse hierarchical data structure comprises a tree of heap data structures.

20. The system of claim 19 , wherein the sparse hierarchical data structure comprises a leaf node identifying a plurality of allocator pages and a number of free blocks in each allocator page.

21. The system of claim 19 , wherein the sparse hierarchical data structure comprises a parent node identifying a plurality of leaf nodes and a number of free blocks in an allocator page identified by each leaf node having a greatest number of free blocks among a plurality of allocator pages identified by the leaf node.

22. The system of claim 19 , wherein the sparse hierarchical data structure comprises a level two parent node identifying a plurality of level one parent nodes and a number of free blocks in an allocator page identified via each of the level one parent nodes having a greatest number of free blocks among a plurality of allocator pages identified via the level one parent nodes.

23. The system of claim 19 , wherein the one or more processors when executing the instructions are further configured to allocate a new leaf node to the sparse hierarchical data structure in response to determining that there is insufficient free space managed by the sparse hierarchical data structure to satisfy the request.

24. The system of claim 19 , wherein the request is received by a component of a plurality of components, each component allocating blocks for different regions from a separate region of the backing store than other components allocating blocks from the backing store.

25. The system of claim 19 , wherein to allocate the one or more blocks, the one or more processors are configured to perform at least one of a sift-up operation or a sift-down operation on a set of entries included in the hierarchical data structure.

26. The system of claim 19 , wherein, to allocate the one or more blocks, the one or more processors are configured to:

update a leaf node included in the hierarchical data structure based on a quantity of the one or more blocks; and

update a parent node included in the hierarchical data structure to configure the parent node to manage the leaf node.

27. The system of claim 19 , wherein to allocate the one or more blocks, the one or more processors are configured to generate a parent node included in the hierarchical data structure configured to manage a leaf node included in the hierarchical data structure and associated with the allocator page.

Assignments (2)
SECURITY INTEREST Recorded Feb 13, 2025
From: NUTANIX, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 070206/0463 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2021
From: JAIN, ROHIT; RAMASWAMY, PRADEEP KASHYAP
To: NUTANIX, INC.
Reel/Frame 055082/0414 →
Continuity (2)
Provisional Application 63108136 · Oct 30, 2020
Related Publication 20220138095A1 · May 5, 2022