首先讓我們認識一下,什麼是tmpfs和/dev/shm/?
tmpfs是Linux/Unix系統上的一種基於記憶體的檔案系統。tmpfs可以使用您的記憶體或swap分區來隱藏檔。由此可見,tmpfs主要儲存暫存的檔案。它有如下2個優勢 :
1. 動態檔案系統的大小。
2. tmpfs 的另一個主要的好處是它閃電般的速度。因為典型的 tmpfs 檔案系統會完全駐留在記憶體 RAM 中,讀寫幾乎可以是瞬間的。
同時它也有一個缺點 tmpfs 資料在重新啟動之後不會保留,因為虛擬記憶體本質上就是易失的。所以有必要做一些指令碼做諸如載入,綁定的操作。
tmpfs不具備持久性,重啟後資料不保留,請務必注意!!!
/dev/shm/是一個裝置檔案,它使用就是tmpfs檔案系統(注意:在Centos和Redhat下,/dev/shm目錄是一個連結,指向/run/shm目錄,在Ubuntu系統下tmpfs檔案系統對應的是/run/shm目錄,可以使用df命令查看),因為 /dev/shm/這個目錄不在硬碟上,而是在記憶體裡,它就所謂的tmpfs。
在Redhat/CentOS等linux發行版中預設大小為實體記憶體的一半。 比如我的的虛擬機器(單核,4096M記憶體)分配記憶體為2048M,所以/dev/shm為2G左右,查看/dev/shm如下:
df -h
tmpfs是基於記憶體的檔案系統,建立時不需要使用mkfs等初始化。如我想把/dev/shm tmpfs大小改為512M,修改/etc/fstab的
tmpfs /dev/shm tmpfs defaults 0 0
改為
tmpfs /dev/shm tmpfs defaults,size=512m 0 0
然後執行
mount -o remount /dev/shm
就修改過來了
補充:
tmpfs(/dev/shm)的使用及應用情境
tmpfs是基於記憶體的,速度是不用說的,硬碟和它沒法比。Oracle 中的Automatic Memory Management特性就使用了/dev/shm。另外如果在網站營運中好好利用tmpfs,將有意想不到的收穫。我們先在/dev/shm建一個tmp目前,並與/tmp綁定。
[root@AY1212111202285f63122 ~]# mkdir /dev/shm/tmp
[root@AY1212111202285f63122 ~]# chmod 1777 /dev/shm/tmp //注意許可權
[root@AY1212111202285f63122 ~]# mount --bind /dev/shm/tmp /tmp
[root@AY1212111202285f63122 ~]# ls -ld /tmp
drwxrwxrwt 2 root root 40 May 29 21:46 /tmp