linux系统中的tmpfs

简介

tmpfs是临时文件系统的意思,但是他又不是普通的文件系统,因为他不是物理磁盘上的空间,而是内存中的一块空间,

但却以物理磁盘分区的方式展示给用户,让用户操作这块空间。tmpfs不需要mkfs命令来格式化,这是他与文件系统的区别。

默认情况下最大占用物理内存一半大小的空间。

出现历程

tmpfs出现的历程是这样的,一开始有RamDisk这种技术,这种技术提供一种将内存直接作为分区来使用的能力,且分配给RamDisk的空间是写死的,设定好后不会改变。这个特征利用得不好会对内存产生浪费。

后来,人们在编码过程中发现,所有程序几乎都会产生临时文件,在硬盘上读写大量临时文件会影响计算机性能。于是有人开始把临时文件写入RamDisk中来提高程序运行性能。

然后在Linux2.4内核中,引入了一个全新的文件系统(分区)-tmpfs,来统一解决这一类问题,POSIX标准里,/dev/shm目录就是默认的tmpfs文件系统的挂载点。

tmpfs类似于RamDisk,它可以直接使用内存,也可以使用交换分区。tmpfs使用虚拟内存子系统的页面来存储文件,tmpfs不管这些页面到底在物理内存还是在交换分区中,具体存储位置完全交给虚拟内存管理,这和普通用户进程使用的虚拟内存一样。理解了这些,自然就明白了tmpfs这个文件系统和普通的ext2,ext3之类的文件系统之间的区别了。

使用方式

使用tmpfs的方式也很简单

mount tmpfs /tmp -t tmpfs -o size=4098M
t表示类型,也就是要挂载文件系统的类型,表明你要挂载的tmpfs是一个tmpfs文件系统;o表示选项,选项里的一个size=100M表示大小是100M,之后就是挂载到/tmp目录

所有使用/tmp目录作为临时目录的程序都会得到很好的速度提升,注意如果不制定使用空间的上限,是有把内存耗尽的可能的,最优的数值设定取决于你机器的负载状态,

需要进行调优设定,另外还是可以通过nr_inodes=x参数来设定文件索引节点的数量,限制的是最大文件数量。