limite di quantità di file in una directory su un server di file Linux e perché?

-2

Quale è un buon limite da utilizzare per la quantità di file in una directory e perché?

EDIT: Perché non dovrebbe qualcuno creare un sistema che mette centinaia di migliaia di file nella stessa directory?

Perché chiedo:

Qualcuno ha installato un sistema che scarica i file in una cartella con una data-ora leggibile dall'uomo.

Il mio compito è creare un sistema che recuperi i file per un periodo di tempo selezionato.

Normalmente questo non sarebbe un problema, ma la cartella contiene 500.000 file e sta crescendo e il mio sistema dovrebbe scaricarli in tempo reale.

L'analisi di 500.000 file richiede troppo tempo, quindi penso che sia la responsabilità della persona che ha creato il sistema che immette i file sul server FTP per creare una struttura di directory come avere una sottocartella per ogni giorno.

    
posta Quinma 21.10.2014 - 18:51
fonte

2 risposte

1

Dipende dal sistema attuale (sistema operativo, hardware del computer, file system). Alcuni file system [vecchio Linux] si sono comportati male (tempo di accesso lineare dal numero di voci della directory). Quindi è generalmente preferibile avere directory di piccole dimensioni di poche migliaia di voci al massimo (e questo rende anche la shell più felice: potresti voler ls della directory). Di solito è inefficiente avere milioni di file molto piccoli (ad esempio cento byte ciascuno), perché spesso ogni file utilizza almeno un blocco del file system.

Quindi suggerirei di avere file come dir001/file001.txt .... dir123/file345.txt ....

Considera anche l'uso di un altro modo di memorizzare i dati: alcuni file di dati indicizzati come GDBM , un Sqlite o PostGresql o MongoDb database, ecc. Potresti anche mescolare l'approccio: usa Sqlite per alcuni meta-dati sui tuoi file e conservali in molte directory. Potresti anche avere un approccio segregativo: gestisci contenuti piccoli e diversi in modo più piccolo (metti i piccoli contenuti in Sqlite o GDBM e i grandi contenuti nei file).

    
risposta data 21.10.2014 - 19:11
fonte
1

Risposta Stock: "Dipende".

Cercare di fare qualsiasi cosa di qualsiasi dimensione o complessità usando il file system come "database" sarà complicato e provare a farlo "in tempo reale" sarà davvero difficile.
Il problema è che tendi ad avere lotti di file, il che significa che devi operare su un file "a" molte, molte volte. Fare "qualcosa" una volta richiede una quantità di tempo; facendo quel "qualcosa" molte volte richiede molte volte più a lungo; non scala bene.

Detto questo, puoi compensare questo sovraccarico organizzando i tuoi dati in modo sensato. Dici che lavori con intervalli di date, quindi disponi i tuoi file in una struttura di directory che supporti questo, una scelta ovvia potrebbe essere questa:

root/
  2014/
    01/ 
      01/
        2014-01-01-00-00-00.dat 
        2014-01-01-00-00-01.dat 
      02/
        2014-01-02-00-00-00.dat 
        2014-01-02-00-00-01.dat 

Ora, il recupero di un valore di giorni di file è relativamente semplice (e, quindi, veloce).

Ovviamente, a seconda di cosa stai facendo, caricare l'intera cosa in un database potrebbe essere una soluzione migliore ... YMMV

    
risposta data 22.10.2014 - 13:34
fonte

Leggi altre domande sui tag