• 使用tmpfs将文件/目录存储在内存中


    你可能已经知道读取内存中的文件比读取在硬盘中的文件要快得多,并且能降低你的磁盘I/O。这篇文章就将告诉你如何在tmpfs(一个创建内存设备的文件系统)的帮助下将你的文件存储在内存而不是硬盘中。对于文件缓存和临时数据(如在PHP中使用session.save_andler=files时的线程)来说,这是一种理想的方法,因为当你关机或者重启系统后数据就会自动清空。

    本文并不提供任何保障是否适合你。

    使用 tmpfs

    .每个Linux系统下都有一个标准内存设备(除了一些虚拟机 - 取决于虚拟技术) - /dev/shm

    当你运行

    mount

    你应该能看到一些类似下面的信息

    tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)

    默认情况下,大约是系统内存大小的一半(你可以通过运行df -h /dev/shm来查看实际大小) - 所以如果你有4GB的内存,那么显示大小应该是2GB左右。

    你可以使用/dev/shm来把它当作一个常规的硬盘,例如,你可以直接copy一个文件进去:

    cp -af test.tar.gz /dev/shm/

    文件现在存储在内存中了:

    ls -la /dev/shm/

    server1:/# ls -la /dev/shm/
    total 316
    drwxrwxrwt 18 root root    380 2008-11-27 16:06 .
    drwxr-xr-x 12 root root   3780 2008-11-27 15:33 ..
    -rw-r--r--  1 root root 311636 2003-04-02 20:00 test.tar.gz
    server1:/#

    (请记住在你关机或重启系统后文件就会丢失!)

    如果需要,你可以重新调整/dev/shm的大小,如下例所示:

    mount -o remount,size=3G /dev/shm

    (注意 - 如果你把/dev/shm调整的太大并且使用了全部的空间,然后只有少量的内存留下来供系统使用。这可能会造成任何你不想看到的系统问题)

    现在让我们假设你想为你在大流量网站在/var/www/www.example.com/cache目录下创建几种文件缓存。当然,把缓存放在内存中是件好事。下面是如何操作:

    首先,创建缓存目录:

    mkdir -p /var/www/www.example.cache

    (如果你的缓存需要,你可以更改目录的属主,例如:

    chown proxy:proxy /var/www/www.example.com/cache)

    现在我们把这个目录加载到内存设备中(使用100MB大小,并且权限为755):

    mount -t tmpfs -o size=100M,mode=0755 tmpfs /var/www/www.example.com/cache

    观察一下:

    mount

    ... 你会看到这些:

    tmpfs on /var/www/www.example.com/cache type tmpfs (rw,size=100M,mode=0755)

    就是这个了 - 现在你可以直接在内存中缓存这些文件了。

    如果你想在系统启动时自动缓存这个目录,编辑/etc/fstab...

    vi /etc/fstab

    ... 并添加下面内容

    [...]
    tmpfs /var/www/www.example.com/cache tmpfs size=100M,mode=0755 0 0
    [...

    链接

  • 相关阅读:
    CodeSmith注册错误的解决方法
    我是“坚守者”还是"背叛者"?
    拿什么留住你,我的程序员
    去除HTML代码得函数
    页面之间传递参数得几种方法
    nhibernate source code analyzed (abstract classes in nhibernate2.0)
    Web 2.0时代RSS的.Net实现
    Visual Studio.net 2003安装提示重启问题
    开放思路,综合考虑,心胸开阔,做一个合格的项目经理
    了解实际开发中 Hashtable 的特性原理 .NET, JAVA, PHP
  • 原文地址:https://www.cnblogs.com/Jayan/p/1350337.html
Copyright © 2020-2023  润新知