![复制具有许多硬链接的大分区内容的最佳方法](https://linux22.com/image/1475294/%E5%A4%8D%E5%88%B6%E5%85%B7%E6%9C%89%E8%AE%B8%E5%A4%9A%E7%A1%AC%E9%93%BE%E6%8E%A5%E7%9A%84%E5%A4%A7%E5%88%86%E5%8C%BA%E5%86%85%E5%AE%B9%E7%9A%84%E6%9C%80%E4%BD%B3%E6%96%B9%E6%B3%95.png)
我们有一个使用 ReiserFS 的近 16TB 的 LVM。现在我们想添加更多磁盘,但无法继续使用 ReiserFS,因为它的最大容量为 16TB。此卷用于使用 RSync 进行增量备份,它会硬链接未更改的文件。
我们知道可以使用rsync
或fsarchiver
来完成它,但是它们都非常慢并且消耗大量内存,因为它必须记住每个文件的 inode。
我们使用dd
并将ssh
分区复制到临时位置,现在我们想将分区类型更改为 ext4 64 位(或如果有人知道更好的解决方案,则更改为其他类型)。
答案1
如果要更改文件系统类型,则必须使用rsync
或tar
或之类的工具fsarchiver
。不过,我认为最重要的是您要考虑找到rsync
与使用硬链接不同的备份系统的可能性。
问题在于,硬链接和使用重复目录进行增量备份是一种非常低效的数据结构,无法用于存储备份信息。这就是为什么使用rsync
复制所有这些备份会很慢且很痛苦的原因之一。这也意味着使用fsck
执行一致性检查将占用大量内存,以确保所有文件的链接计数将占用大量内存 --- 出于同样的原因rsync
,tar
、fsarchiver
、 等将需要大量内存。
因此,我的建议是查看 bacula 之类的备份系统,它使用适当的数据库来存储备份文件的目录,而不是尝试使用目录来存储该信息。并以此为契机过渡到更具可扩展性的备份解决方案。