Daniel Robbins(drobbins@gentoo.org)
总裁/首席执行官,Gentoo Technologies,Inc.
2001 年 9 月

伴 随着 Linux 2.4 版本的发行,出现了大量的文档系统可能性,其中包括 ReiserFS、XFS、GFS 和其他文档系统。这些文档系统听起来的确都很酷,但是他们真正能做些什么呢,擅长在哪些方面,连同在 Linux 产品环境下如何才能安全地使用他们呢?Daniel Robbins 通过向您展示如何在 Linux 2.4 的环境下建立这些新的高级文档系统来回答以上的问题。在这个部分,Daniel 简单地介绍了 tmpfs,一个基于 VM 的文档系统,还向您介绍了 2.4 版本的“绑定”安装功能带来的新的可能。

在本系列我以前的文章中,我介绍了创建日志和使用 ReiserFS 的好处,并展示了如何安装一个稳固的基于 Linux 2.4 的 ReiserFS 系统。 在本文中,我们要谈论几个相对次要的主题。首先,我们会简单地介绍一下 tmpfs,也就是我们知道的虚拟内存(virtual memory,VM)文档系统。Tmpfs 可能是现在 Linux 能够使用的最好的类似于 RAM 磁盘的系统,而且是 2.4 内核的一个新功能。然后,我们将简单地介绍另一个 2.4 内核的新功能,叫做“绑定安装”,他在安装(和重新安装)文档系统的时候带来了很大的灵活性。在下一篇文章中,我们会把重点集中在 devfs 上,之后,我们会花点时间来进一步熟悉新的 ext3 文档系统。

介绍 tmpfs
假如我必须一下子说清楚 tmpfs,我会说 tmpfs 就象虚拟磁盘(ramdisk),但不相同。象虚拟磁盘相同,tmpfs 能够使用您的 RAM,但他也能够使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用他,tmpfs 是个文档系统,而不是块设备;您只是安装他,他就能够使用了。总而言之,这让 tmpfs 成为我有机会碰到的最好的基于 RAM 的文档系统。

tmpfs 和 VM
让我们来看看 tmpfs 更有趣的一些特性吧。正如我前面提到的相同,tmpfs 既能够使用 RAM,可 以使用交换分区。刚开始这看起来可能有点武断,但请记住 tmpfs 也是我们知道的“虚拟内存文档系统”。而且,您可能也知道,Linux 内核的虚拟内存资源同时来源于您的 RAM 和交换分区。内核中的 VM 子系统将这些资源分配到系统中的其他部分,并负责在后台管理这些资源,通常是透明地将 RAM 页移动到交换分区或从交换分区到 RAM 页。

tmpfs 文档系统需要 VM 子系统的页面来存储文档。tmpfs 自己并不知道这些页面是在交换分区还是在 RAM 中;做这种决定是 VM 子系统的工作。tmpfs 文档系统所知道的就是他正在使用某种形式的虚拟内存。

不是块设备
这里是 tmpfs 文档系统另一个有趣的特性。不同于大多数“标准的”文档系统,如 ext3、ext2、XFS、JFS、ReiserFS 和其他一些系统,tmpfs 并不是存在于一个底层块设备上面。因为 tmpfs 是直接建立在 VM 之上的,您用一个简单的 mount 命令就能够创建 tmpfs 文档系统了。

# mount tmpfs /mnt/tmpfs -t tmpfs

执行这个命令之后,一个新的 tmpfs 文档系统就安装在 /mnt/tmpfs,随时能够使用。注意,不需运行 mkfs.tmpfs;事实上,那是不可能的,因为没有这样的命令存在。在 mount 命令执行之后,文档系统立即就被安装并且能够使用了,类型是 tmpfs。这和 Linux 虚拟磁盘如何使用大相径庭;标准的 Linux 虚拟磁盘是块设备,所以在使用他们之前必须用您选择的文档系统将其格式化。相反,tmpfs 一个文档系统。所以,您能够简单地安装他就能够使用了。

Tmpfs 的优势

动态文档系统的大小
您 可能想知道我们前面在 /mnt/tmpfs 安装的 tmpfs 文档系统有多大。这个问题的答案有点意外,特别是在和基于磁盘的文档系统比较的时候。/mnt/tmpfs 最初会只有很小的空间,但随着文档的复制和创建,tmpfs 文档系统驱动程式会分配更多的 VM,并按照需求动态地增加文档系统的空间。而且,当 /mnt/tmpfs 中的文档被删除时,tmpfs 文档系统驱动程式会动态地减小文档系统并释放 VM 资源,这样做能够将 VM 返回到循环当中以供系统中其他部分按需要使用。因为 VM 是宝贵的资源,所以您一定不希望任何东西浪费超出他实际所需的 VM,tmpfs 的好处之一就在于这些都是自动处理的。 请参阅参考资料。

速度
tmpfs 的另一个主要的好处是他闪电般的速度。因为典型的 tmpfs 文档系统会完全驻留在 RAM 中,读写几乎能够是瞬间的。即使用了一些交换分区,性能仍然是卓越的,当更多空闲的 VM 资源能够使用时,这部分 tmpfs 文档系统会被移动到 RAM 中去。让 VM 子系统自动地移动部分 tmpfs 文档系统到交换分区实际上对性能上是的,因为这样做能够让 VM 子系统为需要 RAM 的进程释放空间。这一点连同他动态调整大小的能力,比选择使用传统的 RAM 磁盘能够让操作系统有好得多的整体性能和灵活性。

没有持久性
这 看起来可能不象是个积极因素,tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。我想您可能猜到了 tmpfs 被称为“tmpfs”的一个原因,不是吗?然而,这实际上能够是一件好事。他让 tmpfs 成为一个保存您不需保留的数据(如临时文档,能够在 /tmp 中找到,更有 /var 文档系统树的某些部分)的卓越的文档系统。

使用 tmpfs
为 了使用 tmpfs,您所需要的就是启用了“Virtual memory file system support(以前是 shm fs)”选项的 2.4 系列内核;这个选项在内核配置选项的“File systems”部分。一旦您有了一个启用了 tmpfs 的内核,您就能够开始安装 tmpfs 文档系统了。其实,在您任何的 2.4 内核中都打开 tmpfs 选项是个好主意,不管您是否计划使用 tmpfs。这是因为您需要内核 tmpfs 支持来使用 POSIX 共享的内存。然而,

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