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

2021-01-13 12:26:45 +08:00
 mrsupns

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

6623 次点击
所在节点    Linux
25 条回复
Osk
2021-01-13 12:34:49 +08:00
小文件估计无解,nfs smb 9p 等似乎都快不起来
matrix67
2021-01-13 12:37:23 +08:00
小文件,tcp 的慢启动,再加上创建文件啥的都需要网路 io 。

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

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

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

但是归根结底,在 NFS 上存储小文件性能低的根源是 NFS 的设计本身。如果 NFS RPC 可以全部并行的话,存储小文件的性能会提高很多。
mrsupns
2021-01-13 17:13:23 +08:00
不只是传输的问题,我们程序有依赖,需要 find 某目录下的文件并循环文件名,然后做处理。因为是在 nfs 服务器上,所以循环的时候特别慢
zlowly
2021-01-13 17:27:35 +08:00
如果你的 nfs 可以用 v3 协议的话可以打开 async,不过看你 size 只设到 8k,是不是只能用 v2 协议?
另外对本身存放海量文件的服务器还可以调整一下文件系统参数例如 ext4 里设置 noatime 等。
mrsupns
2021-01-13 18:17:25 +08:00
@zlowly 如果是 v3 的应该要给多少 K

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/744514

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX