Usn rollback как вылечить

Usn rollback как вылечить thumbnail

Что такое USN Rollback

Представьте себе, что в один не очень прекрасный день вы решили восстановить один из ваших контроллеров домена (КД) из резервной копии, которую вы по привычке сделали старым проверенным средством снятия образа диска, типа Acronis TrueImage. Или решили откатить ваш виртуализованный КД к старому снимку, сделанному средствами гипервизора (и всё это работало не под Windows Server 2012). Или же вам, как и мне однажды, не повезло: из-за сбоя RAID-контроллера, который управляет аппаратным зеркальным томом, содержащим систему КД, некоторое время тому назад из  этого зеркала вылетел один диск, а после перезапуска RAID-контроллер решил загрузить систему именно с этой, устаревшей половинки зеркала.

И вот, после перезагрузки вы обнаруживаете, что ваш контроллер домена — уже не совсем контроллер домена: он совершенно не желает авторизовывать пользователей и реплицировать изменения базы данных Active Directory (AD) с другими КД.  Если провести стандартную диагностику проблем AD с помощью утилит dcdiag, то мы увидим следующее (часть выдачи dcdiag для краткости опущена, важные для дальнейшего изложения признаки выделены жирным шрифтом):

C:UsersAdministrator.DOMAIN>dcdiag

…………………………………………………………………

Doing primary tests

Testing server: Default-First-Site-NameDC2
Starting test: Advertising
Warning: DsGetDcName returned information for \DC1.domain.loc, when
we were trying to reach DC2.
SERVER IS NOT RESPONDING or IS NOT CONSIDERED SUITABLE.
         ……………………. DC2 failed test Advertising
…………………………………………………………………

Starting test: Replications
         [Replications Check,Replications Check] Inbound replication is
         disabled.
To correct, run «repadmin /options DC2 -DISABLE_INBOUND_REPL»
[Replications Check,DC2] Outbound replication is disabled.
To correct, run «repadmin /options DC2 -DISABLE_OUTBOUND_REPL»
  ……………………. DC2 failed test Replications
Starting test: RidManager
……………………. DC2 passed test RidManager
Starting test: Services
w32time Service is stopped on [DC2]
            NETLOGON Service is paused on [DC2]
         ……………………. DC2 failed test Services
— то есть, контроллер домена не объявляет себя контроллером домена, репликация базы данных AD отключена, а служба Netlogon («Сетевой вход в систему» в русской версии) находится в приостановленном состоянии. Если вы посмотрите в журнал событий Active Directory, то вы обнаружите в нём два характерных сообщения об ошибках:

с Event ID  2095

и с Event ID 2103

Первое из этих событий фиксируется лишь однажды, при первой после возникновения проблемы перезагрузке, второе же будет появляться и при каждой последующей перезагрузке контроллера домена.

Если вы наблюдаете эти признаки, то это означает, что вы столкнулись с героем этой статьи — USN Rollback: возвращением текущего максимального последовательного номера изменений (USN) КД к старому, меньшему значению  (с помощью номеров последовательных изменений — USN — Active Directory отслеживает, какие именно изменения следует передавать при репликации между контроллерами домена, подробнее об этом ниже). Прочитать официальную информацию от Microsoft об этой проблеме можно в Technet Library (применительно к специфике виртуализованных контроллеров домена) или статье 885875 MS KB (на английском языке).

Хотя механизм возникновения данной проблемы изложен в указанных выше статьях, считаю необходимым для полноты изложения остановиться на нём и в этой статье (те, кому это не интересно или некогда это читать, могут перейти сразу к описанию процедуры восстановления в разделе Собственно рецепт). Потому что, чтобы понять, чем плохо возвращение текущего максимального универсального номера последовательных изменений к старому значению, нужно знать, как используются эти номера при обновлении копий базы данных Active Directory.

Active Directory спроектирована таким образом, чтобы при синхронизации (репликации) можно было передавать на целевой КД не всю базу данных, а только те изменения, которые не были ещё получены целевым КД. Для этого каждый измененный (в т.ч. вновь созанный) в базе данных AD объект или атрибут объекта маркируется в своих метаданных идентификатором КД (Invocation ID), на котором было первоначально произведено это изменение, и последовательным номером (USN) этого изменения на данном первоначальном КД (посмотреть метаданные для любого объекта и всех его атрибутов можно командой repadmin /showmeta ). При каждом изменении, первоначально произведенном на данном КД,  этот номер увеличивается.  Кроме того, каждый КД хранит у себя список максимальных номеров реплицированных изменений для каждого из известных ему КД-источников обновлений (идентифицируемых по Invocation ID) для каждого из разделов каталога — up-to-dateness vector (его можно посмотреть командой repadmin /showutdvec ). И при репликации КД запрашивает только те изменения, номер USN которых выше максимального номера уже полученного изменения.

