Can't run smart state analysis in VMware


I’m trying to get smart state analysis running against my vsphere cluster. Here’s the steps I’ve completed:

  1. Downloaded and installed the VMware-vix-disklib-1.2.2 tarball using
  2. Ran ldconfig
  3. Rebooted the appliance
  4. Verified that my root credentials are valid to the ESXi servers

However, there is still no option to perform a smart state analysis under Infrastructure -> Virtual Machines -> Configuration.

Am I missing a step somewhere?


Hi. I was wondering why you opted for an older version of VixDiskLib (1.2.2) rather than something newer like 5.x.
Regardless, you should see some messages in your evm.log file in the vmdb/log directory starting with:
“VixDiskLib_raw: failed to load …”. The code currently loops thru 5.1, 5.0, 1.2, and 1.1 (in that order). If one of those
versions are available, it will be selected for use. Otherwise it will write a message to the log and try the next one. If none of the versions are found you should see the message “VixDiskLib_raw: failed to load any version!”. Let me know what you find.

Jerry Keselman

Hi Jerry,

Thanks for your quick response. Yes, I see the entries looping through all 4 versions of the lib. See below:

VixDiskLib_raw: failed to load 5.1 version with error: cannot load such file – /var/www/miq/lib/VixDiskLib/lib/x86_64-linux/VixDiskLib_raw.5.1.
VixDiskLib_raw: failed to load 5.0 version with error: cannot load such file – /var/www/miq/lib/VixDiskLib/lib/x86_64-linux/VixDiskLib_raw.5.0.
VixDiskLib_raw: failed to load 1.2 version with error: cannot load such file – /var/www/miq/lib/VixDiskLib/lib/x86_64-linux/VixDiskLib_raw.1.2.
VixDiskLib_raw: failed to load 1.1 version with error: cannot load such file – /var/www/miq/lib/VixDiskLib/lib/x86_64-linux/VixDiskLib_raw.1.1.

However, I don’t see the “failed to load any version” message.

The reason I selected version 1.2 is that I’m managing ESXi version 5.0 hosts and read (somewhere) to go with the older version of the libs in this situation.



No problem. Can you tell me what version of ruby you’re using? (ruby -v)




See below:

[root@EC0GLZ1234 log]# ruby -v
ruby 1.9.3p448 (2013-06-27) [x86_64-linux]

BTW, I’m running the ova appliance that was made available last week.


Hi, Steve,

So the issue you are running into is that the c language bindings and all the required symlinks for VixDiskLib are not built in ManageIQ, so at the present moment Smart State Analysis will not work with VMware. My apologies for not realizing this was the situation you’d hit on sooner.

However, the good news is that I have a Pull Request waiting to be merged upstream that will render that all irrelevant. I’ve written an FFI-based binding for VixDiskLib that will replace the C-language bindings (which will no longer have to be built separately) and will not be dependent upon specific versions of Ruby.
In addition to these dependencies we have run into issues with the versions of OpenSSL libraries shipped with VixDiskLib by VMware conflicting with those versions which are used on the appliance. The FFI-based binding also makes the OpenSSL issue go away.

The Pull Request is here - you can watch for it soon.

Hope this helps,


1 Like

Okay, thanks again for your help.


Steve, just FYI the Pull Request mentioned above has been merged so your issue should be resolved.

@jerrykbiker for clarification, is there anything a user needs to do to enable the new ffi based VixDiskLib binding, other than git fetch upstream && git pull upstream master?

I believe you have a good explanation here, which I have copied below:

# To test The C Binding, set the environment variable VIXDISKLIB_BINDING to "C"
# and either run a standalone test, or restart the appliance via "rake evm:restart".
# To test the FFI Binding, either unset the VIXDISKLIB_BINDING environment variable
# or set it to "FFI".  Run the tests or appliance restart the same way.

Is there anything else? Are there any log lines or warnings to indicate it’s working or not?

@jrafanie, good question. Unless the user had already set the VIXDISKLIB_BINDING to “C” there would be no reason to unset the variable or set it to FFI, but it would not hurt to do either.
The only time there should be an error message in the log file(s) - vmdb/log/evm.log and/or vmdb/log/vixdisklib.log - would be if no version of the library successfully loaded. In this case, the following message:
ffi-vixdisklib: failed to load VERSION version with error: ERROR
(Where “VERSION” indicates the specific version of VixDiskLib, and “ERROR” is the error cause)
should exist for each of the supported versions of VixDiskLib, along with the message
ffi_vixdisklib: failed to load any version of VixDiskLib!

Hope this helps!



Thanks for the update. One question: At this point, do you know when the vsphere appliance currently available for download will be updated to incorporate these changes?

thanks again,

We are working on creating the stable branch (Anand) build that will incorporate these changes.

Also, the nightly builds should be good too unless the automated builds are not working. @jrafanie please comment on the nightlies.

@chessbyte now that this PR is merged we should be able to normalize the appliance filenames and upload much more frequent appliance builds to the website.

@blunozr I’m working with some others to upload the updated nightly appliances with the changes @jerrykbiker mentioned. We’ll update this discussion when they’re available.

1 Like

@blunozr the website now has appliances that includes support for the ffi vddk feature that @jerrykbiker discussed. As mentioned above, the new feature should be used by default instead of the ruby c binding. Note: you still will need to install the vddk from vmware.

Please let us know how it goes!

1 Like

Hi @jrafanie - thanks for the update. So, what’s the best way to update my .ova appliance without losing my existing config, or is that even possible?

@blunozr If you want to keep your existing configuration/database it has varying levels of complexity depending on your comfort level and time.

Basically, downloading a new appliance is the easiest way to test the new feature.

###Use an updated appliance ova###

Import a new appliance into your provider.

Technically you can export/import your database from the old appliance to the new one but I haven’t done it so I’ll let others comment if they have done it and have more information.

###Use git to update your existing appliance to the latest###

Use git pull from the /var/www/miq/vmdb directory to pull in any changes from our git repository.

Note: you’ll need to be comfortable with running git stash, bin/rake db:migrate, etc., depending on your appliance’s current git state vs. the upstream git repository.

1 Like

@blunozr, today @jerrykbiker and I did some scanning using the new ffi vddk binding and had some success. Note, in addition to installing the vddk 5.1.0 library, you will need to provide the credentials for the host running the virtual machine you are scanning and enable the smart proxy role in the UI.