IP Library Granted Patent US 10,303,365
Granted Patent B1
US 10,303,365 · App. 15/884,519 · Granted May 28, 2019

Data fingerprint distribution on a data storage system

Inventors: Peng Wu (Westborough, MA); Bin Dai (Marlborough, MA); Rong Yu (West Roxbury, MA)
Assignee: EMC IP Holding Company LLC
G06F3/0608G06F3/0659G06F3/0683H04L9/0643
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,303,365
App. No.
15/884,519
Filed
Jan 31, 2018
Granted
May 28, 2019
Kind
B1
Art Unit
2132
USPC
711/154
Abstract

Fingerprints of data portions are distributed in a balanced manner across active controllers of a data storage system, and may be done so in such a manner that, when a new active controller is added to the system, fingerprint ownership and movement between pre-existing active controllers, and active controllers overall, is minimized When a new active controller is added to the system and fingerprints are redistributed, no fingerprint ownership may be re-assigned between pre-existing active controllers and no fingerprints may be moved between pre-existing active controllers, for example, between local memories of the active controller.

Claims (63)

1. For a data storage system in which fingerprints are determined for data portions of a predetermined size, the data storage system including one or more of a potential number of active storage controllers, a method comprising:

grouping potential fingerprints into a plurality of fingerprint groups;

for each of the plurality of fingerprint groups, for each of the potential number of active storage controllers in the data storage system, determining a storage controller that owns the fingerprint group;

determining a number of active storage controllers; and

for at least each fingerprint determined for a data portion stored in the data storage system, storing the fingerprint in a fingerprint table of fingerprints in a local memory of a storage controller determined to own, for the determined number of active controllers, the fingerprint group to which the fingerprint belongs.

2. The method according to claim 1 , further comprising

populating a second table including a plurality of entries, each entry corresponding to one or more fingerprint groups and specifying, for each of the potential number of active storage controllers, the storage controller determined to own the fingerprint group.

3. The method according to claim 2 , wherein the plurality of entries of the second table do not change in response to adding another active storage controller of the potential number of active storage controllers to the data storage system.

4. The method according to claim 2 , further comprising:

receiving a first data portion;

determining a first fingerprint of the data portion;

determining, using the second table, a first active storage controller of the plurality of storage controllers that owns the first fingerprint; and

using a first fingerprint table in the local memory of the first active storage controller to perform deduplication processing of the first data portion.

5. The method according to claim 1 , further comprising:

in response to adding an active storage controller of the potential number of active storage controllers to the data storage system, moving one or more of the at least each fingerprint determined for a data portion from the first table to a second table of fingerprints in a local memory of the added storage controller determined to own the one or more fingerprints,

wherein no fingerprints are moved between any storage controllers that already were active prior to the adding of the active storage controller.

6. The method according to claim 1 , further comprising:

in response to adding an active storage controller of the potential number of active storage controllers to the data storage system, moving one or more of the at least each fingerprint determined for a data portion from the first table to a second table of fingerprints in a local memory of the added storage controller determined to own the one or more fingerprints,

wherein a maximum percentage of fingerprints that are moved between any active storage controllers as a result of the adding of the active storage controller is: 100/x, wherein x is a number of active storage controllers on the data storage system after the adding of the active controller.

7. The method according to claim 1 , further comprising:

determining a quantity of fingerprint groups to be a lowest common multiple of each potential number of active storage controllers or a multiple thereof.

8. The method according to claim 1 , wherein the fingerprints are generated for the data portions using a hash function that produces a random distribution of fingerprint values in a space of possible fingerprint values.

9. The method according to claim 1 , wherein fingerprints are generated using SHA-2.

10. A data storage system in which fingerprints are determined for data portions of a predetermined size, the data storage system comprising:

one or more of a potential number of active storage controllers;

one or more processors; and

a memory comprising code stored thereon that, when executed, performs a method comprising:

grouping potential fingerprints into a plurality of fingerprint groups;

for each of the plurality of fingerprint groups, for each of the potential number of active storage controllers in the data storage system, determining a storage controller that owns the fingerprint group;

determining a number of active storage controllers; and

for at least each fingerprint determined for a data portion stored in the data storage system, storing the fingerprint in a fingerprint table of fingerprints in a local memory of a storage controller determined to own, for the determined number of active controllers, the fingerprint group to which the fingerprint belongs.

