`

linux下的/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的其他应用,我想大家可能通过这篇文章会有所启发。 

分享到:
评论

相关推荐

    详解Linux系统中的tempfs与/dev/shm

    tmpfs 是 Linux/Unix 系统上的一种基于内存的文件系统,即 tmpfs 使用内存或 swap 分区来存储文件。 Linux 内核中的 VM 子系统负责在后台管理虚拟内存资源 Virtual Memory,即 RAM 和 swap 资源,透明地将 RAM 页...

    Linux磁盘扩容 fdisk /dev/vda

    Linux磁盘扩容 df -h ...tmpfs 7.8G 0 7.8G 0% /dev/shm tmpfs 7.8G 8.5M 7.8G 1% /run tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup /dev/vda1 1014M 193M 822M 20% /boot tmpfs 1.6G 0 1.6G 0% /run/user/0

    Centos7运用/dev/shm进行网站优化

    /dev/shm目录不在磁盘上,而是在内存里,因此使用linux /dev/shm/的效率非常高,直接写进内存. 查看/dev/shm的大小 df -h 修改/dev/shm的大小,默认为内存的一半 vim /etc/fstab 末尾添加 tmps /dev/shm ...

    configure /dev/shm before Install Oracle 11gR2 on Ubuntu 11.10 server (64-bit)

    `/dev/shm`是一个临时文件系统,模拟了传统的内存共享,提供了一个在Linux系统中进行进程间通信(IPC)的快速途径。在Oracle数据库环境中,`/dev/shm`用于存储数据库的共享内存区域,以提高性能。 首先,理解Oracle...

    Linux下如何调整根目录的空间大小

    一、目的 在使用CentOS6.3版本Linux系统的时候,发现根目录(/)的空间不是很充足,而其他目录空间有很大的空闲,所以本文主要是针对现在已有的空间进行调整。...tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 485M

    Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具.docx

    /dev/shm 236M 0 236M 0% /dev/shm 从上面的输出结果中,我们可以看到系统安装在 /dev/hda8,另外还有一个 56G 的磁盘分区 /dev/sda1 挂载在 /mnt/sda1 中。 fdisk 命令是来自 util-linux 软件包,我们在这里只说...

    如何修改和限制shm的大小

    默认情况下,`/dev/shm`的大小通常是系统物理RAM的一半。这是为了平衡内存使用,确保有足够的内存供其他进程使用,同时提供一定程度的共享内存功能。然而,根据应用的需求,这个默认值可能需要调整。 调整`/dev/shm...

    Linux 查看磁盘分区、文件系统、使用情况的命令

    /dev/shm 236M 0 236M 0% /dev/shm /dev/sda1 56G 22G 35G 39% /mnt/sda1 从上面的输出结果中,我们可以看到系统安装在 /dev/hda8 上,还有一个 56G 的磁盘分区 /dev/sda1 挂载在 /mnt/sda1 中。 二、fdsik 命令 ...

    linux查看磁盘空间的指令方法.pdf

    /dev/shm 236M 0 236M 0% /dev/shm /dev/sda1 56G 22G 35G 39% /mnt/sda1 ``` 从输出结果中,我们可以看到系统安装在 /dev/hda8,另外还有一个 56G 的磁盘分区 /dev/sda1 挂载在 /mnt/sda1 中。 二、fdisk 命令 ...

    Linux 磁盘命令

    /dev/shm 236M 0 236M 0% /dev/shm /dev/sda1 56G 22G 35G 39% /mnt/sda1 ``` 这表明系统根目录`/`安装在`/dev/hda8`上,且使用率为58%;`/dev/sda1`则挂载在`/mnt/sda1`上,使用率为39%。 #### 2. `fdisk` 命令:...

    linux查看磁盘空间的指令方法参考.pdf

    /dev/shm 236M 0 236M 0% /dev/shm /dev/sda1 56G 22G 35G 39% /mnt/sda1 ``` 从上面的输出结果可以看到,系统安装在 /dev/hda8,另外还有一个 56G 的磁盘分区 /dev/sda1 挂载在 /mnt/sda1 中。 fdisk 命令 fdisk ...

    DU-MySQL-Search-Linux-V5.3

    如果 Linux 服务器只有一个分区,且估计 binlog 大小不超过内存容量的50%,则可将工具上传到 /dev/shm 目录。 /dev/shm是内存虚拟目录,写入数据在内存中不落盘,系统重启后/dev/shm 自动清空。 给执行权限 : ...

    Centos7利用内存优化磁盘缓存读写速度的方法

    Linux中的/dev/shm目录不属于磁盘,而是内存,如果使用/dev/shm/目录作为Linux中的磁盘文件读写缓存,可想效率是非常惊人的。 默认/dev/shm目录没有挂载,需要手动进行挂载。 在以下文件尾端添加以下内容: $ vim /...

    LINUX下安装centos

    由于Oracle 11g默认将临时表空间放在`/dev/shm`目录下,因此需要确保该目录有足够的空间。可以通过以下步骤增加`/dev/shm`的大小: 1. 查看当前`/dev/shm`的大小: ```bash df -h /dev/shm ``` 2. 如果发现`/...

    linux下把网站放到内存里面 给网站提速.docx

    4. 检查挂载是否成功,可以使用`ls -ld /dev/shm/wpcache`命令,如果返回的结果显示挂载权限正确,那么挂载就成功了。 完成上述步骤后,缓存插件会开始在内存中生成静态页面文件。随着时间推移,你可以通过`df -h`...

    Tiny Core Linux VMware 硬盘安装

    本人安装成功的记录 1.官网(http://www.tinycorelinux.net)下载带硬盘安装最新版的 CorePlus-current.iso (约84MB),据说有VMware的...tmpfs 250.3M 0 250.3M 0% /dev/shm /dev/sda1 7.7G 50.8M 7.7G 1% /mnt/sda1

    自己做个迷你型linux内核.pdf

    - `/dev/shm`:共享内存设备。 - `/dev/systty`:指向系统tty设备的符号链接。 - `/dev/tty`:当前TTY设备。 - `/dev/tty[0-7]`:虚拟控制台。 - `/dev/ttyp[0-7]`:伪终端从设备。 - `/dev/ttyS0`:串口(COM1...

Global site tag (gtag.js) - Google Analytics