Sharing files and directories among SMB clients - concurrent access to files
Information on performance optimization when performance slows down due to extensive sharing.
If your environment calls for extensive file and directory sharing among many users, such as a large set of department documents, you can experience slowdown in performance. In this type of environment, it is possible to improve the performance based on the user needs. Consider the following options to optimize performance:
- Use the SMB export coherency options that are described in the following section.
- Limit all sharing through a single protocol node, or as few protocol nodes as possible. Restricting SMB connections that export data to a single protocol node helps reduce internal communication among the protocol nodes.
- If possible, distribute workload in sub directories to reduce number of SMB connections that access the same directory at the same time.
SMB export coherency options: fileid:algorithm
IBM Storage Scale provides a coherency, that is, fileid:algorithm, option to control data consistency needs for an SMB export. This option applies when an export is being accessed only by SMB clients. When the default value of fsname is changed, it helps to improve performance. However, extreme caution must be taken to determine right settings for your data as it impacts data integrity.
The applications must ensure that files or directories are not modified by multiple processes at the same time. For example, reading and writing of the same file does not happen simultaneously by different processes or alternatively, when the application is coordinating all file accesses to avoid conflicts.
The coherency (fileid:algorithm) option can be changed for a particular SMB export by specifying the --option fileid:algorithm = {fsname| hostname | fsname_nodirs | fsname_norootdir} option on the mmsmb export add or mmsmb export change commands.
Coherency option | Description |
---|---|
fsname:norootdir | Disables synchronization of directory locks for the root directory of the specified export, but keeps lock coherency for all files and directories within and underneath the export root. This option is useful for scenario where large sets of connections are accessing different sub directories with the same export. A typical example is an export that is used for home directories (/ibm/gpfs0/homeroot) which then contains a subdirectory for each user. |
fsname:nodirs | Disables synchronization of directory locks across the cluster nodes, but leaves lock coherency that is enabled for files. This option is useful if data sharing is not dependent of the changes to the directory attributes like time stamps, consistent view of the directory contents. |
fsname | Enables cross-node lock coherency for both directories and files. This is the default setting. |
hostname | Disables cross-node lock coherency for both directories and files. It needs to be used only with applications that guarantee data consistency and all other options to enhance performance are exhausted. |