Optimize Active Directory Disk Performance

by Wayne Maples [Published on 20 April 2004 / Last Updated on 20 April 2004]

Active Directory is a database and has the performance issues of a database. Familiar with SQL or Exchange? You know what works and what does not. AD has the database component and log files which are sequential records to allow the database to be rolled back. Don't forget the operating system's requirements. When you use dcpromo to install Active Directory on a Windows 2000 server, the default location for the database and its logfiles is the %SYSTEMROOT%\NTDS folder. This works for smaller organizations. If your AD is large and very active, the default puts a large load on the system partition (hard disk) since the Active Directory components and the operating system's pagefile are all pounding on it. If you need to maximize performance and fault tolerance, Microsoft recommends:
  • W2K OS: use two physical disks mirrored (get OS pagefile on separate drive)
  • AD database store NTDS.dit : use RAID5 of appropriate size for your enterprise
  • AD log files : use two physical disks mirrored
Let's get real. Hard drives are cheap. If you follow Microsoft's recommendations, you are much less likely to have to twiddle for performance issues or get ugly calls at night. For help sizing the AD servers, use Microsoft's AD Sizer utility.

The ESE engine can use the transaction records in the log files to recreate the database. The transaction logs are also used by ESE to verify that a restored datastore is consistent with the tranaction records. The log files for AD can be either sequential or circular logs. Circular logs overwrite transactions at specific intervals wheras sequential logs never overwrite transactions. Depending on log size and activity, circular logs may or may not have enough data should the datastore need recovery. I hear you now, if the sequential logs are never overwritten, what keeps the logs from consuming all available DASD? The Active Directory's garbage collection process: log files whose transaction records have been committed to the datastore are deleted. The garbage collection process deletes obsolete log files every 12 hours by default.

The default is sequential logs. They are safer. I know circular log files are more predictable in maximum space consumed, but when the sh*t hits the fan, critical records may no longer be in the sequential log files. Hard drive space is cheap. Get a couple of large disks and mirror them and leave the logs files as the default sequential format.

See Also

Featured Links