首页 > Linux操作系统 > Linux操作系统 > 关于/dev/shm的应用及配置
linux内核中的VM子系统负责在后台管理虚拟内存资源Virtual Memory,即RAM和swap资源,透明地将RAM页移动到交换分区或从交换分区到RAM页,tmpfs文件系统需要VM子系统的页面来存储文件。tmpfs自己并不知道这些页面是在交换分区还是在RAM中;做这种决定是VM子系统的工作。tmpfs文件系统所知道的就是它正在使用某种形式的虚拟内存。
tmpfs基于内存,因而速度是相当的,另外tmpfs使用的VM资源是动态的,当删除tmpfs中文件,tmpfs 文件系统驱动程序会动态地减小文件系统并释放 VM 资源,当然在其中创建文件时也会动态的分配VM资源。另外,tmpfs不具备持久性,重启后数据不保留,原因很明显,它是基于内存的。
编译内核时,启用“Virtual memory file system support”就可以使用tmpfs,linux kernel从2.4以后都开始支持tmpfs。目前主流的linux系统默认已启用tmpfs,如Redhat。
[root@GoGo shm]# mkdir /dev/shm/tmp
[root@GoGo shm]# chmod 1777 /dev/shm/tmp //注意一下权限
[root@GoGo shm]# mount –bind /dev/shm/tmp /tmp
[root@GoGo tmp]# ls -ld /tmp
drwxrwxrwt 2 root root 40 Aug 29 23:58 /tmp
当然您也可以不绑定,直接mount在现有的安装点上使用tmpfs,如:
#umount /tmp
#mount tmpfs /tmp -t tmpfs -o size=512M
也很方便吧,不需要使用mkfs等命令创建。
以下/tmp使用tmpfs文件系统。
(1)将squid的缓存目录cache_dir放到/tmp下
cache_dir ufs /tmp 256 16 256
重启一下squid服务,这样缓存目录都放在了tmpfs文件中了,速度不用说吧。
(2)将php的session文件放在/tmp下
通过phpinfo测试文件查看你的php session存储位置,如果不在/tmp下,修改php.ini文件,修改如下:
session.save_path = “/tmp”
当然如果您的网站访问量比较大,可/tmp下设置分层目录存储session,语法如下:
session.save_path=”N;/save_path”,N 为分级的级数,save_path 为开始目录。
(3)将服务的socket文件放在/tmp下
如nginx.socket和mysql.sock
Oracle 中的Automatic Memory Management特性就使用了/dev/shm。
当oracle的memory_max_target设置超过了/dev/shm的大小就出现下面这个错误:来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24107336/viewspace-1177891/ ,如需转载,请注明出处,否则将追究法律责任。