SMB/CIFS 为 netapp 启用大 rsize/wsize

SMB/CIFS 为 netapp 启用大 rsize/wsize

我正在从 CentOS 7.2 客户端连接到 Netapp CIFS 文件共享。我们不得不从 NFS 进行交换,因为由于缺少 30% 的空间“钻孔”

由于 CIFS,性能有所下降,我正在努力使其更快。

我正在尝试增加 rsize 和 wsize:

挂载.cifs(8)

大小=参数

要使用大于 127K(原始 cifs 协议最大值)的 rsize,还要求服务器支持新的 Unix 功能标志(用于非常大的读取),某些较新的服务器(例如 Samba 3.0.26 或更高版本)会这样做。 rsize 的设置范围为最小值 2048 到最大值 130048(127K 或 CIFSMaxBufSize,以较小者为准)

wsize=字节

从 RHEL6.2 开始,默认值取决于客户端和服务器是否通过 POSIX 扩展协商大型写入。如果这样做,则默认值为 1M,允许的最大值为 16M。如果不这样做,则默认值为 65536,允许的最大值为 131007。请注意,该值只是协商的起点。客户端和服务器可以根据服务器的能力向下协商该大小。

我从 netapp 端启用了 Unix 扩展 (POSIX):

Y::*> vserver cifs options show -vserver X
Is UNIX Extensions Enabled: true

[-is-unix-extensions-enabled {true|false}] - 是否启用 UNIX 扩展(权限:高级) 当设置为 true 时,此可选参数将启用 CIFS 服务器中的 UNIX 扩展功能。如果设置为 false,则禁用 UNIX 扩展功能。该参数的默认值为 false。 UNIX 扩展允许通过 CIFS 协议显示 POSIX/UNIX 风格的安全性。

看起来要启用大型读/写,您需要将以下内容添加到/etc/samba/smb.conf:(全局部分)

min receivefile size = 16384  (set to a non-zero value)

smb.conf(8)

“最小接收文件大小 (G) 要启用 POSIX 大写入支持(SMB/CIFS 写入高达 16Mb),此选项必须为非零”

但是,当我在未指定大小选项的情况下挂载时,我可以看到 SMB 协商为rsize=65536,wsize=65536而不是更大的 1M-16M 值

//IP/MOUNT on /opt/DIR type cifs (rw,relatime,vers=3.0,sec=ntlmssp,cache=none,username=BLAH,domain=DOMAIN,uid=0,noforceuid,gid=0,noforcegid,addr=IP,file_mode=0755,dir_mode=0755,nounix,serverino,mapposix,rsize=65536,wsize=65536,actimeo=1)

然后我也尝试将其设置为大于 65k 的值,但没有效果:

[X ~]# cat /etc/modprobe.d/cifs.conf
options cifs CIFSMaxBufSize=130048

我缺少什么?我是否没有启用正确的 netapp Unix 标志?我是否需要在 CentOS 上的某处启用大缓冲区 CIFS 标志?我在 2 层之间有 9k 巨型帧,并且客户端有 RAM (32GB) 负载,所以我应该很好地提高大小性能。

答案1

默认情况下,cifs 安装使用协议 1.0,该协议除了过时之外,效率也很低,并且由于多种原因不能很好地从睡眠中恢复。

根据您的服务器技术,您vers=2.1至少可以使用 或vers=3.0

请咨询供应商支持的 CIFS 协议或尝试vers=3.0使用mount检查协商的版本。

请查看相关问题CIFS 随机丢失与 Windows 共享的连接更多细节。

相关内容