我有sshfs设置连接到我没有ssh访问权限的另一个系统(Rackspace Cloud Sites)(但出于某种原因我可以使用sshfs?Go figure).我正在尝试将文件从sshfs挂载rsync到我的本地磁盘.这是几千个小文件(1k-200k).有时,rsync会暂停并暂停一段时间非常小的文件.它将暂停,例如一个10k文本文件,持续5分钟,然后它将继续.
有什么地方我可以在我的机器上查看为什么rsync会像这样挂起来?或者,对于另一端来说,我不能做任何事情的机会很有可能吗?
我的rsync选项只是-avrP.
解决方法
好吧,我准备好了,因为我觉得我的想法很有道理.
在这种情况下,你正在处理多个缓存,我认为这就是绊倒你的原因.
rsync做的第一件事就是确定需要传输哪些文件.它通常通过在远程端生成rsync实例,读取源上目录中每个文件的元数据,同时读取本地文件的元数据,然后比较两个元数据集来实现.任何更新的(或不同的,取决于rsync选项)都会被转移.
根据rsync,你没有“远程端”.您正在“本地”工作,因此它将遍历两个目录,源和目标.
这是非常耗费磁盘的,特别是对于大量小文件 – 文件越多,磁盘操作就越多.这会导致大量磁盘抖动,并且使用这些文件中的元数据填充缓存.
请注意,这种情况一直发生在堆栈中.您的本地计算机从您通过ssh和本地目录挂载的FUSE文件系统中缓存元数据.远程计算机从本地磁盘装载缓存元数据.并且运行远程计算机的VM主机几乎肯定会过度使用并为您提供膨胀的内存.
我怀疑你很可能在冻结时越过门槛,所有东西都必须赶上来,无论是解密还是交换.
我很想知道当你在没有磁盘挂载的情况下通过ssh执行rsync时是否会发生这种情况.