Speculative copying of data from main buffer cache to solid-state secondary cache of a storage server
First Claim
1. A method comprising:
- writing data to a main buffer cache of a storage server in response to a write request;
allocating a set of solid-state memory for use by the storage server as a secondary cache; and
copying data from the main buffer cache to the secondary cache before there is a need to evict data from the main buffer cache, to reduce latency in accessing the secondary cache, the copying including copying the data at a write rate, which is determined as a function of a first write rate of the secondary cache and a data eviction rate of the main buffer cache.
1 Assignment
0 Petitions
Accused Products
Abstract
A network storage server includes a main buffer cache to buffer writes requested by clients before committing them to primary persistent storage. The server further uses a secondary cache, implemented as low-cost, solid-state memory, such as flash memory, to store data evicted from the main buffer cache or data read from the primary persistent storage. To prevent bursts of writes to the secondary cache, data is copied from the main buffer cache to the secondary cache speculatively, before there is a need to evict data from the main buffer cache. Data can be copied to the secondary cache as soon as the data is marked as clean in the main buffer cache. Data can be written to secondary cache at a substantially constant rate, which can be at or close to the maximum write rate of the secondary cache.
14 Citations
23 Claims
-
1. A method comprising:
-
writing data to a main buffer cache of a storage server in response to a write request; allocating a set of solid-state memory for use by the storage server as a secondary cache; and copying data from the main buffer cache to the secondary cache before there is a need to evict data from the main buffer cache, to reduce latency in accessing the secondary cache, the copying including copying the data at a write rate, which is determined as a function of a first write rate of the secondary cache and a data eviction rate of the main buffer cache. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method of operating a storage server, the method comprising:
-
receiving read requests and write requests at the storage server from a client over a network; responding to the read requests and write requests, wherein responding to the write requests includes writing data blocks to a volatile main buffer cache of the storage server in response to the write requests; at a consistency point, writing the data blocks in the main buffer cache to a persistent storage subsystem of the storage server and thereafter marking the data blocks written to the persistent storage subsystem as clean; concurrently with responding to read requests and write requests from the client, copying data blocks marked as clean to a secondary cache implemented in solid-state memory, before there is a need to evict data from the main buffer cache, the copying including copying the data at a write rate, which is determined as a function of a first write rate of the secondary cache and a data eviction rate of the main buffer cache; and evicting from the main buffer cache data blocks that have been copied to the secondary cache, wherein said evicting is not a response to the copying of data blocks to the secondary cache. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A storage server system comprising:
-
a main buffer cache; and a processor configured to service read and write requests received over a network from a set of clients, including writing data to the main buffer cache and thereafter copying data from the main buffer cache to a persistent storage subsystem prior to evicting the data from the main buffer cache, and further to mark the data as clean after the data has been copied to the persistent storage subsystem, wherein the processor further is configured to copy data stored in the main buffer cache to a secondary cache implemented in solid-state memory, including to copy data marked as clean to the secondary cache prior to a need to evict data from the main buffer cache, wherein the processor is further configured to copy the data from the main buffer cache to the secondary cache at a write rate, which is determined as a function of a first write rate of the secondary cache and a data eviction rate of the main buffer cache. - View Dependent Claims (14, 15, 16, 17)
-
-
18. A network storage system comprising:
-
a network interface through which to communicate with a set of clients over a network; a storage interface through which to communicate with a persistent storage subsystem of the storage system; a main buffer cache, to cache data read from and data to be written to, the persistent storage subsystem; a secondary cache implemented in non-volatile solid-state memory, to cache data initially stored in the main buffer cache; and a storage manager to service read and write requests from the clients, including writing data to the main buffer cache and thereafter copying data from the main buffer cache to the persistent storage subsystem at a consistency point, wherein the storage manager further is to mark the data as clean when the data has been copied to the persistent storage subsystem, wherein the storage manager further is to reduce the likelihood of bursts of writes to the secondary cache by copying data marked as clean in the main buffer cache to the secondary cache before there is a need to evict the data from the main buffer cache, wherein the storage manager is further configured to copy the data from the main buffer cache to the secondary cache at a write rate, which is determined as a function of a first write rate of the secondary cache and a data eviction rate of the main buffer cache. - View Dependent Claims (19, 20, 21, 22, 23)
-
Specification