• tmpfs使用探讨


    一、 什么是tmpfs?

    tmpfs是一种基于内存的文件系统,它和虚拟磁盘ramdisk比较类似,但不完全相同,和ramdisk一样,tmpfs可以使用RAM,但它也可以使用swap分区来存储。

    而且传统的ramdisk是个块设备,要用mkfs来格式化它,才能真正地使用它;

    ramdisk(中文名:虚拟内存盘,简称:RAM盘)是通过使用软件将RAM模拟当做硬盘来使用的一种技术。在DOS、windows下由相应的软件利用系统分配给它的内存空间来实现这种模拟,linux系统可以使用其内核支持的机制来实现。
    相对于传统的硬盘文件访问来说,这种技术可以极大的提高在其上进行的文件访问的速度。但是RAM的易失性也意味着当关闭电源后的数据将会丢失,某些时候这不是问题,比如说对于一个加密文档的明文来说。
    但是在一般情况下,传递到RAM盘上的数据都是在硬盘或别处永久贮存的文件的一个拷贝。经由适当的配置,可以实现当系统重启后重新建立虚拟盘。

    而tmpfs是一个文件系统,并不是块设备,只是安装它,就可以使用了。

    tmpfs是最好的基于RAM的文件系统。

    oracle 11g引入了memory_target参数,memory_target 和 /dev/shm(即tmpfs)有紧密联系,tmpfs的大小制约了memory_target的使用范围。

     

    二 、tmpfs优势是什么?

    1. 根据需求动态调整大小

    2. 速度快

     

    三、 如何使用tmpfs?

    tmpfs默认情况下会mount到/dev/shm目录下,要使用tmpfs,需要在内核配置时,启用“Virtual memory file system support”。

    为了防止tmpfs使用了全部的VM,有时候要限制大小。

    要创建一个最大为1G的tmpfs文件系统,输入:

    mount tmpfs /dev/shm -t tmpfs -o size=1G

    编辑/etc/fstab文件,添加如下内容:

    tmpfs /dev/shm tmpfs size=1G 00

    四、 扩大tmpfs

    1) 查看tmpfs大小

    [root@drz ~]# df -h
    
    Filesystem      Size  Used Avail Use% Mounted on
    
    /dev/sda3        16G   14G  1.7G  89% /
    
    tmpfs           996M   72K  996M   1% /dev/shm
    
    /dev/sda1       194M   34M  151M  19% /boot

    2) 编辑/etc/fstab

    ## size大小必须是整数

    [root@drz ~]# vi /etc/fstab
    
    tmpfs                   /dev/shm                tmpfs   defaults,size=1500M        0 0
    
    devpts                  /dev/pts                devpts  gid=5,mode=620              0 0
    
    sysfs                   /sys                    sysfs   defaults                       0 0
    
    proc                    /proc                   proc    defaults                       0 0
    
    /dev/sdb1               swap                    swap    defaults                      0 0
    
    /home/swapfile          swap                    swap    defaults                     0 0

    3)重新挂载

    [root@drz ~]# mount -o remount /dev/shm

    4)验证增加的大小

    [root@drz ~]# df -PH
    
    Filesystem      Size  Used Avail Use% Mounted on
    
    /dev/sda3        17G   15G  1.8G  89% /
    
    tmpfs           1.6G   74k  1.6G   1% /dev/shm
    
    /dev/sda1       204M   36M  158M  19% /boot

    五、实际应用

      使用df -h命令刚才已经看到了挂载内存大小的数值,如果没有使用,是没有去真正占用的,只有真正在tmpfs存储数据了,才会去占用。

    比如,tmpfs大小是499M,用了10M大小,内存里就会使用真正使用10M,剩余的489M是可以继续被服务器其他程序来使用的。

    但是因为数据是在内存里,所以断电后文件会丢失,内存数据不会和硬盘中数据一样可以永久保存。

    了解了tmpfs这个特性可以用来提高服务器性能,把一些对读写性能要求较高,但是数据又可以丢失的这样的数据保存在/dev/shm中,来提高访问速度。

    tmpfs用途还是较广的,Linux中可以把一些程序的临时文件放置在tmpfs中,利用tmpfs比硬盘速度快的特点来提升系统性能。

    比如可以用来放squid程序的缓存文件。当然,还有其他的用途,我们应该想到,tmpfs的挂载点既然能当作普通磁盘使用,也就能当作nfs的共享目录使用。

    但是用tmpfs做nfs的共享需要考虑网卡速度和tmpfs读写速度二者孰为瓶颈,如果网卡速度是瓶颈,那么直接用nfs创建一个普通磁盘目录即可。

    因为tmpfs重启后丢失,使用tmpfs做nfs前,须先从磁盘或用rsync从其他服务器拷贝到tmpfs里。

    更新文件时,先更新磁盘上的文件,或更新rsync的源。然后设置定时进程,每分钟从磁盘或rsync里将程序同步到tmpfs即可。

  • 相关阅读:
    Asp.net 通过Repeater循环添加对应的一组控件
    JS将number数值转化成为货币格式
    Asp.net 在 Postback 之后 执行 javascript 方法
    Asp.net 通过Repeater嵌套Repeater循环添加对应的一组控件
    向SharePoint 2010中添加Permission Level,Group,以及相应的User
    Asp.net 前后台操作cookie 实现数据的循环下载
    JS 将 string 转换成为 number
    C# Dictionary通过value获取对应的key值
    手机相机下的世界
    自定义Data Service Providers — (3)IServiceProvider和DataSources 服务提供者和数据源
  • 原文地址:https://www.cnblogs.com/felixzh/p/9239478.html
Copyright © 2020-2023  润新知