Hi,
I have an Esx Serer with 2 Hba -- > vmhba2 and vmhba3
when i use esxtop with d option i see all disk traffic pass through the vmhba2.
So i tryed configured one lun to preferred path vmhba3:0:x and also i have disabled all path for vmhba2:0:x.
So i had stared a file copy to the lun i fixed to vmhba3 but in esxtop with d switch i always see disc traffic through vmhba2 !
If i use esxcfg-mpat -q on the Lun i fixed the path i see that other paths on vmhba2 are disabled but i don't understant why disk traffic doesn't pass through the other hba.
thanks
I'm seeing the same...still looking into it...not sure yet if it's a problem with setting the active path or with reporting usage figures...if you work this out I'd appreciate an update
Not sure if it's the same in ESX3, but historically, ESX would always report statistics down the first path scanned by the vmkernel, regardless of the active path.
thanks grasshopper....so how would you verify the path being used?
sorry bud... I'm saving up for a supported controller, so I can't answer any 3.x questions yet
You can use this script if you have more then one HBA to check the path and load balance
PREVIOUS="vmhba0"
echo "Starting HBA Balance....."
case "$1" in
-c)
Show current config
echo >> /root/PostInstall/PostInstall.log
echo "****** CURRENT HBA/LUN CONFIG ******"
echo
for LUN in $(esxcfg-vmhbadevs | tail +2 | awk '\{print $1}')
do
esxcfg-mpath -q --lun=$\{LUN} | grep FC
echo
done
;;
-p)
Show new config
echo
echo "****** PREVIEW NEW BALANCED HBA/LUN CONFIG ******"
echo
for LUN in $(esxcfg-vmhbadevs | tail +2 | awk '\{print $1}')
do
CURRENT=$(esxcfg-mpath -q --lun=$\{LUN} | grep FC | grep "preferred" | awk '\{print $4}' | awk -F ":" '\{print $1}')
if [\[ $\{CURRENT} = $\{PREVIOUS} ]]
then
NEW=$(esxcfg-mpath -q --lun=$\{LUN} | grep FC | grep -v "preferred" | awk '\{print $4}' | awk -F ":" '\{print $1}')
if [\[ $\{NEW} = vmhba1 ]]
then
echo $(esxcfg-mpath -q --lun=$\{LUN} | grep FC | grep $\{NEW} | awk '\{print " " $1, $2, $3, $4, $5}') "active preferred"
echo $(esxcfg-mpath -q --lun=$\{LUN} | grep FC | grep -v $\{NEW} | awk '\{print " " $1, $2, $3, $4, $5}')
else
echo $(esxcfg-mpath -q --lun=$\{LUN} | grep FC | grep -v $\{NEW} | awk '\{print " " $1, $2, $3, $4, $5}')
echo $(esxcfg-mpath -q --lun=$\{LUN} | grep FC | grep $\{NEW} | awk '\{print " " $1, $2, $3, $4, $5}') "active preferred"
fi
PREVIOUS=$\{NEW}
echo
else
if [\[ $\{CURRENT} = vmhba1 ]]
then
echo $(esxcfg-mpath -q --lun=$\{LUN} | grep FC | grep $\{CURRENT})
echo $(esxcfg-mpath -q --lun=$\{LUN} | grep FC | grep -v $\{CURRENT})
else
echo $(esxcfg-mpath -q --lun=$\{LUN} | grep FC | grep -v $\{CURRENT})
echo $(esxcfg-mpath -q --lun=$\{LUN} | grep FC | grep $\{CURRENT})
fi
PREVIOUS=$\{CURRENT}
echo
fi
done
;;
-e)
Execute new config
for LUN in $(esxcfg-vmhbadevs | tail +2 | awk '\{print $1}')
do
CURRENT=$(esxcfg-mpath -q --lun=$\{LUN} | grep FC | grep "preferred" | awk '\{print $4}' | awk -F ":" '\{print $1}')
if [\[ $\{CURRENT} = $\{PREVIOUS} ]]
then
NEW=$(esxcfg-mpath -q --lun=$\{LUN} | grep FC | grep -v "preferred" | awk '\{print $4}' | awk -F ":" '\{print $1}')
NEWPATH=$(esxcfg-mpath -q --lun=$\{LUN} | grep FC | grep -v "preferred" | awk '\{print $4}')
esxcfg-mpath --lun=$\{LUN} --path=$\{NEWPATH} --preferred
PREVIOUS=$\{NEW}
else
PREVIOUS=$\{CURRENT}
fi
done
echo
echo "****** NEW HBA CONFIG *****"
echo
for LUN in $(esxcfg-vmhbadevs | tail +2 | awk '\{print $1}')
do
esxcfg-mpath -q --lun=$\{LUN} | grep FC
echo
done
echo
echo "****** \"active\" flag will be moved after disk activity *****"
echo
;;
*)
echo $"Usage: balancelun \{-c (current config)| -p (preview new config) -e (implement new config)}"
exit 1
esac
nice script, it will be useful thanks....however I'd really like to verify the path being used by seeing some stats about traffic on it...any ideas how this might be achieved?
I am not sure how to 100% determine the active path in the SC, I have always just set my paths and assumed that VMware did what it said it was going to do.
However, it should be relatively simple to determine; just look at the FC switch port stats, or the SAN IOps stats, you should be able to see where the traffic is flowing (and if it is heading out the HBA you requested).
I can offer assistance using NetApp SAN and Brocade switches (on how to get these stats out of the devices). Other then that, I defer to the other SAN experts out there in the respective technologies.
In case anyone is interested....
I have confirmed that "esxcfg-mpath -l" displays the actual path being used by loading up VMs, disconnecting each vmhba in turn and observing what happens.
So this is definitely a stats reporting issue (esxtop and the client UI) rather than incorrect pathing.
thanks everyone
Haven't done much with ESX scripting. What is the process for getting this to work? Thanks.