Tmpfs
tmpfs (temporary file system, временная файловая система; ранее известна как shmfs) — это виртуальная файловая система, создаваемая для хранения файлов в динамической (непостоянной) памяти. tmpfs обычно создаётся в ОЗУ.
Непостоянная память (такая как ОЗУ) не сохраняет файлы после остановки, перезагрузки или краха системы. Это очевидно из названия: tmpfs предназначается только для временных файлов. Лучшей практикой является хранение в tmpfs только восстановимых/воссоздаваемых файлов.
В Linux ramfs (random access memory file system) была заменена на tmpfs, так как старая реализация ramfs плохо справлялась в ситуациях, когда в системе кончалась оперативная память. tmpfs позволяет файловой системе динамически расширяться по мере необходимости до определённого заданного предела; после его достижения она будет использовать пространство раздела подкачки (если он есть в системе).
Есть много сценариев использования временной файловой системы в Linux, одним из них является выделение под каталог /tmp, которому не нужно физическое хранилище для постоянных данных.
При использовании systemd, каталог /tmp по умолчанию монтируется как tmpfs. См. данный раздел, чтобы отключить это поведение и монтировать его вручную через /etc/fstab.
Установка
Ядро
Необходимо включить следующие параметры ядра:
File systems --->
Pseudo filesystems --->
[*] Tmpfs virtual memory file system support (former shm fs)
[ ] Optional drivers
Параметры | Описание |
---|---|
Tmpfs POSIX Access Control Lists | Включение разрешений ACL. |
Tmpfs extended attributes | Включение поддержки метаданных. |
Использование
Создайте и смонтируйте tmpfs одним приёмом:
root #
mount -t tmpfs tmpfs /MOUNTPOINT
Пользователи могут указать параметр монтирования size для ограничения максимального размера файловой системы (по умолчанию — половина доступного объёма ОЗУ). Заметьте, что tmpfs не резервирует данную память, она выделяет только необходимый объём.
systemd
При использовании systemd каталог /tmp по умолчанию монтируется как tmpfs с выделением объёма, который система считает достаточным без чрезмерного потребления ОЗУ.
Пользователи могут просматривать временные файловые системы с помощью следующей команды:
root #
findmnt --target /tmp
Эта команда отобразит точку монтирования /tmp (если она является файловой системой tmpfs) и её размер.
Чтобы отключить такое поведение и вернуть назад управление над каталогом с помощью /etc/fstab, необходимо выполнить следующую команду:
root #
systemctl mask tmp.mount
Эта команда не будет больше монтировать /tmp в виде tmpfs и автоматически вернётся к блочному устройству.
Теперь необходимо добавить новую строку в /etc/fstab, которая вручную создаст tmpfs для /tmp.
tmpfs /tmp tmpfs rw,nosuid,noatime,nodev,size=4G,mode=1777 0 0
OpenRC
Пользователи OpenRC могут просто добавить точку монтирования в /etc/fstab:
tmpfs /tmp tmpfs rw,nosuid,noatime,nodev,size=4G,mode=1777 0 0
Другие возможные каталоги
Ниже приведён список каталогов, которые можно смонтировать в виде tmpfs для получения прироста производительности. Перед тем, как вручную смонтировать их через /etc/fstab, воспользуйтесь командой findmnt для проверки того, являются ли они уже точками монтирования tmpfs.
root #
findmnt --target /<directory-to-check>
Каталог | Назначение |
---|---|
/run | Переменные данные среды. Информация о работающей системе с момента загрузки, например, текущие пользователи и запущенные сервисы. Заметка
Обычно не требуется что-либо делать вручную, поскольку и OpenRC, и systemd монтируют /run в tmpfs по умолчанию. Если по какой-то причине вы делаете это вручную, не забудьте установить правильные разрешения (0755 / drwxr-xr-x)! |
/var/run | Переменные данные среды. Данный каталог содержит информацию о системе с момента загрузки. |
/var/lock | Файлы блокировок. Файлы, отслеживающие используемые ресурсы. |
Заключение
В результате использования временной файловой системы для непостоянных файлов, например для каталога /tmp, система становится очень быстрой и отзывчивой при кэшировании файлов и хранении данных сеансов. Это помогает также при использовании браузера для просмотра веб-ресурсов, так как куки-файлы сохраняются в этом непостоянном пространстве, и само приложение работает быстрее; при каждой перезагрузке они удаляются из ОЗУ. Если пользователям необходимо хранить временные файлы для анализа, тогда следует избегать использование файловой системы tmpfs для /tmp и других каталогов. Все данные в tmpfs будут потеряны при перезагрузке или отключении системы.
Улучшение технологии
Некоторые производители оборудования предоставляют устройства для кэширования, которые работают медленнее ОЗУ, но быстрее SSD. Эти устройства обычно исполняются в виде PCIe-карты и имеют адаптер от PCIe к разъёму M.2, либо всё запоминающее устройство встраивается в PCIe-карту.
Если пользователям необходимо универсальное энергонезависимое решение, которое будет быстрее устройств SSD/SAS/SATA, то можно использовать эти высокоскоростные решения. Конечно, в этом случае вместо монтирования устройства tmpfs следует использовать традиционную файловую систему.
Можно также использовать технологию наподобие Intel 3Dx Optane memory cache, однако она, несмотря на более универсальный подход, чем SSD, имеет тенденцию устаревать. Тем не менее, она обеспечивает блестящую промежуточную точку, которая будет только улучшаться по мере развития технологии в будущем и при правильной настройке обеспечивает гораздо более быструю работу.
Смотрите также
- Portage TMPDIR on tmpfs — It is unlikely that tmpfs will provide any performance gain for modern systems
- Zram — a Linux kernel feature and userspace tools for creating compressible RAM-based block devices.