← Назад к вопросам

Что такое tmpfs?

1.0 Junior🔥 111 комментариев
#Другое

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое tmpfs?

Tmpfs (temporary filesystem) — это виртуальная файловая система в Unix-подобных операционных системах (в первую очередь Linux), которая хранит все свои данные в оперативной памяти (RAM) и, при необходимости, в пространстве подкачки (swap). Её ключевая особенность — данные существуют только во время работы системы (или до момента размонтирования), то есть они не сохраняются после перезагрузки. Это делает tmpfs идеальным решением для временных файлов, кешей, сокетов и других объектов, требующих быстрого доступа, но не нуждающихся в долговременном хранении.

Основные характеристики и принцип работы

Tmpfs не использует постоянное хранилище (диски/SSD), а выделяет память динамически по мере записи файлов. При освобождении файлов память немедленно возвращается системе. Важно отметить, что она не занимает RAM заранее — её использование растёт и уменьшается в зависимости от фактического объёма данных. Вот базовые принципы:

  • Хранение в RAM: Обеспечивает чрезвычайно высокую скорость операций чтения/записи (на порядки быстрее, чем даже NVMe SSD).
  • Волатильность: Все данные стираются при выключении питания, перезагрузке или размонтировании файловой системы.
  • Поддержка свопа (swap): Если данных становится больше, чем доступно оперативной памяти, часть из них может быть вытеснена в раздел подкачки, предотвращая крах системы из-за нехватки RAM, но снижая производительность.
  • Поддержка прав доступа: Как и любая ФС в Linux, tmpfs поддерживает стандартные разрешения Unix (владелец, группа, права rwx).

Использование в Linux

В современных дистрибутивах tmpfs часто используется по умолчанию для нескольких каталогов. Это можно увидеть, выполнив команду mount:

$ mount | grep tmpfs
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,mode=755)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev)  # во многих дистрибутивах

Распространённые точки монтирования:

  • /dev/shm — разделяемая память POSIX (используется некоторыми приложениями для межпроцессного взаимодействия — IPC).
  • /run и /var/run — хранилище для PID-файлов, сокетов и другой рантайм-информации о процессах и сервисах.
  • /tmp — системный временный каталог. Использование tmpfs здесь значительно ускоряет работу приложений и очищает его при каждой загрузке.
  • /sys/fs/cgroup — точка монтирования для контрольных групп (cgroups).

Практическое применение в DevOps / Администрировании

  1. Ускорение операций: Размещение кешей приложений (например, кеша компилятора, кеша веб-сервера или сессий) в tmpfs даёт мгновенный прирост производительности.
  2. Изоляция и безопасность: Автоматическая очистка данных полезна для рабочих сред, где важно не оставлять следов (например, в контейнерах или временных виртуальных машинах).
  3. Снижение износа SSD: Частая запись временных файлов на SSD сокращает его ресурс. Перенос /tmp в RAM решает эту проблему.
  4. Организация IPC: Обязательна для использования разделяемой памяти shm_open().

Примеры создания и настройки

Монтирование tmpfs вручную осуществляется стандартной командой mount:

# Монтирование tmpfs размером не более 1ГБ в каталог /mnt/my_tmp
sudo mount -t tmpfs -o size=1G,nr_inodes=100k,mode=1777 tmpfs /mnt/my_tmp

Ключевые параметры монтирования (-o):

  • size=1G — ограничивает максимальный размер файловой системы (можно использовать m для мегабайт).
  • nr_inodes=100k — ограничивает максимальное количество индексных дескрипторов (файлов/каталогов).
  • mode=1777 — устанавливает права доступа (sticky bit 1 позволяет удалять файлы только их владельцам, что критично для /tmp).

Для постоянного монтирования нужно добавить запись в /etc/fstab:

# Добавить в /etc/fstab
tmpfs   /mnt/my_cache   tmpfs   defaults,size=512M,noatime,nodev,nosuid   0   0

Сравнение с другими технологиями

  • ramfs: Более старая файловая система, хранящая данные ТОЛЬКО в RAM, без ограничений по размеру и без поддержки свопа. Риск исчерпания всей оперативной памяти и падения системы.
  • tmpfs: Более безопасна благодаря ограничению размера и возможности использовать swap. Является рекомендуемым выбором в большинстве сценариев.

Заключение: Tmpfs — это мощный и гибкий инструмент для DevOps-инженера. Понимание его работы позволяет осознанно управлять производительностью, безопасностью и ресурсами системы. Его использование для временных данных, кешей и IPC является стандартной рекомендацией при настройке высоконагруженных сервисов и контейнеризированных сред.