linux 内存盘 tmpfs
Contents
linux 内存盘 tmpfs
|
|
把内存当硬盘, 提速你的 linux 系统
场景: 电脑内存太大用不了那么多, 空着浪费, 所以利用起来。内存读写速度高用来缓存或者编译, 甚至存临时文件最好不过了~~
Windows 下有一种叫法叫做内存盘, Linux 自然也有, 看了 Linux 中 ramdisk, tmpfs, ramfs 比较与说明这篇文章后, 决定使用 tmpfs 文件系统。
关于 tmpfs和VM
linux 的内存 (VM) ,包括 ram和 swap两部分。
ram 就是你的物理内存, swap 就是在装系统的时候划分的swap分区(在win下叫做页面文件,默认位于C:\pagefiles.sys)。
VM也是程序所能使用的最大内存上限,tmpfs本质上也是VM,tmpfs划出VM的部分页面作为一个文件系统.
关于 tmpfs 和 ramdisk
linux 下的 ramdisk 是由内核提供的, 要使用之, mount 命令挂载即可。不需要第三方工具。但因为它会被视为块设备, 所以仍然需要格式化该文件系统。
ramdisk 一旦创建就会占用固定大小的物理内存, tmpfs则是动态分配。
tmpfs 的优点
因为 tmpfs 是建立在 VM 上的, 而不是物理磁盘上, 所以不需要格式化就可以使用,所以不用尝试mkfs.tmpfs了,没有这条命令。
tmpfs的大小是动态的,用多少才分配多少,删除文件则会释放相应的VM空间,=.=这一点非常令人激动。
当您的物理内存不足以支撑分配为tmpfs的大小时,它会自动使用swap的页面。
tmpfs大部分时间是驻留在物理内存中,这使得其读写速度超快。
tmpfs的缺点:
tmpfs的先天优势变成了他的先天劣势:
内存的特性导致位于tmpfs上的数据断电会丢失。
相比较硬盘的价格来说,内存无疑还是很昂贵的,所以用tmpfs的目录不要放太大的东西。
tmpfs的用途
程序运行产生的临时文件, 我觉得tmpfs天生就是为tmp目录设计的。
编译时的缓存目录,用内存来做真是再好不过。
tmpfs的用法
mount tmpfs /tmp -t tmpfs -o size=1024m
1024不是固定的,实际大小根据你的实际情况定,比如可以在系统开了很长时间很大负载的时候看看(空闲的内存和swap)一共还有多少,最好不要超过这个值。
这里必须有mount权限,可以用sudo来获得权限,‘size='指定tmpfs动态大小的上限,如果/tmp目录(即将使用的)大小超过指定大小,一样会提示你空间不足。
之所以不推荐这样做,是因为mount之后/tmp会被立即清空,如果你有程序有在/tmp中打开的文件(比如socket),会出错,而且每次都要手动挂载,多麻烦(=.=#)。
基于以上原因,最好还是编辑/etc/fstab文件来让系统启动时帮你搞定。
推荐方法如下:
sudo gedit /etc/fstab
在最后添加如下内容:
mount tmpfs in /tmp/
tmpfs /tmp tmpfs size=1024m 0 0
保存,关闭,然后在下次启动时你就用上tmpfs了。
Author -
LastMod 2018-01-16