These Samba config options have been performing fantastically well for me. It took quite a bit of research to finalise the config you see below, so figured it was worth sharing.
My setup is a Debian server with BTRFS storage, and windows clients. Requirements are:
- Good performance, especially with lots of tiny files, complex directory trees, random writes within files, etc.
- Preservation of all reasonable windows file attributes, such as:
- Creation date
- DOS attributes
- Anything else necessary for standard desktop workload such as steam game library, documents/pictures/etc folders, git, etc.
- Continuing the previous point: It should feel like the server is running Windows – no weird surprises.
- No preservation of anything that allows Windows to behave in unpredictable Windows-like ways – specifically no ACL support.
- Sane Linux filesystem permissions
- When I browse through my windows files, they should look like a Linux home directory, no weird permissions etc.
- Everything Windows-specific should be abstracted away into xattrs.
- Everything should be executable on Windows, but not executable on Linux, as that is the cleanest representation of the platform difference IMO.
- Backup-able with standard Linux tools like tar and borg (xattrs must be enabled!)
- Correct behaviour of BTRFS features such as compression.
Without further ado:
[global] socket options = IPTOS_LOWDELAY TCP_NODELAY IPTOS_THROUGHPUT use sendfile = yes min receivefile size = 16384 write cache size = 262144 strict sync = no min protocol = SMB3 aio read size = 1 aio write size = 1 allocation roundup size = 4096 server signing = no vfs objects = btrfs create mask = 644 acl allow execute always = yes store dos attributes = yes map readonly = no map archive = no ea support = no nt acl support = no
Options I specifically avoid are:
SO_RCVBUF=131072 SO_SNDBUF=131072– specifically recommended to avoid by newer Samba releases.
case sensitive = yes– breaks too many things, performance improvement is barely noticeable.
strict allocate = yes– breaks BTRFS compression.
And one final note, I noticed a substantial performance improvement in my use case of SMB when upgrading from Debian 9 to Debian 10, so if you are on a lower Samba version than 4.9, consider upgrading!