在目录中有大量文件的不可靠NFS

我在主机上安装了一个NFS目录。 该目录现在有60万个日志文件,最终将有160万个日志文件。 这些文件很小,大部分都小于1MB。

问题是,我无法可靠地find该目录中一天中的所有文件。

如果我在下面运行这样的命令,我应该得到一天4320个文件,但是我可以得到从1到4320的任何数字,例如:

$ find /mnt/log -type f -name "some-prefix-rolling.log.2015-07-05*" | wc -l 2548 

我必须按照原样读取这个目录。 我不能做任何改变,比如把一天的日志文件放在一个文件夹中,因为其他一些应用程序依赖于这个设置。

挂载选项是:ro,noatime,bg,hard,rsize = 32768,wsize = 32768,vers = 3

有谁知道如何解决这个问题?

虽然将文件存储在子目录中是理想的,但正确的(和预期的)行为并不是你所看到的。 一些提示来追踪问题:

  • 检查你的源文件系统:如果你直接在数据源上运行命令,它是否正确地完成?
  • 对于如此多的文件,您的源文件系统应该是XFS或ZFS 。 避免EXT4和BTRFS
  • 尝试切换客户端caching ( FScaching模块)
  • 做一个简单的ls -al | wc -l ls -al | wc -l返回一致的结果?

这篇文章给出了文件系统的一些上限。 不pipe在一个目录中可以存储多less个文件的“硬性限制”,你将很快遇到性能问题…在成千上万个文件的数十个文件中,不是几千个文件,尤其是如果你正在使用一个实用程序就像发现它必须parsing整个目录。