Home | History | Annotate | Line # | Download | only in scripts
      1      1.1  haad #!/bin/bash
      2      1.1  haad #
      3      1.1  haad # chkconfig: - 24 76
      4      1.1  haad # description: Starts and stops clvmd
      5      1.1  haad #
      6      1.1  haad # For Red-Hat-based distributions such as Fedora, RHEL, CentOS.
      7      1.1  haad #	       
      8      1.1  haad ### BEGIN INIT INFO
      9  1.1.1.2  haad # Provides: clvmd
     10  1.1.1.2  haad # Required-Start: $local_fs
     11  1.1.1.2  haad # Required-Stop: $local_fs
     12  1.1.1.2  haad # Default-Start:
     13  1.1.1.2  haad # Default-Stop: 0 1 6
     14  1.1.1.2  haad # Short-Description: Clustered LVM Daemon
     15      1.1  haad ### END INIT INFO
     16      1.1  haad 
     17      1.1  haad . /etc/init.d/functions
     18      1.1  haad 
     19      1.1  haad DAEMON=clvmd
     20      1.1  haad 
     21      1.1  haad exec_prefix=
     22      1.1  haad sbindir=${exec_prefix}/sbin
     23      1.1  haad 
     24      1.1  haad LVDISPLAY=${sbindir}/lvdisplay
     25      1.1  haad VGCHANGE=${sbindir}/vgchange
     26      1.1  haad VGSCAN=${sbindir}/vgscan
     27      1.1  haad VGDISPLAY=${sbindir}/vgdisplay
     28      1.1  haad VGS=${sbindir}/vgs
     29      1.1  haad 
     30      1.1  haad CLVMDOPTS="-T20"
     31      1.1  haad 
     32      1.1  haad [ -f /etc/sysconfig/cluster ] && . /etc/sysconfig/cluster
     33      1.1  haad 
     34  1.1.1.2  haad [ -n "$CLVMD_CLUSTER_IFACE" ] && CLVMDOPTS="$CLVMDOPTS -I $CLVMD_CLUSTER_IFACE" 
     35  1.1.1.2  haad 
     36      1.1  haad LOCK_FILE="/var/lock/subsys/$DAEMON"
     37      1.1  haad 
     38      1.1  haad start()
     39      1.1  haad {
     40      1.1  haad 	for rtrn in 0
     41      1.1  haad 	do
     42      1.1  haad 		if ! pidof $DAEMON > /dev/null 
     43      1.1  haad 		then 
     44      1.1  haad 			echo -n "Starting $DAEMON: "
     45      1.1  haad 			daemon $DAEMON $CLVMDOPTS
     46      1.1  haad 			rtrn=$?
     47      1.1  haad 			echo
     48      1.1  haad 			if [ $rtrn -ne 0 ]
     49      1.1  haad 			then
     50      1.1  haad 				break
     51      1.1  haad 			fi
     52      1.1  haad  		fi	
     53      1.1  haad 		# refresh cache
     54      1.1  haad 		$VGSCAN  > /dev/null 2>&1
     55      1.1  haad 		
     56      1.1  haad 		if [ -n "$LVM_VGS" ]
     57      1.1  haad 		then
     58      1.1  haad 			for vg in $LVM_VGS
     59      1.1  haad 			do
     60      1.1  haad 				action "Activating VG $vg:" $VGCHANGE -ayl $vg || rtrn=$?
     61      1.1  haad 			done
     62      1.1  haad 		else
     63      1.1  haad 			action "Activating VGs:" $VGCHANGE -ayl || rtrn=$?
     64      1.1  haad 		fi
     65      1.1  haad 	done
     66      1.1  haad 
     67      1.1  haad 	return $rtrn
     68      1.1  haad }
     69      1.1  haad 
     70      1.1  haad stop()
     71      1.1  haad {
     72      1.1  haad 	for rtrn in 0
     73      1.1  haad 	do
     74      1.1  haad 		if [ -n "$LVM_VGS" ]
     75      1.1  haad 		then
     76      1.1  haad 			for vg in $LVM_VGS
     77      1.1  haad 			do
     78      1.1  haad 				action "Deactivating VG $vg:" $VGCHANGE -anl $vg || rtrn=$?
     79      1.1  haad 			done
     80      1.1  haad 		else
     81      1.1  haad 			# Hack to only deactivate clustered volumes
     82      1.1  haad 			clustervgs=`$VGDISPLAY 2> /dev/null | awk 'BEGIN {RS="VG Name"} {if (/Clustered/) print $1;}'`
     83      1.1  haad 			for vg in $clustervgs; do
     84      1.1  haad 				action "Deactivating VG $vg:" $VGCHANGE -anl $vg || rtrn=$?
     85      1.1  haad 			done
     86      1.1  haad 		fi
     87      1.1  haad 
     88      1.1  haad 		[ $rtrn -ne 0 ] && break
     89      1.1  haad 
     90      1.1  haad 		echo -n "Stopping clvm:"
     91      1.1  haad 		killproc $DAEMON -TERM
     92      1.1  haad 		rtrn=$?
     93      1.1  haad 		echo
     94      1.1  haad 	done
     95      1.1  haad 	
     96      1.1  haad 	return $rtrn
     97      1.1  haad }
     98      1.1  haad 
     99      1.1  haad wait_for_finish()
    100      1.1  haad {
    101      1.1  haad 	count=0
    102      1.1  haad 
    103      1.1  haad 	while [ "$count" -le 10 -a -n "`pidof $DAEMON`" ]
    104      1.1  haad 	do
    105      1.1  haad 		sleep 1
    106      1.1  haad 		count=$((count + 1))
    107      1.1  haad 	done
    108      1.1  haad 	
    109      1.1  haad 	if [ `pidof $DAEMON` ]
    110      1.1  haad 	then
    111      1.1  haad 		return 1
    112      1.1  haad 	else
    113      1.1  haad 		return 0
    114      1.1  haad 	fi
    115      1.1  haad }
    116      1.1  haad 
    117  1.1.1.2  haad reload() {
    118  1.1.1.2  haad 	$DAEMON -R
    119  1.1.1.2  haad }
    120  1.1.1.2  haad 
    121  1.1.1.2  haad rh_status() {
    122  1.1.1.2  haad 	status $DAEMON
    123  1.1.1.2  haad }
    124  1.1.1.2  haad 
    125  1.1.1.2  haad rh_status_q() {
    126  1.1.1.2  haad 	rh_status >/dev/null 2>&1
    127  1.1.1.2  haad }
    128  1.1.1.2  haad 
    129  1.1.1.2  haad 
    130      1.1  haad rtrn=1
    131      1.1  haad 
    132      1.1  haad # See how we were called.
    133      1.1  haad case "$1" in
    134      1.1  haad   start)
    135      1.1  haad 	start
    136      1.1  haad 	rtrn=$?
    137      1.1  haad 	[ $rtrn = 0 ] && touch $LOCK_FILE
    138      1.1  haad 	;;
    139      1.1  haad 
    140      1.1  haad   stop)
    141      1.1  haad 	stop
    142      1.1  haad 	rtrn=$?
    143      1.1  haad 	[ $rtrn = 0 ] && rm -f $LOCK_FILE
    144      1.1  haad 	;;
    145      1.1  haad 
    146      1.1  haad   restart)
    147      1.1  haad 	if stop
    148      1.1  haad 	then
    149      1.1  haad 		wait_for_finish
    150      1.1  haad 		start
    151      1.1  haad 	fi 
    152      1.1  haad 	rtrn=$?
    153      1.1  haad 	;;
    154      1.1  haad 
    155  1.1.1.2  haad   reload)
    156  1.1.1.2  haad 	rh_status_q || exit 7
    157  1.1.1.2  haad 	reload
    158  1.1.1.2  haad 	;;
    159  1.1.1.2  haad 
    160      1.1  haad   status)
    161  1.1.1.2  haad 	rh_status
    162      1.1  haad 	rtrn=$?
    163      1.1  haad 	vols=$( $LVDISPLAY -C --nohead 2> /dev/null | awk '($3 ~ /....a./) {print $1}' )
    164      1.1  haad 	echo active volumes: ${vols:-"(none)"}
    165      1.1  haad 	;;
    166      1.1  haad 
    167      1.1  haad   *)
    168  1.1.1.2  haad 	echo $"Usage: $0 {start|stop|restart|reload|status}"
    169      1.1  haad 	;;
    170      1.1  haad esac
    171      1.1  haad 
    172      1.1  haad exit $rtrn
    173