IP Library › Granted Patent US 10,191,914
Granted Patent B2
US 10,191,914 · App. 14/675,425 · Granted Jan 29, 2019

De-duplicating distributed file system using cloud-based object store

Inventors: Thomas Manville (Mountain View, CA); Julio Lopez (Mountain View, CA); Rajiv Desai (Mountain View, CA); Nathan Rosenblum (San Francisco, CA)
Assignee: EMC IP Holding Company LLC
G06F17/30159
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,191,914
App. No.
14/675,425
Filed
Mar 31, 2015
Granted
Jan 29, 2019
Kind
B2
Examiner
LEE, WILSON
Art Unit
2152
USPC
707/692
Abstract

Techniques to provide a de-duplicating distributed file system using a cloud-based object store are disclosed. In various embodiments, a request to store a file comprising a plurality of chunks of file data is received. A determination to store at least a subset of the plurality of chunks is made. The request is responded to at least in part by providing an indication to store two or more chunks comprising the at least a subset of the plurality of chunks comprising the file as a single stored object that includes the combined chunk data of said two or more chunks.

Claims (40)

1. A method of storing file system data, comprising:

receiving, at a processor, a request to store a file comprising a plurality of chunks of file data;

determining, by the processor, to store at least a first subset of the plurality of chunks of file data based at least in part on a chunk identifier, wherein a second subset of the plurality of chunks of file data are already stored at a remote storage;

determining, by the processor, a deduplication chunk size for the plurality of chunks of file data of the first subset, wherein the deduplication chunk size facilitates achieving a desired deduplication performance when storing the first subset of the plurality of chunks of file data, and wherein the deduplication chunk size is larger than a chunk size of a chunk included in the first subset of the plurality of chunks;

selecting, by the processor, which chunks of the first subset of the plurality of chunks of file data to combine into a single stored object that satisfies the deduplication chunk size associated with the desired deduplication performance;

combining, by the processor, the selected chunks of the first subset of the plurality of chunks of file data into the single stored object satisfying the deduplication chunk size; and

providing, by the processor, the single stored object that includes the combined selected chunks of the first subset of the plurality of chunks of file data to the remote storage, wherein the remote storage is configured to store the provided single stored object, and wherein storing the single stored object achieves a better deduplication performance than would be achieved if the combined selected chunks were stored individually.

2. The method of claim 1 , wherein the request is received from a file system client.

3. The method of claim 1 , wherein the request includes a hash or other representation of the chunks comprising the file.

4. The method of claim 3 , wherein the hash or other representation is used to determine whether a chunk comprising the file has already been stored by the file system.

5. The method of claim 4 , wherein determining to store the at least a first subset of the plurality of chunks includes using the respective hash or other representation of the chunks comprising the at least a first subset of the plurality of chunks to determine that said chunks have not yet been stored.

6. The method of claim 1 , further comprising responding to the request at least in part by providing an indication to store two or more chunks comprising the at least a first subset of the plurality of chunks comprising the file as the single stored object that includes combined chunk data of said two or more chunks, wherein said indication to store two or more chunks comprising the at least a subset of the plurality of chunks comprising the file as the single stored object includes a locator or other identifier associated with the single stored object and data associating said at least a subset of the plurality of chunks comprising the file with the locator or other identifier.

7. The method of claim 6 , wherein the locator or other identifier indicates a location to which the single stored object should be sent to be stored.

8. The method of claim 1 , wherein the request is sent by a file system client that is configured to respond to said response to the request by assembling the single stored object using two or more of the first subset of the plurality of chunks.

9. The method of claim 1 , further comprising storing metadata that associates said combined selected chunks with said single stored object.

10. The method of claim 9 , wherein said metadata includes for each chunk a location of data comprising that chunk with the single stored object.

