linux tmpfs文件系统

linux tmpfs文件系统



一、tmpfs 是什么?

tmpfs (Temporary File System)是许多类Unix操作系统中实现的临时文件存储范例。它旨在显示为已安装的文件系统,但数据存储在易失性内存中,而不是持久存储设备中。类似的结构是RAM 磁盘,它显示为虚拟磁盘驱动器并托管磁盘文件系统。

存储在 tmpfs 中的所有内容都是临时的,因为不会在硬盘等非易失性存储上直接创建任何文件(尽管根据操作系统的页面替换策略,交换空间被用作后备存储)。重新启动时,tmpfs 中的所有内容都将丢失。

某些 Linux 发行版(例如 Debian)默认没有在/tmp上挂载 tmpfs;在这种情况下, /tmp下的文件将存储在与/相同的文件系统中。

并且在几乎所有的 Linux 发行版上,都会在/run/或/var/run/上挂载一个 tmpfs,用于存储临时运行时文件,例如PID 文件和Unix 域套接字。固件变量等临时系统文件存储在/sys 。

Linux 内核从 2.4 版本开始支持 tmpfs 。Linux tmpfs(以前称为shmfs)基于启动期间使用的 ramfs 代码,并且还使用页面缓存,但与 ramfs 不同的是,它支持将较少使用的页面交换到交换空间,以及文件系统大小和 inode 限制以防止出现内存不足的情况(分别默认为物理 RAM 的一半和 RAM 页数的一半)。

二、tmpfs 优点

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
tmpfs           1.6G  128K  1.6G    1% /run/user/1000

由于 RAM 的速度比磁盘存储更高,tmpfs 允许缓存在存储在 RAM 中时速度更快,从而实现更高效的整体系统,尽管具有页面缓存的操作系统将获得较少的好处,因为最近使用的文件页面将如果可用内存足够,则保留在内存中。由于 RAM 在重新启动时会被清除,因此 tmpfs 可以防止系统变得过于混乱,而无需用户手动删除临时文件。此外,将文件存储在 RAM 中可以防止磁盘过快填满,并通过减少写入次数 来延长固态硬盘的使用寿命。

三、tmpfs 缺点

在没有交换空间或交换空间不足的 系统上,tmpfs 可能会消耗大量内存。

如果缓存文件存储在 tmpfs 中,则程序在重新启动后将丢失其缓存数据。

四、tmpfs 使用场景

tmpfs 适合存储socket、session等,对于高io的临时数据也可以选择进行存储;对于高io并且还需要持久化到磁盘的,需要通过其他手段,tmpfs可以提高linux系统的性能。

tmpfs 常将以下目录挂载进行分析:

  • /dev/ : 这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。它实际上是一个访问这些外部设备的端口。
  • /dev/shm :在CentOS和RedHat下,/dev/shm目录是一个链接,指向/run/shm目录,在Ubuntu系统下tmpfs文件系统对应的是/run/shm目录。
  • /run/ : /run 中的文件和目录没有存储在磁盘上,而只存储在内存中。
  • /sys/fs/cgroup : 将任意进程进行分组化管理的Linux内核功能。
  • /run/user/0 : root用户或显示管理器 gdm 相关

临时挂载,会将/tmp目录下原有的文件覆盖掉。

$ sudo mount -t tmpfs -o size=40m tmpfs /tmp
$ df -h
tmpfs           1.6G  128K  1.6G    1% /run/user/1000
tmpfs            40M  4.0K   40M    1% /tmp
$ mount /tmp/ # 取消挂载

/ets/fstab 文件中进行系统配置挂载,重启后生效:

$ sudo vi /etc/fstab # 新增系统挂载配置
tmpfs /tmp tmpfs defaults,size=40M 0 0

$ reboot # 重启生效
$ df -h  # 重启后,查看挂载信息

# 当想取消tmpfs系统挂载时
$ sudo vi /etc/fstab # 删除tmpfs系统挂载配置
$ mount -a # 测试/etc/fstab无错误
$ reboot # 重启生效

总结

本文介绍了linux tmpfs 文件系统的概念和使用场景。

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yusq77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值