Jump to content

求助,通过SMB协议传输大量小文件速度很慢


Recommended Posts

网络与电脑环境是这样的:

NAS使用SMB协议,有一个千兆网口;电脑是Windows,网卡是英特尔的BE200无线网卡,把Unraid映射为一个硬盘(比如说Z盘);路由器是小米的BE7000,其中网口都是2.5G的,无线速率也能轻松突破千兆。

以下是我遇到的问题:

如果传输大量的小文件,比如几千上万个不到1MB的小文件,实际速度就会很慢很慢的,远远跑不到我这条链路的千兆,通过观察基本上就是每秒钟只能传输几个文件。我现在使用FreeFileSync来从我的Windows电脑上备份数据到NAS里面。

我的想法:

我在网上搜了搜我这种情况,微软的SMB协议相关网页说是SMB传输小文件时,文件创建的开销过大,可以使用支持多线程的受信任的第三方文件复制工具来解决这个问题。

但是我碰到的情况和微软所描述的有些出入,首先我使用FreeFileSync备份电脑时,第一个步骤是同步对比源文件夹和目标文件夹里文件的区别,这一步并不涉及文件的创建(而是在后续的步骤中),并且这一步速度就很慢;其次我在FreeFileSync中设置了多线程功能,但是实际速度虽然略有改进,但整体的对比文件区别速度仍然很慢。

而且我在安卓手机上使用APP,也会碰到类似的问题,小文件传输极慢,并且也没有多线程选项来改善传输速度。

我想问一下:

还有没有别的什么方法,能够提升我传输大量小文件时的速度?

Link to comment

补充一点,FreeFileSync在对比两端文件夹都在本机或者通过USB连接的硬盘上的数据,对比速度是很快的,几秒钟就可以对比完三十余万个文件,而如果其中一端的文件夹处于SMB映射的硬盘中,那对比速度就会直线下降,可能几分钟甚至十几分钟才能对比完十万个文件。

Edited by xiaoweiXX
Link to comment

增加线程数确实在实际传输文件时起到了一点作用。我一口气设置了65536个线程,目前传输速度大概平均600Mbps左右,实际使用的线程数量大概视实际占用带宽和文件大小相关,比如小文件多而占用带宽低就会增加线程来提升带宽的占用(不过线程数量貌似在一直增加却并没有减少过,目前增加到了9000多个线程。要么就是线程显示功能出了问题)。

不过线程增加好像对文件比对并没有很大的帮助,在文件比对时还是很慢,也就是我新笔记本文件少所以并没有耗费很多时间,实际的速度还是很慢。而且Windows自带的文件管理器和安卓端的文件管理也不支持多线程功能,我还是想要问一下有没有别的方法改善大量小文件的传输速度。

Link to comment
16 minutes ago, xiaoweiXX said:

增加线程数确实在实际传输文件时起到了一点作用。我一口气设置了65536个线程,目前传输速度大概平均600Mbps左右,实际使用的线程数量大概视实际占用带宽和文件大小相关,比如小文件多而占用带宽低就会增加线程来提升带宽的占用(不过线程数量貌似在一直增加却并没有减少过,目前增加到了9000多个线程。要么就是线程显示功能出了问题)。

不过线程增加好像对文件比对并没有很大的帮助,在文件比对时还是很慢,也就是我新笔记本文件少所以并没有耗费很多时间,实际的速度还是很慢。而且Windows自带的文件管理器和安卓端的文件管理也不支持多线程功能,我还是想要问一下有没有别的方法改善大量小文件的传输速度。

看来我搞错了,传输小文件的速度还是很慢,甚至极端的时候1秒都传不了1个文件,带宽占用也不过几兆,表现可能更差了?搞不明白😔

Link to comment
9 hours ago, Crab said:

传输文件考验的是两端硬盘/阵列的读写能力,小文件尤其吃硬盘的4K,不是傲腾对拷的话基本上无解

 

机械硬盘随机能力再怎么差也不至于差成这样,每秒钟不可能只有几个小文件,我外接移动机械硬盘也是包含在几秒30万个文件里的。这个表现很明显没有到机械硬盘的读写瓶颈,我觉得是传输协议之类的传输过程中有一些限制。

Edited by xiaoweiXX
Link to comment
On 9/25/2024 at 8:08 PM, xiaoweiXX said:

机械硬盘随机能力再怎么差也不至于差成这样,每秒钟不可能只有几个小文件,我外接移动机械硬盘也是包含在几秒30万个文件里的。这个表现很明显没有到机械硬盘的读写瓶颈,我觉得是传输协议之类的传输过程中有一些限制。

机械硬盘的小文件就是这么差,如果考虑碎片、考虑SMB这低效的协议,就差上加差了。

Link to comment
9 hours ago, cddjr said:

机械硬盘的小文件就是这么差,如果考虑碎片、考虑SMB这低效的协议,就差上加差了。

我用的西数的移动机械硬盘,这玩意性能这么差,同样的数据都能一秒几百个小文件,瓶颈肯定在传输协议之类的地方。

Link to comment
On 9/27/2024 at 11:58 AM, simear2004 said:

unraid就这样,大量小文件需要传输时,打包后再传,习惯就好

没法打包啊,我要传输大量小文件的时候,基本上就是备份电脑数据,这玩意压缩一遍占两倍的空间,压缩解压也要耗大量时间,和FreeFileSync的同步逻辑也完全不同。

Link to comment
  • 3 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...