转我自己的博客: http://mgampkay.blog.163.com/blog/static/1750061122011211111345969/?newFollowBlog
一.tmpfs
某天我学了个“奇巧淫技”:在/etc/fstab 里加上一句none /tmp tmpfs defaults 0 0,重起之后/tmp就在内存里了,因为/tmp放的是临时文件,这样每次关机就清空,又减少硬盘读写,而且读写又快,多好。
tmpfs是相当强大,它的空间能动态调整(但是大小不能超过上限),往里面塞文件它就变大,删文件就会变小。
看我往里面塞个1G的文件:
dd if=/dev/zero of=/tmp/bigfile count=1000000 bs=1024
内存里有1352M的cache(原来是300多M的)。
可以试下复制/dev/urandom而不是/dev/zero,再开个top,就能看cache慢慢增加了,可以看出tmpfs在cache里。
当内存不够用的时侯,就动用交换分区(swap)了,这可是影响性能的。
还有个方法是用mount挂载。
先建个文件夹吧,我在"我家"建了个.tmp_ram
mkdir ~/.tmp_ram
然后就是mount了
sudo mount -t tmpfs -o size=256M tmpfs ~/.tmp_ram
size指定的是能用的内存的上限。
这样,向~/.tmp_ram里写的文件其实都在内存而不是硬盘。
突然想到一个很好的用处,那就是把chrome的cache放内存了。
sudo mount -t tmpfs -o size=384M tmpfs ~/.cache/google-chrome
去掉sudo然后加到/etc/rc.local,那样每次开机就自动挂载。
(其实这样没次都清空cache也有点影响上网的体验的,不过我还是喜欢保护硬盘,节省空间...)
二.ramfs
ramfs能实现类似的功能:
sudo mount -t ramfs -o size=256m ramfs ~/.tmp_ram
如果你往里面塞超过mount时设置的上限的文件,它不会提示空间不足,相反它突破你设的上限,动态增大了。而且ramfs不会用swap。
三. ramdisk
有没发现在/dev里面有ram0、ram1等等ramN设备文件,这就是ramdisk。
ramdisk和ramfs的差别之一是ramdisk的大小是固定的(通常只有10几M的大小,编译内核时设定的),可以在系统启动的时候用命令行参数调整。
要用ramdisk要先在/dev/ramN里建文件系统:(我这里用ext2)
sudo mke2fs -m 0 /dev/ram0
然后是挂载:
sudo mount /dev/ram0 ~/.tmp_ram
四.参考
linux kernel的文档:
tmpfs : http://lxr.linux.no/linux+v2.6.37.3/Documentation/filesystems/tmpfs.txt
ramfs : http://lxr.linux.no/linux+v2.6.37.3/Documentation/filesystems/ramfs-rootfs-initramfs.txt
ramdisk: http://lxr.linux.no/linux+v2.6.37.3/Documentation/blockdev/ramdisk.txt
wq413732076 于 2011-08-04 21:25:55发表:
感谢楼主分享!我要学linux
erlengzhi2 于 2011-08-01 22:40:15发表:
有道理,有事实。有证据,有技术,支持LZ,学习了
zndx2006 于 2011-08-01 20:57:23发表:
好东西,顶。。。。。。。。。。。。。。。。。。。。。。。。
sniperone 于 2011-07-20 11:25:39发表:
楼主辛苦~
sniperone 于 2011-07-20 11:25:22发表:
顶~
sniperone 于 2011-07-20 11:25:16发表:
好贴~
clh920202 于 2011-07-06 13:11:02发表:
很强大 学习了:0)1
sunfree 于 2011-07-05 23:00:48发表:
初次来,看看,搞的挺不错的
yehg01 于 2011-07-05 22:54:00发表:
好贴啊!很实用的一个应用
cliier 于 2011-07-05 18:13:52发表:
嘿嘿! 藏黄片 是个不错的位置!
lixupeng 于 2011-07-02 13:53:23发表:
学习试试:0w5ty(1
AiLeaf 于 2011-06-27 14:46:51发表:
嗯嗯嗯,哎哟,不错噢
200881438 于 2011-06-25 23:55:28发表:
强烈支持楼主
xindi_66 于 2011-06-07 22:23:47发表:
学习下
yiyelin 于 2011-04-08 14:19:56发表:
新手任务,得回帖,谢谢LZ分享?????????????灌水莫怪?????????????有机会一定登门拜谢????????????
okzokz123 于 2011-03-15 14:37:46发表:
适合超大内存者使用 凡人勿入
xindi_66 于 2011-03-14 23:05:01发表:
学习下
MichaelDong 于 2011-03-14 20:07:16发表:
不太懂,那为什么CHrome不自己这么做呢?
5644 于 2011-03-14 18:04:13发表:
呵呵,强人啊
luxiaopeter 于 2011-03-14 16:01:57发表:
试用了,不错
clh920202 于 2011-03-14 12:57:13发表:
很强大 有空去试试 感谢分享
pallana 于 2011-03-14 11:46:50发表:
进行了上一步后,我忘记了删除/emp/bigfile 。然后开了一个虚拟机,立即就发现事情不妙了,系统变的非常慢。我给虚拟机分配了512m的内存空间,于是整个Virtualbox大约需要600+M的内存。超过了我的物理内存。
发觉不妙,抓紧时间开终端,把/tmp/bigfile删除了,一切又恢复了正常。
pallana 于 2011-03-14 11:04:02发表:
昨天 在/etc/fstab 里加上一句none /tmp tmpfs defaults 0 0
今天开机没什么特殊反应,然后[code]@localhost ~$ free -m
total used free shared buffers cached
Mem: 2012 641 1370 0 41 309
-/+ buffers/cache: 290 1721
Swap: 999 0 999[/code]然后进行了一个测验[code]@localhost ~$ dd if=/dev/zero of=/tmp/bigfile count=1000000 bs=1024
记录了1000000+0 的读入
记录了1000000+0 的写出
1024000000字节(1.0 GB)已复制,3.09693 秒,331 MB/秒[/code]接着发现[code]@localhost ~$ free -m
total used free shared buffers cached
Mem: 2012 1618 394 0 41 1286
-/+ buffers/cache: 290 1722
Swap: 999 0 999[/code]cache真的大了耶。
tmp确实移动到了内存中。
这种帖子要记录下来
Growth兆 于 2011-03-14 10:27:29发表:
感谢mgampkay的分享,本贴加入到论坛顶置的Linux应用索引贴中
tiany524 于 2011-03-14 09:27:28发表:
学习了
hui8952930 于 2011-03-14 09:26:06发表:
好东西
serops 于 2011-03-13 21:01:24发表:
强文支持
pallana 于 2011-03-13 20:52:38发表:
不错,拜读了
mgampkay 于 2011-03-13 19:06:02发表:
2# 相思爱文
我还真的忘了这点
相思爱文 于 2011-03-13 17:11:31发表:
很好,收藏
放在/etc/rc.local中,要用绝对路径