Schöne Grüße,
Ich schreibe einige Skripte, um Bilder von verschiedenen Foto-Websites zu verarbeiten. Im Moment speichere ich all diese Daten in einzelnen Textdateien im selben Verzeichnis.
Das Verzeichnis ist über das Internet zugänglich. Ein Endbenutzer ruft einen Webdienst auf, der den Pfad zu der Datei zurückgibt, die der Benutzer benötigt.
Ich habe mich gefragt, in welchem Stadium eine Beeinträchtigung der Leistung zu erwarten ist, wenn sich alle diese Dateien im selben Verzeichnis befinden. (Wenn überhaupt)
Antworten:
Die Leistung hängt vom verwendeten Dateisystem ab.
EXT3: Das physikalische Limit liegt bei 32.000 Dateien, aber die Leistung leidet auch nach mehreren tausend Dateien.
EXT4: theoretisch unbegrenzt
ReiserFS, XFS, JFS, BTRFS: Dies sind die guten für viele Dateien in einem Verzeichnis, da sie moderner und für die Verarbeitung vieler Dateien ausgelegt sind (die anderen wurden in der Zeit entwickelt, als Festplatten in MB und nicht in GB gemessen wurden). . Die Leistung ist für viele Dateien (zusammen mit ext4) viel besser, da beide einen binären Suchalgorithmus verwenden, um die gewünschte Datei zu erhalten (die anderen verwenden eine linearere).
quelle
Ich speichere Bilder für die Bereitstellung durch einen Webserver und habe über 300.000 Bilder in einem Verzeichnis auf EXT3. Ich sehe keine Leistungsprobleme. Bevor ich dies eingerichtet habe, habe ich Tests mit 500.000 Bildern in einem Verzeichnis und wahllosem Zugriff auf Dateien nach Namen durchgeführt. Bei 500.000 über 10.000 Bildern im Verzeichnis gab es keine signifikante Verlangsamung.
Der einzige Nachteil, den ich sehe, ist, dass ich, um die neuen mit einem zweiten Server zu synchronisieren,
rsync
das gesamte Verzeichnis durchsuchen muss und es nicht einfach anweisen kann, ein Unterverzeichnis mit den letzten Tausend oder so zu synchronisieren.quelle
Die Anzahl der Dateien in einem Ordner kann theoretisch unbegrenzt sein. Jedes Mal, wenn das Betriebssystem auf den bestimmten Ordner zugreift, um nach Dateien zu suchen, muss es jedoch alle Dateien im Ordner verarbeiten. Bei weniger als 500 Dateien stellen Sie möglicherweise keine Verzögerungen fest. Wenn sich jedoch Zehntausende von Dateien in einem Ordner befinden, kann ein einfacher Ordnerlistenbefehl (ls oder dir) viel zu lange dauern. Wenn auf diese Ordner über FTP zugegriffen werden kann, wird es wirklich zu langsam sein ...
Leistungsprobleme hängen nicht wirklich von Ihrem Betriebssystem ab, sondern von der Geschwindigkeit des Systemprozessors, den Festplattenkapazitäten und dem Arbeitsspeicher. Wenn Sie über so viele Dateien verfügen, möchten Sie diese möglicherweise in einem einzigen Archiv zusammenfassen und ein Archivierungssystem verwenden, das für die Speicherung vieler Daten optimiert ist. Dies könnte eine ZIP-Datei sein, aber besser noch, speichern Sie sie als Blobs in einer Datenbank mit dem Dateinamen als Primärschlüssel.
quelle
ls
Problem.Meine Faustregel ist, Ordner zu teilen, wenn mehr als 1000 Dateien vorhanden sind und der Ordner durchsucht wird (dh über das Internet oder den Explorer) oder 5000 Dateien, wenn dies nicht der Fall ist.
quelle
Wie @skaffman ausführt, hängen die Grenzwerte vom Betriebssystem ab. Es ist wahrscheinlich, dass Sie von Einschränkungen älterer Betriebssysteme betroffen sind. Ich erinnere mich, dass eine alte Version von Solaris auf 32768 Dateien pro Verzeichnis beschränkt war.
Die übliche Lösung besteht darin, eine Art Hashing zu verwenden, dh der Cyrus imap-Server teilt die Benutzer nach einem alphabetischen Hash auf:
quelle
Wenn Sie direkt auf eine Datei zugreifen, ist die Anzahl der Dateien in einem Verzeichnis kein Geschwindigkeitsproblem.
Die Anzahl der Dateien, die Sie in einem einzelnen Verzeichnis erstellen können, hängt vom verwendeten Dateisystem ab. Wenn Sie alle Dateien im Verzeichnis auflisten oder viele Dateien suchen, sortieren usw., werden diese Vorgänge verlangsamt.
gbjbaanb ist in seiner antwort über die maximale dateigröße von ext3 falsch. Im Allgemeinen begrenzt ext die Anzahl der Dateien auf Ihrer Disc im Allgemeinen. Sie können nicht mehr Dateien erstellen, als Sie Inodes in Ihrer Inode-Tabelle haben. Er schlägt zu Recht reiserfs für mehr Leistung mit vielen Dateien vor
quelle
Überprüfter Ordner mit 10K-Dateien in NTFS (Windows 7, 64 Bit). Ordner mit 10K-Bildern in jeder Ansicht (Liste, Symbol usw.) funktioniert und scrollt ohne Verzögerung.
quelle