tmpfs 占的是内存,不是磁盘
/dev/shm、/run 都是 tmpfs,看起来像目录,实际存在内存里。往里写文件不会出现在 df -h / 的统计里,但会消耗内存。
df -h /dev/shm
默认大小是内存的一半。一个程序把临时文件写到 /dev/shm,写了 2G,机器开始 OOM,而 df 显示磁盘还有空间。
排查内存去哪了:
du -sh /dev/shm /run
容器里也一样,--shm-size 默认 64M,某些应用(Chrome、PostgreSQL 并行查询)会因此失败,报 No space left on device,但磁盘明明有空间。
tmpfs 的好处是快,坏处是断电即失、且计入内存配额。