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

StackOverflow https://stackoverflow.com/questions/1503356

Вопрос

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

Варианты, казалось бы, следующие:

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

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

Спасибо

Это было полезно?

Решение

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

Из (http://en.wikipedia.org/wiki/Ext3)

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

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top