把内存当硬盘,提速你的linux系统

作者: 左蓝 | 来源:发表于2016-04-05 14:58 被阅读4301次

    场景:电脑内存太大用不了那么多,空着浪费,所以利用起来。内存读写速度高用来缓存或者编译,甚至存临时文件最好不过了~~


    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了。

    相关文章

      网友评论

        本文标题:把内存当硬盘,提速你的linux系统

        本文链接:https://www.haomeiwen.com/subject/tlyplttx.html