Является ли проблемой создание каталога для каждой загрузки файла в веб-приложении на linux / unix? - PullRequest
2 голосов
/ 01 октября 2009

Я делаю выгрузку файлов для веб-приложения (работает на Unix / Linux). Мне интересно, будет ли проблема, если я планирую создавать новый каталог для каждой загрузки файла? Это готовый подход к плагину Ruby on Rails «скрепка». Я обсуждаю, какие компромиссы, или, возможно, это просто не проблема, при развертывании в среде Linux / Unix.

Возможны следующие варианты:

  1. Одна папка на вложение файла - в зависимости от того, как скрепка работает из коробки
  2. Возможно, одна папка на пользователя (т. Е. Если у веб-службы есть несколько пользователей со своей учетной записью) - и тогда потребуется добавить уникальность имени файла (возможно, идентификатор модели)
  3. Поместите все вложения в одну папку - но это, вероятно, заходит слишком далеко в другом направлении

Вопрос. Должен ли я беспокоиться о количестве создаваемых каталогов? Это проблема для O / S, если сервис был популярен? Какой-нибудь совет для веб-сайта, который позволяет пользователям с их собственной отдельной учетной записью загружать файлы, какая структура может быть хорошей в отношении их хранения? (Полагаю, я отказался от концепции хранения файлов в mysql.)

Спасибо

Ответы [ 3 ]

5 голосов
/ 01 октября 2009

Предполагается, что в Linux отформатирован диск Ext3 (самый распространенный).

С (http://en.wikipedia.org/wiki/Ext3)

"Существует ограничение в 31998 подкаталогов на один каталог, проистекающее из его ограничения в 32000 ссылок на инод. [13]"

Итак, если вы достигнете предела 32 тыс. Загрузок, что не так уж и много, ваше приложение не будет работать.

0 голосов
/ 01 октября 2009

Не как таковой, но использование миллиардов папок в одном каталоге (или одинаковых для файлов) не рекомендуется (это настоящий удар по скорости).

Причина: строки в стиле c

Хорошим решением было бы иеррически (sic?) Хранить что-то вроде: / Путь / к / usernamefirstletter / имя пользователя / год / месяц / файл

0 голосов
/ 01 октября 2009

Если у вас есть отдельный раздел для каталога, в котором создаются новые файлы / каталоги, я бы сказал, что это не проблема. Это может вызвать проблемы, если вы просто используете другой раздел, так как у вас могут быть исчерпаны inode и / или свободное место на диске, что может быть плохо.

Использование отдельного раздела (в случае атаки DOS) только помешает правильной работе приложения, и система никак не пострадает.

...