Скажите, пожалуйста, решение для этого сценария:
Когда количество файлов стало больше 2 миллионов, у нас возникла проблема с медленным временем произвольного доступа. Файловая система ext3 с noatime и dir_index параметры, но нет необходимости использовать такие команды, как 'ls' или 'find'.
Решения, которые я считаю возможными:
Если мы выберем 1 или 2, как насчет репликации? rsync не может обрабатывать такое количество данных в файловой системе ext3.
Лучшее решение для нас - использовать Amazon S3, но это слишком дорого с нашим трафиком ... Может быть, вы порекомендуете какие-то аналоги (дешевый CDN или проект с открытым исходным кодом)
Миллионы файлов в одном каталоге - плохой дизайн и будут медленными. Разбейте их на каталоги с меньшим количеством записей.
Взгляни на https://unix.stackexchange.com/questions/3733/number-of-files-per-directory
Используйте RAID и / или SSD. Само по себе это не решит проблему медленного доступа, но если вы введете несколько каталогов и уменьшите количество файлов в каталоге, скажем, на порядок или два, это поможет предотвратить появление горячих точек.
Рассмотрим XFS, особенно при использовании нескольких дисков и нескольких каталогов, это может дать вам хороший выигрыш (см., Например, этот нить для вариантов использования. Он дает несколько советов для XFS на md
RAID).
Лично я бы:
mod_rewrite
(предполагая, что это приложение типа CDN)diff
в журналах (т.е. вы всегда синхронизируете журналы и сначала синхронизируете их, но выполняете разницу перед их заменой, чтобы вычислить, что еще нужно скопировать).