我目前正在将大型目录树从外部 HDD 复制到服务器的内部存储。复制操作的性能基本相当不错,即通过USB2连接外置硬盘时为35MB/s。
但是,我只获得了大约 30 秒的性能,然后复制过程没有得到任何 CPU 时间。这意味着,rsync(以及 cp)不会复制任何数据,不会更新其标准输出,或对 SIG-TERM 做出反应。大约 1 分钟后,它再次被调度并以 35MB/s 的速度再次复制 30 秒,然后再没有任何东西,依此类推。
有谁知道这里会发生什么或给我命名任何工具来调查正在发生的事情?我已经将 rsync 进程的 nice 值增加到 19,但这并没有改变任何东西。在rsync的空闲时间内,整个系统处于空闲状态(没有其他IO,没有其他占用CPU的进程。基本上整个系统都是空闲的)。在活动期间,rsync 进程具有三个线程,它们在“运行”、“不可中断睡眠”和“可中断睡眠”之间切换。在非活动期间,所有线程要么处于“不可中断睡眠”状态,要么处于“可中断睡眠”状态。正因为如此,我认为 rsync 必须等待一些持久的 IO 操作。但是我怎么能确定什么操作需要这么多时间呢?
该系统在 5.4.34-1-pve linux 内核上运行,内部存储是 LVM 上的 LUKS 加密 ZFS 文件系统。LVM 位于 mdadm RAID 5 之上。我用来启动 rsync 的命令是:rsync -ah --no-compress --progess
感谢您的任何建议!