我的局域网上有一台Debian机器,作为其他机器的备份服务器。它在LVM和btrfs上将四个HDD组合成一个软件RAID 5 md设备。备份是使用rsync进行的,大型文件系统需要一个多小时。很长时间以来,我一直认为我对此无能为力。
但是,最近,我注意到硬盘的活动在传输的两端都非常不同。尽管运行Gentoo并主要使用ext4的发送方几乎没有任何磁盘IO,但是接收方一直很忙。由于大多数数据在两次传输之间不会改变,因此我认为元数据读取应构成大部分数据。但是,如果在btrfs中读取inode而不是在ext4中进行如此大的工作,我会感到非常惊讶。
iotop
经确认,接收方的磁盘读取速度约为1-4 MB / s,而发送方偶尔只有0.5 MB / s的突发速度。
我的问题是,谁能解释这是怎么回事?最好带有一些指示,如果可能的话,如何解决该问题。
也许有一些我可以使用的btrfs调整标志,或者类似的东西。我需要备份服务器上具有快照功能的FS,而我尝试使用FreeBSD和ZFS会很快导致FS不一致,因此目前我看不到btrfs的替代方案。因此,告诉我使用ext4或zfs的答案可能会收到投票,但没有复选标记。
--rsync-path='rsync --fake-super'
--archive # -rlptgoD
--hard-links # detect and preserve these
--acls
--xattrs
--sparse
--noatime # based on patch from samba #7249c1
--delete
--delete-delay
--fuzzy
--human-readable # size suffixes, base 1000
--stats
以及一堆-f
删除某些文件的规则。
btrfs的安装选项报告mount
为
rw,nosuid,noexec,noatime,nospace_cache
特别是,这包括noatime
标志,因此除非某些文件中确实存在差异,否则不应该涉及任何写作。我响应添加了这个信息的答案由凯尔·琼斯。
dtrace
或systemtap
找出花费时间的地方。