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