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