BACKGROUND

Storage clusters and other storage systems store user data in various types of storage memory, such as hard drives, tapes, and solid-state storage. Some storage systems use a pipelined architecture, in which data is written to volatile memory and later transferred from volatile memory to nonvolatile memory, or from non-persistent memory to persistent memory. This may allow additional processing, or take advantage of differences in write speeds or write latency of various types of memory. Defining data coherency mechanisms in storage systems, so as to allow for data recovery in case of power failure, operating system or application crashes, poses challenges, some of which are general and some of which are unique to system architecture.

It is within this context in which various embodiments arise.

SUMMARY

In some embodiments, a storage unit for a storage system is provided. The storage unit includes non-persistent memory and persistent memory. The storage unit includes a transaction engine, configured to receive logical records and configured to transfer the logical records to the non-persistent memory as atomic updates. Each of the atomic updates constitutes a transfer of a logical record to the non-persistent memory.

In some embodiments, a method for a transactional commit in a storage unit is provided. The method includes receiving a logical record from a storage node into a transaction engine of a storage unit of the storage node and writing the logical record into a data structure of the transaction engine. The method includes writing, to a command queue of the transaction engine, an indication to perform an atomic update using the logical record and transferring each portion of the logical record from the data structure of the transaction engine to non-persistent memory of the storage unit as a committed transaction.

In some embodiments, a storage system is provided. The storage system includes a plurality of storage nodes coupled as a storage cluster. Each of the plurality of storage nodes has one or more storage units and each storage unit has non-persistent memory, persistent memory, and a transaction engine with a transaction interlock configured to assure coherency of an atomic update. The transaction engine and the transaction interlock of each storage unit are configured to transfer logical records from the transaction engine with the transaction interlock to the non-persistent memory with each logical record transferred as the atomic update interlocked by the transaction interlock.

Other aspects and advantages of the embodiments will become apparent from the following detailed description taken in conjunction with the accompanying drawings which illustrate, by way of example, the principles of the described embodiments.

