Linux在2.4后引入tmpfs (temporary file system)是驻扎在内存中的临时文件系统。以提供更高的速度,并在重启或unmount后丢弃。
tmpfs的默认值为实际内存的一半,作为文件系统而非ramfs的块设备,不使用时它不占用资源,在需要时还可以swap out 不需要的内容到swap space。
用途方面,可作为/dev udev 存放装置档案、/var/run 存放各软件的 PID, socket 和 /var/lock 用作锁定档案等等,使用最多的情况可能是PHP cache和Oracle,下文重点介绍为ORACLE使用情况。
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda5 ext3 9.9G 5.6G 3.8G 60% /
tmpfs tmpfs 1008M 0 1008M 0% /lib/init/rw
varrun tmpfs 1008M 124K 1008M 1% /var/run
varlock tmpfs 1008M 0 1008M 0% /var/lock
udev tmpfs 1008M 2.8M 1005M 1% /dev5.
tmpfs tmpfs 1008M 472K 1008M 1% /dev/shm
tmpfs,swap,memory之间的关系 (引用 http://blog.sina.com.cn/s/blog_6b7ae4270101s1wa.html)
tmpfs作为VM(Virtual Memory)虚拟系统管理使用:它基于ramfs创造的,同样在内存中存储文件。不同的是,tmpfs可以限制大小,并能够使用swap
而Swap是虚拟硬盘作为内存不足时使用,开启swap后,虚拟内存VM可以使用的内存空间为 VM(Virtual Memory)=RM(Real Memory/RAM)+Swap
SWAP由于位于硬盘上,所以速度远不及RAM,但VM调用的过程对用户不透明。
引用 https://www.kernel.org/doc/Documentation/filesystems/tmpfs.txt :
If you compare it to ramfs (which was the template to create tmpfs)
you gain swapping and limit checking. Another similar thing is the RAM
disk (/dev/ram*), which simulates a fixed size hard disk in physical
RAM, where you have to create an ordinary filesystem on top. Ramdisks
cannot swap and you do not have the possibility to resize them.
修改tmpfs (详细配置可参考此篇文章 http://blog.csdn.net/cougar_mountain/article/details/22988673)
有3个参数可以配置:
1.size tmpfs,tmpfs所占用空间的最大值,如超出后会被锁定
2.nr_blocks,以PAGE_CACHE_SIZE值 (一般4 KiB) 为单位,分配size大小
3.nr_inodes,tmpfs内可以存储inode的最大值
临时调整命令:
#mount–o size=1500m –o nr_inodes=1000000 –o noatime,nodiratime –o remount /dev/shm
永久修改命令:
需要在/etc/fstab中设置tmpfs的size(size必须为整数)
tmpfs /dev/shm tmpfs defaults,size=52g 0 0
修改fstab后,重新挂载
#mount –o remount /dev/shm
tmpfs 在 Oracle中的应用
Oracle11g后,默认使用/dev/shm作为共享内存。如果参数中定义了MEMEORY_TARGET,那么/dev/shm必须大于 MEMORY_TARGET和MEMORY_MAX_TARGET。
如果SGA的大小超过了操作系统/dev/shm的大小,会报错 ORA-00845:MEMORY_TARGET not supported on this system。这时需要调小MEMORY_TARGET参数或定义更大的/dev/shm空间。
成功启用后,开启Oracle查看/dev/shm内容,你会发现大量 ora_orcl_*类的文件如:
ora_orcl_14155780_0 ora_orcl_14483470_1 ora_orcl_14811160_1 ora_orcl_15138850_1 ora_orcl_15466540_1 ora_orcl_15794230_1
参考资料:
https://www.kernel.org/doc/Documentation/filesystems/tmpfs.txt
http://wiki.linux.org.hk/w/Tmpfs
http://blog.csdn.net/sunjiapeng/article/details/8504639
http://www.linuxidc.com/Linux/2013-12/93747.htm
http://blog.itpub.net/25881373/viewspace-696991
http://blog.csdn.net/cougar_mountain/article/details/22988673
http://blog.sina.com.cn/s/blog_6b7ae4270101s1wa.html