1. 程式人生 > >tmpfs 一種虛擬記憶體檔案系統

tmpfs 一種虛擬記憶體檔案系統

前幾天發現伺服器的記憶體(ram)和swap使用率非常低,於是就想這麼多的資源不用豈不浪費了?google了一下,認識了tmpfs,總的來說tmpfs是一種虛擬記憶體檔案系統正如這個定義它最大的特點就是它的儲存空間在VM裡面,這裡提一下VM(virtual memory),VM是由linux核心裡面的vm子系統管理的東東,現在大多數作業系統都採用了虛擬記憶體管理機制?

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 of Swap)。 但是對於tmpfs本身而言,它並不知道自己使用的空間是RM還是Swap,這一切都是由核心的vm子系統管理的。

怎樣使用tmpfs呢?
CODE: #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,因此它比硬碟的速度肯定要快,因此我們可以利用這個優點使用它來提升機器的效能。
CODE: #mount -t tmpfs -o size=2m tmpfs /tmp

上面這條命令分配了最大2m的VM給/tmp。 

由於/tmp目錄是放臨時檔案的地方,因此我們可以使用tmpfs來加快速度,由於沒有掛載之前/tmp目錄下的檔案也許正在被使用,因此掛載之後系統也許有的程式不能正常工作。沒有關係,只要在/etc/fstab裡面加上下面的語句

CODE: tmpfs /tmp tmpfs size=2m 0 0

重啟電腦之後就一切OK了。 前幾天發現伺服器的記憶體(ram)和swap使用率非常低,於是就想這麼多的資源不用豈不浪費了?google了一下,認識了tmpfs,總的來說tmpfs是一種虛擬記憶體檔案系統正如這個定義它最大的特點就是它的儲存空間在VM裡面,這裡提一下VM(virtual memory),VM是由linux核心裡面的vm子系統管理的東東,現在大多數作業系統都採用了虛擬記憶體管理機制?

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 of Swap)。 但是對於tmpfs本身而言,它並不知道自己使用的空間是RM還是Swap,這一切都是由核心的vm子系統管理的。

怎樣使用tmpfs呢?
CODE: #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,因此它比硬碟的速度肯定要快,因此我們可以利用這個優點使用它來提升機器的效能。
CODE: #mount -t tmpfs -o size=2m tmpfs /tmp

上面這條命令分配了最大2m的VM給/tmp。 

由於/tmp目錄是放臨時檔案的地方,因此我們可以使用tmpfs來加快速度,由於沒有掛載之前/tmp目錄下的檔案也許正在被使用,因此掛載之後系統也許有的程式不能正常工作。沒有關係,只要在/etc/fstab裡面加上下面的語句
CODE: tmpfs /tmp tmpfs size=2m 0 0

重啟電腦之後就一切OK了。