tmpfs - tmpfs

tmpfs - это парадигма временного файлового хранилища, реализованная во многих Unix-подобных операционных системах. Он должен выглядеть как смонтированная файловая система , но данные хранятся в энергозависимой памяти, а не на постоянном запоминающем устройстве. Похожая конструкция представляет собой RAM-диск , который выглядит как виртуальный диск и содержит файловую систему диска .

Семантика

Все, что хранится в tmpfs, является временным в том смысле, что никакие файлы не будут создаваться напрямую в энергонезависимом хранилище, таком как жесткий диск (хотя пространство подкачки используется в качестве резервного хранилища в случае нехватки памяти). При перезагрузке все в tmpfs будет потеряно.

Память, используемая tmpfs, увеличивается и уменьшается для размещения содержащихся в ней файлов.

Многие дистрибутивы Unix включают и используют tmpfs по умолчанию для ветви / tmp файловой системы или для общей памяти . Это можно наблюдать с помощью df, как в этом примере:

Filesystem            Size  Used Avail Use% Mounted on
tmpfs                 256M  688K  256M   1%  /tmp

Однако в некоторых дистрибутивах Linux, таких как Debian, tmpfs по умолчанию не смонтирован в / tmp ; в этом случае файлы в / tmp будут храниться в той же файловой системе, что и / .

И почти во всех дистрибутивах Linux tmpfs монтируется в / run / или / var / run / для хранения временных файлов времени выполнения, таких как файлы PID и сокеты домена Unix.

Реализации

Существует несколько независимых вариантов концепции tmpfs. Одна из первых была разработана Sun Microsystems для SunOS, а другие операционные системы, такие как BSD и Linux, предоставили свои собственные.

SunOS

SunOS 4, скорее всего, является самой ранней реализацией tmpfs; он впервые появился в SunOS 4.0 в конце 1987 года вместе с новым управлением ортогональным адресным пространством, которое позволяло отображать в память любой объект.

Solaris / TMP каталог был сделан TMPFS файловой системы по умолчанию , начиная с Solaris 2.1, выпущенный в декабре 1992 года выход для Solaris dfкоманда покажет своп в качестве фона для хранения любого объема TMPFS:

# df -k
Filesystem  kbytes  used   avail capacity  Mounted on
swap        601592     0  601592     0%    /tmp/test

Linux

tmpfs поддерживается ядром Linux, начиная с версии 2.4. Linux tmpfs (ранее известный как shmfs ) основан на коде ramfs, используемом во время загрузки, а также использует кеш страниц, но в отличие от ramfs он поддерживает замену менее используемых страниц для подкачки пространства, а также размер файловой системы и ограничения inode для предотвращения выхода. ситуаций с памятью (по умолчанию половина физического ОЗУ и половина количества страниц ОЗУ, соответственно).

BSD

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 из-за отсутствия поддержки.

Рекомендации

Внешние ссылки