IP Library Granted Patent US 10,705,911
Granted Patent B2
US 10,705,911 · App. 15/847,585 · Granted Jul 7, 2020

Storing data in a distributed storage system

Inventors: Murali Krishna Vishnumolakala (San Jose, CA); Umesh Maheshwari (San Jose, CA)
Assignee: Hewlett Packard Enterprise Development LP
G06F11/1076G06F3/061G06F3/065G06F3/067G06F3/0619G06F11/2094G06F2201/85
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,705,911
App. No.
15/847,585
Granted
Jul 7, 2020
Kind
B2
Abstract

According to examples, a storage node may include storage devices and a controller that may determine whether all of a plurality of data chunks of a first intra-node portion of a stripe have been stored on the storage node. Based on a determination that all of the data chunks have been stored, a first intra-node parity chunk may be stored at a second one of the storage devices, in which the first intra-node parity chunk may be determined from at least one of the data chunks of the first intra-node portion. Based on a determination that at least one of the data chunks has not been stored, storage of a first intra-node parity chunk of the stripe on the storage node may be delayed until a determination is made that all of the data chunks of the first intra-node portion have been stored at the storage node.

Claims (46)

1. A method comprising:

storing, by a processor, a first data chunk belonging to a stripe on a first storage device of a plurality of storage devices of a first storage node of a plurality of storage nodes, wherein the stripe is to be stored across the plurality of storage nodes in a plurality of intra-node portions, including a first intra-node portion to be stored on the first storage node and that comprises a plurality of data chunks including the first data chunk;

before all of the data chunks of the first intra-node portion have been stored on the first storage node:

storing a first inter-node parity chunk on a storage device of a second storage node of the plurality of storage nodes, wherein the first inter-node parity chunk is determined from at least the first data chunk; and

delaying storage of a first intra-node parity chunk at the first storage node; determining whether all of the data chunks of the first intra-node portion of the stripe have been stored on the first storage node; and

when all of the data chunks of the first intra-node portion of the stripe have been stored on the first storage node, storing the first intra-node parity chunk at a second one of the storage devices of the first storage node, wherein the first intra-node parity chunk is determined from at least one of the data chunks of the first intra-node portion of the stripe.

2. The method of claim 1 , comprising: storing the stripe across the plurality of storage nodes in a redundant manner using erasure coding.

3. The method of claim 1 , comprising:

storing the plurality of intra-node portions of the stripe on respective storage nodes of the plurality of storage nodes, including storing the first intra-node portion on the first storage node.

4. The method of claim 3 , wherein, for each of one or more of the plurality of intra-node portions, the intra-node portion comprises a plurality of data chunks and at least one intra-node parity chunk, the first intra-node portion comprising the first intra-node parity chunk.

5. The method of claim 4 , wherein at least one of the plurality of intra-node portions comprises at least one inter-node parity chunk and at least one intra-node parity chunk determined from at least the at least one inter-node parity chunk of the intra-node portion, the intra-node portion stored on the second storage node comprising the first inter-node parity chunk.

6. The method of claim 5 , wherein:

each of the plurality of storage nodes comprises a respective plurality of storage devices; and

for each of the plurality of intra-node portions stored on respective storage nodes of the plurality of storage nodes, each chunk of the intra-node portion in stored on a different storage device of the respective storage node.

7. The method of claim 5 , comprising:

storing inter-node parity chunks synchronously relative to the storage of respective data chunks of the stripe; and

storing inter-node parity chunks asynchronously relative to the storage of respective data chunks of the stripe.

8. A non-transitory storage medium comprising instructions executable by a processor of a storage system controller to:

store a first data chunk belonging to a stripe on a first storage device of a plurality of storage devices of a first storage node of a plurality of storage nodes, wherein the stripe is to be stored across the plurality of storage nodes in a plurality of intra-node portions, including a first intra-node portions to be stored on the first storage node and that comprises a plurality of data chunks including the first data chunk;

before a threshold amount of the data chunks of the first intra-node portion have been stored on the first storage node:

store a first inter-node parity chunk on a storage device of a second storage node of the plurality of storage nodes, wherein the first inter-node parity chunk to determined from at least the first data chunk; and

