Tech Note 0029
Tuning Network Attached Storage
Tips to configure NAS devices for maximum performance.
ExpeDat and SyncDat software can target any filesystem path, including those hosted by Network Attached Storage (NAS) devices. However, such devices use their own protocols for transporting data to and from ExpeDat and SyncDat. NAS protocols such as CIFS, SMB, NFS, and AFP are not optimized for high performance and have limited throughput compared to direct attached storage. Below are guidelines for tuning NAS devices to achieve the best performance possible.
Network Attached Storage (NAS) performance will vary greatly depending on the environment, configuration, and use. These guidelines only address a few commonly available options. Consult your storage vendor for more specific tuning advice, and see Tech Note 0023 for general hardware recommendations.
Tuning takes place at two points: in the operating system that is hosting the ExpeDat or SyncDat software, and in the NAS device mounted by that host. The following sections focus on optimizing the communication between those nodes.
ExpeDat and SyncDat software must be located as close as possible to the NAS device. NAS protocols are not suitable for communicating over WANs. A common mistake for novice users is to type the path of a remote NAS into their ExpeDat or SyncDat client, or specify a local NAS to an ExpeDat or SyncDat server. Such loops transfer data across the WAN multiple times and result in very poor performance. When creating NAS workflows, think carefully about where the data is located to ensure it takes the shortest path and that the WAN portion is handled entirely by ExpeDat or SyncDat.
NAS devices, and the networks which connect them, are often shared by multiple users. Like all storage devices, concurrent use may exponentially decrease performance. Ensure that the NAS device and its network are properly sized and configured for the number of users.
NAS devices may have their own authentication mechanisms which can sometimes conflict with those used by an ExpeDat or SyncDat server. See Tech Note 0031 for more about how NAS authentication interacts with other systems.
Windows NAS typically uses the CIFS protocol, which is based on TCP/IP. The following steps will attempt to maximize the network performance of this weak link.
Update to the most recent version of the Windows operating system available to you. On the Windows system hosting the ExpeDat or SyncDat software, open a command prompt using "Run as Administrator" and type the following commands:
netsh interface tcp set global rss=disabled netsh interface tcp set global chimney=disabled netsh interface tcp set global autotuning=normal netsh interface tcp set global congestionprovider=ctcp
The commands above disable Receive-Side Scaling, disable TCP Chimney Offload, enable TCP window autotuning, and enable Compound TCP congestion control. It is recommended that you experiment with different settings to find the combination that provides maximum performance in your environment.
macOS systems since 10.10 use SMB3 when available. SMB3, as implemented by macOS, has good local performance by default and does not usually require special tuning. However, it may be difficult to tell wither SMB3 or another protocol is being used. For best performance, verify that the storage device also supports SMB3 and that SMB3 is enabled.
macOS version 10.9 defaulted to an SMB2 implementation which may corrupt file data when writing to Windows or other SMB2 NAS systems. Use of 10.9 is discouraged, but if you must do so then you must mount Windows file servers using the "cifs://" URL, which forces the use of the SMB1 protocol. This issue does not affect other macOS versions.
Unix NAS typically uses the NFS protocol, which may be based on either TCP/IP or UDP/IP. Tuning NFS performance while maintaining reliability can be a complex endeavor. Following are general guidelines.
Ensure that the UDP/IP network buffers are adequate. See Tech Note 0024 for details.
Update to the most recent operating system and NFS versions available. Legacy NFS implementations may contain serious performance and file integrity bugs. Verify that all systems are running an adequate number of biod and nfsd processes.
Use NFS over UDP when possible. Use the following mount options:
Older systems may limit rsize and wsize to 8K. Use the largest value available, up to 32K. For some NFS servers, adding the no_wdelay option may further improve performance.
Performance tuning options vary greatly by vendor and model. Make sure your device's software and firmware are up-to-date and consult its documentation for specific tuning instructions.
Enable caching and streaming features such as "read-ahead", "write-behind", "write-back", "audio-video", or "streaming".
Disable database features such as "write-through", "synchronized", or "atomic". If the device is using RAID storage, see Tech Note 0018 for more RAID suggestions.
If possible, perform TCP/IP tuning on the NAS device. For example, NetApp devices allow you to increase the TCP/IP window size for CIFS mounts by setting cifs.tcp_window_size. A value of 2097152 is suitable for most LAN environments.
If possible, avoid mixing different NAS protocols in the same filesystem. For example, allowing both NFS and CIFS mounts on the same filesystem may create performance or integrity issues.
SAN vs NAS
Storage Area Network devices (SANs) typically use much more efficient protocols such as iSCSI or FiberChannel. As such, SANs usually provide filesystem performance which is much faster than NAS. However, SANs can also exhibit contention and integrity issues when a single SAN device is used with multiple high-performance clients.
Because storage options and environments are constantly changing, we welcome any observations and feedback you may have.
Tech Note History
|Feb||23||2018||Added no_wdelay to NFS|
|May||17||2016||Added General, Mac|