Значения устаревшего состояния

Существует большая путаница в понимании значений устаревшего состояния (Obituaries), хранящихся в Каталоге, в результате которой появились неправильные методы работы с ними. В отличие от некоторых продуктов в каталоге, eDirectory обеспечивает целостность ссылок между объектами. Например, если в группе А существовал пользователь Б, который был впоследствии удален, то Каталог автоматически удаляет ссылку на пользователя Б из группы А. Значения устаревшего состояния существуют как операционные атрибуты, назначенные объектам eDirectory в качестве одного из способов обеспечения целостности ссылок при удалении, перемещении, переименовании, восстановлении и в других операциях.

Значения устаревшего состояния имеют три основных класса: первичные, вторичные и отслеживание. Первичные значения устаревшего состояния включают значения следующих типов: "Dead" (Мертвый, 0001), "Restored" (Восстановлен, 0000), "Moved" (Перемещен, 0002), "New RDN" (Новое имя RDN, 0005) и "Tree New RDN" (Новое имя RDN дерева, 0008). Вторичные значения устаревшего состояния в основном ассоциированы с первичными значениями и являются агентами и разделами, требующими оповещения об операции, указанной в первичном значении устаревшего состояния. Вторичные значения устаревшего состояния включают следующие типы "Back Link" (Обратная ссылка, 0006), "Used By" (Используется объектом, 000C) и "Move Tree" (Перемещение дерева, 000a). Отслеживающие значения устаревшего состояния включают "Inhibit Move" (Перемещение запрещено, 0003), "Old RDN" (Старое имя RDN, 0004) и "Tree Old RDN" (Старое имя RDN дерева, 0007).

Значения устаревшего состояния, за исключением отслеживающих, должны пройти ряд состояний синхронизации:

Состояния регистрируются в поле "Флаги" атрибута значения устаревшего состояния. До того, как значение устаревшего состояния сможет перейти в следующее состояние, текущее состояние должно быть синхронизировано со всеми репликами реального объекта. Для того, чтобы определить, все ли реплики кольца были оповещены о данном состоянии значения устаревшего состояния, вычисляется переходный вектор. В eDirectory 8.6 и более поздних версий используется несохраняемый вектор значений устаревшего состояния. В предыдущих версиях eDirectory использовался вектор очистки. Если дата отметки времени модификации (Modification Timestamp - MTS) значения устаревшего состояния окажется более ранней, чем дата поврежденного вектора, сервер, ответственный за данное значение устаревшего состояния, может перевести его в следующее состояние.

Агент, хранящий главную реплику объекта со вторичным значением устаревшего состояния типа "Обратная ссылка", несет ответственность за изменение его состояний. Ответственность за изменение состояний вторичного значения устаревшего состояния типа "Используется" несет создавший его агент реплики на протяжении всего времени существования этой реплики. Если эта реплика больше не существует, ответственность за изменение состояний вторичного значения устаревшего состояния типа "Используется" несет главная реплика данного раздела. Ответственность за изменение состояний значения устаревшего состояния типа "Перенос дерева" несет главная реплика корневого раздела.

Изменение состояния первичных значений устаревшего состояния может происходить только после того, как все вторичные значения устаревшего состояния последовательно прошли все свои состояния. После того, как первичное значение устаревшего состояния достигает своего конечного состояния, а также после синхронизации этого состояния со всеми серверами кольца, остается объект без атрибутов, который впоследствии может быть удален из системы в процессе очистки. Отслеживающие значения устаревшего состояния удаляются тогда, когда первичное значение устаревшего состояния готово к удалению, а устаревшие отслеживающие значения устаревшего состояния с запретом переноса удаляются после того, как первичное значение устаревшего состояния перейдет в состояние "OBF_NOTIFIED" в главной реплике.

