Living on gmirror: need to reincarnate /etc/rc.early

Alfred Bartsch bartsch at dssgmbh.de
Wed Jan 26 14:35:03 UTC 2011


Doug Barton schrieb:
> On 01/24/2011 23:20, Eugene Grosbein wrote:
>> Hi!
>>
>> In RELENG_8, gmirror is good enough to keep whole HDD pair withing the
>> mirror.
>> Its performance, stability any pretty ease of maintainance allows
>> to use it widely.
>>
>> With wide deployment of gmirror in production I've faced inability
>> of RELENG_8 to store kernel crashdumps out-of-the-box.
>> gmirror manual page documents a way to setup FreeBSD so that
>> it would store crashdumps again but that way involves /etc/rc.early
>> removed from RELENG_8. I've read about intentions - it was unsafe etc.
>> But we still need working crashdump support.
>>
>> Easiest way is to reincarnate /etc/rc.d/early support making it better
>> and safer
>> and it should support gmirror's mechanics for crashdumps out-of-the-box.
> 
> I'll tell you the same thing I told Kostik way back when I removed it.
> This is the only thing that anyone has ever suggested a use for in
> /etc/rc.early, and the "solution" in the man page is a hack. :)
> 
> If this is something that is necessary to do then I'd prefer to do it
> properly and add an /etc/rc.d/gmirror that runs in the proper (early)
> position, and then figure out the proper location in rc.d to handle the
> second half of the configuration.
> 
> I'm happy to review patches.  :)
> 
> 
> Doug
> 
Hi Doug,
at our site we are using the following scripts in /etc/rc.d to deal with
gmirror "specials":

First part (/etc/rc.d/gmirror1):
================================
#!/bin/sh

# PROVIDE: gmirror1
# BEFORE:  fsck
# KEYWORD: nojail

. /etc/rc.subr

name="gmirror1"
start_cmd="gmirror1_start"
stop_cmd=":"


gmirror1_start()
{
   echo "gmirror configure -b prefer gm0"
   gmirror configure -b prefer gm0
}

load_rc_config $name
run_rc_command "$1"

# run only if provider /dev/mirror/gm0 exists
test -r /dev/mirror/gm0 || exit 0
---------------------------------
Second part (/etc/rc.d/gmirror2):
================================
#!/bin/sh

# PROVIDE: gmirror2
# REQUIRE: DAEMON
# BEFORE:  LOGIN
# KEYWORD: nojail

. /etc/rc.subr

name="gmirror2"
start_cmd="gmirror2_start"
stop_cmd=":"

gmirror2_start()
{
   echo "gmirror configure -b round-robin gm0"
   gmirror configure -b round-robin gm0
}

load_rc_config $name
run_rc_command "$1"

# run only if provider /dev/mirror/gm0 exists
test -r /dev/mirror/gm0 || exit 0
---------------------------------

In our environment, the name of the gmirror provider is always
"mirror/gm0". Variable naming of the provider should be added,
eventually extracted from "gmirror list" command.

-- 
Alfred Bartsch



More information about the freebsd-stable mailing list