亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

tmpfs介紹

系統(tǒng) 2446 0
介紹 tmpfs
如果我必須一下子說清楚 tmpfs,我會說 tmpfs
就象虛擬磁盤(ramdisk),但不一樣。象虛擬磁盤一樣,tmpfs 可以使用您的
RAM,但它也可以使用您的交換分區(qū)來存儲。而且傳統(tǒng)的虛擬磁盤是個塊設(shè)備,并需要一個
mkfs 之類的命令才能真正地使用它,tmpfs
是一個文件系統(tǒng),而不是塊設(shè)備;您只是安裝它,它就可以使用了。總而言之,這讓
tmpfs 成為我有機會遇到的最好的基于 RAM 的文件系統(tǒng)。
tmpfs 和 VM
讓我們來看看 tmpfs 更有趣的一些特性吧。正如我前面提到的一樣,tmpfs
既可以使用 RAM, 也可以使用交換分區(qū)。剛開始這看起來可能有點武斷,但請記住
tmpfs 也是我們知道的"虛擬內(nèi)存文件系統(tǒng)"。而且,您可能也知道,Linux
內(nèi)核的虛擬內(nèi)存資源同時來源于您的 RAM 和交換分區(qū)。內(nèi)核中的 VM
子系統(tǒng)將這些資源分配到系統(tǒng)中的其它部分,并負(fù)責(zé)在后臺管理這些資源,通常是透明地將
RAM 頁移動到交換分區(qū)或從交換分區(qū)到 RAM 頁。
tmpfs 文件系統(tǒng)需要 VM 子系統(tǒng)的頁面來存儲文件。tmpfs
自己并不知道這些頁面是在交換分區(qū)還是在 RAM 中;做這種決定是 VM
子系統(tǒng)的工作。tmpfs 文件系統(tǒng)所知道的就是它正在使用某種形式的虛擬內(nèi)存。
不是塊設(shè)備
這里是 tmpfs 文件系統(tǒng)另一個有趣的特性。不同于大多數(shù)"標(biāo)準(zhǔn)的"文件系統(tǒng),如
ext3、ext2、XFS、JFS、ReiserFS 和其它一些系統(tǒng),tmpfs
并不是存在于一個底層塊設(shè)備上面。因為 tmpfs 是直接建立在 VM
之上的,您用一個簡單的 mount 命令就可以創(chuàng)建 tmpfs 文件系統(tǒng)了。# mount
tmpfs /mnt/tmpfs -t tmpfs
執(zhí)行這個命令之后,一個新的 tmpfs 文件系統(tǒng)就安裝在
/mnt/tmpfs,隨時可以使用。注意,不需運行 mkfs.tmpfs
;事實上,那是不可能的,因為沒有這樣的命令存在。在 mount
命令執(zhí)行之后,文件系統(tǒng)立即就被安裝并且可以使用了,類型是 tmpfs 。這和
Linux 虛擬磁盤如何使用大相徑庭;標(biāo)準(zhǔn)的 Linux 虛擬磁盤是
塊設(shè)備,所以在使用它們之前必須用您選擇的文件系統(tǒng)將其格式化。相反,tmpfs
是一個文件系統(tǒng)。所以,您可以簡單地安裝它就可以使用了。

Tmpfs 的優(yōu)勢
動態(tài)文件系統(tǒng)的大小
您可能想知道我們前面在 /mnt/tmpfs 安裝的 tmpfs
文件系統(tǒng)有多大。這個問題的答案有點意外,特別是在和基于磁盤的文件系統(tǒng)比較的時候。/mnt/tmpfs
最初會只有很小的空間,但隨著文件的復(fù)制和創(chuàng)建,tmpfs
文件系統(tǒng)驅(qū)動程序會分配更多的
VM,并按照需求動態(tài)地增加文件系統(tǒng)的空間。而且,當(dāng) /mnt/tmpfs
中的文件被刪除時,tmpfs 文件系統(tǒng)驅(qū)動程序會動態(tài)地減小文件系統(tǒng)并釋放 VM
資源,這樣做可以將 VM 返回到循環(huán)當(dāng)中以供系統(tǒng)中其它部分按需要使用。因為 VM
是寶貴的資源,所以您一定不希望任何東西浪費超出它實際所需的 VM,tmpfs
的好處之一就在于這些都是自動處理的。 請參閱 參考資料。
速度
tmpfs 的另一個主要的好處是它閃電般的速度。因為典型的 tmpfs
文件系統(tǒng)會完全駐留在 RAM
中,讀寫幾乎可以是瞬間的。即使用了一些交換分區(qū),性能仍然是卓越的,當(dāng)更多空閑的
VM 資源可以使用時,這部分 tmpfs 文件系統(tǒng)會被移動到 RAM 中去。讓 VM
子系統(tǒng)自動地移動部分 tmpfs 文件系統(tǒng)到交換分區(qū)實際上對性能上是
好的,因為這樣做可以讓 VM 子系統(tǒng)為需要 RAM
的進(jìn)程釋放空間。這一點連同它動態(tài)調(diào)整大小的能力,比選擇使用傳統(tǒng)的 RAM
磁盤可以讓操作系統(tǒng)有好得多的整體性能和靈活性。
沒有持久性
這看起來可能不象是個積極因素,tmpfs
數(shù)據(jù)在重新啟動之后不會保留,因為虛擬內(nèi)存本質(zhì)上就是易失的。我想您可能猜到了
tmpfs 被稱為"tmpfs"的一個原因,不是嗎?然而,這實際上可以是一件好事。它讓
tmpfs 成為一個保存您不需保留的數(shù)據(jù)(如臨時文件,可以在 /tmp 中找到,還有
/var 文件系統(tǒng)樹的某些部分)的卓越的文件系統(tǒng)。

使用 tmpfs
為了使用 tmpfs,您所需要的就是啟用了"Virtual memory file system
support(以前是 shm fs)"選項的 2.4
系列內(nèi)核;這個選項在內(nèi)核配置選項的"File systems"部分。一旦您有了一個啟用了
tmpfs 的內(nèi)核,您就可以開始安裝 tmpfs 文件系統(tǒng)了。其實,在您所有的 2.4
內(nèi)核中都打開 tmpfs 選項是個好主意,不管您是否計劃使用
tmpfs。這是因為您需要內(nèi)核 tmpfs 支持來使用 POSIX 共享的內(nèi)存。然而, System
V共享的內(nèi)存不需要內(nèi)核中有 tmpfs 就 可以工作。注意,您 不需要為了讓 POSIX
共享的內(nèi)存工作而安裝 tmpfs 文件系統(tǒng);您只需要在內(nèi)核中支持 tmpfs
就可以了。POSIX
共享的內(nèi)存現(xiàn)在使用得不太多,但這種情況可能會隨著時間而改變。
避免低 VM 情況
tmpfs 根據(jù)需要動態(tài)增大或減小的事實讓人疑惑:如果您的 tmpfs
文件系統(tǒng)增大到它耗盡了 所有虛擬內(nèi)存的程度,而您沒有剩余的 RAM
或交換分區(qū),這時會發(fā)生什么?一般來說,這種情況是有點討厭。如果是 2.4.4
內(nèi)核,內(nèi)核會立即鎖定。如果是 2.4.6 內(nèi)核,VM
子系統(tǒng)已經(jīng)以很多種方式得到了修正,雖然耗盡 VM
并不是一個美好的經(jīng)歷,事情也不會完全地失敗。如果 2.4.6
內(nèi)核到了無法分配更多 VM 的程度,您顯然不愿意不能向 tmpfs
文件系統(tǒng)寫任何新數(shù)據(jù)。另外,可能會發(fā)生其他一些事情。首先,系統(tǒng)的其他一些進(jìn)程會無法分配更多的內(nèi)存;通常,這意味著系統(tǒng)多半會變得
極度緩慢而且?guī)缀鯖]有響應(yīng)。這樣,超級用戶要采取必要的步驟來緩解這種低 VM
的情況就會很困難,或異常地耗時。
另外,內(nèi)核有一個內(nèi)建的最終防線系統(tǒng),用來在沒有可用內(nèi)存的時候釋放內(nèi)存,它會找到占用
VM 資源的進(jìn)程并終止該進(jìn)程。不幸的是,這種"終止進(jìn)程"的解決方案在 tmpfs
的使用增加引起 VM 耗盡的情況下通常會導(dǎo)致不良后果。以下是原因。tmpfs
本身不能(也不應(yīng)該)被終止,因為它是內(nèi)核的一部分而非一個用戶進(jìn)程,而且也沒有容易的方法可以讓內(nèi)核找出是那個進(jìn)程占滿了
tmpfs 文件系統(tǒng)。所以,內(nèi)核會錯誤地攻擊它能找到的最大的占用 VM
的進(jìn)程,通常會是 X 服務(wù)器(X server),如果您碰巧在使用它。所以,您的 X
服務(wù)器會被終止,而引起低 VM 情況的根本原因(tmpfs)卻沒有被解決。Ick.
低 VM:解決方案
幸運的是,tmpfs
允許您在安裝或重新安裝文件系統(tǒng)的時候指定文件系統(tǒng)容量的最大值上限。實際上,從
2.4.6 內(nèi)核到 2.11g 內(nèi)核,這些參數(shù)只能在
安裝時設(shè)置,而不是重新安裝時,但我們可以期望在不久的將來可以在重新安裝時設(shè)置這些參數(shù)。tmpfs
容量最大值的最佳設(shè)置依賴于資源和您特定的 Linux
主機的使用模式;這個想法是要防止一個完全使用資源的 tmpfs
文件系統(tǒng)耗盡所有虛擬內(nèi)存結(jié)果導(dǎo)致我們前面談到的糟糕的低 VM 情況。尋找好的
tmpfs 上限值的一個好方法是使用 top
來監(jiān)控您系統(tǒng)的交換分區(qū)在高峰使用階段的使用情況。然后,確保指定的 tmpfs
上限稍小于所有這些高峰使用時間內(nèi)空閑交換分區(qū)和空閑 RAM 的總和。
創(chuàng)建有最大容量的 tmpfs 文件系統(tǒng)很容易。要創(chuàng)建一個新的最大 32 MB 的 tmpfs
文件系統(tǒng),請鍵入:# mount tmpfs /dev/shm -t tmpfs -o size=32m
這次,我們沒有把 tmpfs 文件系統(tǒng)安裝在 /mnt/tmpfs,而是創(chuàng)建在
/dev/shm,這正好是 tmpfs 文件系統(tǒng)的"正式"安裝點。如果您正好在使用
devfs,您會發(fā)現(xiàn)這個目錄已經(jīng)為您創(chuàng)建好了。
還有,如果我們想將文件系統(tǒng)的容量限制在 512 KB 或 1 GB
以內(nèi),我們可以分別指定 size=512k 和 size=1g
。除了限制容量,我們還可以通過指定 nr_inodes=x
參數(shù)限制索引節(jié)點(文件系統(tǒng)對象)。在使用 nr_inodes 時, x
可以是一個簡單的整數(shù),后面還可以跟一個 k 、 m 或 g
指定千、百萬或十億(!)個索引節(jié)點。
而且,如果您想把上面的 mount tmpfs 命令的等價功能添加到
/etc/fstab,應(yīng)該是這樣: tmpfs /dev/shm tmpfs size=32m 0 0
在現(xiàn)存的安裝點上安裝
在以前使用 2.2 的時候,試圖在
已經(jīng)安裝了東西的安裝點再次安裝任何東西都會引發(fā)錯誤。然而,重寫后的內(nèi)核安裝代碼使多次使用安裝點不再成為問題。這里是一個示例的情況:假設(shè)我們有一個現(xiàn)存的文件系統(tǒng)安裝在
/tmp。然而,我們決定要開始使用 tmpfs 進(jìn)行 /tmp
的存儲。過去,您唯一的選擇就是卸載 /tmp 并在其位置重新安裝您新的 tmpfs/tmp
文件系統(tǒng),如下所示: # umount /tmp# mount tmpfs /tmp -t tmpfs -o size=64m
可是,這種解決方案也許對您不管用。可能有很多正在運行的進(jìn)程在 /tmp
中有打開的文件;如果是這樣,在試圖卸載 /tmp
時,您就會遇到如下的錯誤:umount: /tmp: device is busy
然而,使用最近的 2.4 內(nèi)核,您可以安裝您新的 /tmp
文件系統(tǒng),而不會遇到"device is busy"錯誤:# mount tmpfs /tmp -t tmpfs -o
size=64m
用一條命令,您新的 tmpfs /tmp 文件系統(tǒng)就被安裝在
/tmp,并安裝在已經(jīng)安裝的不能再被直接訪問的分區(qū)
之上。然而,雖然您不能訪問原來的
/tmp,任何在原文件系統(tǒng)上還有打開文件的進(jìn)程都可以繼續(xù)訪問它們。而且,如果您
unmount 基于 tmpfs 的 /tmp,原來安裝的 /tmp
文件系統(tǒng)會重新出現(xiàn)。實際上,您在相同的安裝點上可以安裝任意數(shù)目的文件系統(tǒng),安裝點就象一個堆棧;卸載當(dāng)前的文件系統(tǒng),上一個最近安裝的文件系統(tǒng)就會重新出現(xiàn)。
綁定安裝

