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

Функция Previous Versions операционной системы Windows Server 2003 упрощает восстановление данных папок и файлов благодаря использованию службы Volume Shadow Copy Service (VSS), с помощью которой можно создать моментальные снимки общедоступных данных файловой системы через определенные промежутки времени. Применить эту функцию для восстановления случайно удаленного файла просто: достаточно щелкнуть на папке правой кнопкой мыши, чтобы показать ее свойства, перейти на вкладку Previous Versions и просмотреть содержимое папки до происшествия. Эта функциональность не была полностью воспроизведена для AD, но в Windows 2003 есть много новых мощных функций, одна из которых особенно полезна при принудительном восстановлении объектов AD: репликация связанных значений (Linked Value Replication, LVR). Специалисты Microsoft подготовили дополнительные функции для будущей версии Windows Server 2008, благодаря которым у администраторов AD появятся такие же средства для работы с объектами AD, как функция Previous Versions для файлов. Можно будет открыть моментальные снимки базы данных AD как отдельный автономный экземпляр, который можно использовать, чтобы прочитать данные из предшествующих версий объектов.

В этой статье мы рассмотрим проблемы, с которыми администраторы AD сталкиваются при необходимости восстановить случайно удаленные объекты в доменах AD, и методы эффективного использования компонента LVR операционной системы Windows 2003. Этот компонент особенно важен для компаний, которые ранее развернули лес AD на платформе Windows 2000, а затем перешли к Windows 2003. В этом случае администраторам придется проделать дополнительную работу, прежде чем удастся извлечь пользу из особых возможностей LVR для восстановления объектов.

Что такое LVR?

Чтобы понять преимущества LVR для восстановления объектов AD, необходимо разобраться в способах хранения и репликации данных в AD. Как видно из названия, LVR совершенствует процесс репликации связанных значений между объектами в AD. Объекты в AD связаны многими способами, наиболее известный пример — связь, поддерживаемая для хранения отношений между объектами групп и пользователей. Как показано на экране 1, у каждого объекта группы есть атрибут member, который ссылается на отличительные имена distinguished name (DN) членов групп (такие, как пользователи, компьютеры и другие группы), а каждый объект пользователя имеет атрибут memberOf, который ссылается на DN групп, членом которых является пользователь. В моем примере John в организационной единице (OU) OU-Users — член группы MyGroup в организационной единице OU-Groups.

Экран 1. Прямые и обратные ссылки

Можно просмотреть отличительные имена в атрибуте member группы с использованием таких инструментов LDAP, как adsiedit.msc или ldp.exe, но имена DN не используются для хранения ссылок в AD. В противном случае возникли бы проблемы при переименовании и перемещении объектов, так как в ходе этих действий меняется имя DN объекта. В действительности база данных AD состоит из таблицы данных и таблицы ссылок. Все объекты любых контекстов именования, размещенные на конкретном DC, хранятся в таблице данных, наряду с их именами DN и уникальным идентификатором DNT (distinguished name tag — тэг отличительного имени). DNT — 32-разрядное целое число, непригодное для повторного использования.

Чтобы хранить связи (ссылки) между объектами, в таблице ссылок содержатся только тэги DNT-объектов, которые затем преобразуются в корректное имя DN объекта при чтении соответствующего связанного атрибута через LDAP. В сущности, этот метод обеспечивает целостность связей объектов и соответствующих ссылок. Чтобы ссылаться на обязательные в иерархии OU связи «родитель-потомок», AD использует столбец, именуемый тэгом отличительного имени родителя (Parent Distinguished Name Tag, PDNT) в таблице данных. Как легко догадаться, PDNT содержит тэг DNT родителя объекта. На экране 2 приведен упрощенный пример таблиц базы данных AD; из них видно, что пользователь John — член группы MyGroup. При внимательном рассмотрении можно заметить, что Mary — также член этой группы и менеджер Джона.

Экран 2. Упрощенный пример таблицы базы данных AD

Существует важное различие между двумя ссылками, составляющими пару: только прямые ссылки (в данном примере — атрибут члена группы) могут быть отредактированы администратором, и только эта ссылка реплицируется на другие DC в домене или лесе. Обратная ссылка (в данном случае memberOf) принадлежит каждому DC в отдельности, обслуживается ими индивидуально и не реплицируется. Более подробно об этой важной особенности будет рассказано при описании процесса восстановления.

Оснастка Active Directory Users and Computers консоли Microsoft Management Console (MMC) может ввести в заблуждение, так как позволяет открыть свойства объекта пользователя, а затем добавить группу к пользователю из вкладки Member Of. Эти действия обновляют прямую ссылку пары связанных значений (т. е. атрибута членства соответствующей группы), а DC создает обратную ссылку от группы к атрибуту memberOf пользователя, как показано в диалоговом окне. Становится понятно, почему администратору не требуется специального разрешения для управления учетной записью пользователя, чтобы добавить ее в группу AD (требуются разрешения записи для атрибута членства в группе).

В контексте восстановления AD наиболее важны ссылки между пользователями и группами благодаря их возможности назначать и отзывать права доступа к ресурсам инфраструктуры. Дополнительные сведения о других связанных значениях приведены во врезке «Определение пар связанных значений в схеме Active Directory». Важно также понять, что AD различает атрибуты с одно- и многозначными атрибутами. Естественно, атрибут членства группы и атрибут memberOf пользователя многозначные. В результате пользователь может быть членом многих групп, а членами группы могут быть многие пользователи (и другие объекты).

Минимальная единица репликации

Минимальная единица репликации в домене AD Windows 2000 — атрибут. В свое время это было огромным преимуществом Windows 2000 перед Windows NT 4.0, в которой минимальной единицей репликации был объект. Однако в контроллерах домена Windows 2000 все атрибуты обрабатываются одинаково, независимо от того, содержится в атрибуте всего несколько байтов или в тысячи раз больше. Такой механизм репликации вызывает наибольшие затруднения для многозначных атрибутов, в частности атрибута членства объекта группы. Это приводит к следующим двум проблемам.

Первая — избыточность реплицируемых данных и число членов в группе. Если в группе имеется 999 членов и администратор вводит в группу нового члена, контроллер домена Windows 2000 реплицирует полный атрибут членства своим партнерам по репликации (всему списку из 1000 членов). Но поскольку обновление базы данных AD должно состояться в одной транзакции, ограниченной по размеру многозначным атрибутом приблизительно с 5000 значениями, AD Windows 2000 не поддерживает группы, в которых имеется более 5000 членов. Чтобы обойти эту проблему, компании с числом пользователей более 5000 применяют механизм вложения групп, чтобы число членов не превышало допустимого максимума.

Вторая проблема — потеря изменений. Механизм репликации Windows 2000 ведет к потенциальной потере изменений в группах, когда два администратора вводят различных пользователей в разные DC домена AD. Если это происходит примерно в одно время (прежде, чем любое из изменений будет успешно реплицировано на другой DC), то одно из изменений теряется. Чтобы такой ситуации избежать, все администраторы должны вносить изменения в группы на одном DC.

Функция LVR в Windows 2003 — одно из важнейших изменений в способе репликации конкретных данных в AD. Эта функция доступна, только если лес AD находится на одном из следующих функциональных уровней.

  • Промежуточный (interim) Windows 2003. Для обновления NT 4.0; в пределах леса допускается существование контроллеров домена NT 4.0, но не Windows 2000.
  • Windows 2003. Все контроллеры домена леса должны работать с Windows 2003; контроллеры домена NT 4.0 и Windows 2000 недопустимы.

При обновлении леса AD Windows 2000 «по месту» функциональный уровень леса не изменяется автоматически; лес остается на функциональном уровне Windows 2000, несовместимом с LVR. Даже если организовать новый лес AD с контроллером домена Windows 2003, то по умолчанию устанавливается функциональный уровень леса Windows 2000. Чтобы поднять уровень леса до Windows 2003, необходимо сначала перевести все домены леса на функциональный уровень Windows 2003.

