短版:我在本地有线网络上有一台 Linux 服务器 (RHEL5) 和一台 Windows 7 Professional 笔记本电脑。将大文件复制到服务器会逐渐变慢,直到完全停止。
长版
服务器上有一个 Samba 共享,我可以连接到它,并且我具有读/写访问权限。
从服务器到笔记本电脑的所有传输都可以正常工作,但从笔记本电脑到服务器的传输似乎速度受到限制,有时甚至完全失败。
小文件传输正常,但超过 2MB 的文件通常会失败。
为了测试这是 Samba 问题还是其他问题,我尝试使用scp
(Putty's pscp
) 将一些文件从笔记本电脑复制到服务器。1MB 文件几乎可以立即复制,2MB 需要 3 分钟,3.7MB 需要 18 分钟。所以它不是特定于 Samba 的。
此外,使用 Samba 和 SCP,我可以毫无问题地复制几 MB 非常小的文件。
什么可能导致这种行为?我将非常感谢任何建议。
Windows 给出此错误消息:
There is a problem accessing H:\
Make sure you are connected to the network and try again
在服务器上,ifconfig
显示一些错误:
eth0 Link encap:Ethernet HWaddr 00:22:19:AD:52:E2
inet addr:192.168.1.7 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::222:19ff:fead:52e2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4125439 errors:72181 dropped:0 overruns:0 frame:0
TX packets:3575918 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4481289749 (4.1 GiB) TX bytes:581533090 (554.5 MiB)
Interrupt:169 Memory:dfdf0000-dfe00000
/var/log/messages
:
Aug 16 14:50:16 dev smbd[475]: [2013/08/16 14:50:16, 0] lib/util_sock.c:read_data(540)
Aug 16 14:50:16 dev smbd[475]: read_data: read failure for 4 bytes to client 192.168.1.12. Error = Connection reset by peer
Aug 16 14:50:16 dev smbd[475]: [2013/08/16 14:50:16, 0] lib/util_sock.c:write_data(568)
Aug 16 14:50:16 dev smbd[475]: write_data: write failure in writing to client 192.168.1.12. Error Broken pipe
Aug 16 14:50:16 dev smbd[475]: [2013/08/16 14:50:16, 0] lib/util_sock.c:send_smb(767)
Aug 16 14:50:16 dev smbd[475]: Error writing 75 bytes to client. -1. (Broken pipe)
/var/log/samba/smbd.log
:
[2013/08/16 14:50:16, 0] lib/util_sock.c:read_data(540)
read_data: read failure for 4 bytes to client 192.168.1.12. Error = Connection reset by peer
[2013/08/16 14:50:16, 0] lib/util_sock.c:write_data(568)
write_data: write failure in writing to client 192.168.1.12. Error Broken pipe
[2013/08/16 14:50:16, 0] lib/util_sock.c:send_smb(767)
Error writing 75 bytes to client. -1. (Broken pipe)
[2013/08/16 14:50:16, 1] smbd/service.c:make_connection_snum(1077)
liam-pc (192.168.1.12) connect to service external initially as user liam (uid=502, gid=502) (pid 529)
编辑:如果我在笔记本电脑上启动 Ubuntu,我可以毫无问题地将大文件复制到服务器上的 SMB 共享。所以问题出在 Windows 7 或 Windows 7/RHEL5 组合上。
我跑了
service network restart
,它似乎已经解决了这个问题。这似乎有点奇怪,因为问题已经存在一年多了,并且从那时起服务器已经重新启动了几次。我在 70 年代复制了一个 365MB 的文件到服务器,平均 5.2MB/s,没有错误。这听起来像是网络问题或 Windows 和 Linux Samba 版本之间的不兼容。
您是否尝试过将笔记本电脑直接插入服务器?如果它在 Ubuntu 上运行正常,那应该不是问题,但您可以尝试。
您应该捕获一些流量以查看它在您的网络中实际发生的情况。您可以在这里分享它,也许我们可以找到问题。
如果没有其他工作,你可以试试这个分析工具。我发现它真的很有趣,您可以上传 pcap 文件,然后他们会通过电子邮件向您发送分析。如我所见,您可以在表单中提交您的问题。
由于便宜的 D-link 交换机,我遇到了这个问题。例如 DGS-1008D。这个问题对于 smb 和 nfs 是一样的。
我使用 wget 和内部 http 服务器来识别网络问题:
您可以使用 python 将任何主机用作内部 http 服务器:
这将提供相对于服务器上当前目录的文件
然后在客户端使用以下命令:
如果你有一个千兆网络,你应该获得大约 90-100Mb/秒的速度。如果你有一个 10 Mbit 的网络,你应该获得大约 10 Mb/sec 的速度。
由于文件已缓存,因此可以在第二次尝试读取时达到此速度。在缓存文件之前,您将获得主机磁盘读取速度。
但是,如果您遇到以太网的网络问题,您将获得比正常速度低 10 倍的速度
关闭/打开开关可以解决问题,但需要一段时间。