Whamcloud - gitweb
b=1719
[fs/lustre-release.git] / lustre / tests / uml.sh
1 #!/bin/bash
2
3 export PATH=`dirname $0`/../utils:$PATH
4
5 config=${1:-uml.xml}
6 LMC=${LMC:-lmc}
7 TMP=${TMP:-/tmp}
8
9 MDSDEV=${MDSDEV:-$TMP/mds1-`hostname`}
10 MDSSIZE=${MDSSIZE:-100000}
11
12 OSTDEVBASE=$TMP/ost
13 #OSTDEV1=${OSTDEV1:-${OSTDEVBASE}1}
14 #OSTDEV2=${OSTDEV2:-${OSTDEVBASE}2}
15 #etc
16 OSTSIZE=${OSTSIZE:-100000}
17 STRIPECNT=${STRIPECNT:-1}
18 OSDTYPE=${OSDTYPE:-obdfilter}
19 OSTFAILOVER=${OSTFAILOVER:-}
20
21 FSTYPE=${FSTYPE:-ext3}
22
23 NETTYPE=${NETTYPE:-tcp}
24 NIDTYPE=${NIDTYPE:-$NETTYPE}
25
26 # NOTE - You can't have different MDS/OST nodes and also have clients on the
27 #        MDS/OST nodes without using --endlevel and --startlevel during lconf.
28 #        You can put both MDS/OST on one node and client can be there too.
29 #        CLIENTS is a space-separated list of client nodes.
30 #
31 #        The rule is that both the MDS and the OST must be set up before any
32 #        of the clients can be started, so plan accordingly.
33
34 # Three separate systems
35 MDSNODE=${MDSNODE:-uml1}
36 OSTNODES=${OSTNODES:-"uml2 uml2"}
37 CLIENTS=${CLIENTS:-"uml3"}
38
39 # Single system with additional clients
40 #MDSNODE=uml1
41 #OSTNODES="uml1 uml1"
42 #CLIENTS="$MDSNODE client"
43
44 # Two systems with client on MDS, and additional clients (set up OST first)
45 #MDSNODE=uml1
46 #OSTNODES="uml2 uml2"
47 #CLIENTS="$MDSNODE client"
48
49 # Two systems with client on OST, and additional clients (set up MDS first)
50 #MDSNODE=uml1
51 #OSTNODES="uml2 uml2"
52 #CLIENTS="$OSTNODES client"
53
54 rm -f $config
55
56 h2localhost () {
57         echo localhost
58 }
59         
60 h2tcp () {
61         case $1 in
62         client) echo '\*' ;;
63         *) echo $1 ;;
64         esac
65 }
66
67 h2elan () {
68         case $1 in
69         client) echo '\*' ;;
70         *) echo $1 | sed "s/[^0-9]*//" ;;
71         esac
72 }
73
74 h2gm () {
75         echo `gmnalnid -n$1`
76 }
77
78 # create nodes
79 echo -n "adding NET for:"
80 for NODE in `echo $MDSNODE $OSTNODES $CLIENTS | tr -s " " "\n" | sort -u`; do
81         echo -n " $NODE"
82         ${LMC} -m $config --add net --node $NODE --nid `h2$NIDTYPE $NODE` --nettype $NETTYPE || exit 1
83 done
84
85 # configure mds server
86 echo; echo "adding MDS on: $MDSNODE"
87 ${LMC} -m $config --add mds --format --node $MDSNODE --mds mds1 --fstype $FSTYPE --dev $MDSDEV --size $MDSSIZE ||exit 10
88
89 # configure ost
90 ${LMC} -m $config --add lov --lov lov1 --mds mds1 --stripe_sz 65536 --stripe_cnt $STRIPECNT --stripe_pattern 0 || exit 20
91 COUNT=1
92 echo -n "adding OST on:"
93 for NODE in $OSTNODES; do
94         eval OSTDEV=\$OSTDEV$COUNT
95         echo -n " $NODE"
96         OSTDEV=${OSTDEV:-$OSTDEVBASE$COUNT-`hostname`}
97         case "$OSDTYPE" in
98                 obdfilter)
99                         OSTARGS="--fstype $FSTYPE --dev $OSTDEV --size $OSTSIZE"
100                         ;;
101                 obdecho)
102                         OSTARGS="--osdtype=obdecho"
103                         ;;
104         esac
105         ${LMC} -m $config --add ost --node $NODE --lov lov1 $OSTARGS $OSTFAILOVER || exit 21
106         COUNT=`expr $COUNT + 1`
107 done
108
109 # create client config(s)
110 echo; echo -n "adding CLIENT on:"
111 for NODE in $CLIENTS; do
112         echo -n " $NODE"
113         ${LMC} -m $config --add mtpt --node $NODE --path /mnt/lustre --mds mds1 --lov lov1 || exit 30
114 done
115 echo