Из этого описания видно, что если текущий максимальный номер USN по какой-то причине уменьшится, то изменения, промаркированные номерами USN в промежутке между новым текущим максимальным номером USN и запомненными на других КД максимальными номерами реплицированных изменений, никогда не будут реплицированы на эти другие КД, то есть, база данных AD окажется в рассогласованном состоянии — её содержимое на разных контроллерах доменов навсегда останется разным.

Поскольку все алгоритмы работы AD опираются на то, что содержимое баз данных на разных КД является (или достаточно быстро становится) одинаковым, то описанное выше положение дел является недопустимым. Чтобы его избежать, в механизм репликации AD был добавлен элемент контроля, проверяющий в момент первой репликации КД, что текущий максимальный номер USN на контроллере домена не меньше, чем максимальный номер реплицированных изменений, известных его партнерам по репликации. Если это условие не соблюдается, то AD блокирует входящую и исходящую репликацию, а также помечает (в реестре) свою копию базы данных как недоступную для записи по причине возвращения номера USN к меньшему значению — что как раз вызывает те самые симптомы, что описаны в начале статьи.

Читайте также:  Как я вылечил рефлюкс

Обнаружение USN Rollback срабатывает, к сожалению, не всегда. Если контроллер домена после восстановления из образа долго не имеет связи с другими КД, и на нём за это время происходит много изменений, то после восстановления связи может оказаться, что на момент первой репликации после восстановления текущий максимальный номер USN окажется больше максимального номера реплицированных изменений, то условие отсутствия USN Rollback будет формально соблюдено, фактически имевший место откат назад номеров изменений обнаружен не будет и часть изменений так и останется не реплицированной. Такой вариант вполне реален при восстановлении КД после катастрофического отказа где-нибудь в филиале, где из-за того же отказа пострадала и связь. Так что, обнаружив приведенные в начале статьи симптомы, можно даже порадоваться — всё могло быть и хуже.

Как лечить USN Rollback

Лучшее лечение — это, как известно, профилактика. В применении к теме данной статьи это означает: делать резервные копии базы данных AD (она входит в раздел Состояние системы для КД) регулярно, и делать их программой, которая знает, как копировать и, главное — как восстанавливать базу данных AD. Простейшая из таких программ — это встроенная Windows Server Backup. Использование правильных программ исключает большинство возможных случаев возникновения USN Rollback, а если вдруг такая беда случилась (например, из-за сбоя RAID-контроллера, зеркалирующего системный диск) — без особых проблем восстановить базу данных AD.

Но вот что делать если беда уже случилась, а резервной копии базы данных AD нет? Рекомендации производителя — Microsoft — просты и незатейливы: понизить принудительно контроллер домена, удалить его метаданные из AD и повысить обратно. Процедуры эти просты и многократно описаны, здесь я на них останавливаться не буду. В большинстве случаев это можно проделать вполне безболезненно, и, собственно говоря, при наличии возможности именно так и стоит делать.

Интереснее другой вопрос — что делать, если принудительное понижение с последующим понижением — не вариант? Например, если на КД стоит какая-то программа, которая, с немалой степенью вероятности, не перенесёт такие манипуляции. Или USN Rollback возник на единственном контроллере вновь созданного домена, в котором уже были созданы учётные записи новых пользователей. Или вот,  например, был случай на русском форуме Technet, когда системный администратор умудрился загнать в состояние USN Rollback все контроллеры корневого домена леса — как сохранить лес? В таких случаях рекомендованный производителем способ решения проблемы не годится. Но выход, тем не менее, есть.Чтобы понять, как этот выход работает, следует рассмотреть две вещи: как при корректном восстановлении базы данных AD удаётся избежать USN Rollback, и какие именно изменения вносятся в конфигурацию КД при обнаружении этого состояния.

Для обеспечения корректности работы восстановленной базы данных программа восстановления делает одну простую вещь: она после завершения восстановления (а оно производится при загрузке в режиме службы восстановления каталогов) записывает в реестр новое значение для Invocation ID в параметр «HKEY_LOCAL_MACHINESystemCurrentControlSetServicesNTDSParametersNew Database GUID», заставляя AD при запуске во время следующей загрузки в нормальном режиме сменить Invocation ID — то есть заставляет выглядеть (с точки зрения механизма репликации базы данных AD) восстановленный контроллер домена как новый, совершенно другой КД, изменения на котором учитываются независимо от прежних, сделанных его до восстановления.

