Using the lmdb database backend: Difference between revisions
Line 20: | Line 20: | ||
=== Identifying an LMDB file === |
=== Identifying an LMDB file === |
||
All Samba LMDB data files have an associated lock file with the extension <code>.ldb-lock</code> and the data file has a </code>.ldb</code> extension. |
All Samba LMDB data files have an associated lock file with the extension <code>.ldb-lock</code> and the data file has a </code>.ldb</code> extension. |
||
# ls -l |
|||
-rw-r--r-- 1 samba samba 8245248 Apr 1 13:51 'CN=CONFIGURATION,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb' |
|||
-rw-r--r-- 1 samba samba 6400128 Apr 1 16:09 'CN=CONFIGURATION,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb-lock' |
|||
-rw-r--r-- 1 samba samba 8192 Apr 1 14:04 'CN=CONFIGURATION,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb-lock-lock |
|||
-rw-r--r-- 1 samba samba 10514432 Apr 1 13:50 'CN=SCHEMA,CN=CONFIGURATION,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb' |
|||
-rw-r--r-- 1 samba samba 6400128 Apr 1 16:09 'CN=SCHEMA,CN=CONFIGURATION,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb-lock' |
|||
-rw-r--r-- 1 samba samba 1761280 Apr 1 13:51 'DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb' |
|||
-rw-r--r-- 1 samba samba 6400128 Apr 1 16:09 'DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb-lock' |
|||
-rw-r--r-- 1 samba samba 290816 Apr 1 13:50 'DC=DOMAINDNSZONES,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb' |
|||
-rw-r--r-- 1 samba samba 6400128 Apr 1 16:09 'DC=DOMAINDNSZONES,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb-lock' |
|||
-rw-r--r-- 1 samba samba 180224 Apr 1 13:50 'DC=FORESTDNSZONES,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb' |
|||
-rw-r--r-- 1 samba samba 6400128 Apr 1 16:09 'DC=FORESTDNSZONES,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb-lock' |
|||
-rw-rw---- 1 samba samba 421888 Apr 1 13:51 metadata.tdb |
|||
=== Calculating space used === |
=== Calculating space used === |
Revision as of 03:14, 1 April 2020
LMDB back end
Samba can use an LMDB back end instead of the default TDB back end. The LMDB back end permits database sizes greater than 4Gb.
Enabling LMDB
The LMDB backend can be enabled when provisioning or joining a domain using the --backend-store=mdb
option. The maximum size of the database files defaults to 8Gb, this can be changed with the --backend-store-size
![]() | This is a hard limit and Samba will fail if this limit is exceeded. There is currently no way to resize a Samba LMBD database. |
Notes
High virtual memory allocation
LMDB uses memory mapped files so if using the default database size of 8Gb the virtual memory reported by htop for Samba processes is typically 40Gb or 80Gb. This is normal and is not normally a concern, see the following article on lmdb memory utilisation and file sizes.
Database file sizes
Identifying an LMDB file
All Samba LMDB data files have an associated lock file with the extension .ldb-lock
and the data file has a .ldb extension.
- ls -l
-rw-r--r-- 1 samba samba 8245248 Apr 1 13:51 'CN=CONFIGURATION,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb' -rw-r--r-- 1 samba samba 6400128 Apr 1 16:09 'CN=CONFIGURATION,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb-lock' -rw-r--r-- 1 samba samba 8192 Apr 1 14:04 'CN=CONFIGURATION,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb-lock-lock -rw-r--r-- 1 samba samba 10514432 Apr 1 13:50 'CN=SCHEMA,CN=CONFIGURATION,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb' -rw-r--r-- 1 samba samba 6400128 Apr 1 16:09 'CN=SCHEMA,CN=CONFIGURATION,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb-lock' -rw-r--r-- 1 samba samba 1761280 Apr 1 13:51 'DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb' -rw-r--r-- 1 samba samba 6400128 Apr 1 16:09 'DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb-lock' -rw-r--r-- 1 samba samba 290816 Apr 1 13:50 'DC=DOMAINDNSZONES,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb' -rw-r--r-- 1 samba samba 6400128 Apr 1 16:09 'DC=DOMAINDNSZONES,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb-lock' -rw-r--r-- 1 samba samba 180224 Apr 1 13:50 'DC=FORESTDNSZONES,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb' -rw-r--r-- 1 samba samba 6400128 Apr 1 16:09 'DC=FORESTDNSZONES,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb-lock' -rw-rw---- 1 samba samba 421888 Apr 1 13:51 metadata.tdb
Calculating space used
As discussed in the article lmdb memory utilisation and file sizes, the size of the database on disk does not reflect the actual space used. To calculate space uses, use the mdb_stat
tool:
# mdb_stat -ne 'CN=CONFIGURATION,DC=ADDOM,DC=SAMBA,DC=EXAMPLE,DC=COM.ldb' Environment Info Map address: (nil) Map size: 8589934592 Page size: 4096 Max pages: 2097152 Number of pages used: 2013 Last transaction ID: 4 Max readers: 100000 Number of readers used: 3 Status of Main DB Tree depth: 3 Branch pages: 26 Leaf pages: 1267 Overflow pages: 661 Entries: 7315
The space used is Page size * (Branch pages + Leaf pages + Overflow pages + 2)
, where 2 is the number of meta/control pages at the start of the file.