IP Library Granted Patent US 8,725,951
Granted Patent B2
US 8,725,951 · App. 12/983,754 · Granted May 13, 2014

Efficient flash memory-based object store

Inventors: John Busch (Cupertino, CA); Darpan Dinker (Union City, CA); Darryl Ouye (Aptos, CA)
Assignee: Sandisk Enterprise IP LLC
G06F12/08
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 8,725,951
App. No.
12/983,754
Granted
May 13, 2014
Kind
B2
Abstract

Approaches for an object store implemented, at least in part, on one or more solid state devices. The object store may store objects on a plurality of solid state devices. The object store may include a transaction model means for ensuring that the object store performs transactions in compliance with atomicity, concurrency, isolation, and durability (ACID) properties. The object store may include means for providing parallel flushing in a write cache maintained on each of the solid state devices. The object store may include means for maintaining one or more double-write buffers, for the object store, at a location other than the solid state devices. The object store may optionally comprise means for maintaining one or more circular transaction logs, for the object store, at a location other than the solid state devices. The object store may operate to minimize write operations performed on the solid state devices.

Claims (47)

1. A method for durably storing data blocks maintained in a volatile cache on a solid state device, comprising:

instantiating a plurality of threads that are each configured to perform work according to one of a plurality of stages,

wherein the plurality of stages include:

a first stage in which a thread identifies, in the volatile cache of a server that issues write requests to an object store maintained on one or more solid state devices, a first set of data blocks to write to a double-write buffer cache in non-volatile dynamic random access memory (DRAM),

a second stage in which a thread writes a second set of data blocks from the volatile cache to the double-write buffer,

a third stage in which a thread writes data from the double-write buffer to the one or more solid state devices, and

wherein the plurality of threads include at least two threads that are both operating in different stages of the plurality of stages.

2. The method of claim 1 , wherein the plurality of threads includes at least three threads that are each operating in a different stage of the plurality of stages.

3. The method of claim 1 , wherein the plurality of threads include two or more threads that are operating in the same stage of the plurality of stages.

4. The method of claim 1 , wherein the non-volatile dynamic random access memory (DRAM) is maintained in a controller of a hard-disk drive (HDD).

5. A distributed object store, comprising:

a plurality of solid state devices;

one or more processors on one or more machines; and

a machine readable medium storing one or more sequences of instructions, which when executed by the one or more processors, cause:

maintaining the distributed object store on the plurality of solid state devices, wherein the distributed object store stores objects using a transaction model that ensures compliance with atomicity, concurrency, isolation, and durability (ACID) properties;

the distributed object store providing parallel flushing in a write cache maintained on each of the plurality of solid state devices; and

the distributed object store maintaining one or more double-write buffers, for the distributed object store, at a location other than the plurality of solid state devices.

6. The distributed object store of claim 5 , wherein execution of the one or more sequences of instructions by the one or more processors further cause:

the distributed object store maintaining one or more circular transaction logs, for the distributed object store, at a location other than the plurality of solid state devices.

7. The distributed object store of claim 5 , wherein execution of the one or more sequences of instructions by the one or more processors further cause:

the distributed object store supporting an interface which allows an administrator to reduce a block size for the distributed object store for purposes of minimizing wear on each of the plurality of solid state devices.

8. The distributed object store of claim 5 , wherein the distributed object store providing parallel flushing comprises identifying, in parallel, dirty data blocks stored within the write cache, to be replaced.

9. The distributed object store of claim 5 , wherein the distributed object store is a MySQL database management system.

10. The distributed object store of claim 5 , wherein the distributed object store is a memcached caching system or a non-relational data store.

11. A non-transitory machine readable storage medium storing one or more sequences of instructions for durably storing data blocks maintained in a volatile cache on a solid state device, wherein execution of the one or more sequences of instructions cause:

instantiating a plurality of threads that are each configured to perform work according to one of a plurality of stages,

wherein the plurality of stages include:

a first stage in which a thread identifies, in the volatile cache of a server that issues write requests to an object store maintained on one or more solid state devices, a first set of data blocks to write to a double-write buffer cache in non-volatile dynamic random access memory (DRAM),

a second stage in which a thread writes a second set of data blocks from the volatile cache to the double-write buffer,

a third stage in which a thread writes data from the double-write buffer to the one or more solid state devices, and

wherein the plurality of threads include at least two threads that are both operating in different stages of the plurality of stages.

12. The machine readable storage medium of claim 11 , wherein the plurality of threads includes at least three threads that are each operating in a different stage of the plurality of stages.

13. The machine readable storage medium of claim 11 , wherein the plurality of threads include two or more threads that are operating in the same stage of the plurality of stages.

14. The machine readable storage medium of claim 11 , wherein the non-volatile dynamic random access memory (DRAM) is maintained in a controller of a hard-disk drive (HDD).

15. The machine readable storage medium of claim 11 , wherein instantiating the plurality of threads includes at least instantiating a first thread, and instantiating a second thread.

16. The method of claim 1 , wherein instantiating the plurality of threads includes at least instantiating a first thread, and instantiating a second thread.

17. A non-transitory computer readable storage medium storing one or more sequences of instructions, wherein execution of the one or more sequences of instructions by one or more processors cause:

maintaining a distributed object store on a plurality of solid state devices, wherein the distributed object store stores objects using a transaction model that ensures compliance with atomicity, concurrency, isolation, and durability (ACID) properties;

the distributed object store providing parallel flushing in a write cache maintained on each of the plurality of solid state devices; and

the distributed object store maintaining one or more double-write buffers, for the distributed object store, at a location other than the plurality of solid state devices.

18. The non-transitory computer readable storage medium of claim 17 , wherein execution of the one or more sequences of instructions by the one or more processors further cause:

the distributed object store maintaining one or more circular transaction logs, for the distributed object store, at a location other than the plurality of solid state devices.

19. The non-transitory computer readable storage medium of claim 17 , wherein execution of the one or more sequences of instructions by the one or more processors further cause:

the distributed object store supporting an interface which allows an administrator to reduce a block size for the distributed object store for purposes of minimizing wear on each of the plurality of solid state devices.

20. The non-transitory computer readable storage medium of claim 17 , wherein the distributed object store providing parallel flushing comprises identifying, in parallel, dirty data blocks stored within the write cache, to be replaced.

21. The non-transitory computer readable storage medium of claim 17 , wherein the distributed object store is a MySQL database management system.

22. The non-transitory computer readable storage medium of claim 17 , wherein the distributed object store is a memcached caching system or a non-relational data store.

Assignments (7)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0850 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2016
From: SANDISK ENTERPRISE IP LLC
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 038295/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2012
From: SCHOONER INFORMATION TECHNOLOGY, INC.
To: SANDISK ENTERPRISE IP, LLC
Reel/Frame 028710/0950 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 24, 2011
From: BUSCH, JOHN; DINKER, DARPAN; OUYE, DARRYL
To: SCHOONER INFORMATION TECHNOLOGY, INC.
Reel/Frame 025687/0341 →
Continuity (3)
Provisional Application 61323351 · Apr 12, 2010
Provisional Application 61359237 · Jun 28, 2010
Related Publication 20110252192A1 · Oct 13, 2011