嵌入式Linux中文站

使用tmpfs文件系统来提速你的linux系统


1:关于tmpfs和VM:
大家已经知道linux的虚拟内存(VM),包括ram和swap两部分,ram就是你的物理内存,swap就是在装系统的时候划分的swap分区(在win下叫做页面文件,默认位于C:\pagefiles.sys),VM也是程序所能使用的最大内存上限,tmpfs本质上也是VM,前者划出后者的部分页面作为一个文件系统.

2:关于tmpfs和ramdisk:
linux下的ramdisk是由内核提供的,要使用之,mount命令挂载即可,不需要第三方工具:)
但因为它会被视为块设备,所以仍然需要格式化该文件系统:使用mkfs命令格式化,而tmpfs不需要ramdisk一旦创建就会占用固定大小的物理内存,tmpfs则是动态分配

tmpfs的优点:
#因为tmpfs是建立在VM上的,而不是物理磁盘上,所以不需要格式化就可以使用,所以不用尝试mkfs.tmpfs了:没有这条命令
#tmpfs的大小是动态的,用多少才分配多少,删除文件则会释放相应的VM空间,=.=这一点非常令人激动
#当您的物理内存不足以支撑分配为tmpfs的大小时,它会自动使用swap的页面
#tmpfs大部分时间是驻留在物理内存中,这使得其读写速度超快=.=

tmpfs的缺点:
#tmpfs的先天优势变成了他的先天劣势:内存的特性导致位于tmpfs上的数据断电会丢失
#相比较硬盘的价格来说,内存无疑还是很昂贵的,所以用tmpfs的目录不要放太大的东西

3:tmpfs的用途:
程序运行产生的临时文件,我觉得tmpfs天生就是为tmp目录设计的=.=| ,如果是用在服务器上更是前途无量,比如squid,网站,之类那么可以在这些应用的临时目录挂载tmpfs系统但是服务器级别的应用本菜一窍不通,这里面向desktop用户,说说如何加速/tmp/的读写在2.4以上内核中(汗,现在ubuntu9.04发布时都2.6.28了)您可以使用这样一条命令,但不推荐:),一会再说为什么不推荐

mount tmpfs /tmp -t tmpfs -o size=1024m


#1024不是固定的,实际大小根据你的实际情况定,比如可以在系统开了很长时间很大负载的时候看看(空闲的内存和swap)一共还有多少,
最好不要超过这个值
#这里必须有mount权限,ubuntu可以用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了:)
#1024不是固定的,实际大小根据你的实际情况定,比如可以在系统开了很长时间很大负载的时候看看(空闲的内存和swap)一共还有多少,最好不要超过这个值
/tmp分区是我最常拿来解压,编译的目录(不用清理,方便),用tmpfs在这里折腾,就不用看着硬盘灯狂闪了
不管怎么说,我也把firefoxcache也放在这里了,有利有弊,做不做随你:)
在firefox中输入about:config,搜索browser.cache.disk.parent_directory,如果没有,就新建这个字符串,然后修改其值为:/tmp/Firefox_cache,保存,重启firefox然后输入about:cache查看cache的详细信息

这样做的结果:每次开机第一次启动firefox时由于cache为空,所以打开一个访问过的页面会比以前慢,但再载入就快了,好处是除了配置文件,firefox不在硬盘上读写数据,自己权衡利弊吧=.=



本文永久更新链接:http://embeddedlinux.org.cn/emb-linux/file-system/201308/26-2613.html



分享:

评论