tmpfs
tmpfs (сокращение от Temporary File реализованная System , 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 монтируется /запустить/ или /var/run/ для хранения временных файлов времени выполнения, таких как файлы PID и сокеты домена Unix .
Реализации
[ редактировать ]Существует несколько независимых вариантов концепции tmpfs. Одна из первых была разработана Sun Microsystems для SunOS, а другие операционные системы, такие как BSD и Linux, предоставили свои собственные.
СанОС
[ редактировать ]SunOS 4 включает, скорее всего, самую раннюю реализацию tmpfs; Впервые он появился в SunOS 4.0 в конце 1987 года вместе с новым управлением ортогональным адресным пространством, которое позволяло отображать в памяти любой объект. [1] [2]
Солярис Каталог /tmp по умолчанию стал файловой системой tmpfs, начиная с Solaris 2.1, [3] выпущен в декабре 1992 года. [4] Выход для Соляриса df
команда покажет swap в качестве фонового хранилища для любого тома tmpfs:
# df -k Filesystem kbytes used avail capacity Mounted on swap 601592 0 601592 0% /tmp/test
Линукс
[ редактировать ]tmpfs поддерживается ядром Linux , начиная с версии 2.4 (4 января 2001 г.). [5] Linux tmpfs (ранее известный как shm fs ) [6] основан на коде ramfs, используемом во время загрузки, а также использует кэш страниц , но в отличие от ramfs он поддерживает замену менее используемых страниц на пространство подкачки, а также ограничение размера файловой системы и индексных дескрипторов для предотвращения ситуаций нехватки памяти (по умолчанию — половина физическое ОЗУ и половина количества страниц ОЗУ соответственно). [7]
БСД
[ редактировать ]В 4.2BSD появилась MFS, [8] файловая система на основе памяти, реализованная путем применения существующей файловой системы диска FFS к области виртуальной памяти.
tmpfs, файловая система памяти, реализованная с использованием обычных структур данных в памяти для повышения производительности MFS, была объединена с официальным деревом исходного кода NetBSD 10 сентября 2005 г.; [9] он доступен в версии 4.0 и более поздних версиях.
FreeBSD перенесла реализацию NetBSD, где она доступна в версиях 7.0 и более поздних версиях. [10]
DragonFly BSD также перенесла реализацию NetBSD, где она доступна в версиях 2.5.1 и более поздних.
OpenBSD также перенесла реализацию tmpfs из NetBSD, первоначально начатую Педро Мартеллетто и улучшенную многими другими. Он был включен в сборках от 17 декабря 2013 года. [11] Первой версией OpenBSD с включенным tmpfs была версия 5.5. [12] OpenBSD 6.0 отключил tmpfs из-за отсутствия обслуживания.
Microsoft Windows
[ редактировать ]В Microsoft Windows создавайте файлы, используя Флаг FILE_ATTRIBUTE_TEMPORARY заставит файловые системы избегать обратной записи данных в энергонезависимое хранилище, если доступно достаточно кэш-памяти. [13]
Преимущества
[ редактировать ]Из-за более высокой скорости оперативной памяти по сравнению с дисковым хранилищем, tmpfs позволяет кэшу работать намного быстрее при хранении в одном хранилище, что приводит к более эффективной системе в целом, хотя операционные системы со страничным кэшем будут видеть меньшую выгоду, поскольку недавно использованные файловые страницы будут оставаться в памяти, если свободной памяти достаточно. Поскольку ОЗУ очищается при перезагрузке, tmpfs предотвращает загромождение системы, не требуя от пользователя удаления временных файлов вручную. Кроме того, хранение файлов в оперативной памяти предотвращает слишком быстрое заполнение дисков и продлевает срок службы твердотельных накопителей за счет уменьшения количества операций записи.
Недостатки
[ редактировать ]В системах без пространства подкачки или в системах, где пространство подкачки заканчивается, tmpfs может потреблять большие объемы памяти.
Если файлы кэша хранятся в tmpfs, программы потеряют свои кэшированные данные при перезагрузке.
Ссылки
[ редактировать ]- ^ Питер Снайдер. «tmpfs: файловая система виртуальной памяти» (PDF) . Проверено 7 мая 2007 г.
- ^ Хэл Л. Стерн. «Настройка производительности SunOS 4.1» . Архивировано из оригинала ( GZipped PostScript) 7 февраля 2012 г. Проверено 7 мая 2007 г.
- ^ «SPARC: Установка программного обеспечения Solaris» (PDF) . СанСофт. Декабрь 1992 г. с. 9 . Проверено 23 апреля 2019 г.
- ^ «Операционная система Solaris (Unix)» . операционная система.org .
- ^ Дэниел Роббинс (1 сентября 2001 г.). «Общие темы: Руководство по внедрению расширенной файловой системы, часть 3» . IBM DeveloperWorks . Архивировано из оригинала 3 февраля 2012 г. Проверено 15 февраля 2013 г.
- ^ Дэниел Роббинс (1 сентября 2001 г.). «Общие темы: Руководство по внедрению расширенной файловой системы, часть 3» . IBM DeveloperWorks . Архивировано из оригинала 3 февраля 2012 г. Проверено 15 февраля 2013 г.
- ^ Кристоф Роланд; Хью Дикинс; ЛОЖЬ Мотохиро. "tmpfs.txt " ядро.орг . Проверено 1 марта 2010 г.
- ^ «Справочная страница NetBSD mount_mfs(8)» . 08.12.2007 . Проверено 15 февраля 2013 г.
- ^ Хулио М. Мерино Видаль (24 февраля 2006 г.). «NetBSD-SoC: эффективная файловая система памяти» . Проверено 15 февраля 2013 г.
- ^ Синь Ли (23 апреля 2013 г.). «Справочная страница FreeBSD tmpfs(5)» . Проверено 2 декабря 2008 г.
- ^ «CVS: cvs.openbsd.org: src — включите tmpfs, чтобы его еще раз протестировали» .
- ^ «ОпенБСД 5.5» . 01.05.2014 . Проверено 1 мая 2014 г.
- ^ Альвинашкрафт (9 февраля 2023 г.). «Функция CreateFileA (fileapi.h) — приложения Win32» . Learn.microsoft.com . Проверено 27 июня 2024 г.
Внешние ссылки
[ редактировать ]- «Справочная страница Solaris tmpfs(7FS)» . Проверено 25 февраля 2013 г.
- «Документация Kernel.org tmpfs» . Проверено 5 октября 2015 г.