[FrontPage] [TitleIndex] [WordIndex

This is a read-only archived version of wiki.centos.org

采用 tmpfs 作为 /tmp

1. 引言

tmpfs 是一个不存在于实体硬盘上、而是驻在记忆里的特殊文件系统。其中一个副作用就是当你失去电源(或重就开机)时,tmpfs 上的一切内容都会消失。对于 /tmp 来说这不是一个问题,因为 Linux 的文件系统结构指定 /tmp 内的数据在重新开机后可能不复存在。作为一个附注:我个人经常确保 /tmp 在重新开机时被清理干净,因为上次开机时遗留下来的数据(锁定文件等)可能会引起问题。

由于内存现在已经颇便宜,将 /tmp 放置在 tmpfs 上有数个好处:

2. 实际细节

到底这一切如何运作?tmpfs 在内核高速缓冲页的空间里创建一个虚拟文件系统。言下之意,就是 tmpfs 与高速缓冲页都位于记忆链的最低层。一旦系统上执行的应用程序填满所有不属高速缓冲的内存,高速缓冲空间便会开始缩小,直至用尽为止。当高速缓冲页不能再容纳 tmpfs,它便会被推进调换档。这样便抵销了它在速度上的优势,因为 tmpfs 到时会存在于慢速的硬盘上,而不再在高速的内存里。

你需要确定你的调换档有足够空间来应付这种情况(或者确定你拥有大量内存来避免它被推进调换档内)。所以,你的调换档基本上要应付正常的调换量(作为内存的代用品),加上你的 tmpfs 的最大容量。

3. 实践方法

3.1. 第 1 步

将 /tmp 放置在 tmpfs 上是一个甚为简易的动作。利用你喜欢的编辑器打开 /etc/fstab,并指定你想将 /tmp 放置于 tmpfs 内:

tmpfs                   /tmp                    tmpfs   size=512m       0 0

这样便成了!

size=512m 代表文件系统的最大容量。当然,你应该选择一个迎合你的需要/系统的尺寸。128m 对大部份人来说应该已足够了。这个容量并非一次性地配置出来的,而是按存在于 /tmp 上的数据多寡进行动态配置的。

你也许会想在 fstab 内另外加插的标志包括:

3.2. 陷阱

随内核而来的 tmpfs「官方」文件指「某些人仕(包括我在内)发现将它挂载在 /tmp 及 /var/tmp 等位置,然后提供一个大的调换档是个很方便的做法」。

我个人不会推荐将 /var/tmp 放在 tmpfs 上。我发出这个忠告是基于以下原因:FHS(文件系统结构规范)指明 /var/tmp 是为那些「需要过渡系统重新引导的临时文件」而设的。既然 tmpfs 内的数据在重新开机后不复存在,将 /var/tmp 放置在 tmpfs 上便会令你的系统与 FHS 不能兼容。这样做可能会导致应用程序失效或不正常地运作。

Translation of revision 6


2023-09-11 07:24