IP Library Granted Patent US 8,677,055
Granted Patent B2
US 8,677,055 · App. 12/983,758 · Granted Mar 18, 2014

Flexible way of specifying storage attributes in a flash memory-based object store

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,677,055
App. No.
12/983,758
Granted
Mar 18, 2014
Kind
B2
Abstract

Approaches for performing a write operation on a solid state device (SSD). One or more containers are maintained on the solid state device. Each container is a logical grouping of objects independent from where the logical grouping of objects are physically stored on the solid state device. When a write operation is received at the SSD, the manner is which changes requested by the write operation should be stored are determined based on which container is being written. Containers provide a flexible approach for specifying attributes of how data should be stored and accessed which is independent from where the data is physically stored. Containers also have particular utility in performing load balancing and ensuring high availability and recovery.

Claims (52)

1. A method for performing a write operation on a solid state device, comprising:

maintaining one or more containers at the solid state device, wherein each container, of the one or more containers, is a logical grouping of objects independent from where the logical grouping of objects are physically stored on the solid state device; and

upon receiving, at the solid state device, the write operation, determining how to store changes requested by the write operation based on which container, of the one or more containers, is associated with an object to which the write operation is to write.

2. The method of claim 1 , wherein each container, of the one or more containers, may be configured by a user to operate according to a plurality of modes, and wherein the plurality of modes includes:

a first mode wherein an object stored in the container is not evicted from the container until an explicit request to evict the object is received, and

a second mode wherein an object stored in the container is eligible to be evicted from the container to make room for another object.

3. The method of claim 1 , wherein each container, of the one or more containers, may be configured by a user to operate according to a plurality of modes, and wherein the plurality of modes includes:

a first mode wherein an object stored in the container is persistently stored, and

a second mode wherein an object stored in the container is not persistently stored.

4. The method of claim 1 , wherein each container, of the one or more containers, may be configured by a user to operate according to a plurality of modes, and wherein the plurality of modes includes:

a first mode wherein access to an object stored within the container requires a first set of access privileges; and

a second mode wherein access to an object stored within the container requires a different set of access privileges than the first set of access privileges.

5. The method of claim 1 , further comprising:

upon determining that a particular container, of the one or more containers, is experiencing a workload that exceeds a specified threshold, (a) dividing a set of keys used to access objects in the particular container into two or more groups of keys, and (b) creating a new container to store objects associated with a group of keys in the two or more groups of keys.

6. The method of claim 1 , wherein a particular container, of the one or more containers maintained at the solid state device, comprises two or more sub-containers that are each associated with a set of keys that identify objects stored within the particular container, and wherein the two or more sub-containers may be used to migrate, at a later point in time, a portion of the objects to a different physical location.

7. The method of claim 1 , wherein a child container, of the one or more containers maintained at the solid state device, is in a hierarchical relationship with a parent container of the one or more containers maintained at the solid state device, and wherein the child container inherits all the properties assigned to the parent container.

8. The method of claim 1 , wherein determining how to store changes requested by the write operation comprises determining one or more attributes or mode settings of the container associated with the object.

9. A method for maintaining a replicated object store maintained on a plurality of solid state devices, comprising:

replicating objects stored in a volatile cache maintained at each solid state device of the plurality of solid state devices to all other volatile caches maintained at the other solid state devices of the plurality of solid state devices; and

at a particular solid state device of the plurality of solid state devices, determining how to perform a write operation that has been replicated from another solid state device, of the plurality of solid state devices, based on a container, at the particular solid state device, the replicated write operation is to write,

wherein the container is a logical grouping of objects that is independent from where the logical grouping of objects are physically stored.

10. The method of claim 9 , further comprising:

at the particular solid state device, determining how to replicate a different write operation to another solid state device, of the plurality of solid state devices, based on a different container, at the particular solid state device, upon which the different write operation was performed.

11. A device comprising:

one or more solid state devices;

one or more processors; and

memory storing one or more programs, which when executed by the one or more processors, cause the device to perform a method comprising:

maintaining one or more containers at a solid state device of the one or more solid state devices, wherein each container, of the one or more containers, is a logical grouping of objects independent from where the logical grouping of objects are physically stored on the solid state device; and

upon receiving, at the solid state device, a write operation, determining how to store changes requested by the write operation based on which container, of the one or more containers, is associated with an object to which the write operation is to write.

12. The device of claim 11 , wherein each container, of the one or more containers, may be configured by a user to operate according to a plurality of modes, and wherein the plurality of modes includes:

a first mode wherein an object stored in the container is not evicted from the container until an explicit request to evict the object is received, and

a second mode wherein an object stored in the container is eligible to be evicted from the container to make room for another object.

13. The device of claim 11 , wherein each container, of the one or more containers, may be configured by a user to operate according to a plurality of modes, and wherein the plurality of modes includes:

a first mode wherein an object stored in the container is persistently stored, and

a second mode wherein an object stored in the container is not persistently stored.

14. The device of claim 11 , wherein each container, of the one or more containers, may be configured by a user to operate according to a plurality of modes, and wherein the plurality of modes includes:

a first mode wherein access to an object stored within the container requires a first set of access privileges; and

a second mode wherein access to an object stored within the container requires a different set of access privileges than the first set of access privileges.

15. The device of claim 11 , wherein execution of the one or more programs by the one or more processors further causes:

upon determining that a particular container, of the one or more containers, is experiencing a workload that exceeds a specified threshold, (a) dividing a set of keys used to access objects in the particular container into two or more groups of keys, and (b) creating a new container to store objects associated with a group of keys in the two or more groups of keys.

16. The device of claim 11 , wherein a particular container, of the one or more containers maintained at the solid state device, comprises two or more sub-containers that are each associated with a set of keys that identify objects stored within the particular container, and wherein the two or more sub-containers may be used to migrate, at a later point in time, a portion of the objects to a different physical location.

17. The device of claim 11 , wherein a child container, of the one or more containers maintained at the solid state device, is in a hierarchical relationship with a parent container of the one or more containers maintained at the solid state device, and wherein the child container inherits all the properties assigned to the parent container.

18. The device of claim 11 , wherein determining how to store changes requested by the write operation comprises determining one or more attributes or mode settings of the container associated with the object.

19. A device comprising:

a plurality of solid state devices;

one or more processors; and

memory storing one or more programs, which when executed by the one or more processors, cause the device to perform a method comprising:

replicating objects stored in a volatile cache maintained at each solid state device of the plurality of solid state devices to all other volatile caches maintained at the other solid state devices of the plurality of solid state devices; and

at a particular solid state device of the plurality of solid state devices, determining how to perform a write operation that has been replicated from another solid state device, of the plurality of solid state devices, based on a container, at the particular solid state device, the replicated write operation is to write,

wherein the container is a logical grouping of objects that is independent from where the logical grouping of objects are physically stored.

20. The device of claim 19 , wherein execution of the one or more programs further causes:

at the particular solid state device, determining how to replicate a different write operation to another solid state device, of the plurality of solid state devices, based on a different container, at the particular solid state device, upon which the different write operation was performed.

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: OUYE, DARRYL; DINKER, DARPAN; BUSCH, JOHN
To: SCHOONER INFORMATION TECHNOLOGY, INC.
Reel/Frame 025687/0354 →