tmpfs是linux最常用稳妥的内存盘方案,基于页缓存、无需格式化、支持swap与动态回收,挂载命令为sudo mount -t tmpfs -o size=2g,mode=777 tmpfs /mnt/ramdisk,推荐配合x-systemd.automount写入/etc/fstab实现安全开机挂载。

tmpfs 是 Linux 系统里最常用、最稳妥的内存盘方案,别折腾 /dev/ram0 这类老式块设备——它已过时,内核默认不启用,且配置麻烦、易出错。
用 tmpfs 挂载内存盘最简单可靠
tmpfs 不是模拟块设备,而是直接基于内存页缓存的文件系统,无需格式化、不占固定内存、支持交换(可回写到 swap)、自动回收未用空间。
实际操作就是一条 mount 命令:
sudo mkdir -p /mnt/ramdisk sudo mount -t tmpfs -o size=2G,mode=777 tmpfs /mnt/ramdisk-
size=2G:硬性限制最大使用量,超限会报 No space left on device,不是 OOM
- mode=777:开放读写权限,避免权限问题(生产环境请按需收紧)
- 不加 noexec 时,里面能运行二进制文件;加了则禁止执行,更安全
验证是否生效:df -h | grep tmpfs 应看到 /mnt/ramdisk 行,大小与你指定一致。
/etc/fstab 开机自动挂载要加 defaults 和 x-systemd.automount
直接往 /etc/fstab 写静态挂载行,可能在系统启动早期因依赖未就绪而失败。推荐写法:
tmpfs /mnt/ramdisk tmpfs size=2G,mode=777,defaults,x-systemd.automount 0 0-
defaults 包含 rw,suid,dev,exec,auto,nouser,async,保持基础可用性
- x-systemd.automount 让 systemd 延迟到首次访问时再挂载,避开早期 race condition
- 别写 noatime —— tmpfs 本身不记录访问时间,加了无效还可能干扰某些工具判断
改完后运行 sudo systemctl daemon-reload,再用 sudo systemctl restart local-fs.target 测试,或重启验证。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
别用 /dev/ram0,除非你真需要块设备语义
/dev/ram0 属于 legacy ramdisk,依赖内核模块 brd(block ramdisk),但:
- 多数现代发行版默认不加载 brd 模块,需手动 sudo modprobe brd rd_nr=1 rd_size=2097152(单位是 KB)
- 创建后必须 mkfs.ext4 /dev/ram0 格式化,再 mount,步骤多、易忘
- 内存占用是刚性的:哪怕只存 1KB 文件,也锁住全部分配的内存,无法释放
- /etc/fstab 中若写 /dev/ram0,启动时设备节点可能尚未生成,导致挂载失败甚至卡住 init
只有当你明确需要块设备(比如要 dd 镜像、做 loop 设备测试、或兼容某老旧驱动),才考虑它。其余场景一律选 tmpfs。
容量设多少?看真实用途,不是看物理内存总量
- 缓存临时编译产物(如ccache):512M~1G 足够
- Web 服务的 session 或静态资源缓存:按并发请求估算,比如每 session 平均 100KB,1000 并发 ≈ 100MB,再加 50% 余量 → 设 150M
- 数据库临时表或排序区:参考 DB 的 sort_buffer_size × 并发数,向上取整到 512M 或 1G
- 切忌设成物理内存的 50%:Linux 的 page cache 本身就在内存里动态管理,tmpfs 和 page cache 共享同一套内存池,设太大反而挤压其他进程可用内存
真正容易被忽略的是:内存盘里的数据断电即丢,任何重要数据必须有落盘备份机制,不能只靠 cp 定时同步——那只是缓解,不是解决。










