Linux內(nèi)存文件系統(tǒng)tmpfs(/dev/shm)詳細介紹

一、/dev/shm理論
默認的Linux發(fā)行版中的內(nèi)核配置都會開啟tmpfs,映射到了/dev/下的shm目錄。可以通過df 命令查看結(jié)果.
/dev/shm/是linux下一個非常有用的目錄,因為這個目錄不在硬盤上,而是在內(nèi)存里。因此在linux下,就不需要大費周折去建ramdisk,直接使用/dev/shm/就可達到很好的優(yōu)化效果。默認系統(tǒng)就會加載/dev/shm ,它就是所謂的tmpfs,有人說跟ramdisk(虛擬磁盤),但不一樣。象虛擬磁盤一樣,tmpfs 可以使用您的 RAM,但它也可以使用您的交換分區(qū)來存儲。而且傳統(tǒng)的虛擬磁盤是個塊設(shè)備,并需要一個 mkfs 之類的命令才能真正地使用它,tmpfs 是一個文件系統(tǒng),而不是塊設(shè)備;您只是安裝它,它就可以使用了。
tmpfs有以下優(yōu)勢:
1。動態(tài)文件系統(tǒng)的大小,/dev /shm/需要注意的一個是容量問題,在linux下,它默認最大為內(nèi)存的一半大小,使用df -h命令可以看到。但它并不會真正的占用這塊內(nèi)存,如果/dev/shm/下沒有任何文件,它占用的內(nèi)存實際上就是0字節(jié);如果它最大為1G,里頭放有 100M文件,那剩余的900M仍然可為其它應(yīng)用程序所使用,但它所占用的100M內(nèi)存,是絕不會被系統(tǒng)回收重新劃分的
2。tmpfs 的另一個主要的好處是它閃電般的速度。因為典型的 tmpfs 文件系統(tǒng)會完全駐留在 RAM 中,讀寫幾乎可以是瞬間的。
3。tmpfs 數(shù)據(jù)在重新啟動之后不會保留,因為虛擬內(nèi)存本質(zhì)上就是易失的。所以有必要做一些腳本做諸如加載,綁定的操作。
二、修改/dev/shm大小
默認的最大一半內(nèi)存大小在某些場合可能不夠用,并且默認的inode數(shù)量很低一般都要調(diào)高些,這時可以用mount命令來管理它。
#mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
在2G的機器上,將最大容量調(diào)到1.5G,并且inode數(shù)量調(diào)到1000000,這意味著大致可存入最多一百萬個小文件。
如果需要永久修改/dev/shm的值,需要修改/etc/fstab
tmpfs /dev/shm tmpfs defaults,size=1.5G 0 0
mount -o remount /dev/shm
三、/dev/shm應(yīng)用
首先在/dev/shm建個tmp文件夾,然后與實際/tmp綁定
#mkdir /dev/shm/tmp
#chmod 1777 /dev/shm/tmp
#mount –bind /dev/shm/tmp /tmp(–bind )
在使用mount –bind olderdir newerdir命令來掛載一個目錄到另一個目錄后,newerdir的權(quán)限和所有者等所有信息會發(fā)生變化。掛載后的目錄繼承了被掛載目錄的所有屬性,除了名稱。
相關(guān)文章
如何使用TMPGEnc DVD Author 3(DVD多媒體視頻文件制作)制作DVD教程?
TMPGEnc DVD Author 是一個功能非常強大的 DVD 多媒體視頻文件制作工具,程序可以直接將 MPEG-1、MPEG-2 格式的多媒體視頻文件重新壓縮并編碼為 DVD 多媒體視頻文件,并輸2016-09-26- 全民槍戰(zhàn)TMP的崛起之路絕對是一把神級槍械。一起跟隨小編過來看看吧,祝大家游戲愉快2015-09-19
- 這篇文章主要介紹了使命召喚ol PDW2000測評 TMP詳細評測對比分析,需要的朋友可以參考下!2015-09-19
- 今天小編為大家?guī)砹薈SOL2生化模式怎么賣TMP 生化模式買槍方法介紹,感興趣的朋友們可以跟著小編去下文了解一下哦2015-04-27
- 從網(wǎng)上下載的音樂放到sk卡變成tmp格式了,無法使用,經(jīng)搜索,發(fā)現(xiàn)tmp文件是臨時文件,說明你的歌曲沒下完2014-11-30
Win7系統(tǒng)tmp文件怎么打開 Win7系統(tǒng)打開tmp文件的方法
tmp的名稱由來是Temporary的縮寫,是臨時的意思。但是有很多朋友tmp文件用什么打開的。下面腳本之家小編給大家?guī)砹薟in7系統(tǒng)打開tmp文件的方法,需要的朋友參考下吧2016-10-13