Enable nested virtualization for VM in Hyper-V

Nested virtualization is available on Windows 10 build 19636 and later. As far as I understand, AMD support will be officially available as part of Windows 11 and Windows Server 2022. Both products are expected in the second half of 2021.

Enable Nested Virtualization

Get the virtual machine intending to enable nested virtualization on using Powershell.

get-vm

Now with the name of the VM, enable nested virtualization.

Set-VMProcessor -VMName 'Windows 11' -ExposeVirtualizationExtensions $True

Confirm Nested Virtualization is Enabled

To confirm nested virtualization is enabled for the VM, or any VM, use the following Powershell command.

(Get-VM 'proxmox ve 7.2' | Get-VMProcessor ).ExposeVirtualizationExtensions

Case of Dead Path on ESXi

I had 8 paths go down to a dead state on an ESXi host.  The paths were MRU via Fiber Channel to a storage array.  One path worked and it was configured as RR path.

I knew this wasn’t a physical issue, it had to be a software/configuration issue on my host because there were:

  • No storage array errors
  • Additional hosts in the cluster had no problems
  • One path still worked from the HBA

Looking at the log (/var/log/vmkernel.log) I searched for one of the LUN identifiers, in my case “:L30” which was one of the dead paths.  This yielded a result showing an error with NMP plugin driver invalid command.
Next step was to figure out and verify what NMP details were and compare against a working host.

esxcli storage nmp device list |grep "Path Selection Policy:" |sort |uniq -c

I saw nothing out of the ordinary.
Apparently the storage did not like the use of RR so I removed the SATP claim rule though, so I removed it:

esxcli storage nmp satp rule remove -V IBM -M "^1746*" -P VMW_PSP_RR -s VMW_SATP_ALUA

Storage paths are happy now.

A general system error occurred: esxi1: CHAP setting not compatible.

During datastore creation in vSphere using the Nimble vCenter plugin, I get the following error:

A general system error occurred: esxi1: CHAP setting not compatible. hba=vmhba33

In vSphere Client I went to my ESXi host then Configuration, Storage Adapters, iSCSI Software Adapter.  Taking a look at vmhba33 Properties then CHAP… I see that there was a CHAP setting in there for an old Drobo system I had connected at one point.

width=556

Changing the option to Do not use CHAP resolved my issue.  I’m not using CHAP on my lab setup.

width=361

Intel Xeon E7540 replaced with X7560

Recently I’ve been dealing with CPU RDY of about 5% across two ESXi hosts. I’ve load balanced the best I could given necessary workloads and was able to get CPU RDY down to about 3-4% which still isn’t great.

I made the decision to grab a few Intel Xeon X7560 processors to replace the existing Intel Xeon E7540 processors to help alleviate some pressure. The main reason was moving from 6 core E7540 to 8 core X7560.

The specs are pretty close, including same Nehalem family for my EVC needs. The clock speed is a bit faster on the X7560 at 2.27GHz vs the E7540 at 2.0GHz.

I swapped out 4 in total; each ESXi host is currently licensed for 2 socket VMware vSphere Enterprise Plus.
Here’s to hoping this gets me under 2% CPU RDY! I’ll attach a graph next week after I’ve had time to let things run and show a (hopeful) improvement.

Performance tuning iSCSI Round Robin policies in ESXi for Nimble storage

Here’s an ESXi console script to loop through each Nimble eui.* adapter and set IOPS=0 and BYTES=0 (per Nimble recommendations).

for x in `esxcli storage nmp device list | awk '/Nimble iSCSI Disk/{print $7}' | sed -e 's/(//' -e 's/)//'`; do
echo $x
esxcli storage nmp psp roundrobin deviceconfig set -d $x -t bytes -B 0;
esxcli storage nmp psp roundrobin deviceconfig set -d $x -t iops -I 0 ;
esxcli storage nmp psp roundrobin deviceconfig get -d $x;
done

Note: If you change the order above and set bytes after iops, then the policy will be based on bytes and not IOPS.
To reset defaults, use the following script on the ESXi host console:

for x in `esxcli storage nmp device list | awk '/Nimble iSCSI Disk/{print $7}' | sed -e 's/(//' -e 's/)//'`; do
echo $x
esxcli storage nmp psp roundrobin deviceconfig set -d $x -t bytes -B 10485760;
esxcli storage nmp psp roundrobin deviceconfig set -d $x -t iops -I 1000 ;
esxcli storage nmp psp roundrobin deviceconfig set -d $x -t default;
esxcli storage nmp psp roundrobin deviceconfig get -d $x;
done

To make sure this survives a reboot, you can set a policy:

esxcli storage nmp satp rule add --psp=VMW_PSP_RR --satp=VMW_SATP_ALUA --vendor=Nimble --psp-option=policy=iops;iops=0

Note that if you previously configured a user-defined SATP rule for Nimble volumes to simply use the Round Robin PSP (per the Nimble VMware best practices guide), you will first need to remove that simpler rule, before you can add the above rule, or else you will get an error message that a duplicate user-defined rule exists. The command to remove the simpler rule is: –Bill

esxcli storage nmp satp rule remove --psp=VMW_PSP_RR --satp=VMW_SATP_ALUA --vendor=Nimble