加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux – rsync挂在一个大文件上

发布时间:2021-03-16 20:01:49 所属栏目:Linux 来源:网络整理
导读:每天晚上我都会使用rsync将几个虚拟磁盘从一台 Linux Debian计算机复制到另一台Linux Debian. 大多数文件都是带有“漏洞”的原始图像:某些部分从未写入,因此保留在磁盘上未分配. rsync挂在一个文件上,总是一样的.传输50 Gb后,每次都会发生挂起.我不确定这

每天晚上我都会使用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常量后重新编译

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读