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