NFS Server and Client signification of "sync" and "async"
First, thanks to https://serverfault.com/a/500553
What I write here is basically the same (a copy /paste), but adapted to my personnal needs
sync
and async
have different meanings for the two different situations.
On the client context
sync
in the client context makes all writes to the file be committed to the server.
async
causes all writes to the file to not be
transmitted to the server immediately, usually only when the file is
closed. So another host opening the same file is not going to see the
changes made by the first host.
Note that NFS offers "close to open" consistency meaning other clients cannot anyway assume that data in a file open by others is consistent (or frankly, that it is consistent at all if you do not use nfslock
to add some form of synchronization between clients).
On the server context
sync
in the server context (the default) causes the
server to only reply to say the data was written when the storage
backend actually informs it the data was written.
async
in the server context gets the server to merely
respond as if the file was written on the server irrespective of if it
actually has written it. This is a lot faster but also very dangerous as
data may have a problem being committed!
Advice
In most cases, async
on the client side and sync
on the server side. This offers a pretty consistent behaviour with regards to how NFS is supposed to work.