7.4. CIFS

Common Internet File System (CIFS), an implementation of the Server Message Block (SMB) protocol, is used to share file systems, printers, or serial ports over a network. Notably, CIFS allows sharing files between Linux and Windows platforms regardless of version.
Red Hat recommends using CIFS with the Red Hat Enterprise Linux 6.6 or later with support for asynchronous reads and writes that increase the speed of data I/O.

Read and Write Size

  • Use the rsize=value_in_bytes option to set the network read size. The recommended size is 1 MiB for servers that support the POSIX extension, for example Samba, and 60 KiB for Windows servers.
  • Use the wsize=value_in_bytes option to set the default network write size. The recommended size is 1 MiB for servers that support the POSIX extension, for example Samba, and 65 KiB for Windows servers.

CIFS Installation Considerations

Note that if your CIFS server is a Windows system, there is a long-standing issue that causes large reads to fail because Windows only supports a 60 KiB read and write blocks.
If your workload is write-heavy and asynchronous, tune dirty pages to flush early and often. The following configuration allows for 512 MB of dirty pages, writes block at 1 GB of dirty pages, and page flushing happens every 5 seconds for dirty pages older than 2.5 seconds:
vm.dirty_background_bytes=536870912
vm.dirty_bytes=1073741824
vm.dirty_expire_centisecs=250
vm.dirty_writeback_centisecs=500
File sharing can vary between tasks significantly. For example, an 8-KiB direct database I/O is an entirely different workload from a large streaming asynchronous write from backup software. When testing, use the actual production workload, preferably with a repeatable replay of the same production work, change only one thing at a time, and record all results for later analysis.

Caching

The following caching options are available:
  • cache=none – disables caching. Applications have to wait while data is being sent.
  • cache=loose – enables caching while increasing the danger of data corruption.
  • cache=strict – adheres strictly to the protocol requirements where caching is regulated by the server. You can set the cache=strict option in Red Hat Enterprise Linux 6.6 and later.
The cache=loose option is set by default in Red Hat Enterprise Linux 6. Using cache=strict is recommended, as cache=strict helps to reduce data corruption, although performance is slightly impacted.

Mounting CIFS

For instructions on how to mount CIFS, see section 9.3. SMB in the Red Hat Storage Administration Guide.