在我们现有的备份中,我们通过备份到磁盘池将备份克隆到两个不同的磁带,然后将作业复制并迁移到两个不同的磁带池。然而,迁移后,已迁移的作业仍然占用磁盘卷,作业类型更改为“M”。
我知道我们可以使用Purge Migration Job
迁移作业定义中的指令来清除它。但是,这会导致在恢复期间同时选择磁带上的两个作业。
您如何处理这个问题?释放迁移作业占用的磁盘空间,同时让 Bacula 在恢复期间不选择两个作业?
答案1
如果不查看您的配置,很难知道确切的问题,因为有太多参数可以设置。但是,我怀疑您当前的问题只是 Bacula 不会在必须之前重用该空间,即使保留期已到期。诀窍是告诉它如何知道何时“必须”。
请记住,磁盘存储是使用虚拟磁带实现的,因此 Bacula 认为“需要更多空间”的时间是“磁带”用完的时间。如果您的虚拟磁带耗尽了文件系统的空间,Bacula 不会知道。您必须使用“最大卷字节数”和“最大卷数”等设置来限制磁盘池的大小。
还有一个名为 的设置Action On Purge = Truncate
,它将使 Bacula 在清除虚拟(磁盘)磁带时截断它们。即使您已经仔细限制了磁盘使用量,这也很有帮助,因为它可能有助于防止底层文件系统出现碎片。通常您需要留下 20% 的磁盘空间未使用,以避免出现巨大的性能问题,因为大多数文件系统无法有效地分配大文件。
但有一件事必须纠正。您可能实际上并没有获得数据的两份副本。迁移是“移动”操作,而不是“复制”。如果您想制作一份作业的两个副本,则必须使用Type = Copy
。对于副本,当原始作业被修剪时,其中一个副本(type=C
)将被提升为备份(type=B
)。如果该副本后来被修剪而另一个副本保留,则剩余的副本将被提升。