IP Library Granted Patent US 9,787,773
Granted Patent B2
US 9,787,773 · App. 15/151,219 · Granted Oct 10, 2017

Method and system for global namespace with consistent hashing

Inventor: Michael W. Shapiro (San Francisco, CA)
Assignee: EMC IP Holding Company LLC
H04L67/1097G06F3/0604G06F3/067G06F3/0641G06F3/0644G06F3/0667G06F3/0685G06F17/302G06F17/3089G06F17/30876
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 9,787,773
App. No.
15/151,219
Filed
May 10, 2016
Granted
Oct 10, 2017
Kind
B2
Art Unit
2139
USPC
711/216
Abstract

A method for writing data to a storage pool. The method includes receiving a virtual identifier (ID) and an offset for an object, extracting a node identifier (ID) that identifies a first storage server in the storage pool from the virtual ID, obtaining an object layout (OL) for the object from the first storage server, hashing an object ID and an offset ID to obtain a hashed value, where the virtual ID comprises the object ID and where the offset ID is generated from the offset, identifying a second storage server in the storage pool using a global namespace layout (GL), the OL, and the hashed value, and issuing a write request to write data to the object in the second storage server, where the write request comprises the object ID and the offset.

Claims (74)

1. A method for writing data to a storage pool, comprising:

creating a global namespace layout (GL), wherein the GL comprises a first server entry for a first storage server in the storage pool and a second server entry from a second storage server in the storage pool, wherein the first server entry comprises a node ID identifying the first storage server, a node identifier (ID) associated with the first storage server, and a node point used to determine which write requests are serviced by the first storage server;

providing the GL to a client;

after providing the GL to the client:

receiving, from the client, a request for an object layout (OL) by the first storage server;

providing the OL to the client;

and

after sending the OL to the client, receiving by the second storage server, a write request to write data to an object in the second storage server, wherein the write request comprises an object ID and an offset; and

writing in response to the write request, the data to the object on the second storage server.

2. The method of claim 1 , wherein the storage pool comprises a plurality of storage servers, wherein the GL specifies which of the plurality of storage servers were writeable for each GL sequence number and how writes were distributed across the plurality of storage servers writeable for each GL sequence number.

3. The method of claim 1 ,

wherein the OL specifies an OL sequence number, wherein the OL sequence number is set when the object is created, wherein the OL sequence number corresponds to a GL sequence number of the GL when the object was created.

4. The method of claim 1 , wherein the request for the OL comprises a value generated using a virtual identifier (ID) associated with the object.

5. The method of claim 4 , wherein the OL comprises an OL sequence number, the virtual ID, and a stripe width.

6. The method of claim 1 , wherein the GL further comprises:

a first node sequence number corresponding to a GL sequence number when the first storage server was added to the storage pool.

7. The method of claim 1 , further comprising:

receiving, by the second storage server, a request to store the OL in the second storage server, wherein the request to store the OL specifies a virtual ID and a special offset; and

storing, by the second storage server, the OL in the second storage server.

8. The method of claim 1 , further comprising:

providing the GL to a second client:

after providing the GL to the second client:

receiving, by the first storage server, a second GL from the second client, wherein the second GL is associated with a second GL sequence number that is greater than the first GL sequence number associated with the GL; and

storing the second GL in the first storage server.

9. The method of claim 1 , further comprising:

receiving, by the second storage server, a request to delete the object;

in response to receiving the request to delete the object:

setting a delete flag for an entry corresponding to the object in the second storage server;

invalidating all other entries corresponding to the object in all other storage servers in the storage pool; and

after all the other entries corresponding to the object in all other storage servers in the storage pool have been invalidated, invalidating the entry corresponding to the object in the second storage server.

10. A non-transitory computer readable medium comprising instructions which when executed by a processor perform a method, the method comprising:

creating a global namespace layout (GL), wherein the GL comprises a first server entry for a first storage server in the storage pool and a second server entry from a second storage server in the storage pool, wherein the first server entry comprises a node ID identifying the first storage server, a node identifier (ID) associated with the first storage server, and a node point used to determine which write requests are serviced by the first storage server;

