AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 6711
In Process
bene
bene
Asked: 2009-05-10 14:38:38 +0800 CST2009-05-10 14:38:38 +0800 CST 2009-05-10 14:38:38 +0800 CST

数百万个小文件的文件系统

  • 772

在以下情况下,您会选择哪种 Linux 文件系统以获得最佳速度:

  • 一亿个文件
  • 平均约 2k 文件大小
  • >95% 读取访问
  • 相当随机的访问
  • 高并发(>100 个进程)

注意:文件存储在深层层次树中,以避免大目录。每个叶目录包含大约一千个文件。

您将如何对其进行基准测试?

linux filesystems benchmark
  • 7 7 个回答
  • 36188 Views

7 个回答

  • Voted
  1. Andrew Cholakian
    2009-05-10T15:37:42+08:002009-05-10T15:37:42+08:00

    在随机搜索方面,Reiser 胜出,EXT4 次之,JFS 次之。我不确定这是否与目录查找完全相关,但它似乎是一个指标。您必须专门为此进行自己的测试。EXT2 在文件创建时间上胜过一切,可能是因为它缺少日志,但 EXT4 仍然胜过除 Reiser 之外的所有东西,由于 hans reiser 的当前状态,您可能不想使用它。

    您可能想查看支持 NCQ 的驱动器,并确保您的安装设置为使用它。在繁重的搜索下,它应该提供速度提升。

    最后,确保你的机器有大量的内存。由于文件不经常更新,如果有空闲空间,linux 最终会将它们中的大部分缓存到内存中。如果您的使用模式正确,这将为您带来巨大的速度提升。

    • 23
  2. Mike
    2009-05-10T16:34:13+08:002009-05-10T16:34:13+08:00

    我同意 Andrew 所说的大部分内容,但我会推荐Reiser4或更旧的(但得到更好的支持)ReiserFS。正如这些测试(以及 ReiserFS 的文档)所表明的那样,它专为您所询问的情况(大量小文件或目录)而设计。我过去在 Gentoo 和 Ubuntu 上使用过 ReiserFS,没有任何问题。

    至于 Hans Reiser 的状态,我不认为这是文件系统本身的代码或稳定性问题。Reiser4 甚至得到了 DARPA 和 Linspire 的赞助,所以虽然我同意 Reiser 文件系统的进一步开发尚未确定,但我不认为这应该成为决定是否有人应该使用它的因素。

    • 8
  3. Jeroen Landheer
    2009-05-10T23:09:23+08:002009-05-10T23:09:23+08:00

    我知道这不是您问题的直接答案,但在这些情况下,我认为数据库可能更适合托管它。小文件可以二进制格式存储在数据库表中,并可以随意检索。使用这些文件的软件应该能够支持这一点......

    • 4
  4. thenickdude
    2013-04-04T22:22:06+08:002013-04-04T22:22:06+08:00

    Unix StackExchange 上的某个人创建了一个基准测试(带有源代码)来测试这种情况:

    问:存储大量小文件(HDD,而不是 SSD)的最高性能 Linux 文件系统是什么?

    最好的读取性能似乎来自 ReiserFS。

    • 3
  5. Jason Hall
    2015-10-31T08:51:00+08:002015-10-31T08:51:00+08:00

    以我的经验,ext2 将 ext4 用于小文件。如果您不关心写入完整性,那就太好了。例如,subversion 创建了很多很多很多的小文件,ext4 和其他文件系统(XFS)会阻塞(运行一个 cron 作业,每半小时左右将数据从 ext2 rsync 到 ext4,实际上可以解决问题。)

    运行这些命令可以使 ext2 更快(尽管这些选项中的大多数会使文件系统在崩溃后变得不稳定,除非您在崩溃之前运行同步)。这些命令对带有小文件的 ext4 几乎没有影响。

    echo 15 > /proc/sys/vm/swappiness
    echo 10 > /proc/sys/vm/vfs_cache_pressure
    echo 99 > /proc/sys/vm/dirty_ratio
    echo 50 > /proc/sys/vm/dirty_background_ratio
    echo 360000 > /proc/sys/vm/dirty_expire_centisecs
    echo 360000 > /proc/sys/vm/dirty_writeback_centisecs
    echo "2000" > /proc/sys/vm/vfs_cache_pressure
    
    • 3
  6. p_l
    2009-06-01T09:07:47+08:002009-06-01T09:07:47+08:00

    我猜想 ext3(或 ext4),也许 JFS 会是不错的解决方案。我会对 ext4 和 btrfs 保持警惕(文件系统很棘手——如果你想使用最新的东西,请准备好备份)。

    您还可以在 mkfs 期间调整各种参数,以根据自己的喜好调整文件系统。

    我当然会推荐反对XFS。不是因为它是一个糟糕的文件系统,而是因为创建/删除是一项昂贵的操作。


    为避免目录搜索出现问题,请使用智能命名方案,例如:

    <first letter of id>_<last letter of id>/<id>
    

    或类似的,更复杂的方案。这将加快您的目录搜索速度,从而提高整体访问速度。(这是一个古老的 unix 技巧,我认为是从 V7 回来的)

    • 1
  7. Ronald Pottol
    2009-06-08T20:38:19+08:002009-06-08T20:38:19+08:00

    大多数 FS 会在一个目录中被超过 65K 的文件阻塞,我认为 ext4 仍然如此。Reiser 文件系统没有这个限制(mp3.com 上的人付钱来确保这一点)。不确定其他任何事情,但这是 ReiserFS 的使用场景之一。

    • 1

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve