Linux怎么使用tmpfs_Linux如何创建内存文件系统提升速度【方法】

雨宇小哥_9689

雨宇小哥_9689

2026-03-19

422人浏览

原创

tmpfs 是内核原生内存文件系统,数据存于 ram 或 swap,无块设备开销;区别于 ramfs,它支持大小限制、swap 交换和 df 统计,避免 oom。

linux怎么使用tmpfs_linux如何创建内存文件系统提升速度【方法】

tmpfs 是什么,和普通内存盘有啥区别

tmpfs 不是“把硬盘挂成内存”,而是内核原生支持的内存文件系统,所有数据直接存在 RAM 或 swap 里,没有块设备层开销。它和 ramfs 的关键区别在于:tmpfs 可设大小上限、可交换到 swap、能被 df 统计——而 ramfs 一旦写爆内存就 OOM。

  • 默认不持久化,重启即丢,适合缓存、临时构建、session 存储
  • 不等于“更快的 SSD”,而是彻底绕过 I/O 栈,open()/write() 延迟压到微秒级
  • 不是所有场景都加速:小文件高频读写受益明显;大文件顺序写反而可能因缺页中断变慢

怎么挂载一个带限制的 tmpfs

用 mount 指定 size 和 mode 最常用,漏掉 size 就可能吃光内存——这是最常踩的坑。

  • sudo mount -t tmpfs -o size=512M,mode=1777 tmpfs /mnt/ramdisk:建一个 512MB、所有人可读写的临时目录
  • size=2G 支持单位 K/M/G,不写单位默认字节;超限时写入会报 No space left on device,不是磁盘满那种提示
  • mode=1777 确保像 /tmp 一样支持 sticky bit,避免用户删别人文件
  • 想开机自动挂?往 /etc/fstab 加一行:tmpfs /mnt/ramdisk tmpfs size=1G,mode=1777 0 0

为什么 df 显示已用 100%,但实际还能写

df 统计的是分配的页数,不是物理内存占用。tmpfs 使用“按需分配”策略:只在真正写入时才占 RAM,truncate 或 rm 后内存立刻释放,但 df 不会马上刷新——这容易误判为“卡死了”。

  • 查真实内存占用看 cat /sys/fs/cgroup/memory/memory.usage_in_bytes(如果用了 cgroup)或 grep Shmem /proc/meminfo
  • ls -lsh 显示的磁盘占用(第一列)是逻辑大小,和实际 RSS 无关
  • 用 find /mnt/ramdisk -type f -exec ls -lsh {} \; 能看到每个文件“声称”占多少,但加起来≠RAM 实际用量

tmpfs 和 /dev/shm 有啥关系

/dev/shm 就是系统默认挂的 tmpfs,glibc 的 POSIX 共享内存(shm_open)、Python 的 multiprocessing.shared_memory 都依赖它。改它等于动底层 IPC 基础设施。

  • 默认大小通常是 64MB,不够用时别直接 rm -rf /dev/shm,得重新 mount:sudo mount -o remount,size=512M /dev/shm
  • 某些容器环境(如 Docker)会覆盖 /dev/shm,此时 shm_open 失败报 Function not implemented,得检查是否被禁用或 size=0
  • 不用 /dev/shm?可以自己挂新 tmpfs 并设 uid/gid 隔离权限,比如给某个服务专用:sudo mount -t tmpfs -o size=128M,uid=1001,gid=1001 tmpfs /var/run/myapp
tmpfs 的边界很脆:没设 size 就挂,等于把内存安全交给应用自己管;依赖 /dev/shm 却不确认它的挂载参数,上线后共享内存突然失效——这些都不是配置问题,是资源契约没对齐。
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

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

下载

相关标签:

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

相关专题

更多
session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

2023.10.17

580

4

session失效解决方法
session失效解决方法

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

2023.10.18

876

5

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

2025.08.19

1846

14

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

5027

5

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2023.08.10

2248

6

function是什么
function是什么

function是函数的意思,是一段具有特定功能的可重复使用的代码块,是程序的基本组成单元之一,可以接受输入参数,执行特定的操作,并返回结果。本专题为大家提供function是什么的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.04

2760

5

js函数function用法
js函数function用法

js函数function用法有:1、声明函数;2、调用函数;3、函数参数;4、函数返回值;5、匿名函数;6、函数作为参数;7、函数作用域;8、递归函数。本专题提供js函数function用法的相关文章内容,大家可以免费阅读。

2023.10.07

474

5

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

685

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

4839

6

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习