我最近一直在查看我们的备份,并注意到在写入大量小文件时,磁带吞吐量会低很多,因此我考虑将这些小文件打包成一个大的 tar 文件,然后将写入那而不是直接将数据写入磁带。(就像Tar:避免归档大于特定大小的文件)
但是,当我将此 tar 文件写入磁带时,如果磁带出错,是否会有问题?我的意思是,我会丢失包含大量小文件的整个(大)文件吗?还是只会丢失该 tar 文件的特定块,而能够恢复其余文件?
此外,Amanda 或 Bacula 等备份程序如何处理大量小文件?它们只是将文件单独写入磁带,还是会预先将其压缩成更大的文件,以便更快地写入?
注意:这可能只是因为我们的暂存磁盘太慢,但我认为小文件会给大多数人带来这样的备份性能问题。
答案1
首先:强烈建议备份 tar 文件而不是单个文件,以避免擦鞋效果,这就是您所经历的:计算机无法足够快地传输文件,磁带驱动器必须停止,在开始再次写入之前,稍微倒回一点以找到流结束的精确点。这不仅速度慢得多,而且对驱动器和磁带都造成很大的磨损(据说现代驱动器,即 LTO4,在防止/减少这种影响方面更好,因为它们在输入缓冲区空时会变慢,不需要倒带)。
第二:可以跳过 tar 文件中损坏的部分,至少对于未压缩的档案来说是这样。
第三:Bacula 确实可以(也应该)配置为创建一个假脱机文件,然后将其写入磁带。不幸的是,它无法同时将假脱机文件写入磁带并写入另一个磁带,这实际上将备份速度降低了约 50%。