维护活动目录数据库是一个很重要的管理任务,它需要定期帮助覆盖丢失和出错的数据,修正活动目录数据库。活动目录数据库存储包含有AD中所有数据,所以活动目录数据库维护是一项非常重要的工作。一般情况下,管理员很少会直接管理活动目录数据库,因为有规律的自动化数据库管理可以维护数据库健康。这些自动进程包括活动目录数据库联机碎片整理和清除已删除的垃圾收集。对于需要直接管理活动目录数据库,可以使用ntdsutil工具进行管理。
一、活动目录数据文件介绍
活动目录数据文件默认存储在 C:WindowsNTDS 目录下:


1.edb.chk:这是检查点文件。edb.chk文件存储数据库的检查点,这些检查点标识数据库引擎需要重复播放日志的点,通常在恢复或初始化时。
2.edbxxxxx.log:事务日志文件。edb.log是日志文件,对数据库进行更改后,将该更改写入到edb.log文件中。当edb.log文件充满事务之后,会被重新命名为edbxxxxx.log,日志文件从edb00001开始,并使用十六进制数累加。由于Active Directory使用循环记录,所以在旧日志文件写入数据库之后,这些旧日志文件会及时删除。在任何时刻都可以找到edb.log文件,而且还可能有一个或多个Edbxxxxx.log文件。
3.edbresxxxx.jrs:这些文件是保留的日志文件仅当含有日志文件的磁盘空间不足时使用。如果当前的日志文件填满了且由于磁盘剩余空间不足服务器不能创建新的日志文件,服务器会将当前记忆体中的活动目录处理记录到两个保留日志文件中然后关闭活动目录。每一个日志文件也是10MB大小。
4.edbtmp.log:该日志是当当前日志文件(Edb.log)填满时的暂时日志。一个edbtmp.log的新文件被创建来记录处理,同时edb.log文件被重命名为下一个以往日志文件,然后edbtmp.log文件会被重名为edb.log。
5.ntds.dit:数据库文件。ntds.dit会随着数据库的填充而不断增大。但是,日志的大小却是固定的10 MB。对数据库进行的任何更改都会被追加到当前的日志文件中,而且其磁盘映像会不断保持更新。
6.Temp.edb:这是个在数据库维护时使用的暂时文件用于存储当前进程中处理的信息。
二、垃圾收集
用户维护活动目录数据库的一个自动化进程是垃圾收集。垃圾收集是一个每12小时在每台域控制器上运行一次的进程。在垃圾收集进程中,将收回活动目录数据库中的可用空间。
垃圾收集进程首先从删除数据库中的逻辑删除开始。逻辑删除是已经从AD中删除的对象的部分剩余。当某个对象被删除时,该对象不会被立即删除,而是将该对象的isDeleted属性设置为true,对象被逻辑删除后,对象的大部分属性会删除,只有用于标识该对象的几种属性被保留,如:SID、GUID、USN(更新序列号)和可分辨名称。默认情况下,逻辑删除的生存时间为180天,期限满后,垃圾收集进程下次运行时,对象会从数据库中删除。删除万逻辑删除后,垃圾收集进程将删除所有不要的事务日志文件。
三、联机碎片整理
垃圾收集进程的最后一步是活动目录数据库的联机碎片整理。联机碎片整理释放熟即可的空间,并重新安排数据库中活动目录的存储位置,从而提高数据库的效率。
联机碎片征集进程清理数据库,使数据库的存储处于一种更优化的状态。联机碎片整理的一个缺点是不会减少活动目录数据库的大小。作为垃圾收集的一部分,联机碎片整理也是每12小时运行一次。当联机碎片整理完成后,会生出一个日志事件。如下图:


四、脱机碎片整理
联机碎片整理不会减少活动目录数据库的大小,在正常环境中是没有问题的。但是,在某些情况下,可能需要使用脱机碎片整理来减少数据库的整体大小。运行脱机碎片整理的方法:
1.停止活动目录服务,使用services.msc打开服务控制台,找到“Active Directory Domain Services”服务,将该服务停止(或者使用net stop ntds命令也可以)。


2.打开CMD命令提示符,输入ntdsutil 。如果忘记命令,可以输入?来获取帮助信息。


3.输入:activate instance ntds设置活动实例,输入:files ,接着输入:info  可以显示数据库及日志文件的路径和大小。


4.输入: compact to D:NDTS  , 这个可以根据自己需求设置路径的。脱机碎片整理会在你指定的路径创建一个名为ntds.dit的新数据库文件。当数据库被复制到新位置时,会对数据库执行碎片整理。



5.依次输入2次 quit,退出ntdsutil。
6.将碎片整理后的数据库文件ntds.dit拷贝并替换C:WindowsNTDS 目录的数据库文件。并删除日志文件。



7.启动“Active Directory Domain Services”服务,或者重启域控制器。
五、移动活动目录数据库
随着域中的计算机和用户以及其他对象的增加,活动目录数据会变得较大,如果存储数据库的分区容量不够大,则可能需要更改动目录数据库和日志文件的存储位置,将其移动到一个较大的磁盘分区。
1.停止活动目录服务,使用services.msc打开服务控制台,找到“Active Directory Domain Services”服务,将该服务停止(或者使用net stop ntds命令也可以)。
2.在需要移动到的目标分区上创建存放数据库及日志文件的文件夹,如:D:NTDS。
3.打开CMD命令提示符,依次输入:ntdsutil----activate instance ntds----files----info ,可以查看到当前数据库及日志文件的路径和大小。



4.移动数据库文件,在file maintenance:提示符下输入: move db to D:NTDS,并回车。



5.移动日志文件,在file maintenance:提示符下输入: move logs to D:NTDS,并回车。



6.完成上述步骤后,可以输入info查看数据库及日志文件位置,可以看到已经成功移动到目标位置



7.移动完后检查数据库完整性,file maintenance:提示符下输入: integrity



8.启动“Active Directory Domain Services”服务,或者重启域控制器。