tmpfs

Source: Wikipedia, the free encyclopedia.

tmpfs (short for Temporary File System) is a

disk file system
.

Semantics

Everything stored in tmpfs is temporary in the sense that no files will be directly created on

reboot
, everything in tmpfs will be lost.

The memory used by tmpfs grows and shrinks to accommodate the files it contains.

Many Unix

shared memory. This can be observed with df
as in this example:

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

Some Linux distributions (e.g. Debian) do not have a tmpfs mounted on

/tmp
by default; in this case, files under /tmp will be stored in the same file system as /.

And on almost all Linux distributions, a tmpfs is mounted on /run/ or /var/run/ to store temporary run-time files such as

Unix domain sockets
.

Implementations

There are several independent variants of the tmpfs concept. One of the earliest was developed by Sun Microsystems for SunOS, and other operating systems like the BSDs and Linux provided their own.

SunOS

SunOS 4 includes what is most likely the earliest implementation of tmpfs; it first appeared in SunOS 4.0 in late 1987, together with new orthogonal address space management that allowed any object to be memory mapped.[1][2]

The

Solaris /tmp directory was made a tmpfs file system by default starting with Solaris 2.1,[3] released in December 1992.[4]
Output for the Solaris df command will show swap as the background storage for any tmpfs volume:

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

Linux

tmpfs is supported by the Linux kernel beginning in version 2.4 (January 4, 2001).[5] Linux tmpfs (previously known as shm fs)[6] is based on the ramfs code used during bootup and also uses the page cache, but unlike ramfs it supports swapping out less-used pages to swap space, as well as filesystem size and inode limits to prevent out of memory situations (defaulting to half of physical RAM and half the number of RAM pages, respectively).[7]

BSD

4.2BSD introduced MFS,[8] a memory-based file system implemented by applying the existing FFS disk filesystem to a virtual memory region.

tmpfs, a memory filesystem implemented using conventional in-memory data structures in order to improve on the performance of MFS, was merged into the official NetBSD source tree on September 10, 2005;[9] it is available in 4.0 and later versions.

FreeBSD has ported NetBSD's implementation, where it is available in 7.0 and later versions.[10]

DragonFly BSD has also ported NetBSD's implementation, where it is available in 2.5.1 and later versions.

OpenBSD ported NetBSD's tmpfs implementation as well, initially started by Pedro Martelletto and improved by many others. It was enabled in builds from December 17, 2013.[11] The first release of OpenBSD with tmpfs included was 5.5.[12] OpenBSD 6.0 disabled tmpfs due to lack of maintenance.

Advantages

Due to the higher speeds of RAM compared to disk storage, tmpfs allows cache to be much faster when stored in one, leading to a more efficient overall system, though operating systems with a page cache will see less benefit as recently-used file pages will remain in-memory if free memory is sufficient. Since RAM is cleared upon reboot, tmpfs prevents systems from becoming too cluttered without requiring that the user manually deletes temporary files. In addition, storing files in RAM prevents disks from filling up too quickly and extends the life of solid-state drives by reducing the number of writes.

Disadvantages

On systems without

swap space
, or where swap space is running low, tmpfs may consume large amounts of memory.

If cache files are stored in tmpfs, programs will lose their cached data across reboots.

References

  1. ^ Peter Snyder. "tmpfs: A Virtual Memory File System" (PDF). Retrieved 2007-05-07.
  2. GZipped
    PostScript)
    on 2012-02-07. Retrieved 2007-05-07.
  3. ^ "SPARC: Installing Solaris Software" (PDF). SunSoft. December 1992. p. 9. Retrieved April 23, 2019.
  4. ^ "Solaris Operating System (Unix)". operating-system.org.
  5. IBM DeveloperWorks. Archived from the original
    on 2012-02-03. Retrieved 2013-02-15.
  6. on 2012-02-03. Retrieved 2013-02-15.
  7. ^ Christoph Rohland; Hugh Dickins; KOSAKI Motohiro. "tmpfs.txt". kernel.org. Retrieved 2010-03-16.
  8. ^ "NetBSD mount_mfs(8) man page". 2007-12-08. Retrieved 2013-02-15.
  9. ^ Julio M. Merino Vidal (2006-02-24). "NetBSD-SoC: Efficient memory file-system". Retrieved 2013-02-15.
  10. ^ Xin LI (2013-04-23). "FreeBSD tmpfs(5) manpage". Retrieved 2008-12-02.
  11. ^ "CVS: cvs.openbsd.org: src - enable tmpfs so it gets tested some more".
  12. ^ "OpenBSD 5.5". 2014-05-01. Retrieved 2014-05-01.

External links

This page is based on the copyrighted Wikipedia article: Tmpfs. Articles is available under the CC BY-SA 3.0 license; additional terms may apply.Privacy Policy