从 NFS 到本地磁盘复制大文件性能下降

从 NFS 到本地磁盘复制大文件性能下降

我正在尝试将一个 200GB 的文件从 NFS 挂载复制到本地磁盘。本地磁盘是位于 RAID 5 系统(硬件 RAID 控制器)之上的 LVM 上的 XFS 文件系统。

我用它rsync来监控传输速度。一开始,IO 速度大约为 200MB/s,前 18GB 很稳定。但随后性能下降了 10-20 倍,再也没有恢复到初始速度。有时它会达到 50-100MB/s 左右,但只持续几秒钟,然后过程似乎会暂停一会儿。

同时,目标文件系统上的所有文件状态操作都会被长时间阻塞(几分钟)。此外,中断复制过程也会阻塞几分钟。随后删除部分复制的文件也需要几分钟。

知道是什么原因造成的吗?

答案1

感谢 jet 的评论,我研究了 Linux 下磁盘 IO 的缓存。结果发现,由于系统有大量 RAM(48GB),几乎是空闲的,因此很多都用于 I/O 缓存。

我监控了 /proc/meminfo 并查找字段“Dirty”(脏 I/O 缓存页)和“Writeback”(将脏页写入磁盘)。

watch -n1 -- "grep -E Dirty|Writeback /proc/meminfo"

显示 Dirty 增加到大约 18GB,然后再次下降,而 Writeback 增加,一旦 Dirty 页被写入,它就会再次增长等等。使用iostat一个监控磁盘 io 可以看到,在缓存期间磁盘不会写入,只有在“Writeback”减少时数据才会写入磁盘。写入速度约为 15MB/s。

因此,前 18GB 速度很快,写入缓存,但是,当实际写入时,速度会变慢,并且在写入时磁盘 I/O 已饱和并阻塞,直到所有脏页都发送到磁盘。

相关内容