最新 Samba 版本存在文件锁定问题(来自 XP 下的 DOS/Clipper)

最新 Samba 版本存在文件锁定问题(来自 XP 下的 DOS/Clipper)

我们有几个 DOS 应用程序(Clipper),它们在文件服务器上共享数据库文件。这些应用程序在 XP 下运行。这在 Netware 上已经运行了大约二十年,在 Samba(成员服务器)上也运行了多年,没有出现问题。

几周前,我将 openSUSE 从 11.4 (samba-3.6.3) 升级到 12.2 (samba-3.6.7),并更换了硬件(换成了 AMD E-450,6 GiB RAM)。更糟糕的是(从调试的角度来看),那时交换机也换了(从 100 Mbit 换成了 48 端口 Gb 交换机)。

从那时起(由于用户没有立即告诉我们,因此不清楚具体从什么时候开始发生变化……)一些用户在使用某些 DOS 应用程序时遇到了严重问题,这些问题无法准确重现。这似乎与访问权限或(更可能的)文件锁定有关。据我们所知,这些应用程序对文件进行字节范围锁定。我不知道我是否(以及如何)可以从 samba 获取此类调试信息。访问这些文件没有一般问题。Oplocks 已启用(禁用是不可接受的,也不能解决问题)。

然后我改变了服务器结构:以前 Samba 在真实硬件上运行。我将主机操作系统设置为一个简单的安装(仅用作虚拟机的主机),并将 Samba 放入虚拟机中,使用 openSUSE 11.4 安装,以前运行没有问题。从那时起,问题就没有消失。升级 Samba VM(至 12.2)似乎使情况变得更糟。常规 Windows 共享访问似乎在任何这些配置中都没有受到影响。ifconfig 显示,大约每 4000 个 RX 数据包中就有一个在接口上被丢弃,这对我来说似乎没问题。

有没有什么想法,无论是针对真正的问题,还是针对精确的 Samba 调试/跟踪,都可以向我展示 Samba 和 XP 客户端之间的通信到底出了什么问题?

如果没有更好的想法,我可能会先尝试不同的 NIC。几年前,它为我解决了一个(一般的,与 DOS 无关的)Samba 问题。

答案1

确保从客户端角度隔离错误。在服务器端进行调试之前,您必须了解客户端尝试执行的操作。

请注意,DOS 对 Oplocks 一无所知 - 所以我不太明白它们会如何影响您遇到的这个特定问题。当客户端使用标准 DOS 系统调用锁定文件时,它将被整体锁定。然后第二个客户端将遇到所描述的“错误 5”。

由于之前这种方法有效,因此怀疑应用程序没有使用标准锁定机制,而是使用自己的锁定机制(无论它是什么)。这意味着其他进程锁定了该文件。您可以使用 来搜索打开的文件(锁)lsof

相关内容