Покровы Ext4 немного лучше в больших каталогах, чем предыдущие версии, но все еще срывают приблизительно после 10,000 файлов в том же каталоге. Выделение файлов в иерархии каталогов несколько уровней глубоко является общим решением для поддержания производительности. Каждый инкремент глубины требует дополнительной косвенности при поиске файла, но ширина увеличивается экспоненциально с глубиной.
Например, если Ваши файлы имеют имена, состоящие только из букв, цифр и нескольких знаков пунктуации, вместо того, чтобы поместить их всех в тот же каталог, создают подкаталоги на основе первых двух символов имени файла. Таким образом, файл foobar
хранится в fo/foobar
. Если Вы все еще имеете слишком много файлов в подкаталогах, увеличиваете глубину: fo/ob/foobar
, и так далее. Необходимо будет сделать сравнительные тесты для выяснения сколько символов для разделения после и в какой глубина остановиться.
Существует много потенциальных каталогов, и большинство закончится пустое. Так вместо того, чтобы создать все каталоги вначале, создайте их по требованию. Например, если необходимо создать файл foobar
, затем создайте каталог fo
если это уже не существует, то сделайте то же для fo/ba
, и затем хранилище foobar
в fo/ba/foobar
.
Если файлы не будут крошечными (меньше чем 4 КБ), каталоги представят незначительную сумму пространства. Даже с крошечными файлами, пока Вы не переусердствовали глубину, будет гораздо меньше каталогов, чем файлы. Однако, если у Вас есть огромное количество крошечных файлов, это - знак, необходимо использовать базу данных вместо этого.
Я спросил о # debian-mentors, и Пол Уайз указал мне на отчет об ошибке. Записи, которые вы видите, вызваны ошибкой. См. Отчет об ошибке Debian http://security-tracker.debian.org/tracker/data/releases broken .
07:05 < pabs> faheem: https://bugs.debian.org/610222
07:06 < pabs> faheem: I guess patches would be welcome
07:15 < ats> faheem: so my first guess was that it was a Plan 9-style code,
but no, it's just a bug
07:16 < ats> I think what's happening is that it's taking a list of
architectures along the lines of "i386,armhf,kfreebsd-i386" and
splitting it by characters rather than on ,
07:16 < ats> so that's actually a list of all the characters that are used in
Debian architecture names ;-)
07:17 < ats> line 407-ish in http://anonscm.debian.org/viewvc/secure-
testing/lib/python/security_db.py?view=markup suggests that it
does split on , first, though, so presumably that's not getting
used properly when fetching the arch field from the database...
Примечание. Патчи приветствуются. : -)