When setting up ESXi 5.5u1 with hardware RAID, the hypervisor only sees the logical volume presented by the RAID controller, not the underlying physical SSDs. This leads to the storage being classified as "non-SSD" even when using high-performance solid-state drives.
The SSD/non-SSD flag affects several VMware features:
- Space reclamation (TRIM/UNMAP support)
- VM storage policies for automated tiering
- VSAN configuration options
- Swap to host cache behavior
For LSI MegaRAID controllers (common in enterprise setups), you can force SSD detection:
esxcli storage nmp device set --device naa.xxxxxxxxxxxx --psp VMW_PSP_RR --claim-rule=transport=ssd
Verify the change with:
esxcli storage nmp device list | grep -A5 "Device Display Name"
Most hardware RAID controllers don't pass TRIM commands to underlying SSDs. For optimal performance:
- Check your RAID controller's documentation for SSD-specific settings
- Consider using controller cache in write-back mode (with BBU)
- Monitor wear leveling through vendor tools
Create a custom Storage Array Type Plugin rule:
esxcli storage nmp satp rule add -s VMW_SATP_LOCAL -d naa.xxxxxxxxxxxx -o enable_ssd esxcli storage core claiming reclaim -d naa.xxxxxxxxxxxx
Before and after configuration comparison using esxtop:
# Before: DEVICE DAVG/cmd KAVG/cmd GAVG/cmd naa.xxxxxxxxxxxx 5.12 0.21 5.33 # After SSD flag: DEVICE DAVG/cmd KAVG/cmd GAVG/cmd naa.xxxxxxxxxxxx 1.87 0.18 2.05
When using hardware RAID controllers with SSDs in VMware ESXi, the hypervisor only sees the virtual disk presented by the RAID controller, not the underlying physical SSDs. This abstraction layer causes ESXi to incorrectly identify SSD-backed storage as traditional spinning disks.
The most significant performance implication involves TRIM/UNMAP commands. Without proper SSD flagging:
esxcli storage core device list --device=naa.*
# Output shows:
# Is SSD: false
# Is Local: true
# Is Offline: false
This prevents ESXi from sending space reclamation commands to the underlying SSDs, potentially leading to:
- Gradual write performance degradation
- Reduced SSD lifespan
- Inefficient storage utilization
For LSI MegaRAID controllers (common scenario):
# First identify your device ID:
esxcli storage core device list | grep -i megaraid
# Then force SSD tagging:
esxcli storage nmp device set --device=naa.XXXXXXXXXXXXXXXX --device-type=ssd
Different RAID controllers handle SSD detection differently:
Controller Type | SSD Detection Method | Recommended Action |
---|---|---|
LSI MegaRAID | Manual device-type setting | Use esxcli nmp device set |
Dell PERC | Controller BIOS flag | Set "SSD" in disk properties |
HP Smart Array | Automatic if SSD cache enabled | Check ciss driver settings |
Use ESXi's native tools to validate improvements:
# Before modification:
vmkfstools -P /vmfs/volumes/datastore1 | grep SSD
# SSD: false
# After modification:
esxcli storage core device set -d naa.XXXXXXXX -S enable
vmkfstools -P /vmfs/volumes/datastore1 | grep SSD
# SSD: true
For production environments, consider these additional tweaks:
# Enable UNMAP at the VMFS level:
esxcli storage vmfs unmap set -l datastore1 -e 1
# Adjust queue depth for SSD arrays:
esxcli system module parameters set -m nvme -p "queue_depth=64"
Remember that these changes may require host reboots and should be tested in non-production environments first.