1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-24 21:34:56 +03:00

make changes to ctdb event scripts to support NFS-Ganesha.

make changes to ctdb event scripts to support NFS-Ganesha.

Signed-off-by: Chandra Seetharaman <sekharan@us.ibm.com>
Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>

(This used to be ctdb commit 7298588ed54492f106954c893dd86b0a36783470)
This commit is contained in:
Chandra Seetharaman 2010-12-03 15:26:22 -08:00 committed by Ronnie Sahlberg
parent c2c53db49d
commit 5e485d5ca0
2 changed files with 160 additions and 0 deletions

View File

@ -0,0 +1,158 @@
#!/bin/sh
# script to manage nfs in a clustered environment
start_nfs() {
/bin/mkdir -p $CTDB_VARDIR/state/nfs
/bin/mkdir -p $CTDB_VARDIR/state/statd/ip
ctdb_service_stop
ctdb_service_start
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
}
. $CTDB_BASE/functions
loadconfig nfs
[ "$NFS_SERVER_MODE" == "GANESHA" ] || exit 0
service_name="nfs-ganesha-gpfs"
ctdb_start_stop_service
is_ctdb_managed_service || exit 0
case "$1" in
init)
# read statd from persistent database
;;
startup)
ctdb_service_start
mkdir -p $CTDB_VARDIR/state/statd
touch $CTDB_VARDIR/state/statd/update-trigger
;;
shutdown)
ctdb_service_stop
;;
takeip)
ctdb_service_set_reconfigure
;;
releaseip)
ctdb_service_set_reconfigure
;;
monitor)
if ctdb_service_needs_reconfigure ; then
ctdb_service_reconfigure
exit 0
fi
update_tickles 2049
# check that statd responds to rpc requests
# if statd is not running we try to restart it
if ctdb_check_rpc "STATD" status 1 >/dev/null ; then
(service_name="nfs_statd"; ctdb_counter_init)
else
p="rpc.statd" ; cmd="$p"
cmd="${cmd}${STATD_HOSTNAME:+ -n }${STATD_HOSTNAME}"
cmd="${cmd}${STATD_PORT:+ -p }${STATD_PORT}"
cmd="${cmd}${STATD_OUTGOING_PORT:+ -o }${STATD_OUTGOING_PORT}"
(
service_name="nfs_statd"
ctdb_counter_incr
ctdb_check_counter_limit 10 quiet >/dev/null
) || {
echo "$ctdb_check_rpc_out"
echo "Trying to restart STATD [$cmd]"
}
$cmd
fi
# check that NFS responds to rpc requests
[ "$CTDB_NFS_SKIP_KNFSD_ALIVE_CHECK" = "yes" ] || {
if ctdb_check_rpc "NFS" nfs 3 >/dev/null ; then
(service_name="nfs_knfsd"; ctdb_counter_init)
else
(
service_name="nfs_knfsd"
ctdb_counter_incr
ctdb_check_counter_equal 10 || {
echo "Trying to restart NFS service"
ctdb_service_stop
ctdb_service_start
exit 0
}
ctdb_check_counter_limit 15 quiet >/dev/null
) || {
echo "$ctdb_check_rpc_out"
echo "Trying to restart NFS service"
ctdb_service_stop
ctdb_service_start
exit 1
}
fi
}
# and that its directories are available
[ "$CTDB_NFS_SKIP_SHARE_CHECK" = "yes" ] || {
grep Path /etc/ganesha/gpfs.ganesha.exports.conf |
cut -f2 -d\" | ctdb_check_directories
} || exit $?
# check that lockd responds to rpc requests
ctdb_check_rpc "LOCKD" nlockmgr 4 || {
echo "Trying to restart lock manager service"
ctdb_service_stop
ctdb_service_start
exit 1
}
# check mounts responds to rpc requests
ctdb_check_rpc "MOUNTD" mountd 1 >/dev/null || {
echo "Trying to restart mountd service"
ctdb_service_stop
ctdb_service_start
exit 1
}
# rquotad needs special handling since it is sometimes not started
# correctly on RHEL5
# this is not a critical service so we dont flag the node as unhealthy
ctdb_check_rpc "RQUOTAD" rquotad 1 || {
p="rpc.rquotad"
cmd="${p}${RQUOTAD_PORT:+ -p }${RQUOTAD_PORT}"
echo "Trying to restart RQUOTAD [${cmd}]"
killall -q -9 $p
$cmd &
}
# once every 60 seconds, update the statd state database for which
# clients need notifications
LAST_UPDATE=`stat --printf="%Y" $CTDB_VARDIR/state/statd/update-trigger 2>/dev/null`
CURRENT_TIME=`date +"%s"`
[ $CURRENT_TIME -ge $(($LAST_UPDATE + 60)) ] && {
mkdir -p $CTDB_VARDIR/state/statd
touch $CTDB_VARDIR/state/statd/update-trigger
$CTDB_BASE/statd-callout updatelocal &
$CTDB_BASE/statd-callout updateremote &
}
;;
ipreallocated)
# if the ips have been reallocated, we must restart the lockmanager
# across all nodes and ping all statd listeners
[ -x $CTDB_BASE/statd-callout ] && {
$CTDB_BASE/statd-callout notify &
} >/dev/null 2>&1
;;
*)
ctdb_standard_event_handler "$@"
;;
esac
exit 0

View File

@ -17,6 +17,8 @@ service_stop="startstop_nfs stop"
loadconfig
[ "$NFS_SERVER_MODE" != "GANESHA" ] || exit 0
ctdb_start_stop_service
is_ctdb_managed_service || exit 0