Допустим, мы используем ext4 (с включенным dir_index) для размещения около 3M файлов (в среднем размером 750 КБ), и нам нужно решить, какую схему папок мы будем использовать.
В первом решении мы применяем хеш-функцию к файлу и используем папку с двумя уровнями (будучи 1 символом для первого уровня и 2 символами для второго уровня): поэтому, поскольку filex.for
хеш равен abcde1234 , мы будем хранить его в / path / a / bc /abcde1234-filex.for.
Во втором решении мы применяем хеш-функцию к файлу и используем папку с двумя уровнями (будучи 2 символами для первого уровня и 2 символами для второго уровня): поэтому, поскольку filex.for
хеш равен abcde1234 , мы будем хранить его в / path / ab / de /abcde1234-filex.for.
Для первого решения у нас будет следующая схема /path/[16 folders]/[256 folders]
со средним значением 732 файла в папке (последняя папка, в которой будет находиться файл).
В то время как на втором решении у нас будет /path/[256 folders]/[256 folders]
в среднем 45 файлов на папку .
Учитывая, что мы собираемся писать / отсоединять / читать файлы ( но в основном читать ) из этой схемы (в основном, в системе кэширования nginx), имеет ли это значение с точки зрения производительности, если мы выбрали одно или другое решение?
Кроме того, какие инструменты мы могли бы использовать для проверки / тестирования этой установки?
hdparm -Tt /dev/hdX
но это не самый подходящий инструмент.
hdparm
это не правильный инструмент, это проверка сырой производительности блочного устройства, а не проверка файловой системы.