Página 1 de 1

[RESUELTO] Tamaño de la base de datos LDB > 4 GB

Publicado: 5 de diciembre de 2018 - 17:24
por gtirmont
Buen día,

El tamaño del archivo /var/lib/samba/private/sam.ldb.d/DC%3DADS,DC%3DUNIV-LILLE,DC%3DFR.ldb Nuestro dominio ads.univ-lille.fr ya ha superado el límite 4G :?

Código: Seleccionar todo

-rw------- 1 root root 4294967295 déc.   5 17:14 /var/lib/samba/private/sam.ldb.d/DC%3DADS,DC%3DUNIV-LILLE,DC%3DFR.ldb
Tenemos 85.000 usuarios, pero podemos restringir el acceso permitiendo únicamente usuarios verdaderamente activos en este dominio.
Solo recibo este error cuando intento eliminar un usuario:

Código: Seleccionar todo

ltdb: tdb(/var/lib/samba/private/sam.ldb.d/DC%3DADS,DC%3DUNIV-LILLE,DC%3DFR.ldb): tdb_expand overflow detected current map_size[4294967295] size[9108]!

../source4/dsdb/samdb/ldb_modules/repl_meta_data.c:4447: Failed to rename object from 'CN=test01,OU=IPTA,OU=Autres,OU=ULilleRessources,DC=ads,DC=univ-lille,DC=fr' to 'CN=test01\0ADEL:9ff44ef0-221e-4287-b591-dc330eb76d80,CN=Deleted Objects,DC=ads,DC=univ-lille,DC=fr' - ldb_wait from ../source4/dsdb/samdb/ldb_modules/util.c:499 with LDB_WAIT_ALL: Operations error (1)
ERROR(ldb): Failed to remove user "test01" - ldb_wait from ../source4/dsdb/samdb/ldb_modules/util.c:499 with LDB_WAIT_ALL: Operations error (1)
  File "/usr/lib/python2.7/dist-packages/samba/netcmd/user.py", line 455, in run
    samdb.delete(user_dn)
Ya no podemos agregar objetos (usuario, ordenador...)

¿Tienen alguna solución para reducir el tamaño de la base de datos? ¿Aunque eso implique eliminar objetos (por ejemplo, usuarios)?

Muchas gracias por tu ayuda

Re: Tamaño de la base de datos LDB > 4 GB

Publicado: 6 de diciembre de 2018 - 12:30 p. m.
por dcardon
Hola gtirmont,
gtirmont escribió: 5 de diciembre de 2018 - 17:24 Buen día,

El tamaño del archivo /var/lib/samba/private/sam.ldb.d/DC%3DADS,DC%3DUNIV-LILLE,DC%3DFR.ldb Nuestro dominio ads.univ-lille.fr ya ha superado el límite 4G :?

Código: Seleccionar todo

-rw------- 1 root root 4294967295 déc.   5 17:14 /var/lib/samba/private/sam.ldb.d/DC%3DADS,DC%3DUNIV-LILLE,DC%3DFR.ldb
Tenemos 85.000 usuarios, pero podemos restringir el acceso permitiendo únicamente usuarios verdaderamente activos en este dominio.
Solo recibo este error cuando intento eliminar un usuario:

Código: Seleccionar todo

ltdb: tdb(/var/lib/samba/private/sam.ldb.d/DC%3DADS,DC%3DUNIV-LILLE,DC%3DFR.ldb): tdb_expand overflow detected current map_size[4294967295] size[9108]!

