第一节:FSMO规划最佳实践:将森林级别的FSMO角色放置于森林根域的全局编目服务器上 将两个森林级别的FSMO角色放置于同一台域控制器上 将三个域级别的FSMO角色放置于同一台高性能的域控制器上 不建议将域级别的FSMO角色放置于全局编目服务器上 降低PDC仿真器的负载--修改注册表 架构主控的规划:占有架构主控的域控制器必需保证高可用性,但是不是必需拥有高性能 域命名主控的规划:占有域名命主控的域控制器必需保证高可用性,但是不是必需拥有高性能.且该DC必需同时也是全局编录服务器 PDC仿问器的规划:占有PDC仿真器的域控制器必需保证同时拥有高可用性和高性能 RID主控的规划:占有RID主控的域控制器必需保证高可用性,但是不是必需拥有高性能 基础架构主控的规划:占有RID主控的域控制器可以忽略可用性和性能方面的考虑,但是不能把基础架构主控同全局编目服务器放在同一台与控制器上
第二节:转移操作主控 强占操作主控
首先从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)
通过开始--程序--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)里面就可以看到这个角色是在那台计算机上了
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都不一样
在命令提示符里面输入dcdiag /v 按回车键后 可以看到一项Starting test:RidManager 可以看到这个域可用的RID池是从2101到1073741823 可以看到Beijing这台计算机是RID Master 当前这台DC可用的范围是从1101到1600 rIDNextRID:1106 这个表示也就是下一次创建的用户 它的RID是1106
谁是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的优先级和负担又变成原值了 你不应该通过这种方式改 怎么改呢? 修改注册表
通过开始--运行--输入regedit按确定来打开注册表编辑器 在注册表编辑器里面的找到左下角那个路径 按Parameters 在右边的空白处右键--新建--选择双字节值 创建二个 一个叫做ldapsrvpriority(优先级)数值数据为50 一个叫做ldapsrvweight(负担)数值数据为10 在命令提示符里面输入net stop netlogon & net start netlogon按回车键 重启net logon服务后你就发现跟这个DC所有相关的SRV记录都变成我在注册表编辑器里面设置的值了 所以你可以在注册表编辑器里面加这二个键值来降低客户端对PDC的访问 展开pdc--按tcp--双击ldap后就可以看到优先级变成50 负担变成10了
在命令提示符里面输入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了
在命令提示符里面输入netdom query fsmo /domain:nwtraders.msft按回车键后 就可以看到刚才转移的Schema owner 已经给Shanghai这台计算机了 在命令提示符里面输入trans pdc按回车键后 它就问您确实想让服务器"shanghai.nwtraders.msft"到将主机送到域? 你按是就ok了 同样可以在命令提示符里面输入netdom query fsmo /domain:nwtraders.msft按回车键后 就看到PDC已经转移到shanghai这台计算机了
我现把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最好不要让它回到原来那个域当中了 不要再启动它了
通过开始--运行--输入%systemroot%/ntds按确定 按工具--选择文件夹选项--查看--把隐藏受保护的操作系统文件(推荐)的沟去掉 选择显示所有的文件和文件夹 把隐藏已知文件类型的扩展名的沟去掉 按确定后就可以 看到ntds.dit这个文件 整个活动目录数据库都在这个文件里面 edb.log这个文件代表事务日志文件 edb.chk是检查点文件 res1.log res2.log是保留日志文件
第二节:活动目录数据库维护 什么情况下手动维护数据库:数据库所在分区磁盘空间低 数据库容量太大导致备份时间过长 硬件失败 转移活动目录数据库:确定活动目录数据库大小 备份系统状态数据 重新启动计算机进入DSRM模式 使用NTDSUTIL.exe转移活动目录数据库 重新启动计算机 备份系统状态数据
在地址里面输入c:\boot.ini按回车键后就可以看到里面的内容了 然后你把multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Advanced Server" /fastdetect复制 粘贴到下一行 再加上DSRM /safeboot:dsrepair按保存就ok了 当你再重新启动的时候就出现二个选项 你按DSRM那一项就直接进入活动目录还原模式了
注意:在进入活动目录还原模式前一步的管理员密码不是域管理员密码 而是你安装活动目录的时候输入的密码 假如我忘记活动目录还原模式密码了 怎么办呢? 如果是在windows2000上就用域管理员登录到常规模式在命令提示符里面输入setpwd按回车键 然后再重新设置活动目录还原模式的密码就ok了
我现在已经进活动目录还原模式了 在命令提示符里面输入ntdsutil按回车键 输入file按回车键 输入move db to c:\ntds按回车键就ok了 就是说我现在要把活动目录数据库转移到C盘下的ntds文件夹里面 可以在命令提示符里面看到工作目录:c:\ntds表示已经转移成功了 我现在把ntds这个文件夹打开 已经可以看到ntds.dit(活动目录数据库)文件和edb.chk(检查点)文件了
在命令提示符里面输入ntdsutil按回车键 输入file按回车键 输入move log to c:\ntdslog按回车键 就把log文件转移到ntdslog这个文件夹了 打开ntdslog这个文件夹后可以看到edb.log res1.log re2.log这三个文件了 转移成功后就重新启动计算机 马上备份系统状态数据
收缩活动目录数据库:查看数据库空闲空间大小(online) 备份系统状态数据 重新启动计算机进入DSRM模式 使用ESENTUTL工具查看数据库空间(offline) 使用NTDSUTIL.exe工具收缩数据库 重新启动计算机 备份系统状态数据
在命令提示符里面输入esentutl /ms c:\ntds\ntds.dit /8按回车键 因为活动目录的数据库每个页面大小是8K 所以就在后面加/8 然后可以看到一张表 Owned表示这个活动目录的每一个表格占用了多少页 Available表示这个表格有多少空闲的页 最后有一个总结可以看到一共空闲了273页 我用计算机来算一下 每一页是8K 273X8=2184 可以知道大概空闲2M空间
在命令提示符里面输入ntdsutil按回车键 输入file按回车键 输入compact to c:\temp按回车键 c:\temp就是说我要把这个压缩文件放到C盘下的temp这个文件夹里面 你也可以看到是通过那一个执行指令来完成压缩的 压缩完成之后就重新启动计算机 备份系统状态数据
从活动目录数据库中删除对象:isDeleted 属性 Deleted Objects 容器 TombStone 周期 Garbage Collection 机制 Garbage Collection 周期
假如我现在把ccc这个联络人删除掉 通过开始--运行--输入adsiedit.msc按确定 找到CN=Users--CN=ccc 双击它打开属性 在Select a property to view那一项选择isDeleted 如果下面Edit Attribute那一项显示为True就表示这个联络人已经被删除掉了
在命令提示符里面输入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天后就等垃圾回收来清理它
在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 按确定 就开始生效了
本文转自 叶俊生 51CTO博客,原文链接:http://blog.51cto.com/yejunsheng/162191