对于我的处女作,我想找到一个最广泛的受众感兴趣的主题,并且需要详细考虑。丹尼尔·笛福(Daniel Defoe)辩称,死亡和税收正在等待任何人。就我而言,我可以说任何支持工程师都会对恢复点存储策略(或更简单地说,保留)有疑问。我是4年前作为一级初级工程师开始讲解保留的工作原理的,现在一直是西班牙和意大利口语团队的负责人,现在继续解释。我确信,第二级甚至第三级支持的同事也会定期回答相同的问题。
有鉴于此,我想写一篇最详尽的最终文章,说俄语的用户可以反复参考。时机恰到好处-最近发布的10周年纪念版为基本功能增加了许多新功能,这些功能多年来未曾改变。我的文章主要针对此版本-尽管所写的大部分内容都适用于以前的版本,但是您根本找不到那里描述的某些功能。最后,展望未来,我会说下一个版本可能会有一些更改,但是我们会在适当的时候告诉您。因此,让我们开始吧。
备份作业
首先,让我们看一下版本10中未更改的部分。保留策略由几个参数确定。让我们打开用于创建新任务的窗口,然后转到“存储”选项卡。在这里,我们将看到一个确定所需恢复点数的参数:
但是,这只是方程式的一部分。实际的点数也由为任务设置的备份模式确定。要选择此参数,需要单击同一选项卡上的“高级”按钮。这将打开一个包含许多选项的新窗口。让我们给它们编号并依次考虑:
如果仅启用选项1,则作业将在“永远向前增量”模式下运行。这里没有困难-任务将存储从完整备份(扩展名为VBK的文件)到最后一个增量(扩展名为VIB的文件)的还原点的设置数量。当点数超过指定值时,最早的增量将与完整备份合并。换句话说,如果将任务设置为存储3点,则在下一个会话之后,存储库中将立即有4点,之后,完整备份将与最早的增量合并,并且总点数将返回3。
反向增量模式(选项2)的修饰也非常简单。因为在这种情况下,最新点将是完整备份,然后是一系列所谓的回滚(带有VRB扩展名的文件),然后应用保留,只需删除最旧的回滚即可。情况将是相同的:会话结束后,点数将立即超过设置的1,之后将返回所需的值。
请注意,使用反向增量模式,您还可以启用定期完全备份(选项4),但这不会改变本质。是的,完整的还原点将出现在链中,但我们仍将一一删除最旧的点。
最后,我们来到有趣的部分。如果激活增量备份,但另外启用选项3或4(或同时启用),则任务将开始使用“活动”或合成方法创建定期的完整备份。创建完整备份的方法并不重要-它将包含相同的数据,并且增量链将分为子链。这种方法称为前向递增,正是他引起了我们客户的大部分问题。
此处保留是通过删除链的最旧部分(从完整备份到增量)来使用的。在这种情况下,我们将不会只删除空备份或仅一部分增量。整个“子集”立即被完全删除。设置点数的含义也发生了变化-如果在其他方法中,这是最大允许数,然后您需要应用保留,则此设置将确定最小数。换句话说,在删除最旧的“子字符串”之后,其余部分中的点数不应低于该最小值。
我将尝试以图形方式描述此概念。假设保留时间设置为3点,任务每天运行一次,星期一进行完整备份。在这种情况下,保留总数将在总点数达到10时应用:
为什么最多只能放3个,最多10个?周一创建了完整备份。从星期二到星期天,工作创造了增量。最后,下周一,将再次创建完整备份,只有创建2个增量后,才能最终删除链的整个旧部分,因为剩余的点数不会低于集合3。
如果想法很明确,那么建议您尝试自己计算保留度。让我们考虑以下条件:该任务在周四首次启动(当然,将进行完整备份)。该任务设置为在星期三和星期日创建完整备份,并存储8个还原点。保留时间何时首次应用?
要回答这个问题,我建议您拿一张纸,按一周中的几天排列,并记下每天创建的点。答案将变得显而易见
回答
: « »? – 3 (VBK, VIB, VIB) 8 . , , 11 , . . .
: « »? – 3 (VBK, VIB, VIB) 8 . , , 11 , . . .
一些读者可能会争辩说:“如果有rps.dewin.me,为什么还要这么多?” 毫无疑问,这是一个非常有用的工具,在某些情况下我会使用它,但是它也有局限性。首先,它不允许您指定初始条件,并且在许多情况下,问题恰恰是“我们拥有这样的链条,如果改变这样的设置,会发生什么?”。其次,该工具仍然缺乏清晰度。向客户显示RPS页面时,我没有发现任何理解,但是按照示例(即使使用相同的Paint)进行绘制后,日复一日,一切变得清晰起来。
最后,我们没有涉及“将以前的备份链转换为回滚”选项(标记为5)。有时,此选项会使希望自动合成备份的“自动”激活它的客户端感到困惑。同时,此选项激活非常特殊的备份模式。在不进行详细介绍的情况下,我将立即说,在产品开发的这个阶段,“将以前的备份链转换为回滚”是过时的选择,我无法想到应该使用哪种方案。它的价值令人怀疑,以至于Anton Gostev自己在论坛上哭了一阵子,要求他向他发送有用的示例(如果有,请在评论中写,我非常感兴趣)。如果没有(我认为会的话),那么该选项将在以后的版本中删除。
作业将创建增量(VIB),直到计划合成完全备份为止。在这一天,确实创建了VBK,但是此VBK之前的所有点都转换为回滚(VRB)。之后,任务将继续为完整备份创建增量,直到下一个综合备份为止。结果,在链中创建了VBK,VBR和VIB文件的爆炸性混合物。保留非常简单-通过删除最后一个VBR:
问题
除了了解其工作方式外,使用增量模式时出现的大多数问题通常与完整备份有关。此模式需要常规的完整备份,否则存储库将累积点,直到溢出为止。
例如,创建完整备份可能很少。假设该任务设置为存储10点,并且每月创建一次完整备份。显然,此处的实际点数将远高于一组。或者通常将任务设置为以无限增量模式工作并存储50点。然后有人不小心创建了完整备份。就是这样,从现在开始,任务将一直等到整个点累积49个增量,之后它将应用保留并返回到无限完全模式。
在其他情况下,将设置为定期创建完整备份,但是由于某种原因,它不会创建。我将在这里写下最受欢迎的原因。一些客户更喜欢使用“运行后”调度选项并设置作业以在链中运行。让我们以这个示例为例:每天运行3个作业,并在周日创建完整备份。第一个任务开始于22.30,其余任务按链启动。增量备份需要10分钟,因此到23.00,所有任务都已完成。但是完整备份需要一个小时,因此以下发生在星期日:第一个任务的运行时间是22.30到23.30。下一个是从23.30到00.30。但是第三个任务在星期一开始。完整备份设置为星期天,因此在这种情况下根本就不会备份。该任务将等待完整备份以应用保留。因此,在使用“运行后运行”选项时要格外小心,或者根本不使用它-只需将作业设置为同时启动,然后让资源调度程序执行其工作即可。
困难的选项“删除已删除的项目”
通过“存储-高级-维护”任务的设置,您会发现以天为单位的“之后删除删除的项目数据”选项是偶然的。
一些客户期望这是保留。实际上,这是一个完全独立的选择,对它的误解可能会导致意想不到的后果。但是,第一步是要说明B&R如何应对会话期间仅成功备份几台计算机的情况。
考虑以下情况:配置为存储6个点的无限增量作业。在任务中有两台计算机,一台始终成功备份,另一台有时出现错误。结果,到第七点,出现了以下情况:
申请保留的时间,但是一辆汽车有7分,而另一辆只有4分。是否会在此处应用保留?答案是肯定的。如果至少已备份一个对象,则贝加莱会考虑创建该点。
如果在某个会话期间根本没有将某台计算机包含在任务中,则可能会发生类似情况。例如,当机器不是作为容器(文件夹,存储)的一部分单独添加到任务中并且某些机器临时迁移到另一个容器时,就会发生这种情况。在这种情况下,该任务将被视为成功,但是在统计信息中,您会看到一条消息,敦促您注意该任务不再处理此类机器。
如果您不注意该怎么办?在无限增量或反向增量模式的情况下,“问题”计算机的恢复点数将随着每个会话而减少,直到达到VBK中存储的1。换句话说,即使长时间不备份计算机,仍将保留一个还原点。如果启用了定期完全备份,则不是这种情况。如果您忽略了贝加莱(B&R)发出的信号,则可以删除最后一点以及链的旧部分。
清除这些详细信息后,我们终于可以查看“之后删除删除的项目数据”选项。如果特定车辆X天未备份,它将删除该车辆的所有积分。请注意,此设置无法响应错误(尝试过-它不起作用)。甚至都不应尝试备份计算机。该选项似乎很有用,应始终保持启用状态。如果管理员将计算机从任务中删除,则一段时间后从不必要的数据中清除链条是合乎逻辑的。但是,调优需要纪律和谨慎。
让我给您一个实践的例子:向任务中添加了几个容器,其组成非常动态。由于缺少B&R RAM,服务器遇到了未被注意到的问题。该任务开始并尝试备份计算机,但当时容器中不存在该计算机。由于许多计算机出现错误,因此默认情况下,贝加莱必须额外尝试3次以备份“问题”计算机。由于RAM经常出现问题,这些尝试花费了几天的时间。没有重复尝试对丢失的VM进行备份(没有VM并不是错误)。结果,在一次重试期间,满足了“删除已删除项目”条件,并且删除了机器的所有点。
在这方面,我可以这样说:如果您已经配置了有关任务结果的通知,或者甚至更好的通知-您正在使用与Veeam ONE的集成,那么您很可能不会发生这种情况。如果您每周检查一次B&R服务器以检查一切是否正常,那么最好拒绝可能导致备份删除的选项。
v.10中新增了什么
贝加莱(B&R)已有很多版本讨论过。了解了这些工作原理之后,现在让我们看一下周年纪念日“十”中添加的内容。
每日保留
上面,我们考虑了基于点数的“经典”存储策略。另一种方法是在同一菜单中设置“天”而不是“恢复点”。
名称很清楚-保留将存储固定的天数,但是每天的积分数并不重要。在执行此操作时,请记住以下几点:
- 计算保留时间时不考虑当日
- 任务根本不起作用的日子也算在内。应该牢记这一点,以免您意外丢失那些无法正常运行的任务的要点。
- 恢复点从开始创建之日起算(即,如果任务在星期一开始工作并在星期二完成,则此点从星期一开始)
至于其余的,按任务应用保留的原则也由所选的备份方法确定。让我们尝试使用相同的增量方法进行另一个计算任务。假设保留时间设置为8天,任务每6小时运行一次,并在星期三进行完全备份。但是,该任务在星期日不起作用。该工作首次在星期一开始。保留将何时适用?
回答
, . , , . , , 4 .
. ? 8 . , , , . – .
. ? 8 . , , , . – .
GFS存档用于常规作业
在v.10之前的版本中,“祖父-父亲-儿子”(GFS)存储方法仅适用于“备份”复制和“磁带”复制作业。现在,它也可以用于常规备份。
尽管这与当前主题无关,但是我不得不说新功能并不意味着背离3-2-1策略。主存储库中存在归档点不会以任何方式影响其可靠性。打算将GFS与横向扩展存储库结合使用,以将这些点卸载到S3和类似的存储库中。如果您不使用它,则最好继续将主点和归档点存储在不同的存储库中。现在,让我们看一下创建GFS点的原理。在任务设置的“存储”步骤中,出现了一个特殊的按钮,该按钮调用以下菜单:
GFS的本质可以简化为几个点(请注意,GFS在其他类型的任务中的工作方式有所不同,但稍后会更多):
- 该任务不会为GFS点创建单独的完整备份。相反,将使用最合适的完整备份。因此,该任务必须在具有定期完整备份的增量模式下工作,或者必须由用户手动创建完整备份。
- 如果仅启用一个周期(例如一周),则在GFS周期开始时,任务将简单地开始等待完整备份,并将第一个合适的备份标记为GFS。
示例:作业配置为使用星期三备份存储每周GFS。该任务每天运行,但是完整备份计划在星期五进行。在这种情况下,GFS期间将从星期三开始,作业将开始等待合适的时间。它会在星期五出现,并带有GFS标志。
- (, ), B&R , GFS ( ). , .
示例:每周GFS在星期三计费,每月GFS在该月的最后一周计费。该任务每天运行,并在星期一和星期五创建完整备份。
为简单起见,让我们从该月的倒数第二个星期开始计数。本周,将在星期一创建完整备份,但由于每周GFS间隔从星期三开始,将被忽略。但是星期五的完整备份完全适合GFS点。这个系统已经为我们所熟悉。
现在考虑在该月的最后一周发生的情况。 GFS的每月间隔将从星期一开始,但是星期一VBK不会标记为GFS,因为该作业试图将一个VBK标记为每月和每周GFS点。在这种情况下,搜索精确地从每周开始,因此,根据定义,搜索也可以变成每月一次。
在这种情况下,如果仅包括每周间隔和每年间隔,则它们将彼此独立起作用,并且可以将2个单独的VBK标记为与GFS间隔相对应。
备份复制任务
另一类任务通常需要在工作中进行说明。首先,让我们看一下没有创新v.10的“经典”工作方法
简单的保留方法
默认情况下,此类作业以无限增量模式运行。点的创建取决于两个参数-复制间隔和所需的恢复点数(没有保留天数)。复制间隔是在创建作业时在第一个 ``作业''选项卡上设置的:
点数是在
``目标''选项卡上进一步确定的。该作业为每个间隔创建1个新点(与原始作业为VM创建的点数无关)在间隔结束时,确定新点,并在必要时通过组合VBK和最早的增量来应用保留。我们已经熟悉这种机制。
使用GFS的固定方法
BCJ还知道如何存储归档点。这是在相同的“目标”选项卡上配置的,仅在恢复点数量的设置之下:
可以通过两种方式创建GFS点-综合地使用辅助存储库中的数据,或者通过模拟完整备份并从主存储库中读取所有数据(由标记为3的选项激活) ... 两种情况下的保留时间将有很大的不同,因此我们将分别考虑它们。
合成GFS
在这种情况下,不会在确切的日期创建GFS点。相反,当计划创建GFS点的当天的VIB与完整备份合并时,将创建GFS点。这有时会引起混乱,因为时间还在继续,但仍然没有GFS点。而且只有来自技术支持的强大巫师才能预测该点将在哪一天出现。实际上,不需要魔术,只需查看设置的点数和同步间隔(每天创建多少个点)即可。尝试使用此示例计算自己:该任务设置为存储7点,同步间隔为12小时(即每天2点)。目前,该链中已经有7个积分,今天是星期一,并且计划在这一天创建GFS积分。它将创建于哪一天?
回答
, , :
, GFS, . 2 , . , . , – «» . 8 – 7 + GFS.
, GFS, . 2 , . , . , – «» . 8 – 7 + GFS.
使用“读取整个点”选项创建GFS点
上面,我说过BCJ以无限增量模式运行。现在,我们将分析此规则的唯一例外。如果启用“读取整个点”选项,则将在计划的日期精确创建GFS点。任务本身将以增量模式工作,并具有定期的完整备份,这在上面已经讨论过了。保留也将通过删除链的最旧部分来进行。但是,在这种情况下,仅增量将被删除,完整备份将保留为GFS点。因此,在计算保留率时不会考虑标记有GFS标志的点。
假设任务设置为存储7点,并在星期一创建每周GFS点。在这种情况下,该作业实际上将在每个星期一创建一个完整备份并将其标记为GFS。从最旧的部分删除增量后,剩余增量的数量不低于7时,将应用保留。这是在图中的外观:
因此,到第二周结束时,该链中有14分。在第二周,任务创造了7分。如果这是一个简单的任务,那么保留将已经被应用。但这是具有GFS保留的BCJ,因此我们不计算GFS点,这意味着其中只有6个点,也就是说,我们还不能应用保留。在第三周,我们使用GFS标志创建另一个完整备份。 15分,但我们不再赘述。最后,在第三周的星期二,我们创建一个增量。现在,如果我们删除第一周的链式增量,增量的总数将满足设置的保留时间。
如上所述,在这种方法中,定期创建完整备份非常重要。例如,如果将主要保留期设置为7天,但仅设置1个年点,则可以轻松想象到增量会大量积累,远远超过7。在这种情况下,最好使用创建GFS的综合方法。
再次“删除已删除的项目”
BCJ也存在此选项:
此选项的逻辑与常规备份作业中的逻辑相同-如果在指定的天数内未处理计算机,则将从链中删除其数据。但是,对于BCJ,此选项的实用性客观上更高,这就是原因。
在正常模式下,BCJ以无限增量模式运行,因此,如果在某个时候将计算机从任务中删除,保留将逐渐删除所有还原点,直到在VBK中仅剩一个还原点为止。现在,假设仍将作业配置为创建合成GFS点。时间到了,工作将需要为链中的所有计算机创建一个GFS。如果某辆汽车根本没有新的要点-那么,您将不得不使用那辆。每次都是如此。结果,可能会出现以下情况:
请注意“文件”部分:我们有主要的VBK和每周2个GFS点。现在,在“还原点”部分-实际上,这些文件包含计算机的同一映像。自然,这种GFS点没有意义,它们只占用空间。
仅在使用合成GFS时才可能出现这种情况。为防止这种情况,请使用“删除已删除的邮件”选项。只是不要忘记将其设置足够的天数。技术支持已经看到了一些情况,即该选项的设置时间少于同步间隔的时间-BCJ开始猛增并删除点,然后再创建它们。
还要注意,此选项不会影响现有的GFS点。如果要清除存档,则需要手动进行-右键单击计算机,然后选择“从磁盘删除”(在出现的窗口中,不要忘记选中“删除GFS完整备份”框):
v.10的新功能-立即复制
处理了“经典”功能后,让我们继续进行新的功能。只有一项创新,但非常重要。这是一种新的操作模式。
没有“同步间隔”之类的东西,任务将不断监视是否出现了新点,并复制所有这些点,无论它们有多少。但是,该作业仍是增量的,也就是说,即使主作业创建了VBK或VRB,这些点也将被复制为VIB。否则,此模式不会令人惊讶-标准和GFS保留均按照上述规则工作(尽管此处仅提供合成GFS)。
光盘在旋转。旋转驱动器存储库的功能
勒索软件病毒的持续威胁已使其成为事实上的安全标准,可以在病毒无法到达的介质上复制数据。一种选择是使用旋转磁盘存储库,其中一次使用一个磁盘:连接并写入一个磁盘时,其余磁盘存储在安全的地方。
要教贝加莱使用此类存储库,请在存储库设置中的存储库步骤中,单击高级按钮,然后选择适当的选项:
此后,VBR将期望定期存在的链将从存储库中消失,这意味着磁盘旋转。 B&R的行为会有所不同,具体取决于存储库的类型和作业的类型。可以用下表表示:
考虑每个选项。
常规作业和Windows存储库
因此,我们有一个将链保存到第一张磁盘的任务。在轮换期间,创建的链实际上消失了,任务需要以某种方式度过这种损失。它在创建完整备份方面颇有帮助。因此,每次轮换意味着完全备份。但是,断开连接的磁盘上的点会发生什么?在计算保留率时,它们会被记住并考虑在内。因此,任务中设置的点数是所有磁盘上必须保留多少点。这是一个示例:
作业以无限增量模式运行,并且配置为存储3个还原点。但是,我们还有第二张光盘,我们每周旋转一次(可能会有更多的光盘,但这不会改变本质)。
在第一周,该任务将在第一个磁盘上创建点并合并多余的点。这样,总点数将为3:
然后,我们连接第二个磁盘。在启动时,贝加莱会注意到光盘已更改。第一个磁盘上的链将从接口中消失,但是有关它的信息将保留在数据库中。现在,该任务将在第二个磁盘上保留3点。一般情况如下:
最后,我们重新连接第一个驱动器。在创建新点之前,任务将检查保留的内容。我提醒您,保留设置为存储3点。同时,在磁盘2上有3个点(但已断开连接并存储在B&R无法到达的安全地方),在磁盘1上有3个点(并且该1个已连接)。这意味着您可以安全地从磁盘1中删除3个点,因为它们超出了保留范围。之后,该任务再次创建完整备份,并且我们的链开始如下所示:
如果将保留配置为存储天数而不是点数,则逻辑不会更改。另外,使用旋转存储库时根本不支持GFS保留。
常规作业和Linux存储库\网络存储
该选项也是可能的,但是由于施加的限制,通常不建议使用此选项。该任务将以相同的方式对磁盘旋转和链的消失做出反应-通过创建完整备份。限制是由于修剪后的固定机构。
在此,在旋转期间,只需从B&R数据库中删除断开连接的磁盘上的整个链。请注意-从数据库中,文件本身保留在磁盘上。它们可以导入并用于恢复,但是不难猜测,这种被遗忘的链迟早会填满整个存储库。
解决方案是按照此页面上的指示添加DWORD ForceDeleteBackupFiles:www.veeam.com/kb1154... 之后,作业将开始在每次旋转时简单地删除作业文件夹或存储库文件夹的所有内容(取决于值)。
但是,这不是一个优雅的保留,而是所有内容的清除。不幸的是,在仅将磁盘的根目录指定为存储库的情况下,遇到了技术支持的情况,除备份外,还放置了其他数据。所有这些都在轮换期间被销毁了。
另外,启用ForceDeleteBackupFiles时,它适用于所有类型的存储库,也就是说,即使Windows上的存储库也将停止应用保留并开始删除内容。换句话说,Windows上的本地磁盘是此类备份存储系统的最佳选择。
备份副本和Windows存储库
BCJ使事情变得更加有趣。不仅有完整的保留,而且每次磁盘更换都无需进行完整备份!它是这样工作的:
First B&R开始在第一张光盘上创建点。假设我们将保留率设为3分。该任务将以无限增量模式工作,并将所有不必要的任务组合在一起(请记住,这种情况下不支持GFS保留)。
然后,我们连接第二个驱动器。由于尚无链条,因此我们创建了完整备份,此后,我们形成了包含三个点的第二条链:
最后,该重新连接第一个磁盘了。这就是魔术开始的地方,因为该作业将不会创建完整备份,而只会继续执行增量链:
之后,几乎每个磁盘都将具有其自己的独立链。因此,此处的保留并不意味着所有光盘上的点数,而是每个光盘上的点数。
备份副本和Linux系统信息库\网络存储
同样,如果存储库不在本地Windows驱动器上,那么所有的样式都会丢失。该脚本的工作类似于上面讨论的脚本,但任务简单。每次轮换时,BCJ将创建完整备份,而现有点将被遗忘。为了避免没有可用空间,您需要使用DWORD ForceDeleteBackupFiles。
结论
因此,由于篇幅如此之长,我们考虑了两种类型的任务。当然,还有更多任务,但是不可能以一篇文章的形式考虑所有任务。如果您在阅读后仍然有任何疑问,然后将其写在评论中,我将很乐意亲自回答。