Что же касается реакции на USN Rollback то она включает в себя две вещи: во-первых, для подверженного ей КД отключается  (установкой флагов DISABLE_INBOUND_REPL и DISABLE_OUTBOUND_REPL в атрибуте Options объекта «NTDS Settings», связанного с объектом данного КД в разделе конфигурации) входящая и исходящая репликация, во-вторых в реестре этого КД в параметре «HKEY_LOCAL_MACHINESystemCurrentControlSetServicesNTDSParametersDSA not writeable» (типа REG_DWORD) фиксируется, что база данных AD не является допустимой по причине возникновения USN Rollback (значение параметра устанавливается равным 4). При обнаружении этого последнего параметра происходит запись в журнал события с кодом 2103, а служба Netlogon ставится в приостановленное состояние.

И в свете всего вышеизложенного становится понятно, что нужно делать, чтобы вывести контроллер домена из состояния USN Rollback:

Собственно рецепт.

Предупреждение. Приведенные ниже действия не опираются на официальные рекомендации Microsoft (хотя и проверены мной лично). Они могут привести к возникновению рассогласованных копий базы данных Active Directory на разных контроллерах доменов (см. ниже). Поэтому используйте их под свою ответственность и только в крайнем случае.

Предупреждение 2. Если на пострадавшем контроллере домена в БД AD были внесены какие-либо изменения после возникновения состояния USN Rollback, то эти изменения, скорее всего, никогда не будут реплицированы на другие контроллеры домена, даже после восстановления по указанной ниже процедуре (причины были рассмотрены в предыдущем разделе). Из-за этого произойдёт рассогласование копий БД. И впоследствии это может вылиться в странное поведение (например, несовпадающие пароли учётных записей) или даже в нарушение репликации (ошибка 8606). Если USN Rollback был обнаружен сразу же, и контроллер домена был вовремя заблокирован, то вероятность возникновения таких ошибок невелика. Но если это был, например, восстановленный из образа диска контроллер где-нибудь в филиале, то последствия могут быть весьма неприятными. Я надеюсь рассмотреть, как можно заранее вычислить такие изменения и сделать их доступным для репликации, в одной из следующих статей.

1. Заставить AD изменить Invocation ID. Хотя можно сделать это, напрямую записав соответствующий параметр в реестр, я считаю предпочтительным сделать это с помощью штатного Backup/Restore — это заодно устранит и возможные рассогласования копий папки SYSVOL на пострадавшем контроллере домена и других КД и позволит избедать возможных проблем с её репликацией (это другая тема, которую я тут не затрагиваю). Последовательность действий примерно следующая (я не расписываю подробно все шаги, поскольку они отражены во многих руководствах):

Читайте также:  Болячка на подбородке у человека как вылечить

1а. Подготовительные действия. Установить, если ещё не установлен, компонент архивации и подготовить место, куда будет записана резервная копия (либо чистый локальный либо съёмный диск, либо пустую общую сетевую папку). Рекомендую также посмотреть (командой repadmin /showrepl ) зафиксировать текущий Invocation ID контроллера домена.

1б. Выполнить резервное копирование состояния системы (а лучше, если позволяет время и место на диске/папке — всего системного тома).

1в. Загрузиться в режиме восстановления службы каталогов и восстановить состояние системы. Рекомендую делать это от имени локальной учётной записи администратора режима восстановления службы каталогов (я наблюдал случаи, когда попытка восстановления состояния системы при регистрации под доменным администраторам приводила к необъяснимым сбоям).

1г. Загрузить контроллер домена в обычном режиме.

2. Разрешить входящую и исходящую репликацию для контроллера домена. Перед включением репликации в качестве меры предосторожности рекомендую проверить, что показываемое командой  repadmin /showrepl значение Invocation ID изменилось по сравнению со старым, зафиксированным на шаге 1а

Включение репликации производится командами

repadmin /options имя_КД -DISABLE_INBOUND_REPL

и

repadmin /options имя_КД -DISABLE_OUTBOUND_REPL

3. Удалить отметку о том, что база данных AD находится в недопустимом для записи состоянии по причине USN Rollback. Для этого надо запустить редактор реестра, выбрать ключ HKEY_LOCAL_MACHINESystemCurrentControlSetServicesNTDSParameters, найти в нём параметр «DSA not writeable» (его значение должно быть равно 4) и удалить этот параметр.

4. Запустить из приостановленного состояния (если она ещё не запустилась сама) службу Netlogon