С помощью оснастки Active Directory Domains and Trusts консоли MMC можно проверить функциональные уровни домена и леса. Чтобы поднять функциональный уровень леса, требуется щелкнуть правой кнопкой мыши на верхнем узле с именем Active Directory Domain and Trusts и выбрать из контекстного меню пункт Raise Forest Functional Level (экран 3).

Экран 3. Проверка или изменение функционального уровня леса

После того как лес AD будет успешно переведен на функциональный уровень Windows 2003 (это процесс необратимый и поэтому требует соответствующего планирования), активизируется механизм LVR. Для подтверждения перевода нужно отыскать событие с ID 1695 в журнале событий NTDS для каждого DC леса.

В LVR минимальная единица репликации иная: каждое значение в многозначных атрибутах, связанных с другими атрибутами, будет реплицироваться отдельно при вводе или удалении значения из атрибута. Поэтому, если, например, пользователь добавлен в группу, которая уже содержит 999 членов на одном DC, только данные о добавлении одного пользователя передается партнерам DC по репликации в домене. Аналогично при удалении пользователя из группы реплицируется только изменение состояния связи между пользователем и группой, но не все члены группы. Таким образом, LVR решает две проблемы, описанные выше, для механизма репликации многозначных атрибутов Windows 2000.

  • Неограниченное число членов в группах. Наряду со снижением нагрузки на сеть при репликации изменений в группах существенное преимущество LVR заключается в практическом устранении верхнего предела численности группы. LVR полностью поддерживает группы AD Windows 2003 с миллионами членов! Однако обновление базы данных AD по-прежнему необходимо выполнить в рамках одной транзакции, поэтому нельзя разом удалять или вводить более 5000 членов группы. Если в AD реализовано автоматическое управление членством, следует учесть эту особенность в системах обеспечения и управления группами.
  • Гарантия целостности изменений. Поскольку изменения в членстве группы и другие связанные значения реплицируются отдельно, изменения, одновременно выполненные в одной группе на разных контроллерах домена, не теряются.

Изменения в таблицах базы данных AD

Чтобы активизировать LVR, требуется внести несколько изменений в таблицу ссылок на контроллерах домена Windows 2003. Аналогично объектам в таблице данных, связанные значения требуют дополнительных метаданных, в том числе номера последовательного обновления update sequence number (USN) для управления репликацией. USN обновляется до очередного доступного значения при любых изменениях атрибута объекта или связанного значения в базе данных AD, что позволяет партнеру по репликации запросить только изменения, о которых ему еще неизвестно. Еще важнее, что новые метаданные в таблице ссылок также определяют состояние связи, которая может быть представлена одним из трех типов ссылок LVR.

  • Legacy. Ссылка, которая все еще хранится в старом формате, — все значения хранятся и реплицируются вместе; содержит только «активные» ссылки.
  • Present. Ссылка, которая хранится в новом формате LVR и «активна» (например, обычный член группы).
  • Absent. Ссылка, которая хранится в новом формате LVR и «удалена» (например, пользователь, который перестал быть членом группы).

С помощью утилиты командной строки Repadmin из набора инструментов Windows Server 2003 Support Tools можно определить состояние ссылок в группе. Чтобы извлечь информацию о состоянии группы MyGroup на контроллере домена DC1, введите команду

C: epadmin /showobjmeta DC1

CN=MyGroup,

OU=OU-Groups,DC=RootR2,DC=net

