IP Library Granted Patent US 8,612,668
Granted Patent B2
US 8,612,668 · App. 12/727,141 · Granted Dec 17, 2013

Storage optimization system based on object size

Inventors: Michael Nishimoto (Saratoga, CA); Jaspal Kohli (Sunnyvale, CA); Kumar Narayanan (San Jose, CA)
Assignee: Juniper Networks, Inc.
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,612,668
App. No.
12/727,141
Granted
Dec 17, 2013
Kind
B2
Abstract

A method and apparatus optimizes storage on solid-state memory devices. The system aggregates object storage write requests. The system determines whether objects associated with the object storage requests that have been aggregated fit in a block of the solid-state memory device within a defined tolerance. Upon the aggregation of object storage write requests that fit in a block of the solid-state memory device, the system writes the objects associated with the aggregated object storage write requests to the solid-state memory device.

Claims (78)

1. A method comprising:

aggregating, by a device, object storage write requests;

calculating, by the device, a size of a block of a solid-state memory device;

determining, by the device, a size of one or more objects associated with the aggregated object storage write requests;

determining, by the device and based on the determined size of the one or more objects, whether the one or more objects fit in the block of the solid-state memory device within a defined tolerance;

determining, by the device and when the one or more objects satisfy a size threshold, whether the one or more objects fit in a first buffer associated with the solid-state memory device;

allocating, by the device and when the one or more objects do not fit in the first buffer, a new block;

filling, by the device and when the one or more objects fit in the first buffer, the first buffer with the one or more objects;

allocating, by the device and when the one or more objects do not satisfy the size threshold, another new block,

the other new block being different than the block; and

writing, by the device and based on allocating the other new block, the one or more objects to a second buffer corresponding to the other new block.

2. The method of claim 1 , further comprising:

receiving information regarding a capacity of the second buffer; and

flushing, when the information regarding the capacity of the second buffer indicates that the second buffer is full, the second buffer.

3. The method of claim 1 , where, when writing the one or more objects to the block of the solid-state memory device, the method includes:

writing metadata associated with each object, of the one or more objects, in a different partition of the solid-state memory device than a partition where the one or more objects associated with the aggregated object storage write requests are stored.

4. The method of claim 3 , further comprising:

aggregating the metadata; and

writing, based on aggregating the metadata, the aggregated metadata associated with one or more objects.

5. The method of claim 1 , further comprising:

determining, before writing the one or more objects to the solid-state memory device, that the one or more objects are popular based on usage measurements.

6. The method of claim 1 , further comprising:

temporarily storing the one or more objects before writing the one or more objects to the block of the solid-state memory device.

7. The method of claim 1 , further comprising:

determining whether the second buffer has been updated within a particular period of time; and

flushing, when the second buffer has not been updated with a particular period of time, the second buffer.

8. An apparatus comprising:

a memory to store a plurality of instructions; and

a processor to execute the plurality of instructions to:

aggregate object storage write requests;

calculate a size of a block of a solid-state memory device;

determine a size of one or more objects associated with the aggregated object storage write requests;

determine, based on the determined size of the one or more objects, whether the one or more objects fit in the block of the solid-state memory device within a defined tolerance;

determine, when the one or more objects satisfy a size threshold, whether the one or more objects fit in a first buffer associated with the solid-state memory device;

allocate, when the one or more objects do not fit in the first buffer, a new block;

fill, when the one or more objects fit in the first buffer, the first buffer with the one or more objects;

allocate, when the one or more objects do not satisfy the size threshold, another new block,

the other new block being different than the block; and

write, based on allocating the other new block, the one or more objects to a second buffer corresponding to the other new block.

9. The apparatus of claim 8 , where the processor is further to:

temporarily store the one or more objects associated with the aggregated object storage write requests.

10. The apparatus of claim 8 , where the processor, when writing the one or more objects to the block of the solid-state memory device, is further to:

write metadata associated with each object, of the one or more objects, in a different partition of the solid-state memory device than a partition where the one or more objects associated with the aggregated object storage write requests are stored.

11. The apparatus of claim 10 , where the processor is further to:

aggregate the metadata; and

write, based on aggregating the metadata, the aggregated metadata associated with one or more objects.

12. The apparatus of claim 8 , where the processor is further to:

determine, before writing the one or more objects to the solid-state memory device, that the one or more objects are popular based on usage measurements.

13. The apparatus of claim 8 , where the processor further to:

temporarily store the one or more objects before writing the one or more objects to the block of the solid-state memory device.

14. The apparatus of claim 8 , where the processor further to:

determine whether the second buffer has been updated within a particular period of time; and

flush, when the second buffer has not been updated with a particular period of time, the second buffer.

15. A non-transitory computer-readable medium storing instructions, the instructions comprising:

one or more instructions which, when executed by a device, cause the device to:

aggregate object storage write requests;

calculate a size of a storage block of a solid-state memory device;

determine a size of one or more objects associated with the aggregated object storage write requests;

determine, based on the determined size of the one or more objects, whether the one or more objects fit in a block of the solid-state memory device within a defined tolerance;

determine, when the one or more objects satisfy a size threshold, whether the one or more objects fit in a first buffer associated with the solid-state memory device;

allocate, when the one or more objects do not fit in the first buffer, a new block;

fill, when the one or more objects fit in the first buffer, the first buffer with the one or more objects;

allocate, when the one or more objects do not satisfy the size threshold, another new block,

the other new block being different than the block; and

write, based on allocating the other new block, the one or more objects to a second buffer corresponding to the other new block.

16. The non-transitory computer-readable medium of claim 15 , where the one or more instructions are further to:

temporarily store the one or more objects in a buffer.

17. The non-transitory computer-readable medium of claim 15 , where the one or more instructions to write the one or more objects to the block of the solid-state memory device include:

one or more instructions to write metadata associated with each object, of the one or more objects, in a different partition of the solid-state memory device than a partition where the one or more objects associated with the aggregated object storage write requests are stored.

18. The non-transitory computer-readable medium of claim 17 , where the one or more instructions are further to:

aggregate the metadata; and

write, based on aggregating the metadata, the aggregated metadata associated with one or more objects.

19. The non-transitory computer-readable medium of claim 15 , where the one or more instructions are further to:

determine, before writing the one or more objects to the solid-state memory device, that the one or more objects are popular based on usage measurements.

20. The non-transitory computer-readable medium of claim 15 , where the one or more instructions are further to:

temporarily store the one or more objects before writing the one or more objects to the block of the solid-state memory device;

determine whether the second buffer has been updated within a particular period of time; and

flush, when the second buffer has not been updated with a particular period of time, the second buffer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2011
From: ANKEENA NETWORKS, INC.
To: JUNIPER NETWORKS, INC.
Reel/Frame 026925/0618 →
Continuity (5)
Continuation In Part 12624358 · Nov 23, 2009
Provisional Application 61117505 · Nov 24, 2008
Provisional Application 61161376 · Mar 18, 2009
Provisional Application 61166423 · Apr 3, 2009
Related Publication 20100235569A1 · Sep 16, 2010