tmpfs文档

云计算分享者 2024-02-23 03:32:34
tmpfs是一个将所有文件保存在内存中的文件系统. 在tmpfs中的所有文件都会存在内存中的,如果这个文件系统被卸载了,那么所有的东西都没有了. tmpfs将所有的内容放到kernel的内部cache中,其占用的空间会随着文件的增加/减少而增大/减少,而且其内容可以被交换到swap空间中.其有最大可以占用的空间,这个最大空间可以被`mount -o remount ...`来进行改变. 和ramfs相比,tmpfs中的内容可以被交互到swap空间中,文件系统占用的大小也可以被限制(ramfs可以一直使用到把内存吃完).和ram disk(/dev/ram*)相比,ramdisk只能使用固定的大小,而且还需要在上面创建文件系统. tmpfs完全在内核的page cache和swap空间中,所有的tmpfs pages在/proc/meminfo中显示为Shmem,在free命令中显示为Shared.因为shmem也可能在其他情况下被使用.所以shared现实的不全都是tmpfs的. tmpfs一般有如下的用处: 1.kernel总是维护着一个内部使用的tmpfs,这个tmpfs在user space不能看到.其被用到shared anonymous mapping和sysv shared memroy中. 这部分完全和CONFIG_TMPFS编译参数无关.如果CONFIG_TMPFS没有设置,那么用户无法使用tmpfs,但是这个内部的tmpfs总是存在的. 2.glibc >=2.2版本需要有一个tmpfs挂载在/dev/shm上,这样POSIX shared memory才能正常工作(shm_open,shm_unlink).一般在/etc/fstab中有这句话就可以了. tmpfs /dev/shm tmpfs defaults 0 0对应SYSV shared memory,这个挂载点不是必选的. tmpfs有3个mount options,这些选项用来处理tmpfs的大小: size: 这个tmpfs使用的字节数. 默认值为物理内存的一半. nr_blocks: 和size相同,单位是PAGE_SIZE nr_inodes: 文件系统中最大的inode数量.默认值为物理内存页的一半. 这些参数可以有k,m,g的后缀,而且可以在remount的时候修改.也可以使用对于物理内存的百分比,比如在size和nr_blocks都没有使用的时候,就是size=50% 如果nr_blocks=0(或者size=0),那么这个tmpfs中的block不会被限制,如果nr_inodes=0,那么inode不会被限制.一般不要这样设置tmpfs的大小.因为这样任何有权限写入这个tmpfs的用户都可以把系统的内存吃完. mount -t tmpfs -o size=10G,nr_inodes=10k,mode=700 tmpfs /mytmpfs上面的命令会在/mytmpfs上挂载一个tmp文件系统,其最多可以使用10G RAM/SWAP内存,有10240个inodes,只能被root访问 下面的内容时我的一台机器上的tmpfs挂载情况.可以看到,很多值需要零时存放数据的. tmpfs /dev/shm tmpfs rw,relatime 0 0tmpfs /run tmpfs rw,relatime,mode=755 0 0tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0
0 阅读:0

云计算分享者

简介:感谢大家的关注