Проверка базы данных каталога

Команда samba-tool dbcheck позволяет выявлять и исправлять ошибки в локальной базе данных Эллес.

Формат вызова

Общий формат вызова:

samba-tool dbcheck [<DN>] [options]

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

Для запуска подкоманды требуются права суперпользователя (root/sudo).

Параметры

Параметры вызова:

  • --scope — диапазон поиска; может принимать следующие значения:

    • SUB — при указании данной опции процесс поиска опускается вниз по иерархии от указанного DN (либо, если DN не указан, базового DN домена) до самого нижнего уровня в информационном дереве каталога;

    • ONE — при указании данной опции процесс поиска опускается на один уровень от указанного DN (либо, если DN не указан, базового DN домена);

    • BASE — при указании данной опции поиск ведется только для указанного DN (либо, если DN не указан, базового DN домена);

  • --fix — исправить все найденные ошибки;

  • --yes — не запрашивать отдельное подтверждение для каждого изменения;

    При указании данной опции все изменения применяются в рамках одной транзакции.

  • --cross-ncs — при указании данной опции выполняется проверка всех разделов каталога (контекстов именования);

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

  • -v|--verbose — вывод детальной информации;

  • -q|--quiet — тихий режим (отключает вывод диагностических сообщений во время работы подкоманды);

  • --attrs=ATTRS — список атрибутов (через пробел) для проверки;

  • --reindex — выполнить принудительную переиндексацию базы данных;

  • --apply-new-index-list — применить изменения в списке дополнительных индексов и при необходимости переиндексировать базу данных;

    См. подробнее о дополнительных индексах в разделе «Включение дополнительных индексов для оптимизации поиска по атрибутам».
  • --force-modules — включить принудительную загрузку модулей Эллес и игнорировать запись @MODULES;

  • --reset-well-known-acls — сбросить разрешения (ACL) для объектов, для которых существуют общепринятые значения по умолчанию;

  • --quick-membership-checks — пропустить проверку отсутствующих или неполных взаимных ссылок типа memberOf между объектами;

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

  • -H URL|--URL=URL — URI LDAP-сервера; может содержать указание на протокол, имя хоста и номер порта;

  • --filter — выполнить проверку по LDAP-фильтру;

  • --backlinks-only — узкоспециализированная оптимизированная проверка обратных ссылок.

    Может использоваться вместе с параметром восстановления --fix.

    Предполагается разовое использование данной опции, если было выявлено, что не хватает обратных ссылок при присоединении к домену. Например, подобная ситуация возможна, если данные были мигрированы из доменов старых версий (до Windows 2000).

Рекомендации по использованию

Проверка должна запускаться локально на каждом отдельном контроллере домена Эллес, поскольку в некоторых случаях исправления могут затрагивать нереплицированные атрибуты. В этом случае внесенные изменения не попадут на другие контроллеры домена через механизм репликации.

В условиях штатной эксплуатации Эллес команда dbcheck может использоваться для:

  • полной проверки базы данных с остановкой контроллера домена;

  • регулярной проверки определенной выборки данных на основе фильтров без остановки контроллера домена;

  • выполнения определенных действий в базе данных при использовании соответствующих опций (например, для применения изменений в списке дополнительных индексов с последующей переиндексацией базы данных при вызове с опцией --apply-new-index-list).

Полная проверка

Полную проверку базы данных Эллес рекомендуется выполнять после:

  • присоединения сервера в качестве контроллера домена (операция join);

  • обновления версии Эллес на действующем контроллере домена;

  • включения роли Global Catalog (см. раздел «Администрирование роли Global Catalog»).

В этих случаях проверка должна выполняться на остановленном контроллере домена.

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

  1. При необходимости создайте резервную копию домена (см. раздел «Резервное копирование и восстановление»).

  2. Выполните необходимые действия по подготовке к остановке и остановке контроллера домена (проверка и перенос ролей, перевод в режим обслуживания, остановка службы и т. д.).

  3. Запустите проверку всех разделов без исправления ошибок:

    samba-tool dbcheck --cross-ncs

    Опция --cross-ncs указывает на необходимость проверки всех разделов каталога (контекстов именования). В отсутствие данной опции проверка выполняется только для основного раздела каталога домена.

  4. Для исправления выявленных ошибок выполните:

    samba-tool dbcheck --cross-ncs --fix

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

    При вызове команды может быть передан параметр --yes. В этом случае все запросы будут подтверждены автоматически.

  5. После завершения процесса внесения исправлений повторно запустите проверку, чтобы убедиться в успешности выполнения операции.

Регулярная проверка

Команда dbcheck может использоваться на регулярной основе для обнаружения логических ошибок в базе данных Эллес, которые могут возникать в процессе эксплуатации.

Такие ошибки могут появиться только в измененных объектах. Поскольку измененные объекты получают новое значение атрибута uSNChanged, оно может использоваться в LDAP-фильтре в вызове команды dbcheck для ограничения области проверки.

Кроме того, процесс проверки может быть дополнительно ускорен с помощью опции --quick-membership-checks, отключающей некоторые проверки, за которые отвечает сервис lacheck (см. раздел «Настройка обработки связанных атрибутов»).

При этом проверка выполняется без опции --fix и не требует остановки контроллера домена. Решение о времени и способе исправления найденных в ходе нее ошибок принимает администратор.

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

  1. В качестве отправной точки используется значение атрибута uSNChanged, до которого уже выполнялись проверки (изначально — 0). Далее это значение обозначается буквой D.

  2. В период низкой нагрузки на контроллер домена выбирается очередная небольшая группа объектов для проверки в порядке возрастания uSNChanged по условию uSNChanged >= D. Далее максимальное значение uSNChanged в отобранной группе объектов обозначается буквой E.

  3. Для проверки отобранных объектов команда dbcheck вызывается с LDAP-фильтром D <= uSNChanged <= E. Формируется лог проверки.

  4. Если в логе нет ошибок, повторяется последовательность шагов 1-3.

  5. Если ошибки есть, повторяется проверка в шаге 3.

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

  6. Если в логе нет ошибок, повторяется последовательность шагов 1-3.

  7. Если ошибки есть, администратор принимает решение о времени и способе их исправления.

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

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

Поэтому настоятельно рекомендуется:

Если в результате исправления ошибок с помощью dbcheck в работе контроллера домена начинают наблюдаться проблемы:

  1. Выполните следующую команду для каждого раздела каталога:

    samba-tool drs replicate --full-sync --sync-forced

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

  2. Если проблема сохраняется, повторно выполните операцию присоединения к домену. В ходе присоединения полностью перестраивается локальная база контроллера домена.

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