1、概述

 tmpfs是ramfs的衍生品,ramfs是基于RAM的文件系统,不能使用swap空间;tmpfs可以动态释放空间、可以使用swap空间。ramfs不能控制使用内存的大小容易使内存爆掉;而tmpfs可以在mount的时候指定size来控制使用内存的大小,不会导致系统崩溃。tmapfs是存储在VM的文件系统,VM是linux的虚拟内存,由RM(物理内存)和swap组成。RM的读写性能优于swap,swap是物理磁盘虚拟出来的内存空间。具体tmpfs使用的是RM还是swap是不可控的,

这是由linux内核的vm子系统管理的。

tmpfs默认是物理内存大小的一半,比如物理内存是32G,那么tmpfs就是16G。这部分内存空间他并不会完全占用,只有挂载存储文件后才会占用相应大小的空间,例如

16G的tmpfs文件系统,存放了200M的文件那么它就只占用了200M的内存空间,其他的空间还是可以被其它程序调用。当删除了文件后,系统会动态的将文件占用的那部分内存进行回收。

 

2、使用

由于项目中用到高io、对读写性能要求都比较高,磁盘就不能满目需求,此时可以将这部分数据放到tmpfs,但是要确定数据不会是内存爆掉!自行估算,tmpfs默认使用一般的内存,如32G的内存,tmpfs会占用16G,当然可以mount时通过size参数指定大小。tmpfs是存储在虚拟内存的,所以不需要mkfs,直接挂载就可以使用:

#mount -t tmpfs  -o  size=16g  tmpfs  /data/spark-tmp

为了方便使用,添加到/etc/fstab自动挂载。

#vim  /etc/fstab

tmpfs       /data/spark-tmp    tmpfs      defaults,size=16g    0  0

 

3、对tmpfs进行扩容

可以直接写到/etc/fstab文件里面,通过size修改tmpfs的大小,size必须是整数。

#vim  /etc/fstab

tmpfs       /data/spark-tmp    tmpfs      defaults,size=19g    0  0

 

#mount  -o  remount  /data/spark-tmp

 

4、优缺点

优点:

1)可以动态调整大小; 2)能使用swap空间

缺点:

断电重启或者umount  tmpfs都会使数据丢失。

 

5、使用建议

适合存储socket、session等,对于高io的临时数据也可以选择进行存储,对于高io并且还需要持久化到磁盘的,需要通过其他手段,tmpfs可以提高linux系统的性能。

--------崔帅的拾荒