zoukankan      html  css  js  c++  java
  • tempfs详解

    致因

    在平常工作中,我们经常需要查看Linux服务器磁盘挂载使用情况,可以使用df命令,不知大家注意到没有,我们使用此命令除了会查看到系统盘以及数据盘挂载情况,还会看到一个tmpfs也在挂载。

    [root@test ~]# df -hT
    
    Filesystem     Type   Size  Used Avail Use% Mounted on
    
    /dev/vda1      ext4    40G  1.1G   37G   3% /
    
    tmpfs          tmpfs  499M     0  499M   0% /dev/shm

    同时可以注意到,这个tmpfs大小是499M, 大小和内存相比,约为内存的一半。

    [root@test~]# free -m
    
                 total       used       free     shared    buffers     cached
    
    Mem:           996        124        872          0          7         57
    
    -/+ buffers/cache:         59        936
    
    Swap:            0          0          0Swap:      2064376          0    2064376

    我们通过df可以看到tmpfs是挂载到/dev/下的shm目录,tmpfs是什么呢? 其实是一个临时文件系统,驻留在内存中,所以/dev/shm/这个目录不在硬盘上,而是在内存里。因为是在内存里,所以读写非常快,可以提供较高的访问速度。linux下,tmpfs默认最大为内存的一半大小,使用df -h命令刚才已经看到了,但是这个df查看到的挂载内存大小的数值,如果没有使用,是没有去真正占用的,只有真正在tmpfs存储数据了,才会去占用。比如,tmpfs大小是499M,用了10M大小,内存里就会使用真正使用10M,剩余的489M是可以继续被服务器其他程序来使用的。但是因为数据是在内存里,所以断电后文件会丢失,内存数据不会和硬盘中数据一样可以永久保存。了解了tmpfs这个特性可以用来提高服务器性能,把一些对读写性能要求较高,但是数据又可以丢失的这样的数据保存在/dev/shm中,来提高访问速度。

    调整大小:我们还可以根据实际需要去调整tmpfs文件的大小。

    [root@test]# mount -o remount,size=777M tmpfs /dev/shm
    
    [root@test]# df -hT
    
    Filesystem     Type   Size  Used Avail Use% Mounted on
    
    /dev/vda1      ext4    40G  1.1G   37G   3% /
    
    tmpfs          tmpfs  777M     0  777M   0% /dev/shm

    这种修改是临时修改,重启后会恢复正常,恢复为内存一半大小。

    永久修改可以

    vim  /etc/fstab 
    
    把tmpfs这一行改为:
    
    tmpfs                   /dev/shm                tmpfs   defaults,size=777M     0 0

    这样设置后重启会自动挂载为777M大小,永久生效。

    实际应用:最后在说下tmpfs的一些应用,tmpfs用途还是较广的,Linux中可以把一些程序的临时文件放置在tmpfs中,利用tmpfs比硬盘速度快的特点来提升系统性能。比如可以用来放squid程序的缓存文件。当然,还有其他的用途,我们应该想到,tmpfs的挂载点既然能当作普通磁盘使用,也就能当作nfs的共享目录使用。但是用tmpfs做nfsd共享需要考虑网卡速度和tmpfs读写速度二者孰为瓶颈,如果网卡速度是瓶颈,那么直接用nfs创建一个普通磁盘目录即可。因为tmpfs重启后丢失,使用tmpfs做nfs前,须先从磁盘或用rsync从其他服务器拷贝到tmpfs里。更新文件时,先更新磁盘上的文件,或更新rsync的源。然后设置定时进程,每分钟从磁盘或rsync里将程序同步到tmpfs即可。

    tmpfs的其他应用希望本文对大家使用tmpfs有所帮助,另外,请务必注意,重启后数据会丢失!

  • 相关阅读:
    【读书笔记】iOS-简单的数据驱动程序
    数据结构—单链表(类C语言描写叙述)
    使用Hadoop ACL 控制訪问权限
    Iocomp控件之数字显示【图文】
    维护的JSP站点数据丢失
    Simditor用法
    Android实战简易教程-第二十六枪(基于ViewPager实现微信页面切换效果)
    Deferred Rendering(三)反锯齿和半透明问题
    iOS Code Sign error: Provisioning profile can't be found 解决方式
    spring
  • 原文地址:https://www.cnblogs.com/Template/p/9082836.html
Copyright © 2011-2022 走看看