vSAN ESA Disk Health Shows Unknown
search cancel

vSAN ESA Disk Health Shows Unknown

book

Article ID: 400672

calendar_today

Updated On:

Products

VMware vSAN

Issue/Introduction

Symptoms:

  • vSAN Skyline Health reports Operational Health error for physical disks.

  • Navigate to vSAN cluster > Configure > Disk management. The disk status appears as "Unknown".

Environment

VMware vSAN 6.x
VMware vSAN 7.x
VMware vSAN 8.x

Cause

The advanced system setting "VMkernel.Boot.isPerFileSchedModelActive" is configured to false, vSAN ESA requires this parameter to be set to true for proper operation.

If per file I/O scheduling model is turned off, the host reverts to a legacy scheduling mechanism. The legacy scheduling maintains only one I/O queue for each virtual machine and storage device pair. All I/Os between the virtual machine and its virtual disks are moved into this queue. As a result, I/Os from different virtual disks might interfere with each other in sharing the bandwidth and affect each other's performance.

Cause validation:

  • In the var/run/log/vmkernel.log file, similar entries are seen: 
    2025-04-28T14:39:28.588Z Wa(180) vmkwarning: cpu210:2099384)WARNING: WOBTREE: IOLayerCreateSchedQ:1111: Ioctl(CREATE_SCHEDQ) failed for device eui.################################:2: Inappropriate ioctl for device
    2025-04-28T14:39:28.588Z Wa(180) vmkwarning: cpu210:2099384)WARNING: WOBTREE: IODeviceCreateSchedQ:1208: Device SchedQ creation failed for device eui.################################:2: Inappropriate ioctl for device
    2025-04-28T14:39:28.588Z In(182) vmkernel: cpu210:2099384)WOBTREE: IOLayer_RegisterDevice:3431: Failed to create schedQ for device eui.################################:2 : Inappropriate ioctl for device

  • var/run/log/vmkernel.log file also confirms that the parameter isPerFileSchedModelActive was set to false:
    2025-04-23T07:07:47Z In(182) vmkernel: TSC: 143573 cpu0:1)BootConfig: 783: isPerFileSchedModelActive = TRUE (1)
    2025-04-28T14:39:30Z In(182) vmkernel: TSC: 148050 cpu0:1)BootConfig: 783: isPerFileSchedModelActive = FALSE (0)      >>>>>>  This is the time when the specified parameter is set to false.
    2025-04-28T14:12:54Z In(182) vmkernel: TSC: 148657 cpu0:1)BootConfig: 783: isPerFileSchedModelActive = FALSE (0)
    2025-05-13T11:07:54Z In(182) vmkernel: TSC: 148815 cpu0:1)BootConfig: 783: isPerFileSchedModelActive = FALSE (0)
    2025-05-13T10:46:53Z In(182) vmkernel: TSC: 155970 cpu0:1)BootConfig: 783: isPerFileSchedModelActive = FALSE (0)

  • Output from "esxcfg-info -a" file confirms the parameter is set to false but the default value should be true.
    esxcfg-info_-a.txt
             \==+Kernel Bool Option :
                |----Option Name........................................isPerFileSchedModelActive
                |----Configured Value...................................false
                |----Runtime Value......................................false
                |----Default Value......................................true

Resolution

  • Navigate to the affected ESXi host in vCenter.
  • Go to Configure > Advanced System Settings.
  • Locate the parameter "VMkernel.Boot.isPerFileSchedModelActive" and set it to true
    Please refer : Edit Per File I/O Scheduling
  • Reboot the host.
  • Remove and readd the disks.