无法通过 SMB 共享上传大于 4MiB 的文件

无法通过 SMB 共享上传大于 4MiB 的文件

几个星期以来,我再也无法将文件上传到我的 Samba 服务器。我没有更改配置,也没有更新 Samba 以解决此问题。发生此问题时,我的 Samba 是 4.1.5,因此我尝试更新到 4.1.7,但问题仍然存在。我使用的是 Mageia Cauldron,手动编译了 Samba 4 并将其配置为 PDC。

我可以毫无问题地从 Samba 共享下载文件,从几个字节到几 GiB,速度在 8.8 到 11.2MiB/s 之间。但我只能上传小于 ~4MiB 且速度低于 100KiB/s 的文件。当我从 GNU/Linux 复制时,出现超时错误,而当我从 Windows 复制时,系统提示网络名称不再可用。

有什么办法可以解决这个问题吗?这是我的 smb.conf,如果有用的话:

[global]
workgroup = DOMAIN.ORG
server string = Samba Server Version %v

realm = AD.DOMAIN.ORG

netbios name = DOMAIN
server role = active directory domain controller
server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate
idmap_ldb:use rfc2307 = yes


encrypt passwords = yes
log level = 3
log file = /var/log/samba/samba.log
max log size = 50
template shell = /bin/bash

logon drive = P:
logon home = \\192.168.1.2\Profiles\%U
logon path = \\192.168.1.2\Profiles\%U

load printers = yes
printing = cups

[printers]
path = /var/spool/samba
browseable=yes
printable = yes
public = yes

[print$]
path = /srv/samba/Printer_drivers
comment = Printer Drivers
writeable = yes

[Data]
path = /mnt/data
read only = No

[profile]
path = /srv/samba/profile
read only = no
profile acls = yes
create mode = 0600
directory mode = 0700
browseable = no

[netlogon]
path = /var/lib/samba/sysvol/ad.domain.org/scripts
read only = No

[sysvol]
path = /var/lib/samba/sysvol
read only = No

[homes]
comment = Home Directories
browseable = no
writable = yes
force create mode = 0660
force directory mode = 0770

[Profiles]
path = /srv/samba/Profiles/
read only = no
msdfs root = yes

[IPC$]
path = %$TMPDIR
guest ok = yes
#hosts allow = 192.168.1.0/24 127.0.0.1 fe80::250:22ff:fe40:1048/64
#hosts deny = 0.0.0.0/0 ::/0

答案1

文件中有一个选项smb.conf可以禁用 TCP 连接超时前的延迟(这可能发生在连接持续太长在较大的文件上并且它认为它没有响应,可能是因为该版本存在错误),只需添加:

套接字选项 = TCP_NODELAY

到你的conf文件并测试。 来源

如果可以的话,还可以尝试将您的软件包降级到最后一个可用的版本。

更新,关于你上次的评论

关于您的速度部分,我假设您100 Mbps两端都有 2 个 NIC 连接到100 MbpsHUB 或交换机,因此如果您做一些计算,我们会得到:

100 Mbps = 100 Mbits / 8 bytes/bit = 12.5 MB/s max.

并且假设您的交换机或 NIC 不是全双工的(例如 WiFi 网络),您应该获得 ~6.25 MB/s 的 TCP 传输速度,但我认为事实并非如此,无论哪种方式,始终假设速度减慢是由通过网络的其他流量引起的,特别是如果您在通常发生冲突的 HUB 上。

另请注意100 MB/s ≠ 100 MiB/s

100 `MB/s` = 100,000,000 b = 100*10^6 b ← Base 10.

在哪里:

100 `MiB/s` = 104,857,600 b = 100*2^20 b ← Base 2.

因此,如果您的连接达到最高值12.5 MB/s并且您的工具正在测量它MiB(大多数常用工具都会这样做),那么您将得到:

12.5 MB/s = 12,500,000 b
12,500,000 b / 2^20 B = ~12 MiB/s

如果您将实际网络上的流量减慢因素考虑在内,那么这就是您的实际速度。

相关内容