本文出自 “叶俊生” 博客,请务必保留此出处http://yejunsheng.blog.51cto.com/793131/175814

第一节:FSMO规划最佳实践:将森林级别的FSMO角色放置于森林根域的全局编目服务器上 将两个森林级别的FSMO角色放置于同一台域控制器上  将三个域级别的FSMO角色放置于同一台高性能的域控制器上  不建议将域级别的FSMO角色放置于全局编目服务器上  降低PDC仿真器的负载--修改注册表   架构主控的规划:占有架构主控的域控制器必需保证高可用性,但是不是必需拥有高性能  域命名主控的规划:占有域名命主控的域控制器必需保证高可用性,但是不是必需拥有高性能.且该DC必需同时也是全局编录服务器  PDC仿问器的规划:占有PDC仿真器的域控制器必需保证同时拥有高可用性和高性能   RID主控的规划:占有RID主控的域控制器必需保证高可用性,但是不是必需拥有高性能  基础架构主控的规划:占有RID主控的域控制器可以忽略可用性和性能方面的考虑,但是不能把基础架构主控同全局编目服务器放在同一台与控制器上
第二节:转移操作主控  强占操作主控
win20009
  首先从windows server 2000安装光盘里面找到SUPPORT文件夹--TOOLS--双击SETUP把这个工具安装上   通过开始--运行--输入cmd按确定来打开命令提示符 在命令提示符里面输入netdom query fsmo /domain:Nwtraders.Msft按回车键后  可以看到5种角色了 都是在Beijing这台计算机上   因为Beijing这台DC是整个森林内第一台DC 所以森林里面的Schema owner  Domain role owner 这两个角色在这台计算机上  森林根域的 PDC role   RID pool manager   Infrastructure owner这三个角色也在这台计算机上 netdom这个工具可以本标识出当前域内的所有FSMO角色  我再来查那个子域的FSMO角色看一下  输入netdom query fsmo /domain:Subdom.Nwtraders.Msft按回车键后  也可以看到5种角色  因为它是一个子域 森林里面的两个角色在Beijing这台计算机上  而森林根域的三个角色就在本计算机上(Hangzhou)   
win200010
通过开始--程序--Windows 2000 Support Tools--Tools--按ADSI Edit  实际上就是打开活动目录数据库了 比如我现想查谁是Schema Master 对着CN=Schema,CN=Configuration,DC=Nwtraders,DC=Msft这一项右键--选择属性 在Select a property to view那一项选择fSMORoleOwner那一项    在Value(s)那一项可以看到BEIJING那台DC是Schema Master   另外那四种角色也同样就这样查的 就是在Select a property to view那一项选择fSMORoleOwner那一项  然后在Value(s)里面就可以看到这个角色是在那台计算机上了    
win200011
SID的组成是这样的 s-1-5-21-xxxx-yyyy-zzz-mmmm 中间那三段叫做Domain sid  这三段是用来标识一个域的  换句话说 同一个域内的所有的用户 这三段都是一样的   最后一段mmmm就叫做rid  如果要保证同一个域内的用户  它们的sid是不冲突的  关键是rid不一样就可以了  怎么样确保rid不一样呢?就是RIDMaster的作用  它分配可用的RID池给域内DC  防止安全主体的SID冲突 这个可用的RID池实际上是有600个RID 当你的DC去创建用户的时候就从可用RID池里面拿 只要这个DC保证不分配重复的RID就可以了  假如一个域有10台DC  RIDMaster主要确保这10台DC可用的RID池是不一样的 不管在那台DC上创建用户 创建出来的每个用户的SID都不一样   
win200012
在命令提示符里面输入dcdiag /v 按回车键后    可以看到一项Starting test:RidManager  可以看到这个域可用的RID池是从2101到1073741823  可以看到Beijing这台计算机是RID Master  当前这台DC可用的范围是从1101到1600  rIDNextRID:1106 这个表示也就是下一次创建的用户 它的RID是1106
win200013
谁是nwtraders.msft这个名称空间下的DC呢?  可以查什么得到呢?  可以查SRV记录得到   展开nwtraders.msft这个域--msdcs--dc--按tcp   可以看到beijing这台计算机是DC   shanghai那台计算机也是DC    客户端通过DNS去查询  客户端到底要用那台DC呢? 一般情况下优先级越低会越被优先使用 负担越高会越被优先使用 怎么样降低PDC的负载呢? 通过修改PDC的SRV记录 beijing这台计算机是PDC 我现在把beijing这台计算机的优先级改成10   负担改成50   这个时候就不会被优先使用beijing这台DC了   注意:不要在ldap属性里面改  在这里改是没有用的  一旦重启计算机就又变成原值了     在命令提示符里面输入net stop netlogon & net start netlogon按回车键后就停止Net Logon服务并且再重启NetLogon服务   当你重启计算机的时候这个服务一定会重启的  当你重启net logon服务后  beijing这台DC的优先级和负担又变成原值了    你不应该通过这种方式改   怎么改呢?  修改注册表
win200014
通过开始--运行--输入regedit按确定来打开注册表编辑器    在注册表编辑器里面的找到左下角那个路径 按Parameters 在右边的空白处右键--新建--选择双字节值   创建二个  一个叫做ldapsrvpriority(优先级)数值数据为50  一个叫做ldapsrvweight(负担)数值数据为10  在命令提示符里面输入net stop netlogon & net start netlogon按回车键 重启net logon服务后你就发现跟这个DC所有相关的SRV记录都变成我在注册表编辑器里面设置的值了  所以你可以在注册表编辑器里面加这二个键值来降低客户端对PDC的访问  展开pdc--按tcp--双击ldap后就可以看到优先级变成50  负担变成10了 
win200016
  在命令提示符里面输入netdom query fsmo按回车键后   可以看到这个域内的5种角色都给Beijing这台计算机占用   但是因为Beijing这台计算机的性能的原因   我觉得它不适合充当这个角色了   我想把它转移走    怎么转移呢?  实际上是有二种方式 一种是通过图形页面转移  打开Active Directory用户和计算机  对着域名右键--选择操作主机   可以看到RID PDC 结构  你可以在这里面做转移  另一种方式是在命令提示符里面操作   输入ntdsutil按回车键  输入roles按回车键   输入con按回车键  输入con to ser shanghai.nwtraders.msft按回车键  就是说我现在要绑定到shanghai这台计算机上  我要把我的所有角色都转移到shanghai那台计算机上   输入quit按回车键   输入trans sch ma按回车键后  它就问您确实想让服务器"shanghai.nwtraders.msft" 到为企业传送架构主机?  你按是就ok了
