⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test-framework.sh

📁 lustre 1.6.5 source code
💻 SH
📖 第 1 页 / 共 3 页
字号:
    uname -n >> $MOUNT/recon    if [ ! -z "$CLIENTS" ]; then        $PDSH $CLIENTS "df $MOUNT; uname -n >> $MOUNT/recon" > /dev/null    fi    echo Connected clients:    cat $MOUNT/recon    ls -l $MOUNT/recon > /dev/null    rm $MOUNT/recon}facet_failover() {    facet=$1    echo "Failing $facet on node `facet_active_host $facet`"    shutdown_facet $facet    reboot_facet $facet    client_df &    DFPID=$!    echo "df pid is $DFPID"    change_active $facet    TO=`facet_active_host $facet`    echo "Failover $facet to $TO"    wait_for $facet    mount_facet $facet || error "Restart of $facet failed"}obd_name() {    local facet=$1}replay_barrier() {    local facet=$1    do_facet $facet sync    df $MOUNT    local svc=${facet}_svc    do_facet $facet $LCTL --device %${!svc} readonly    do_facet $facet $LCTL --device %${!svc} notransno    do_facet $facet $LCTL mark "$facet REPLAY BARRIER on ${!svc}"    $LCTL mark "local REPLAY BARRIER on ${!svc}"}replay_barrier_nodf() {    local facet=$1    echo running=${running}    do_facet $facet sync    local svc=${facet}_svc    echo Replay barrier on ${!svc}    do_facet $facet $LCTL --device %${!svc} readonly    do_facet $facet $LCTL --device %${!svc} notransno    do_facet $facet $LCTL mark "$facet REPLAY BARRIER on ${!svc}"    $LCTL mark "local REPLAY BARRIER on ${!svc}"}mds_evict_client() {    UUID=`cat /proc/fs/lustre/mdc/${mds_svc}-mdc-*/uuid`    do_facet mds "echo $UUID > /proc/fs/lustre/mds/${mds_svc}/evict_client"}ost_evict_client() {    UUID=`cat /proc/fs/lustre/osc/${ost1_svc}-osc-*/uuid`    do_facet ost1 "echo $UUID > /proc/fs/lustre/obdfilter/${ost1_svc}/evict_client"}fail() {    facet_failover $* || error "failover: $?"    df $MOUNT || error "post-failover df: $?"}fail_nodf() {    local facet=$1    facet_failover $facet}fail_abort() {    local facet=$1    stop $facet    change_active $facet    mount_facet $facet -o abort_recovery    df $MOUNT || echo "first df failed: $?"    sleep 1    df $MOUNT || error "post-failover df: $?"}do_lmc() {    echo There is no lmc.  This is mountconf, baby.    exit 1}h2gm () {    if [ "$1" = "client" -o "$1" = "'*'" ]; then echo \'*\'; else        ID=`$PDSH $1 $GMNALNID -l | cut -d\  -f2`        echo $ID"@gm"    fi}h2ptl() {   if [ "$1" = "client" -o "$1" = "'*'" ]; then echo \'*\'; else       ID=`xtprocadmin -n $1 2>/dev/null | egrep -v 'NID' | awk '{print $1}'`       if [ -z "$ID" ]; then           echo "Could not get a ptl id for $1..."           exit 1       fi       echo $ID"@ptl"   fi}declare -fx h2ptlh2tcp() {    if [ "$1" = "client" -o "$1" = "'*'" ]; then echo \'*\'; else        echo $1"@tcp"     fi}declare -fx h2tcph2elan() {    if [ "$1" = "client" -o "$1" = "'*'" ]; then echo \'*\'; else        if type __h2elan >/dev/null 2>&1; then            ID=$(__h2elan $1)        else            ID=`echo $1 | sed 's/[^0-9]*//g'`        fi        echo $ID"@elan"    fi}declare -fx h2elanh2openib() {    if [ "$1" = "client" -o "$1" = "'*'" ]; then echo \'*\'; else        ID=`echo $1 | sed 's/[^0-9]*//g'`        echo $ID"@openib"    fi}declare -fx h2openibfacet_host() {    local facet=$1    varname=${facet}_HOST    if [ -z "${!varname}" ]; then        if [ "${facet:0:3}" == "ost" ]; then            eval ${facet}_HOST=${ost_HOST}        fi    fi    echo -n ${!varname}}facet_active() {    local facet=$1    local activevar=${facet}active    if [ -f ./${facet}active ] ; then        source ./${facet}active    fi    active=${!activevar}    if [ -z "$active" ] ; then         echo -n ${facet}    else        echo -n ${active}    fi}facet_active_host() {    local facet=$1    local active=`facet_active $facet`    if [ "$facet" == client ]; then        echo $HOSTNAME    else        echo `facet_host $active`    fi}change_active() {    local facet=$1    failover=${facet}failover     host=`facet_host $failover`    [ -z "$host" ] && return    curactive=`facet_active $facet`    if [ -z "${curactive}" -o "$curactive" == "$failover" ] ; then        eval export ${facet}active=$facet    else        eval export ${facet}active=$failover    fi    # save the active host for this facet    activevar=${facet}active    echo "$activevar=${!activevar}" > ./$activevar}do_node() {    HOST=$1    shift    local myPDSH=$PDSH    if [ "$HOST" = "$HOSTNAME" ]; then        myPDSH="no_dsh"    elif [ -z "$myPDSH" -o "$myPDSH" = "no_dsh" ]; then        echo "cannot run remote command on $HOST with $myPDSH"        return 128    fi    if $VERBOSE; then        echo "CMD: $HOST $@" >&2        $myPDSH $HOST $LCTL mark "$@" > /dev/null 2>&1 || :    fi    if [ "$myPDSH" = "rsh" ]; then# we need this because rsh does not return exit code of an executed command	local command_status="$TMP/cs"	rsh $HOST ":> $command_status"	rsh $HOST "(PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests:/sbin:/usr/sbin;		    cd $RPWD; sh -c \"$@\") || 		    echo command failed >$command_status"	[ -n "$($myPDSH $HOST cat $command_status)" ] && return 1 || true        return 0    fi    $myPDSH $HOST "(PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests:/sbin:/usr/sbin; cd $RPWD; sh -c \"$@\")" | sed "s/^${HOST}: //"    return ${PIPESTATUS[0]}}do_facet() {    facet=$1    shift    HOST=`facet_active_host $facet`    [ -z $HOST ] && echo No host defined for facet ${facet} && exit 1    do_node $HOST "$@"}add() {    local facet=$1    shift    # make sure its not already running    stop ${facet} -f    rm -f ${facet}active    do_facet ${facet} $MKFS $*}ostdevname() {    num=$1    DEVNAME=OSTDEV$num    #if $OSTDEVn isn't defined, default is $OSTDEVBASE + num    eval DEVPTR=${!DEVNAME:=${OSTDEVBASE}${num}}    echo -n $DEVPTR}########## MountConf setupstopall() {    # make sure we are using the primary server, so test-framework will    # be able to clean up properly.    activemds=`facet_active mds`    if [ $activemds != "mds" ]; then        fail mds    fi        # assume client mount is local     grep " $MOUNT " /proc/mounts && zconf_umount $HOSTNAME $MOUNT $*    grep " $MOUNT2 " /proc/mounts && zconf_umount $HOSTNAME $MOUNT2 $*    [ "$CLIENTONLY" ] && return    stop mds -f    for num in `seq $OSTCOUNT`; do        stop ost$num -f    done    return 0}cleanupall() {    stopall $*    unload_modules}formatall() {    [ "$FSTYPE" ] && FSTYPE_OPT="--backfstype $FSTYPE"    stopall    # We need ldiskfs here, may as well load them all    load_modules    [ "$CLIENTONLY" ] && return    echo Formatting mds, osts    if $VERBOSE; then        add mds $MDS_MKFS_OPTS $FSTYPE_OPT --reformat $MDSDEV || exit 10    else        add mds $MDS_MKFS_OPTS $FSTYPE_OPT --reformat $MDSDEV > /dev/null || exit 10    fi    for num in `seq $OSTCOUNT`; do        if $VERBOSE; then            add ost$num $OST_MKFS_OPTS $FSTYPE_OPT --reformat `ostdevname $num` || exit 10        else            add ost$num $OST_MKFS_OPTS $FSTYPE_OPT --reformat `ostdevname $num` > /dev/null || exit 10        fi    done}mount_client() {    grep " $1 " /proc/mounts || zconf_mount $HOSTNAME $*}remount_client(){	zconf_umount `hostname` $1 || error "umount failed"	zconf_mount `hostname` $1 || error "mount failed"}set_obd_timeout() {    local facet=$1    local timeout=$2    do_facet $facet lsmod | grep -q obdclass || \        do_facet $facet "modprobe obdclass"    do_facet $facet "sysctl -w lustre.timeout=$timeout"}setupall() {    load_modules    if [ -z "$CLIENTONLY" ]; then        echo Setup mdt, osts        echo $REFORMAT | grep -q "reformat" \	    || do_facet mds "$TUNEFS --writeconf $MDSDEV"        set_obd_timeout mds $TIMEOUT        start mds $MDSDEV $MDS_MOUNT_OPTS        for num in `seq $OSTCOUNT`; do            DEVNAME=`ostdevname $num`            set_obd_timeout ost$num $TIMEOUT            start ost$num $DEVNAME $OST_MOUNT_OPTS        done    fi    [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE    mount_client $MOUNT    if [ "$MOUNT_2" ]; then        mount_client $MOUNT2    fi    sleep 5}mounted_lustre_filesystems() {	awk '($3 ~ "lustre" && $1 ~ ":") { print $2 }' /proc/mounts}check_and_setup_lustre() {    MOUNTED="`mounted_lustre_filesystems`"    if [ -z "$MOUNTED" ]; then        [ "$REFORMAT" ] && formatall        setupall        MOUNTED="`mounted_lustre_filesystems`"        [ -z "$MOUNTED" ] && error "NAME=$NAME not mounted"        export I_MOUNTED=yes    fi    if [ "$ONLY" == "setup" ]; then        exit 0    fi}cleanup_and_setup_lustre() {    if [ "$ONLY" == "cleanup" -o "`mount | grep $MOUNT`" ]; then        sysctl -w lnet.debug=0 || true        cleanupall        if [ "$ONLY" == "cleanup" ]; then     	    exit 0        fi    fi    check_and_setup_lustre}check_and_cleanup_lustre() {    if [ "`mount | grep $MOUNT`" ]; then        [ -n "$DIR" ] && rm -rf $DIR/[Rdfs][0-9]*    fi    if [ "$I_MOUNTED" = "yes" ]; then        cleanupall -f || error "cleanup failed"    fi    unset I_MOUNTED}####### # General functionscheck_network() {    local NETWORK=0    local WAIT=0    local MAX=$2    while [ $NETWORK -eq 0 ]; do        ping -c 1 -w 3 $1 > /dev/null        if [ $? -eq 0 ]; then            NETWORK=1        else            WAIT=$((WAIT + 5))            echo "waiting for $1, $((MAX - WAIT)) secs left"            sleep 5        fi        if [ $WAIT -gt $MAX ]; then            echo "Network not available"            exit 1        fi    done}check_port() {    while( !($DSH2 $1 "netstat -tna | grep -q $2") ) ; do        sleep 9    done}no_dsh() {    shift    eval $@}comma_list() {    # the sed converts spaces to commas, but leaves the last space    # alone, so the line doesn't end with a comma.    echo "$*" | tr -s " " "\n" | sort -b -u | tr "\n" " " | sed 's/ \([^$]\)/,\1/g'}absolute_path() {    (cd `dirname $1`; echo $PWD/`basename $1`)}################################### Adaptive Timeouts funcsat_is_valid() {    if [ -z "$AT_MAX_PATH" ]; then        AT_MAX_PATH=$(do_facet mds "find /sys/ -name at_max")        [ -z "$AT_MAX_PATH" ] && echo "missing /sys/.../at_max " && return 1    fi    return 0}at_is_enabled() {    at_is_valid || error "invalid call"    # only check mds, we assume at_max is the same on all nodes    local at_max=$(do_facet mds "cat $AT_MAX_PATH")    if [ $at_max -eq 0 ]; then        return 1    else        return 0    fi}at_max_get() {    at_is_valid || error "invalid call"    do_facet $1 "cat $AT_MAX_PATH"}at_max_set() {    local at_max=$1    shift    at_is_valid || error "invalid call"    for facet in $@; do        if [ $facet == "ost" ]; then            for i in `seq $OSTCOUNT`; do                do_facet ost$i "echo $at_max > $AT_MAX_PATH"            done        else            do_facet $facet "echo $at_max > $AT_MAX_PATH"        fi    done}################################### OBD_FAIL funcsdrop_request() {# OBD_FAIL_MDS_ALL_REQUEST_NET    RC=0    do_facet mds sysctl -w lustre.fail_loc=0x123    do_facet client "$1" || RC=$?    do_facet mds sysctl -w lustre.fail_loc=0    return $RC}drop_reply() {# OBD_FAIL_MDS_ALL_REPLY_NET    RC=0    do_facet mds sysctl -w lustre.fail_loc=0x122    do_facet client "$@" || RC=$?    do_facet mds sysctl -w lustre.fail_loc=0    return $RC}drop_reint_reply() {# OBD_FAIL_MDS_REINT_NET_REP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -