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