LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1183|回复: 5

[已解决]能不能让shm在空间不够的时候自动使用别的分区的空间?

[复制链接]
发表于 2010-1-30 06:39:48 | 显示全部楼层 |阅读模式
事情是这样的,看到一篇文章说,在make.conf里加上portage_tmpdir="/dev/shm"可以在emerge的时候使用一部分内存来储存编译软件时产生的临时文件,减少硬盘的读取次数,加快编译的速度。

对于编译的速度,我是没什么所谓的,反正也不会很慢,不过如果能减少硬盘的读取次数的话还是有点用的。我的内存是4G,默认的shm的大小是内存的一半,即2G,对于编译绝大多数软件来说,这都是足够的了。但编译openoffice的话,那些临时文件总共有6G左右,比我全部的内存的大小都要大。因此我目前只能安装openoffice的二进制包。

想问一下,有什么方法能够让系统在shm的空间用完的时候,去使用别的分区的空闲空间来继续进行编译呢?
发表于 2010-1-30 07:38:11 | 显示全部楼层
的确是个好主意,可能对我有用,因为以前编译过一回openoffice,受不了,以后就用openoffice的二进制包了。
还有什么包能用到这么大编译空间。
回复 支持 反对

使用道具 举报

发表于 2010-1-31 12:56:40 | 显示全部楼层
Post by timemars;2066123
事情是这样的,看到一篇文章说,在make.conf里加上portage_tmpdir="/dev/shm"可以在emerge的时候使用一部分内存来储存编译软件时产生的临时文件,减少硬盘的读取次数,加快编译的速度。

对于编译的速度,我是没什么所谓的,反正也不会很慢,不过如果能减少硬盘的读取次数的话还是有点用的。我的内存是4G,默认的shm的大小是内存的一半,即2G,对于编译绝大多数软件来说,这都是足够的了。但编译openoffice的话,那些临时文件总共有6G左右,比我全部的内存的大小都要大。因此我目前只能安装openoffice的二进制包。

想问一下,有什么方法能够让系统在shm的空间用完的时候,去使用别的分区的空闲空间来继续进行编译呢?


Isn't that shm (tmpfs) already served such purpose?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-31 15:27:41 | 显示全部楼层
Post by d00m3d;2066412
Isn't that shm (tmpfs) already served such purpose?


部分吧,确实shm的大小会根据需求而变化,不过它依然会有一个最大空间的限制,在我这台机器上,那就是内存的一半,2G;手动设置大小也最多设为全部内存,4G。而我希望的是它能够在2G的空间用完之后(例如编译openoffice这种东西的时候,需要5、6G的临时空间),能够使用硬盘上某个分区的空闲空间来继续进行编译。

或者换个说法吧,在make.conf里,portage_tmpdir="/dev/shm"可以设置编译时产生的临时文件的存放路径,我可不可以同时设置两个路径的?
回复 支持 反对

使用道具 举报

发表于 2010-1-31 17:34:47 | 显示全部楼层
交换分区够大的话,直接在/etc/fstab修改/dev/shm这行添加“size=8G”的参数,这样内存不够就会自动使用交换分区的空间。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-2-5 12:59:18 | 显示全部楼层
非常感谢tlze的回复,问题算是解决了。

我的交换分区不够大,于是在/下面建了个5G的swap文件来充当swap分区:

dd if=/dev/zero of=/swap bs=1024 count=5242880
mkswap /swap
swapon /swap

在fstab中修改了shm的大小为8G之后,再执行命令:

mount -o remount /dev/shm

这样shm的大小就足够编译openoffice了。编译结束后执行:

swapoff

再把/swap删掉,那就弄好了。

幸好openoffice不是经常更新,要不总是建这么一个大文件,编译时读写也很频繁,也很伤硬盘吧。不过之前用过openoffice的二进制包,每次运行的时候,第一次运行都只能看到进程,不出现界面;要再次运行openoffice才会出现图形界面,才能够使用,感觉怪怪的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表