选项 1:ISO

选项 1:ISO

最近,我设置了一个新系统来处理我的数据储存需求。我在 StableBit DrivePool 中安装了几个 HDD(2TB、4TB、8TB,希望很快添加更多),没有重复。一个外部 8TB HDD,我使用 Macrium Reflect 保存池中最重要的数据的备份,并进行压缩和加密(将移至异地)。我还有另一个 8TB HDD,用于存储池中所有驱动器的 SnapRAID 奇偶校验,以提供冗余以应对最多一个 HDD 故障,并通过清理确保数据完整性。

池中的部分数据(约 4TB)是旧的存档数据,不再发生变化,偶尔会添加。这是我在外部 8TB HDD 中使用 Macrium Reflect 备份的大部分内容。我面临的问题是,这些数据主要由大量小文件组成,例如 2TB 中约有 200 万个文件。这使得大多数操作(重新平衡池、使用 Macrium Reflect 备份、与 SnapRAID 同步等)非常缓慢、低效且容易出错(例如,如果防病毒软件阻止某些奇怪的文件,则 SnapRAID 会失败 - 我尚未完成第一次完全同步)。

因此,我希望实现的解决方案是将所有这些小文件存储在一个容器中(例如 .tar、.zip、.7z 等),而不加密或压缩。我认为这应该可以通过大大减少文件数量来缓解大多数问题。所以我的问题是哪种容器最适合这项任务。我并不想增加冗余,SnapRAID 或池中的重复可以更灵活地处理冗余,因此不考虑 par/par2。但我希望在出现问题时尽可能减少故障风险。特别是,我正在寻找对数据损坏最有弹性的容器。例如,如果容器将每个文件的元数据存储在流中 - 这样一点损坏只会影响一个文件,而不会阻止提取其余数据 - 这将比标头/元数据损坏可能导致整个容器无法使用的容器更受欢迎。

欢迎对我提出的解决方案或整个系统提出任何其他意见/建议。

答案1

选项 1:ISO

ISO 适用于不同的操作系统。易于添加新文件。比存档文件更好。

与存档文件(例如 TAR)不同,在存档文件中,您需要先解压整个文件才能访问其全部内容,而对于如此多的文件,解压过程可能需要花费大量时间。而 ISO 则完全不需要解压。只需将 ISO 挂载到文件系统中,然后直接从中读取即可。整个过程只需不到一秒钟,所有数据都可以立即访问。

您可以使用以下方式创建 ISOFolder2Iso或直接在命令行上运行 mkisofs。

(致谢u/ImJacksLackOfBeetus

选项 2:使用最简单设置的 TAR

Tar 实际上是为这种用例设计的。只需使用最简单的设置(即每个文件的元数据、不压缩等)。很容易附加文件也存档。

如果某些字节损坏,请按如下方式提取档案:

使用帕克斯提取所有具有完整元数据的文件:pax -r -v -E 3 -f broken.tar > broken.log 2>&1E 表示出现错误时要重试的次数(可能检查一次)。然后,您可以检查日志以查找损坏的标头pax: Invalid header, starting valid header search.,并尝试手动恢复该特定文件。不幸的是,它不会告诉您错误在档案中的确切位置,但您可以通过错误前后提取的文件找到它。不过,您仍然需要自己检查提取的文件是否损坏。(致谢u/askingforeafriend


更多信息及致谢请见此 Reddit 帖子

相关内容