11. The system according to claim 10 , the method further comprising

populating a second table including a plurality of entries, each entry corresponding to one or more fingerprint groups and specifying, for each of the potential number of active storage controllers, the storage controller determined to own the fingerprint group.

12. The system according to claim 11 , wherein the plurality of entries of the second table do not change in response to adding another active storage controller of the potential number of active storage controllers to the data storage system.

13. The system according to claim 11 , the method further comprising:

receiving a first data portion;

determining a first fingerprint of the data portion;

determining, using the second table, a first active storage controller of the plurality of storage controllers that owns the first fingerprint; and

using a first fingerprint table in the local memory of the first active storage controller to perform deduplication processing of the first data portion.

14. The system according to claim 10 , the method further comprising:

in response to adding an active storage controller of the potential number of active storage controllers to the data storage system, moving one or more of the at least each fingerprint determined for a data portion from the first table to a second table of fingerprints in a local memory of the added storage controller determined to own the one or more fingerprints,

wherein no fingerprints are moved between any storage controllers that already were active prior to the adding of the active storage controller.

15. The system according to claim 10 , the method further comprising:

in response to adding an active storage controller of the potential number of active storage controllers to the data storage system, moving one or more of the at least each fingerprint determined for a data portion from the first table to a second table of fingerprints in a local memory of the added storage controller determined to own the one or more fingerprints,

wherein a maximum percentage of fingerprints that are moved between any active storage controllers as a result of the adding of the active storage controller is: 100/x, wherein x is a number of active storage controllers on the data storage system after the adding of the active controller.

16. A non-transitory computer-readable medium having software stored thereon for a data storage system in which fingerprints are determined for data portions of a predetermined size, the data storage system including one or more of a potential number of active storage controllers, the software comprising:

executable code that groups potential fingerprints into a plurality of fingerprint groups;

executable code that, for each of the plurality of fingerprint groups, for each of the potential number of active storage controllers in the data storage system, determines a storage controller that owns the fingerprint group;

executable code that determines a number of active storage controllers; and

executable code that, for at least each fingerprint determined for a data portion stored in the data storage system, stores the fingerprint in a fingerprint table of fingerprints in a local memory of a storage controller determined to own, for the determined number of active controllers, the fingerprint group to which the fingerprint belongs.

17. The non-transitory computer-readable medium according to claim 16 , the software further comprising

executable code that populates a second table including a plurality of entries, each entry corresponding to one or more fingerprint groups and specifying, for each of the potential number of active storage controllers, the storage controller determined to own the fingerprint group.

18. The non-transitory computer-readable medium according to claim 17 , the software further comprising:

executable code that receives a first data portion;

executable code that determines a first fingerprint of the data portion;

executable code that determines, using the second table, a first active storage controller of the plurality of storage controllers that owns the first fingerprint; and

executable code that uses a first fingerprint table in the local memory of the first active storage controller to perform deduplication processing of the first data portion.

19. The non-transitory computer-readable medium according to claim 16 , the software further comprising:

executable code that, in response to adding an active storage controller of the potential number of active storage controllers to the data storage system, moves one or more of the at least each fingerprint determined for a data portion from the first table to a second table of fingerprints in a local memory of the added storage controller determined to own the one or more fingerprints,

wherein no fingerprints are moved between any storage controllers that already were active prior to the adding of the active storage controller.

20. The non-transitory computer-readable medium according to claim 16 , the software further comprising:

executable code that, in response to adding an active storage controller of the potential number of active storage controllers to the data storage system, moves one or more of the at least each fingerprint determined for a data portion from the first table to a second table of fingerprints in a local memory of the added storage controller determined to own the one or more fingerprints,

wherein a maximum percentage of fingerprints that are moved between any active storage controllers as a result of the adding of the active storage controller is: 100/x, wherein x is a number of active storage controllers on the data storage system after the adding of the active controller.

Assignments (8)
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 (045482/0131) Recorded May 20, 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; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 061749/0924 →
RELEASE OF SECURITY INTEREST AT REEL 045482 FRAME 0395 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058298/0314 →
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 →
SECURITY AGREEMENT Recorded Mar 21, 2019
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 049452/0223 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 045482/0395 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 045482/0131 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 31, 2018
From: WU, PENG; DAI, BIN; YU, RONG
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 044781/0805 →