Home About BC DR HA Support Training Download
You are here: Home/ Downloads/ Scripts/ Korn/ Functions/ Please Login or Register

-
Current Location
-

js
  Downloads
    Scripts
      Korn
        Functions
-
AIX Admin Methodology
Global Consolidation Project
All AIX admins should join
www.aixexpert.com


Join our LinkedIn Group
AIX Advanced Technical Experts
Contract Opportunities

www.LinkedIn.com

-
digg Digg this page
del.icio.us Post to del.icio.us
Slashdot Slashdot it!


LPAR Leasing
Lease an AIX / i5 LPAR
Reduce your costs

www.mtxia.com

Server Leasing
Lease a Server off-site
Reduce your costs

www.mtxia.com

Data Center Automation
Business Continuity and DR
Virtualization/Consolidation

www.mtxia.com

HMC Service
Hardware Management Console
Manage Remote AIX / i5 LPARs

www.siteox.com

Business Web Site Hosting
$3.99 / month includes Tools,
Shopping Cart, Site Builder

www.siteox.com

Disaster Recovery
Small Business Oriented
Off-Site Facilities

www.mtxia.com

IBM pSeries / iSeries
Reduce your Costs
Off-Site Server Hosting

www.mtxia.com

vscsiPriority


Assign Path Priorities to Virtualized Disks


#!/usr/bin/ksh93
################################################################
function usagemsg_vscsiPriority {
  print "
Program: vscsiPriority

Description: Script to assign priorty to vscsi paths
based on even/odd numbers associated with each disk
and each path to disk.

This script is useful in a Virtualized environment
utilizing VIO servers with MPIO on the client LPAR's.
This script provides the system admin with the ability
to manually load balance SAN traffic from client LPAR's
between dual VIO servers.

Usage: ${1##*/} [-?vV] [-s] [-r] [-o] [-i #]
  Where:

    -v = Verbose mode
    -V = Very Verbose Mode
    -s = Show commands being run
    -r = Reverse the priority values
  -i # = Health check interval value (integer)
    -o = ODM change only for health check interval

Author: Dana French (dfrench@mtxia.com) Copyright 2005
\"AutoContent\" enabled
"
}
################################################################
function vscsiPriority {
  typeset TRUE="0"
  typeset FALSE="1"
  typeset VERBOSE="${FALSE}"
  typeset VERYVERB="${FALSE}"
  typeset SHOWCMD="${FALSE}"
  typeset REVERSE="${FALSE}"
  typeset ODM=""
  typeset HCHECK="20"
  typeset -r EVEN="02468acegikmoqsuwy"
  typeset -r ODD="13579bdfhjlnprtvxz"

 
  while getopts ":vVrsoi#" OPTION
  do
    case "${OPTION}" in
        'v')   VERBOSE="${TRUE}"
               SHOWCMD="${TRUE}";;
        'V')   VERYVERB="${TRUE}";;
        's')   SHOWCMD="${TRUE}";;
        'r')   REVERSE="${TRUE}";;
        'o')   ODM="-P";;
        'i')   HCHECK="${OPTARG}";;
        '?')   usagemsg_vscsiPriority "${0}" && exit 1;;
        ':')   usagemsg_vscsiPriority "${0}" && exit 1;;
    esac
  done
 
  shift $(( ${OPTIND} - 1 ))

################################################################
  trap "usagemsg_vscsiPriority ${0}" EXIT

  trap "-" EXIT

  (( VERYVERB == TRUE )) && set -x

################################################################

# Extract the short hostname value and remove any suffixes following a
# dash or underscore.

typeset -l HNAME=$( hostname )
HNAME="${HNAME%%.*}"
HNAME="${HNAME%%[_-]*}"

# Define the numeric priority values of ONE and TWO.  Allow user to
# reverse these values by using the "-r"  command line option.

ONE="1"    TWO="2"
(( REVERSE == TRUE )) && ONE="2"    TWO="1"

# Define the priority levels for highest and lowest priority based on
# whether the last digit of the hostname is  an even or odd number.  

