2010-04-12 9 views
8

È necessario memorizzare circa 600.000 immagini su un server Web che utilizza NTFS. È meglio memorizzare immagini in blocchi di 20.000 immagini in sottocartelle? (Windows Server 2008)Implicazioni sulle prestazioni di memorizzazione di oltre 600.000 immagini nella stessa cartella (NTFS)

Sono preoccupato per incorrere l'overhead del sistema operativo durante il recupero di immagini

+0

20.000 file è ancora molto. meglio diviso nell'ordine di 1000 file/dir – Javier

+0

Suppongo che sarei tentato di chiedere se 600 directory all'interno di una directory diventino un problema. Immagino che i sistemi operativi siano ottimizzati per meno di 100. Comunque non credo che 600 sarebbe un problema. –

+0

Un tempo il fatto che mettere tanti file in una directory in NTFS avrebbe danneggiato la stessa FS, causando la crescita di qualche tabella da qualche parte che non si sarebbe mai ridotta. È stato risolto? (Mi dispiace per essere vaga qui, ho dimenticato i dettagli.) –

risposta

6

Vai per questo. Finché hai un indice esterno e hai un percorso file diretto per ogni file senza elencare il contenuto della directory allora sei ok.

Ho una cartella con oltre 500 GB di dimensione con oltre 4 milioni di cartelle (che hanno più cartelle e file). Ho da qualche parte nell'ordine di 10 milioni di file in totale.

Se accidentalmente si apre questa cartella in Windows Explorer, rimane bloccato al 100% di utilizzo della CPU (per un core) finché non si interrompe il processo. Ma se si fa riferimento direttamente al file/alla cartella, le prestazioni sono elevate (ovvero posso accedere a qualsiasi di questi 10 milioni di file senza overhead)

1

cartelle NTFS memorizzare un file indice con collegamenti a tutti i suoi contenuti. Con una grande quantità di immagini, quel file aumenterà molto e avrà un impatto negativo sulla tua performance. Quindi, sì, solo su questo argomento si sta meglio per archiviare blocchi in sottocartelle. I frammenti all'interno degli indici sono un dolore.

+0

Anche se potresti avere ragione, questo è basato su tutto tranne che sull'assunzione? Abbiamo cartelle con file da 450 k, non ci sono problemi finora - anche se immagino che sfogliarli, anche in un file manager non sarebbe veloce. – leeeroy

+0

In realtà, non è un'ipotesi (esperienza con varie implementazioni di NTFS e soprattutto dei suoi limiti). È un errore di progettazione. La mia risposta è stata chiarire se avrebbe influito sulle prestazioni (sì), non se avrebbe dato "problemi" come il fallimento. Il file indice non è un file intelligente. Se cresce si ottiene più manutenzione di ottenere indietro i frammenti. E cito me stesso: i frammenti all'interno degli indici sono un dolore. – Shyam

3

A seconda che NTFS abbia indici di directory, dovrebbe essere corretto dall'applicazione Livello.

Voglio dire, che aprire i file per nome, eliminare, rinominare ecc., A livello di programmazione dovrebbe funzionare bene.

Ma il problema sono sempre gli strumenti. Strumenti di terze parti (come MS Explorer, il tuo strumento di backup, ecc.) Rischiano di essere o almeno di essere estremamente inutilizzabili con un gran numero di file per directory.

Tutto ciò che fa una scansione di directory, è probabile che sia piuttosto lento, ma peggio, alcuni di questi strumenti hanno algoritmi scarsi che non scalano fino a numeri (10k +) anche modesti di file per directory.