我有一台在 VMware 上运行的 CentOS 7 VM,用于存档来自各种服务器的数据,目标是 FreeNAS MiniXL。其中一些是通过 ssh 完成的,但其他一些是使用 SMB 发送的。无论哪种情况,rsync 都用于比较源/目标。首先使用 SMB 的目的是保留在 FreeNAS 上设置的 Windows 权限。我可能是错的,但我担心 SSH 上的 rsync 会覆盖这些权限(我需要测试一下。)
问题是,在比较了很多小文件后不久,CentOS 7 上的 SMB 客户端速度就会变慢。重新启动后,我可以快速浏览 SMB 共享,但一些复制作业启动后不久,速度就开始变慢。例如,ls 将需要很长时间才能显示任何结果。
在遇到速度变慢的情况时,我测试了从其他 Linux 和 Windows 计算机访问共享,并能够浏览和移动文件,没有任何问题。这让我相信这是 CentOS 系统上的 SMB 客户端的问题。
有什么想法吗?
CentOS 7 使用 vers=3.0 安装 SMB 目标,因为这对我来说是最稳定的。
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
Linux rhelfs01 3.10.0-957.27.2.el7.x86_64 #1 SMP Mon Jul 29 17:46:05 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
libsmbclient.x86_64 4.8.3-6.el7_6 @updates
samba.x86_64 4.8.3-6.el7_6 @updates
samba-client.x86_64 4.8.3-6.el7_6 @updates
samba-client-libs.x86_64 4.8.3-6.el7_6 @updates
samba-common.noarch 4.8.3-6.el7_6 @updates
samba-common-libs.x86_64 4.8.3-6.el7_6 @updates
samba-common-tools.x86_64 4.8.3-6.el7_6 @updates
samba-libs.x86_64 4.8.3-6.el7_6 @updates
编辑 :
我在同一个 CentOS 7 虚拟机上安装了源 SMB 共享。虽然浏览目标非常慢,但浏览源却很正常。在我终止在 SMB 上运行的 rsync 作业后,我能够再次浏览目标而不会减慢速度。
这看起来更像是 SMB 上 rsync 的一个问题。
rsync.x86_64 3.1.2-6.el7_6.1 @updates
编辑2:
我使用 robocopy 在 Windows 服务器上复制了该问题。一段时间后,传输速度下降到 ~500KBps。但是,如果我返回 CentOS 7 服务器,我能够使用 DD 以 ~5.5MBps 的速度将 10M 文件写入同一目的地(这对我的隧道来说是正常的)。
此时,我认为这是 FreeNAS 机器上的 samba 的问题。我对 samba 的内部工作原理知之甚少,但我大胆假设它是基于源 IP 的多线程。如果我从第二个 IP 连接,则连接没有问题。
我将把我的发现发布到 FreeNAS 论坛,看看我能得到什么。存储设备是他们的机器之一。
编辑3:
看起来这更像是机器之间的隧道问题。尽管另一台机器的性能很好,但它传输文件的速度仍然很慢。在 Ubiquiti 的论坛上开了一个帖子。
答案1
问题出在隧道上。该问题已在 Ubiquiti 论坛