mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-23 21:35:29 +03:00
169f68bfcd
With the previous clvmd checkin this should address bz#187812
153 lines
2.2 KiB
Bash
153 lines
2.2 KiB
Bash
#!/bin/bash
|
|
#
|
|
# chkconfig: - 24 76
|
|
# description: Starts and stops clvmd
|
|
#
|
|
#
|
|
### BEGIN INIT INFO
|
|
# Provides:
|
|
### END INIT INFO
|
|
|
|
. /etc/init.d/functions
|
|
|
|
LVDISPLAY="/usr/sbin/lvdisplay"
|
|
VGCHANGE="/usr/sbin/vgchange"
|
|
VGSCAN="/usr/sbin/vgscan"
|
|
VGDISPLAY="/usr/sbin/vgdisplay"
|
|
VGS="/usr/sbin/vgs"
|
|
CLVMDOPTS="-T20"
|
|
|
|
[ -f /etc/sysconfig/cluster ] && . /etc/sysconfig/cluster
|
|
|
|
LOCK_FILE="/var/lock/subsys/clvmd"
|
|
|
|
start()
|
|
{
|
|
for rtrn in 0
|
|
do
|
|
if ! pidof clvmd > /dev/null
|
|
then
|
|
echo -n "Starting clvmd: "
|
|
daemon clvmd $CLVMDOPTS
|
|
rtrn=$?
|
|
echo
|
|
if [ $rtrn -ne 0 ]
|
|
then
|
|
break
|
|
fi
|
|
fi
|
|
# refresh cache
|
|
$VGSCAN > /dev/null 2>&1
|
|
|
|
if [ -n "$LVM_VGS" ]
|
|
then
|
|
for vg in $LVM_VGS
|
|
do
|
|
if ! action "Activating VG $vg:" $VGCHANGE -ayl $vg
|
|
then
|
|
rtrn=$?
|
|
fi
|
|
done
|
|
else
|
|
if ! action "Activating VGs:" $VGCHANGE -ayl
|
|
then
|
|
rtrn=$?
|
|
fi
|
|
fi
|
|
done
|
|
|
|
return $rtrn
|
|
}
|
|
|
|
stop()
|
|
{
|
|
for rtrn in 0
|
|
do
|
|
if [ -n "$LVM_VGS" ]
|
|
then
|
|
for vg in $LVM_VGS
|
|
do
|
|
if ! action "Deactivating VG $vg:" $VGCHANGE -anl $vg
|
|
then
|
|
rtrn=$?
|
|
fi
|
|
done
|
|
else
|
|
# Hack to only deactivate clustered volumes
|
|
clustervgs=`$VGDISPLAY 2> /dev/null | awk 'BEGIN {RS="VG Name"} {if (/Clustered/) print $1;}'`
|
|
for vg in $clustervgs; do
|
|
if ! action "Deactivating VG $vg:" $VGCHANGE -anl $vg
|
|
then
|
|
rtrn=$?
|
|
fi
|
|
done
|
|
fi
|
|
|
|
[ $rtrn -ne 0 ] && break
|
|
|
|
echo -n "Stopping clvm:"
|
|
killproc clvmd -TERM
|
|
rtrn=$?
|
|
echo
|
|
done
|
|
|
|
return $rtrn
|
|
}
|
|
|
|
wait_for_finish()
|
|
{
|
|
count=0
|
|
|
|
while [ "$count" -le 10 -a -n "`pidof clvmd`" ]
|
|
do
|
|
sleep 1
|
|
count=$((count + 1))
|
|
done
|
|
|
|
if [ `pidof clvmd` ]
|
|
then
|
|
return 1
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
rtrn=1
|
|
|
|
# See how we were called.
|
|
case "$1" in
|
|
start)
|
|
start
|
|
rtrn=$?
|
|
[ $rtrn = 0 ] && touch $LOCK_FILE
|
|
;;
|
|
|
|
stop)
|
|
stop
|
|
rtrn=$?
|
|
[ $rtrn = 0 ] && rm -f $LOCK_FILE
|
|
;;
|
|
|
|
restart)
|
|
if stop
|
|
then
|
|
wait_for_finish
|
|
start
|
|
fi
|
|
rtrn=$?
|
|
;;
|
|
|
|
status)
|
|
status clvmd
|
|
rtrn=$?
|
|
vols=$( $LVDISPLAY -C --nohead 2> /dev/null | awk '($3 ~ /....a./) {print $1}' )
|
|
echo active volumes: ${vols:-"(none)"}
|
|
;;
|
|
|
|
*)
|
|
echo $"Usage: $0 {start|stop|restart|status}"
|
|
;;
|
|
esac
|
|
|
|
exit $rtrn
|