providing the GL to a client;

after providing the GL to the client:

receiving, from the client, a request for an object layout (OL) by the first storage server;

providing the OL to the client; and

after sending the OL to the client, receiving by the second storage server, a write request to write data to an object in the second storage server, wherein the write request comprises an object ID and an offset; and

writing in response to the write request, the data to the object on the second storage server.

11. The non-transitory computer readable medium of claim 10 , wherein the storage pool comprises a plurality of storage servers, wherein the GL specifies which of the plurality of storage servers were writeable for each GL sequence number and how writes were distributed across the plurality of storage servers writeable for each GL sequence number.

12. The non-transitory computer readable medium of claim 10 , wherein the OL specifies an OL sequence number, wherein the OL sequence number is set when the object is created, wherein the OL sequence number corresponds to a GL sequence number of the GL when the object was created.

13. The non-transitory computer readable medium of claim 10 , wherein the request for the OL comprises a value generated using a virtual identifier (ID) associated with the object.

14. The non-transitory computer readable medium of claim 13 , wherein the OL comprises an OL sequence number, the virtual ID, and a stripe width.

15. The non-transitory computer readable medium of claim 10 , wherein the GL further comprises: a first node sequence number corresponding to a GL sequence number when the first storage server was added to the storage pool.

16. The non-transitory computer readable medium of claim 10 , wherein the method further comprises:

receiving, by the second storage server, a request to store the OL in the second storage server, wherein the request to store the OL specifies a virtual ID and a special offset; and

storing, by the second storage server, the OL in the second storage server.

17. The non-transitory computer readable medium of claim 10 , wherein the method further comprises:

providing the GL to a second client:

after providing the GL to the second client:

receiving, by the first storage server, a second GL from the second client, wherein the second GL is associated with a second GL sequence number that is greater than the first GL sequence number associated with the GL; and

storing the second GL in the first storage server.

18. The non-transitory computer readable medium of claim 10 , wherein the method further comprises:

receiving, by the second storage server, a request to delete the object;

in response to receiving the request to delete the object:

setting a delete flag for an entry corresponding to the object in the second storage server;

invalidating all other entries corresponding to the object in all other storage servers in the storage pool; and

after all the other entries corresponding to the object in all other storage servers in the storage pool have been invalidated, invalidating the entry corresponding to the object in the second storage server.

19. A system, comprising:

a first storage server comprising a first persistent storage; and

a second storage server comprising a second persistent storage;

wherein the first storage server is programmed to:

create a global namespace layout (GL), wherein the GL comprises a first server entry for a first storage server in the storage pool and a second server entry from a second storage server in the storage pool, wherein the first server entry comprises a node ID identifying the first storage server, a node identifier (ID) associated with the first storage server, and a node point used to determine which write requests are serviced by the first storage server;

after providing the GL to the client:

provide the GL to a client;

receive, from the client, a request for an object layout (OL) by the first storage server;

provide the OL to the client;

wherein the second storage server is programmed to:

after sending the OL to the client, receive by the second storage server, a write request to write data to an object in the second storage server, wherein the write request comprises an object ID and an offset; and

write in response to the write request, the data to the object in the second persistent storage.

20. The system of claim 19 , wherein the first storage server is further programmed to:

provide the GL to a second client:

after providing the GL to the second client:

receive a second GL from the second client, wherein the second GL is associated with a second GL sequence number that is greater than the first GL sequence number associated with the GL; and

storing the second GL.

Assignments (11)
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 →
MERGER Recorded Sep 10, 2016
From: DSSD, INC.
To: EMC CORPORATION
Reel/Frame 039694/0912 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 24, 2016
From: SHAPIRO, MICHAEL W
To: DSSD, INC.
Reel/Frame 039530/0673 →
Continuity (4)
Continuation 14439310
Continuation 13671996 · Nov 8, 2012
Related Publication 20160255152A1 · Sep 1, 2016
Related Publication 20170134496A9 · May 11, 2017