咱們平常操做中常常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