我使用 Cat5e 交叉电缆在 PC 和笔记本电脑之间快速交换文件,但传输速率为 1.3 MB。使用 USB 2.0,我将文件放在外部硬盘上的速度快得多。这不可能是真的,对吧?两台 PC 都运行 12.04 64 位。
答案1
读到你的问题时我首先想到:为什么是 Samba?这是一种非常低效的文件传输方式。
一些解释:
CIFS 协议会“消耗”大量带宽。最糟糕的情况是有很多小文件。如果是这种情况,那么速度就是正常的。(小是指 10MB 以下)
如果是这种情况,原因如下:
这完全取决于您的传输层。您将以太网+CIFS 协议与 USB2+NTFS(或 FAT32)协议进行了比较。
首先,我们有两种不同的文件管理方式。第一种(CIFS)是文件级的,第二种(NTFS)是块级的。
从性能角度来看,这意味着 CIFS 性能较低,因为它必须使用某些块级管理器才能正常工作(如果您的 Ubuntu 是使用默认设置安装的,则它会通过 EXT4 运行)。
结论:在系统级别,CIFS 必须经过比 USB2 硬盘更多的层(这就是为什么在相同可用带宽的情况下,您永远不会获得相同的速度)
然后,关于“大量小文件效应”:正如我在开头所说的,CIFS 设计得很糟糕。对于每个文件或文件夹,CIFS 必须在两台 PC 之间进行 10 次以上的通信(具体情况因情况而异)。假设您有 5000 个 1KB 的文件,两台 PC 之间的延迟为 1ms。这意味着您的传输速率将持续:5000 个文件 * 1ms * 10 = 50000 ms 或 50 秒,这意味着您的速度为:5000 KB / 50 秒 = 500KB/秒
现在,在实际情况下,延迟小于 1ms,并且您使用的文件超过 1KB。更现实的方法是(对于 1MB 的文件):
5000 个文件 * 0.1ms * (10 + (2*1048576/1500)) = 704051 毫秒或 705 秒,因此 7MB/秒
1500 是您可以发送的默认最大数据量(MTU)。因此您的文件将被 1500 的倍数截断。
当然,这些都是理论,被认为是理想情况,没有考虑可用带宽(1Gbps、100Mbps 等)
在您的具体情况下:
你的结果非常慢。我希望你能通过开头给出的解释来解释它。
如果没有,您需要检查您的某个 ubuntu 的网络层是否存在一些问题。
首先检查两者的 ifconfig 结果(打开终端并输入 ifconfig)。这是我的:
eth0 Link encap:Ethernet HWaddr 00:15:c5:5f:9e:be
inet addr:192.168.0.14 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4392375 errors:0 dropped:0 overruns:0 frame:0
TX packets:3493073 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4910280244 (4.9 GB) TX bytes:757387998 (757.3 MB)
Interrupt:16
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:629 errors:0 dropped:0 overruns:0 frame:0
TX packets:629 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:39732 (39.7 KB) TX bytes:39732 (39.7 KB)
我的默认接口是 eth0。您必须注意保持在 0 的“错误、丢弃、溢出和冲突”。
如果不是这种情况,并且你没有触及接口的 MTU(默认值为 1500),那么你可以
- 电缆或一台或两台机器的接口出现问题。(主要是当错误或丢失不为 0 时)
- 两台机器的接口配置都存在问题
对于第一个,请尝试更换电缆对于第二个,考虑到它是 eth0,并且连接的不超过 eth0,请输入以下命令:
- 机器 A:
sudo ifconfig eth0 172.16.10.1
- 机器B:
sudo ifconfig eth0 172.16.10.2
然后使用每台机器的 IP 而不是名称来访问您的共享(例如,当您在机器 A 上时为 172.16.10.2)
您还可以对 Samba 进行强化(调整 smb.conf 或启用巨型帧)。但我建议您不要这样做,因为它会隐藏而不是修复您的性能问题。(您可能会变得更快,但速度仍然比必须的慢)
可能还有很多其他事情。这些都是常规情况。如果需要更多信息,请通知我。