tmpfs适合挂载高频读写且无需持久化的临时路径,典型目录包括/tmp、/var/tmp、/dev/shm、/run及自定义缓存路径;需通过size、mode、nosuid等参数控制容量与安全,并区分临时挂载与fstab永久配置。

直接用 mount -t tmpfs 挂载即可,关键在选对目录、设好大小和权限,并区分临时调整与永久生效。
哪些目录适合挂载 tmpfs
高频读写又无需持久化的临时路径最适配,典型包括:
- /tmp:系统级临时文件默认存放点,多数服务(如编译、打包、解压)会频繁使用
- /var/tmp:比 /tmp 生命周期更长的临时数据,仍属非持久场景
-
/dev/shm:POSIX 共享内存专用,glibc 依赖它支持
shm_open() - /run:systemd 运行时状态目录(pid、socket、lock 文件等),原生就是 tmpfs
- 自定义路径如 /mnt/ramcache 或应用专属目录(如
/opt/app/cache)
挂载命令与常用参数
临时挂载(重启失效)示例:
sudo mount -t tmpfs -o size=2G,mode=1777,nosuid,nodev,noexec tmpfs /tmp
核心选项说明:
-
size=2G:上限为 2GB,可写成
size=50%表示物理内存的 50% -
mode=1777:等效于
rwxrwxrwt,确保 /tmp 支持 sticky bit - nosuid/nodev/noexec:增强安全,禁用 SUID/设备文件/可执行权限
- noatime:避免每次访问都更新 atime,减少元数据写入
若需动态调大已挂载的 /tmp(不卸载):
sudo mount -o remount,size=3G /tmp
永久生效:修改 /etc/fstab
添加一行配置(注意字段顺序和末尾两个 0):
tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,noexec,mode=1777,size=2G 0 0
验证是否写对:
- 运行
sudo mount -a测试 fstab 语法 - 重启前用
df -h /tmp确认挂载结果 - 检查
mount | grep tmpfs是否含预期参数
注意:若原 /tmp 下已有文件,首次挂载后内容不可见(被新文件系统覆盖),建议清空或迁移后再启用。
容量与内存使用的实际逻辑
tmpfs 不预占内存,只按实际写入文件大小动态占用 RAM 或 swap:
- 空的 2G tmpfs 挂载点,初始几乎不耗内存
- 写入 500MB 文件,才真正占用约 500MB VM(含 page cache)
- 当物理内存紧张时,内核可能将部分 tmpfs 页面交换到 swap(前提是 swap 已启用)
- 最大可用空间 = 物理内存 + swap 总和,但超限时触发 OOM killer 风险高
因此 size 参数是硬上限而非预分配,合理设置能防止单个 tmpfs 耗尽系统资源。











