Tmpfs

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Tmpfs and the translation is 98% complete.
Outdated translations are marked like this.
Other languages:


Resources

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.

Установка

Ядро

Необходимо включить следующие параметры ядра:

ЯДРО Включение поддержки tmpfs
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.

ФАЙЛ /etc/fstabtmpfs fstab example
tmpfs /tmp tmpfs rw,nosuid,noatime,nodev,size=4G,mode=1777 0 0

OpenRC

Пользователи OpenRC могут просто добавить точку монтирования в /etc/fstab:

ФАЙЛ /etc/fstabtmpfs fstab example
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 — Building packages in tmpfs both speeds up emerge times and reduces HDD/SSD wear.
  • Zram — a Linux kernel feature and userspace tools for creating compressible RAM-based block devices.