Après une montée de version vers Windows Server 2025, l’activation de l’option « Database 32 K pages » peut échouer si tous les contrôleurs de domaine ne partagent pas la même taille de pages JET. Voici un guide exhaustif, opérationnel et sécurisé pour réussir cette transition.
Vue d’ensemble du problème
Une fois tous les contrôleurs de domaine (DC) migrés vers Windows Server 2025 et les niveaux fonctionnels de forêt et de domaine relevés, l’activation de la fonctionnalité facultative Database 32 K pages peut échouer avec le message :
The Active Directory JET database page size does not match on all Domain Controllers in this forest
En inspectant l’attribut msDS‑JetDBPageSize
sur chaque objet NTDS Settings, on constate que certains DC publient encore 8192 (8 K) au lieu des 32768 (32 K) requis.
Ce qu’il faut savoir avant de commencer
- Irréversibilité : activer le format 32 K est définitif. Tous les DC de la forêt doivent utiliser 32 K avant l’activation, et aucun retour à 8 K n’est prévu hors restauration complète.
- Sauvegardes : réalisez une sauvegarde État du système de chaque DC (incluant
NTDS.DIT
et le Registre) avant toute opération. - Réplication saine : corrigez toute latence ou erreur de réplication (
repadmin /replsummary
) avant d’entamer la bascule de format. - Compatibilité : après activation, vous ne pourrez plus promouvoir un DC avec un moteur JET à 8 K. Prévoyez des serveurs en Windows Server 2025 ou des OS explicitement configurés pour créer la base en 32 K.
- Temps d’indisponibilité : la méthode recommandée (ajout de nouveaux DC) évite l’arrêt. La reconfiguration d’un DC existant impose un down‑time ciblé.
Pourquoi « Database 32 K pages » ?
Active Directory s’appuie sur le moteur ESE (JET). Le paramètre « taille de page » de la base (NTDS.DIT
) affecte directement les E/S, la compaction et la fragmentation. Avec 32 K, les objets volumineux (p. ex. attributs multivalués très denses, SIDHistory étendu, ACLs complexes) produisent moins de fragments et requièrent moins d’E/S pour être chargés. En contrepartie, la base consomme un peu plus d’espace disque.
Symptômes, cause racine et objectif
Symptôme | Cause racine | Objectif |
---|---|---|
Erreur lors de Enable-ADOptionalFeature pour « Database 32 K pages » | Au moins un DC publie msDS‑JetDBPageSize = 8192 (8 K) | Amener tous les DC à 32768 (32 K), puis activer la fonctionnalité |
Incohérence d’attributs de configuration | Ancienne base NTDS.DIT créée en 8 K, non reconstruite | Créer/recréer la base en 32 K (nouveau DC ou reprovisionnement contrôlé) |
Méthode recommandée : migration par ajout de nouveaux DC en 32 K
Cette approche minimise les risques : on introduit des DC « propres » en 32 K, on transfère la charge et les rôles, puis on retire les DC 8 K.
Étapes détaillées
- Préparer le site et l’hébergement
- Capacité disque pour
NTDS.DIT
(prévoir +5 à 15 % d’augmentation par rapport au 8 K), journaux ESE, et sauvegardes. - Exclusions antivirus sur
%systemroot%\NTDS
et les journaux ESE. - Synchroniser l’heure (NTP) et vérifier DNS/GC.
- Capacité disque pour
- Promouvoir un nouveau DC Windows Server 2025
- Utilisez Server Manager ou PowerShell
Install-ADDSDomainController
. - Sur Windows Server 2025, la base AD est créée nativement en 32 K. Aucune option spéciale n’est requise tant que le serveur est à jour et la base créée ex nihilo.
- Ne pas utiliser IFM (
Install From Media
) depuis une source 8 K : l’IFM hériterait du format 8 K.
- Utilisez Server Manager ou PowerShell
- Valider la réplication et l’état des services
repadmin /replsummary
doit être propre (0 échecs).dcdiag /v /e
ne doit pas signaler d’anomalies bloquantes.
- Rendre le nouveau DC maître des rôles FSMO
- Transférez Schema Master, Domain Naming Master, PDC Emulator, RID Master, Infrastructure Master.
- Introduire au moins deux DC 32 K par domaine
- Le premier DC 32 K peut rester seul temporairement, mais le design HA requiert au moins deux DC/GC 32 K par domaine.
- Retirer progressivement les DC en 8 K
- Procédez par site : vérifier
msDS‑JetDBPageSize
, déplacer rôles/DNS/GC au besoin, puis démonter le DC (Server Manager,Uninstall-ADDSDomainController
ou l’assistant graphique). - Surveiller la magie : métadonnées et tombstones (éviter les suppressions hors procédure).
- Procédez par site : vérifier
Méthode alternative (plus risquée) : reconfiguration d’un DC existant
À réserver aux environnements contraints. Cette méthode impose la démotion du DC, la régénération d’une base 32 K puis la repromotion.
- Démonter le DC (
Uninstall-ADDSDomainController
ou l’assistant graphique). Assurez‑vous qu’un autre DC/GC couvre le site. - Nettoyer l’ancienne base : supprimez (ou archivez)
%systemroot%\NTDS\NTDS.DIT
et les journaux ESEedb*.log
une fois le rôle retiré. - Forcer la création en 32 K (si le système n’est pas Windows Server 2025 ou si vous voulez lever tout doute) en ajoutant la valeur Registre :
HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters "Database Page Size"=dword:00008000 ; 0x8000 = 32768
Remarque : si la valeur est absente, l’OS choisit sa valeur par défaut. La définir explicite élimine l’ambiguïté, mais ne change pas la taille d’une base déjà existante ; elle s’applique lors de la création de la base. - Repromouvoir en DC (
Install-ADDSDomainController
) et laisser la réplication reconstruire le contenu.
⚠️ Avertissement : cette approche entraîne un temps d’indisponibilité des services fournis par ce DC (authentification locale au site si aucun relais), exige une rigueur totale sur les métadonnées et augmente le risque d’erreur humaine. Si possible, privilégiez la méthode « nouveaux DC ».
Inventaire et vérifications avec PowerShell
Lister la taille de page JET par DC
Exécutez depuis une session privilégiée :
$configNC = (Get-ADRootDSE).configurationNamingContext
Get-ADObject -LDAPFilter "(objectClass=nTDSDSA)" -SearchBase $configNC -Properties msDS-JetDBPageSize,distinguishedName |
ForEach-Object {
$ntds = $_
$serverCN = ($ntds.distinguishedName -split ',')[1] -replace '^CN='
[PSCustomObject]@{
Serveur = $serverCN
PageSize = $ntds.'msDS-JetDBPageSize'
}
} | Sort-Object Serveur | Format-Table -AutoSize
Surveiller la santé de la réplication
repadmin /replsummary
repadmin /showrepl *
dcdiag /v /e /c
Vérifier la présence/état de la fonctionnalité
# Rechercher l'optionnelle "Database 32k pages feature"
Get-ADOptionalFeature -Filter "Name -like '*32k*'"
# Voir où elle est déjà activée (si c'est le cas)
(Get-ADOptionalFeature -Identity "Database 32k pages feature").EnabledScopes
Quand tous les DC sont en 32 K : activer la fonctionnalité
Dès que tous les DC affichent msDS‑JetDBPageSize = 32768
:
Enable-ADOptionalFeature `
-Identity "Database 32k pages feature" `
-Scope ForestOrConfigurationSet `
-Target (Get-ADForest).Name
Validation :
(Get-ADOptionalFeature -Identity "Database 32k pages feature").EnabledScopes
Contrôles post‑activation (checklist)
- Réplication :
repadmin /replsummary
(0 échec),Get-ADReplicationPartnerMetadata
(aucune erreur). - Événements : journaux « Directory‑Service » et « ESENT » ; absence d’erreurs liées à la base AD.
- Promotion d’un DC test (si possible) : vérifiez que la promotion se déroule sans alerte de page size.
- Monitoring : surveillez la taille de
NTDS.DIT
, l’occupation disque, la latence de réplication, l’utilisation CPU/IOPS durant la stabilisation.
Tableau : impacts, capacités et compatibilités
Aspect | Impact / Recommandation |
---|---|
Performance | Réduction des lectures pour objets volumineux ; baisse de fragmentation interne ; latence plus stable lors d’insertions massives. |
Stockage | Augmentation typique de 5 à 15 % de NTDS.DIT . Dimensionnez le volume et la sauvegarde en conséquence. |
Interopérabilité | Impossible d’ajouter un DC qui ne sait pas créer/servir une base 32 K. Évitez les systèmes trop anciens ou non conformes. |
Rollback | Aucun retour au 8 K ; seule une restauration complète antérieure à l’activation est possible (incluant tous les DC concernés). |
IFM | L’IFM hérite du format de la source. Générer l’IFM à partir d’un DC déjà en 32 K pour rester cohérent. |
RODC | Les RODC doivent également publier 32 K avant l’activation. Planifiez leur remplacement ou reprovisionnement. |
Plan de migration pas‑à‑pas (modèle)
Phase | Objectifs | Actions clés | Critères de sortie |
---|---|---|---|
Préparation | Éligibilité et sauvegardes | Vérifier niveaux fonctionnels, réplication, capacité disque ; sauvegarde État du système | Inventaire msDS‑JetDBPageSize complété ; repadmin propre |
Déploiement | Introduire les DC 32 K | Promouvoir 2 DC/ domaine en 32 K ; transférer FSMO | Deux DC 32 K stables par domaine |
Retrait | Éliminer les DC 8 K | Démonter méthodiquement les DC 8 K (par site) et nettoyer métadonnées | Inventaire : 100 % des DC à 32 K |
Activation | Activer la fonctionnalité | Enable-ADOptionalFeature au niveau forêt | EnabledScopes reflète la forêt |
Validation | Stabilisation | Contrôles repadmin , journaux, tests de promotion | Observabilité OK et indicateurs au vert |
Procédures détaillées (exemples prêts à l’emploi)
Script : inventaire exhaustif et rapport
# 1) Collecte
$configNC = (Get-ADRootDSE).configurationNamingContext
$ntds = Get-ADObject -LDAPFilter "(objectClass=nTDSDSA)" -SearchBase $configNC -Properties msDS-JetDBPageSize,distinguishedName
$rows = foreach($o in $ntds){
$serverCN = ($o.distinguishedName -split ',')[1] -replace '^CN='
[PSCustomObject]@{
Domaine = (Get-ADDomainController -Identity $serverCN -ErrorAction SilentlyContinue).Domain
Site = (Get-ADDomainController -Identity $serverCN -ErrorAction SilentlyContinue).Site
Serveur = $serverCN
PageSize = $o.'msDS-JetDBPageSize'
Est32K = $o.'msDS-JetDBPageSize' -eq 32768
}
}
# 2) Affichage
$rows | Sort-Object Domaine, Site, Serveur | Format-Table -AutoSize
# 3) Résumé
$group = $rows | Group-Object Est32K
"DC en 32K : " + ($group | Where-Object {$*.Name -eq 'True'}).Count
"DC en 8K : " + ($group | Where-Object {$*.Name -eq 'False'}).Count
Transfert des rôles FSMO (sécurisé)
$target = "DC-32K-01.contoso.local"
Move-ADDirectoryServerOperationMasterRole -Identity $target -OperationMasterRole SchemaMaster,DomainNamingMaster,PDCEmulator,RIDMaster,InfrastructureMaster -Confirm:$false
Démotion contrôlée d’un DC 8 K
Uninstall-ADDSDomainController -DemoteOperationMasterRole:$true -RemoveApplicationPartitions:$true -ForceRemoval:$false
Pièges fréquents et bonnes pratiques
- IFM issu d’un DC 8 K : promotion héritera du 8 K → privilégiez une source 32 K.
- Réplication partielle : même un RODC resté en 8 K bloque l’activation. Remplacez/reprovisionnez‑le.
- Antivirus : exclusions impératives des chemins AD (base et journaux) pour éviter des verrous de fichier.
- Mélange de versions : n’introduisez pas de DC qui ne supportent pas 32 K après activation.
- Manque de capacité : vérifiez la place disque pour l’augmentation de la base et des sauvegardes.
- Changements multiples : évitez de combiner montée de niveau fonctionnel, refonte DNS et 32 K dans la même fenêtre.
FAQ rapide
Peut‑on « convertir » une base 8 K en 32 K ?
Non. La taille de page est fixée à la création de NTDS.DIT
. Il faut créer une nouvelle base (nouveau DC) ou démotion/promotion contrôlée pour ce serveur.
Doit‑on activer la fonctionnalité avant d’ajouter des DC 32 K ?
Non. Ajoutez d’abord des DC en 32 K jusqu’à ce que tous les DC de la forêt soient en 32 K, puis activez la fonctionnalité.
Que se passe‑t‑il si un DC 8 K réapparaît après l’activation ?
Il ne devrait pas être possible de le promouvoir. Évitez toute restauration non coordonnée d’une sauvegarde ancienne.
Quel est l’impact sur SYSVOL (FRS/DFS‑R) ?
Aucun : la taille de page JET concerne uniquement la base AD NTDS.DIT
, pas la réplication SYSVOL.
Procédure « express » (résumé d’exécution)
- Comprendre l’irréversibilité : tous les DC doivent partager 32 K une fois activé.
- Sauvegarder : État du système complet de chaque DC.
- Uniformiser :
- Recommandé : ajouter de nouveaux DC Windows Server 2025 (création en 32 K), transférer FSMO, retirer les DC 8 K.
- Alternative : démotion → Registre « Database Page Size » à
0x8000
→ repromotion.
- Vérifier : script PowerShell pour confirmer
msDS‑JetDBPageSize = 32768
partout. - Activer :
Enable-ADOptionalFeature -Identity "Database 32k pages feature" -Scope ForestOrConfigurationSet -Target <NomForêt>
Annexes : commandes utiles
# Lister tous les DC et sites
Get-ADDomainController -Filter * | Select-Object HostName, Site
# Vérifier/monter les niveaux fonctionnels
(Get-ADForest).ForestMode
(Get-ADDomain).DomainMode
# État de la réplication (détails)
Get-ADReplicationPartnerMetadata -Target * -Scope Forest | `
Select Server,Partner,ConsecutiveFailureCount,LastReplicationResult,LastSuccessfulSync
# Afficher la taille de la base et des journaux sur chaque DC (via WinRM si autorisé)
Invoke-Command -ComputerName (Get-ADDomainController -Filter *).HostName -ScriptBlock {
Get-ChildItem "$env:SystemRoot\NTDS*.dit","$env:SystemRoot\NTDS*.log" | `
Select FullName, Length
}
Bonnes pratiques opérationnelles
- Documentation : consignez pour chaque DC la date de création de la base, la taille de page et les captures de validation.
- Pilote : testez d’abord sur un domaine de préproduction avec des données représentatives.
- Fenêtre de changement : planifiez en heures creuses et tenez informés les propriétaires d’applications sensibles à l’authentification.
- Revue post‑mortem : analysez l’occupation disque, la latence d’authentification et la réplication post‑migration.
Conclusion
La clé du succès consiste à passer 100 % des contrôleurs de domaine en 32 K avant d’activer l’option forestière. La voie la plus sûre est l’introduction de nouveaux DC Windows Server 2025 qui créent une base NTDS.DIT
directement en 32 K, suivie du transfert des rôles FSMO et de la décommission des anciens DC 8 K. Une fois la cohérence vérifiée avec msDS‑JetDBPageSize
, l’activation via Enable-ADOptionalFeature
se déroule sans heurts et consolide les gains de performance et de maintenance à long terme.
Annexe : mémo visuel (à conserver)
Étape | Commande / Point de contrôle | Résultat attendu |
---|---|---|
Sauvegarde | Outil de sauvegarde « État du système » | Restauration testée, journaux disponibles |
Inventaire 8 K vs 32 K | Script PowerShell msDS‑JetDBPageSize | Liste claire des DC à migrer |
Déploiement DC 32 K | Install-ADDSDomainController | Nouveaux DC 32 K répliqués et stables |
Transfert FSMO | Move-ADDirectoryServerOperationMasterRole | Rôles centralisés sur DC 32 K |
Retrait DC 8 K | Uninstall-ADDSDomainController | Forêt sans DC 8 K |
Activation | Enable-ADOptionalFeature | Fonctionnalité activée au niveau forêt |
Validation | repadmin , journaux « Directory‑Service » | Pas d’erreurs, réplication saine |
Rappel opérationnel en une page
- Irréversible : 32 K pour tous, pour toujours.
- Sauvegarde : État du système de chaque DC.
- Nouveaux DC 32 K (Windows Server 2025) → Transférer FSMO.
- Retirer DC 8 K (démotion propre, nettoyage métadonnées).
- Vérifier
msDS‑JetDBPageSize = 32768
partout. - Activer « Database 32 K pages » au niveau forêt.