Реплика, ответственная за обработку значений устаревшего состояния, выполняет это в виде фонового процесса (процесса обработки значений устаревшего состояния), планируемого для каждого раздела, после того, как в данном разделе будет завершен цикл входящей синхронизации. Если в разделе других реплик нет, процесс исходящего тиражирования планируется с интервалом Heartbeat. Затем процесс исходящего тиражирования запускает процесс обработки значений устаревшего состояния. Процесс обработки значений устаревшего состояния не может и не должен планироваться вручную. По мере выполнения синхронизации обновляются переходные векторы, изменяется состояние векторов очистки и векторов значений устаревшего состояния. Вместе с ними изменяются и состояния значений устаревшего состояния. Совместно с автоматическим планированием при входящей синхронизации это приводит к завершению цикла обработки значений устаревшего состояния. Таким образом, движущей силой процесса обработки значений устаревшего состояния является синхронизация объектов.

Для удаляемого объекта: после того, как все значения устаревшего состояния, которые ассоциированы с первичным значением устаревшего состояния "DEAD" (Мертвое), перешли в последнее состояние "Purgable" (Очищаемое) и информация об этом была синхронизирована во всех репликах, запускается другой процесс, ответственный за удаление остатков объекта из базы данных. Процесс очистки автоматически удаляет остаточные элементы. Процесс очистки можно запланировать вручную. Можно также изменить интервал его автоматического планирования с помощью страницы iMonitor Конфигурация агента.

Примеры

Этот раздел включает следующие примеры:

Удаление объекта

  1. Добавление первичного значения устаревшего состояния OBT_DEAD.
  2. Атрибут "Обратная ссылка" содержит список серверов, которые ассоциированы с данным объектом и которые должны быть оповещены об изменениях этого элемента. Для каждого отличительно имени, указанного в атрибуте обратной ссылки, и всех серверов, указанных в атрибуте реплики раздела, eDirectory добавляет значение устаревшего состояния обратной ссылки. Время создания первичного значения устаревшего состояния OBT_DEAD хранится во вторичном значении устаревшего состояния.
  3. Атрибут "Используется" содержит список разделов, которые ассоциированы с данным объектом и которые должны быть оповещены об изменениях этого элемента. Для каждого имени DN, перечисленного в атрибуте "Используется", eDirectory добавляет значение устаревшего состояния "Используется". Время создания первичного значения устаревшего состояния OBT_DEAD хранится во вторичном значении устаревшего состояния.
  4. Удаление всех атрибутов, кроме значений устаревшего состояния.
  5. Затем процесс исходящего тиражирования синхронизирует это изменение со всеми серверами кольца реплик.
  6. При следующей входящей синхронизации данного раздела запускается процесс обработки значений устаревших состояний, выполняющий следующее:

    Если значение устаревшего состояния является первичным и нет вторичных значений устаревшего состояния, а время изменения атрибута (MTS) значения устаревшего состояния старше вектора Purge, то все серверы, на которых есть это изменение и это значение устаревшего состояния, будут удалены.

    Если типом значения устаревшего состояния является "Обратная ссылка" и данный сервер является главным, он отвечает за обработку данного значения устаревшего состояния.

    Выполнение операций, требуемых для данного состояния, если они не были выполнены ранее. Чаще всего это выполняется посредством оповещения внешней ссылки.

    Если значение устаревшего состояния — "используется", а сервер является тем сервером, на котором произошло удаление (определяется путем сравнения номера реплики в значении устаревшего состояния MTS с номером нашей реплики), то этот сервер отвечает за обработку значения устаревшего состояния.

Перемещение объекта

Операция переноса аналогична операции удаления, за исключением следующего:

  1. Перед тем, как первичное значение устаревшего состояния помещается в источник переноса, в целевом контейнере создается частичный элемент, в который помещается отслеживающее значение устаревшего состояния (OBT_INHIBIT_MOVE). Размещение отслеживающего значения устаревшего состояния обусловлено необходимостью предотвращения переноса элемента или его участия в функционировании раздела до того, как весь элемент будет перенесен из источника.
  2. Первичным значением устаревшего состояния исходного элемента является OBT_MOVED.
  3. После того, как первичное значение устаревшего состояния OBT_MOVED переходит в состояние "Оповещено" (т. е. все реплики источника оповещены о переносе элемента), и после оповещения всех внешних ссылок отслеживающее значение устаревшего состояния (OBT_INHIBIT_MOVE) удаляется из целевого элемента.