使用綁定安裝,我們可以將所有甚至
部分已經(jīng)安裝的文件系統(tǒng)安裝到另一個位置,而在兩個安裝點可以同時訪問該文件系統(tǒng)。例如,您可以使用綁定安裝來安裝您現(xiàn)存的根文件系統(tǒng)到
/home/drobbins/nifty,如下所示: # mount --bind / /home/drobbins/nifty
現(xiàn)在,如果您觀察 /home/drobbins/nifty
的內(nèi)部,您就會看到您的根文件系統(tǒng)(/home/drobbins/nifty/etc、/home/drobbins/nifty/opt
等)。而且,如果您在根文件系統(tǒng)修改文件,您在 /home/drobbins/nifty
中也可以看到所作的改動。這是因為它們是同一個文件系統(tǒng);內(nèi)核只是簡單地為我們將該文件系統(tǒng)映射到兩個不同的安裝點。注意,當(dāng)您在另一處安裝文件系統(tǒng)時,任何安裝在綁定安裝文件系統(tǒng)
內(nèi)部的安裝點的文件系統(tǒng)都不會隨之移動。換句話說,如果您在單獨的文件系統(tǒng)上有
/usr,我們前面執(zhí)行的綁定安裝就會讓 /home/drobbins/nifty/usr
為空。您會需要附加的綁定安裝命令來使您能夠瀏覽位于
/home/drobbins/nifty/usr 的 /usr 的內(nèi)容: # mount --bind /usr
/home/drobbins/nifty/usr
綁定安裝部分文件系統(tǒng)
綁定安裝讓更妙的事情成為可能。假設(shè)您有一個 tmpfs
文件系統(tǒng)安裝在它的傳統(tǒng)位置 /dev/shm,您決定要開始在當(dāng)前位于根文件系統(tǒng)的
/tmp 使用 tmpfs。雖然可以在 /tmp(這是可能的)安裝一個新的 tmpfs
文件系統(tǒng),您也可以決定讓新的 /tmp 共享當(dāng)前安裝的 /dev/shm
文件系統(tǒng)。然而,雖然您可以在 /tmp 綁定安裝 /dev/shm 就完成了,但您的
/dev/shm 還包含一些您不想在 /tmp 出現(xiàn)的目錄。所以,您怎么做呢?這樣如何:
# mkdir /dev/shm/tmp# chmod 1777 /dev/shm/tmp# mount --bind /dev/shm/tmp
/tmp
在這個示例中,我們首先創(chuàng)建了一個 /dev/shm/tmp 目錄,然后給它 1777 權(quán)限,對
/tmp 適當(dāng)?shù)脑S可。既然我們的目錄已經(jīng)準(zhǔn)備好了,我們可以安裝,也只能安裝
/dev/shm/tmp 到 /tmp。所以,雖然 /tmp/foo 會映射到
/dev/shm/tmp/foo,但您沒有辦法從 /tmp 訪問 /dev/shm/bar 文件。
正如您所見,綁定安裝非常強大,讓您可以輕易地修改文件系統(tǒng)設(shè)計,絲毫不必忙亂。

