Linux怎么把频繁读写的缓存目录放到内存盘

小磊姑娘_7541

小磊姑娘_7541

2026-10-21

400人浏览

原创

tmpfs挂载是linux下安全、标准且内核原生支持的内存盘方案,需新建挂载点并显式配置应用使用路径,支持size限制和swap回退,避免oom;禁用ramfs因其无上限风险。

linux怎么把频繁读写的缓存目录放到内存盘

Linux下用tmpfs挂载内存盘作为缓存目录

直接用 tmpfs 挂载是唯一安全、标准且无需额外工具的方式。它由内核原生支持,数据纯驻内存,读写极快,且自动受内存压力调控——不会把系统拖死。

常见错误是试图“把已有目录硬塞进内存”,比如用 mount --bind 或符号链接指向 /dev/shm,这会导致权限错乱、应用写入失败或缓存失效。必须新建挂载点并确保应用明确使用该路径。

  • 先创建空目录:mkdir -p /mnt/cache
  • 临时挂载(重启失效):mount -t tmpfs -o size=2g,mode=1777 tmpfs /mnt/cache
  • 永久生效需写入 /etc/fstab,例如:
    tmpfs /mnt/cache tmpfs size=2g,mode=1777,uid=1001,gid=1001 0 0
  • 确认挂载成功:df -h /mnt/cache 应显示 size 和 used 都是内存值,mount | grep cache 能看到 tmpfs 类型

为什么不用ramfs而选tmpfs

ramfs 不做内存上限控制,一旦写爆就触发OOM killer杀进程;tmpfs 支持 size= 限制,并能在内存紧张时交换到swap(可禁用),更可控。

性能差异在现代内核中几乎可以忽略——两者都绕过块层,直写内存页。但 tmpfs 的可配置性决定了它才是生产环境的合理选择。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • tmpfs 允许设置 size、nr_inodes、mode、uid/gid 等关键参数
  • ramfs 无法限制大小,也无 swap 回退机制,不适用于长期运行的服务
  • 即使禁用 swap(vm.swappiness=0),tmpfs 仍会通过内存回收机制(LRU)释放不活跃页,而 ramfs 完全不会

应用如何正确使用这个内存缓存目录

不能指望系统自动把某类文件“迁入”内存盘——tmpfs 是独立文件系统,应用必须显式把缓存路径指向它。否则所有 I/O 还走 page cache + 磁盘路径。

典型场景如构建缓存(ccache)、Web 临时文件(PHP session.save_path)、日志缓冲区(rsyslog 的 WorkDirectory)都需要手动配置。

  • 检查应用是否支持自定义缓存路径,优先改配置项(如 CCACHE_DIR=/mnt/cache/ccache)
  • 避免用 cp 或 rsync 定期同步到 tmpfs:这引入额外开销,且重启即丢,应让应用原生写入
  • 若应用强制写固定路径(如 /var/cache/app),可用 mount --bind 替换,但必须确保目标目录为空且无进程占用,否则挂载失败或行为未定义
  • 注意 tmpfs 中的文件不经过 page cache,所以 sync、fsync 对其无效;数据丢失风险与断电强相关,不适合存关键中间状态

容易被忽略的三个实际约束

很多人挂上 tmpfs 就以为万事大吉,结果跑几天发现服务异常或内存告警——问题往往出在边界没设清。

  • size= 是硬上限,但默认单位是字节;写成 size=2G 有效,size=2g(小写)会被内核忽略,退化为无限制
  • tmpfs 占用的是 MemAvailable 范围内的内存,不是单独切一块;当系统整体内存吃紧时,它的页也会被回收,表现就是目录内容“变少”甚至清空
  • 重启后 tmpfs 内容全部丢失,若应用没做初始化逻辑(如自动重建缓存结构),首次启动可能报错或降级运行

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4130

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3493

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2713

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6610

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6262

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3633

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3125

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3359

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习