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

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

  •  
  •   mrsupns · 322 天前 · 3066 次点击
    这是一个创建于 322 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    如果你走 SSH 的话,这样操作:
    tar cvf - src_path | ssh [email protected]_host "tar xvf - -C dst_path"
    mrsupns
        14
    mrsupns   322 天前
    @zent00 我们这边是要通过 nfs 共享文件,有没有啥参数可以优化一下的?
    dorothyREN
        15
    dorothyREN   321 天前
    基本上 无解
    willis
        16
    willis   321 天前
    如果只是一次性传输,用 rsync 传吧,支持断点续传
    zk8802
        17
    zk8802   321 天前
    有两个点可以注意一下:

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

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