On 1/31/11 5:23 PM +0000 Ron Leach wrote:
Ron Leach wrote:
Finally, and I do apologise for all the questions, we're wishing to
move to NFS. (At the moment we have a 'one box' Dovecot solution,
but this makes upgrade of OS, upgrade of Dovecot, or upgrade of
storage always a problem. We have already exported the new XFS
filestore over NFS - but Dovecot is not (yet) using it, that's the
next step for us.) Does the fsync solution we've been discussing
work just as well when the XFS filestore is exported over NFS?
...
Further, the NFS shares can be mounted on the client with a 'sync' option
that forces physical writes before returning to the caller. Though this
would be horrifically slow in any high load (network transmission times,
disc io queues etc), in our situation of low load we could consider using
this option to minimise the potential for email loss due to crash or
power fail.
One further optimization, not relevant to Dovecot or email, but worth
mentioning in the (unlikely) event that anyone is really this interested,
if we were to split our XFS share into 'two' shares, one for email, and
the other for general data storage, then we could apply 'sync' only to
the XFS share for email (hence ensuring immediate writes) and not to the
other share for general storage.
Unless I'm wrong about something here, I think this closes the
NFS-related concern about XFS and Dovecot and loss of email.
You're wrong.
Yes, NFS semantics "guarantee" commit, but what happens is that the
underlying filesystem (e.g. ext3, xfs with metadata spooling) lies to
the kernel about what has been committed. The NFS call returns, but
the data has not actually been committed. There have even been
NFS server tweaks for some implementations that themselves lie to
the client, ie w/o depending on filesystem lies, for performance
reasons.
These are all valid performance tweaks but most times people don't
understand the effect on data integrity.
So the summary is, just because you're using NFS doesn't mean anything
wrt data integrity or data loss. You still have to understand the
underlying filesystem issue and you also have to understand the NFS
server issues.
But, e.g., if you're using Netapp (WAFL), you will have high performance
as well as correct NFS semantics wrt data loss.