Назад | Перейти на главную страницу

Подходит ли кэширование NFS для кеширования больших файлов (от 200 КБ до 50 МБ?)

У меня есть диск емкостью 1 ТБ на одном сервере, к которому 4 других сервера часто обращаются через NFS для распространения файлов по HTTP. Я вижу высокую нагрузку на центральный сервер и хочу кэшировать эти файлы на локальных серверах, поскольку они редко меняются. Подходит ли кеширование NFS или мне стоит поискать что-нибудь еще?

Спасибо

Способ NFS:

FS-Cache, вероятно, поможет, если у вас есть минимальное пространство на клиентских серверах, которое не позволяет вам хранить полные копии всех ваших больших файлов (например, вы хотите или должны кэшировать только наиболее часто используемые файлы).

Есть некоторые предостережения (как указано в Документация Red Hat):

  • Открытие файла из общей файловой системы для прямого ввода-вывода автоматически обходит кеш. Это потому, что этот тип доступа должен быть прямым к серверу.
  • Открытие файла из общей файловой системы для записи не будет работать в NFS версии 2 и 3. Протоколы этих версий не предоставляют достаточной информации управления согласованностью для клиента, чтобы обнаружить одновременную запись в тот же файл от другого клиента.
  • Таким образом, открытие файла из общей файловой системы для прямого ввода-вывода или записи приведет к сбросу кэшированной копии файла. FS-Cache не будет кэшировать файл снова, пока он больше не будет открыт для прямого ввода-вывода или записи.
  • Кроме того, в этом выпуске FS-Cache кэшируются только обычные файлы NFS. FS-Cache не кэширует каталоги, символические ссылки, файлы устройств, FIFO и сокеты.

Кроме того, вам необходимо запускать определенные типы файловых систем на клиенте NFS, чтобы обеспечить необходимую поддержку FS для атрибутов файловой системы, которые FS-Cache использует для отслеживания вещей (ext3 с user_xattr, ext4, btrfs, xfs) .

Способ rsync:

Другой альтернативой является использование rsync и сохранение полной копии файлов в каждой системе. Если эти вещи меняются только периодически (например, ежедневно или еженедельно), это может быть более выгодным для вас с точки зрения меньшей сложности в управлении и отладке проблем.

Обратной стороной этого является то, что вы теперь храните N + 1 копий, где N - количество систем, на которых вам нужно запустить это, и вам придется придумать механизм для периодической обработки rsync (например, скрипты + cron , и т.д).

Я вижу, вы отметили свой вопрос squid, значит, вы об этом четко знаете. Как ты им пользуешься? Думаю, вашу проблему можно решить, используя squid в режим обратного прокси (httpd-accelerator). Если у вас все настроено правильно, вам не стоит беспокоиться о стороне NFS.