Wie viele Dateien kann ein Unix-Ordner maximal aufnehmen?
Ich denke, es wird die gleiche Anzahl von Dateien sein.
Wie viele Dateien kann ein Unix-Ordner maximal aufnehmen?
Ich denke, es wird die gleiche Anzahl von Dateien sein.
Antworten:
Variiert je nach Dateisystem, http://en.wikipedia.org/wiki/Comparison_of_file_systems
Auf allen aktuellen Unix-Dateisystemen kann ein Verzeichnis eine praktisch unbegrenzte Anzahl von Dateien enthalten. Während "unbegrenzt" durch Speicherplatz und Inodes begrenzt ist - was zuerst ausgeht.
Bei älteren Dateisystem-Designs ( ext2 , UFS , HFS + ) wird es langsam, wenn sich viele Dateien in einem Verzeichnis befinden. Normalerweise wird es bei 10.000 Dateien schmerzhaft. Mit neueren Dateisystemen ( ReiserFS , XFS , ZFS , UFS2 ) können Sie Millionen von Dateien in einem Verzeichnis haben, ohne allgemeine Leistungsengpässe zu bemerken.
Aber so viele Dateien in einem Verzeichnis zu haben, ist nicht gut getestet und es gibt viele Tools, die das nicht können. Beispielsweise können periodische Systemwartungsskripten darauf fehlen.
Ich benutzte glücklich ein Verzeichnis mit mehreren Millionen Dateien auf UFS2 und hatte keine Probleme gesehen, bis ich das Verzeichnis löschen wollte - das dauerte mehrere TAGE.
Es hängt davon ab, mit wie vielen Inodes das Dateisystem erstellt wurde. Ausführen
df -i
gibt Ihnen die Anzahl der freien Inodes. Dies ist die praktische Grenze dafür, wie viele Dateien ein Dateisystem und damit ein Verzeichnis enthalten kann.
Ich nehme an, Sie denken darüber nach, viele Dateien an einem Ort zu speichern, nicht wahr?
Die meisten modernen Unix-Dateisysteme können viele Dateien in einem Verzeichnis ablegen. Vorgänge wie das Folgen von Pfaden, Auflisten von Dateien usw. erfordern jedoch eine lineare Suche in der Dateiliste und werden langsam, wenn die Liste zu groß wird.
Ich erinnere mich an die Tatsache, dass ein paar Tausend für die meisten praktischen Zwecke zu viel sind. Die typische Lösung besteht darin, die Gruppierung aufzulösen. Das ist,
/some/path/to/dir/a/
/some/path/to/dir/b/
...
/some/path/to/dir/z/
und speichern Sie Ihre Dateien in dem entsprechenden Unterverzeichnis entsprechend einem Hash von ihnen basename
. Wählen Sie einen geeigneten Hash, der erste Buchstabe kann für einfache Fälle verwendet werden.
Cristian Ciupitu schreibt in den Kommentaren, dass XFS und möglicherweise andere sehr neue Dateisysteme log(N)
durchsuchbare Strukturen zum Speichern von Verzeichnisinhalten verwenden, sodass diese Einschränkung erheblich verbessert wird .
ext3
Eines der gängigsten Linux-Dateisystemformate wird sehr langsam, wenn sich in einem Verzeichnis mehr als 20.000 Dateien befinden. Unabhängig davon, wie viele Dateien gespeichert werden können, sollten Sie möglichst vermeiden, dass sich so viele Dateien in einem Verzeichnis befinden.
Nach dem Kommentar, den Sie abgegeben haben, ist es mir egal, wie viele Dateien / Ordner Ihr FS hosten kann.
Sie sollten wahrscheinlich erwägen, ModRewrite zu verwenden und site.com/username in site.com/?user= oder etwas Ähnliches umzuschreiben und alle Ihre Daten in einer Datenbank zu speichern. Das Erstellen eines Ordners pro Benutzer ist in der Regel nicht erforderlich (und keine gute Idee).
Das heißt, jedes Dateisystem hat Grenzen und df
kann Ihnen sagen, wie viele Inodes auf jeder Partition Ihres Systems verfügbar sind.