На экране 4 показаны результаты выполнения команды. Как мы видим, John и Mary были членами группы до того, как в лесу был активизирован механизм LVR, а Peter был добавлен в ту же группу позже. Важно понять, что даже после активизации LVR в лесу ссылки, которые существовали в AD до перехода на функциональный уровень леса Windows 2003, не будут автоматически преобразованы в ссылки LVR. Они останутся в базе данных AD как унаследованные (legacy), что обычно не вызывает проблем, так как новые ссылки сохраняются как ссылки LVR и преимущества для репликации достигаются немедленно. Однако у ссылок LVR есть еще одно преимущество, для реализации которого требуется хранить ссылки в «истинном» формате LVR.

Экран 4. Статус ссылок LVR для группы

Преимущества LVR для восстановления объектов AD

Выгоды от LVR не ограничиваются очевидными преимуществами. Функция не только улучшает обычную репликацию связанных значений, но и повышает возможности восстановления ссылок, если требуется восстановить ошибочно удаленные объекты в доменах AD. Вспомним, что говорилось о прямых и обратных ссылках в начале статьи: только прямые ссылки реплицируются между контроллерами домена в домене AD. Поэтому при принудительной репликации объекта пользователя со всеми его атрибутами не реплицируются только обратные ссылки, направленные из объекта. Однако реплицировать членство пользователя в группах не удастся, так как сведения о членстве хранятся в обратной ссылке, атрибуте memberOf пользователя.

