http://wiki.linux.org.hk/w/Tmpfs?PHPSESSID=f53a7f1126ec80550c48dbc426c0122e


 


tmpfs



From OSWikiHK




tmpfs 是 Unix/Linux 用作儲存暫存檔案 (temporary file) 的檔案系統常用的名稱,在不同的 Unix/Linux 系統的實作和用途都不同。但一般 tmpfs 都是使用虛擬記憶體 (virtual memory) 空間代替傳統的永久保存媒體存放檔案。[1][2] 一方面速度比硬碟等快很多,亦比傳統 RAM 磁碟有彈性。







目錄

[隱藏]





一般特點


如其名所指,tmpfs 主要用作存放暫存檔案 (temporary file) 。這些檔案無需永久存放,所以記憶體成為 tmpfs 存放檔案的媒體。而一般 tmpfs 的實作都使用虛擬記憶體 (virtual memory) 而非單純的實體記憶體 (physical memory) 作為存放媒體。這令 tmpfs 兼具 RAM disk 相對一般保存媒體在存取速度近乎即時的優點,亦在實體記憶體短缺時可以把存放在 tmpfs 的檔案換置 (swap) 入換置空間 (swap space),令 tmpfs 更具彈性。tmpfs 使用的記憶體大小亦會根據所存放的檔案自動增多縮小。


現時不少 Unix/Linux 使用 tmpfs 作為 /tmp 或分享記憶體 (shared memory) 。


Linux 最早在 2.4 時開始引入 tmpfs。現時被大量應用在 /dev/shm 作為 POSIX 分享記憶體、/dev 作為 udev 存放裝置檔案、/var/run 存放各軟件的 PID 和 socket 和 /var/lock 用作鎖定檔案等。GLib 2.2 開始要求需要 tmpfs 掛載於 /dev/shm 才可以使用 POSIX 分享記憶體。例如以下是典型 Ubuntu 的檔案系統使用情況:


Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda5 ext3 9.9G 5.6G 3.8G 60% /
tmpfs tmpfs 1008M 0 1008M 0% /lib/init/rw
varrun tmpfs 1008M 124K 1008M 1% /var/run
varlock tmpfs 1008M 0 1008M 0% /var/lock
udev tmpfs 1008M 2.8M 1005M 1% /dev5.
tmpfs tmpfs 1008M 472K 1008M 1% /dev/shm
lrm tmpfs 1008M 2.0M 1006M 1% /lib/modules/2.6.27-9-generic/volatile

當中六個 tmpfs 檔案系統並表示系統分配了 1008 MiB x 6 = 5.90 GiB 的記憶體,實際分配了 124 KiB + 2.8 MiB + 472 KiB + 2 MiB = 5.39 MiB 的虛擬記憶體。 1008 MiB 只是每個 tmpfs 檔案系統可以使用虛擬記憶體的上限罷了。



建立和掛載


與其他檔案系統不同,tmpfs 無需要建立或格式化,只需要直接使用 mount 掛載就會自動被建立:


mount -t tmpfs tmpfs /tmp

Linux 上的 tmpfs 支援三個掛載選項[3]



  • size - 設定分配給此 tmpfs 檔案系統的記憶體上限,預設是電腦實體 RAM 的一半。數值可以在尾加上 k、m 和 g 表示 KiB、MiB 和 GiB 單位的記憶體,亦可以在尾加上百分比等號 (%) 表示電腦實體 RAM 的百分比,0 表示沒有上限。

  • nr_blocks - 和 size 一樣設定分配記憶體上限,但單位為 PAGE_CACHE_SIZE (一般為 4 KiB)。數值可以在尾加上 k、m 和 g 表示千、百萬和十憶個 pages 單位的記憶體,0 表示沒有上限。

  • nr_inodes - 設定此 tmpfs 檔案系統的 inode 上限,即檔案系統所可能存放檔案數目的上限。預設是電腦實體 RAM page 數目的一半。數值可以在尾加上 k、m 和 g 表示千、百萬和十憶個單位的 inode,0 表示沒有上限。


改變系統預設 tmpfs 檔案系統上限


Debian/Ubuntu 管理員可以設定 /etc/default/tmpfs 中的變數 TMPFS_FS:


TMPFS_FS=26843546

亦在 /etc/default/tmpfs 設定以下變數的值改變該 tmpfs 檔案系統的大小上限:




改變分配記憶體上限


直接重新掛載 (remount) tmpfs 檔案系統可以不損已存放檔案而改變分配記憶體上限:


mount -o remount,size=512m /tmp


    全站熱搜

    立你斯 發表在 痞客邦 留言(0) 人氣()