Compare commits
218 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2247731166 | ||
|
1d3eea3550 | ||
|
f9b55e0398 | ||
|
5c580d2bd9 | ||
|
7e4703a16c | ||
|
05d91f058c | ||
|
bb5c7d05d7 | ||
|
81fb321f45 | ||
|
924bfb7714 | ||
|
d15b9bb2b3 | ||
|
ef6ab3fb62 | ||
|
fb6e3e1938 | ||
|
9961703bbf | ||
|
047b685db6 | ||
|
66fd3679e7 | ||
|
9caf1185dd | ||
|
4211c1b372 | ||
|
0627c77bf2 | ||
|
200e7b67e5 | ||
|
df8718b521 | ||
|
32896262e9 | ||
|
820b3b0f74 | ||
|
d42f7eb3a0 | ||
|
595ee3906f | ||
|
7f92338962 | ||
|
3e84f439a2 | ||
|
bf71e90723 | ||
|
14466c6a6e | ||
|
3b2b58f384 | ||
|
ab19725f23 | ||
|
a4ec89c0bb | ||
|
542de333e7 | ||
|
a49b203422 | ||
|
d96da186eb | ||
|
165b431299 | ||
|
bc813f3e27 | ||
|
9d6efd5167 | ||
|
3ef69e3bfe | ||
|
88c1030d09 | ||
|
293ee2225d | ||
|
8010aac0ae | ||
|
6f0b4e91c5 | ||
|
abe97aa180 | ||
|
9825f8b96a | ||
|
ab2d212e63 | ||
|
3e3ebff950 | ||
|
4f6f7afe3b | ||
|
936882ed73 | ||
|
b5d9744c39 | ||
|
cfc02de73c | ||
|
2d0d6b1a89 | ||
|
de44192b1b | ||
|
79bb7eee69 | ||
|
75adf590e8 | ||
|
a89e515064 | ||
|
062930bf70 | ||
|
6af7ffe044 | ||
|
d81a79c315 | ||
|
bbd24ff058 | ||
|
70b648dfcd | ||
|
ff07091c53 | ||
|
fc814435ed | ||
|
513f8799eb | ||
|
78e8f49df4 | ||
|
07543d66ee | ||
|
d8b0c47aad | ||
|
86b7cde6b7 | ||
|
b8c02c80a0 | ||
|
f628f3d066 | ||
|
def82dfa51 | ||
|
a00bf8e864 | ||
|
509613b1a7 | ||
|
418b8af108 | ||
|
022276c49e | ||
|
d73e4a2278 | ||
|
c19e20e90e | ||
|
7ed9144fc2 | ||
|
28bfca8b95 | ||
|
18cd2f5bf7 | ||
|
0ef87e820b | ||
|
0c742b18ec | ||
|
b0fd3e3246 | ||
|
4b51389cab | ||
|
1e5501946e | ||
|
e2b082d005 | ||
|
c1ed297730 | ||
|
ce7655b8e8 | ||
|
5938cd0116 | ||
|
1aca25ecc2 | ||
|
74231f2de2 | ||
|
728473a63c | ||
|
65db5435fb | ||
|
42f662bec2 | ||
|
bcd493e99b | ||
|
3380c42015 | ||
|
00e0072a42 | ||
|
e796917a2d | ||
|
51b22e8610 | ||
|
26760bb154 | ||
|
5c8952e684 | ||
|
14f2b8c96f | ||
|
fa4ed37765 | ||
|
dc3646458c | ||
|
877078d3bf | ||
|
9ca2f2d540 | ||
|
7b79460bf0 | ||
|
7e45282fed | ||
|
d15d4f6e00 | ||
|
fbbaa05230 | ||
|
f11e61c580 | ||
|
75d133c12c | ||
|
0f11624b71 | ||
|
1dc8241f13 | ||
|
a98844adc4 | ||
|
0e04457657 | ||
|
474e44d1ac | ||
|
d05aff4352 | ||
|
ce0cac8bbe | ||
|
efb2febf03 | ||
|
cbd714c6ef | ||
|
9f41a4ca0f | ||
|
3029cca49a | ||
|
32ba49ab2a | ||
|
14b51ae79c | ||
|
0cbafc6f02 | ||
|
b85803fad4 | ||
|
6b492c5817 | ||
|
a170b7fc78 | ||
|
e5f872ff52 | ||
|
a58d1bc4cd | ||
|
7f85a340c7 | ||
|
d554e7ce72 | ||
|
2bc3ae1b1f | ||
|
6a7437ed79 | ||
|
a9d34ca357 | ||
|
5e04aa1acd | ||
|
c046aad3c5 | ||
|
8b3fa92254 | ||
|
f2f6dd4571 | ||
|
e97bb47964 | ||
|
9fa6588925 | ||
|
417adbba62 | ||
|
92b66aed92 | ||
|
46a5515e98 | ||
|
6c45a417d1 | ||
|
b8570f7f58 | ||
|
0ccf11e5e8 | ||
|
2374aacdbe | ||
|
23164b9062 | ||
|
8a9dc58eb5 | ||
|
6368c27d68 | ||
|
2c451eb2c5 | ||
|
59466f6b5c | ||
|
f1b81b7b15 | ||
|
bfd42fc375 | ||
|
70d150de9e | ||
|
066e64aa67 | ||
|
b690a420d5 | ||
|
cc278f54eb | ||
|
054ad8b2e7 | ||
|
e157f3a27c | ||
|
9d32049077 | ||
|
cbc4b142e5 | ||
|
1b1ba590c6 | ||
|
094556fcd7 | ||
|
678423fa91 | ||
|
4a1eb56133 | ||
|
e33d052261 | ||
|
1efc584c8f | ||
|
087f4be955 | ||
|
b5dcaa6095 | ||
|
8677659365 | ||
|
f03eb79e98 | ||
|
6102d56037 | ||
|
8d5e465b9e | ||
|
8a9c7f9d80 | ||
|
aad12c39e0 | ||
|
1271f67f1e | ||
|
fa3f3eea69 | ||
|
afb472918f | ||
|
a077e1d17e | ||
|
4afaf468c3 | ||
|
9a9c3b32a6 | ||
|
979f9e5e40 | ||
|
0b3779ea1e | ||
|
d66e9549ed | ||
|
7e0751d7ab | ||
|
b38b92a2d1 | ||
|
39fbbf3114 | ||
|
b10a9fccdc | ||
|
94a2154831 | ||
|
87299190b8 | ||
|
48252ca694 | ||
|
6a8b398cbd | ||
|
cf1009b10e | ||
|
56672bbe5e | ||
|
b22c558234 | ||
|
d0472e5551 | ||
|
edb8a2f067 | ||
|
5a0dcbcc37 | ||
|
c1c6f9f6ed | ||
|
358c9fcdeb | ||
|
adb988de7c | ||
|
6f59480bc3 | ||
|
ee3c33d435 | ||
|
93d70cc0a8 | ||
|
f2cd5cb1f2 | ||
|
9aed528e43 | ||
|
f0c06b76b1 | ||
|
36130fd1b0 | ||
|
f4828a9e36 | ||
|
b3a4f82167 | ||
|
cd40e4bb53 | ||
|
2bad9cc406 | ||
|
fc2cc6affa | ||
|
666c3cfa34 | ||
|
93eaadae64 | ||
|
e6e9eba5e4 |
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
*.tar.gz
|
||||||
|
*.rpm
|
16
0001-config_samples-log_rotate.patch
Normal file
16
0001-config_samples-log_rotate.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
--- nfs-ganesha-3.5/src/config_samples/logrotate_ganesha.orig 2021-06-11 11:05:49.699522427 -0400
|
||||||
|
+++ nfs-ganesha-3.5/src/config_samples/logrotate_ganesha 2021-06-11 11:06:18.362010100 -0400
|
||||||
|
@@ -1,4 +1,5 @@
|
||||||
|
/var/log/ganesha/ganesha.log {
|
||||||
|
+ su ganesha ganesha
|
||||||
|
weekly
|
||||||
|
rotate 52
|
||||||
|
copytruncate
|
||||||
|
--- nfs-ganesha-3.5/src/config_samples/logrotate_fsal_gluster.orig 2021-06-11 11:05:59.857340860 -0400
|
||||||
|
+++ nfs-ganesha-3.5/src/config_samples/logrotate_fsal_gluster 2021-06-11 11:06:22.785931021 -0400
|
||||||
|
@@ -1,4 +1,5 @@
|
||||||
|
/var/log/ganesha/ganesha-gfapi.log {
|
||||||
|
+ su ganesha ganesha
|
||||||
|
weekly
|
||||||
|
rotate 52
|
||||||
|
copytruncate
|
78
0002-CMakeLists.txt.patch
Normal file
78
0002-CMakeLists.txt.patch
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
--- nfs-ganesha-4-rc3/src/CMakeLists.txt.orig 2021-11-08 18:24:19.024041776 -0500
|
||||||
|
+++ nfs-ganesha-4-rc3/src/CMakeLists.txt 2021-11-09 13:54:02.553226811 -0500
|
||||||
|
@@ -558,11 +558,11 @@
|
||||||
|
|
||||||
|
gopt_test(USE_ADMIN_TOOLS)
|
||||||
|
if (USE_ADMIN_TOOLS)
|
||||||
|
- find_package (Python COMPONENTS Interpreter Development)
|
||||||
|
- if (NOT Python_Interpreter_FOUND)
|
||||||
|
+ find_package(PythonInterp ${USE_ADMIN_TOOLS_REQUIRED})
|
||||||
|
+ if (NOT PYTHONINTERP_FOUND)
|
||||||
|
message(WARNING "Cannot find python. Disablin admin tools")
|
||||||
|
set(USE_ADMIN_TOOLS OFF)
|
||||||
|
- endif (NOT Python_Interpreter_FOUND)
|
||||||
|
+ endif (NOT PYTHONINTERP_FOUND)
|
||||||
|
endif (USE_ADMIN_TOOLS)
|
||||||
|
|
||||||
|
gopt_test(USE_GUI_ADMIN_TOOLS)
|
||||||
|
--- nfs-ganesha-4-rc4/src/scripts/ganeshactl/CMakeLists.txt.orig 2021-11-17 09:22:20.860134361 -0500
|
||||||
|
+++ nfs-ganesha-4-rc4/src/scripts/ganeshactl/CMakeLists.txt 2021-11-17 09:41:47.651949504 -0500
|
||||||
|
@@ -44,7 +44,7 @@
|
||||||
|
Ganesha/QtUI/ui_log_dialog.ui
|
||||||
|
)
|
||||||
|
|
||||||
|
-if(Python_FOUND)
|
||||||
|
+if(PYTHONINTERP_FOUND)
|
||||||
|
set(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in")
|
||||||
|
set(SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
|
||||||
|
set(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/build/ganeshactl_timestamp")
|
||||||
|
@@ -118,7 +118,7 @@
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${OUTPUT}
|
||||||
|
- COMMAND ${Python_EXECUTABLE} "${SETUP_PY}" build
|
||||||
|
+ COMMAND ${PYTHON_EXECUTABLE} "${SETUP_PY}" build
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT}
|
||||||
|
DEPENDS ${GANESHA_SRCS} ${UI_PY_FILES} ${SCRIPTS}
|
||||||
|
)
|
||||||
|
@@ -127,9 +127,9 @@
|
||||||
|
|
||||||
|
install(
|
||||||
|
CODE
|
||||||
|
- "execute_process(WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${Python_EXECUTABLE} ${SETUP_PY} install --skip-build --no-compile --prefix=\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX})"
|
||||||
|
+ "execute_process(WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${PYTHON_EXECUTABLE} ${SETUP_PY} install --skip-build --no-compile --prefix=\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX})"
|
||||||
|
)
|
||||||
|
-endif(Python_FOUND)
|
||||||
|
+endif(PYTHONINTERP_FOUND)
|
||||||
|
|
||||||
|
# Man page
|
||||||
|
set(man8_file ganesha_conf.man)
|
||||||
|
--- nfs-ganesha-4-rc4/src/scripts/gpfs-epoch/CMakeLists.txt.orig 2021-11-17 09:22:55.938555754 -0500
|
||||||
|
+++ nfs-ganesha-4-rc4/src/scripts/gpfs-epoch/CMakeLists.txt 2021-11-17 09:41:32.836208727 -0500
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
|
||||||
|
if(USE_FSAL_GPFS)
|
||||||
|
- if(Python_FOUND)
|
||||||
|
+ if(PYTHONINTERP_FOUND)
|
||||||
|
set(SETUP_PY_IN "${CMAKE_CURRENT_SOURCE_DIR}/setup.py.in")
|
||||||
|
set(SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py")
|
||||||
|
set(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/build/gpfs_epoch_timestamp")
|
||||||
|
@@ -38,7 +38,7 @@
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${OUTPUT}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E touch __init__.py
|
||||||
|
- COMMAND ${Python_EXECUTABLE} "${SETUP_PY}" build
|
||||||
|
+ COMMAND ${PYTHON_EXECUTABLE} "${SETUP_PY}" build
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E touch ${OUTPUT}
|
||||||
|
DEPENDS ${GPFS_EPOCH_SRCS} ${SCRIPTS}
|
||||||
|
)
|
||||||
|
@@ -47,7 +47,7 @@
|
||||||
|
|
||||||
|
install(
|
||||||
|
CODE
|
||||||
|
- "execute_process(WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${Python_EXECUTABLE} ${SETUP_PY} install --skip-build --no-compile --prefix=\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX} --install-scripts=\$ENV{DESTDIR}${LIBEXECDIR}/ganesha)"
|
||||||
|
+ "execute_process(WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${PYTHON_EXECUTABLE} ${SETUP_PY} install --skip-build --no-compile --prefix=\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX} --install-scripts=\$ENV{DESTDIR}${LIBEXECDIR}/ganesha)"
|
||||||
|
)
|
||||||
|
- endif(Python_FOUND)
|
||||||
|
+ endif(PYTHONINTERP_FOUND)
|
||||||
|
endif(USE_FSAL_GPFS)
|
@ -1 +0,0 @@
|
|||||||
Obsoleted by NFS-Ganesha in the CentOS Storage SIG
|
|
105
nfs-ganesha.init
Normal file
105
nfs-ganesha.init
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# glusterd Startup script for the Ganesha NFS server
|
||||||
|
#
|
||||||
|
# chkconfig: - 20 80
|
||||||
|
# description: NFSv4 file-system server
|
||||||
|
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: nfs-ganesha
|
||||||
|
# Required-Start: $local_fs $network
|
||||||
|
# Required-Stop: $local_fs $network
|
||||||
|
# Should-Start:
|
||||||
|
# Should-Stop:
|
||||||
|
# Default-Start:
|
||||||
|
# Default-Stop: 0 1 2 3 4 5 6
|
||||||
|
# Short-Description: Ganesha NFS server
|
||||||
|
# Description: NFSv4 file-system server
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
# Source function library.
|
||||||
|
. /etc/rc.d/init.d/functions
|
||||||
|
|
||||||
|
exe="/usr/sbin/nfs-ganesha.sh"
|
||||||
|
prog="nfs-ganesha"
|
||||||
|
|
||||||
|
# Fedora File System Layout dictates /run
|
||||||
|
[ -e /run ] && RUNDIR="/run"
|
||||||
|
pidf="${RUNDIR:-/var/run}/$prog.pid"
|
||||||
|
|
||||||
|
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
|
||||||
|
|
||||||
|
lockfile=/var/lock/subsys/$prog
|
||||||
|
|
||||||
|
start() {
|
||||||
|
[ -x $exe ] || exit 5
|
||||||
|
echo -n $"Starting $prog: "
|
||||||
|
daemon $exe
|
||||||
|
retval=$?
|
||||||
|
echo
|
||||||
|
[ $retval -eq 0 ] && touch $lockfile
|
||||||
|
return $retval
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
echo -n $"Stopping $prog: "
|
||||||
|
killproc $prog
|
||||||
|
retval=$?
|
||||||
|
echo
|
||||||
|
[ $retval -eq 0 ] && rm -f $lockfile
|
||||||
|
return $retval
|
||||||
|
}
|
||||||
|
|
||||||
|
restart() {
|
||||||
|
stop
|
||||||
|
start
|
||||||
|
}
|
||||||
|
|
||||||
|
reload() {
|
||||||
|
restart
|
||||||
|
}
|
||||||
|
|
||||||
|
force_reload() {
|
||||||
|
restart
|
||||||
|
}
|
||||||
|
|
||||||
|
rh_status() {
|
||||||
|
status $prog
|
||||||
|
}
|
||||||
|
|
||||||
|
rh_status_q() {
|
||||||
|
rh_status &>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
rh_status_q && exit 0
|
||||||
|
$1
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
rh_status_q || exit 0
|
||||||
|
$1
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
$1
|
||||||
|
;;
|
||||||
|
reload)
|
||||||
|
rh_status_q || exit 7
|
||||||
|
$1
|
||||||
|
;;
|
||||||
|
force-reload)
|
||||||
|
force_reload
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
rh_status
|
||||||
|
;;
|
||||||
|
condrestart|try-restart)
|
||||||
|
rh_status_q || exit 0
|
||||||
|
restart
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
|
||||||
|
exit 2
|
||||||
|
esac
|
||||||
|
exit $?
|
12
nfs-ganesha.service
Normal file
12
nfs-ganesha.service
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=User-mode file server for NFS
|
||||||
|
Documentation=https://github.com/nfs-ganesha/nfs-ganesha/wiki
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/ganesha.nfsd
|
||||||
|
Type=forking
|
||||||
|
PIDFile=/var/run/ganesha.pid
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
|
1571
nfs-ganesha.spec
Normal file
1571
nfs-ganesha.spec
Normal file
File diff suppressed because it is too large
Load Diff
390
nfs_ganesha.sh
Normal file
390
nfs_ganesha.sh
Normal file
@ -0,0 +1,390 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
VOLNAME=
|
||||||
|
CONF=
|
||||||
|
IP=
|
||||||
|
LOG=
|
||||||
|
DBGLVL=
|
||||||
|
OPT=
|
||||||
|
FILE1=
|
||||||
|
|
||||||
|
trap cleanup SIGHUP SIGINT SIGTERM
|
||||||
|
|
||||||
|
|
||||||
|
if [ $EUID -ne 0 ]; then
|
||||||
|
echo "You have to be root to run this script"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
function usage {
|
||||||
|
echo " Usage : nfs-ganesha.sh [-l <logfile>][-n <dbg_lvl>] -v <volname> -i <ganesha_host_ip> -f <config_file> -o <start|stop>
|
||||||
|
[-h] display this help
|
||||||
|
[-l <logfile>] set the logfile for the daemon
|
||||||
|
[-n <dbg_lvl>] set the verbosity level
|
||||||
|
dbg_lvl options NIV_NULL, NIV_MAJ, NIV_CRIT, NIV_EVENT, NIV_DEBUG, NIV_MID_DEBUG, NIV_FULL_DEBUG
|
||||||
|
-v <volname> name of the volume to be exported
|
||||||
|
-i <ganesha_host_ip> IP of the ganesha host
|
||||||
|
-f <config_file> set the config file to be used
|
||||||
|
-o <start|stop> start or stop ganesha server
|
||||||
|
===========Default Values=============
|
||||||
|
LogFile : /tmp/nfs-ganesha.log
|
||||||
|
DebugLevel : NIV_EVENT"
|
||||||
|
}
|
||||||
|
|
||||||
|
while getopts "hf:i:l:n:v:o: -l help" OPTION
|
||||||
|
do
|
||||||
|
case $OPTION in
|
||||||
|
f) CONF=$OPTARG
|
||||||
|
;;
|
||||||
|
i) IP=$OPTARG
|
||||||
|
;;
|
||||||
|
l) LOG=$OPTARG
|
||||||
|
;;
|
||||||
|
n) DBGLVL=$OPTARG
|
||||||
|
;;
|
||||||
|
h) usage
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
v) VOLNAME=$OPTARG
|
||||||
|
;;
|
||||||
|
o) OPT=$OPTARG
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
function cleanup ()
|
||||||
|
{
|
||||||
|
if [ -f /tmp/old-ganesha.conf ]
|
||||||
|
then cp /tmp/old-ganesha.conf $CONF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function check_for_stop()
|
||||||
|
{
|
||||||
|
if echo $OPT | grep -i -q "stop"
|
||||||
|
then stop_ganesha
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_usage()
|
||||||
|
{
|
||||||
|
|
||||||
|
if [ "$VOLNAME" = "" ]
|
||||||
|
then
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ "$CONF" = "" ]
|
||||||
|
then
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ "$IP" = "" ]
|
||||||
|
then
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ "$OPT" = "" ]
|
||||||
|
then
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
function check_ip {
|
||||||
|
if [[ ! $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
||||||
|
echo "Invalid IP , please enter the correct IP of the ganesha host."
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function check_volname
|
||||||
|
{
|
||||||
|
if ! ls /var/lib/glusterd/vols | grep -q "$VOLNAME" ; then
|
||||||
|
echo "Volume doesn't exist. Please enter a valid volume name."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_conf
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
if ! [ -f "$CONF" ]; then
|
||||||
|
echo "The config_file $CONF doesn't exist."
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
if ! [ -s "$CONF" ]; then
|
||||||
|
echo "The cofig_file $CONF is empty "
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_option
|
||||||
|
{
|
||||||
|
if ! echo $OPT | grep -i -q -e "start" -q -e "stop"
|
||||||
|
then
|
||||||
|
echo "Invalid value for option 'o': start or stop expected"
|
||||||
|
exit 1
|
||||||
|
else if echo $OPT | grep -i -q "start"
|
||||||
|
then
|
||||||
|
OPT="start"
|
||||||
|
else
|
||||||
|
OPT="stop"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function check_debug
|
||||||
|
{
|
||||||
|
if [ "$DBGLVL" = "" ] ; then
|
||||||
|
DBGLVL="NIV_EVENT"
|
||||||
|
else
|
||||||
|
if ! echo $DBGLVL | grep -q -e " NIV_NULL" -q -e "NIV_MAJOR" -q -e " NIV_CRIT" -q -e "NIV_EVENT" -q -e "NIV_DEBUG" -q -e "NIV_FULL_DEBUG"
|
||||||
|
then
|
||||||
|
echo "Invalid value for option 'n': NIV_NULL, NIV_MAJ, NIV_CRIT, NIV_EVENT, NIV_DEBUG, NIV_MID_DEBUG or NIV_FULL_DEBUG expected."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function check_logfile
|
||||||
|
{
|
||||||
|
if [ "$LOG" = "" ]; then
|
||||||
|
LOG="/tmp/nfs-ganesha.log"
|
||||||
|
else if [ -f $LOG ]
|
||||||
|
then
|
||||||
|
cp $LOG /tmp/old-ganesha.log
|
||||||
|
FILE1="1"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function call_checks
|
||||||
|
{
|
||||||
|
check_ip
|
||||||
|
check_conf
|
||||||
|
cp $CONF /tmp/old-ganesha.conf
|
||||||
|
|
||||||
|
check_debug
|
||||||
|
check_logfile
|
||||||
|
check_option
|
||||||
|
check_volname
|
||||||
|
}
|
||||||
|
function check_glusterd()
|
||||||
|
{
|
||||||
|
|
||||||
|
if ! ps aux | grep -q -e "[g]lusterd$" -q -e "[g]lusterd.pid"
|
||||||
|
then
|
||||||
|
echo "glusterd not started , please start glusterd. "
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_bricks()
|
||||||
|
{
|
||||||
|
gluster volume status $VOLUME | grep -q "N/A"
|
||||||
|
if [ "$?" -eq 0 ]
|
||||||
|
then
|
||||||
|
echo "Brick(s) not online , please check $VOLUME volume status"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_glusternfs
|
||||||
|
{
|
||||||
|
if echo "$(ls /var/lib/glusterd/vols | wc -l)" | grep -q "1" ; then
|
||||||
|
if ps aux | grep -q "[g]luster/nfs" ; then
|
||||||
|
echo "gluster-nfs server is active, needs to be disabled to proceed. "
|
||||||
|
while true; do
|
||||||
|
read -p "Do you wish to disable gluster-nfs server ? [Y\N]" yn
|
||||||
|
case $yn in
|
||||||
|
[Yy]* ) gluster volume set $VOLNAME nfs.disable ON >/dev/null 2>/dev/null; break;;
|
||||||
|
[Nn]* ) exit 1;;
|
||||||
|
* ) echo "Please answer yes or no.";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
sleep 2
|
||||||
|
if ps aux | grep -q "[g]luster/nfs" ; then
|
||||||
|
echo "Volume set unsuccessful , please try disabling gluster-nfs server "
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
sleep 2
|
||||||
|
if rpcinfo -p | grep -q -e "nfs_acl" ; then
|
||||||
|
echo " gluster-nfs ports still in use; please try again"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if ps aux | grep -q "[g]luster/nfs"; then
|
||||||
|
echo "Please disable gluster-nfs servers on all the volumes"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_kernelnfs()
|
||||||
|
{
|
||||||
|
service nfs status | grep -q -e "dead" -q -e "stopped" -q -e "disabled"
|
||||||
|
if [ "$?" -eq 1 ]; then
|
||||||
|
echo "kernel-NFS server is active , it needs to disabled to proceed. "
|
||||||
|
while true; do
|
||||||
|
read -p "Do you wish to disable kernel-nfs server ? [Y\N]" yn
|
||||||
|
case $yn in
|
||||||
|
[Yy]* ) service nfs stop; break;;
|
||||||
|
[Nn]* ) exit 1;;
|
||||||
|
* ) echo "Please answer yes or no.";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
sleep 2
|
||||||
|
service nfs status | grep -q -e "dead" -q -e "stopped" -q -e "inactive" >>/dev/null
|
||||||
|
if [ "$?" -eq 1 ]; then
|
||||||
|
echo " kernel-NFS server couldn't be disabled , please try again"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "kernel-NFS server successfully disabled"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function check_volstart()
|
||||||
|
{
|
||||||
|
|
||||||
|
if ! cat /var/lib/glusterd/vols/$1/info | grep -q "status=1"
|
||||||
|
then
|
||||||
|
echo "Volume $1 is not started, please start the volume."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_ganesha
|
||||||
|
{
|
||||||
|
if ps aux | grep -q "[g]anesha.nfsd" ; then
|
||||||
|
echo "NFS-ganesha server is already active , nothing to do."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function check_ports
|
||||||
|
{
|
||||||
|
if netstat -an | grep -q "2049$" ; then
|
||||||
|
echo "Port 2049 is already in use , exiting"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_fsal
|
||||||
|
{
|
||||||
|
|
||||||
|
if ! ls /usr/lib64/ganesha | grep -q "libfsalgluster.so" ; then
|
||||||
|
echo "Cannot find shared object libfsalgluster.so , exiting"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function start_ganesha
|
||||||
|
{
|
||||||
|
check_ganesha
|
||||||
|
#check_rpms
|
||||||
|
check_fsal
|
||||||
|
check_glusterd
|
||||||
|
check_volstart $1
|
||||||
|
check_kernelnfs
|
||||||
|
check_glusternfs $1
|
||||||
|
check_ports
|
||||||
|
check_conf $3
|
||||||
|
check_bricks $1
|
||||||
|
sed -i /^[[:space:]]*\#/!s/volume.*/"volume=$1,hostname=$2\";"/ $3
|
||||||
|
sed -i /^[[:space:]]*\#/!s/Pseudo.*/Pseudo="\"\/$1\";"/ $3
|
||||||
|
sed -i s/Path.*/Path="\"\/$1\";"/ $3
|
||||||
|
sed -i 's/\r//g' $3
|
||||||
|
/usr/bin/ganesha.nfsd -f $CONF -L $LOG -N $DBGLVL -d >/dev/null 2>/dev/null
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function stop_ganesha
|
||||||
|
{
|
||||||
|
if ! ps aux | grep -q "[g]anesha.nfsd" ; then
|
||||||
|
echo "NFS-ganesha server already inactive,nothing to do."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
kill -9 `cat /var/run/ganesha.pid`
|
||||||
|
if ps aux | ganesha.nfsd ; then
|
||||||
|
if rpcinfo -p | grep -q -e "nfs" ; then
|
||||||
|
echo "NFS-ganesha server could not be stopped, please try again"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo " NFS-ganesha server is now inactive."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function check_for_stop()
|
||||||
|
{
|
||||||
|
if echo $OPT | grep -i -q "stop"
|
||||||
|
then stop_ganesha
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
check_for_stop
|
||||||
|
check_usage
|
||||||
|
call_checks
|
||||||
|
|
||||||
|
if [ "$OPT" = "start" ]
|
||||||
|
then
|
||||||
|
start_ganesha $VOLNAME $IP $CONF
|
||||||
|
if ! ps aux | grep -q "[g]anesha.nfsd" ; then
|
||||||
|
start_ganesha $VOLNAME $IP $CONF
|
||||||
|
fi
|
||||||
|
sleep 5
|
||||||
|
if ! ps aux | grep -q "[g]anesha.nfsd"
|
||||||
|
then
|
||||||
|
if [ "$FILE1" = "1" ]
|
||||||
|
then
|
||||||
|
cp /tmp/old-ganesha.log $LOG
|
||||||
|
rm -rf /tmp/ganesha.log
|
||||||
|
fi
|
||||||
|
cp /tmp/old-ganesha.conf $CONF
|
||||||
|
rm -rf /tmp/ganesha.conf
|
||||||
|
echo "Failed to start NFS-ganesha server , please see $LOG for details"
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
echo "NFS-ganesha server started."
|
||||||
|
echo "============Volume exports============"
|
||||||
|
showmount -e $IP
|
||||||
|
echo "======================================"
|
||||||
|
rm -rf /tmp/old-ganesha.conf
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$OPT" = "stop" ]
|
||||||
|
then
|
||||||
|
stop_ganesha
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in New Issue
Block a user