【问题标题】:The max number of files in one directory?一个目录中的最大文件数?
【发布时间】:2012-06-09 12:30:54
【问题描述】:

一个目录(在任何主机中)中的文件数量是否有任何限制?
如果我有一个包含 30k(命名为 1 到 3ok)文件的目录和另一个只有 10 个文件的目录,那么获取特定文件的性能是否存在重大差异?
谢谢

【问题讨论】:

  • 您必须提供有关您的文件系统类型的更多信息。
  • 一个关于性能的快速提示:我在一个包含数千个文件的服务器上看到了一个带有日志文件的目录。它可以作为 samba 共享访问。通过网络搜索那里的东西很有趣。但这暗示:非常取决于您的操作系统、FS 和您的具体问题。

标签: performance file filesystems operating-system


【解决方案1】:

这取决于您的文件系统类型。这个问题的答案将在您当前的文件系统类型规范中找到。

Archlinux 维基perfomance optimizing page

总结:

  • XFS:大文件性能卓越。小文件速度低。 /home 的不错选择。 -Reiserfs:小文件的出色性能。 /var 的不错选择。
  • Ext3:性能一般,可靠。
  • Ext4:整体性能出色,可靠,sqlite 和其他一些数据库存在性能问题。
  • JFS:整体性能好,CPU占用率极低,断电后恢复极快。
  • Btrfs:可能是最佳的整体性能(压缩)和许多功能。仍在大力开发和完全支持,但被认为是不稳定的。除非您知道自己在做什么并为潜在的数据丢失做好准备,否则请不要使用此文件系统。

fsck time vs Inode Count

【讨论】:

    【解决方案2】:

    我想说文件的最大数量是特定于操作系统和文件系统的。但是在访问文件时,在一个目录中拥有大量 ob 文件会极大地影响您的性能。

    我无法为您提供任何特定 os/fs 的任何数字,但如果您遇到性能问题,也许可以提供解决方案:

    在 mediawiki 软件(即运行 wikipedia 的软件)中,他们使用子目录来解决该问题。这就是他们存储媒体文件的方式:

    1. md5-hash 文件名
    2. 将 md5hash 的第一个数字作为文件 dir 的子目录
    3. 将 md5hash 的前 2 位数字作为该子目录的子目录的名称
    4. 将文件存储在那里

    这样他们可以仅通过名称找到文件,但不需要依赖良好的 os/fs 来获取大量文件。结果是这样的:

    http://upload.wikimedia.org/wikipedia/commons/7/74/Flag_of_Hamburg.svgFlag_of_Hamburg.svg 的路径

    【讨论】:

      猜你喜欢
      • 2010-09-28
      • 1970-01-01
      • 2012-01-04
      • 2013-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多