tmpfs (臨時文件係統) 是一種基於內存的文件係統,tmpfs 也是最好的基於 RAM 的文件係統。
tmpfs 和虛擬磁盤 ramdisk 比較類似,和 ramdisk 一樣 tmpfs 可以使用 RAM,但它還可以使用 swap 分區存儲數據。
傳統 ramdisk 是個塊設備,要用 mkfs 來格式化它,纔能真正使用它。
tmpfs 是一個文件係統,並不是塊設備,隻要安裝,就可以使用。
默認情況下,tmpfs 會被 mount 到 /dev/shm 目錄。
使用 tmpfs 時可以使用這個目錄,這個目錄就是 tmpfs,如寫臨時文件到此目錄,這些文件實際上是在 VM 中。
但要使用 tmpfs,在配置內核時,需啓用 Virtual memory file system support。
為防止 tmpfs 使用全部 VM,有時要限製其大小。 如創建一個最大為 32 MB 的 tmpfs 文件係統:
mount tmpfs /dev/shm -t tmpfs -o size=32m
Linux 內核的虛擬內存資源同時來源於 RAM 和交換分區。
內核中的 VM 子係統將這些資源分配到係統中的其它部分,並負責在後颱管理這些資源,通常是透明地將 RAM 頁移動到交換分區或從交換分區到 RAM 頁。
tmpfs 文件係統需要 VM 子係統的頁麵來存儲文件。 tmpfs 自己並不知道這些頁麵是在交換分區還是在 RAM 中,這種工作由 VM 子係統決定。
tmpfs 文件係統所知道的就是它正在使用某種形式的虛擬內存。
不同於大多數標準文件係統,如 ext3、ReiserFS 和其它一些係統,tmpfs 並不存在於底層塊設備上。
因為 tmpfs 是直接建立在 VM 之上的,用一個簡單的 mount 命令就可以創建 tmpfs 文件係統。
mount tmpfs /mnt/tmpfs -t tmpfs
動態空間
/mnt/tmpfs 最初隻有很小的空間,隨著文件的復製和創建,tmpfs 文件係統驅動程序會分配更多的 VM,並按照需求動態增加文件係統的空間。
當 /mnt/tmpfs 中的文件被刪除時,tmpfs 文件係統驅動程序會動態地減小文件係統並釋放 VM 資源,可以將 VM 返迴到循環當中以供係統其它部分按需使用。
因為 VM 是很寶貴的資源,所以一定不希望任何東西浪費超齣它實際所需的 VM,tmpfs 的優勢之一就在於這些都是自動處理的。
速度快
tmpfs 的另一個主要優勢是它閃電般的速度。 因為典型的 tmpfs 文件係統會完全駐留在 RAM 中,讀寫幾乎可以是瞬時的。
即使用瞭一些交換分區,性能仍然是卓越的,當更多空閑的 VM 資源可以使用時,這部分 tmpfs 文件係統會被移動到 RAM 中去。
讓 VM 子係統自動移動部分 tmpfs 文件係統到交換分區,實際上對性能是好的,因為這樣做可以讓 VM 子係統為需要 RAM 的進程釋放空間。
這一點連同它動態調整大小的能力,比選擇使用傳統的 RAM 磁盤可以讓操作係統有更好的整體性能和靈活性。
另請參閱:
版權聲明: 本文為獨傢原創稿件,版權歸 樂數軟件 ,未經許可不得轉載。