[RESOLU] Taille bdd ldb > 4G

Venez ici partager vos astuces et aides autour de Samba4
gtirmont
Messages : 5
Inscription : 21 sept. 2018 - 16:54

05 déc. 2018 - 17:24

Bonjour,

La taille du fichier /var/lib/samba/private/sam.ldb.d/DC%3DADS,DC%3DUNIV-LILLE,DC%3DFR.ldb pour notre domaine ads.univ-lille.fr vient déjà de dépasser la limite des 4G :?

Code : Tout sélectionner

-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
Nous avons 85000 users mais nous pouvons restreindre en ne laissant que les users vraiment actifs sur ce domaine.
Seulement lorsque je veux supprimer un user j'ai cette erreur :

Code : Tout sélectionner

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)
On ne peux plus ajouter d’objets (user, computer...)

Avez-vous une solution pour diminuer la taille de la base ? Quitte à supprimer des objets (users par exemple)

Merci beaucoup pour votre aide
Avatar de l’utilisateur
dcardon
Expert WAPT
Messages : 1364
Inscription : 18 juin 2014 - 09:58
Localisation : Saint Sébastien sur Loire
Contact :

06 déc. 2018 - 12:30

Bonjour gtirmont,
gtirmont a écrit : 05 déc. 2018 - 17:24 Bonjour,

La taille du fichier /var/lib/samba/private/sam.ldb.d/DC%3DADS,DC%3DUNIV-LILLE,DC%3DFR.ldb pour notre domaine ads.univ-lille.fr vient déjà de dépasser la limite des 4G :?

Code : Tout sélectionner

-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
Nous avons 85000 users mais nous pouvons restreindre en ne laissant que les users vraiment actifs sur ce domaine.
Seulement lorsque je veux supprimer un user j'ai cette erreur :

Code : Tout sélectionner

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)
On ne peux plus ajouter d’objets (user, computer...)

Avez-vous une solution pour diminuer la taille de la base ? Quitte à supprimer des objets (users par exemple)

Merci beaucoup pour votre aide
On a fait financer le développement du backend LMDB pour Samba 4.9 qui supprime cette limite à 4GiB que nous connaissons bien.

Il vous faudrait donc basculer en Samba 4.9 LMDB. Mais pour cela il vous faudra d'abord intégrer un nouveau contrôleur de domaine 4.9 LMDB, ce qui n'est pas possible vu que vous ne pouvez plus créer d'objets...

Pour info, lors de la suppression d'un utilisateurs, ça ne supprime pas l'entrée, mais ça la déplace dans CN=Deleted Objects, donc ça ne libère pas d'espace tant que l'expiration tombstone a été dépassée et que l'AD a flushé l'objet. De plus quand l'objet est flushé, il faut aussi que TDB récupère sont espace libéré.

Enfin, un truc que vous pouvez essayer est de faire un tdbbackup et de repartir sur cette base là (ça récupère l'espace libéré, un peu comme un VACCUM sur PostgreSQL). Mais si la base est pleine, ça risque de ne pas passer. Vous pouvez tenter un ldbdel mais je pense que c'est encore un peu trop haut niveau. Il faudrait voir les enregistrements TDB correspondant à la couche d'abstraction LDB pour des objets que vous pouvez supprimer.

Vu la taille de votre université, je vous encourage à appeler l'équipe commerciale pour un accompagnement! Sur le très court terme, le nettoyage TDB est probablement la meilleure option, mais il faudrait assez rapidement passer en 4.9 LMDB. On a fait des tests assez intensif sur la 4.9 LDMB et ça fournie bien les résultats attendus. Par contre, étant assez conservateur pour un truc aussi critique que l'AD, on est encore en 4.8 sur la très grande majorité de nos clients.

Cordialement,

Denis
Denis Cardon - Tranquil IT
Communiquez autour de vous sur WAPT! Envoyez nous vos url de blog et d'articles dans la catégorie votre avis du forum, nous les mettrons en avant sur le site WAPT
gtirmont
Messages : 5
Inscription : 21 sept. 2018 - 16:54

06 déc. 2018 - 14:38

Merci beaucoup pour votre réponse !

Je venais justement de valider tdbbackup sur notre infra de Dev (1 seul DC) et ça a bien fonctionné.
Je m’apprêtais à faire la même chose sur notre infra de Test (2 DC), y a-t-il une procédure particulière pour ne pas casser la réplication ?

Bien cordialement,

Gaétan
gtirmont
Messages : 5
Inscription : 21 sept. 2018 - 16:54

19 déc. 2018 - 15:40

Bonjour,

J'ai effectué le tdbbackup de la bdd et elle est passée de 4,1G à 1,5G. J'ai "demoté" avant le 2è DC pour éviter des problèmes de réplication.
J'ai ensuite réinstallé le 2è DC et je l'ai joint avec l'option --domain-critical-only pour ne répliquer que le minumum au départ et le reste des objets par la suite. Sans cette option la réplication s'effectue de suite et avec une bdd de 1,5G ça prend du temps et on tombe dans un timeout LDAP https://git.samba.org/?p=samba.git;a=co ... 079a292079

Aujourd'hui, on peut à nouveau créer des objets et la réplication est effective.
Vous passez ce fil en résolu ;)

Bien cordialement,
Gaétan
Verrouillé