tmpfs介紹與使用

1 Tmpfs是什麼

tmpfs是一種虛擬內存文件系統,而不是塊設備。是基於內存的文件系統,建立時不須要使用mkfs等初始化
它最大的特色就是它的存儲空間在VM(virtual memory),VM是由linux內核裏面的vm子系統管理的。
linux下面VM的大小由RM(Real Memory)和swap組成,RM的大小就是物理內存的大小,而Swap的大小是由本身決定的。
Swap是經過硬盤虛擬出來的內存空間,所以它的讀寫速度相對RM(Real Memory)要慢許多,當一個進程申請必定數量的內存時,如內核的vm子系統發現沒有足夠的RM時,就會把RM裏面的一些不經常使用的數據交換到Swap裏面,若是須要從新使用這些數據再把它們從Swap交換到RM裏面。若是有足夠大的物理內存,能夠不劃分Swap分區。linux

VM由RM+Swap兩部分組成,所以tmpfs最大的存儲空間可達(The size of RM + The size of Swap)。 可是對於tmpfs自己而言,它並不知道本身使用的空間是RM仍是Swap,這一切都是由內核的vm子系統管理的。
tmpfs默認的大小是RM的一半,假如你的物理內存是1024M,那麼tmpfs默認的大小就是512M
通常狀況下,是配置的小於物理內存大小的。
tmpfs配置的大小並不會真正的佔用這塊內存,若是/dev/shm/下沒有任何文件,它佔用的內存實際上就是0字節;若是它最大爲1G,裏頭放有100M文件,那剩餘的900M仍然可爲其它應用程序所使用,但它所佔用的100M內存,是不會被系統回收從新劃分的。
當刪除tmpfs中文件,tmpfs 文件系統驅動程序會動態地減少文件系統並釋放 VM 資源。優化

優點 :spa

一、 動態文件系統的大小。進程

二、tmpfs 的另外一個主要的好處是它閃電般的速度。由於典型的tmpfs文件系統會徹底駐留在內存 RAM 中,讀寫幾乎能夠是瞬間的。同時它也有一個缺點tmpfs數據在從新啓動以後不會保留,由於虛擬內存本質上就是易失的。因此有必要作一些腳本作諸如加載,綁定的操做。內存

注意:tmpfs不具有持久性,重啓後數據不保留,請務必注意。資源

2 Tmpfs大小調整

有時候,當應用程序使用到Tmpfs時,而在部署的時候若是沒有對應用程序佔用的內存作足夠的評估時,就有可能把Tmpfs用滿,這個時候就須要調整Tmpfs的大小了,固然,調整的大小不能大於你機器內存大小,不然,你只能換機器了,又或是優化你的應用程序。部署

能夠看到tmpfs的大小爲3G,好比咱們想調整到5G。配置

1) umount tmpfs程序

在這裏要注意,因爲umount會把卸載tmpfs文件系統,意味着你的應用程序使用的共享內存將會被刪除,若是數據較重要,在umount前記得備份。數據

root@TENCENT64 /dev]# umount /dev/shm
umount: /dev/shm: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))

這裏能夠看到,umount失敗了,緣由比較明顯,/dev/shm被其它進程使用了,因此在umount前須要把使用/dev/shm的全部進程都停掉。

如錯誤說明,可使用fuser –km /dev/shm命令把加載的進程都kill掉,再進行umount

fuser –km /dev/shm
umount /dev/shm

2) 調整tmpfs的大小

經過修改/etc/fstab文件來修改/dev/shm的容量,在文件中修改tmpfs行,以下圖:

0 0

修改後,從新mount tmpfs便可。

mount /dev/shm
相關文章
相關標籤/搜索