Hi Jaime,
I believe you are very likely to be correct about running NFS servers on Linux - and I would assume that this is really the case, given that even a couple of storage vendors NAS/NFS implementations are based on Linux (not sure about Netapps, but others are).
Linux NFS clients are a more complex case. While I believe they have been well-tested and are mature for standard filesystem access, such as for sharing home directories, etc., the case of a heavy-duty server application running on a NFS client system is a very different story.
As an example, in RHEL4/Kernel 2.6 up until Update 3, the implementation of the "nolock" mount option had suddenly changed meaning. In 2.4 Kernels, the meaning of the option meant that there would be no NFS locking calls across the network, however, multiple processes running on the system mounting the NFS file system with this option would still see each others locks. Effectively, the semantics of the option were more like a "local locking" option - the original Linux NFS code 'copied' that behavior and naming from Solaris. In the initial 2.6 implementation, semantics changed and "nolock" was suddenly implemented as what the name might imply - no locking at all.
As Scalix relies on some level of file locking for coordinating file access between multiple processes, it fell over badly and the message store would be corrupted on those systems. The Linux-NFS folks had recognized this error at some point and RedHat took it in, after working on a bug I filed as a result, see
https://bugzilla.redhat.com/bugzilla/sh ... ?id=167192 for details.
We recently had a customer try this on RHEL4U4 and, while it did not expose the basic problem described in this bug anymore, we did experience message store corruption as a result of some inadequate locking that we are still working to fully understand. The solution seems to be to rely on NFS network locking, however in that case, performance is affected dramatically.
This gets us to the final point - performance patterns. While providers of NFS-based storage solutions highlight the great scaleability of their products, very often, they do not make such statements specific to applications and use cases - and this is highly important for storage. NFS performs great for large-block-size, read-mostly, few-files, async disk access situation. Again, this is what you see in users sharing home directories or shared application installation instances. Both these are what NFS was originally designed for.
Scalix on the other hand, with it's file system based message store, is quite the opposite. We are pretty write-intensive (given that there are small changes such as marking messages read, etc., all the time), require synchronous writes for maximum data integrity and also have variable block sizes and I/O chunks, plus our store is spread across a large number of small files by design. The layout has a lot of advantages in terms of stability, data integrity and general scaleability, however, it constitutes a worst case scenario for a NFS situation.
Bottom line is that from a Scalix perspective we have enough evidence of issues, both data integrity and performance related, that we have decided to explicitly discourage people from using NFS-based storage and in most situations and with very few exceptions at this point won't commit to supporting customers doing this.
Hope this helps to provide some insight into the rationale behind these statements,
Florian.