Distributed in-memory buffer cache system using buffer cache nodes
First Claim
1. A system, comprising:
- a plurality of storage nodes, each comprising one or more respective processors, implementing a distributed storage system that maintains data for at least one storage client;
a plurality of buffer cache nodes, each comprising one or more respective processors, implementing a distributed buffer cache system that maintains an in-memory, write-through buffer cache for access operations directed toward the data maintained for the at least one storage client at the distributed storage system, wherein the buffer cache nodes are configured to access the data stored for the at least one storage client at the distributed storage system and maintain different portions of the buffer cache;
at least one compute node implementing the at least one storage client, configured to;
determine a storage I/O (Input/Output) write request to be performed at the distributed storage system;
identify one or more buffer cache nodes of the plurality of buffer cache nodes to send the storage I/O write request, wherein the identified one or more buffer cache nodes maintains at least a portion of the write-through buffer cache to which the write request pertains and buffer cache metadata reflecting a state of the portion of the buffer cache in a respective system memory of the one or more buffer cache nodes;
send the storage I/O write request to the one or more buffer cache nodes; and
receive from at least one of the one or more buffer cache nodes an acknowledgment that the storage I/O write is complete at the distributed storage system.
1 Assignment
0 Petitions
Accused Products
Abstract
A separate distributed buffer cache system may be implemented for a storage client of a distributed storage system. Storage I/O requests may be sent from a storage client to one or more buffer cache nodes in a distributed buffer cache system that maintain portions of an in-memory buffer cache to which the requests pertain. The distributed buffer cache system may send the write requests on to the distributed storage system to be completed, and in response to receiving acknowledgements from the storage system, sending a completion acknowledgement back to the storage client. Buffer cache nodes may update buffer cache entries for received requests such that they are not available for reads until complete at the distributed storage system. For read requests where the buffer cache entries at the buffer cache node are invalid, valid data may be obtained from the distributed storage system and sent to the storage client.
-
Citations
23 Claims
-
1. A system, comprising:
-
a plurality of storage nodes, each comprising one or more respective processors, implementing a distributed storage system that maintains data for at least one storage client; a plurality of buffer cache nodes, each comprising one or more respective processors, implementing a distributed buffer cache system that maintains an in-memory, write-through buffer cache for access operations directed toward the data maintained for the at least one storage client at the distributed storage system, wherein the buffer cache nodes are configured to access the data stored for the at least one storage client at the distributed storage system and maintain different portions of the buffer cache; at least one compute node implementing the at least one storage client, configured to; determine a storage I/O (Input/Output) write request to be performed at the distributed storage system; identify one or more buffer cache nodes of the plurality of buffer cache nodes to send the storage I/O write request, wherein the identified one or more buffer cache nodes maintains at least a portion of the write-through buffer cache to which the write request pertains and buffer cache metadata reflecting a state of the portion of the buffer cache in a respective system memory of the one or more buffer cache nodes; send the storage I/O write request to the one or more buffer cache nodes; and receive from at least one of the one or more buffer cache nodes an acknowledgment that the storage I/O write is complete at the distributed storage system. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method, comprising:
performing, by a plurality of computing devices; maintaining an in-memory buffer cache among one or more buffer cache nodes, each comprising one or more respective processors, in a distributed buffer cache system for access operations received from at least one storage client and directed toward data stored at a distributed storage system for the storage client, each buffer cache node maintaining a plurality of buffer cache entries of a different portion of buffer cache and buffer cache metadata reflecting a respective state of buffer cache entries; receiving, at a buffer cache node of the one or more buffer cache nodes, a storage I/O (input/output) write request to be performed at the distributed storage system from the at least one storage client; in response to receiving the storage I/O write request; sending the storage I/O write request to the distributed storage system to be performed; based, at least in part, on one or more acknowledgments received for the storage I/O write request from the distributed storage system, determining that the storage I/O write request is complete at the distributed storage system; updating one or more buffer cache entries and respective buffer cache metadata maintained at the buffer cache node according to the storage I/O write request, wherein the updated one or more buffer cache entries are not available for reads until the storage I/O write request is determined to be complete at the distributed storage system; and acknowledging the completion of the write request to the at least one storage client. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
17. A non-transitory, computer-readable storage medium, storing program instructions that when executed by a plurality of computing devices cause the plurality of computing devices to implement at least one storage client that implements:
-
determining a storage I/O (input/output) write request to be performed at a distributed storage system maintaining data for the at least one storage client; identifying one or more buffer cache nodes of a plurality of buffer cache nodes, each comprising one or more respective processors, that together implement a distributed buffer cache system to send the storage I/O write request, wherein the distributed buffer cache system maintains an in-memory buffer cache for access operations directed toward the data maintained for the at least one storage client at the distributed storage system, wherein the identified one or more buffer cache nodes maintain a different portion of the in-memory buffer cache and buffer cache metadata reflecting a state of the portion of the buffer cache; sending the storage I/O write request to the one or more buffer cache nodes; and receiving from at least one of the one or more buffer cache nodes an acknowledgment that the storage I/O write is complete at the distributed storage system. - View Dependent Claims (18, 19, 20, 21, 22, 23)
-
Specification