千兆网络的传输速度能超过125MB/s么?
如果我问你,千兆网络的传输速度极限是多少?或许你会说,最大就是125MByte/s了。这差不多就是理论极限。
实际上的传输速度是远远达不到125MB/s,因为IP包有报头,SMB协议也有报头,这些东西需要占用一些传输带宽。我的samba最多能达到110MB/s的极限速度。
那么,题头的图中,155M/s的传输速度是怎么回事?
介绍这个传输速度之前,我要介绍一下我的网络构成。
我的系统中将NAS上的两个共享目录映射成为Z盘和Y盘。平时将临时文件放在Z盘中,整理时将文件从Z盘移动到Y盘。
网上邻居共享软件samba是使用微软的SMB协议,至今SMB已经发展到3.1.1版本。
不同版本的Windows所支持的SMB协议如下图。
最初我使用FreeBSD11.0版本时,采用的是samba 3.7版本,这个samba版本只支持SMB1.0协议。所以将文件从Z盘移动到Y盘时,采取的方法如下图:
也就是说,客户端将Z盘的数据先传输到本地,然后再传输回去放回到Y盘中。因为客户机和samba服务器的网络带宽只有1000M,所以传输速度跳不出来125MB/s的理论值。
聪明的你看出来问题所在,需要移动的数据和要移动到的地方都在服务器上,为何要从客户端绕一圈呢?如果能直接在服务器上进行移动,那么速度不就快了么?
是的,在SMB2.0开始,支持一种叫做Server-Side Copy的请求指令,具体可以见这里:
就是将服务器端的拷贝直接在服务器内部消化,具体见下图:
通过这个做法,拷贝速度大大提高,不再取决于客户端和服务器之间的网络速度,而是服务器内部的读取和写入速度了。
在我的情况下,10盘RAIDZ2的读取+写入就是155MB/s
这个功能在samba 4.1版本开始就已经支持。
所以还在用3.x版本samba的你,还不赶紧升级?
如果你喜欢今后能多看到类似的文章,请看完之后点赞收藏分享,这样子我就可以有动力多写一些啦~~~