Файловая система Linux миллион символических ссылок против миллионов файлов - PullRequest
1 голос
/ 07 июля 2011

Я работаю над системой кэширования на основе файловой системы Linux для веб-приложения, которое будет использоваться в качестве крайней меры, когда APC и Memcache недоступны.Система будет кэшировать от 500 000 до 1 000 000 уникальных идентификаторов строк, каждый из которых имеет большое значение.Я беру MD5-хэш идентификатора строки и, основываясь на первых нескольких символах, создаю подпапки, чтобы не слишком много файлов попадало в один каталог.

Я знаю, что эта концепция работает, потому что я ее используюв аналогичном приложении.

Хотя существует до 1 ММ строковых идентификаторов, все они указывают одно из 18 000 уникальных значений, поэтому, например, может быть 100 000 строковых идентификаторов, которые все указывают на одно и то же значение.Сейчас это означает, что есть 100 000 файлов с разными именами файлов, содержащих одно и то же содержимое, что плохо для основного кэша файловой системы.

Есть ли какой-либо недостаток в кэшировании 18 000 уникальных значений, а затем для каждого уникального идентификатора строки, создавсимволическая ссылка на файл уникальных значений?Таким образом, буфер файловой системы может кэшировать 18 000 файлов и дескрипторов для символических ссылок.

Я просто обеспокоен наличием 1 000 000 символических ссылок и любыми потенциальными проблемами, которые это может создать.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 07 июля 2011

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

Однако я настоятельно рекомендую вам hard ссылки, потому что таким образом,содержимое будет сохраняться до тех пор, пока не будет удалена последняя из ссылок.

1 голос
/ 07 июля 2011

Я согласен с sehe , и, пожалуйста, обратите внимание, что для жестких ссылок будет использоваться только 18 000 инодов вместо 10 6 ;жесткая ссылка использует только дополнительную запись каталога, которая указывает на один-единственный индекс.Вы сохраните 10 6 * размер индекса байт на диске и в своем кэше памяти.

...