【例項】tmpfs /dev/shm
tmpfs /dev/shm
df –Th檢視磁碟容量,/dev/shm的作用到底是什麼?
[root@rac01 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext3 244G 35G 197G 15% /
/dev/sda1 ext3 190M 12M 169M 7% /boot
tmpfs tmpfs 3.9G 2.1G 1.9G 54% /dev/shm
tmpfs介紹
tmpfs是一種虛擬記憶體檔案系統,而不是塊裝置。是基於記憶體的檔案系統,建立時不需要使用mkfs等初始化
它最大的特點就是它的儲存空間在VM(virtual memory),VM是由核心裡面的vm子系統管理的。
linux下面VM的大小由RM(Real Memory)和swap組成,RM的大小就是實體記憶體的大小,而Swap的大小是由自己決定的。
Swap是透過硬碟虛擬出來的記憶體空間,因此它的讀寫速度相對RM(Real
Memory)要慢許多,當一個程式申請一定數量的記憶體時,如核心的vm子系統發現沒有足夠的RM時,就會把RM裡面的一些不常用的資料交換到Swap裡面,如果需要重新使用這些資料再把它們從Swap交換到RM裡面。如果有足夠大的實體記憶體,可以不劃分Swap分割槽。
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 資源。
/dev/shm在記憶體中,而不是在磁碟上。由於/dev/shm存在於記憶體中,所以速度肯定大大優於磁碟。
/dev/shm不是立即佔用記憶體,而是採用需要才佔用記憶體的方法。在上面的例子中,/dev/shm設定的值是20G,我們看到已用寫入了9.5G的資料,也就是佔用了9.5G的記憶體。
/dev/shm採用tmpfs檔案系統,它具有以下優點:
1. 速度飛快。
2. 動態分配:寫入更多的資料,/dev/shm佔用更多的記憶體;刪除/dev/shm中的資料,那麼就減少佔用記憶體。不用這樣利於記憶體的充分使用。
tmpfs的用途
例如:
中的Automatic Memory Management特性就使用了/dev/shm。
LINUX中可以把一些程式的臨時檔案放置在tmpfs中,利用tmpfs比硬碟速度快的特點提升系統效能。
如果 tmpfs 小於 MEMORY_TARGET 的大小,啟動會報錯:
ORA-00845: MEMORY_TARGET not supported onthis system
/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 狀態)。所有訪問該檔案系統的程式都被列出。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2128362/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux /dev/shm與tmpfs檔案系統Linuxdev
- /dev/shmdev
- [轉帖]linux的tmpfs和/dev/shm目錄的詳細介紹Linuxdev
- /dev/shm大小修改dev
- 對/dev/shm認識dev
- 修改/dev/shm的大小dev
- /dev/shm 介紹 --轉載dev
- /dev/shm與swap的區別dev
- 修改/dev/shm共享記憶體dev記憶體
- 11g AMM和/dev/shmdev
- Linux系統目錄/dev/shmLinuxdev
- 修改/dev/shm 重啟失效原因分析dev
- linux下修改/dev/shm引數Linuxdev
- 學習linux分割槽/dev/shm的應用Linuxdev
- ORA-00845 memory_target needs larger /dev/shmdev
- 新特性:/dev/shm對Oracle 11g的影響devOracle
- 對Linux目錄下面/dev/shm的理解和使用Linuxdev
- oracle 執行過程中 /dev/shm 下是什麼Oracledev
- 記錄一下docker踩坑 /dev/shm目錄Dockerdev
- 修改/dev/shm大小造成Oracle 12c叢集啟動故障devOracle
- CentOS7和RHEL7在 /etc/fstab中不包含/dev/shmCentOSdev
- Linux下安裝Oralce11g 時/dev/shm 大小的更改Linuxdev
- 【OS】Linux下/dev/shm的作用及ORA-00845錯誤的處理Linuxdev
- linux下/dev/shm的大小引發ORA-00845: MEMORY_TARGET not supported on this systemLinuxdev
- tmpfs檔案系統
- K8s 裡如何優雅地使用 /dev/shm 實現容器間共享記憶體K8Sdev記憶體
- 效能竟然再提升一倍!Redis的一個例項有多快?- keydb.devRedisdev
- 單例項刪除ASM例項單例ASM
- Docker 基礎知識 - 使用 tmpfs 掛載(tmpfs mounts)管理應用程式資料Docker
- Dev RadioGroup 用法(項橫排顯示、項選中)dev
- php例項化物件的例項方法PHP物件
- ruby中的類例項變數和例項的例項變數變數
- tmpfs devshm Oracle 11GdevOracle
- Linux下安裝Oracle11g , MEMORY_TARGET(AMM)小於/dev/shm處理(ORA-00845)LinuxOracledev
- 2 Day DBA-管理Oracle例項-Oracle例項和例項管理概覽Oracle
- jQuery 例項jQuery
- OkHttpClient例項HTTPclient
- phpcocket例項PHP