Nehmen wir an, wir verwenden ext4 (mit aktiviertem dir_index) zum Hosten von etwa 3 Millionen Dateien (mit einer durchschnittlichen Größe von 750 KB) und müssen uns entscheiden, welches Ordnerschema wir verwenden.
In der ersten Lösung wenden wir eine Hash-Funktion auf die Datei an und verwenden einen Ordner mit zwei Ebenen (1 Zeichen für die erste Ebene und 2 Zeichen für die zweite Ebene). Da der filex.for
Hash also abcde1234 entspricht, speichern wir ihn in / path / a / bc /abcde1234-filex.for.
In der zweiten Lösung wenden wir eine Hash-Funktion auf die Datei an und verwenden einen Ordner mit zwei Ebenen (bestehend aus 2 Zeichen für die erste Ebene und 2 Zeichen für die zweite Ebene). Wenn der filex.for
Hash also gleich abcde1234 ist , speichern wir ihn in / path / ab / de /abcde1234-filex.for.
Für die erste Lösung haben wir das folgende Schema /path/[16 folders]/[256 folders]
mit durchschnittlich 732 Dateien pro Ordner (der letzte Ordner, in dem sich die Datei befinden wird).
Während auf der zweiten Lösung werden wir haben /path/[256 folders]/[256 folders]
mit einem Durchschnitt von 45 Dateien pro Ordner .
In Anbetracht dessen, dass wir von diesem Schema aus viele Dateien schreiben / trennen / lesen ( aber meistens lesen ) (im Grunde genommen das Nginx-Caching-System), ist es in Bezug auf die Leistung von Bedeutung, ob wir die eine oder andere Lösung gewählt haben?
Mit welchen Tools können wir dieses Setup überprüfen / testen?
hdparm -Tt /dev/hdX
aber es ist möglicherweise nicht das am besten geeignete Tool.
hdparm
ist nicht das richtige Tool, es ist eine Überprüfung der unformatierten Leistung des Blockgeräts und kein Test des Dateisystems.