При восстановлении объекта собственными методами операционной системы, в сущности, выполняется принудительная репликация. Например, после загрузки в режиме DSRM (Directory Services Restore Mode — режим восстановления служб каталогов) база данных AD восстанавливается с использованием архивной копии состояния системы на магнитной ленте или диске в одном из DC. Затем (перед перезагрузкой) выполняется принудительное восстановление с помощью команды Ntdsutil. Принудительное восстановление может быть выполнено для всего поддерева или для единственного объекта. При этом номер версии всех атрибутов восстанавливаемых объектов увеличивается на 100 тыс. (на дату создания архивной копии). Более подробно этот процесс описан в статье Microsoft «How to restore deleted user accounts and their group memberships in Active Directory» (http://support.microsoft.com/kb/840001).

В лесу AD Windows 2000 принудительно восстановленный пользователь не реплицирует свое членство в группах на другие DC домена. Необходимо вручную указать членство пользователя в группах или применить такой инструмент, как Groupadd. В Windows 2003 SP1 процесс восстановления членства в группах и других связанных значений немного упрощается благодаря созданию файлов LDAP Data Interchange Format (LDIF) в процессе принудительного восстановления, которые после перезагрузки можно использовать для импорта членов группы. Однако все эти операции занимают значительное время и часто имеют неудачный результат из-за ошибок оператора.

В лесу Windows 2003, работающем на функциональном уровне леса Windows 2003, LVR обеспечивает дополнительное важное преимущество для ссылок, которые хранятся как ссылки LVR в доменах. Поскольку ссылки можно реплицировать отдельно, процесс принудительного восстановления Ntdsutil отслеживает обратные ссылки и увеличивает ID версии для всех прямых ссылок LVR, обнаруженных для восстановленных объектов. В контексте восстановленного пользователя это означает, что будет полностью восстановлено членство пользователя во всех группах в его собственном домене. Поэтому, если лес AD состоит из нескольких доменов и требуется восстановить членство пользователя в группах этих доменов, в ходе принудительного восстановления необходимо задействовать LDIF-файлы из версии Ntdsutil для Windows 2003 SP1.

Ссылки LVR не только повышают эффективность восстановления членства в группах — все другие многозначные связанные атрибуты (например, manager/directReports) ведут себя так же и будут восстановлены в ходе восстановления объекта, содержащего соответствующие обратные ссылки. Конечно, если объект располагает прямыми ссылками, такими как атрибут членства в группе, прямые ссылки, как всегда, будут реплицироваться во время восстановления объекта.

Ввод ссылок LVR в группы AD

Чтобы полностью использовать преимущества LVR в процессе восстановления, необходимо убедиться, что ни одна из групп или других связанных атрибутов не содержит унаследованных ссылок. В единственном домене AD такой подход упрощает общий процесс восстановления AD.

Чтобы обновить существующие ссылки в лесу AD, необходимо удалить и вновь добавить ссылки к связанному атрибуту. Не составит труда выполнить эту задачу для членов группы, направив вывод команды DSGET в команду DSMOD. Пример запуска команды DSGET с параметром -members для группы MyGroup:

C:>dsget group CN=MyGroup,OU=OUGroups,DC=RootR2,DC=net -members

На экране 5 (http://www.windowsitpro.com , InstantDoc ID 96310) показан результат выполнения этой команды. Если объединить эту команду с групповой командой DSMOD и параметром -chmbr (используется для замены всех сведений о членстве в группе), можно эффективно удалить и ввести всех членов группы:

Экран 5. Результат перенаправления вывода DSGET в DSMOD

C:>dsget group CN=MyGroup,OU=OUGroups, DC=RootR2, DC=net -members | dsmod

groupCN=MyGroup,OU=OUGroups, DC=RootR2, DC=net -chmbr

На экране 6 показан результат выполнения этой команды. Чтобы увидеть результат, следует вновь запустить команду repadmin /showobjmeta:

Экран 6. Команда для удаления и добавления члена группы

C:>repadmin /showobjmeta DC1 CN=MyGroup,OU=OU-Groups,DC=RootR2,DC=net

Как показано на экране 7, все ссылки имеют тип present, т. е. это полные ссылки LVR, которые будут задействованы в процессе восстановления объекта.

Экран 7. Статус ссылки LVR для группы с обновленными ссылками

Важно помнить о том, что нельзя удалять и повторно добавлять сразу всех членов всех групп в большой информационной структуре, так как это может привести к шторму репликации. Необходимо составить план перевода групп на LVR-ссылки, чтобы распределить операцию на приемлемый период времени.

Эффективно используем преимущества

Преимущества LVR для леса AD многообразны, в частности сокращается трафик репликации при обновлении членства в группах и снимаются ограничения на число членов в группах. Но столь же важно, что LVR позволяет автоматически восстанавливать обратные ссылки при принудительном восстановлении объектов. Чтобы полностью использовать преимущества LVR, особенно после модернизации домена или леса Windows 2000, необходимо принять меры к переводу существующих групповых ссылок из унаследованного формата в формат LVR.

Гвидо Грилленмейер (guido.grillenmeier@hp.com ) — главный специалист по технологиям в подразделении Advanced Technology Group компании Hewlett-Packard. MVP по Microsoft Directory Services и Microsoft Certified Architect


Моментальный снимок решения

Проблема
При переходе от Windows 2000 к Windows Server 2003 функция репликации связанных значений (LVR) не активизируется автоматически.

Решение
Выполнить несколько дополнительных действий, чтобы полностью использовать преимущества LVR.

Необходимые ресурсы
Windows 2003.

Уровень сложности
3/5

Этапы решения

  1. Обновить Windows 2000 до уровня Windows Server 2003.
  2. Преобразовать домены в лесу Active Directory (AD) от функционального уровня Windows 2000 до уровня Windows 2003.
  3. Обновить унаследованные ссылки в лесу AD.

Определение пар связанных значений в схеме Active Directory

Связанные значения определяются в схеме Active Directory (AD) свойством linkID соответствующего объекта класса attributeSchema. Прямая ссылка определяется четным числом (n) linkID, а соответствующий атрибут обратной ссылки представлен нечетным числом (n+1) linkID. В приведенном примере пользователь/группа атрибут членства группы имеет linkID со значением 2, а атрибут memberOf имеет linkID со значением 3. С помощью редактора LDAP, такого как ldp.exe, можно определить все связанные значения в схеме AD и искать любые объекты схемы, содержащие значения в атрибуте linkID, как показано на экране A. На экране B показаны результаты такого поиска.

Экран A. Поиск объектов схемы, имеющих значения в атрибуте linkID

Экран B. Список объектов схемы, имеющих значения в атрибуте linkID