win200017
在命令提示符里面输入netdom query fsmo /domain:nwtraders.msft按回车键后   就可以看到刚才转移的Schema owner 已经给Shanghai这台计算机了     在命令提示符里面输入trans pdc按回车键后 它就问您确实想让服务器"shanghai.nwtraders.msft"到将主机送到域?   你按是就ok了    同样可以在命令提示符里面输入netdom query fsmo /domain:nwtraders.msft按回车键后  就看到PDC已经转移到shanghai这台计算机了  
win200019
我现把shanghai那台计算机关掉了 反正当作不存在了 不可用DC了   在命令提示符里面输入ntdsutil按回车键  输入roles按回车键 输入con按回车键  输入con to ser beijing.nwtraders.msft按回车键后就绑定在beijing这台计算机上了  输入quit按回车键  输入trans pdc按回车键后很久没有反应 然后就出现错误了   请求的 FSMO 操作失败 不能连接当前的 FSMO 盒   就是说我现在要把以前转移给shanghai那台DC的二个角色抢占过来   输入seize pdc按回车键后  它就问您确实想让服务器"beijing.nwtraders.msft" 用下列值取代PDC角色?   你按是就ok了    注意:抢占操作会导致数据丢失我们绝对不建议抢占操作的  当你把shanghai那台DC的角色抢占过来后  再也不要修复shanghai那台DC了  如果你再把shanghai那台DC修复好再启动后会发生一些不可预知的事情  就是说你以前有一台DC 它有操作主控 后来被人抢占走了  那要记住原来那台DC最好不要让它回到原来那个域当中了 不要再启动它了   
win200021
通过开始--运行--输入%systemroot%/ntds按确定   按工具--选择文件夹选项--查看--把隐藏受保护的操作系统文件(推荐)的沟去掉  选择显示所有的文件和文件夹  把隐藏已知文件类型的扩展名的沟去掉 按确定后就可以   看到ntds.dit这个文件  整个活动目录数据库都在这个文件里面    edb.log这个文件代表事务日志文件   edb.chk是检查点文件 res1.log  res2.log是保留日志文件 
第二节:活动目录数据库维护   什么情况下手动维护数据库:数据库所在分区磁盘空间低  数据库容量太大导致备份时间过长 硬件失败  转移活动目录数据库:确定活动目录数据库大小  备份系统状态数据  重新启动计算机进入DSRM模式  使用NTDSUTIL.exe转移活动目录数据库  重新启动计算机   备份系统状态数据  
win200023
   在地址里面输入c:\boot.ini按回车键后就可以看到里面的内容了   然后你把multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Advanced Server" /fastdetect复制  粘贴到下一行 再加上DSRM   /safeboot:dsrepair按保存就ok了  当你再重新启动的时候就出现二个选项   你按DSRM那一项就直接进入活动目录还原模式了   
