轉載:http://blog.csdn.net/wxwsixis/article/details/5752186
前幾天發現服務器的內存(ram)和swap使用率非常低,於是就想這么多的資源,不用豈不浪費了?google了一下,認識了tmpfs,總的來說tmpfs是一種虛擬內存文件系統,正如這個定義它最大的特點就是它的存儲空間在VM里面,這里提一下VM(virtual memory),VM是由linux內核里面的vm子系統管理的東東,現在大多數操作系統都采用了虛擬內存管理機制?更詳細的說明請參考<<UnderStanding The Linux Virtual Memory Manager>)。
linux下面VM的大小由RM(Real Memory)和swap組成,RM的大小就是物理內存的大小,而Swap的大小是由你自己決定的。Swap是通過硬盤虛擬出來的內存空間,因此它的讀寫速度相對RM(Real Memory)要慢許多,我們為什么需要Swap呢?當一個進程申請一定數量的內存時,如內核的vm子系統發現沒有足夠的RM時,就會把RM里面的一些不常用的數據交換到Swap里面,如果需要重新使用這些數據再把它們從Swap交換到RM里面。 如果你有足夠大的物理內存,根本不需要划分Swap分區。
通過上面的說明,你該知道tmpfs使用的存儲空間VM是什么了吧? 前面說過VM由RM+Swap兩部分組成,因此tmpfs最大的存儲空間可達(The size of RM + The size ofSwap)。但是對於tmpfs本身而言,它並不知道自己使用的空間是RM還是Swap,這一切都是由內核的vm子系統管理的。
怎樣使用tmpfs呢?
#mount -t tmpfs -o size=20m tmpfs /mnt/tmp
上面這條命令分配了上限為20m的VM到/mnt/tmp目錄下,用df命令查看一下,確實/mnt/tmp掛載點顯示的大小是20m,但是tmpfs一個優點就是它的大小是隨着實際存儲的容量而變化的,換句話說,假如/mnt/tmp目錄下什么也沒有,tmpfs並不占用VM。上面的參數20m只是告訴內核這個掛載點最大可用的VM為20m,如果不加上這個參數,tmpfs默認的大小是RM的一半,假如你的物理內存是128M,那么tmpfs默認的大小就是64M,
tmpfs有沒有缺點呢?
當然有,由於它的數據是在VM里面,因此斷電或者你卸載它之后,數據就會立即丟失,這也許就是它叫tmpfs的原故。不過這其實不能說是缺點。那tmpfs到底有什么用呢?
tmpfs的用途
由於tmpfs使用的是VM,因此它比硬盤的速度肯定要快,因此我們可以利用這個優點使用它來提升機器的性能。
#mount -t tmpfs -o size=2m tmpfs /tmp
上面這條命令分配了最大2m的VM給/tmp。
由於/tmp目錄是放臨時文件的地方,因此我們可以使用tmpfs來加快速度,由於沒有掛載之前/tmp目錄下的文件也許正在被使用,因此掛載之后系統也許有的程序不能正常工作。沒有關系,只要在/etc/fstab里面加上下面的語句
tmpfs /tmp tmpfs size=2m 0 0
重啟電腦之后就一切OK了。
強列建議你看看下面這篇文章。
http://www-128.ibm.com/developerworks/cn/linux/filesystem/l-fs3/
另外還可以參考
2.6內核里面的Documentation/filesystems/tmpfs.txt
總結:tmpfs和aufs文件系統結合使用,可以實現對只讀文件系統的寫操作,同時能夠提高寫效率。linux安裝光盤中允許對軟件的安裝就是一個很好的應用。