`

转: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

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

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

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

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

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

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

    DU-MySQL-Search-Linux-V5.3

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

    基于Java+GitLab+Jenkins与Docker的自动化考试系统后端源码.zip

    其他:由于Jenkins Workspace中的文件均为临时性文件,当磁盘负担较重时可以使用-v /dev/shm/jenkins:/var/jenkins_home/workspace:Z来使用内存进行加速 一个Docker Registry实例 docker run -d --name moocoder-...

    查看Linux服务器硬盘使用情况,查看修改服务器时间与时区

    tmpfs 764M 0 764M 0% /dev/shm /dev/sda1 485M 30M 430M 7% /boot ``` 从上面的输出结果可以看到,系统中有三个文件系统:/dev/mapper/VolGroup-lv_root、tmpfs 和 /dev/sda1。每个文件系统都显示了其总容量、已...

    如何修改和限制shm的大小

    在Linux系统中,`/dev/shm`是一个特殊文件系统,称为临时文件系统或tmpfs,它被设计用于实现进程间的共享内存。共享内存是一种高效的数据通信方式,允许多个进程直接访问同一块内存区域,无需通过传统的I/O操作。...

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

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

    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下安装centos

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

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

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

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

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

    64位Linux下Oracle11G XE安装与配置

    64位Linux下Oracle11G XE安装与配置 Oracle 11G XE 是一种 Relation Database Management System(关系数据库管理系统),可以在 Linux 操作系统下安装和配置。以下是安装和配置 Oracle 11G XE 的详细步骤: 1. ...

    linux 查看磁盘空间命令详解

    /dev/shm 236M 0 236M 0% /dev/shm /dev/sda1 56G 22G 35G 39% /mnt/sda1 ``` 在这个示例中,我们可以通过以下列来了解磁盘使用情况: 1. **Filesystem**:指定了磁盘分区或者挂载点。 2. **容量**:表示该分区总的...

    Linux 添加新硬盘并对其挂载.doc

    tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 12M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 1014M 189M 826M 19% /boot tmpfs 378M 0 378M 0% /run/user/0 ``` 从上面的输出可以看到当前系统中的...

Global site tag (gtag.js) - Google Analytics