win200024
注意:在进入活动目录还原模式前一步的管理员密码不是域管理员密码  而是你安装活动目录的时候输入的密码   假如我忘记活动目录还原模式密码了 怎么办呢? 如果是在windows2000上就用域管理员登录到常规模式在命令提示符里面输入setpwd按回车键 然后再重新设置活动目录还原模式的密码就ok了
win200025
我现在已经进活动目录还原模式了 在命令提示符里面输入ntdsutil按回车键  输入file按回车键   输入move db to c:\ntds按回车键就ok了   就是说我现在要把活动目录数据库转移到C盘下的ntds文件夹里面  可以在命令提示符里面看到工作目录:c:\ntds表示已经转移成功了    我现在把ntds这个文件夹打开 已经可以看到ntds.dit(活动目录数据库)文件和edb.chk(检查点)文件了
win200026
在命令提示符里面输入ntdsutil按回车键   输入file按回车键  输入move log to c:\ntdslog按回车键  就把log文件转移到ntdslog这个文件夹了   打开ntdslog这个文件夹后可以看到edb.log  res1.log  re2.log这三个文件了   转移成功后就重新启动计算机   马上备份系统状态数据
收缩活动目录数据库:查看数据库空闲空间大小(online)  备份系统状态数据  重新启动计算机进入DSRM模式  使用ESENTUTL工具查看数据库空间(offline)  使用NTDSUTIL.exe工具收缩数据库  重新启动计算机   备份系统状态数据  
win200027
在命令提示符里面输入esentutl /ms c:\ntds\ntds.dit /8按回车键   因为活动目录的数据库每个页面大小是8K  所以就在后面加/8  然后可以看到一张表    Owned表示这个活动目录的每一个表格占用了多少页  Available表示这个表格有多少空闲的页  最后有一个总结可以看到一共空闲了273页   我用计算机来算一下 每一页是8K  273X8=2184  可以知道大概空闲2M空间 
win200028
在命令提示符里面输入ntdsutil按回车键  输入file按回车键  输入compact to c:\temp按回车键   c:\temp就是说我要把这个压缩文件放到C盘下的temp这个文件夹里面  你也可以看到是通过那一个执行指令来完成压缩的  压缩完成之后就重新启动计算机  备份系统状态数据 
从活动目录数据库中删除对象:isDeleted 属性  Deleted Objects 容器  TombStone 周期  Garbage Collection 机制  Garbage Collection 周期
win200029
假如我现在把ccc这个联络人删除掉   通过开始--运行--输入adsiedit.msc按确定   找到CN=Users--CN=ccc 双击它打开属性  在Select a property to view那一项选择isDeleted   如果下面Edit Attribute那一项显示为True就表示这个联络人已经被删除掉了 
win200030
  在命令提示符里面输入ldp按回车键  按connection--按connect 输入beijing按ok 按connection--按Bind  输入用户名和密码按ok  按View--按Tree  输入cn=deleted objects,dc=nwtraders,dc=msft按ok  这个容器实际上是存在的 但是它告诉我无所对象 为什么呢?你要看容器里面的东西  要做一下设置的  按Options--按Controls  在里面输入一些东西  在windows2000上要自己手动输入  如果你用的是windows 2003的支技工具 它把那个GUID给列出来  你可以直接在这个地方 把OID添加进去就可以了  在Contols右边它会列出一项叫做return deleted object 然后你选择return deleted object 选择Check in 再打开这个容器 你就可以看到你所有的从这个DC上删除的对象了  你可以从这里把一个对象恢复出来 对象放在这里有一个TombStone 周期 是60天   过了60天后就等垃圾回收来清理它  
win200031
在ADSI Edit里面找到  CN=Directory Service 右键--选择属性  在Select a property to view那一项选择garbageCollPeriod 这个表示垃圾回收的一个周期 如果我在Edit Attribute里面设置成1  那么过1小时后就把deleted object里面的清理掉已经过期的对象作处理    在Select a property to view那一项选择tombstoneLifetime  如果我在Edit Attribute里面设置成1 那么被删除的对象它在deleted object里面存在1天  按Set  按确定  就开始生效了