mirror of https://github.com/mkerrisk/man-pages
288 lines
6.8 KiB
Groff
288 lines
6.8 KiB
Groff
.\" Copyright (c) 2016 by Michael Kerrisk <mtk.manpages@gmail.com>
|
|
.\"
|
|
.\" %%%LICENSE_START(VERBATIM)
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
.\" preserved on all copies.
|
|
.\"
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
.\" permission notice identical to this one.
|
|
.\"
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
.\" have taken the same level of care in the production of this manual,
|
|
.\" which is licensed free of charge, as they might when working
|
|
.\" professionally.
|
|
.\"
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
.\" %%%LICENSE_END
|
|
.\"
|
|
.TH TMPFS 5 2021-03-22 "Linux" "Linux Programmer's Manual"
|
|
.SH NAME
|
|
tmpfs \- a virtual memory filesystem
|
|
.SH DESCRIPTION
|
|
The
|
|
.B tmpfs
|
|
facility allows the creation of filesystems whose contents reside
|
|
in virtual memory.
|
|
Since the files on such filesystems typically reside in RAM,
|
|
file access is extremely fast.
|
|
.PP
|
|
The filesystem is automatically created when mounting
|
|
a filesystem with the type
|
|
.BR tmpfs
|
|
via a command such as the following:
|
|
.PP
|
|
.in +4n
|
|
.EX
|
|
$ sudo mount \-t tmpfs \-o size=10M tmpfs /mnt/mytmpfs
|
|
.EE
|
|
.in
|
|
.PP
|
|
A
|
|
.B tmpfs
|
|
filesystem has the following properties:
|
|
.IP * 3
|
|
The filesystem can employ swap space when physical memory pressure
|
|
demands it.
|
|
.IP *
|
|
The filesystem consumes only as much physical memory and swap space
|
|
as is required to store the current contents of the filesystem.
|
|
.IP *
|
|
During a remount operation
|
|
.RI ( "mount\ \-o\ remount" ),
|
|
the filesystem size can be changed
|
|
(without losing the existing contents of the filesystem).
|
|
.PP
|
|
If a
|
|
.B tmpfs
|
|
filesystem is unmounted, its contents are discarded (lost).
|
|
.\" See mm/shmem.c:shmem_parse_options for options it supports.
|
|
.SS Mount options
|
|
The
|
|
.B tmpfs
|
|
filesystem supports the following mount options:
|
|
.TP
|
|
.BR size "=\fIbytes\fP"
|
|
Specify an upper limit on the size of the filesystem.
|
|
The size is given in bytes, and rounded up to entire pages.
|
|
.IP
|
|
The size may have a
|
|
.BR k ,
|
|
.BR m ,
|
|
or
|
|
.B g
|
|
suffix for Ki, Mi, Gi (binary kilo (kibi), binary mega (mebi), and binary giga
|
|
(gibi)).
|
|
.IP
|
|
The size may also have a % suffix to limit this instance to a percentage of
|
|
physical RAM.
|
|
.IP
|
|
The default, when neither
|
|
.B size
|
|
nor
|
|
.B nr_blocks
|
|
is specified, is
|
|
.IR size=50% .
|
|
.TP
|
|
.BR nr_blocks "=\fIblocks\fP"
|
|
The same as
|
|
.BR size ,
|
|
but in blocks of
|
|
.BR PAGE_CACHE_SIZE .
|
|
.IP
|
|
Blocks may be specified with
|
|
.BR k ,
|
|
.BR m ,
|
|
or
|
|
.B g
|
|
suffixes like
|
|
.BR size ,
|
|
but not a % suffix.
|
|
.TP
|
|
.BR nr_inodes "=\fIinodes\fP"
|
|
The maximum number of inodes for this instance.
|
|
The default is half of the number of your physical RAM pages, or (on a
|
|
machine with highmem) the number of lowmem RAM pages, whichever is smaller.
|
|
.IP
|
|
Inodes may be specified with
|
|
.BR k ,
|
|
.BR m ,
|
|
or
|
|
.B g
|
|
suffixes like
|
|
.BR size ,
|
|
but not a % suffix.
|
|
.TP
|
|
.BR mode "=\fImode\fP"
|
|
Set initial permissions of the root directory.
|
|
.TP
|
|
.BR gid "=\fIgid\fP (since Linux 2.5.7)"
|
|
.\" Technically this is also in some version of Linux 2.4.
|
|
.\" commit 099445b489625b80b1d6687c9b6072dbeaca4096
|
|
Set the initial group ID of the root directory.
|
|
.TP
|
|
.BR uid "=\fIuid\fP (since Linux 2.5.7)"
|
|
.\" Technically this is also in some version of Linux 2.4.
|
|
.\" commit 099445b489625b80b1d6687c9b6072dbeaca4096
|
|
Set the initial user ID of the root directory.
|
|
.TP
|
|
.BR huge "=\fIhuge_option\fR (since Linux 4.7.0)"
|
|
.\" commit 5a6e75f8110c97e2a5488894d4e922187e6cb343
|
|
Set the huge table memory allocation policy for all files in this instance (if
|
|
.B CONFIG_TRANSPARENT_HUGE_PAGECACHE
|
|
is enabled).
|
|
.IP
|
|
The
|
|
.I huge_option
|
|
value is one of the following:
|
|
.RS
|
|
.TP
|
|
.B never
|
|
Do not allocate huge pages.
|
|
This is the default.
|
|
.TP
|
|
.B always
|
|
Attempt to allocate huge pages every time a new page is needed.
|
|
.TP
|
|
.B within_size
|
|
Only allocate huge page if it will be fully within
|
|
.IR i_size .
|
|
Also respect
|
|
.BR fadvise (2)/ madvise (2)
|
|
hints
|
|
.TP
|
|
.B advise
|
|
Only allocate huge pages if requested with
|
|
.BR fadvise (2)/ madvise (2).
|
|
.TP
|
|
.B deny
|
|
For use in emergencies, to force the huge option off from all mounts.
|
|
.TP
|
|
.B force
|
|
Force the huge option on for all mounts; useful for testing.
|
|
.RE
|
|
.TP
|
|
.BR mpol "=\fImpol_option\fR (since Linux 2.6.15)"
|
|
.\" commit 7339ff8302fd70aabf5f1ae26e0c4905fa74a495
|
|
Set the NUMA memory allocation policy for all files in this instance (if
|
|
.B CONFIG_NUMA
|
|
is enabled).
|
|
.IP
|
|
The
|
|
.I mpol_option
|
|
value is one of the following:
|
|
.RS
|
|
.TP
|
|
.B default
|
|
Use the process allocation policy (see
|
|
.BR set_mempolicy (2)).
|
|
.TP
|
|
.BR prefer ":\fInode\fP"
|
|
Preferably allocate memory from the given
|
|
.IR node .
|
|
.TP
|
|
.BR bind ":\fInodelist\fP"
|
|
Allocate memory only from nodes in
|
|
.IR nodelist .
|
|
.TP
|
|
.B interleave
|
|
Allocate from each node in turn.
|
|
.TP
|
|
.BR interleave ":\fInodelist\fP"
|
|
Allocate from each node of
|
|
.I in
|
|
turn.
|
|
.TP
|
|
.B local
|
|
Preferably allocate memory from the local node.
|
|
.RE
|
|
.IP
|
|
In the above,
|
|
.I nodelist
|
|
is a comma-separated list of decimal numbers and ranges
|
|
that specify NUMA nodes.
|
|
A range is a pair of hyphen-separated decimal numbers,
|
|
the smallest and largest node numbers in the range.
|
|
For example,
|
|
.IR mpol=bind:0\-3,5,7,9\-15 .
|
|
.SH VERSIONS
|
|
The
|
|
.B tmpfs
|
|
facility was added in Linux 2.4, as a successor to the older
|
|
.B ramfs
|
|
facility, which did not provide limit checking or
|
|
allow for the use of swap space.
|
|
.SH NOTES
|
|
In order for user-space tools and applications to create
|
|
.B tmpfs
|
|
filesystems, the kernel must be configured with the
|
|
.B CONFIG_TMPFS
|
|
option.
|
|
.PP
|
|
The
|
|
.BR tmpfs
|
|
filesystem supports extended attributes (see
|
|
.BR xattr (7)),
|
|
but
|
|
.I user
|
|
extended attributes are not permitted.
|
|
.PP
|
|
An internal shared memory filesystem is used for
|
|
System V shared memory
|
|
.RB ( shmget (2))
|
|
and shared anonymous mappings
|
|
.RB ( mmap (2)
|
|
with the
|
|
.B MAP_SHARED
|
|
and
|
|
.BR MAP_ANONYMOUS
|
|
flags).
|
|
This filesystem is available regardless of whether
|
|
the kernel was configured with the
|
|
.B CONFIG_TMPFS
|
|
option.
|
|
.PP
|
|
A
|
|
.B tmpfs
|
|
filesystem mounted at
|
|
.IR /dev/shm
|
|
is used for the implementation of POSIX shared memory
|
|
.RB ( shm_overview (7))
|
|
and POSIX semaphores
|
|
.RB ( sem_overview (7)).
|
|
.PP
|
|
The amount of memory consumed by all
|
|
.B tmpfs
|
|
filesystems is shown in the
|
|
.I Shmem
|
|
field of
|
|
.IR /proc/meminfo
|
|
and in the
|
|
.I shared
|
|
field displayed by
|
|
.BR free (1).
|
|
.PP
|
|
The
|
|
.B tmpfs
|
|
facility was formerly called
|
|
.BR shmfs .
|
|
.SH SEE ALSO
|
|
.BR df (1),
|
|
.BR du (1),
|
|
.BR memfd_create (2),
|
|
.BR mmap (2),
|
|
.BR set_mempolicy (2),
|
|
.BR shm_open (3),
|
|
.BR mount (8)
|
|
.PP
|
|
The kernel source files
|
|
.IR Documentation/filesystems/tmpfs.txt
|
|
and
|
|
.IR Documentation/admin\-guide/mm/transhuge.rst .
|