IP Library › Granted Patent US 11,507,544
Granted Patent B2
US 11,507,544 · App. 16/894,663 · Granted Nov 22, 2022

Efficient erasure-coded storage in distributed data systems

Inventors: Wenguang Wang (Santa Clara, CA); Vamsidhar Gunturu (Cupertino, CA); Eric Knauft (Palo Alto, CA); Pascal Renauld (Palo Alto, CA)
Assignee: VMware, Inc.
G06F16/1865G06F12/0246G06F12/0824G06F16/1734G06F16/1824G06F16/2246G06F16/24573G06F2212/262G06F2212/403G06F2212/7201
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,507,544
App. No.
16/894,663
Granted
Nov 22, 2022
Kind
B2
Abstract

Techniques for efficiently storing client data blocks on a distributed-computing system are provided. The system includes a fast performance tier and a large capacity tier. The capacity tier stores the client data blocks in erasure encoded data stripes. The performance tier stores logical map data including an address map indicating a correspondence between logical addresses associated with a first layer of the system and physical addresses associated with a second layer. A method includes receiving a request to include additional client data blocks in the client blocks. The request indicates logical addresses for additional blocks. Corresponding physical addresses for additional block are determined. Each additional block is stored at the physical address. Additional logical map data is stored in the performance tier. Storing the additional logical map data includes updating the address map to indicate the correspondence between the logical addresses and the physical addresses for the additional blocks.

Claims (77)

1. A distributed-computing system for storing a set of client data blocks, the system comprising:

a capacity storage tier including a first plurality of storage disks storing a capacity data object structuring the set of client data blocks as a plurality data stripes that are erasure coded (EC) and distributed across the first plurality of storage disks, wherein each of the plurality of data stripes includes a subset of the set of client data blocks and corresponding parity data for the subset of the set of client data blocks and wherein the capacity storage tier is managed by a log-structured file system (LFS);

a performance storage tier including a second plurality of storage disks storing a metadata object structuring logical map data as being mirrored across the second plurality of storage disks, wherein the logical map data includes:

an address map indicating, for each client data block of the set of client data blocks, a correspondence between a logical address associated with a first layer of the system and a physical address associated with a second layer of the system, and

checksum data associated with each write transaction for each client data block of the set of client data blocks and wherein the performance storage tier is managed by a file system that enables overwriting the logical map data;

one or more processors; and

a memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for:

receiving a request, from a client of the system, to include one or more additional client data blocks in the set of client data blocks, wherein the request indicates the logical address for each of the one or more additional client data blocks;

caching the one or more additional client data blocks in a memory bank of the performance storage tier; and

in accordance with a determination that a size of current contents of the memory back, including the one or more additional client data blocks, is equivalent to a size of a current data stripe:

for each of the one or more additional client data blocks, determining a corresponding physical address included in a current data stripe of the plurality of data stripes;

storing each of the one or more additional client data blocks at the corresponding physical address in the current data stripe of the capacity storage tier; and

storing additional logical map data in the metadata object, wherein storing the additional logical map data includes updating the address map to indicate the correspondence between the logical address and the physical address for each of the one or more additional client data blocks.

2. The system of claim 1 , wherein the one or more additional client data blocks are stored in the current data stripe in a manner such that increasingly large numbers of write operations result in a correspondingly lower write amplification factor.

3. The system of claim 1 , the instructions are further for:

based on a number of outstanding input/output operations (OIO) of the system being less than a predetermined threshold, operating the system in a partial stripe write mode;

in accordance to operating the system in the partial stripe write mode, storing each of the one or more additional client data blocks at the corresponding physical address in the current data stripe of the capacity storage tier, wherein a size of the one or more additional client data blocks is less than a size of the current data stripe; and

storing at least a portion of additional logical map data in an additional physical address in the current data stripe of the capacity storage tier.

4. The system of claim 1 , wherein the logical map data is structured as a B++tree.

5. The system of claim 1 , wherein storing each of the one or more additional client data blocks at the corresponding physical address in the current data stripe of the capacity storage tier comprises:

accessing, from a memory bank in the performance storage tier, the corresponding parity data for the subset of client data blocks of the current data stripe;

