我有一台运行 Ubuntu 12.04 的服务器,它作为 Samba 服务器运行。文件系统是物理驱动器 LVM 池上的 XFS 格式的虚拟驱动器。
我最近将我们的客户端升级到了 Windows 8,我注意到客户端连接 Ubuntu 服务器上的 SMB 共享时有 6-8 秒的延迟。使用 Windows 7 时,不会出现这种延迟。在 Ubuntu 服务器上,在首次连接共享时,SMBD 进程的 CPU 使用率会在几秒钟内达到 100%。
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 8 中的 SMB 实现自 Windows 7 以来已经发生了变化。我可以对 smb.conf 进行哪些更改来解决 CPU 使用率激增的问题?
答案1
通过在 smb.conf 中进行以下更改,我可以解决从 Windows 8 登录的延迟问题:
encrypt passwords = yes