Skip to content

Commit 0627834

Browse files
committed
man: refine mdb-backed page.
Initial for #160
1 parent 56663da commit 0627834

File tree

3 files changed

+60
-37
lines changed

3 files changed

+60
-37
lines changed

doc/man/en/man5/slapd-mdb.soelim

+23-12
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ slapd\-mdb \- ReOpenLDAP's reliable Memory-Mapped DB backend to slapd
2121
.B @SYSCONFDIR@/slapd.conf
2222

2323
.SH DESCRIPTION
24-
The \fBmdb\fP backend to
24+
In the ReopenLDAP \fBmdb\fP backend
2525
.BR slapd (8)
26-
uses ReOpenLDAP's reliable Lightning Memory-Mapped DB (MDBX) library to store data.
26+
uses Extended Lightning Memory-Mapped Data Base (\fBlibmdbx\fP) library to store data.
2727
It relies completely on the underlying operating system for memory
2828
management and does no caching of its own. It is the recommended
2929
primary database backend.
@@ -84,7 +84,7 @@ manual page.
8484
.BI checkpoint \ <kbyte>\ <sec>
8585
Specify the frequency for flushing the database disk buffers.
8686
This setting is helpful when using the \fBdbnosync\fP option
87-
or the \fBnosync\fR, \fBnometasync\fR and \fBmapasync\fR flags
87+
or the \fBnosync\fR, \fBlazysync\fR, \fBnometasync\fR and \fBmapasync\fR flags
8888
in the \fBenvflags\fR option. Otherwise, flushing
8989
is done every time a write operation (transaction) is completed;
9090
generating any additional checkpoints makes no sense.
@@ -101,6 +101,12 @@ regardless of which mode is enabled by the \fBnosync\fR option's flags.
101101
With the original OpenLDAP project, there is a chance that the database
102102
may be corrupted in some scenarios when \fBwritemap\fR is combined
103103
with \fBnosync\fR, \fBnometasync\fR and \fBmapasync\fR.
104+
However, PLEASE NOTE, in \fBnosync\fR, \fBlazysync\fR and \fBnometasync\fR modes
105+
after abnormal (disaster) shutdown \fBlibmdbx\fP storage engine will rollback all
106+
changes to the last commit checkpoint on disk,
107+
formed in accordance with the parameters of \fBcheckpoint\fR option.
108+
Accordingly, if \fBcheckpoint\fR is not used, it may be lost
109+
all changes after the last regular (non disaster) shutdown of \fBslapd\fR.
104110
.LP
105111
Note2:
106112
ReOpenLDAP implements support for the \fI<kbyte>\fP setting. The data
@@ -126,7 +132,7 @@ By default, a full data flush/sync is performed when each
126132
transaction is committed.
127133
.TP
128134
.BI directory \ <directory>
129-
Specify the directory where the LMDB files containing this database and
135+
Specify the directory where the MDBX-files containing this database and
130136
associated indexes live.
131137
A separate directory must be specified for each database.
132138
The default is
@@ -135,7 +141,7 @@ The default is
135141
.BI dreamcatcher \ <lag>\ <percentage>
136142
Manage restarts of long-lasting read operations that
137143
make it impossible to free and reuse pages used
138-
in older database version snapshots (results of past write transactions) in the LMDB.
144+
in older database version snapshots (results of past write transactions) in the \fBlibmdbx\fP.
139145
With a lot of changes being made in a short span of time, such operations
140146
can lead to consumption of all available space in the database and a failure.
141147
The first parameter called \fI<lag>\fP specifies a transaction lag threshold which,
@@ -189,8 +195,8 @@ Note2:
189195
.RE
190196
.TP
191197
.TP
192-
.BI envflags \ [nosync]\ [nometasync]\ [writemap]\ [mapasync]\ [nordahead]\ [lifo]\ [coalesce]
193-
Specify flags for finer-grained control of the LMDB library's operation.
198+
.BI envflags \ [nosync]\ [lazysync]\ [nometasync]\ [writemap]\ [mapasync]\ [nordahead]\ [lifo]\ [coalesce]
199+
Specify flags for finer-grained control of the \fBlibmdbx\fP operation.
194200
Note: The above flags for \fBenvflags\fR should be defined in slapd.conf without
195201
any brackets or commas, using spaces or tabs as separators.
196202
.RS
@@ -202,6 +208,11 @@ directive.
202208
.RE
203209
.RS
204210
.TP
211+
.B lazysync
212+
Will be described later. Please see Russian man page.
213+
.RE
214+
.RS
215+
.TP
205216
.B nometasync
206217
Flush the data on a commit, but skip the sync of the meta page. This mode is
207218
slightly faster than doing a full sync, but can potentially lose the last
@@ -242,9 +253,8 @@ is larger than RAM. This option is not implemented on Windows.
242253
.RS
243254
.TP
244255
.B lifo
245-
Turn on LIFO (reverse) internal reclaiming within \fBmdb\fP of FreeDB entries
246-
which specify the pages being freed when re-processing old database
247-
versions (results of past write transactions). Consequently, it is most likely
256+
Turn on LIFO (reverse) internal reclaiming within \fBlibmdbx\fP garbage collector.
257+
Consequently, it is most likely
248258
that the set of pages in use recurs from transaction to transaction.
249259
This, in turn, makes it possible for the storage subsystem
250260
to use the internal caching and writeback mechanisms efficiently,
@@ -257,7 +267,7 @@ is not available in the original OpenLDAP.
257267
.RS
258268
.TP
259269
.B coalesce
260-
Turn on coagulation of FreeDB entries within \fBmdb\fP (merging the lists of
270+
Turn on coagulation of entries within \fBlibmdb\fP garbage collector (merging the lists of
261271
free pages), which reduces the amount of internal indexes and the number of pages
262272
updated upon any changes. As a result, the load on the storage subsystem
263273
diminishes slightly in most scenarios.
@@ -304,7 +314,7 @@ of the indices online in a background task.
304314
Specify the maximum number of threads that may have concurrent read access
305315
to the database. Tools such as slapcat count as a single thread,
306316
in addition to threads in any active slapd processes. The
307-
default is 126.
317+
default is 61.
308318
.TP
309319
.BI maxsize \ <bytes>
310320
Specify the maximum size of the database in bytes. A memory map of this
@@ -356,6 +366,7 @@ default
356366
.B slapd
357367
configuration file
358368
.SH SEE ALSO
369+
.BR libmdbx (https://github.com/leo-yuriev/libmdbx/README.md),
359370
.BR slapd.conf (5),
360371
.BR slapd\-config (5),
361372
.BR slapd (8),

doc/man/ru/man5/slapd-mdb.soelim

+36-24
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ slapd\-mdb \- механизм манипуляции данными для slap
2121
.B @SYSCONFDIR@/slapd.conf
2222

2323
.SH ОПИСАНИЕ
24-
Механизм манипуляции данными для
24+
В ReOpenLDAP механизм манипуляции данными для
2525
.BR slapd (8)
26-
\fBmdb\fP использует для хранения данных библиотеку ReOpenLDAP reliable Lightning Memory-Mapped DB (MDBX).
26+
\fBmdb\fP использует для хранения данных библиотеку Extended Lightning Memory-Mapped Data Base (\fBlibmdbx\fP).
2727
Библиотека не имеет собственных механизмов кэширования, полагаясь на средства
2828
управления виртуальной памятью операционной системы, в которой она работает.
2929
\fBmdb\fP является рекомендуемым первичным механизмом для работы с базами данных.
@@ -77,7 +77,7 @@ slapd\-mdb \- механизм манипуляции данными для slap
7777
.BI checkpoint \ <kbyte>\ <min>
7878
Указывает частоту синхронизации образа базы данных в оперативной памяти
7979
с записанным на диске. Эта установка полезна при использовании директивы
80-
\fBdbnosync\fP, либо флагов \fBnosync\fR, \fBnometasync\fR, \fBmapasync\fR
80+
\fBdbnosync\fP, либо флагов \fBnosync\fR, \fBlazysync\fR, \fBnometasync\fR, \fBmapasync\fR
8181
в директиве \fBenvflags\fR. Иначе синхронизация выполняется
8282
при завершении каждой операции (транзакции) записи и дополнительное
8383
формирование контрольных точек теряет смысл.
@@ -91,15 +91,21 @@ slapd\-mdb \- механизм манипуляции данными для slap
9191
\fIПримечание 1:\fP
9292
В ReOpenLDAP гарантируется консистентность данных на диске в каждой
9393
контрольной точке, вне зависимости от режима заданного флагами директивы \fBnosync\fR.
94-
Исходный проект OpenLDAP в некоторых сценариях допускает вероятность разрушения
94+
Оригинальный OpenLDAP в некоторых сценариях допускает полное разрушение
9595
базы данных при комбинировании \fBwritemap\fR с \fBnosync\fR, \fBnometasync\fR
9696
и \fBmapasync\fR.
97+
Однако, ОБРАТИТЕ ВНИМАНИЕ, в режимах \fBnosync\fR,
98+
\fBlazysync\fR и \fBnometasync\fR после нештатно (аварийного)
99+
завершения опорный движок хранения \fBlibmdbx\fP откатит все
100+
изменения до последней контрольной точки фиксации на диске,
101+
сформированной в соответствии с параметрами опции \fBcheckpoint\fR.
102+
Соответственно, если \fBcheckpoint\fR не используется, то могут быть потеряны
103+
все изменения в DIT после последнего штатного (не аварийного) завершения \fBslapd\fR.
97104
.LP
98105
\fIПримечание 2:\fP
99106
В ReOpenLDAP реализована поддержка установки \fI<kbyte>\fP. При этом под объемом
100107
данных подразумевается суммарный размер измененных страниц внутри \fBmdb\fP.
101-
Однако в исходном проекте OpenLDAP в настоящее время эта установка
102-
по-прежнему не обслуживается.
108+
В оригинальном OpenLDAP эта опция по-прежнему не обслуживается.
103109
.LP
104110
\fIПримечание 3:\fP
105111
В ReOpenLDAP интерпретация значения \fI<min>\fP зависит от режима задаваемого
@@ -110,20 +116,23 @@ slapd\-mdb \- механизм манипуляции данными для slap
110116
.RE
111117
.TP
112118
.B dbnosync
113-
Указывает, что содержимое базы данных на диске не должно немедленно синхронизироваться
114-
при изменении содержимого базы данных в памяти. Включение этой опции может повысить
115-
производительность за счёт увеличения риска потери данных. В частности, если до синхронизации
116-
изменений произойдёт крах операционной системы, некоторое количество транзакций может быть потеряно.
117-
По умолчанию при фиксации каждой транзакции выполняется полная синхронизация данных.
119+
Указывает, что содержимое базы данных на диске не должно
120+
немедленно синхронизироваться при изменении содержимого базы
121+
данных в памяти. Включение этой опции может повысить
122+
производительность за счёт увеличения риска потери данных. В
123+
частности, если до синхронизации изменений произойдёт крах
124+
операционной системы, существенное количество транзакций
125+
(изменений) может быть потеряно. По умолчанию при фиксации
126+
каждой транзакции выполняется полная синхронизация данных.
118127
.TP
119128
.BI directory \ <directory>
120-
Указывает директорию, где находятся LMDB-файлы, содержащие эту базу данных
129+
Указывает директорию, где находятся MDBX-файлы, содержащие эту базу данных
121130
и ассоциированные с ней индексы. Для каждой базы данных должна быть определена
122131
отдельная директория. По умолчанию -
123132
.BR @LOCALSTATEDIR@/reopenldap\-data .
124133
.TP
125134
.BI dreamcatcher \ <lag>\ <percentage>
126-
Управляет механизмом перезапуска долгих операций чтения, которые в LMDB
135+
Управляет механизмом перезапуска долгих операций чтения, которые в \fBlibmdbx\fP
127136
останавливают освобождение и повторное использование страниц, использованных
128137
в старых версиях-снимках базы данных (результатов прошлых транзакций записи),
129138
что при интенсивном потоке изменений приводит к полному заполнению базы и отказу.
@@ -178,8 +187,8 @@ slapd\-mdb \- механизм манипуляции данными для slap
178187
.RE
179188
.TP
180189
.TP
181-
.BI envflags \ [nosync]\ [nometasync]\ [writemap]\ [mapasync]\ [nordahead]\ [lifo]\ [coalesce]
182-
Указывает флаги для более детального контроля работы библиотеки LMDB.
190+
.BI envflags \ [nosync]\ [lazysync]\ [nometasync]\ [writemap]\ [mapasync]\ [nordahead]\ [lifo]\ [coalesce]
191+
Указывает флаги для более детального контроля работы опорного движка \fBlibmdbx\fP.
183192
\fIПримечание:\fP в slapd.conf перечисленные флаги для \fBenvflags\fR необходимо
184193
задавать без скобок и запятых, разделяя пробелами или символами табуляции.
185194
.RS
@@ -190,10 +199,15 @@ slapd\-mdb \- механизм манипуляции данными для slap
190199
.RE
191200
.RS
192201
.TP
202+
.B lazysync
203+
Опция будет документирована позже.
204+
.RE
205+
.RS
206+
.TP
193207
.B nometasync
194208
При фиксации транзакции данные синхронизируются, а синхронизация метастраницы пропускается.
195209
Этот метод несколько быстрее, чем выполнение полной синхронизации, но существует вероятность потери
196-
последних зафиксированных транзакций при крахе операционной системы. Если выставлены оба флага
210+
последней транзакций при крахе операционной системы. Если выставлены оба флага
197211
.I nometasync
198212
и
199213
.IR nosync ,
@@ -223,30 +237,27 @@ slapd\-mdb \- механизм манипуляции данными для slap
223237
Отключает упреждающее чтение файла. Обычно операционная система выполняет упреждающее чтение при каждом запросе на чтение.
224238
Как правило, это повышает производительность операций чтения, но может ухудшить производительность при чтении
225239
с произвольным доступом, если системная память заполнена и размер базы данных больше чем объём RAM.
226-
Эта опция не реализована на Windows.
227240
.RE
228241
.RS
229242
.TP
230243
.B lifo
231-
Включает LIFO (обратный) порядок переработки внутри \fBmdb\fP записей FreeDB,
232-
в которых указываются страницы освобождающиеся при переработке старых версий
233-
базы данных (результатов прошлых транзакций записи).
244+
Включает LIFO (обратный) порядок переработки внутри сборщикам мусора \fBlibmdbx\fP.
234245
Вследствие чего, с большой вероятностью, от транзакции к транзакции используется
235246
повторяющийся набор страниц. Это, в свою очередь, позволяет подсистеме хранения
236247
эффективно использовать внутренние механизмы кеширования и обратной записи,
237248
объединяя такие повторные операции. В результате может существенно увеличиться
238249
общая производительность одновременно со снижением реальной нагрузки
239250
на подсистему хранения (диски).
240-
Режим \fIlifo\fP доступен только в ReOpenLDAP и отсутствует в исходном OpenLDAP.
251+
Режим \fIlifo\fP доступен только в ReOpenLDAP.
241252
.RE
242253
.RS
243254
.TP
244255
.B coalesce
245-
Включает коагуляцию записей FreeDB внутри \fBmdb\fP (объединение списков
256+
Включает коагуляцию записей сборщика мусора внутри \fBlibmdbx\fP (объединение списков
246257
свободных страниц), что уменьшает объем внутренних индексов и количество
247258
обновляемых страниц при любых изменениях. В результате в большинстве
248259
сценариев несколько уменьшается нагрузка на подсистему хранения.
249-
Режим \fIcoalesce\fP доступен только в ReOpenLDAP и отсутствует в исходном OpenLDAP.
260+
Режим \fIcoalesce\fP доступен только в ReOpenLDAP.
250261
.RE
251262
.TP
252263
\fBindex \fR{\fI<attrlist>\fR|\fBdefault\fR} [\fBpres\fR,\fBeq\fR,\fBapprox\fR,\fBsub\fR,\fI<special>\fR]
@@ -281,7 +292,7 @@ slapd\-mdb \- механизм манипуляции данными для slap
281292
.BI maxreaders \ <integer>
282293
Указывает максимальное количество потоков, которые могут параллельно получать доступ на чтение к базе данных.
283294
Работа таких инструментов, как slapcat, считается за один поток в дополнение к потокам
284-
в любых активных процессах slapd. Значение по умолчанию - 126.
295+
в любых активных процессах slapd. Значение по умолчанию - 61.
285296
.TP
286297
.BI maxsize \ <bytes>
287298
Указывает максимальный размер базы данных в байтах. При запуске под отображение базы данных в памяти
@@ -329,6 +340,7 @@ slapd\-mdb \- механизм манипуляции данными для slap
329340
.B slapd
330341
по умолчанию.
331342
.SH СМОТРИТЕ ТАКЖЕ
343+
.BR libmdbx (https://github.com/leo-yuriev/libmdbx/README-RU.md),
332344
.BR slapd.conf (5),
333345
.BR slapd\-config (5),
334346
.BR slapd (8),

servers/slapd/back-mdb/config.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ mdb_cf_gen( ConfigArgs *c )
369369

370370
case MDB_ENVFLAGS:
371371
if ( mdb->mi_dbenv_flags == MDBX_UTTERLY_NOSYNC )
372-
rc = 1;
372+
rc = 1; /* report "no flags", but return "ok" for MDB_DBNOSYNC/dbnosync */
373373
else {
374374
if ( mdb->mi_dbenv_flags )
375375
mask_to_verbs( mdb_envflags, mdb->mi_dbenv_flags, &c->rvalue_vals );

0 commit comments

Comments
 (0)