Contactez nous

Taille bdd ldb > 4G

Venez ici partager vos astuces et aides autour de Samba4
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
Bonjour gtirmont,
gtirmont a écrit :
05 décembre 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
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