ESX Commands - esxcfg-mpath
It has been almost 1 year since I started looking at the esxcfg-* commands. It initially came as a look at the first part of the Enterprise Administration Exam’s Blueprint very first bullet point. In that post I talked about using esxcfg-mpath to identify which luns are fiber, iSCSI, NFS or local.
Today lets look a little bit deeper at the command and how it can be used to help you day to day.
We can always use esxcfg-mpath -l to list all of the luns and their paths. A good thing to check here is that you have the same number of paths to each datastore that comes from the SAN. You may have a zoning issue if a certain lun can only be seen from 1 path rather than all of them. In general each hba will see the lun through each controller in an active active type fiber channel SAN. So hba A should see the lun from Controller A and B. Likewise, hba B should see Controller A and B for a total of 4 paths. If you are using fixed or MRU as the pathing policy only one will be active but esxcfg-mpath -l will show four paths.
Of course if you have more hbas and controllers you will have more paths.
You can follow the examples given by the esxcfg-mpath -h to get help. One useful tool is to create a crude script using esxcfg-mpath –policy with the –lun tag to change the policy from say MRU to Fixed. I am not a perl scripter and I sure someone already has a real shell or perl script to set the policy but I do like to prepare multiple command in notepad then paste them into the cli.
esxcfg-mpath –policy=fixed –lun=vmhba0:0:1 esxcfg-mpath –policy=fixed –lun=vmhba0:0:2 and so on…
Then try to feel really smart by alternating the paths so every fourth lun will use different paths.
esxcfg-mpath –path=vmhba1:0:1 –lun=vmhba0:0:1 –state=on esxcfg-mpath –path=vmhba2:0:1 –lun=vmhba0:0:2 –state=on esxcfg-mpath –preferred –path=vmhba1:0:1 –lun=vmhba0:0:1 esxcfg-mpath –preferred –path=vmhba2:0:1 –lun=vmhba0:0:2
The first two lines set the path for the respective luns to different hbas. The last two lines set the preferred path to that same port on the hba. So when there is failover the path will fail back to your set config when all is well.