分类: 服务器与存储
2014-09-12 15:37:54
对卷的每一种操作可以触发一个自定义的脚本,有点像数据库里面的触发器。这些操作包括:
Creating a volume
Starting a volume
Adding a brick
Removing a brick
Tuning volume options
Stopping a volume
Deleting a volume
对于上面的各种操作,都可以定义一下执行脚本。相应的脚本需要放在固定的位置:
/var/lib/glusterd/hooks/1/create/
/var/lib/glusterd/hooks/1/delete/
/var/lib/glusterd/hooks/1/start/
/var/lib/glusterd/hooks/1/stop/
/var/lib/glusterd/hooks/1/set/
/var/lib/glusterd/hooks/1/add-brick/
/var/lib/glusterd/hooks/1/remove-brick/
每个目录下面分别有pre和post子目录,分别表示在该操作之前和之后。想要顺利的使这些脚本执行,除了赋予执行权限外,脚本名字需要以‘S’开头,如:SscriptsName.sh。
For example:
[root@g1 ~]# ll /var/lib/glusterd/hooks/1/stop/pre/Stest.sh
-rwxr-xr-x 1 root root 333 Aug 25 11:03 /var/lib/glusterd/hooks/1/stop/pre/Stest.sh
# cat/var/lib/glusterd/hooks/1/stop/pre/Stest.sh
===========================================================
#!/bin/bash
VOL=
ARGS=$(getopt -l "volname:" -name "" $@)
eval set -- "$ARGS"
while true; do
case$1 in
--volname)
shift
VOL=$1
;;
*)
shift
break
;;
esac
shift
done
if [[ "$VOL" == "testvolume"]]
then
wall 'The testvolume is will be down!'
fi
===========================================================
# 当停止testvolume时,所有的登陆者会受到信息;而停止其他卷则不会执行脚本。
# 脚本不会在整个glusterfs内执行,只会在脚本所在的节点上执行。