- TMPFS
tmpfs is a common name for a temporary file storage facility on many
Unix -like operating systems. It is intended to appear as a mountedfile system , but one which usesvirtual memory instead of a persistent storage device.Semantics
Everything stored in tmpfs is temporary in the sense that no files will be created on the
hard drive ; however, swap space is used as backing store in case of low memory situations. On reboot, everything in tmpfs will be lost.The memory used by tmpfs grows and shrinks to accommodate the files it contains and can be swapped out to swap space.
Many Unix distributions enable and use tmpfs by default for the
/tmp branch of the file system or forshared memory . This can be observed with df as in this example:Filesystem Size Used Avail Use% Mounted on tmpfs 256M 688K 256M 1% /tmp
Implementations
SunOS / Solaris
SunOS , and later Solaris, include some of the earliest implementations of tmpfs; [cite web
url = http://www.solarisinternals.com/si/reading/tmpfs.pdf
title = tmpfs: A Virtual Memory File System
accessdate = 2007-05-07
author = Peter Snyder
format = PDF] it first appeared in SunOS 4.1, released in March 1990. [cite web
url = http://www.sun3arc.org/papers/Perf/SunOS_4.1_performance_tuning.ps.gz
title = SunOS 4.1 Performance Tuning
accessdate = 2007-05-07
author = Hal L. Stern
format =GZip ped PostScript] As of Solaris 2.1 (November 1994), /tmp is by default a tmpfs file system.Linux
tmpfs is supported by the
Linux kernel from version 2.4 and up. [cite web
url = http://www-128.ibm.com/developerworks/library/l-fs3.html
title = Advanced filesystem implementor's guide
accessdate = 2007-05-07
author = Daniel Robbins
authorlink = Daniel Robbins
date = September 1, 2001
quote = Article describing the Linux implementation] tmpfs (previously known as shmfs) distinguishes itself from the Linuxramdisk device by allocating memory dynamically and by allowing less-used pages to be moved onto swap space. RAMFS, in contrast, does not make use ofvirtual memory (which can be an advantage or disadvantage). In addition, MFS and some older versions of ramfs did not grow and shrink dynamically and instead used a fixed amount of memory at all times.Usage of tmpfs for example is "mount -t tmpfs -o size=1G,nr_inodes=10k,mode=0700 tmpfs /space" which will allow up to 1
GiB in RAM/swap with 10240 inodes and only accessible by the owner of the directory /space. The filesystem's maximum size can also be changed on-the-fly, like "mount -o remount,size=2G /space".BSD
tmpfs was merged into the official
NetBSD source tree on September 10, 2005. [cite web
url = http://netbsd-soc.sourceforge.net/projects/tmpfs/
title = NetBSD-SoC: Efficient memory file-system
accessdate = 2007-05-07
author = Julio M. Merino Vidal
date = February 24, 2006]FreeBSD has ported NetBSD's implementation and is available in 7.0 and later versions.Microsoft Windows
Windows systems have a rough analog to tmpfs in the form of "temporary files". Files created with both FILE_ATTRIBUTE_TEMPORARY and FILE_FLAG_DELETE_ON_CLOSE are held in memory and only written to disk if the system experiences low memory pressure. In this way they behave like tmpfs, except the files are written to the specified path during low memory situations rather than swap space. This technique is often used by servers along with TransmitFile to render content to a buffer before sending to the client.
References
* [http://lxr.linux.no/source/Documentation/filesystems/tmpfs.txt Documentation/filesystems/tmpfs.txt] documentation in Linux source tree
* [http://docs.sun.com/app/docs/doc/817-3947/6mjgnrler?l=en&a=view tmpfs(7FS)] Solaris 10 man page
* [http://netbsd.gw.com/cgi-bin/man-cgi?mount_tmpfs+8+NetBSD-current mount_tmpfs(8)] NetBSD man page
Wikimedia Foundation. 2010.