SMBD 守护程序在 Windows 8 客户端连接时 CPU 使用率达到 100%

Chr*_*son 6 ubuntu server-message-block smb-conf windows-8

我有一台运行 Ubuntu 12.04 的服务器作为 Samba 服务器运行。文件系统是 LVM 物理驱动器池上的 XFS 格式虚拟驱动器。

我最近将我们的客户端升级到 Windows 8,我注意到客户端连接 Ubuntu 服务器上的 SMB 共享有 6-8 秒的延迟。在 Windows 7 中,没有这样的延迟。在 Ubuntu 服务器上,SMBD 进程在与共享的初始连接期间会在几秒钟内达到 100% CPU 使用率。

strace显示 smbd 在该连接期间一遍又一遍地打开 /etc/passwd。我的客户应该以访客身份连接(无身份验证)。

open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 28
_llseek(28, 0, [0], SEEK_CUR)           = 0
fstat64(28, {st_mode=S_IFREG|0644, st_size=1568, ...}) = 0
mmap2(NULL, 1568, PROT_READ, MAP_SHARED, 28, 0) = 0xb6de2000
_llseek(28, 1568, [1568], SEEK_SET)     = 0
fstat64(28, {st_mode=S_IFREG|0644, st_size=1568, ...}) = 0
munmap(0xb6de2000, 1568)                = 0
close(28)                               = 0
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 28
_llseek(28, 0, [0], SEEK_CUR)           = 0
fstat64(28, {st_mode=S_IFREG|0644, st_size=1568, ...}) = 0
mmap2(NULL, 1568, PROT_READ, MAP_SHARED, 28, 0) = 0xb6de2000
_llseek(28, 1568, [1568], SEEK_SET)     = 0
fstat64(28, {st_mode=S_IFREG|0644, st_size=1568, ...}) = 0
munmap(0xb6de2000, 1568)                = 0
close(28)  
... repeats over and over ...
Run Code Online (Sandbox Code Playgroud)

我知道自 Windows 7 以来,Windows 8 中的 SMB 实现已更改。我可以对 smb.conf 进行更改以解决 CPU 使用率飙升的问题吗?

Chr*_*son 5

通过在 smb.conf 中进行以下更改,我能够解决从 Windows 8 登录的延迟问题:

encrypt passwords = yes
Run Code Online (Sandbox Code Playgroud)