tmpfs介紹


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天色天天干天天射 | 久久久久久久国产视频 | 免费女人18毛片a级毛片视频 | 日韩一区二区在线免费观看 | 国内精品久久久久尤物 | 久久噜噜噜久久亚洲va久 | 国产91在线 | 亚洲 | 久久久久久亚洲精品中文字幕 | 宅男看片午夜大片啪啪mv | 亚洲精品ccc | 91国内精品线免费播放 | 99精品视频在线成人精彩视频 | 久久久久中文 | 香蕉久久夜色精品国产 | 狠狠色丁香久久综合五月 | 性欧美极品xxxx欧美一区二区 | 国产麻豆视频在线看网站 | 国产91精品高清一区二区三区 | 久操精品视频 | 巨乳毛片 | 欧美在线一区视频 | 久久爱影视i| 亚洲一区精品中文字幕 | 久久在精品线影院精品国产 | 精品日本久久久久久久久久 | www久久只有这里有精品 | 亚洲欧美日韩成人网 | 亚洲精品一二三四 | 精品久久久久久中文字幕一区 | 免费一级黄色录像 | er久99久热只有精品国产 | 欧美国产综合在线 | 免费视频久久久 | 黄色一级毛片 | 天天色天天操综合网 | 一区二区三区在线视频播放 | 伊人久久综合谁合综合久久 | 国产成人禁片免费观看 | 99国产国人青青视频在线观看 | 久久国产成人精品国产成人亚洲 | 丁香色婷婷|