SYSVOL, NETLOGON und SysvolReady
Jeder Domain Controller stellt neben LDP, GC, Kerberos und anderen Diensten auch per SMB die Freigaben SYSVOL und NETLOGON bereit. Wenn das nicht klappt, ist der DC kein richtig funktionierender Domain Controller. Dann stellt sich die Frage, warum das so ist.
SYSVOL/NETLOGON
Der Regelfall ist, dass der Domain Controller die Freigaben beim Hochfahren erstellt. Ein schneller Blick in die Netzwerkumgebung, der Aufruf von "NET SHARE" oder per PowerShell liefert direkt Ergebnisse:

In dem Beispiel liegen die Verzeichnisse physikalisch auf C:\Windows\SYSVOL aber wenn ihre Domain früher unter Windows 2000/2003 erstellt und laufend migriert wurde, dann sehen Sie vielleicht auch ein "SYSVOL_DFRS" im Pfad. Über die Einrichtung von SYSVOL bei der Installation des ersten DCs oder beim addieren eines weiteren DCs habe ich auf SYSVOL Initialisierung mehr Details beschrieben.
NETLOGON-Service und SysvolReady
Wer etwas recherchiert, findet sehr schnell heraus, dass ein Schlüssel in der Registrierung das Verhalten des NETLOGON-Dienstes beeinflusst.
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters] "SysVol"="C:\\Windows\\SYSVOL\\sysvol" "SysvolReady"=dword:00000000

