NetApp DataONTAP Cluster Mode Learning Notes 2
How WAFL works
The basic structure is as follows:
Client sends write request
Controller 1 writes data to system memory and NVRAM and synchronizes data to Controller 2
Controller 2 sends acknowledgement to controller 1
Controller 1 sends acknowledgement to client
Another client sends a write request
Controller 1 writes data to system memory and NVRAM and synchronizes it to Controller 2
Controller 2 sends acknowledgement to controller 1
Controller 1 sends acknowledgement to client
Another client sends a write request to controller 1, which writes memory and NVRAM and synchronizes the data to controller 2
Controller 2 sends acknowledgement to controller 1
Controller 1 sends acknowledgement to client
The controller NVRAM is now half full
At this point, the consistency point is triggered, and the controller writes the data in memory to disk
(Conditions to trigger consistency point: NVRAM is half full; CP is more than 10 seconds since last occurrence; snapshot is created; administrator shuts down system)
Consistency completed, NVRAM cleared
WAFL sends an acknowledgement to the client as soon as data is written to memory. This is done before data is written to disk to optimize performance. For clients, the data has been permanently written to storage. If power is lost, the contents of the system memory will be lost. If data is written only to system memory, an inconsistent state results. NVRAM is non-volatile-it can hold data in the event of a power outage and recover from NVRAM if a power outage occurs before data is written to disk. NVRAM writes data to system memory and writes it to disk from a consistent point. Writes data to both directors in the HA pair so that if there is a takeover HA peer, the data can be written to disk.
When controller 1 fails,
Controller 2 writes the contents of NVRAM to memory
Controller 2 then writes the data in memory to disk
Controller 2 clears NVRAM
Client sends write request to controller 1
Controller 1 writes data to memory and NVRAM and synchronizes it to Controller 2
Controller 2 sends acknowledgement to controller 1
Controller 1 sends acknowledgement to client
Client sends read request to controller 1
Controller 1 first looks for data from memory
If the data exists in memory, move it up to the top
Other data is moved down and the found data is sent to the client
Another client also sends a read request
Control not found in memory, need to read from disk
Data read from disk is placed at the top of memory
Indirect data access: Client sends read request via controller 2
Controller 2 sends the request to Controller 1
Controller 1 retrieves data from disk and places it in memory, and sends it to Controller 2 for presentation to clients
This data will be placed at the top of memory