Hello!
This question arose after the (in my opinion) hasty response from a user
that thinks oVirt is bad because it cares about the integrity of your data:
https://lists.ovirt.org/archives/list/users@ovirt.org/message/QPVXUFW2U3W...
Fine, that's their choice. They can have silent data corruption all they
want in case of a power failure or something, it's up to them if they
think it's worth it.
However, I started wondering why oVirt sync's everything over NFS, I
know it does because you can in ZFS turn it off by "zfs set
sync=disabled <dataset>" and throughput and everything goes through the
roof. The right way is of course to add a SLOG or better yet a mirrored
pair but just for a quick test or whatever...
But their doesn't seem to be any reason why oVirt should do that, that's
why I'm asking. Look, this is from the CentOS 'mount' man page:
"defaults
Use default options: rw, suid, dev, exec, auto, nouser,
and async."
So therefore 'sync' should be explicitly set on the mount, right? Wrong!
# mount | grep -c sync
0
So why then does it sync? The NFS man page says:
"The sync mount option
The NFS client treats the sync mount option differently than some
other file systems (refer to mount(8) for a description of the generic
sync and async mount options). If neither sync nor async is specified
(or if the async option is specified), the NFS client delays sending
application writes to the server until any of these events occur:
Memory pressure forces reclamation of system memory resources.
An application flushes file data explicitly with sync(2),
msync(2), or fsync(3).
An application closes a file with close(2).
The file is locked/unlocked via fcntl(2)."
So which of these things are happening for the Host to send sync calls
to the NFS server?
Just curious...
/K