tmpfs - это парадигма хранения временных файлов, реализованная во многих Unix-подобных операционных системах. Он должен отображаться как смонтированная файловая система, но данные хранятся в энергозависимой памяти вместо постоянного запоминающего устройства. Подобная конструкция представляет собой RAM-диск, который выглядит как виртуальный диск и содержит дисковую файловую систему.
Все, что хранится в tmpfs, является временным в том смысле, что никакие файлы не будут создаваться напрямую на энергонезависимая память, такая как жесткий диск (хотя пространство подкачки используется в качестве резервного хранилища в случае нехватки памяти). При перезагрузке все в tmpfs будет потеряно.
Память, используемая tmpfs, увеличивается и уменьшается для размещения содержащихся в ней файлов.
Многие дистрибутивы Unix включают и используют tmpfs по умолчанию для ветви / tmp файловой системы или для разделяемой памяти. Это можно наблюдать с помощью df, как в этом примере:
Размер используемой файловой системы Доступность Использование% Установлено на tmpfs 256M 688K 256M 1% / tmp
В некоторых дистрибутивах Linux (например, Debian, Ubuntu), / tmp - обычный каталог, но / dev / shm использует tmpfs.
Есть несколько независимых вариантов концепции tmpfs. Один из первых был разработан Sun Microsystems для SunOS, а другие операционные системы, такие как BSD и Linux, предоставили свои собственные.
SunOS 4 включает, скорее всего, самую раннюю реализацию tmpfs; он впервые появился в SunOS 4.0 в конце 1987 года вместе с новым управлением ортогональным адресным пространством, которое позволяло отображать в память любой объект.
Каталог Solaris / tmp был преобразован в tmpfs. файловая система по умолчанию, начиная с Solaris 2.1, выпущенной в декабре 1992 года. В выводе для команды Solaris df
будет отображаться подкачка как фоновое хранилище для любого тома tmpfs:
# df -k Файловая система, килобайты используемой доступной емкости Установлен на своп 601592 0 601592 0% / tmp / test
tmpfs поддерживается ядром Linux, начиная с версии 2.4. Linux tmpfs (ранее известный как shmfs ) основан на коде ramfs, используемом во время загрузки, и также использует кеш страниц, но в отличие от ramfs он поддерживает замену менее используемых страниц для подкачки пространства, а также размер файловой системы и ограничения inode для предотвращения ситуаций нехватки памяти (по умолчанию половина физической RAM и половина количества страниц RAM соответственно).
4.2BSD представила MFS, файловая система на основе памяти, реализованная путем применения существующей дисковой файловой системы FFS к области виртуальной памяти.
tmpfs, файловая система в памяти, реализованная с использованием обычных структур данных в памяти для повышения производительности MFS, была объединена с официальным деревом исходных текстов NetBSD 10 сентября 2005 г.; он доступен в версиях 4.0 и более поздних.
FreeBSD перенесла реализацию NetBSD, где она доступна в 7.0 и более поздних версиях.
DragonFly BSD также перенесла реализацию NetBSD, где она доступна в 2.5.1 и более поздних версиях.
OpenBSD также перенесла реализацию tmpfs NetBSD, первоначально начатую Педро Мартеллетто и улучшенную многими другими. Он был включен в сборках с 17 декабря 2013 года. Первым выпуском OpenBSD с включенным tmpfs был 5.5. OpenBSD 6.0 отключил tmpfs из-за отсутствия поддержки.