手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

使用虚拟内存(virtual memory,VM)文档系统和绑定安装

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
System V 共享的内存无需内核中有 tmpfs 就能够工作。注意,您需要为了让 POSIX 共享的内存工作而安装 tmpfs 文档系统;您只需要在内核中支持 tmpfs 就能够了。POSIX 共享的内存现在使用得不太多,但这种情况可能会随着时间而改变。

避免低 VM 情况
tmpfs 根据需要动态增大或减小的事实让人疑惑:假如您的 tmpfs 文档系统增大到他耗尽了任何虚 拟内存的程度,而您没有剩余的 RAM 或交换分区,这时会发生什么?一般来说,这种情况是有点讨厌。假如是 2.4.4 内核,内核会立即锁定。假如是 2.4.6 内核,VM 子系统已以很多种方式得到了修正,虽然耗尽 VM 并不是个美好的经历,事情也不会完全地失败。假如 2.4.6 内核到了无法分配更多 VM 的程度,您显然不愿意不能向 tmpfs 文档系统写任何新数据。另外,可能会发生其他一些事情。首先,系统的其他一些进程会无法分配更多的内存;通常,这意味着系统多半会变得极度缓慢而且几乎没有响应。这样,终极用户要采取必要的步骤来缓解这种低 VM 的情况就会很困难,或异常地耗时。

另外,内核有一个内建的最终防线系统,用来在没有可用内存的时候释放内存,他会找到占用 VM 资源的进程并终止该进程。不幸的是,这种“终止进程”的解决方案在 tmpfs 的使用增加引起 VM 耗尽的情况下通常会导致不良后果。以下是原因。tmpfs 本身不能(也不应该)被终止,因为他是内核的一部分而非一个用户进程,而且也没有容易的方法能够让内核找出是那个进程占满了 tmpfs 文档系统。所以,内核会错误地攻击他能找到的最大的占用 VM 的进程,通常会是 X 服务器(X server),假如您碰巧在使用他。所以,您的 X 服务器会被终止,而引起低 VM 情况的根本原因(tmpfs)却没有被解决。Ick.

低 VM:解决方案
幸运的是,tmpfs 允许您在安装或重新安装文档系统的时候指定文档系统容量的最大值上限。实际上,从 2.4.6 内核到 2.11g 内核,这些参数只能在安装时 配置,而不是重新安装时,但我们能够期望在不久的将来能够在重新安装时配置这些参数。tmpfs 容量最大值的最好配置依赖于资源和您特定的 Linux 主机的使用模式;这个想法是要防止一个完全使用资源的 tmpfs 文档系统耗尽任何虚拟内存结果导致我们前面谈到的糟糕的低 VM 情况。寻找好的 tmpfs 上限值的一个好方法是使用 top 来监控您系统的交换分区在高峰使用阶段的使用情况。然后,确保指定的 tmpfs 上限稍小于任何这些高峰使用时间内空闲交换分区和空闲 RAM 的总和。

创建有最大容量的 tmpfs 文档系统很容易。要创建一个新的最大 32 MB 的 tmpfs 文档系统,请键入:

# mount tmpfs /dev/shm -t tmpfs -o size=32m

这次,我们没有把 tmpfs 文档系统安装在 /mnt/tmpfs,而是创建在 /dev/shm,这正好是 tmpfs 文档系统的“正式”安装点。假如您正好在使用 devfs,您会发现这个目录已为您创建好了。

更有,假如我们想将文档系统的容量限制在 512 KB 或 1 GB 以内,我们能够分别指定 size=512ksize=1g。除了限制容量,我们还能够通过指定 nr_inodes=x 参数限制索引节点(文档系统对象)。在使用 nr_inodes 时,x 能够是个简单的整数,后面还能够跟一个 kmg 指定千、百万或十亿(!)个索引节点。

而且,假如您想把上面的 mount tmpfs 命令的等价功能添加到 /etc/fstab,应该是这样:



tmpfs /dev/shm tmpfs size=32m 0 0

在现存的安装点上安装
在以前使用 2.2 的时候,试图在安 装了东西的安装点再次安装任何东西都会引发错误。然而,重写后的内核安装代码使多次使用安装点不再成为问题。这里是个示例的情况:假设我们有一个现存的 文档系统安装在 /tmp。然而,我们决定要开始使用 tmpfs 进行 /tmp 的存储。过去,您唯一的选择就是卸载 /tmp 并在其位置重新安装您新的 tmpfs/tmp 文档系统,如下所示:



# umount /tmp

# mount tmpfs /tmp -t tmpfs -o size=64m

可是,这种解决方案也许对您不管用。可能有很多正在运行的进程在 /tmp 中有打开的文档;假如是这样,在试图卸载 /tmp 时,您就会碰到如下的错误:

umount: /tmp: device is busy

然而,使用最近的 2.4 内核,您能够安装您新的 /tmp 文档系统,而不会碰到“device is busy”错误:



# mount tmpfs /tmp -t tmpfs -o size=64m

用一条命令,您新的 tmpfs /tmp 文档系统就被安装在 /tmp,并安装在已安装的不能再被直接访问的分区之上。然而,虽然您不能访问原来的 /tmp,任何在原文档系统上更有打开文档的进程都能够继续访问他们。而且,假如您 unmount 基于 tmpfs 的 /tmp,原来安装的 /tmp 文档系统会重新出现。实际上,您在相同的安装点上能够安装任意数目的文档系统,安装点就象一个堆栈;卸载当前的文档系统,上一个最近安装的文档系统就会重新出现。

绑定安装
使用绑定安装,我们能够将任何甚至部分已安装的文档系统安装到另一个位置,而在两个安装点能够同时访问该文档系统。例如,您能够使用绑定安装来安装您现存的根文档系统到 /home/drobbins/nifty,如下所示:

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!