背景:
我正在使用 LTO-8 磁带,我担心随着时间的推移,磁带上的数据可能会损坏,我试图实现的目标是使用 par2 创建我可以在未来尝试恢复/修复/恢复所述 LTO-8 磁带上可能最终损坏的任何数据。
这是我的思考过程/方法:
我正在考虑 RAID5/raidz 将如何使用 1 个驱动器来存储奇偶校验数据(我认为在传统 RAID5 中,奇偶校验将在 RAID 阵列中被剥离)。
在 par2 中,有一个命令标志“-r”,您可以在其中设置奇偶校验级别和/或要创建的奇偶校验数量。
我明白了。
但我不明白的部分是,如果我在文件中使用该标志,它将创建 .par2 文件,这是否与“RAID5”/“raidz”相同,或者是我的整个思维过程和方法试图达到类似的效果完全错误吗?
我知道LTO-8磁带本身会做一些校验和,但我不太确定的是,如果校验和有问题,它将如何自我修复(如果它有这种能力——我还没有在阅读有关 LTFS 的文章中没有看到任何说明它可以的文档,但我也没有阅读或看到任何说明它不能的文档)。
如果它无法自行修复(或者我认为这是最坏的情况),那么使用 par2 是否足以保护磁带免受数据损坏?
另外,我当前设置的方式是 .par2 文件也写入同一磁带(然后我有一个关于磁带备份本身的父子结构,例如重复副本)。
如果我可以使用奇偶校验数据,那么我将释放一半的磁带,将其用于其他数据,而不是使用父子/重复备份结构。
任何关于我如何实现这一目标的想法、想法和/或见解都将受到高度赞赏。
谢谢。
答案1
如何par2
运作
您par2
可以选择要计算给定数据文件集的奇偶校验百分比。它在内部将整个数据集分为块计算这些块的奇偶校验信息。所以它的基本工作单位是块(用于完整性检查和数据重建)。
它的算法确实类似于某些 RAID 算法,但比经典 RAID5 更复杂,因为任何奇偶校验块都可以用于恢复任何损坏的数据块。它用里德-所罗门纠错码这需要更多的计算!
如果两个不同的块非常轻微损坏后,您仍需要 2 个奇偶校验块来恢复数据。另一方面,如果 1 个块是完全地损坏后,您只需要 1 个奇偶校验块即可恢复。因此,您可能需要相应地考虑块大小。
此外,par2
如果仍然可以读取部分可读的损坏文件中的某些奇偶校验信息,则仍然可以在数据恢复中发挥作用。
然后,它被设计为与(损坏的)一起使用文件(而不是数据流)。
例子
所以你可以选择:
FULL DATASET + 20% par2 parity files
这意味着您可能会损失大约。相当于您数据的 20%-块。
决策时需要考虑的事项
然后由您选择:
- 完整数据集的大小(越大,恢复和奇偶校验构建所需的计算资源就越多),
- 您要计算的奇偶校验百分比,
- 奇偶校验和数据的物理位置,
- 块大小,
知道:
- 您需要完整的(损坏的)数据集+par2_data来执行修复,并且此修复需要在磁盘上执行,
- 你需要不可忽略的CPU能力来修复,
- 您的磁带读取器/写入器和软件可能对无法读取的数据有特定的行为,这些行为可能会也可能不会帮助您恢复。
一些可能性
如果您的磁带阅读器能够用等于 0 的字节替换不可读的字节,那么我想将par2
文件存储在同一磁带上可能是有意义的,因为这将使恢复过程比整个损坏的情况更容易尝试将其传输到磁盘时文件丢失。
如果您正在考虑丢失一整盘磁带的风险,那么您确实需要在多个磁带数据集上计算的奇偶校验文件,并且您至少需要与最大磁带所容纳的奇偶校验数据一样多的数据。为了进行恢复,您需要将剩余的磁带数据以及奇偶校验数据传输到磁盘,以重建丢失的磁带数据。
结论
par2
非常灵活,因此,这完全取决于您以及您想要防止的数据丢失情况。
par2
不像经典的 RAID 奇偶校验那样工作,也不是为此目的而构建的。 RAID 奇偶校验恢复速度更快,因为磁盘上的特定数据块在另一个磁盘上具有特定的专用奇偶校验块,而任何par2
奇偶校验块都可以通过更复杂且成本更高的过程恢复任何其他损坏的块。
因此,您可能需要考虑修复的持续时间。在“大”数据集上使用 par2 恢复损坏的数据可能需要很长时间。我建议在做出决定之前进行一些测试。
par2
仍然可以用于冗余和数据丢失预防,但要考虑上述因素。