Wei*_*Yin 10 filesystems backup hard-link
我的文件系统中有一些复杂的只读数据。它包含数千个 svn 存储库某些修订版的快照,以及回归测试的输出。快照之间的相同文件已经使用硬链接进行了重复数据删除。这样,存储容量不需要很大,但仍然消耗大量的inode,这让我的主文件系统的fsck痛苦地长。
我想将这些数据移动到另一个文件系统,这样它就不会对主文件系统产生太大影响。你有什么建议吗?Squashfs 似乎是一个可能的选择,但我必须检查它是否可以有效地处理硬链接。
Btrfs 原生支持快照,因此您不必使用硬链接进行重复数据删除。您可以通过创建 btrfs 文件系统并使用您需要的最早修订加载它来重新创建当前设置,并拍摄快照,然后将存储库转发到您需要快照的每个时间点并在每个时间点拍摄快照步。这应该比硬链接更有效,并且设置也更简单。
我还认为(尽管我不确定这一点)squashfs 透明地对文件进行重复数据删除,因此即使它不处理硬链接,您仍然会看到好处。如果您永远不需要更改文件系统中的数据,那么 squashfs 可能是可行的方法,因为 fsck 可以被 md5sum 替换;)
如果它是 abot fsck 缓慢,您是否尝试过 ext4?他们添加了一些功能,通过不查看未使用的 inode来使 fsck 非常快:
fsck是一个很慢的操作,尤其是第一步:检查文件系统中的所有inode。在 Ext4 中,在每个组的 inode 表的末尾将存储未使用的 inode 列表(为了安全起见,带有校验和),因此 fsck 不会检查这些 inode。结果是总 fsck 时间从 2 倍提高到 20 倍,具体取决于使用的 inode 数量 (http://kerneltrap.org/Linux/Improving_fsck_Speeds_in_Ext4)。必须注意的是,fsck 而非 Ext4 将构建未使用的 inode 列表。这意味着您必须运行 fsck 来获取构建的未使用的 inode 列表,并且只有下一次 fsck 运行会更快(您需要传递 fsck 以便将 Ext3 文件系统转换为 Ext4)。还有一个功能参与了这个 fsck 加速——“灵活的块组”