The elements of fileserver infrastructure
As I sort of mentioned in an aside in the last entry, pretty much any sort of fileserver
infrastructure does a number of other things besides just serving
files. In turn this means that hooking a machine into your fileserver
environment generally involves a lot more than just some
For the purposes of this entry, let's ignore all of the services that only care about the fileservers themselves; backup, monitoring, and so on. We'll only look at the services that a client has to be tied into. My experience is that there are three major components:
- the actual fileservice itself, generally NFS on Unix machines.
By now this generally just works.
- some way of propagating around information about what filesystems to
mount from where and of getting them mounted when necessary. Some
form of automounter is the traditional Unix answer, although we
built our own (as have other people).
Even with an automounter you still need some mechanism to propagate
the automounter maps around.
- some way to propagate account and password information around to all of the clients and to let users change their password once instead of separately on every machine. This gets you into semi-policy areas such as dealing with systems that have different ideas of what system accounts exist and what UIDs they have.
At one point NIS was the usual way to propagate both account and automounter map information around, and there were basically turnkey solutions to handle it all; you could just follow the vendor's manual when configuring your Unix machines and be done with it. I'm out of touch with the modern usual way is, but I believe it's LDAP for distributing account information and I don't know what people do for automounter maps. My impression is that an LDAP setup is a lot less turnkey than the old NIS approach.
(Locally we have never been very fond of NIS, so we have always rolled our own distribution and account management systems. And as I mentioned, we've replaced automounter entirely.)
In theory you don't need to have an infrastructure at all, because you can just do all of these things by hand. This approach is not recommended and trying it out generally results in you building an infrastructure after all. And post-facto infrastructures are generally more painful than an infrastructure that you think about while you're setting up the whole environment.