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
緩存了5434
MB的內容在內存中,並且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