IP Library Granted Patent US 9,363,317
Granted Patent B2
US 9,363,317 · App. 14/439,310 · Granted Jun 7, 2016

Method and system for global namespace with consistent hashing

Inventor: Michael W. Shapiro (San Francisco, CA)
Assignee: DSSD, Inc.
H04L67/1097G06F3/0604G06F3/067G06F3/0641G06F3/0644G06F3/0667G06F3/0685G06F17/302
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,363,317
App. No.
14/439,310
Filed
Apr 29, 2015
Granted
Jun 7, 2016
Kind
B2
Art Unit
1629
USPC
514/1
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 as 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 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 (69)

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

receiving a virtual identifier (ID) and an offset for an object, wherein the virtual ID comprises an object ID and a node ID;

obtaining, using the node ID, an object layout (OL) for the object from a first storage server;

generating a value using the object ID and the offset;

identifying a second storage server in the storage pool using a global namespace layout (GL), the OL, and the value; and

issuing a write request to write data to the object in the second storage server, wherein the write request comprises the object ID and the offset.

2. The method of claim 1 , wherein identifying the second storage server comprises using consistent hashing.

3. 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.

4. 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 when the object was created, and

wherein identifying the second storage server in the storage pool comprises:

identifying a GL sequence number from the GL using the OL sequence number;

determining, using the GL, which of the plurality of storage servers was writeable at the GL sequence number to obtain a set of storage servers, and

identifying the second storage server from the set of storage servers.

5. The method of claim 1 , wherein identifying the second storage server in the storage pool comprises using consistent hashing and information from the GL about the how writes were distributed across the storage pool.

6. The method of claim 1 , wherein obtaining the OL from the first storage server comprises:

generating a second value using the virtual ID and a special offset, and

obtaining the OL from the first storage server using the second value.

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

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

a first server entry for the first storage server comprising:

the node ID identifying the first storage server,

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

a node point used to determine which write requests are serviced by the first storage server.

9. The method of claim 1 , further comprising:

determining that the second storage server does not include a copy of the OL;

issuing a request to store the OL to the second storage server.

10. The method of claim 1 , further comprising:

receiving a second virtual ID and a second offset for a second object, wherein the virtual ID comprises a second object ID and a second node ID;

obtaining, using the second node ID, a second OL for the second object from the third storage server;

generating a second value using the second object ID and the second offset;

identifying the second storage server in the storage pool using the GL, the second OL, and the second value; and

issuing a second write request to write data to the second object in the second storage server, wherein the second write request comprises the second object ID and the second offset.

11. The method of claim 1 , further comprising:

receiving a second virtual ID and an offset for a second object, wherein the second virtual ID comprises a second object ID and a second node ID;

obtaining, using the second node ID, a second OL for the second object from the second storage server;

generating a second value using the second object ID and the second offset;

identifying the first storage server in the storage pool using the GL, the second OL, and the second value; and

issuing a second write request to write data to the second object in the first storage server, wherein the second write request comprises the second object ID and the second offset.

12. A method for reading data to a storage pool, comprising:

receiving a virtual ID and an offset for an object, wherein the virtual ID comprises a node ID;

obtaining, using the node ID, an object layout (OL) for the object from a first storage server;

generating a value using the object ID and the offset ID;

identifying a second storage server in the storage pool using a global namespace layout (GL), the OL, and the value; and

issuing a read request to read data from the object in the second storage server, wherein the write request comprises the object ID and the offset.

13. The method of claim 12 , wherein the identifying the second storage server comprises:

identifying a set of storage servers from a plurality of storage servers in the storage pool using the GL and an OL sequence number from the OL;

identifying the second storage server from the set of storage servers using the value.

14. The method of claim 12 , wherein generating the value comprises:

generating an offset ID using the offset and a stripe width, wherein the OL comprises the stripe width,

wherein the value is generated using the object ID and the offset ID.

15. The method of claim 12 , wherein identifying the second storage server comprises using consistent hashing.

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

receiving a request for a new object;

selecting a storage server from the storage pool, wherein the storage server is identified using a Node ID;

requesting the storage server to generate a virtual ID, wherein the virtual ID comprises the node ID and an object ID for the object;

generating an object layout (OL) for the object using the virtual ID;

storing the OL in the storage server;

after storing the OL in the storage server:

receiving a write request to write data to the object, wherein the write request comprises the object ID and an offset;

generating a value using the object ID and the offset ID;

identifying a second storage server in the storage pool using a global namespace layout (GL), the OL, and the value; and

issuing a write request to write the data to the object in the second storage server, wherein the write request comprises the object ID and the offset.

17. The method of claim 16 , wherein selecting the storage server from the storage pool comprises using at least one selected from a group consisting of randomly selecting the storage server and selecting the storage server using a round robin algorithm.

18. The method of claim 16 , wherein the node ID uniquely identifies the storage server in the storage pool.

19. The method of claim 16 , wherein storing the OL in the storage server comprises:

generating a second value using the virtual ID and a special offset to obtain a second value; and

storing the OL in the storage server using the second value.

20. The method of claim 16 , wherein generating the OL further comprises using a global sequence number from the 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 May 1, 2015
From: SHAPIRO, MICHAEL W.
To: DSSD, INC.
Reel/Frame 035549/0290 →
Continuity (2)
Continuation 13671996 · Nov 8, 2012
Related Publication 20150304422A1 · Oct 22, 2015