Существует большая путаница в понимании значений устаревшего состояния, хранящихся в Каталоге, в результате которой появились неправильные методы работы с ними. В отличие от некоторых продуктов Каталога, Novell® eDirectory™ обеспечивает целостность ссылок между объектами. Например, если в группе А существовал пользователь Б, который был впоследствии удален, то Каталог автоматически удаляет ссылку на пользователя Б из группы А. Значения устаревшего состояния существуют как операционные атрибуты, назначенные объектам eDirectory в качестве одного из способов обеспечения целостности ссылок при удалении, перемещении, переименовании, восстановлении и в других операциях.
Существуют три основных вида значений устаревшего состояния: первичные (Primary), вторичные (Secondary) и отслеживающие (Tracking). Первичные значения устаревшего состояния включают значения следующих типов: "Dead (0001)" (Мертвый), "Restored (0000)" (Восстановлен), "Moved (0002)" (Перенесен), "New RDN (0005)" (Новое имя RDN) и "Tree New RDN (0008)" (Новое имя RDN). Вторичные значения устаревшего состояния в основном ассоциированы с первичными значениями и являются агентами и разделами, требующими оповещения об операции, указанной в первичном значении устаревшего состояния. Вторичные значения устаревшего состояния включают следующие типы "Back Link (0006)" (Обратная ссылка), "Used By (000C)" (Используется) и "Move Tree (000a)" (Перенос дерева). Отслеживающие значения устаревшего состояния включают "Inhibit Move (0003)" (Запрещение переноса), "Old RDN" (Старое имя RDN) и "Tree Old RDN" (Старое имя RDN дерева).
Значения устаревшего состояния, за исключением отслеживающих, должны пройти ряд состояний синхронизации:
Состояния регистрируются в поле "Флаги" атрибута значения устаревшего состояния. До того, как значение устаревшего состояния сможет перейти в следующее состояние, текущее состояние должно быть синхронизировано со всеми репликами реального объекта. Для того, чтобы определить, все ли реплики кольца были оповещены о данном состоянии значения устаревшего состояния, вычисляется переходный вектор. В eDirectory 8.6 и более поздних версий используется несохраняемый вектор значений устаревшего состояния. В предыдущих версиях eDirectory использовался вектор очистки. Если дата отметки времени модификации (Modification Timestamp - MTS) значения устаревшего состояния окажется более ранней, чем дата поврежденного вектора, сервер, ответственный за данное значение устаревшего состояния, может перевести его в следующее состояние.
Агент, хранящий главную реплику объекта со вторичным значением устаревшего состояния типа "Обратная ссылка", несет ответственность за изменение его состояний. Ответственность за изменение состояний вторичного значения устаревшего состояния типа "Используется" несет создавший его агент реплики на протяжении всего времени существования этой реплики. Если эта реплика больше не существует, ответственность за изменение состояний вторичного значения устаревшего состояния типа "Используется" несет главная реплика данного раздела. Ответственность за изменение состояний значения устаревшего состояния типа "Перенос дерева" несет главная реплика корневого раздела.
Изменение состояния первичных значений устаревшего состояния может происходить только после того, как все вторичные значения устаревшего состояния последовательно прошли все свои состояния. После того, как первичное значение устаревшего состояния достигает своего конечного состояния, а также после синхронизации этого состояния со всеми серверами кольца, остается объект без атрибутов, который впоследствии может быть удален из системы в процессе очистки. Отслеживающие значения устаревшего состояния удаляются тогда, когда первичное значение устаревшего состояния готово к удалению, а устаревшие отслеживающие значения устаревшего состояния с запретом переноса удаляются после того, как первичное значение устаревшего состояния перейдет в состояние "OBF_NOTIFIED" в главной реплике.
Реплика, ответственная за обработку значений устаревшего состояния, выполняет это в виде фонового процесса (процесса обработки значений устаревшего состояния), планируемого для каждого раздела, после того, как в данном разделе будет завершен цикл входящей синхронизации. Если в разделе других реплик нет, процесс исходящего тиражирования планируется с интервалом Heartbeat. Затем процесс исходящего тиражирования запускает процесс обработки значений устаревшего состояния. Процесс обработки значений устаревшего состояния не может и не должен планироваться вручную. По мере выполнения синхронизации обновляются переходные векторы, изменяется состояние векторов очистки и векторов значений устаревшего состояния. Вместе с ними изменяются и состояния значений устаревшего состояния. Совместно с автоматическим планированием при входящей синхронизации это приводит к завершению цикла обработки значений устаревшего состояния. Таким образом, движущей силой процесса обработки значений устаревшего состояния является синхронизация объектов.
Для удаляемого объекта: после того, как все значения устаревшего состояния, которые ассоциированы с первичным значением устаревшего состояния "DEAD" (Мертвое), перешли в последнее состояние "Purgable" (Очищаемое) и информация об этом была синхронизирована во всех репликах, запускается другой процесс, ответственный за удаление остатков объекта из базы данных. Процесс очистки автоматически удаляет остаточные элементы. Процесс очистки можно запланировать вручную. Можно также изменить интервал его автоматического планирования с помощью страницы iMonitor
the Конфигурация агента.Этот раздел включает следующие примеры:
Если значение устаревшего состояния является первичным, а вторичных значений нет и при этом атрибут был изменен раньше создания вектора очистки, то о данном изменении были оповещены все серверы. Данное значение устаревшего состояния удаляется.
Если типом значения устаревшего состояния является "Обратная ссылка" и данный сервер является главным, он отвечает за обработку данного значения устаревшего состояния.
Выполнение операций, требуемых для данного состояния, если они не были выполнены ранее. Чаще всего это выполняется посредством оповещения внешней ссылки.
Если значение устаревшего состояния имеет тип "Используется", а данный сервер - это сервер, на котором выполняется удаление (что проверяется сравнением номера реплики в 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" (Отправить один элемент). При этом произойдет недостоверная отправка всем остальным репликам.
- Нежелательный способ. Если на всех серверах кольца реплик, имеющих копию значения устаревшего состояния с нарушенными ассоциациями, используется версия eDirectory, предшествующая 8.6, загрузите приложение DSBrowse с параметром "-a", найдите объект, затем выберите <visit> для установки отметки времени элемента. При этом объект в том виде, в котором он существует на данном сервере, станет достоверной копией. Novell не рекомендует систематически прибегать к преобразованию объектов в достоверные.
Исправление значений устаревшего состояния с нарушенными ассоциациями с внешними ссылками
- Предпочитаемый способ. Запустите утилиту DSRepair версии <visit> и выберите опцию <visit>.
- Менее предпочитаемый способ. Перенесите действительную реплику на сервер, дождитесь ее включения и обработки значения устаревшего состояния. Если значение устаревшего состояния не обрабатывается, для устранения проблемы воспользуйтесь информацией, приведенной в разделе Советы по устранению проблем, после того, как объект будет перенесен в действительную реплику. После обработки значения устаревшего состояния реплику можно при необходимости удалить.
В прошлом для решения проблемы значений устаревшего состояния, которые не могут быть обработаны, использовались разные стратегии. Некоторые из них включают в себя дорогостоящие операции разбиения на разделы, а также использование недокументированных функций, что могло привести к появлению новых проблем. Многие из перечисленных ниже стратегий использовать не следует.
Первая стратегия заключалась в переключении главных реплик. Иногда это помогало, поскольку главная реплика является агентом, отвечающим за смену состояний значений устаревшего состояния типа "Обратная ссылка". Если реплика оказывалась несогласованной, а главная реплика не хранила удаленный объект, то переключение главной реплики на агент, содержащий удаленный объект со всеми значениями устаревшего состояния, позволяло новому агенту изменять состояния значения устаревшего состояния и, наконец, очистить его. Функция "Send Single Entry" (Отправить один элемент) является намного более аккуратным и безопасным способом устранения проблем значений устаревшего состояния, которые не могут быть обработаны, и возникли из-за несогласованности реплик.
Следующей стратегия заключалась в использовании утилиты DSRepair с определенными параметрами для удаления всех значений устаревшего состояния. (Существует приложение независимого производителя, которое выполняет очистку значений устаревшего состояния, которые не могут быть обработаны, с помощью утилиты DSRepair.) Группа разработчиков eDirectory не рекомендует использовать эту стратегию. Использование таких параметров приведет к удалению всех значений устаревшего состояния данного агента, в том числе и нормально обрабатываемых, что приведет к росту несогласованности реплик и увеличению числа значений устаревшего состояния, которые не могут быть обработаны. Поскольку это нераспределенная операция, утилиту DSRepair потребуется запускать на всех серверах, содержащих значения устаревшего состояния, которые не могут быть обработаны. При этом увеличится вероятность того, что на одном из этих серверов будут существовать значения устаревшего состояния для другого раздела, которые будут удалены раньше времени. Преждевременное удаление значений устаревшего состояния может привести к появлению дополнительных значений устаревшего состояния с нарушенными ассоциациями, и, в свою очередь, привести к проблемам, о которых станет известно лишь через несколько лет при изменении типов реплик, добавлении новых реплик или выполнения других операций по разбиению на разделы.
Третья использовавшаяся стратегия заключалась в преобразовании объектов в достоверные или с помощью режима эксперта в утилите DSBrowse, устанавливающей отметки времени элементов, или с помощью запуска утилиты DSRepair с параметром "-0T". При этом элемент становится достоверным и выполняет исходящую синхронизацию со всеми остальными репликами. Установку отметки времени и преобразование объектов в достоверные необходимо использовать аккуратно, поскольку это может привести к потере измененных данных на других серверах. Группа разработчиков eDirectory рекомендует данный способ в качестве редко используемого средства очистки значений устаревшего состояния.
Символ торговой марки (®, TM и т.д.) обозначает торговую марку Novell. Символ звездочки (*) обозначает торговую марку независимого производителя. Информацию о торговых марках см. в разделе Юридическая информация.