[RISOLTO] Dimensione del database LDB > 4 GB

Vieni qui per condividere i tuoi suggerimenti e trucchi per usare Samba4
Bloccato
gtirmont
Messaggi: 5
Registrazione: 21 settembre 2018 - 16:54

5 dicembre 2018 - 17:24

Buongiorno,

La dimensione del file /var/lib/samba/private/sam.ldb.d/DC%3DADS,DC%3DUNIV-LILLE,DC%3DFR.ldb Il nostro dominio ads.univ-lille.fr ha già superato il limite 4G :?

Codice: Seleziona tutto

-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
Abbiamo 85.000 utenti, ma possiamo limitare l'accesso consentendo l'accesso a questo dominio solo agli utenti realmente attivi.
Ricevo questo errore solo quando provo a eliminare un utente:

Codice: Seleziona tutto

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)
Non possiamo più aggiungere oggetti (utente, computer...)

Esiste una soluzione per ridurre le dimensioni del database? Anche se ciò significa eliminare oggetti (ad esempio utenti)?

Grazie mille per il tuo aiuto
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

6 dicembre 2018 - 12:30

Ciao gtirmont,
gtirmont ha scritto: 5 dicembre 2018 - 17:24 Buongiorno,

La dimensione del file /var/lib/samba/private/sam.ldb.d/DC%3DADS,DC%3DUNIV-LILLE,DC%3DFR.ldb Il nostro dominio ads.univ-lille.fr ha già superato il limite 4G :?

Codice: Seleziona tutto

-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
Abbiamo 85.000 utenti, ma possiamo limitare l'accesso consentendo l'accesso a questo dominio solo agli utenti realmente attivi.
Ricevo questo errore solo quando provo a eliminare un utente:

Codice: Seleziona tutto

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)
Non possiamo più aggiungere oggetti (utente, computer...)

Esiste una soluzione per ridurre le dimensioni del database? Anche se ciò significa eliminare oggetti (ad esempio utenti)?

Grazie mille per il tuo aiuto
Abbiamo ottenuto i finanziamenti per lo sviluppo del backend LMDB per Samba 4.9, che elimina il limite di 4 GiB a cui siamo abituati.

Pertanto, sarebbe necessario passare a Samba 4.9 LMDB. Per farlo, però, sarebbe necessario prima integrare un nuovo controller di dominio LMDB 4.9, cosa impossibile poiché non è più possibile creare oggetti...

Per vostra informazione, l'eliminazione di un utente non elimina effettivamente la voce, ma la sposta in CN=Deleted Objects. Pertanto, non viene liberato spazio finché non è trascorsa la scadenza della rimozione definitiva e Active Directory non ha svuotato l'oggetto. Inoltre, quando l'oggetto viene svuotato, TDB deve anche recuperare lo spazio liberato.

Infine, un'altra cosa che puoi provare è eseguire un `tdbbackup` e ripristinare da quel database (questo recupera lo spazio liberato, un po' come `VACUUM` in PostgreSQL). Ma se il database è pieno, potrebbe non funzionare. Potresti provare `ldbdel`, ma penso che sia ancora un po' troppo di alto livello. Dovresti esaminare i record TDB corrispondenti al livello di astrazione LDB per gli oggetti che puoi eliminare.

Date le dimensioni della tua università, ti consiglio di contattare il team di vendita per ricevere supporto! Nel brevissimo termine, la pulizia di TDB è probabilmente l'opzione migliore, ma dovresti passare alla versione 4.9 di LMDB abbastanza rapidamente. Abbiamo effettuato test piuttosto approfonditi sulla versione 4.9 di LDMB e i risultati attesi sono stati soddisfacenti. Tuttavia, essendo piuttosto conservativi con un'applicazione critica come Active Directory, siamo ancora alla versione 4.8 per la stragrande maggioranza dei nostri clienti.

Sinceramente,

Denis
Denis Cardon - Tranquil IT
Condividi le tue esperienze su WAPT! Inviaci gli URL dei tuoi blog e articoli nella "La tua opinione del forum e li pubblicheremo sul di WAPT
gtirmont
Messaggi: 5
Registrazione: 21 settembre 2018 - 16:54

6 dicembre 2018 - 14:38

Grazie mille per la risposta!

Avevo appena testato tdbbackup sulla nostra infrastruttura di sviluppo (un singolo controller di dominio) e ha funzionato perfettamente.
Stavo per fare la stessa cosa sulla nostra infrastruttura di test (due controller di dominio). Esiste una procedura specifica per evitare di interrompere la replica?

Cordiali saluti,

Gaétan
gtirmont
Messaggi: 5
Registrazione: 21 settembre 2018 - 16:54

19 dicembre 2018 - 15:40

Ciao,

ho eseguito un backup del database (tdbbackup) e le dimensioni sono passate da 4,1 GB a 1,5 GB. Avevo precedentemente declassato il secondo controller di dominio per evitare problemi di replica.
Ho quindi reinstallato il secondo controller di dominio e l'ho aggiunto con l'opzione `--domain-critical-only` per replicare inizialmente solo il minimo indispensabile e successivamente il resto degli oggetti. Senza questa opzione, la replica avviene immediatamente e, con un database di 1,5 GB, richiede tempo e causa un timeout LDAP (https://git.samba.org/?p=samba.git;a=co ... 079a292079).

Oggi possiamo creare nuovamente oggetti e la replica funziona correttamente.
Vi prego di contrassegnare questa discussione come risolta. ;)

Cordiali saluti,
Gaétan
Bloccato