是否有可能孤儿硬链接?

我不确定是否可能有一个孤立的硬链接。 让我解释我为什么问。 忍受着我。

我的设置

我正在使用rsync将我的文件服务器同步到我的备份服务器。 我正在使用--link-dest rsync选项创build祖父 – 父子模式(每个备份看起来像使用硬链接的完整备份)。 例如: http : //www.mikerubel.org/computers/rsync_snapshots/

备份服务器将使用SnapRaid运行Ubuntu。 SnapRaid将configuration1个奇偶校验驱动器。

SnapRaid在其主页上声称:

如果发生故障的磁盘太多而无法进行恢复,则只会在发生故障的磁盘上丢失数据。 其他磁盘中的所有数据都是安全的。

在我的情况下,如果一个驱动器失败,并且SnapRaid无法恢复系统,我的大部分数据仍然应该在剩余的驱动器上。

假设

这是我开始迷路的地方。 我不确定如何testing这些假设。 请让我知道这些假设是否是假的。

#1

理论上,我应该能够从Ubuntu SnapRaid机器中取出一个驱动器,插入另一台计算机,然后读取其内容。

#2

当我插入一个驱动器,我希望看到所有的硬链接。 但是,因为我使用SnapRaid,所以inode可能实际上位于与硬链接不同的硬盘上。

如果我上面的假设是正确的,那么当我从SnapRaidconfiguration中删除一个驱动器时,存在孤立硬链接的可能性。

这些孤儿硬链接会发生什么?

这甚至有可能吗?

从我的理解来看,SnapRaid存储文件级别的奇偶校验信息,并不会混淆下面的块级设备。

如果是这样,它应该是如何硬链接工程完全无关。 基本上,如果你失去了太多的文件要通过奇偶校验信息恢复,你会结束有一个不可读的文件(非常像使用一个坏扇区的单个磁盘)。

回到原来的问题:不,不可能有孤立的硬链接。 但是,您可以拥有指向有效但无法读取的 i节点的硬链接

我想你可能需要看看SnapRaid是如何工作的,但是硬链接不能跨分区链接,不用担心驱动器,所以你不会看到任何来自该源的“孤儿”。

硬链接不能跨卷使用。 因此,如果音量消失,根据定义,不能成为孤儿硬链接。 硬链接是指向相同数据块的两个目录条目(技术上指向指向数据块的同一个inode)。 由于一个目录必须和它的块在同一个卷上,所以不能以孤儿为结束。

幸运的是, rsync足够聪明,如果它发现自己处于无法build立硬链接的情况下,它会进行复制。 它将使用两倍的磁盘空间,但没有额外的networking带宽。 实际上,在你使用的“祖父子模式”下, rsync会使用diff'ingalgorithm来节省networking带宽。

硬盘I / O带宽当然会随着文件跨卷的复制而增加,因为它必须从一个卷读取并写入另一个卷。 如果父子(或祖父和父亲)分册不同,这可能会产生重大影响。 它会将磁盘I / O的数量增加一倍或三倍,因为每个文件都不会硬链接,并且需要被复制。 最糟糕的情况是,如果爷爷,父亲和儿子不在一起:基本上没有硬链接! (除了备份集内的)。