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

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

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

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

如果我运行下面这样的命令,我应该得到一天的 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

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

答案1

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

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

答案2

这篇文章给出了文件系统的一些上限。无论目录中可以存储多少个文件的“硬限制”如何,您很快就会遇到性能问题……在数万个文件中,而不是数十万个文件中,特别是当您使用像这样的实用程序时寻找它必须解析整个目录。

相关内容