採用 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

zh-tw/TipsAndTricks/TmpOnTmpfs (last edited 2019-12-09 09:11:37 by anonymous)