tmpfs介绍与使用

1 Tmpfs是什么

tmpfs是一种虚拟内存文件系统,而不是块设备。是基于内存的文件系统,建立时不须要使用mkfs等初始化
它最大的特色就是它的存储空间在VM(virtual memory),VM是由linux内核里面的vm子系统管理的。
linux下面VM的大小由RM(Real Memory)和swap组成,RM的大小就是物理内存的大小,而Swap的大小是由本身决定的。
Swap是经过硬盘虚拟出来的内存空间,所以它的读写速度相对RM(Real Memory)要慢许多,当一个进程申请必定数量的内存时,如内核的vm子系统发现没有足够的RM时,就会把RM里面的一些不经常使用的数据交换到Swap里面,若是须要从新使用这些数据再把它们从Swap交换到RM里面。若是有足够大的物理内存,能够不划分Swap分区。linux

VM由RM+Swap两部分组成,所以tmpfs最大的存储空间可达(The size of RM + The size of Swap)。 可是对于tmpfs自己而言,它并不知道本身使用的空间是RM仍是Swap,这一切都是由内核的vm子系统管理的。
tmpfs默认的大小是RM的一半,假如你的物理内存是1024M,那么tmpfs默认的大小就是512M
通常状况下,是配置的小于物理内存大小的。
tmpfs配置的大小并不会真正的占用这块内存,若是/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;若是它最大为1G,里头放有100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是不会被系统回收从新划分的。
当删除tmpfs中文件,tmpfs 文件系统驱动程序会动态地减少文件系统并释放 VM 资源。优化

优点 :spa

一、 动态文件系统的大小。进程

二、tmpfs 的另外一个主要的好处是它闪电般的速度。由于典型的tmpfs文件系统会彻底驻留在内存 RAM 中,读写几乎能够是瞬间的。同时它也有一个缺点tmpfs数据在从新启动以后不会保留,由于虚拟内存本质上就是易失的。因此有必要作一些脚本作诸如加载,绑定的操做。内存

注意:tmpfs不具有持久性,重启后数据不保留,请务必注意。资源

2 Tmpfs大小调整

有时候,当应用程序使用到Tmpfs时,而在部署的时候若是没有对应用程序占用的内存作足够的评估时,就有可能把Tmpfs用满,这个时候就须要调整Tmpfs的大小了,固然,调整的大小不能大于你机器内存大小,不然,你只能换机器了,又或是优化你的应用程序。部署

能够看到tmpfs的大小为3G,好比咱们想调整到5G。配置

1) umount tmpfs程序

在这里要注意,因为umount会把卸载tmpfs文件系统,意味着你的应用程序使用的共享内存将会被删除,若是数据较重要,在umount前记得备份。数据

root@TENCENT64 /dev]# umount /dev/shm
umount: /dev/shm: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))

这里能够看到,umount失败了,缘由比较明显,/dev/shm被其它进程使用了,因此在umount前须要把使用/dev/shm的全部进程都停掉。

如错误说明,可使用fuser –km /dev/shm命令把加载的进程都kill掉,再进行umount

fuser –km /dev/shm
umount /dev/shm

2) 调整tmpfs的大小

经过修改/etc/fstab文件来修改/dev/shm的容量,在文件中修改tmpfs行,以下图:

0 0

修改后,从新mount tmpfs便可。

mount /dev/shm
相关文章
相关标签/搜索