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

LINUX下如何使用tmpfs

tmpfs介紹

tmpfs是一種虛擬內存文件系統,而不是塊設備。是基於內存的文件系統,創建時不需要使用mkfs等初始化

它最大的特點就是它的存儲空間在VM(virtual memory),VM是由linux內核裡面的vm子系統管理的。

linux下面VM的大小由RM(Real Memory)和swap組成,RM的大小就是物理內存的大小,而Swap的大小是由自己決定的。

Swap是通過硬盤虛擬出來的內存空間,因此它的讀寫速度相對RM(Real Memory)要慢許多,當一個進程申請一定數量的內存時,如內核的vm子系統發現沒有足夠的RM時,就會把RM裡面的一些不常用的數據交換到Swap裡面,如果需要重新使用這些數據再把它們從Swap交換到RM裡面。如果有足夠大的物理內存,可以不劃分Swap分區。

關於SWAP的增加詳見:http://blog.csdn.net/haibusuanyun/article/details/16336593點擊打開鏈接

VM由RM+Swap兩部分組成,因此tmpfs最大的存儲空間可達(The size of RM + The size of Swap)。 但是對於tmpfs本身而言,它並不知道自己使用的空間是RM還是Swap,這一切都是由內核的vm子系統管理的。

tmpfs默認的大小是RM的一半,假如你的物理內存是1024M,那麼tmpfs默認的大小就是512M

一般情況下,是配置的小於物理內存大小的。

tmpfs配置的大小並不會真正的占用這塊內存,如果/dev/shm/下沒有任何文件,它占用的內存實際上就是0字節;如果它最大為1G,裡頭放有100M文件,那剩余的900M仍然可為其它應用程序所使用,但它所占用的100M內存,是不會被系統回收重新劃分的。

當刪除tmpfs中文件,tmpfs 文件系統驅動程序會動態地減小文件系統並釋放 VM 資源。

#########################

tmpfs的用途

例如:

Oracle 中的Automatic Memory Management特性就使用了/dev/shm。

LINUX中可以把一些程序的臨時文件放置在tmpfs中,利用tmpfs比硬盤速度快的特點提升系統性能。

調整tmpfs大小大致有以下三種方法:

1.直接掛載到需要的目錄--比如系統的臨時目錄-可以根據實際需要掛載某個程序的臨時文件的目錄

[root@bys3 ~]# mount -t tmpfs -o size=20m tmpfs /tmp

[root@bys3 ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2              16G   10G  4.7G  69% /

/dev/sda1              99M   21M   74M  22% /boot

tmpfs                 502M     0  502M   0% /dev/shm

tmpfs                  20M     0   20M   0% /tmp

由於沒有掛載之前/tmp目錄下的文件也許正在被使用,因此掛載之後系統也許有的程序不能正常工作。可以寫入/etc/fstab,這樣重啟後也有效。

2./etc/fstab文件來修改/dev/shm的容量(增加size=100M選項即可),修改後,重新掛載即可:

[root@bys3 ~]# cat /etc/fstab

LABEL=/                 /                       ext3    defaults        1 1

LABEL=/boot             /boot                   ext3    defaults        1 2

tmpfs                   /dev/shm                tmpfs   defaults,size=600M        0 0

tmpfs                   /tmp                tmpfs  defaults,size=25M       0 0

本欄目更多精彩內容:http://www.bianceng.cn/OS/Linux/

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

LABEL=SWAP-sda3         swap                    swap    defaults        0 0

/dev/sda5               swap                    swap    defaults        0 0

[root@bys3 ~]# mount -a    --測試/etc/fstab無錯誤,重啟OS系統

[oracle@bys3 ~]$ df -h    --重啟後的信息如下,tmpfs文件系統的對應條目已經改變為配置的

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2              16G   10G  4.7G  69% /

/dev/sda1              99M   21M   74M  22% /boot

tmpfs                 600M     0  600M   0% /dev/shm

tmpfs                  25M     0   25M   0% /tmp

3./dev/shm建一個tmp目前,並與/tmp綁定。  --這方法有點煩瑣,不如方法1方便快捷。

[root@bys3 ~]# mkdir /dev/shm/tmp

[root@bys3 ~]# chmod 1777 /dev/shm/tmp

[root@bys3 ~]# mount --bind /dev/shm/tmp /tmp   -注意mount --bind  這裡bind前是兩個-

[root@bys3 ~]# ls -ld /tmp

drwxrwxrwt 2 root root 40 Dec  8 12:15 /tmp

[root@bys3 ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2              16G   10G  4.7G  69% /

/dev/sda1              99M   21M   74M  22% /boot

tmpfs                 600M     0  600M   0% /dev/shm

tmpfs                 600M     0  600M   0% /tmp             ----可以看到/tmp使用到了 /dev/shm的空間。

Copyright © Linux教程網 All Rights Reserved