linux下的/dev/shm/ 以及与swap目录的区别

一、/dev/shm/介绍:

/dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里。因此在linux下,就不需要大费周折去建ramdisk,直接使用/dev/shm/就可达到很好的优化效果。
/dev /shm/需要注意的一个是容量问题,在linux下,它默认最大为内存的一半大小,使用df -h命令可以看到。但它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有 100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是绝不会被系统回收重新划分的,否则谁还敢往里头存文件呢?
默认的最大一半内存大小在某些场合可能不够用,并且默认的inode数量很低一般都要调高些,这时可以用mount命令来管理它。 mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm


 

在2G的机器上,将最大容量调到1.5G,并且inode数量调到1000000,这意味着大致可存入最多一百万个小文件。

 

为当/dev/shm空间不够时可以占用swap的空间,所以不用担心存储空间不够用。想想看,从磁盘IO操作到内存操作,php读写SESSION的速度会快多少?只是需要注意,存储在/dev/shm的数据,在服务器重启后会全部丢失。

 

默认系统就会加载/dev/shm ,它就是所谓的tmpfs,有人说跟ramdisk(虚拟磁盘),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的 RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。
  tmpfs有以下优势:
  1,动态文件系统的大小。
  2,tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。
  3,tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作。
  好了讲了一些大道理,还是讲讲应用吧:
  首先在/dev/stm建个tmp文件夹,然后与实际/tmp绑定
  mkdir /dev/shm/tmp
  chmod 1777 /dev/shm/tmp
  mount --bind /dev/shm/tmp /tmp(--bind )
  在使用mount --bind olderdir newerdir命令来挂载一个目录到另一个目录后,newerdir的权限和所有者等所有信息会发生变化。挂载后的目录继承了被挂载目录的所有属性,除了名称。
巧用tmpfs加速你的linux服务器,就是使用虚拟磁盘来存放squid的缓存文件和php的seesion。速度快不少哦!
默 认系统就会加载/dev/shm ,它就是所谓的tmpfs,有人说跟ramdisk(虚拟磁盘),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的 RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个 mkfs 之类的命令才能真正地使用它,tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。
tmpfs有以下优势:
1。动态文件系统的大小,
2。tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。
3。tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作。
好了讲了一些大道理,大家看的烦了吧,还是讲讲我的应用吧:)
首先在/dev/shm建个tmp文件夹,然后与实际/tmp绑定
mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp
1. squid的缓存目录设置
vi /etc/squid/squid.conf
修改成
cache_dir ufs /tmp 256 16 256
这 里的第一个256表示使用256M内存,我觉得http://www.linuxaid.com.cn/articles/4/4 /441672019.shtml里使用ramdisk的方法还不如直接使用tmpfs,至少每次启动不用mkfs,还可以动态改变大小。这时的/tmp 实际就是/dev/shm/tmp
然后重启一下服务,ok,现在所有的squid缓存文件都保存倒tmpfs文件系统里了,很快哦。
2. 对php性能的优化
对于一个访问量大的以apache+php的网站,可能tmp下的临时文件都会很多,比如seesion或者一些缓存文件,那么你可以把它保存到tmpfs文件。
保存seesion的方法很简单了只要修改php.ini就行了,由于我已经把/dev/stm/tmp与/tmp绑定,所以不改写也行,至于php程序产生的缓存文件那只能改自己的php程序了:)
至于tmpfs的其他应用,我想大家可能通过这篇文章会有所启发。

二、与swap的区别:
/dev/shm
首先可以看出来/dev/shm是一个设备文件, 可以把/dev/shm看作是系统内存的入口, 可以把它看做是一块物理存储设备,
一个tmp filesystem, 你可以通过这个设备向内存中读写文件, 以加快某些I/O高的操作,比如对一个大型文件频繁的open, write, read,
据说oracle就利用了/dev/shm(shitou没用过oracle), 可以通过mount命令列出当前的/dev/shm的挂载的文件系统,
你可以直接对/dev/shm进行读写操作, 例如:
#touch /dev/shm/file1
既然是基于内存的文件系统,系统重启后/dev/shm下的文件就不存在了
 
Linux默认(CentOS)/dev/shm分区的大小是系统物理内存的50%, 虽说使用/dev/shm对文件操作的效率会高很多,
但是目前各发行软件中却很少有使用它的(除了前面提到的Oracle), 可以通过ls /dev/shm查看下面是否有文件, 如果没有就说明当前系统并没有使用该设备.
 
