sync
e async
têm significados diferentes para as duas situações diferentes.
sync
no contexto do cliente faz com que todas as gravações no arquivo sejam confirmadas no servidor.
async
faz com que todas as gravações no arquivo sejam não transmitidas ao servidor imediatamente, geralmente apenas quando o arquivo é fechado. Então, outro host abrindo o mesmo arquivo não verá as alterações feitas pelo primeiro host.
Observe que o NFS oferece consistência "quase aberta", o que significa que outros clientes não podem assumir que os dados em um arquivo aberto por outros são consistentes (ou, francamente, consistentes se você não use nfslock
para adicionar alguma forma de sincronização entre clientes).
sync
no contexto do servidor (o padrão) faz com que o servidor responda apenas para dizer que os dados foram gravados quando o back-end de armazenamento realmente os informa que os dados foram gravados.
async
no contexto do servidor faz com que o servidor simplesmente responda como se o arquivo tivesse sido escrito no servidor, independentemente de ter sido escrito ou não. Isso é muito mais rápido, mas também muito perigoso, pois os dados podem ter um problema sendo cometido!
Na maioria dos casos, async
no lado do cliente e sync
no lado do servidor. Isso oferece um comportamento bastante consistente em relação a como o NFS deve funcionar.