iplaybit
  • 首页
  • 系统运维
  • IT新闻
  • 科技新闻
  • 关于我们
  1. 首页
  2. 系统运维
  3. 正文

tmpfs总结

2021年01月11日 1054点热度 0人点赞 0条评论

什么是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 的空间。
 
标签: linux tmpfs
最后更新:2021年01月11日

iplaybit

点赞
< 上一篇
下一篇 >

文章评论

取消回复
最新 热点 随机
最新 热点 随机
Steam内存测试工具 SPDK详解 Hadoop之HDFS优缺点、设计原理、框架 tmpfs总结 当64核遇上PCIe 4.0 超级算力是这样建成的 Edge for Linux开发者预览将至 WSL子系统可运行带GUI的Linux应用程序
Windows 10引入诸多PWA改进 会是微软应用生态的突破口吗? shell 常用正则表达式 Linux使用udev绑定裸设备事例 在HDLM 8.X上固定设备名 查询oracle中所有用户信息 Linux文件权限
一起来了解为双屏设备而生的Windows 10X系统
标签聚合
redo oracle cpu docker 3par intel san 数据库 操作系统 存储 文件系统 linux windows hp AMD netapp

COPYRIGHT © 2020 iplaybit. ALL RIGHTS RESERVED.

京ICP备18020432号-1