NFS version 3 can use asynchronous writes, which is optional. The NFS version 3 client sends asynchronous write requests to the server, which acknowledges receiving the data. However, the server is not required to write the data to stable storage before replying. The server may schedule the write, or wait to gather multiple write requests together.
The client maintains a copy of the data in case the server is unable to complete the writes. When the client wants to free its copy, it notifies the server with a COMMIT operation. The server responds positively only after it ensures that the data is written to stable storage. Otherwise, it responds with an error and the client resends the data synchronously.
Asynchronous writes enable the server to determine the best policy to synchronize the data. The data is most likely synchronized by the time the COMMIT arrives. Compared with NFS version 2, this scheme enables better buffering and more parallelism.
With NFS version 2, the server does not respond to a write request until the data is placed in stable storage. However, it may use techniques such as write gathering to issue multiple concurrent requests before responding to any of the requests.