我正在运行一个 debian jessie 服务器,它使用 ext4 在外部驱动器上提供 samba 共享,其读写速度约为 80MB/s 和 40 MB/s。我目前使用的客户端是 Win7。两台机器都连接到千兆局域网,提供约 80-90 MB/s 的传输速率。
从 samba 共享读取数据的工作正常,传输速率为 60-70MB/s。但是,在 Win7-Client 上向该共享写入数据时,性能约为 1MB/s。
有人在类似情况下遇到过如此糟糕的写入性能吗?给定的设置是否有任何调整可以优化性能?或者更改文件系统等会有所帮助?
答案1
SAMBA 有几个选项可以提高读/写性能。对于你的情况,一个重要的选项可能是写入缓存大小。以下是引自https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html。
写入缓存大小 (S)
如果此整数参数设置为非零值,Samba 将为每个 oplocked 文件创建一个内存缓存(它不会对非 oplocked 文件执行此操作)。如果可能,客户端未请求直接刷新到磁盘的所有写入都将存储在此缓存中。当写入的偏移量不适合缓存或客户端关闭文件时,缓存将被刷新到磁盘。如果数据存储在缓存中,则文件的读取也将从此缓存中提供。此缓存允许 Samba 将客户端写入批量处理为更高效的 RAID 磁盘写入大小(即,写入可以调整为 RAID 条带大小),并且可以在磁盘子系统是瓶颈但有可用内存供用户空间程序使用的系统上提高性能。整数参数以字节为单位指定此缓存的大小(每个 oplocked 文件)。默认值:写入缓存大小 = 0
示例:写入缓存大小 = 262144 # 每个文件 256k 缓存大小
您可以在这里找到工作示例:http://www.arm-blog.com/samba-finetuning-for-better-transfer-speeds/和https://coderwall.com/p/2ufa0g/fix-samba-read-and-write-performance-issues
您需要调整 /etc/samba/smb.conf 文件的 [global] 部分中的这些选项,并需要重新启动 samba。您可以查看上面提到的 samba 手册页以了解选项的说明。
答案2
Debian 服务器写入外部驱动器的速度有多快?(使用 fio 或其他东西来测试这个)
外部驱动器的延迟是怎样的?(也许用 dd 或类似的东西进行测试)
Win7 客户端到共享的延迟是多少?(简单 ping 即可)
您能提供您的 /etc/samba/smb.conf 文件吗?
有很多因素会影响共享的最大理论读写速度。还有几个配置选项也会影响速度。如果您可以提供一些进一步的详细信息,也许我或其他用户可以帮助您找到问题或提高写入速度。
答案3
我基本上也遇到了同样的问题。经过大量研究和修改 Samba 配置后,我设法通过添加以下代码使其以合理的速度传输IPTOS_吞吐量到套接字选项配置参数和删除IPTOS_LOWDELAY。