Влияние значений устаревшего состояния, которые не могут быть обработаны, и значений устаревшего состояния с нарушенными ассоциациями

Объекты со значениями устаревшего состояния рассматриваются при каждой исходящей синхронизации агента, а также процессом обработки значений устаревших состояний, выполнение которого запланировано в конце цикла входящей синхронизации.

Меры предосторожности

Регулярно формируйте отчет iMonitor "Информация о сервере". При создании этого отчета выполняется обход всего дерева, обращение ко всем NCP-серверам, которые были найдены, а также сообщается обо всех найденных ошибках. Этот отчет можно использовать для диагностики проблем синхронизации времени и процесса Limber, а также для выяснения способности взаимодействия текущего сервера с другими серверами с точки зрения данного сервера. Если данный сервер выбран на странице конфигурации, он также сможет формировать информацию о состоянии агента NDS для любого сервера в дереве. Дополнительную информацию о создании отчета "Информация о сервере" см. в разделе Настройка отчетов.

При использовании iMonitor 2.0 или более поздней версии убедитесь в том, что включены следующие параметры отчета: "Ошибки" и "Вложенный отчет состояния". Необходимо проверить перечисленные ниже элементы. Следует просмотреть отчет и убедиться в отсутствии ошибок.

Если используется iMonitor 1.5, выберите параметр отчета "Ошибки". Необходимо проверить перечисленные ниже элементы. Следует просмотреть отчет и убедиться в отсутствии ошибок.

Любые значения устаревшего состояния в системе можно обнаружить с помощью отчета iMonitor "Список устаревших состояний" или "Статистика объектов". При обнаружении значений устаревшего состояния, которые, по вашему мнению, не обрабатываются, см. советы по устранению проблем.

Советы по устранению проблем

Значения устаревшего состояния могут не быть обработаны по двум причинам: либо у этого значения нарушены связи (оно существует на некоторых серверах, но не на всех), либо значение устаревшего состояния зафиксировано (оно существует на всех серверах, но по какой-то причине его состояние не изменяется).

Для решения проблем со значениями устаревшего состояния, которые не могут быть обработаны, и со значениями устаревшего состояния с нарушенными ассоциациями воспользуйтесь следующими рекомендациями.

Решения

Используйте правильное решение, на которое присутствует ссылка в разделе Советы по устранению проблем.

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

Исправление значений устаревшего состояния с нарушенными ассоциациями

Исправление значений устаревшего состояния с нарушенными ассоциациями с внешними ссылками

Исправление значений устаревшего состояния OBT_INHIBIT_MOVE

Способы, использовавшиеся ранее

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

Первая стратегия заключалась в переключении главных реплик. Иногда это помогало, поскольку главная реплика является агентом, отвечающим за смену состояний значений устаревшего состояния типа "Обратная ссылка". Если реплика была противоречивой, а главная реплика не имела удаленного объекта, то переключение главной реплики на агент, в котором был удаленный объект с его значениями устаревшего состояния, предоставит новому агенту лицензию на доставку значений устаревшего состояния и на их очистку. Функция "Send Single Entry" (Отправить один элемент) является намного более аккуратным и безопасным способом устранения проблем значений устаревшего состояния, которые не могут быть обработаны, и возникли из-за несогласованности реплик.

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

Третья стратегия служит для того, чтобы сделать агенты достоверными: либо с помощью DSBrowse в расширенном режиме с установкой отметки времени элементов, либо с помощью DSRepair с параметром 0T. При этом элемент становится достоверным и выполняет исходящую синхронизацию со всеми остальными репликами. Установку отметки времени и преобразование объектов в достоверные необходимо использовать аккуратно, поскольку это может привести к потере измененных данных на других серверах. Группа разработчиков eDirectory рекомендует данный способ в качестве редко используемого средства очистки значений устаревшего состояния.

Информацию о товарных знаках NetIQ см. на веб-сайте http://www.netiq.com/company/legal/.