Über einen Schlüssel in der Registrierung steuern Sie den NETLOGON-Dienst, die SYSVOL/NETLOGON-Freigaben zu erstellen und damit auch "aktiv" zu werden. Änderungen an dem Schlüssel werden von NETLOGON quasi "sofort" und nicht erst bei einem Neustart umgesetzt. Wenn der NETLOGON-Dienst läuft, dann haben wir folgendes Verhalten:
| Wechsel von->auf | Vorher | Danach |
|---|---|---|
1->0 |
SYSVOL/NETLOGON sind freigegeben |
SYSVOL/NETLOGON sind NICHT MEHR freigegeben |
0->1 |
SYSVOL/NETLOGON sind NICHT MEHR freigegeben |
SYSVOL/NETLOGON sind freigegeben |
Diese Änderung erfolgt aber nur, wenn der Dienst NETLOGON auch gestartet ist. Wenn der Dienst beendet ist, dann wird die aktuelle Einstellung erst beim Start des Dienstes angewendet
Die Arbeit von NETLOGON ist überschreibend, d.h. sollten Sie eine der Freigaben bei gestoppten NETLOGON-Dienst z.B. mit "NET SHARE SYSVOL /Delete" entfernt haben, dann werden Sie beim nächsten Start von NETLOGON wieder bereitgestellt.
Achtung: Wenn die Freigaben nicht vorhanden sind, dann sollten Sie DFS-Replikation prüfen, denn DFRS ist für die Bereitstellung relevant Siehe auch DFS, FRS, DFRS
In der Regel sollten Sie den Schlüssel nie manuell ändern müssen.
Achtung:
Wenn Sie auf allen DCs den Wert "SysvolReady=0" setzen, dann
bietet kein DC mehr Anmeldedienste an und sie haben ihr AD
quasi komplett außer Funktion genommen. Vielleicht hilft
ihnen dann aber die Beschreibung auf
DC Anmeldung scheitert weiter
SysvolReady und DFRS/FRS
Damit stellt sich natürlich die Frage, wer den Wert wann setzt. Hier kommt die Rolle des DFRS (Distributed File Replication Service) in den Blick, welche die Inhalte von SYSVOL zwischen den verschiedenen Domaincontrollern repliziert. Sie haben ein bestehendes Active Directory und installieren einen weiteren Domain Controller. Schon während der Installation wird das LDAP-Verzeichnis repliziert aber die Einrichtung von SYSVOL dauert etwas länger. Nach dem ersten Neustart des Domain Controllers wartet NETLOGON darauf, dass DFRS die Inhalte von einem anderen DC, bevorzugt ist das der PDC-Emulator, repliziert. Erst dann wird von "DFRS Replication"-Service der Wert gesetzt.
Eine Suche im DFRS-Log in c:\windows\debug nach SYSVOL liefert jede Menge Treffer, die die Funktionsweise demonstrieren.
C:\>findstr /i sysvol C:\Windows\debug\Dfsr00149.log
20240920 16:26:41.523 660 SYSM 5580 Migration::SysVolUtil::RemoveNtfrsDependencyOnNtds [MIG] Remove NTDS from NTFRS DependOnService
20240920 16:26:43.895 5972 CREG 1419 Config::RegReader::IsSysVolCommitFlagSet key: System\CurrentControlSet\Services\DFSR\Parameters\SysVols\Demoting SysVols valueName:'SysVol Information is Committed' result:0
20240920 16:26:43.895 5972 ADWR 1292 Config::AdWriter::CreateSysVolObjects [SYSVOL] IsDc:1 isSysVolCreated:0
20240920 16:26:43.895 5972 CREG 1419 Config::RegReader::IsSysVolCommitFlagSet key: System\CurrentControlSet\Services\DFSR\Parameters\SysVols\Promoting SysVols valueName:'SysVol Information is Committed' result:0
20240920 16:26:43.895 5972 ADWR 1310 Config::AdWriter::CreateSysVolObjects [SYSVOL] Promoting SysVol Commit Flag not set
20240920 16:26:43.895 5972 CFAD 7260 Config::AdConfig::ConstructSysVolObjects [SYSVOL] LocalSettings:cn=DFSR-LocalSettings,CN=DC01,OU=Domain Controllers,DC=UCLABOR,DC=DE
20240920 16:26:43.895 5972 CFAD 7261 Config::AdConfig::ConstructSysVolObjects [SYSVOL] subscriber:cn=Domain System Volume,cn=DFSR-LocalSettings,CN=DC01,OU=Domain Controllers,DC=UCLABOR,DC=DE
20240920 16:26:43.895 5972 CFAD 7262 Config::AdConfig::ConstructSysVolObjects [SYSVOL] subscription:cn=SYSVOL Subscription,cn=Domain System Volume,cn=DFSR-LocalSettings,CN=DC01,OU=Domain Controllers,DC=UCLABOR,DC=DE
20240920 16:26:43.895 5972 CFAD 7263 Config::AdConfig::ConstructSysVolObjects [SYSVOL] GlobalSettings:cn=DFSR-GlobalSettings,cn=system,DC=UCLABOR,DC=DE
20240920 16:26:43.895 5972 CFAD 7264 Config::AdConfig::ConstructSysVolObjects [SYSVOL] ReplicationGroup:cn=Domain System Volume,cn=DFSR-GlobalSettings,cn=system,DC=UCLABOR,DC=DE
20240920 16:26:43.895 5972 CFAD 7265 Config::AdConfig::ConstructSysVolObjects [SYSVOL] Content:cn=Content,cn=Domain System Volume,cn=DFSR-GlobalSettings,cn=system,DC=UCLABOR,DC=DE
20240920 16:26:43.895 5972 CFAD 7266 Config::AdConfig::ConstructSysVolObjects [SYSVOL] Topology:cn=Topology,cn=Domain System Volume,cn=DFSR-GlobalSettings,cn=system,DC=UCLABOR,DC=DE
20240920 16:26:43.895 5972 CFAD 7267 Config::AdConfig::ConstructSysVolObjects [SYSVOL] Content Set:cn=SYSVOL Share,cn=Content,cn=Domain System Volume,cn=DFSR-GlobalSettings,cn=system,DC=UCLABOR,DC=DE
20240920 16:26:43.895 5972 CFAD 7268 Config::AdConfig::ConstructSysVolObjects [SYSVOL] Member:cn=DC01,cn=Topology,cn=Domain System Volume,cn=DFSR-GlobalSettings,cn=system,DC=UCLABOR,DC=DE
20240920 16:26:43.911 5972 SYSM 3830 Migration::SysVolMigration::Connect [MIG] Trying to connect to Local or any writable Dc AD
20240920 16:26:43.927 5972 SYSM 2035 Migration::SysVolMigration::ShouldExit [MIG] ShouldExit=true
20240920 16:26:43.942 5972 CREG 1419 Config::RegReader::IsSysVolCommitFlagSet key: System\CurrentControlSet\Services\DFSR\Parameters\SysVols\Seeding SysVols valueName:'SysVol Information is Committed' result:0
20240920 16:26:43.942 5972 CPAR 587 Config::StringParam::Print ReplicatedFolderDn: CN=SYSVOL Share,CN=Content,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=UCLABOR,DC=DE [Flags:0x1]
20240920 16:26:43.942 5972 CPAR 587 Config::StringParam::Print ReplicatedFolderName: SYSVOL Share [Flags:0x1]
20240920 16:26:43.942 5972 CPAR 957 Config::PathParam::Print RootPath: C:\Windows\SYSVOL\domain [Flags:0x1]
20240920 16:26:43.942 5972 CPAR 957 Config::PathParam::Print StagingPath: C:\Windows\SYSVOL\staging areas\UCLABOR.DE [Flags:0x1]
20240920 16:26:43.942 5972 CPAR 957 Config::PathParam::Print ConflictPath: C:\Windows\SYSVOL\domain\DfsrPrivate\ConflictAndDeleted [Flags:0x1]
20240920 16:26:43.942 4608 SYSM 363 Migration::SysvolMigrationTask::Step [MIG] Entering SYSVOL Migration task
20240920 16:26:43.942 4608 SYSM 3830 Migration::SysVolMigration::Connect [MIG] Trying to connect to Local or any writable Dc AD
20240920 16:26:43.958 4608 SYSM 5019 Migration::SysVolMigration::CreateLocalStateIfNone [MIG] Local State is 'Eliminated'
20240920 16:26:43.958 4608 SYSM 3354 Migration::SysVolMigration::GetSysVolReadyFlag [MIG] Sysvol Is Ready
20240920 16:26:43.958 4608 SYSM 2035 Migration::SysVolMigration::ShouldExit [MIG] ShouldExit=true
20240920 16:26:43.958 4608 SYSM 540 Migration::SysvolMigrationTask::Step [MIG] Migration state is already at MIG_STATE_ELIMINATED. Exiting SYSVOL Migration Thread
20240920 16:26:44.020 6856 VLMG 5754 VolumeManager::AddContentSet Starting a new ContentSetManager. csId:{0829092C-B0F2-400D-99A0-F3A82F04232F} csName:SYSVOL Share volId:{DA5F7BCC-C53C-4072-8407-799090927207} volPath:\\.\C: volState:INITIALIZING
20240920 16:26:44.020 6856 CSMG 196 ContentSetManager::ContentSetManager New content set. csId:{0829092C-B0F2-400D-99A0-F3A82F04232F} csName:SYSVOL Share rootPath:C:\Windows\SYSVOL\domain state:Normal ptr:0000026E7F5EDCE0 csInfoHistoryGuid:{00000000-0000-0000-0000-000000000000}
20240920 16:26:44.020 6856 CSMG 3150 ContentSetManager::ScheduleRestart Scheduling restart. restartCount:0 csId:{0829092C-B0F2-400D-99A0-F3A82F04232F} csName:SYSVOL Share rootPath:C:\Windows\SYSVOL\domain state:Normal ptr:0000026E7F5EDCE0 csInfoHistoryGuid:{94F3DEAA-F825-4D60-A3F1-B9DF7C96C61E}
20240920 16:26:44.020 3868 CSMG 9039 ContentSetManager::Run Running task. csId:{0829092C-B0F2-400D-99A0-F3A82F04232F} csName:SYSVOL Share rootPath:C:\Windows\SYSVOL\domain state:Normal ptr:0000026E7F5EDCE0 csInfoHistoryGuid:{94F3DEAA-F825-4D60-A3F1-B9DF7C96C61E}
20240920 16:26:44.020 3868 SYSM 632 Migration::SysvolMigrationTask::DfsrSysvolDeleted [MIG] DFSR Initial sync event reset
20240920 16:26:44.020 3868 CSMG 9074 ContentSetManager::Run Scheduling restart now. csId:{0829092C-B0F2-400D-99A0-F3A82F04232F} csName:SYSVOL Share rootPath:C:\Windows\SYSVOL\domain state:Normal ptr:0000026E7F5EDCE0 csInfoHistoryGuid:{94F3DEAA-F825-4D60-A3F1-B9DF7C96C61E}
20240920 16:26:44.020 3868 CSMG 9039 ContentSetManager::Run Running task. csId:{0829092C-B0F2-400D-99A0-F3A82F04232F} csName:SYSVOL Share rootPath:C:\Windows\SYSVOL\domain state:Normal ptr:0000026E7F5EDCE0 csInfoHistoryGuid:{94F3DEAA-F825-4D60-A3F1-B9DF7C96C61E}
20240920 16:26:44.020 3868 CSMG 7667 ContentSetManager::Initialize Initializing. csId:{0829092C-B0F2-400D-99A0-F3A82F04232F} csName:SYSVOL Share rootPath:C:\Windows\SYSVOL\domain state:Normal ptr:0000026E7F5EDCE0 csInfoHistoryGuid:{94F3DEAA-F825-4D60-A3F1-B9DF7C96C61E}
20240920 16:26:44.020 3868 CSMG 8676 [WARN] ContentSetManager::IsOfflineTooLong This replicated folder has not connected with other partners for too long. lastOnlineTime:20160916 00:28:09.298 offlineDays:2926 maxOfflineDays:60 csId:{0829092C-B0F2-400D-99A0-F3A82F04232F} csName:SYSVOL Share rootPath:C:\Windows\SYSVOL\domain state:InitialBuilding ptr:0000026E7F5EDCE0 csInfoHistoryGuid:{94F3DEAA-F825-4D60-A3F1-B9DF7C96C61E}
20240920 16:26:44.020 3868 CSMG 8424 [ERROR] ContentSetManager::Initialize Failed to initialize ContentSetManager csId:{0829092C-B0F2-400D-99A0-F3A82F04232F} csName:SYSVOL Share rootPath:C:\Windows\SYSVOL\domain state:InitialBuilding ptr:0000026E7F5EDCE0 csInfoHistoryGuid:{94F3DEAA-F825-4D60-A3F1-B9DF7C96C61E} Error:
20240920 16:26:44.020 3868 EVNT 1214 EventLog::Report eventId:4012 parameter3:C:\Windows\SYSVOL\domain
20240920 16:26:44.020 3868 EVNT 1214 EventLog::Report eventId:4012 parameter6:SYSVOL Share
20240920 16:26:44.020 3868 CSMG 3150 ContentSetManager::ScheduleRestart Scheduling restart. restartCount:1 csId:{0829092C-B0F2-400D-99A0-F3A82F04232F} csName:SYSVOL Share rootPath:C:\Windows\SYSVOL\domain state:InitialBuilding ptr:0000026E7F5EDCE0 csInfoHistoryGuid:{94F3DEAA-F825-4D60-A3F1-B9DF7C96C61E}
20240920 16:26:44.020 3868 CSMG 9039 ContentSetManager::Run Running task. csId:{0829092C-B0F2-400D-99A0-F3A82F04232F} csName:SYSVOL Share rootPath:C:\Windows\SYSVOL\domain state:InitialBuilding ptr:0000026E7F5EDCE0 csInfoHistoryGuid:{94F3DEAA-F825-4D60-A3F1-B9DF7C96C61E}
20240920 16:26:44.020 3868 SYSM 632 Migration::SysvolMigrationTask::DfsrSysvolDeleted [MIG] DFSR Initial sync event reset
20240920 16:26:44.020 3868 CSMG 9078 ContentSetManager::Run Scheduling restart in 1 minutes. csId:{0829092C-B0F2-400D-99A0-F3A82F04232F} csName:SYSVOL Share rootPath:C:\Windows\SYSVOL\domain state:InitialBuilding ptr:0000026E7F5EDCE0 csInfoHistoryGuid:{94F3DEAA-F825-4D60-A3F1-B9DF7C96C61E}
Wir sehen hier auch das DFRS beim Start sowohl nach Registrierungsschlüssen wie "Demoting SysVols " und "Promoting SysVols", die bei einem laufenden DC natürlich nicht da sind. Auch der Schlüssel mit dem Wert "Seeding SysVols" ist nicht mehr gesetzt, aber kommt beim Start eines neuen DCs eine wichtige Bedeutung zu. Über ihn wird gesteuert, woher der neue DC sich seine initiale Kopie von SYSVOL zieht. Das habe ich aber alles auf SYSVOL Initialisierung etwas aus ausführlicher beschrieben
Initiales Setzen
Bislang konnte ich noch nicht ermitteln, welcher Prozess zu welcher Zeit und unter welchen Bedingungen erstmalig das Feld "SysvolReady=1" setzt. DCPROMO kann es nicht sein, dass ein neu aufgesetzter DC am Anfang noch keine Freigaben hat, obwohl NETLOGON schon gestartet ist. Als ich nach einem DCPROMO den PDC-Emulator "unerreichbar" gemacht habe, konnte DFRS das SYSVOL-Verzeichnis nicht replizieren und die Freigaben wurden nicht angelegt.
Ich vermute, dass DFRS für das Setzen des Werts zuständig ist
Das basiert auf der Suche nach dem String "SysvolReady" in den verschiedenen EXE und DLLs und ich wurde in "C:\Windows\System32\dfsrs.exe" dahingehend fündig. dass folgende Texte darin zu finden war
[MIG]SettingSysvolReadyFlat to TRUE [MIG]SettingSysvolReadyFlat to TRUE.Migration [MIG]SysvolIsReadyMigration::SysVolMigration::GetSysVolReadyFlag [MIG]SysvolIsReadyMigration::SysVolMigration::GetSysVolReadyFlag
Ich habe aber keinen Eintrag gefunden, der den Wert auf "False" setzt und auch wenn ich bei zwei laufenden Domain Controllern die SYSVOL-Replikation auf einem DC absichtlich anhalte, bleibt der Wert SysvolReady=1, obwohl die Dateien auf dem Server nicht mehr aktualisiert werden.
Sie sollten daher nicht nur die AD-Replikation überwachen, sondern auch die Konsistenz der SYSVOL-Replikation. DFRS ist zwar zuverlässiger als das alte Windows 2000/2003 FRS aber dennoch können Fehler passieren.















