我遇到的情况是,我的文件服务器 (linux) 正在通过 NFS 将文件系统导出到数据库服务器 (linux)。因此,文件服务器 (FS) 充当 NFS 服务器,而数据库服务器 (DBS) 是客户端。FS 上的导出选项是 rw、sync,DBS 上的挂载选项是 rw、sync、acdirmin=0、acdirmax=0、lookupcache=none、vers=4。我有一个进程将文件复制到 FS 上的 NFS 文件系统。数据库使用此文件的内容进行自己的处理,不久之后,该进程删除 FS 上的文件并使用相同的文件名将第二个文件复制到同一位置。然后,数据库应该使用第二个文件来执行其工作,但由于某种奇怪的原因,在客户端,数据库仍然可以看到第一个文件。只有我在复制第二个文件之前删除第一个文件时,才会发生这种情况。客户端有时需要将近一分钟的时间才能显示新文件。但是,如果我通过不删除第一个文件而是简单地复制第二个文件并覆盖第一个文件来“替换”第一个文件,它会立即显示在客户端。
有人知道是什么原因造成的以及我应该怎么做才能使用“先删除”方法使其工作?