tmpfs总结

什么是tmpfs

tmpfs是Linux/Unix系统上的一种基于内存的文件系统。tmpfs可以使用您的内存或swap分区来存储文件。

实现原理:基于VM子系统

tmpfs是基于Linux的虚拟内存管理子系统,面向普通用户的,根据用户需要随时可以创建此类型目录,以方便快捷地获得飞一样的读写速度。

当用户创建了此类型的目录后,剩下的工作就交给MMU来完成,不论是最终是在物理内存中还是在SWAP中,都尽可能地满足用户的需求。

linux内核中的VM子系统负责在后台管理虚拟内存资源Virtual Memory,即RAM和swap资源,透明地将RAM页移动到交换分区或从交换分区到RAM页,tmpfs文件系统需要VM子系统的页面来存储文件。tmpfs自己并不知道这些页面是在交换分区还是在RAM中;做这种决定是VM子系统的工作。tmpfs文件系统所知道的就是它正在使用某种形式的虚拟内存。

内核支持

编译内核时,启用“Virtual memory file system support”就可以使用tmpfs,linux kernel从2.4以后都开始支持tmpfs。目前主流的linux系统默认已启用tmpfs,如Redhat。

关于tmpfs和VM:

大家已经知道linux的虚拟内存(VM),包括ram和swap两部分,ram就是你的物理内存,swap就是在装系统的时候划分的swap分区(在win下叫做页面文件,默认位于C:\pagefiles.sys),VM也是程序所能使用的最大内存上限,tmpfs本质上也是VM,前者划出后者的部分页面作为一个文件系统.

关于tmpfs和ramdisk:

linux下的ramdisk是由内核提供的,要使用之,mount命令挂载即可,不需要第三方工具:) 
但因为它会被视为块设备,所以仍然需要格式化该文件系统:使用mkfs命令格式化, 
而tmpfs不需要ramdisk一旦创建就会占用固定大小的物理内存,tmpfs则是动态分配

tmpfs的优点: 

一句话概括:像使用磁盘一样简单,获得飞一样的速度

  • 使用方便:因为tmpfs是建立在VM上的,而不是物理磁盘上,所以不需要格式化就可以使用,所以不用尝试mkfs.tmpfs了:没有这条命令
  • 动态调节大小:tmpfs的大小是动态的,用多少才分配多少,删除文件则会释放相应的VM空间,=.=这一点非常令人激动
  • 扩展性好:当您的物理内存不足以支撑分配为tmpfs的大小时,它会自动使用swap的页面
  • 快:tmpfs大部分时间是驻留在物理内存中,这使得其读写速度超快=.=

tmpfs的缺点:

  • 不可持久保存:tmpfs的先天优势变成了他的先天劣势:内存的特性导致位于tmpfs上的数据断电会丢失
  • 成本高:相比较硬盘的价格来说,内存无疑还是很昂贵的,所以用tmpfs的目录不要放太大的东西

tmpfs的应用:

应用场景

  • 天生就是为临时目录而生的。 
    例如:作为程序运行产生的临时文件目录,特别是针对服务器上某些Web服务更是前途无量,比如squid,网站,那将如虎添翼,飞一般的感觉啦。

  • Linux系统中的应用

    magc@magc-pc:~$ df
    文件系统          1K-块     已用    可用 已用% 挂载点
    udev            4033116        0 4033116    0% /dev
    tmpfs            810744     9452  801292    2% /run
    /dev/sda5      39253420 31068724 6167680   84% /
    tmpfs           4053708    94236 3959472    3% /dev/shm
    tmpfs              5120        4    5116    1% /run/lock
    tmpfs           4053708        0 4053708    0% /sys/fs/cgroup
    tmpfs            810744       24  810720    1% /run/user/1000

可见,在Linux系统中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 的空间。
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
umount tmpfs是指卸载tmpfs文件系统的操作。tmpfs是一种基于内存的文件系统,可以在内存中创建一个临时文件系统,用于存储临时数据或缓存。在卸载tmpfs之前,需要确保没有任何进程正在使用该文件系统。如果有进程在使用tmpfs,会出现"device is busy"的错误提示。可以使用lsof或fuser命令来查找正在使用tmpfs的进程,并将其停止或解除与tmpfs的关联。在卸载tmpfs之前,还应备份重要的共享内存数据,以免丢失。可以通过修改/etc/fstab文件来修改tmpfs的容量大小。在文件中找到tmpfs行,并在size选项后面指定分配的空间大小。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [tmpfs详解](https://blog.csdn.net/sinat_24354307/article/details/122957782)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Linux修改Tmpfs](https://blog.csdn.net/u010022051/article/details/52153057)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值