简单描述下什么是tmpfs和/dev/shm
tmpfs是Linux/Unix系统上的一种基于内存的文件系统。可以简单理解为内存文件系统,所以优点就是快。那么缺点就是重启后,内容就没了。
/dev/shm 是一个设备文件,它使用就是tmpfs文件系统。
/dev/shm 这个目录不在硬盘上,而是在内存里,它就所谓的tmpfs。在Redhat/CentOS等linux发行版中默认大小为物理内存的一半。
/dev/shm 是个动态文件系统,如果没有任何文件,它占用的内存实际上就是0字节。
查看 linux 7.2 的 /dev/shm
# free -m
total used free shared buff/cache available
Mem: 7823 133 6817 8 872 7614
Swap: 8191 0 8191
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 40G 5.4G 35G 14% /
devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 3.9G 8.6M 3.9G 1% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 125M 372M 26% /boot
tmpfs tmpfs 783M 0 783M 0% /run/user/0
tmpfs tmpfs 783M 0 783M 0% /run/user/1001
如果觉得/dev/shm 不够用,可以调整
临时修改
#mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm
在2G的机器上,将最大容量调到1.5G,并且inode数量调到1000000,这意味着大致可存入最多一百万个小文件。
永久修改
#vi /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=1.5G 0 0
oracle 11g的amm内存管理模式就是使用/dev/shm,所以有时候修改 MEMORY_TARGET 或者 MEMORY_MAX_TARGET 会出现ORA-00845的错误
此时必须满足条件 memory_max_target <= /dev/shm
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/1762.html