#!/bin/sh # Copyright (C) 2003 Cluster File Systems, Inc. # Create a Lustre configuration file # # Usage: lwizard # # Jerrifer # wangdi # fatal error to exit fatal() { if [ "$#" -gt "1" ]; then echo echo "$2" exit 1 fi exit 1 } #print usage and exit usage() { cat <> "$LMC_BATCH_FILE" } # following user input to create xml config file create_config() { for device in $DEVICE_LIST ; do get_name_in_list $device echo -n " $DEVICE_NAME" case $DEVICE_NAME in mds*) add_client_node "$DEVICE_NAME" run_lmc --add mds \ --node "$HOST_NAME" \ --mds "$DEVICE_NAME" \ --fstype "$DEFAULT_FSTYPE" \ --dev "$DEVICE" \ --size "$DEVICE_SIZE" ;; lov*) run_lmc --add lov \ --lov "$DEVICE_NAME" \ --mds "$DEVICE_MDS" \ --stripe_sz "$STRIPE_SIZE" \ --stripe_cnt "$STRIPE_CNT" \ --stripe_pattern "$STRIPE_PATTERN" ;; ost*) add_node "$HOST_NAME" run_lmc --add ost \ --node "$HOST_NAME" \ --lov "$DEVICE_LOV" \ --fstype "$DEFAULT_FSTYPE" \ --dev "$DEVICE" \ --size "$DEVICE_SIZE" ;; client*) add_node "$DEVICE_NAME" run_lmc --add mtpt \ --node "$DEVICE_NAME" \ --mds "$DEVICE_MDS" \ --lov "$DEVICE_LOV" \ --path "$DEVICE" \ --clientoptions "async" ;; esac done echo return 0 } maybe_clean() { [ -f "$1" ] || return 0 if ! (( $FORCE )) ; then echo -n "${0##*/}: overwrite existing $2 \"$1\"? " read answer if ! [ "${answer:0:1}" = "y" -o "${answer:0:1}" = "Y" ] ; then echo "(${0##*/}: (Exiting.)" exit 0 fi fi rm -f "$1" } # parse options get_option "$@" # some default definitions LMC=${LMC:-"/usr/sbin/lmc"} CONFIG_FILE=${CONFIG_FILE:-"lwizard.xml"} # Remove exiting files. maybe_clean "$CONFIG_FILE" "Lustre configuration file" if [ "$LMC_BATCH_FILE" ] ; then maybe_clean "$LMC_BATCH_FILE" "lmc batch file" else LMC_BATCH_FILE=$(mktemp -q "/tmp/${CONFIG_FILE##*/}.XXXXXX") [ $? -eq 0 ] || fatal 1 "Couldn't create temporary batch file." fi DEFAULT_FSTYPE=${DEFAULT_FSTYPE:-"ext3"} DEFAULT_NETTYPE=${DEFAULT_NETTYPE:-"tcp"} DEFAULT_MNTPT=${DEFAULT_MNTPT:-"/mnt/lustre"} STRIPE_SIZE=${STRIPE_SIZE:-$((1 * 1024 * 1024))} STRIPE_CNT=${STRIPE_CNT:-1} STRIPE_PATTERN=${STRIPE_PATTERN:-0} ANSWER="yes no" CURRENT_LOV= MDS_LIST= OST_LIST= CLIENT_LIST= # print program information cat <