mv 到 nfs“无法创建常规文件...文件存在”但创建空文件

mv 到 nfs“无法创建常规文件...文件存在”但创建空文件

我有一个自动脚本,可以将数据文件从计算机上收集到的数据文件移动到中央 NFS 服务器上,以便进行更常规的访问。我最近发现大约 1% 的文件无法移动,mv 报告有关文件已存在的错误:

mv: cannot create regular file `/mnt/data/2015/20150410_004130.dat': File exists

问题是,直到之前,文件存在,并且在 mv 尝试创建它之后,它存在,但大小为 0,权限为 0000,并且日期可以追溯到 1970 年代(每次发生这种情况时,确切的日期似乎都会稍微增加)。

我更新了我的脚本以mv使用运行strace,并且失败的情况看起来与成功的情况完全相同,直到实际失败发生:

  1. 尝试直接重命名。失败(跨设备链接无效)
  2. 取消链接目标。失败(没有这样的文件或目录)
  3. 可供阅读的开源文件
  4. 使用选项 O_WRONLY|O_CREAT|O_EXCL,perms 0600 打开目标文件。通常可以工作,偶尔会失败,声称“文件存在”

我相当有信心,没有其他任何东西应该尝试创建此文件,尽管还有另一个脚本在数据文件完成后正在处理数据文件(实际上将它们移动到另一台服务器)。

这种行为似乎是在我在 NFS 服务器上从 Ubuntu 10.04 更新到 Ubuntu 14.04 的同时开始的(客户端配置未更改)。

相关内容