Digamos que estamos usando ext4 (con dir_index habilitado) para alojar alrededor de 3M de archivos (con un tamaño promedio de 750 KB) y necesitamos decidir qué esquema de carpeta vamos a usar.
En la primera solución , aplicamos una función hash al archivo y usamos una carpeta de dos niveles (siendo 1 carácter para el primer nivel y 2 caracteres para el segundo nivel): por lo tanto, siendo el filex.for
hash igual a abcde1234 , lo almacenaremos en / ruta / a / bc /abcde1234-filex.for.
En la segunda solución , aplicamos una función hash al archivo y usamos una carpeta de dos niveles (que son 2 caracteres para el primer nivel y 2 caracteres para el segundo nivel): por lo tanto, siendo el filex.for
hash igual a abcde1234 , lo almacenaremos en / ruta / ab / de /abcde1234-filex.for.
Para la primera solución tendremos el siguiente esquema /path/[16 folders]/[256 folders]
con un promedio de 732 archivos por carpeta (la última carpeta, donde residirá el archivo).
Mientras que en la segunda solución tendremos /path/[256 folders]/[256 folders]
un promedio de 45 archivos por carpeta .
Teniendo en cuenta que vamos a escribir / desvincular / leer archivos ( pero principalmente leídos ) de este esquema mucho (básicamente el sistema de almacenamiento en caché nginx), ¿ importa, en un sentido de rendimiento, si elegimos una u otra solución?
Además, ¿cuáles son las herramientas que podríamos usar para verificar / probar esta configuración?
hdparm -Tt /dev/hdX
pero podría no ser la herramienta más apropiada.
hdparm
no es la herramienta adecuada, es una verificación del rendimiento sin procesar del dispositivo de bloque y no una prueba del sistema de archivos.