Supponiamo di utilizzare ext4 (con dir_index abilitato) per ospitare circa 3 milioni di file (con una dimensione media di 750 KB) e dobbiamo decidere quale schema di cartelle utilizzare.
Nella prima soluzione , applichiamo una funzione di hash al file e usiamo la cartella a due livelli (essendo 1 carattere per il primo livello e 2 caratteri al secondo livello): quindi essendo l' filex.for
hash uguale a abcde1234 , lo memorizzeremo su / path / a / bc /abcde1234-filex.for.
Nella seconda soluzione , applichiamo una funzione di hash al file e usiamo la cartella a due livelli (essendo 2 caratteri per il primo livello e 2 caratteri al secondo livello): quindi essendo l' filex.for
hash uguale a abcde1234 , lo memorizzeremo su / path / ab / de /abcde1234-filex.for.
Per la prima soluzione avremo il seguente schema /path/[16 folders]/[256 folders]
con una media di 732 file per cartella (l'ultima cartella, dove risiederà il file).
Mentre sulla seconda soluzione avremo /path/[256 folders]/[256 folders]
con una media di 45 file per cartella .
Considerando che scriveremo / scolleghiamo / leggiamo i file ( ma principalmente leggiamo ) da questo schema (fondamentalmente il sistema di cache nginx), maturerà, in senso prestazionale, se scegliamo una o l'altra soluzione?
Inoltre, quali sono gli strumenti che potremmo usare per controllare / testare questa configurazione?
hdparm -Tt /dev/hdX
ma potrebbe non essere lo strumento più appropriato.
hdparm
non è lo strumento giusto, è un controllo delle prestazioni non elaborate del dispositivo a blocchi e non un test del file system.