Wie funktioniert Windows mit NTFS mit großen Mengen an Dateien und Verzeichnissen?
Gibt es Hinweise zu den Grenzen von Dateien oder Verzeichnissen, die Sie in einem einzelnen Verzeichnis ablegen können, bevor Sie auf Leistungsprobleme oder andere Probleme stoßen?
Ist es beispielsweise in Ordnung, einen Ordner mit 100.000 Ordnern darin zu haben?
windows
performance
filesystems
ntfs
James Newton-King
quelle
quelle
Antworten:
Hier einige Ratschläge von jemandem in einer Umgebung, in der wir Ordner mit zig Millionen Dateien haben.
Um Ihre Frage direkter zu beantworten: Wenn Sie sich 100.000 Einträge ansehen, machen Sie sich keine Sorgen. Geh und schlag dich aus. Wenn Sie sich zig Millionen Einträge ansehen, dann entweder:
a) Planen Sie, sie in Unterordner zu unterteilen (z. B. 100 Millionen Dateien. Es ist besser, sie in 1000 Ordnern zu speichern, sodass Sie nur 100.000 Dateien pro Ordner haben, als sie in einem großen Ordner zu speichern erstellt 1000 Ordnerindizes anstelle eines einzelnen großen, der mit größerer Wahrscheinlichkeit die maximale Anzahl von Fragmenten oder erreicht
b) Planen Sie, contig.exe regelmäßig auszuführen, um den Index Ihres großen Ordners defragmentiert zu halten.
Lesen Sie weiter unten nur, wenn Sie sich langweilen.
Die tatsächliche Grenze liegt nicht bei der Anzahl der Fragmente, sondern bei der Anzahl der Datensätze des Datensegments, in dem die Zeiger auf das Fragment gespeichert sind.
Sie haben also ein Datensegment, in dem Zeiger auf die Fragmente der Verzeichnisdaten gespeichert sind. In den Verzeichnisdaten werden Informationen zu den Unterverzeichnissen und Unterdateien gespeichert, die das Verzeichnis angeblich gespeichert hat. Tatsächlich "speichert" ein Verzeichnis nichts. Es ist nur eine Tracking- und Präsentationsfunktion, die dem Benutzer die Illusion einer Hierarchie präsentiert, da das Speichermedium selbst linear ist.
quelle
contig.exe
, es befindet sich nicht auf meinem Server. Eine Google-Suche hat diese Technet-Seite zurückgegeben, auf der keine Unterverzeichnisse oder Defragmentierungen des Ordnerindex erwähnt werden.contig.exe
auf ein Verzeichnis, ich denke , das wird den Job machen:contig -a .
gibt:C:\temp\viele-Dateien is in 411 fragments Summary: Number of files processed : 1 Average fragmentation : 411 frags/file
c:\my\big\directory
, oderc:\my\big\directory\*
oder oder$mft
? (oder etwas anderes?)Es gibt auch Leistungsprobleme bei der Erstellung kurzer Dateinamen, die die Arbeit verlangsamen. Microsoft empfiehlt, die Erstellung kurzer Dateinamen zu deaktivieren, wenn sich mehr als 300.000 Dateien in einem Ordner befinden [1]. Je weniger eindeutig die ersten 6 Zeichen sind, desto problematischer ist dies.
[1] Wie NTFS Werke von http://technet.microsoft.com , wenn nach „300000“
quelle
If you use large numbers of files in an NTFS folder (300,000 or more), disable short-file name generation for better performance, and especially if the first six characters of the long file names are similar.
- erspart die Suche nach "300.000" Hinweis. Übrigens: Die Eingabe von "300" ist ausreichend (= hier ist keine Zwischenablage erforderlich)Ich erstelle eine Dateistruktur, um bis zu 2 Milliarden (2 ^ 32) Dateien zu hosten, und habe die folgenden Tests durchgeführt, die einen starken Rückgang der Navigate + Read-Leistung bei etwa 250 Dateien oder 120 Verzeichnissen pro NTFS-Verzeichnis auf einem Solid State Drive ( SSD):
Interessanterweise stört die Anzahl der Verzeichnisse und Dateien NICHT wesentlich.
Die Lektionen sind also:
Dies sind die Daten (2 Messungen für jede Datei und jedes Verzeichnis):
Und das ist der Testcode:
quelle
100.000 sollten in Ordnung sein.
Ich habe (anekdotisch) Leute gesehen, die Probleme mit vielen Millionen Dateien hatten, und ich hatte selbst Probleme mit dem Explorer, nur ohne eine Ahnung zu haben, wie man über 60.000 Dateien zählt, aber NTFS sollte gut für die Volumes sein, von denen Sie sprechen.
Falls Sie sich fragen, beträgt die technische (und ich hoffe theoretische ) maximale Anzahl von Dateien: 4.294.967.295
quelle
Für den lokalen Zugriff scheint eine große Anzahl von Verzeichnissen / Dateien kein Problem zu sein. Wenn Sie jedoch über ein Netzwerk darauf zugreifen, tritt nach einigen hundert ein merklicher Leistungseinbruch auf (insbesondere beim Zugriff von Vista-Computern (XP auf Windows Server mit NTFS schien in dieser Hinsicht viel schneller zu laufen)).
quelle
Wenn Sie einen Ordner mit N Einträgen erstellen, erstellen Sie eine Liste mit N Elementen auf Dateisystemebene. Diese Liste ist eine systemweite gemeinsame Datenstruktur. Wenn Sie dann anfangen, diese Liste kontinuierlich zu ändern, indem Sie Einträge hinzufügen / entfernen, erwarte ich zumindest einige Sperrenkonflikte über gemeinsam genutzte Daten. Diese Behauptung kann - theoretisch - die Leistung negativ beeinflussen.
Für schreibgeschützte Szenarien kann ich mir keinen Grund für eine Leistungsverschlechterung von Verzeichnissen mit einer großen Anzahl von Einträgen vorstellen.
quelle
Ich hatte echte Erfahrung mit ungefähr 100 000 Dateien (jeweils mehrere MB) auf NTFS in einem Verzeichnis, während ich eine Online-Bibliothek kopierte.
Das Öffnen des Verzeichnisses mit Explorer oder 7-zip dauert ca. 15 Minuten.
Das Schreiben einer Site-Kopie mit
winhttrack
bleibt nach einiger Zeit immer hängen. Es befasste sich auch mit Verzeichnissen, die etwa 1 000 000 Dateien enthielten. Ich denke, das Schlimmste ist, dass die MFT nur nacheinander durchlaufen werden kann.Das Öffnen unter ext2fsd auf ext3 ergab fast das gleiche Timing. Wahrscheinlich kann ein Wechsel zu reiserfs (nicht zu reiser4fs) helfen.
Der Versuch, diese Situation zu vermeiden, ist wahrscheinlich der beste.
Für Ihre eigenen Programme kann die Verwendung von Blobs ohne fs von Vorteil sein. So speichert Facebook Fotos.
quelle