Product Announcements

Heads Up! Cannot Enable SIOC on NFS Datastores

This is an interesting one for those of you considering using Storage I/O Control (SIOC) on NFS datastores. We’ve come across an issue a couple of times whereby SIOC fails to enable on an NFS datastore due to a permissions issue. The following messages are seen in the SIOC logs on the ESXi hosts sharing the datastore:

2013-06-10T11:53:08.147Z: <test, 0> Error in opening stat file for device: test.Ignoring this device.
2013-06-10T11:53:12.159Z: stat file /vmfs/volumes//test/.iormstats.sf already exists.
2013-06-10T11:53:12.160Z: open /vmfs/volumes//test/.iorm.sf/slotsfile(0x10000042, 0x0) failed: Permission denied
2013-06-10T11:53:12.160Z: <test, 0> Giving UP Permission denied Error -1 opening SLOT file /vmfs/volumes//test/.iorm.sf/slotsfile
2013-06-10T11:53:12.160Z: <test, 0> Error -1 in opening & reading the slot file2013-06-10T11:53:12.160Z: Couldn’t get a slot2013-06-10T11:53:12.160Z: <test, 0> Error in opening stat file for device: test.Ignoring this device.

In fact, this issue was referenced in a blog post by Frank Denneman here. Storage IO Control will not gather stats for this datastore. On further investigation we see the following permissions for the Storage I/O Control system files:

# ls -la /vmfs/volumes/test/.iormstats.sf
-rwxr-xr-x    1 nfsnobod root         16511 Jan 24 13:27 /vmfs/volumes/test/.iormstats.sf
# ls -la /vmfs/volumes/test/.iorm.sf/
drwxr-xr-x    1 nfsnobod root            19 Jun 10 11:56 .
drwxr-xr-x    1 nfsnobod root           160 Feb 20 10:58 ..
-r–r-x—    1 nfsnobod root           256 Jul  2  2012 slotsfile

Obviously, from the logs, there is a problem with permissions. Any attempt to change the owner of the files from nfsnobody to root produced the following error:

# chown root /vmfs/volumes/test/.iormstats.sf
chown: /vmfs/volumes/test/.iormstats.sf: Operation not permitted

The permissions for the NFS datastore were double checked and it was noted that the no root squash option was not in place. For NFS to work on vSphere, there must be no squashing of root privileges. Enclosed in a screen-shot on how to do this on an EMC Isilon array, which is what was used in-house to reproduce the issue:

After making this change, the permissions on the SIOC files did not change. They were still owned by user nfsnobody. However the files on the datastore could now be changed:

# ls -la /vmfs/volumes/test/.iormstats.sf
-rwxr-xr-x    1 nfsnobod root       16511 Jan 24 13:27 /vmfs/volumes/test/.iormstats.sf

# ls -la /vmfs/volumes/test/.iorm.sf/
drwxr-xr-x    1 nfsnobod root        19 Jun 10 11:56 .
drwxr-xr-x    1 nfsnobod root      160 Feb 20 10:58 ..
-r–r-x—    1 nfsnobod root      256 Jul  2  2012 slotsfile# chown root /vmfs/volumes/test/.iormstats.sf

# ls -la /vmfs/volumes/test/.iormstats.sf
-rwxr-xr-x    1 root     root         16511 Jun 10 12:07 /vmfs/volumes/test/.iormstats.sf

# chown -R  root /vmfs/volumes/test/.iorm.sf/

# ls -la /vmfs/volumes/test/.iorm.sf/
drwxr-xr-x    1 root     root            19 Jun 10 12:08 .
drwxr-xr-x    1 nfsnobod root           160 Feb 20 10:58 ..
-r–r-x—    1 root     root           384 Jun 10 12:07 slotsfile

After making this change, SIOC started working, as observed via the log files:

2013-06-10T12:07:37.786Z: stat file /vmfs/volumes//test/.iormstats.sf already exists.
2013-06-10T12:07:37.800Z: <test, 0> Successfully set shares for 9145 on test to 50000

Root Cause: It would appear that the root cause of this issue is that the NFS datastore was presented to the ESXi hosts without having the no_root_squash enabled, and turning on SIOC. Even after realizing that the no_root_squash option was missing and fixing this at the NFS array/NFS server end, the SIOC files were already created with the incorrect permissions. Only by manually changing the SIOC file permissions did we get SIOC to work.

Get notification of these blogs postings and more VMware Storage information by following me on Twitter: @VMwareStorage