Дополнительное преимущество оконечных мультиплексоров - то, что Ваши сессии мультиплексора все еще будут живы, и можно снова соединиться с ними, даже если X (настольная сессия) катастрофические отказы, или Вы вышли X.
Каждая папка использует один inode (256 байтов) и по крайней мере один блок (вероятно, 4 096 байтов). Большей проблемой может быть время доступа по нескольким слоям иерархии.
Проблема производительности происходит, вероятно, не из-за размера папки, но к расширению пути. Расширение пути имеет две проблемы:
Необходимо обратиться к этому на прикладном уровне. Считайте 100 имен файлов за один раз (неотсортированный, с find
или ls -U
) и вид эти небольшие группы при необходимости. Это также допускает параллельное чтение из использование ЦП и диска.
Если Вам действительно нужно расширение пути и / или сортирующий затем Вас может ускорить процесс много (если файлы редко изменяются только) путем добавления файлов к их (пустым) каталогам в порядке сортировки.
Покровы Ext4 немного лучше в больших каталогах, чем предыдущие версии, но все еще срывают приблизительно после 10,000 файлов в том же каталоге. Выделение файлов в иерархии каталогов несколько уровней глубоко является общим решением для поддержания производительности. Каждый инкремент глубины требует дополнительной косвенности при поиске файла, но ширина увеличивается экспоненциально с глубиной.
Например, если Ваши файлы имеют имена, состоящие только из букв, цифр и нескольких знаков пунктуации, вместо того, чтобы поместить их всех в тот же каталог, создают подкаталоги на основе первых двух символов имени файла. Таким образом, файл foobar
хранится в fo/foobar
. Если Вы все еще имеете слишком много файлов в подкаталогах, увеличиваете глубину: fo/ob/foobar
, и так далее. Необходимо будет сделать сравнительные тесты для выяснения сколько символов для разделения после и в какой глубина остановиться.
Существует много потенциальных каталогов, и большинство закончится пустое. Так вместо того, чтобы создать все каталоги вначале, создайте их по требованию. Например, если необходимо создать файл foobar
, затем создайте каталог fo
если это уже не существует, то сделайте то же для fo/ba
, и затем хранилище foobar
в fo/ba/foobar
.
Если файлы не будут крошечными (меньше чем 4 КБ), каталоги представят незначительную сумму пространства. Даже с крошечными файлами, пока Вы не переусердствовали глубину, будет гораздо меньше каталогов, чем файлы. Однако, если у Вас есть огромное количество крошечных файлов, это - знак, необходимо использовать базу данных вместо этого.