linux下的/dev/shm目錄


linux中/dev目錄下一般都是一些設備文件,例如磁盤、內存、攝像頭等。
/dev/shm這個目錄是linux下一個利用內存虛擬出來的一個目錄,這個目錄中的文件都是保存在內存中,而不是磁盤上。其大小是非固定的,即不是預先分配好的內存來存儲的。(shm == shared memory)

簡要說明

/dev/shm的容量默認最大為內存的一半大小,使用df -h命令可以看到。但它並不會真正的占用這塊內存,如果/dev/shm/下沒有任何文件,它占用的內存實際上就是0字節。
通過下面的命令,我們可以看到/dev/shm的文件系統為tmpfs,即為臨時文件系統。其他的幾個tmpfs的掛載目錄,其實質上於/dev/shm是一致的。

/home/o [o@o-s] [16:22]
> df -h
文件系統        容量  已用  可用 已用% 掛載點
dev             3.9G     0  3.9G    0% /dev
run             3.9G  656K  3.9G    1% /run
/dev/sda2        58G   12G   43G   22% /
tmpfs           3.9G  1.0G  2.9G   26% /dev/shm
tmpfs           3.9G     0  3.9G    0% /sys/fs/cgroup
tmpfs           3.9G     0  3.9G    0% /tmp
/dev/sdb1        58G   24G   32G   44% /mnt/data
/dev/sda1       488M   26M  463M    6% /boot
tmpfs           791M     0  791M    0% /run/user/1000

文件測試

執行下面命令

/home/o [o@o-s] [16:18]
> ls /dev/shm 

/home/o [o@o-s] [16:18]
> free -m
              total        used        free      shared  buff/cache   available
Mem:           7901         249        2217           1        5434        7595
Swap:             0       

我們可以看到當前/dev/shm目錄為空。當前系統使用的內存為249MB,可用內存為7595MB,而buff/cache緩存了5434MB的內容在內存中,並且shared部分僅為1MB大小。
這個緩存的數據可以通過修改/proc/sys/vm/drop_caches文件的內容為3來清理掉。這里就不做了。

現在我們在/dev/shm目錄中創建一個大小為1G的文件

/home/o [o@o-s] [16:19]
> dd if=/dev/zero of=/dev/shm/123.random bs=1M count=1024
記錄了1024+0 的讀入
記錄了1024+0 的寫出
1073741824字節(1.1 GB)已復制,0.322718 秒,3.3 GB/秒

看看操作后的結果

> free -m
              total        used        free      shared  buff/cache   available
Mem:           7901         248        1191        1025        6461        6571
Swap:             0           0           0

可以看到,現在shared部分的內存已經有了1025MB,並且buff/cache部分也增加了1G多,可用內存減少了1G。

容量修改

如果需要使用到這個目錄,並且默認的大小不夠使用,而其他程序占用的內存又比較少的時候,可以修改器最大占用內存的大小,來達到自己的目的。
其實修改它的原理很簡單,對其進行重新掛載即可,掛載的時候指定掛載參數。

/home/o [o@o-s] [16:38]
> sudo mount -o size=5128M  -o remount /dev/shm

上面對/dev/shm進行了重新掛載,並修改其大小為5G。使用下面的命令查看,可以看到確實已經修改為了5G。

/home/o [o@o-s] [16:38]
> df -h
文件系統        容量  已用  可用 已用% 掛載點
dev             3.9G     0  3.9G    0% /dev
run             3.9G  656K  3.9G    1% /run
/dev/sda2        58G   12G   43G   22% /
tmpfs           5.1G  1.0G  4.1G   20% /dev/shm
tmpfs           3.9G     0  3.9G    0% /sys/fs/cgroup
tmpfs           3.9G     0  3.9G    0% /tmp
/dev/sdb1        58G   24G   32G   44% /mnt/data
/dev/sda1       488M   26M  463M    6% /boot
tmpfs           791M     0  791M    0% /run/user/1000

可以通過修改/etc/fstab文件,來修改默認的參數。

mount的參數可以參考如下
http://www.cnblogs.com/oloroso/p/5405099.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM