[OpenAFS] Re: IBM AFS to OpenAFS upgrade complete... problems continue

Andrew Deason adeason@sinenomine.net
Wed, 5 May 2010 13:05:21 -0500

On Tue, 4 May 2010 11:09:11 -0500
Andrew Deason <adeason@sinenomine.net> wrote:

> > root@bond / 17 # vldb_check -database /usr/afs/db/vldb.DB0 -servers
> > VLDB_CHECK_WARNING: Ubik header size is 0 (should be 64)
> > MH block 0, index 1:
> > MH block 0, index 2:
> >    Server ip addr 0 = MH block 0, index 1
> >    Server ip addr 1 = MH block 0, index 2
> >    Server ip addr 2 =
> >    Server ip addr 3 =
> [...]
> One way of fixing this is with 'vos changeloc's or 'vos sync*'s, but I
> need to look again to make sure...

At first, I was a little confused how you managed to get the VLDB into
this state, but re-reading one of your earlier emails, I think I see
it... The vlserver could really use a safety check to prevent adding
duplicate addresses so this doesn't happen; I'll look into that.

So, you need to remove one of those duplicates. The problem is, the only
way of specifying a server to remove from the VLDB is by IP address, so
we can't specify a specific one of those duplicates, since they have the
same IP. I don't think this will work, but you can try

vos changeaddr -remove

That command is pretty safe; if there are volumes referencing the server
it tries to delete, it will bail out and give you an error. If it
succeeds, you should be done.

However, I think when specifying an IP, it will match the MH entry
first, and I think the MH entry is the one that your volumes are on. So
it probably won't work (but it's worth a try!).

Assuming that doesn't work... to delete the non-MH entry, you need to
make 'server ip addr' 0 and 2 have different IP addresses, which means
changing the 'server ip addr 0' IP address. Does have
another publicly-reachable IP address? If so, the easiest way would be
to use 'vos setaddrs' to change that entry to another IP on that
machine. After that, you can just
'vos changeaddr -remove', and then use 'vos setaddrs' to
change the IP back to what it was before.

'vos setaddrs' only exists in recent 1.5, though. Either grab 1.5 source
and compile it, or I can give you a 'vos' binary.

If that fileserver does not have another public IP (and you can't
temporarily give it one), this is a bit harder if you want to keep the
fileserver available while you do this.

Andrew Deason