j> I think Greg Stein mentioned using mySQL instead of Berkeley DB. I
j> don't know a lot about mySQL, but my understanding was that it
j> didn't really care about recoverability much.
MySQL only acquired support for transactions recently, and its
developers are still quite early in the development cycle for that set
of features. In addition, MySQL uses Berkeley DB to handle tables
with transactional properties, so it will continue to be turtles most
of the way down, even if you stack a rhino on top.
j> Here's the manual's bit on Berkeley DB vs. NFS. [...] Note
j> especially the bit at the end about Linux.
My understanding of the potential pitfalls in this area is a bit more
detailed. There are three problems.
1. Linux distributions prior to the 2.2 kernel series didn't use or
support the NFS lock daemon, which is used to provide Unix-style
locking semantics over NFS. Recent kernels support lockd, and
recent distributions ship with the necessary user-space support.
2. The default behaviour for current Linux NFSv2 and NFSv3
implementations is to use async writes. This violates the NFS
specs, which require that writes be synchronous (i.e. the server
doesn't send an RPC return message to the client until the data is
on disk), moutns can be forced to use synchronous writes if
necessary. The 2.4 kernel defaults to synchronous writes for
NFSv3. Async-mounted NFS filesystems will appear to honour
fsync() calls without actually doing so.
Since synchronous writes yield truly crappy performance, it's not
a bad idea to leave async writes turned on if the client and
server are running stable kernels with reliable electrical power.
3. All stock (i.e. issued by Alan Cox) Linux 2.2 kernels have NFS
implementations that are deficient in various respects. There's a
set of patches that bring them up to scratch, but Alan hasn't
integrated them into the official tree yet. All recent Linux
distributions include these patches in the kernels they ship.
What the above amounts to is a set of *potential* problems for people
using SVN over NFS with Linux servers or clients, each of which can be
evaluated and avoided if necessary.
Received on Sat Oct 21 14:36:08 2006