Существует большая путаница в понимании значений устаревшего состояния (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
Конфигурация агента.Этот раздел включает следующие примеры:
Если значение устаревшего состояния является первичным и нет вторичных значений устаревшего состояния, а время изменения атрибута (MTS) значения устаревшего состояния старше вектора Purge, то все серверы, на которых есть это изменение и это значение устаревшего состояния, будут удалены.
Если типом значения устаревшего состояния является "Обратная ссылка" и данный сервер является главным, он отвечает за обработку данного значения устаревшего состояния.
Выполнение операций, требуемых для данного состояния, если они не были выполнены ранее. Чаще всего это выполняется посредством оповещения внешней ссылки.
Если значение устаревшего состояния — "используется", а сервер является тем сервером, на котором произошло удаление (определяется путем сравнения номера реплики в значении устаревшего состояния MTS с номером нашей реплики), то этот сервер отвечает за обработку значения устаревшего состояния.
Операция переноса аналогична операции удаления, за исключением следующего:
Объекты со значениями устаревшего состояния рассматриваются при каждой исходящей синхронизации агента, а также процессом обработки значений устаревших состояний, выполнение которого запланировано в конце цикла входящей синхронизации.
Регулярно формируйте отчет iMonitor "Информация о сервере". При создании этого отчета выполняется обход всего дерева, обращение ко всем NCP-серверам, которые были найдены, а также сообщается обо всех найденных ошибках. Этот отчет можно использовать для диагностики проблем синхронизации времени и процесса Limber, а также для выяснения способности взаимодействия текущего сервера с другими серверами с точки зрения данного сервера. Если данный сервер выбран на странице конфигурации, он также сможет формировать информацию о состоянии агента NDS для любого сервера в дереве. Дополнительную информацию о создании отчета "Информация о сервере" см. в разделе Настройка отчетов.
При использовании iMonitor 2.0 или более поздней версии убедитесь в том, что включены следующие параметры отчета: "Ошибки" и "Вложенный отчет состояния". Необходимо проверить перечисленные ниже элементы. Следует просмотреть отчет и убедиться в отсутствии ошибок.
Если используется iMonitor 1.5, выберите параметр отчета "Ошибки". Необходимо проверить перечисленные ниже элементы. Следует просмотреть отчет и убедиться в отсутствии ошибок.
Любые значения устаревшего состояния в системе можно обнаружить с помощью отчета iMonitor "Список устаревших состояний" или "Статистика объектов". При обнаружении значений устаревшего состояния, которые, по вашему мнению, не обрабатываются, см. советы по устранению проблем.
Значения устаревшего состояния могут не быть обработаны по двум причинам: либо у этого значения нарушены связи (оно существует на некоторых серверах, но не на всех), либо значение устаревшего состояния зафиксировано (оно существует на всех серверах, но по какой-то причине его состояние не изменяется).
Для решения проблем со значениями устаревшего состояния, которые не могут быть обработаны, и со значениями устаревшего состояния с нарушенными ассоциациями воспользуйтесь следующими рекомендациями.
проблемы подключения -625, -622, -634 и -635. Дополнительную информацию см. в отчете Информация о сервере.
-601 и -603, указывающие неправильное удаление сервера или наличие о объекта сервера базового класса "Неизвестный".
Используйте правильное решение, на которое присутствует ссылка в разделе Советы по устранению проблем.
Перед использованием любых из этих решений убедитесь в безопасности данных. Возможно, потребуется резервное копирование файлов базы данных Каталога, конфигурации сервера и опекунов. Для повышения вероятности успеха и снижения возможности появления проблем в будущем воспользуйтесь последними пакетами обновления eDirectory.
Исправление значений устаревшего состояния с нарушенными ассоциациями
- Рекомендуемый метод: при использовании на серверах в кольце реплик eDirectory версии 8.6 или более поздней найдите объект в iMonitor, затем выберите Send Single Entry. При этом произойдет недостоверная отправка всем остальным репликам.
- Менее желательный метод: включите расширенный режим в iMonitor, найдите объект и выберите "Дополнительные параметры", затем "Элемент отметки времени". При этом объект в том виде, в котором он существует на данном сервере, станет достоверной копией. Novell не рекомендует систематически прибегать к преобразованию объектов в достоверные.
- Менее желательный метод: если все серверы в кольце реплик с копией значения устаревшего состояния старше eDirectory 8.6, загрузите DSBrowse с параметром -a, найдите объект, затем выберите "Resend Selected Object", чтобы задать отметку времени для элемента. При этом объект в том виде, в котором он существует на данном сервере, станет достоверной копией. Novell не рекомендует систематически прибегать к преобразованию объектов в достоверные.
Исправление значений устаревшего состояния с нарушенными ассоциациями с внешними ссылками
- Рекомендуемый метод: запустите наиболее позднюю версию DSRepair с параметром -XK3. Однако сначала убедитесь в том, что доступны все операции, выполняемые с помощью параметра -XK3.
- Менее желательный метод: переместите настоящую реплику на этот сервер, дождитесь ее включения, затем дождитесь обработки значения устаревшего состояния. Если значение устаревшего состояния не обрабатывается, для устранения проблемы воспользуйтесь информацией, приведенной в разделе Советы по устранению проблем, после того, как объект будет перенесен в действительную реплику. После обработки значения устаревшего состояния реплику можно при необходимости удалить.
Исправление значений устаревшего состояния OBT_INHIBIT_MOVE
- Рекомендуемый метод: если объект назначения завершен, проверьте, существует ли исходный объект. Если исходный объект существует и все еще имеет атрибут OBT_MOVED, выясните, что мешает завершению OBT_MOVED. Если исходный объект отсутствует, используйте команды меню эксперта в iMonitor для разблокировки OBT_MOVE_INHIBIT в главной реплике целевых объектов. Если целевой является незавершенным, разблокируйте OBT_MOVE_INHIBIT и удалите целевой объект.
В прошлом для решения проблемы значений устаревшего состояния, которые не могут быть обработаны, использовались разные стратегии. Некоторые из них включают в себя дорогостоящие операции разбиения на разделы, а также использование недокументированных функций, что могло привести к появлению новых проблем. Многие из перечисленных ниже стратегий использовать не следует.
Первая стратегия заключалась в переключении главных реплик. Иногда это помогало, поскольку главная реплика является агентом, отвечающим за смену состояний значений устаревшего состояния типа "Обратная ссылка". Если реплика была противоречивой, а главная реплика не имела удаленного объекта, то переключение главной реплики на агент, в котором был удаленный объект с его значениями устаревшего состояния, предоставит новому агенту лицензию на доставку значений устаревшего состояния и на их очистку. Функция "Send Single Entry" (Отправить один элемент) является намного более аккуратным и безопасным способом устранения проблем значений устаревшего состояния, которые не могут быть обработаны, и возникли из-за несогласованности реплик.
Следующей стратегия заключалась в использовании утилиты DSRepair с определенными параметрами для удаления всех значений устаревшего состояния. (Существует приложение независимого производителя, которое выполняет очистку значений устаревшего состояния, которые не могут быть обработаны, с помощью утилиты DSRepair). Группа разработчиков eDirectory не рекомендует использовать эту стратегию. Использование таких параметров приведет к удалению всех значений устаревшего состояния данного агента, в том числе и нормально обрабатываемых, что приведет к росту несогласованности реплик и увеличению числа значений устаревшего состояния, которые не могут быть обработаны. Поскольку это нераспределенная операция, утилиту DSRepair потребуется запускать на всех серверах, содержащих значения устаревшего состояния, которые не могут быть обработаны. При этом увеличится вероятность того, что на одном из этих серверов будут существовать значения устаревшего состояния для другого раздела, которые будут удалены раньше времени. Преждевременное удаление значений устаревшего состояния может привести к появлению дополнительных значений устаревшего состояния с нарушенными ассоциациями, и, в свою очередь, привести к проблемам, о которых станет известно лишь через несколько лет при изменении типов реплик, добавлении новых реплик или выполнения других операций по разбиению на разделы.
Третья стратегия служит для того, чтобы сделать агенты достоверными: либо с помощью DSBrowse в расширенном режиме с установкой отметки времени элементов, либо с помощью DSRepair с параметром 0T. При этом элемент становится достоверным и выполняет исходящую синхронизацию со всеми остальными репликами. Установку отметки времени и преобразование объектов в достоверные необходимо использовать аккуратно, поскольку это может привести к потере измененных данных на других серверах. Группа разработчиков eDirectory рекомендует данный способ в качестве редко используемого средства очистки значений устаревшего состояния.
Информацию о товарных знаках NetIQ см. на веб-сайте http://www.netiq.com/company/legal/.