- A storage controller has two separate memory buffers for storing write data.
- The size of these buffers is based on the amount of non-volatile RAM (NVRAM) in a given system.
- This can be calculated as 1/2 the NVRAM size for stand-alone systems, 1/4 the NVRAM size for clustered systems, and 1/8 the NVRAM size for 4/8-node MetroClusters.
- All writes into a storage controller are stored concurrently in the following locations:
- Local memory buffer
- Local NVRAM/NVMEM
- Remote NVRAM (Clustered systems only)
- Remote NVRAM of the DR partner (MetroCluster systems only)
- As soon as the process to log to NVRAM is confirmed, the controller acknowledges the write as completed to the client machine (app, protocol?).
- At pre-defined triggers, this buffered write data is processed from the storage controller memory through the Write Anywhere File Layout (WAFL) and RAID layers and written to disk.
- The active file system pointers on the disk are not updated to point to the new locations until a write is completed.
- Upon completion of a write to disk, the contents of NVRAM are cleared and made ready for the next batch of incoming write data.
- This act of writing data to disk and updating active file system pointers is called a Consistency Point (CP).
- During the writing phase of one memory buffer, the second memory buffer and NVRAM space ( both local and remote ) are used to store and acknowledge incoming writes.