delay storage of a first intra-node parity chunk at the first storage node; determine whether the threshold amount of the data chunks of the first intra-node portion of the stripe have been stored on the first storage node; and

when the threshold amount of the data chunks of the first intra-node portion of the stripe have been stored on the first storage node, store the first intra-node parity chunk at a second one of the storage devices of the first storage node, wherein the first intra-node parity chunk is determined from at least one of the data chunks of the first intra-node portion of the stripe.

9. The storage medium of claim 8 , wherein the threshold amount of the data chunks of the first intra-node portion of the stripe is all of the data chunks of the first intra-node portion.

10. The storage medium of claim 8 , wherein the threshold amount of the data chunks of the first intra-node portion of the stripe is less than all of the data chunks of the first intra-node portion.

11. The storage medium of claim 8 , wherein the threshold amount of the data chunks of the first intra-node portion of the stripe is one of 50 percent, 75 percent, and 90 percent of the data chunks of the first intra-node portion.

12. The storage medium of claim 8 , the instructions comprising instructions to:

store the plurality of intra-node portions of the stripe on respective storage nodes of the plurality of storage nodes, including storing the first intra-node portion on the first storage node.

13. The storage medium of claim 12 , wherein, for each of one or more of the plurality of intra-node portions, the intra-node portion comprises a plurality of data chunks and at least one intra-node parity chunk, the first intra-node portion comprising the first intra-node parity chunk.

14. The storage medium of claim 13 , wherein at least one of the plurality of intra-node portions comprises at least one inter-node parity chunk and at least one intra-node parity chunk determined from at least the at least one inter-node parity chunk of the intra-node portion, the intra-node portion stored on the second storage node comprising the first inter-node parity chunk.

15. The storage medium of claim 14 , the instructions comprising instructions to:

store inter-node parity chunks synchronously relative to the storage of respective data chunks of the stripe; and

store inter-node parity chunks asynchronously relative to the storage of respective data chunks of the stripe.

16. A storage system controller comprising:

a processor; and

a non-transitory storage medium comprising instructions executable by the processor to:

store a first data chunk belonging to a stripe on a first storage device of a plurality of storage devices of a first storage node of a plurality of storage nodes, wherein the stripe is to be stored across the plurality of storage nodes in a plurality of intra-node portions, including a first intra-node portion to be stored on the first storage node and that comprises a plurality of data chunks including the first data chunk;

before a threshold amount of the data chunks of the first intra-node portion have been stored on the first storage node:

store a first inter-node parity chunk on a storage device of a second storage node of the plurality of storage nodes, wherein the first inter-node parity chunk is determined from at least the first data chunk; and

delay storage of a first intra-node parity chunk at the first storage node; determine whether the threshold amount of the data chunks of the first intra-node portion of the stripe have been stored on the first storage node; and

when the threshold amount of the data chunks of the first intra-node portion of the stripe have been stored on the first storage node, store the first intra-node parity chunk at a second one of the storage devices of the first storage node, wherein the first intra-node parity chunk is determined from at least one of the data chunks of the first intra-node portion of the stripe.

17. The storage system controller of claim 16 , wherein the threshold amount of the data chunks of the first intra-node portion of the stripe is all of the data chunks of the first intra-node portion.

18. The storage system controller of claim 16 , wherein the threshold amount of the data chunks of the first intra-node portion of the stripe is less than all of the data chunks of the first intra-node portion.

19. The storage system controller of claim 16 , the instructions comprising instructions to:

store the plurality of intra-node portions of the stripe on respective storage nodes of the plurality of storage nodes, including storing the first intra-node portion on the first storage node.

20. The storage system controller of claim 19 , wherein, for each of one or more of the plurality of intra-node portions, the intra-node portion comprises a plurality of data chunks and at least one intra-node parity chunk, the first intra-node portion comprising the first intra-node parity chunk.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2018
From: VISHNUMOLAKALA, MURALI KRISHNA; MAHESHWARI, UMESH
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 045319/0679 →
Continuity (2)
Provisional Application 62489355 · Apr 24, 2017
Related Publication 20180307560A1 · Oct 25, 2018