diff options
| author | Martin Schwenke <martin@meltin.net> | 2009-05-29 16:53:13 +1000 |
|---|---|---|
| committer | Martin Schwenke <martin@meltin.net> | 2009-05-29 16:53:13 +1000 |
| commit | d39e4a7c395d057cc7b4ad4a4b23937a7b2363bb (patch) | |
| tree | a9c5623f80a58d66e3b0978506a6a52ca7e49f92 /base/root/scripts | |
| parent | 35a03c051f221805dd3b050cffaea9a61178de1b (diff) | |
Make setup_gpfs.sh and mknsd.sh aware of NSD servers.
Both scripts now use nsd_server_common.bash to re-exec on the first
node defined in $NSD_SERVERS if that variable is set (to the list of
sofs_storage nodes by 50sofs.defconf). They also also include the NSD
servers in the file that is passed to mmcrnsd and mmcrfs.
setup_gpfs.sh includes any NSD servers in the list of nodes for the
GPFS cluster, using them as the primary and secondary GPFS servers.
setup_gpfs.sh just sources mknsd.sh to avoid duplication of logic.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'base/root/scripts')
| -rwxr-xr-x | base/root/scripts/mknsd.sh | 16 | ||||
| -rw-r--r-- | base/root/scripts/nsd_server_common.bash | 18 | ||||
| -rwxr-xr-x | base/root/scripts/setup_gpfs.sh | 41 |
3 files changed, 51 insertions, 24 deletions
diff --git a/base/root/scripts/mknsd.sh b/base/root/scripts/mknsd.sh index 304225e..f2cfb11 100755 --- a/base/root/scripts/mknsd.sh +++ b/base/root/scripts/mknsd.sh @@ -1,12 +1,18 @@ -#!/bin/sh +#!/bin/bash set -e -disks=`/var/mmfs/etc/nsddevices | awk '{print $1}'` +# $nsd_servers is setup in here +. $(dirname $0)/nsd_server_common.bash + +echo +echo "Setting up NSDs" +nsdfile=/tmp/nsd.$$ +disks=$(/var/mmfs/etc/nsddevices | awk '{print $1}') ( for d in $disks; do - echo $d:::::: + echo $d:${nsd_servers}::::: done -) > /tmp/nsdfile.$$ -mmcrnsd -F /tmp/nsdfile.$$ +) > $nsdfile +mmcrnsd -F $nsdfile mmlsnsd -m diff --git a/base/root/scripts/nsd_server_common.bash b/base/root/scripts/nsd_server_common.bash new file mode 100644 index 0000000..d665c59 --- /dev/null +++ b/base/root/scripts/nsd_server_common.bash @@ -0,0 +1,18 @@ +# If there are sofs_storage nodes in the cluster (meaning that other +# sofs_* nodes will not have direct-attached storage) then scripts +# that include this snippet must be run on one of the storage nodes. +# Therefore, in the case, this snippet tries to determine if it is +# running on the 1st NSD server and, if not, attempts to run the +# script there. + +nsd_servers="@@NSD_SERVERS@@" + +if [ -n "$nsd_servers" -a \ + "${HOSTNAME%%.*}" != "${nsd_servers%%[.,]*}" ] ; then + if [ "${0#/}" != "$0" ] ; then + script="$0" + else + script="${PWD}/${0}" + fi + exec ssh "${nsd_servers%%[.,]*}" "$script" "$@" +fi diff --git a/base/root/scripts/setup_gpfs.sh b/base/root/scripts/setup_gpfs.sh index 8ddae32..6067794 100755 --- a/base/root/scripts/setup_gpfs.sh +++ b/base/root/scripts/setup_gpfs.sh @@ -1,12 +1,25 @@ -#!/bin/sh -# this sets up GPFS without using the GUI. It is meant as a quick way to get setup -# with an autocluster system +#!/bin/bash + +# Automatically setup GPFS. This is a quick way to get setup with an +# autocluster system. It finds NSDs, does various pieces of GPFS +# configuration, creates a filesystem and mounts it. set -e -domain=`dnsdomainname` -nodes=`onnode all hostname | grep -i $domain | tr A-Z a-z` -node1=`onnode 0 hostname | grep -i $domain | tr A-Z a-z` -node2=`onnode 1 hostname | grep -i $domain | tr A-Z a-z` + +# $nsd_servers is setup in here +. $(dirname $0)/nsd_server_common.bash + +domain=$(dnsdomainname) +nodes=$(onnode all hostname | grep -i $domain | tr A-Z a-z) +if [ -n "$nsd_servers" ] ; then + nodes="${nodes} ${nsd_servers//,/ }" + node1="${nsd_servers%%,*}" + node2="${nsd_servers#*,}" + node2="${node2%%,*}" +else + node1=$(onnode 0 hostname | grep -i $domain | tr A-Z a-z) + node2=$(onnode 1 hostname | grep -i $domain | tr A-Z a-z) +fi nodefile=/tmp/nodes.$$ for n in $nodes; do @@ -14,19 +27,9 @@ for n in $nodes; do done echo "Creating cluster" -mmcrcluster -N $nodefile -p $node1 -s $node2 -r /usr/bin/ssh -R /usr/bin/scp -C @@CLUSTER@@.$domain +mmcrcluster -N $nodefile -p $node1 -s $node2 -r /usr/bin/ssh -R /usr/bin/scp -C m1.$domain -echo -echo "Setting up NSDs" -nsdfile=/tmp/nsd.$$ -disks=`/var/mmfs/etc/nsddevices | awk '{print $1}'` -( -for d in $disks; do - echo $d:::::: -done -) > $nsdfile -mmcrnsd -F $nsdfile -mmlsnsd -m +. $(dirname $0)/mknsd.sh echo echo "Generating auth key" |
