Active Directory : activer « Database 32 K pages » sur Windows Server 2025 (erreur msDS‑JetDBPageSize 8192 → 32768)

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.

Sommaire

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ômeCause racineObjectif
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 configurationAncienne base NTDS.DIT créée en 8 K, non reconstruiteCré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

  1. 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.
  2. 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.
  3. 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.
  4. Rendre le nouveau DC maître des rôles FSMO
    • Transférez Schema Master, Domain Naming Master, PDC Emulator, RID Master, Infrastructure Master.
  5. 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.
  6. 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).

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.

  1. Démonter le DC (Uninstall-ADDSDomainController ou l’assistant graphique). Assurez‑vous qu’un autre DC/GC couvre le site.
  2. Nettoyer l’ancienne base : supprimez (ou archivez) %systemroot%\NTDS\NTDS.DIT et les journaux ESE edb*.log une fois le rôle retiré.
  3. 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.
  4. 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

AspectImpact / Recommandation
PerformanceRéduction des lectures pour objets volumineux ; baisse de fragmentation interne ; latence plus stable lors d’insertions massives.
StockageAugmentation 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.
RollbackAucun retour au 8 K ; seule une restauration complète antérieure à l’activation est possible (incluant tous les DC concernés).
IFML’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.
RODCLes RODC doivent également publier 32 K avant l’activation. Planifiez leur remplacement ou reprovisionnement.

Plan de migration pas‑à‑pas (modèle)

PhaseObjectifsActions clésCritères de sortie
PréparationÉligibilité et sauvegardesVérifier niveaux fonctionnels, réplication, capacité disque ; sauvegarde État du systèmeInventaire msDS‑JetDBPageSize complété ; repadmin propre
DéploiementIntroduire les DC 32 KPromouvoir 2 DC/ domaine en 32 K ; transférer FSMODeux DC 32 K stables par domaine
RetraitÉliminer les DC 8 KDémonter méthodiquement les DC 8 K (par site) et nettoyer métadonnéesInventaire : 100 % des DC à 32 K
ActivationActiver la fonctionnalitéEnable-ADOptionalFeature au niveau forêtEnabledScopes reflète la forêt
ValidationStabilisationContrôles repadmin, journaux, tests de promotionObservabilité 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)

  1. Comprendre l’irréversibilité : tous les DC doivent partager 32 K une fois activé.
  2. Sauvegarder : État du système complet de chaque DC.
  3. 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.
  4. Vérifier : script PowerShell pour confirmer msDS‑JetDBPageSize = 32768 partout.
  5. 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)

ÉtapeCommande / Point de contrôleRésultat attendu
SauvegardeOutil de sauvegarde « État du système »Restauration testée, journaux disponibles
Inventaire 8 K vs 32 KScript PowerShell msDS‑JetDBPageSizeListe claire des DC à migrer
Déploiement DC 32 KInstall-ADDSDomainControllerNouveaux DC 32 K répliqués et stables
Transfert FSMOMove-ADDirectoryServerOperationMasterRoleRôles centralisés sur DC 32 K
Retrait DC 8 KUninstall-ADDSDomainControllerForêt sans DC 8 K
ActivationEnable-ADOptionalFeatureFonctionnalité activée au niveau forêt
Validationrepadmin, journaux « Directory‑Service »Pas d’erreurs, réplication saine

Rappel opérationnel en une page

  1. Irréversible : 32 K pour tous, pour toujours.
  2. Sauvegarde : État du système de chaque DC.
  3. Nouveaux DC 32 K (Windows Server 2025) → Transférer FSMO.
  4. Retirer DC 8 K (démotion propre, nettoyage métadonnées).
  5. Vérifier msDS‑JetDBPageSize = 32768 partout.
  6. Activer « Database 32 K pages » au niveau forêt.
Sommaire