Сведения о вопросе

Fedya

21:15, 20th August, 2020

Теги

Много картинок в одной директории?

Просмотров: 317   Ответов: 6

На сервере картинки выдаются при помощи сервера nginx.


Сколько максимально можно размещать картинок в 1 директории для ФС ext3, чтобы не возрастало время случайного доступа к файлам и не появлялось никакой излишней дополнительной нагрузки из-за поиска файлов в директории с огромным количеством файлов?


Соответственно такой же вопрос про директории: каким числом поддиректорий в директории лучше всего ограничиться?


Какие ограничения на длины имён директорий и файлов следует накладывать, чтоб не возрастало время поиска, какие ограничения на уровни вложенности?


Тот же вопрос интересует (но уже не в практических, а в познавательных целях) для ФС reiserfs, ext4, xfs, jfs… И какая из этих ФС лучше справится с такой задачей?



  Сведения об ответе

SILA

02:28, 3rd August, 2020

В стародавние времена был придуман способ хранить множество файлов по такому принципу:
1) было: /files/abcdefg.gif
2) стало: /files/a/b/c/abcdefg.gif
Глубину вложенности больше 3 на практике ни разу не видел, как и задержек. Вот по первому рецепту — задержки были, но тогда была еще ext2 и несколько тысяч файлов в папке. Точные цифры, к сожалению, не помню за давностью лет.


  Сведения об ответе

dumai

23:25, 15th August, 2020

ограничение для ext3 — 32k — это кол-во поддиректорий в одной директории пруф.
в ext2 — теоретический предел 256k файлов в директории.
в ext3 — можно высчитать практически размер_раздела_в_байтах/8192 пруфы
а сама идея размазывать по подкаталогам — имхо правильна, но не по хешу содержимого,
а, например если индекс (какой файл в по какому пути находится) в субд или отдельном файле, то размазывать по наполнению подкаталога по кол-ву файлов или суммарному размеру директории, round robin,
или даже по хешу, но не содержимого файла, а имени файла.

сам хранил архив гентушных disfiles около 60тыс файлов на ext3: конечно отображение списка файлов в каталоге занимало много времени, несмотря на dir_index. но выбора не имел: файлопомойка была на RHEL4, а там ничего кроме ext3 не поддерживается.
на другой машинке была возможность собрать модуль для xfs, перетащил кеширование на него: кол-во выросло до 300тыс файлов, полет удовлетворяет (особенно радует теневая дефрагментация и быстрое удаление больших файлов, с у ext3 с этим жопа, но иногда модуль сбоит)


  Сведения об ответе

pumpa

13:35, 19th August, 2020

для мелких файлов лучше reiserfs, для остальных ext*
По поводу хранения солидарен с Bambr. Разве что взгляните в сторону mogilefs


  Сведения об ответе

9090

11:37, 9th August, 2020

Максимально фаилов в одном каталоге для ext3 по-моему около 32к
Чтобы разместить фаилы равномерно по подкаталогам лучше всего работает такая схема. m5sum(file) = a1b2c3… Тогда фаил размещаем в /a/1b/filename… получаем для 100к фаилов по 23-25 файлов в каталоге


  Сведения об ответе

repe

19:03, 18th August, 2020

просто для доступа до 5-10 тыс можно не париться


  Сведения об ответе

davran

19:37, 17th August, 2020

раньше хранил в front-cache(два гига) + 4 гига картинок(700к чтук) в $1/$2/md5(name) где $1-$2 — два первых и два вторых символа md5 имени.

Теперь храню в кеше и mysql.
Причина проста — когда надо было переехать на другой сервер архивация папочки заняла… 6 часов


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться