vSphere 8.0.x
Starting with vSphere 8.0, the per-disk IOPS limit configuration was removed from the vSphere Client GUI. Enforcement was moved to the mClock scheduler, which manages IOPS, Reservations, and Shares at the protocol stack layer. Legacy IOPS limits set in previous vSphere versions (6.x/7.x) remain in the VM metadata and are enforced by mClock, but they cannot be viewed or modified via the vSphere 8.x UI.
Use VM Storage Policy.
Create a VM Storage Policy for Host-Based Data Services
If you enable host-based rules in “2. Policy structure”, you can configure IOPS limits and IOPS shares in the Storage I/O Control tab in “3. Host-based services”.
In addition to custom configuration, you can also specify the storage policy component here.
------------------------------------------
To verify and remove these legacy limits, use PowerCLI or the ESXi command line.
1. Verify existing limits via PowerCLI: Run the following command to identify disks with active IOPS limits:
Get-VM "VM_NAME" | Get-HardDisk | Select Parent, Name, @{N="IOPSLimit";E={$_.ExtensionData.StorageIOAllocation.Limit}}
2. Remove legacy limits (Set to Unlimited): To clear these limits and allow mClock to operate without legacy throttling, set the limit value to -1
$vm = Get-VM "VM_NAME"$disks = $vm | Get-HardDiskforeach ($disk in $disks) { $spec = New-Object VMware.Vim.VirtualMachineConfigSpec $dev = New-Object VMware.Vim.VirtualDeviceConfigSpec $dev.Operation = "edit" $dev.Device = $disk.ExtensionData $dev.Device.StorageIOAllocation.Limit = -1 $spec.DeviceChange += $dev $vm.ExtensionData.ReconfigVM($spec)}
3. Manage future limits via Storage Policies: In vSphere 8.x, all IOPS limits should be managed via VM Storage Policies: