Il funzionamento è lo stesso per ogni database: quando viene aggiunto un nuovo record, spazio aggiuntivo viene allocato dal database per salvare l’informazione. Quando si cancella un record però lo spazio allocato non viene rilasciato dal database. E’ necessario effettuare l’operazione di compact per recuperare lo spazio inutilizzato.
Il servizio AD DS effettua in automatico solamente una riorganizzazione dei dati per un accesso più semplice ma non recupera lo spazio allocato. Per effettuare l’operazione bisogna mettere il database offline ed effettuare la procedura di compaction.
In Windows Server 2008 R2, il servizio AD DS è un normale servizio di Windows che può essere arrestato e riavviato per effettuare operazioni di manutenzione senza dover avviare il DC in modalità Directory Service Repair Mode. Per fermare il servizio AD DS in un DC è comunque necessario che un altro “writable DC” possa essere contattato per permettere agli utenti di logarsi al dominio.
Procedura
Assicurarsi che un altro Domain Controller sia disponibile nel dominio prima di procedere.
Creare nel DC le directory C:\Temp, se non già presente, e C:\NTDS_original per “parcheggiare” il database compattato e originale.
Da Start –> Administrative Tools –> Services arrestare il servizio Active Directory Domain Services.
Cliccare su Yes per arrestare anche i servizio associati.
Il servizio Active Directory Domain Services viene arrestato.
Aprire il Command Prompt con privilegi di Administrator.
Tramite il tool ntdsutil, viene effettuata l’operazione di compattazione del database. Da console lanciare in sequenza i comandi:
ntdsutil
activate instance NTDS
files
compact to c:\temp
Terminata l’operazione, il database viene compattato e copiato nella directory C:\Temp come riportato dalla schermata.
Uscire da ntdsutil digitando due volte il comando quit.
quit
quit
Cancellare i log file dalla directory C:\Windows\NTDS.
C:\>cd %systemroot%\ntds
C:\Windows\NTDS>del *.log
Effettuare il backup del database ntds.dit originale nel folder C:\NTDS_original creato precedentemente nel caso qualcosa andasse storto.
C:\>cd %systemroot%\ntds
C:\Windows\NTDS> copy ntds.dit \NTDS_original
Copiare il database compattato nel folder NTDS.
C:\Windows\NTDS> copy c:\temp\ntds.dit
Y
Lo step successivo prevede la verifica dell’integrità del nuovo file ntds.dit e dei dati contenuti nel database tramite l’operazione di semantic database analysis.
Procedere con la verifica dell’integrità del file ntds.dit tramite i comandi:
ntdsutil
activate instance NTDS
files
integrity
Terminata la verifica, è necessario come suggerito di procedere con la semantic database analysis.
Per eseguire l’operazione successiva ed uscire da ntdsutil, digitare da console i seguenti comandi:
quit
semantic database analysis
go fixup
quit
quit
Da Start –> Administrative Tools –> Services selezionare con il tasto destro del mouse il servizio Active Directory Domain Services e cliccare su Start.
Il servizio AD DS viene avviato.
Cancellare il file C:\NTDS_original\ntds.dit poichè non più valido.
Automatizzare la procedura
Tutta l’operazione può essere automatizzata tramite script. Creare un file DB_maintenance.cmd con i comandi seguenti.
@echo off cls echo. echo *** Deleting old *.dit entries del c:\temp\*.dit del c:\ntds_original\*.dit echo. echo *** Stop AD DS Services net stop ntds /y echo. echo *** Compact NTDS database ntdsutil "activate instance NTDS" files "compact to c:\temp" quit quit echo. echo *** Backup original and delete logs then copy new cd \windows\ntds del *.log copy ntds.dit \ntds_original del ntds.dit copy c:\temp\ntds.dit echo. echo *** Check integrity ntdsutil "activate instance NTDS" files integrity quit "semantic database analysis" "go fixup" quit quit echo. echo *** Start AD DS Services net start ntds exit
Testare lo script per verificare la sua funzionalità prima di utilizzarlo sui server in produzione.
La procedura è illustrata anche tramite supporto video.
Effettuare l’operazione a cadenza periodica per tenere sotto controllo la dimensione del database.