[linux-lvm] IOP selection scripts (was: '/etc/init.d/lvm' script in debian package)

Claudio Matsuoka claudio at conectiva.com
Wed Dec 20 23:29:38 UTC 2000


On Wed, 20 Dec 2000, Andreas Dilger wrote:

> My current (path-based) LVM startup (rc.sysinit) looks like:
> 
> # Try to load LVM module first in case it isn't compiled in or already loaded
> [ -f /etc/lvmtab -a ! -e /proc/lvm ] && modprobe lvm 2> /dev/null
> if [ -f /etc/lvmtab -a -e /proc/lvm ]; then
> 	[ -f /proc/lvm ] && IOP=`awk '/IOP/ { print $7 }' /proc/lvm`
> 	[ -d /proc/lvm ] && IOP=`awk '/IOP/ { print $7 }' /proc/lvm/global`
> 	[ "$IOP" -a -d /sbin/lvm-$IOP ] && PATH=/sbin/lvm-$IOP:$PATH
> 
> 	vgchange -a y
> 	rc=$?
> 
> 	# error handling
> 	if [ $rc -ne 0 ]; then
> 		# blah
> 	fi
> fi

I have lvm activation in /etc/rc.d/rc.sysinit (using an explicit modprobe
too, since just expecting the module to be auto-loaded fails in some
machines). I've placed it just after /proc mounting and before everything
else. Using the wrapper approach, the wrapper script looks like:

#!/bin/sh
#
# This is a wrapper to call the appropriate LVM userspace tools based
# on the IOP version in use.
#
# 20001217  Claudio Matsuoka <claudio at conectiva.com>
# - first version

ver_str="IOP version: "
proclvm=/proc/lvm
util=`basename $0`

if [ "$util" = "lvm-wrapper" ]; then
    echo "$util: you don't want to call the wrapper directly" 1>&2
    exit -2
fi

if [ -f $proclvm ]; then
    IOP=`grep "$ver_str" $proclvm|sed "s/.*$ver_str\([0-9]*\).*/\1/"`
elif [ -d $proclvm ]; then
    IOP=`grep "$ver_str" $proclvm/global|sed "s/.*$ver_str\([0-9]*\).*/\1/"`
else
    echo "$util: $proclvm not found (can't determine IOP version)" 1>&2
    exit -1
fi

exec /lib/lvm-iop${IOP}/$util $*


> I also have the 3 lines of LVM path setting in the root .bashrc.
> This approach means that anyone who has old tools directly installed in
> /sbin can still survive the installation of new tools in /sbin/lvm-$IOP.

Hmm, that's an interesting point. The wrapper approach won't allow
real files to be installed in /sbin (but package management should take
care of that).


> My next change will to have an lvmiopversion command (see below).  This
> has the benefit of not needing extra parsing and such (like awk), and it
> won't care what /proc/lvm is, or even if /proc is mounted.  It will also
> have the side effect of loading the LVM module if it needs to be loaded.

Sounds good. I'll use it in my tests too.


claudio





More information about the linux-lvm mailing list