IP Library Granted Patent US 11,023,158
Granted Patent B2
US 11,023,158 · App. 16/456,891 · Granted Jun 1, 2021

Constraining placement of replica segment pairs among device pairs based on coding segment count

Inventors: Ao Sun (Shanghai, CN); Gary Jialei Wu (Shanghai, CN); Lu Lei (Shanghai, CN)
Assignee: EMC IP HOLDING COMPANY LLC
G06F3/065G06F3/0608G06F3/0644G06F3/0689
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,023,158
App. No.
16/456,891
Granted
Jun 1, 2021
Kind
B2
Abstract

Embodiments of the present disclosure provide a method, apparatus, and computer program product for storing data. A method for storing data comprises: dividing data to be stored into a first number of data segments; generating a second number of coding segments based on the first number of data segments, such that at least a part of data segments from the first number of data segments can be derived from the second number of coding segments and remaining data segments in the first number of data segments; generating, for each of the first number of data segments, a replication data segment identical to the data segment; and storing the first number of data segments, the first number of replication data segments and the second number of coding segments into a plurality of storage devices. Embodiments of the present disclosure can reduce extra overhead for protecting data while ensuring high data availability.

Claims (51)

1. A method, comprising:

dividing data to be stored into a first number of data segments;

generating a second number of coding segments based on the first number of data segments, such that at least a part of data segments from the first number of data segments is able to be derived from the second number of coding segments and remaining data segments in the first number of data segments;

generating, for each of the first number of data segments, a replication data segment identical to the data segment; and

storing the first number of data segments, the first number of replication data segments, and the second number of coding segments into a plurality of storage devices, the storing comprising:

each data segment of the data segments being stored on a different storage device of the plurality of storage devices than each corresponding replication data segment of the replication data segments,

setting a limit on a quantity of pairs stored in any two storage devices of the plurality of storage devices, wherein the limit is set equal to the second number of coding segments,

each pair of the pairs comprising a data segment of the data segments and a corresponding replication data segment of the replication data segments, and

enforcing that the quantity of pairs stored in any two storage devices of the plurality of storage devices does not exceed the limit.

2. The method of claim 1 , wherein a third number of at least the part of data segments is not greater than the second number.

3. The method of claim 1 , wherein the first number of data segments include a first data segment, the first number of replication data segments include a first replication data segment corresponding to the first data segment, and wherein the storing of the first number of data segments, the first number of replication data segments and the second number of coding segments into the plurality of storage devices further comprises:

storing the first data segment into a first storage device from the plurality of storage devices; and

storing the first replication data segment into a second storage device from the plurality of storage devices, the second storage device being different than the first storage device.

4. The method of claim 1 , further comprising, in response to failure of a storage device of the plurality of storage devices, supplying requested data of the data to a requesting host device from at least one other non-failed storage device of the plurality of storage devices that have copies of the requested data.

5. The method of claim 4 , wherein the requested data is supplied to the requesting host device from the at least one other non-failed storage device without requiring any data recovery operation, since other storage devices have copies of the data in the failed storage device.

6. The method of claim 1 , further comprising, in response to failure of two storage devices of the plurality of storage devices, recovering a pair stored on the two storage devices from at least two other non-failed storage device of the plurality of storage devices.

7. An apparatus, comprising:

at least one processing unit;

at least one memory coupled to the at least one processing unit and storing instructions for execution by the at least one processing unit, the instructions, when executed by the at least one processing unit, causing the apparatus to perform operations comprising:

dividing data to be stored into a first number of data segments;

generating a second number of coding segments based on the first number of data segments, such that at least a part of data segments from the first number of data segments can be derived from the second number of coding segments and remaining data segments in the first number of data segments;

generating, for each of the first number of data segments, a replication data segment identical to the data segment; and

storing the first number of data segments, the first number of replication data segments, and the second number of coding segments into a plurality of storage devices, wherein the storing comprises:

each data segment of the data segments is stored on a different storage device of the plurality of storage devices than each corresponding replication data segment of the replication data segments,

establishing a limit on a quantity of pairs stored in any two storage devices of the plurality of storage devices, wherein the limit is equal to the second number of coding segments,

each pair of the pairs comprises a data segment of the data segments and a corresponding replication data segment of the replication data segments, and

restricting the quantity of pairs, stored in any two storage devices of the plurality of storage devices, so as not to exceed the limit.

8. The apparatus of claim 7 , wherein a third number of at least the part of data segments is not greater than the second number.

9. The apparatus of claim 7 , wherein the first number of data segments include a first data segment, the first number of replication data segments include a first replication data segment corresponding to the first data segment, and wherein the storing of the first number of data segments, the first number of replication data segments and the second number of coding segments into the plurality of storage devices further comprises:

storing the first data segment into a first storage device from the plurality of storage devices; and

storing the first replication data segment into a second storage device from the plurality of storage devices, the second storage device being different than the first storage device.

10. The apparatus of claim 7 , wherein the operations further comprise, in response to failure of a storage device of the plurality of storage devices, supplying requested data of the data to a requesting host device from at least one other non-failed storage device of the plurality of storage devices that have copies of the requested data.

11. The apparatus of claim 10 , wherein the requested data is supplied to the requesting host device from the at least one other non-failed storage device without requiring any data recovery operation, since other storage devices have copies of the data in the failed storage device.

12. The apparatus of claim 7 , wherein the operations further comprise, in response to failure of two storage devices of the plurality of storage devices, recovering a pair stored on the two storage devices from at least two other non-failed storage device of the plurality of storage devices.

13. A computer program product, which is tangibly stored on a non-transient computer storage medium and comprises machine-executable instructions, the machine-executable instructions, when executed by a device, causing the device to execute operations, comprising:

dividing data to be stored into a first number of data segments;

generating a second number of coding segments based on the first number of data segments, such that at least a part of data segments from the first number of data segments is derivable from the second number of coding segments and remaining data segments in the first number of data segments;

generating, for each of the first number of data segments, a replication data segment identical to the data segment; and

storing the first number of data segments, the first number of replication data segments, and the second number of coding segments into a plurality of storage devices, wherein the storing comprises:

each data segment of the data segments is stored on a different storage device of the plurality of storage devices than each corresponding replication data segment of the replication data segments, and

setting a limit on a quantity of pairs stored in any two storage devices of the plurality of storage devices, wherein the limit is set equal to the second number, wherein each pair of the pairs comprises a data segment of the data segments and a corresponding replication data segment of the replication data segments, and

constraining the quantity of pairs stored in any two storage devices of the plurality of storage devices, the constraining resulting in the quantity of pairs not exceeding the limit.

14. The computer program product of claim 13 , wherein a third number of at least the part of data segments is less than or equal to the second number.

15. The computer program product of claim 13 , wherein the first number of data segments include a first data segment, the first number of replication data segments include a first replication data segment corresponding to the first data segment, and wherein the storing of the first number of data segments, the first number of replication data segments and the second number of coding segments into the plurality of storage devices comprises:

storing the first data segment into a first storage device from the plurality of storage devices.

16. The computer program product of claim 15 , wherein the storing of the first number of data segments, the first number of replication data segments and the second number of coding segments into the plurality of storage devices further comprises:

storing the first replication data segment into a second storage device from the plurality of storage devices.

17. The computer program product of claim 16 , wherein the second storage device is different than the first storage device.

18. The computer program product of claim 13 , wherein the operations further comprise, in response to failure of a storage device of the plurality of storage devices, requested data of the data is supplied to a requesting host device from at least one other non-failed storage device of the plurality of storage devices that have copies of the requested data.

19. The computer program product of claim 18 , wherein the requested data is supplied to the requesting host device from the at least one other non-failed storage device without requiring any data recovery operation, since other storage devices have copies of the data in the failed storage device.

20. The computer program product of claim 13 , wherein the operations further comprise, in response to failure of two storage devices of the plurality of storage devices, recovering a pair stored on the two storage devices from at least two other non-failed storage device of the plurality of storage devices.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0571) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0088 →
RELEASE OF SECURITY INTEREST AT REEL 050406 FRAME 421 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058213/0825 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 050724/0571 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050406/0421 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2019
From: SUN, AO; WU, GARY JIALEI; LEI, LU
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 049625/0306 →