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呢?
#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了。
測試過程:
[[email protected] shm]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 852G 325G 483G 41% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/md0 1.8T 506G 1.3T 30% /opt
[[email protected] shm]#
[[email protected] shm]# mount -t tmpfs -osize=2048M tmpfs /mnt/ram/
[[email protected] shm]#
[[email protected] shm]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 852G 325G 483G 41% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/md0 1.8T 506G 1.3T 30% /opt
tmpfs 2.0G 0 2.0G 0% /mnt/ram
[[email protected] shm]#
[[email protected] shm]#
[[email protected] chairly]#cp codeblocks-8.02-src.tar.bz2 /mnt/ram/
[[email protected] ram]#
[[email protected] ram]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 852G 325G 483G 41% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/md0 1.8T 506G 1.3T 30% /opt
tmpfs 2.0G 6.6M 2.0G 1% /mnt/ram
[[email protected] ram]#
[[email protected] ram]# free
total used free shared buffers cached
Mem: 32818744 3167792 29650952 0 128844 2710972
-/+ buffers/cache: 327976 32490768
Swap: 35005624 0 35005624
[[email protected] ram]#
[[email protected] ram]# rm *
rm: remove regular file`codeblocks-8.02-src.tar.bz2'? y
[[email protected] ram]#
[[email protected] ram]# free
total used free shared buffers cached
Mem: 32818744 3161160 29657584 0 128856 2704292
-/+ buffers/cache: 328012 32490732
Swap: 35005624 0 35005624
[[email protected] ram]#
在/mnt/ram下無法使用dd指令測試硬碟讀寫速度。總是報dd: opening `/mnt/ram/write.dat': Invalid argument。
文章原位址:https://www.linuxidc.com/Linux/2011-09/42396.htm