11. The method of claim 1 , further comprising verifying storage of said combined selected chunks at least in part by retrieving said single stored object and using chunk data of the respective chunks comprising the single stored object to verify the chunk data as stored corresponds to the chunk data that was expected to be stored.

12. The method of claim 1 , further comprising storing for the single stored object a reference count that reflects a number of chunks comprising a blob that remain subject to being retained by a file system.

13. The method of claim 12 , further comprising decrementing the reference count based at least in part on a determination that a chunk comprising the blob no longer remains subject to being retained by a file system.

14. A system to store file system data, comprising:

a communication interface; and

a processor coupled to the communication interface and configured to:

receive via the communication interface a request to store a file comprising a plurality of chunks of file data;

determine to store at least a first subset of the plurality of chunks of file data based at least in part on a chunk identifier, wherein a second subset of the plurality of chunks of file data are already stored at a remote storage;

determine a deduplication chunk size for the plurality of chunks of file data of the first subset, wherein the deduplication chunk size facilitates achieving a desired deduplication performance when storing the first subset of the plurality of chunks of file data, and wherein the deduplication chunk size is larger than a chunk size of a chunk included in the first subset of the plurality of chunks;

select which chunks of the first subset of the plurality of chunks of file data to combine into a single stored object that satisfies the deduplication chunk size associated with the desired deduplication performance;

combine the selected chunks of the first subset of the plurality of chunks of file data into the single stored object satisfying the deduplication chunk size; and

provide the single stored object that includes the combined selected chunks of the first subset of the plurality of chunks of file data to the remote storage, wherein the remote storage is configured to store the provided single stored object, and wherein storing the single stored object achieves a better deduplication performance than would be achieved if the combined selected chunks were stored individually.

15. The system of claim 14 , wherein the request includes a hash or other representation of the chunks comprising the file.

16. The system of claim 15 , wherein the hash or other representation is used to determine whether a chunk comprising the file has already been stored.

17. The system of claim 16 , wherein determining to store the at least a subset of the plurality of chunks includes using the respective hash or other representation of the chunks comprising the at least a subset of the plurality of chunks to determine that said chunks have not yet been stored.

18. The system of claim 14 , wherein the processor is further configured to verify storage of said combined selected chunks at least in part by retrieving said single stored object and using chunk data of the respective chunks comprising the single stored object to verify the chunk data as stored corresponds to the chunk data that was expected to be stored.

19. A computer program product to store file system data, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

receiving a request to store a file comprising a plurality of chunks of file data;

determining to store at least a first subset of the plurality of chunks of file data based at least in part on a chunk identifier, wherein a second subset of the plurality of chunks of file data are already stored at a remote storage;

determining a deduplication chunk size for the plurality of chunks of file data of the first subset, wherein the deduplication chunk size facilitates achieving a desired deduplication performance when storing the first subset of the plurality of chunks of file data, and wherein the deduplication chunk size is larger than a chunk size of a chunk included in the first subset of the plurality of chunks;

selecting which chunks of the first subset of the plurality of chunks of file data to combine into a single stored object that satisfies the deduplication chunk size associated with the desired deduplication performance;

combining the selected chunks of the first subset of the plurality of chunks of file data into the single stored object satisfying the deduplication chunk size; and

providing the single stored object that includes the combined selected chunks of the first subset of the plurality of chunks of file data to the remote storage, wherein the remote storage is configured to store the provided single stored object, and wherein storing the single stored object achieves a better deduplication performance than would be achieved if the combined selected chunks were stored individually.

20. The method of claim 1 , wherein the deduplication chunk size is determined based at least in part on an overhead associated with computing and storing hashes associated with the plurality of chunks.

Assignments (10)
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 (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2015
From: MANVILLE, THOMAS; LOPEZ, JULIO; DESAI, RAJIV; ROSENBLUM, NATHAN
To: EMC CORPORATION
Reel/Frame 035304/0700 →
Continuity (1)
Related Publication 20160292178A1 · Oct 6, 2016