我有一台运行 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 ...
我知道自 Windows 7 以来,Windows 8 中的 SMB 实现发生了变化。我是否可以对 smb.conf 进行更改以解决 CPU 使用率激增的问题?