diff options
| author | Kaleb S. KEITHLEY <kkeithle@redhat.com> | 2016-12-16 13:24:57 -0500 | 
|---|---|---|
| committer | Kaleb KEITHLEY <kkeithle@redhat.com> | 2016-12-18 04:44:12 -0800 | 
| commit | bcff9a195c3d7ab8ce87a4add448643aa5ee1a4e (patch) | |
| tree | dc19ba1b29fbe1dc5e6717b42e386f9d1afd0bdd | |
| parent | 67feb849ef96431ad869ce904c5de727195758cf (diff) | |
common-ha: add node create new node dirs in shared storage
When adding a node to the ganesha HA cluster, create the directory
tree in shared storage for the added node and create sets of symlinks
to match what is/was created for the other nodes.  I.e. in a four
node cluster the new node needs a set of links to the four existing
nodes:
 /run/gluster/shared/nfs-ganesha/$new/nfs/{ganesha,statd}/$e1 -> e1
 /run/gluster/shared/nfs-ganesha/$new/nfs/{ganesha,statd}/$e2 -> e2
 /run/gluster/shared/nfs-ganesha/$new/nfs/{ganesha,statd}/$e3 -> e3
 /run/gluster/shared/nfs-ganesha/$new/nfs/{ganesha,statd}/$e4 -> e4
and all the existing nodes need links added for the new node:
 /run/gluster/shared/nfs-ganesha/$e1/nfs/{ganesha,statd}/$new -> new
 /run/gluster/shared/nfs-ganesha/$e2/nfs/{ganesha,statd}/$new -> new
 /run/gluster/shared/nfs-ganesha/$e3/nfs/{ganesha,statd}/$new -> new
 /run/gluster/shared/nfs-ganesha/$e5/nfs/{ganesha,statd}/$new -> new
Likewise when deleting, remove the dir and symlinks.
master BZ: 1400613
master http://review.gluster.org/#/c/16036/
release-3.9 BZ: 1405576
release-3.9 http://review.gluster.org/16170
Change-Id: Id2f78f70946f29c3503e1e6db141b66cb431e0ea
BUG: 1405577
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
Reviewed-on: http://review.gluster.org/16171
Smoke: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
| -rw-r--r-- | extras/ganesha/scripts/ganesha-ha.sh | 92 | 
1 files changed, 91 insertions, 1 deletions
diff --git a/extras/ganesha/scripts/ganesha-ha.sh b/extras/ganesha/scripts/ganesha-ha.sh index ae3ba8d7b36..00fe1a76958 100644 --- a/extras/ganesha/scripts/ganesha-ha.sh +++ b/extras/ganesha/scripts/ganesha-ha.sh @@ -812,6 +812,93 @@ setup_state_volume()  } +addnode_state_volume() +{ +    local newnode=${1}; shift +    local mnt=${HA_VOL_MNT} +    local longname="" +    local dname="" +    local dirname="" + +    longname=$(hostname) +    dname=${longname#$(hostname -s)} + +    if [[ ${newnode} == *${dname} ]]; then +        dirname=${newnode} +    else +        dirname=${newnode}${dname} +    fi + +    if [ ! -d ${mnt}/nfs-ganesha/${dirname} ]; then +        mkdir ${mnt}/nfs-ganesha/${dirname} +    fi +    if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs ]; then +        mkdir ${mnt}/nfs-ganesha/${dirname}/nfs +    fi +    if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha ]; then +        mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha +    fi +    if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd ]; then +        mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd +    fi +    if [ ! -e ${mnt}/nfs-ganesha/${dirname}/nfs/state ]; then +        touch ${mnt}/nfs-ganesha/${dirname}/nfs/state +    fi +    if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4recov ]; then +        mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4recov +    fi +    if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4old ]; then +        mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4old +    fi +    if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm ]; then +        mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm +    fi +    if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm.bak ]; then +        mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm.bak +    fi +    if [ ! -e ${mnt}/nfs-ganesha/${dirname}/nfs/statd/state ]; then +        touch ${mnt}/nfs-ganesha/${dirname}/nfs/statd/state +    fi + +    for server in ${HA_SERVERS} ; do +        ln -s ${mnt}/nfs-ganesha/${server}/nfs/ganesha ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/${server} +        ln -s ${mnt}/nfs-ganesha/${server}/nfs/statd ${mnt}/nfs-ganesha/${dirname}/nfs/statd/${server} + +        ln -s ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha ${mnt}/nfs-ganesha/${server}/nfs/ganesha/${dirname} +        ln -s ${mnt}/nfs-ganesha/${dirname}/nfs/statd ${mnt}/nfs-ganesha/${server}/nfs/statd/${dirname} +    done + +} + + +delnode_state_volume() +{ +    local delnode=${1}; shift +    local mnt=${HA_VOL_MNT} +    local longname="" +    local dname="" +    local dirname="" + +    longname=$(hostname) +    dname=${longname#$(hostname -s)} + +    if [[ ${delnode} == *${dname} ]]; then +        dirname=${delnode} +    else +        dirname=${delnode}${dname} +    fi + +    rm -rf ${mnt}/nfs-ganesha/${dirname} + +    for server in ${HA_SERVERS} ; do +        if [[ "${server}" != "${dirname}" ]]; then +            rm -f ${mnt}/nfs-ganesha/${server}/nfs/ganesha/${dirname} +            rm -f ${mnt}/nfs-ganesha/${server}/nfs/statd/${dirname} +        fi +    done +} + +  status()  {      local scratch=$(mktemp) @@ -962,6 +1049,9 @@ main()          sed -i s/HA_CLUSTER_NODES.*/"HA_CLUSTER_NODES=\"$NEW_NODES\""/ \  $HA_CONFDIR/ganesha-ha.conf + +        addnode_state_volume ${node} +          HA_SERVERS="${HA_SERVERS} ${node}"          setup_copy_config ${HA_SERVERS} @@ -985,7 +1075,7 @@ $HA_CONFDIR/ganesha-ha.conf          setup_copy_config ${HA_SERVERS} -        rm -rf ${HA_VOL_MNT}/nfs-ganesha/${node} +        delnode_state_volume ${node}          determine_service_manager  | 