После выполнения этих шагов я рекомендую (хотя это не обязательно) ещё раз перезагрузить контроллер домена и выполнить его диагностику с помощью команды dcdiag: после ликвидации USN Rollback могут проявиться и другие ошибки (см. например уже упоминавшийся случай на русском форуме Technet — там пришлось устранять и проблемы с SYSVOL, и не удалённые вовремя («застрявшие») из-за неработавшей репликации объекты).

Удачного вам восстановления. И больше так не делайте.

Источник



Предотвращение отката USN

Предотвращение отката USN

Если у домена есть несколько контроллеров и требуется восстановить один из контроллеров или его базу данных, желательно избежать ситуации, известной как USN rollback (откат USN).

Откат USN маловероятен, если восстанавливается весь контроллер домена из резервной копии на уровне дисков, созданной с помощью службы VSS.

Откат USN очень вероятен в любом из следующих случаев:

  • Контроллер домена был восстановлен частично: восстановлены не все диски или тома, либо восстановлена только база данных Active Directory.
  • Контроллер домена был восстановлен из резервной копии, созданной без службы VSS. Например, если резервная копия была создана с помощью загрузочного носителя, если параметр Использовать VSS был отключен или если поставщик VSS работал неправильно.

Следующие несложные действия помогут избежать отката USN.

Репликация номеров USN

Репликация Active Directory между контроллерами домена выполняется постоянно. В любой момент времени на одном контроллере домена может быть более новая версия объекта Active Directory, при этом на другом домене будет более старая версия этого же объекта. Чтобы предотвратить конфликты и потерю данных, Active Directory отслеживает версии объектов на каждом контроллере домена и заменяет старые версии новыми.

Чтобы выполнять такое отслеживание, Active Directory использует номера, которые называются Update Sequence Numbers (номера последовательного обновления), сокращенно USN. Более новым версиям объектов Active Directory соответствуют более высокие номера USN. Каждый контроллер домена хранит номера USN всех остальных контроллеров домена.

Откат USN

После выполнения не заслуживающего доверия восстановления контроллера домена или его базы данных, текущий номер USN этого контроллера домена заменяется на старый (меньшее значение) номер USN из резервной копии. Но другим контроллерам домена не сообщается об этом изменении. Они хранят последний известный им (более высокий) номер USN этого контроллера домена.

В результате возникают следующие проблемы:

  • Восстановленный контроллер домена повторно использует более старые номера USN для новых объектов, начиная со старого номера USN из резервной копии.
  • Другие контроллеры домена не выполняют репликацию новых объектов с восстановленного контроллера домена, поскольку его номер USN ниже того, о котором они «знают».
  • Теперь в Active Directory разные объекты соответствуют одному и тому же номеру USN, т. е. каталог становится несогласованным. Эта ситуация называется откатом USN.

Во избежание отката USN необходимо уведомить контроллер домена о том, что он был восстановлен.

Как предотвратить откат USN

  1. Сразу после восстановления всего контроллера домена или его базы данных загрузите восстановленный контроллер домена и нажмите клавишу F8 во время загрузки.
  2. На экране Дополнительные варианты загрузки выберите Режим восстановления служб каталогов и войдите в режим восстановления служб каталогов (DSRM).
  3. Откройте редактор реестра и разверните следующий раздел реестра:

    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNTDSParameters

  4. В этом разделе реестра посмотрите, какое значение имеет параметр DSA Previous Restore Count. Если это значение присутствует, запишите его. Не добавляйте этот параметр в случае его отсутствия.
  5. Добавьте в этот раздел реестра следующий параметр:
    • Тип значения: Значение DWORD (32-разрядное)
    • Имя параметра: Database restored from backup
    • Значение параметра: 1
  6. Перезапустите контроллер домена в обычном режиме.
  7. [Необязательно] После перезагрузки контроллера домена откройте приложение просмотра событий, разверните узел Журналы приложений и служб и выберите журнал Службы каталогов. В журнале Службы каталогов найдите последнюю запись для события с идентификатором 1109. Если вы ее найдете, щелкните эту запись дважды, чтобы удостовериться, что атрибут InvocationID изменился. Это значит, что база данных Active Directory обновлена.
  8. Откройте редактор реестра и убедитесь, что значение параметра DSA Previous Restore Count увеличилось на единицу по сравнению со значением в шаге 4. Если в шаге 4 параметр DSA Previous Restore Count отсутствовал, убедитесь в том, что теперь он присутствует и равен 1.

    Если вы видите другое значение (и не можете найти запись для события с идентификатором 1109), убедитесь в том, что на восстановленном контроллере домена установлены последние пакеты обновления, и повторите всю процедуру.