../source4/dsdb/samdb/ldb_modules/repl_meta_data.c:4447: Failed to rename object from 'CN=test01,OU=IPTA,OU=Autres,OU=ULilleRessources,DC=ads,DC=univ-lille,DC=fr' to 'CN=test01\0ADEL:9ff44ef0-221e-4287-b591-dc330eb76d80,CN=Deleted Objects,DC=ads,DC=univ-lille,DC=fr' - ldb_wait from ../source4/dsdb/samdb/ldb_modules/util.c:499 with LDB_WAIT_ALL: Operations error (1)
ERROR(ldb): Failed to remove user "test01" - ldb_wait from ../source4/dsdb/samdb/ldb_modules/util.c:499 with LDB_WAIT_ALL: Operations error (1)
  File "/usr/lib/python2.7/dist-packages/samba/netcmd/user.py", line 455, in run
    samdb.delete(user_dn)
Ya no podemos agregar objetos (usuario, ordenador...)

¿Tienen alguna solución para reducir el tamaño de la base de datos? ¿Aunque eso implique eliminar objetos (por ejemplo, usuarios)?

Muchas gracias por tu ayuda
Conseguimos financiación para el desarrollo del backend LMDB para Samba 4.9, que elimina el límite de 4 GiB con el que estamos familiarizados.

Por lo tanto, necesitaría migrar a Samba 4.9 LMDB. Para ello, primero necesitaría integrar un nuevo controlador de dominio LMDB 4.9, lo cual no es posible porque ya no se pueden crear objetos.

Para su información, eliminar un usuario no elimina la entrada, sino que la mueve a CN=Objetos Eliminados. Por lo tanto, no se libera espacio hasta que transcurra el plazo de desecho y Active Directory haya vaciado el objeto. Además, cuando se vacía el objeto, TDB también necesita recuperar el espacio liberado.

Finalmente, puedes intentar ejecutar un `tdbbackup` y restaurar desde esa base de datos (esto recupera el espacio liberado, similar a un `VACUUM` en PostgreSQL). Sin embargo, si la base de datos está llena, podría no funcionar. Podrías probar `ldbdel`, pero creo que aún es demasiado complejo. Necesitarías revisar los registros TDB correspondientes a la capa de abstracción LDB para encontrar objetos que puedas eliminar.

Dado el tamaño de su universidad, le recomiendo contactar al equipo de ventas para obtener ayuda. A corto plazo, la limpieza de TDB probablemente sea la mejor opción, pero debería actualizar a LMDB 4.9 con bastante rapidez. Hemos realizado pruebas exhaustivas con LDMB 4.9 y ofrece los resultados esperados. Sin embargo, siendo bastante conservadores con algo tan crítico como Active Directory, seguimos usando la versión 4.8 para la gran mayoría de nuestros clientes.

Atentamente,

Denis

Re: Tamaño de la base de datos LDB > 4 GB

Publicado: 6 de diciembre de 2018 - 14:38
por gtirmont
¡Muchísimas gracias por tu respuesta!

Acababa de validar tdbbackup en nuestra infraestructura de desarrollo (un único controlador de dominio) y funcionó a la perfección.
Estaba a punto de hacer lo mismo en nuestra infraestructura de pruebas (dos controladores de dominio). ¿Existe algún procedimiento específico para evitar que se interrumpa la replicación?

Saludos cordiales,

Gaétan

Re: Tamaño de la base de datos LDB > 4 GB

Publicado: 19 de diciembre de 2018 - 15:40
por gtirmont
Hola,

realicé una copia de seguridad de la base de datos (tdbbackup) y su tamaño se redujo de 4,1 GB a 1,5 GB. Degradé el segundo controlador de dominio previamente para evitar problemas de replicación.
Luego reinstalé el segundo controlador de dominio y lo uní con la opción `--domain-critical-only` para replicar inicialmente solo lo mínimo y el resto de los objetos posteriormente. Sin esta opción, la replicación se produce inmediatamente, y con una base de datos de 1,5 GB, tarda y provoca un tiempo de espera de LDAP (https://git.samba.org/?p=samba.git;a=co ... 079a292079).

Hoy podemos crear objetos de nuevo y la replicación funciona correctamente.
Por favor, marquen este hilo como resuelto. ;)

Saludos cordiales,
Gaétan