Сколько файлов я могу поместить в каталог? - PullRequest
529 голосов
/ 21 января 2009

Имеет ли значение, сколько файлов я храню в одном каталоге? Если да, сколько файлов в каталоге слишком много, и каково влияние наличия слишком большого количества файлов? (Это на сервере Linux.)

Фон: у меня есть веб-сайт фотоальбома, и каждое загруженное изображение переименовывается в 8-шестнадцатеричный идентификатор (скажем, a58f375c.jpg). Это делается для того, чтобы избежать конфликтов имен файлов (например, если загружено много файлов «IMG0001.JPG»). Исходное имя файла и любые полезные метаданные хранятся в базе данных. Сейчас у меня где-то около 1500 файлов в каталоге изображений. Это приводит к тому, что перечисление файлов в каталоге (через FTP или SSH-клиент) занимает несколько секунд. Но я не вижу, что это имеет какое-либо влияние, кроме этого. В частности, похоже, что скорость передачи файла изображения пользователю не влияет.

Я думал об уменьшении количества изображений, создав 16 подкаталогов: 0-9 и a-f. Затем я переместил бы изображения в подкаталоги, основываясь на том, какой была первая шестнадцатеричная цифра имени файла. Но я не уверен, что для этого есть какая-либо причина, кроме случайного перечисления каталога через FTP / SSH.

Ответы [ 21 ]

0 голосов
/ 17 декабря 2013

Не ответ, а только некоторые предложения.

Выберите более подходящую ФС (файловую систему). Так как с исторической точки зрения все ваши проблемы были достаточно мудрыми, чтобы когда-то быть центральными для ФС, развивающихся в течение десятилетий. Я имею в виду более современные ПС лучше поддерживают ваши проблемы. Сначала составьте таблицу решений для сравнения на основе вашей конечной цели из списка FS .

Я думаю, пришло время изменить ваши парадигмы. Поэтому я лично предлагаю использовать распределенную систему с поддержкой FS , что означает отсутствие каких-либо ограничений в отношении размера, количества файлов и т. Д. В противном случае вы рано или поздно столкнетесь с новыми неожиданными проблемами.

Я не уверен, что сработает, но если вы не упомянули некоторые эксперименты, попробуйте AUFS поверх вашей текущей файловой системы. Я предполагаю, что у него есть средства для имитации нескольких папок как одной виртуальной папки.

Для преодоления аппаратных ограничений вы можете использовать RAID-0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...