V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
mrsupns
V2EX  ›  Linux

nfs 服务器海量小文件传输效率慢的问题

  •  
  •   mrsupns · 2021-01-13 12:26:45 +08:00 · 6580 次点击
    这是一个创建于 1409 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有一台 nfs 服务器,挂载到一台业务服务器,有海量的小文件需要拷贝到 nfs 服务器上,经过测试发现:单个大文件传输速度很快,但是海量的小文件传输就很慢了。添加挂载参数 rsize=8192,wsize=8192,发现效率还是很慢;这个问题如何优化?

    25 条回复    2021-01-20 05:28:11 +08:00
    Osk
        1
    Osk  
       2021-01-13 12:34:49 +08:00 via Android
    小文件估计无解,nfs smb 9p 等似乎都快不起来
    matrix67
        2
    matrix67  
       2021-01-13 12:37:23 +08:00
    小文件,tcp 的慢启动,再加上创建文件啥的都需要网路 io 。

    tar 打包压缩,传了再解压。
    reus
        3
    reus  
       2021-01-13 12:37:47 +08:00
    开多线程并发传
    mrsupns
        4
    mrsupns  
    OP
       2021-01-13 12:40:04 +08:00
    @matrix67 不能 tar
    Jirajine
        5
    Jirajine  
       2021-01-13 12:45:04 +08:00 via Android   ❤️ 3
    tar 打包,输出到 stdout,走管道。
    另一端 tar 从 stdin 解包,释放到文件系统。
    中间可以通过 ssh 、netcat 等方式连接。
    d0m2o08
        6
    d0m2o08  
       2021-01-13 12:49:40 +08:00
    换对象存储🤣
    Songxwn
        7
    Songxwn  
       2021-01-13 12:56:02 +08:00
    全闪存
    MasterMonkey
        8
    MasterMonkey  
       2021-01-13 13:00:47 +08:00 via iPhone
    @Jirajine 赞同
    nightwitch
        9
    nightwitch  
       2021-01-13 13:29:29 +08:00
    tar 呗,不能 tar 总得有个原因吧。
    GGGG430
        10
    GGGG430  
       2021-01-13 13:32:38 +08:00 via iPhone
    @Jirajine 老哥详细说说怎么实现呢
    CallMeReznov
        11
    CallMeReznov  
       2021-01-13 13:48:31 +08:00
    对象存储
    zent00
        12
    zent00  
       2021-01-13 13:49:55 +08:00 via iPhone
    tar cvf - src_path | tar xvf - -C nfs_path
    zent00
        13
    zent00  
       2021-01-13 14:07:04 +08:00   ❤️ 1
    抱歉,刚才路上手机匆忙回复,没有细想,上一条给出的方法还是走 NFS 进行写入操作,没有意义。

    如果你走 SSH 的话,这样操作:
    tar cvf - src_path | ssh user@dst_host "tar xvf - -C dst_path"
    mrsupns
        14
    mrsupns  
    OP
       2021-01-13 14:21:40 +08:00
    @zent00 我们这边是要通过 nfs 共享文件,有没有啥参数可以优化一下的?
    dorothyREN
        15
    dorothyREN  
       2021-01-13 15:23:24 +08:00
    基本上 无解
    willis
        16
    willis  
       2021-01-13 15:46:51 +08:00
    如果只是一次性传输,用 rsync 传吧,支持断点续传
    zk8802
        17
    zk8802  
       2021-01-13 16:12:44 +08:00
    有两个点可以注意一下:

    - 存储服务器不要用 ZFS 。NFS on ZFS 存储小文件时很慢。
    - 用 nfsstat 和 nfsiostat 看看有没有性能上的问题。有时候瓶颈是网络 IO,有时候瓶颈是存储服务器的性能。
    - 试试 pNFS 。

    但是归根结底,在 NFS 上存储小文件性能低的根源是 NFS 的设计本身。如果 NFS RPC 可以全部并行的话,存储小文件的性能会提高很多。
    mrsupns
        18
    mrsupns  
    OP
       2021-01-13 17:13:23 +08:00
    不只是传输的问题,我们程序有依赖,需要 find 某目录下的文件并循环文件名,然后做处理。因为是在 nfs 服务器上,所以循环的时候特别慢
    zlowly
        19
    zlowly  
       2021-01-13 17:27:35 +08:00
    如果你的 nfs 可以用 v3 协议的话可以打开 async,不过看你 size 只设到 8k,是不是只能用 v2 协议?
    另外对本身存放海量文件的服务器还可以调整一下文件系统参数例如 ext4 里设置 noatime 等。
    mrsupns
        20
    mrsupns  
    OP
       2021-01-13 18:17:25 +08:00
    @zlowly 如果是 v3 的应该要给多少 K
    felixcode
        21
    felixcode  
       2021-01-13 18:21:12 +08:00
    zlowly
        22
    zlowly  
       2021-01-13 23:19:37 +08:00
    @mrsupns 对于 v3 和 v4 一般缺省就是 32k,网络稳定且 tcp 传输的话你可以测试下调高到 64k 。
    snip
        23
    snip  
       2021-01-15 09:21:12 +08:00
    用 rsync 试试呢?
    mrsupns
        24
    mrsupns  
    OP
       2021-01-15 14:41:29 +08:00
    @snip 不行呢
    xcstream
        25
    xcstream  
       2021-01-20 05:28:11 +08:00
    iscsi 会比 nfs 好一些么
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3811 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:13 · PVG 13:13 · LAX 21:13 · JFK 00:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.