Cluster Validation Error with Fiber Adapter

Windows Server 2008 and 2008 R2 has a validation test that needs to be run against all nodes confirm that your hardware and settings are compatible with Failover Clustering. For the purpose of this blog, I am not going to go into all the tests and what they do. For more information on Cluster Validation and the tests it runs, you can go here.

We have started seeing an error with the Failover Clustering Validation Report in regards to the “List Fibre Channel Host Bus Adapters” test. The error we have seen will appear similar to this:

The test we are making is a WMI query to MSFC_FCAdapterHBAAttributes for the following information:.

 Manufacturer 
HBAStatus 
VendorSpecificID 
NumberOfPorts 
SerialNumber 
Model 
ModelDescription 
HardwareVersion 
DriverVersion 
DriverName

This call is being made to the fiber adapter driver on the systems. If the driver does not respond or respond with the information requested, it will fail with the above Validation error.

This does not mean there is a problem with the Cluster Validation process or your system. All it means is that driver did not respond with the information we requested. The driver and adapter may very well work just fine with Failover Clustering. In most all the cases where we have seen this error, the Storage Validation tests pass with no warnings or errors.

I have created a script that you can run from a command prompt to see exactly what is returned. You can create a text file with the below information.

    Set oWbemServices = GetObject("winmgmts:{impersonationLevel=impersonate}!root/wmi") 
   Set enumAdapter = oWbemServices.InstancesOf("MSFC_FCAdapterHBAAttributes") 
   For Each eAdapter in enumAdapter 
         Wscript.Echo "Manufacturer : " & eAdapter.Manufacturer 
         Wscript.Echo "HBAStatus : " & eAdapter.HBAStatus 
         Wscript.Echo "VendorSpecificID : " & eAdapter.VendorSpecificID 
         Wscript.Echo "NumberOfPorts : " & eAdapter.NumberOfPorts 
         Wscript.Echo "SerialNumber : " & eAdapter.SerialNumber 
         Wscript.Echo "Model : " & eAdapter.Model 
         Wscript.Echo "ModelDescription : " & eAdapter.ModelDescription 
         Wscript.Echo "HardwareVersion : " & eAdapter.HardwareVersion 
         Wscript.Echo "DriverVersion : " & eAdapter.DriverVersion 
         Wscript.Echo "DriverName : " & eAdapter.DriverName      
    Next 
    WScript.Echo "Done"

As an example, you can save the file as FCATTRIBUTES.VBS. You would then need to run an administrative command prompt and run the CSCRIPT.EXE command from the directory you created the file in.

 C:\TEST>cscript fcattributes.vbs

The output will be on the screen using the above. What should be normally returned when there are no errors would be similar to the below.

 Manufacturer : John Marlin Company 
HBAStatus : 0 
VendorSpecificID : 583882643 
NumberOfPorts : 1 
SerialNumber : J15109 
Model : JRM6950 
ModelDescription : Marlin JRM6950 Fibre Channel Adapter 
HardwareVersion : 7750206A 
DriverVersion : 16.1.0.63 
DriverName : marlinhba.sys

If the data returned is only, as an example, the HBAStatus, then you will receive the Cluster Validation error. As mentioned, this is a WMI Query to the driver itself. If it is not returning the information, you should consult with the vendor of the adapter driver for assistance.

This error is not something that Microsoft can help with from a troubleshooting perspective. It is possible the driver may be an older version and simply needs an update. The vendor of the adapter should be able to assist. If it is an older driver, keep in mind that an update may also require a firmware update as well. So keep this in mind when speaking with them.