tmpfs是一種基于內存的文件系統,它和虛擬磁盤ramdisk比較類似像,但不完全相同,和ramdisk一樣,tmpfs可以使用RAM,但它也可以使用swap分區來存儲。而且傳統的ramdisk是個塊設備,要用mkfs來格式化它,才能真正地使用它;而tmpfs是一個文件系統,并不是塊設備,只是安裝它,就可以使用了。tmpfs是的基于RAM的文件系統。
Linux內核的虛擬內存(virtual memory ,VM)資源同時來源于您的RAM(物理內存)和交換分區(swap)。內核中的VM子系統負責在后臺管理這些資源,通常是透明地將RAM頁移動到交換分區或從交換分區到RAM頁。
tmpfs文件系統需要VM子系統的頁面來存儲文件。tmpfs自己并不知道這些頁面是在交換分區還是在RAM中;做這種決定是內核中的VM子系統的工作。tmpfs文件系統所知道的就是它正在使用某種形式的虛擬內存。
不同于大多數“標準的”文件系統,如ext3、ReiserFS和其它一些系統,tmpfs并不是存在于一個底層塊設備上面。因為tmpfs是直接建立在VM之上的,您用一個簡單的mount命令就可以創建tmpfs文件系統了。
# mount -t tmpfs -o size=64M tmpfs /dev/shm
/mnt/tmpfs初會只有很小的空間,但隨著文件的復制和創建,tmpfs文件系統驅動程序會分配更多的 VM,并按照需求動態地增加文件系統的空間。而且,當 /mnt/tmpfs 中的文件被刪除時,tmpfs 文件系統驅動程序會動態地減小文件系統并釋放 VM 資源,這樣做可以將 VM 返回到循環當中以供系統中其它部分按需要使用。因為 VM 是寶貴的資源,所以您一定不希望任何東西浪費超出它實際所需的 VM,tmpfs 的好處之一就在于這些都是自動處理的。
假如tmpfs的掛載點目錄下什么也沒有,tmpfs并不占用VM。上面的參數64M只是告訴內核這個掛載點可用的VM為20M,如果不加上這個參數,tmpfs默認的大小是RAM的一半,假如你的物理內存是128M,那么tmpfs默認的大小就是64M。
tmpfs 的另一個主要的好處是它閃電般的速度。因為典型的 tmpfs 文件系統會完全駐留在 RAM 中,讀寫幾乎可以是瞬間的。即使用了一些交換分區,性能仍然是卓越的,當更多空閑的 VM 資源可以使用時,這部分 tmpfs 文件系統會被移動到 RAM 中去。讓 VM 子系統自動地移動部分 tmpfs 文件系統到交換分區實際上對性能上是好的,因為這樣做可以讓 VM 子系統為需要 RAM 的進程釋放空間。這一點連同它動態調整大小的能力,比選擇使用傳統的 RAM 磁盤可以讓操作系統有好得多的整體性能和靈活性。
默認情況下,tmpfs會mount到/dev/shm目錄。使用tmpfs,就是說你可以使用這個目錄,這個目錄就是tmpfs,如你寫臨時文件到此目錄,這些文件實際上是在VM中。 由于它的數據是在VM里面,因此斷電或者你卸載它之后,數據就會立即丟失,這也許就是它叫tmpfs的原故。
要使用tmpfs,您要在內核配置時,啟用“Virtual memory file system support”。
為防止tmpfs使用了全部VM,有時候要限制其大小。要創建一個為32 MB的tmpfs文件系統,鍵入:
# mount -t tmpfs -o size=32m tmpfs /dev/shm
添加到 /etc/fstab,應該是這樣:
tmpfs /dev/shm tmpfs size=32m 0 0
Linux下的tmpfs文件系統
更新時間: 2014-11-27 10:20:48來源: 粵嵌教育瀏覽量:4353