ENHANCING THE LIFETIME AND PERFORMANCE OF FLASH-BASED STORAGE
First Claim
1. A computer-implemented method to handle a write request from a software application directed to a flash-based storage device, the method comprising:
- receiving from the application a request to write data to the flash-based storage device;
determining a storage device to which the received request is directed;
upon determining that the storage device is flash-based, identifying 240 an in-memory cache for collecting data requested by applications to be written to the storage device;
writing the data received with the request to the identified in-memory cache without writing the data to the flash-based storage device;
returning a write result to the requesting application indicating success or failure of the write operation to the in-memory cache; and
collecting at least one additional write operation in the in-memory cache before sending the data from the first write request and the additional write operation to the flash-based storage device,wherein the preceding steps are performed by at least one processor.
2 Assignments
0 Petitions
Accused Products
Abstract
A storage management system decouples application write requests from write requests to a flash-based storage device. By placing a layer of software intelligence between application requests to write data and the storage device, the system can make more effective decisions about when and where to write data that reduce wear and increase performance of the storage device. An application has a set of performance characteristics and writes data with a frequency that is appropriate for the application, but not necessarily efficient for the hardware. By analyzing how data is being used by an application, the system can strategically place data in the storage device or even avoid using the storage device altogether for some operations to minimize wear. One technique for doing this is to create an in-memory cache that acts as a buffer between the application requests and the storage hardware.
59 Citations
20 Claims
-
1. A computer-implemented method to handle a write request from a software application directed to a flash-based storage device, the method comprising:
-
receiving from the application a request to write data to the flash-based storage device; determining a storage device to which the received request is directed; upon determining that the storage device is flash-based, identifying 240 an in-memory cache for collecting data requested by applications to be written to the storage device; writing the data received with the request to the identified in-memory cache without writing the data to the flash-based storage device; returning a write result to the requesting application indicating success or failure of the write operation to the in-memory cache; and collecting at least one additional write operation in the in-memory cache before sending the data from the first write request and the additional write operation to the flash-based storage device, wherein the preceding steps are performed by at least one processor. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computer system for enhancing the lifetime and performance of flash-based storage, the system comprising:
-
a flash-based storage device that includes at least some flash-based non-volatile memory; a device interface component that provides an interface between the other components of the system and the flash-based storage device; a data cache component that provides an in-memory cache of data requested to be written to the flash-based storage device by an application; a cache write component that receives requests to write data to the flash-based storage device and writes the data to the data cache component instead; a cache read component that receives requests to read data from the flash-based storage device and determines whether the requested data is available from the data cache component without accessing the flash-based storage device; a cache flush component that copies data stored in the data cache component to the flash-based storage device 110 at a time decoupled from application requests to write data; an application interface component that provides an interface between the other components of the system and one or more applications that request to read from or write to the flash-based storage device. - View Dependent Claims (14, 15, 16, 17, 18, 19)
-
-
20. A computer-readable storage medium comprising instructions for controlling a computer system to flush cached data to a flash-based storage device, wherein the instructions, upon execution, cause a processor to perform actions comprising:
-
receiving from one or more applications multiple requests to store data on a flash-based storage device and caching the data in an intermediate cache without storing the data on the flash-based storage device at the time of servicing the request; identifying the cached data in the intermediate cache and determining whether the cached data will be written to the flash-based storage device; upon determining that one or more criteria for flushing the cache have been met, identifying the flash-based storage device to which the received requests were directed, wherein the flash-based storage device acts as non-volatile storage for the data in the intermediate cache; and writing at least some of the data stored in the intermediate cache to the identified flash-based storage device such that the writing of data to the flash-based storage device occurs after the original write operation that stored the data to the intermediate cache has already completed, resulting in a decoupling of application writes from device writes that reduces a quantity of writes and resulting wear on the device.
-
Specification