linux – rsync挂在一个大文件上

每天晚上我都会使用rsync将几个虚拟磁盘从一台 Linux Debian计算机复制到另一台Linux Debian.
大多数文件都是带有“漏洞”的原始图像:某些部分从未写入,因此保留在磁盘上未分配.

rsync挂在一个文件上,总是一样的.传输50 Gb后,每次都会发生挂起.我不确定这是否总是在完全相同的点,但是ls -sh显示50 Gb.
这是一个包含151 Gb的800 Gb文件(所以649 Gb是未分配的).其他一些虚拟磁盘有类似的数字,rsync在它们上运行良好.

如果我使用rsync在本地更新文件,没有任何网络参与(使用–no-whole-file,这是一个要求,请参阅后面的内容),我的行为完全相同.

一旦rsync停止运行,它就会使用一个CPU核心达到100%并且在接收端使用零磁盘活动(这是一个拉取请求,因此rsync从这一侧运行)并且在发送端使用零CPU和零磁盘.
我让它在几个小时内运行.
Ctrl c立即停止rsync.
当运行本地复制时,一旦停止,我还有一个100%的CPU核心和零磁盘活动.

我找到的唯一例外是当我将此文件rsync到新位置时(即目标文件不存在).所以我怀疑这个问题与旧数据和新数据之间的比较有关.

我使用–inplace来限制对目标磁盘的写入,因为每次备份后都会使用快照.所以这个选项是一个要求,也是rsync,除非我发现一个工具只能更新这些文件的更改部分.

解决方法

众所周知,rsync在大型文件上存在这种问题,因为内部哈希缓冲区的算法效率低下.

您必须使用具有较大值的–block-size选项.但是当前版本不允许使用超过128 kB.一些网页告诉使用–block-size = 10485760 –protocol = 29但在我的情况下它被rsync拒绝.

>使用29或更早版本>或修改MAX_BLOCK_SIZE常量后重新编译

相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...