From 58d6eb7c235b381f355f9bdad643d1eb96573d65 Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 25 Nov 2003 07:12:15 +0000 Subject: [PATCH] b=1941 Improvements from jerrifer's patch, with some changes. - use lmc --batch for performance goodness - remove 'read_conf' as it is confusing and redundant - misc cleanups, improvements --- lustre/utils/lwizard | 489 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 294 insertions(+), 195 deletions(-) diff --git a/lustre/utils/lwizard b/lustre/utils/lwizard index 89ceb20..4938f95 100755 --- a/lustre/utils/lwizard +++ b/lustre/utils/lwizard @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/sh # Copyright (C) 2003 Cluster File Systems, Inc. # Create a Lustre configuration file # @@ -10,126 +10,186 @@ # fatal error to exit fatal() { - if [ "$#" -gt "1" ]; then - echo - echo "$2" - exit 1 - fi + if [ "$#" -gt "1" ]; then + echo + echo "$2" + exit 1 + fi - exit 1 + exit 1 } #print usage and exit usage() { - cat <> "$LMC_BATCH_FILE" } # following user input to create xml config file create_config() { - local config_file=$1 - - for device in $DEVICE_LIST ; do - get_name_in_list $device - echo -n " $DEVICE_NAME" - case $DEVICE_NAME in - mds*) - add_node "$HOST_NAME" "$config_file" || return 1 - $LMC -m "$config_file" --add mds --node "$HOST_NAME" \ - --mds "$DEVICE_NAME" \ - --nid "$HOST_NAME" --fstype "$DEFAULT_FSTYPE" \ - --dev "$DEVICE" || return 1 - ;; - lov*) - $LMC -m "$config_file" --add lov \ - --lov "$DEVICE_NAME" \ - --mds "$DEVICE_MDS" \ - --stripe_sz "$STRIPE_SIZE" \ - --stripe_cnt "$STRIPE_CNT" \ - --stripe_pattern "$STRIPE_PATTERN" || return 1 - ;; - ost*) - add_node "$HOST_NAME" "$config_file" || return 1 - $LMC -m "$config_file" --add ost --node "$HOST_NAME" \ - --ost "$DEVICE_NAME" \ - --lov "$DEVICE_LOV" --fstype "$DEFAULT_FSTYPE" \ - --dev "$DEVICE" || return 1 - ;; - client*) - add_node "$DEVICE_NAME" "$config_file" || return 1 - $LMC -m "$config_file" --add mtpt \ - --node "$DEVICE_NAME" \ - --mds "$DEVICE_MDS" \ - --lov "$DEVICE_LOV" --path "$DEVICE" || return 1 - ;; - esac - done - echo - return 0 + for device in $DEVICE_LIST ; do + get_name_in_list $device + echo -n " $DEVICE_NAME" + case $DEVICE_NAME in + mds*) + add_node "$HOST_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" + ;; + 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 +# parse options get_option "$@" -#some default definitions +# some default definitions LMC=${LMC:-"/usr/sbin/lmc"} -CONFIG_FILE=${CONFIG_FILE:-"config.xml"} -TMP_CONFIG_FILE=${TMP_CONFIG_FILE:-".config.xml.tmp"} + +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:-65536} + +STRIPE_SIZE=${STRIPE_SIZE:-$((1 * 1024 * 1024))} STRIPE_CNT=${STRIPE_CNT:-1} STRIPE_PATTERN=${STRIPE_PATTERN:-0} -ANSWER="yes no" - -#print program information -cat <