P1="${ONE}"    P2="${TWO}"
[[ "_${HNAME}" == _*[${ODD}] ]] && P1="${TWO}"  P2="${ONE}"

# Loop through each disk, setting the health check interval and priority
# value.

for DISK in $( lsdev -Cc disk -F name )
do

  (( SHOWCMD == TRUE )) && print -n "chdev -l ${DISK} -a hcheck_interval=${HCHECK} ${ODM} # "
  /usr/sbin/chdev -l ${DISK} -a hcheck_interval=${HCHECK} ${ODM}
  (( VERBOSE == TRUE )) &&
      print -n "# " &&
      /usr/sbin/lsattr -El ${DISK} -a hcheck_interval

  case ${DISK} in

# Even Numbered disks

      *[${EVEN}] ) /usr/sbin/lspath -l ${DISK} |
        while read -r -- JUNK1 JUNK2 PATH
        do

          case ${PATH} in

#     Even numbered paths get highest priority for even numbered disks

            *[${EVEN}] ) (( SHOWCMD == TRUE )) && print -n -- "chpath -l ${DISK} -p ${PATH} -a priority=${P1} # "
               /usr/sbin/chpath -l ${DISK} -p ${PATH} -a priority=${P1}
               (( VERBOSE == TRUE )) &&
                   print -n "# " &&
                   /usr/sbin/lspath -AEl ${DISK} -p ${PATH}
               ;;

#     Odd numbered paths get lower priority for even numbered disks

            *[${ODD}] ) (( SHOWCMD == TRUE )) && print -n -- "chpath -l ${DISK} -p ${PATH} -a priority=${P2} # "
               /usr/sbin/chpath -l ${DISK} -p ${PATH} -a priority=${P2}
               (( VERBOSE == TRUE )) &&
                   print -n "# " &&
                   /usr/sbin/lspath -AEl ${DISK} -p ${PATH}
               ;;
          esac
        done
        ;; 

# Odd Numbered disks

      *[${ODD}] ) /usr/sbin/lspath -l ${DISK} |
        while read -r -- JUNK1 JUNK2 PATH
        do
          case ${PATH} in

#     Even numbered paths get lower priority for odd numbered disks

            *[${EVEN}] ) (( SHOWCMD == TRUE )) && print -n -- "chpath -l ${DISK} -p ${PATH} -a priority=${P2} # "
               /usr/sbin/chpath -l ${DISK} -p ${PATH} -a priority=${P2}
               (( VERBOSE == TRUE )) &&
                   print -n "# " &&
                   /usr/sbin/lspath -AEl ${DISK} -p ${PATH}
               ;;

#     Odd numbered paths get highest priority for odd numbered disks

            *[${ODD}] ) (( SHOWCMD == TRUE )) && print -n -- "chpath -l ${DISK} -p ${PATH} -a priority=${P1} # "
               /usr/sbin/chpath -l ${DISK} -p ${PATH} -a priority=${P1}
               (( VERBOSE == TRUE )) &&
                   print -n "# " &&
                   /usr/sbin/lspath -AEl ${DISK} -p ${PATH}
               ;;
          esac
        done
        ;; 
  esac
done

}
################################################################

vscsiPriority "${@}"

-
Prioritize SAN Path
-
 


LPAR Leasing
Lease an AIX / i5 LPAR
Reduce your costs

www.mtxia.com

Server Leasing
Lease a Server off-site
Reduce your costs

www.mtxia.com

Data Center Automation
Business Continuity and DR
Virtualization/Consolidation

www.mtxia.com

HMC Service
Hardware Management Console
Manage Remote AIX / i5 LPARs

www.siteox.com

Business Web Site Hosting
$3.99 / month includes Tools,
Shopping Cart, Site Builder

www.siteox.com

FREE Domain Registration
included with Web Site Hosting
Tools, Social Networking, Blog

www.siteox.com

Disaster Recovery
Small Business Oriented
Off-Site Facilities

www.mtxia.com

IBM pSeries / iSeries
Reduce your Costs
Off-Site Server Hosting

www.mtxia.com