活动目录之USN原创译文

对象的元数据在复制过程中如何被更改

让我们看一下4步骤的一个例子:

1.server A上一个对象(一个用户)被创建

2.对象被复制到B

3.对象接着在B上被修改

4.在B上的修改被复制给A

整个过程如图:

How metadata is modified during replication

Step1:A上用户的建立

当在A上建立一个用户对象时,A就是原始DC,在建立新用户的活动目录事务动作中,一个USN (1000)被分配

给该事务,用户对象的usnCreated和usnChanged属性自动被设置为1000.所有该用户对象的其他属性

被一些数据初始化,如下:(注:对象初次建立所有的属性都有相同的USN

对象属性值根据系统的缺省值或者在建立过程中提供的参数被设置

对象属性的USN被设置为1000

对象属性的版本号被设置为1

对象属性的时间戳被设置为对象创建时的时间

对象的原始写Server的GUID属性被设置为server A的GUID

对象的原始写server USN属性被设置为 1000 (该事务的USN号)

 你可以从中知道这个用户对象在事务处理1000中被建立。--usnCreated=1000

这个用户对象最后一次修改是在事务处理1000中。  --usnChanged=1000

这个用户对象从来没有被更改过原始值 version number=1

这个用户对象的每个属性的值被设置的原始出处是server A,事务号1000(原始serverGuid,原始server USN)

对象的属性值可以用repadmin,ADSIEdit,LDP等工具查看

Step2.复制原始写到server B

对象被复制到server B, B增加用户对象到活动目录副本--以复制写的方式。

在这个事务中,USN 2500被分配。用户对象的usnCreated和usnChanged属性值被修改为server B上相应的事务USN 2500.

由此可知这个用户是在事务2500中被建立在serverB上的。对象从来没有被修改过,应为version number =1

还可以看出对象的每个属性的原始写server和原始USN.

Step3. server B上修改用户密码

Originating write原始写(密码修改)发生在server B上的replicated-write复制写用户对象上,该事务的USN为3777,用户对象的usnChanged属性也改为3777.

同时:

密码的版本号由1变为2

密码usn被设置为3777

密码时间戳被修改

密码的原始写server从A改为B,原始USN改为3777

 

Step4.密码修改被复制给server A

注意更新发生在属性级别而非对象级别。因此仅仅密码属性被复制。

类似于step2. A上被分配usn 1333,对象的usnChanged属性值被修改为A上的事务号1333

 

 在真实的DC复制过程中,有2处不同:

1.从A复制到B,CN属性会显示原始写来自B而不是A,这牵涉到后台的实现细节,

仅此一处发生这样的差异

2.密码的修改实际上更新了好几个属性,而非仅仅1处,这涉及到dBCSPwd,unicodePwd,ntPwdHistory,lmPwdHistory等属性。

这也牵涉到后台的实现细节。对于其他属性,单个的修改只会影响单个属性和复制。密码只是一个特殊的例子。

 

 

 

原文地址:https://www.cnblogs.com/jjkv3/p/1432435.html