轉載: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安裝CD光牒中允許對軟體的安裝就是一個很好的應用。