Subject: raidframe scripts [ Re: Why my life is sucking. Part 2.]
To: Luke Mewburn <lukem@wasabisystems.com>
From: Manuel Bouyer <bouyer@antioche.lip6.fr>
List: current-users
Date: 01/18/2001 14:50:41
On Thu, Jan 18, 2001 at 11:18:25PM +1100, Luke Mewburn wrote:
> I think that this is a good idea; I'll take a look at it as part of
> another idea I have...
> 
> ...which is to change the parity rebuild system to only attempt to
> rebuild configured raid partitions. I don't have /etc/raidX.conf
> files; I rely upon raid auto-config to DTRT. This means that parity
> rebuilds won't happen unless I hack my scripts.
> 
> Currently /etc/rc.d/raidframe does:
> 
> 	for cfg in /etc/raid[0-9].conf /etc/raid[0-9][0-9].conf ; do
> 		[ ! -f $cfg ] && continue
> 		dev=${cfg##*/}
> 		dev=${dev%%.conf}
> 		raidctl -P $dev
> 	done
> 
> and I think this could be changed to something functionally equivalent
> to:
> 	for $dev in `iostat -x | awk '/^raid/ { print $1 }'`; do
> 		raidctl -P $dev
> 	done
> 
> We can't do this in the current script because iostat and awk are in
> /usr/{,sbin}, but Simon Burge has some (uncommitted) work which should
> allow me to get the same lists of `active' disks that `iostat -x`
> provides via /sbin/sysctl. On the other hand, we could just split the
> functionality now, and make the parity-rebuild component depend upon
> "mountcritremote" (which gets /usr).

I think this isn't a problem; especially as raidctl -P needs to be run after
quotacheck, for the same reason as fsck :)

While we're at it, I'd like to add something to report failed components
in /etc/daily, maybe in the check_disk section, or in a new check_raid section.
What I was missing is 'iostat -x' to get the list of configured devices :)

What about something like this ?

if checkyesno check_disks; then
        touch $TMP2
        for dev in `iostat -x | awk '/^raid/ { print $1 }'`; do
                raidctl -s $dev | awk '/^.*: failed$/ {print $0}' > $TMP
                if [ -s $TMP ]; then
                        echo "$dev:" >> $TMP2
                        cat $TMP >> $TMP2
                fi
                rm -f $TMP
        done
        if [ -s $TMP2 ]; then
                echo "failed RAID component(s):"
                cat $TMP2
        fi
        rm -f $TMP2
fi


--
Manuel Bouyer, LIP6, Universite Paris VI.           Manuel.Bouyer@lip6.fr
--