There are two methods of Active Directory defragmentation available:
Online Defragmentation – Windows Server 2000 introduced a method that runs in certain intervals automatically to defragment the Active Directory database. It is part of active directory garbage collection process. When completed, it optimizes the data storage and reclaims the space for new active directory objects. This however will not reduce the size of the Active Directory database. The bonus of utilizing Online Defragmentation is that it not required to bring any service offline complete the task.
Offline Defragmentation – This method requires an IT administrator to stop the Active Directory service. In stopping said service, the process will create compact version of the existing Active directory database in different location. Once completed, the new defragmented compact database is copied to the original location. Estimates are that the database is shrunk to 1/6th of its original size after offline fragmentation.
The “ntdsutil” is needed to perform defragmentation and is the same tool used to check Active Directory errors. The following steps will detail the process.
- Plan the Active Directory shutdown impact properly and measure how it will affect the rest of the organization. Length of time to complete the defragmentation depends on the size of the Active Directory database and the how bad it is fragmented.
- Always perform a system state backup prior to the process.
Step 1: Stopping the Active Directory Service
- Login to the primary domain controller as Domain admin or Enterprise Admin
- Navigate to Server Manager > Tools > Services
- In Services.mmc right-click on Active Directory Domain Services and click Stop
- Services to be stopped are then listed. Click Yes to continue.
Step 2: Perfroming the Offline Active Directory Fragmentation
- Once services stops, run the Command Prompt in Administrator mode
- In the Command prompt window, type ntdsutil and press enter
- In prompt type activate instance NTDS and press enter
- Type files and press enter
- At the file maintenance we need specify the location where NTDS compact database will save. For this Step-By-Step, the folder C:\CompactDB was created. Type compact to C:\CompactDB and press enter
- The defragment process begins. The time to completion will depend on the size of the database
- Once completed type q to exit from the utility
- Close the Command Prompt console
- Copy the defragmented database from C:\CompactDB\ntds.dit to C:\Windows\NTDS\ntds.dit
- Delete the log files found in the directory
- Return to the Services.mmc
- Right-click on Active Directory Domain Services and click Start
The defragmentation of the Active Directory database is now complete.
Active Directory automatically performs online defragmentation of the database at certain intervals as part of the Garbage Collection process. (By default, this occurs every 12 hours.) Online defragmentation does not reduce the size of the database file (Ntds.dit) but instead optimizes data storage in the database and reclaims space in the directory for new objects.
Performing an offline defragmentation creates a new version of the database file without internal fragmentation. It also re-creates all indexes. Depending on how fragmented the original database file was, the new file may be much smaller.
To perform offline defragmentation of the Active Directory database:
- Back up Active Directory. Windows Server Backup natively supports backing up Active Directory while online. This occurs automatically when you select the option to back up everything on the computer in the Backup Wizard, or independently by selecting to back up the “System State” in the wizard.
- For Windows 2000 Server and Windows Server 2003
Restart the domain controller, select the appropriate installation from the boot menu, and then press F8 to display the Windows 2000 Server Advanced Options menu. Select Directory Services Restore Mode, and then press Enter. Press Enter again to restart.For Windows Server 2008 and later versions
Take one of the following actions:
- Stop the “Active Directory Domain Services” or LDS instance.
- Start “msconfig,” and go to the boot pane. Select the OS installation that you want to configure. Select Safe Boot in the Boot options section, and also select the Active Directory repair item. After you click OK, the tool asks you to restart. Restart the computer.
- Log on to the administrator account by using the password that is defined for the local administrator account in the Directory Service Restore Mode SAM. For more information about how to use the offline SAM database, click the following article number to view the article in the Microsoft Knowledge Base:
223301 Protection of the administrator account in the offline SAM
- Click Start, point to Programs, point to Accessories, and then click Command Prompt.
- At the command prompt, type cmd, and then press Enter.
- NTDSUTIL uses the TEMP and TMP environment variables to create a temporary database during defragmentation. If the free space on your standard volume used is less than the size of the compacted database, you receive the following error:
file maintenance: compact to d:\compactDB
Initiating DEFRAGMENTATION mode…
Source Database: D:\windows\NTDS\ntds.dit
Target Database: d:\compactDB\ntds.ditDefragmentation Status (% complete)0 10 20 30 40 50 60 70 80 90 100
……………………..Operation terminated with error -1808( JET_errDiskFull, No space left on disk ).
In the Application log, you see an event that resembles the following:
Log Name: Application
Event ID: 482
Task Category: General
Description:NTDS (12852) An attempt to write to the file “C:\Users\administrator\AppData\Local\Temp\tmp.edb” at offset 49315536896 (0x0000000b7b6f6000) for 0 (0x00000000) bytes failed after 0.015 seconds with system error 112 (0x00000070): “There is not enough space on the disk. “. The write operation will fail with error -1808 (0xfffff8f0). If this error persists then the file may be damaged and may need to be restored from a previous backup.
In this case, set the environment variables TMP and TEMP to a volume that has enough free space for the task. For example, use the following settings:
Note This problem can also occur during an integrity check of the database.
- For Windows 2008 and later versions
Type activate instance ntds to select the Active Directory database instance. Use the LDS instance name if you want to compact an LDS database.
- Type files, and then press Enter.
- Type info, and then press Enter. This displays current information about the path and size of the Active Directory database and its log files. Note the path.
- Establish a location that has sufficient drive space for the compacted database to be stored.
- Type compact to drivedirectory, and then press Enter. Note, in this command, the placeholders drive and directory represent the path of the location that you established in the previous step.Note You must specify a directory path. If the path contains any spaces, the whole path must be enclosed in quotation marks. For example, type:
compact to “c:\new folder”
- A new database that is named Ntds.dit or AdamNtds.dit is created in the path that you specified.
- Type quit, and then press Enter. Type quit again to return to the command prompt.
- If defragmentation succeeds without errors, follow the Ntdsutil.exe on-screen instructions. Delete all the log files in the log directory by typing the following command:
del drive pathToLogFiles \*.log
Copy the new Ntds.dit or AdamNtds.dit file over the old database file in the current database path that you noted in step 5.
Note You do not have delete the Edb.chk file.
- For Windows 2000 Server and Windows Server 2003
Restart the computer.For Windows Server 2008 and later versions
If you stopped Active Directory Domain Services or LDS instance, you can restart it now.
- For Windows Server 2008 and later versions
If you are working in the Active Directory Restore mode, start msconfig and go to the boot pane. Select the operating system installation that you want to configure. Click to clear Safe Boot in the Boot options section. When you click OK, the tool asks you to restart. Restart the computer.