swap
而swap是Linux的虚拟内存, 即在硬盘上开辟空间当内存不够时充当内存使用, 因此可以理解为当/dev/shm空间不够时可以占用swap的空间


摘自:http://hi.baidu.com/heyuejuan/blog/item/e7aba945ba27c2288694730a.html

 

  


简述 Linux 文件系统的目录结构

Linux目录结构及解释

Linux 内核源代码的结构

linux内核源码目录结构

linux文件系统的目录结构


 Linux部分精彩推荐

Linux系统初学者的常见问题解决集结

Linux挂载U

linux 下的挂载

redhatubuntu系统下挂载ntfs文件系统的方法(转载)

疯狂挂载:Linux连接常用外部设备的方法

ubuntu 重装系统备份数据   ubuntu安装kde桌面

ubuntu全局配置文件

ubuntu安装rpm的方法

ubuntu设置全攻略

Linux 常用C函数说明-文件权限控制篇

rpm deb命令集合

rc.local自启动学习

init.drc.d详解 Linux运行时详解

linuxtar gz bz2 tgz z等众多压缩文件的解压方法

tar命令用法详述

使用tar进行磁带备份的命令汇总

LINUX:解压问题tar: Child returned status 1

Linux系统服务自启动设置_Tomcat

Linux操作系统下SSH默认22端口修改方法

Linux启动级别:init 0,1,2,3,4,5,6

linux服务开机启动和运行级别

linux服务自动启动功能

新手学堂:Linux操作系统的启动步骤说明

xinit启动X Window System过程初探

构建小型Linux跟文件系统镜像(Ext2 Ext3

linux内核源码目录结构

简述 Linux 文件系统的目录结构

Linux目录结构及解释

Linux 内核源代码的结构

linux文件系统的目录结构

linux 端口 操作

Linux操作系统下软件的安装与卸载

vim 实用的经验

网络管理:超级详细Tcpdump 的用法

Linux系统下网卡网络配置基础

vsFTPd自架Linux网络安装服务器,以及Redhat局域网安装的解决办法

网络管理:超级详细Tcpdump 的用法

[]tcpdump 教程 用法 使用

Linuxtelnet配置

linux 任务计划 cron

YUM 库的安装

Linux环境变量的设置和查看方法

Linux命令速查手册

关于linux系统中命令的使用详解

简单而常用的shell 命令

rpm常用命令集合

[常用命令]diff

vi指令大全

LINUX/UNIX vi全屏幕编辑器

Linux操作系统Ifconfig命令详细解析

linux top命令详解

chmod命令使用详解

Linux主要shell命令详解

linux ps命令使用详解

Linux下设置和修改IP

Linuxfind用法整理

Fedora 中的 Yum 命令详解

rpm常用命令集合

Linux cat 命令用法

chmod命令详细用法

linux redhat命令大全

Linux操作系统下/etc/hosts文件

LINUX PATH环境变量

如何安装无签名认证的rpm

LINUX关于休眠、待机和睡眠的问题

initrd.img处理

Linux字符集的修改方法

Awk学习笔记

shell取得文件行数6

正则表达式

shell中单引号、双引号、反引号、反斜杠的使用

Linux开机过程(转)

LINUX中注销其他已登陆帐户

学习 Linux LVM

shell 中的参数替换

mkswap 把一个分区格式化成为swap交换区

rsh的配置

修复GRUB

Linux自动注销登录的帐户

linux下的/dev/shm/  以及与swap目录的区别

Redhat Linux配置远程桌面

Linux截图工具import使用说明

LinuxUNIX下磁带机的管理和使用

Linux 磁带机备份完全攻略

gnome桌面环境 kde桌面环境的区别

linux i18n修改,中文版英文版体现

linux命令-locale字符显示

linux命令-locale字符显示

RedHat 8.0软件包组--桌面类

让英文版的LINUX 支持中文显示

Linux  shell内核使用

RedHat Enterprise Linux Oracle 9i的安装配置与调优

Linux下安装mysql后无法启动的解决方法

百度最全的LINUXRedhat学习教程下载帖大全

Redhat linux 安装 gcc编译器,Gcc源码包,rpm包安装方法!

RHCE题库

Redhat Enterprise Linux 6 正式版已经发布!

VMWare虚拟机安装RedHat Linux全过程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值