Сколько файлов я могу иметь непосредственно в каталоге в ext3?

У меня есть корневой каталог "data_0". Под этим каталогом находится около 15 000 каталогов ('a', 'b', 'c', ... 'aa', 'ab' ...). Под каждым из этих каталогов находятся тысячи очень маленьких файлов (4~10 КБ), что-то от 1000 до 2000 файлов каждый.

Все это приводит к 30 миллионам файлов. Мне нужно переместить их из "data_0" в папку "data_1", но без папок "level 2" (a, b, c и т. Д.), Поэтому:

/data_0/a/1.txt --> /data_1/a_1.txt
/data_0/a/2.txt --> /data_1/a_2.txt
...
/data_0/ccc/989.txt --> /data_1/ccc_989.txt
...

Как далеко я могу пойти с этим? Производительность здесь не важна. Есть ли логическое ограничение или просто ограничение производительности?

2 ответа

Решение

Если доверять незнакомым людям в Интернете, количество файлов, которые может содержать папка ext3, не ограничено. Так говорит список рассылки ext3-пользователей RedHat. Ядро 2.6 предположительно допускает теоретическое допущение "миллиардов" файлов в одном каталоге. Вы можете настроить dir_index немного, чтобы он работал гладко, если вы будете искать файлы. Есть также некоторые другие побочные эффекты огромного количества файлов в одном каталоге, которые вы, возможно, захотите прочитать в этом потоке StackOverflow.

Так что ответ скорее всего: "Да, но..."

Не существует логического ограничения на количество файлов в одном каталоге, хотя существуют значительные ограничения производительности, поскольку отдельные каталоги получают больше файлов (мое практическое правило - держать его ниже 1000, хотя в некоторых ситуациях я сделал 10000), Существует ограничение на общее количество файлов в файловой системе, которое определяется параметрами создания вашей файловой системы (общее число inode). Существует также жестко заданное ограничение в 32000 подкаталогов на каталог (из которых две записи всегда обрабатываются . а также ..).

Другие вопросы по тегам