updating the subset of client data blocks of the current data stripe to include the one or more additional client data blocks; and

updating the corresponding parity data for the updated subset of client data blocks of the current data stripe based on the one or more additional client data blocks; and

caching the updated corresponding parity data in the memory bank of the performance storage tier.

6. The system of claim 1 , wherein the input/output (I/O) throughput of the performance storage tier is at least seven times greater than an I/O throughput of the capacity storage tier.

7. The system of claim 1 , wherein the first plurality of storage disks is arranged in a 4+2 RAID 6 configuration and the second plurality of storage disks is arranged in a 3-way mirroring configuration.

8. The system of claim 1 , wherein the first layer of the system is a striped Distributed Object Manager (zDOM) and the second layer of the system is a Distributed Object Manager (DOM).

9. A method for employing a distributed-computing system to store a set of client data blocks, the method comprising:

receiving a request, from a client of the system, to include one or more additional client data blocks in the set of client data blocks, wherein the request indicates a logical address for each of the one or more additional client data blocks and the system includes:

a capacity storage tier including a first plurality of storage disks storing a capacity data object structuring the set of client data blocks as a plurality of data stripes that are erasure coded (EC) and distributed across the first plurality of storage disks, wherein each of the plurality of data stripes includes a subset of the set of client data blocks and corresponding parity data for the subset of the set of client data blocks and wherein the capacity storage tier is managed by a log-structured file system (LFS); and

a performance storage tier including a second plurality of storage disks storing a metadata object structuring logical map data as being mirrored across the second plurality of storage disks, wherein the logical map data includes:

an address map indicating, for each client data block of the set of client data blocks, a correspondence between a logical address associated with a first layer of the system and a physical address associated with a second layer of the system, and

checksum data associated with each write transaction for each client data block of the set of client data blocks and wherein the performance storage tier is managed by a file system that enables overwriting the logical map data;

caching the one or more additional client data blocks in a memory bank of the performance storage tier; and

in accordance with a determination that a size of current contents of the memory back, including the one or more additional client data blocks, is equivalent to a size of a current data stripe:

for each of the one or more additional client data blocks, determining a corresponding physical address included in a current data stripe of the plurality of data stripes;

storing each of the one or more additional client data blocks at the corresponding physical address in the current data stripe of the capacity storage tier; and

storing additional logical map data in the metadata object, wherein storing the additional logical map data includes updating the address map to indicate the correspondence between the logical address and the physical address for each of the one or more additional client data blocks.

10. The method of claim 9 , wherein the one or more additional client data blocks are stored in the current data stripe in a manner such that increasingly large numbers of write operations result in a correspondingly lower write amplification factor.

11. The method of claim 9 , further comprising:

based on a number of outstanding input/output operations (OIO) of the system being less than a predetermined threshold, operating the system in a partial stripe write mode;

in accordance to operating the system in the partial stripe write mode, storing each of the one or more additional client data blocks at the corresponding physical address in the current data stripe of the capacity storage tier, wherein a size of the one or more additional client data blocks is less than the size of the current data stripe; and

storing at least a portion of additional logical map data in an additional physical address in the current data stripe of the capacity storage tier.

12. The method of claim 9 , wherein the logical map data is structured as a B++tree.

13. The method of claim 9 , wherein storing each of the one or more additional client data blocks at the corresponding physical address in the current data stripe of the capacity storage tier comprises:

accessing, from a memory bank in the performance storage tier, the corresponding parity data for the subset of client data blocks of the current data stripe;

updating the subset of client data blocks of the current data stripe to include the one or more additional client data blocks; and

updating the corresponding parity data for the updated subset of client data blocks of the current data stripe based on the one or more additional client data blocks; and

caching the updated corresponding parity data in the memory bank of the performance storage tier.

14. The method of claim 9 , wherein the input/output (I/O) throughput of the performance storage tier is at least seven times greater than an I/O throughput of the capacity storage tier.

15. The method of claim 9 , wherein the first plurality of storage disks is arranged in a 4+2 RAID 6 configuration and the second plurality of storage disks is arranged in a 3-way mirroring configuration.

16. The method of claim 9 , wherein the first layer of the system is a striped Distributed Object Manager (zDOM) and the second layer of the system is a Distributed Object Manager (DOM).

17. A non-transitory computer-readable storage medium storing one or more programs configured to be executed by one or more components operating in a distributed-computing system, the one or more components having one or more processors and memory, the one or more programs including instructions for:

receiving a request, from a client of the system, to include one or more additional client data blocks in the set of client data blocks, wherein the request indicates a logical address for each of the one or more additional client data blocks and the distributed-computing system includes:

a capacity storage tier including a first plurality of storage disks storing a capacity data object structuring the set of client data blocks as a plurality data stripes that are erasure coded (EC) and distributed across the first plurality of storage disks, wherein each of the plurality of data stripes includes a subset of the set of client data blocks and corresponding parity data for the subset of client data blocks and wherein the capacity storage tier is managed by a log-structured file system (LFS); and

a performance storage tier including a second plurality of storage disks storing a metadata object structuring logical map data as being mirrored across the second plurality of storage disks, wherein the logical map data includes:

an address map indicating, for each client data block of the set of client data blocks, a correspondence between a logical address associated with a first layer of the system and a physical address associated with a second layer of the system, and

checksum data associated with each write transaction for each client data block of the set of client data blocks and wherein the performance storage tier is managed by a file system that enables overwriting the logical map data;

caching the one or more additional client data blocks in a memory bank of the performance storage tier; and

in accordance with a determination that a size of current contents of the memory back, including the one or more additional client data blocks, is equivalent to a size of a current data stripe:

for each of the one or more additional client data blocks, determining a corresponding physical address included in a current data stripe of the plurality of data stripes;

storing each of the one or more additional client data blocks at the corresponding physical address in the current data stripe of the capacity storage tier; and

storing additional logical map data in the metadata object, wherein storing the additional logical map data includes updating the address map to indicate the correspondence between the logical address and the physical address for each of the one or more additional client data blocks.

18. The computer-readable storage medium of claim 17 , wherein the one or more additional client data blocks are stored in the current data stripe in a manner such that increasingly large numbers of write operations result in a correspondingly lower write amplification factor.

19. The computer-readable storage medium of claim 17 , wherein the instructions are further for:

based on a number of outstanding input/output operations (OIO) of the system being less than a predetermined threshold, operating the system in a partial stripe write mode;

in accordance to operating the system in the partial stripe write mode, storing each of the one or more additional client data blocks at the corresponding physical address in the current data stripe of the capacity storage tier, wherein a size of the one or more additional client data blocks is less than a size of the current data stripe; and

storing at least a portion of additional logical map data in an additional physical address in the current data stripe of the capacity storage tier.

20. The computer-readable storage medium of claim 17 , wherein the logical map data is structured as a B+tree.

21. The computer-readable storage medium of claim 17 , wherein storing each of the one or more additional client data blocks at the corresponding physical address in the current data stripe of the capacity storage tier comprises:

accessing, from a memory bank in the performance storage tier, the corresponding parity data for the subset of client data blocks of the current data stripe;

updating the subset of client data blocks of the current data stripe to include the one or more additional client data blocks; and

updating the corresponding parity data for the updated subset of client data blocks of the current data stripe based on the one or more additional client data blocks; and

caching the updated corresponding parity data in the memory bank of the performance storage tier.

22. The computer-readable storage medium of claim 17 , wherein the input/output (I/O) throughput of the performance storage tier is at least seven times greater than an I/O throughput of the capacity storage tier.

23. The computer-readable storage medium of claim 17 , wherein the first plurality of storage disks is arranged in a 4+2 RAID 6 configuration and the second plurality of storage disks is arranged in a 3-way mirroring configuration.

24. The computer-readable storage medium of claim 17 , wherein the first layer of the system is a striped Distributed Object Manager (zDOM) and the second layer of the system is a Distributed Object Manager (DOM).

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 Aug 11, 2022
From: WANG, WENGUANG; GUNTURU, VAMSIDHAR; KNAUFT, ERIC; RENAULD, PASCAL
To: VMWARE, INC.
Reel/Frame 060788/0958 →
Continuity (1)
Related Publication 20210382858A1 · Dec 9, 2021