Starting with 6.11.0-rc5 we have added some features to help us figure out the proper mix of SMB settings which will achieve the best performance/functionality with MacOS. This mainly involves tuning the so-called "fruit" SMB parameters. Please refer to the Samba "vfs_fruit" doc:
First you will notice there are Global options and Per-Share options. The global options are set in /etc/samba/smb.conf file on your server. All the options are listed near the bottom, and ones which vary from the default setting are uncommented. I don't think we will need to change these options but if you want to experiment then add your changes to /boot/config/smb-extra.conf file.
Next are the set of per-share options. These are set in /etc/samba/smb-fruit.conf file on your server. Again all options are listed there and only the ones which deviate from default are uncommented.
In addition, you may create the file /boot/config/smb-fruit.conf on your flash device and when Samba starts or is restarted, those options will override the options in /etc/samba/smb-fruit.conf. Thus a good staring point would be to:
cp /etc/samba/smb-fruit.conf /boot/config
and now you can make changes to /boot/config/smb-fruit.conf
After making a change you can type this command to to restart Samba:
For any of this to be applied, you first need to ensure that "Settings/SMB/Enhanced macOS interoperability" is set to Yes. This will tell Unraid OS to include the contents of the smb-fruit.conf file in each share (except for the 'flash' share, see below).
Note: we actually have per-share hidden settings for enabling 'fruit', however from the documentation we read:
Be careful when mixing shares with and without vfs_fruit. OS X clients negotiate SMB2 AAPL protocol extensions on the first tcon, so mixing shares with and without fruit will globally disable AAPL if the first tcon is without fruit.
Thus there is no UI for these settings, instead either all shares or no shares have 'fruit' extensions. As for the 'flash' share, again from the doc we read:
The module enables alternate data streams (ADS) support for a share, intercepts the OS X special streams "AFP_AfpInfo" and "AFP_Resource" and handles them in a special way. All other named streams are deferred to vfs_streams_xattr which must be loaded together with vfs_fruit.
They say 'streams_xattr' must be loaded, but later in the doc they talk about options that are incompatible with this. In addition certain file system types are inherently incompatible, notably FAT and exFAT because they don't support xattr at all... Hence we can't (or shouldn't) include the 'flash' share in 'fruit' but then if the 'flash' share is first share to be accessed on a Mac client, APPL extensions will be disabled for the duration... Yes this is confusing, maybe best bet is to not export the 'flash' share in MacOS environment. If it is exported, the 'testparm' command outputs this warning:
WARNING: some services use vfs_fruit, others don't. Mounting them in conjunction on OS X clients results in undefined behaviour.
Time machine - if enabled for a share these parameters are automatically added (independent of smb-fruit.conf):
fruit:time machine = yes fruit:time machine max size = SIZE # if "vol size limit" specified
Finally Spotlight - our build of Samba includes spotlight support but only for 'elasticsearch'. But 'elasticsearch' is not installed in Unraid OS. In other places on the forum people have expressed success by setting the spotlight backend to 'tracker' - but this requires "gnone tracker" which also is not installed in Unraid OS - so I'm not sure what's going on here. Nevertheless, you can add 'spotlight = on' to the smb-fruit.conf file to play around with this.
Please limit discussion in this topic to MacOS issues only.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.