linux的/dev/shm目錄用於優化

咱們平常操做中常常df –Th查看磁盤容量,那麼/dev/shm的做用究竟是什麼? oracle

 $ df -Th spa

文件系統      類型    容量  已用 可用 已用掛載點 orm

/dev/sda2     ext3     57G   32G   23G  59% / 進程

/dev/sda5     ext3    476G  341G  111G  76% /var 內存

/dev/sda1     ext3    190M   29M  153M  16% /boot rem

/dev/sdb1     ext2    1.8T  1.2T  584G  67% /ext get

tmpfs        tmpfs     20G  9.5G   11G  49% /dev/shm file


/dev/shm在內存中,而不是在磁盤上。因爲/dev/shm存在於內存中,因此速度確定大大優於磁盤。 方法

/dev/shm不是當即佔用內存,而是採用須要才佔用內存的方法。在上面的例子中,/dev/shm設置的值是20G,咱們看到已用寫入了9.5G的數據,也就是佔用了9.5G的內存。 im

 

/dev/shm採用tmpfs文件系統,它具備如下優勢

1.       速度飛快。

2.       動態分配:寫入更多的數據,/dev/shm佔用更多的內存;刪除/dev/shm中的數據,那麼就減小佔用內存。不用這樣利於內存的充分使用。

 

/dev/shm另外一個特色:系統重啓後、從新掛載/dev/shm後,/dev/shm中的數據都會消失。

 

/dev/shm默認值是內存的一半,有時根據須要會增大/dev/shm,如oracle中設置memory_target中的值超過了/dev/shm的大小。

 

修改/dev/shm大小:

1.Vim /etc/fstab

原來是這樣:

tmpfs                   /dev/shm                tmpfs   defaults        0 0

修改爲以下,也就是20G

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


2.從新mount /dev/shm後生效

# mount -o remount /dev/shm

或者umount /dev/shm

mount /dev/shm


經過df –Th查看是否生效

 

也能夠用下面的方式

# mkdir /mnt/tmp

# mount -t tmpfs -o size=256m,mode=1777 tmpfs /mnt/tmp

 

 

問題解決:

有時會遇到/dev/shm 卸載不掉的狀況

# umount /dev/shm

umount: /dev/shm: device is busy.

 

fuser處理

# fuser -km /dev/shm

# umount /dev/shm

# mount /dev/shm

 

fuser命令

-k:kill processes accessing the named file(殺死全部正在訪問指定文件的進程

)

-m 表示指定文件所在的文件系統或者塊設備(處於 mount 狀態)。全部訪問該文件系統的進程都被列出。


首先在/dev/shm建個tmp文件夾,而後與實際/tmp綁定

  #mkdir /dev/shm/tmp

  #chmod 1777 /dev/shm/tmp

  #mount -–bind /dev/shm/tmp /tmp

相關文章
相關標籤/搜索