gmirror oddities

EirikØverby ltning at anduin.net
Tue May 3 12:27:55 PDT 2005


On 03-05-05 20:34, "George Hartzell" <hartzell at kestrel.alerce.com> wrote:

> 
> Eirik Øverby writes:
>> Hi!
>> 
>> I've been using gmirror for a while to safeguard my system disks. I have
>> taken the slice-based mirror approach, where I use, say, ad0s1 and ad2s1 as
>> providers.
>> On one of my servers, this seems to be impossible. I create the mirror using
>> ad2s1 first (to keep my system running while I do some of the work), and
>> then I re-initialize ad0s1 (making it exactly the size of ad2s1) before
>> using gmirror insert to add it to the mirror.
>> However, at this point - when doing a gmirror list - it turns out that it
>> never added ad0s1 as a provider, but ad0 itself! As a result, I now have a
>> load of slices (ad0a, ad0b, ad0d, ad0e, ad0f) instead of having the same
>> structure as I have on ad2s1. It's just like ad2s1, just without the "s1"
>> part.
>> 
>> I've tried "dd if=/dev/zero of=/dev/ad0 bs=65536" a couple of times, in case
>> some old provider metadata was stored there. I also have exactly the same
>> setup in another server, the only difference being that it behaves as
>> expected..
>> 
>> Am I doing something blatantly wrong here? This IS supposed to work, right?
>> I've even found a very nice description of how to do it at
>> http://people.freebsd.org/~rse/mirror/
>> confirming that what I'm doing is right.
>> 
>> I'm on 5.4-PRERELEASE, but this problem has been there since 5.3-p2 or
>> something, which was when I first tried this.
> 
> I bet you're getting bitten by a problem that bit me.  It's described
> in the fine print in http://people.freebsd.org/~rse/mirror/.
> 
> Gmirror saves it's metadata on the last sector of its disk space.
> Since the slice (adXs1) and the disk device (adX) end at the same
> place on the disk, gmirror gets confused.  It tastes devices in a
> particular order, apparently devices first, then slices.  It finds the
> metadata when it tastes adX and goes ahead and uses it, even though it
> should be associating it w/ adXsY.  Hilarity ensues....
> 
> The fix is described in the fourth comment block of Ralf's doc, either
> make the slice a sector smaller than the disk device or hardcode the
> provider name.  I've been using the hardcoding approach, and it seems
> to work for me.

Same here, tried that immediately after my last post.
Apologies for the noise ;)

/Eirik




More information about the freebsd-stable mailing list