要同步大文件或具有低到中等差异的块设备,您可以执行普通复制或使用bdsync,rsync绝对不适合这种特殊情况*。
bdsync
为我工作,看起来已经足够成熟,它的错误历史令人鼓舞(小问题,迅速解决)。在我的测试中,它的速度接近您可以达到的理论最大值**(也就是说,您可以在大约需要读取文件的时间进行同步)。最后,它是开源的,不花任何钱。
bdsync
从两个主机读取文件并交换校验和以比较它们并检测差异。所有这些都在同一时间。最后,它将在源主机上创建一个压缩的补丁文件。然后,您将该文件移至目标主机,然后再次运行bdsync修补目标文件。
当通过相当快的链接(例如100Mbit以太网)使用它时,并且对于差异很小的文件(在VM磁盘上最常见的情况),它可以将同步时间减少到读取文件所需的时间。通过慢速链接,您需要花费更多时间,因为您必须将压缩的更改从一台主机复制到另一台主机(看来您可以使用一个不错的技巧来节省时间,但尚未进行测试)。
*:rsync处理大型文件的效率非常低。即使使用--inplace,它也将首先读取目标主机上的整个文件,而AFTERWARDS将开始读取源主机上的文件,最后传输差异(只需在运行rsync并观察时运行dstat或类似命令)。结果是,即使对于差异很小的文件,也需要大约两倍的时间才能读取文件以使其同步。
**:假设您没有其他方法可以判断文件的哪些部分已更改。LVM快照使用位图来记录更改的块,因此它们可以非常快(lvmsync的自述文件提供了更多信息)。