Введение
Временная файловая система на Unix-подобных системах
tmpfs (сокращение от Temporary File System) — это механизм временного хранения файлов, реализованный во многих Unix-подобных операционных системах. Он предназначен для работы как смонтированная файловая система, но данные хранятся в оперативной памяти, а не на постоянном носителе информации. Аналогичная конструкция — RAM-диск, который представляется как виртуальный дисковый накопитель и содержит дисковую файловую систему.
Реализация
Существует несколько независимых реализаций концепции tmpfs. Одна из первых была разработана Sun Microsystems для SunOS, а другие операционные системы, такие как BSD и Linux, предложили собственные варианты.
Линукс
tmpfs поддерживается ядром Linux, начиная с версии 2.4 (4 января 2001 года). Linux tmpfs (ранее известная как shm fs) основана на коде ramfs, используемом при загрузке системы, и также использует кэш страниц, но, в отличие от ramfs, поддерживает выгрузку менее используемых страниц в файл подкачки, а также имеет ограничения на размер файловой системы и количество inode для предотвращения нехватки памяти (по умолчанию – половина физической оперативной памяти и половина количества страниц памяти соответственно).
БСД
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 из-за недостатка поддержки.
Преимущества
Благодаря более высокой скорости оперативной памяти по сравнению с дисковым хранилищем, tmpfs позволяет кэшу работать значительно быстрее при хранении в ней, что повышает общую эффективность системы. Однако операционные системы с кэшем страниц получат меньший выигрыш, так как недавно использованные страницы файлов останутся в памяти, если достаточно свободной памяти. Поскольку содержимое оперативной памяти очищается при перезагрузке, tmpfs предотвращает захламление системы, избавляя пользователя от необходимости вручную удалять временные файлы. Кроме того, хранение файлов в оперативной памяти предотвращает быстрое заполнение дисков и увеличивает срок службы твердотельных накопителей за счет уменьшения количества операций записи.
Недостатки
На системах, где отсутствует пространство подкачки, или когда оно заполнено, tmpfs может потреблять значительный объем памяти. Если кэш-файлы хранятся в tmpfs, программы будут терять свои кэшированные данные после перезагрузки.