zoukankan      html  css  js  c++  java
  • Linux下tmpfs介绍及使用




    [日期:2013-12-09] 来源:Linux社区  作者:haibusuanyun  


     
    tmpfs介绍


    tmpfs是一种虚拟内存文件系统,而不是块设备。是基于内存的文件系统,创建时不需要使用mkfs等初始化
    它最大的特点就是它的存储空间在VM(virtual memory),VM是由linux内核里面的vm子系统管理的。
    linux下面VM的大小由RM(Real Memory)和swap组成,RM的大小就是物理内存的大小,而Swap的大小是由自己决定的。
    Swap是通过硬盘虚拟出来的内存空间,因此它的读写速度相对RM(Real Memory)要慢许多,当一个进程申请一定数量的内存时,如内核的vm子系统发现没有足够的RM时,就会把RM里面的一些不常用的数据交换到Swap里面,如果需要重新使用这些数据再把它们从Swap交换到RM里面。如果有足够大的物理内存,可以不划分Swap分区。


    关于SWAP的增加详见:  点击打开链接 http://www.linuxidc.com/Linux/2013-12/93746.htm


    VM由RM+Swap两部分组成,因此tmpfs最大的存储空间可达(The size of RM + The size of Swap)。 但是对于tmpfs本身而言,它并不知道自己使用的空间是RM还是Swap,这一切都是由内核的vm子系统管理的。
    tmpfs默认的大小是RM的一半,假如你的物理内存是1024M,那么tmpfs默认的大小就是512M
    一般情况下,是配置的小于物理内存大小的。
    tmpfs配置的大小并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是不会被系统回收重新划分的。
    当删除tmpfs中文件,tmpfs 文件系统驱动程序会动态地减小文件系统并释放 VM 资源。
    #########################


    tmpfs的用途


    例如:
    Oracle 中的Automatic Memory Management特性就使用了/dev/shm。
    LINUX中可以把一些程序的临时文件放置在tmpfs中,利用tmpfs比硬盘速度快的特点提升系统性能。


    调整tmpfs大小大致有以下三种方法:


    1.直接挂载到需要的目录--比如系统的临时目录-可以根据实际需要挂载某个程序的临时文件的目录


    [root@bys3 ~]# mount -t tmpfs -o size=20m tmpfs /tmp
    [root@bys3 ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda2 16G 10G 4.7G 69% /
    /dev/sda1 99M 21M 74M 22% /boot
    tmpfs 502M 0 502M 0% /dev/shm
    tmpfs 20M 0 20M 0% /tmp
    由于没有挂载之前/tmp目录下的文件也许正在被使用,因此挂载之后系统也许有的程序不能正常工作。可以写入/etc/fstab,这样重启后也有效。




    2./etc/fstab文件来修改/dev/shm的容量(增加size=100M选项即可),修改后,重新挂载即可:


    [root@bys3 ~]# cat /etc/fstab 
    LABEL=/ / ext3 defaults 1 1
    LABEL=/boot /boot ext3 defaults 1 2
    tmpfs /dev/shm tmpfs defaults,size=600M 0 0
    tmpfs /tmp tmpfs defaults,size=25M 0 0
    devpts /dev/pts devpts gid=5,mode=620 0 0
    sysfs /sys sysfs defaults 0 0
    proc /proc proc defaults 0 0
    LABEL=SWAP-sda3 swap swap defaults 0 0
    /dev/sda5 swap swap defaults 0 0
    [root@bys3 ~]# mount -a --测试/etc/fstab无错误,重启OS系统
    [oracle@bys3 ~]$ df -h --重启后的信息如下,tmpfs文件系统的对应条目已经改变为配置的
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda2 16G 10G 4.7G 69% /
    /dev/sda1 99M 21M 74M 22% /boot
    tmpfs 600M 0 600M 0% /dev/shm
    tmpfs 25M 0 25M 0% /tmp




    3./dev/shm建一个tmp目前,并与/tmp绑定。 --这方法有点烦琐,不如方法1方便快捷。


    [root@bys3 ~]# mkdir /dev/shm/tmp
    [root@bys3 ~]# chmod 1777 /dev/shm/tmp
    [root@bys3 ~]# mount --bind /dev/shm/tmp /tmp -注意mount --bind 这里bind前是两个-
    [root@bys3 ~]# ls -ld /tmp
    drwxrwxrwt 2 root root 40 Dec 8 12:15 /tmp
    [root@bys3 ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda2 16G 10G 4.7G 69% /
    /dev/sda1 99M 21M 74M 22% /boot
    tmpfs 600M 0 600M 0% /dev/shm
    tmpfs 600M 0 600M 0% /tmp ----可以看到/tmp使用到了 /dev/shm的空间。


    相关阅读:


    Oracle Linux (OEL)下修改tmpfs大小并使之生效 http://www.linuxidc.com/Linux/2013-04/83262.htm


    使用tmpfs文件系统做MySQL tmpdir潜在的问题 http://www.linuxidc.com/Linux/2013-03/80696.htm


    Linux下tmpfs与ramfs的区别 http://www.linuxidc.com/Linux/2012-11/74356.htm


    Fedora 18 将默认使用 tmpfs 当 /tmp  http://www.linuxidc.com/Linux/2012-04/58271.htm


    Oracle Linux 6.1 下修改 /etc/fstab 使 tmpfs 生效 方法 说明 http://www.linuxidc.com/Linux/2012-03/55605.htm


    linux
  • 相关阅读:
    test
    莫烦Python
    资源汇总
    AutoHotkey学习资源
    神器AutoHotkey学习(官方文档翻译)
    linux内核编译时bad register name `%dil'错误
    Linux内核修炼之道-->原作者博客链接--oschina备份
    vim笔记--oschina备份
    vim相关资源--oschina备份
    Windows下装Gvim时可能发生的错误--oschina备份
  • 原文地址:https://www.cnblogs.com/roger0212/p/4436639.html
Copyright © 2011-2022 走看看