使用fallocate创建交换文件并配合mkswap和swapon可快速缓解内存压力,全程无需重启,但需确保磁盘空间充足、权限严格(chmod 600)、fstab配置正确以实现开机自动加载。

直接用 mkswap 和 swapon 添加交换文件,是应对突发内存压力最快速、无需重启的方式。关键在于操作要快、权限要严、配置要稳,且必须确保目标磁盘有足够空闲空间。
确认当前内存与交换状态
先看系统是否真缺 swap,以及还有多少物理空间可用:
- 运行
free -h或swapon --show,确认 Swap 行显示为0B或远低于预期 - 执行
df -h /(或你打算存放 swapfile 的分区),确保剩余空间 ≥ 你想添加的 swap 大小(例如加 2G,至少留 2.1G) - 若已有 swap 但使用率持续超 70%,说明当前容量不足,可考虑扩容而非新建
创建并安全初始化交换文件
推荐用 fallocate(比 dd 快得多),并立即设好权限防止泄露:
- 创建文件:例如添加 2GB 交换文件,执行
sudo fallocate -l 2G /swapfile - 强制设权限:必须运行
sudo chmod 600 /swapfile,否则swapon会警告甚至拒绝启用 - 验证大小和权限:
ls -lh /swapfile应显示-rw-------且大小准确
格式化并立即启用交换空间
这两步不可颠倒,mkswap 是“打标签”,swapon 是“通电启动”:
- 执行
sudo mkswap /swapfile—— 输出含Setting up swapspace version 1即成功 - 立即启用:
sudo swapon /swapfile,无报错即生效 - 验证结果:
free -h中 Swap 行应立刻出现新增容量;swapon --show能列出该文件路径
让交换文件开机自动加载
临时启用只管当前会话,要长期有效需写入 /etc/fstab:
- 执行
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab - 检查是否写入:
sudo cat /etc/fstab | tail -1应看到刚添加的那行 - 可选加固:添加
nofail参数(如swap sw,nofail 0 0),避免因 swapfile 缺失导致系统无法启动
整个过程通常在一分钟内完成,能立竿见影缓解 OOM killer 触发或服务假死。注意 swap 文件不是性能解药,仅用于缓冲;若频繁触发 swap,应优先排查内存泄漏或优化应用配置。


















