Использование измененной библиотеки liblmdb (пакет elles-lmdb-libs)

В дистрибутив «Эллес» включена специализированная сборка библиотеки liblmdb в виде пакета elles-lmdb-libs. Библиотека реализует базу данных Lighting Memory-Mapped Database (LMDB) для использования службой каталогов при указании опции --backend-store=mdb в процессе развертывания контроллера домена или ввода сервера в домен в роли контроллера.

Формат именования

Имя пакета формируется по шаблону:

elles-lmdb-libs_<original_lib_version>-1~<MDB_IDL_LOGN_value>_<architecture>.<ext>

В шаблоне:

  • original_lib_version — исходная версия библиотеки liblmdb, на основе которой сформирована сборка;

  • MDB_IDL_LOGN_value — значение MDB_IDL_LOGN, используемое в сборке;

  • architecture — архитектура, для которой предназначена сборка;

  • <ext> — расширение пакета.

Например, для Astra Linux:

elles-lmdb-libs_0.9.31-1~18_amd64.deb

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

В библиотеке liblmdb на основе MDB_IDL_LOGN определяется, в частности, значение MDB_IDL_UM_MAX:

MDB_IDL_UM_MAX = MDB_IDL_LOGN + 1

В контексте работы LMDB значение MDB_IDL_UM_MAX ограничивает максимальное количество так называемых «грязных» страниц (dirty pages), то есть страниц, которые имеют изменения, но не записаны на диск, в пределах одной транзакции.

В стандартной сборке библиотеки, устанавливаемой по умолчанию, значение MDB_IDL_LOGN составляет 16. Таким образом, максимальное количество «грязных» страниц в пределах транзакции составляет 217 = 131 072. Этого может быть недостаточно при эксплуатации базы данных каталога с большим количеством объектов, что приводит к ошибке "MDB_TXN_FULL: Transaction has too many dirty pages - transaction too big" и прерыванию транзакции.

Для устранения ошибки в дистрибутиве текущей версии «Эллес» поставляется сборка библиотеки с увеличением значения MDB_IDL_LOGN до 18. В этом случае максимальное количество страниц составляет 219 = 524 288, что в 4 раза больше стандартного значения. Тем самым обеспечивается возможность корректного завершения транзакций при работе с большими базами данных службы каталогов.

Установка при развертывании нового контроллера домена

При развертывании нового контроллера домена измененная сборка библиотеки liblmdb может устанавливаться до или после установки пакета inno-samba.

Чтобы установить библиотеку:

  • при использовании репозитория выполните:

    • Astra Linux

    • РЕД ОС

    sudo apt install elles-lmdb-libs -y
    sudo dnf install elles-lmdb-libs -y
  • при локальной установке из архива укажите путь к распакованным файлам и имя пакета; например:

    • Astra Linux

    • РЕД ОС

    cd /path/to/package
    sudo apt install ./elles-lmdb-libs_0.9.31-1~18_amd64.deb -y
    cd /path/to/package
    sudo dnf install ./elles-lmdb-libs-0.9.31-1~18.x86_64.rpm -y

Установка на существующий контроллер домена

Чтобы установить измененную сборку библиотеки liblmdb на существующий контроллер домена:

  1. Переведите контроллер домена в режим обслуживания:

    sudo samba-tool maintenance on
  2. Остановите службу inno-samba:

    sudo systemctl stop inno-samba.service
  3. Установите требуемую измененную сборку библиотеки, следуя инструкциям в подразделе «Установка при развертывании нового контроллера домена».

  4. Запустите службу inno-samba:

    sudo systemctl start inno-samba.service
  5. Выведите контроллер домена из режима обслуживания:

    sudo samba-tool maintenance off

Обновлено: