MyTetra Share
Делитесь знаниями!
об tmpfs и рекомендации, включая пример, о практическом использовании.
Время создания: 30.11.2025 17:40
Автор: alensav
Текстовые метки: tmpfs
Раздел: LINUX_уроки
Запись: alensav/MyTetra2/main/base/1764513658xxmafpi3sy/text.html на raw.githubusercontent.com


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



🔹 Основные особенности tmpfs:


Характеристика

Описание

Расположение

В RAM/swap, а не на блочном устройстве

Временность

Содержимое теряется после выключения/перезагрузки

Производительность

Очень высокая (чтение/запись как в RAM)

Размер

Динамически растёт/сжимается, но ограничен параметром size= при монтировании

Безопасность

Данные не сохраняются на диск — полезно для временных секретов (например, токенов), но не подходит для долгосрочного хранения

⚠️ В отличие от ramfs, tmpfs ограничивает размер и может использовать своп, что делает её безопаснее (не приведёт к OOM, если память закончится).



🔹 Практическое применение

✅ Типичные сценарии:

  1. Временные сборки (например, /tmp, /var/tmp)
  2. Кэширование чувствительных или быстро меняющихся данных
  3. Хранение runtime-файлов: PID-файлы, сокеты, временные конфиги
  4. Изоляция конфиденциальных данных (например, расшифрованные ключи, сессии), чтобы избежать записи на диск
  5. Встраиваемые/ограниченные системы (например, у вас Atom N270) — экономия SSD-ресурсов и ускорение быстрых операций.



🔹 Пример: Монтирование tmpfs для временной рабочей области

Допустим, вы хотите собирать firmware на лету и не хотите изнашивать SSD или оставлять следы:


Теперь в ~/build-tmp можно безопасно запускать сборку (например, idf.py build для ESP-IDF или make), зная, что:

  • это быстро,
  • не изнашивает NAND/SSD (важно для Atom-систем и USB Flash),
  • автоматически очищается при отмонтировании/перезагрузке.

Чтобы примонтировать автоматически при загрузке — добавьте в /etc/fstab:

text

1

(Здесь uid=1000,gid=1000 — ваш пользователь alensav; можно также использовать uid=$(id -u) в скриптах.)



🔹 Рекомендации по использованию


Совет

Обоснование

Всегда указывайте size=

Без ограничения tmpfs может потребить всю RAM + swap → OOM-killer.

Избегайте noexec/nosuid, если не требуется

По умолчанию tmpfs разрешает исполнение и suid — иногда это нужно (например, скрипты в /tmp). Если храните ненадёжные данные — добавьте noexec,nosuid,nodev.

Следите за df и free -h

Чтобы не "слить" память. Особенно важно на системах с 2 ядрами и ограниченным RAM (у вас i686 — вероятно, ≤4 ГБ).

Не путайте с /dev/shm

/dev/shm — это уже tmpfs, используемый POSIX shared memory. Можно использовать её как быструю "общую память" между процессами, но не для постоянных файлов.

Для ESP/Arduino-сборок — отличный кандидат

Например, можно скопировать проект в ~/build-tmp, собрать, прошить — и удалить всё одной командой (sudo umount или просто rm -rf *).




Так же в этом разделе:
 
MyTetra Share v.0.67
Яндекс индекс цитирования