Читайте также:  Как вылечить миому грецкими орехами

Дополнительные сведения о номерах USN и откате USN см. в следующей статье на сайте Microsoft Technet https://technet.microsoft.com/ru-ru/library/virtual_active_directory_domain_controller_virtualization_hyperv.aspx.

Источник

Сайт является не обновляемой с 20.07.2019 копией сайта alex-white.ru

Usn rollback как вылечить

Случилось всё после того, как я решил увеличить место на диске С, одного из контроллеров домена (уровень 2008 R2). Выключил я его, начал в офлайне шаманить разными «Дискменеджерами», оступился и убил сервер. А так как это была виртуальная машина на Hyper-V я восстановил всё из снапшота 3х часовой давности. Подумал и сделал так как тут. Ошибся я в том что пустил в сеть DC из прошлого.Но было поздно, я словил Update Sequence Number (USN) rollback.

Мониторинг сообщил о том, что  мои контроллеры больше не дружат друг с другом и реплицироваться не хотят.

Проверил.

C:Windowssystem32>Repadmin /syncall

….
SyncAll terminated with no errors.

Странно, но всё ок. Идём дальше, на втором контроллере выполняю:

Repadmin /showrepl

…….

Source: Default-First-Site-Name(имя моего «больного» контроллера)
******* 54 CONSECUTIVE FAILURES since 2011-08-29 09:50:03
Last error: 8457 (0x2109):
The destination server is currently rejecting replication requests.

в логах:

The Active Directory Domain Services database has been restored using an unsupported restoration procedure.

Дальше больше.

После перезагрузки «больного» на нём не стартовала Netlogon. Она была в состоянии Pause.  Из за этого не могла стартонуть W32time. Много читал, и пытался это лечить, но проблема была в корне другая. Точней это следствие.

В статье на https://www.oszone.net в главе «Защита от отката USN» встретил упоминание ID ошибок 1115, 2095, 2103, и 2110 которые  обнаружил у себя в журнал событий службы каталогов, и понял, я словил USN rollback. Набираю номерок 8 90 * ** ** ** Бен, это Данила. Ай нид хелп. Админ админа не подвёл и посоветовал завалить «больного». Типичная проблема, возникающая при восстановлении Active Directory не поддерживаемым методом. «Больной» вернулся в прошлое и сообщил это здоровому DC.  А тот говорит, мол, нет ты из прошлого, дружить не буду.

Есть 2 пути восстановления:

  1. Сложный: Удаление «больного»  контроллера домена.
  2. Простой: Если есть свежий  и правильный AD бекап, накатить.

Я же иду по первому, так как нет бекапа 8.(

Usn rollback как вылечить

  • 1. Первое, что я сдела, это передал все роли FSMO от больного, здоровому с помощью GUI.

С помощью консоли управления в Windows можно выполнить передачу всех пяти ролей FSMO, при условии, что оба компьютера подключены к сети. Если компьютер больше не существует, роль необходимо захватить. Для захвата ролей используется программа Ntdsutil. За дополнительной информацией обратитесь к следующей статье Microsoft Knowledge Base:
255504 Использование программы Ntdsutil.exe для захвата или передачи контроллеру домена его роли FSMO

Убедился:

PS C:Windowssystem32> NetDom.exe QUERY FSMO
Schema master  DC1.domain
Domain naming master DC1.domain
PDC DC1.domain
RID pool manager DC1.domain
Infrastructure master DC1.domain
The command completed successfully.

  • 2. После, разжаловал «больного» с помощью dcpromo.

Usn rollback как вылечить

В некоторых случаях правильно понизить роль контроллера домена под управлением Windows Server с помощью мастера установки Active Directory (Dcpromo.exe) не удается и приходится принудительно понижать  роли контроллеров домена

Во время разжалования вывалилась ошибка, но я проигнорил. После расжалования Netlogon и W32time заработали.

Usn rollback как вылечить

  • 3. Посчитав, что наказания в виде временного разжалования хватит, сжалившись над больным запускаю, предварительно перезагрузив сервер, dcpromo.exe. Добавляю DC в существующий лес.

По какой то причине dcpromo выдаёт Usn rollback как вылечить

Yes.

Usn rollback как вылечитьВопрос, откуда реплицироваться? Конечно  с существующего домена. Пару вопросов, и репликация понеслась. Ребут….  Томительное ожидание и о чудо… Всё ок.

Проверяю:
Repadmin /showrepl
….
was successful.

И службы стартонули ОК.

По совместительству  на этом же DC работал и WDS. Он пережил эти операции и заработал исправно.

P.S Не читайте кровопереводы KB от MS

Источник