linux之tmpfs
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系统的性能。