歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

Linux把內存掛載成硬盤提高讀寫速度

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了。

測試過程:

[root@localhost 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

[root@localhost shm]#

[root@localhost shm]# mount -t tmpfs -osize=2048M tmpfs /mnt/ram/

[root@localhost shm]#

[root@localhost 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

[root@localhost shm]#

[root@localhost shm]#

[root@localhost chairly]#cp codeblocks-8.02-src.tar.bz2 /mnt/ram/

[root@localhost ram]#

[root@localhost 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

[root@localhost ram]#

[root@localhost ram]# free

            total       used       free    shared    buffers     cached

Mem:     32818744    3167792   29650952          0    128844    2710972

-/+ buffers/cache:     327976  32490768

Swap:    35005624          0   35005624

[root@localhost ram]#

[root@localhost ram]# rm *

rm: remove regular file`codeblocks-8.02-src.tar.bz2'? y

[root@localhost ram]#

[root@localhost ram]# free

            total       used       free    shared    buffers     cached

Mem:     32818744    3161160   29657584          0    128856    2704292

-/+ buffers/cache:     328012  32490732

Swap:    35005624          0   35005624

[root@localhost ram]#

 在/mnt/ram下無法使用dd命令測試硬盤讀寫速度。總是報dd: opening `/mnt/ram/write.dat': Invalid argument。

Copyright © Linux教程網 All Rights Reserved