2 # script to manage nfs in a clustered environment
5 /bin/mkdir -p $CTDB_BASE/state/nfs
6 /bin/mkdir -p $CTDB_BASE/state/statd/ip
7 /bin/mkdir -p $STATD_SHARED_DIRECTORY
13 # always restart the lockmanager so that we start with a clusterwide
14 # graceperiod when ip addresses has changed
15 [ -x $CTDB_BASE/statd-callout ] && {
16 $CTDB_BASE/statd-callout notify &
21 . $CTDB_BASE/functions
24 service_start="start_nfs"
25 service_stop="startstop_nfs stop"
26 service_reconfigure="reconfigure_nfs"
30 [ -z "$STATD_SHARED_DIRECTORY" ] && exit 0
32 ctdb_start_stop_service
44 ctdb_service_set_reconfigure
45 touch $CTDB_BASE/state/statd/ip/$2
49 ctdb_service_set_reconfigure
50 /bin/rm -f $CTDB_BASE/state/statd/ip/$2
54 # if we have taken or released any ips we must
55 # restart the lock manager so that we enter a clusterwide grace period
56 if ctdb_service_needs_reconfigure ; then
57 ctdb_service_reconfigure
62 if ctdb_service_needs_reconfigure ; then
63 ctdb_service_reconfigure
67 # check that statd responds to rpc requests
68 # if statd is not running we try to restart it
69 rpcinfo -u localhost 100024 1 > /dev/null || {
71 [ -n "$STATD_HOSTNAME" ] && RPCSTATDOPTS="$RPCSTATDOPTS -n $STATD_HOSTNAME"
72 [ -n "$STATD_PORT" ] && RPCSTATDOPTS="$RPCSTATDOPTS -p $STATD_PORT"
73 [ -n "$STATD_OUTGOING_PORT" ] && RPCSTATDOPTS="$RPCSTATDOPTS -o $STATD_OUTGOING_PORT"
74 rpc.statd $RPCSTATDOPTS
75 echo "ERROR: STATD is not responding. Trying to restart it. [rpc.statd $RPCSTATDOPTS]"
79 # check that NFS responds to rpc requests
80 ctdb_check_rpc "NFS" 100003 3
82 # and that its directories are available
83 [ "$CTDB_NFS_SKIP_SHARE_CHECK" = "yes" ] || {
84 exportfs | grep -v '^#' | grep '^/' |
85 sed -e 's/[[:space:]]*[^[:space:]]*$//' |
86 ctdb_check_directories
89 # check that lockd responds to rpc requests
90 ctdb_check_rpc "lockd" 100021 1
91 echo "$STATD_SHARED_DIRECTORY" | ctdb_check_directories "statd" || \
94 # mount needs special handling since it is sometimes not started
96 rpcinfo -u localhost 100005 1 > /dev/null || {
97 echo "ERROR: MOUNTD is not running. Trying to restart it."
99 [ -n "$MOUNTD_PORT" ] && RPCMOUNTDOPTS="$RPCMOUNTDOPTS -p $MOUNTD_PORT"
100 killall -q -9 rpc.mountd
101 rpc.mountd $RPCMOUNTDOPTS &
107 ctdb_checkstatus || exit $?