ESXI Nexenta 4, round robin, iops=1, no Hardware Accelerated Locking


Nexenta 4 (CE) on ESXI (5/6) sort of fails when you have Hardware Accelerated Locking enabled. You will see a ton of errors in your vmkernel log about this once you activate your ISCSI.

To get it all going again here is a quick snippet.

esxcli system settings advanced set -i 0 -o /VMFS3/HardwareAcceleratedLocking

esxcfg-rescan vmhba32

for i in `esxcfg-scsidevs -c |awk '{print $1}' | grep naa.600`; do esxcli storage nmp device set -d $i --psp VMW_PSP_RR;done

for i in `esxcfg-scsidevs -c |awk '{print $1}' | grep naa.600`; do esxcli storage nmp psp roundrobin deviceconfig set --type=iops --iops=1 --device=$i; done

The first line disables the HW accelerated locking, e.g. back to basics. Then we do a rescan of vmhba32 (SW/ISCSI), then push all disks to VMW_PSP_RR and set the IOPS to 1 for optimal distribution,

C’est ca..

Setting IOPS for HP/EVA devices, the dirty ESXCLI way.


Stumbled upon the “Best practices for HP EVA, vSphere 4 and Round Robin multi-pathing” by Ivo Beerens or the VMware community article “Very slow performance on EVA4400” and wondered how to hack this in to an ESXi box without a service console. (tried Ivo’s solution in the ‘Engineering SSH shell, but for some reason it failed on the grep command’. Of course you can use the horrid windows power(s)hell and fiddle around with that, or for dinosours like me that live in old DOS/Command line worlds, download the VMware ESXCLI package for windoze (or Linux, but then this script wont work)  and copy and paste this script in to a .cmd file

@echo off
esxcli --server <hostname> --username=root --password=*** nmp device list | find "HP Fibre Channel Disk" >dev.lst
for /F "tokens=1,2 delims=()" %%G IN (dev.lst) DO esxcli --server <hostname> --username=root --password=Nipples@Sandpaper nmp roundrobin setconfig --type "iops" --iops=1 --device=%%H
del dev.lst

Remember to replace the obvious username,password and servername values and off you go!.

Of course you can get creative and make a loop around this to go through your servers automatically, but I had only 8 to worry about so I didn’t bother.

Good luck,

— Fault