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 / 问题 / 31628
Accepted
Arie K
Arie K
Asked: 2009-06-26 06:57:10 +0800 CST2009-06-26 06:57:10 +0800 CST 2009-06-26 06:57:10 +0800 CST

小文件的 NFS 传输性能慢

  • 772

我在使用 RAID 1+0 组合的 HP ML370 G5、Smart Array P400、SAS 磁盘上使用 Openfiler 2.3。

我使用 Openfiler 的基于 Web 的配置从 ext3 分区设置了 NFS 共享,并且成功地从另一台主机挂载了该共享。两台主机都使用专用的千兆链路连接。

使用简单的基准测试dd:

 $ dd if=/dev/zero of=outfile bs=1000 count=2000000
 2000000+0 records in
 2000000+0 records out
 2000000000 bytes (2.0 GB) copied, 34.4737 s, 58.0 MB/s

我看到它可以达到中等传输速度(58.0 MB/s)。

但是,如果我复制一个包含许多总大小约为 300 MB 的小文件(每个文件大约 1-4 kB)的目录,则该.php过程将在大约 10 分钟内结束。.jpgcp

NFS 不适合像上述情况那样的小文件传输吗?还是有一些必须调整的参数?

performance nfs
  • 7 7 个回答
  • 32790 Views

7 个回答

  • Voted
  1. Evan Anderson
    2009-06-26T07:02:02+08:002009-06-26T07:02:02+08:00

    我没有太多 NFS 经验,但我对其他网络文件共享协议的经验表明,在“许多小文件”场景中,性能几乎普遍受到影响。您正在招致往返延迟,并且在一大组文件中延迟加起来。

    • 8
  2. Best Answer
    Kamil Kisiel
    2009-06-26T07:20:18+08:002009-06-26T07:20:18+08:00

    传输许多小文件总是比传输单个大文件慢的原因有很多。对于读取,文件更有可能分散在磁盘周围,需要到处寻找才能获取它们。正如 Evan 所提到的,在 NFS(或任何其他文件系统)的情况下还涉及元数据,这也使事情变得复杂。

    您可以尝试增加NFS 挂载的参数rsize和wsize参数,看看这是否有助于提高性能。还可以查看这个关于调整 NFS 以获得最小延迟的问题,因为它有很多有用的建议,可以在许多小文件传输的情况下提供帮助。

    • 8
  3. pauska
    2009-06-26T07:19:10+08:002009-06-26T07:19:10+08:00

    您是否尝试过使用不同的文件系统,例如 XFS?它解决了我在进行大量小型 iSCSI 块传输时的所有问题。不知道为什么。

    此外,iSCSI/NFS 通常配置用于相当大的数据帧(巨型帧等),如果您一次复制一个小文件,可能会伤害您。也许tar'ing然后转移会帮助你。

    • 4
  4. wazoox
    2009-06-26T07:48:58+08:002009-06-26T07:48:58+08:00

    检查您是否正在使用 TCP 连接(mount -t nfs -o tcp host:/mount /target)。现代系统的性能不会受到影响,但如果您的网络已加载,小型 IO 可能会显着提高。

    您还应该尝试其他一些文件系统;ext3 基本上是最慢的。它很可靠,众所周知,但它非常不适合文件服务器。XFS 要好得多,reiserfs 在小型 IO 上也好得多。

    • 1
  5. Chris Adamson
    2009-08-13T17:41:33+08:002009-08-13T17:41:33+08:00

    如果你想通过 NFS 传输一个由小文件组成的大目录树,并且你可以登录到服务器,最好的方法是在客户端制作一个自动解压的 tar 文件,如下所示:

    tar c mydirectory | ssh user@host tar -xf - -C destdir

    这样,只有一个“文件”通过网络传输,您立即将所有文件放在主机上。

    • 1
  6. Aleksandr Dubinsky
    2020-02-29T11:17:55+08:002020-02-29T11:17:55+08:00

    问题是您的共享是使用sync选项(默认值)导出的。用于async大大加快写入速度。见 nfs.sourceforge.net/nfs-howto/ar01s05.html

    • 1
  7. Ztyx
    2010-03-31T00:46:27+08:002010-03-31T00:46:27+08:00

    与克里斯的回答类似的解决方案是定期将您的文件同步到客户端。如果您想进行双向更改,您也可以使用一致。

    • -1

相关问题

  • 严重的写入性能问题

  • 什么会导致 Apache HTTPD 无限期地使用 100% CPU

  • 什么是监视和调试 IIS 性能问题的好工具/技术?

  • Citrix 登录性能

  • 上线的第一天:如何不杀死您的网站

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