[OpenAFS] CellServDB file update...
Jeffrey Hutzelman
jhutz@cmu.edu
Tue, 16 May 2006 12:47:34 -0400
On Tuesday, May 16, 2006 02:20:21 AM -0400 Rodney M Dyer <rmdyer@uncc.edu>
wrote:
>> It's certainly nice if the software does something "right"
>> automatically when the server side CellServDB get changed. It sounds
>> like Derrick did that, modulo a minor bug or so. It would also be nice
>> if the documentation at least described what was going to happen if it
>> isn't going to be "nice" behavior. Sounds like the documentation at
>> least managed to identify that this was risky, even if it wasn't very
>> clear about why this was a problem. At that point, the onus would seem
>> to be on the AFS administrators to try this out in advance in a test
>> environment and see what was going to happen, before trying it for real
>> and risking breaking things.
>
> After being bitten by the "bug" (not knowing it was a bug at the time)
> and looking into the problem we realized we had forgotten the "bos
> addhost/removehost" commands. Upon reading deeper about the
> addhost/removehost commands I just wanted to verify that these commands
> were in fact "operational" and weren't mearly an "administrative
> practice" update mechanism, eg. mearly a practice that admins should
> follow for future AFS command upgrade purposes.
>
> If "internally" the addhost/removehost commands do nothing more than
> "edit" the files themselves, like a text editor, then they are
> "currently" only practice policy. It sounds to me instead that they
> actually do more than edit the files, because you actually have locking
> issues if the file server process is trying to read the CellServDB files
> at the same time you would manually copy over them. The
> addhost/removehost commands probably stop the file server process from
> reading the files, update them, then allow them to be read again.
You're both confused, at least to some extent. The addhost/removehost
commands are indeed just a convenience; they do nothing more than read,
modify, and update the CellServDB file on the server in question. If the
documentation says "always use these commands; never update the CellServDB
file by hand", it's because that insures the file's contents will always be
at least syntactically correct. There's no chance, for example, of someone
deciding that '#' is a comment introducer rather than a field separator,
and either "leaving off the comment" or introducing a "comment line", both
of which would make the file invalid (I believe our parser is more
forgiving these days, but at the time that documentation was written it was
very simplistic).
The bug is not that things break if you edit the CellServDB instead of
using addhost/removehost. The bug is that things break if you change the
CellServDB out from under a buggy server without restarting it. This
applies to all servers, not just the fileserver, and the actual bug is in
the way the KeyFile is reread. Changing the CellServDB file triggers it
because that's the mechanism used to trigger re-reading all of the
server-side config files (in fact, if you are changing the KeyFile, you
_should_ use the bos commands or other tools that know how to do this, or
else touch the CellServDB file yourself).
> 1. The file server process actually reads the CellServDB file very
> often.
No; only when it changes. But it checks fairly often.
> 2. Never copy over the CellServDB file because of #1.
Well, don't edit it (or the KeyFile) in place - always rename a valid file
into place.
> 3. Use "bos addhost/removehost" commands to change the CellServDB
> files.
Only if you want to.
> 4. We should never have to "bos restart" a server to get it to see
> a new cell server if we use bos addhost...right?
Sort-of. The fileserver needs the CellServDB file to register itself with
the VLDB, which only happens at startup, and to get information from the
ptserver about clients' PTS group memberships. It builds a set of
connections to ptservers based on the contents of the CellServDB file at
startup, and only rebuilds this list when a ptserver call fails.
In practice, this means you can ignore the issue. If there is ever a
problem the fileserver will eventually pick up the new list; if there's not
a problem, then it doesn't matter.
> 5. Never do this on a Friday afternoon. :)
Well, that's definitely a good policy.
-- Jeff