16

Использование Redhat, если это имеет значение.

Есть ли ограничение по умолчанию? Можно ли это изменить? Если нет, есть ли обходные пути для увеличения количества папок, разрешенных в каталоге?

4 ответа4

21

Это зависит от того, какую файловую систему использует ваш дистрибутив. Если вы используете более новый дистрибутив рабочего стола (например, Ubuntu 9.10, последняя версия Fedora), вы, вероятно, используете ext4. Если вы используете что-то более старое, скорее всего это ext3.

11

В ext2 - 32 768, согласно Википедии - http://en.wikipedia.org/wiki/Ext2fs#File_system_limits. Зависит от того, какую файловую систему вы используете.

4

Вы можете рассмотреть альтернативы тому, что вы пытаетесь сделать. Даже если вы не превысите ограничение файловой системы (например, 32 КБ для ext2), хранение десятков тысяч файлов в одном каталоге может быть по меньшей мере громоздким.

Возможно, вы пытаетесь использовать файловую систему для чего-то более подходящего для базы данных. Подумайте о хранении ваших данных в PostgreSQL, MySQL или даже в базе данных sqlite. Существует не так много файловых систем, которые хорошо справляются с огромным количеством файлов - перемещение или резервное копирование ваших данных будет медленным.

Если вам действительно нужно хранить много файлов, рассмотрите альтернативные структуры каталогов. Например, вы можете разделить файлы по алфавиту, например:

a/aaron.dat
a/alex.dat
a/alan.dat
b/bill.dat
b/brian.dat

Этот подход может масштабироваться за счет увеличения глубины вашего разделения, например:

a/a/aaron.dat
a/l/alex.dat
a/l/alan.dat

Или, если вы вводите ежедневные файлы журнала или получаете ежедневные поставки, вы можете разделить их по дате, например:

2009-10-04/logfile-01.txt
2009-10-05/logfile-01.txt
2009-10-05/logfile-02.txt

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

1

Ограничения папок - это то, почему корпоративные системы, которые имеют дело с произвольным числом файлов, будут хранить в одной или двух подкаталогах на основе хэша имени файла. Например, md5() имя файла и использование первых четырех байтов в качестве подпапки для хранения файла; для дополнительных уровней используйте следующие 4 для дополнительной подпапки или следующие 4 после этого и т. д. Большинство систем никогда не будет превышать 2 уровня.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .