NVRAM caching and logging in a storage system
First Claim
1. A method comprising:
- receiving at a storage system a plurality of input/output (I/O) requests each having a related data and a parameter;
in response to receiving each of the plurality of I/O requests, returning a respective acknowledgement;
organizing the related data of the plurality of I/O requests into a plurality of extents, the organizing to include combining the related data of two or more first I/O requests of the plurality of I/O requests into a first extent, forming the related data of a second I/O request of the plurality of I/O requests into a second extent, and splitting the related data of a third I/O request of the plurality of I/O requests into two or more third extents;
storing the plurality of extents in a first order in a persistent memory cache of the storage system;
writing the plurality of extents in a second order from the persistent memory cache to the one or more solid state drives (SSDs) attached to the storage system, wherein the second order differs from the first order;
receiving a confirmation that each of the plurality of extents was successfully stored in the one or more SSDs; and
deleting each of the plurality of extents in the persistent memory cache when each respective extent is confirmed to be successfully stored in the one or more SSDs.
0 Assignments
0 Petitions
Accused Products
Abstract
In one embodiment, non-volatile random access memory (NVRAM) caching and logging delivers low latency acknowledgements of input/output (I/O) requests, such as write requests, while avoiding loss of data. Write data may be stored in a portion of an NVRAM configured as, e.g., a persistent write-back cache, while parameters of the request may be stored in another portion of the NVRAM configured as one or more logs, e.g., NVLogs. The write data may be organized into separate variable length blocks or extents and “written back” out-of-order from the write back cache to storage devices, such as solid state drives (SSDs). The write data may be preserved in the write-back cache until each extent is safely and successfully stored on SSD (i.e., in the event of power loss), or operations associated with the write request are sufficiently logged on NVLog.
-
Citations
20 Claims
-
1. A method comprising:
-
receiving at a storage system a plurality of input/output (I/O) requests each having a related data and a parameter; in response to receiving each of the plurality of I/O requests, returning a respective acknowledgement; organizing the related data of the plurality of I/O requests into a plurality of extents, the organizing to include combining the related data of two or more first I/O requests of the plurality of I/O requests into a first extent, forming the related data of a second I/O request of the plurality of I/O requests into a second extent, and splitting the related data of a third I/O request of the plurality of I/O requests into two or more third extents; storing the plurality of extents in a first order in a persistent memory cache of the storage system; writing the plurality of extents in a second order from the persistent memory cache to the one or more solid state drives (SSDs) attached to the storage system, wherein the second order differs from the first order; receiving a confirmation that each of the plurality of extents was successfully stored in the one or more SSDs; and deleting each of the plurality of extents in the persistent memory cache when each respective extent is confirmed to be successfully stored in the one or more SSDs. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system comprising:
-
a first storage array having one or more solid state drives (SSDs); a first node connected to a non-volatile memory via a system bus, the first node attached to the first storage array, the first node configured to receive a plurality of input/output (I/O) requests each having a related data and a parameter, the first node further configured to acknowledge each of the plurality of I/O requests, the first node further configured to organize the related data of the plurality of I/O requests into a plurality of extents, by combining the related data of two or more first I/O requests of the plurality of I/O requests into a first extent, forming the related data of a second I/O request of the plurality of I/O requests into a second extent, and splitting the related data of a third I/O request of the plurality of I/O requests into two or more third extents, the first node further configured to store the plurality of extents in a cache in a first order, the cache stored in the non-volatile memory, the first node further configured to write the plurality of extents in a second order from the cache to the first storage array, wherein the second order differs from the first order, the first node further configured to receive a confirmation that each of the plurality of extents was successfully stored in the first storage array, and the first node further configured to delete the plurality of extents in the cache when each respective extent is confirmed to be successfully stored in the first storage array. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A system comprising:
-
a first storage array having one or more solid state drives (SSDs); a first node having a non-volatile memory connected to a processor via a bus, the first node attached to the first storage array; and a storage I/O stack executing on the processor of the first node, the storage I/O stack when executed operable to; receive a plurality of input/output (I/O) requests each having a related data and a parameter, organize the related data of the plurality of I/O requests into units by combining the related data of two or more first I/O requests of the plurality of I/O requests into a single first unit, forming related data of a second I/O request of the plurality of I/O requests into a second unit, and splitting the related data of a third I/O request of the plurality of I/O requests into two or more third units, atomically store the plurality of units in the non-volatile memory in a first order, pass the plurality of units in a first path of the storage I/O stack to the first storage array for storage on the one or more SSDs in a second order, wherein the second order differs from the first order, pass the related parameters in a second path of the storage I/O stack, wherein the first path differs from the second path, for storage in a second storage array attached to a second node, and receive confirmation that each unit is stored on the one or more SSDs in the first storage array prior to marking the respective unit released in the non-volatile memory.
-
Specification