对于一个喜欢折腾系统的人来说,为笔记本电脑建立内存虚拟盘,来弥补笔记本小硬盘天然的性能瓶颈问题,总是免不了的。
内核选项
Linux 内核内建了ramdisk支持,正常情况下,内核中下列选项应该是enable 的。
$ zcat /proc/config.gz |grep -i tmpfs
CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y
这就表明,可以直接利用mount 命令创建一个内存虚拟盘。
创建内存盘
我打算把内存虚拟盘放在/mnt/ram 。使用以下简单的命令:
# mkdir /mnt/ram # mount -t tmpfs -o 128m none /mnt/ram
也可以不指定内存盘大小:
# mount -t tmpfs none /mnt/ram
在内存盘建立之后,查看top 或者系统监视器,可用内存并未相应减少(明确指定大小的内存盘也是如此)。经过测试,未明确指定大小的内存盘会动态分配内存,可以持续向内存盘中写入文件,当再无可用物理内存时才会报空间不足的错误。 tmpfs 文件系统默认采用1G 的容量,但并未实际分配并占用这部分内存,而是动态分配。这要比Windows下流行的内存虚拟盘方案 方便得多。
启动时自动创建
接下来,将以下行加入/etc/fstab,让系统在每次启动时自动创建内存盘。
none /mnt/ram tmpfs noatime 0 0
利用内存盘
最后,可以把一些常用软件的临时文件夹指定到/mnt/ram,如果应用程序不支持临时文件夹配置,也可以将其转换成到/mnt/ram 的符号链接。
Lotus Notes 8
notes 8会在$HOME目录自动建立workplace-tmp 目录来存储临时文件,我们可以将其转移到内存盘中。先关闭notes,然后执行以下命令:
$ mkdir /mnt/ram/workplace-tmp $ echo ' mkdir /mnt/ram/workplace-tmp' >> ~/.bash_profile $ mv ~/workplace-tmp ~/workplace-tmp.bak $ ln -s /mnt/ram/workplace-tmp ~/workplace-tmp $ ls -l ~/workplace-tmp
lrwxrwxrwx 1 alex users 22 2008-02-19 09:36 /home/alex/workplace-tmp -> /mnt/ram/workplace-tmp
更新 2008-03-24
将/var/tmp 与/tmp 也加入到tmpfs
/etc/fstab
none /tmp tmpfs noatime 0 0 none /var/tmp tmpfs noatime 0 0
设置Notes
修改~/.bash_profile
if [ ! -e /var/tmp/workplace-tmp ]; then mkdir /var/tmp/workplace-tmp fi
重启后,修改Notes临时文件夹符号连接
$ rm ~/workplace-tmp $ ln -s /var/tmp/workplace-tmp ~/workplace-tmp
将/var/tmp/ 放入tmpfs 之后,在merge一些巨大的软件包时,中途可能因为临时空间不足而失败退出,这种情况下,可以指定PORTAGE_TMPDIR 到其它具有足够空间的路径来解决。比如:
# PORTAGE_TMPDIR=~/tmp emerge -av openoffice $ sudo PORTAGE_TMPDIR=~/tmp emerge -av openoffice


