Использование tmpfs в качестве универсального кеша

Опубликовано: 3 Декабря 2012 00:00

Очень часто встречаются задачи когда нужно использовать быстрый кеш не типизированного вида. Файловая система подходит для этого как ни что другое, но винчестер слишком медленный. На помощь приходит tmpfs, файловая система в памяти, взаимодействие с которой ОЧЕНЬ быстрое. На одном проекте мы использовали tmpfs для отдачи популярного видео-контента. Конструкция выдерживала гигабитный поток на чтение при почти нулевой загрузке системы.

Как правило один раздел tmpfs у вас уже есть (/dev/shm). Желательно организовывать кеш отдельно, чтобы не препятствовать работе системы в случае его переполнения. Но если вам нужен большой кеш (например 8 гигабайт, как нам – два кеша в памяти не уместятся, приходится использовать /dev/shm. В этом случае сразу переходим к разделу о ресайзе уже смонтированноо раздела. Также не забываем проверять какие разделы и какого размера примонтированы используя “mount -l” или “df -h”.

Итак, монтируем раздел (помним что не надо монтировать два раздела в одну точку (например 2 /dev/shm ):

mount -t tmpfs -o , tmpfs /space

Важной особенностью tmpfs является возможность ресайза “налету”, примерно вот так:

mount -o remount, /space

Это всё пригодится при краткосрочных задачах. Но теперь вспомним про ещё одну, не менее важную особенность tmpfs – после перезагрузки все созданные разделы уничтожатся. По этому если вам постоянно нужен раздел – пропишите его в /etc/fstab. Примерно так:

tmpfs /space tmpfs defaults 0 0

Ресайзить tmpfs раздел непосредственно в консоли не рекомендую, после перезагрузки сервер опять примонтирует первоначальный размер и ваш контент не уместится. Потому если вам нужно изменить размер указанного в /etc/fstab раздела – открываем /etc/fstab и находим там строчку tmpfs (вашего, если у вас два раздела – не трогайте системный) и указываем нужный размер:

tmpfs /space tmpfs defaults, 0 0

(размеры могут быть записаны следующим образом: 512k, 512m, 512g)
А затем:

mount -o remount /space