NetWorker cloneid详解
介绍
在上一篇文档“在NetWorker中作stage操作时的常见错误和正确做法”中有提到cloneid的概念。本文将深入讨论关于cloneid的一些细节。
更多信息
cloneid可以被视为save set ID (ssid)的双胞胎,它对于save set起到一个非常重要的作用。
NetWorker中每个save set都标记有一个独特的SSID。save set的每个副本的ssid都相同,但是它们的cloneid都不同。
我们可以使用以下命令来显示save set的ssid和cloneid:
[root@nox ~]# mminfo -q \"savetime>=18 hours
-r
ago,pool=Staging,client=tim,name=/Volumes/TEST\" volume,ssid,cloneid,nsavetime
volume ssid clone id save time
Staging-01 3962821973 1228135765 1228135764
Staging-01.RO 3962821973 1228135764 1228135764
在这里,我们不仅看到了ssid和cloneid,还看到了特殊的ssid/cloneid的组合实例——这是AFTD设备备份所特有的。在此例中,我们可以看到AFTD备份的只读版本(.RO)比读写版本的cloneid值小1。
你可以会想,既然我们是用ssid来辨识save set的,那么cloneid又有何用?
要解释清楚ssid/cloneid的作用,我们可以打一个很形象的比方:
图书馆里有许许多多的书,每本书都有各自的书名。虽然有些书的书名是完全一样的(比如书架上有10本一模一样的“三国演义”),但是图书馆会给它们都编上各自的编号。这样,图书馆就可以很方便及时了解哪本书给哪个人借走了,馆里还剩几本“三国演义”未被借走等信息。
这里,save set就好比是书,ssid就好比是书名,而cloneid就好比是书的编号。通过这样的比方,你应该可以理解cloneid的概念了吧。
简单来说,cloneid的目的是辨识save set的各个实例。cloneid可以起到以下作用:
• 通过读取一个特定引用的副本来克隆save set。
• 通过读取一个特定引用的副本来恢复save set。
• 指示NetWorker从媒体数据库中删除特定副本的一个引用。
最后一条的意思是:假如你知道某个磁带已经坏了,你想要让NetWorker删除save set在该磁带上的引用,而不删除该save set在其他磁带上的副本引用,你就可以考虑使用ssid/cloneid来实现。
# nsrclone -b “Daily Clone” -S 3962821973/1228135764
上面这条命令会将ssid为3962821973并且实例(cloneid)为1228135764的save set克隆到Daily Clone池中。
# nsrclone -b “Daily Clone” -S 3962821973
上面这条命令会挑选ssid为3962821973的save set的一个实例来读取,并将该它克隆到Daily Clone池中。对于恢复而言,原理相同。 那么如果ssid为3962821973的save set有多个实例,NetWorker会挑选哪一个呢?
挑选的算法大致如下:
1. 如果save set有多个在线的实例,NetWorker会首先挑选最可用的实例。
2. 如果有save set的实例都同等在线,NetWorker会挑选cloneid值最小的那个实例。
3. 如果save set的实例都离线,NetWorker会挑选cloneid值最小的那个实例。
第一条中的“最可用”是什么意思呢?打个比方,假如你有两个副本,一个副本存在于带库中的一个磁带上,另一个副本存在于磁带驱动器的一盘已经挂载起来的磁带上并且
该磁带该磁带没有在使用中,那么NetWorker就会挑选这盘没有在使用中的磁带。
对于第二条,我们来考虑AFTD备份。AFTD的备份会产生两个save set实例——读写(RO)和只读(RW)(当然实际上在磁盘上只有一个物理副本,NetWorker只是让它们看起来是两个副本)。只要这两个实例都被挂载起来,它们就是同等在线的。为了防止NetWorker从读写版本的save set实例中自动读取数据,NetWorker在创建读写和只读实例时,特地将只读版本实例的cloneid值设成比读写版本实例的cloneid值小1。这样,就可以保证NetWorker在恢复和读取数据的时候,能够自动从只读版本的save set实例中读取数据。
这里想到一个用户经常会问的问题:如果有save set有多个在线的实例,一个是备份实例,另一个是克隆实例,NetWorker默认会从备份实例中读取数据进行恢复(因为备份实例的cloneid比克隆实例的cloneid要小)。怎么实现从克隆实例中进行恢复呢?
常用的方法有:
方法1)恢复命令中指定ssid/cloneid
方法2)将备份实例标记成suspect状态
最后还想再重申一下:用命令行指定save set时,希望大家最好还是养成总是使用“ssid/cloneid”的习惯。
应用于
NetWorker
因篇幅问题不能全部显示,请点此查看更多更全内容