Ошибка 1694 в Active Directory на Windows Server 2016
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов посвященному системному администрированию Pyatilistnik.org. В прошлый раз мы с вами разобрали методы как подключиться к удаленному рабочему столу и какие утилиты для этого лучше использовать. Сегодня я хочу вам рассказать про ошибку репликации ID 1694 в Active Directory Windows Server 2016, с которой мне пришлось столкнуться. Данная ошибка вызывает огромные проблемы между вашими контроллерами домена и препятствует нормальной работе активного каталога, но обо всем по порядку.
Описание ошибки ID 1694
Есть домен с установленным Active Directory на базе Windows Server 2016, все построено в виде виртуальных машин работающих на гипервизоре ESXI 6.5. В какой-то момент стали поступать жалобы от техподдержки, что на одном из контроллеров домена нет некоторых объектов, которые были созданы за последние несколько дней. Когда я залез на нужный контроллер домена, то первым делом открыл командную строку и начал проверять реплику через утилиту repadmin. Первое, что я выполнил:
В результате ошибок я не увидел, но существовали 3 больших дельты по репликации в виде трех дней, другими словами данный контроллер домена уже три дня не мог отреплицироваться с другими своими партнерами уже более трех дней.
Далее я выполнил команду, показывающую ошибки:
В итоге у меня посыпалась куча однотипных ошибок
Additional Data
Error value: While accessing the hard disk, a disk operation failed even after retries. An error occurred. EventID: 0xc000069E
Следующим шагом нужно обязательно произвести просмотр логов Windows, можно штатными средствами или через Windows Admin Center. Там я обнаружил кучу ошибок с кодом ID 1694.
Object:
6110fbaf-000-000-0000-000000000
Object GUID:
6110fbaf-000-000-0000-000000000
Source directory service:
f0e3a106-000-000-0000-000000000._msdcs.root.pyatilistnik.org
Attribute:
msPKIAccountCredentials
Attribute value:
CN=Барбоскин Геннадий Викторович
Attribute value GUID:
6110fbaf-000-000-0000-000000000
Present: 1
This operation will not be tried again at the next scheduled replication. Synchronization of the local directory service with the source directory service is blocked until the update problem is corrected.
Additional Data
Error value: While accessing the hard disk, a disk operation failed even after retries.
Данная ошибка вам может сигнализировать о двух проблемах:
- Либо у вас есть какое-то некорректное значение у атрибута представленного в ошибке
- Либо у вас повреждена файловая система и ее нужно срочно отремонтировать
Как устранить ошибку ID 1694
Первое, что я вам предлагаю сделать, так это произвести проверку вашей операционной системы на наличие поврежденных файлов и компонентов. Для этого в командной строке в режиме администратора выполните команду представленную ниже, она должна попытаться выявить ошибки и исправить их.
Пока шла проверка я из ошибки взял атрибут на который она ругалась у нужно пользователя. В результате атрибут msPKIAccountCredentials был заполнен корректными данными, но в сети я встречал случаи, когда поле manager странный пустой символ. В том примере в журнале не было указано имя пользователя с проблемой, в нем был указан GUID. Вы можете использовать следующую команду PowerShell, чтобы найти объект пользователя.
Найдя пользователя, откройте его в Active Directory и исправьте атрибут. В нашем случае поле "manager" имело странный пустой символ. Я просто щелкнул "Очистить", чтобы очистить его, а затем в поле было написано "<не задано>", как и должно быть. После обновления каждой из проблемных учетных записей репликация возобновилась в обычном режиме.
Как найти пустые символы в атрибутах Active Directory?
Я запустил следующий сценарий PowerShell на каждом из наших контроллеров домена, чтобы выявить, какие объекты имеют пустой символ в атрибуте.
Вернемся к моей проверке, ошибки были найдены и якобы исправлены. Я решил перезагрузить сбойный контроллер домена, в итоге он просто умер и выдавал циклический синий экран.
Тут есть два варианта действий:
- Восстановить контроллер домена из резервной копии, что может быть быстро, но вся загвоздка, когда у вас начало все сыпаться, если бэкапу более нескольких дней, то в нем нет смысла
- Правильным вариантом будет создание нового контроллера домена и реплицирование данных на него (Надеюсь, что у вас был не один контроллер домена)
Алгоритм действий по новому контроллеру
- Узнайте кому принадлежат роли FSMO
- Если FSMO были у потерянного контроллера домена, то нужно их принудительно захватить
- Удалить все метаданные от старого контроллера домена в Active Directory
- Создать новую виртуальную машину и сделать ее новым контроллером домена, при желании вы можете ускорить будущую репликацию, подготовив IFM файл с текущей базой
- Дождаться полной репликации и проверить, что все стало хорошо
На этом у меня все. Мы успешно устранили ошибку "Active Directory Domain Services could not update the following object with an attribute value change received from the following source directory service. This is because an error occurred during the application of the changes to the local Active Directory Domain Services database" и привели наш Active Directory к нормальному состоянию. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org
Иван, добрый день
Я так понимаю, что если бы вы не стали делать:
sfc /scannow & DISM /Online /Cleanup-Image /ScanHealth & DISM /Online /Cleanup-Image /CheckHealth & DISM /Online /Cleanup-Image /RestoreHealth
то возможно этот КД и дальше нормально работал?
И второе, допустим у вас была бы РК этого КД, точно рабочая.
Ее можно просто так восстановить обратно, учитывая что у вас там варя была?
ТО есть сделать неавторитативное и все?
Да мог какое-то время и проработать, но со временем мог легко сломаться, уйдя в синий экран. Восстановить копию можно, все зависит от того на сколько она старая. В любом случае у нее счетчик изменений будет меньше и он должен все будет дореплицировать. Но быстрее как по мне поднять свежий контроллер и так же все сделать, так как неизвестно когда произошла ошибка файловой системы и есть ли она уже в бэкапе.