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